Distanční opora předmětu: Programování v jazyce C Tématický blok č. 5: Řetězce, parametry programu Autor: RNDr. Jan Lánský, Ph.D.

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

Download "Distanční opora předmětu: Programování v jazyce C Tématický blok č. 5: Řetězce, parametry programu Autor: RNDr. Jan Lánský, Ph.D."

Transkript

1 Distanční opora předmětu: Programování v jazyce C Tématický blok č. 5: Řetězce, parametry programu Autor: RNDr. Jan Lánský, Ph.D. Obsah kapitoly 1 Řetězce 1.1 Deklarace a inicializace řetězcové proměnné 1.2 Knihovna string.h 1.3 Časté chyby 1.4 Funkce printf 2 Parametry programu předávané z příkazové řádky 2.1 Příklad: Vypsání parametrů programu na obrazovku 2.2 Příklad: Zpracování parametrů programu Studijní cíle Cíle nutné k zahájení studia dalšího tématického bloku Další cíle Znát klíčové pojmy tohoto tématického bloku (alespoň pasivní znalost je podmínkou pro studium dalších bloků). Podle slovního zadání umět napsat a odladit jednoduchý program. Program pracuje se vstupem získaným z parametrů, které byly programu předány z příkazové řádky při jeho zavolání. Schopnost pracovat s řetězci, zejména ovládat zjišťování délky, kopírování, spojování a porovnávání řetězců, přístup k jednotlivým znakům řetězce. Znalost funkcí z knihovny string.h Znalost funkce printf Čas potřebný ke studiu 2-4 hodiny na prostudování výukových textů + zodpovězení otázek k rekapitulaci 2-6 hodiny na vypracování modelových úloh na PC 1-3 hodiny na praktické zopakování učiva na PC ( v jiný den) 30 min - 1 hodina na (znovu)zodpovězení otázek k rekapitulaci (v jiný den) Časy jsou hodně individuální a jsou závislé na míře znalostí z předmětu Úvod do programování a Programování a případných programátorských zkušenostech z jiných jazyků.

2 Úvod V tomto bloku probereme následující témata. Vysvětlíme si, jak jsou reprezentovány řetězce v jazyku C Naučíme se deklarovat a inicializovat řetězcové proměnné Probereme funkce na zjišťování délky řetězců, kopírování a spojování řetězců, porovnávání řetězců a vyhledávání v řetězcích. Ukážeme si, jaké problémy mohou nastat při práci s řetězci a jak jim předcházet. Vysvětlíme si funkci printf, sloužící k vypisování formátovaného textu na standardní výstup. Vysvětlíme si jakým způsobem lze přistupovat k parametrům programu, které jsou mu při spuštění předány z příkazové řádky. Na dvou příkladech si ukážeme, jak lze tyto parametry zpracovávat. Výkladová část Vysvětlivky Červený text Porušením nebo opomenutím takto označených pravidel vznikají těžko odladitelné chyby (zejména pro začínající programátory). Modrý text Doporučení jak programovat v praxi. Často prevence závažných chyb. 1 Řetězce Jazyk C nemá speciální datový typ pro reprezentaci (textového) řetězce. Platí konvence, že řetězec je pole znaků ukončené znakem s hodnotou 0. Řetězec je datového typu char *. S touto konvencí pracují všechny knihovny. Je důležité rozlišovat znaky '0' a 0. Znaková konstanta '0' reprezentuje číslici 0 (tu uvidíme například při vytištění na obrazovku) a má hodnotu 48. Hodnota 0 se dá naopak reprezentovat znakovou konstantou '\0' a po jejím vytištění na obrazovku ji pravděpodobně uvidíme jako mezeru. Při jejím uložení do souboru a pří prohlížení tohoto souboru pomocí hexadecimálního editoru uvidíme černě vyplněný obdélník. Oproti jiným programovacím jazykům přináší tato konvence řadu omezení. Nelze například reprezentovat řetězec, který by obsahoval znak s hodnotou 0. Tento znak nelze rozlišit od konce řetězce a považoval by se proto automaticky za konec řetězce. Toto omezení není nijak zásadní, protože textové řetězce tento znak obvykle neobsahují. Na řetězce lze používat pouze ty samé operátory jako na obyčejné pole. Nejde použít operátor = pro přiřazení (okopírování) hodnoty jednoho řetězce do řetězce druhého. Rovněž nelze používat například operátor + pro spojování řetězců nebo operátory >, <, == pro porovnávání řetězců.. Pro všechny operace s řetězci se používají knihovní funkce. Na slajdu č.61 napravo nahoře vidíme jak je reprezentován řetězec "Ahoj". Přestože tento řetězec obsahuje pouze 4 znaky, kvůli koncové nule musí být uložen v poli o velikosti 5 znaků. K jednotlivým znakům řetězce lze přistupovat pomocí operátoru hranatých závorek.

3 Nalevo na oranžovém podkladu vidíme kus zdrojového kódu. V něm vytváříme pole znaků buffer o velikosti 4 a následně do něj pomocí funkce strcpy kopírujeme řetězec "Ahoj". Přestože příklad vypadá na první pohled správně, zapomněli jsme na koncovou nulu. Ta se nakopíruje za konec pole buffer a přepíše tak kus paměti, který mu nepatří. Správně mělo být pole buffer velikosti 5 znaků. Příklad je graficky znázorněn napravo. Důležité je umět rozlišovat mezi konstantou znakovou a konstantou řetězcovou. Pokud se ve zdrojovém kódu objeví symbol A, může se jednat například o název proměnné nebo funkce. Pokud bude symbol uzavřený v apostrofech 'A', jedná se o znakovou konstantu (typu char) reprezentující písmeno A. Pokud bude symbol uzavřený v uvozovkách "A", jedná se o řetězcovou konstantu (typu char *) reprezentující řetězec (pole délky dva znaky) obsahující písmeno A a koncovou nulu. Existuje i řetězcová konstanta pro prázdný řetězec "" (prázdné uvozovky). V paměti je prázdný řetězec reprezentovaný jako pole velikosti jeden znak, obsahující pouze koncovou nulu. Jedná se o řetězec, délky nula, neobsahující žádné znaky. Je rozdíl mezi prázdným řetězcem a nulovým řetězcem (nulovým ukazatelem na znak). Nulový řetězec nesmíme předat jako parametr funkcím pro práci s řetězci z knihovny string.h, protože by došlo k dereferenci nulového ukazatele a násilnému ukončení programu operačním systémem. Prázdný řetězec těmto funkcím smíme jako parametr předat. 1.1 Deklarace a inicializace řetězcové proměnné Při deklaraci řetězcové proměnné máme na výběr ze dvou možností. Řetězec můžeme deklarovat jako pole prvků typu char, pak bude mít pevně vyhrazený kus paměti. Druhá alternativa je deklarovat řetězec jako ukazatel na typ char, tato proměnná může ukazovat na různé řetězce. Ani při jednom ze způsobu deklarace řetězcové proměnné nemáme v této proměnné platnou hodnotu. Při deklaraci však můžeme řetězcovou proměnnou inicializovat hodnotou, řetězcovou konstantou. Na slajdu č. 62 vidíme dva řádky zdrojového kódu. Na prvním řádku deklarujeme proměnnou s1 jako pole znaků a inicializujeme jí hodnotou "Uno. Velikost pole se automaticky dopočítá jako 4 (tři znaky a koncová nula). Situace je graficky znázorněna na horním obrázku napravo. Na druhém řádku deklarujeme proměnou s2 jako ukazatel na znak a inicializujeme jí řetězcovou konstantou "Duo". Situace je graficky znázorněna na dolním obrázku napravo. Pokud by jsme vykonali příkaz s2++, ukazatel bude ukazovat místo 'D' na 'u' a bude reprezentovat řetězec "uo". U proměnné s1 bychom nemohli provést příkaz s1++, protože proměnná je typu pole. Proměnná s2 je navíc deklarována jako ukazatel na typ const char. Toto označení znamená, že hodnoty, ke kterým pomocí ukazatele přistoupíme, můžeme pouze číst, ale nesmíme je modifikovat, nelze provést například příkaz (*s2)++. V obou řádcích zdrojového kódu vidíme použití operátoru = pro inicializaci řetězce nějakou řetězcovou konstantou. Tuto inicializaci lze provést pouze při deklaraci proměnné. Kdekoliv dále ve zdrojovém kódu by se tento zápis vyhodnotil jako použití operátoru přiřazení. V případě proměnné s1, která je deklarovaná jako pole znaků, by se jednalo o syntaktickou chybu. U proměnné s2, která je typu ukazatel, je použití operátoru přiřazení povoleno, proměnná začne ukazovat na jiný kus paměti.

4 1.2 Knihovna string.h Ve hlavičkovém souboru string.h najdeme deklarace všech základních knihovních funkce pro práci s řetězci. Pokud chceme tyto funkce využívat, je nutné tento hlavičkový soubor do programu vložit pomocí direktivy #include<string.h>. My si v tomto studijním materiálu představíme jen několik nejdůležitějších funkcí, jejichž znalost je vyžadována k úspěšnému zvládnutí učiva tohoto tématického bloku. Funkce strlen slouží ke zjištění délky řetězce, který je funkci předán jako její parametr. Funkce má jeden parametr typu ukazatel na const char. Máme jistotu, že.funkce nemůže zmodifikovat hodnoty jednotlivých znaků v řetězci. Funkce strlen vrací délku řetězce, jako skutečný počet znaků, který tento řetězec obsahuje, ale koncová nula se do délky nepočítá. Na slajdu č. 63 vidíme kus zdrojového kódu, ve kterém deklarujeme pole znaků délky 8 a inicializujeme ho řetězcovou konstantou "Ahoj". Situace je graficky znázorněna na obrázku dole. V poli jsou obsazeny první čtyři znaky písmeny, pátý znak je koncová nula a pak následují tři znaky, které mají neinicializovanou hodnotu. Funkce strlen vrátí počet platných znaků řetězce, číslo 4. Na slajdu č. 64 vidíme sedm různých zdrojových kódů ukazujících, jak by funkce funkce strlen mohla být naprogramována. Princip je jednoduchý. Prochází se pole znaků od začátku do doby, než se narazí na koncovou nulu. Počet projitých prvků se počítá průběžně, nebo se zjistí odečtením adresy prvního a posledního platného prvku. Tento počet je vrácen jako výsledek. Funkce strcpy slouží k okopírování hodnoty jednoho řetězce (znak po znaku, včetně koncové nuly) do řetězce druhého. Funkce má dva parametry první z nich je typu ukazatel na char, druhý z nich je typu ukazatel na const char. Už ze samotných typů parametrů je jasné, že první parametr určuje cílovou adresu, kam se bude kopírovat hodnot provádět, a druhý parametr určuje adresu zdroje, jehož obsah se bude kopírovat. Návratovou hodnotou funkce je ukazatel na cílový řetězec, nicméně tato návratová hodnota nebývá obvykle využívána, protože je jí vlastně první parametr funkce. Na slajdu č. 65 vidíme kus zdrojového kódu. Na prvním řádku deklarujeme neinicializované pole buf velikosti 8 znaků. Na druhém řádku deklarujeme pole pozdrav inicializované řetězcovou konstantou "Ahoj". Na třetím řádku pomocí funkce strcpy okopírujeme řetězec uložený v poli pozdrav do pole buf. Situace je graficky znázorněna na obrázku dole. V poli buf po skončení tohoto zdrojového kódu budou v prvních čtyřech prvcích písmena, pátý prvek bude koncová nula a poslední tři prvky budou neinicializovány. Funkce strcat k cílovému řetězci připojí (nakopíruje za konec řetězce) zdrojový řetězec. Pořadí i typy parametrů, stejně jako návratová hodnota jsou shodné jako u funkce strcpy. Zatímco funkce strcpy cílový řetězec přepíše, funkce strcat z cílového řetězce přepíše pouze koncovou nulu, což je první pozice, kam se zdrojový řetězec začíná kopírovat. Zápis strcat(x,y) je ekvivalentní zápisu strcpy(x+strlen(x),y). V řetězcích lze i vyhledávat. Funkce strchr vyhledá v řetězci, který je jejím prvním parametrem, první výskyt znaku, který je jejím druhým parametrem. Návratovou hodnotou je ukazatel na tuto pozici v řetězci, nebo nulový ukazatel, pokud žádná taková pozice nebyla

5 nalezena. Funkce strstr hledá v řetězci, který je jejím prvním parametrem, první výskyt jiného řetězce, který je jejím druhým parametrem. Na slajdu č. 67 vidíme kus zdrojového kódu. Na prvním řádku deklarujeme pole znaků buf délky 10. Na druhém řádku deklarujeme ukazatel bp. Na třetím řádku pomocí funkce strcpy okopírujeme do pole buf řetězec "Ahoj". Na čtvrtém řádku pomocí funkce strcat na konec řetězce uloženého v poli buf připojíme řetězec "Babi". V poli buf se nyní nachází řetězec "AhojBabi". Na pátém řádku v řetězci uloženém v poli buf najdeme za pomocí funkce strstr první výskyt podřetězce "oj". Výsledkem je ukazatel na prvek s indexem 2 (třetí prvek) pole buf. Situace je znázorněna na obrázcích napravo slajdu. Pro porovnávání řetězců nelze používat operátory >, < a ==. Tyto operátory porovnají pouze adresy paměti, kde jsou tyto řetězce uloženy. Získané výsledky nevypovídají nic o jednotlivých řetězcích (obsahu paměti na daných adresách). Pro porovnávání řetězců existuje funkce strcmp, která má dva parametry typu ukazatel na const char. Funkce vrací návratovou hodnotu typu celé číslo. Pokud jsou řetězce, které byly funkci předány jako její parametry, shodné, funkce vrací hodnotu 0. Pokud je první parametr lexikograficky menší než druhý parametr, funkce vrací hodnotu -1. Pokud je první parametr lexikograficky větší než druhý parametr, funkce vrací hodnotu 1. Při lexikografickém porovnávání dvou řetězců s1 a s2 se postupně procházejí a porovnávají znaky na stejných pozicích těchto řetězců (s1[0] a s2[0], s1[1] a s2[1], atd ). Najde se nejmenší index i pro který platí s1[i]!= s2[i]. Pokud s1[i] < s2[i], potom řetězec s1 je lexikograficky menší než řetězec s2. Pokud s1[i] > s2[i], potom řetězec s1 je lexikograficky větší než řetězec s2. Výsledek celého lexikografického uspořádání je výsledkem porovnání první dvojice rozdílných znaků nebo hodnota 0, pokud oba řetězce jsou stejně dlouhé a mají shodné všechny dvojice znaků až do koncové nuly. Na slajdu č. 68 napravo je celý postup graficky znázorněn. Lexikografické uspořádání připomíná uspořádání slov ve slovníku. Místo klasické abecedy (cca 30 písmen) ale pracujeme s celou znakovou sadou 256 znaků. Písmena anglické abecedy jsou v každé znakové sadě řazeny ve stejném pořadí jako v abecedě, proto toto uspořádání dává na textových řetězcích lidsky očekávané výsledky. Pokud je řetězec s1 vlastním prefixem řetězce s2, je s1 lexikograficky menší než s2, protože koncová nula řetězce s1 je vždy menší než libovolný znak řetězce s Časté chyby Knihovní funkce pro práci s řetězci (deklarované například ve string.h) předpokládají, že jsou jim při zavolání funkce jako skutečné parametry předány platné řetězce. Dále předpokládají, že pro provedení jejich operací je na cílové adrese vždy dostatek volného prostoru. Platí konvence, že o skutečné parametry, se kterými je funkce zavolána se stará volající funkce, nikoliv funkce volaná. Velký problém nastává při předání neinicializovaného ukazatele. Funkce nemají žádnou možnost neinicializovaný ukazatel rozpoznat. Z adresy paměti dané neinicializovaným ukazatelem (neznámá náhodná adresa) se pokusí číst nebo do ní zapisovat, což vede obvykle k násilnému ukončení programu operačním systémem. Na slajdu č. 66 dole ve zdrojovém kódu vidíme chybný pokus o kopírování hodnoty do neinicializovaného ukazatele ptr. Vlevo je zdrojový kód, vpravo grafické znázornění.

6 Funkce také předpokládají, že ukazatele jsou nenulové. Neprovádí, žádné testy na nulovost ukazatelů a jejich případný výskyt vede k běhové chybě programu z důvodu pokusu o dereferenci nulového ukazatele. Chybějící testy na nenulovost ukazatelů nejsou chybou daných funkcí, ale záměrem, aby funkce byly rychlejší. Některé z funkcí pro práci s řetězci mají dva parametry, cíl (adresa, kam se budou data zapisovat) a zdroj (adresa, ze které se budou data číst). Při volání takovýchto funkcí záleží v jakém pořadí skutečné parametry uvedeme. Z hlavičky funkce lze většinou určit, který z formálních parametrů je cíl a který zdroj. Zdroj bývá typu ukazatel na const char, cíl bývá typu ukazatel na char. Prohození pořadí skutečných parametrů vede k poškození zpracovávaných dat, občas i k přepsání velkých kusů paměti náhodnými daty. Pokud pro práci s řetězci používáme pouze knihovních funkcí (a v jejich použití neděláme chyby) máme garantováno, že jako výsledky získáme vždy platné řetězce ukončené koncovou nulou. Řetězce můžeme modifikovat i bez použití knihovních funkcí přístupem k jednotlivým znakům řetězce přes operátor hranatých závorek. V tomto případě máme šanci omylem přepsat koncovou nulu jiným znakem (a novou koncovou nulu do řetězce nepřidat). Řetězec po takovémto zásahu pokračuje i za paměť, která mu byla vyhrazena. Ukončení řetězce závisí na náhodě, kdy se v paměti, která následuje za pamětí mu přidělenou, objeví první byte s hodnotou 0, který se bude považovat za koncovou nulu řetězce. Pokud budeme takovýto řetězec pouze vypisovat na obrazovku, po platných znacích řetězce se vypíše i velké množství nesmyslných symbolů. Nejhorší situace nastává při kopírování hodnoty tohoto řetězce do řetězce jiného. V cílovém řetězci nebude pravděpodobně dostatek volné paměti a přepíšeme kus paměti, která cílovému řetězci nepatří. Při jakémkoliv kopírování řetězců si musíme být jistý, že na cílové adrese je dostatek volné paměti k okopírování zdrojového řetězce. V opačném případě může dojít k přepisování paměti, která se nachází za pamětí vyhrazenou cílovému řetězci. Funkce pro zpracování řetězců nemají žádnou možnost jak kontrolovat, zda na cílové adrese je dostatek paměti. Pokud neznáme délku zdrojového řetězce, lze použít funkci strlen k jejímu zjištění. Na slajdu č. 66 nahoře vidíme chybný příklad, ve kterém jsme špatně určili velikost paměti vyhrazené pro cíl kopírování pomocí funkce strcpy. Do pole buf o velikosti 6 znaků kopírujeme řetězec velikosti 10 znaků (včetně koncové nuly). Po provedení kopírování dojde k přepsání 4 bytů paměti následující za koncem pole buf. Situace je graficky znázorněna pod zdrojovým kódem. Řetězce jsou jedním z témat, na kterém se prokáže znalost problematiky ukazatelů a polí. Existuje řada lidí, kteří zdrojové kódy ladí následujícím způsobem. Něco napíšou, zkompilují to, vrátí se jim několik chybových hlášení. A snaží se chyby odstranit: dopíšou hvězdičku, smažou hvězdičku, případně závorku, středník, aniž by tušili co svým zásahem ve zdrojovém kódu dělají. Snaží se pouze zoufale zbavit chyb. Obvykle po několika hodinách a vyzkoušení desítek až stovek vzájemných kombinací získají zdrojový kód, který jde přeložit. K jejich velkému překvapení okamžitě po spuštění dochází k běhové chybě programu, obvykle dereference nulového nebo neinicializovaného ukazatele. Pokud tento styl programování používáte, je třeba se zamyslet, ke kterému tématickému bloku se vrátit. V případě, že náhodně mažete a připisujete pouze hvězdičky či hranaté závorky, stačí návrat k bloku č. 4. V případě náhodného mazání a připisování i dalších syntaktických znaků, je vhodný návrat dokonce až k bloku č. 2 nebo č. 3.

7 1.4 Funkce printf Funkce printf slouží k vypisování formátovaného textu na standardní výstup. Existují i její varianty fprintf pro výpis do souboru a sprintf pro výpis do paměti., které se liší pouze v přidání jednoho parametru určujícího, kam se bude provádět výpis. Funkce vrací v návratové hodnotě počet znaků, které se skutečně podařilo vytisknout či zapsat. Funkce printf na rozdíl od většiny ostatních funkcí nemá pevně daný počet a typy parametru. Povinný je pouze první parametr funkce (formátovací řetězec), který je textovým řetězcem. Tento řetězec kromě obyčejného textu může obsahovat i různé formátovací symboly, například \n pro odřádkování nebo \t pro tabulátor. Samotný symbol \, který potřebujeme například pro zapsání cesty k souboru v operačním systému Windows, se zapíše jako \\. Ve formátovacím řetězci můžeme také určit, že na jeho daném místě se má vypsat hodnota nějakého výrazu (předem daného datového typu určeného ve formátovacím řetězci), který bude dalším parametrem funkce printf. Například %s zastupuje výraz typu řetězec, %c znak, %d celé číslo a %f reálné číslo. Tento formátovací řetězec určuje s jakými dalšími skutečnými parametry má být funkce printf zavolána. Významu tohoto řetězce ale kompilátor nerozumí, nemůže přítomnost těchto dalších parametrů ověřit. V těle funkce printf se pak počítá s tím, že parametry byly zadány správně, funkce nemá žádnou možnost jejich správnost ověřit. Správnost zadání skutečných parametrů funkce printf (počet a jejich typy) musí kontrolovat programátor sám. Pokud některý ze skutečných parametrů chybí, dojde obvykle k násilnému ukončení běhu programu operačním systémem. Pokud je skutečný parametr pouze špatného datového typu dochází většinou pouze k výpisu nesmyslných dat. Vypsané hodnoty můžeme zarovnávat doprava na daný počet znaků, pokud mezi symbol % a písmeno určujícím typ vypisovaného výrazu vložíme číslo určující, na kolik pozic se vypsaná hodnota zarovnává. Uvedením číslice nula mezi symbol % a číslo udávající na kolik míst se vypisovaná hodnota zarovnává doprava docílíme vytištění znaků '0' místo mezer při tomto výpisu. U čísel můžeme vynutit i povinný výpis znaménka, v případě, že číslo je kladné. U reálných čísel můžeme navíc určit i počet vypisovaných míst za desetinnou čárkou. Na slajdu č. 69 napravo na zeleném podkladu vidíme několik příkladů použití funkce printf. Na pátém řádku zdrojového kódu voláním funkce printf nejprve vypíšeme celé číslo 7 zarovnané na pět znaků doprava, místo mezer budou vypsány znaky '0' a číslo bude mít vynucené znaménko. Vypsáno bude Odřádkuje se. Dále se vypíše hodnota výrazu r+7 jako reálné číslo s uvedením dvou míst po desetinné čárce. Vypsáno bude Příkazem uvedeným na šestém řádku zdrojového kódu vypíšeme text: Retezec Ahoj zacina na A a odřádkujeme. Příkazem uvedeným na šestém řádku zdrojového kódu vypíšeme text: Hodnota znaku A je 65 a odřádkujeme. Na slajdu č. 69 dole na červeném podkladu vidíme dva chybné příklady. Na prvním řádku nesouhlasí typ parametrů uvedený v formátovacím řetězci (řetězec) s typem parametru skutečně zadaným (reálné číslo). Na druhém řádku jsou formátovacím řetězcem požadovány tři parametry typu celé číslo, ale zadány jsou parametry pouze dva.

8 2 Parametry programu předávané z příkazové řádky Program můžeme spustit z příkazové řádky napsáním a potvrzením jeho názvu, případně.názvu včetně cesty k programu, pokud program pouštíme z jiného adresáře, než ve kterém se tento program nachází. Programu spouštěnému z příkazové řádky můžeme předat i libovolné množství parametrů, pokud je napíšeme za název programu při jeho spouštění, jednotlivé parametry se oddělují mezerou. Na slajdu č. 70 nahoře vidíme příklad volání programu s parametry. Význam a způsob zpracování jednotlivých parametrů určuje autor každého programu sám. Autor programu může parametry zcela ignorovat, pokud se je ale rozhodne zpracovávat, obvykle předpokládá, že parametry splňují nějaká syntaktická pravidla, která uvede například do nápovědy k programu. Ve Visual Studiu můžeme nastavit parametry programu následujícím postupem. V Solution Exploreru (bývá nalevo nahoře na obrazovce) klikneme pravým tlačítkem myši na název aktuálního projektu (projektu, nikoliv celé solution). Objeví se nabídka, ze které vybereme poslední možnost Properties. Vyskočí nám nové okno, ve kterém nalevo v nabídce vybereme položku Configuration Properties, podpoložku Debugging. Napravo nalezneme řádek označený jako Command Arguments a do něj můžeme parametry programu vyplnit. V programu přistupujeme k jeho parametrům, přes parametry funkce main. Funkce main má dva parametry. První parametr se jmenuje argc, je typu int a udává počet parametrů programu. Druhý parametr funkce main se jmenuje argv, je typu pole řetězců a uchovává v poli parametry programu reprezentované jako řetězce. Na parametr argv se můžeme také dívat jako na dvojrozměrné pole znaků. Prvním parametrem programu je vždy název tohoto programu včetně plné cesty. Případné další parametry programu jsou předány z příkazové řádky. Ukazatel argv[0] ukazuje na název programu, argv[1] ukazuje na první parametr, který byl programu přidán z příkazové řádky, argv[argc-1] ukazuje na poslední parametr, který byl programu předán z příkazové řádky. Na konci pole argv se nachází hodnota 0 (argv[argc] je nulový ukazatel). Délku pole argv, lze však zjistit i z parametru argc. Oba parametry funkce main můžeme pojmenovat libovolně, dodržet musíme pouze jejich pořadí a jejich datové typy. Z důvodu přehlednosti programu se doporučuje pojmenovávat parametry funkce main názvy argc a argv. 2.1 Příklad: Vypsání parametrů programu na obrazovku Na slajdu č. 70 vidíme zavolání programu myprog.exe se čtyřmi parametry předanými z příkazové řádky. Hodnota proměnné argc, udávající počet parametrů programu, je 5, protože před čtyři parametry předané z příkazové řádky se přidá jako první parametr název programu včetně plné cesty. Na obrázku dole vidíme graficky znázorněno, jak jsou tyto parametry uloženy v poli argv. Na slajdu č. 71 vidíme zdrojový kód programu, který na standardní výstup vypíše své parametry. Spuštění tohoto programu s parametry z příkazové řádky je vidět nahoře na slajdu. Napravo na slajdu vidíme standardní výstup po skončení běhu programu. Výpis parametrů programu je naprogramován pomoci while cyklu. Cyklus poběží tak dlouho, dokud aktuálně zpracovávaný parametr programu (ukazatel *argv) bude nenulový. Nulová hodnota značí

9 konec pole parametrů programu. V těle cyklu pak tento parametr vytiskneme na obrazovku a pomocí příkazu argv++ se v poli argv posuneme na další prvek, tedy na další parametr programu. Tento postup mám znemožňuje opakované čtení parametrů programu, nemůžeme se vrátit na původní začátek pole argv. Alternativní postup by byl projít pole argv pomocí for cyklu, poté bychom mohli k jednotlivým argumentům programu přistupovat opakovaně. Na slajdech č vidíme graficky znázorněny jednotlivé kroky tohoto programu. Aktuálně vykonávané řádky zdrojového kódu jsou označeny tučně. Pole argv lze považovat za dvojrozměrné pole znaků, nebo jednorozměrné pole řetězců. Na argv se můžeme také dívat jako na dvojnásobný ukazatel na znak nebo jako na ukazatel na řetězec. Slajd č. 72 ukazuje situaci při prvním průchodu cyklem. Dvojnásobný ukazatel argv ukazuje na první prvek pole parametrů, na řetězec (ukazatel na pole znaků) argv[0]. Prvním parametrem programu je jeho název, který se pomocí funkce printf vypíše na obrazovku. Způsob, jakým je na slajdu zobrazeno dvojrozměrné pole argv, nás může překvapit. Jedná se však o jediný možný způsob, jak vytvořit dynamicky alokované dvojrozměrné pole. Protože program může být spouštěn s proměnlivým počtem parametrů, které jsou navíc proměnlivé délky, je vyloučena statická alokace. Dvojrozměrné pole argv je pole ukazatelů na znak, jehož každý prvek ukazuje na první prvek vlastního pole znaků. Na slajdu jsou déle některé prvky označeny bublinou popisující jejich datový typ a způsob, jak zjistit jejich hodnotu. Slajd č. 73 vidíme vykonání příkazu argv++. Proměnnou argv chápeme jako ukazatel, který doteďka ukazoval na první prvek pole parametrů programu (aktuálně na prvek argv[0], což je jméno programu včetně plné cesty). Příkazem argv++ se v ukazateli zvýší hodnota uložené adresy o jedna, ukazatel bude ukazovat na další prvek pole, v našem případě na parametr programu "-n". Slajd č. 74 ukazuje konec cyklu. V poli argv jsme došli (při posledním posunu ukazatelem pomocí příkazu argv++) na prvek obsahující nulový ukazatel. Podmínka cyklu *argv nebude splněna a cyklus končí. 2.2 Příklad: Zpracování parametrů programu Na slajdu č. 75 zpracujeme ty samé parametry programu, jaké jsem použili v minulém příkladu. Nebudeme je tisknout na obrazovku, ale zjistíme z nich s jakým nastavením chce uživatel náš program spustit. Také zjistíme, zda uživatel zadal všechny parametry (a zadal je ve správném pořadí) nutné pro spuštění programu. Nahoře na slajdu vidíme s jakými parametry můžeme program spouštět. Parametry n a w jsou uvedeny v hranatých závorkách, jsou to nepovinné parametry. U těchto dvou parametrů nás bude pouze zajímat, zda byl program zavolán s nimi nebo bez nich.. Dále následují dva povinné parametry udávající jména (případně i s cestou) dvou souboru, se kterým bude program pracovat. Může se jednat například o vstupní soubor (ze kterého bude program číst data) a výstupní soubor (do kterého bude data ukládat). Ve zdrojovém kódu jsme pro každý z nepovinných parametrů n a w vytvořili jednu proměnnou (n a w) inicializovanou na hodnotu 0. Pokud byl program s daným parametrem zavolán, změníme hodnotu příslušné proměnné na hodnotu 1.

10 Podobně jako v minulém příkladu procházíme pole parametrů programu while cyklem pomocí posouvání ukazatele argv. Podmínka cyklu je zde složitější, skládá se z logické konjunkce dvou podmínek. V první části podmínky posuneme ukazatel argv na další prvek pole a zároveň otestujeme, zda tento prvek (na který jsme se právě posunuli) není nulový ukazatel (výrazem *++argv). Logická konjunkce zaručuje, že se její první parametr vyhodnotí dříve než její druhý parametr, z tohoto důvodu si můžeme dovolit použít argv i v druhé částí podmínky. V druhé části podmínky testujeme, zda první znak aktuálně zpracovávaného parametru programu (**argv) je pomlčka. Pokud je celá podmínka cyklu splněna, aktuálně zpracovávaný parametr programu je přepínač (začíná na pomlčku). V těle cyklu je jediný příkaz a to vícenásobně větvení switch, kterým zjišťujeme, který konkrétní přepínač zpracováváme. V případě parametrů n a w uložíme do příslušné proměnné hodnotu 1. Jakýkoliv jiný parametr znamená chybu a zavolá se funkce error, (nejedná se o knihovní funkci, musíme si její tělo napsat sami), která například může uživateli vypsat s jakými parametry má program volat a skončit program. Po skončení cyklu ze zjistí, zda mezi parametry programu zbývají alespoň dva dosud nezpracované parametry a ty se považují za názvy souborů, aniž by jsme prováděli nějakou kontrolu. Protože jsem se ve while cyklu posouvali s ukazatelem argv, mají tyto zbývající parametry indexy 0 a 1. Následně se všechny zjištěné parametry předají funkci doit (její tělo si musíme napsat sami) k dalšímu zpracování. Ve zpracování parametrů programu, které jsme si nyní představili, je několik chyb, které nám umožňuje volat program s kombinacemi parametrů, které nejsou povolené. Najdete tyto chyby? Uměli byste tyto chyby opravit? Chyba č. 1: Stačí aby parametr začínal na znaky n nebo w a poté další znaky jsou v něm ignorovány. Například parametr n089dwr se vyhodnotí jako n. Chyba č. 2: Pokud po jménech souborů následují další parametry, jsou ignorovány. Správně by měla být vypsáno chybové hlášení, že žádné další parametry program mít nemá. Chyba č. 3: Parametry n a w se mohou opakovat v parametrech programu vícekrát. Nejedná se o chybu, která by zabránila zpracováni programu, ale uživatel by na ní mohl být upozorněn. Často se takovéto chování programu za chybu ani nepovažuje. Klíčové pojmy řetězec (neinicializovaný, nulový, prázdný) znaková a řetězcová konstanta funkce strlen, strcpy, strcat, strcmp, strchr, strstr lexikografické uspořádání parametry argc, argv

11 Otázky k rekapitulaci Upozornění: odpovědi na některé zde uvedené otázky nelze najít ve studijním textu tohoto tématického bloku. Lze je získat vlastním experimentováním se zdrojovými kódy nebo studiem doporučené literatury. Jakým způsobem je reprezentovaný řetězec? Platí nějaká omezení pro obsah či délku řetězce? Jakým způsobme lze řetězec inicializovat? Jaké operátory lze na řetězcích použít? Jakým způsobem okopírujeme hodnotu jednoho řetězce do jiného řetězce? Jakým způsobem se můžeme porovnat hodnoty dvou řetězců a s jakými možnými výsledky? Jak pracuje algoritmus na porovnávání řetězců? Jakým způsobem zjistíme délku řetězce? Jakým způsobem zjistíme hodnotu prvního znaku řetězce? V jaké knihovně se nacházejí funkce pro práci s řetězci? Jakými způsoby můžeme v řetězcích vyhledávat? Které z funkci pro práci s řetězci, které jsme neprobírali, vypadají užitečně? Co se stane, pokud funkci pro práci s řetězci předáme neinicializovaný ukazatel? Co se stane, pokud funkci pro práci s řetězci předáme nulový ukazatel? Jaké typy parametrů mají obvykle funkce pro práci s řetězci a jak se navzájem tyto typy liší? Kdo se stará o dostatek prostoru při kopírování řetězců a co se stane při jeho případném nedostatku? Co je to prázdný řetězec a k čemu je užitečný? Jaká funkce slouží k formátovanému výpisu na standardní výstup, jaké má parametry? Jakým způsobem lze zadat parametry programu při jeho spuštění? Jakým způsobem lze ve zdrojovém kódu programu přistoupit k parametrům programu zadaným programu při jeho spuštění? Co znamená hodnota parametru funkce main argc? Jakého datového typu je parametr funkce main argv? Co obsahuje? Můžeme zjistit z jakého adresáře byl program spuštěn? Jakým způsobem lze vypsat parametry programu na obrazovku? Jakým způsobem zjistíme, zda byl program zavolán s parametrem n? Své odpovědi zdůvodněte. Můžete přidat i syntaktické zápisy tam, kde je to vhodné. Doporučené příklady k naprogramování 1. Implementujte většinu ze standardních knihovních funkcí pro práci s řetězci: strlen, strcpy, strcat, strcmp, strchr, strstr, Napište program, který lexikograficky setřídí řetězce, které mu jsou zadány jako parametry programu z příkazové řádky. Výstup se vypisuje na obrazovku. Můžete zkusit použít funkci qsort.

12 3. Napište program s názvem "zpracuj", který umí zpracovat parametry (ve formátu uvedeném dole), které mu mohou být předány při jeho spuštění. Ve funkci main vytvořte vhodné proměnné a do nich zaznamenejte, s jakými parametry byl program skutečně zavolán. Na vzájemném pořadí parametrů a, b, c a d nezáleží. V případě chybně zadaných parametrů programu, oznamte, k jaké chybě došlo. zpracuj -a číslo [-b řetězec [číslo1 číslo2]] [-c -d] file1 file2 Studijní literatura Výklad často odkazuje na slajdy (ve formátu.ppt), které je vhodné si vytisknout. Je vhodné si pořídit nějakou knihu o programování v C nebo C++. Uvedené příklady knih berte pouze jako inspirativní. Miroslav Virius: Programování v C++ (ČVUT, 2. vydání 2004) Jesse Liberty, Bradley L. Jones: Naučte se C++ za 21 dní (Computer Press, 2. vydání, 2007) Knihu je dobré číst postupně a vlastním tempem, můžete mít i mírné zpoždění oproti našemu výkladu. Pořadí kapitol v knize neodpovídá úplně přesně pořadí, v jakém učivo probíráme. Tento tématický blok se zaměřte na řetězce Miroslav Virius: Pasti a propasti jazyka C++ (Brno, 2. vydání 2005) Zopakujte si kapitolu 3 Pole a ukazatele

Distanční opora předmětu: Programování v jazyce C Tématický blok č. 4: Pole a ukazatele Autor: RNDr. Jan Lánský, Ph.D.

Distanční opora předmětu: Programování v jazyce C Tématický blok č. 4: Pole a ukazatele Autor: RNDr. Jan Lánský, Ph.D. Distanční opora předmětu: Programování v jazyce C Tématický blok č. 4: Pole a ukazatele Autor: RNDr. Jan Lánský, Ph.D. Obsah kapitoly 1 Pole 1.1 Přístup k prvkům pole 1.2 Vícerozměrné pole 1.3 Inicializace

Více

Distanční opora předmětu: Programování v jazyce C Tématický blok č. 6: Dynamická alokace paměti, typové konstrukce Autor: RNDr. Jan Lánský, Ph.D.

Distanční opora předmětu: Programování v jazyce C Tématický blok č. 6: Dynamická alokace paměti, typové konstrukce Autor: RNDr. Jan Lánský, Ph.D. Distanční opora předmětu: Programování v jazyce C Tématický blok č. 6: Dynamická alokace paměti, typové konstrukce Autor: RNDr. Jan Lánský, Ph.D. Obsah kapitoly 1 Dynamická alokace paměti 2 Organizace

Více

Distanční opora předmětu: Programování v jazyce C Tématický blok č. 8: Dynamické datové struktury, ladění programů Autor: RNDr. Jan Lánský, Ph.D.

Distanční opora předmětu: Programování v jazyce C Tématický blok č. 8: Dynamické datové struktury, ladění programů Autor: RNDr. Jan Lánský, Ph.D. Distanční opora předmětu: Programování v jazyce C Tématický blok č. 8: Dynamické datové struktury, ladění programů Autor: RNDr. Jan Lánský, Ph.D. Obsah kapitoly 1 Dynamické datové struktury 1.1 Příklad:

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

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

DUM 06 téma: Tvorba makra pomocí VBA

DUM 06 téma: Tvorba makra pomocí VBA DUM 06 téma: Tvorba makra pomocí VBA ze sady: 03 tematický okruh sady: Tvorba skript a maker ze šablony: 10 Algoritmizace a programování určeno pro: 4. ročník vzdělávací obor: 18-20-M/01 Informační technologie

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

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

for (int i = 0; i < sizeof(hodnoty) / sizeof(int); i++) { cout<<hodonoty[i]<< endl; } cin.get(); return 0; }

for (int i = 0; i < sizeof(hodnoty) / sizeof(int); i++) { cout<<hodonoty[i]<< endl; } cin.get(); return 0; } Pole Kdybychom v jazyce C++chtěli načíst větší počet čísel nebo znaků a všechny bylo by nutné všechny tyto hodnoty nadále uchovávat v paměti počítače, tak by bylo potřeba v paměti počítače alokovat stejný

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

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

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

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

Ukazatel (Pointer) jako datový typ - proměnné jsou umístěny v paměti na určitém místě (adrese) a zabírají určitý prostor (počet bytů), který je daný

Ukazatel (Pointer) jako datový typ - proměnné jsou umístěny v paměti na určitém místě (adrese) a zabírají určitý prostor (počet bytů), který je daný Ukazatel (Pointer) jako datový typ - proměnné jsou umístěny v paměti na určitém místě (adrese) a zabírají určitý prostor (počet bytů), který je daný typem proměnné - ukazatel je tedy adresa společně s

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

Tabulkový procesor. Základní rysy

Tabulkový procesor. Základní rysy Tabulkový procesor Tabulkový procesor je počítačový program zpracovávající data uložená v buňkách tabulky. Program umožňuje použití vzorců pro práci s daty a zobrazuje výsledné hodnoty podle vstupních

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

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

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

Ú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

6 Příkazy řízení toku

6 Příkazy řízení toku 6 Příkazy řízení toku 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 příkazům pro řízení toku programu. Pro všechny tyto 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

HROMADNÉ ÚPRAVY NAJÍT A NAHRADIT

HROMADNÉ ÚPRAVY NAJÍT A NAHRADIT HROMADNÉ ÚPRAVY NAJÍT A NAHRADIT Funkce Najít a nahradit slouží k rychlému vyhledávání určitých slov a jejich nahrazování jinými slovy. Lze hledat i určité varianty slov a nahrazovat je buď hromadně (všechny

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

Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám.

Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám. 13 Rozhraní, výjimky 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 rozhraním a výjimkám. Doba nutná k nastudování 2 2,5 hodiny

Více

Pole a kolekce. v C#, Javě a C++

Pole a kolekce. v C#, Javě a C++ Pole a kolekce v C#, Javě a C++ C# Deklarace pole typ_prvku_pole[] jmeno_pole; Vytvoření pole jmeno_pole = new typ_prvku_pole[pocet_prvku_pole]; Inicializace pole double[] poled = 4.8, 8.2, 7.3, 8.0; Java

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

Více o konstruktorech a destruktorech

Více o konstruktorech a destruktorech Více o konstruktorech a destruktorech Více o konstruktorech a o přiřazení... inicializovat objekt lze i pomocí jiného objektu lze provést přiřazení mezi objekty v původním C nebylo možné provést přiřazení

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Řídicí struktury jazyka Java Struktura programu Příkazy jazyka Blok příkazů Logické příkazy Ternární logický operátor Verze pro akademický rok 2012/2013 1 Struktura programu

Více

Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody

Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody Dynamická alokace paměti Jazyky C a C++ poskytují programu možnost vyžádat si část volné operační paměti pro

Více

Lineární spojový seznam (úvod do dynamických datových struktur)

Lineární spojový seznam (úvod do dynamických datových struktur) Lineární spojový seznam (úvod do dynamických datových struktur) Jan Hnilica Počítačové modelování 11 1 Dynamické datové struktury Definice dynamické struktury jsou vytvářeny za běhu programu z dynamicky

Více

Programujeme v softwaru Statistica

Programujeme v softwaru Statistica Programujeme v softwaru Statistica díl druhý Newsletter Statistica ACADEMY Téma: Programování, makra, skripty Typ článku: Návody V tomto článku si ukážeme další možnosti při psaní maker v softwaru Statistica.

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

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5 Obsah Obsah 1 Programovací jazyk Pascal 1 1.1 Struktura programu v Pascalu.................... 1 2 Proměnné 2 2.1 Vstup a výstup............................ 3 3 Operátory a některé matematické funkce 5

Více

Programování v jazyce C a C++

Programování v jazyce C a C++ Programování v jazyce C a C++ Richter 1 Petyovský 2 1. března 2015 1 Ing. Richter Miloslav, Ph.D., UAMT FEKT VUT Brno 2 Ing. Petyovský Petr, UAMT FEKT VUT Brno C++ Stručná charakteristika Nesdíĺı normu

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

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

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace Předmět: Vývoj aplikací Téma: Pole Vyučující: Ing. Milan Káža Třída: EK3 Hodina: 14 Číslo: V/5 Programování v jazyce

Více

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání Čtvrtek 3. listopadu Makra v Excelu Obecná definice makra: Podle definice je makro strukturovanou definicí jedné nebo několika akcí, které chceme, aby MS Excel vykonal jako odezvu na nějakou námi definovanou

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

Vzorce. StatSoft. Vzorce. Kde všude se dá zadat vzorec

Vzorce. StatSoft. Vzorce. Kde všude se dá zadat vzorec StatSoft Vzorce Jistě se Vám již stalo, že data, která máte přímo k dispozici, sama o sobě nestačí potřebujete je nějak upravit, vypočítat z nich nějaké další proměnné, provést nějaké transformace, Jinak

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

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

PROGRAMOVÁNÍ V SHELLU

PROGRAMOVÁNÍ V SHELLU PROGRAMOVÁNÍ V SHELLU Prostředí, jazyk, zdrojový kód chceme-li posloupnost jistých příkazů používat opakovaně, případně z různých míst adresářové struktury, můžeme tuto posloupnost uložit souboru, který

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

1. D Y N A M I C K É DAT O V É STRUKTUR Y

1. D Y N A M I C K É DAT O V É STRUKTUR Y 1. D Y N A M I C K É DAT O V É STRUKTUR Y Autor: Petr Mik Abychom se mohli pustit do dynamických datových struktur, musíme se nejdřív podívat na datový typ ukazatel. 1. D AT O V Ý TYP U K A Z AT E L Datové

Více

Funkční objekty v C++.

Funkční objekty v C++. Funkční objekty v C++. Funkční objekt je instance třídy, která má jako svou veřejnou metodu operátor (), tedy operátor pro volání funkce. V dnešním článku si ukážeme jak zobecnit funkci, jak používat funkční

Více

DUM 07 téma: Proměnné, konstanty a pohyb po buňkách ve VBA

DUM 07 téma: Proměnné, konstanty a pohyb po buňkách ve VBA DUM 07 téma: Proměnné, konstanty a pohyb po buňkách ve VBA ze sady: 03 tematický okruh sady: Tvorba skript a maker ze šablony: 10 Algoritmizace a programování určeno pro: 4. ročník vzdělávací obor: vzdělávací

Více

Algoritmy I. Cvičení č. 2, 3 ALGI 2018/19

Algoritmy I. Cvičení č. 2, 3 ALGI 2018/19 Algoritmy I Cvičení č. 2, 3 1 ALG I, informace Cvičící RNDr. Eliška Ochodková, Ph.D., kancelář EA439 eliska.ochodkova@vsb.cz www.cs.vsb.cz/ochodkova Přednášející doc. Mgr. Jiří Dvorský, Ph.D., kancelář

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

KAPITOLA 3 - ZPRACOVÁNÍ TEXTU

KAPITOLA 3 - ZPRACOVÁNÍ TEXTU KAPITOLA 3 - ZPRACOVÁNÍ TEXTU KLÍČOVÉ POJMY textové editory formát textu tabulka grafické objekty odrážky a číslování odstavec CÍLE KAPITOLY Pracovat s textovými dokumenty a ukládat je v souborech různého

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

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

Úvod do programování 6. hodina

Úvod do programování 6. hodina Úvod do programování 6. hodina RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015 Umíme z minulé hodiny Algoritmy Třídění pole: Selection

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

Práce s binárními soubory. Základy programování 2 Tomáš Kühr

Práce s binárními soubory. Základy programování 2 Tomáš Kühr Práce s binárními soubory Základy programování 2 Tomáš Kühr Binární soubory Mohou mít libovolnou strukturu Data jsou uložena ve stejné podobě jako v paměti za běhu programu Výhody: Pro uložení je potřeba

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

MAXScript výukový kurz

MAXScript výukový kurz MAXScript výukový kurz Díl čtvrtý jazyk MAXScript, část I. Jan Melichar, březen 2008 Jan Melichar (aka JME) strana 1 OBSAH ÚVOD... 4 ZÁKLADNÍ PŘÍKAZY... 5 OPERÁTORY... 6 PROMĚNNÉ... 6 POLE... 7 ZÁVĚREM...

Více

Základní škola Hluk výukové texty MS Word 2007

Základní škola Hluk výukové texty MS Word 2007 MS Word je textový editor (program pro tvorbu a editaci textových dokumentů). Ve verzi 2007 došlo k zásadní změně v grafickém prostředí a tedy i ovládání programu. Základní ovládací prvky aplikace: RÁM

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

Skripty - úvod. Linux - skripty 2

Skripty - úvod. Linux - skripty 2 Linux - skripty Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Libor Otáhalík. Dostupné z Metodického portálu www.rvp.cz, ISSN: 1802-4785. Provozuje Národní ústav pro vzdělávání,

Více

Distanční opora předmětu: Programování v jazyce C Tématický blok č. 2: Proměnná, výraz, příkaz, podmínka, cyklus Autor: RNDr. Jan Lánský, Ph.D.

Distanční opora předmětu: Programování v jazyce C Tématický blok č. 2: Proměnná, výraz, příkaz, podmínka, cyklus Autor: RNDr. Jan Lánský, Ph.D. Distanční opora předmětu: Programování v jazyce C Tématický blok č. 2: Proměnná, výraz, příkaz, podmínka, cyklus Autor: RNDr. Jan Lánský, Ph.D. Obsah kapitoly 1 Proměnné 1.1 Deklarace a inicializace proměnných

Více

Sada 1 - Základy programování

Sada 1 - Základy programování S třední škola stavební Jihlava Sada 1 - Základy programování 07. Základní příkazy vstup a výstup hodnot Digitální učební materiál projektu: SŠS Jihlava šablony registrační číslo projektu:cz.1.09/1.5.00/34.0284

Více

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

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

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

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

Základy programování (IZP)

Základy programování (IZP) Základy programování (IZP) Šesté 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 6. týden

Více

5 Přehled operátorů, příkazy, přetypování

5 Přehled operátorů, příkazy, přetypování 5 Přehled operátorů, příkazy, přetypování Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně budou uvedeny detaily týkající se operátorů. Doba nutná k nastudování

Více

Distanční opora předmětu: Databázové systémy Tématický blok č. 8: Transact SQL Autor: RNDr. Jan Lánský, Ph.D.

Distanční opora předmětu: Databázové systémy Tématický blok č. 8: Transact SQL Autor: RNDr. Jan Lánský, Ph.D. Distanční opora předmětu: Databázové systémy Tématický blok č. 8: Transact SQL Autor: RNDr. Jan Lánský, Ph.D. Obsah kapitoly 1 Motivace 2 Základy syntaxe 3 Procedury a Funkce 4 Kurzory 5 Výjimky Studijní

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

Práce se soubory. Úvod do programování 2 Tomáš Kühr

Práce se soubory. Úvod do programování 2 Tomáš Kühr Práce se soubory Úvod do programování 2 Tomáš Kühr Soubory z pohledu C u Soubor chápeme jako posloupnost bytů uložených na disku u Datový proud (anglicky stream) u Ještě obecnější přístup u Sjednocuje

Více

Překladač a jeho struktura

Překladač a jeho struktura Překladač a jeho struktura Překladače, přednáška č. 1 Šárka Vavrečková Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz http://fpf.slu.cz/ vav10ui Poslední aktualizace: 23. září 2008 Definice

Více

Pointery II. Jan Hnilica Počítačové modelování 17

Pointery II. Jan Hnilica Počítačové modelování 17 Pointery II 1 Pointery a pole Dosavadní způsob práce s poli zahrnoval: definici pole jakožto kolekce proměnných (prvků) jednoho typu, umístěných v paměti za sebou int pole[10]; práci s jednotlivými prvky

Více

Správné vytvoření a otevření textového souboru pro čtení a zápis představuje

Správné vytvoření a otevření textového souboru pro čtení a zápis představuje f1(&pole[4]); funkci f1 předáváme hodnotu 4. prvku adresu 4. prvku adresu 5. prvku hodnotu 5. prvku symbolická konstanta pro konec souboru je eof EOF FEOF feof Správné vytvoření a otevření textového souboru

Více

Základy PERLu snadno a rychle

Základy PERLu snadno a rychle Základy PERLu snadno a rychle Začínáme Začneme tak, že si vytvoříme třeba soubor hellopl, do souboru napíšeme: print "Hello world\n"; Pak soubor nastavíme jako spustitelný: $ chmod +x hellopl A teď si

Více

Struktura programu v době běhu

Struktura programu v době běhu Struktura programu v době běhu Miroslav Beneš Dušan Kolář Struktura programu v době běhu Vztah mezi zdrojovým programem a činností přeloženého programu reprezentace dat správa paměti aktivace podprogramů

Více

Preprocesor a koncepce (větších) programů. Úvod do programování 2 Tomáš Kühr

Preprocesor a koncepce (větších) programů. Úvod do programování 2 Tomáš Kühr Preprocesor a koncepce (větších) programů Úvod do programování 2 Tomáš Kühr Práce s preprocesorem Preprocesor Zpracovává zdrojový kód ještě před překladačem Provádí pouze záměny textů (např. identifikátor

Více

VZORCE A VÝPOČTY. Autor: Mgr. Dana Kaprálová. Datum (období) tvorby: září, říjen 2013. Ročník: sedmý

VZORCE A VÝPOČTY. Autor: Mgr. Dana Kaprálová. Datum (období) tvorby: září, říjen 2013. Ročník: sedmý Autor: Mgr. Dana Kaprálová VZORCE A VÝPOČTY Datum (období) tvorby: září, říjen 2013 Ročník: sedmý Vzdělávací oblast: Informatika a výpočetní technika 1 Anotace: Žáci se seznámí se základní obsluhou tabulkového

Více

PROGRAMOVÁNÍ MIKROPOČÍTAČŮ CVIČENÍ 7

PROGRAMOVÁNÍ MIKROPOČÍTAČŮ CVIČENÍ 7 UNIVERZITA TOMÁŠE BATI VE ZLÍNĚ FAKULTA APLIKOVANÉ INFORMATIKY PROGRAMOVÁNÍ MIKROPOČÍTAČŮ CVIČENÍ 7 Využití knihoven podprogramů, displej Jan Dolinay Petr Dostálek Zlín 2013 Tento studijní materiál vznikl

Více

Standardní algoritmy vyhledávací.

Standardní algoritmy vyhledávací. Standardní algoritmy vyhledávací. Vyhledávací algoritmy v C++ nám umožňují vyhledávat prvky v datových kontejnerech podle různých kritérií. Také se podíváme na vyhledávání metodou půlením intervalu (binární

Více

1. Umístěte kurzor do sloupce Datový typ na řádek s polem, ve kterém vytvořit chcete seznam.

1. Umístěte kurzor do sloupce Datový typ na řádek s polem, ve kterém vytvořit chcete seznam. 10.6.7 POSTUP TVORBY KOMBINOVANÉHO SEZNAMU 1. Umístěte kurzor do sloupce Datový typ na řádek s polem, ve kterém vytvořit chcete seznam. 2. V rozbalovací nabídce se seznamem datových typů vyberte volbu

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

Základní vzorce a funkce v tabulkovém procesoru

Základní vzorce a funkce v tabulkovém procesoru Základní vzorce a funkce v tabulkovém procesoru Na tabulkovém programu je asi nejzajímavější práce se vzorci a funkcemi. Když jednou nastavíte, jak se mají dané údaje zpracovávat (některé buňky sečíst,

Více

Práce se soubory. Základy programování 2 Tomáš Kühr

Práce se soubory. Základy programování 2 Tomáš Kühr Práce se soubory Základy programování 2 Tomáš Kühr Soubory z pohledu C Soubor zjednodušeně chápeme jako posloupnost bytů uložených někde na disku Datový proud (anglicky stream) Ještě obecnější přístup

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

PSK3-9. Základy skriptování. Hlavička

PSK3-9. Základy skriptování. Hlavička PSK3-9 Název školy: Autor: Anotace: Vyšší odborná škola a Střední průmyslová škola, Božetěchova 3 Ing. Marek Nožka Základy skriptování v unixovém shellu Vzdělávací oblast: Informační a komunikační technologie

Více

6. lekce Úvod do jazyka C knihovny datové typy, definice proměnných základní struktura programu a jeho editace Miroslav Jílek

6. lekce Úvod do jazyka C knihovny datové typy, definice proměnných základní struktura programu a jeho editace Miroslav Jílek 6. lekce Úvod do jazyka C knihovny datové typy, definice proměnných základní struktura programu a jeho editace Miroslav Jílek 1/73 https://en.cppreference.com internetová stránka s referencemi https://gedit.en.softonic.com/download

Více

Základy programování. Úloha: Eratosthenovo síto. Autor: Josef Hrabal Číslo: HRA0031 Datum: 28.11.2009 Předmět: ZAP

Základy programování. Úloha: Eratosthenovo síto. Autor: Josef Hrabal Číslo: HRA0031 Datum: 28.11.2009 Předmět: ZAP Základy programování Úloha: Eratosthenovo síto Autor: Josef Hrabal Číslo: HRA0031 Datum: 28.11.2009 Předmět: ZAP Obsah 1 Zadání úkolu: 3 1.1 Zadání:............................... 3 1.2 Neformální zápis:.........................

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

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

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

PHP tutoriál (základy PHP snadno a rychle)

PHP tutoriál (základy PHP snadno a rychle) PHP tutoriál (základy PHP snadno a rychle) Druhá, vylepšená offline verze. Připravil Štěpán Mátl, http://khamos.wz.cz Chceš se naučit základy PHP? V tom případě si prostuduj tento rychlý průvodce. Nejdříve

Více

KAPITOLA 9 - POKROČILÁ PRÁCE S TABULKOVÝM PROCESOREM

KAPITOLA 9 - POKROČILÁ PRÁCE S TABULKOVÝM PROCESOREM KAPITOLA 9 - POKROČILÁ PRÁCE S TABULKOVÝM PROCESOREM CÍLE KAPITOLY Využívat pokročilé možnosti formátování, jako je podmíněné formátování, používat vlastní formát čísel a umět pracovat s listy. Používat

Více

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/ Vzdělávání v informačních a komunikačních technologií

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/ Vzdělávání v informačních a komunikačních technologií VY_32_INOVACE_33_04 Škola Střední průmyslová škola Zlín Název projektu, reg. č. Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/34.0333 Vzdělávací oblast Vzdělávání v informačních a komunikačních

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

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false Logické operace Datový typ bool může nabýt hodnot: o true o false Relační operátory pravda, 1, nepravda, 0, hodnoty všech primitivních datových typů (int, double ) jsou uspořádané lze je porovnávat binární

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

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

Příklad : String txt1 = new String( Ahoj vsichni! ); //vytvoří instanci třídy String a přiřadí ji vnitřní hodnotu Ahoj vsichni!

Příklad : String txt1 = new String( Ahoj vsichni! ); //vytvoří instanci třídy String a přiřadí ji vnitřní hodnotu Ahoj vsichni! Java práce s řetězci Trochu povídání.. Řetězce jsou v Javě reprezentovány instancemi tříd StringBuffer a String. Tyto třídy jsou součástí balíčku java.lang, tudíž je možno s nimi pracovat ihned bez nutného

Více