Serwis Edukacyjny w I-LO w Tarnowie Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej
Autor: Steven Vickers |
©2024 mgr Jerzy Wałaszek |
Rozkazy: IF, STOP
Operacje: =, <, >, <=, >=, <>,
AND, OR
Funkcja: NOT
SPIS TREŚCI |
ROZDZIAŁ 1 Przygotowanie ZX81
ROZDZIAŁ 2 Wydawanie komputerowi poleceń ROZDZIAŁ 3 Lekcja historii ROZDZIAŁ 4 Sinclair ZX81 jako kalkulator kieszonkowy ROZDZIAŁ 5 Funkcje ROZDZIAŁ 6 Zmienne ROZDZIAŁ 7 Łańcuchy tekstowe ROZDZIAŁ 8 Programowanie komputera ROZDZIAŁ 9 Dalsze programowanie komputera ROZDZIAŁ 10 Jeśli ... ROZDZIAŁ 11 Zestaw znaków ROZDZIAŁ 12 Pętle ROZDZIAŁ 13 Wolno i Szybko ROZDZIAŁ 14 Podprogramy ROZDZIAŁ 15 Uruchamianie programów ROZDZIAŁ 16 Pamięć taśmowa ROZDZIAŁ 17 Wyświetlanie z bajerami ROZDZIAŁ 18 Grafika ROZDZIAŁ 19 Czas i ruch ROZDZIAŁ 20 Drukarka dla ZX81 ROZDZIAŁ 21 Podłańcuchy ROZDZIAŁ 22 Tablice ROZDZIAŁ 23 Gdy zaczyna brakować pamięci ROZDZIAŁ 24 Liczenie na palcach ROZDZIAŁ 25 Jak pracuje komputer ROZDZIAŁ 26 Stosowanie kodu maszynowego ROZDZIAŁ 27 Organizacja pamięci ROZDZIAŁ 28 Zmienne systemowe DODATKI A Zestaw znaków B Numery komunikatów C ZX81 dla znających język 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ć:
IF warunek THEN polecenie
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
1<2 -2<-1 i -3<1
są wszystkie prawdziwe, lecz
1<0 i 0<-2
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).
jedno porównanie AND drugie porównanie
jest prawdziwe, jeśli oba porównania są prawdziwe - w przeciwnym wypadku wynikiem jest fałsz.
jedno porównanie OR drugie porównanie
jest prawdziwe, jeśli jedno z porównań jest prawdziwe (albo oba).
NOT porównanie
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 NOT A = B oznacza NOT (A = B) (co jest takie samo jak A <> B).
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ć:
IF warunek THEN numer wiersza
To jest dokładnie to samo, co
IF warunek THEN GOTO numer wiersza
Polecenia: IF, STOP
Operacje: =, <, >, <=, >=, <>, AND, OR
Funkcja: NOT
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 |
X$ AND Y$ posiada wartość | { X$ jeśli Y jest niezerowe { "" jeśli Y jest zerowe |
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2024 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.