Čtvrtek 8 prosince Pascal - opakování základů Struktura programu: 1 hlavička obsahuje název programu, použité programové jednotky (knihovny), definice konstant, deklarace proměnných, všechny použité procedury a funkce 2 tělo programu sem se píší všechny příkazy, které určují, co má program dělat Na začátku těla je uvedeno slovo begin a na konci end a za ním tečka Klíčová slova pro programovací jazyk mají zásadní význam a nesmějí být použita jinak Jsou to např begin, var, and, if, Identifikátory názvy všeho, co budeme v programu používat názvy programu, podprogramu, proměnných a konstant Mohou obsahovat pouze písmena anglické abecedy, číslice a podtržítka, číslice nesmí být na začátku Název identifikátorů musí být v rámci celého programu jedinečný Obvod a obsah rovnostranného trojúhelníku
Výměna obsahu dvou buněk Zkuste vymyslet výměnu hodnot ve dvou buňkách bez pomocné buňky Čtvrtek 15 Prosince Výměna hodnot ve dvou buňkách bez pomocné buňky Větvení 1 Úplný příkaz větvení je-li ve větvích jediný příkaz
Zápis v programu: Středník se píše jen na konci příkazu větvení if podmínka then jediný příkaz else jediný příkaz; 2 Úplný příkaz větvení je-li ve větvích více příkazů Zápis v programu: if podmínka then begin první příkaz; end else begin poslední příkaz první příkaz; Středníky sepíší za všemi příkazy, které jsou uzavřeny v logických závorkách begin end; u posledního příkazu před end se středník psát nemusí Středník se také píše úplně na konci větvení (za posledním end) Nikde jinde se středník psát nesmí! end; poslední příkaz
3 Neúplný příkaz větvení je-li ve větvích jediný příkaz Zápis v programu: if podmínka then jediný příkaz; 4 Neúplný příkaz větvení je-li ve větvích více příkazů Zápis v programu: if podmínka then begin první příkaz; end; poslední příkaz
Příklad dělení program vypočítá podíl dvou čísel a zároveň zajistí, aby nedošlo k dělení nulou Dělitelnost čísla A číslem B
Řešení výrazu Řešení lineární rovnice AX + B = 0
Čtvrtek 5 ledna Procedura exit program můžeme někdy zjednodušit instrukcí exit Má za následek okamžité ukončení programového celku, přejde na konec programu (popř procedury), kde byl použit Porovnání dvou čísel
Maximum ze tří čísel Maximum ze tří čísel s použitím dočasného maxima
Po zadání tří stran program zjistí, zda jde o trojúhelník Čtvrtek 12 ledna Case vícenásobné dělení
Napište program, který ze zadané ujeté vzdálenosti vypočte platbu taxikáři
Čtvrtek 19 ledna
Př Vypiš čísla od 1 do 20
Př Sečti čísla od 1 do 20 Př Sečti 10 zadaných čísel Př Najdi maximum z N zadaných čísel
Čtvrtek 26 ledna Procedury a funkce Procedury a funkce tvoří posloupnosti instrukcí, které potřebujeme v programu provádět na různých souborech dat nebo na různých místech programu Procedura nebo funkce může být po deklaraci použita kdekoli v následujícím textu bloku programu Rozdíl mezi procedurou a funkcí je v tom, že funkce vrací hodnotu a může se použít přímo ve výrazech Procedura se vyvolá příkazem volání procedury ke splnění jedné nebo více operací Procedury a funkce umožňují vnořovat přídavné bloky do hlavního programového bloku Každá deklarace procedury nebo funkce má hlavičku, po které následuje blok příkazů Procedura se aktivuje příkazem volání procedury, funkce se aktivuje vyhodnocením výrazu, který obsahuje její volání Za identifikátorem procedury nebo funkce může následovat seznam parametrů, uzavřený v kulatých závorkách Každý parametr v seznamu má své místo, kterému odpovídá příslušný typ Zdrojový text programu je ukončen tělem hlavního programu Tělo hlavního programu se musí uvést vždy jako poslední Mezi část deklarace proměnných a tělo hlavního programu lze vložit libovolné množství deklarací procedur a funkcí v jakémkoli pořadí Musí se však dodržovat zásada, že cokoli použijeme, musí být deklarováno, jinak dojde k chybě během překladu Tělo deklarace procedury nebo funkce končí středníkem místo tečky u hlavního programu Procedura nebo funkce může mít své vlastní interní datové typy, proměnné i své vlastní procedury a funkce Veškeré prvky deklarované uvnitř procedury nebo funkce mají lokální charakter, tzn lze je využít pouze uvnitř procedury nebo funkce, ve které jsou deklarovány Deklarace, které jsou uvedeny v hlavním programu, mají globální charakter Podprogram typu Procedura Je-li nějaká ucelená část programu upotřebitelná ve více programech, nebo se vícekrát vyskytuje v tomtéž programu, můžeme z ní udělat podprogram Máme dva typy podprogramů Procedura a Funkce Procedura je uvedena v deklarační části programu, kde se nachází celá v těle programu ve všech místech, kde je tato procedura volána se uvede její název a tím se dosadí místo jejího jména její celý zdrojový kód
Struktura procedury: Procedure Název (seznam formálních předávaných parametrů: jejich datový typ); definice konstant; definice proměnných; deklarace procedur a funkcí, které procedura používá; begin {tělo výkonná část procedury} end; V těle programu, tam kde je procedura volána, se pak objeví Název (seznam skutečných předávaných parametrů, už bez datového typu); Formální a skutečné parametry Každou proceduru můžeme v hlavním programu volat několikrát, pokaždé s jinými parametry, proto musí být deklarace procedury obecná V závorce za jejím názvem se uvádějí tzv formální proměnné, které jsou v místě, kde je podprogram volán, nahrazeny parametry skutečnými Globální a lokální proměnné Globální proměnné jsou takové, které platí jak v hlavním programu, tak i v podprogramu Chcete-li použít globální proměnnou, pak musíte: používat stejného označení jak v hlavním programu, tak i podprogramu deklarovat proměnnou pouze v hlavním programu, v podprogramu už deklarována být nesmí Lokální proměnné jsou takové, které platí pouze v určitém programovém bloku, hlavní program je nezná Chcete-li použít lokální proměnnou pak ji musíte deklarovat v podprogramu můžete pro ni použít stejný název, jako má proměnná v hlavním programu, která je určena pro něco úplně jiného, ale nedoporučuje se to z hlediska přehlednosti programu
Procedury volané hodnotou a odkazem Tyto pojmy se týkají parametrů, které jsou uvedeny v závorce za názvem procedury Mají zásadní vliv na chování procedur Procedury volané hodnotou syntaxe: deklarční část: Procedure Název (seznam formálních proměnných: datový typ); volání v těle programu Název (seznam skutečných proměnných); Chování: z hlavního programu předá do procedury (dosadí do jejich formálních parametrů) hodnoty, jakých v místě volání procedury nabývají parametry (proměnné) uvedené v závorce uvnitř s nimi pracuje a zná tyto hodnoty nazpět ale parametr z podprogramu nepředá, protože s nimi pracovala jako s lokálními parametry, které hlavní program nezná Procedury volané odkazem syntaxe: deklarční část: Procedure Název (var seznam formálních proměnných: datový typ); Toto je v procedurách volaných odkazem navíc volání v těle programu Název (seznam skutečných proměnných);
Chování: z hlavního programu dosadí do procedury (do jejich formálních parametrů) skutečné parametry jaké mají v místě volání procedury uvnitř s nimi pracuje jako s globálními parametry (vlivem var byl předán celý parametr, nikoliv jen hodnota) při návratu z procedury nazpět do hlavního programu předá nazpět parametry včetně jejich hodnot, kterých v okamžiku výstupu z procedury nabývají Čtvrtek 1 března Datový typ řetězec (string) Znakový řetězec je homogenní strukturovaný datový typ, který slouží k ukládání více znaků strukturovaný se mu říká proto, že na rozdíl od jednoduchých proměnných obsahuje několik položek (až 255) homogenní je proto, že všechny položky jsou stejného typu (v tomto případě jsou všechny znakové) Protože je řetězec strukturovaná proměnná, lze jednoduše pracovat s jednotlivými položkami znaky Např mobil je proměnná typu string, pak: mobil[1] je první znak proměnné mobil, tj zde m mobil[2] je druhý znak proměnné mobil, tj zde o Délka textového řetězce Funkce length určí délku řetězce length (mobil) = 5
Zjištění, kolikrát se v textu objeví zadané písmeno text je zadán vcelku Čtvrtek 15 března Datový typ pole (array) Datový typ pole je homogenní strukturovaný datový typ Pole může být vícerozměrné (vícedimenzionální) Jednorozměrné pole je např vektor, dvourozměrné např matice, trojrozměrné pole by byla například kubická matice Počet položek v dimenzích pole není omezen na 255, zato se maximální počet položek v dimenzích musí deklarovat Jeho položkami mohou být libovolné jednoduché či strukturované proměnné (obsahují více hodnot) Podmínkou však je, že musí být všechny stejného datového typu (např celočíselné pole, pole reálných čísel, pole logických hodnot, pole znakových řetězců )
Převod z desítkové soustavy do dvojkové nové cifry se vypisují od nejnižších, tj první cifra je v zápisu čísla poslední 78 d = 1001110 b
Převod z desítkové soustavy do dvojkové nové cifry se vypisují od nejvyšších 137 d = 10001001 b
Čtvrtek 22 března Spočítejte hodnoty prvních N prvků aritmetické řady, znáte-li hodnotu prvního prvku A[1] a hodnotu přírůstku D Vytvořte algoritmus pro zjištění součtu aritmetické řady, zadáte-li hodnotu prvního prvku řady A[1], hodnotu rozdílu dvou po sobě jdoucích prvků D a počet prvků, které máme se číst