Navigátorposledních 10 z diskuze |
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 ? 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. 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. 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.
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ý programTady 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! PCH / Unreal und Sillicon / Unreal |
Poslední recenzereakce na článkyTOP 10 HRY
|