Programování a počítače 1 Počítačová cvičení pro obor B-EST

Rozměr: px
Začít zobrazení ze stránky:

Download "Programování a počítače 1 Počítačová cvičení pro obor B-EST"

Transkript

1 FAKULTA ELEKTROTECHNIKY A KOMUNIKAČNÍCH TECHNOLOGIÍ VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Programování a počítače 1 Počítačová cvičení pro obor B-EST Autor textu: doc. Ing. Jiří Šebesta, Ph.D Komplexní inovace studijních programů a zvyšování kvality výuky na FEKT VUT v Brně OP VK CZ.1.07/2.2.00/

2 2 FEKT VUT v Brně Obsah ÚVOD INFORMAČNÍ SYSTÉMY VUT, POČÍTAČOVÉ SÍTĚ A UNIX KONZOLOVÁ APLIKACE, TISKOVÁ FUNKCE PRINTF() MANIPULACE S POLEM, CYKLUS FOR ALGORITMUS TAYLOROVY ŘADY, PROGRAMOVÁNÍ CYKLŮ MANIPULACE S ŘETĚZCI V JAZYKU C STATISTICKÉ VÝPOČTY, APLIKACE CYKLŮ FUNKCE, SESTAVENÍ KNIHOVNY FUNKCÍ, VOLÁNÍ FUNKCÍ STRUKTURY A DYNAMICKÉ PROMĚNNÉ PROGRAMY PRO MANIPULACI SE SOUBORY DYNAMICKÁ DATABÁZE POKROČILÉ ALGORITMY, TŘÍDĚNÍ ODPOVĚDI KE KONTROLNÍM OTÁZKÁM... 38

3 Programování a počítače 1. Počítačová cvicení pro obor B-EST. 3 Úvod Tato skripta jsou určena pro studenty předmětu Programování a počítače 1 pro obor Elektronika a sdělovací technika, zkr. BPC1E. Obsahují podrobné návody k počítačovým cvičením uvedeného předmětu. Základním cílem je seznámit posluchače kurzu se základy programovacího jazyka C dle standardu ANSI do úrovně manipulace s dynamickými proměnnými a využití pokročilých datových typů jako jsou struktury. Protože je předmět zařazen hned do prvního semestru bakalářského studia na FEKT, je první cvičení zaměřeno na seznámení s počítačovými sítěmi provozovanými na fakultě a univerzitě a stručný exkurz do operačního systému UNIX. Od druhého cvičení je již výuka orientována na klasický jazyk C. Pro pochopení základů jazyka C a jednoduchou implementaci algoritmů jsou všechny úlohy řešeny jako konzolové aplikace, kdy výsledky jsou prezentovány v dosovském okně se znakově orientovaným výstupem. Pro jednoduchost a snadnou dostupnost bylo zvoleno vývojové prostředí Code::Blocks, dostupné na včetně kompilátoru GNU GCC. Jednotlivá cvičení jsou koncipována jako praktické ověření teoretických poznatků probíraných na přednáškách. Začíná se klasickými učebnicovými základy jazyka C, tiskovou funkcí printf(), výrazy a operátory v C, dále jsou procvičovány příkazy pro větvení a cykly. Následuje problematika programování řetězců a v sedmém cvičení si studenti sestaví vlastní funkce včetně zapouzdření do knihovny a aplikaci v projektu. Závěrečná skupina počítačových cvičení je zaměřená na pokročilé datové typy. Na těchto cvičeních studenti sestavují vlastní struktury, definují dynamicky alokované proměnné a vyzkouší si vytvořit jednoduchou dynamickou databázi s ukládáním do souboru. V posledním cvičení jsou demonstrovány nejčastěji aplikované algoritmy pro vyhledávání a třídění včetně nasazení takových algoritmů na vyhledávání a setřídění struktur v dynamické databázi podle dané položky. Na předmět BPC1E navazuje bezprostředně předmět BPC2E ve druhém semestru, kde se postupně přejde až na úroveň objektově orientovaného programování v C++. Prerekvizitou pro předmět BPC1E jsou znalosti na úrovni středoškolského studia bez specializace na programování. Předpokládá se tedy, že student umí používat základní kancelářské programy a správce souborů na PC a jakýmkoli programováním je nepolíbený. Každá úloha obsahuje zadání a rozbor veřejně přístupné úlohy, kterou si studenti mohou nachystat v rámci domácí přípravy. Druhou částí je zadání B, které je přístupné vždy až na začátku vlastního cvičení. Třetí částí je bonusová úloha, která je nadstavbou pro samostatné zdokonalení studenta v dané problematice. Rozbory jednotlivých úloh obsahují rovněž části stěžejního zdrojového kódu s vysvětlením. Zdrojový kód je odlišen od ostatního textu písmem typu Courier New. Na závěr každé kapitoly je uvedena doporučená literatura a tři kontrolní otázky, jejichž odpovědi jsou uvedeny v závěrečné kapitole těchto skript. Součástí úloh je i předpřipravený kód. Může to být pouze kostra programu nebo to může být poměrně rozsáhlý zdrojový kód, který je nutné prostudovat a doplnit. Zdrojové kódy k jednotlivým úlohám jsou k dispozici na www stránkách: 1 Informační systémy VUT, počítačové sítě a UNIX Cílem je seznámit se informačními systémy, které jsou provozovány jak na univerzitní úrovni, tak i na úrovni fakulty a na úrovni Ústavu radioelektroniky. Protože jsou počítačové sítě založeny na operačním systému UNIX, je dalším cílem seznámení se se základním ovládáním operačního systému UNIX/Linux a se základními operacemi v počítačových sítích.

4 4 FEKT VUT v Brně Úloha A. Tento úkol je zaměřen na základní ovládání OS UNIX, který je spuštěn na studentském serveru FEST. Přihlaste se přes SSH svým loginem na fest.stud.feec.vutbr.cz. pomocí programu PuTTY. Heslo je stejné jako pro . Specifikace cíle je uvedena na obrázku 1.1. Obr Nastavení jména hostitelského serveru v programu PuTTY. Po připojení k serveru budete dotázání na login a heslo. Při zadávání hesla se nezobrazují žádné znaky (ani hvězdičky). Po přihlášení bude prompt nastaven na váš home adresář (viz obr. 1.2). Obr Stav okna po přihlášení na server FEST. Vypište obsah domácího adresáře. Vytvořte editorem pico například soubor test.txt a složku pokus. Soubor zkopírujte do uvedené složky, originál přejmenujte na test2.txt. Zobrazte soubor test2.txt na konzoli. Smažte oba soubory i vytvořený

5 Programování a počítače 1. Počítačová cvicení pro obor B-EST. 5 adresář. Toto vyzkoušejte zadáváním příkazů za prompt i ve správci souborů mc. Zastavení vykonávání aktuálního příkazu se provádí klávesovou zkratkou Ctrl+C. Základní utility a příkazy Shellu jsou: cd: změna adresáře, change directory ls: výpis adresáře, list mkdir, rmdir: vytvoření/zrušení adresáře, make/remove directory rm: smazání souboru, remove cp, mv: kopie/přesun souboru, copy/move pico: jednoduchý textový editor cat, more: zřetězení/výpis, stránkový výpis souboru chmod: změna přístupových práv Úloha B. V tomto úkolu si ukážeme možnosti jednoduchého vytváření webových HTML stránek s možností vystavení na studentském webu. Vytvořte na serveru jednoduchou HTML stránku a publikujte ji. Výsledek ověřte zobrazením přes prohlížeč. HTML (HyperText Markup Language) je velmi jednoduchý značkovací jazyk pro popis tzv. hyperdokumentu. Dokument je organizován hierarchicky pomocí systému předdefinovaných značek, které se zapisují mezi znaky < a >. Ty jsou buď párové definující začátek a konec platnosti (koncová je shodná s počáteční jen jí předchází znak lomítko /) nebo nepárové definující začátek platnosti a platí, dokud není předefinována stejnou značkou s jiným parametrem. Každý HTML dokument je ohraničen párovou značkou <html>. Součástí dokumentu může být hlavička <head>. Za hlavičkou následuje obsah dokumentu <body>. Značky <head> i <body> jsou párové. Součástí hlavičky je specifikace vlastního dokumentu. K zápisu doplňujících informací se používá nepárová značka <meta>. Nadpis dokumentu je ohraničen značkou <title>. Parametry jednotlivých značek jsou zapisovány spolu se značkou a jejich hodnoty jsou uzavřeny v uvozovkách "" (například <a href="index.html">). Zkuste v libovolném editoru sestavit příklad jednoduché HTML stránky: <html> <head> <title>první HTML stránka</title> </head> <body> Moje první HTML stránka xjmeno00. </body> </html> Uložte ji jako index.html do podadresáře WWW. Vaše vytvořená stránka bude zobrazitelná na:

6 6 FEKT VUT v Brně Prostý text se zapisuje bez značek, které by specifikovaly jeho formátování, resp. použije se aktuálně definované formátování. Text zapsaný na více řádcích se ve www dokumentu spojí do jednoho odstavce. Pro definování odstavce lze použít nepárovou značku <p>, pro rozdělení textu koncem řádku nepárovou značka <br>. Pro zvýraznění textu se používá značka <em>, pro silnější zvýraznění (tučně) značka <strong>, pro zápis citace slouží značka <cite>, pro výpis kódu programu bývá uvozen značkou <code>. Všechny tyto značky jsou párové (specifikují začátek a konec platnosti). Pro definici nadpisů se používají párové značky <h1> až <h5> mezi které se zapíší texty nadpisů. Značka <h1> označuje nadpis nejvyšší úrovně, značka <h5> nadpis nejnižší úrovně, např. takto: <body> <h1>titulek kapitoly 1</h1> <em>zvyrazneny text první kapitoly</em> <p> <strong>tucny text dalsiho odstavce</strong> <h2>titulek podkapitoly 1.1</h2> text podkapitoly<br> text na novem radku <h3>titulek podkapitola 1.1.1</h3>... </body> Text lze doplnit o obrázky pomocí značky <img>, přičemž parametr src definuje soubor obrázku a parametr alt text, který bude zobrazen v případě, že obrázek nebude k dispozici: <img src="muj_obrazek.jpg" alt="moje fotografie"> Další značky pro tvorbu HTML stránek lze nalézt například na: Doplňte váš HTML dokument o obrázky a rozšířené formátování textu a vystavte jej na studentském serveru. Úloha C. Tento úkol je zaměřen na základní práci a testování v počítačových sítích. Určete IP adresy přidělené serveru FEST. Pomocí utilit ping a traceroute otestujte síťové připojení k vybraným serverům přes protokoly IPv4 (UNIX i Windows) a IPv6 (UNIX). Pro UNIX/Linux lze využít příkaz ifconfig (výstup a příslušné adresy jsou patrné z výpisu na obr. 1.3). Dále vyzkoušejte utility pro zjištění odezvy a cesty k vybranému serveru v síti (obr. 1.4): ping ping6 název_cíle a traceroute traceroute6 [-n] název_cíle

7 Programování a počítače 1. Počítačová cvicení pro obor B-EST. 7 Obr Ifcofig pro server FEST. Obr Výpis traceroute pro server s doménovým jménem Seznamte se s utilitou nslookup. Získejte IPv4 a IPv6 záznamy vybraných doménových jmen. Vyzkoušejte si nerekurivní dotaz na kořenový jmenný server. Spusťte nslookup a nastavte: set type=any poté zadejte doménové jméno serveru (viz obr. 1.5). Pomocí utility Telnet se připojte na vybrané HTTP servery a získejte metodou GET indexovou stránku. Použijte UNIXový telnet např.: telnet 80 a volejte metodu GET: GET/HTTP/1.0

8 8 FEKT VUT v Brně Obr Prohledání sítě utilitou nslookup pro doménové jméno Hodnocení: Úloha není hodnocena. Kontrolní otázky 1.1) Jaký je vztah mezi HostName a IP adresou? 1.2) Kolik zařízení (serverů) je možno adresovat IP adresou s protokoly IPv4 a IPv6 (UNIX)? 1.3) Jaký je rozdíl mezi párovou a nepárovou značkou v HTML skriptu? Literatura [1.1] HERBORTH, Ch. Unix a Linux. Názorný průvodce. Brno: Computer Press, [1.2] KUROSE, J. F., ROSS, K. W. Počítačové sítě. Brno: Computer Press, Konzolová aplikace, tisková funkce printf() Cílem je seznámit se vývojovým prostředím Code::Blocks a společně sestavit první konzolovou aplikaci s výpisem výsledků na obrazovku při aplikaci tiskové funkce printf(). Úloha A. Spolu se cvičícím sestavte a odlaďte konzolovou aplikaci pro převod dekadického čísla na hexadecimální a naopak. Proveďte rovněž ladění aplikace v režimu debugging. Výsledné okno aplikace je jako příklad uvedeno na obrázku 2.1. Program bude pracovat v textovém režimu s jednoduchým menu, kdy uživatel nejprve zadá znakem h (H) nebo d (D) jaký typ převodu se bude provádět. Následně zadá vstupní převáděnou hodnotu a program vytiskne výsledek v kýžené číselné soustavě. Pro případ ukončení programu je součástí menu znak q (Q) pro ukončení aplikace.

9 Programování a počítače 1. Počítačová cvicení pro obor B-EST. 9 Obr Zobrazení výsledků příkladu v konzolovém okně. V první části programu je vždy nejprve nutné definovat hlavičkové soubory knihoven, které budeme v programu využívat pomocí direktivy #include. Tato direktiva zajistí vložení hlaviček funkcí z příslušné standardní knihovny, které je uvedena v <>. Například pro naši aplikaci budeme potřebovat funkce pro vstup hodnot a znaků z klávesnice, proto vkládáme hlavičkový soubor knihovny stdio (standardní funkce pro vstupy a výstupy), tedy soubor studio.h. Protože budeme používat i funkce pro matematické operace, které nejsou definovány v jazyce C žádnými operátory, např. pro výpočet mocnin při základu 16, vložíme také hlavičkový soubor pro standardní knihovnu matematických funkcí math.h. Pro snadnou práci s řetězci pak použijeme funkce z knihovny string: #include <stdio.h> #include <math.h> #include <string.h> Dále je třeba definovat hlavičky vlastních funkcí, možné to je i vložením vlastního vytvořeného hlavičkového souboru. My budeme používat dvě vlastní funkce, jednu pro převod desítkového na hexadecimální číslo: void dec2hex(unsigned int dec, char hex[]); a druhou pro převod zpětný:

10 10 FEKT VUT v Brně unsigned int hex2dec(char hex[]); Funkce má v závorce definovány vstupní parametry a může obsahovat jednu návratovou hodnotu, jejíž typ je uveden před názvem příslušné funkce. To je případ druhé funkce. V případě té první je nutné vrátit výsledek, tedy hexadecimální číslo, jako pole znaků, proto je požadované pole uvedeno jako vstupní parametr char hex[]. Pokud je vstupním parametrem jedno číslo nebo znak, jedná se o tzv. volání hodnotou, kdy se tato hodnota překopíruje do lokální proměnné funkce a po skončení funkce se tato lokální proměnná uvolní z paměti a její nesená hodnota se ztratí. V případě pole nebo ukazatele (ukazatele budeme probírat později) jako vstupního parametru funkce, jde o volání odkazem (referencí). Funkci se předává adresa pole (prvního prvku, ostatní prvky pole v paměti bezprostředně navazují), proto v těle funkce můžeme přímo ovlivňovat obsah tohoto pole a tím i vložit do tohoto pole výsledek funkce, který nemá jen jednu hodnotu, ale např. pole znaků u hexadecimálního čísla. Těla uvedených funkcí je pak třeba následně definovat. To už může být kdekoli v kódu, protože hlavičky funkcí jsou již známy a lze tyto funkce kdykoli volat. Dále je do kódu programu nutné vždy vložit funkci main(), která je volána se spuštěním programu. Právě v těle funkce main() bude umístěna sekvence příkazů, které se budou postupně vykonávat, včetně volání funkcí (standardních i vlastních). Z hlediska algoritmu bude ve funkci main() naprogramováno výše uvedené menu a na základě volby pak bude volána příslušná funkce pro převod čísla. V části kódu pro menu bude integrován cyklus typu do-while, kdy bude program vykonávat tělo tohoto cyklu (výpis informací pro menu a vstup znaku pro volbu) dokud uživatel nezvolí ukončení programu znakem q, resp. Q. Dále již budete postupovat při sestavování programu s vyučujícím, přesto si uveďme stručný popis standardních funkcí, které bude program používat: Fukce printf(char[]) z knihovny stdio slouží k výstupu na obrazovku (konzolu). Parametrem je řetězec (pole znaků), který má být zobrazen. Řetězec může obsahovat speciální zástupné znaky pro vytištění hodnot proměnných, příslušná proměnná je pak v pořadí dalším parametrem. Například tato konstrukce: int a=12345; printf("v kase je %d Kc\n", a); vypíše na obrazovku: V kase je Kč _ Zástupným znakem pro desítkové celé číslo v řetězci je %d, což v našem případě znamená, že se vytiskne hodnota uložená v proměnné a, která je uvedená jako druhý parametr. Speciální znak %f je určen pro desetinné desítkové číslo atd. Pochopitelně, že v řetězci může být několik zástupných znaků, pak musí být příslušné proměnné uvedeny jako další parametry v daném pořadí. Znak \n je opět speciální znak pro nový řádek, proto je kurzor posunut v našem příkladě na nový řádek. Funkce scanf(char[], adr) taktéž z knihovny studio slouží k načtení řetězce z klávesnice a uložení do proměnné na adrese adr. Opět je možno v řetězci definovat speciální zástupné znaky jako u funkce printf(). Navážeme-li na předchozí příklad konstrukcí: scanf("%d", &a);

11 Programování a počítače 1. Počítačová cvicení pro obor B-EST. 11 pak to znamená, že do proměnné a se uloží desítkové celé číslo načtené z klávesnice. Znak & definuje, že se jedná o adresu následné proměnné. Z knihovny string budeme využívat funkci strrev(char[]). Tato funkce jednoduše otočí pořadí znaků v řetězci (poli znaků), tedy řetězec bude otočen (reverzován). Poslední funkcí, kterou budeme využívat je int pow(int, int) z knihovny math, která vrací celočíselný výsledek mocniny prvního celočíselného parametru na druhý celočíselný parametr. Vyzkoušejte si s vyučujícím i problematiku ladění chyb programu záměrným vnesením nějaké syntaktické chyby a rovněž proces ladění po krocích se sledováním stavu proměnných v integrovaném vývojovém prostředí Code::Blocks. Hodnocení: Úloha není hodnocena. Kontrolní otázky 2.1) Jaký je rozdíl mezi parametrem funkce volaným hodnotou a volaným odkazem? 2.2) Co znamená #include? 2.3) Kdy má funkce printf() více parametrů a co definují? Literatura [2.1] KERNIGHAN, B. W., RITCHIE, D. M. Programovací jazyk C. Brno: Computer Press, [2.2] HEROUT, P. Učebnice jazyka C. 1. díl. České Budějovice: KOOP nakladatelství, Manipulace s polem, cyklus for Cílem je seznámit se s vytvářením jednoduchých konzolových aplikací a se základními typy proměnných. Jádrem je pak problematika práce s dvourozměrným polem, indexování a využití cyklu for. Úloha A. V úvodní části zdrojového kódu programu k příkladu bpc1e_c03.c je definována ve dvourozměrném poli temp tabulka průměrných měsíčních teplot odměřovaných denně ve (a pak zprůměrňovaných za daný měsíc) z nejmenované meteorologické stanice v ČR: float temp[16][12] = {-1.1, -0.3, 7.6, 12.7, 19.2, 27.6, 29.3, 29.1, 23.2,20.1,12.0,5.1,0.8}; // temp. table Záznam teplot v tabulce definovaných byl prováděn od roku 1995, řádky v poli odpovídají jednotlivým rokům od roku 1995 a sloupce jednotlivým měsícům, hodnota počátečního roku je k dispozici v proměnné styear.

12 12 FEKT VUT v Brně V jednoduché tabulce vypište záznam teplot do konzolového okna. Doplňte program tak, aby v konzolovém okně vypsal průměrnou teplotu ve zvoleném měsíci a roce (zadáno při deklaraci proměnných mon a year). Pro tuto část je již připravena základní kostra programu s tiskem hlavičky zkratek měsíců a naznačeným cyklem for, pochopitelně pro tisk dvourozměrné tabulky teplot budete muset použít dva vnořené cykly for: printf("temperature table:\n\n"); // printing "Temperature table:" printf(" JAN FEB MAR APR MAY JUN NOV DEC\n"); // printing abrev. for months for(...) Hodnocení: 1 bod. Úloha B. Program doplňte o výpočet průměrné teploty v jednotlivých celých letech (leden až prosinec) do šestnáctiprvkového pole s vhodným názvem a průměrné teploty v daných měsících za všech šestnáct let měření do dvanáctiprvkového pole s vhodným názvem, průměrné hodnoty teplot vytiskněte v jednoduché tabulce v konzolovém okně se zobrazením jednoho desetinného místa. Zobrazení na jedno desetinné místo s využitím funkce printf() se provede následovně: printf("%4.1f", x); kde x je racionální číslo a %A.Bf je zástupný znak (symbol) pro tisk desetinného čísla se zarovnáním na A znaků doprava a B desetinných míst. Hodnocení: 1 bod. Úloha C. Pomocí podmínkové konstrukce s příkazem if (použití demonstruje cvičící) vytiskněte v konzolovém okně všechny tropické měsíce, tj. měsíce, kdy průměrná teplota ve dosáhla nebo přesáhla 32 C. Stejně tak vytiskněte všechny arktické měsíce, kdy průměrná teplota dosáhla -6 C a méně. Příklad výstupů tohoto úkolu v konzolovém okně je uveden na obrázku 3.1. Hodnocení: 1 bod. Bonusová úloha Doplňte předcházející úlohu o algoritmus, který na obrazovku vypíše pouze roky s průměrnou teplotou větší nebo rovnu 14 C a dále pak roky s průměrnou teplotou nižší nebo rovnou hodnotě 12 C.

13 Programování a počítače 1. Počítačová cvicení pro obor B-EST. 13 Kontrolní otázky Obr Zobrazení výsledků příkladu v konzolovém okně. 3.1) Proč jsou v cyklu for pro oddělení inicializace, podmínky a aktualizace použity středníky? 3.2) Co bude vytisknuto na obrazovce v případě následujícího kódu: float x; x = ; printf("\nx je %5.2f km", x); 3.3) Jak by vypadala podmínka v úloze C, pokud se mají tisknout měsíce, kdy teplota přesáhla 20 C a současně byla menší než 25 C?

14 14 FEKT VUT v Brně Literatura [3.1] KERNIGHAN, B. W., RITCHIE, D. M. Programovací jazyk C. Brno: Computer Press, [3.2] HEROUT, P. Učebnice jazyka C. 1. díl. České Budějovice: KOOP nakladatelství, Algoritmus Taylorovy řady, programování cyklů Cílem cvičení je procvičit si práci s výrazy a operátory a seznámit se s konverzemi v jazyce C a efektivním řešením složitějšího algoritmu. Úloha A. x Vytvořte program, který vypočte hodnotu exponenciální funkce y = e bez použití knihovních matematických funkcí s využitím rozvoje v Taylorovu řadu (viz Matematika I): 2 3 n n x x x x x x e = (4.1) 1! 2! 3! n! n! = n= 0 Vstupní parametr x vygenerujte jako číslo sestávající se z náhodně vygenerované celé části v rozsahu <0; 9> a desetinné části (dvě místa) získané náhodným vygenerováním celého čísla v rozsahu <0; 99>. V konzolovém okně vytiskněte pro kontrolu a srovnání i hodnotu exponenciální funkce vstupního parametru vypočítanou funkcí exp()z knihovny math.h. Dále sestavte algoritmus, který bude postupně přidávat do výpočtu exponentu členy Taylorovy řady a výsledek vždy s uvedením počtu započítaných členů zobrazí (viz obr. 4.1). Připočítání a tisk výsledku provádějte v cyklu for. Pro dosažení velmi přesného výsledku je potřeba pro daný rozsah vstupního parametru asi padesát členů Taylorovy řady. Výsledky exponenciální funkce zobrazujte s 22 platnými a 16 desetinnými čísly. Proměnné výpočtu exponenciální funkce deklarujte jako float, double, long double a pozorujte dosažitelnou přesnost výpočtu (u tisku long double funkcí printf() vložte těsně před specifikátor f velké písmeno L, tedy %22.16Lf. Úvodní část zdrojového kódu programu k příkladu je v bpc1e_c04a.c: #include <stdio.h> #include <stdlib.h> #include <math.h> #include <time.h> int main( void) { double x; // input value double fval=1; // ouput value double xpow=1; // power of input value in numerator double fact=1; // factorial in denominator int integ, decim; // int. and dec. fractions of input value int n=0; // index for comp. of Taylor series in loop char c;

15 Programování a počítače 1. Počítačová cvicení pro obor B-EST. 15 srand(time(null)); // seed init. for random generator // write a code here } scanf("%c", &c); // waiting for pressing key return 0; // program returns 0 Vstupní parametr x je definován proměnnou x, která se sestává z celé části integ, rozsah <0; 9>, a desetinné části decim, rozsah <0; 99>, vyjadřující setiny vstupního parametru. Mezivýsledek po započtení příslušného počtu členů je ukládán do proměnné fval. Dvě pomocné proměnné xpow a fact reprezentují čitatel a jmenovatel aktuálního členu. Tyto proměnné jsou zde záměrně zavedeny proto, aby mohl být snadno vypočítán další člen řady. Při pohledu na rovnici (4.1) je zřejmé, že čitatel xpow následujícího členu je roven čitateli předchozího členu násobeného proměnnou x, proto také zvolené jméno proměnné xpow. A u jmenovatele je to podobné, protože je zde aplikován faktoriál a ten je vždy pro následující člen dán pouhým vynásobením předchozího členu pořadím členu n (proměnná n). Využijte této nápovědy, kód algoritmu bude velmi jednoduchý a současně výkonný, např. jen proto, že už nemusíte pro člen s velkým n počítat celý faktoriál čísla n, který je časově velmi náročný. Podobně to platí i pro mocninu x v čitateli. Obr Příklad výstupů v konzolovém okně pro výpočet exponenciální funkce z příkladu A.

16 16 FEKT VUT v Brně Hodnocení: 1,5 bodu. Úloha B. Zadáno cvičícím na začátku cvičení. Hodnocení: 1,5 bodu. Bonusová úloha Tímto příkladem si ukážeme, že C-čko nemusí být nuda ani v konzolové aplikaci, budete totiž tvořit vaši zřejmě první hru. Ve zdrojovém kódu programu k příkladu bpc1e_c4bon.c je prakticky vše připraveno, na vás je dopsat jediný řádek označený přemi tečkami. Cílem je naprogramovat klasickou hru, kdy se snažíte vrhem nebo střelou zasáhnout cíl. Jádrem je klasická úloha pohybové rovnice pro šikmý vrh a tu musíte naprogramovat. V programu jsou pro vás stěžejní proměnné ele (definuje elevační úhel hodu ve stupních) a vel (definuje počáteční rychlost v m/s). Vaším úkolem je ve smyčce for pro vstupní polohovou proměnnou x (vodorovná osa, resp. vzdálenost od počátku odkud je hod prováděn) sestavit rovnici, která vypočte hodnotu polohové souřadnice y (výšku střely či kamene) pro daný elevační úhel a počáteční rychlost. Polohové souřadnice jsou definovány v metrech. Bez hlubšího odvození (je velmi primitivní a určitě jste se s ním setkali ve fyzice) platí: 1 2 v 2 y = x tgα g x (4.2) 0 1 cos α V rovnici se kromě elevačního úhlu α a počáteční rychlosti v 0 ještě vyskytuje tíhové zrychlení g. Pro tíhové zrychlení a ještě také konstantu π je do programu zavedena direktiva #define, která umožní pro určitou číselnou konstantu definovat její zástupné jméno. Kdykoli překladač narazí na takto definované zástupné jméno, nahradí je příslušnou číselnou hodnotou. Sestavením rovnice (4.2) v programu máte hru připravenou (pozor na typy proměnných). Po spuštění programu se vygeneruje náhodná poloha cíle a parametry elevace a počáteční rychlosti. Měnit hodnotu elevace můžete stiskem klávesy q o jeden stupeň nahoru, stiskem klávesy a o jeden stupeň dolu, pro počáteční rychlost mají obdobnou funkci klávesy w a s. Změnu o více než jeden stupeň nebo m/s zajistíte násobným stiskem příslušné klávesy. Potvrzení je nutné klávesou ENTER. Hod nebo střelba je zahájena stiskem c + ENTER. Program nabízí i jistou grafickou podívanou a končí zásahem cíle (viz obr. 4.2). 2 Kontrolní otázky 4.1) Proč se výsledek v příkladu A po přidání 34. členu již nemění a je rozdílný od výpočtu standardní funkcí exp()? 4.2) K čemu složí direktiva #define? 4.3) Jaké další matematické funkce lze počítat pomocí Taylorovy řady? Literatura [4.1] KERNIGHAN, B. W., RITCHIE, D. M. Programovací jazyk C. Brno: Computer Press, 2004.

17 Programování a počítače 1. Počítačová cvicení pro obor B-EST. 17 [4.2] HEROUT, P. Učebnice jazyka C. 1. díl. České Budějovice: KOOP nakladatelství, Obr Výstup z konzolové střílečky z bonusového příkladu. 5 Manipulace s řetězci v jazyku C Cílem je se seznámit se zpracováním řetězců v jazyce C a funkcemi standardní knihovny ANSI C pro manipulaci s řetězci string.h. Úloha A. V řetězcové proměnné text ve zdrojovém souboru bpc1e_c05a.c jsou uložena slova zvířat malými písmeny oddělená mezerou: int main(void) { char text[] = "cat dog hen duck swallow"; // to do return 0; // program returns 0 } Vytvořte program, který v konzolovém okně vypíše jednotlivě slova označující zvířata, každé na samostatném řádku s počátečním velkým písmenem. Program doplňte algoritmem, který spočte počet jednotlivých slov v proměnné text (pomocí počtu mezer, pozor za posledním slovem již mezera není). Dále program doplňte o algoritmus, který určí četnost jednopísmenných až desetipísmenných slov. Počty slov s daným počtem písmen vypište do

18 18 FEKT VUT v Brně konzolového okna a to jen v případě, že počet slov s daným počtem písmen bude nenulový (viz obr. 5.1.). Pro řešení programu nevyužívejte knihovních funkcí string.h. Pro výpis názvů zvířat na nový řádek a s velkým písmenem na začátku si stačí uvědomit, že jednotlivá slova odděluje mezera. Ve vhodném cyklu je tedy třeba kontrolovat každý znak vstupního řetězce a v případě mezery vložit na výstup nový řádek. S využitím pomocné celočíselné proměnné je výhodné počítat znaky jednotlivých názvů a v případě prvního znaku převést před tiskem na obrazovku první písmeno z malého na velké (stačí vědět, že ASCII kód stejného písmena anglické abecedy malého je o hodnotu 32 větší než stejného písmena velkého). Poslední úkol je trochu obtížnější, leč opět lze využít proměnné pro počítání znaků slova. Na konci slova, další znak je mezera, případně konec řetězce, tato proměnná obsahuje počet znaků daného slova. Pokud si deklarujeme pole celočíselných elementů, které v pořadí bude definovat počet slov s daným počtem znaků (odpovídá indexu pole), pak proměnná čítače znaků bude vlastně indexem pro element tohoto pole, který je nutné zvětšit o jedna, protože právě dočtené slovo má příslušný počet znaků. Nezapomeňte toto pole na začátku inicializovat (vynulovat všechny elementy pole vhodným cyklem). Hodnocení: 1,5 bodu. Úloha B. Zadáno cvičícím na začátku cvičení. Hodnocení: 1,5 bodu. Obr Tisk výstupů v konzolovém okně pro příklad 1.

19 Programování a počítače 1. Počítačová cvicení pro obor B-EST. 19 Bonusová úloha V řetězcových proměnných stext1 a stext2 ve zdrojovém souboru bpc1e_c05bon.c je zašifrována textová zpráva. Tuto zprávu dešifrujte jednotlivými níže uvedenými kroky (algoritmy) a zobrazte v konzolovém okně. Postup dešifrování je následující (je vhodné výsledky jednotlivých kroků zobrazovat v konzolovém okně): a. Spojte oba řetězce v jeden, stext1 je první. b. Všechna písmena Q nahraďte písmenem C a písmena T písmenem B. c. Posuňte hodnotu všech znaků zprávy o jedna výše, dle ASCII tabulky např. A bude po operaci B, M bude N atd. d. Všechny řetězce CC ve zprávě nahraďte řetězcem RM. Pro tuto operaci využijte knihovní funkce strstr() a strncpy() (viz přednáška 3). e. Rotujte všechny znaky zprávy (v tuto chvíli jen velká písmena) opačně ve smyslu abecedy, např. A bude po operaci Z, B bude Y atd. f. Nahraďte všechna velká písmena malými vyjma prvního znaku. g. Všechna písmena w nahraďte znakem (mezera) a písmena h znakem. (tečka). Výsledky procesu dešifrování jsou uvedeny na obr Obr Výsledky procesu dešifrování z bonusového příkladu. Kontrolní otázky 5.1) Popište, jak pracuje funkce strncpy() a jaké má parametry? 5.2) Co se stane, pokud ani jeden znak v deklarovaném prostoru pro řetězec není NULL? 5.3) Kolik bytů je vyhrazeno v paměti pro řetězec s následující deklarací char a[] = "Brno je super mesto";?

20 20 FEKT VUT v Brně Literatura [5.1] KERNIGHAN, B. W., RITCHIE, D. M. Programovací jazyk C. Brno: Computer Press, [5.2] HEROUT, P. Učebnice jazyka C. 1. díl. České Budějovice: KOOP nakladatelství, Statistické výpočty, aplikace cyklů Cílem cvičení je procvičit si práci s příkazy v jazyku C, především pak využití cyklů, a aplikovat je na běžné statistické výpočty. Úloha A. V této úloze si zkusíte naprogramovat některé typické algoritmy používané v programování a algoritmy pro základní statistické výpočty. Příklad vychází z dřívější úlohy (třetí cvičení), kde se zpracovávala tabulka teplot. V úvodní části zdrojového kódu k příkladu bpc1e_c06a.c je opět definována ve dvourozměrném poli temp tabulka průměrných měsíčních teplot naměřených ve 13:00 z nejmenované meteorologické stanice v ČR. Záznam teplot v tabulce definovaných byl prováděn od roku 1995, přičemž řádky v poli odpovídají jednotlivým rokům počínaje rokem 1995 a sloupce jednotlivým měsícům. V jednoduché tabulce vypište záznam teplot do konzolového okna (využijte řešení původní úlohy 3A): int main( void) { double temp[16][12]={-1.1, -0.3, }; int m, n, l; char mon[]="jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec"; int styear=1995; double avmon[12], stdmon[12]; float avtemp[3][12]; int mintmon[12], maxtmon[12]; float mint, maxt; printf("temperature table:\n\n\t "); n=0; while (mon[n]!='\0') { if (mon[n]==',') printf(" "); else printf("%c", mon[n]); n++; } printf("\n"); // to do

21 Programování a počítače 1. Počítačová cvicení pro obor B-EST. 21 } return 0; V předpřipraveném kódu je také k dispozici řetězec obsahující třípísmenné zkratky měsíců oddělené čárkami pro snadný výpis zkratek jednotlivých měsíců textově na obrazovku. Příklad je uveden v cyklu while. Doplňte program tak, aby v konzolovém okně byla vypsána také průměrná měsíční teplota (pro každý měsíc) v pětiletých obdobích počínaje rokem 1996 (tedy první průměr bude za roky ) a to ve vhodně řešených cyklech s vnořením (ne tři samostatné smyčky pro každé období). Dále program doplňte o algoritmus nalezení nejchladnějšího a nejteplejšího měsíce v celém měřeném období a výsledky vytiskněte v konzolovém okně. V programech aplikujte alespoň jednou všechny typy smyček for, while i do-while. Příklad výstupů tohoto úkolu v konzolovém okně je uveden na obrázku 6.1. Obr Zobrazení výsledků příkladu A v konzolovém okně. Pro výpočet směrodatné odchylky souboru hodnot X je výhodné využít výpočtově jednodušší vztah:

22 22 FEKT VUT v Brně ( X ) E( X ) N σ ( X ) = E i x N i= [ ] = x, (6.1) kde operátor E reprezentuje střední hodnotu nad příslušnou množinou. Při použití tohoto vztahu je potřeba v cyklu vypočítat střední hodnotu z druhých mocnin všech teplot (pro 16 roků příslušného měsíce) a od této hodnoty odečíst druhou mocninu vypočítané střední hodnoty pro příslušný měsíc. Výsledkem je statistický rozptyl. Směrodatná odchylka je pak druhou odmocninou rozptylu. Hodnocení: 1,5 bodu. Úloha B. Zadáno cvičícím na začátku cvičení. Hodnocení: 1,5 bodu. Bonusová úloha Vytvořte program, který pomocí algoritmu známém jako Eratosthenovo síto, vypíše všechna prvočísla do určité hodnoty (např. 1000). Algoritmus pracuje tak, že se postupně odebírají z pole čísel (rozsah čísel, kde prvočísla hledáme) všechny násobky čísel 2, 3, 4 až polovina maxima rozsahu. Pro řešení v jazyce C je výhodné si vytvořit pole znaků dané s počtem prvků odpovídajícím rozsahu množiny čísel, mezi nimiž hledáme prvočísla. Pak naplníme všechny prvky tohoto pole nějakým znakem např. P, který definuje, že dané číslo odpovídající indexu v poli znaků je prvočíslo. Následně ve vhodném cyklu aplikujeme Eratosthenovo síto, tedy počítáme násobky, a znaky na příslušných indexech (násobcích) nahradíme znakem N (není to prvočíslo). Po provedení algoritmu zůstanou prvočísla na pozicích (indexech) s původním znakem P. Na závěr pak stačí jen vypsat příslušné indexy pole znaků se znakem P. Příklad pro rozsah do 1000 je uveden na obrázku 6.2. Pro přehlednost doporučuji tisk se zarovnáním na jistý počet znaků. Obr Zobrazení prvočísel z bonusové úlohy v konzolovém okně. Kontrolní otázky 6.1) Jak by vypadala deklarace 3D matice celých čísel? 6.2) Přepište následující cyklus tak, aby využíval konstrukci cyklu while:

23 Programování a počítače 1. Počítačová cvicení pro obor B-EST. 23 int n; for(n = 1; n < 100; n+=2) printf("%d ", n); 6.3) Jaký je vztah mezi rozptylem a směrodatnou odchylkou? Literatura [6.1] KERNIGHAN, B. W., RITCHIE, D. M. Programovací jazyk C. Brno: Computer Press, [6.2] HEROUT, P. Učebnice jazyka C. 1. díl. České Budějovice: KOOP nakladatelství, Funkce, sestavení knihovny funkcí, volání funkcí Cílem cvičení je vyzkoušet si vytváření vlastních funkcí včetně zapouzdření do vlastní knihovny. Knihovna vlastních funkcí je pak aplikována v projektu C. Úloha A. Příklad opět vychází z úloh s tabulkou teplot. V úvodní části zdrojového kódu programu k příkladu bpc1e_c07a.c je definována ve dvourozměrném poli temp tabulka průměrných měsíčních teplot naměřených ve z nejmenované meteorologické stanice v ČR. Záznam teplot v tabulce definovaných byl prováděn od roku 1995, řádky v poli odpovídají jednotlivým rokům od roku 1995 a sloupce jednotlivým měsícům. V projektu je jako vzor sestavena tisková funkce, která umožňuje na nový řádek do konzolového okna vytisknout řádek se zkratkami měsíců (JAN,FEB atd.): void prn_mons(int tabs, int spaces) { char mon[]="jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec"; int m, n; printf("\n"); for(n=0; n<tabs; n++) printf("\t"); for(n=0; mon[n]!='\0'; n++) { if (mon[n]==',') for(m=0; m<spaces; m++) printf(" "); else printf("%c", mon[n]); } printf("\n");

24 24 FEKT VUT v Brně } Tato funkce bude užitečná pro různá zobrazení statistických výsledků v konzolovém okně. Její užitečnost je zvýšena přidáním dvou parametrů volaných hodnotou: počtem tabelátoru pro odsazení vlastního textu od počátku řádku a počtem mezer mezi zkratkami měsíců. Funkce je již připravena, v těle je řetězec mon[] obsahující zkratky pro tisk měsíců, které jsou oddělené čárkou. Sestavte rovněž jednoduchou tiskovou funkci, která se bude určitě dále hodit a vytiskne jen jednu zkratku jednoho měsíce podle vstupního parametru (např. prn_mon(1) vytiskne JAN atd.). V jednoduché tabulce vypište záznam teplot do konzolového okna (opět využijte řešení dřívějších úloh) s aplikací vámi vytvořené funkce pro tisk řádku měsíců. Definujte vlastní typ t_temp jako matici 16x12 hodnot typu double tak, aby mohl být použit jako vstupní typ vstupního parametru funkce. K tomuto typu rovněž upravte deklaraci matice teplot temp. Sestavte dvě funkce mean_col a k ní duální mean_row, které vrací střední hodnotu vektoru vybraného sloupce (duálně řádku) z proměnné typu t_temp a od požadovaného řádku (duálně sloupce) do požadovaného řádku (duálně sloupce). Obr Příklad zobrazení výsledků příkladu A v konzolovém okně.

25 Programování a počítače 1. Počítačová cvicení pro obor B-EST. 25 Tzn., že tyto funkce budou mít čtyři vstupní parametry a mohou být použity pro výpočty středních hodnot např. v pětiletých obdobích (pro každý měsíc), tak jak bylo řešeno na předchozím cvičení, nebo např. pro výpočet průměrných teplot v kvartálech roku pro funkci mean_row. Hlavička funkce pro průměr ve sloupci může například vypadat následovně: double mean_col(t_temp t, int col, int i_row, int e_row) Pak volání funkce mean_col(temp, l, 5, 8) bude znamenat výpočet průměru teplot z tabulky temp a to pro první sloupec a pro teploty od 5. do 8. řádku v tomto prvním sloupci. Sestavené funkce využijte v hlavním programu (např. pětiletky i kvartály v jednotlivých letech). Sestavené funkce ověřte v hlavním programu. Posledním bodem tohoto úkolu je zapouzdření všech funkcí do vlastní knihovny. Příklad výstupů z aplikací je uveden na obrázku 7.1. Hodnocení: 1,5 bodu. Úloha B. Zadáno cvičícím na začátku cvičení. Hodnocení: 1,5 bodu. Bonusová úloha Cílem tohoto příkladu je sestavení knihovny funkcí pro základní operace nad komplexními čísly. Sestavte čtyři funkce: pro součet, pro rozdíl, pro násobení a pro dělení dvou komplexních čísel typu double. Vzhledem k tomu, že výsledkem bude opět komplexní číslo o dvou složkách (reálná část a imaginární část) a u funkcí může být pouze jedna návratová hodnota, je nutno použít volání parametrů odkazem pro výstup výsledku z funkce. Příklad hlavičky funkce pro součet dvou komplexních čísel může vypadat následovně: void cadd(double *r_re, double *r_im, double x_re, double x_im, double y_re, double y_im) Vstupními parametry jsou x_re, x_im pro složky prvního komplexního čísla a y_re, y_im pro složky druhého komplexního čísla. Tyto parametry jsou volány hodnotou. Výstupem jsou pak ukazatele r_re a r_im na paměťová místa typu double, do kterých se ukládá výsledek operace (opět reálná a imaginární část). Sestavte všechny čtyři funkce pro operace nad komplexními čísly a zapouzdřete je do vlastní knihovny s vhodným názvem, např. complexmath.h. V další fázi sestavte jednoduchou konzolovou aplikaci, ve které se načtou jednotlivé hodnoty složek komplexních čísel. Následně se načte operand jako znak + pro součet, - pro rozdíl, * pro násobení a / pro dělení a pomocí přepínače switch-case se zavolá příslušná funkce z vaší knihovny pro komplexní operace, kterou přilinkujte k aplikaci. Výsledek vhodně vytiskněte do konzolového okna. Po výpočtu a tisku výsledku načtěte znak z klávesnice, který umožní ukončení aplikace, např. je-li tento znak y jako yes, nebo

26 FEKT VUT v Brně 26 pokračování v dalším načtení vstupních komplexních čísel a provedení vybrané operace nad nimi. Příklad výstupů výsledků na konzolu je uveden na obrázku 7.2. Obr Zobrazení výsledků bolusového příkladu v konzolovém okně. Kontrolní otázky 7.1) Jaký je rozdíl při přidávání knihoven do projektu direktivou #include v případě jména souboru ve špičatých závorkách <filename> a v případě jména souboru v uvozovkách "filename"? 7.2) Proč je nutné u funkcí pro výpočty s komplexními čísly nutné použít předávání výsledku odkazem? 7.3) Co nastane, pokud je jako vstupní parametr funkce typ int a přesto se bude této funkci předávat parametr typu float?

27 Programování a počítače 1. Počítačová cvicení pro obor B-EST. 27 Literatura [7.1] KERNIGHAN, B. W., RITCHIE, D. M. Programovací jazyk C. Brno: Computer Press, [7.2] HEROUT, P. Učebnice jazyka C. 1. díl. České Budějovice: KOOP nakladatelství, Struktury a dynamické proměnné Cílem cvičení je sestavit aplikaci, která bude používat vhodnou strukturu popisující daný objekt požadovanými parametry. Navazujícím cílem je deklarovat tuto strukturu jako dynamickou proměnnou a procvičit si práci s dynamickými proměnnými v jazyku C. Úloha A. Cílem tohoto příkladu je sestavit projekt pro jednoduchou správu autobazaru. Projekt k příkladu A se skládá ze zdrojového souboru bpc1e_c08a.c, kde se nachází funkce main(): #include <stdio.h> #include <bazar.h> int main(void) { T_car *bazar[200]; // ptrs. to cars int cnt=0; // number of recorded cars int lprice, hprice; char cmd; cnt = ini_bazar(bazar, cnt); printf("\n\ninsert command: 'q' = quit "); scanf("%c", &cmd); fflush(stdin); while (cmd!= 'q') // if not quit { switch (cmd) { case 'p': print_bazar(bazar, cnt); break; //case 'a': call function for adding a new car case 's': { printf("\nselect low limit of price:"); scanf("%d", &lprice); fflush(stdin); printf("\nselect high limit of price:"); scanf("%d", &hprice); fflush(stdin); } } printf("\n\ninsert command: 'q' = quit, "); scanf("%c", &cmd); fflush(stdin); }; // call function for deleting of all recods

28 28 FEKT VUT v Brně } return 0; a knihovny pro funkce spojené se správou autobazaru s hlavičkovým souborem bazar.h: typedef struct car // car record { char type[20]; // type of car char color[10]; // color of car char mot; // kind of the motor B = benzin, D = diesel int vol; // motor volume in cubic cm int year; // year of production int price; // price } T_car; int ini_bazar(t_car **rec, int num); // bazar initialization void print_record(t_car *prcar); // printing car paramaters void print_bazar(t_car **rec, int num); // printing all cars // insert function header for deleting of all records (cars) // insert function header for printing of bazar content with - // defined range of price // insert function header for adding of new car a zdrojovým souborem bazar.c: #include <bazar.h> int ini_bazar(t_car **rec, int num) { T_car *new_car; } new_car = (T_car*)malloc(sizeof(T_car)); strcpy(new_car->type, "Skoda_Felicia"); strcpy(new_car->color, "Blue"); new_car->mot = 'D'; new_car->vol = 1400; new_car->year = 2003; new_car->price = 75000; rec[num++] = new_car; // and other cars return num; void print_record(t_car *prcar) { printf("\n%s\t %s", prcar->type, prcar->color); if(prcar->mot=='d') printf("\t diesel"); else if(prcar->mot=='b') printf("\t beznin");

29 Programování a počítače 1. Počítačová cvicení pro obor B-EST. 29 } printf("\t %4d ccm\t year %d\t price %6d CZK", prcar->vol, prcar->year, prcar->price); void print_bazar(t_car **rec, int num) { int n; } for(n=0; n<num; n++) print_record(rec[n]); // insert function for deleting of all cars // insert function for printing of all cars from given price // range // insert function for adding a new car Vložte předpřipravené kódy do vašeho projektu. V hlavičkovém souboru je uvedena kompletní definice vlastního typu struktury T_car, položky jsou popsány v poznámkách. Ve vlastní knihovně bazar máte rovněž připraveny kompletní a plně funkční funkce pro inicializaci databáze autobazaru ini_bazar( ), která naplní pole záznamů několika vozy tak, abyste nemuseli při každém spuštění plnit databázi ručně. Dále pak obsahuje funkci pro tisk položek jednoho záznamu do jednoho řádku print_record( ), vstupním parametrem je ukazatel na záznam, který má být tisknut. Poslední připravenou funkcí je print_bazar( ) pro tisk všech záznamů (aut) v autobazaru. Ve funkci main() je inicializováno pole ukazatelů na záznam *bazar[200], tedy na 200 záznamů. Do tohoto pole se vkládají ukazatele (adresy) na jednotlivé záznamy, způsob je zřejmý z funkce ini_bazar( ). Důležitá je rovněž proměnná cnt, ve které je uložen počet naplněných záznamů. Všimněte si, že například ve funkci print_bazar( ) je parametrem ukazatel na ukazatel, protože potřebuji znát ukazatel na pole, musím to provést tímto způsobem. Vašim úkolem je doplnit program o funkce pro přidání nového záznamu auta, výpis aut v bazaru pro zadaný rozsah cen a funkci, která před ukončením programu vymaže všechny dynamický vytvořené záznamy. Ve funkci main() je již vytvořeno jednoduché ovládací prostředí pomocí zadávání příkazů z klávesnice. Ukázka činnosti programu je na obrázku 8.1. Hodnocení: 1,5 bodu. Úloha B. Zadáno cvičícím na začátku cvičení. Hodnocení: 1,5 bodu.

30 30 FEKT VUT v Brně Obr Příklad zobrazení výsledků příkladu A) v konzolovém okně. Bonusová úloha Vytvořte program, který v konzolovém okně umožní hodnocení dvoukolového mezinárodního závodu ve skocích na lyžích. Vytvořte vlastní datový typ struktury (nebo využijte přiložený zdrojový kód), který bude obsahovat jméno závodníka, třímístný kód země, celkové dosažené body a aktuální pořadí a dvě vnitřní struktury s hodnocením jednotlivých skoků v prvním a druhém kole (délka skoku + bodové hodnocení 5 rozhodčích). Bodování je zřejmé z následujících pravidel: Hodnocení se vytváří na základě součtu dvou údajů: bodů za délku skoku a za stylové provedení: a) body za délku skoku: každý závodník obdrží automaticky 60 bodů (výjimkou jsou mamutí můstky - K170 a více, u nichž se uděluje 120 bodů). V závislosti na dosažení tzv.

31 Programování a počítače 1. Počítačová cvicení pro obor B-EST. 31 konstrukčního bodu můstku (např. 120 metrů u můstků K120) získává (nebo ztrácí) další body. Za každý metr navíc/méně získá/ztrácí určité množství bodů závislé na typu můstku: K60 - K69: K70 - K79: K80 - K99: K100 - K169: K170 a více: 2,4 bodu za metr 2,2 bodu za metr 2,0 bodu za metr 1,8 bodu za metr 1,2 bodu za metr (velikost můstku je proměnná zadaná na začátku po spuštění programu) b) body za stylové hodnocení: Každý z pěti porotců udělí skokanovi známku do 20 bodů s rozlišením po 0,5 bodech. Nejvyšší a nejnižší hodnota ze všech pěti známek se škrtá. Platné jsou tedy pouze tři známky a maximální zisk je 60 bodů. Stylové chyby skokana musí porotce promítnout do svého hodnocení. Jednotlivé záznamy budou generovány jako dynamické proměnné, na které bude nastaven ukazatel v poli ukazatelů na jednotlivé záznamy s počtem maximálně 30. Počet záznamů udržujte ve vhodné globální proměnné. Sestavte funkce pro vložení závodníka a dále funkce pro hodnocení skoku a výpis výsledků. Pro jednoduchost v prvním i druhém kole startují závodníci podle pořadí, ve kterém byly jejich záznamy dynamicky přidány. Po každém skoku bude vypsáno aktuální pořadí a na žádost i tabulka výsledků (pořadí od nejlepšího k nejhoršímu). Na závěr každého kola bude tabulka výsledků vypsána automaticky. V maximální míře využívejte funkce. Příklad výpisů konzolového okna je uveden na obrázku 8.2. Kritickou částí je generování aktuálního pořadí. Doporučuji vytvořit funkci, kterou zavoláte po každém skoku a v níž se vyhodnotí pořadí podle bodů. Tak stačí porovnat jen aktuální záznam s předešlými výsledky a vhodným způsobem jej zařadit. Příklad řešení struktury je v přiloženém zdrojovém kódu bpc1e_c08bon.c: typedef struct jump // structure for jump and evaluation { float length; // length of jump in meters float points[5]; // evaluation by refs } t_jump; typedef struct competitor // structure for competitor { char name[20]; // name char country[4]; // three-letter code of country floa points; // sum of points int order; // order t_jump round_1; // jump and eval. in the 1st round t_jump round_2; // jump and eval. in the 2nd round } t_competitor; t_competitor *comp[30]; // global array of pointers // to competitor records int cnt=0; // global number of records

32 FEKT VUT v Brně 32 Obr Příklad výstupů v konzolovém okně pro bonusový úkol včetně finálního vyhodnocení. Kontrolní otázky 8.1) Jak velký prostor bude v paměti vyhrazený v případě deklarace proměnné typu T_car z příkladu A? 8.2) Co deklaruje následující konstrukce: int **x? 8.3) Jak se projeví při tisku znak \t v řetězci funkce printf()?

33 Programování a počítače 1. Počítačová cvicení pro obor B-EST. 33 Literatura [8.1] KERNIGHAN, B. W., RITCHIE, D. M. Programovací jazyk C. Brno: Computer Press, [8.2] HEROUT, P. Učebnice jazyka C. 1. díl. České Budějovice: KOOP nakladatelství, [8.3] HEROUT, P. Učebnice jazyka C. 2. díl. České Budějovice: KOOP nakladatelství, Programy pro manipulaci se soubory Cílem cvičení je seznámit se s manipulací se soubory, programováním načítání a ukládání dat do souboru a navázáním na dynamickou databázi. Úloha A. Cílem tohoto příkladu je doplnit projekt pro jednoduchou správu autobazaru z projektu bpc1e_c08a. V předpřipraveném projektu bpc1e_c09a jsou hotové a plně funkční úkoly z projektu předchozího. V hlavním adresáři projektu je umístěn soubor bazar.txt, který obsahuje záznamy jednotlivých aut, každá položka na novém řádku: 14 Skoda Felicia Blue D Skoda Felicia Red D Alfa Romeo 156 Black Číselný údaj na prvním řádku odpovídá počtu záznamů v souboru. Sestavte funkci, kterou nahradíte inicializaci databáze z předchozího projektu a která načte záznamy aut ze souboru bazar.txt a uloží je do dynamicky vytvářených záznamů. Pro načítání řetězců ze souboru, které se mohou skládat z několika slov, použijte funkci fgets(). Pozor tato funkce uloží do cílového řetězce i poslední znak \n (nový řádek), ten je třeba nahradit znakem \0, například sestavením jednoduché korekční funkce. Druhým úkolem je sestavit funkci, která při ukončení programu uloží všechny záznamy automobilů (i nově přidaných) do souboru bazar.txt. Algoritmus ukládání můžete vložit do funkce pro uvolňování záznamů z paměti. Výstup je pochopitelně shodný s obrázkem 8.1. Pro specifikaci souboru je nutné použít ukazatel na speciální typ FILE, který je předdefinován v knihovně stdio.h. Soubor

34 34 FEKT VUT v Brně je nejprve otevřít pomocí funkce fopen() a získat právě tento ukazatel na soubor, parametrem je jméno, případně i celá cesta, souboru a atribut, pro čtení je to řetězec "r", pro zápis do nového souboru pak řetězec "w". Další možné atributy byly diskutovány na přednáškách. Pro čtení specifických dat ze souboru je možné použít funkci fscanf(), která je obdobou funkce scanf(), jen místo čtení ze vstupu (klávesnice) je třeba specifikovat soubor ukazatelem typu FILE. Na závěr práce se souborem je třeba soubor korektně uzavřít funkcí fclose(). Níže je uveden příklad otevření souboru file.txt a přečtení jednoho celého čísla z tohoto souboru a uložení do proměnné x: FILE *ptrf; int x; ptrf = fopen("file.txt","r"); if(ptrf!= NULL) fscanf(ptrf, "%d", &x); fclose(ptrf); Hodnocení: 1,5 bodu. Úloha B. Zadáno cvičícím na začátku cvičení. Hodnocení: 1,5 bodu. Bonusová úloha K bonusovému projektu z předchozího cvičení doplňte funkci, která výsledky dvoukolového závodu ve skoku na lyžích uloží do textového souboru, příklad je uveden v souboru Results.txt. Kontrolní otázky 9.1) Co se stane v případě, že již existuje soubor se stejným názvem a použijeme pro otevření souboru funkci fopen() s atributem "w"? 9.2) Proč je v ukázkovém příkladu použit ve funkci fscanf() u x použit symbol & a co znamená? 9.3) Proč je atribut ve funkci fopen() definován jako řetězec? Literatura [9.1] KERNIGHAN, B. W., RITCHIE, D. M. Programovací jazyk C. Brno: Computer Press, [9.2] HEROUT, P. Učebnice jazyka C. 1. díl. České Budějovice: KOOP nakladatelství, [9.3] HEROUT, P. Učebnice jazyka C. 2. díl. České Budějovice: KOOP nakladatelství, 2008.

Struktury a dynamické proměnné

Struktury a dynamické proměnné BPC1E počítačové cvičení 9 Struktury a dynamické proměnné Cílem cvičení je sestavit aplikaci, která bude používat vhodnou strukturu popisující daný objekt požadovanými parametry. Navazujícím cílem je deklarovat

Více

Informační systémy VUT, studentské účty, Moodle, Gigadisk, elektronická pošta a její služby, operační systémy, UNIX

Informační systémy VUT, studentské účty, Moodle, Gigadisk, elektronická pošta a její služby, operační systémy, UNIX BPC1E počítačové cvičení 1 Informační systémy VUT, studentské účty, Moodle, Gigadisk, elektronická pošta a její služby, operační systémy, UNIX Cílem je seznámit se informačními systémy, které jsou provozovány

Více

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek 8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek 1/41 Základní příkazy Všechny příkazy se píšou malými písmeny! Za většinou příkazů musí být středník (;)! 2/41 Základní příkazy

Více

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: 1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.

Více

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: 1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.

Více

Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole

Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole Příkaz switch Příkaz switch provede příslušnou skupinu příkazů na základě hodnoty proměnné (celočíselné

Více

9.3.2010 Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h>

9.3.2010 Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h> 9.3.2010 Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include int main(void) { int dcislo, kolikbcislic = 0, mezivysledek = 0, i; int vysledek[1000]; printf("zadejte

Více

- jak udělat konstantu long int: L long velka = 78L;

- jak udělat konstantu long int: L long velka = 78L; Konstanty (konstatní hodnoty) Např.: - desítkové: 25, 45, 567, 45.678 - osmičkové: 045, 023, 03 vždy začínají 0 - šestnáctkové: 0x12, 0xF2, 0Xcd, 0xff, 0xFF - jak udělat konstantu long int: 245566553L

Více

Operační systémy. Cvičení 3: Programování v C pod Unixem

Operační systémy. Cvičení 3: Programování v C pod Unixem Operační systémy Cvičení 3: Programování v C pod Unixem 1 Obsah cvičení Editace zdrojového kódu Překlad zdrojového kódu Základní datové typy, struktura, ukazatel, pole Načtení vstupních dat Poznámka: uvedené

Více

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu: Č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

Více

ZÁPOČTOVÝ TEST. Zpracoval Vilém Závodný, http://narrow.ic.cz. #include "stdafx.h" #include "stdio.h"

ZÁPOČTOVÝ TEST. Zpracoval Vilém Závodný, http://narrow.ic.cz. #include stdafx.h #include stdio.h BPC2 ZÁPOČTOVÝ TEST PROSÍM ČTĚTE!!!! Příklady jsou zpracovány tak aby bylo možné je odzkoušet v programu Microsoft Visual C++ jako konzolovou aplikaci. Všechny příklady jsou 100% funkční. V červeném rámečku

Více

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632

Více

Základy jazyka C. Základy programování 1 Martin Kauer (Tomáš Kühr)

Základy jazyka C. Základy programování 1 Martin Kauer (Tomáš Kühr) Základy jazyka C Základy programování 1 Martin Kauer (Tomáš Kühr) Organizační záležitosti Konzultace Pracovna 5.076 Úterý 15:00 16:30 Emailem martin.kauer@upol.cz Web předmětu http://tux.inf.upol.cz/~kauer/index.php?content=var&class=zp1

Více

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15 Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15 KAPITOLA 1 Úvod do programo vání v jazyce C++ 17 Základní pojmy 17 Proměnné a konstanty 18 Typy příkazů 18 IDE integrované vývojové

Více

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií 1 Fakulta elektrotechniky a informatiky Katedra softwarových technologií 12. října 2009 Organizace výuky Přednášky Teoretické základy dle normy jazyka C Cvičení Praktické úlohy odpřednášené látky Prostřední

Více

Programování v jazyce C pro chemiky (C2160) 4. Textové řetězce, zápis dat do souboru

Programování v jazyce C pro chemiky (C2160) 4. Textové řetězce, zápis dat do souboru Programování v jazyce C pro chemiky (C2160) 4. Textové řetězce, zápis dat do souboru Textové řetězce V jazyce C neexistuje typ proměnné, který by byl určen výhradně pro ukládání textu V jazyce C používáme

Více

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu } 5. Operátor čárka, - slouží k jistému určení pořadí vykonání dvou příkazů - oddělím-li čárkou dva příkazy, je jisté, že ten první bude vykonán dříve než příkaz druhý. Např.: i = 5; j = 8; - po překladu

Více

2 Datové typy v jazyce C

2 Datové typy v jazyce C 1 Procedurální programování a strukturované programování Charakteristické pro procedurální programování je organizace programu, který řeší daný problém, do bloků (procedur, funkcí, subrutin). Původně jednolitý,

Více

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Maturitní otázky z předmětu PROGRAMOVÁNÍ Wichterlovo gymnázium, Ostrava-Poruba, příspěvková organizace Maturitní otázky z předmětu PROGRAMOVÁNÍ 1. Algoritmus a jeho vlastnosti algoritmus a jeho vlastnosti, formy zápisu algoritmu ověřování správnosti

Více

Vstupní požadavky, doporučení a metodické pokyny

Vstupní požadavky, doporučení a metodické pokyny Název modulu: Základy PHP Označení: C9 Stručná charakteristika modulu Modul je orientován na tvorbu dynamických stánek aktualizovaných podle kontextu volání. Jazyk PHP umožňuje velmi jednoduchým způsobem

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Typy Základní (primitivní) datové typy Deklarace Verze pro akademický rok 2012/2013 1 Typy v jazyce Java Základní datové typy (primitivní datové typy) Celočíselné byte, short,

Více

Pole a Funkce. Úvod do programování 1 Tomáš Kühr

Pole a Funkce. Úvod do programování 1 Tomáš Kühr Pole a Funkce Úvod do programování 1 Tomáš Kühr (Jednorozměrné) pole u Datová struktura u Lineární u Homogenní = prvky stejného datového typu u Statická = předem určený počet prvků u Pole umožňuje pohodlně

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Strukturované proměnné Struktura, union Jazyk C České vysoké učení technické Fakulta elektrotechnická A8B14ADP Jazyk C - Strukturované proměnné Ver.1.10 J. Zděnek 20151 Struktura

Více

Stručný návod k programu Octave

Stručný návod k programu Octave Stručný návod k programu Octave Octave je interaktivní program vhodný pro technické výpočty. Je nápadně podobný programu MATLAB, na rozdíl od něho je zcela zadarmo. Jeho domovská vebová stránka je http://www.octave.org/,

Více

Operační systémy. Cvičení 4: Programování v C pod Unixem

Operační systémy. Cvičení 4: Programování v C pod Unixem Operační systémy Cvičení 4: Programování v C pod Unixem 1 Obsah cvičení Řídící struktury Funkce Dynamická alokace paměti Ladění programu Kde najít další informace Poznámka: uvedené příklady jsou dostupné

Více

Základy programování (IZP)

Základy programování (IZP) Základy programování (IZP) Druhé počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Petr Veigend, iveigend@fit.vutbr.cz Verze

Více

VISUAL BASIC. Práce se soubory

VISUAL BASIC. Práce se soubory VISUAL BASIC Práce se soubory Práce se soubory 1/2 2 Vstupní data pro programy bývají uloženy do souborů Vstupy pro výpočet, nastavení vzhledu aplikace Výsledky práce programu je potřeba uchovat uložit

Více

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech 7 Formátovaný výstup, třídy, objekty, pole, chyby v programech Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost formátovanému výstupu,

Více

Formátové specifikace formátovací řetězce

Formátové specifikace formátovací řetězce 27.2.2007 Formátové specifikace formátovací řetězce - je to posloupnost podle které překladač pozná jaký formát má výstup mít - posloupnosti začínají znakem % a určující formát vstupu/výstupu - pokud chcete

Více

Úvod do programování. Lekce 1

Úvod do programování. Lekce 1 Úvod do programování Lekce 1 Základní pojmy vytvoření spustitelného kódu editor - psaní zdrojových souborů preprocesor - zpracování zdrojových souborů (vypuštění komentářů atd.) kompilátor (compiler) -

Více

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632

Více

IUJCE 07/08 Přednáška č. 1

IUJCE 07/08 Přednáška č. 1 Úvod do předmětu Literatura Záznamy přednášek a vaše poznámky Harbison, S. P., Steele, G. L.: Referenční příručka jazyka C Herout, P.: Učebnice jazyka C Kernighan, B. W., Ritchie, D. M.: The C Programming

Více

3 KTE / ZPE Informační technologie

3 KTE / ZPE Informační technologie 3 KTE / ZPE Informační technologie Ing. Petr Kropík, Ph.D. email: pkropik@kte.zcu.cz tel.: +420 377 63 4639, +420 377 63 4606 (odd. informatiky) Katedra teoretické elektrotechniky FEL ZČU Plzeň Komentáře

Více

2 Základní funkce a operátory V této kapitole se seznámíme s použitím funkce printf, probereme základní operátory a uvedeme nejdůležitější funkce.

2 Základní funkce a operátory V této kapitole se seznámíme s použitím funkce printf, probereme základní operátory a uvedeme nejdůležitější funkce. Vážení zákazníci, dovolujeme si Vás upozornit, že na tuto ukázku knihy se vztahují autorská práva, tzv copyright To znamená, že ukázka má sloužit výhradnì pro osobní potøebu potenciálního kupujícího (aby

Více

Základy algoritmizace a programování

Základy algoritmizace a programování Základy algoritmizace a programování Přednáška 1 Olga Majlingová Katedra matematiky, ČVUT v Praze 19. září 2011 Obsah Úvodní informace 1 Úvodní informace 2 3 4 Doporučená literatura web: http://marian.fsik.cvut.cz/zapg

Více

ZPRO v "C" Ing. Vít Hanousek. verze 0.3

ZPRO v C Ing. Vít Hanousek. verze 0.3 verze 0.3 Hello World Nejjednoduší program ukazující vypsání textu. #include using namespace std; int main(void) { cout

Více

Formátová specifikace má tvar (některé sekce nemají smysl pro načítání) %

Formátová specifikace má tvar (některé sekce nemají smysl pro načítání) % vstup a výstup na konzolu - vstupním zařízením je klávesnice, výstupním monitor (přístup jako k sériovým zařízením) - spojení s konzolami je nastaveno automaticky na začátku programu - ke konzole je možné

Více

Začínáme vážně programovat. Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů

Začínáme vážně programovat. Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů Začínáme vážně programovat Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů Podmínky a cykly Dokončení stručného přehledu řídících struktur jazyka C. Složený příkaz, blok Pascalské

Více

Základy programování (IZP)

Základy programování (IZP) Základy programování (IZP) Páté počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Petr Veigend, iveigend@fit.vutbr.cz 5. týden

Více

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Číslo a název šablony Číslo didaktického materiálu Druh didaktického materiálu Autor Jazyk Téma sady didaktických materiálů Téma didaktického materiálu Vyučovací předmět Cílová skupina (ročník) Úroveň

Více

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI EVROPSKÝ SOCIÁLNÍ FOND Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI Úvod do PHP PHP Personal Home Page Hypertext Preprocessor jazyk na tvorbu dokumentů přípona: *.php skript je součást HTML stránky!

Více

Základy jazyka C. Základy programování 1 Tomáš Kühr

Základy jazyka C. Základy programování 1 Tomáš Kühr Základy jazyka C Základy programování 1 Tomáš Kühr Organizační záležitosti Konzultace Osobně v pracovně 5.043 Pondělí 15.00 16.00 Úterý 14.00 16.00 Čtvrtek 13.00 15.00 Pátek 9.30 11.30 Něco jde vyřešit

Více

24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1 24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE AUTOR DOKUMENTU: MGR. MARTINA SUKOVÁ DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 UČIVO: STUDIJNÍ OBOR: PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) INFORMAČNÍ TECHNOLOGIE

Více

ALGORITMIZACE A PROGRAMOVÁNÍ

ALGORITMIZACE A PROGRAMOVÁNÍ Metodický list č. 1 Algoritmus a jeho implementace počítačovým programem Základním cílem tohoto tematického celku je vysvětlení pojmů algoritmus a programová implementace algoritmu. Dále je cílem seznámení

Více

Základní datové typy, proměnné - deklarujeme předem - C je case sensitive rozlišuje malá a velká písmena v názvech proměnných a funkcí

Základní datové typy, proměnné - deklarujeme předem - C je case sensitive rozlišuje malá a velká písmena v názvech proměnných a funkcí 02 Jazyk C - je imperativní říkáme, co se má udělat, voláme příkazy - další imperativní jazyky: Pascal, Java, C/C++ apod. - na rozdíl od jazyků deklarativních např. Prolog, Haskell, Scheme, Lisp (funkcionální

Více

Lekce 6 IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ JAZYK C

Lekce 6 IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ JAZYK C Identifikační údaje školy Číslo projektu Název projektu Číslo a název šablony Autor Tematická oblast Číslo a název materiálu Anotace Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace

Více

Strukturu lze funkci předat: (pole[i])+j. switch(výraz) velikost ukazatele

Strukturu lze funkci předat: (pole[i])+j. switch(výraz) velikost ukazatele Strukturu lze funkci předat: hodnotou i pomocí ukazatele pouze pomocí ukazatele (reference na strukturu) pouze hodnotou (kopie struktury) (pole[i])+j adresa prvku na souřadnicích i, j adresa i-tého řádku

Více

Preprocesor. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016

Preprocesor. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016 Preprocesor Karel Richta a kol. katedra počítačů FEL ČVUT v Praze Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016 Programování v C++, A7B36PJC 4/2016, Lekce 9b https://cw.fel.cvut.cz/wiki/courses/a7b36pjc/start

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Výrazy Operátory Výrazy Verze pro akademický rok 2012/2013 1 Operace, operátory Unární jeden operand, operátor se zapisuje ve většině případů před operand, v některých případech

Více

Proměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty.

Proměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty. Proměnná Pojmenované místo v paměti sloužící pro uložení hodnoty. K pojmenování můžeme použít kombinace alfanumerických znaků, včetně diakritiky a podtržítka Rozlišují se velká malá písmena Název proměnné

Více

9. lekce Úvod do jazyka C 4. část Funkce, rekurze Editace, kompilace, spuštění Miroslav Jílek

9. lekce Úvod do jazyka C 4. část Funkce, rekurze Editace, kompilace, spuštění Miroslav Jílek 9. lekce Úvod do jazyka C 4. část Funkce, rekurze Editace, kompilace, spuštění Miroslav Jílek 1/24 Editační prostření Kód programu lze editovat v jakémkoli textovém editoru. 2/24 Editační prostření Kód

Více

Programování v jazyce C pro chemiky (C2160) 5. Čtení dat ze souboru

Programování v jazyce C pro chemiky (C2160) 5. Čtení dat ze souboru Programování v jazyce C pro chemiky (C2160) 5. Čtení dat ze souboru Čtení dat ze souboru FILE *f = NULL; char str[10] = ""; float a = 0.0, b = 0.0; Soubor otevíráme v režimu pro čtení "r" f = fopen("/home/martinp/testdata/test1.txt",

Více

Základy programování (IZP)

Základy programování (IZP) Základy programování (IZP) Osmé počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Petr Veigend, iveigend@fit.vutbr.cz 20.11.2017,

Více

Dotazy tvorba nových polí (vypočítané pole)

Dotazy tvorba nových polí (vypočítané pole) Téma 2.4 Dotazy tvorba nových polí (vypočítané pole) Pomocí dotazu lze také vytvářet nová pole, která mají vazbu na již existující pole v databázi. Vznikne tedy nový sloupec, který se počítá podle vzorce.

Více

Programování v C++ 1, 1. cvičení

Programování v C++ 1, 1. cvičení Programování v C++ 1, 1. cvičení opakování látky ze základů programování 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 Shrnutí procvičených

Více

1. Téma 03 - Rozhodování

1. Téma 03 - Rozhodování 1. Téma 03 - Rozhodování Cíl látky Seznámit se a prakticky si vyzkoušet zápis rozhodování v jazyce Java 1.1. Úvod Jednou z nejčastěji používanou konstrukcí při programování je rozhodování. Právě této problematice

Více

Zápis programu v jazyce C#

Zápis programu v jazyce C# Zápis programu v jazyce C# Základní syntaktická pravidla C# = case sensitive jazyk rozlišuje velikost písmen Tzv. bílé znaky (Enter, mezera, tab ) ve ZK překladač ignoruje každý příkaz končí ; oddělovač

Více

Koncepce (větších) programů. Základy programování 2 Tomáš Kühr

Koncepce (větších) programů. Základy programování 2 Tomáš Kühr Koncepce (větších) programů Základy programování 2 Tomáš Kühr Parametry a návratová hodnota main Již víme, že main je funkce A také tušíme, že je trochu jiná než ostatní funkce v programu Funkce main je

Více

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program Denotační sémantika programovacího jazyka doc. Dr. Ing. Miroslav Beneš katedra informatiky, A-1007 59 732 4213 Obsah přednášky Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup

Více

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016 ZPRO cvičení 2 Martin Flusser Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague October 17, 2016 Outline I 1 Outline 2 Proměnné 3 Proměnné - cvičení 4 Funkce 5 Funkce

Více

Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++

Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++ Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++ Třídy v C++ Třídy jsou uživatelsky definované typy podobné strukturám v C, kromě datových položek (proměnných) však mohou obsahovat i funkce

Více

HTML Hypertext Markup Language

HTML Hypertext Markup Language HTML Hypertext Markup Language je jazyk určený na publikování a distribuci dokumentů na Webu velmi jednoduchý jazyk používá ho mnoho uživatelů má výkonné prostředky (příkazy) k formátování dokumentů (různé

Více

2. cvičení z ZI1 - Excel

2. cvičení z ZI1 - Excel Doc.Ing. Vlastimil Jáneš... janes@fd.cvut.cz 2. cvičení z ZI1 - Excel O Excelu - organizace listů : 1 list : max. 65 536 řádků a 256 sloupců, tj. 16 777 216 buněk. Sloupce : A, B,.Z, AA, AB,. IU, IV (26

Více

Základy algoritmizace a programování

Základy algoritmizace a programování Základy algoritmizace a programování Přednáška 1 Olga Majlingová Katedra matematiky, ČVUT v Praze 21. září 2009 Obsah Úvodní informace 1 Úvodní informace 2 3 4 Organizace předmětu Přednášky 1. 5. Základní

Více

Programování v C++, 2. cvičení

Programování v C++, 2. cvičení Programování v C++, 2. cvičení 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 Operátory new a delete 2 3 Operátory new a delete minule

Více

Programovací jazyk Pascal

Programovací jazyk Pascal Programovací jazyk Pascal Syntaktická pravidla (syntaxe jazyka) přesná pravidla pro zápis příkazů Sémantická pravidla (sémantika jazyka) pravidla, která každému příkazu přiřadí přesný význam Všechny konstrukce

Více

Základy programování (IZP)

Základy programování (IZP) Základy programování (IZP) Druhé laboratorní cvičení Vysoké učení technické v Brně, Fakulta informačních technologií v Brně Božetěchova 2, 612 66 Brno Cvičící: Petr Veigend (iveigend@fit.vutbr.cz) Důležité

Více

Př. další použití pointerů

Př. další použití pointerů Př. další použití pointerů char *p_ch; int *p_i; p_ch = (char *) p_i; // konverze int * na char * 8 int i = 5; int *p_i; p_i = &i; POZOR!!!! scanf("%d", p_i); printf("%d", *p_i); Obecný pointer na cokoliv:

Více

Příklad: Součet náhodných čísel ve vektoru s počtem prvků, které zadá uživatel, pomocí sum() a pomocí cyklu for. Ověříme, že příliš výpisů na

Příklad: Součet náhodných čísel ve vektoru s počtem prvků, které zadá uživatel, pomocí sum() a pomocí cyklu for. Ověříme, že příliš výpisů na Příklad: Součet náhodných čísel ve vektoru s počtem prvků, které zadá uživatel, pomocí sum() a pomocí cyklu for. Ověříme, že příliš výpisů na obrazovku zpomaluje tím, že zobrazíme okno (proužek) o stavu

Více

Lekce 9 IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ JAZYK C

Lekce 9 IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ JAZYK C Identifikační údaje školy Číslo projektu Název projektu Číslo a název šablony Autor Tematická oblast Číslo a název materiálu Anotace Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace

Více

10 Práce s řetězci - pokračování

10 Práce s řetězci - pokračování 10 Práce s řetězci - pokračování Máme deklarováno: char retez[50]; - čtení z klávesnice: scanf("%s", retez); - čtení zadané počtu znaků z klávesnice scanf("%10s", retez); // přečti řetězec z klávesnice,max

Více

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7 Pascal Katedra aplikované kybernetiky Ing. Miroslav Vavroušek Verze 7 Proměnné Proměnná uchovává nějakou informaci potřebnou pro práci programu. Má ve svém oboru platnosti unikátní jméno. (Připadne, musí

Více

8 Třídy, objekty, metody, předávání argumentů metod

8 Třídy, objekty, metody, předávání argumentů metod 8 Třídy, objekty, metody, předávání argumentů metod Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost třídám a objektům, instančním

Více

Základy programování (IZP)

Základy programování (IZP) Základy programování (IZP) Čtvrté počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Petr Veigend, iveigend@fit.vutbr.cz 4.

Více

Opakování programování

Opakování programování Opakování programování HW návaznost - procesor sběrnice, instrukční sada, optimalizace rychlosti, datové typy, operace (matematické, logické, podmínky, skoky, podprogram ) - paměti a periferie - adresování

Více

- dělají se také pomocí #define - podobné (použitím) funkcím - předpřipravená jsou např. v ctype.h. - jak na vlastní makro:

- dělají se také pomocí #define - podobné (použitím) funkcím - předpřipravená jsou např. v ctype.h. - jak na vlastní makro: 21.4.2009 Makra - dělají se také pomocí #define - podobné (použitím) funkcím - předpřipravená jsou např. v ctype.h - jak na vlastní makro: #define je_velke(c) ((c) >= 'A' && (c)

Více

Lekce 01 Úvod do algoritmizace

Lekce 01 Úvod do algoritmizace Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů Lekce 01 Úvod do algoritmizace Tento projekt CZ.1.07/1.3.12/04.0006 je spolufinancován Evropským sociálním

Více

14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod. Základy programování (IZAPR) Přednáška 7 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 229, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky 7 Parametry metod, předávání

Více

PROGRAMOVÁNÍ V JAZYCE C V PŘÍKLADECH 11 Dynamické datové struktury 11.1 Spojové struktury... 11-1 11.2 Příklad PROG_11-01... 11-2 11.

PROGRAMOVÁNÍ V JAZYCE C V PŘÍKLADECH 11 Dynamické datové struktury 11.1 Spojové struktury... 11-1 11.2 Příklad PROG_11-01... 11-2 11. David Matoušek Programování v jazyce C v pøíkladech Praha 2011 David Matoušek Programování v jazyce C v pøíkladech Bez pøedchozího písemného svolení nakladatelství nesmí být kterákoli èást kopírována nebo

Více

DSL manuál. Ing. Jan Hranáč. 27. října 2010. V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v

DSL manuál. Ing. Jan Hranáč. 27. října 2010. V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v DSL manuál Ing. Jan Hranáč 27. října 2010 V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v současné době krátký) seznam vestavěných funkcí systému. 1 Vytvoření nového dobrodružství Nejprve

Více

Obsah. Začínáme programovat v Ruby on Rails 9. Úvod 11. 1. Vítejte v Ruby 15. O autorovi 9 Poděkování 9

Obsah. Začínáme programovat v Ruby on Rails 9. Úvod 11. 1. Vítejte v Ruby 15. O autorovi 9 Poděkování 9 Začínáme programovat v Ruby on Rails 9 O autorovi 9 Poděkování 9 Úvod 11 Komu je kniha určena 11 Jak je kniha uspořádána 11 Co ke knize potřebujete 12 Konvence 12 Zdrojový kód 13 Poznámka redakce českého

Více

Systém je citlivý na velikost písmen CASE SENSITIVE rozeznává malá velká písmena, např. PROM=1; PROm=1; PRom=1; Prom=1; prom=1; - 5 různých proměnných

Systém je citlivý na velikost písmen CASE SENSITIVE rozeznává malá velká písmena, např. PROM=1; PROm=1; PRom=1; Prom=1; prom=1; - 5 různých proměnných Systém je citlivý na velikost písmen CASE SENSITIVE rozeznává malá velká písmena, např. PROM=1; PROm=1; PRom=1; Prom=1; prom=1; - 5 různých proměnných jakési nádoby na hodnoty jsou různých typů při běžné

Více

Funkce, intuitivní chápání složitosti

Funkce, intuitivní chápání složitosti Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti Funkce, intuitivní

Více

1 Webový server, instalace PHP a MySQL 13

1 Webový server, instalace PHP a MySQL 13 Úvod 11 1 Webový server, instalace PHP a MySQL 13 Princip funkce webové aplikace 13 PHP 14 Principy tvorby a správy webového serveru a vývojářského počítače 14 Co je nezbytné k instalaci místního vývojářského

Více

Funkce pokročilé možnosti. Úvod do programování 2 Tomáš Kühr

Funkce pokročilé možnosti. Úvod do programování 2 Tomáš Kühr Funkce pokročilé možnosti Úvod do programování 2 Tomáš Kühr Funkce co už víme u Nebo alespoň máme vědět... J u Co je to funkce? u Co jsou to parametry funkce? u Co je to deklarace a definice funkce? K

Více

Tiskové sestavy. Zdroj záznamu pro tiskovou sestavu. Průvodce sestavou. Použití databází

Tiskové sestavy. Zdroj záznamu pro tiskovou sestavu. Průvodce sestavou. Použití databází Tiskové sestavy Tiskové sestavy se v aplikaci Access používají na finální tisk informací z databáze. Tisknout se dají všechny objekty, které jsme si vytvořili, ale tiskové sestavy slouží k tisku záznamů

Více

Pro označení disku se používají písmena velké abecedy, za nimiž následuje dvojtečka.

Pro označení disku se používají písmena velké abecedy, za nimiž následuje dvojtečka. 1 Disky, adresáře (složky) a soubory Disky Pro označení disku se používají písmena velké abecedy, za nimiž následuje dvojtečka. A:, B: C:, D:, E:, F: až Z: - označení disketových mechanik - ostatní disky

Více

Programování v C++ 3, 3. cvičení

Programování v C++ 3, 3. cvičení Programování v C++ 3, 3. cvičení úvod do objektově orientovaného programování 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled Dokončení spojového

Více

C2110 Operační systém UNIX a základy programování

C2110 Operační systém UNIX a základy programování C2110 Operační systém UNIX a základy programování 5. lekce Petr Kulhánek kulhanek@chemi.muni.cz Národní centrum pro výzkum biomolekul, Masarykova univerzita, Kotlářská 2, CZ-61137 Brno C2110 Operační systém

Více

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu 1 Podklady předmětu pro akademický rok 2006/2007 Radim Farana Obsah 2 Obsah předmětu, Požadavky kreditového systému, Datové typy jednoduché, složené, Programové struktury, Předávání dat. Obsah předmětu

Více

II. Úlohy na vložené cykly a podprogramy

II. Úlohy na vložené cykly a podprogramy II. Úlohy na vložené cykly a podprogramy Společné zadání pro příklady 1. - 10. začíná jednou ze dvou možností popisu vstupních dat. Je dána posloupnost (neboli řada) N reálných (resp. celočíselných) hodnot.

Více

Programovací jazyk C++ Hodina 1

Programovací jazyk C++ Hodina 1 Programovací jazyk C++ Hodina 1 Používané překladače Bloodshed Dev C++ http://www.bloodshed.net/devcpp.html CodeBlocks http://www.codeblocks.org pokud nemáte již nainstalovaný překladač, stáhněte si instalátor

Více

Popis ovládání. Po přihlášení do aplikace se objeví navigátor. Navigátor je stromově seřazen a slouží pro přístup ke všem oknům celé aplikace.

Popis ovládání. Po přihlášení do aplikace se objeví navigátor. Navigátor je stromově seřazen a slouží pro přístup ke všem oknům celé aplikace. Popis ovládání 1. Úvod Tento popis má za úkol seznámit uživatele se základními principy ovládání aplikace. Ovládání je možné pomocí myši, ale všechny činnosti jsou dosažitelné také pomocí klávesnice. 2.

Více

10 Algoritmizace Příklad 2 Word 2007/ VBA

10 Algoritmizace Příklad 2 Word 2007/ VBA TÉMA: Zápis algoritmu, cyklus se známým počtem opakování Prostředí aplikace Wordu je možné doplnit v rámci využití maker o automatizaci složitějších posloupností příkazů. Vedle záznamu makra je možno makra

Více

Jazyk C Program v jazyku C má následující strukturu: konstanty nebo proměnné musí Jednoduché datové typy: Strukturované datové typy Výrazy operátory

Jazyk C Program v jazyku C má následující strukturu: konstanty nebo proměnné musí Jednoduché datové typy: Strukturované datové typy Výrazy operátory Jazyk C Program v jazyku C má následující strukturu: Direktivy procesoru Globální definice (platné a známé v celém programu) Funkce Hlavička funkce Tělo funkce je uzavřeno mezi složené závorky { Lokální

Více

Algoritmy a datové struktury

Algoritmy a datové struktury Algoritmy a datové struktury 1 / 34 Obsah přednášky Základní řídící struktury posloupnost příkazů podmínka cyklus s podmínkou na začátku cyklus s podmínkou na konci cyklus s pevným počtem opakování Jednoduchá

Více

ČÁST 1. Základy 32bitového programování ve Windows

ČÁST 1. Základy 32bitového programování ve Windows Obsah Úvod 13 ČÁST 1 Základy 32bitového programování ve Windows Kapitola 1 Nástroje pro programování ve Windows 19 První program v Assembleru a jeho kompilace 19 Objektové soubory 23 Direktiva INVOKE 25

Více

PODPROGRAMY PROCEDURY A FUNKCE

PODPROGRAMY PROCEDURY A FUNKCE PODPROGRAMY PROCEDURY A FUNKCE Programy bez podprogramů Příklady: a) Napište program, který na obrazovku nakreslí čáru složenou ze znaků pomlčka. program Cara; b) Napište program, který na obrazovku nakreslí

Více

Struktury a dynamická paměť

Struktury a dynamická paměť Struktury a dynamická paměť Petyovský, Macho, Richter (bpc2a_cv12), ver. 2017.2 Definujte strukturu TVector pro dynamické pole dat typu double. Definujete strukturu TMatrix, která bude obsahovat dynamické

Více