Základy
Na úvod si připomeneme nějaké principy:
1. Imperativní programování. V našem vidláckém programování se
neobejdeme bez psaní tzv. kódu. Tedy příkazů, instrukcí, které program
vykoná. Tento princip můžeme označit za
imperativní programování.
2. Basic je jazyk imperativní. Počítač nebo kalkulátor, který
Basicu využívá, vykonává jeho příkazy. Kdysi jsem měl kalkulačku Sharp,
kterou jsem měl velmi rád. Umožňovala v jednom režimu zapsat instrukce
programu Basic. A tento program jednoduchým způsobem (opět neutajeným
tlačítkem) pustit. Příkazy se psaly na řádky a kalkulačka uměla pracovat
displejem, kde zobrazovala výsledky a s klávesnicí, ze které uměla číst
vstupní data. Později, někdy po roce 1985 jsem měl možnost používat
osmibitové počítače, v práci HP85, doma ZX Spectrum. Umožňovaly zapsat
program a spustit program. Jazyk Basic vznikl však ještě o něco dříve
(1964). Jazyk se vyznačoval tím, že vycházel z angličtiny (z
jednoduchých a snadno zapamatovatelných slov) a psal se z
klávesnice na řádky (je jedno, zda to bylo v editoru kalkulačky nebo
později v editorun tzv. zdrojového souboru).
3. Basic používá různé typy příkazů. Lidé, kteří vyučují
programování, tak obvykle začínají s popisem proměnných a následně s
různými způsoby přiřazování hodnot proměnným. Já mám raději začátky
vidlácké a tak na prvním místě uvádím volání procedury.
4. Basic je rovněž jazyk procedurální. Procedura patří k základnímu
druhu tzv. větvení v programu. A používá se k tomu, abychom často
používaný kód (určité množství řádků instrukci, které by se jinak musely
opakovat) volali jménem procedury. To se dělá třeba tak, jak jsme si
ukázali v prvním příkladu:

Řádky programu máme hezky napsané v těle procedury, které
je umístěné na vhodném místě v programu (ještě na to přijde řeč) a vypadá
v tom našem konkrétním případě takto:

Poznámky:
a) Při volání procedury je příkazem pouze Z0_solve ( ), to
další za ' je komentář, abychom např. věděli, co procedura bude dělat
b) V těle procedury je 6 řádků. Na prvním řádku něco přiřazujeme, na
druhém řádku rovněž, navíc to dělíme dvaceti, na třetím řádku cosi
počítáme, dokonce tam voláme matematickou funkci Log10, která počítá
dekadický logaritmus výrazu v závorce (ve výrazu je podíl dvou proměnných
S/r, kterým jsme na prvních řádcích přiřadili hodnoty. To všechno násobíme
276 a ještě z toho počítáme pouze celou část čísla (tedy to, co je vlevo
před desetinnou tečkou.
c) Na posledních třech řádcích zase hodnoty proměnných čemusi přiřazujeme.
Za povšimnutí stojí, že přiřazujeme na posledním řádku hodnotu Z0, kterou
jsme na třetím řádku spičítali.
5. Objektově orientované prvky. V tomto místě
zdůrazním, že Visual Basic a Gambas jsou jazyky s
objektově orientovanými prvky.
Protože jsme se začali učit programování (jako vidláci) pro dost složité
stroje, mezi které desktop s grafickým rozhraním, komunikace po sériovém
portu a práce s daty určitě patří, hojně využijeme některých vlastností,
které nám objektově orientované programování dává. Za základní princip
považujme tzv. abstrakci. To znamená, že použijeme tzv. černé
skříňky, které dělají věci, aniž bychom my, jako programátoři - vidláci
znali způsob, jak je dělají. V našem školním příkladu jsme použili tzv.
komponenty (Controls), kterým jsme přiřazovali v naší proceduře konkrétní
hodnoty (poslední 3 řádky) nebo jsme četli hodnoty jejich vlastností
(první 2 řádky). Objekty však mají celou řadu vlastností (např. dědičnost,
zapouzdření, polymorfismus), , o kterých si můžeme přečíst v odkazu na
Wikipedii nebo to připomenu v textu, až to budu považovat za důležité.
6. Typy příkazů. Každý programovací jazyk používá
nějakých typů příkazů. Pomocí příkazů provádíme volání procedur,
přiřazování hodnot proměnným, různé druhy rozhodování, vykonávání cyklů za
různých podmínek. Tyto věci, stručně shrnuté, jsem viděl např. (autor
neznámý) pro
Visual Basic zde. Protože se mi to
líbilo a bylo to veřejně dostupné,
zkopíroval jsem to sem. Microsoft
hezky zpracoval tématiku pro
Visual Basic a publikoval ji na svém webu zde.
Na trhu jsem viděl několik knih o využívání tohoto jazyka. Lze se z nich
naučit základům. Gambas má rovněž hezky zpracované stránky ve
Wikibooks - odkaz zde.V papírové podobě a v pdf formátu
jsem velice ocenil tuto
publikaci (Beginner'
s
Guide to Gambas) - viz zde. Rozhodně se nemusíme naučit všem
příkazům a metodám okamžitě. Myslím, že je lepší, naučit se pracovat s
těmi příkazy a objekty, které budeme postupně ve svých projektech
uplatňovat. Připouštím, že alespoň v mém případě jsem často přemýšlel, jak
to autor té které metody myslel, aby to fungovalo.
7. Proměnné.
a) Základní typy proměnných (Gambas):

b) základní typy proměnných (Visual Basic):




8. Kam psát kód? Zmínil jsem historickou kalkulačku
Sharp, kalkulátor HP85, gumák Sinclair ZX Spectrum a podobné vykopávky. V
těch strojích byl řádkový editor "zadrátován". Příkazy se psaly na řádky.
Pokud zařízení měla monitor, bylo na něm vidět pohromadě i více řádků.
Moderní nástroje (všimněte si, že nepoužívám termínu "jazyky", jde o nástroje s
integrovaným GUI - grafickým uživatelským rozhraním), jako je Visual
Basic, Gambas, většina nástrojů z MS Visual Studio a Xojo mají integrované
krásné a přehledné editory, do kterých se píšou příkazy. Editory mají
mnoho užitečných pomůcek, které nám našeptávají různé možnosti při psaní
kódu.
Poznámka:
a) Jako vidlák jsem se vždy vyhýbal nástrojům, které byly s výbornými
jazyky, ale nedisponovaly dobrým GUI. Např. Python. Vynikající jazyk. Jde
v něm dělat krásně s mnoha objekty, hezky zpracovávat obrovské množství
dat. Ale když opravdu nechcete konzolovou aplikaci, ale krásné wokno na
obrazovce, tak se z práce s těmi nástroji opravdu pose...te. Visual
Studio, Visual Basic, Gambas, Xojo, Lazarus (Delphi), to jsou nástroje,
které mají dobrá GUI.
Zdůrazním jednu důležitou věc - někteří lektoři tvrdošíjně trvají na tom,
aby měli kód v jednom souboru, tzv. modulu (označeném např. jmeno.bas). Já
na to tomto u jednoduchých aplikací netrvám. Programuji vidlácky. Moje
aplikace bývají grafické a jsou pro desktop. Vždy používají alespoň
jednoho formuláře, který se při startu programu natahuje do operační
paměti. V takovém formuláři bývá základní procedura, např. takto
vypadající:

Jde o tzv. třídu (Class), která vykoná instrukce mezi
Public Class a End Class. U nového formuláře se nám vygeneruje s tělem
procedury Sub Form1_Load (...) Handles MyBase.Load. Tato procedura je
ukončena příkazem End Sub. Do těla procedury píšeme všechny příkazy,
u kterých potřebujeme, aby se vykonaly po startu programu, tj. po otevření
okna. Pokračovat můžeme procedurami, které budou vykonány v okamžiku, kdy
je zavoláme. V našem příkladě jsme volali proceduru Z0_solve ( ), což bylo
popsáno na začátku článku. V kódu jsou však ještě dvě další procedury:

Jde o procedury:
Private Sub
NumericUpDown1_ValueChanged(ByVal
sender As
System.Object, ByVal
e As
System.EventArgs) Handles
NumericUpDown1.ValueChanged
Z0_solve ( )
End Sub
a
Private Sub
TrackBar1_Scroll(ByVal
sender As
System.Object, ByVal
e As
System.EventArgs) Handles
TrackBar1.Scroll
Z0_solve ( )
End Sub
Tyto procedury souvisejí s použitými komponenty, které jsem
v grafickém prostředí z tzv. Toolboxu dali na formulář. První se týká
prvku (control) NumericUpDown1.ValueChanged, resp. jeho proměnné
ValueChanged. Procedura funguje tak, že když zarejdíme s tímto prvkem při
běhu programu, změní se hodnota jeho proměnné Value. Procedura následně
zavolá Z0_solve ( ) aprovede příkazy, které jsou definované v těle
procedury Z0_solve ( ). Toto potřebujeme i v případě, kdy zarejdíme s
prvkem TrackBar1.Scroll. Opět je volána stejná vnořená procedura, která
vykoná stejný kód s jinými hodnotami.
Poznámky:
a) Chtěl jsem ukázat na význam slov, že Basic je jazyk procedurální.
b) Chtěl jsem ukázat na význam slov, že Visual Basic a Gambas jsou jazyky
s objektově orientovanými prvky. Aniž bychom přesně znali mechanismus
fungování objektů (jsou zapouzdřené), zjistíme, na co objekty reagují.
Naše dva zkoumané objekty reagují na "rejdění", tedy na změnu hodnoty při
běhu programu.
c) Chtěl jsem ukázat, že když došlo ke změně hodnoty objektu, tak do kódu
bylo možné vložit proceduru s příkazy, které se mají vykonat. V našem
případě jsme vykonávali příkazy v další proceduře. Byla do té první
vložená.
d) Principy jsem ukazoval v editoru Microsoft Visual Basic. Šlo o náš
první prográmek. Ten byl napsán v
Gambasu - viz zde. Kód u Gambasu a Visual
Basicu není stejný. Je pouze podobný a využívá podobných principů. Proto
nejde používat Ctrl+C a Ctrl+V. Celý kód příkladu v Gambasu jsem též
ukázal dřív. Je také zde:

9. První zjistitelné rozdíly v kódu mezi Gambas a
Visual Basic. První zjistitelné rozdíly najdeme už při psaní kódu:
a) Zjistíte, že Gambas a Visual Basic používá jiné typy proměnných.
b) Zjistíte, že Gambas a VB používají tzv. přiřazovací příkaz stejně.
c) Zjistíte, že v Gambasu a VB jsem použil rozdílných prvků (komponent,
controls). To proto, že autoři jednoho i druhého prostředí nevytvořili a
nezapouzdřili stejné objekty. Vybral jsem si však z Toolboxů takové, které
mi funkcionalitou vyhovovaly pro řešení mé úlohy a uměl jsem s nimi dělat
(nebo se to rychle naučit).
d) Zjistíte, že Gambas i VB volá jiným způsobem standardní matematickou
funkci Log10( ). V Gambasu a ve starých verzích Visual Basicu se zavolala
tato standardní matematická funkce jako Log10( ). Ve Visual Basicu .net je
vyžadováno, aby byl importován modul System.Math (např. příkazem Imports
System.Math v záhlaví kódu formuláře) a u funkce se potom použije syntaxe
Math.Log10 (promenna).
10. Další rozdíly zjistíme při ladění kódu
a) Visual Basic při ladění kód přeloží a uloží ho jako
exe soubor do adresáře ve vašem projektu, např. takto, jde o
HEX_to_DEC.exe

Program bude spustitelný na většině počítačů s tzv.
Microsoft
frameworkem .net. Obvykle budou jednoduché programy spustitelné také v
Linuxu pod frameworkem Wine. Tuto vlastnost považuji za zásadní výhodu a svobodu u
systémů Windows. Manažerům to dělá vrásky, chtěli by mít vše pod kontrolou
na různých "Stórech". Bohužel, nemohu si pomoci, ať mi nevidláci
(profesionální programátoři) prominou, ale výsledkem je neskutečné
ramlování operačních systémů a těch, často nefungujících instalací,
protože programátoři řeší závislosti. Taková celosvětová umělá
zaměstnanost. Prostě řeší to, co už jednou fungovalo a po aktualizacích v
operačním systému a aplikacích opět nefunguje. Pravdou je, že ne každý má čisté úmysly a pomocí exe
souborů vám může do PC nainstalovat škodlivý kód.
b) Gambas kód spustí, aniž by někam kód uložil. Pokud
však chceme vytvořit z kódu spustitelný program pro Linux, konáme takto -
vytvoříme ho z menu a uložíme ho do adresáře projektu. Bude mít
jméno.gambas a při poklikání bude spustitelný na tomto počítači, na
kterém jste ho napsali. Pokud ho potřebujete použít na jiném PC, který
má nainstalovaný Gambas, vytvoříte si ho tam stejným způsobem. Gambas umí
vygenerovat rovněž instalační balíčky, např. .deb, .rpm ...
c) Xojo vygeneruje v adresáři s projektem soubor .exe,
který lze spustit pouuze ve vývojovém prostředí, pokud máte neplacenou
verzi. Tento soubor po ukončení ladění smaže. I když ho okopírujete v
průběhu ladění, nelze spustit, nenajde komunikaci s vývojovým prostředím.
|