Sem II Transport, Podstawy Informatyki Wykład XII Object Pascal Instrukcje sterujące

background image

Wykład XI

Object Pascal - Instrukcje

sterujące

Podstawy informatyki
Semestr II Transport
Semestr II Elektrotechnika

background image

2

O czym będzie?

Jak

korzystać

z

obiektów
Instrukcje proste

– Instrukcja

przypisania

– Instrukcja skoku
– Instrukcja pusta

Instrukcje
strukturalne

– Instrukcja złożona
– Instrukcje warunkowe
– Instrukcja wyboru
– Instrukcje iteracyjne

(pętle)

– Instrukcja wiążąca
– Instrukcje do obsługi

sytuacji wyjątkowych

background image

3

Obiekty

Dla

Object

Pascala

obiekty

(opowiemy o nich dużo bardziej
szczegółowo na dalszych wykładach)
są elementami aplikacji np. okna,
formularze, przyciski, pola wyboru, ...

UWAGA!!! Obiekty mogą się składać
z innych obiektów

background image

4

Cechy obiektów

Mają unikalne nazwy lub ewentualnie
numery np. formularz, form1, Edit;

Właściwości – opisują stan obiektu np.
Name;
Metody
– wykonują operacje np. wypisz(),
kliknij();
Zdarzenia
– czynności podejmowane w
reakcji na zachowanie użytkownika np.
OnMouseOver(), OnClick().

background image

5

Nazwa

podobiek

tu

Nazwa

właściwoś

ci

Nazwa

obiektu

Odwoływanie do

właściwości obiektów

Stosuje się notację kropkową.

formularz.obrazek.nazwa

kot.łapy.przednie.lewa

komputer.napęd.stacjadysków
Form1.Caption

background image

6

jeśli metoda ma

parametry – lista

wartości parametrów

Odwoływanie do metod

obiektów

kot.mrucz
dokument.wypisz(‘Tekst do wypisania)
formularz.elementy.przyciskopcji.kliknij

Form1.Show;
Edit1.Create(Form1);

Nazwa

obiektu

Nazwa

metod

y

background image

7

Instrukcja przypisania do

zmiennej

Powoduje obliczenie wyrażenia prawostronnego i

umieszczenie wartości w zmiennej z lewej strony
Ogólna postać instrukcji przypisania
zmienna:=wyrażenie;
Przykłady
a:=1;
war_log:=TRUE;
Tekst:=’Object’+’Pascal’;
x:=x+1;
warunek:=a=b;
b:=2*c-d/(e+f);

background image

8

Instrukcja przypisania wartości

funkcji

Występuje w części operacyjnej funkcji
(patrz temat funkcje i procedury)
Powoduje

obliczenie

wyrażenia

prawostronnego
i zwrócenie obliczonej wartości jako
wyniku działania funkcji
Składnia
nazwa_funkcji:=wyrażenie

background image

9

Instrukcja skoku

Powoduje

natychmiastowe

przekazanie sterowania do instrukcji
programu

poprzedzonej

daną

etykietą

Składnia

goto Etykieta;

background image

10

Schemat użycia instrukcji

skoku

program Skoki;
label et;
...
begin
...
goto et;
...
et: x:=a+b;
...
end.

background image

11

Instrukcja pusta

Instrukcja pusta nie wymaga użycia
żadnego symbolu języka i nie powoduje
wykonania żadnych czynności.

Stosuje się ją tam gdzie wymagane jest
użycie instrukcji, ale chce się uniknąć
wykonania jakichkolwiek czynności

background image

12

Instrukcja złożona

Ciąg

instrukcji

poprzedzony

słowem

kluczowym begin i zakończonych słowem

kluczowym end.
Instrukcja tworzy z ciągu instrukcji jedną

instrukcję.
Jest używana w przypadkach, gdy składnia

języka wymaga użycia tylko jednej instrukcji,

a wymagane jest wykonanie wielu instrukcji.
Instrukcje wchodzące w skład instrukcji

złożonej wykonywane są sekwencyjnie.

background image

13

Instrukcji złożona cd.

Składnia

begin

instrukcja-1;
instrukcja-2;
...
instrukcja-n;

end

Przykład

begin

a:-=1;
b:=2;
c:=sin(a+b)*2;

end

background image

14

Postać ogólna instrukcji if

(Jeśli)

if wyrażenie then instrukcja1
else instrukcja2;

warunek

instrukcja1

instrukcja2

tak

nie

background image

15

Postać ogólna instrukcji if

(Jeśli) 2

if wyrażenie then instrukcja;

warunek

instrukcja

tak

nie

background image

16

Stosowanie instrukcji

warunkowej

wartością wyrażenia powinna być wartość

logiczna TRUE lub FALSE
Instrukcja występująca po słowach then i else

może być dowolną instrukcją prostą lub

strukturalną
Jeśli wartością wyrażenia jest TRUE wykonywana

jest instrukcja po słowie then
W przeciwnym przypadku wykonana będzie

następna instrukcja po instrukcji warunkowej (w

wersji gdy brak części else) lub instrukcja

podana po słowie else

background image

17

Wyrażenia logiczne

Dowolne wyrażenie, które w rezultacie

zwraca PRAWDĘ lub FAŁSZ
Można używać operatorów logicznych (or,

and,

not,

xor)

w

celu

łączenia

podwarunków
Przykłady
Delta>0
(Imie='Jan') and (Nazwisko='Kowalski')
(
Key=’T’) or (Key)=’N’)

background image

18

Przykład użycia instrukcji

warunkowej 1

if x<y then a:=0
else a:=1;

if x>=y then a:=1
else a:=0;

x<y

a:=1

a:=0

Następna instrukcja

w programie

Nie

Tak

background image

19

Przykład użycia instrukcji

warunkowej 2

if a<0 then

if b<>0 then

x:=a/b;

if

(a<0)

and

(b<>0) then

x:=a/b;

a<0

x:=a/b

Nie

Tak

b<>0

Tak

Nie

background image

20

Przykład użycia instrukcji

warunkowej 3

if a<0 then

if b<0 then x:=-a-b
else x:=-a+b-2

else

if b<>0 then x:=a/b-5
else x:=0;

background image

21

Przykład użycia instrukcji

warunkowej 4

program IfDemo4;
{$APPTYPE CONSOLE}
var Wiek: Integer; S: String;
begin
InputQuery(‘Pytanie’,‘Ile masz lat ? ‘,S);
Wiek :=StrToInt(S);
if (Wiek < 1) or (Wiek > 130) then
ShowMessage('Chyba nie mówisz prawdy')
else

ShowMessage('Gdy się ma ‘+IntToStr(Wiek)+' lat,

życie jest piękne');

end.

background image

22

Przykład użycia instrukcji

warunkowej 5 (tekstowa

aplikacja konsolowa)

program IfDemo4;
uses Dialogs;
var Wiek: Integer;
begin
Write(‘Pytanie’,‘Ile masz lat ? ‘,Wiek);
if (Wiek < 1) or (Wiek > 130) then

Write('Chyba nie mówisz prawdy')

else Write('Gdy się ma ‘+IntToStr(Wiek)+' lat,

życie jest piękne');

end.

background image

23

Ogólna postać instrukcji

wyboru

Służy do wyboru między wieloma wariantami

case wyrażenie of
sekwencja-instrukcji wyboru
end
case
wyrażenie of
sekwencja-instrukcji wyboru
else instrukcja
end

background image

24

Składnia instrukcji wyboru

case Wyrażenie of

lista-stałych-1:
instrukcja1;
lista-stałych-2:
instrukcja2;
...
lista-stałych-n:
instrukcja-n;

else instrukcja;
end

case Wyrażenie of

lista-stałych-1:
instrukcja1;
lista-stałych-2:
instrukcja2;
...
lista-stałych-n:
instrukcja-n;

end

background image

25

Stałe wyboru

pojedyncza wartość
stała
zakres wartości
stała1..stała2

Listy stałych wyboru
stała,
stała1..stała2

1

’a’

’A’..’Z’

1..12

1,3,5,6..13,24,26..30
’A’..’Z’,’0’..’9’,’c’
‘a’
1,3,5

background image

26

Stosowanie instrukcji

wyboru

Sterowanie odbywa się przy pomocy wyrażenia zwanego
selektorem
Sekwencja instrukcji składa się z listy wartości (stałe
wyboru) i instrukcji oddzielonych znakiem dwukropka
Działanie instrukcji jest następujące

– obliczana jest wartość selektora
– wyszukiwana jest w sekwencji instrukcji taka, w której stała

poprzedzająca jest równa wartości selektora (jeśli instrukcja
zostanie odnaleziona to zostaje wykonana)

– jeśli żadna ze stałych nie jest równa wartości selektora to zostanie

wykonana instrukcja po słowie else (jeśli użyto klauzury else)

– sterowanie zostanie przekazane do następnej instrukcji w

programie

background image

27

Przykład użycia instrukcji

wyboru 1

...
case
WynikTestu of

100,99:ShowMessage('Ocena 5');
91..98: ShowMessage('Ocena 5-’);
85..90: ShowMessage(‘Ocena 4+');
71..84: ShowMessage(‘Ocena 4');
61..70: ShowMessage(‘Ocena 4-');
51..60: ShowMessage(‘Ocena 3');
45..50: ShowMessage(‘Ocena 3-');

else ShowMessage(‘Ocena 2');
end;
...

...
case DzienWTygodniu of
0: Label.Caption:= 'niedziela';

1:

Label.Caption:=

'poniedziałek';
2: Label.Caption:= 'wtorek';
3: Label.Caption:= ‘środa';
4: Label.Caption:= 'czwartek';
5: Label.Caption:= 'piątek';
6: Label.Caption:= 'sobota';

end;
...

background image

28

Przykład użycia instrukcji

wyboru 2

...
var
Znak: Char;
begin
Znak:=Edit1.Text[1];
Case Znak of

'a‘ : ShowMessage('Nacisnąłeś małe a');

’z’,’Z’

: ShowMessage('Małe z albo duże Z')

else ShowMessage('To nie jest a, z ani Z');
end;
end;
...

background image

29

Przykład użycia instrukcji

wyboru 3

var rok: Integer; miesiac: Byte;
begin
rok:=StrToInt(edRok.Text);
miesiac:=StrToInt(edMiesiac.Text);
case miesiac of
1,3,5,7,8,10,12: ShowMessage('miesiac ma 31 dni');
4,6,9,11: ShowMessage('miesiac ma 30 dni');
2: if ((rok mod 4=0) and (rok mod 1000<>0)) or (rok

mod

400=0)

then

ShowMessage('miesiac ma 29 dni')
else ShowMessage('miesiac ma 28 dni');

else ShowMessage('niepoprawne dane');
end;
end;

background image

30

Przykład użycia instrukcji

wyboru 4

...
case
Key of
'A': PlaySound(PChar(‘Wave1.Wav’),0, SND_FILENAME+SND_ASYNC);

‘B':

PlaySound(PChar(‘Wave2.Wav’),0,

SND_FILENAME+SND_ASYNC);

‘C':

PlaySound(PChar(‘Wave3.Wav’),0,

SND_FILENAME+SND_ASYNC);

‘D':

PlaySound(PChar(‘Wave4.Wav’),0,

SND_FILENAME+SND_ASYNC);

‘E': PlaySound(PChar(‘Wave5.Wav’),0, SND_FILENAME+SND_ASYNC);
end;
...

background image

31

Instrukcje iteracyjne

(pętle)

Służą

do

organizowania

cykli

programowych,

tj.

wielokrotnego

wykonywania sekwencji instrukcji.

instrukcja for (dla)
instrukcja while (dopóki)
instrukcja repeat until (powtarzaj)

background image

32

Instrukcja for (dla)

Stosuje się zwykle w celu powtózenia grupy

instrukcji w przypadku gdy liczba powtórzeń jest

znana w danym miejscu programu
Składnia

for zmienna:=wyrażenie1 to wyrażenie2 do

instrukcja

lub

for zmienna:=wyrażenie1 downto wyrażenie2 do

instrukcja

background image

33

Warunki poprawnego stosowania

instrukcji for

Zmienna sterująca musi być typu
porządkowego
Wartość wyrażenia1 i wyrażenia2 musi
być zgodna ze zmienną sterującą w
sensie przuypisania
Instrukcja występująca po słowie do
może być dowolną instrukcją prostą
lub strukturalną

background image

34

Sposób wykonywania

instrukcji for

1. Obliczanie wartości wyrażenia1 i wyrażenia2
2. Wartość wyrażenia1 jest podstawiana pod instrukcję

sterującą

3. Porównanie (w sensie uporządkowania) zmiennej

sterującej z wartością wyrażenia2

4. Jeśli nie spełniono warunku zakończenia odliczania

- wykonanie instrukcji po słowie kluczowym do
- przypisanie zmiennej sterującej następnej (lub

porzedniej) w danym typie wartości
- powrót do punktu 3

5. Jeśli spełniono warunek zakończenia odliczania

- przekazanie sterowania do następnej instrukcji w

programie

background image

35

Schemat działania pętli

for

instrukcja

z:=Succ(z) (to)

z:=Pred(z) (downto)

Z<=W2(to)

Z>=W2(downto)

Obliczenie

W1 i W2

Z:=W1

Zakończenie

instrukcji „for”

nie

ta
k

background image

36

Przykład użycia pętli for 1

for i:=1 to 10 do

ShowMessage(’Instrukcje sterujące są pożyteczne’);

for i:=10 downto 1 do

ShowMessage(’Instrukcje sterujące są pożyteczne’);

for i:=3 to 12 do

ShowMessage(’Instrukcje sterujące są pożyteczne’);

background image

37

Przykład użycia pętli for 2

...
suma:=0;
for i:=1 to 124 do suma :=suma+i;
...

...
suma:=0;
for i:=124 downto 1 do suma :=suma+i;
...

background image

38

Przykład użycia pętli for 3

program PetlaFor;
uses Dialogs;
var i: char;

S:string;

begin
S:=‘’;
for i:='z' downto 'a' do

s:=s+i;

ShowMessage(S)
end.

program PetlaFor;
uses Dialogs;
var i: char; s: String;
begin
s:=‘’;
for i:='A' to 'Z' do
begin
S:=S+i;
MessageBeep($FFFF);
end;
end.

background image

39

Przykład użycia pętli for 4

...
var i,j,k: Byte;
begin
j:=SpinEdit1.Value;
k:=SpinEdit2,Value;
if k<j then

begin i:=k; k:=j; j:=i; end;

for i:=j to k do ShowMessage('Instrukcje sterujące

można polubić');

end;
...

background image

40

Przykład użycia pętli for 5

program silnia;
uses Dialogs;
var n, i:

Byte; Silnia: Longint; S;String;

begin

InputQuery(‘Pytanie’,‘Podaj

liczbę:

‘,S);

N:=StrToInt(S);
Silnia :=1;
for i :=1 to N do Silnia := Silnia * I;
ShowMessage(IntToStr(N)+‘! = ‘+IntToStr(Silnia));

end.

background image

41

Instrukcja while (dopóki)

Służy do opisywania
iteracji

ze

sprawdzeniem
warunku na początku
Składnia
while wyrażenie do
Instrukcja

Czy

wyrażenie

prawdziwe

?

Zakończenie

instrukcji

Nie

Instrukcja

Tak

background image

42

Uwagi dotyczące korzystania

instrukcji while

wyrażenie powinno zwracać wartość logiczną
instrukcja jest wykonywana dla wartości

wyrażenia TRUE i a pętla oddaje sterowanie

do następnej instrukcji dla wartości FALSE
wartość wyrażenie powinna się zmieniać w

trakcie wykonywania instrukcji w przeciwnym

bowiem razie instrukcja nie jest wykonywana

ani razu (FALSE) lub powtarzana jest

nieskończoną ilość razy (TRUE)
Powtarzana instrukcja może być dowolną

instrukcją prostą lub strukturalną

background image

43

Przykład użycia instrukcji

while 1

k:=1;
x:=0;
while k<10 do

begin
x:=(x+k)/k;
k:=k+1;
end;

background image

44

Przykład użycia instrukcji

while 2

while k>0 do

begin

k:=k div 2;
n:=k*k;

end;

background image

45

Instrukcja repeat

(powtarzaj)

Służy do opisywania iteracji
ze sprawdzaniem warunku
na końcu
Składnia

repeat

instrukcja-1;
instrukcja-2;
...
instrukcja-n;

until wyrażenie

instrukcja

Czy wyrażenie

prawdziwe

Zakończenie

instrukcji

nie

tak

background image

46

Uwagi o stosowaniu

instrukcji repeat

wyrażenie powinno dawać w wyniku wartość

logiczną
każda z instrukcji może być dowolną instrukcją

prostą bądź strukturalną
nie jest konieczne stosowanie instrukcji złożonej

(repeat

i

until

stanowią

odpowiednie

ograniczenie)
instrukcje wewnętrzne wykonywane są co

najmniej jeden raz
instrukcje wykonywane są do momentu aż

wyrażenie osiągnie wartość TRUE

background image

47

Przykład stosowania repeat

until 1

program Wartosc;
uses Dialogs; var n: Byte; S: String;
begin
repeat

InputQuery(‘Pytanie’,‘Podaj

liczbę

(1..12):‘,S);
n:=StrToInt(S);

until (n>=1) and (n<=12);
end.

background image

48

Przykład stosowania repeat

until 2

repeat
K := I mod J;
I := J;
J := K;
until J = 0;

background image

49

Przykład stosowania repeat

until 3

(niekończąca się pętla)

program Petla;
var i: integer;
begin

i:=0;
repeat
i:=i+3;
until I=20;

end.

background image

50

Instrukcja wiążąca (with)

Służy do ułatwienia odwoływania się do

pól rekordu lub obiektu
Składnia
with lista zmiennych do instrukcja

Szczegóły i przykłady przy omawianiu

tematów dotyczących złożonych struktur

danych (tablice, rekordy, obiekty...) i

zapisu danych na dysk

background image

51

Instrukcja try..except

try

{Instrukcje,

które

mają

być

wykonane}

except
{Kod uruchamiany w przypadku

wystąpiena błędu

end;

background image

52

Przykład użycia try..except

...
try
x:=100 div Y;
except

ShowMessage(‘Nie dziel przez zero !’);

end;
...

background image

53

Rozróżnianie typów

wyjątków

on TypWyjatku do instrukcja
Przykład

...
try
x:=100 div Y;
except

on EDivisionByZero do ShowMessage(‘Nie dziel przez

zero !’);
on EInOutError do ShowMessage(‘Nie poprawna wartość

Y!’);

end;
...

background image

54

Instrukcja try..finally

Wykorzystywana w celu bezpiecznego zwalniania

wykorzystywanych zasobów (zwalnianie pamięci,

zamykanie plików, itp..)

try
{Instrukcje wykonywa w programie podlegające

ochronie}

finally
{Kod wykonywany zawsze (w wypadku pomyślnego

zakończenia operacji i w wypadku wystąpienia

błędu}

end;

background image

55

Przykład użycia try..finally

...
New(X) {rezerwacja pamięci na dynamiczną

zmienną X}

try

X^:=Random(100);
X^:=100 div X^;

finally

Dispose(X); {Zwolnienie zajętej pamięci}

end;
...


Document Outline


Wyszukiwarka

Podobne podstrony:
Sem II Transport, Podstawy Informatyki Wykład XXI Object Pascal Komponenty
Sem II Transport, Podstawy Informatyki Wykład XVIII Object Pascal Grafika
Sem II Transport, Podstawy Informatyki Wykład XXI Object Pascal Komponenty
Podstawy Informatyki Wykład XII Object Pascal Instrukcje sterujące
Sem II Transport, Podstawy Informatyki Wykład XIV i XV Object Pascal Funkcje i procedury
Sem II Transport, Podstawy Informatyki Wykład XIX i XX Object Pascal Obiekty
Sem II Transport, Podstawy Informatyki Wykład XVI i XVII Object Pascal Tablice, rekordy i zbiory
Sem II Transport, Podstawy Informatyki Wykład XXII i XXIII Operacje plikowe
Podstawy Informatyki Wykład XI Object Pascal Podstawy programowania w Object Pascalu
Podstawy Informatyki Wykład XVI Object Pascal Obiekty
Podstawy Informatyki Wykład XIII Object Pascal Funkcje i procedury
Podstawy Informatyki Wykład XVII Object Pascal Komponenty
Podstawy Informatyki Wykład XV Object Pascal Grafika
Podstawy Informatyki Wykład XIV Object Pascal Tablice, rekordy i zbiory
Zagadnienia egzamin podstawy informatyki, Elektronika i Telekomunikacja, z PENDRIVE, Politechnika -
Dydaktyka-WYKŁADY, STUDIA- ed. elementarna, rok I, sem.II, teoretyczne podstawy kształcenia
wrl3075.tmp, Elektronika i Telekomunikacja, z PENDRIVE, Politechnika - EiT, 2011 - sem 1, PODSTAWY I
Podstawy Informatyki Wykład X Object Pascal Jezyki programowania, Proste typy danych
Podstawy Informatyki Wykład XIX Bazy danych

więcej podobnych podstron