pas czesc 1d


TI-PS-1D
TI-PS-1D
TI-PS-1D
TI-PS-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
1 PS/TP
PROGRAMOWANIE STRUKTURALNE
Budowa programu
 Struktury danych + Algorytmy = Program
Dane
Program przykład;
var
x: array[1..100] of integer;
i: integer;
y: integer;
Algorytm
begin
for i := 1 to 100 do
begin
readln(y);
x[i] := y;
end;
end.
2 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.
3 PS/TP
PROGRAMOWANIE STRUKTURALNE
Podstawowe operatory
Operator Znaczenie i przykład
= Sprawdzenie równości np. (x = 0)
<> Sprawdzenie nierówności np. (x <> 0)
>= Sprawdzenie warunku  większy lub równy np. (x >= 4)
<= Sprawdzenie warunku  mniejszy lub równy np. (x <= 1)
not Negacja np. not z
and Koniunkcja (I) np. (x and y)
or Alternatywa (LUB) np. (x or y)
* Mno\enie np. iloczyn := x * 3.0;
/ Dzielenie np. iloraz := x / 3.0;
div Dzielenie całkowite np. ile := x div 3;
mod Reszta z dzielenia np. reszta := x mod 3;
4 PS/TP
PROGRAMOWANIE STRUKTURALNE
Podstawowe instrukcje
Instrukcja Znaczenie i przykład
BEGIN Instrukcja rozpoczynająca część wykonawczą
END. Instrukcja kończąca część wykonawczą
READ lub READLN Instrukcja czytająca z klawiatury lub pliku
WRITE lub WRITELN Instrukcja pisząca na ekran lub do pliku
:= Instrukcja podstawiania np.
wynik := a*a + 2*a*b+b*b;
begin Instrukcja zło\ona np. begin
& .. x := a*2+c;
end; i := i + 1;
k := k + 1;
end;
If& else Instrukcja warunkowa np.
if ((x mod 2)=0) then writeln( parzysta );
else writeln( nieparzysta );
Case Instrukcja wielokrotnego wyboru np.
Case n of
1 : writeln( jedynka );
2 : writeln( dwojka );
3 : writeln( trojka );
4 : writeln( czworka );
else writeln( inna liczba );
End;
5 PS/TP
PROGRAMOWANIE STRUKTURALNE
While (warunek) Instrukcja pętli (iteracyjna) np.
do begin While (n>0) do
& & Begin
& & writeln( n=  , n);
end; n := n  1;
End;
Repeat Instrukcja pętli (iteracyjna) np.
& & Repeat
& & writeln( n=  , n);
Until (warunek) n := n  1;
Until (n=0);
FOR ZS := WP DOWNTO WK DO & Instrukcja pętli (iteracyjna) tzw.  w dół , np.
Uwaga:
For n := 5 DownTo 1 do writeln( n=  , n);
ZS  zmienna sterująca,
WP  wartość początkowa,
WK  wartość końcowa
FOR ZS := WP TO WK DO & Instrukcja pętli (iteracyjna) tzw.  w górę , np.
Uwaga:
For n := 1 To 5 do writeln( n=  , n);
ZS  zmienna sterująca,
WP  wartość początkowa,
WK  wartość końcowa
6 PS/TP
PROGRAMOWANIE STRUKTURALNE
Podstawowe funkcje standardowe
Funkcja Znaczenie i przykład
Abs(x) Wartość bezwzględna x np.
wynik := Abs(x);
Chr(x) Znak o kodzie x np.
znak := Chr(x);
Eof(f) TRUE jeśli napotkano na koniec pliku f.
W przeciwnym razie FALSE, np.
Repeat
Read(f,znak);
Writeln(znak);
Until Eof(f);
Odd(x) TRUE dla liczby x nieparzystej,
FALSE dla liczby x parzystej, np.
If odd(x) then Writeln( nieparzysta )
else Writeln( parzysta );
Ord(x) Kod znaku x np.
kod := Ord(x);
Round(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}
7 PS/TP
PROGRAMOWANIE STRUKTURALNE
Trunc(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}
SQRT(x) Pierwiastek kwadratowy liczby x np.
wynik := SQRT(2);
SQR(x) Kwadrat liczby x np.
wynik := SQR(2);
lub
wynik := 2*2;
ReadKey; Czeka na naciśnięcie klawisza i czyta go. Zwraca kod ASCII tego klawisza.
8 PS/TP
PROGRAMOWANIE STRUKTURALNE
Podstawowe procedury standardowe
Procedura Znaczenie i przykład
CLRSCR Kasuje ekran np. ClrScr;
READLN(x) Czyta liczbę z klawiatury do zmiennej x np. Readln(x);
WRITE( tekst ) Wypisuje tekst na ekranie np. Write( a kuku );
WRITELN( tekst ) Wypisuje tekst na ekranie i ustawia kursor w nowej linii np. Writeln( a kuku );
WRITE(x) Wypisuje wartość zmiennej x na ekranie np. Write(x);
WRITELN(x) Wypisuje wartość zmiennej x na ekranie i ustawia kursor w nowej linii
np. Writeln(x);
TEXTCOLOR Ustawia kolor tekstu (kod koloru od 0  15)
np. TextColor(BLUE);
lub TextColor(1);
lub TextColor(BLUE+BLINK);
(NIEBIESKI MRUGAJCY)
TEXTBACKGROUND Ustawia kolor tekstu (kod koloru od 0  7)
np. TextBackground(LIGHTGRAY);
lub TextBackground (7);
9 PS/TP
PROGRAMOWANIE STRUKTURALNE
Jak napisać pierwszy program w Pascalu ?
Aby napisać pierwszy program nale\y uruchomić TP i wykonać następujące operacje:
" Wpisz w edytorze poni\szy tekst:
program pierwszy;
uses crt;
begin
writeln('Mój pierwszy program');
end"
"
"
"
" 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.
10 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 !!!
11 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
12 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;
Nagłówek
programu
uses crt;
Część
deklaracyjna
begin
writeln( Mój pierwszy program );
readln;
end.
Część wykonawcza
13 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
"
"
"
14 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.
15 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.
16 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.
17 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
18 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
19 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.
20 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
21 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
22 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
23 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.
24 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
25 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:
+ - * / = < > [ ] . , ( ) : ; ^ @ { } $ #
26 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)
27 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.
28 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"
"
"
"
29 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"
"
"
"
30 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;
31 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.
32 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.
33 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"
"
"
"
34 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.
35 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.
36 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.
37 PS/TP
PROGRAMOWANIE STRUKTURALNE
program trzeci;
uses crt;
var tekst : string;
begin
clrscr;
writeln('Podaj swoje imię:');
readln(tekst);
writeln('Cześć ', tekst);
readln;
end"
"
"
"
38 PS/TP
PROGRAMOWANIE STRUKTURALNE
TYPY DANYCH
Klasyfikacja typów w Turbo Pascalu
Trudne ale konieczne
39 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
40 PS/TP
41 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.
42 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
43 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.
44 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.
45 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
46 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.
47 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
48 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.
49 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.
50 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.
51 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?
52 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.
53 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.
54 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.
55 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.
56 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.
57 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
58 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
TYP ZAKRES ROZMIAR
W
BAJTACH
Byte 0 .. 255 1
Shortint -128 .. 127 1
Integer -32 768 ... 32 767 2
Word 0 .. 65 535 2
Longint -2 147 483 648 .. 2 147 483 647 4
Real 2.9 x 10  39 .. 1.7 x 10 38 6
Char Wszystkie znaki ASCII (np.  1 ,  2 ,  @ ,  a , 1
 z )
String[n] Aańcuch znaków np. napisy:  Ala ma kota 1 + n
String Dowolny łańcuch znaków o długości do 255 256
Boolean False, True 1
Uwaga: n  liczba znaków w łańcuchu.
59 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 zródłowej
i zapisać do pliku. W przypadku języka PASCAL pliki zró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 zró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).
60 PS/TP
PROGRAMOWANIE STRUKTURALNE
TYPY DANYCH
Klasyfikacja typów w Turbo Pascalu
Trudne ale konieczne
61 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.
62 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.
63 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
64 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.
65 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
66 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.
67 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.
68 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.
69 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?
70 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.
71 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.
72 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.
73 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.
74 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.
75 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
76 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
TYP ZAKRES ROZMIAR
W
BAJTACH
Byte 0 .. 255 1
Shortint -128 .. 127 1
Integer -32 768 ... 32 767 2
Word 0 .. 65 535 2
Longint -2 147 483 648 .. 2 147 483 647 4
Real 2.9 x 10  39 .. 1.7 x 10 38 6
Char Wszystkie znaki ASCII (np.  1 ,  2 ,  @ ,  a , 1
 z )
String[n] Aańcuch znaków np. napisy:  Ala ma kota 1 + n
String Dowolny łańcuch znaków o długości do 255 256
Boolean False, True 1
Uwaga: n  liczba znaków w łańcuchu.
77 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 zródłowej
i zapisać do pliku. W przypadku języka PASCAL pliki zró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 zró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).
78 PS/TP
PROGRAMOWANIE STRUKTURALNE
Struktura programu w języku Turbo Pascalu
79 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
80 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;
81 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];
82 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 ;
83 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.
84 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).
85 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();
READLN();
Przykład:
READ(z, y, z);
86 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();
WRITELN();
Przykład:
WRITELN( To jest tekst. , z , y , z);
87 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;
88 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;
89 PS/TP
PROGRAMOWANIE STRUKTURALNE
Deklaracje stałych
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;
90 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';
91 PS/TP
PROGRAMOWANIE STRUKTURALNE
Instrukcja przypisania
Instrukcja przypisania ma następującą postać
:= ;
Przykład
Wynik := a * x + b  c / 2;
92 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 :=
93 PS/TP
PROGRAMOWANIE STRUKTURALNE
Wyra\enia i operatory
To jest wyra\enie:
a * x + b  c / 2;
To są operatory:
* + - /
94 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
95 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
96 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
97 PS/TP
PROGRAMOWANIE STRUKTURALNE
Priorytety
Poziom priorytetu Operatory
Niski + -
Wysoki * DIV / MOD
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
98 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
Porównaj!!!
Tutaj ktoś zapomniał o nawiasach:
(a + b) * (a + b)
_____ _____
a + b * a + b
a+b * a+b
____
_____________
a + b*a + b
(a+b)2
___________
_____________
a+ab+b
a2+2ab+b2
W rezultacie mamy zupełnie inne wyra\enie
99 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
100 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 )
101 PS/TP
PROGRAMOWANIE STRUKTURALNE
Priorytety
Poziom priorytetu Operatory
0 (najwy\szy) Wyra\enie w nawiasach
1 not
2 * / div mod and
3 + - or
4 (najni\szy) < <= > >= = <>
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
102 PS/TP
PROGRAMOWANIE STRUKTURALNE
Operator OR
Wartość argumentu 1 Wartość argumentu 2 Wartość wyra\enia
argument 1 OR argument 2
FALSE FALSE FALSE
FALSE TRUE TRUE
TRUE FALSE TRUE
TRUE TRUE TRUE
103 PS/TP
PROGRAMOWANIE STRUKTURALNE
Operator AND
Wartość argumentu 1 Wartość argumentu 2 Wartość wyra\enia
argument 1 AND argument 2
FALSE FALSE FALSE
FALSE TRUE FALSE
TRUE FALSE FALSE
TRUE TRUE TRUE
104 PS/TP
PROGRAMOWANIE STRUKTURALNE
Operator EXOR
Wartość argumentu 1 Wartość argumentu 2 Wartość wyra\enia
argument 1 EXOR argument 2
FALSE FALSE FALSE
FALSE TRUE TRUE
TRUE FALSE TRUE
TRUE TRUE FALSE
105 PS/TP
PROGRAMOWANIE STRUKTURALNE
Operator NOT
Wartość argumentu 1 Wartość wyra\enia
NOT argument 1
FALSE TRUE
TRUE FALSE
106 PS/TP
PROGRAMOWANIE STRUKTURALNE
Standardowe funkcje i procedury
107 PS/TP
PROGRAMOWANIE STRUKTURALNE
Standardowe funkcje
108 PS/TP
PROGRAMOWANIE STRUKTURALNE
Funkcja Znaczenie i przykład
Abs(x) Wartość bezwzględna x np.
wynik := Abs(x);
Chr(x) Znak o kodzie x np.
znak := Chr(x);
Eof(f) TRUE jeśli napotkano na koniec pliku f.
W przeciwnym razie FALSE, np.
Repeat
Read(f,znak);
Writeln(znak);
Until Eof(f);
Odd(x) TRUE dla liczby x nieparzystej,
FALSE dla liczby x parzystej, np.
If odd(x) then Writeln( nieparzysta )
else Writeln( parzysta );
Ord(x) Kod znaku x np.
kod := Ord(x);
109 PS/TP
PROGRAMOWANIE STRUKTURALNE
Funkcja Znaczenie i przykład
Round(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}
Trunc(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}
SQRT(x) Pierwiastek kwadratowy liczby x np.
wynik := SQRT(2);
SQR(x) Kwadrat liczby x np.
wynik := SQR(2);
lub
wynik := 2*2;
110 PS/TP
PROGRAMOWANIE STRUKTURALNE
Funkcja Znaczenie i przykład
ReadKey; Czeka na naciśnięcie klawisza i czyta go. Zwraca kod
ASCII tego klawisza.
WhereX; Zwraca współrzędną x kursora.
WhereY; Zwraca współrzędną y kursora.
111 PS/TP
PROGRAMOWANIE STRUKTURALNE
Standardowe procedury
112 PS/TP
PROGRAMOWANIE STRUKTURALNE
Procedura Znaczenie i przykład
CLRSCR Kasuje ekran np.
ClrScr;
READLN(x) Czyta liczbę z klawiatury do zmiennej x np.
Readln(x);
WRITE( tekst ) Wypisuje tekst na ekranie np.
Write( a kuku );
WRITELN( tekst ) Wypisuje tekst na ekranie i ustawia kursor w nowej linii
np.
Writeln( a kuku );
WRITE(x) Wypisuje wartość zmiennej x na ekranie np.
Write(x);
WRITELN(x) Wypisuje wartość zmiennej x na ekranie i ustawia kursor
w nowej linii np.
Writeln(x);
113 PS/TP
PROGRAMOWANIE STRUKTURALNE
Procedura Znaczenie i przykład
TEXTCOLOR Ustawia kolor tekstu (kod koloru od 0  15)
np.
TextColor(BLUE);
lub
TextColor(1);
lub
TextColor(BLUE+BLINK);
(NIEBIESKI MRUGAJCY)
TEXTBACKGROUND Ustawia kolor tekstu (kod koloru od 0  7)
np.
TextBackground(LIGHTGRAY);
lub
TextBackground (7);
GoToXY( x , y ) Ustawia kursor na pozycji x, y.
114 PS/TP
PROGRAMOWANIE STRUKTURALNE
Instrukcje warunkowe
115 PS/TP
PROGRAMOWANIE STRUKTURALNE
Instrukcja warunkowa IF ma następującą postać
IF
THEN
ELSE
116 PS/TP
PROGRAMOWANIE STRUKTURALNE
Działanie instrukcji IF przedstawia następujący algorytm:
TAK NIE
warunek
logiczny
Instrukcja1 Instrukcja2
117 PS/TP
PROGRAMOWANIE STRUKTURALNE
Przykład:
IF (delta >= 0 )
THEN x1 := -b / (2 * c)
ELSE WRITELN( Brak pierwiastkow );
118 PS/TP
PROGRAMOWANIE STRUKTURALNE
Instrukcja procedury
119 PS/TP
PROGRAMOWANIE STRUKTURALNE
Instrukcja procedury
Instrukcja procedury ma następującą postać
[ () ] ;
Przykład:
Przykład:
Obl_Sume ( a, b, sum ) ;
Display_Points;
120 PS/TP
PROGRAMOWANIE STRUKTURALNE
Instrukcje - ćwiczenia
121 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.
122 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}
123 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}
124 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
125 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.
126 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
*
**
***
****
*****
******
127 PS/TP
PROGRAMOWANIE STRUKTURALNE
Instrukcje iteracyjne
128 PS/TP
PROGRAMOWANIE STRUKTURALNE
Instrukcja powtarzania (pętli)
Instrukcja WHILE
Instrukcja powtarzania WHILE ma następującą postać
WHILE
BEGIN

...

END;
129 PS/TP
PROGRAMOWANIE STRUKTURALNE
Działanie instrukcji WHILE przedstawia następujący algorytm:
TAK NIE
warunek
logiczny
Instrukcja1
InstrukcjaN
130 PS/TP
PROGRAMOWANIE STRUKTURALNE
Przykład:
WHILE (b > 0 AND c <> 0)
BEGIN
x1 := -b / (2 * c);
WRITE( x1= ,x1);
END;
131 PS/TP
PROGRAMOWANIE STRUKTURALNE
Instrukcja REPEAT
Instrukcja powtarzania REPEAT ma następującą postać
REPEAT
...

UNTIL
132 PS/TP
PROGRAMOWANIE STRUKTURALNE
Działanie instrukcji REPEAT przedstawia następujący algorytm:
Instrukcja1
InstrukcjaN
NIE TAK
warunek
logiczny
133 PS/TP
PROGRAMOWANIE STRUKTURALNE
Przykład:
REPEAT
x1 := -b / (2 * c);
WRITE( x1= ,x1);
UNTIL (b <= 0 OR c == 0);
134 PS/TP
PROGRAMOWANIE STRUKTURALNE
Instrukcja FOR
FOR := TO < wart. końc.> DO
BEGIN
...

END;
- zmienna, która jest licznikiem pętli
- wartość początkowa licznika
< wart. końc.> - wartość końcowa licznika
135 PS/TP
PROGRAMOWANIE STRUKTURALNE
Działanie instrukcji FOR przedstawia następujący algorytm:
licznik := wart. pocz.
Instrukcja1
InstrukcjaN
licznik := licznik +1
NIE TAK
licznik > wart. końc.
136 PS/TP
PROGRAMOWANIE STRUKTURALNE
Przykład:
FOR k := 1 TO 20 DO
BEGIN
x := Alfa[k] + Beta[k+1];
suma := suma + x;
END;
137 PS/TP
PROGRAMOWANIE STRUKTURALNE
Lista wa\niejszych błędów kompilacji
138 PS/TP
PROGRAMOWANIE STRUKTURALNE
Numer Komunikat
błędu
1 Out of memory (za mało wolnej pamięci operacyjnej)
2 Identifier expected (wymagany identyfikator)
3 Unknown identifier (nieznany identyfikator)
4 Duplicate identifier (identyfikator został powtórzony)
5 Syntax error (błąd składniowy)
6 Error in real constant (błąd w stałej typu REAL)
7 Error in integer constant (błąd w stałej typu INTEGER)
8 String constant exceeds line (stała tekstowa jest za długa)
10 Unexpected end of file (nieoczekiwany koniec pliku)
11 Line too long (linia jest za długa)
12 Type identifier expected (oczekiwany identyfikator typu)
139 PS/TP
PROGRAMOWANIE STRUKTURALNE
Numer Komunikat
błędu
14 Invalid file name (niepoprawna nazwa pliku)
15 File not found (brak pliku)
16 Disk full (brak wolnej przestrzeni na dysku)
20 Variable identifier expected (oczekiwany identyfikator zmiennej)
21 Error in type (błąd typu)
22 Structure too large (struktura za długa)
23 Set base type out of range (bazowy typ zbioru poza zakresem)
25 Invalid string length (niewłaściwa długość łańcucha znakowego)
26 Type mismatch (niezgodność typów)
27 Invalid subrange base type (niewłaściwy typ bazowy podzakresu)
28 Lower bound greater than upper bound (dolna wartość większa od górnej)
29 Ordinal type expected ( oczekiwany typ porządkowy)
30 Integer constant expected (oczekiwana stała typu INTEGER)
140 PS/TP
PROGRAMOWANIE STRUKTURALNE
Numer Komunikat
błędu
31 Constant expected (oczekiwana stała)
32 Integer or real constant expected (ma być stała typu INTEGER lub REAL)
34 Invalid function result type (niewłaściwy typ rezultatu funkcji)
35 Label identifier expected (oczekiwany identyfikator etykiety)
36 BEGIN expected. (oczekiwane słowo kluczowe BEGIN)
37 END expected(oczekiwane słowo kluczowe END)
38 Integer expression expected (oczekiwane wyra\enie typu INTEGER)
39 Ordinal expression expected (oczekiwane wyra\enie typu porządkowego)
40 Boolean expression expected (oczekiwane wyra\enie typu BOOLEAN)
41 Operand types do not match (niezgodne typy operandów)
42 Error in expression (błąd w wyra\eniu)
43 Illegal assignment (nielegalne przypisanie)
85 ";" expected. (oczekiwany znak  ; )
113 Error in statement. (błąd w instrukcji)
141 PS/TP
PROGRAMOWANIE STRUKTURALNE
Instrukcja zło\ona
142 PS/TP
PROGRAMOWANIE STRUKTURALNE
Instrukcja zło\ona ma postać:
BEGIN



Jest to tzw.
& & & & .
blok instrukcji

wykonywanych od słowa
BEGIN do słowa END
END;
143 PS/TP
PROGRAMOWANIE STRUKTURALNE
Przykład:
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;
144 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;
145 PS/TP


Wyszukiwarka

Podobne podstrony:
pas czesc
pas czesc 3
pas czesc 0
pas czesc
pas czesc
czesc rozdzial
czesc 1
Thaumasyt – Część 1 Droga do powszechnie przyjętego zrozumienia
czesc rozdzial
czesc rozdzial

więcej podobnych podstron