HRA

Slalom
Herní styl Skiing
Multiplayer Bez multiplayeru
Rok vydání 1984
Programátor (Unknown)
Grafik (Unknown)

INTRO

Basic v2.0 - díl 3. - Zákon AKCE a REAKCE ! aneb co se stane když ...

Když si zopakujeme, co jsme se naučili v minulých dílech, zjistím, že toho prozatím moc není. Umíme vypsat textové proměnné (A$, XY$) a hodnoty (C=A+B) příkazem (PRINT). Umíme toho na obrazovku vypsat daleko více najednou, relativně bez práce pomocí příkazů FOR,TO,NEXT, ale to je vlastně vše. Moc toho není.

Dnes si rozšíříme znalosti o další dávku příkazů. Naučíme se vyžádat si zadání dat z klávesnice (INPUT) a zjistíme, jak se rozhodovat (IF, THEN), když je splněná určitá podmínka tak se něco stane. A co se má jako stát ?
Cokoliv. Třeba to, že jste zadali špatné jméno nebo správný výsledek matematického příkazu.

Jak se jmenuješ ?

Abychom se na něco zeptali toho, kdo sedí u klávesnice počítače, existuje příkaz INPUT. V prvním příkladu se ptáme na tvé jméno. Samotný příkaz INPUT nám na obrazovku vypíše otazník a čeká na zadání dat z klávesnice a potvrzení klávesou RETURN.
Když za příkaz INPUT napíšeme mezi uvozovky nějaký text, tak nám ho počítač vypíše a pak čeká na vstup dat. Takže za příkazem INPUT můžeme napsat text otázky, ale na konci musíme uvést proměnnou (A) se znakem $, protože to znamená, že s odpovědí kterou potvrdíme budeme dále pracovat jako s textem (string) a ne s číslem. Všimněte si, že na řádku 10 je příkaz INPUT a proměnná A$ oddělena středníkem zatímco na řádku 20 PRINT a proměnná A$ středníkem oddělená není. Toto je benevolence této verze jazyka BASIC. Příkazem INPUT můžeme zadat víc proměnných najednou které budou oddělené čárkou. Příkaz by vypadal takto:

INPUT A$, B, C, D$
Příkaz pak čeká na vstup čtyř proměnných oddělených čárkou a nebo pokud po každém zadání odklepneme RETURNem tak počítač vypíše další otazník a čeká na v pořadí další proměnnou, dokud nemá požadovaný počet proměnných.
Pokud použijeme tento způsob zadání více proměnných najednou tak to ale uživateli musíme dát vědět kolik a jaké proměnné od něho očekáváme a samozřejmě i v jakém pořadí.

10 INPUT "OTAZKA"; A$
20 PRINT A$

Po spuštění tohoto jednoduchého programu bude počítač čekat na naši odpověď, kterou potvrdíme klávesou RETURN. Jakmile zadáme nějaký text a odešleme, naše odpoveď se zobrazí na obrazovce.
My si příklad rozšíříme o otázku "Jak se jmenuješ?". Odpověď, jak se jmenujete zobrazíme na obrazovce.

10 INPUT "JAK SE JMENUJES "; A$
20 PRINT "TVE JMENO JE " A$

Kolik máš roků ?

Stejným způsobem a stejným příkazem se můžeme zeptat například kolik je vám roků. Je to stejné, jako když se ptáte na textovou otázku, ale my potřebujeme zjistit pouze číslo. A s tím se pracuje přeci jen jinak. Protože víme,že proměnná, která nemá být text se zapisuje bez znaku dolar, příklad vypadá velmi podobně.

10 INPUT "A KOLIK MAS ROKU "; B
20 PRINT "TY MAS VAZNE " B " ROKU ?"

Když teď, to co jsme vyzkoušeli spojíme dohromady, dostaneme dvě otázky, které zjistí nejen naše jméno, ale i náš věk.

Co ale máme udělat, když nám na odpověď jak se jmenujeme nikdo neodpoví a nebo se nám někdo bude snažit namluvit, že je malé miminko a nebo má naopak 100 let ? Zkontrolujeme si to !!

NELŽI nebo si to zjistím příkazem IF !!

Jestliže něco není jak my chceme, můžeme si to zjistit, porovnat, ohlídat a napsat, že to není pravda. Jak ? Jednoduše, příkazem IF a THEN. Příkaz IF znamená "jestliže" pak následuje námi zadaná podmínka zda se něco stalo nebo nestalo a THEN "Potom" pak následuje připravená akce aneb dělej to co se má stát. Touto dvojicí příkazů jsme schopni ohlídat takřka vše. Například jestli jste na otázku jak se jmenujete vůbec něco napsali. Možná to zní složitě, ale složité to vůbec není...

Nejdřív si ukážeme, co dělat, když nám někdo na otázku "jak se jmenuje" nenapíše vůbec nic.
Jo a opište si jen samotný program, komentáře co jsou za dvoujtečkou přepisovat počítače opravdu nemusíte.

10 INPUT "JAK SE JMENUJES ?"; A$       :REM Ptáme se a čekáme jméno
20 IF A$="" THEN 100                   :REM Jestli(IF) v proměnné A$ není nic, pak skoč na řádek 100
30 PRINT "JMENUJES SE " A$             :REM Když je jméno program pokračuje a vypíše větu
40 END                                 :REM A potom program skončí
100 PRINT "TY NEMAS JMENO ?"           :REM Vypíšeme větu, pokud jsme do jména nic nezadali

A pokud budeš lhát dál, zjistím si to taky ! (příkazem IF)

My ale pokračujeme dál a nyní si ukážeme, jak si pohlídat, kolik roků nám ten lump, co sedí za klávesnicí napsal. On nám totiž může hezky lhát a my si to musíme zjistit ! V další ukázce si proto pohlídáme, jestli nám nenapsal roků málo nebo naopak moc. My totiž budeme počítat s tím, že u počítače odpovídá někdo, kdo má více než šest let a méně než 70 roků (důchodce nevylučujeme můžou si zkoušet taky) .

10 INPUT "KOLIK MAS ROKU CLOVICKU";A     :REM Ptám se tě, kolik máš roků?
20 IF A < 5 THEN PRINT "MIMINKO": END    :REM Pokud máš méně než 5,napiš a skončí (end)
30 IF A > 70 THEN PRINT "DEDECEK": END   :REM Pokud máš více než 70,napiš a skončí (end)
40 PRINT "MAS" A "ROKU"                  :REM Prošel jsi kontrolou :)

První opravdový program

Tady už to přestává být sranda, protože ode dneška můžeme psát docela složité programy, které jsou schopny již i něco velkého dělat. Nevěříte? Věřte. Následující příklad si ukážeme již jen na obrazovce počítače Commodore 64. Pěkně jej zkontroluje, přepište, zadejte kdo jste a kolik je vám roků. Tak šup, šup! Pište !

Další podmínky použitelné při testování pomocí příkazů IF THEN jsou :

>     je větší než 
<     je menší než
=     je rovno 
=>    je větší nebo rovno 
=<    je menší nebo rovno 

podmínky lze kombinovat pomocí logických výrazů OR , AND , NOT

OR      nebo  

IF A=4 OR B=6 THEN PRINT"KDYZ JE A 4 NEBO 6"   

AND     a(současně) 

IF A=>50 AND B=<100 THEN PRINT"JE TO V INTERVALU 50 - 100"   

NOT     inverze (není)  

IF NOT C=0 THEN PRINT"JESTLI C NENI NULA"   


Dej mi písmenko jinak...

Dalším podobným příkazem jako INPUT je příkaz GET(dostat, získat). Když počítač při vykonávání programu narazí na příkaz GETG$ tak zjistí zda byla v tom okamžiku stisknuta nějaká klávesa, pokud ano tento příkaz vezme z klávesnice znak a vloží ho do proměnné G$. Na nás je pak co s ním budeme dělat. Například to můžeme využít v programu kde chceme provést nějaký dotaz a stačí nám jako odpověď stisk jedné klávesy.

170 GETK$:IFK$=""THEN170                              :REM Program čeká na stisk klávesy
180 IF K$="A" THEN GOTO 10                            :REM porovná stisknutou klávesu s A a skočí na začátek
190 IF K$<>"N" THEN PRINT"ZKUS JINOU KLAVESU":GOTO170 :REM když klávesa není ani N tak vypíše text a vrátí se na 170 

A to je pro dnešek vše přátelé.... ale to mám přece, přece říct já... no tak to řekni... Příště ;-)

..nebo ještě ne... prostě to nejlepší nakonec, víte co?? Příklady zde uvedené si ode dneška můžete stahovat na disketě (image d64) a zkoušet si hrát s těmito příklady například v emulátoru (VICE). Ti co mají štěstí i na opravdovém, (ne)skutečném Commodore 64!

Stahujte zde.

PCH / Unreal und Sillicon / Unreal

Nový příspěvek k článku

podpis :
První znak podpisu musí být vykřičník, jinak se příspěvek neodešle (ochrana proti spamu)

12.05.2017 - PedroS

Týjo, já si toho Commodora budu muset taky pořídit, když to tady tak pěkně popisujete :-)

Advert

Hardcode and datamining by PCH of UNREAL, Hardware guru by RAY of UNREAL, Bugs report by SILLICON of UNREAL
UNREAL 2014-2021 Czech republic