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

Podobné dokumenty
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:

Programovací jazyk Pascal

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

Úvod do programování. Lekce 1

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

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

Výrazy a operátory. Operátory Unární - unární a unární + Např.: a +b

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

Algoritmy v jazyku C a C++

C a C++ Algoritmy v jazyku. Jiří Prokop

Algoritmizace a programování

Algoritmizace a programování

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

Algoritmizace a programování

Ukázka knihy z internetového knihkupectví

Racionální čísla, operátory, výrazy, knihovní funkce

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

Programovací jazyk C++ Hodina 1

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44

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

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

Zápis programu v jazyce C#

Algoritmizace prostorových úloh

6. Příkazy a řídící struktury v Javě

Racionální čísla, operátory, výrazy, knihovní funkce

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

Úvod do programování - Java. Cvičení č.4

Úvod do programovacích jazyků (Java)

6 Příkazy řízení toku

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

Algoritmizace prostorových úloh

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

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

Algoritmy v jazyku C a C++

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

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

Programovací jazyk. - norma PASCAL (1974) - implementace Turbo Pascal, Borland Pascal FreePascal Object Pascal (Delphi)

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

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

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

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

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

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

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

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

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

Sada 1 - Základy programování

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

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

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

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

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

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

Proměnná a její uložení v paměti

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44

2 Datové typy v jazyce C

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

Inovace bakalářského studijního oboru Aplikovaná chemie

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

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

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 -

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

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

Stručný návod k programu Octave

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

Prezentace a vysvětlení programového prostředí NXC

Funkce, podmíněný příkaz if-else, příkaz cyklu for

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.

Paměť počítače. alg2 1

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

Základy programování (IZP)

C a C++ Algoritmy v jazyku. Jiří Prokop

Operátory, výrazy. Tomáš Pitner, upravil Marek Šabo

Datové typy strana 29

2.1 Podmínka typu case Cykly Cyklus s podmínkou na začátku Cyklus s podmínkou na konci... 5

PROGRAMOVÁNÍ V JAZYCE C V PŘÍKLADECH 11 Dynamické datové struktury 11.1 Spojové struktury Příklad PROG_

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.

Algoritmy v jazyku.

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

PHP - úvod. Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky.

Struktura programu, proměnné, konstanty, výrazy v jazycích C a C#

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

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

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE REALIZACE PŘEKLADAČE I

Identifikátory označují objekty v programu používané (proměnné, typy, podprogramy).

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

Jazyk C# a platforma.net

Z. Kotala, P. Toman: Java ( Obsah )

Poslední nenulová číslice faktoriálu

dovolují dělení velkých úloh na menší = dekompozice

Opakování programování

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

Předmluva k aktuálnímu vydání Úvod k prvnímu vydání z roku Typografické a syntaktické konvence... 20

Objektově orientované programování

PROGRAMOVÁNÍ V SHELLU

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

Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy

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

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

Transkript:

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í definice (platné a známé jen v této funkci) Příkazy funkcí může být více za sebou nesmějí ale být vnořovány do sebe hlavní funkce je v programu právě jedna. Provádění programu při jeho spuštění začne prvním em v těle hlavní funkce. Některé části mohou chybět, pokud je nepotřebujeme. Vždy však musí existovat hlavní funkce, vždy také potřebujeme připojit k našemu programu některé knihovny direktivou include. Zdrojový kód programu musíme přeložit kompilátorem. Překlad se skládá ze dvou fází, v první procesor plní direktivy (pozná je podle toho, že začínají znakem #, na konci není středník). Pak proběhne vlastní překlad. Pokud je úspěšný, lze program spustit. Údaje, s nimiž program pracuje, jsou buď konstanty nebo proměnné. Proměnné musí být v programu definovány, což znamená, že musí být uvedeno jejich jméno a datový typ. Teprve pak se mohou jejich jména objevit v ech a výrazech. Jména (identifikátory) volíme zpravidla tak, aby vypovídala o obsahu proměnné. Používáme malá písmena, číslice a podtržítko (číslice nesmí být první); upřednostňujeme české názvy. To nám usnadní rozlišování mezi jmény (identifikátory) a klíčovými slovy, která jsou anglicky a slouží ke specifikaci ů nebo typů. Jazyk C rozlišuje velká a malá písmena, takže Prog, prog a PROG jsou různá jména. Pro oddělování klíčových slov, identifikátorů a konstant slouží oddělovače (mezera nebo přechod na nový řádek). Všude, kde mohou být oddělovače, může být komentář. Komentář začíná znaky /* a končí */. /* toto je komentar */ Jednoduché datové typy: int pro celočíselné proměnné float pro racionální proměnné U konstant je typ dán způsobem zápisu: 4 je typu int, 4.1 je typu float. Existují i jiné typy, ale to necháme na později. Deklarace celočíselných proměnných, kterým jsme dali jména a,b,c, budou tedy vypadat takto: int a,b,c; float d; je deklarace proměnné d, která může obsahovat racionální číslo (s desetinnými místy) Strukturované datové typy: zatím známe jen pole, popíšeme později Výrazy jsou tvořeny operandy (těmi může být proměnná, konstanta nebo jiný výraz) a operátory Operátorů je v jazyku C velmi mnoho, nejdůležitější je operátor přiřazení = Zápis a=b; znamená : obsah proměnné b přiřaď proměnné a Operátory aritmetické jsou +, -,*, / a %. Význam + a je zřejmý, * je pro násobení, / je operátor dělení, jehož význam se ale liší v závislosti na operandech: buď jde o celočíselné dělení, nebo obvyklé dělení v případě alespoň jednoho neceločíselného operandu.

Operátor % (čteme modulo) znamená zbytek po dělení. Zvláštními operátory jsou unární (mají jen 1 operand) operátory ++ (přičtení jedničky) a -- (odečtení jedničky, které mohou navíc být psány dvojím způsobem. a++ je postfixový zápis, ++a prefixový Příklad: a=10; x=++a; /* x bude mít hodnotu 11, proměnná a taky */ y=a--; /* y má hodnotu 11, a hodnotu 10 */ Operátory relační jsou: <, >, <=, >=, == (rovnost),!= (nerovnost) Operátory logické: logický součet && logický součin! negace Příkazy. Napíšeme-li za výraz středník, stane se z něj. x=0; a++; Příkazy můžeme sdružovat do bloků (složených ů). Začátek a konec bloku je vymezen složenými závorkami. Složené y používáme tam, kde smí být použit pouze jeden, ale potřebujeme jich více. Za uzavírací složenou závorku nepíšeme středník. Řízení toku programu Příkaz if má dvě podoby: if (výraz) nebo if (výraz) 1 else 2 Složitější rozhodovací postup můžeme realizovat konstrukcí if else if. Každé else se váže vždy k nejbližšímu předchozímu if. Příkaz while. while(výraz) Výraz za while představuje podmínku pro opakování u. Není-li podmínka splněna už na začátku, nemusí se provést ani jednou. Je-li splněna, se provede a po jeho provedení se znovu testuje podmínka pro opakování cyklu. Příkaz do-while Zajistí aspoň jedno provedení těla cyklu, protože podmínka opakování se testuje na konci cyklu. do while(výraz) Příkaz for for(inicializační_výraz;podmíněný výraz;opakovaný výraz)

je ekvivalentní zápisu: Inicializační výraz; while(podmíněný výraz) { opakovaný výraz Inicializační výraz může být vypuštěn, zůstane po něm však středník. Stejně může být vynechán i podmíněný výraz a opakovaný výraz. Příkaz continue je možno použít ve spolupráci se všemi uvedenými typy cyklů. Ukončí právě prováděný průchod cyklem a pokračuje novým průchodem. Příkaz break je rovněž možno použít se všemi typy cyklů. Znamená opuštění cyklu; program pokračuje em za koncem cyklu. Příkaz goto a návěští Příkaz goto přenese běh programu na místo označené návěštím (identifikátor ukončený dvojtečkou). Jsou situace, kdy může být výhodný, např. chceme-li vyskočit z vnitřního cyklu z více vnořených cyklů. Prázdný ; Použití všude tam, kde je prázdné tělo. Funkce Každá funkce musí mít definici a - má určeno jméno, pomocí kterého se volá - může mít parametry, v nichž předáme data, na kterých se budou vykonávat operace - může mít návratovou hodnotu poskytující výsledek - má tělo složené z ů, které po svém vyvolání vykoná. Příkazy jsou uzavřeny ve složených závorkách { Příklad: int max(int a, int b) /* hlavicka */ { /* telo funkce */ if (a>b) return a; return b; Nevrací-li funkce žádnou hodnotu, píšeme void. Nepředáváme-li data, uvádíme jen kulaté závorky nebo void. Neznáme-li definici funkce a přesto ji chceme použít, musíme mít deklaraci funkce (prototyp), která určuje jméno funkce, paměťovou třídu a typy jejích parametrů. Na rozdíl od definice funkce již neobsahuje tělo a je vždy ukončena středníkem. int max(int a, int b); nebo jen int max(int,int);

Volání funkcí Obecně: jmeno_funkce(seznam skutečných parametrů); Nemá-li žádné parametry, musíme napsat (). Parametry se vždy předávají hodnotou, jsou tedy následně překopírovány do formálních parametrů funkce. Počet skutečných parametrů by měl být shodný s počtem formálních parametrů a musejí být stejného typu. Jazyk C dovoluje používání funkcí rekurzivních (funkce ve svém těle obsahuje volání sama sebe). Pole Pole je strukturovaný datový typ, tvořený složkami stejného datového typu. Na složky se odvoláváme jménem pole a indexem (pořadím) složky v poli. Složky jsou v poli vždy indexovány počínaje nulou. Pole se definuje typem složek, názvem pole a počtem složek uvedeným v hranatých závorkách. Tedy na příklad int a[10]; /* definuje pole se jménem a o deseti složkách */ Počet složek se vždy uvádí konstantou. Na složku s indexem např. 3 se odvoláme a[3]. Zde může v hranatých závorkách být i proměnná, dokonce i výraz, po jehož vyhodnocení ale musíme dostat celé číslo, které leží v rozmezí 0 až počet složek 1. Nekontroluje se, že index nepřesahuje hranice pole, je za to odpovědný programátor. S polem jako celkem nelze provádět žádné operace, většinou používáme při práci cykl for. Na příklad, chceme-li, aby všechny složky pole a měly hodnotu nula, napíšeme: n=10; for (i=0;i<n;i++) a[i]=0; Mají-li složky pole na začátku mít určité hodnoty, můžeme to zařídit už v definici takto: int a[5]={1,2,3,4,5; Pokud je hodnot ve složených závorkách více, než odpovídá rozměru pole, ohlásí překladač chybu. Je-li jich méně, doplní nuly. Pole jako parametr funkce: Samotné jméno pole představuje adresu pole, takže zde jde vlastně o předání odkazem. Vše je zřejmé z příkladu: void bubble(int p[],int n) /* hlavička funkce */ { telo funkce int main() { int pole[20]; bubble(pole,pocet); /* volání funkce */ Vstupy a výstupy Vstupní a výstupní operace nejsou součástí jazyka C. Používáme proto knihovní funkce. Předpokladem je direktiva #include <studio.h>, protože knihovna stdio.h obsahuje funkci scanf pro formátovaný vstup a printf pro formátovaný výstup. Standardní vstup je z klávesnice, výstup na obrazovku. Obě funkce mají proměnný počet parametrů. Ten je určen prvním parametrem- formátovacím řetězcem. Formátovací řetězec funkce printf může obsahovat dva typy informací. Jednak jde o běžné znaky, které budou vytištěny, dále pak speciální formátovací sekvence znaků začínající %. K tisknutelným znakům patří také escape sekvence, např. \n pro nový řádek. scanf se liší tím, že formátovací řetězec smí obsahovat jen formátovací sekvence, a tím, že druhým a dalším parametrem je vždy adresa proměnné. Formátovací sekvence (printf): povinně se uvádí příznak typu (d nebo i pro int, f pro float). Dále můžeme zadat ještě spoustu jiných věcí, spokojíme se s tím, že lze zadat šířku, třeba %5d znamená, že celé číslo má být zobrazeno na 5 míst,

%6.2f znamená, že racionální číslo zobrazíme na 6 míst, z toho 2 desetinná Formátovací sekvence (scanf): typ je rovněž d nebo i pro integer, f pro float. A to nám stačí. U standardního výstupu se musíme ještě postarat o to, abychom si ho stihli přečíst. Lze toho dosáhnout různě, jedna z možností je funkce getch(), kde neuvádíme parametr. Pak program čeká, až stiskneme libovolnou klávesu. Předpokladem je #include <conio.h>. Preprocesor Preprocesor zpracuje zdrojový text programu před překladačem, vypustí komentáře, provede záměnu textů, např.identifikátorů konstant za odpovídající číselné hodnoty a vloží texty ze specifikovaných souborů. Příkazy pro preprocesor začínají znakem # a nejsou ukončeny středníkem. Nejdůležitějšími y jsou #define a #include. #define ID hodnota říká, že preprocesor nahradí všude v textu identifikátor ID specifikovanou hodnotou, např. #define PI 3.14159 #include <stdio.h> znamená vložit do zdrojového textu funkce vstupu a výstupu ze systémového adresáře. #include filename Preprocesor vloží text ze specifikovaného souboru v adresáři uživatele. Některé standardní knihovny: stdio.h funkce pro vstup a výstup stdlib.h obecně užitečné funkce string.h práce s řetězci math.h matematické funkce conio.h funkce getch