Z³o¿one warunki i operatory logiczne
Dwa powy¿ej opisane przyk³ady demonstrowa³y proste warunki. Program sprawdza³ tylko jedno wyra¿enie. Je¶li chcesz u¿ywaæ ich wiêcej musisz je po³±czyæ w zdanie logiczne i wpisaæ je w nawiasy. Np. je¶li chcesz ¿eby do programu mieli tylko dostêp u¿ytkownicy którzy podadz± prawid³owo tajne has³o i s± powy¿ej 18 roku ¿ycia, mo¿esz zapisaæ:
if (wiek>=18) and (wpisane_haslo = prawidlowe_haslo) then
begin
{program g³ówny}
end else
WriteLn(‘ACCESS DENIED’);
Teraz krótkie obja¶nienie. Je¶li zamierzasz sprawdziæ wiêcej ni¿ 1 warunek podaj je w nawiasach. Wtedy komputer bêdzie w stanie je rozdzieliæ, sprawdziæ ka¿dy z warunków z osobna i je¶li obydwa s± spe³nione wykonaæ kod wewnêtrzny. Miêdzy warunkami wyst±pi³o s³owo AND, z angielskiego „i”. Znaczy to ¿e wnêtrze programu wykona siê tylko po spe³nieniu obydwu warunków. Mo¿esz tak¿e korzystaæ ze s³owa OR (lub). Wtedy wystarczy by jeden warunek by³ spe³niony aby wykonaæ program. Mo¿e tak¿e zaistnieæ potrzeba u¿ycia s³owa NOT (nie), które spowoduje ¿e gdy warunek jest niespe³niony program przejdzie do g³ównej czê¶ci. S³owo nie wstawia siê przed warunkiem. Czas na przyk³ady:
if not ((wiek>=18) and (wpisane_haslo=prawidlowe_haslo)) then
begin
WriteLn(‘ACCESS DENIED’);
Halt;
end;
{Program g³ówny}
Program ten troszkê przypomina poprzedni i w rzeczywisto¶ci z punktu widzenia u¿ytkownika niczym siê nie ró¿ni. Je¶li u¿ytkownik nie ma 18 lat i nie wpisze prawid³owego has³a program wy¶wietli ACCES DENIED i siê wy³±czy. W przeciwnym razie wykona siê program za warunkiem.
Mo¿e zaj¶æ potrzeba wykonania programu przechodz±cego do kolejnego etapu gdy u¿ytkownik w grze zdoby³ 100 punktów lub przejecha³ samochodem wy¶cigowym 10 000 m. Zapiszemy ten warunek tak:
if (punktow>=100) or (dystans>=10000) then
begin
{Zapisanie wygranej}
{Wyj¶cie z czesci programu, ktora sie ciagle powtarza (pêtli)}
Break;
end;
{Dalszy ci±g gry…}
Warunki mo¿na tak¿e doklejaæ, bardziej komplikowaæ, dziêki czemu dostosujesz je do swoich potrzeb, wystarczy tylko troszkê pomy¶leæ i zastanowiæ siê nad tym co chcesz osi±gn±æ. Pamiêtaj, ¿e nawiasami precyzujesz kolejno¶æ wykonywania dzia³añ. Nawet przy sprawdzaniu warunków.
Wskazówka…
Aby Twój program dzia³a³ sprawniej podczas korzystania z operacji AND na pocz±tku umieszczaj warunki, które najczê¶ciej powoduj± ich niespe³nienie. Gdy jeden warunek zostanie niespe³niony, komputer nie bêdzie sprawdza³ drugiego, bo nie ma to ju¿ sensu. Tak wiêc zyskasz na czasie sprawdzenie drugiego warunku. Z tego wynika, ¿e na pocz±tku dobrze jest umieszczaæ tak¿e warunki, których sprawdzenie potrwa bardzo szybko, np. porównywanie liczb, a na koñcu wolne, np. porównywanie s³ów. Analogicznie pomy¶l jak móg³by¶ przy¶pieszyæ operacjê OR…
Komputer sprawdzaj±c warunki bada ka¿dy z nawiasów i nadaje mu warto¶æ True – je¶li jest spe³niony lub False je¶li nie. Wynika z tego, ¿e je¶li jaka¶ zmienna lub funkcja jest typu Boolean (typ True, False) nie trzeba jej porównywaæ, pisz±c np.
if zmienna=true then ...
Wystarczy wpisaæ: (tylko dla zmiennych BOOLEAN)
if zmienna then ...
Zaoszczêdzi to czasu Tobie, a procesor nie bêdzie musia³ sprawdzaæ kolejnego warunku.