Základ programování

12. května 2010 v 9:09 | SkyBob |  Rady a navody
Začátek programování je těžký (asi jako každé začátky) Smyslem tohoto článku je lidem ochotným se něco naučit tak trochu dopomoct, správně je nasměrovat aby se vyvarovali zbytečných chyb, co by je mohli rychle odradit.
Základem je vybrat si správný programovací jazyk. I když budete chtít programovat v nějakém mocném jazyku (pro mě to je Delphi, C#, Java ...) základy jsou všude stejný a myslím si, že každý začátečník by měl začínat na to nejjednodušším programovacím jazyku. Smyslem toho je získat programátorský myšlení, osvojit si základní příkazy a zjistit, jestli na to vůbec máte a jestli vás to bude bavit.
Bohužel, nápovědy, fóra, návody a dokonce i programovací příkazy jsou v angličtině, takže kdo anglicky neumí (alespoň základy), tak bude mít asi velké problémy

Již asi 5 let používám Open source (máte možnost podívat se na zdrojové kódy programu a případně něco upravit) scriptovací jazyk Auto IT ... lidé přispívají k jeho vývoji a z původního programu na vytváření maker se rázem stal velice mocnej nástroj. A lejikož je zdarma, jeho instalačka zabírá asi 5MB, je to ideální začátek. Zároveň podporuje všechny verze Windows, takže to je taky obrovská výhoda (Omlouvám se Linuxářům, ale třeba najdete taky nějakou alternativu)
(hned první odkaz (obrázek) ve sloupečku Download - je to kompletní balík, program, editor, příklady, dokumentace)
Omlouvám se zkušeným uživatelům PC, ale Češi mají nejhorší počítačovou gramotnost a toto je přeci jen návod pro začátečníky
Stáhnout, nainstalovat a ve START > AutoIt v3 > SciTE.exe
SciTE je editor, kam budeme psát zdrojový kód. Zároveň má v sobě přehlednou nápovědu i s příklady použití jednotlivých příkazů, zajímavej Tutorial (samozřejmě vše v angličtině)
Tak, ale teď jsem si uvědomil, že asi používám pro někoho dost nepochopitelné výrazy, takže zde dám pro jistotu jejich vysvětlení:
  • Příkaz - většinou jednoslovný povel, co má program zrovna dělat (Jak když zavolám na psa "sedni")
  • Parametr - když si vezmu příklad se psem, tak příkaz "sedni" je dost neurčitej. Nikdo nemůže přesně vědět, na koho to vlastně bylo, jestli na kamaráda, nebo skutečně na psa. Proto se k příkazům přidávají paramatry, jako například kdo si má sednou a kam. Případně se dají ještě dodat nějaké nepovinné [optional] parametry, jako například kdy, nebo jak rychle.
  • Návratová hodnota - když zadám nějaký příkaz jako "kolik je hodin" návratová hodnota bude "10:30". Občas nastanou případy, jako u našeho psa, kde vlastně ani žádnou odpověď nečekám, pouze že si pes sedne. Tehdy můžeme dostat odpověd "pes si sednul" a nebo "chyba" (pes už třeba sedí, nemůže si sednout, a nebo tu třeba takovej pes neni). Příkaz od příkazu je to jiné, proto doporučuji se vždy podívat do nápovědy (F1 když je kurzor na příkazu)
  • Zdrojový kód (zdroják) - několik příkazů, který po spuštění vykonávají požadovanou funkci programu, nebo alespoň jeho části
  • Program - hotový spustitelný program (přípona .exe). Tvořen jedním, ale v dnešní době více souborů zdrojových kódů
  • Syntaxe - (správnost zdrojového kódu a jednotlivých příkazů) každý příkaz musí být nejen napsán správně, ale musí být zachováno správné pořadí, nehledě na povinné parametry o kterých jsem už mluvil.
  • Kompilace (Compile) - provede se ověření zdrojového kódu a pak se převede do spustitelného tvaru (program je hotov a můžeme ho přenést a spustit i na jiném počítači)
  • Komentář - poznámka ve zdrojovém kódu, která se při kompilaci nepřekládá. Je určena pouze pro programátora, aby se vyznal ve zdrojovém kódu. Jde o prostý text ohraničený znaky pro komentáře (každý programovací jazyk má jiný). Dále se těchto speciálních znaků využívá k zakomentování části zdrojového kódu, takto zakomentované příkazy se neprovedou, prostě jako bych je smazal. Používá se středník(;) pro řádek - vše od středníku vpravo je komentář. A nebo párové příkazy #cs (nebo #comments-start) pro začátek, zakomentuje se vše až po jeho ukončení příkazem #ce (nebo #comments-end)

ZAČÍNÁME:
Asi nejdůležitější v každém programu je výstup. Jelikož AutoIt využívá windowsové scripty, může náš výstup vypadat, jako systémové okno windows
1_vystup

Spustíme si tedy SciTE (editor pro AutoIt). Je to jednoduchý textový editor, který má v sobě nápovědu na syntaxi příkazů, barevně odlišuje příkazy, parametry, komentáře
Na první řádku napíšeme příkaz:
MsgBox (0, "Výstupní okno", "Ahoj")
2_parametry


Všimněte si, že při psaní vám program nabídne jakousi nápovědu na syntaxi příkazu. Před prvním spuštěním je nutné mít zdroják uložen. Ale doporučuju uložit hned na začátku a pak průběžně ukládat :D tak asi jako všechno. Takže si zdroják uložíme, klasicky jako všude jinde File>Save, nebo pomocí ikony diskety :D doufám že tohle zvládne každý. Zvolíme si nějaké vhodné jméno a příponu .au3 ... to je velice důležité. Příponou řeknete, že je to zdrojový kód pro AutoIt
Jestliže máme uloženo, můžeme zkontrolovat syntaxi a spustit program. Je to v horní liště TOOLS, ale doporučuji si pro urychlení zapamatovat klávesové zkratky CTRL + F5 pro zkontrolování syntaxe a F5 pro spuštění. Po zkontrolování syntaxe se vám ve spodní části editoru ukáže Output okno s výsledkem kontroly, mělo by tam být něco podobného: C:\Users\skybob\Documents\prace.au3 - 0 error(s), 0 warning(s)
Jestliže máte nula chyb a nula varování můžete zkusit spustit program. V opačném případě se dobře podívejte jestli je příkaz napsaný správně. Můžete si zkusit nějakou chybu nasimulovat, třeba smažte poslední závorku a uvidíte, že program docela přesně odhadne, kde je chyba.
Máme-li zdrojový kód správně, můžeme zkusit spustit (F5) měla by nám vyskočit takováto obrazovka:
3_MsgBox

:D náš první program ... teď si to trochu rozeberem. Pomocí myši, nebo šipek zajedem kurzorem někam na příkaz MsgBox a zmáčkneme (F1) Měla by se nám zobrazit kompletní nápověda pro daný příkaz. Zde najdeme vše potřebné pro vysvětlení a případnou úpravu každého příkazu. Podíváme se na parametr "flag" v našem případě to je ta nula hned na začátku závorky. V nápovědě je všechno krásně popsané, takže si můžeme přečíst, že parametr flag značí jak bude naše okno vypadat, kolik a jakých bude mít tlačítek. Všechny tyto možnosti jsou popsaný v tabulce Remarks. Podíváme se na tuto tabulku podrobněji a zjistíme, že ta naše nula znamená "OK button". Přepište nulu třeba trojkou, uložte, prověřte syntaxi, a spusťte. Rázem máme místo jednoho tlačítka tři (Ano, ne, storno). Podíváme se v tabulce Remarks trochu níže a podíváme se na Icon-related Result, třeba číslo 32 nám do našeho okna přidá ikonku otazníku. Můžete si to vyzkoušet, ale pozor ... číslo 32 vlastně znamená 0 + 32 (nula je za tlačítka, takže tam bude zase jen tlačítko OK, a 32 za ikonku). Takže pokud budeme chtít třeba zodpovědět nějakou otázku (tlačítka ANO a NE a ikonka otazníku) musíme zadat číslo 36 (4 + 32)
Reakce programu na tlačítka není zas tak jednoduchá věc, takže to si probereme později. Nejdříve bychom si měli probrat "proměnné" a jejich "datové typy". AutoIt je velice inteligentní programovací jazyk, takže ze začátku se jimi vůbec nemusíme zabývat, takže to jen tak proletím. Proměnná je vlastně jakýsi dočasné úložiště hodnot (můžeme si jí představit jako koš). Každá proměnná musí být nějakého typu (koš na ovoce) a podle toho můžeme proměnnou plnit (tedy pouze ovocem, vodu tam nesmíme nalít). No prostě ... sou tři základní datové typy:
  • matematické (Integer) - promenná kterou můžeme plnit jen číslama
  • String - prostý text, nebo jen písmena (mohou být vloženy i čísla, ale budou brány jako text. Vše vkládané do proměnný typu string musí být v uvozovkách. Např. "text číslo 1" )
  • Boolean - logické (nabývají pouze hodnot "True" a "False" ... pravda x nepravda)
  • Array - pole (soubor několika proměnných)
Ale jak jsem již říkal, pro začátek datové typy vůbec potřebovat nebudeme, takže se vrátíme k proměnným. Každou proměnnou (náš pomyslnej košík) musíme pojmenovat unikátním jménem (žádný dvě proměnný se nesmí jmenovat stejně), s tím, že můžeme použít !!!POUZE!!! písmen (bez diakritiky), čísel a spodního podtržítka. Zároveň musí proměnná začínat speciálním znakem "dolar" aby bylo při kompilaci jasné, že jde o proměnnou. Zároveň volte jméno rozumě, abyste si ho jedna zapamatovali a jednak, abyste i později věděli na co že ta daná proměnná vlastně je. (například, kdybych dělal jednoduchou kalkulačku, vytvořil bych si například proměnné: $hodnotaA, $hodnotaB a $soucet_hodnot). Jestliže máme proměnné nadefinované, měli bychom do našich pomyslných prázných košíků vhodit nějaké ovoce. Nadefinování proměnné a její naplnění lze provést v jednom kroku, takže na začátku naplníme proměnné $hodnotaA a $hodnotaB libovolným číslem a proměnnou $soucet_hodnot překvapivě součtem předchozích proměných. Ale co by to bylo za jednoduchou kalkulačku, kdyby se nám neukázal výsledek, takže výsledek si necháme zobrazit v námi již velice dobře známém MsgBoxu. Všimněte si, že text součet je v uvozovkách a hodnota proměnné je již mimo uvozovky. Zároveň znakem and (&) značíme, že se toto všechno má zobrazit v těle zprávy:
Uložíme, zkontrolujeme syntaxi a zkusíme spustit. Funguje? Krása :D
4_soucet

Jen by to chtělo ještě trochu poupravit, aby to vypadalo jako skutečná kalkulačka. Pro začátek upravíme konec :D Výstup: Součet = 15 je nicneříkající, takže příkaz MsgBox trochu doplníme:
MsgBox(0,"Výsledek","Součet čísla " & $hodnotaA & " a čísla " & $hodnotaB & " = " & $soucet_hodnot)
5_soucetHotovo

No, hned ten výstup vypadá přehledněji. Teď by to chtělo, aby sme čísla mohli zadávat a né pořád jen měnit zdrojový kód. Na to použijeme příkaz "InputBox". Opět doporučuji si najít jeho syntaxi v nápovědě. (První parametr za příkazem InputBox je text v hlavičce a druhý parametr je text v okně. Toto jsou povinné parametry, ale všimněte si, že u InputBoxu pro proměnou $hodnotaB je ještě třetí parametr a to přednastavená hodnota (viz nápověda). Samozřejmě že tuto hodnotu můžeme při spuštění programu přepsat. Může to sloužit třeba jen k takové nápovědě, jakou hodnotu máme zadat, ale využití je opravdu široké.
Na tomto příkladu si můžeme krásně vyzkoušet i další matematické operace pouhou změnou jednoho znaménka. Ale pozor, děleno je lomítko (/) a krát je hvězdička z numerické klávesnice (*)
Tááák jednoduchej úvod bychom měli, teď začne skutečné programování.



Jééé :D nemám čas, ale postupně dopíšu



Podmiňovací příkazy

If ... then ... else
Asi nejpoužívanější příkaz ... volně přeloženo - jestliže platí podmínka, proveď tohle. Příkaz IF se dá doplnit o příkaz ELSE. V tom případě to bude - jestliže platí podmínka udělej tohle, v opačném případě udělej něco jiného.
Asi nejlepší bude, když si to ukážeme na příkladě (Opět si příkaz IF najděte v nápovědě)
7_if

Opište si tento jednoduchý prográmek a spustíme ... když zadáme jako vstupní hodnotu "10" program vyhodnotí podmínku $hodnotaA = 10 (respektive 10 =10 po dosazení) jako pravdivou a provede všechny příkazy pod tímto příkazem až po EndIf (ukončovací příkaz), v našem příkladě pouze jeden MsgBox. V opačném případě (dosadíme jakékoliv jiné číslo než 10) program všechny tyto příkazy přeskočí a pokračuje až od EndIf, takže pouze poslední MsgBox
Už jsem se zmínil o příkazu ELSE ... v tom případě se z příkazu IF stane takový rozcestník. Podle podmínky se vyhodnotí, jestli se dáme vpravo a nebo vlevo. Vrátíme-li se k našemu matematickému problému (je asi blbost zjišťovat jestli sme zadali číslo deset a nebo je :D takže si trochu poupravíme podmínku.

If $hodnotaA >= 0 Then
MsgBox (0, "", "Zadaná hodnota kladná")
Else
MsgBox (0, "", "Zadaná hodnota záporná")
EndIf

Tedy v překladu, jestliže sme zadali číslo 0 až nekonečno, dáme první odbočkou, jestli sme zadali záporný, dáme se druhou cestou. Vždy se provede pouze jeden MsgBox. Poté se zase pokračuje normálně od EndIf
:D doufám, že je to dost pochopitelný, už nevím jak to lépe vysvětlit.


Select Case
je to vlastně víc příkazů IF v sobě ... hlavní rozdíle je ten, že když napíšu deset příkazů IF pod sebe, tak se vyhodnotí podmínka každého IF. Zatím co u CASE, když program narazí na první pravdivou podmínku, provede sekvenci příkazů pod ním a pokračuje až od příkazu EndSelect

For
je to vlastně kolikrát se má daná sekvence příkazů zopakovat :D nevím co víc bych k tomu řekl, snad jen to, že se dá tato smyčka přerušit, ale to je pro začátečníka si myslim celkem náročný

While
dokud platí podmínka, bude se sekvence příkazů pod ním stále opakovat. (v nápovědě je krásný příklad, takže je zbytečný sem něco dávat)
DO UNTIL (v jiných programovacích jazycích najdete pod názvem REPEAT UNTIL) - Naprosto stejný příkaz jako WHILE s tím rozdílem, že u While se nejdřív zkontroluje podmínka a pak se teprve vykonají příkazy pod ním. U DO UNTIL (respektive REPEAT) se kontroluje podmínka až na konec. To znamená, že ať je podmínka jakákoliv, sekvence příkazů pod příkazem DO se vždy alespoň jednou provede

Funkce
napíšeme si oddělenou sekvenci příkazů, který se provedou až po "zavolání funkce". Tohoto se nejčastěji využívá při opakované sekvenci příkazů třeba po stisknutí nějakého tlačítka



Několik rad na závěr:
Piště zdrojový kód přehledně
Nezapomínejte na komentáře zdrojového kódu, zrychluje to hledání a po nějaké době už ani nemusíte pochopit, proč ste to udělali zrovna takhle, nebo dokonce co samotnej program vlastně dělá.
Využívejte hodně nápovědy, vyvarujete se chybám v syntaxi
Než začnete programovat, dobře se zamyslete, jakou cestou se dáte
Když se vám to zkomplikuje, nebojte se zdroják smazat a začít od začátku
Myslete dopředu
Nebojte se konzultací vašeho problém. Občas vám může pomoct i neprogramátor
Naučte se trpělivosti a vždy si zachovejte chladnou hlavu. Když to nejde, je lepší dělat něco jinýho
A poslední rada ... hledejte informace, prohlížejte fóra, ptejte se a učte od zkušenejších programátorů :D klidně i mě
 


Komentáře

1 SkyBob SkyBob | 19. května 2010 v 8:00 | Reagovat

Jééé ... už mě to nebaví psát, takže když bude mít někdo zájem doplním a nebo individuálně poradím :D

2 Pavel Pavel | E-mail | 2. června 2010 v 16:01 | Reagovat

Ahoj stáhl jsem si autoit a mám dotaz.
Dělal jsem prví tutorial a byl to ten příklad s poznámkovým blokem. Má XP v češtině a v tom editoru byl název programu "poznámkový blok" no a říkám si tedy, že pokud udělám nějaký ten skript, tak půjde spustit na jiném počítači pokud bude mít windows v AJ?
Potažmo abych ten skript mohl spustit na jiném kompu, třeba ho chci poslat kamarádovi. Musí mít nainstalovaný autoit??
Díky :-)

3 SkyBob SkyBob | Web | 3. června 2010 v 18:37 | Reagovat

Ano, pokud ná danný program fungovat i v jiné jazykové verzi, musíš několik věcí poupravit (pro CZ je v hlavičce "poznámkový blok" a v AJ je to "Notepad").
Zbytek je stejnej, takže jestli opravdu potřebuješ něco naprogramovat pro CZ i pro AJ, napíšeš podmínku pro CZ mezera OR mezera prodmínku pro AJ ... např:

WinActivate("Poznamovy blok") OR WinActivate("Notepad") ...

A k té druhé otázce ... pokud Compile (CTRL +F7) a nebo rovou Build (F7) ... prostě pokud vytvoříš hotovej *.exe soubor, můžeš tento program spustit na jinem PC i bez instalace AutoIT ... jen teď nevím přesně jestli už opravili použití Include. Ale to je dá taky obejít.
Jestli budeš mít zájem upřesním

4 SkyBob SkyBob | Web | 4. června 2010 v 8:39 | Reagovat

:D já osobně vlastním 3 PC, ale bohužel na všech mám nainstalovaný AutoIT. Ale teď se mi podařilo sehnat čerstvě nainstalovaný PC s Win Vista a i s použitím vlastního Include program fungoval i bez nainstalování AutoIT (do *.exe souboru se automaticky připojil i include z defaultních include knihoven AutoITu)

Takže teď s jistotou můžu říct, správně napsaný program bude po kompilaci fungovat i na PC bez potřeby instalace AutoIT. A to i s vlastním Include, což před nějakou dobou ještě nefungovalo

5 SkyBob SkyBob | Web | 4. června 2010 v 11:09 | Reagovat

Ještě zpět k těm jazykům ... ten příklad, co sem psal je zamozřejmě blbost. Pokud opravdu potřebujete reagovat na Title a zároveň pro víc jazykových mutací win, dá se krom již zmíněného If-OR využít i příkaz macra - @OSLang ... tento příkaz zjistí, jaká je jazyková verze na PC a podle toho se může řídit chod celého programu. Ale toto je už pro zkušenějšího programátora, takže to nebudu víc rozmazávat, jen kdyby byl zájem

6 MrhrochCZ MrhrochCZ | 25. dubna 2011 v 20:27 | Reagovat

já bych se chtěl zeptat kde bych mohl sehnat Open source

7 SkyBob SkyBob | Web | 25. dubna 2011 v 20:32 | Reagovat

Open source je označení pro program, ke kterému máte možnost stáhnout a dokonce upravit zdrojový kód. Program samotný se jmenuje AutoIT a dá se stáhnout z adresy:
http://www.autoitscript.com/autoit3/downloads.shtml

Vše je v článku

8 glinder glinder | E-mail | 7. července 2012 v 16:04 | Reagovat

Zdravím,
potřeboval bych poradit s načtením dat z tabulky v Excelu do proměných.
Dá se to nějak provést?
Díky

9 Karel Karel | E-mail | 29. prosince 2015 v 16:56 | Reagovat

Přeji hezký den
Mám pár zkušeností s AutuIt-em v.2.51.
Je k němu podrobný popis v č.j. Novější verze 3... Tímto luxusem již neoplývají, avšak jejich možnosti jsou o mnoho lepší. Mně se v nich však těžko orientuje.
Ve starší verzi bylo možné při spuštění předat parametr, který byl v AutoIt-programu použitelný jako proměnná. V této verzi však nevím, jak k předaným hodnotám v AutoIt-programu získat přístup.
Předem děkuji za reakci na Můj dotaz.
S pozdravem
Karel

Nový komentář

Přihlásit se
  Ještě nemáte vlastní web? Můžete si jej zdarma založit na Blog.cz.
 

Aktuální články

Reklama