Zajęcia nr 6 Konstrukcja warunków logicznych Instrukcja

Transkrypt

Zajęcia nr 6 Konstrukcja warunków logicznych Instrukcja
Zajęcia nr 6
ELEMENTY PROGRAMOWANIA
Prowadzący: mgr Marcin Spryszyński
www: http://www-users.mat.uni.torun.pl/ ∼spryszyn
e-mail: [email protected]
Konstrukcja warunków logicznych
Możliwe jest konstruowanie bardziej złożonych warunków logicznych przy użyciu
alternatywy - or,
alternatywy wykluczającej1 - xor
koniunkcji - and,
negacji - not,
implikacji - implies.
Warunki składowe nie muszą być ujmowane w żadne nawiasy, tzn. dla Maple zapisy
> (a>b) or (a>0),
> a>b or a>0
znaczą to samo, jednakże pierwszy zapis, moim zdaniem, jest bardziej estetyczny i czytelny.
Instrukcja warunkowa „if”
X Składnia:
warunek logiczny 1
if
then
elif
warunek logiczny 2
else
ciąg instrukcji 3
ciąg instrukcji 1
then
ciąg instrukcji 2
fi;
F Uwaga: Wersja podstawowa instrukcji if zawarta jest w pierwszej linijce, natomiast pozostała część
składni jest opcjonalna. Średniki w instrukcjach wewnętrznych nie są wymagane.
X Składnia alternatywna (uproszczona):
8
8
if
warunek logiczny
,
ciąg instrukcji (true)
,
ciąg instrukcji (false)
F Uwaga: Istotny jest apostrof zamieszczony w powyższej formule. Jest to tzw. Gravis, czyli akcent
słaby (na klawiaturze pod tyldą).
1
Alternatywa wykluczająca dwóch warunków jest prawdziwa, gdy dokładnie jeden z nich jest prawdziwy.
1
Pętla „for”
X Składnia - wersja 1:
for
nazwa zmiennej
from
zakres dolny
to
zakres górny
do
ciąg instrukcji
od;
F Komentarz: Operacja ciąg instrukcji wykonywana jest dla wskazanej zmiennej, przyjmującej wartości od zakres dolny do zakres górny (wartość zmiennej zmienia się co 1).
X Składnia - wersja 2:
for
nazwa zmiennej
from
zakres dolny
by
krok
to
zakres górny
do
ciąg instrukcji
od;
F Komentarz: Operacja ciąg instrukcji wykonywana jest dla wskazanej zmiennej, przyjmującej kolejno wartości: zakres dolny, zakres dolny + krok, . . . , zakres dolny + n*krok (gdzie wartość
zakres dolny + (n+1)*krok jest większe niż zakres górny).
X Składnia - wersja 3:
for
nazwa zmiennej
from
zakres dolny
while
warunek ograniczający zmienną
do
ciąg instrukcji
od;
F Komentarz: Operacja ciąg instrukcji wykonywana jest dla wskazanej zmiennej, przyjmującej kolejne wartości, począwszy od zakres dolny (i spełniającej warunek ograniczający zmienną) do
ostatniej spełniającej wspomniany warunek (tzn. do pierwszego momentu, gdy nie jest spełniony
warunek). W przypadku, gdy pierwsza wartość nie spełnia tego warunku, to instrukcja nic nie wykonuje.
X Składnia - wersja 4:
for
nazwa zmiennej
while
from
zakres dolny
by
warunek ograniczający zmienną
do
krok
ciąg instrukcji
od;
F Komentarz: Operacja wykonywana jest analogicznie jak w przypadku wersji 3, z tą różnicą, że kolejne
wartości zmiennej są postaci zakres dolny + n*krok, gdzie n ∈ N.
X Składnia - wersja 5:
for
nazwa zmiennej
in
wyrażenie
ciąg instrukcji
od;
2
do
F Komentarz: Stosowana zmienna przyjmuje wartości kolejnych składników wyrażenia, którym może
być m.in. lista lub wielomian, i wykonuje na każdym z nich wskazany ciąg instrukcji.
X Składnia - wersja 6:
nazwa zmiennej
for
in
wyrażenie
while
warunek ograniczający zmienną
do
ciąg instrukcji
od;
F Komentarz: Instrukcja działa podobnie do wymienionej w punkcie 5, z tą różnicą, że wykonuje się
do czasu spełniania przez kolejne operandy wyrażenia warunku wymienionego w składni. Podobnie
jak wcześniej, jeśli pierwsza wartość zmiennej nie spełni warunku to instrukcja się nie wykona.
Pętla „while”
X Składnia
while
warunek logiczny
do
ciąg instrukcji
od;
F Komentarz: Pętla while jest „czuła” na fakt, że zmienna stosowana w warunku logicznym posiada
pewną wartość, toteż należy się zatroszczyć, aby stosowana w pętli niewiadoma miała żądaną przez
nas wartość.
Dwie ważne instrukcje
X break - wyjście z pętli „for” lub „while”;
X next - wyjście z wykonywanego bloku „do...od”;
F Uwaga: Aby objaśnić różnicę w działaniu obu poleceń wystarczy odwołać się do poniższego przykładu. Wykonanie polecenia
> for i from 1 to 10 do
>
if i=5 then next;
>
else print(i);
>
fi;
> od;
spowoduje wypisanie liczb od 1 do 10 z pominięciem 5. Natomiast efektem działania polecenia
> for i from 1 to 10 do
>
if i=5 then break;
>
else print(i);
>
fi;
> od;
będzie wypisanie liczb od 1 do 4.
3
Procedury
X Ogólna składnia:
nazwa:=proc(argument 1::typ 1,. . . ,argument k::typ k)
local zmienna 1,. . . ,zmienna n;
global inna zmienna 1,. . . ,inna zmienna m;
ciąg instrukcji
RETURN(wynik)
ERROR(błąd)
end;
F Uwaga 1: Opcjonalnymi składnikami procedury są typy argumentów wejściowych, deklaracja zmiennych globalnych, deklaracja zmiennych lokalnych jeśli nie występują takowe wewnątrz procedury,
instrukcja RETURN (wyjście z procedury z podanym jako argument returna wynikiem) oraz ERROR
(wyjście z procedury z wyświetleniem komunikatu o błędzie).
F Uwaga 2: Polecenia po instrukcji RETURN nie są wykonywane2 .
F Uwaga 3: Komentarze stosowane wewnątrz procedur oznacza się symbolem #. Kompilator wewnętrzny linijkę począwszy od symbolu # traktuje jako „nic nieznaczący ciąg znaków” i nie wykonuje
żadnej instrukcji do końca linii.
F Uwaga 4: Stosowanie wcięć znacznie poprawia czytelność danej procedury.
F Uwaga 5: Wartości zmiennych globalnych dostępne są nie tylko wewnątrz procedury, lecz w całej
sesji Maple. Wartości zmiennych lokalnych przed i po wykonaniu procedury są identyczne.
F Uwaga 6: W przypadku, gdy pewien argument procedury ma być konkretnie jakiegoś typu możemy
to wymusić w deklaracji argumentów następująco
argument::typ.
Podstawowymi typami zmiennych są
NAZWA
integer
float
complex
matrix
array
polynom
algebraic
KOMENTARZ
liczba całkowita
liczba rzeczywista
liczba zespolona
macierz
wektor
wielomian
wyrażenie algebraiczne
Pouczające jest, w przypadku wątpliwości co do deklarowania samodzielnego typów używanych
zmiennych, napisanie procedury wyznaczającej przykładowo sumę dwóch liczb - jednej z zadeklarowanymi typami (np. integer i wywołanie jej dla liczb 2.0, 3.0), druga -bez deklaracji i zaobserwowanie
różnic w funkcjonowaniu.
2
Dotyczy to pojedynczej części procedury, tzn. np. jednej instrukcji do...od.
4

Podobne dokumenty