WYKAD 3
( Do konspektu doczone s wywietlane na wykadzie slajdy )
DEFINICJA TYPÓW
Dotychczas poznalimy skalarne typy standardowe tzn. typy zdefiniowane przez jzyk. . Pascal przewiduje równie moliwo tworzenia typów zdefiniowanych przez uytkownika. Typy takie nazywa si bd niestandardowymi. Typ niestandardowy moe by typem prostym (wyliczeniowy i okrojony ) bd te typem strukturalnym (tablicowy, zbiorowy, rekordowy i plikowy. Definicja typów tworzonych przez uytkownika powinna znale si w czci deklaracyjnej programu pascalowego. Najogólniej definicj t moemy przedstawi :
TYPE identyfikator_typu = opis typu
np. TYPE liczby_cakowite = integer;
VAR a,b,c : liczby_cakowite;
Typy proste tworzone przez uytkownika
a) typ wyliczeniowy
b) typ okrojony
Ad a.
Typ wyliczeniowy jest to skoczony i uporzdkowany zbiór wartoci zdefiniowanych (wyliczonych kolejno ) przez programist. Lista identyfikatorów podana w opisie typu jest list niepowtarzalnych staych .
Przykad :
type kolory = (czerwony, óty, zielony, niebieski, fioletowy, czarny);
kierunek = (N, NE, E, SE, S, SW, W, NW);
pogoda = (sonecznie, Pochmurno, Deszcz, nieg);
ocena = ( bdb, pdb, db, pdost, dost, ndst);
Nie mona zdefiniowa rónych typów wyliczeniowych zawierajcych tak sam sta. Wartociom staych po zdefiniowaniu s przyporzdkowane liczby porzdkowe : 0, 1, 2, 3 itd.
zgodnie z kolejnoci wyliczenia. Deklarowane zmienne typu wyliczeniowego mog przybiera tylko wartoci wyliczone w definicji typu.
Przykad :
TYPE Ocena = (bdb, pdb, db, pdost, dost, ndst)
VAR I, J, K : Integer;
X, Y: Real;
W, Stopie : Ocena;
Mona te pomin identyfikator typu czc deklaracje zmiennej z opisem typu :
W, Stopie : (bdb, pdb, db, pdost, dost, ndst)
Operacje na wartociach typu wyliczeniowego
Wartoci typu wyliczeniowego mona uywa w relacjach, funkcjach standardowych (Pred, Ord, Succ) i instrukcjach przypisania wartoci zmiennym typu wyliczeniowego. Nie mog one wystpowa w instrukcjach w których wykonuje si operacje arytmetyczne. Nie mog one wystpowa równie w instrukcjach Read/ln i Write/ln.
Przykad:
Odwoujc si do wczeniej zdefiniowanych typów wyliczeniowych mamy:
Pred (Deszcz) = Pochmurno, Ord(db) = 2,
Uwaga :
Typ logiczny mona uwaa za typ wyliczeniowy
type Boolean = (false, true)
dla którego dodatkowo wprowadzono operatory not, and, or. Naley zwróci uwag e false i true s staymi przyjtymi z definicji, czyli po prostu identyfikatorami standardowymi.
Ad. b
Typ okrojony jest to podzbiór wartoci typu porzdkowego, standardowego lub wyliczeniowego. Podzbiór ten jest wyznaczony przez dwie stae z tego samego typu porzdkowego, podane w definicji. Pierwsza z tych staych tzw ograniczenie dolne nie moe by wiksza od drugiej tj od ograniczenia górnego. Wartociami typu okrojonego s kolejne wartoci danego typu porzdkowego poczynajc od ograniczenia dolnego a koczc na ograniczeniu górnym ( z ograniczeniami wcznie).
Przykady definicji typów okrojonych :
type totolotek = 1..49;
litery = 'a'..'z';
prawda = true.. true;
zimne = niebieski..czarny;
kty = 0..359;
Jak ju wczeniej wspomniano niedozwolone jest zdefiniowanie dwóch typów wyliczeniowych które maj wspólne wartoci. Moliwy w tym wypadku jest zapis :
Przykad :
type miesic = (stycz, luty, marzec, kwiecie, maj, czerwiec, lipiec,sierpie,wrzesie, padziernik, listopad, grudzie);
lato = czerwiec..wrzesie
Zbiorem wartoci typu lato s elementy : czerwiec, lipiec, sierpie, wrzesie a wic elementy które zawarte s w definicji typu wyliczeniowego : miesic.
Operacje na wartociach typu okrojonego :
Typy okrojone dziedzicz swoje wasnoci obliczeniowe po tych typach porzdkowych (bazowych) które byy podstaw definicji ('okrojenia). Oznacza to, e ogólnie biorc na wartociach typu okrojonego mona dokonywa takich samych operacji co na wartociach odpowiedniego typu macierzystego. Naley jednak pamita o dwóch zastrzeeniach :
1) Operacje na wartociach danego typu okrojonego nie mog wyprowadza poza ten typ. Na przykad zmiennej totolotek z powyszego przykadu mona przypisa warto 20 albo 20 + 20 (gdy 20 i 40) nale do zakresu 1..49)ale nie mona przypisa wartoci 20 + 40 (bo 60 jest poza zakresem)
2) Funkcje pred, succ i ord nie maj zastosowania do typów okrojonych. Jak wynika z definicji , stae i wyraenia typów okrojonych s nieodrónialne od staych i wyrae odpowiednich typów macierzystych. W zwizku z tym przyjto z definicji, e wyraenie bdce argumentem kadej z tych funkcji oznacza wyraenie odpowiedniego typu macierzystego.
Jako regu ogóln przyjmuje si, e tak dugo jak tylko mona prowadzi si obliczenia na wartociach odpowiednich typów macierzystych. Dopiero gdy sytuacja tego wymaga, np gdy trzeba przypisa warto typu okrojonego, sprawdza si czy warto wyraenia naley do odpowiedniego zakresu, tj. czy jest wartoci typu okrojonego tej zmiennej.
Typ acuchowy
Typ acuchowy jest typem prostym - niestandardowym. acuchy su do reprezentowania cigu znaków w tym niewidocznego znaku spacji (odstpu). Elementami typu acuchowego s acuchy o dugoci od 0 do dugoci podanej w definicji typu acuchowego. Pojedynczy typ acuchowy definiuje si nastpujco :
TYPE identyfikator_typu = string [rozmiar];
lub
TYPE identyfikator_typu = string;
gdzie rozmiar jest liczb typu Byte . Brak wyspecyfikowania rozmiaru powoduje domylne przyjcie dugoci 255 znaków. Kady znak acucha bdcego dan okrelonego typu acuchowego zajmuje jeden bajt pamici, a caa dana zajmuje liczb bajtów pamici wynikajc z liczby znaków i zwikszon o jeden. W tym dodatkowym bajcie pamici przechowywana jest informacja o aktualnym rozmiarze acucha.
Przykady :
1)
TYPE nazwisko = string [20];
Typ acuchowy nazwisko moe zawiera dane bdce acuchami o maksymalnej dugoci 20 znaków.
2)
CONST zakres = 100;
TYPE tekst = string [zakres];
Rozmiar typu acuchowego tekst zosta tu zdefiniowany za pomoc nazwy staej 'zakres' który oznacza liczb 100.
Write/Writeln : Wyprowadzenie ze sterowanym formatem
Instrukcje Write i Writeln pozwalaj na wygodne dla uytkownika sterowanie formatem danych wyprowadzanych na papier drukarki lub na ekran monitora. Suy do tego zapis parametrów instrukcji o postaci :
Writeln(parametr:p)
lub Writeln(parametr1:p:n)
gdzie:
parametr - dana typu integer;
parametr1 - dana typu real;
Przykad :
PROGRAM Formaty (Input,Output);
VAR I1 : Integer;
A : Real;
BEGIN
I1 := 15472 ;
A := 62.4376 ;
Writeln(I1:5) ;
Writeln(A:9:1,A:9:2,A:9:3,A:9:4,A:9:5) ;
END.
WYDRUK :
15472
*****62.4****62.44***62.438**62.4376*62.43760
Uwaga : gwiazdki (*) przedstawiaj spacje i nie wystepuj w wydruku.
INSTRUKCJE STRUKTURALNE
Instrukcje pascalowe dziel si na instrukcje proste i strukturalne. Jak ju wczeniej wspomniano instrukcje opisuj akcje podejmowane w procesie obliczeniowym. Instrukcje proste s to elementarne jednostki operacyjne jzyka, które nie zawieraj jako czci skadowych innych instrukcji. Dotd poznane instrukcje proste to : instrukcja pusta, instrukcja przypisania oraz instrukcje wprowadzenia i wyprowadzenia danych. Instrukcje strukturalne s konstrukcjami jzykowymi zbudowanymi z cigów instrukcji na podstawie okrelonych schematów strukturalizacji. Schematy te dopuszczaj wykonywanie instrukcji skadowych instrukcji strukturalnej sekwencyjnie (instr. zoona), warunkowo (instrukcja warunkowa) lub powtarzalnie (instrukcja iteracyjna).
Instrukcje zoone
Instrukcja zoona ma nastpujc budow :
BEGIN I1 ; I2 ; ..... ; In END
gdzie :
I1, I2...In s instrukcjami a sowa kluczowe BEGIN i END reprezentuj tzw. nawiasy instr.
Mona zauway, e ca sekcj instrukcji programu pascalowego mona traktowa jako jedn instrukcj zoon. Co wicej, dowoln sekcj instrukcji w programie moemy zamkn w nawiasy instrukcyjne BEGIN i END. Czyni si to wtedy gdy zachodzi potrzeba wykonania wicej ni jednej instrukcji, a syntaktyka jzyka dopuszcza zapisanie tylko jednej instrukcji. Naley zwróci uwag, e poszczególne instrukcje oprócz ostatniej opatrzone s rednikiem.
Instrukcje warunkowe
Opisy algorytmów przewidzianych do realizacji, bardzo czsto uzaleniaj podjcie okrelonych czynnoci od spenienia pewnego warunku. Rozróniamy dwie instrukcje warunkowe :
a) instrukcja 'jeli' (IF)
b) instrukcja wyboru (CASE)
Ad a)
Konstrukcje instrukcji warunkowej 'jeli' bardzo jasno przedstawiaj schematy sieci dziaa warunkowych przedstawione na rys (6.1 ).
- W sytuacji z rys. 6.1a przy spenionym warunku wykonujemy czynno 1 a po niej czynno 2; przy warunku niespenionym wykonujemy czynno 2 (czynno 1 pomijamy)
- W sytuacji z rysunku 6.1b przy spenionym warunku wykonujemy czynno 1 a przy niespenionym - czynno 2.
W obu wzajemnie wykluczajcych si przypadkach przechodzimy nastpnie do wykonania czynnoci 3. Zwrómy uwag na fakt, e czynno 2 z rys. 6.1a oraz czynno 3 z rys. 6.1b nie zale od spenienia warunków.
Opisany schemat nazywa si sieci dziaa. Jeeli algorytm zapiszemy w jzyku pascal to romb o jednym wejciu i dwóch wyjciach bdzie zawiera wyraenie typu Boolean za prostokty o jednym wejciu i jednym wyjciu bd reprezentowa instrukcje. Przedstawione na rys 6.1a,b sytuacje mona za pomoc instrukcji pascalowej zapisa :
1) IF Wyraenie Boolean THEN Instrukcja1; Instrukcja2 ( rys. 6.1a)
2) IF Wyraenie Boolean THEN Instrukcja1 ELSE Instrukcja2; Instrukcja3 (rys. 6.1b)
W przypadku 1 Instrukcja1 a w przypadku 2 instrukcja1 oraz instrukcja 2 mog by dowolnymi instrukcjami prostymi lub strukturalnymi w tym take zoonymi.
Przykłady :
IF (x>0) AND (x<=1) THEN y:= sqr(x) ELSE y:= 1/x
IF Delta > 0
THEN BEGIN { Pierwiastki rzeczywiste}
X1 := (-B - Sqrt(Delta)) / (2 * A);
X2 := (-B + Sqrt(Delta))/ (2 * A);
END
ELSE BEGIN
Delta := 0.0;
X := -B
END {jeden pierwiastek}
Instrukcja po THEN lub ELSE w instrukcji IF moe by instrukcj IF. Jeeli instrukcja IF wystpuje po sowie kluczowym THEN lub ELSE we wczeniejszej instrukcji IF, to mówi si, e jest ona zagniedona wewntrz wczeniejszej instrukcji IF. Przy konstruowaniu zagniedonych IF z opcj ELSE obowizuje nastpujca zasada : pierwsze wystpienie opcji ELSE naley do najgbiej zagniedonej instrukcji IF, drugie do nastpnej itd. Moliwych jest wiele poziomów zagniede. Dla instrukcji IF bez opcji ELSE wielopoziomowe zagniedenie przedstawia rys.6.2
Ad b
Instrukcja wyboru (CASE)
Instrukcj wyboru wykorzystujemy wtedy, gdy decyzja o tym która z instrukcji ze zbioru ma zosta wykonana uzaleniona jest od wartoci pewnej zmiennej nazywanej selektorem. Skadnia instrukcji CASE jest nastpujca :
CASE Selektor OF
Pierwsza lista staych wyboru : I1;
Druga lista staych wyboru : I2;
.......................
n-ta lista staych wyboru : In
END;
gdzie :
I1,I2...In s instrukcjami prostymi bd strukturalnymi. Selektor jest wyraeniem typu porzdkowego (np. Integer, Char, Boolean ale nie Real) a listy staych wyboru zawieraj stae typu selektora. Wykonana jest tylko ta instrukcja której lista staej wyboru zawiera aktualn warto selektora. Jeeli adna ze staych na listach wyboru nie jest równa (wczeniej ustalonej) wartoci selektora to wystpi bd wykonania. Przykady zastosowania instrukcji warunkowej CASE przedstawione s na zaczonych slajdach.
Instrukcje Iteracyjne
Podstawow zalet komputera - du szybko liczenia - wykorzystuje si najpeniej w algorytmach, które wymagaj wielokrotnego powtarzania (iteracji) tych samych czynnoci. Jzyk pascal oferuje w takich przypadkach dwie struktury tzw. ptli programowych (rys. 6.3 ). Kada ptla zawiera jedn lub wicej instrukcji, które tworz tre ptli. Kade wykonanie treci ptli oznacza zakoczenie jednego cyklu ptli. Mamy do dyspozycji trzy struktury iteracyjne :
a) - Instrukcja WHILE
b) - Instrukcja REPEAT
c) - Instrukcja FOR - TO
Ad a)
Instrukcja WHILE (dopóki) jest realizacj struktury z rys ( 6.3a) Sie dziaa instrukcji WHILE oraz jej skadni pokazano na rys (6.4 ). Instrukcj WHILE odczytujemy nastpujco : dopóki wyraenie logiczne WL jest prawdziwe, wykonuj instrukcj I w przeciwnym przypadku przejd do nastpnej instrukcji programu.
Ad b)
Instrukcja REPEAT (powtarzaj) jest realizacj struktury przedstawionej na rys (6.3b ). Sie dziaa instrukcji REPEAT oraz jej skadni przedstawiono na rys ( 6.5). Instrukcja REPEAT poleca co nastpuje : powtarzaj wykonanie sekwencji instrukcji I1; I2;....;In pomidzy symbolami REPEAT i UNTIL, tak dugo, jak dugo wyraenie logiczne WL bdzie mie warto False. Poniewa warunek zapisany jako WL jest sprawdzany po wykonaniu instrukcji I1...In, zatem zawsze bdzie wykonany co najmniej jeden cykl ptli. Zatem symbole REPEAT i UNTIL peni rol nawiasów instrukcyjnych, podobnie jak BEGIN i END w instrukcji zoonej. Dowolna ptla , zrealizowana za pomoc instrukcji WHILE, moe by równie zbudowana za pomoc instrukcji REPEAT. Jednak w wielu sytuacjach zastosowanie jednej bd drugiej instrukcji moe by bardziej efektywne
Przykad :
Read (ZN) ; REPEAT
WHILE ZN <> '*' Read (ZN);
DO BEGIN Write(ZN) ;
Write(ZN) ; UNTIL ZN = '*'
Read(ZN) Writeln ;
END ;
Writeln (ZN);
Ad c)
Instrukcja FOR jest realizacj struktury z rys (6.3a) w sytuacji, gdy liczba cykli (obiegów) ptli jest z góry znana. Sie dziaa instrukcji FOR oraz jej skadni przedstawia rys (6.6 ). Zanim instrukcja I rys (6.6 ) zostanie wykonana zachodz nastpujce zdarzenia.
1) - Zmiennej sterujcej ZS zostanie przypisana warto pocztkowa WP
2) - Zostaje wyznaczona warto kocowa WK (jeeli jest wyraeniem) i porównana z WP. Jeeli WP <= WK, to nastpi wejcie do ptli; jeeli WP > WK to ptla jest pomijana
3) - Zostaje zapamitana warto WK dziki czemu moe by porównywana z wartoci ZS przed rozpoczciem kadego nastpnego cyklu. Poniewa kolejne wartoci zmiennej sterujcej s wyznaczane za pomoc funkcji standardowej Succ(ZS) zatem ZS musi by typu porzdkowego (Integer, Char, Boolean). Instrukcja I moe by instrukcj prost lub strukturaln.
Jeeli warto kocowa jest równa pocztkowej, to ptla jest wykonywana dokadnie raz. Po zakoczeniu instrukcji FOR warto zmiennej sterujcej jest nieokrelona. Zmienna sterujca jest zmieniana automatycznie i nie wolno jej zmienia wewntrz ptli.
Jeeli w instrukcji FOR uyto sowa kluczowego to to kolejnymi wartociami przyjmowanymi przez zmienn sterujc s :
wart. pocztk., succ(wart. pocztk)...warto kocowa
Natomiast , gdy zamiast sowa to uyto sowa kluczowego downto to kolejnymi wartociami zmiennej sterujcej s
wart. pocztk., pred(wart. pocztk.),... warto kocowa
Uwaga :
Instrukcje iteracyjne REPEAT oraz WHILE s wygodne gdy trudno z góry okreli liczb powtórze ptli, natomiast atwiej jest okreli warunek zakoczenia iteracji. W sytuacji gdy ptla ma by powtarzana okrelon liczb razy wygodniejsza jest w uyciu instrukcja for.
Przykad:
a) wydruk 10 linii, w kadej jeden wykrzyknik
for numer := 1 to 10 do
writeln(!)
b) wydruk kolejnych liczb i ich kwadratów
for numer := 1 to 10 do
writeln(numer, numer*numer)
PRZYKADY PYTA TESTOWYCH :
1) Sowo maszynowe to :
a) - najmniejsza jednostka informacji
b) - zestaw znaków alfanumerycznych
c) - cz programu napisanego w jzyku maszynowym
d) - bloki bitów moliwe do jednorazowego przetworzenia
2) Zbiór z rozszerzeniem BAT w nazwie to
a) - zbiór, który zawiera poprzedni wersj pliku, który zosta zmieniony
b - zbiór wykorzystywany podczas pracy z urzdzeniami zewntznymi
c) - zbiór utworz. przez uytkown., zawierajcy wywoania polece DOS'u
d) - zbiór biblioteczny
3) Wska 'czarn owc' :
a) - MS-DOS
b) - UNIX
c) - OS/2
d) - NORTON COMANDER
PTLE WIELOKROTNE - IF
Przykad :
PROGRAM PĘTLA (Input, Output);
VAR K : Integer;
Litera : Char;
BEGIN
FOR K := 1 TO 3
DO BEGIN
FOR litera := 'D' TO 'G'
DO Write(Litera: 2);
Writeln
END;
END.
POSTAC WYDRUKU :
*D E F G
*D E F G
*D E F G
INSTRUKCJA ITERACYJNA - FOR
PROGRAM srednia (input, output);
VAR
ilosc, licznik : integer;
x, suma : real;
BEGIN
Writeln(' Program obliczania sredniej arytmetycznej ');
Writeln(' Podaj ilosc liczb ');
read(ilosc);
IF ilosc > 0 THEN
BEGIN
writeln('Podaj ', ilosc, ' liczb ');
suma := 0.0;
FOR licznik := 1 TO ilosc DO
BEGIN
read(x);
suma := suma +x
END;
Writeln(' Srenia wynosi ',suma/ilosc)
END
ELSE writeln(' Brak liczb do policzenia sredniej')
END.
PROGRAM maksimum (input, output);
VAR
liczba, max, i, n : integer;
BEGIN
Writeln(' Program znajdowania najwikszej liczby ');
Writeln(' Podaj dlugosc ciagu ');
Read(n);
Writeln(' Podaj ', n, ' liczb ');
Read (max);
FOR i := 2 TO n DO
BEGIN
Read(liczba);
IF max < liczba THEN max := liczba
END;
Writeln(' Maksymalna liczba w cigu jest ', max)
END.
INSTRUKCJA ITERACYJNA - REPEAT
PROGRAM L1 (Input, Output);
VAR X : Integer ;
BEGIN
Read(X);
REPEAT
Write(X MOD 10 : 1) ;
X := X DIV 10
UNTIL X <= 0 ;
Writeln
END.
INSTRUKCJA ITERACYJNA - WHILE
PROGRAM L2 (Input, Output) ;
VAR X : Integer ;
BEGIN
Read(X) ;
WHILE X > 0
DO BEGIN
Write(X MOD 10 : 1) ;
X := X DIV 10 ;
END ;
Writeln
END.
INSTRUKCJA WYBORU - CASE
Przykad : OCENA
CASE Wynik DIV 10 OF
10,9 : Ocena := 5.0;
8 : Ocena := 4.5;
7 : Ocena := 4.0;
6 : Ocena := 3.5;
5 : Ocena := 3.0;
0, 1, 2, 3, 4 : Ocena := 2.0
END;
INSTRUKCJA WARUNKOWA - IF
Przykad : OCENA
IF Wynik >= 50
THEN IF Wynik >= 60
THEN IF Wynik >= 70
THEN IF Wynik >= 80
THEN IF Wynik >= 90
THEN Ocena := 5.0
ELSE Ocena := 4.5
ELSE Ocena := 4.0
ELSE Ocena := 3.5
ELSE Ocena := 3.0
ELSE Ocena := 2.0
INSTRUKCJA IF - CASE
PRZYKŁAD :
PROGRAM Wybory (Input, Output)
VAR
Czas : Real;
Droga : Char;
BEGIN
Read (Droga) ;
IF (Droga = 'A' ) OR (Droga = 'B') OR (Droga = 'C')
THEN CASE Droga OF
'A' : Czas := 3.0;
'B' : Czas := 4.0;
'C' : Czas := 4.5
END {Przypadków wyboru drogi}
ELSE Writeln (' Zosta w domu ')
END. {Program}
INSTRUKCJA ZOONA
Budowa :
BEGIN
Instrukcja1;
Instrukcja2;
..........
InstrukcjaN
END
Uwagi :
1) BEGIN oraz END - nawiasy instr.
2) Sekcja instr. programu pascala moe by traktowana jako instr. zoona.
3) Dowoln sekwencj instrukcji mona zamkn w nawiasy BEGIN i END
4) Stosujemy wtedy gdy jest potrzeba wykonania wielu instr. a syntaktyka jzyka dopuszcza zapis jednej instr.
TYP WYLICZENIOWY:
Skoczony i uporzdkowany zbiór wartoci zdefiniowanych przez programist
Deklaracje typów wyliczeniowych
TYPE dzien = (pon,wtor,srod,czwart,piat,sob,niedz);
RGB = (Red,Green,Blue);
kierunek = (North,South,East,West);
CONST Dzien_tyg : dzien = wtor;
VAR Kolor, Barwa : RGB;
Marsz : Kierunek;
TYP OKROJONY
Typ okrojony jest to podzbiór wartoci typu porzdkowego,
Deklaracja typów okrojonych
TYPE Lower = 'a'..'z';
Logical = false..true;
Unsigned = 0..65535;
Day = (Sun,Mon,Tue,Wed,Thu,Fri,Sat);
WorkDay = Mon..Fri;
CONST letter : Lower = 'j';
SexIsMale : Logical = true;
TheDay : WorkDay = Wed;
Flags : Unsigned = 13;
TYP ACUCHOWY:
Elementy typu : acuchy znaków o max dugoci podanej w definicji typu acuchowego
Deklaracja typu acuchowego
TYPE nazwisko = string [20];
CONST Name : nazwisko = 'Jan Bielecki';
ShortName : string [4] = 'JanBielecki';
VAR Line : string;
OPERACJE NA WARTOCIACH TYPU WYLICZENIOWEGO
TYPE kolor = (czerwony,zolty,zielony,niebieski,biay);
- Operacje relacji
zielony > czerwony;
czerwony < zolty;
- Funkcje standardowe
pred(zielony) = zolty;
succ(niebieski) = bialy;
ord(czerwony) = 0;
- Funkcje przypisania
VAR x : color;
............................
x := zielony;
OPERACJE NA WARTOCIACH TYPU OKROJONEGO
TYPE Liczba = 1..49;
- Dziedzicz wasnoci obliczeniowe po typach macierzystych
Zastrzeenia :
- Operacje na wartociach typu okrojonego nie mog wyprowadza poza typ
- Funkcje pred(x), succ(x), ord(x) nie maj zastosowania
Przykady instrukcji wejcia/wyjcia:
(a) read(x);
(b) writeln(x);
(c) read(numer, reszta);
(d) writeln(numer*2, reszta mod 2);
(e) read(r);
(f) writeln('Pole kola wynosi ',3.14*r*r);
(g) read(znak);
(h) writeln(' Wczytano : ',znak);
Wyprowadzenie z formatem sterowanym:
Program WydrukLiczbTypuReal;
BEGIN
Writeln(4837.92);
Writeln(0.000483792);
Writeln(4837.92:10:3);
Writeln(0.000483792:10:5);
Writeln(-0.000483792:9:4)
END.
Posta wydruku:
4.83792000000000E+0003
4.83792000000000E-0004
**4837.920
***0.00048
**-0.0005
PROGRAM Schemat;
VAR a,b : REAL
x,y : INTEGER;
BEGIN
Write(' A = ');
Read(a);
Write(' B = ');
Read(b);
Write(' WYNIKI : ');
IF (a<=0)
THEN IF (b<=0)
THEN BEGIN
Write('I = ',1);
y:=0
END
ELSE BEGIN
Write('I = ',2);
y:=1
END
ELSE IF (b<=0)
THEN BEGIN
Write('I = ',3);
y:=2
END
ELSE BEGIN
Write('I = ',4);
y:=3
END;
Write(' Y = ',y)
END.
PROGRAM Warunki;
VAR a,b : INTEGER;
y : REAL;
BEGIN
Write(' a = ');
Readln(a);
Write(' b = ');
Readln(b);
Write(' WYNIKI : ');
IF (a<=0) AND (b<=0)
THEN BEGIN
y:=0;
Write('I = ',1);
END
ELSE IF ((a<=0) AND (b>0))
THEN BEGIN
y:=1;
Write('I = ',2);
END
ELSE IF ((a>0) AND (b<=0))
THEN BEGIN
y:=2;
Write('I = ',3);
END
ELSE BEGIN
y:=3;
Write('I = ',4);
END;
Write(' Y = ',y);
END.