Programování v C. Ostrava, 2004 Mgr. Rostislav Fojtík
|
|
- Peter Tobiška
- před 9 lety
- Počet zobrazení:
Transkript
1 Programování v C Ostrava, 2004 Mgr. Rostislav Fojtík
2
3 Obsah Úvodní lekce... 8 Cíl lekce... 8 Samostatné práce... 9 Podmínky udělení zápočtu... 9 Obsah kurzu... 9 Literatura Shrnutí lekce Úvod do programovacího jazyka C Cíl lekce Vstupní test Stručná historie jazyka C Způsob zpracování programu Základní informace Jednoduché datové typy Kontrolní úkol: Typová konverze Jednoduché operátory Ukázka programu Příklady Opakovací test Shrnutí učiva Rejstřík Základní řídící struktury Cíl lekce Vstupní test Vstup a výstup Bloky příkazů Podmínky Vícenásobná podmínka Cykly Příkazy skoků Kontrolní úkol: Příklady Opakovací test Shrnutí učiva Rejstřík Funkce Cíl lekce Vstupní test Rekurzivní funkce Procedury Parametry funkcí Kontrolní úkol: Příklady Opakovací test Shrnutí učiva Rejstřík Preprocesor Cíl lekce... 39
4 Vstupní test Vkládání souborů Makra bez parametrů Makra s parametry Podmíněný překlad Hlavičkové soubory Kontrolní úkol: Příklady Opakovací test Shrnutí učiva Rejstřík Pointery Cíl lekce Vstupní test Kontrolní úkol: Funkce a pointery Pointerová aritmetika Dynamická alokace paměti Příklady Opakovací test Shrnutí učiva Rejstřík Jednorozměrné pole Cíl lekce Vstupní test Statické pole Dynamické pole Pole jako parametr funkce Kontrolní úkol: Příklady Opakovací test Shrnutí učiva Rejstřík Vícerozměrná pole Cíl lekce Vstupní test Dvourozměrné statické pole Pole pointerů Pointer na pole Pointer na pointer Dvourozměrné pole jako parametr funkce Inicializace polí Příklady Opakovací test Shrnutí učiva Rejstřík Práce s řetězci Cíl lekce Vstupní test Základní informace o práci s řetězci... 68
5 Funkce pro práci s řetězci Čtení a výpis řetězců Příklady Opakovací test Shrnutí učiva Rejstřík Struktury, uniony a výčtové typy Cíl lekce Vstupní test Struktury Sturktury a funkce Union Výčtový typ Příklady Opakovací test Shrnutí učiva Rejstřík Oddělený překlad. Paměťové třídy Cíl lekce Vstupní test Paměťové třídy Auto Extern Static Registr Příklady Opakovací test Rejstřík Práce se soubory Cíl lekce Vstupní test Formátované čtení a zápis dat Neformátované čtení a zápis dat Zpracování po jednom znaku Zpracování po blocích Zpracování po řádcích Přímý přístup Možnosti bufferování Příklady Opakovací test Shrnutí učiva Rejstřík Další možnosti jazyka C Cíl lekce Vstupní test Parametry funkce main Funkce s proměnným počtem argumentů Bitové operace Bitový součin Bitový součet... 98
6 Bitový exkluzivní součet Operace bitového posunu Negace bit po bitu Bitová pole Příklady Opakovací test Shrnutí učiva Rejstřík
7 Orientační symboly v textu: Cíle, ke kterým chceme dospět. Úkoly, projekty, testy a písemné zprávy. Otazník - průběžné otázky a úkoly. Vykřičník - důležité pojmy a postupy. Suma - shrnutí učební látky. Zpracoval: Mgr. Rostislav Fojtík Katedra informatiky a počítačů Přírodovědecká fakulta Ostravská univerzita rostislav.fojtik@osu.cz
8 Úvodní lekce Cíl lekce Cílem této lekce je vás seznámit s organizací výukového kurzy a požadavky na udělení zápočtu. Po absolvování lekce budete: vědět, jaké lekce kurz obsahuje a kdy by jste je měli absolvovat vědět, kdy odevzdat samostatné práce vědět, jaké jsou požadavky na udělení zápočtu z předmětu "Programování v C" Časová náročnost lekce: 30 minut Pro zdárné absolvování kurzu "Programování v C" jsou vhodnými základními předpoklady znalosti z předmětů ALDS1, ALDS2. Dále jsou vhodné znalosti z předmětu ARPOC, hlavně z oblasti dělení a organizace paměti, práce procesorů. Poznámka: v databázi "Student" je kurz pro distanční studium pojmenován XPRO1. Stejně jako ostatní distanční kurzy je na první místo v názvu vloženo písmeno X. Důvodem je potřeba odlišit distanční kurzy od běžné prezenční formy. Cílem kurzu "Programování v C" je rozšířit si znalosti programování a algoritmizace a to aplikací na konkrétní, komerčně velmi rozšířený a využívaný programovací jazyk C. Po absolvování kurzu budete umět vytvářet programy a jednoduché aplikace v tomto jazyku. Získané znalosti využijete v návazných předmětech PROC2 (Programování v C++) i v předmětech JAVA1 a JAVA2. Dovednosti a znalosti z jazyka C uplatníte rovněž například ve skriptovacích jazycích, jako je JavaScript. Název kurzu: Programování v C Zkratka kurzu: XPRO1 Nutné předpoklady: - Doporučený ročník: druhý Semestr: zimní Počet kreditů: 6 Zakončení: zápočet Tutor: Mgr. Rostislav Fojtík Týdenní rozsah hodin: 2+2 (přednáška+seminář, jen pro prezenční studium) Katedra: KIP (Katedra informatiky a počítačů) Fakulta: Přírodovědecká Komunikace mezi všemi účastníky kurzu je velmi důležitá. Pro její zajištění slouží následující způsoby: - elektronická pošta. Adresa vyučujícího (lektora kurzu) je rostislav.fojtik@osu.cz. Je důležité, aby studenti během semestru neměnili své ové adresy! elektronická konference telefonicky - telefonní spojení na vyučujícího Mgr. Rostislav Fojtík
9 konzultace prezenční formou - konzultace probíhají po předcházející domluvě. Kancelář č.24, v budově na adrese 30.dubna 22, Ostrava. Další možnosti komunikace: ICQ - číslo vyučujícího je internetová video konference - je potřeba domluvit s vyučujícím Veškeré dotazy týkající se učiva, neposílejte na vyučujícího, ale do elektronické konference! Důvodem je možnost zapojení ostatních účastníků kurzu na řešení problémů. Samostatné práce Během semestru budou vyhlášeny a zadány tři samostatné projekty (úkoly). Vyhlášení úkolu bude vždy měsíc před jeho odevzdáním. Termíny: Samostatná práce č.1 - zadání 30.září - odevzdání 30.října Samostatná práce č.2 - zadání 30.října - odevzdání 30.listopadu Samostatná práce č.3 - zadání 10.listopadu - odevzdání 10.prosince Za každou samostatnou práci můžete získat 0-15 bodů. Upozorňuji, že práce odevzdané po termínu nebudou hodnoceny! Celkově za samostatné práce můžete získat až 45 bodů. Pro udělení zápočtu je potřeba získat minimálně 30 bodů. Podmínky udělení zápočtu Kurz "Programování v C" je ukončen udělením zápočtu. Aby jste zápočet získali, musíte splnit následující podmínky: v určeném termínu odevzdat samostatné projekty, které budou zadány v průběhu semestru získat za samostatné projekty nejméně dvě třetiny bodů. To je nejméně 30 bodů z celkových 45. osobně se dostavit na katedru a před tutorem obájit a vysvětlit své programy Obsah kurzu Výukový kurz obsahuje níže uvedené výkladové lekce. U každé lekce je uvedena přibližná časová náročnost a datum, ke kterému by jste měli lekci absolvovat - zvládnout její učivo. Nenechávejte si studium na poslední chvíle, nestihnete absolvovat kurz! Úvodní lekce - 30 min Základní informace - 2 hod Základní řídící struktury - 2 hod Funkce - 2 hod Preprocesor - 90 min Pointery - 2 hod Jednorozměrné pole - 2 hod Vícerozměrná pole - 2 hod Práce s řetězci - 2 hod Struktury, uniony a výčtové typy - 2 hod Oddělený překlad a paměťové třídy - 2 hod Práce se soubory - 3 hod Další možnosti jazyka C - 2 hod
10 Literatura Pro dobré zvládnutí učiva je potřeba studovat i z dalších zdrojů. Velmi doporučuji knihu: Herout, P. Učebnice jazyka C, Kopp, České Budějovice, 1996, ISBN (nebo jakékoliv vydání této publikace) Tato kniha patří k nejlepším publikacím pro začátečníky. I jeji cena je velmi příznivá. Další literatura: Herout, P. Učebnice jazyka C - 2.díl, Kopp, České Budějovice, 1995, ISBN Virius, M. Pasti a propasti jazyka C++, Grada, Praha 1997, ISBN Fikar, Z.,Frimlová, I., Kukal, J., Letoš, R. Programátorský babylón, Grada, Praha 1992, ISBN Shrnutí lekce Kurz "Programování v C" je ukončen udělením zápočtu. Aby jste zápočet získali, musíte splnit následující podmínky: v určeném termínu odevzdat samostatné projekty, které budou zadány v průběhu semestru získat za samostatné projekty nejméně dvě třetiny bodů. To je nejméně 30 bodů z celkových 45. Odevzdání prací , a ! osobně se dostavit na katedru a před tutorem obájit a vysvětlit své programy
11 Úvod do programovacího jazyka C Cíl lekce Cílem této lekce je seznámit se se základními informacemi o programovacím jazyku C tak, aby jste byli schopni sestavit jednoduchý program. Po absolvování lekce budete: znát historii programovacího jazyka C umět napsat jednoduchý zdrojový text v jazyku C znát jednoduché datové typy a operátory jazyka C vědět, jakým způsobem pracuje překladač jazyka C Časová náročnost lekce: 2 hodiny Vstupní test Testové otázky a úkoly vstupního testu jsou obsaženy pouze v on-line verzi kurzu. Do textového souboru nelze zakomponovat dynamicky zpracované otázky s automatickým vyhodnocováním. Ukázka testovacích otázek 1) Který z níže uvedených programovacích jazyků nepatří mezi tzv. vyšší programovací jazyky? - assembler - FORTRAN - Pascal - Java 2) Který z níže uvedených programovacích jazyků nepatří mezi tzv. vyšší programovací jazyky? - lokální - globální - konstantní - nemají speciální název 3) Který z následujících datových typů není ordinární? - zásobník - fronta - binární strom - pole 4) Jak lze charakterizovat datový typ pole? - uspořádaná množina prvků stejného typu - uspořádaná množina prvků různého typu - spojitý úsek celých čísel - samostatné prvky stejného typu, které obsahují ukazatele na další prvky
12 Stručná historie jazyka C Programovací jazyk C patří dnes mezi velmi populární jazyka, zvlášť mezi profesionály. Za autory jazyka jsou považování Dennis Ritchie a Ken Thompson, kteří jej sestavili na počátku sedmdesátých let. První standard jazyka je popsán v knize D. Ritchieho a B. W. Kernighama The C Programming Language z roku Tento standard je často označován jako K&R. Dnes již jsou stanoveny mezinárodní standardy (ANSI, ISO), které zajišťují přenositelnost na jiné typy počítačů. Obecné charakteristiky jazyka C: - C je obecně použitelný programovací jazyk (Fortran - vědeckotechnické výpočty; Cobol - úlohy z oblasti obchodu; Pascal, Scheme - pro výuku; Assembler - systémové programování...) - jedná se o strukturovaný jazyk - většinou je jazyk C implementován jako překládač - překladač jazyka C je rozsahem malý a lze ho poměrně snadno přenést na jiné platformy - programy vytvořené pomocí jazyka C mají poměrně krátkou dobu provádění, nízké nároky na paměť a dají se lehce přenášet na jiné počítače (portabilita) Jazyk C byl dále upravován a rovněž byl použit jako základ při vývoji programovacího jazyka C++, který je dílem Bjarne Stroustrupa. Způsob zpracování programu Zpracování programu probíhá v několika fázích. Nejprve je potřeba v editoru napsat zdrojový soubor, který má většinou příponu C. Dále přichází na řadu preprocesor, který bývá součástí překladače a který dále zpracovává zdrojový text. Například vkládá hlavičkové soubory, rozvíjí makra, atd. V další fázi compiler (překladač, kompilátor) provádí překlad upraveného zdrojového textu do relativního kódu (někdy kódu relativních adres) a vytvoří soubor s příponou OBJ. V této fázi nejsou ještě známy adresy proměnných a funkcí. Následuje spojování (sestavování) programu pomoci linkeru, který zajišťuje nahrazení relativních adres adresami absolutními a provede odkazy na příslušné knihovní funkce. Výsledkem této činnosti je již spustitelný soubor s příponou EXE (případně COM). Mnoho dnešních překladačů je v rámci daného integrovaného prostředí spojeno s překladačem programovacího jazyka C++. Zde může nastat určitý problém při nedbalé práci. Například překladač Borland C/C má prostředí nastaveno tak, že má-li zdrojový soubor příponu CPP je spouštěn překladač C++. V opačném případě se spouští překladač jazyka C. Proto je nutné před kompilaci zdrojový soubor nejprve uložit a to nejlépe s příponou C. Nehledě k tomu, že spouštět neuložený program je hazardování z textem, který programátor v potu tváře vytvořil! Během kompilace programu je potřeba nejprve soubor uložit. Některá vývojová prostředí totiž obsahují kompilátory jazyka C i C++ (což jsou do značné míry rozdílné programovací jazyky). Nástroje většinou implicitně připojují ke zdrojovému souboru koncovku cpp a spouští kompilátor C++. Takto například pracuje starší rozšířený kompilátor Borland C/C Po napsání a uložení zdrojového souboru se nesnažte program okamžitě spustit. Ale nejprve soubor překompilujte a zkontrolujte si errors i warnings. Warnings (upozornění) nemusí ještě stoprocentně znamenat chybu, ale upozorňují na podezřelou nebo neobvyklou konstrukci. Pozor! Nikdy nekompilujte a nespouštějte neuložený zdrojový soubor. Mohli by jste přijít o svou práci.
13 Základní informace Programovací jazyk C důsledně rozlišuje velká a malá písmena. Proto Nazev, nazev a NAZEV jsou jednoznačně různé identifikátory. Číselné konstanty mohou být v desítkové, osmičkové nebo šestnáctkové soustavě. Desítkové celé číslo je vyjádřeno posloupnosti číslic, z niž první nesmí být nula. Např. 165, 12, 1. V osmičkové (oktalové) začíná posloupnost číslic nulou: 061, 07. Číslo zapsáno v šestnáctkové (hexadecimální) soustavě je vytvořené posloupnosti nuly, malého či velkého znaku x a hexadecimálními znaky (0-9, A -F). U záporných čísel se píše znaménko mínus. Reálné konstanty jsou implicitně typu double zapisují se s desetinou tečkou. Například: 3.14, 0.65,.65, 12., 5e12, 1E5. Konstanty typu float se ukončují písmenem F nebo f (2.14f ). Typ long double zakončuje písmeno L nebo l (4e12L). Znakové konstanty jsou ohraničeny apostrofy: 'a', 'X', '[', '2'. Znaky z počátku ASCII tabulky se zapisují ve tvaru '\ooo', kde písmena ooo jsou nahrazeny posloupností tří oktálových číslic. Příklad: '\010', '\001', '\013'. Je možné také použít hexadecimálního zápisu. Příklad: '\0x0B', '\0x01', '\0x1f'. Některé obvykle používané znaky mají své znakové vyjádření: \n \0x0A nová řádka \a \0x07 pípnutí \r \0x0D návrat na začátek řádky \t \0x0C tabulátor \b \0x08 posun doleva \0 \0x00 nulový znak Řetězcové konstanty jsou ohraničeny uvozovkami. Příklad: "Nejaky text". Komentáře a poznámky jsou ohraničeny mezi znaky /* a */. Příklad: /* mezi temito znaky je nejaky komentar */ Pozor na vložené komentáře. Poznámka je vždy ukončena první dvojicí znaků */. Příklad: /* mezi temito znaky je nejaky komentar /* zde je nejaky vlozeny komentar */ tato cast jiz není povazovana za komentar! */ Jednoduché datové typy Podobně jako jazyk Pascal má programovací jazyk C jednoduché datové typy, které určují množinu přípustných hodnot. Celočíselné ordinální typy jsou: short int (zkráceně short), int, long int (zkráceně long), char. Mohou být buď unsigned nebo signed, to jest neznaménkové (tedy jen kladné) nebo se znaménkem (rozumí se unární '+' nebo '-'). Neordinální typy (reálné čísla s pohyblivou řadovou tečkou) jsou float, double a long double. Jednotlivé rozsahy jsou určeny příslušnými překladači a dají se zjistit aplikací operátoru sizeof. Příklad: sizeof(int). Definice proměnných se v jazyce C provádí následujícím způsobem: int a,b; unsigned int c; float f,g,h; long l;
14 Definice proměnných může být spojená s její inicializací na počáteční hodnotu.: int a = 1, b = 12, c; Kontrolní úkol: Zjistěte jaký rozsah mají datové typy char, int, long, float, double a long double ve vašem kompilátoru jazyka C. Typová konverze Jazyk C umožňuje implicitní (automatickou) a explicitní (požadovanou) typovou konverzi (převod mezi datovými typy). K implicitní konverzi dochází: 1) V přiřazovacích výrazech je typ na pravé straně konvertován na typ na levé straně výrazu. 2) Jsou-li dva operandy ve výrazu různých typů, pak se operand s nižší prioritou konvertuje na typ s prioritou vyšší. Podle schématu int => unsigned int => long => unsigned long => float=> double => long double 3) Typ char a short int se konvertují automaticky na int Explicitní konverzi využíváme v případě, že chceme změnit určitý datový typ (přetypovat) a nenastane samovolná konverze. Provádí se tak, že do kulatých závorek umístěných před konvertovanou proměnnou či výrazem uvedeme nový datový typ. Příklady: (int)char_vyraz Převede char výraz na int (float)int_vyraz Převede int výraz na float (int)float_vyraz Převede float výraz na int, odřízne desetinnou část. Pozor, však na přetečení rozsahu čísla! Jednoduché operátory Binární operátory + sčítání - odečítání * násobení / celočíselné dělení / reálné dělení % modulo O tom, zda dělení bude celočíselné nebo reálné rozhoduje typ operandů. Je-li alespoň jeden z nich typu float, double nebo long double bude dělení realné. Budou-li oba operandy celá čísla, jedná se o dělení celočíselné. Unární operátory Zde patří běžné unární plus + a unární mínus -. Dále se v jazyku C používají speciální operátory inkrementace ++ a dekrementace --. Tyto operátory zvětšují (případně zmenšují) výraz o jedničku. Podle toho zda tyto operátory leží před nebo za operandem se buď nejprve operand upraví o jedničku a pak se tato hodnota použije ve výrazu nebo naopak. Příklad: int a = 5, b = 2, c; b++; /* b má hodnotu 3 */ c = a + b++; /* c bude 8, a bude 5, b bude 4*/ c = ++a + b; /* c bude 10, a bude 6, b bude 4*/
15 Přiřazovací operátory Pro přiřazení se používá znaku =. Kromě jednoduchého přiřazení umožňuje jazyk C použití dalších přiřazovacích operátorů. Například: l-hodnota += výraz; znamená l-hodnota = l-hodnota + výraz; l-hodnota -= výraz; znamená l-hodnota = l-hodnota - výraz; l-hodnota *= výraz; znamená l-hodnota = l-hodnota * výraz; l-hodnota /= výraz; znamená l-hodnota = l-hodnota / výraz; l-hodnota %= výraz; znamená l-hodnota = l-hodnota % výraz; a += 12; /* to samé jako a = a + 12; */ Kontrolní úkol: Jakou hodnotu bude mít proměnná x v následujícím příkladu? int y = 20; int x = 10; x++; // 1. x += 5; // 2. x = y / 3 // 3. Řešení: 1. x = x = x = 6
16 Ukázka programu Jednoduchý příklad zdrojového textu: /* * Ukazkovy zdrojovy text * Rostislav Fojtik, Ostrava, 2001 */ /* vlozeni hlavickovych souboru */ #include <stdio.h> /* deklaracni cast */ /* definice globalnich promennych */ int glob = 100; /* hlavicky funkci */ int TretiMoc(int); /* hlavni funkce */ int main( ) /* definice lokalnich promennych */ int lokalni; lokalni = TretiMoc(glob); printf("%d", lokalni); return 0; /* definice funkci */ int TretiMoc(int x) return (x * x * x); Definice mohou být uváděny před hlavní funkci main. Vzhledem k lepší přehlednosti, je však doporučuji psát až za tuto funkci.
17 Příklady Příklad č.1 Krokujte následující program, v okně watch sledujte hodnoty jednotlivých proměnných. int main() int a=10, b=5, c; a++; c = a + b; c = a + b++; c = --a + b; c = a+++b; return 0; Příklad č. 2 Krokujte následující program, v okně watch sledujte hodnoty jednotlivých proměnných. int main() int a=10, b=4, c; float f=3.1, g; c = a / b; c = a % b; g = a / b; g = a / f; g = a / (float)b; return 0;
18 Opakovací test Testové otázky a úkoly opakovacího testu jsou obsaženy pouze v on-line verzi kurzu. Do textového souboru nelze zakomponovat dynamicky zpracované otázky s automatickým vyhodnocováním. Ukázka testovacích otázek 1) Který z následujících číselných typů má největší rozsah?pro který typ se vytvoří proměnná s největším požadavkem na paměť? - long - unsigned int - int - char 2) Který z následujících zápisu zvětší proměnnou x o jedna? x++; x*=1; x + 1; x+=x++; 3) Co je to sizeof(x)? Kde je x proměnná. - operátor zjišťující velikost proměnné x - funkce zjišťující velikost proměnné x - makro zjišťující velikost proměnné x - chybný zápis funkce 4) Kolik musí mít každý program vytvořený v jazyce C nejméně funkcí? - alespoň jednu main - minimálně dvě - žádnou - není žádné omezení
19 Shrnutí učiva Obecné charakteristiky jazyka C: - C je obecně použitelný programovací jazyk - jedná se o strukturovaný jazyk - většinou je jazyk C implementován jako překládač - překladač jazyka C je rozsahem malý a lze ho poměrně snadno přenést na jiné platformy - programy vytvořené pomocí jazyka C mají poměrně krátkou dobu provádění, nízké nároky na paměť a dají se lehce přenášet na jiné počítače (portabilita) Mezinárodní standard jazyka C - ISO Zpracování programu probíhá ve fázích: 1. V editoru se napíše zdrojový soubor, který má většinou příponu C. 2. Spustí se preprocesor. 3. V další fázi pracuje compiler (překladač, kompilátor) provádí překlad upraveného zdrojového textu do relativního kódu (někdy kódu relativních adres) a vytvoří soubor s příponou OBJ. 4. Následuje spojování (sestavování) programu pomoci linkeru, který zajišťuje nahrazení relativních adres adresami absolutními a provede odkazy na příslušné knihovní funkce. Výsledkem této činnosti je již spustitelný soubor s příponou EXE (případně COM). Programovací jazyk C důsledně rozlišuje velká a malá písmena. Definice proměnných se v jazyce C provádí následujícím způsobem: unsigned int c; float f,g,h; Definice proměnných může být spojená s její inicializací na počáteční hodnotu.: int a = 1, b = 12, c; Jazyk C umožňuje implicitní (automatickou) a explicitní (požadovanou) typovou konverzi (převod mezi datovými typy). Rejstřík explicitní konverze funkce identifikátor implicitní konverze jednoduché datové typy kompilátor linker operátor preprocesor relativní adresy
20 Základní řídící struktury Cíl lekce V každém programovacím jazyce je potřeba umět definovat základní řídící struktury, jako jsou bloky příkazů, podmínky, cykly. Kromě toho se v této lekci naučíte základní funkce pro formátovaný vstup a výstup dat v programu. Po absolvování lekce budete: používat jednoduché funkce pro čtení a zápis hodnot do proměnných umět vytvářet bloky příkazů umět zapisovat podmínky umět definovat a řídit cykly s podmínkou na začátku i na konci Časová náročnost lekce: 2 hodiny Vstupní test Testové otázky a úkoly vstupního testu jsou obsaženy pouze v on-line verzi kurzu. Do textového souboru nelze zakomponovat dynamicky zpracované otázky s automatickým vyhodnocováním. Ukázka testovacích otázek 1) Ukázka testovacích otázek - long integer - float - long double - void 2) Který z následujících nástrojů převádí zdrojový soubor programu napsaného v jazyce C do relativního kódu (soubor s příponou obj)? - kompilátor - linker - preprocesor - editor 3) Který z následujících příkazů přetypuje proměnnou x na typ long int? - (long)x - (long double)x - long x - long (x) 4) Který z následujících příkazů přetypuje proměnnou x na typ long int? - typ unsigned int na typ long int - typ long int na typ int - typ unsigned int na typ unsigned char - typ long double na typ long int
21 Vstup a výstup Protože programovací jazyk C má malé jádro, musí většinu funkcí připojovat. K tomu je však potřeba do zdrojového souboru přidat příslušnou hlavičku funkce, které jsou nejčastěji umístěny v hlavičkových souborech s příponou H. Pro formátovaný vstup a výstup musíme přidat do programu příkaz: #include <stdio.h> Funkce, které formátovaný vstup a výstup zajišťují jsou: pro vstup scanf( ) pro výstup printf( ) První parametr, který je ohraničen úvozovkami, určuje formát vstupu či výstupu. Dále následují jména proměnných, která se načítají či vypisují. Příklad: scanf("%d", &a); /* načte dekadické celé číslo a uloží na adresu proměnné 'a' */ printf("%d", a); /* vypíše v dekadickém tvaru obsah proměnné 'a' */ Příklad: Program načte z klávesnice dvě celá čísla, uloží jejich hodnoty do proměnných. Proměnné vypíše. Dále vypíše jejich součin a rozdíl. #include <stdio.h> int main( ) int a,b; scanf("%d", &a); scanf("%d", &b); /* nesmite zapomentou uvest adresni operator '&' jinak se nactena hodnota ulozi "nekam" do pameti a ne na adresu urcene promenne */ printf("a = %d ", a); printf("b = %d", b); /* nebo printf("a = %d b = %d", a,b); */ printf("soucin cisel %d a %d je %d\n",a, b, a * b); printf("rozdil cisel %d a %d je %d\n",a, b, a - b); return 0; Formátové specifikace: c znak d desítkové číslo typu signet int ld desítkové číslo typu long int u desítkové číslo typu unsignet int lu desítkové číslo typu unsignet long int f float Lf long double lf double x hexadecimální číslo (např. 1a2) X hexadecimální číslo (např. 1A2) o osmičkové číslo s řetězec Vstup a výstup jednotlivých znaků je zajištěn pomocí funkcí getchar( ) a putchar( ).
22 Příklad: program načte z klávesnice znak a následně jej vypíše na obrazovku #include <stdio.h> int main( ) int znak; /* obe funkce pracuji s promennymi typu int */ znak = getchar( ); putchar( znak ); return 0; Bloky příkazů Bloky příkazů jsou ohraničeny složenými závorkami a. V programovacím jazyku C je možné na začátku každého bloku definovat lokální proměnné. Příklad: int main() int a; int b; /* zde již proměnná 'b' nelze použít */ Podmínky Nejdříve je potřeba seznámit se s následujícími operátory: rovnost == (dvě znaménka rovná se) nerovnost!= logický součin && logický součet negace! menší < menší nebo rovno <= větší > větší nebo rovno >= Pro správnou práci z uvedenými operátory je potřeba důkladně si prohlédnout tabulku priority jednotlivých skupin operátorů (například v nápovědě překládače). Podmíněný příkaz má tvar: if (vyraz) prikaz; nebo if (vyraz) prikaz1; /* Zde musí být středník! */ else prikaz2; V případě bloku příkazu by předcházející zápisy vypadaly následovně: if (vyraz) prikaz1; prikaz2; /* Není středník! */ else prikaz3; prikaz4;
23 Navíc jazyk C umožňuje podmíněný výraz, který má tvar (vyraz)? prikaz1 : prikaz2; Jedná se o ternární operátor, který může být přiřazen nějaké proměnné. Příklad: int x; x = (x > 10)? 1 : 0; Příklad: Načtěte znak a v případě, že se jedná o malý znak, jej převeďte na znak velký. #include <stdio.h> int main() int znak; znak = getchar( ); znak =(znak >= 'a' && znak <= 'z')? znak-('a'-'a') : znak; putchar(znak); return 0; Častá chyba! Mezi časté chyby začátečníků při programování v C je, že vytvoří následující podmínku: if (x=10) prikaz; místo if (x==10) prikaz; První zápis je sice syntakticky správně, ale znamená: if ((x=10)!=0) prikaz; Vícenásobná podmínka Pro vícenásobné větvení používá programovací jazyk C příkaz switch, který se zapisuje například v následujícím tvaru: switch (vyraz) case hodnota1: prikaz1; break; case hodnota2: prikaz2; break; case hodnota3: prikaz3; break; case hodnota4: prikaz4; break; default : prikaz5; break; Výraz, podle něhož se vybírají jednotlivé větve, musí být jednoznačně typu int. Pozor, příkaz break je velmi důležitý. Jeho neuvedení znamená, že se provádějí všechny příkazy od větve s hledanou hodnotou, až po první příkaz break. To znamená, že v níže uvedeném příkladu se při vyhodnocení výrazu na hodnotu 2, se provedou příkazy prikaz2, prikaz3 a prikaz4. Větev default, která nemusí být nutně uvedena jako poslední, se vybírá v případě, že žádná z ostatních větví nevyhovuje. switch (vyraz) case 1: prikaz1; case 2: prikaz2; case 3: prikaz3; case 4: prikaz4; break; default : prikaz5; break;
24 Cykly Podobně jako v jiných jazycích lze pracovat v jazyce se dvěma základními druhy cyklu. Cyklus s podmínkou na konci vypadá následovně: do prikazy; while (vyraz_podminka); Naproti tomu cyklus s podmínkou na začátku používá následující zápis: while (vyraz_podminka) prikazy; V obou případech se do těla cyklu vrací, je-li podmínka vyhodnocena jako splněna (srovnej s cyklem s podmínkou na konci v Pascalu). Pro cyklus s podmínkou na začátku, u kterého je znám počet opakování, se používá zápisu: for (i = 1; i <= 10; i++) prikazy; Kde první část závorky představuje inicializaci počáteční hodnoty proměnné, která představuje čítač cyklu. Prostřední část vyjadřuje podmínku, při které se cyklus opakuje, a poslední část vyjadřuje krok o kolik se čítač mění. Předcházející zápis by samozřejmě šel napsat i následovně: i = 1; while (i <= 10) prikazy; i++; Všechny cykly jdou ukončit nebo přerušit pomocí příkazů break a continue. Kdy break ukončuje nejvnitřnější cyklus. Naopak continue přerušuje provádění těla cyklu, ale vrací se zpět k podmínce cyklu a teprve podle jejího vyhodnocení se rozhodne, zda bude cyklus pokračovat či nikoliv. i = 1; a = 1; while (i <= 10) a = a * i; if (a <= 20) break; i++; Častá chyba: Často se setkávám, že studenti zapisují cyklus s parametrem, kde proměnná i začíná na 1 a končí na hodnotě 10, takto: for(i=1;i==10;i++) prikazy; Uvědomte si, že druhý výraz v závorce je podmínka, která říká, kdy cyklus běží! Není to tedy mezní hodnota parametru cyklu. Příkazy skoků Kromě skokových příkazů break a continue, které určeným způsobem upravují provádění cyklu, existují další příkazy na odskok z daného místa programu na jiné. Známým příkazem, hlavně z jiných programovacích jazyků, je příkaz goto. Tomu je ale vhodné, pokud je to jen trochu možné, se raději vyhnout, neboť znepřehledňuje zdrojový kód.
25 Příklad použití:... goto navesti; /* odtud program odskočí až do míst uvozených návěštím */... navesti: /* zde bude program pokračovat */ prikazy; Dalším skokovým příkazem je return, který ukončí provádění dané funkce, ve které je zapsán a vrátí určenou hodnotu. Zatím jsme tento příkaz používali u funkce main( ). Kontrolní úkol: Čím se liší blok v jazyku C od bloku příkazu v Pascalu?
26 Příklady Příklad č. 1 Načtěte znak a vypište jeho desítkovou, osmičkovou a hexadecimální hodnotu. #include <stdio.h> int main() int znak; scanf("%c", &znak); printf("%d %o %x ", znak, znak, znak); return 0; Příklad č. 2 Vypište hodnoty ASCII tabulky od 33 do 128 znaku ve znakové, desítkové, hexadecimální a oktalové podobě. #include <stdio.h> int main() int i; for (i = 33; i <= 128; i++) printf("%5c- %4d%4o%4x ", i, i, i, i); /* cisla mezi % a formatem vypisu znamenaji, kolik ma byt v danem pripade vytisteno znaku */ return 0; Příklad č. 3 Načtěte tři celá čísla typu int a vypište je na obrazovku sestupně. #include <stdio.h> int main() int a,b,c; scanf("%d", &a); scanf("%d", &b); scanf("%d", &c); if ( a > b ) if ( b > c ) printf(" %d > %d > %d ", a, b, c); else if ( a > c ) printf(" %d > %d > %d ", a, c, b); else printf(" %d > %d > %d ", c, a, b); else if (a > c ) printf(" %d > %d > %d ", b, a, c); else if ( c > b) printf(" %d > %d > %d ", c, b, a); else printf(" %d > %d > %d ", b, c, a); return 0; Příklad č. 4
27 Vypočtěte součet celých čísel od načtené dolní po načtenou horní hranici. Výsledek vypište na obrazovku. Příklad upravte tak, aby součet číselné řady neobsahoval čísla, která jsou bezezbytku dělitelná zadaným číslem. #include <stdio.h> int main() int dolni, horni; /* hranice ciselne rady */ int i; /* citac cyklu */ int pom; /* pomocna promenna pro vymenu dolni a horni */ long int suma=0l; /* nutne vynulovat */ scanf("%d", &dolni); /* nezapomenout adresni operator */ scanf("%d", &horni); if (dolni > horni ) pom = dolni; dolni = horni; horni = pom; for (i = dolni; i <= horni; i++) suma += i; printf("soucet ciselne rady od %d do %d je %ld",dolni,horni,suma); return 0; Samostatná cvičení: P. Herout - Učebnice jazyka C, příklady a cvičení na straně (za kapitolou 4.3.1), cvičení na straně (za kapitolou 5.8).
28 Opakovací test Testové otázky a úkoly opakovacího testu jsou obsaženy pouze v on-line verzi kurzu. Do textového souboru nelze zakomponovat dynamicky zpracované otázky s automatickým vyhodnocováním. Ukázka testovacích otázek 1) Jaký z následujících příkazů skoku přeruší provádění cyklu, ale vrátí se do jeho podmínky? - continue - break - return - goto 2) Jak vypadá zápis ternárního operátoru? (vyraz)? prikaz1 : prikaz2; (vyraz) : prikaz1? prikaz2; (vyraz)? prikaz1 else prikaz2; (vyraz)? prikaz1 ; prikaz2; 3) Který z následujících cyklů proběhne desetkrát? for (i=0; i<10; i++) prikaz; for (i=0; i<=10; i++) prikaz; for (i=1; i=10; i++) prikaz; for (i=1; i==10; i++) prikaz; 4) Která z následujících podmínek bude splněna a provede se příkaz pr1? Platí: int x=10, y=20; if (x <= y) pr1; if (x > y) pr1; if (x = y) pr1; if (x == y) pr1;
29 Shrnutí učiva Pro formátovaný vstup a výstup musíme přidat do programu příkaz: #include <stdio.h> Funkce, které formátovaný vstup a výstup zajišťují jsou: pro vstup scanf( ) pro výstup printf( ) Bloky příkazů jsou ohraničeny složenými závorkami a. V programovacím jazyku C je možné na začátku každého bloku definovat lokální proměnné. Podmíněný příkaz má tvar: if (vyraz) prikaz; nebo if (vyraz) prikaz1; /* Zde musí být středník! */ else prikaz2; Navíc jazyk C umožňuje podmíněný výraz, který má tvar (vyraz)? prikaz1 : prikaz2; Pro vícenásobné větvení používá programovací jazyk C příkaz switch, který se zapisuje například v následujícím tvaru: switch (vyraz) case hodnota1: prikaz1; break; case hodnota2: prikaz2; break; case hodnota3: prikaz3; break; case hodnota4: prikaz4; break; default : prikaz5; break; Výraz, podle něhož se vybírají jednotlivé větve, musí být jednoznačně typu int. Cyklus s podmínkou na konci vypadá následovně: do prikazy; while (vyraz_podminka); Naproti tomu cyklus s podmínkou na začátku používá následující zápis: while (vyraz_podminka) prikazy; V obou případech se do těla cyklu vrací, je-li podmínka vyhodnocena jako splněna. Pro cyklus s podmínkou na začátku, u kterého je znám počet opakování, se používá zápisu: for (i = 1; i <= 10; i++) prikazy; Kde první část závorky představuje inicializaci počáteční hodnoty proměnné, která představuje čítač cyklu. Prostřední část vyjadřuje podmínku, při které se cyklus opakuje, a poslední část vyjadřuje krok o kolik se čítač mění. Příkazy skoku v jazyku C: break, continue, goto, return.
30 Rejstřík blok příkazů break continue cyklus goto podmínky úplné a neúplné return ternární operátor
31 Funkce Cíl lekce Tato lekce se zabývá vlastnostmi a možnostmi funkcí v programovacím jazyce C. Naučíte se, jak ve svém programu funkce správně definovat a používat. Po absolvování lekce budete: umět zapisovat hlavičky funkcí vědět, jak správně definovat funkce umět vytvářet rekurzivní funkce umět správně definovat a volat funkce s parametry vědět, jak definovat funkce, které se částečně chovají jako procedury Časová náročnost lekce: 2 hodiny Vstupní test Testové otázky a úkoly vstupního testu jsou obsaženy pouze v on-line verzi kurzu. Do textového souboru nelze zakomponovat dynamicky zpracované otázky s automatickým vyhodnocováním. Ukázka testovacích otázek 1) Který z následujících příkazů převede malá písmena na velká? Platí: char c; c = (c>='a' && c<='z')? c-('a'-'a'):c; c = (c>='a' c<='z')? c-('a'-'a'):c; c = (c>='a' & c<='z')? c-('a'-'a'):c; c = (c>'a' && c<'z')? c-('a'-'a'):c; 2) Který z následujících příkazů zcela ukončí provádění cyklu? break continue stop while 3) Kolikrát proběhne následující cyklus? for (i=0; i==10; i++) prikaz; ) Kolikrát proběhne následující cyklus? for (i=0; i<=10; i++) prikaz;
32 Program v jazyku C vždy obsahuje alespoň jednu funkci, která se jmenuje main(). Jejím voláním program začíná a končí při jejím ukončení. Tato funkce je v programu právě jedna! Ostatní funkce slouží k vytváření podprogramů. Na rozdíl od některých jiných programovacích jazyků (Pascal), nelze v rámci funkce definovat další funkci. Deklarace funkce se děje pomocí její hlavičky a vypadá například takto: long Rada(int dol, int hor); navratovy_typ JmenoFunkce(typ p1, typ p2); Deklarace funkcí se umisťují před hlavní funkci main() nebo ještě lépe do příslušných hlavičkových souborů. Za jménem funkce se vždy píší kulaté závorky a to i přesto, že funkce nemá ani jeden parametr! Při deklaraci není nutné u parametrů uvádět jejich jména - identifikátory, stačí pouze jejich datový typ. long Rada(int, int); Naopak definice jednotlivých funkcí (tedy jejich kód) se obvykle uvádí až za hlavní funkci. Je možné kód funkcí uvádět již před hlavní funkci main(), ale z hlediska přehlednosti se první způsob jeví jako vhodnější. Definice funkce může pak vypadat například následovně: long Rada(int dol, int hor)/*zde nesmí být středník */ int i; /* lokální proměnné */ long vys=0; for (i=dol; i<=hor; i++) vys += i; return vys; /* ukončení funkce a vracení hodnoty */ /* funkce vypočte součet čísel od čísla dol do hor */ Volání funkce se pak zapíše například takto: x = Rada(1,10);
33 Rekurzivní funkce Funkce mohou být rovněž rekurzivní. Ukážeme si to na klasickém příkladu výpočtu faktoriálu. #include <stdio.h> int Faktorial(int cis) return (cis <=1)? 1 : cis * Faktorial(cis-1); int main() int x=5,vys; vys=faktorial(x); printf("faktorial cisla %d je %d\n",x,vys); return 0; Rekurze může být: - přímá - rekurzivní funkce volá sama sebe - nepřímá - například funkce Fce1 volá ve svém těle funkci Fce2 a ta zpětně volá Fce1. Častá chyba! Nezapomeňte, že rekurze musí mít jasně stanovenou podmínku pro ukončení. V opačném případě dojde k přetečení zásobníku. Procedury Procedury v jazyku C sice neexistují, ale některé typy funkcí se defakto jako procedury chovají. To se děje díky datovému typu s názvem void, což je tzv. prázdný datový typ. Potom nemusíme ve funkci uvádět příkaz return. V případě, že funkci v určitém případě potřebuje ukončit dřív než na jejím konci, uvedeme v daném místě příkaz return, ale bez návratové hodnoty. Pokud je datový typ void uveden v závorkách za jménem funkce, znamená to, že funkce nemá žádný parametr. Pozor! Pokud neuvedeme v kulatých závorkách hlavičky funkce žádný datový typ, předpokládá kompilátor, že funkce obsahuje parametr typu int. Nejedná se tedy o deklaraci funkce bez parametrů! Příklad: void Tisk(void) printf(" At zije programovaci jazyk C "); void NejakaFunkce(); /* Pozor! Tato funkce má jeden parametr a to typu int */
34 Parametry funkcí Parametry funkcí jsou v jazyce C předávány pouze hodnotou. To znamená, že nemohou být skutečné parametry měněny uvnitř funkce. Tento nedostatek je řešen pomocí pointerů. Typ skutečného parametrů funkce by měl souhlasit s typem formálního parametru. Jinak se provede typová konverze na typy uvedené ve funkčním prototypu. Příklad: float Exponent(float x, int n) //kód funkce int main() int a=10, b=3; float vys; //... vys = Exponent(a,b); /*první parametr kude konvertován na typ float*/ vys = Exponent(a); /*Chyba! Chybí druhý parametr!*/ return 0; Kontrolní úkol: Zopakujte si, jakým způsobem je obsazován zásobník v paměti, při ukládání mezivýpočtů při volání rekurzivní funkce Faktorial.
35 Příklady Příklad č.1 Vytvořte funkci, která vrátí menší ze dvou parametrů funkce. #include <stdio.h> int Mensi(int, int); /* deklarace funkce */ int main(void) int a,b; printf("zadej první cele cislo: "); scanf("%d", &a); printf("zadej druhe cele cislo: "); scanf("%d", &b); printf("vetsi ze dvou cisel %d a %d je %d\n",a, b, Mensi(cis)); return 0; int Mensi(int x1, int x2) return (x1 < x2)? x1 : x2; Příklad č.2 Napište funkci, která vypočte n-tou mocninu čísla x. (x n ) #include <stdio.h> float Mocnina(int, int); /* deklarace funkce */ int Abs(int); int main(void) int mc,mt; printf("zadej mocnenec: "); scanf("%d", &mc); printf("zadej mocnitel: "); scanf("%d", &mt); printf(" %d-ta mocnina cisla %d je %f\n",cis, Mocnina(mc,mt)); return 0; float Mocnina(int x, int n) int i; float vys=1; for (i=1; i<=abs(n); i++) vys *=x; if (n<0) vys = 1/vys; return vys; int Abs(int c) /* funkci je mozne definovat az za funkci Mocnina, nebot je nazacatku jeji deklarace */
36 return (c < 0)? c * (-1) : c; Příklad č.3 Vytvořte program s funkcí, která zjistí největší společný dělitel dvou čísel. Použijte například Euklidova algoritmu: Obměňte program tak, že funkci napište pomocí rekurze. #include <stdio.h> int NSD(int, int); /* deklarace funkce */ int main(void) int a, b; printf("zadej prvni cele cislo: "); scanf("%d", &a); printf("zadej druhe cele cislo: "); scanf("%d", &b); printf(" Nejvetsi spolecn delitel cisel %d a %d je %d\n",a,b,nsd(a,b)); return 0; int NSD( int x, int y) while (x!= y) if (x > y) x -= y; else y -= x; return x; Příklad č.4 Vytvořte rekurzivní funkci pro výpočet sumy čísel v rozmezí od zadané dolní do horní hranice včetně. Například dolní hranice je 5, horní 11, pak suma je #include <stdio.h> int Suma(int, int); int main(void) int a, b; printf("zadej dolni hranici: "); scanf("%d", &a); printf("\nzadej horni hranici: "); scanf("%d", &b); printf(" Soucet cisel od %d do %d je %d\n",a,b,suma(a,b)); return 0; int Suma (int dol, int hor) if (dol == hor) return dol; else return (Suma(dol, hor-1) + hor); Příklad č.5 Vytvořte funkci pro výpočet faktoriálu nejprve pomocí cyklu a pak i pomocí rekurze.
37 Opakovací test Testové otázky a úkoly opakovacího testu jsou obsaženy pouze v on-line verzi kurzu. Do textového souboru nelze zakomponovat dynamicky zpracované otázky s automatickým vyhodnocováním. Ukázka testovacích otázek 1) Kolik parametrů má funkce, jenž má hlavičku: int NejakaFunkce(); libovolné množství 2) Kolik funckí lze definovat v rámci jiné určité funkce? libovolné množství 3) Které datové typy může funkce vracet jako svou návratovou hodnotu? - pouze jednoduché datové typy - pouze celočíselné datové typy - libovolné definované datové typy - všechny kromě ukazatele 4) Jak lze zapsat příkaz return u funkce která vrací datový typ void? return 1; return 0; return; příkaz return nelze použít
38 Shrnutí učiva Program v jazyku C musí obsahovat alespoň jednu funkci, která se jmenuje main(). Jejím voláním program začíná a končí při jejím ukončení. Tato funkce je v programu právě jedna! Ostatní funkce slouží k vytváření podprogramů. V rámci funkce nelze definovat další funkci. Deklarace funkce: navratovy_typ JmenoFunkce(typ p1, typ p2); Funkce mohou být rovněž rekurzivní. int Faktorial(int cis) return (cis <=1)? 1 : cis * Faktorial(cis-1); Procedury v jazyku C sice neexistují, ale některé typy funkcí se defakto jako procedury chovají. To se děje díky datovému typu s názvem void, což je tzv. prázdný datový typ. Potom nemusíme ve funkci uvádět příkaz return. Parametry funkcí jsou v jazyce C předávány pouze hodnotou. To znamená, že nemohou být skutečné parametry měněny uvnitř funkce. Tento nedostatek je řešen pomocí pointerů. Typ skutečného parametrů funkce by měl souhlasit s typem formálního parametru. Jinak se provede typová konverze na typy uvedené ve funkčním prototypu. Rejstřík deklarace funkce funkce hlavička funkce main parametr funkce procedura rekurze void
39 Preprocesor Cíl lekce Cílem této výukové lekce je naučit se vytvářet a využívat příkazy preprocesoru. V lekci se dozvíte, jak dělat makra bez i s parametry, vkládat soubory či zapisovat příkazy pro podmíněný překlad. Po absolvování lekce budete: umět vkládat soubory do zdrojových textů umět vytvářet makra bez parametrů umět zpřehlednit své zdrojové texty pomocí maker umět vytvářet makra s parametry umět ladit a testovat své programy pomocí podmíněného překladu Časová náročnost lekce: 90 minut Vstupní test Testové otázky a úkoly vstupního testu jsou obsaženy pouze v on-line verzi kurzu. Do textového souboru nelze zakomponovat dynamicky zpracované otázky s automatickým vyhodnocováním. Ukázka testovacích otázek 1) Co znamená přímá rekurze? - funkce volá sama sebe - funkce volá jinou funkci - dvě nebo více funkcí se vzájemně volají - funkce je volaná jinou funkci 2) Co znamená nepřímá rekurze? - funkce volá sama sebe - funkce volá jinou funkci - dvě nebo více funkcí se vzájemně volají - funkce je volaná jinou funkci 3) Jakou příponu má zkompilovaný zdrojový soubor? - obj - exe - c - lib 4) Jakou příponu má zkompilovaný zdrojový soubor? - main - Main - MAIN - return
40 Preprocesor je nástroj, který upravuje zdrojový text před samotnou kompilací programu. Provádí vkládání hlavičkových souborů, podmíněný překlad, rozvíjí makra, vypouští komentáře. Příkazy preprocesoru začínají znakem "#". Úpravy prováděné preprocesorem nejsou součástí jazyka C a provádí se ještě před kompilací. Veškeré úpravy se týkají pouze textu. To znamená, že jednu posloupnost znaků nahrazují posloupností jinou (jeden text zamění za druhý). Preprocesor nezná příkazy jazyka C, datové typy, proměnné atd. Vkládání souborů Soubory se do zdrojového textu vkládají pomocí příkazu #include. Za tímto příkazem se napíše jméno souboru. V případě, že se jméno souboru nachází mezi znaky menší větší, pak je hlavičkový soubor umístěn ve standardním adresáři (např. INCLUDE). #include <stdio.h> Je-li jméno hlavičkového souboru mezi uvozovkami, pak je jeho umístění v aktuálním nebo uvedeném adresáři. #include "muj.h" #include "c:\programy\funkce.h" Makra bez parametrů Makra bez parametrů se občas nazývají symbolické konstanty. Jejich účelem je nahrazení posloupnosti znaků jiným řetězcem. K vytvoření maker slouží příkaz #define. #define MAX 100 #define TISK printf("ahoj!\n"); Kdekoliv se v programu objeví řetězec MAX bude nahrazen posloupnosti znaků 100. Pozor! Preprocesor skutečně nechápe hodnotu 100 jako číslo, ale jako posloupnost znaků. Jako číslo bude chápana až kompilátorem. Podobně bude pracováno s ostatními makry. Jména maker se většinou píší velkými znaky. Je-li tělo makra dlouhé a nevejde-li se na jeden řádek, uvede se na jeho konci obrácené lomítko. #define TEXT Text, který se nevejde na jeden radek \ a pokracuje na druhem radku. Pozor! Makro se nerozvine uvnitř řetězce! #define JMENO Karel Novak printf("jeho jmeno je JMENO"); Na obrazovce se objeví výpis "Jeho jmeno je JMENO" a neobjeví se "Jeho jmeno je Karel Novak", jak bychom možná mylně očekávali. Makra s parametry Makra mohou mít rovněž parametry. Na rozdíl od funkcí, se však parametrům u maker neurčuje datový typ. #define soucin(a,b) ((a)*(b)) Za jménem makra nesmí být mezera, jinak by preprocesor řádek chápal jako makro bez parametrů. Makra mohou v některých případech nahrazovat činnost funkcí. Na rozdíl od funkcí je provádění maker rychlejší, ale prodlužují zdrojový text. Je však mít stále na paměti, že preprocesor pracuje s tělem makra jako s řetězcem a ne s proměnnými a hodnotami určitého datového typu. Proto se rozvoj makra může provést jinak, než jsme předpokládali. Například, zapomeneme-li u předcházejícího makra závorky, můžeme se dostat do komplikací. #define soucin(a,b) a*b předcházející makro se po volání
41 vys = soucin(x+3,y+z); se rozvine následujícím způsobem vys = x + 3 * y + z; Je samozřejmé, že výsledek bude jiný, než programátor předpokládal. Naproti tomu funkce int FceSoucin(int a,int b) return (a*b); se při následujícím volání vyhodnotí správně. Výrazy v parametrech se nejprve vyhodnotí a teprve pak vloží do těla funkce. vys = FceSoucin(x+3,y+z); Pokud vynecháme vnější závorky kolem výrazu, opět můžeme narazit na problémy. #define soucin(a,b) (a)*(b) Při volání následujícího výrazu, se makro nevyhodnotí správně. vys = 100/soucin(2,5); Makro se rozvine následujícím způsobem vys = 100 / 2 * 5 Výsledek bude mít hodnotu 250 místo 10! Pozor! Makro neprovádí vyhodnocení svých parametrů před svým rozvinutím!
42 Podmíněný překlad Podmíněný překlad nám může značně ulehčit fázi ladění a testování programu. V rámci kódu se mohou objevit příkazy sloužící pouze pro ladění. Bez možnosti využít podmíněného překladu bychom museli ladící části ručně vymazat nebo vložit do poznámek. Takováto činnost je však velmi náročná a zdlouhavá. Pomocí příkazů preprocesorů však můžeme ladící části používat jen v případě ladění, aniž bychom museli zasahovat do zdrojového textu. Ladící kód zůstává neustále ve zdrojovém souboru, kdykoliv se k němu můžeme znovu vrátit a zbytečně nám neprodlužuje program. Možnosti zápisu podmíněného překladu jsou následující: #if konstantni_vyraz prikazy #else /* tato část jde vynechat */ prikazy #endif #ifdef MMM /*jestliže je definovano makro MMM */ prikazy1; #else prikazy2; #endif #if defined MMM /*jestliže je definovano makro MMM */ prikazy1; #else prikazy2; #endif #ifndef MMM /*jestliže není definovano makro MMM */ prikazy1; #else prikazy2; #endif #ife!defined MMM /*jestliže není definovano makro MMM */ prikazy1; #else prikazy2; #endif Hlavičkové soubory Hlavičkové soubory obsahují deklarace funkcí (funkční prototypy) a deklarace proměnných, datových typů, konstant, maker. Proti vícenásobnému vložení určitého hlavičkového souboru do zdrojového textu je potřeba opatřit text příkazy podmíněného překladu: #ifndef MUJ_H #define MUJ_H obsah_hlavickoveho_souboru #endif Kontrolní úkol: Prohlédněte si standardní hlavičkové soubory (např. stdio.h, io.h, stdlib.h) v adresáři INCLUDE a podívejte se na ošetření proti vícenásobnému vložení.
43 Příklady Příklad č.1 Vytvořte makro TISK, které bude vypisovat vaše jméno, a makro POCET, udávající počet výpisů. #include <stdio.h> #define POCET 10 #define TISK printf("rostislav Fojtik\n"); int main( ) int i; for (i=1; i<=počet; i++) TISK return 0; Příklad č.2 Vytvořte makro UpCase( c ), které zvětší malé písmeno na velké. #include <stdio.h> #define UpCase(c) ((c)>='a' && (c)<='z')?(c)-('a'-'z'):(c) int main( ) int znak; znak = getchar( ); znak = UpCase(znak); putchar( znak ); return 0; Příklad č.3 Vytvořte makro NaTreti( x ), které vypočte třetí mocninu x. #include <stdio.h> #define NaTreti(x) ((x)*(x)*(x)) int main( ) int cis, vys; printf("zadej cislo: "); scanf("%d", &cis); vys = NaTreti(cis) printf("vysledek je %d\n", vys); return 0; Příklad č.4
44 Vytvořte hlavičkový soubor FUNKCE.H, který bude obsahovat hlavičky funkcí Abs a NSD (viz. minulá lekce o funkcích). Prohledněte si strukturu standardních hlavičkových souborů. #ifndef FUNKCE_H #define FUNKCE_H int NSD( int, int ); int Abs( int ); #endif Opakovací test Testové otázky a úkoly opakovacího testu jsou obsaženy pouze v on-line verzi kurzu. Do textového souboru nelze zakomponovat dynamicky zpracované otázky s automatickým vyhodnocováním. Ukázka testovacích otázek 1) Který z následujících nástrojů se spouští při převádění zdrojového souboru na program jako první? - preprocesor - linker - kompilátor - všechny nástroje se spouštějí najednou 2) Který z následujících výroků není pravdivý? - makro nemůže vracet hodnotu - při volání makra se jeho parametry konvertují na určený typ - makra se nerozvinou, jsou-li součásti řetězce - makra s parametry se prováději rychleji než funkce 3) Který z následujících výroků je pravdivý? - makra převádí a vyhodnocuje kompilátor - makra se rozvinou a vyhodnotí před kompilací - makra nelze psát na více než jeden řádek - názvy maker se musí psát jen velkými písmeny 4) Které z následujících maker je nejvodnější pro výpočet třetí mocniny čísla? #define NaTreti(x) ((x)*(x)*(x)); #define NaTreti(x) ((x)*(x)*(x)) #define NaTreti(x) (x)*(x)*(x) #define NaTreti(x) ((x)*(x)*(x))
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
Ú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í
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
- 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
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.
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
Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44
Algoritmizace a programování Ak. rok 2012/2013 vbp 1. ze 44 Vladimír Beneš Petrovický K101 katedra matematiky, statistiky a informačních technologií vedoucí katedry E-mail: vbenes@bivs.cz Telefon: 251
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é
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
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
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
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.
Ú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) -
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Ý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ýrazy a operátory. Operátory Unární - unární a unární + Např.: a +b
Výrazy a operátory i = 2 i = 2; to je výraz to je příkaz 4. Operátory Unární - unární a unární + Např.: +5-5 -8.345 -a +b - unární ++ - inkrement - zvýší hodnotu proměnné o 1 - unární -- - dekrement -
Č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
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
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
Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44
Algoritmizace a programování Ak. rok 2012/2013 vbp 1. ze 44 Vladimír Beneš Petrovický K101 katedra matematiky, statistiky a informačních technologií vedoucí katedry E-mail: vbenes@bivs.cz Telefon: 251
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
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é
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í
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Ý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
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
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Ý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
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ář
Proměnná a její uložení v paměti
Proměnná a její uložení v paměti Počítačová paměť - řada buněk uložených za sebou, každá buňka má velikost 1 bajt (byte, B) - buňky jsou očíslovány, tato čísla se nazývají adresy Proměnná - data, se kterými
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í
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
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í
Úvod do programovacích jazyků (Java)
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích
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é
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é
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í
Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky
Vyučovací hodina 1vyučovací hodina: Opakování z minulé hodiny Nová látka Procvičení nové látky Shrnutí 5 min 20 min 15 min 5 min 2vyučovací hodiny: Opakování z minulé hodiny Nová látka Procvičení nové
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
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
Řídicí struktury. alg3 1
Řídicí struktury Řídicí struktura je programová konstrukce, která se skládá z dílčích příkazů a předepisuje pro ně způsob provedení Tři druhy řídicích struktur: posloupnost, předepisující postupné provedení
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é
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
- 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)
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
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í
Racionální čísla, operátory, výrazy, knihovní funkce
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 Racionální čísla,
Příkazy preprocesoru - Před překladem kódu překladačem mu předpřipraví kód preprocesor - Preprocesor vypouští nadbytečné (prázdné) mezery a řádky -
Příkazy preprocesoru - Před překladem kódu překladačem mu předpřipraví kód preprocesor - Preprocesor vypouští nadbytečné (prázdné) mezery a řádky - Preprocesor je možné ovládat pomocí příkazů - řádky začínající
Jazyk C++, některá rozšíření oproti C
Karel Müller, Josef Vogel (ČVUT FIT) Jazyk C++, některá rozšíření oproti C BI-PA2, 2011, Přednáška 1 1/22 Jazyk C++, některá rozšíření oproti C Ing. Josef Vogel, CSc Katedra softwarového inženýrství Katedra
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
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í
Racionální čísla, operátory, výrazy, knihovní funkce
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Racionální čísla, operátory, výrazy, knihovní funkce BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky Miroslav Balík
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
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!
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í
Operátory, výrazy. Tomáš Pitner, upravil Marek Šabo
Operátory, výrazy Tomáš Pitner, upravil Marek Šabo Operátor "Znaménko operace", pokyn pro vykonání operace při vyhodnocení výrazu. V Javě mají operátory napevno daný význam, nelze je přetěžovat jako v
Objektově orientované programování
10. října 2011 Pragmatické informace Volitelný předmět, zápočet: zápočtový program(s dokumentací), aktivní účast na cvičení(body v CodExu), praktický test, zkouška: zkoušková písemka na objektový návrh
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Ý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
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
IUJCE 07/08 Přednáška č. 4. v paměti neexistuje. v paměti existuje
Konstanty I možnosti: přednostně v paměti neexistuje žádný ; o preprocesor (deklarace) #define KONSTANTA 10 o konstantní proměnná (definice) const int KONSTANTA = 10; příklad #include v paměti
6. Příkazy a řídící struktury v Javě
6. Příkazy a řídící struktury v Javě Příkazy v Javě Příkazy v Javě Řídicí příkazy (větvení, cykly) Přiřazovací příkaz = Řízení toku programu (větvení, cykly) Volání metody Návrat z metody - příkaz return
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
Ukazka knihy z internetoveho knihkupectvi www.kosmas.cz
Ukazka knihy z internetoveho knihkupectvi www.kosmas.cz Upozornění pro čtenáře a uživatele této knihy Všechna práva vyhrazena. Žádná část této tištěné či elektronické knihy nesmí být reprodukována a šířena
Předmluva k aktuálnímu vydání Úvod k prvnímu vydání z roku Typografické a syntaktické konvence... 20
Obsah 5 Obsah Předmluva k aktuálnímu vydání 15 1 Úvod k prvnímu vydání z roku 2000 16 Typografické a syntaktické konvence................ 20 2 Základní pojmy 21 2.1 Trocha historie nikoho nezabije................
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
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
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í
Data, výrazy, příkazy
Data, výrazy, příkazy Karel Richta a kol. katedra počítačů FEL ČVUT v Praze Přednášky byly připraveny s pomocí materiálů, které vyrobili Ladislav Vágner, Pavel Strnad, Martin Hořeňovský, Aleš Hrabalík
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 Středa 10:30 12:00 Emailem martin.kauer@upol.cz Web předmětu http://tux.inf.upol.cz/~kauer/index.php?content=var&class=zp1
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
Programovací jazyk C(++) C++ area->vm_mm->locked_vm -= len >> PAGE_SHIFT;
Programovací jazyk C(++) static struct vm_area_struct * unmap_fixup(struct mm_struct *mm, struct vm_area_struct *area, unsigned long addr, size_t len, struct vm_area_struct 1. *extra) Základy { struct
Výrazy, operace, příkazy
Výrazy, operace, příkazy Karel Richta a kol. katedra počítačů FEL ČVUT v Praze Přednášky byly připraveny s pomocí materiálů, které vyrobili Ladislav Vágner, Pavel Strnad Karel Richta, Martin Hořeňovský,
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
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ů
Paměť počítače. alg2 1
Paměť počítače Výpočetní proces je posloupnost akcí nad daty uloženými v paměti počítače Data jsou v paměti reprezentována posloupnostmi bitů (bit = 0 nebo 1) Připomeňme: paměť je tvořena řadou 8-mi bitových
C++ Akademie SH. 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory. Michal Kvasni ka. 20. b ezna Za áte níci C++
C++ Akademie SH 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory Za áte níci C++ 20. b ezna 2011 Obsah 1 Prom nné - primitivní typy Celá ísla ƒísla s pohyblivou desetinnou árkou, typ bool 2 Podmínka
Přednáška 7. Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu.
Přednáška 7 Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu. 1 Příkaz expr výraz Celočíselná aritmetika I Zašle na standardní výstup vyhodnocení výrazu
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
Jazyk C# a platforma.net
Jazyk C# a platforma.net Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Pavel Štěpán, 2011 Syntaxe jazyka C# - 1. část BI-DNP Evropský sociální fond
Programování v jazyce JavaScript
Programování v jazyce JavaScript Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Pavel Štěpán, 2011 Operátory a příkazy BI-JSC Evropský sociální fond
int => unsigned int => long => unsigned long => float => double => long double - tj. bude-li:
13.4.2010 Typová konverze - změna jednoho datového typu na jiný - známe dva základní implicitní ("sama od sebe") a explicitní (výslovně vyžádána programátorem) - C je málo přísné na typové kontroly = dokáže
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Ý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
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
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
Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické
Jak v Javě primitivní datové typy a jejich reprezentace BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické Obsah Celočíselný datový typ Reálný datový typ Logický datový typ, typ Boolean
MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ
MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ 1) PROGRAM, ZDROJOVÝ KÓD, PŘEKLAD PROGRAMU 3 2) HISTORIE TVORBY PROGRAMŮ 3 3) SYNTAXE A SÉMANTIKA 3 4) SPECIFIKACE
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é
IUJCE Přednáška č. 11. další prvky globální proměnné, řízení viditelnosti proměnných, funkcí
Velké projekty v C velký = 100ky a více řádek udržovatelnost, bezpečnost, přehlednost kódu rozdělení programu do více souborů další prvky globální proměnné, řízení viditelnosti proměnných, funkcí Globální
1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: Ukončí program. Nula znamená, že vše proběhlo bez chyby.
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.
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
Programování v jazyce C pro chemiky (C2160) 9. Práce s PDB soubory
Programování v jazyce C pro chemiky (C2160) 9. Práce s PDB soubory Jednoduché (základní) datové typy Jazyk C obsahuje několik základní datových typů: int celá čísla (integer) char znak (character) float
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
Programy na PODMÍNĚNÝ příkaz IF a CASE
Vstupy a výstupy budou vždy upraveny tak, aby bylo zřejmé, co zadáváme a co se zobrazuje. Není-li určeno, zadáváme přirozená čísla. Je-li to možné, používej generátor náhodných čísel vysvětli, co a jak
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ě
Operátory. Základy programování 1 Martin Kauer (Tomáš Kühr)
Operátory Základy programování 1 Martin Kauer (Tomáš Kühr) Organizační poznámky Formátujte kód přehledně! Pomůžete sobě i mně. Spusťte si vaše programy a zkuste různé vstupy! Pokud program nedává správné
Úvod do programování. Lekce 5
I N V E S T I C E D O R O Z V O J E V Z D Ě L Á V Á N Í Inovace a zvýšení atraktivity studia optiky reg. č.: CZ.1.07/2.2.00/07.0289 Úvod do programování Lekce 5 Tento projekt je spolufinancován Evropským
Algoritmizace a programování
Algoritmizace a programování Jazyk C řízení běhu programu České vysoké učení technické Fakulta elektrotechnická Ver.1.10 J. Zděnek 2015 Šest zákonů programování 1. V každém programu je alespoň jedna chyba
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č