Aktualizováno v únoru 2019

      
 

   Základy programování ve Visual Basic a Gambas ...
 
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.

Zpět na obsah


TU 73, Mira, ok1ufc