Recenze - Navigátor

12 Assembler
41 Encyklopedie
30 Hardware
14 Hra
12 Párty
7 Programování
12 Sofware

HRA

Raid on Nietegsorg!
Herní styl Pinball
Multiplayer Bez multiplayeru
Rok vydání 1990
Programátor Olaf Lubeck
Grafik Charles M. Duncan (CMD)

INTRO

Basic v2.0 - průvodce mrtvým jazykem , díl 1 - Ántré

Nemyslím si, že jsem pánbůh, ale dokážu si tipnout reakce některých z vás po přečtení tohoto prvního dílu výukové lekce Basic v2.0. Zde jsou některé předpokládáné reakce.

10. PCH se zbláznil .. a konečně definitivně!
20. "Máňo ... jakýže je dnes rok ?? 2017 ?? .. aha díky ..."
30. Basic v2.0 je mrtvej !! rozuměj MRTVEJ JAZYK !! MRRRRTVVEEEJ!!!!! Stejně jako Kočanská ...
40 GOTO 10

Tak .. a to bychom měli první program.

Ale teď beze srandy.

K tomuto polozoufalému kroku mě vedla jedna věc a to ta, že se na mě začalo obracet mnoho známých a kamarádů s jednoduchou, ale zároveň zatraceně komplikovanou prosbou: " Můj malý má 10 let a strašně rád by začal programovat ... Nevíš v čem by měl začít ??". Popravdě .. Nevěděl jsem a začali jsme hledat na webu jazyk, který by byl opravdu pro začátek vhodný. Našli jsme a nainstalovali hromadu odporných graficky zhůvěřilých pseudodětských paskvilů tářících se jako supermegatotal nástroj pro rozvoj dětského analytického myšlení.
Něco se tvářilo jako skládání barevných kostiček, kde ovládání bylo absolutně psychadelické a výsledek byl chaos barviček .. něco se snažilo použít chudáka psa či kočku jako prostředníka mezi dětským mozkem a kusem poctivého ... textového kódu. Chápu. I my měli svého Karla. A i na Karla polovina lidí nedá dopustit a polovina jej skoro ani nezná.

Každopádně lhát se dětem nemá a tvrdit jim, že programování se dělá pomocí myši, usmívání se na webovou kameru či jiným výrazovým prostředkem je dle mě volovina.
A protože začít se má pomalu a základy, napadla mě spásná myšlenka. BASIC ! Normální pitomý, jednoduchý ... zabugovaný Basic V2.0 se všemi jeho neduhy a chybami, stejně jako jsme se jej učili my, stará garda chápající počítače nejen jako "ten Internet a Facebook", ale jako čipy, dráty, kazeťáky, řádky textu .. assembler a dokonce světe div se !! Věděli jsme, že existuje hardware, který má své limity a to někdy zatraceně blízko.

Proto jsem se rozhodl, že tyto další a další lekce napíšu pro ty, kteří mají právě těch 10 let a nebudou poslouchat řeči chytrých lidí mluvící o spásných jazycích typu C, C++, JAVA, PYTHON, PHP, RUBY, (KAREL), ... a milióny dalších jazyků, které stejně vychází z logiky těch nejstarších. A právě jednoduchost učení se principů je dle mě základ k tomu, aby se člověk v deseti naučil psát logiku v Basicu a v patnácti ať si napíše svůj první program třeba v programovacím jazyku "Single Four". A vězte, že tento text bude psán tak, aby jej pochopili právě tihle desetiletí lidé a ne vy, kteří se chvástáte, že je vám čtyřicet a všechno je špatně, protože vy tomu rozumíte právě ze všech nejlépe :)

Proto půjdeme hezky postupně a budeme si ukazovat všehny možné vychytávky včetně pekelných problémů, které Basic v2.0 přináší. A začneme hezky popořádku:

Lekce 0 - Úvod do ovládání BASICu

Po zapnutí se počítač respektive BASIC ohlásí nápisem READY. a blikající kurzor nám oznamuje že je připraven na příjímání příkazů.
BASIC se ovládá tak že na klávesnici napíšeme příkaz a odešleme ho počítači aby ho vykonal klávesou RETURN.

Příkazy se píšou samotné a nebo s nějakými parametry. Je-li jich více tak s nějkými oddělovači jako třeba čárkou nebo středníkem (menší odsazení než čárka). Destinná čárka je v počítačích zapisována jako tečka, protože čárka odděluje jednotlivé výrazy například 3.1415265 . Dvojtečkou jsou odděleny příkazy od sebe napsané v jednom řádku. Uvozovky označují nějaký textový řetězec a to co je uvnitř počítač ignoruje i když by to byl třeba příkaz.

Proměnná A to je vlastně taková "krabička" do které si schováme nějakou informaci (číslo) se kterou budeme dále pracovat. Jestli si chceme uschovat nějaký text, tak proměnná už musí být jiného typu a to string A$ . Zadávání takového textu musí být v uvozovkách, jinak by počítač nevěděl kde text začíná a končí.

Aby počítač věděl co po něm vlastně chceme musíme nadefinovat proměnné a to dříve než s nimi budeme pracovat, protože jinak by chudák netušil co po něm vlastně chceme např.

LET A=15
Přiřadí proměnné A číslo 15

U C64 mohou být proměnné maximálně dvou-písmenné AA nebo AB, AC, ZZ, R1 až R9 atd. a není potřeba zadávat příkaz LET. Některé proměnné už zná po zapnutí jako třeba π , TI nebo TI$.
Při zadávání příkazů je bohužel omezení, že jedna programová řádka může mít maximálně 39 znaků a poslední je RETURN.

Představme si tedy pár základních příkazů, které nejspíše už stejně všichni známe, tak jdeme na to.

Známe už LET který naštestí nemusíme používat a další jsou:

LOAD 
- nahrávání (stažení) programu do počítače z externího úložiště (1-kazeťák; 8-první disketovka 9-druhá disketovka atd...)

SAVE 
- uložení programu z paměti počítače na externí záznamové zažízení (opak LOAD)

RUN 
- spuštění námi napsaného programu (je možné spustit program od určitého místa třeba RUN500)

LIST 
- bez parametrů vypíše celý program uložený v paměti na obrazovku po zaplnění jí posouvá nahoru
LIST 25            vypíše pouze řádek 25
LIST -50          vypisuje od začátku do řádku 50
LIST 100-        vypisuje od řádku 100 dále
LIST 200-250  vypisuje od řádku 200 do řádku 250
Zastavit výpis se dá klávesou RUN/STOP a nebo jen zpomalit klávesou CTRL.

PRINT 
- tisk, příkaz vlastně "tiskne" na obrazovku to co mu zadáme, proměnné, text, znaky atd...

Čísla řádků, k čemu jsou ?
Program je pro počítač vlastně jen seznam příkzů co má udělat a protože se různě větví podle zadaných podmínek nebo jsou potřeba různé cykly (opakující se příkazy), tak aby počítač věděl kde v programu má pokračovat a jak jdou za sebou, je v BASICu potřeba číslovat řádky.
A to od nejnižšího čísla kde program začíná vzestupně.Vhodné je číslovat po 10 aby se případně daly vkládat další příkazy mezi již napsané.

Lekce 1 - příkaz PRINT a čísla

V matematice pro druhé či třetí třídy se učí počítat takto :

2 + 1 = ??
Pokud máte tento příklad spočítat, zamyslíte se a výsledek zapíšete místo ??. ( nápověda : je to 3)
V programování lze zapsat tento příklad různými způsoby například :

PRINT 2 + 1
V počítači Commodore 64 se po napsání příkazu RUN a zmáčknutí klávesy RETURN na obrazovce vypíše výsledek tohoto příkladu.
To znamená, příkaz PRINT vypíše výsledek.
Nebo můžeme zapsat program daleko lépe pomocí proměnné. Proměnná je jen slovo, které zastupuje číslo. My pak nepočítáme s čísly 2 a 1 , ale například s pismeny A a B. Jak ? Tak!

10 A = 2
20 B = 1
30 PRINT A + B
A pokud potřebujeme výsledek uchovat pro další práci, můžeme i výsledek vložit ne jen na obrazovku, ale uchovat si jej do proměnné. Například do proměnné nazvané "C"
10 A = 2
20 B = 1
30 C = A + B
40 PRINT C
Vysvětlení
10 A = 2 ...... V proměnné A je hodnota 2
20 B = 1 ...... V proměnné B je hodnota 1
30 C = A + B .. Do proměnné C se uloží výsledek 2 + 1, takže 3
40 PRINT C .... Výsledek (3) se vytiskne na obrazovku
S čísly můžeme dělat psí kusy. Můžeme jej sčítat, odčítat, násobit a dělit a kdovícoještě. Složitější příklad nám například spočítá obsah obdélníku a třeba i jeho obvod:
10 A = 5
20 B = 7
30 C = A * B
40 D = 2 * (A + B)
50 PRINT "OBSAH OBDELNIKU JE :";C;"M2"
60 PRINT "OBVOD OBDELNIKU JE :";D;"METRU"
Výsledek

Příkaz print zde vypisuje nejen výsledky , ale v uvozovkách i texty, které potřebujeme k tomu, abychom vytiskli i informace o výsledku. A protože lze na jednom řádku vypisovat texty i čísla, jednotlivé texty či čísla se oddělují středníkem.
Počítání s čísly a výpis na obrazovku je základní operace, s kterou si lze hrát až doaleluja. Vzorce na výpočet mohou být jednoduché i složité, počítat můžeme i s čísly s desetinnou čárkou nebo zápornými čísly.

Lekce 1 - příkaz PRINT a texty

Když čísla mají své proměnné, které se označují například znakem A až Z, tak i texty mohou mít své proměnné. V Basicu se proměnná pro text označuje se znakem dolar (někde uváděné jako string), například A$.
A$ = "AHOJ"
B$ = "KARLE"
A protože bychom rádi vypsali na obrazovku větu "Ahoj Karle", napíšeme si proto krátký program:
10 A$ = "AHOJ"
20 B$ = "KARLE"
30 C$ = A$ + B$
40 PRINT C$
Jenže tento program nám vypíše výsledek "AHOJKARLE" bez mezery mezi slovy, tak si mezeru jednoduše přidáme
10 A$ = "AHOJ"
20 B$ = "KARLE"
30 C$ = A$ + " "+ B$
40 PRINT C$
Ve škole se učí že 3 + 5 je stejné jako 5 + 3, ale v počítači na pořadí záleží takže program nám vypíše "KARLE AHOJ"
10 A$ = "AHOJ"
20 B$ = "KARLE"
30 C$ = B$ + " "+ A$
40 PRINT C$

Běžné chyby a omyly

10 A = "AHOJ"
20 PRINT A
Do proměnné A se ukládají jen čísla a ne text. Program skončí chybou ?TYPE MISATCH ERROR
10 A$ = "3"
20 B$ = "5"
30 C$ = A$ + B$
40 PRINT C$
Program s proměnnými nepočítá jako s čísly, ale jako s textem a když spojíte 3 a 5 vznikne 35 a ne hodnota 8!!
10 A$ = "KAREL"
20 B = 5
30 C$ = A$ + B
40 PRINT C$
Nelze jen tak sčítat či spojovat různé proměnné jako je text (KAREL) a číslo (5). Proměnné lze změnit z čísla na hodnotu a naopak, o tom ale někdy později.

A protože počítání a psaní na obrazovku je základ, budeme tyto věci opakovat neustále a neustále a neustále a neust...

Domácí úkoly

1. Vypis na obrazovku "UCIME SE BASIC V2.0 NA". Tento text podtrhněte hvězdičkami a pod hvězdičky napište přesně na prostředek následující vzkaz : "COMMODORE 64" a podtrhněte znovu hvězdičkami.

Výsledek by měl vypadat takto :


UCIME SE BASIC V2.0 NA
**********************
     COMMODORE 64
**********************
Loučíme se s vámi a příště ... příště to rozjedeme !

PCH & Sillicon / Unreal 2017

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)

10.04.2017 - ray

Je to pouziti ciste basic/kernal rutin. Navic v zadani nebylo, ze by se to melo napsat v BASICu :) A nula bodu ? To teda ne, ja si pujdu stezovat na socialku, neni to gender neutralni pristup ! :P

09.04.2017 - Sillicon

No jak vidím není BASIC jako basic... pro někoho je basic assembler... ale o tom tato lekce není ... a ještě takhle nacheatovat odpověď :-)

09.04.2017 - PCH

Za font 1, technicke provedeni 1, uprava 0. Kdyz to vsechno zanduju, vysledna znamka 0! :)

07.04.2017 - ray

Doufam, ze dostanu dobrrou znamku :) Tak se ukaz, betmene :D


*= $1000
ldy #$00
pch
lda domaciukol,y
beq zvoni
jsr $ffd2
iny
bne pch
zvoni rts

domaciukol

.text "UCIME SE BASIC V2.0 NA"
.byte $0d
.text "**********************"
.byte $0d
.text " COMMODORE 64"
.byte $0d
.text "**********************"
.byte $0d,$00

03.04.2017 - PCH

Ha háá, ale pokud ti jde o každý bajt tak příkaz PRINT "SRDICKO" zabira 9 Bajtu a prikaz PRINT CHR$(147) bajtů 15 !! :)

03.04.2017 - Comos

Tohle je řešení podle originální commodore příručky a tam nikdy nelžou :)

02.04.2017 - PCH

Comosi, ty lišáku :)
Dal jsem si za úkol napsat co nejvíce bez POKE a PEEK, ale tohle řešení je prostě fikané :)

02.04.2017 - Comos

anebo print chr$(147)

02.04.2017 - PCH

10 PRINT "{shift+home}"

kde se ti misto one zkratky napise plne srdicko , coz je funkce pro smazani obrazovky

30.03.2017 - wankes

Asi bych doplnil (a školákům zvlášť), že užitečnost BASICu ocení během školní docházky nejen v matematice, ale celkově u technických předmětů = malý prográmek jim časem umožní (kontrolovat, nepodvádět) otravné úkoly jako kvadratické rovnice, výpočty do fyziky, elektrotechniky apod. Snadno si naprogramují kostku 1 až 6,ale taky dvacetistěn z Dračího doupěte apod. (mimochodem, má BASIC 2.0 příkaz CLS, nebo se to tam řeší jinak, nějak si nevzpomínám už.

30.03.2017 - Comos

Jestli myslíte robota Karla,tak ten existuje :)

29.03.2017 - PCH

Karle ne ... Opravdu ne .. :)

26.03.2017 - Solaris104

Existuje ten zmiňovaný Karel i pro C64?

24.03.2017 - PCH

Tak spíš doplňuj :) ... třeba na něco zapomenem ... nebo přijdem :)

23.03.2017 - Comos

tvl tady bych ještě mohl excelovat :)

23.03.2017 - PCH

:) Vidím, že Basic táhne :) Pokud mi síly dovolí, budeme si hrát s basicem do absurdna .. a možná budete překvapeni .. protože já jsem s Basicu překvapen každou chvíli :)

23.03.2017 - F6

Domácí úkol:
10?"UCIME SE BASIC V2.0 NA",,"**********************
20?TAB(5)"COMMODORE 64",,"**********************
;)
Kdyby někoho trklo, že mi na konci řádků chybí ", za TAB(5) není ; a místo PRINT je ?, tak nechybí, tento dialekt Basicu to umožňuje, i když znak ? se ihned po odřádkování převádí v paměti na slovo PRINT.

23.03.2017 - F6

Pěkné, sice nevím, kam to rozjedete, protože veškeré snažení o něco kloudného na C64 v BASICu stejně končí u příkazu POKE, ale nechám se překvapit ;)

Advert

Programmed by PCH of UNREAL, Hardware support by RAY of UNREAL. Beta test and bugs guru SILLICON
Unreal 2014 - Czech republic