|
Serwis Edukacyjny w I-LO w Tarnowie
Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej
Autor: Steven Vickers |
©2026 mgr Jerzy Wałaszek
|
Rozkazy: IF, STOP
Operacje: =, <, >, <=, >=, <>,
AND, OR
Funkcja: NOT
| SPIS TREŚCI |
|
ROZDZIAŁ 1 Przygotowanie
ROZDZIAŁ 2 Wydawanie poleceń ROZDZIAŁ 3 Lekcja historii ROZDZIAŁ 4 Kalkulator ROZDZIAŁ 5 Funkcje ROZDZIAŁ 6 Zmienne ROZDZIAŁ 7 Teksty ROZDZIAŁ 8 Programowanie I ROZDZIAŁ 9 Programowanie II ROZDZIAŁ 10 Jeśli ... ROZDZIAŁ 11 Znaki ROZDZIAŁ 12 Pętle ROZDZIAŁ 13 Wolno i Szybko ROZDZIAŁ 14 Podprogramy ROZDZIAŁ 15 Programy ROZDZIAŁ 16 Pamięć taśmowa ROZDZIAŁ 17 Wyświetlanie ROZDZIAŁ 18 Grafika ROZDZIAŁ 19 Czas i ruch ROZDZIAŁ 20 Drukarka ROZDZIAŁ 21 Podłańcuchy ROZDZIAŁ 22 Tablice ROZDZIAŁ 23 Pamięć ROZDZIAŁ 24 Liczenie ROZDZIAŁ 25 Praca komputera ROZDZIAŁ 26 Kod maszynowy ROZDZIAŁ 27 Organizacja pamięci ROZDZIAŁ 28 Zmienne systemowe A Zestaw znaków B Numery komunikatów C ZX81 dla znających BASIC |
Wszystkie dotychczasowe programy były dosyć przewidywalne - przechodziły po kolei przez wszystkie instrukcje, a na końcu co najwyżej wykonywały skok na początek. Nie jest to wcale takie użyteczne. W praktyce od komputera oczekuje się podejmowania decyzji i działania odpowiednio do sytuacji; dokonuje on tego przy pomocy polecenia IF.
Wymaż komputer (używając NEW) i wpisz oraz uruchom ten strasznie zabawny, mały program (nie tłumaczę go ze względu na skojarzenia słowne w języku angielskim):
|
10 PRINT "SHALL I TELL YOU A JOKE?" 20 INPUT A$ 30 IF A$="GET LOST" THEN GOTO 200 40 PRINT "HOW MANY LEGS HAS A HORSE GOT?" 50 INPUT LEGS 60 IF LEGS=6 THEN GOTO 100 70 PRINT "NO, 6, FORE LEGS IN FRONT","AND TWO BEHIND." 80 STOP 100 PRINT "YES",,"SHALL I TELL YOU IT AGAIN?" 110 GOTO 20 200 PRINT "ALL RIGHT, THEN, I WONT." |
(CHCESZ USŁYSZEĆ KAWAŁ?) (SPADAJ) (ILE NÓG MA KOŃ?) (NIE, 6, PRZEDNIE (FORE brzmi jak four, czyli 4) NOGI Z PRZODU I DWIE Z TYŁU) (TAK, CZY OPOWIEDZIEĆ CI GO JESZCZE RAZ?) (DOBRA, W TAKIM RAZIE NIE OPOWIEM) |
Zanim omówimy polecenie IF, najpierw spójrz na polecenie STOP w wierszu 80; powoduje ono zatrzymanie programu dając komunikat 9.
Jak widzisz, polecenie IF przybiera postać:
Tutaj poleceniami są GOTO, lecz mogą być dowolne inne, nawet następne polecenia IF. Warunek jest czymś, co powinno być wyliczone dając w wyniku prawdę lub fałsz; jeśli okaże się, że dostaniemy prawdę, to polecenie umieszczone za THEN zostanie wykonane, lecz w przeciwnym razie komputer je pominie.
Najbardziej użyteczne warunki porównują dwie liczby lub dwa łańcuchy tekstowe; mogą one sprawdzić, czy dwie liczby są równe albo czy jedna jest większa od drugiej, albo mogą sprawdzić, czy dwa łańcuchy tekstowe są takie same lub czy jeden z nich jest wcześniej w porządku alfabetycznym. Używają przy tym relacji =, <, >, <=, >= i <>.
Relację = zastosowaliśmy dwukrotnie w programie (raz dla liczb i raz dla łańcuchów) i oznacza ona "równa się". Nie jest to tym samym, co = w poleceniu LET.
< oznacza "jest mniejsze niż", zatem relacje
są wszystkie prawdziwe, lecz
są fałszywe.
Aby zrozumieć, jak to działa, napiszmy program wczytujący liczby i wyświetlający największą dotąd wczytaną liczbę:
|
10 PRINT "LICZBA","JAK DOTAD NAJWIEKSZA" 20 INPUT A 30 LET NAJWIEKSZA=A 40 PRINT A,NAJWIEKSZA 50 INPUT A 60 IF NAJWIEKSZA<A THEN LET NAJWIEKSZA=A 70 GOTO 40 |
Najważniejszą częścią programu jest wiersz 60, który uaktualnia NAJWIEKSZA, jeśli jej poprzednia wartość była mniejsza od nowo wprowadzonej liczby A.
> (M z SHIFT) oznacza "jest większe niż" i działa tak jak <, lecz z drugiej strony. Możesz łatwo je rozróżnić, ponieważ ostry czubek wskazuje w kierunku liczby mniejszej.
<= (R z SHIFT - nie wpisuj tego jako < z następującym =) oznacza "jest mniejsze lub równe", zatem jest prawie takie samo jak <, z tym wyjątkiem, iż daje prawdę również wtedy, gdy obie liczby są równe:
2<=2 - prawda, lecz 2<2 - fałsz.
>= (Y z SHIFT) oznacza "jest większe lub równe" i jest podobne do >.
<> (T z SHIFT) oznacza "jest różne od"' i ma odwrotne znaczenie do =.
Wszystkie z tych czterech operacji porównań posiadają priorytet 5.
Matematycy często zapisują <=, >= oraz <> jako ≤, ≥ i ≠. Piszą również takie rzeczy jak "2<3<4" do zaznaczenia, iż "2<3" i "3<4", lecz tego w języku BASIC robić nie można.
Porównania te można połączyć wykorzystując operacje logiczne AND, OR i NOT (I, LUB oraz NIE).
jest prawdziwe, jeśli oba porównania są prawdziwe - w przeciwnym wypadku wynikiem jest fałsz.
jest prawdziwe, jeśli jedno z porównań jest prawdziwe (albo oba).
jest prawdziwe, jeśli porównanie jest fałszywe i na odwrót.
Wyrażenia logiczne mogą być tworzone z porównań oraz z AND, OR i NOT tak jak wyrażenia liczbowe tworzone są z liczb i +, - itd.; Jeśli konieczne, możesz nawet umieszczać w nich nawiasy. NOT posiada priorytet 4, AND 3 a OR 2.
Ponieważ (w przeciwieństwie do innych funkcji) NOT posiada względnie niski priorytet, to argument nie potrzebuje nawiasów o ile nie zawiera
AND lub OR; zatem
W celu zilustrowania tego, wymaż komputer i wypróbuj ten program:
| 10 INPUT F$ 20 INPUT WIEK 30 IF F$="X" AND AGE<18 OR F$="AA" AND WIEK<14 THEN PRINT "NIE "; 40 PRINT "WPUSZCZAC." 50 GOTO 10 |
Tutaj F$ użyte zostało w charakterze znacznika kategorii filmu (oznaczenia brytyjskie - przyp. tłum.), gdzie X oznacza film od lat 18, AA od 14, natomiast A lub U bez ograniczeń wieku, natomiast program wylicza, czy osoba w danym wieku może obejrzeć film.
W końcu możemy porównywać nie tylko liczby, lecz również łańcuchy tekstowe. Widzieliśmy "=" używane w F$="X", a użyć można nawet pozostałych 5 relacji, < itd.
Zatem co "jest mniejsze od" oznacza dla łańcuchów? Jednej rzeczy na pewno nie znaczy –"jest krótsze od", zatem nie rób tego błędu. Stwórzmy definicję: jeden łańcuch jest mniejszy od drugiego, jeśli pojawia się wcześniej w kolejności alfabetycznej; i tak:
| "SMITH" | < "SMYTHE" |
| "SMYTHE" | > "SMITH" |
| "BLOGGS" | < "BLOGGS-BLACKBERRY" |
| "BILLION" | < "MILLION" |
| "TCHAIKOVSKY" | < "WAGNER" |
| "DOLLAR" | < "POUND" |
wszystkie relacje są spełnione. <= oznacza "jest mniejsze lub równe" itd. tak samo jak dla liczb.
Uwaga: W niektórych wersjach języka BASIC – lecz nie w ZX81 – polecenie IF może przybrać postać:
To jest dokładnie to samo, co
Polecenia: IF, STOP
Operacje: =, <, >, <=, >=, <>, AND, OR
Funkcja: NOT
<> i = są przeciwne w sensie, iż
oraz
Przekonaj sam siebie, iż >= jest przeciwne do <, a <= jest przeciwne do >, zatem zawsze możesz pozbyć się formy NOT z przodu porównania poprzez zmianę na przeciwną relację.
Również:
oznacza to samo co:
oraz
jest tym samym co:
Wykorzystując te własności możesz wyprowadzać funkcje NOT przed nawiasy dotąd, aż będą stosowane tylko do porównań, a wtedy pozbędziesz się ich wszystkich. Stąd, mówiąc w języku logiki, NOT jest zbędne. Jednakże użycie NOT często czyni program bardziej przejrzystym.
Język BASIC może czasami iść według innych zdań niż wynika to z języka angielskiego (pamiętaj, iż jest to tylko tłumaczenie, a nie tekst oryginalnie polski - przyp. tłum.). Na przykład rozważmy zdanie angielskie 'if A doesn't equal B or C' (jeśli A nie jest równe C lub B). Jak zapiszesz to w języku BASIC? Odpowiedź brzmi:
| ani tak "IF A<>B OR C", ani tak "IF A<>B ORA<>C", tylko tak "IF A<>B AND A<>C" - A musi jednocześnie różnić się zarówno od B jak i od C. |
Nie przejmuj się, jeśli nie zrozumiesz ćwiczeń 3, 4 i 5. Poruszane w nich zagadnienia są raczej wyrafinowane.
(Dla ekspertów)
Wypróbuj:
co możesz się spodziewać, iż da błąd składniowy. W rzeczywistości, jeśli chodzi o komputery, nie istnieje taka rzecz jak wartość logiczna.
(i) =, <, >, <=, >= oraz <> są binarnymi operacjami o priorytecie 5, dającymi wynik liczbowy. Wynikiem jest wartość 1 (dla prawdy), jeśli dana relacja jest spełniona, oraz 0 (dla fałszu), jeśli nie jest spełniona.
(ii) W instrukcji
warunek może być dowolnym wyrażeniem liczbowym. Jeśli jego wartość wyniesie 0, to zostanie potraktowane jako fałszywe, a każda inna wartość zostanie potraktowana jako prawda. W ten sposób to polecenie IF oznacza dokładnie to samo co:
(iii) AND, OR i NOT są również wyrażeniami obliczanymi liczbowo.
| X AND Y posiada wartość: | { X jeśli Y jest niezerowe (traktowane jako prawda)
{ 0 jeśli Y jest zerowe (traktowane jako fałsz) |
| X OR Y posiada wartość: | { 1 jeśli Y jest niezerowe { X jeśli Y jest zerowe |
| NOT X posiada wartość: | { 0 jeśli X jest niezerowe { 1 jeśli X jest zerowe |
Przeczytaj ten rozdział ponownie z tym oświeceniem, upewniając się, iż wszystko rozumiesz.
W wyrażeniach
Wypróbuj ten program:
|
10 INPUT A 20 INPUT B 30 PRINT (A AND A>=B)+(B AND A<B) 40 GOTO 10 |
Za każdym razem wypisuje on większą z dwóch liczb A i B - dlaczego?
Przekonaj sam siebie, iż potrafisz myśleć o wyrażeniu
jako o
a o
jako o
Wyrażenie wykorzystujące w taki sposób operacje AND i OR zwane jest wyrażeniem warunkowym. Przykład z użyciem OR może być taki:
Zwróć uwagę, iż operacja AND pasuje do dodawania (ponieważ jej standardowa wartość wynosi 0), a OR pasuje do mnożenia (ponieważ jej standardowa wartość wynosi 1).
Można również otrzymywać tekstowe wyrażenia warunkowe, jednakże tylko z użyciem AND.
| X$ AND Y$ posiada wartość | { X$, jeśli Y jest niezerowe { "", jeśli Y jest zerowe |
Wypróbuj ten program, który odczytuje dwa łańcuchy i wyświetla je w kolejności alfabetycznej:
|
10 INPUT A$ 20 INPUT B$ 30 IF A$<=B$ THEN GOTO 70 40 LET C$=A$ 50 LET A$=B$ 60 LET B$=C$ 70 PRINT A$;" ";("<" AND A$<B$)+("=" AND A$=B$);" ";B$ 80 GOTO 10 |
Wypróbuj ten program:
|
10 PRINT "X" 20 STOP 30 PRINT "Y" |
Gdy go uruchomisz, wyświetli on "X" i zatrzyma się z komunikatem 9/20. Teraz wpisz:
CONT
Mógłbyś oczekiwać, iż zadziała to tak samo jak
Wiele wersji języka BASIC (lecz nie ZX81 BASIC) posiada polecenie ON, które przyjmuje postać:
Wartość wyrażenia jest wyliczana i w zależności od jego wyniku następuje skok do wiersza o odpowiednim numerze. Jeśli wyrażenie przyjmuje wartość n, to powyższa konstrukcja ma ten sam efekt co:
Na przykład:
Tutaj, jeśli A ma wartość 2, to zostanie wykonane polecenie
W przypadku gdyby numery wierszy nie występowały zgrabnie co 100, zastanów się nad zastępczym użyciem konstrukcji:
![]() |
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2026 mgr Jerzy Wałaszek |
Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone pod warunkiem podania źródła oraz niepobierania za to pieniędzy.
Pytania proszę przesyłać na adres email:
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.