Studiuj dzięki licznym zasobom udostępnionym na Docsity
Zdobywaj punkty, pomagając innym studentom lub wykup je w ramach planu Premium
Przygotuj się do egzaminów
Studiuj dzięki licznym zasobom udostępnionym na Docsity
Otrzymaj punkty, aby pobrać
Zdobywaj punkty, pomagając innym studentom lub wykup je w ramach planu Premium
Społeczność
Odkryj najlepsze uniwersytety w twoim kraju, według użytkowników Docsity
Bezpłatne poradniki
Pobierz bezpłatnie nasze przewodniki na temat technik studiowania, metod panowania nad stresem, wskazówki do przygotowania do prac magisterskich opracowane przez wykładowców Docsity
Informatyka: notatki z zakresu programowania dotyczące programowania w języku Pascal.
Typologia: Notatki
1 / 47
Element Rozpoczyna Kończy Uwagi Nagłówek PROGRAM ; Zawiera nazwę programu Używane moduły USES ; Opcjonalny Deklaracje etykiet LABEL ; Opcjonalny Definicje stałych CONST Opcjonalny Definicje typów TYPE Opcjonalny Deklaracje zmiennych VAR Opcjonalny
Lista instrukcji BEGIN END. Komentarz { lub (* } lub *) Opcjonalny
Nagłówek Zaczyna Kończy się
PROGRAM Program END.
UNIT Moduł END.
PROCEDURE Procedurę END ;
FUNCTION Funkcję END ;
Typ Znacznik Przykład
Całkowity dziesiętny brak x = 5;
Całkowity szesnastkowy $ x = $FF;
Rzeczywisty kropka dziesiętna x = 5.1;
Znakowy apostrof x = ‘c’;
Znakowy – kody ASCII # x = #32;
Łańcuchowy apostrof x = ‘abcd’;
Łańcuchowy – kody ASCII # x = #13#10;
Zbiór nawiasy kwadratowe x = [1, 2, 3];
Nazwa Min. wartość Max. wartość Zużycie pamięci SHORTINT -128 127 1 bajt BYTE 0 255 1 bajt INTEGER -32768 32767 2 bajty WORD 0 65535 2 bajty LONGINT -2147483648 2147483647 4 bajty min..max - okrojony min Max 1-4 bajty (a, b, c) - wyliczeniowy a C 1 bajt
Wybór pełny IF warunek THEN instrukcja ELSE instrukcja2;
Wybór wielokrotny CASE wyrażenie OF wartości: instrukcja; ELSE instruk2; END;
Pętla N-krotna FOR zmienna_całkowita := wart1 TO wart2 DO instrukcja;
Pętla 0..? –krotna WHILE warunek DO instrukcja;
Pętla 1..? –krotna REPEAT lista_instrukcji; UNTIL warunek_końca;
Instrukcje sterowania
Wyjście z bloku BREAK
Powrót z procedury EXIT
Przerwanie programu HALT
Skok do etykiety GOTO etykieta; odradzane
Nazwa Rola Parametry
Procedury wejścia-wyjścia
WRITE Pisze na ekranie Lista wartości do wypisania
WRITELN Pisze na ekranie i zmienia linię
Lista wartości do wypisania
READLN Wczytuje wartość^ z klawiatury^ Zmienna typu prostego
Procedury in- i dekrementacji
INC Zwiększa zmienną o 1 Zmienna całkowita
DEC Zmniejsza zmienną o 1 Zmienna całkowita
Inne procedury
RANDOMIZE Inicjalizuje generator liczb losowych
VAL Zamienia tekst na liczbę Tekst, zmienna docelowa, zmienna zwracająca kod błędu
STR Zamienia liczbę na tekst wg formatu
Wartość, zmienna docelowa
Nazwa funkcji Zwracana wartość Typ parametru Typ wyniku
Funkcje dla liczb całkowitych
LOW Najmniejszy element typu Całkowity Całkowity
HIGH Największy element typu Całkowity Całkowity
PRED Element poprzedzający Całkowity Całkowity
SUCC Element następujący Całkowity Całkowity
RANDOM Wartość^ losowa z podanego zakresu^ Całkowity Całkowity
Funkcje konwersji typów
ROUND Zaokrąglenie Rzeczywisty Całkowity
TRUNC Część całkowita Rzeczywisty Całkowity
CHR Znak ASCII Całkowity Znakowy
ORD Kod ASCII Znakowy Całkowity
Funkcje matematyczne
ABS Wartość bezwzględna Rzeczywisty Rzeczywisty
ARCTAN Arcus tangens Rzeczywisty Rzeczywisty
COS Cosinus Rzeczywisty Rzeczywisty
EXP Potęga liczby e Rzeczywisty Rzeczywisty
FRAC Część ułamkowa Rzeczywisty Rzeczywisty
INT Część całkowita Rzeczywisty Rzeczywisty
LN Logarytm naturalny Rzeczywisty Rzeczywisty
SIN Sinus Rzeczywisty Rzeczywisty
SQR Kwadrat Rzeczywisty Rzeczywisty
SQRT Pierwiastek kwadratowy Rzeczywisty Rzeczywisty
Funkcje znakowe
UPCASE Duża litera Znakowy Znakowy
LENGTH Długość ciągu znaków Łańcuchowy Całkowity
Operator Znaczenie Przykład Priorytet wykonania
Operatory arytmetyczne
/ Dzielenie bez reszty
r := a/b; 2
DIV Dzielenie z resztą i := a div b; 2
MOD Reszta z dzielenia i := a mod b; 2
Operatory porównania
= Równe IF a = b THEN ... 4
<> Nierówne IF a <> b THEN ... 4
< Mniejsze IF a < b THEN ... 4
<= Mniejsze równe IF a <= b THEN ... 4
Większe IF a > b THEN ... 4
= Większe równe IF a >= b THEN ... 4
IN Należy do IF a IN zbior THEN ... 4
Operatory logiczne i bitowe
NOT Negacja IF NOT (a<4) THEN ... 1
AND Iloczyn logiczny IF (a<4) AND (a>1) THEN ...
Nazwa (parametry) : typ funkcji Działanie
CLRSCR Czyści ekran
DELAY (MS : WORD) Wstrzymuje program na MS milisekund
GOTOXY (X, Y : BYTE) Przenosi kursor na pozycję X, Y
KEYPRESSED : BOOLEAN Sprawdza, czy wciśnięto klawisz
NOSOUND Wyłącza dźwięk
READKEY : CHAR Zwraca wciśnięty klawisz
SOUND (HZ : WORD) Włącza dźwięk o częstotliwości HZ
TEXTBACKGROUND (COLOR : BYTE) Ustawia kolor tła na COLOR
TEXTCOLOR (COLOR : BYTE) Ustawia kolor znaków na COLOR
UPCASE (LETTER : CHAR) : CHAR Zamienia literę na dużą literę
WHEREX : BYTE Zwraca pozycję poziomą kursora
WHEREY : BYTE Zwraca pozycję pionową kursora
Nazwa (parametry) Działanie GETDATE (VAR R, M, D, DTYG : WORD) Zwraca aktualną datę GETTIME (VAR G, M, S , SETNA :WORD) Zwraca aktualny czas
Konsultacje I
var x,y : real; i : integer; begin for i:=-5 to 15 do begin x:= i/10; if x<=0 then y:=x+sin(x) else if x<1 then y:=ln(x) else y:=abs(x-2); writeln y; end; end.
repeat.. until
repeat instrukcja; instrukcja; ... instrukcja until warunek
Przykład: czytanie liczby z klawiatury, która jest dodatnia.
repeat readln (k); until k>
while..do..
while warunek do instrukcja
Przykład: czytanie rozmiaru tablicy A[1..k], gdzie k < n, n podane jako const.
readln (k); while k>n do begin writeln (‘Podales zla liczbe’ ‘danych. Podaj wrtosc <=n); end;
case zn of
case selektor of lista_1 : instrukcja_1; lista_2 : instrukcja_2; ... lista_n : instrukcja_n;
Ale już teraz możemy Wam zaprezentować strukturę, która pozwoli nam dynamicznie rezerwować dużą tablicę dwuwymiarową bez niepotrzebnego
deklarowania z dużym zapasem tablicy statycznej. Będzie to tablica wskaźników:
Możemy ją zadeklarować, utworzyć i wykorzystywać w sposób następujący:
{a teraz zwalniamy całą pamięć - będzie się mogła przydać innym programom}
Definicja elementu będącego częścią drzewa jest identyczna jak elementu listy dwukierunkowej.
Różnica pomiędzy listą dwukierunkową a drzewem kryje się w sposobie połączenia elementów. Elementy listy dwukierunkowej pokazują na siebie wzajemnie, tzn. jeśli drugi element wskazuje na trzeci, to trzeci wskazuje na drugi, co w Pascalu wygląda następująco:
{zawsze prawdziwe, o ile A nie pokazuje na ostatni, a lista ma co najmniej 2 elementy !!!}
Tutaj musicie umieścić wszystkie definicje stałych i typów, deklaracje zmiennych, deklaracje funkcji i procedur (czyli tylko ich nagłówki), które będą widoczne dla dowolnego programu (lub innego modułu) korzystającego z danego modułu. Aby objaśnić to trochę dokładniej, wprowadzimy nowe pojęcie:
Zasięg zmiennej, funkcji czy też procedury może być globalny, co oznacza, że będzie ona widoczna we wszystkich plikach, do których dany moduł został włączony. Taką zmienną czy procedurę będziemy nazywali eksportowaną. Zasięg może także być lokalny, co oznacza, że dana zmienna, funkcja czy procedura będzie widoczna tylko i wyłącznie w pliku modułu. Jest to rozszerzony odpowiednik zasięgu zmiennych, który już poznaliście w poprzednim segmencie.
Teraz resztę zrozumieć będzie już łatwo: w części opisowej modułu umieszczamy deklaracje zmiennych, funkcji i procedur eksportowanych – i tylko tych.
Część implementacyjna (zwana również częścią prywatną):
Uwaga: za słowami interface i implementation nie stawia się średnika.
To tutaj zamieszczacie właściwe algorytmy, czyli „ciało” (inaczej definicję, implementację) procedur i funkcji eksportowanych. Tutaj możecie także zadeklarować lokalne zmienne i procedury i korzystać z nich do woli, pamiętając o tym, że nie będą one dostępne gdziekolwiek poza tą częścią modułu.
Ostatnią częścią modułu jest część inicjująca:
{ Tutaj umieszczacie kod wykonywany podczas inicjacji. }
Ten fragment kodu zostanie wykonany zawsze przed pierwszym odwołaniem się do danego modułu (w praktyce w Delphi w momencie startu programu przed wykonaniem się pierwszej jego instrukcji. Moduły są inicjowane w kolejności tej samej, w jakiej występują po słowie uses). Po co? A choćby po to, aby przypisać zmiennym wartości początkowe, zarezerwować pamięć, czy przywitać się z użytkownikiem wyświetlając stosowny komunikat na ekranie.
{ prosty moduł w Pascalu; zobaczcie w następnym oknie, jak został on dołączony do programu. }
{ tutaj tylko nagłówek procedury: }
{ a tutaj implementacja procedury: }
{ procedura najpierw drukuje słowo ‘Tablica ‘ i napis typu string, a następnie drukuje wierszami tablicę X typu Tab }
A teraz program główny; nazwaliśmy go schemat:
{ poniższa linia została dodana automatycznie przez Delphi po dołączeniu nowego modułu: }
jest typu boolean?
a) if a<=x<=b then...
b) – nawiasy są konieczne, gdyż inaczej najpierw zadziałałby operator „and” na argumentach sąsiednich, i wynikłby z tego błąd kompilacji.
konstrukcji: x:=0; repeat x:=x+1; writeln(x); until x > 10; a) for x:=1 to 10 do writeln(x); b) for x:=0 to 10 do writeln(x); c) for x:=1 to 11 do writeln(x);
a) write(a,b); write©; writeln(d); b) write(a,b,c,d); writeln; c) writeln(a,b); writeln(c,d);
przypadku tablicy a[1..n,1..n]