pascal.pdf

(163 KB) Pobierz
88844708 UNPDF
Kurs Pascala
30 listopada 2006 roku
Spis tre±ci
2 Wst¦p
2
3 Podstawy 2
3.1 Ogólna struktura programu w Pascalu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
3.2 Kompilacja programu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
3.3 Zmienne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
3.4 Operatory arytmetyczne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.5 Wybrane funkcje standardowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.6 Zadania do wykonania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
4 Instrukcje steruj¡ce 5
4.1 Instrukcja IF...THEN..ELSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4.2 Instrukcja CASE...ELSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4.3 Operatory porównania i logiczne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4.3.1 Operatory porównania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4.3.2 Operatory logiczne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
5 P¦tle steruj¡ce 7
5.1 P¦tla for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
5.2 P¦tla steruj¡ca while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
5.3 P¦tla sterujsca repeat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
6 Operacje wej±cia-wyj±cia 9
6.1 Read, Readln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
6.2 Write, Writeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
6.3 Formatowanie danych przy operacjach wej±cia-wyj±cia . . . . . . . . . . . . . . . . . . . . . . . . 10
7 Obsługa plików 11
7.1 Pliki tekstowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
7.2 Wykorzystanie plików . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
7.3 Przykłady . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
7.4 Znaki ko«cowe w pliku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
7.5 Zadania ddo wykonania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
8 Tablice 14
8.1 Tablice wielowymiarowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
9 Funkcje i procedury 16
9.1 Funkcje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
9.2 Procedury . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1
2 Wst¦p
Internetowe kursy Pascala:
http://www.lo2.opole.pl/~dragosystems/kursy/kpascal.htm
3 Podstawy
3.1 Ogólna struktura programu w Pascalu
Struktura programu w Pascalu jest nast¦pujsca:
1 program nazwa;
2 {komentarz}
3 deklaracje u»ywanych zmiennych, stałych, tablic, modułów
4
5 begin
6 instrukcja 1;
7 .
8 .
9 .
10 instrukcja n;
11 end.
Uwagi:
komentarze umieszczamy w nawiasach klamrowych f i g
po nazwie programu wyst¦puje blok deklaracji u»ywanych zmiennych, stałych , tablic, bibliotek itp.
ka»da instrukcja ko«czy si¦ ±rednikiem (podobnie jak w C), podobnie te» procedury i funkcje
słowo begin oznacza rozpocz¦cie głównego bloku programu a end jego koniec. Po słowie end wyst¦puje
kropka poniewa» jest to zarazem koniec programu
3.2 Kompilacja programu
Kod ¹ródłowy programu jest plikiem tekstowym o jakiej± nazwie i odpowiednim rozszerzeniu. Kompilator gpc
rozpoznaje nast¦pujsce rozszerzenia:
.p
.pp
.dpr
Kompilacja programu w najprostszym przypadku polega na wydaniu polecenia:
gpc *.p
W efekcie w katalogu, w którym znajduje si¦ kod ¹ródłowy powinien pojawi¢ si¦ plik a.out , który jest wyko-
nywalny ( ./a.out ).
3.3 Zmienne
Zmienn¡ jest pewna komórka w pami¦ci komputera przechowuj¡ca jak¡± warto±¢. T¦ warto±¢ mo»emy zmienia¢.
Zmienne w programie deklarujemy w nast¦pujscy sposób:
1 program nazwa
2 var
3 zmienna_1,zmienna_2: typ_1;
4 zmienna_3: typ_2;
5 zmienna_5,zmienna_6: typ_3;
6 begin
7 instrukcje;
8 end.
W Pascalu wyró»niamy nast¦pujsce typy zmiennych:
1. Zmienne typu całkowitego. Zaliczajs si¦ do nich poni»sze podtypy:
byte zakres:0...255 (2 0 1 do 2 8 1) - 8 bitów
integer zakres:-2147483648...2147483647 ( 2 31 do 2 31 1) 32 bity
word word:0...4294967295 (2 0 1 do 2 32 1) 32 bity
longint zakres: bardzo du»y ( 2 63
do 2 63 1) 64 bity
2. Zmienne typu rzeczywistego. Podtypy:
single zakres: min=1 . 5 x 10 45
max=3 . 4 x 10 38
(4 bajty, 7-8 cyfr znacz¡cych)
real zakres:min=2 . 9 x 10 39
max=1 . 7 x 10 38
(6 bajtów, 11-12 cyfr znacz¡cych)
double zakres: min=5 . 0 x 10 324
max=1 . 7 x 10 308
(8 bajtów, 15-16 cyfr znacz¡cych)
extended zakres: min=3 . 6 x 10 4951
max=1 . 1 x 10 4932
(10 bajtów, 19-20 cyfr znaczscych)
3. Zmienne znakowe. Podtypy:
char - 1 znak (1 bajt)
string - zakres = 0..256 (256 bajtów)
tablica[długo±¢] - zakres: 0..długo±¢ (długo±¢+1 bajtów)
4. Typ logiczny - Boolean = TRUE lub FALSE (prawda lub fałsz)
Stałe deklarujemy w programie przy u»yciu słowa kluczowego Const :
program nazwa
Const
a=100; {liczba całkowita - zapis dziesi¦tny}
b=$ff; {$liczba całkowita - zapis szesnastkowy}
c=4.455; {liczba rzeczywista}
znak_1=’d’; {typ znakowy}
znak_2=#32; {typ znakowy - kod ASCII}
lancuch=’cos tam’; {typ ła«cuchowy}
begin
end.
3.4 Operatory arytmetyczne
1. Instrukcja przypisania :=
x:=5;
2. operator dodawania +
x:=x+5;
3. operator odejmowania -
x:=x-5;
4. operator mno»enia *
x:=4*6;
5. operator dzielenia / (dzielenie z reszts)
x:=1893./234.;
6. operator dzielenia MOD (dzielenie ”modulo” - reszta z dzielenia liczb całkowitych)
x:=9 mod 2; =1
7. operator dzielenia DIV (dzielenie bez reszty)
x:=9 mod 2; =2
3.5 Wybrane funkcje standardowe
Typ całkowity:
1. HIGH(typ całkowity) - najwi¦ksza warto±¢ danego typu (shortint, byte, integer itp.)
2. LOW(typ całkowity) - najmniejsza warto±¢ danego typu (shortint, byte, integer itp.)
3. PRED(zmienna) - najwi¦ksza liczba całkowita, która jest mniejsza od warto±ci zmiennej
4. SUCC(zmienna) - najmniejsza liczba całkowita, która jest wi¦ksza od warto±ci zmiennej
5. RANDOM(warto±¢) - liczba pseudlosowa z zakresu 0..warto±¢-1
Funkcje matematyczne:
1. ABS(x) (real) - warto±¢ bezwzgl¦dna x (integer lub real)
2. ARCTAN(x) (real) - arcus tangens x (integer lub real)
3. CHR(x) (Char) - znak odpowiadajscy zmiennej x (integer)
4. EXP(x) (real) - e x
5. LN(x) (real) - logarytm naturalny z x (integer lub real)
6. ROUND(x) (integer) - warto±¢ argumentu zaokr¡glona do najbli»szej liczby typu całkowitego
7. TRUNC(x) (integer) - warto±¢ argumentu obci¦ta do liczby typu całkowitego
8. SIN(x) (real)- warto±¢ sinusa x (integer lub real)
9. COS(x) (real)- warto±¢ kosinusa x (integer lub real)
10. SQR(x) (real) - x 2
11. ODD(x) (boolean) - TRUE dla nieparzystych, FALSE dla parzystych
12. FRAC(x) (real) - cz¦±¢ ułamkowa liczby rzeczywistej x
13. PI (real) - zwraca warto±¢ liczby
Funkcje znakowe:
1. UPCASE(znak) (char)- zamienia mały znak na du»y
2. LENGTH(ła«cuch) (integer)- zwraca długo±¢ ła«cucha (stringu)
3.6 Zadania do wykonania
1. Mamy 4 zmienne rzeczywiste: x1 - single, x2 - real, x3 - double, x4 - extended. Jaki b¦dzie wynik działania:
xn:=12./1234. (lub raczej xn:=12.0/1234.0)?
2. Mamy zmienns y: integer. Jaki b¦dzie wynik operacji: y:= 90 / 43, y:= 90 div 43, y:= 90 mod 43?
3. Sprawdzi¢ jaki b¦dzie wynik operacji:
1 var
2 z: short;
3 begin
4 z:=9999999999;
5 end.
Jaki komunikat wy±wietla kompilator?
4 Instrukcje steruj¡ce
4.1 Instrukcja IF...THEN..ELSE
Główns istrukcjs steruj¡c¡ jest instrukcja if . Podstawowa jej wersja wygl¡da nast¦puj¡co:
IF warunek_logiczny THEN instrukcja;
Oczywi±cie zamiast pojedynczej instrukcji mo»e wyst¦powa¢ ich blok:
IF warunek logiczny THEN
begin
instrukcje;
end;
Je»eli warunek logiczny ma warto±¢ TRUE (jest prawdziwy) wówczas wykonywany jest blok instrukcji wy-
st¦puj±cy po słowie kluczowym THEN .
Rozwini¦cie instrukcji if dotyczy przypadku gdy interesuje nas tak»e wykonanie instrukcji (lub ich bloku) w
przypadku gdzy warunek jest niespełniony. Wtedy jej konstrukcja wygl¡da jak poni»ej:
IF war_logiczny THEN
begin
instrukcje 1;
end
ELSE
begin
instrukcje 2;
end;
Uwagi:
po bloku instrukcji wyst¦pujscym za słowem THEN nie stawaiamy kropki
4.2 Instrukcja CASE...ELSE
Instrukcj¦ CASE stosuje si¦ gdy wykonanie pewnych instrukcji uzale»nione jest od przyjmowania przez zmienn¡
±ci±le okre±lonych warto±ci licbowych (typu całkowitego). Konstrukcja jest nast¦puj¡ca:
CASE zmienna OF
wartosc_1: instrukcja_1;
wartosc_2: instrukcja_2;
wartosc_3: instrukcja_3;
wartosc_4: instrukcja_4;
ELSE
instrukcja_else;
end;
Warto±¢ zmiennej porównywana jest kolejno z warto±ciami: 1, 2, 3 i 4. Je±li zmienna przyjmuje dan¡ warto±¢
to wykonywana jest przypisana do tej warto±ci instrukcja. Gdyby jednak warto±¢ zmiennej była ró»na od
warto±¢i: 1, 2, 3 i 4 to wtedy wykonywana jest instrukcja poło»ona za słowem kluczowym ELSE.
Przykład:
program ins_else;
k: integer;
begin
k:=10;
case k of
1: writeln(k);
2: writeln(k);
3: writeln(k);
4: writeln(k);
Zgłoś jeśli naruszono regulamin