EL PROG 3, WYK˙AD 5;6


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}

0x01 graphic

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.



Wyszukiwarka