|
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
|
Rozkaz: PAUSE
Funkcja: INKEY$
| 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 |
Często będziesz chciał, aby twój program wykonywał się przez określony czas, a do tego celu przyda ci się polecenie PAUSE (szczególnie w trybie FAST):
zatrzymuje obliczenia i wyświetla obraz przez n ramek telewizyjnych (przy 50 ramkach na sekundę lub 60 w Ameryce). Parametr n może przyjmować wartości do 32767, co daje ci nieco poniżej 11 minut; jeśli n jest większe, to oznacza wstrzymanie programu w nieskończoność.
Pauzę zawsze można przerwać naciskając jakiś klawisz (a spacja spowoduje dodatkowo przerwanie programu). Klawisz musisz wcisnąć po wystartowaniu polecenia PAUSE.
Na końcu pauzy ekran błyśnie.
Jeśli polecenie PAUSE jest zastosowane w programie, który będzie
uruchomiony w trybie FAST na starym komputerze ZX80
z nową pamięcią 8K ROM, to po nim należy bezpośrednio zastosować polecenie
Ten program wyświetla małą wskazówkę sekundową (właściwie będzie to kropka na krawędzi tarczy) zegara:
|
5 REM NAJPIERW TWORZYMY TARCZE ZEGARA 10 FOR N=1 TO 12 20 PRINT AT 10-10*COS (N/6*PI),10+10*SIN (N/6*PI);N 30 NEXT N 35 REM TERAZ URUCHAMIAMY ZEGAR 40 FOR T=0 TO 10000 45 REM T JEST CZASEM W SEKUNDACH 50 LET A=T/30*PI 60 LET SX=21+18*SIN A 70 LET SY=22+18*COS A 200 PLOT SX,SY 300 PAUSE 42 310 POKE 16437,255 320 UNPLOT SX,SY 400 NEXT T |
(opuść polecenie REM, chyba że posiadasz rozszerzenie pamięci).
Ten zegar będzie pracował przez około
Funkcja INKEY$ (nie posiadająca argumentu) czyta klawiaturę. Jeśli
wciskasz dokładnie jeden klawisz (lub SHIFT i inny klawisz), to wynikiem jest
znak otrzymywany z tego klawisza
Wypróbuj ten program, który pracuje jak maszyna do pisania:
|
10 IF INKEY$<>"" THEN GOTO 10 20 IF INKEY$="" THEN GOTO 20 30 PRINT INKEY$; 40 GOTO 10 |
Tutaj
Pamiętaj, iż w przeciwieństwie do INPUT, INKEY$ nie czeka na ciebie. Zatem nie musisz wciskać NEWLINE, lecz z drugiej strony, jeśli nic nie wpiszesz, to przegapisz swoją szansę.
Polecenie: PAUSE
Funkcja: INKEY$
Co się stanie, jeśli przegapisz
Dlaczego w programie maszyny do pisania nie możesz wprowadzić spacji lub znaku £?
Oto zmodyfikowany program, który udostępnia ci spację, jeśli naciśniesz prawy kursor
|
10 IF INKEY$<>"" THEN GOTO 10 20 IF INKEY$="" THEN GOTO 20 30 LET A$=INKEY$ 40 IF A$=CHR$ THEN GOTO 110 90 PRINT A$; 100 GOTO 10 110 PRINT " "; 120 GOTO 10 |
Zauważ jak wczytujemy INKEY$ do A$
Rozbuduj program, aby po naciśnięciu NEWLINE
Innym sposobem wykorzystania INKEY$ jest połączenie z PAUSE, tak jak w alternatywnym programie maszyny do pisania:
|
10 PAUSE 40000 20 POKE 16437,255 30 PRINT INKEY$ 40 GOTO 10 |
Dlaczego do poprawnej pracy tego programu konieczne jest, aby pauza nie przerywała się, gdy w momencie jej rozpoczęcia będzie wciśnięty klawisz?
Wadą tej metody jest mruganie ekranu, ale w trybie FAST tylko tak to można zrobić. Uruchom ten program w trybie FAST i zwróć uwagę na to, iż komputer korzysta z pauzy do wyświetlania obrazu telewizyjnego.
Ten program sprawi, że oszalejesz. Komputer wyświetla liczbę, którą ty (lub inna niewinna ofiara) powinna wpisać z powrotem. Na początku masz na to sekundę, lecz jeśli się pomylisz, to przy następnej twój czas wzrośnie, natomiast przy poprawnej odpowiedzi dostaniesz mniej czasu następnym razem. Chodzi o to, aby wpisywać liczby najszybciej, jak to jest możliwe, a na koniec naciśnij Q dla zobaczenia swoich wyników - im wyższe tym lepsze.
|
10 LET T=50 15 REM T=LICZBA RAMEK NA RUCH - POCZATKOWO 50 DLA 1 SEKUNDY 20 SCROLL 30 LET A$=CHR$ INT (RND*10+CODE "0") 35 REM A$ JEST PRZYPADKOWA LICZBA 40 PRINT A$ 45 PAUSE T 50 POKE 16437,255 60 LET B$=INKEY$ 70 IF B$="Q" THEN GOTO 200 80 IF A$=B$ THEN GOTO 150 90 PRINT "DO KITU" 100 LET T=T*1.1 110 GOTO 20 150 PRINT "OK" 160 LET T=T*0.9 170 GOTO 20 200 SCROLL 210 PRINT "TWOJ WYNIK TO ";INT (500/T) |
(Tylko dla posiadaczy dodatkowej pamięci RAM). Wykorzystując podprogram rysowania linii prostej
|
10 IF INKEY$ = "" THEN GOTO 10 20 PRINT AT 11.14; "ACH" 30 IF INKEY$<>"" THEN GOTO 30 40 PRINT AT 11,14; " 50 GOTO 10 |
![]() |
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.