1
PS/TP
TI
TI
TI
TI----PS
PS
PS
PS----1D
1D
1D
1D
WPROWADZENIE DO
WPROWADZENIE DO
WPROWADZENIE DO
WPROWADZENIE DO
PROGRAMOWANIA
PROGRAMOWANIA
PROGRAMOWANIA
PROGRAMOWANIA
STRUKTURALNEGO W PASCALU
STRUKTURALNEGO W PASCALU
STRUKTURALNEGO W PASCALU
STRUKTURALNEGO W PASCALU
2
PS/TP
PROGRAMOWANIE STRUKTURALNE
Budowa programu
“Struktury danych + Algorytmy = Program”
Program przykład;
var
x: array[1..100] of integer;
i: integer;
y: integer;
begin
for i := 1 to 100 do
begin
readln(y);
x[i] := y;
end;
end.
Dane
Algorytm
3
PS/TP
PROGRAMOWANIE STRUKTURALNE
Budowa programu Pascalowego
Nag
ł
ówek programu
PROGRAM nazwa;
Cz
ęść
deklaracyjna:
USES CRT;
Deklaracje sta
ł
ych
CONST …………..;
Deklaracje typów
TYPE ……………;
Deklaracje zmiennych
VAR ……………..;
Deklaracje funkcji (procedur)
FUNCTION
nazwa_funkcji
:
typ_funkcji
;
BEGIN
…………..
END;
Cz
ęść
wykonawcza:
BEGIN
ClrScr;
…………..
…………..
…………..
ReadKey;
END.
4
PS/TP
PROGRAMOWANIE STRUKTURALNE
Podstawowe operatory
Reszta z dzielenia np. reszta := x mod 3;
mod
Dzielenie całkowite np. ile := x div 3;
div
Dzielenie np. iloraz := x / 3.0;
/
Mnożenie np. iloczyn := x * 3.0;
*
Alternatywa (LUB) np. (x or y)
or
Koniunkcja (I) np. (x and y)
and
Negacja np. not z
not
Sprawdzenie warunku „mniejszy lub równy” np. (x <= 1)
<=
Sprawdzenie warunku „większy lub równy” np. (x >= 4)
>=
Sprawdzenie nierówności np. (x <> 0)
<>
Sprawdzenie równości np. (x = 0)
=
Znaczenie i przykład
Operator
5
PS/TP
PROGRAMOWANIE STRUKTURALNE
Podstawowe instrukcje
Instrukcja wielokrotnego wyboru np.
Case n of
1 : writeln(‘jedynka‘);
2 : writeln(‘dwojka‘);
3 : writeln(‘trojka‘);
4 : writeln(‘czworka‘);
else writeln(‘inna liczba‘);
End;
Case
Instrukcja warunkowa np.
if ((x mod 2)=0) then writeln(‘parzysta‘);
else writeln(‘nieparzysta‘);
If… else
Instrukcja złożona np. begin
x := a*2+c;
i := i + 1;
k := k + 1;
end;
begin
…..
end;
Instrukcja podstawiania np.
wynik := a*a + 2*a*b+b*b;
:=
Instrukcja pisząca na ekran lub do pliku
WRITE lub WRITELN
Instrukcja czytająca z klawiatury lub pliku
READ lub READLN
Instrukcja kończąca część wykonawczą
END.
Instrukcja rozpoczynająca część wykonawczą
BEGIN
Znaczenie i przykład
Instrukcja
6
PS/TP
PROGRAMOWANIE STRUKTURALNE
Instrukcja pętli (iteracyjna) tzw. „w górę”, np.
For n := 1 To 5 do writeln(‘n= ‘, n);
FOR ZS := WP TO WK DO …
Uwaga:
ZS – zmienna sterująca,
WP – wartość początkowa,
WK – wartość końcowa
Instrukcja pętli (iteracyjna) tzw. „w dół”, np.
For n := 5 DownTo 1 do writeln(‘n= ‘, n);
FOR ZS := WP DOWNTO WK DO …
Uwaga:
ZS – zmienna sterująca,
WP – wartość początkowa,
WK – wartość końcowa
Instrukcja pętli (iteracyjna) np.
Repeat
writeln(‘n= ‘, n);
n := n – 1;
Until (n=0);
Repeat
……
……
Until
(warunek)
Instrukcja pętli (iteracyjna) np.
While (n>0) do
Begin
writeln(‘n= ‘, n);
n := n – 1;
End;
While
(warunek)
do begin
……
……
end;
7
PS/TP
PROGRAMOWANIE STRUKTURALNE
Podstawowe funkcje standardowe
Wartość liczby REAL x zaokrąglona do najbliższej liczby INTEGER np.
x := 1.4;
n := Round(x);
{n= 1}
y := 1.5;
n := Round(y);
{n= 2}
Round(x)
Kod znaku x np.
kod := Ord(x);
Ord(x)
TRUE dla liczby x nieparzystej,
FALSE dla liczby x parzystej, np.
If odd(x) then Writeln(‘nieparzysta‘)
else Writeln(‘parzysta‘);
Odd(x)
TRUE jeśli napotkano na koniec pliku f.
W przeciwnym razie FALSE, np.
Repeat
Read(f,znak);
Writeln(znak);
Until Eof(f);
Eof(f)
Znak o kodzie x np.
znak := Chr(x);
Chr(x)
Wartość bezwzględna x np.
wynik := Abs(x);
Abs(x)
Znaczenie i przykład
Funkcja
8
PS/TP
PROGRAMOWANIE STRUKTURALNE
Czeka na naciśnięcie klawisza i czyta go. Zwraca kod ASCII tego klawisza.
ReadKey;
Kwadrat liczby x np.
wynik := SQR(2);
lub
wynik := 2*2;
SQR(x)
Pierwiastek kwadratowy liczby x np.
wynik := SQRT(2);
SQRT(x)
Wartość liczby REAL x obcięta do liczby INTEGER np.
x := 1.999;
n := Trunc(x);
{n= 1}
y := – 1.111;
n := Trunc(y);
{n= – 1}
Trunc(x)
9
PS/TP
PROGRAMOWANIE STRUKTURALNE
Podstawowe procedury standardowe
Ustawia kolor tekstu (kod koloru od 0 – 7)
np. TextBackground(LIGHTGRAY);
lub TextBackground (7);
TEXTBACKGROUND
Ustawia kolor tekstu (kod koloru od 0 – 15)
np. TextColor(BLUE);
lub TextColor(1);
lub TextColor(BLUE+BLINK);
(NIEBIESKI MRUGAJĄCY)
TEXTCOLOR
Wypisuje wartość zmiennej x na ekranie i ustawia kursor w nowej linii
np. Writeln(x);
WRITELN(x)
Wypisuje wartość zmiennej x na ekranie np. Write(x);
WRITE(x)
Wypisuje tekst na ekranie i ustawia kursor w nowej linii np. Writeln(‘a kuku‘);
WRITELN(‘tekst’)
Wypisuje tekst na ekranie np. Write(‘a kuku‘);
WRITE(‘tekst’)
Czyta liczbę z klawiatury do zmiennej x np. Readln(x);
READLN(x)
Kasuje ekran np. ClrScr;
CLRSCR
Znaczenie i przykład
Procedura
10
PS/TP
PROGRAMOWANIE STRUKTURALNE
Jak napisa
ć
pierwszy program w Pascalu ?
program pierwszy;
uses crt;
begin
writeln('Mój pierwszy program');
end
••••
Aby napisa
ć
pierwszy program nale
ż
y uruchomi
ć
TP i wykona
ć
nast
ę
puj
ą
ce operacje:
•
Wpisz w edytorze poni
ż
szy tekst:
•
Zapisz (File
Save as...) tekst do pliku PIERWSZY,
Wyjaśnienie nr 1:
Wiersz USES CRT występujący po nagłówku programu musi być wpisany - w przeciwnym razie instrukcja WRITELN
nie będzie działać.
Większość programów w Turbo Pascalu komunikuje się z klawiaturą i ekranem, dlatego Turbo Pascal musi używać
swojej wewnętrznej biblioteki instrukcji ekranowo - klawiaturowych. Biblioteka ta nazywa się CRT.
Wyjaśnienie nr 2:
Instrukcja BEGIN to po prostu start programu - początek działania algorytmu.
Natomiast instrukcja END. to stop programu - koniec działania algorytmu.
Pomiędzy instrukcjami BEGIN oraz END. znajdują się instrukcje (rozkazy), które wykonuje komputer.
11
PS/TP
PROGRAMOWANIE STRUKTURALNE
Jak sprawdzi
ć
działanie programu ?
Aby uruchomi
ć
i testowa
ć
działanie programu u
ż
ywa si
ę
polecenia
Run
Run (Ctrl+F9)
Polecenie to uruchamia redagowany program.
Program zostaje wykonany pocz
ą
wszy od instrukcji begin a
ż
do instrukcji end
•
,
Potem nast
ę
puje powrót do okna edytora.
Uwaga: Kropka mo
ż
e wyst
ą
pi
ć
TYLKO jeden raz w programie !!!
12
PS/TP
PROGRAMOWANIE STRUKTURALNE
Jak testowa
ć
programy bez u
ż
ywania klawiszy Alt+F5 ?
W trakcie pisania programu cz
ę
sto zachodzi konieczno
ść
sprawdzenia jego zachowania w konkretnych sytuacjach
i bardzo denerwuj
ą
ce jest ci
ą
głe naciskanie Alt+F5.
W tym celu ka
ż
dy testowany program uzupełniamy dodatkow
ą
instrukcj
ą
readln;
(umieszczamy j
ą
jako ostatni
ą
przed instrukcj
ą
end
•
).
Instrukcja ta czeka na naci
ś
ni
ę
cie klawisza ENTER i w ten sposób mo
ż
esz
obejrze
ć
spokojnie ekran zanim powrócisz do edytora TP.
Albo u
ż
yj funkcji ReadKey
13
PS/TP
PROGRAMOWANIE STRUKTURALNE
Podsumowanie
Jak zbudowany jest ten program Pascalowy ?
Ka
ż
dy program napisany w Pascalu sk
ł
ada si
ę
z 3 cz
ęś
ci – nag
ł
ówka, cz
ęś
ci deklaracyjnej oraz cz
ęś
ci wykonawczej:
program pierwszy;
uses crt;
begin
writeln(‘Mój pierwszy program’);
readln;
end.
Nagłówek
programu
Część
deklaracyjna
Część wykonawcza
14
PS/TP
PROGRAMOWANIE STRUKTURALNE
Nagłówek programu zawsze musi znajdowa
ć
si
ę
na pocz
ą
tku ka
ż
dego programu.
Zawiera on słowo program, spacj
ę
oraz dowolny tzw. identyfikator.
Nagłówek ko
ń
czy si
ę
znakiem “;” (
ś
rednik).
Cz
ęść
deklaracyjna zawiera tzw. deklaracj
ę
, która informuje
jaka standardowa biblioteka Turbo Pascal b
ę
dzie potrzebna.
Deklaracja ta składa si
ę
ze słowa uses, spacji oraz nazwy biblioteki.
Deklaracj
ę
nale
ż
y zako
ń
czy
ć
znakiem “;” (
ś
rednik).
Standardowa biblioteka CRT zawiera m.in. procedur
ę
writeln
oraz readln których u
ż
yto w cz
ęś
ci wykonawczej.
Cz
ęść
wykonawcza składa si
ę
z nast
ę
puj
ą
cych instrukcji,
czyli rozkazów dla komputera:
begin – rozpoczyna działanie programu,
writeln – wy
ś
wietla na ekranie tekst Mój pierwszy program,
readln – czeka na naci
ś
niecie klawisza ENTER,
end
••••
– ko
ń
czy działanie programu
15
PS/TP
PROGRAMOWANIE STRUKTURALNE
Co to jest identyfikator?
Identyfikatorem nazywamy ci
ą
g znaków bez spacji
(liter, cyfr dziesi
ę
tnych , znaków ”_”),
który rozpoczyna si
ę
od znaku podkre
ś
lenia lub litery.
16
PS/TP
PROGRAMOWANIE STRUKTURALNE
Do czego u
ż
ywamy identyfikatorów ?
Identyfikatory u
ż
ywane s
ą
do nazywania stałych, zmiennych, procedur, funkcji,
programów, pól w rekordach.
Identyfikatory mog
ą
by
ć
o dowolnej długo
ś
ci, lecz TP rozró
ż
nia jedynie
pierwsze 63 znaki.
Identyfikator musi rozpoczyna
ć
si
ę
od litery lub znaku podkre
ś
lenia.
Identyfikator nie mo
ż
e zawiera
ć
spacji. Znaki słu
żą
ce do tworzenia
identyfikatora to: znak podkre
ś
lenia “_” oraz litery i cyfry dziesi
ę
tne.
17
PS/TP
PROGRAMOWANIE STRUKTURALNE
Uwaga dotycz
ą
ca wielko
ś
ci liter
TURBO Pascal nie rozró
ż
nia wielko
ś
ci liter. Oznacza to,
ż
e
w j
ę
zyku TP nast
ę
puj
ą
ce
identyfikatory s
ą
tymi samymi identyfikatorami - s
ą
identyczne:
proces, PROCES, PrOcEs, ProceS, pROCEs.
18
PS/TP
PROGRAMOWANIE STRUKTURALNE
Jakie nazwy nie s
ą
identyfikatorami ?
Poni
ż
sze nazwy nie s
ą
identyfikatorami
i
dlatego Pascal ich nie zrozumie - s
ą
to bł
ę
dne nazwy:
9Alfa
Chrz
ą
szcz
Mój Proces
Nr(Zestawu)
$Beta&Date
19
PS/TP
PROGRAMOWANIE STRUKTURALNE
Ć
wiczenia
Ć
wiczenie cw1.pas.
Napisz program wy
ś
wietlaj
ą
cy tekst „Witaj w Ogolnopolskiej Meczarni
Programistow”.
Ć
wiczenie cw2.pas.
Napisz program sumuj
ą
cy dwie liczby rzeczywiste i pokazuj
ą
cy ich sum
ę
.
Ć
wiczenie cw3.pas.
Napisz program obliczaj
ą
cy pierwiastek kwadratowy z liczby rzeczywistej.
Ć
wiczenie cw4.pas.
Napisz program czyszcz
ą
cy ekran, a potem:
wy
ś
wietlaj
ą
cy tekst „Czekam na nacisniecie dowolnego klawisza”
a po naci
ś
ni
ę
ciu tekst „Program zakonczyl dzialanie”
20
PS/TP
PROGRAMOWANIE STRUKTURALNE
Co to jest identyfikator?
Ć
wiczenie cw5.pas.
Napisz program zawieraj
ą
cy jedn
ą
instrukcj
ę
warunkow
ą
i
czytaj
ą
cy dowoln
ą
liczb
ę
rzeczywist
ą
sprawdzaj
ą
cy, czy podana liczba jest nieujemna
je
ś
li tak, to ma obliczy
ć
i wy
ś
wietli
ć
warto
ść
pierwiastka kwadratowego podanej
liczby je
ś
li nie, to ma wy
ś
wietli
ć
komunikat „Wprowadziles liczbe ujemna”
Ć
wiczenie cw6.pas.
Napisz program zawieraj
ą
cy instrukcje warunkowe zagnie
ż
d
ż
one i
czytaj
ą
cy 3 liczby rzeczywiste
sprawdzaj
ą
cy, która z podanych liczb jest najmniejsza
wy
ś
wietlaj
ą
cy warto
ść
najmniejszej liczby
Ć
wiczenie cw7.pas.
Usprawnij program z poprzedniego
ć
wiczenia tak aby u
ż
ywał mniejszej liczby
instrukcji.
21
PS/TP
PROGRAMOWANIE STRUKTURALNE
Co to jest identyfikator?
Ć
wiczenie cw8.pas.
Napisz program zawieraj
ą
cy instrukcj
ę
p
ę
tli for wczytuj
ą
cy ci
ą
g znaków i
wy
ś
wietlaj
ą
cy kolejno wczytane znaki, ka
ż
dy znak w oddzielnej linii
Ć
wiczenie cw9.pas.
Napisz program zawieraj
ą
cy instrukcj
ę
p
ę
tli for wczytuj
ą
cy ci
ą
g znaków i
zamieniaj
ą
cy wszystkie znaki na du
ż
e oraz,
wy
ś
wietlaj
ą
cy zmieniony ci
ą
g
Ć
wiczenie cw10.pas.
Napisz program zawieraj
ą
cy 2 instrukcje p
ę
tli for (zagnie
ż
d
ż
one)
wczytuj
ą
cy wysoko
ść
n prostok
ą
ta i jego szeroko
ść
m
wy
ś
wietlaj
ą
cy prostok
ą
t utworzony ze znaków ‘x’
22
PS/TP
PROGRAMOWANIE STRUKTURALNE
Ć
wiczenie cw11.pas.
Napisz program instrukcj
ę
p
ę
tli for
wczytuj
ą
cy liczb
ę
całkowit
ą
k i
wy
ś
wietlaj
ą
cy kolejno liczby całkowite od 1 do k, ka
ż
d
ą
w osobnej linii
23
PS/TP
PROGRAMOWANIE STRUKTURALNE
Ć
wiczenie cw12.pas. (dla zaawansowanych)
Jeste
ś
sprzedawc
ą
komputerów. Cena komputera (cena_k) zale
ż
y m.in. od ceny
płyty głównej.
Je
ś
li cena płyty wzro
ś
nie o k%, to i cen
ę
komputera musisz podnie
ść
.
Przyj
ą
łe
ś
nast
ę
puj
ą
cy algorytm kalkulacji ceny komputera:
je
ś
li k mie
ś
ci si
ę
w zakresie <0%; 10%>, to cena komputera pozostaje bez zmian.
je
ś
li k mie
ś
ci si
ę
w zakresie (10%; 20%>, to cen
ę
sprzedawanego komputera
zwi
ę
kszasz o 5% warto
ś
ci płyty.
je
ś
li k > 20 %, to nie ustalasz ceny tego komputera i wyprowadzasz komunikat
”Cena za wysoka”.
Wprowadzaj cen
ę
komputera cena_k, cen
ę
płyty głównej cena_p oraz warto
ść
k –
procent o jaki wzrosła cena płyty.
Obliczaj i wyprowadzaj aktualn
ą
cen
ę
komputera.
Napisz specyfikacj
ę
zadania.
Narysuj schemat blokowy algorytmu ustalania ceny komputera.
Napisz program realizuj
ą
cy w/w algorytm
24
PS/TP
PROGRAMOWANIE STRUKTURALNE
Podstawowe elementy j
ę
zyka Pascal
Co to jest identyfikator ?
Identyfikatorem nazywamy ci
ą
g znaków bez spacji (liter, cyfr dziesi
ę
tnych ,
znaków ”_”), który rozpoczyna si
ę
od znaku podkre
ś
lenia lub litery.
Do czego u
ż
ywamy identyfikatorów ?
Identyfikatory u
ż
ywane s
ą
do nazywania stałych, zmiennych, procedur,
funkcji, programów, pól w rekordach. Identyfikatory mog
ą
by
ć
o dowolnej
długo
ś
ci, lecz TP rozró
ż
nia jedynie pierwsze 63 znaki. Identyfikator musi
rozpoczyna
ć
si
ę
od litery lub znaku podkre
ś
lenia. Identyfikator nie mo
ż
e
zawiera
ć
spacji. Znaki słu
żą
ce do tworzenia identyfikatora to: znak podkre
ś
lenia “_”
oraz litery i cyfry dziesi
ę
tne.
25
PS/TP
PROGRAMOWANIE STRUKTURALNE
Uwaga:
TURBO Pascal nie rozró
ż
nia wielko
ś
ci liter. Oznacza to,
ż
e
w j
ę
zyku TP nast
ę
puj
ą
ce identyfikatory s
ą
tymi samymi identyfikatorami –
s
ą
identyczne: proces, PROCES, PrOcEs, ProceS, pROCEs.
Jakie nazwy nie s
ą
identyfikatorami ?
Poni
ż
sze nazwy nie s
ą
identyfikatorami i dlatego Pascal ich nie
zrozumie - s
ą
to bł
ę
dne nazwy:
9Alfa
Chrz
ą
szcz
Mój Proces
Nr(Zestawu)
$Beta&Date
26
PS/TP
PROGRAMOWANIE STRUKTURALNE
Co to s
ą
znaki i symbole specjalne dla Pascala ?
Znaki i symbole u
ż
ywane przez j
ę
zyk Pascal ograniczaj
ą
si
ę
do
nast
ę
puj
ą
cych zestawów:
Litery – Alfabet angielski, od A do Z i od a do z.
Cyfry dziesi
ę
tne – Cyfry arabskie od 0 do 9.
Cyfry szesnastkowe - Cyfry arabskie od 0 do 9 oraz litery od A do Z i od a do z.
Spacja – Znak o kodzie ASCII 32.
Nast
ę
puj
ą
ce symbole maj
ą
specjalne znaczenie:
+ - * / = < > [ ] . , ( ) : ; ^ @ { } $ #
27
PS/TP
PROGRAMOWANIE STRUKTURALNE
Nast
ę
puj
ą
ce pary znaków tak
ż
e maj
ą
specjalne znaczenie:
<= >= := .. { } (* *)
<= oznacza “mniejszy lub równy”
<> oznacza “nierówny”
= oznacza “równy”
:= oznacza “podstaw” lub “przypisz”
.. oznacza “od do” (zakres indeksów w tablicach)
{ } oznacza “komentarz” (kompilator go nie tłumaczy)
(* *) oznacza “komentarz” (kompilator go nie tłumaczy)
28
PS/TP
PROGRAMOWANIE STRUKTURALNE
Co to s
ą
słowa zarezerwowane?
Słowa zarezerwowane zwane tak
ż
e słowami kluczowymi to słowa słu
żą
ce
w Pascalu do okre
ś
lonych celów
takich jak n.p. operacje logiczne, definicje i deklaracje typów, zmiennych,
procedur, funkcji, jako nazwy komend i ich cz
ęś
ci składowych.
Dlatego nie mo
ż
na ich u
ż
ywa
ć
jako identyfikatorów, na przykład: do
oznaczania zmiennych, nazw funkcji i procedur.
Przykłady:
begin, end, function, if, procedure
program, repeat, string, then, uses
var, while.
29
PS/TP
PROGRAMOWANIE STRUKTURALNE
Wy
ś
wietlanie tekstów
Jak napisa
ć
program wy
ś
wietlaj
ą
cy kilka wierszy tekstu ?
Wystarczy wczyta
ć
poprzedni program PIERWSZY.PAS
i w cz
ęś
ci wykonawczej dopisa
ć
kilka
nowych instrukcji – jak w poni
ż
szym przykładzie.
program pierwszy;
uses crt;
begin
writeln('Mój pierwszy program');
writeln('wy
ś
wietlaj
ą
cy kilka');
writeln('wierszy tekstu');
readln;
end
••••
30
PS/TP
PROGRAMOWANIE STRUKTURALNE
Jak nauczy
ć
program wczytywa
ć
tekst z klawiatury?
Aby program mógł wczytywa
ć
jaki
ś
tekst nale
ż
y napisa
ć
nast
ę
pny program,
który wygl
ą
da nast
ę
puj
ą
co (zapisz go w pliku DRUGI.PAS):
program drugi;
uses crt;
var tekst : string;
begin
readln(tekst);
writeln('Wpisałe
ś
', tekst);
readln;
end
••••
31
PS/TP
PROGRAMOWANIE STRUKTURALNE
Do czego słu
ż
y deklaracja ?
Deklaracje umieszczane w cz
ęś
ci deklaracyjnej programu słu
żą
do rezerwowania
okre
ś
lonego obszaru
w pami
ę
ci operacyjnej RAM po to aby przechowywa
ć
tam dane.
W ko
ń
cu gdzie
ś
te dane program musi przechowywa
ć
!
Obszary pami
ę
ci tworzone przez Pascal nazywamy zmiennymi
(tutaj nasz
ą
zmienn
ą
jest nazwa tekst).
Ka
ż
da deklaracja zmiennej rozpoczyna si
ę
od słowa zarezerwowanego var.
Po tym słowie musi nast
ę
powa
ć
spacja, nazwa zmiennej, dwukropek,
typ zmiennej oraz
ś
rednik.
Przykład:
var x: string;
32
PS/TP
PROGRAMOWANIE STRUKTURALNE
Cały zapis deklaracji var tekst : string; mo
ż
na odczytywa
ć
w taki sposób:
“Zmienna (ang. variable) tekst jest typu ła
ń
cuchowego”,
ale poprawny programista powie inaczej: “identyfikator tekst jest zmienn
ą
typu ła
ń
cuchowego”.
Słowo var oznacza “zmienna”, a dwukropek czytamy jako “jest typu”.
Słowo string jest najcz
ęś
ciej u
ż
ywanym słowem przez programistów, bowiem
u
ż
ytkownicy cz
ę
sto wpisuj
ą
tekst za pomoc
ą
klawiatury - trzeba wi
ę
c
go gdzie
ś
przechowywa
ć
.
Przykład:
Do zmiennej tekst mo
ż
emy wstawia
ć
dowolny tekst.
33
PS/TP
PROGRAMOWANIE STRUKTURALNE
Co to jest typ ła
ń
cuchowy ?
Typ ła
ń
cuchowy to po prostu rodzaj danych składaj
ą
cych si
ę
z ci
ą
gu
znaków – mo
ż
na powiedzie
ć ż
e dane te s
ą
przewa
ż
nie tekstami.
Długo
ść
takich danych nie mo
ż
e przekroczy
ć
255 znaków.
Przykład:
...
var s: string;
begin
...
s := ‘mój kot cz
ę
sto buszuje po klawiaturze’;
...
end.
34
PS/TP
PROGRAMOWANIE STRUKTURALNE
Jak działa program DRUGI.PAS ?
program drugi;
uses crt;
var tekst : string;
begin
readln(tekst);
writeln('Wpisałe
ś
', tekst);
readln;
end
••••
35
PS/TP
PROGRAMOWANIE STRUKTURALNE
Działanie programu rozpoczyna si
ę
od instrukcji begin.
Instrukcja readln(tekst); czeka a
ż
z klawiatury kto
ś
wprowadzi jakie
ś
znaki –
nie musi to by
ś
sensowny tekst,
na przykład:
„mój kot cz
ę
sto buszuje po klawiaturze”.
Po naci
ś
ni
ę
ciu klawisza ENTER wprowadzony tekst jest zapami
ę
tany
w zmiennej tekst. Nast
ę
pna instrukcja zawiera dwa parametry:
konkretny tekst oraz nazw
ę
zmiennej.
Instrukcja writeln wy
ś
wietla najpierw tekst “Wpisałe
ś
”,
a potem zawarto
ść
zmiennej tekst.
Kursor przechodzi do nowego wiersza.
Instrukcja readln zatrzymuje program a
ż
do naci
ś
ni
ę
cia klawisza ENTER.
Instrukcja end
••••
ko
ń
czy działanie programu i sterowanie
komputerem wraca do systemu operacyjnego.
36
PS/TP
PROGRAMOWANIE STRUKTURALNE
Je
ś
li uruchomiłe(a)
ś
ten program, to na pewno dziwisz si
ę ż
e na ekranie
nic si
ę
nie dzieje.
WYJA
Ś
NIENIE: po prostu program czeka na podanie jakiego
ś
ci
ą
gu
znaków i naci
ś
ni
ę
cie klawisza ENTER (bo tak działa procedura readln(tekst)).
Wpisujesz n.p. „Mam do
ść
” i naciskasz ENTER.
Dopiero teraz na ekranie pojawi si
ę
nast
ę
puj
ą
cy tekst
“Wpisałe
ś
Mam do
ść
” – zadziałała wła
ś
nie procedura writeln.
37
PS/TP
PROGRAMOWANIE STRUKTURALNE
Jak skasowa
ć
zawarto
ść
ekranu ?
W trakcie poprzednich prób uruchamiania programu na ekranie pozostały teksty,
które teraz nie s
ą
Ci potrzebne –
s
ą
to tzw. “
ś
mieci komputerowe”. Jak mo
ż
na ich si
ę
pozby
ć
?
Rozwi
ą
zanie jest bardzo proste – dobrym zwyczajem programistów jest
umieszczanie na pocz
ą
tku
cz
ęś
ci wykonawczej instrukcji clrscr.
Instrukcja clrscr (ang. clear screen) kasuje zawarto
ść
całego ekranu
i ustawia kursor w pierwszej
kolumnie pierwszej linii ekranu.
38
PS/TP
PROGRAMOWANIE STRUKTURALNE
program trzeci;
uses crt;
var tekst : string;
begin
clrscr;
writeln('Podaj swoje imi
ę
:');
readln(tekst);
writeln('Cze
ść
', tekst);
readln;
end
••••
39
PS/TP
PROGRAMOWANIE STRUKTURALNE
TYPY DANYCH
Klasyfikacja typów w Turbo Pascalu
Trudne ale konieczne
40
PS/TP
Typ
jest to określenie:
•zbioru wartości
, do którego może
należeć stała, zmienna, wyrażenie
albo może być generowany przez
funkcję
•zbioru operacji
, które można
wykonywać na ww. obiektach
41
PS/TP
42
PS/TP
Typami prostymi są
typy porządkowe, rzeczywiste,
łańcuchowe i wskazujące
a typami strukturalnymi (złożonymi)
są typy tablicowe, rekordowe,
mnogościowe i plikowe
.
43
PS/TP
Typ porządkowy charakteryzuje się tym, że jest związany z
przeliczalnym zbiorem danych tj. reprezentuje skończony zbiór
wartości. Najważniejsze typy porządkowe to: wyliczeniowy,
całkowity, logiczny.
Typ wyliczeniowy to np. zbiór wartości (
wiosna
,
lato
,
jesien
,
zima
)
Typ całkowity INTEGER to zbiór wartości liczb od (
-32 768
do
+32 767
)
Typ całkowity SHORTINT to zbiór wartości liczb od (
-128
do
+127
)
Typ całkowity LONGINT to zbiór wartości liczb od (
-2 147 483
648
do
+2 147 483 647
)
Typ całkowity BYTE to zbiór wartości liczb od (
0
do
255
)
Typ całkowity WORD to zbiór wartości liczb od (
0
do
65 535
)
Typ logiczny BOOLEAN to zbiór wartości logicznych:
FALSE
,
TRUE
44
PS/TP
PROGRAMOWANIE STRUKTURALNE
W j
ę
zyku Pascal poj
ę
cie typu danych jest szczególnie wyrazi
ś
cie okre
ś
lone.
Wszelkie stałe, zmienne lub wyra
ż
enia
musz
ą
by
ć
okre
ś
lonego typu i programista zawsze powinien zdawa
ć
spraw
ę
z ogranicze
ń
reprezentacji danego typu i zwi
ą
zanych z tym problemów.
Mo
ż
liwe s
ą
zmiany typu (przej
ś
cie od jednego typu do drugiego),
ale mog
ą
one by
ć
zwi
ą
zane ze zmian
ą
warto
ś
ci danego wyra
ż
enia lub zmiennej.
Ka
ż
dy typ ma okre
ś
lony zestaw operacji, które mo
ż
na wykonywa
ć
na jego elementach.
45
PS/TP
PROGRAMOWANIE STRUKTURALNE
Typy danych dzielimy przede wszystkim na
typy proste (skalarne) i zło
ż
one.
Przykładem typu prostego jest typ integer (liczby całkowite), za
ś
typu zło
ż
onego-tablice, zbiory, pliki i rekordy. Elementami typów prostych
s
ą
pojedyncze liczby, znaki lub identyfikatory, natomiast elementami typów
zło
ż
onych s
ą
struktury danych, na które składaj
ą
si
ę
elementy typów prostych
lub innych typów zło
ż
onych.
Programista mo
ż
e tworzy
ć
własne typy danych, prawie bez
ż
adnych ogranicze
ń
.
Mo
ż
na tak
ż
e tworzy
ć
dynamiczne struktury
danych, to jest takie struktury, których posta
ć
mo
ż
e zmienia
ć
si
ę
w trakcie
wykonania programu.
46
PS/TP
PROGRAMOWANIE STRUKTURALNE
Typ jest to okre
ś
lenie:
zbioru warto
ś
ci, do którego mo
ż
e nale
ż
e
ć
stała, zmienna,
wyra
ż
enie albo mo
ż
e by
ć
generowany przez funkcj
ę
zbioru operacji, które mo
ż
na wykonywa
ć
na ww. obiektach
47
PS/TP
PROGRAMOWANIE STRUKTURALNE
Typami prostymi s
ą
:
typy porz
ą
dkowe, rzeczywiste, ła
ń
cuchowe i wskazuj
ą
ce
a typami strukturalnymi (zło
ż
onymi) s
ą
:
typy tablicowe, rekordowe, mnogo
ś
ciowe i plikowe.
48
PS/TP
PROGRAMOWANIE STRUKTURALNE
Typy: wyliczeniowy, całkowity, logiczny
Typ porz
ą
dkowy charakteryzuje si
ę
tym,
ż
e jest zwi
ą
zany z przeliczalnym
zbiorem danych tj.
reprezentuje sko
ń
czony zbiór warto
ś
ci. Najwa
ż
niejsze typy porz
ą
dkowe to:
wyliczeniowy, całkowity, logiczny.
Typ wyliczeniowy to np. zbiór warto
ś
ci (wiosna, lato, jesien, zima)
Typ całkowity INTEGER to zbiór warto
ś
ci liczb od (-32 768 do +32 767)
Typ całkowity SHORTINT to zbiór warto
ś
ci liczb od (-128 do +127)
Typ całkowity LONGINT to zbiór warto
ś
ci liczb od (-2 147 483 648 do +2 147 483 647)
Typ całkowity BYTE to zbiór warto
ś
ci liczb od (0 do 255)
Typ całkowity WORD to zbiór warto
ś
ci liczb od (0 do 65 535)
Typ logiczny BOOLEAN to zbiór warto
ś
ci logicznych: FALSE, TRUE
49
PS/TP
PROGRAMOWANIE STRUKTURALNE
Standardowe typy proste
W j
ę
zyku Pascal istniej
ą
4 podstawowe typy proste „wbudowane”
w standard j
ę
zyka:
Integer, Boolean, Char, Real
W komercyjnych implementacjach j
ę
zyka Pascal, jak np.
w Turbo Pascalu lub Borland Pascalu istnieje znaczenie wi
ę
cej typów
wbudowanych. Omówmy je przy okazji przedstawiania
poszczególnych typów prostych.
50
PS/TP
PROGRAMOWANIE STRUKTURALNE
Typ integer
Ten typ reprezentuje liczby ca
ł
kowite. Warto
ść
tego typu zajmuje
2 bajty w pami
ę
ci komputera, co pozwala na zakres ich
warto
ś
ci od –32768 do 32767.
Problemy: Ile jest możliwych wartości liczb
całkowitych?
Dlaczego dwubajtowa reprezentacja pozwala na w
ł
aśnie
taki zakres wartości?
W praktycznych zastosowaniach cz
ę
sto korzysta si
ę
równie
ż
z innych typów ca
ł
kowitych
do jednobajtowych do czterobajtowych. Oto lista wszystkich typów ca
ł
kowitych:
shortint
– jednobajtowa liczba ca
ł
kowita z zakresu od –128 do 127,
longint
–
czterobajtowa liczba ca
ł
kowita z zakresu od –2147483648 do 2147483647,
byte
– jednobajtowa liczba ca
ł
kowita z zakresu od 0 do 255,
word
– dwubajtowa liczba ca
ł
kowita z zakresu od 0 do 65535.
51
PS/TP
PROGRAMOWANIE STRUKTURALNE
Na liczbach wszystkich wymienionych wy
ż
ej typów okre
ś
lone s
ą
operacje dodawania ( + ), odejmowania ( - ), mno
ż
enia ( * ),
dzielenia całkowitego ( div ) i reszty z dzielenia ( mod ).
Rezultat takiego działania jest równie
ż
liczb
ą
całkowit
ą
.
Dodatkowo jest okre
ś
lone tak
ż
e zwykłe dzielenie ( / ),
którego rezultat jest zawsze liczb
ą
rzeczywist
ą
(zmiennoprzecinkow
ą
),
nawet je
ś
li cz
ęść
ułamkowa wyniku wynosi zero.
52
PS/TP
PROGRAMOWANIE STRUKTURALNE
Typ Boolean
Jest to zbiór warto
ś
ci logicznych. Nazwa pochodzi od nazwiska George’a
Boole’a, angielskiego matematyka, który stworzy
ł
podstawy wspó
ł
czesnej
logiki matematycznej (algebra Boole’a).
Typ ten ma dwie warto
ś
ci: true oraz false. Warto
ś
ci takie mog
ą
by
ć
rezultatem
dzia
ł
ania jednego z operatorów porównania(=, >, <,<>, >=, <=).
Na obiektach
tego typu okre
ś
lone s
ą
takie operacje jak koniunkcja (and),
negacja (not) alternatywa zwyk
ł
a (or) oraz alternatywa wykluczaj
ą
ca (xor).
Problem:
Co jest więcej warte: prawda czy fałsz?
53
PS/TP
PROGRAMOWANIE STRUKTURALNE
Typ Char
Jest to zbiór znaków drukarki lub terminalu tekstowego
(char to skrót od słowa character). Zbiór ten odpowiada zwykle jednemu ze
standardów ISO lub ameryka
ń
skiemu standardowi ASCII. W Polsce – jak wiadomo –
mamy odwieczny problem kodowania polskich znaków diakrytycznych, wi
ę
c graficzna
posta
ć
pewnych znaków b
ę
dzie zale
ż
ała od
ś
rodowiska, w jakim pracuje programista.
54
PS/TP
PROGRAMOWANIE STRUKTURALNE
Typ Real
S
ą
to liczby rzeczywiste, zwane te
ż
zmiennoprzecinkowymi
(ang. floating point numbers). Liczby takie mog
ą
posiada
ć
cz
ęść
ułamkow
ą
,
mog
ą
te
ż
by
ć
zapisywane w postaci wykładniczej, np. 1 , 2E-03.
Zakres warto
ś
ci typu real to liczby od 2.9 x 10-39 do 1.7 x 1038
Jedna liczba tego typu zajmuje 6 bajtów i posiada od 11 do 12 cyfr znacz
ą
cych.
Inne typy zmiennoprzecinkowe to:
single
- czterobajtowa liczba rzeczywista z przedziału
od 1.5 x 10-45 do 3.4 x 1038, posiadaj
ą
ca od 7 do 8 cyfr
znacz
ą
cych,
double
- o
ś
miobajtowa liczba rzeczywista z przedziału
od 5.0 x 10-324 do 1.7 x 10308, posiadaj
ą
ca od 15 do 16 cyfr znacz
ą
cych,
extended
- dziesi
ę
ciobajtowa liczba rzeczywista z przedziału
od 3.4 x 10-4932 do 1.1 x 104932, posiadaj
ą
ca od 19 do 20 cyfr znacz
ą
cych.
55
PS/TP
PROGRAMOWANIE STRUKTURALNE
Oczywi
ś
cie, wszystkie powy
ż
sze zakresy dotycz
ą
warto
ś
ci
bezwzgl
ę
dnej danych liczb.
Nale
ż
y podkre
ś
li
ć
,
ż
e wszystkie działania na liczbach
rzeczywistych s
ą
przybli
ż
one ( wyst
ę
puj
ą
bł
ę
dy zaokr
ą
gle
ń
),
co mo
ż
e sprawia
ć
problemy przy wyodr
ę
bnianiu przypadków w
rodzaju 0 dla równania kwadratowego.
56
PS/TP
PROGRAMOWANIE STRUKTURALNE
Typy wyliczeniowe
W pewnych przypadkach przydaje si
ę
typ wyliczeniowy ( ang. enumerated type).
Przy jego definicji podajemy
wszystkie mo
ż
liwe jego warto
ś
ci, np.
TYPE
sex = (male, female) ;
dayofweek = (Mon, Tue, Wed, Thu, Fri, Sat, Sun) ;
Warto
ś
ciami mog
ą
by
ć
identyfikatory (utworzone na ogólnych zasadach, jak
identyfikatory zmiennych). Oto przykłady deklaracji i u
ż
ycia zmiennych takich typów:
VAR
s: sex;
d: dayofweek;
...
s : = male;
d : = Mon;
Nie zmiennych tego typu nie mo
ż
na wykona
ć
operacji arytmetycznych,
ale jedynie operacje typowe dla typów uporz
ą
dkowanych.
57
PS/TP
PROGRAMOWANIE STRUKTURALNE
Typy okrojone
Je
ś
li zmienna przyjmie warto
ś
ci tylko z pewnego przedziału, wtedy mo
ż
na
zdefiniowa
ć
jej typ jako typ okrojony (ang. subrange type). Oto przykłady:
TYPE
year = 1900 . . 2000;
letter = ‘a’ . . ‘z’ ;
workday = Mon . . Fri
Zmienne powy
ż
szych typów nie mog
ą
otrzymywa
ć
warto
ś
ci spoza
wyznaczonego zakresu, co pozwala na lepsz
ą
kontrol
ę
bł
ę
dów wykonania
programów. Uwaga: typów okrojonych nie mo
ż
na tworzy
ć
w oparciu o zakres
liczb rzeczywistych, np. zakres 1 . 5 . . 2 . 5 jest niepoprawny.
58
PS/TP
PROGRAMOWANIE STRUKTURALNE
Typy porz
ą
dkowe
Typy porz
ą
dkowe (z ang. ordinal types) - s
ą
to typy, w których mo
ż
na
wprowadzi
ć
relacj
ę
uporz
ą
dkowania, co jest równowa
ż
ne przypisaniu ka
ż
dej
warto
ś
ci pewnej nieujemnej liczby całkowitej, która oznacza liczb
ę
porz
ą
dkow
ą
danej warto
ś
ci w całym zbiorze warto
ś
ci danego typu. Mówi
ą
c prosto: wszystkie
liczby tego typu mo
ż
na ustawi
ć
w uporz
ą
dkowany ci
ą
g , na przykład:
typ dayofweek:
Mon, Tue, Wed, Thu, Fri, Sat, Sun
0 1 2 3 4 5 6
typ Boolean:
false, true
1
typ: letter:
‘a’ , ‘b’ , ‘c’ , . . . , ‘z’
0 1 2 25
59
PS/TP
PROGRAMOWANIE STRUKTURALNE
Tabela podstawowych typów danych w Turbo Pascalu
TYP – identyfikator typu
ZAKRES – zbiór warto
ś
ci jakie mog
ą
przyjmowa
ć
zmienne danego typu
ROZMIAR W BAJTACH – ilo
ść
pami
ę
ci operacyjnej zajmowanej przez zmienn
ą
danego typu
1
False, True
Boolean
256
Dowolny łańcuch znaków o długości do 255
String
1 + n
Łańcuch znaków np. napisy: ‘Ala ma kota’
String[n]
1
Wszystkie znaki ASCII (np. ‘1’, ‘2’, ’@’, ‘a’,
’z’)
Char
6
2.9 x 10
–39
.. 1.7 x 10
38
Real
4
-2 147 483 648 .. 2 147 483 647
Longint
2
0 .. 65 535
Word
2
-32 768 ... 32 767
Integer
1
-128 .. 127
Shortint
1
0 .. 255
Byte
ROZMIAR
W
BAJTACH
ZAKRES
TYP
Uwaga: n – liczba znaków w
ł
a
ń
cuchu.
60
PS/TP
PROGRAMOWANIE STRUKTURALNE
Kompilacja programu – powtórzenie
Załó
ż
my,
ż
e mamy ju
ż
gotowy algorytm programu w postaci
schematu blokowego. Aby móc wyprodukowa
ć
gotowy do działania
program komputerowy nale
ż
y go najpierw napisa
ć
w wersji
ź
ródłowej
i zapisa
ć
do pliku. W przypadku j
ę
zyka PASCAL pliki
ź
ródłowe
zawieraj
ą
ce tekst programu b
ę
d
ą
miały rozszerzenie PAS.
Po napisaniu i przetestowaniu programu nale
ż
y go przetłumaczy
ć
na program wynikowy binarny. Wynikowy program binarny b
ę
dzie
zapisany do pliku takiej samej nazwie głównej o rozszerzeniu EXE.
Czynno
ść
polegaj
ą
c
ą
na tłumaczeniu programu
ź
ródłowego
na program binarny (wykonywalny) nazywamy kompilacj
ą
.
Do kompilacji programów słu
żą
specjalne systemy nazywane
kompilatorami. W naszym przypadku kompilator do j
ę
zyka PASCAL
nazywa si
ę
Turbo-Pascal (wersja 6.0 lub 7.0).
61
PS/TP
PROGRAMOWANIE STRUKTURALNE
TYPY DANYCH
Klasyfikacja typów w Turbo Pascalu
Trudne ale konieczne
62
PS/TP
PROGRAMOWANIE STRUKTURALNE
W j
ę
zyku Pascal poj
ę
cie typu danych jest szczególnie wyrazi
ś
cie okre
ś
lone.
Wszelkie stałe, zmienne lub wyra
ż
enia
musz
ą
by
ć
okre
ś
lonego typu i programista zawsze powinien zdawa
ć
spraw
ę
z ogranicze
ń
reprezentacji danego typu i zwi
ą
zanych z tym problemów.
Mo
ż
liwe s
ą
zmiany typu (przej
ś
cie od jednego typu do drugiego),
ale mog
ą
one by
ć
zwi
ą
zane ze zmian
ą
warto
ś
ci danego wyra
ż
enia lub zmiennej.
Ka
ż
dy typ ma okre
ś
lony zestaw operacji, które mo
ż
na wykonywa
ć
na jego elementach.
63
PS/TP
PROGRAMOWANIE STRUKTURALNE
Typy danych dzielimy przede wszystkim na
typy proste (skalarne) i zło
ż
one.
Przykładem typu prostego jest typ integer (liczby całkowite), za
ś
typu zło
ż
onego-tablice, zbiory, pliki i rekordy. Elementami typów prostych
s
ą
pojedyncze liczby, znaki lub identyfikatory, natomiast elementami typów
zło
ż
onych s
ą
struktury danych, na które składaj
ą
si
ę
elementy typów prostych
lub innych typów zło
ż
onych.
Programista mo
ż
e tworzy
ć
własne typy danych, prawie bez
ż
adnych ogranicze
ń
.
Mo
ż
na tak
ż
e tworzy
ć
dynamiczne struktury
danych, to jest takie struktury, których posta
ć
mo
ż
e zmienia
ć
si
ę
w trakcie
wykonania programu.
64
PS/TP
PROGRAMOWANIE STRUKTURALNE
Typ jest to okre
ś
lenie:
zbioru warto
ś
ci, do którego mo
ż
e nale
ż
e
ć
stała, zmienna,
wyra
ż
enie albo mo
ż
e by
ć
generowany przez funkcj
ę
zbioru operacji, które mo
ż
na wykonywa
ć
na ww. obiektach
65
PS/TP
PROGRAMOWANIE STRUKTURALNE
Typami prostymi s
ą
:
typy porz
ą
dkowe, rzeczywiste, ła
ń
cuchowe i wskazuj
ą
ce
a typami strukturalnymi (zło
ż
onymi) s
ą
:
typy tablicowe, rekordowe, mnogo
ś
ciowe i plikowe.
66
PS/TP
PROGRAMOWANIE STRUKTURALNE
Typy: wyliczeniowy, całkowity, logiczny
Typ porz
ą
dkowy charakteryzuje si
ę
tym,
ż
e jest zwi
ą
zany z przeliczalnym
zbiorem danych tj.
reprezentuje sko
ń
czony zbiór warto
ś
ci. Najwa
ż
niejsze typy porz
ą
dkowe to:
wyliczeniowy, całkowity, logiczny.
Typ wyliczeniowy to np. zbiór warto
ś
ci (wiosna, lato, jesien, zima)
Typ całkowity INTEGER to zbiór warto
ś
ci liczb od (-32 768 do +32 767)
Typ całkowity SHORTINT to zbiór warto
ś
ci liczb od (-128 do +127)
Typ całkowity LONGINT to zbiór warto
ś
ci liczb od (-2 147 483 648 do +2 147 483 647)
Typ całkowity BYTE to zbiór warto
ś
ci liczb od (0 do 255)
Typ całkowity WORD to zbiór warto
ś
ci liczb od (0 do 65 535)
Typ logiczny BOOLEAN to zbiór warto
ś
ci logicznych: FALSE, TRUE
67
PS/TP
PROGRAMOWANIE STRUKTURALNE
Standardowe typy proste
W j
ę
zyku Pascal istniej
ą
4 podstawowe typy proste „wbudowane”
w standard j
ę
zyka:
Integer, Boolean, Char, Real
W komercyjnych implementacjach j
ę
zyka Pascal, jak np.
w Turbo Pascalu lub Borland Pascalu istnieje znaczenie wi
ę
cej typów
wbudowanych. Omówmy je przy okazji przedstawiania
poszczególnych typów prostych.
68
PS/TP
PROGRAMOWANIE STRUKTURALNE
Typ integer
Ten typ reprezentuje liczby ca
ł
kowite. Warto
ść
tego typu zajmuje
2 bajty w pami
ę
ci komputera, co pozwala na zakres ich
warto
ś
ci od –32768 do 32767.
Problemy: Ile jest możliwych wartości liczb
całkowitych?
Dlaczego dwubajtowa reprezentacja pozwala na w
ł
aśnie
taki zakres wartości?
W praktycznych zastosowaniach cz
ę
sto korzysta si
ę
równie
ż
z innych typów ca
ł
kowitych
do jednobajtowych do czterobajtowych. Oto lista wszystkich typów ca
ł
kowitych:
shortint
– jednobajtowa liczba ca
ł
kowita z zakresu od –128 do 127,
longint
–
czterobajtowa liczba ca
ł
kowita z zakresu od –2147483648 do 2147483647,
byte
– jednobajtowa liczba ca
ł
kowita z zakresu od 0 do 255,
word
– dwubajtowa liczba ca
ł
kowita z zakresu od 0 do 65535.
69
PS/TP
PROGRAMOWANIE STRUKTURALNE
Na liczbach wszystkich wymienionych wy
ż
ej typów okre
ś
lone s
ą
operacje dodawania ( + ), odejmowania ( - ), mno
ż
enia ( * ),
dzielenia całkowitego ( div ) i reszty z dzielenia ( mod ).
Rezultat takiego działania jest równie
ż
liczb
ą
całkowit
ą
.
Dodatkowo jest okre
ś
lone tak
ż
e zwykłe dzielenie ( / ),
którego rezultat jest zawsze liczb
ą
rzeczywist
ą
(zmiennoprzecinkow
ą
),
nawet je
ś
li cz
ęść
ułamkowa wyniku wynosi zero.
70
PS/TP
PROGRAMOWANIE STRUKTURALNE
Typ Boolean
Jest to zbiór warto
ś
ci logicznych. Nazwa pochodzi od nazwiska George’a
Boole’a, angielskiego matematyka, który stworzy
ł
podstawy wspó
ł
czesnej
logiki matematycznej (algebra Boole’a).
Typ ten ma dwie warto
ś
ci: true oraz false. Warto
ś
ci takie mog
ą
by
ć
rezultatem
dzia
ł
ania jednego z operatorów porównania(=, >, <,<>, >=, <=).
Na obiektach
tego typu okre
ś
lone s
ą
takie operacje jak koniunkcja (and),
negacja (not) alternatywa zwyk
ł
a (or) oraz alternatywa wykluczaj
ą
ca (xor).
Problem:
Co jest więcej warte: prawda czy fałsz?
71
PS/TP
PROGRAMOWANIE STRUKTURALNE
Typ Char
Jest to zbiór znaków drukarki lub terminalu tekstowego
(char to skrót od słowa character). Zbiór ten odpowiada zwykle jednemu ze
standardów ISO lub ameryka
ń
skiemu standardowi ASCII. W Polsce – jak wiadomo –
mamy odwieczny problem kodowania polskich znaków diakrytycznych, wi
ę
c graficzna
posta
ć
pewnych znaków b
ę
dzie zale
ż
ała od
ś
rodowiska, w jakim pracuje programista.
72
PS/TP
PROGRAMOWANIE STRUKTURALNE
Typ Real
S
ą
to liczby rzeczywiste, zwane te
ż
zmiennoprzecinkowymi
(ang. floating point numbers). Liczby takie mog
ą
posiada
ć
cz
ęść
ułamkow
ą
,
mog
ą
te
ż
by
ć
zapisywane w postaci wykładniczej, np. 1 , 2E-03.
Zakres warto
ś
ci typu real to liczby od 2.9 x 10-39 do 1.7 x 1038
Jedna liczba tego typu zajmuje 6 bajtów i posiada od 11 do 12 cyfr znacz
ą
cych.
Inne typy zmiennoprzecinkowe to:
single
- czterobajtowa liczba rzeczywista z przedziału
od 1.5 x 10-45 do 3.4 x 1038, posiadaj
ą
ca od 7 do 8 cyfr
znacz
ą
cych,
double
- o
ś
miobajtowa liczba rzeczywista z przedziału
od 5.0 x 10-324 do 1.7 x 10308, posiadaj
ą
ca od 15 do 16 cyfr znacz
ą
cych,
extended
- dziesi
ę
ciobajtowa liczba rzeczywista z przedziału
od 3.4 x 10-4932 do 1.1 x 104932, posiadaj
ą
ca od 19 do 20 cyfr znacz
ą
cych.
73
PS/TP
PROGRAMOWANIE STRUKTURALNE
Oczywi
ś
cie, wszystkie powy
ż
sze zakresy dotycz
ą
warto
ś
ci
bezwzgl
ę
dnej danych liczb.
Nale
ż
y podkre
ś
li
ć
,
ż
e wszystkie działania na liczbach
rzeczywistych s
ą
przybli
ż
one ( wyst
ę
puj
ą
bł
ę
dy zaokr
ą
gle
ń
),
co mo
ż
e sprawia
ć
problemy przy wyodr
ę
bnianiu przypadków w
rodzaju 0 dla równania kwadratowego.
74
PS/TP
PROGRAMOWANIE STRUKTURALNE
Typy wyliczeniowe
W pewnych przypadkach przydaje si
ę
typ wyliczeniowy ( ang. enumerated type).
Przy jego definicji podajemy
wszystkie mo
ż
liwe jego warto
ś
ci, np.
TYPE
sex = (male, female) ;
dayofweek = (Mon, Tue, Wed, Thu, Fri, Sat, Sun) ;
Warto
ś
ciami mog
ą
by
ć
identyfikatory (utworzone na ogólnych zasadach, jak
identyfikatory zmiennych). Oto przykłady deklaracji i u
ż
ycia zmiennych takich typów:
VAR
s: sex;
d: dayofweek;
...
s : = male;
d : = Mon;
Nie zmiennych tego typu nie mo
ż
na wykona
ć
operacji arytmetycznych,
ale jedynie operacje typowe dla typów uporz
ą
dkowanych.
75
PS/TP
PROGRAMOWANIE STRUKTURALNE
Typy okrojone
Je
ś
li zmienna przyjmie warto
ś
ci tylko z pewnego przedziału, wtedy mo
ż
na
zdefiniowa
ć
jej typ jako typ okrojony (ang. subrange type). Oto przykłady:
TYPE
year = 1900 . . 2000;
letter = ‘a’ . . ‘z’ ;
workday = Mon . . Fri
Zmienne powy
ż
szych typów nie mog
ą
otrzymywa
ć
warto
ś
ci spoza
wyznaczonego zakresu, co pozwala na lepsz
ą
kontrol
ę
bł
ę
dów wykonania
programów. Uwaga: typów okrojonych nie mo
ż
na tworzy
ć
w oparciu o zakres
liczb rzeczywistych, np. zakres 1 . 5 . . 2 . 5 jest niepoprawny.
76
PS/TP
PROGRAMOWANIE STRUKTURALNE
Typy porz
ą
dkowe
Typy porz
ą
dkowe (z ang. ordinal types) - s
ą
to typy, w których mo
ż
na
wprowadzi
ć
relacj
ę
uporz
ą
dkowania, co jest równowa
ż
ne przypisaniu ka
ż
dej
warto
ś
ci pewnej nieujemnej liczby całkowitej, która oznacza liczb
ę
porz
ą
dkow
ą
danej warto
ś
ci w całym zbiorze warto
ś
ci danego typu. Mówi
ą
c prosto: wszystkie
liczby tego typu mo
ż
na ustawi
ć
w uporz
ą
dkowany ci
ą
g , na przykład:
typ dayofweek:
Mon, Tue, Wed, Thu, Fri, Sat, Sun
0 1 2 3 4 5 6
typ Boolean:
false, true
1
typ: letter:
‘a’ , ‘b’ , ‘c’ , . . . , ‘z’
0 1 2 25
77
PS/TP
PROGRAMOWANIE STRUKTURALNE
Tabela podstawowych typów danych w Turbo Pascalu
TYP – identyfikator typu
ZAKRES – zbiór warto
ś
ci jakie mog
ą
przyjmowa
ć
zmienne danego typu
ROZMIAR W BAJTACH – ilo
ść
pami
ę
ci operacyjnej zajmowanej przez zmienn
ą
danego typu
1
False, True
Boolean
256
Dowolny łańcuch znaków o długości do 255
String
1 + n
Łańcuch znaków np. napisy: ‘Ala ma kota’
String[n]
1
Wszystkie znaki ASCII (np. ‘1’, ‘2’, ’@’, ‘a’,
’z’)
Char
6
2.9 x 10
–39
.. 1.7 x 10
38
Real
4
-2 147 483 648 .. 2 147 483 647
Longint
2
0 .. 65 535
Word
2
-32 768 ... 32 767
Integer
1
-128 .. 127
Shortint
1
0 .. 255
Byte
ROZMIAR
W
BAJTACH
ZAKRES
TYP
Uwaga: n – liczba znaków w
ł
a
ń
cuchu.
78
PS/TP
PROGRAMOWANIE STRUKTURALNE
Kompilacja programu – powtórzenie
Załó
ż
my,
ż
e mamy ju
ż
gotowy algorytm programu w postaci
schematu blokowego. Aby móc wyprodukowa
ć
gotowy do działania
program komputerowy nale
ż
y go najpierw napisa
ć
w wersji
ź
ródłowej
i zapisa
ć
do pliku. W przypadku j
ę
zyka PASCAL pliki
ź
ródłowe
zawieraj
ą
ce tekst programu b
ę
d
ą
miały rozszerzenie PAS.
Po napisaniu i przetestowaniu programu nale
ż
y go przetłumaczy
ć
na program wynikowy binarny. Wynikowy program binarny b
ę
dzie
zapisany do pliku takiej samej nazwie głównej o rozszerzeniu EXE.
Czynno
ść
polegaj
ą
c
ą
na tłumaczeniu programu
ź
ródłowego
na program binarny (wykonywalny) nazywamy kompilacj
ą
.
Do kompilacji programów słu
żą
specjalne systemy nazywane
kompilatorami. W naszym przypadku kompilator do j
ę
zyka PASCAL
nazywa si
ę
Turbo-Pascal (wersja 6.0 lub 7.0).
79
PS/TP
PROGRAMOWANIE STRUKTURALNE
Struktura programu w j
ę
zyku Turbo Pascalu
80
PS/TP
PROGRAMOWANIE STRUKTURALNE
UWAGA: nazwy słów kluczowych (zarezerwowanych) b
ę
d
ą
pisane
DU
ś
YMI literami, w celu zwi
ę
kszenia przejrzysto
ś
ci programów.
Ka
ż
da instrukcja lub deklaracja musi ko
ń
czy
ć
si
ę ś
rednikiem.
Ka
ż
dy program w TURBO Pascalu składa si
ę
z nast
ę
puj
ą
cych cz
ęś
ci:
Nagłówek programu
Cz
ęść
deklaracyjna
Cz
ęść
główna
Kropka
81
PS/TP
PROGRAMOWANIE STRUKTURALNE
Nagłówek programu
Nagłówek programu składa si
ę
ze słowa kluczowego PROGRAM, spacji,
identyfikatora oraz
ś
rednika.
Przykłady:
PROGRAM Obsluga_Klawiatury;
PROGRAM Rownanie_Kwadratowe;
PROGRAM ProgramNr120;
82
PS/TP
PROGRAMOWANIE STRUKTURALNE
Cz
ęść
deklaracyjna
Cz
ęść
deklaracyjna programu składa si
ę
z wielu ró
ż
nych słów kluczowych, a w
szczególnym przypadku mo
ż
e nie wyst
ę
powa
ć
.
W przypadku deklarowania zmiennych stosujemy
słowo zarezerwowane VAR po którym wymieniamy
identyfikatory zmiennych oddzielone przecinkami.
Nast
ę
pnie umieszczamy znak dwukropka po
którym wpisujemy nazw
ę
typu.
Przykłady:
VAR
z, y, z , p, q : REAL;
bajt1, bajt1 : BYTE;
i, j, k : INTEGER;
line, kolumn, row : LONGINT;
nazwa, imie : STRING[30];
83
PS/TP
PROGRAMOWANIE STRUKTURALNE
W przypadku deklarowania stałej stosujemy słowo zarezerwowane
CONST po którym wymieniamy identyfikator stałej.
Nast
ę
pnie umieszczamy znak „=” po którym wpisujemy warto
ść
stałej.
Przykłady:
CONST
Z_stala = 1234.56;
Count = -1000;
miasto = ‘Koszalin’;
84
PS/TP
PROGRAMOWANIE STRUKTURALNE
Cz
ęść
główna
Cz
ęść
główna programu składa si
ę
ze słowa zarezerwowanego BEGIN i END.
Pomi
ę
dzy tymi słowami umieszczamy instrukcje Pascala, czyli rozkazy
wykonywane przez komputer.
Program rozpoczyna działanie od słowa BEGIN, a ko
ń
czy
na słowie END (z kropk
ą
). W szczególnym przypadku cz
ęść
główna programu mo
ż
e nie mie
ć
instrukcji – program który nie b
ę
dzie nic robi
PROGRAM nic;
BEGIN
END.
85
PS/TP
PROGRAMOWANIE STRUKTURALNE
Przykłady:
BEGIN
READLN(a, b) ;
x := ( a*a*3 + b * b ) / 3.4 ;
y := SQRT ( x ) ;
WRITELN( x ,y ) ;
END.
Koniec programu oznaczamy słowem END. (nie zapomnij o kropce).
86
PS/TP
PROGRAMOWANIE STRUKTURALNE
Instrukcje operacji wej
ś
cia / wyj
ś
cia
Instrukcje czytania danych
Instrukcje czytania danych READ oraz READLN słu
żą
do wczytywania
danych wpisywanych z klawiatury. Instrukcja READ wczytuje dane z klawiatury
i podstawia je do zmiennych wymienionych w nawiasach okr
ą
głych. Instrukcja
READLN wykonuje t
ą
sam
ą
czynno
ść
co READ oraz przesuwa kursor na ekranie
do pocz
ą
tku nowego wiersza.
Posta
ć
instrukcji:
READ(<lista zmiennych>);
READLN(<lista zmiennych>);
Przykład:
READ(z, y, z);
87
PS/TP
PROGRAMOWANIE STRUKTURALNE
Instrukcje operacji wej
ś
cia / wyj
ś
cia
Instrukcje wypisywania wyników
Instrukcje wypisywania wyników WRITE oraz WRITELN
słu
żą
do wy
ś
wietlania wyników na ekranie monitora.
Instrukcja WRITE wy
ś
wietla zmienne lub teksty na ekranie – nazwy zmiennych
nale
ż
y poda
ć
w nawiasach okr
ą
głych. Aby instrukcja wy
ś
wietliła tekst, musi
on by
ć
podany w pojedynczych apostrofach. Instrukcja WRITEN wykonuje
t
ą
sam
ą
czynno
ść
co WRITE oraz przesuwa kursor na ekranie do
pocz
ą
tku nowego wiersza.
Posta
ć
instrukcji:
WRITE(<lista zmiennych>);
WRITELN(<lista zmiennych>);
Przykład:
WRITELN(‘To jest tekst.’ , z , y , z);
88
PS/TP
PROGRAMOWANIE STRUKTURALNE
Deklaracje zmiennych i stałych
Deklaracje zmiennych
VAR
x, y, w, odpowiedz, kod_znaku : BYTE;
wspolrzedna, K, numer : INTEGER;
nr_kroku, dlugosc : LONGINT;
waga, wartosc, indukcja, pojemnosc, opornosc : REAL;
rezystancja, reaktancja, impedancja, napiecie : EXTENDED;
R, X, Z, U, I : SHORTINT;
czy_koniec, ok, juz_taka_jest, powtorka : BOOLEAN;
R1, R2, R3 : SINGLE;
Z1, Z2 ,Z3 : DOUBLE;
S : SEX;
D : DAYOFWEEK;
89
PS/TP
PROGRAMOWANIE STRUKTURALNE
VAR
key : char;
quit : boolean;
color, x , y : byte;
screen : array [MIN_X..MAX_X, MIN_Y..MAX_Y] of char;
score : byte;
time0, time : word;
f : file of word;
min_time : word;
90
PS/TP
PROGRAMOWANIE STRUKTURALNE
CONST
POINT_CHAR = #219; { znak zbijany }
MAX_SCORE = 15; { liczba znakow zbijanych }
VISUAL_CHAR = '*'; { znak zbijajacy }
BACKGROUND_CHAR = '.'; { znak tla }
{ kody klawiszy }
ESC_KEY = #27;
ZERO_KEY = #0;
HOME_KEY = #71;
END_KEY = #79;
LEFT_KEY = #75;
RIGHT_KEY = #77;
Deklaracje stałych
91
PS/TP
PROGRAMOWANIE STRUKTURALNE
CONST
UP_KEY
= #72;
DOWN_KEY = #80;
START_COLOR = GREEN;
LEFT_COLOR = WHITE;
RIGHT_COLOR = YELLOW;
UP_COLOR
= RED;
DOWN_COLOR = BLUE;
CENTER_X
= 40;
CENTER_Y
= 12;
MIN_X
= 1;
MAX_X
= 80;
MIN_Y
= 1;
MAX_Y
= 24;
CONFIG_FILE = 'gra1.cfg';
92
PS/TP
PROGRAMOWANIE STRUKTURALNE
Instrukcja przypisania
Instrukcja przypisania ma nast
ę
puj
ą
c
ą
posta
ć
<Nazwa zmiennej> := <wyra
ż
enie>;
Przykład
Wynik := a * x + b – c / 2;
93
PS/TP
PROGRAMOWANIE STRUKTURALNE
Instrukcja przypisania
Przykłady:
col := random(MAX_X)+1;
time0 := h*3600+m*60+s;
Delta := b*b-4*a*c;
X1 := (-b-delta) / (2*a);
X2 := (-b+delta) / (2*a);
Wyliczana jest warto
ść
po prawej stronie
znaku :=
i podstawiana do zmiennej po lewej
stronie znaku :=
94
PS/TP
PROGRAMOWANIE STRUKTURALNE
Wyra
ż
enia i operatory
To jest wyra
ż
enie:
a * x + b – c / 2;
To s
ą
operatory:
* + - /
95
PS/TP
PROGRAMOWANIE STRUKTURALNE
Wyra
ż
enie
Wyra
ż
enie pascalowe jest konstrukcj
ą
j
ę
zykow
ą
, która słu
ż
y
do wyznaczania warto
ś
ci okre
ś
lonego typu
96
PS/TP
PROGRAMOWANIE STRUKTURALNE
Wyra
ż
enie arytmetyczne
składa si
ę
z
argumentów
typu Integer lub Real,
poł
ą
czonych ze sob
ą
za pomoc
ą
operatorów
arytmetycznych
+ - / * mod div
n.p. ( 38 + 125 ) / 3.0
97
PS/TP
PROGRAMOWANIE STRUKTURALNE
Operatory arytmetyczne
To
symbole
pascalowe, które wykonuj
ą
działania
na argumentach
typu Integer lub Real, w kolejno
ś
ci okre
ś
lonej
przez priorytet tych operatorów
n.p. + - / * mod div
98
PS/TP
PROGRAMOWANIE STRUKTURALNE
Priorytety
* DIV / MOD
Wysoki
+ -
Niski
Operatory
Poziom priorytetu
Operacje arytmetyczne wykonywane s
ą
w kolejno
ś
ci
od lewej do prawej
strony zapisu wyra
ż
enia
W pierwszej kolejno
ś
ci s
ą
wykonywane operacje
w nawiasach
, oraz
te które maj
ą
wy
ż
szy priorytet,
np.
38 + 39 div 6 * 6 – 66 mod 8
______
38 + 6 * 6 – 66 mod 8
________
38 + 36 – 66 mod 8
_______
38 + 36 –
2
____________
74 –
2 = 72
99
PS/TP
PROGRAMOWANIE STRUKTURALNE
inne przykłady:
(38 + 39) div (6 * 6) – 66 mod 8
_______ _____
77 div 36 – 66 mod 8
________________
5 – 66 mod 8
_________
5 –
2 = 3
(a + b) * (a + b)
_____ _____
a+b * a+b
_____________
(a+b)
2
_____________
a
2
+2ab+b
2
Tutaj kto
ś
zapomniał o nawiasach:
a + b * a + b
____
a + b*a + b
___________
a+ab+b
W rezultacie mamy zupełnie inne wyra
ż
enie
Porównaj!!!
100
PS/TP
PROGRAMOWANIE STRUKTURALNE
Wyra
ż
enie zawieraj
ą
ce funkcj
ę
standardow
ą
Trunc( Sqr(2.5) + 8.3 ) div 4
_______
Trunc( 6.25 + 8.3 ) div 4
___________
Trunc( 14.55 ) div 4
_________________
14 div 4
_________________________
3
101
PS/TP
PROGRAMOWANIE STRUKTURALNE
Wyra
ż
enie logiczne
Wyra
ż
enie logiczne
to wyra
ż
enie, którego warto
ś
ciowanie (wyliczenie) daje wynik
typu Boolean
.
Wyra
ż
enie to składa si
ę
z
argumentów
typu Integer lub Real lub Boolean,
poł
ą
czonych ze sob
ą
za pomoc
ą
operatorów
logicznych, relacji i arytmetycznych
+ - / * mod div = < > <> <= >= and or not xor
n.p. ( (38+125)>0 ) and ( ((12 – 13 )/ 3.0)<0.0 )
102
PS/TP
PROGRAMOWANIE STRUKTURALNE
Priorytety
Wyra
ż
enie w nawiasach
0 (najwy
ż
szy)
not
1
* / div mod and
2
< <= > >= = <>
4 (najni
ż
szy)
+ -
or
3
Operatory
Poziom priorytetu
W pierwszej kolejno
ś
ci s
ą
wykonywane operacje
w nawiasach
, oraz
te które maj
ą
wy
ż
szy priorytet,
np.
(110 > 78) and (3.1 < -12.5)
________ __________
TRUE and
FALSE
__________________
FALSE
103
PS/TP
PROGRAMOWANIE STRUKTURALNE
Operator OR
TRUE
TRUE
TRUE
TRUE
FALSE
TRUE
TRUE
TRUE
FALSE
FALSE
FALSE
FALSE
Warto
ść
wyra
ż
enia
argument 1 OR argument 2
Warto
ść
argumentu 2
Warto
ść
argumentu 1
104
PS/TP
PROGRAMOWANIE STRUKTURALNE
Operator AND
TRUE
TRUE
TRUE
FALSE
FALSE
TRUE
FALSE
TRUE
FALSE
FALSE
FALSE
FALSE
Warto
ść
wyra
ż
enia
argument 1 AND argument 2
Warto
ść
argumentu 2
Warto
ść
argumentu 1
105
PS/TP
PROGRAMOWANIE STRUKTURALNE
Operator EXOR
FALSE
TRUE
TRUE
TRUE
FALSE
TRUE
TRUE
TRUE
FALSE
FALSE
FALSE
FALSE
Warto
ść
wyra
ż
enia
argument 1 EXOR argument 2
Warto
ść
argumentu 2
Warto
ść
argumentu 1
106
PS/TP
PROGRAMOWANIE STRUKTURALNE
Operator NOT
FALSE
TRUE
TRUE
FALSE
Warto
ść
wyra
ż
enia
NOT argument 1
Warto
ść
argumentu 1
107
PS/TP
PROGRAMOWANIE STRUKTURALNE
Standardowe funkcje i procedury
108
PS/TP
PROGRAMOWANIE STRUKTURALNE
Standardowe funkcje
109
PS/TP
PROGRAMOWANIE STRUKTURALNE
Kod znaku x np.
kod := Ord(x);
Ord(x)
TRUE dla liczby x nieparzystej,
FALSE dla liczby x parzystej, np.
If odd(x) then Writeln(‘nieparzysta‘)
else Writeln(‘parzysta‘);
Odd(x)
TRUE jeśli napotkano na koniec pliku f.
W przeciwnym razie FALSE, np.
Repeat
Read(f,znak);
Writeln(znak);
Until Eof(f);
Eof(f)
Znak o kodzie x np.
znak := Chr(x);
Chr(x)
Wartość bezwzględna x np.
wynik := Abs(x);
Abs(x)
Znaczenie i przykład
Funkcja
110
PS/TP
PROGRAMOWANIE STRUKTURALNE
Kwadrat liczby x np.
wynik := SQR(2);
lub
wynik := 2*2;
SQR(x)
Pierwiastek kwadratowy liczby x np.
wynik := SQRT(2);
SQRT(x)
Wartość liczby REAL x obcięta do liczby INTEGER np.
x := 1.999;
n := Trunc(x);
{n= 1}
y := – 1.111;
n := Trunc(y);
{n= – 1}
Trunc(x)
Wartość liczby REAL x zaokrąglona do najbliższej
liczby INTEGER np.
x := 1.4;
n := Round(x);
{n= 1}
y := 1.5;
n := Round(y);
{n= 2}
Round(x)
Znaczenie i przykład
Funkcja
111
PS/TP
PROGRAMOWANIE STRUKTURALNE
Znaczenie i przykład
Funkcja
Czeka na naciśnięcie klawisza i czyta go. Zwraca kod
ASCII tego klawisza.
ReadKey;
Zwraca współrzędną x kursora.
WhereX;
Zwraca współrzędną y kursora.
WhereY;
112
PS/TP
PROGRAMOWANIE STRUKTURALNE
Standardowe procedury
113
PS/TP
PROGRAMOWANIE STRUKTURALNE
Wypisuje wartość zmiennej x na ekranie i ustawia kursor
w nowej linii np.
Writeln(x);
WRITELN(x)
Wypisuje wartość zmiennej x na ekranie np.
Write(x);
WRITE(x)
Wypisuje tekst na ekranie i ustawia kursor w nowej linii
np.
Writeln(‘a kuku‘);
WRITELN(‘tekst’)
Wypisuje tekst na ekranie np.
Write(‘a kuku‘);
WRITE(‘tekst’)
Czyta liczbę z klawiatury do zmiennej x np.
Readln(x);
READLN(x)
Kasuje ekran np.
ClrScr;
CLRSCR
Znaczenie i przykład
Procedura
114
PS/TP
PROGRAMOWANIE STRUKTURALNE
Ustawia kolor tekstu (kod koloru od 0 – 7)
np.
TextBackground(LIGHTGRAY);
lub
TextBackground (7);
TEXTBACKGROUND
Ustawia kolor tekstu (kod koloru od 0 – 15)
np.
TextColor(BLUE);
lub
TextColor(1);
lub
TextColor(BLUE+BLINK);
(NIEBIESKI MRUGAJĄCY)
TEXTCOLOR
Znaczenie i przykład
Procedura
Ustawia kursor na pozycji x, y.
GoToXY( x , y )
115
PS/TP
PROGRAMOWANIE STRUKTURALNE
Instrukcje warunkowe
116
PS/TP
PROGRAMOWANIE STRUKTURALNE
Instrukcja warunkowa IF ma nast
ę
puj
ą
c
ą
posta
ć
IF <warunek logiczny>
THEN <instrukcja1>
ELSE <instrukcja2>
117
PS/TP
PROGRAMOWANIE STRUKTURALNE
Działanie instrukcji IF przedstawia nast
ę
puj
ą
cy algorytm:
warunek
logiczny
Instrukcja1
Instrukcja2
TAK
NIE
118
PS/TP
PROGRAMOWANIE STRUKTURALNE
Przykład:
IF (delta >= 0 )
THEN x1 := -b / (2 * c)
ELSE WRITELN(‘Brak pierwiastkow’);
119
PS/TP
PROGRAMOWANIE STRUKTURALNE
Instrukcja procedury
120
PS/TP
PROGRAMOWANIE STRUKTURALNE
Instrukcja procedury ma nast
ę
puj
ą
c
ą
posta
ć
<Nazwa procedury> [ (<lista parametrów>) ] ;
Przykład:
Display_Points;
Instrukcja procedury
Przykład:
Obl_Sume ( a, b, sum ) ;
121
PS/TP
PROGRAMOWANIE STRUKTURALNE
Instrukcje -
ć
wiczenia
122
PS/TP
PROGRAMOWANIE STRUKTURALNE
Ć
wiczenie nr 1
Napisz program wy
ś
wietlaj
ą
cy wizytówk
ę
.
Dane wej
ś
ciowe: brak
Dane wyj
ś
ciowe: poni
ż
sza wizytówka
********************************
* Jan Kowalski *
* ul. Piwna 31 m. 5 *
* 80-110 GDANSK *
********************************
PROGRAM Cwicz01;
BEGIN
WRITELN('********************************');
WRITELN('* Jan Kowalski *');
WRITELN('* ul. Piwna 31 m. 5 *');
WRITELN('* 80-110 GDANSK *');
WRITELN('********************************');
END.
123
PS/TP
PROGRAMOWANIE STRUKTURALNE
Ć
wiczenie nr 2
Napisz program obliczaj
ą
cy iloczyn dwóch liczb.
Dane wej
ś
ciowe: Liczby a, b typu REAL
Dane wyj
ś
ciowe: Iloczyn y typu REAL
Iloczyn powinien by
ć
wy
ś
wietlany w formacie 22 cyfr,
w tym 2 po kropce dziesi
ę
tnej
PROGRAM Cwicz02;
VAR
a, b, y : REAL;
BEGIN {of main}
WRITE('a=');
READ(a);
WRITE('b=');
READ(b);
y := a * b;
WRITELN('y=',y:22:2);
READLN;
READLN;
END. {of main}
124
PS/TP
PROGRAMOWANIE STRUKTURALNE
Ć
wiczenie nr 3
Napisz program obliczaj
ą
cy iloraz dwóch liczb.
Dane wej
ś
ciowe: Liczby a, b typu REAL
Dane wyj
ś
ciowe: Iloraz y typu REAL
Iloczyn powinien by
ć
wy
ś
wietlany w formacie 10 cyfr, w tym 5 po kropce dziesi
ę
tnej
PROGRAM Cwicz03;
VAR
a, b, y : REAL;
BEGIN {of main}
WRITE('a=');
READ(a);
WRITE('b=');
READ(b);
y := a / b;
WRITELN('y=',y:10:5);
READLN;
READLN;
END. {of main}
125
PS/TP
PROGRAMOWANIE STRUKTURALNE
Ć
wiczenie nr 4
Napisz program sprawdzaj
ą
cy ucznia w zakresie znajomo
ś
ci
podstawowej tabliczki mno
ż
enia.
Dane wej
ś
ciowe: liczby x i y z zakresu od 0 do 255.
Dane wyj
ś
ciowe: odpowiedni komunikat oraz poprawny wynik w := x * y
126
PS/TP
PROGRAMOWANIE STRUKTURALNE
PROGRAM Cwicz04;
USES CRT;
VAR
x, y, w, odp : BYTE;
BEGIN
CLRSCR;
WRITELN('Program sprawdzajacy ucznia w zakresie znajomosci');
WRITELN('podstawowej tabliczki mnozenia.');
WRITELN;
WRITE('Podaj pierwsza liczbe: ');
READLN(x);
WRITE('Podaj druga liczbe: ');
READLN(y);
WRITE('Ile jest: ',x,' x ',y,' = ');
READLN(odp);
w := x * y;
WRITELN;
IF odp = w THEN WRITELN('Brawo! Odpowiedz jest poprawna.')
ELSE WRITELN('Kiepsko z Toba! Odpowiedz poprawna brzmi: ',x,' x ',y,' = ',w);
READLN;
END.
127
PS/TP
PROGRAMOWANIE STRUKTURALNE
Ć
wiczenie nr 5
Napisz program wy
ś
wietlaj
ą
cy choink
ę
.
Dane wej
ś
ciowe: wysoko
ść
choinki (nie mo
ż
e by
ć
wy
ż
sza ni
ż
24 wiersze)
Dane wyj
ś
ciowe: choinka
*
**
***
****
*****
******
128
PS/TP
PROGRAMOWANIE STRUKTURALNE
Instrukcje iteracyjne
129
PS/TP
PROGRAMOWANIE STRUKTURALNE
Instrukcja powtarzania (p
ę
tli)
Instrukcja WHILE
Instrukcja powtarzania WHILE ma nast
ę
puj
ą
c
ą
posta
ć
WHILE <warunek logiczny>
BEGIN
<instrukcja1>
...
<instrukcjaN>
END;
130
PS/TP
PROGRAMOWANIE STRUKTURALNE
Działanie instrukcji WHILE przedstawia nast
ę
puj
ą
cy algorytm:
warunek
logiczny
Instrukcja1
InstrukcjaN
TAK
NIE
131
PS/TP
PROGRAMOWANIE STRUKTURALNE
Przykład:
WHILE (b > 0 AND c <> 0)
BEGIN
x1 := -b / (2 * c);
WRITE(‘x1=’,x1);
END;
132
PS/TP
PROGRAMOWANIE STRUKTURALNE
Instrukcja REPEAT
Instrukcja powtarzania REPEAT ma nast
ę
puj
ą
c
ą
posta
ć
REPEAT <warunek logiczny>
<instrukcja1> ...
<instrukcjaN>
UNTIL <warunek logiczny>
133
PS/TP
PROGRAMOWANIE STRUKTURALNE
Działanie instrukcji REPEAT przedstawia nast
ę
puj
ą
cy algorytm:
warunek
logiczny
Instrukcja1
InstrukcjaN
NIE
TAK
134
PS/TP
PROGRAMOWANIE STRUKTURALNE
Przykład:
REPEAT
x1 := -b / (2 * c);
WRITE(‘x1=’,x1);
UNTIL (b <= 0 OR c == 0);
135
PS/TP
PROGRAMOWANIE STRUKTURALNE
Instrukcja FOR
FOR <licznik> := <wart. pocz.> TO < wart. ko
ń
c.> DO
BEGIN
<instrukcja1> ...
<instrukcjaN>
END;
<licznik>
- zmienna, która jest licznikiem p
ę
tli
<wart. pocz.>
- warto
ść
pocz
ą
tkowa licznika
< wart. ko
ń
c.>
- warto
ść
ko
ń
cowa licznika
136
PS/TP
PROGRAMOWANIE STRUKTURALNE
Działanie instrukcji FOR przedstawia nast
ę
puj
ą
cy algorytm:
licznik > wart. końc.
Instrukcja1
InstrukcjaN
NIE
TAK
licznik := wart. pocz.
licznik := licznik +1
137
PS/TP
PROGRAMOWANIE STRUKTURALNE
Przykład:
FOR k := 1 TO 20 DO
BEGIN
x := Alfa[k] + Beta[k+1];
suma := suma + x;
END;
138
PS/TP
PROGRAMOWANIE STRUKTURALNE
Lista wa
ż
niejszych bł
ę
dów kompilacji
139
PS/TP
PROGRAMOWANIE STRUKTURALNE
Komunikat
Numer
błędu
Type identifier expected (oczekiwany identyfikator typu)
12
Line too long (linia jest za długa)
11
Unexpected end of file (nieoczekiwany koniec pliku)
10
String constant exceeds line (stała tekstowa jest za długa)
8
Error in integer constant (błąd w stałej typu INTEGER)
7
Error in real constant (błąd w stałej typu REAL)
6
Syntax error (błąd składniowy)
5
Duplicate identifier (identyfikator został powtórzony)
4
Unknown identifier (nieznany identyfikator)
3
Identifier expected (wymagany identyfikator)
2
Out of memory (za mało wolnej pamięci operacyjnej)
1
140
PS/TP
PROGRAMOWANIE STRUKTURALNE
Komunikat
Numer
błędu
Integer constant expected (oczekiwana stała typu INTEGER)
30
Ordinal type expected ( oczekiwany typ porządkowy)
29
Lower bound greater than upper bound (dolna wartość większa od górnej)
28
Invalid subrange base type (niewłaściwy typ bazowy podzakresu)
27
Type mismatch (niezgodność typów)
26
Invalid string length (niewłaściwa długość łańcucha znakowego)
25
Set base type out of range (bazowy typ zbioru poza zakresem)
23
Structure too large (struktura za długa)
22
Error in type (błąd typu)
21
Variable identifier expected (oczekiwany identyfikator zmiennej)
20
Disk full (brak wolnej przestrzeni na dysku)
16
File not found (brak pliku)
15
Invalid file name (niepoprawna nazwa pliku)
14
141
PS/TP
PROGRAMOWANIE STRUKTURALNE
Komunikat
Numer
błędu
Error in statement. (błąd w instrukcji)
113
";" expected. (oczekiwany znak „;”)
85
Illegal assignment (nielegalne przypisanie)
43
Error in expression (błąd w wyrażeniu)
42
Operand types do not match (niezgodne typy operandów)
41
Boolean expression expected (oczekiwane wyrażenie typu BOOLEAN)
40
Ordinal expression expected (oczekiwane wyrażenie typu porządkowego)
39
Integer expression expected (oczekiwane wyrażenie typu INTEGER)
38
END expected(oczekiwane słowo kluczowe END)
37
BEGIN expected. (oczekiwane słowo kluczowe BEGIN)
36
Label identifier expected (oczekiwany identyfikator etykiety)
35
Invalid function result type (niewłaściwy typ rezultatu funkcji)
34
Integer or real constant expected (ma być stała typu INTEGER lub REAL)
32
Constant expected (oczekiwana stała)
31
142
PS/TP
PROGRAMOWANIE STRUKTURALNE
Instrukcja zło
ż
ona
143
PS/TP
PROGRAMOWANIE STRUKTURALNE
Instrukcja zło
ż
ona ma posta
ć
:
BEGIN
<instrukcja1>
<instrukcja2>
<instrukcja3>
………….
<instrukcja n>
END;
Jest to tzw.
blok instrukcji
wykonywanych od słowa
BEGIN do słowa END
144
PS/TP
PROGRAMOWANIE STRUKTURALNE
BEGIN
repeat
col := random(MAX_X)+1;
until (col<>CENTER_X);
repeat
row := random(MAX_Y)+1;
until (row<>CENTER_Y);
screen[col,row] := POINT_CHAR;
END;
Przykład:
145
PS/TP
PROGRAMOWANIE STRUKTURALNE
Przykład:
BEGIN
x := WhereX;
y := WhereY;
for col := MIN_X to MAX_X do
for row := MIN_Y to MAX_Y do
begin
GoToXY(col,row);
write(screen[col,row]);
end;
GoToXY(x,y);
END;