Pascal – powtórka, zadania
- Twórca Pascala: Niklaus
Wirth
- Wersje
Pascala: Borland Pascal 7.0 i Turbo Pascal 7.0 , Delphi
Pascal
- Pascal to jezyk strukturalny czy maszynowy czy
obiektowy?
- Uruchomienie Pascala: turbo.exe
- User Screen – Alt F5
- Kompilacja : Build, Compile – z opcją zapisu na
dysk
- Skierowanie wyników pliku wykonywalnego zamiast
na ekran
- Rozszerzenie plików źródłowych – PAS,
wykonywalnych - EXE
- Instrukcje rozdzielamy: średnikiem
- Schemat program: Program, Uses, const, var, procesure, function, Begin…End.
- Moduł, który dodajemy, żeby można było czyścić ekran –
uses crt;
- Kasowanie ekranu – procedura: clrscr;
- Stałe – definicja: const
- Zmienne – deklaracja: var
- Program główny – po end musi być …. kropka
- Słowa kluczowe to np. – 3 przykłady: var, Begin, read,
- Instrukcja – zapis operacji do … wykonania
- Wyrażenia składają się ze stałych, operatorów i identyfikatorów
- Identyfikatory – nazwy obiektów np. zmiennych. Identyfikatory
mogą zawierać litery, cyfry i znaki
podkreślenia, nie mogą jednak
zaczynać się od cyf,
- Instrukcja – zapis operacji do wykonania przez
komputer – wyrażenia, wywołania funkcji i procedur.
- Duże litery nie są odróżniane od małych.
- Separatorem w programie (deklaracji, procedur,
funkcji) jest znak średnika.
- Komentarzem w Pascalu jest dowolny ciąg znaków
ujęty w nawiasy klamrowe { } lub (* *)
- Zmienna – jako pojemnik na dane, każda zmienna
musi być określonego typu – deklarujemy przez var, np. var liczba1, liczba2: redl;
- Typy
zmiennych określa się przy pomocy słowa kluczowego var
- Typy całkowite: Porządkowy (wyliczeniowy),
np. type figury=(kwadrat, prostokat,
trojkat, okrag);
- Okrojony – podajemy 2 skrajne wartości, np. type literkim=’a..’k’;
- Typ logiczny Boolean – wartość logiczna true
lub false,
- znakowy Char - pojedynczy znak ASCII
- Integer -32768, 32767 – 2 bajty
- ShortInt
-128, 127
- Byte
0,255 – 1 bajt
- Word
0,65535 – 2 bajty
- Longint - 2147483648 do 2147483647 4 bajty
- Typy rzeczywiste
- Single 1.5e-45
do 3.4e38
- Double 5.0e-324
do 1.7e308 – 8 bajtów
- Extended
3.4e-4932 do 1.1e4932
- Comp –9.2e18 do 9.2e18 bardzo długa liczba
rzeczywista
- string - napis (łańcuch, ciąg znaków) - ciąg do
255 znaków, np. 'Napis'
- File
– plik, np. var file1: file of byte; {plik o elementach typu
byte}; var file_txt: text;
- Array – tablica, np. var
t1, t2: array[1..30] of integer;
- Do wprowadzania wartości zmiennych z klawiatury
służą procedury read i readln, które powinny być uzupełniane
procedurami write i writeln.
- Chcąc wstrzymać działanie programu, można użyć procedury
readln.
- W skład wyrażeń wchodzą stałe i zmienne
(reprezentujące dane) oraz operatory (znaki, np. dodawania,
mnożenia) i funkcje
- Operatory arytmetyczne, bitowe, logiczne oraz
relacyjne (operatory porównania).
- Do zmiany kolejności działań służą nawiasy.
- Operatory arytmetyczne: *, /, div (dzielenie
całkowite), mod (reszta z dzielenia) , +, -
- Pierwszeństwo mają: operatory mnożenia i dzielenia
(*, /, div i mod), wykonywane zawsze przed dodawaniem i odejmowaniem.
- Operatory relacyjne: =, <>, <. <=,
>, >=
- Operatory logiczne: not - negacja, and
- iloczyn logiczny or – suma logiczna – alternatywa
- Priorytet wszystkich operatorów: not, *
/ div mod and, + - Or , =
<> < <= > >=
- Stałe
(const). Stałe to komórki
pamięci, które mają takie same wartości przez cały czas działania
programu. Definiujemy przy
pomocy słowa const, np. const ROS = 200.0/Pi;
- Decyzje: if then else lub case: If warunek then instrukcja; if warunek then instrukcja-1 else
instrukcja-2;
- case przełącznik of wartość-1 : akcja-1;
wartość-2 : akcja-2; ... else akcja-domyślna end; Instrukcję
case stosujemy gdy zachodzi konieczność podjęcia kilku decyzji.
- Obliczenia
cykliczne (iteracyjne) - do cyklicznego (iteracyjnego)
wykonywania instrukcji służą w Pascalu pętle.
- Instrukcje pętli mogą być sterowane warunkiem
(while-do, repeat-until) lub licznikiem (for-to/downto).
- Pętle while i repeat używane są wówczas, gdy
nie znamy z góry liczby przebiegów pętli, możemy natomiast określić
warunek jej zakończenia.
- Pętla while wykonuje się tak długo, jak długo
warunek jest spełniony, repeat - tak długo, jak długo jest
niespełniony
- Pętla
z warunkiem na początku while warunek do lista-polecen – do pozwala na
zapętlenie wykonywania instrukcji tak długo, jak długo jest spełniony
warunek.
- while warunek do instrukcja; Przykład: while ch=’ ‘ do ch:=getchar;
- Pętla z warunkiem sprawdzanym po wykonaniu poleceń
(repeat..until) repeat
lista_polecen until warunek
- Repeat … util - wykonywanie instrukcji kończy się,
jeśli wartość warunku jest true, w przeciwnym przypadku powtarzane
jest ponownie.
- Np. repeat ch:=getchar until ch <> ‘ ‘;
- Instrukcje tworzące zawartość pętli repeat muszą
wykonać się co najmniej raz, zaś w przypadku pętli while mogą
nie wykonać się ani razu.
- Instrukcja for umożliwia wykonanie określonej
liczby przebiegów – jest kontrolowana licznikiem.
- for zmienna:= wart_poczatkowa to wart_koncowa do
instrukcja; for zmienna:= wart_poczatkowa downto wart_koncowa do
instrukcja;
- for - zmienna musi być typu całkowitego, znakowego lub
logicznego. for i:=1 to 5 do writeln(i); for
i:=5 downto 1 do writeln(i)
- Tablica jest to struktura danych zawierająca
uporządkowany zbiór obiektów tego samego typu.
- Tablica odpowiada matematycznemu pojęciu wektora
– tablica jednowymiarowa lub macierzy – tablica dwuwymiarowa.
- Elementy tablicy wskazujemy za pomocą indeksów
- Tablicę
tworzymy przy pomocy słowa kluczowego array: var
zmienna_tabl:=array[zakresy_indeksow] of typ_elementu; Np. var t1,
t2: array[1..30] of integer;
- Typ tablicowy: Type identyfikator_tabl = array [zakresy_indeksow]
of typ_ellementu; Np. type wektor = array[1..30] of integer; var t1, t2: wektor;
- Do
obsługi tablic wykorzystuje się często pętle for. Np. for i:=1 to i do
writeln(t1[i]);
- Podprogramy:
procedury I funkcje
- Podprogram jest to wyróżniona część programu,
komunikująca się z pozostałą częścią w ściśle określony sposób.
- Do komunikacji wykorzystywane są parametry, w definicji
podprogramu nazywane formalnymi, a przy wywoływaniu
podprogramu parametrami aktualnymi.
- Podprogram
może być wielokrotnie wywoływany z części głównej programu lub z
innych podprogramów.
- Funkcje pod swoją nazwą zwracają obliczoną wartość, a
procedury nie.
- Wszystkie obiekty zdefiniowane wewnątrz procedur są lokalne,
tj. widoczne tylko dla nich i ewentualnie procedur wewnętrznych..
- Wszystkie obiekty zdefiniowane w blokach nadrzędnych
wobec procedur są dla nich dostępne, łącznie ze strukturami globalnymi,
zdefiniowanymi w programie głównym..
- Zdefiniowanie obiektu lokalnego o tej samej nazwie co
obiekt z bloku nadrzędnego, powoduje jego przesłonięcie (odwołania odnoszą
się do obiektu lokalnego).
- Definicje
funkcji (procedur) muszą być umieszczone w programie przed częścią
operacyjną i muszą występować w odpowiedniej kolejności.
- Stosowanie
funkcji i procedur jest korzystne
ze względu na poprawę czytelności i efektywności programu, zmniejszenie
podatności na błędy i skrócenie czasu potrzebnego na jego pisanie.
- Procedure
nazwa (lista_parametrow_formalnych);
{deklaracje stałych, zmiennych, typów} begin
{treść procedury}
end;
- Function nazwa_funkcji (lista_parametrow_formalnych):
typ_wyniku; {deklaracje stałych, zmiennych, typów} begin {treść i}
nazwa_funkcji:=wynik; nazwa_funkcji:=wynik} end;
- W treści funkcji musi być umieszczone przypisanie: nazwa_funkcji:=wynik
- Wywołanie
funkcji: Zmienna:=nazwa_funkcji(lista_parametrow_aktualnych);
- Przykład: Function kwadrat(bok: real):
real; Begin Kwadrat:=bok*bok; End;
- Zapamiętywanie
danych na dysku i odczyt danych. Wiąże się ze strukturalnym
typem danych - typem plikowym.
- Definicja
typu plikowego rozpoczyna się od słowa kluczowego FILE. np. TYPE
wyniki = FILE of integer;
- Pliki tekstowe (file of char) mają zwykle
rozszerzenie TXT, są predefiniowane w Pascalu i mają identyfikator
TEXT.
- Prz.
VAR f :text; BEGIN assign(f, 'C:\plik1.txt'); rewrite(f); writeln(f,
'Jakieś zdanie numer 1'); writeln(f, 'Jakieś zdanie numer 2');
Close(f); {zamkniecie pliku} END.
- Asembler: Jezyk wysokiego poziomu, niskiego poziomu
- Pascal, Basic, C, Fortran - Języki
wysokiego poziomu czy niskiego poziomu
- Pascal to interpreter czy kompilator?
- Czy można w Pascalu wykonywać obliczenia w trybie
bezpośrednim?