Úvod do programování
Základní literatura Töpfer, P.: Algoritmy a programovací techniky, Prometheus, Praha učebnice algoritmů, nikoli jazyka pokrývá velkou část probíraných algoritmů Satrapa, P.: Pascal pro zelenáče, Neokortex, Praha učebnice jazyka Pascal v podstatě vše, co budeme probírat přednášky se budou z velké části držet linie daných knih
Algoritmus podle jména matematika Abū ʻAbd Allāh Muhammad ibn Mūsā al-chwārizmī postup, návod jak vyřešit daný problém důležité konečnost správnost složitost (efektivita)
Složitost algoritmu základní dělení: paměťová časová alg. při stejných datech použije více/méně paměti alg. při stejných datech poběží delší/kratší čas otázka vzájemného poměru preferujeme spíše vyšší časovou efektivitu omezíme se jen na odhady
Časová složitost nejhorší případ průměrný případ asymptotická složitost porovnávání algoritmů pro velká data rychlost růstu času v závislosti na velikosti dat symbol velké O pouze nejrychleji rostoucí člen v praxi: O(log 2 N), O(N), O(N 2 ),, O(2 N )
Příklad problém: vyhledat hodnotu v setříděné posloupnosti (případně oznámit, že není) možnost volit různé algoritmy postupné hledání O(N) půlení intervalů O(log 2 N) posloupnost rozdělíme na dvě poloviny podíváme se, ve které hledat opakujeme, dokud nenajdeme nebo nevyloučíme
Složitost problému jak nejrychleji lze daný problém řešit
Pascal vznik počátkem 70. let autor Niklaus Wirth vyšší programovací jazyk určený pro výuku překladače a vývoj. prostředí FreePascal (+ Lazarus) svobodný Borland (Turbo) Pascal (+ Delphi, Kylix) do verze 5.5 uvolněn, poslední verze 7.0 GNU Pascal svobodný
Nazdar světe! program Hello; begin write('hello world!'); end.
Práce programátora vymyslet správný, vhodný, rychlý algoritmus (nejtěžší) a uživatelské rozhraní přepsat jej do řeči pro počítač v nějakém programovacím jazyce přeložit, opravit chyby otestovat opravit chyby otestovat opravit chyby,...
Programování program v pr. jazyce obyč. textový soubor převezme kompilátor kontrola syntaktických chyb úspěšná kompilace program v poč. jazyce binární soubor spouštění, testování sémantické správnosti
Vývojová prostředí k tvorbě programu s pomůckami ke kontrole syntaxe k překladu k opravě chyb sledování proměnných krokování programu apod.
Struktura programu hlavička (někdy součást deklarace) název programu, načítané knihovny deklarace typy, proměnné, podprogramy příkazy (tělo programu) klíčová slova vs. identifikátory
Nazdar světe! program Hello; begin write('hello world!'); end.
Štábní kultura v podstatě individuální věc je vhodné zajistit určitou přehlednost Pascal ignoruje bílé znaky mnemotechnické identifikátory dodržovat velikost písmen, i když Pascal není case-sensitive časté kometáře
Přiřazovací příkaz symbol := uložení do proměnné A := 2; do proměnné A přiřaď dvojku nejčastěji používaný příkaz
Vstup a výstup procedury Read a Write načítání a zápis z/do standardního vstupu/výstupu tj. pro nás nyní příkazový řádek relikvie? Nikoli! načti proměnnou A Read(A); vypiš proměnnou A Write(A); a co udělá Write('Hodnota je: ',A);? varianta Writeln, Readln
Deklarace proměnných každá proměnná musí být deklarována uvádíme na počátku programu klíčové slovo var proměnná: typ; různé typy a rozsahy proměnných integer real char atd.
Příklad program dvojka; var X: integer; begin X := 2; Write('X je :', X); end.
Jiný příklad program mocnina; var X, X2: integer; begin Read(X); X2 := X * X; Write('Druha mocnina X je :', X2); end.
Operace s čísly +, -, *, /, mod, div pozor na neceločíselné dělení celých čísel
Podmíněný příkaz rozvětvění programu jedna nebo dvě větve pokud je splněna podmínka např. (ne)rovnost if then else před else nesmí být středník lze vnořovat více příkazů nutno sevřít do bloku košile bližší než kabát
While cyklus cykly pro opakování téže činnosti provádí, dokud je splněna podmínka while do příklad: X := 0; while X < 10 do begin writeln(x*x); X := X + 1; end;
Repeat-until cyklus podobně jako while řízen podmínkou repeat until until = dokud není! narozdíl od while-cyklu vždy proběhne alespoň jeden krok