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

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:

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

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

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

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

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

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

2. lekce Algoritmus, cyklus Miroslav Jílek

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

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

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

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

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

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

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

Úvod do programování. Lekce 1

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

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

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

Řídicí struktury. alg3 1

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

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

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

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

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

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í

Jazyk C# a platforma.net

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

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.

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

PROGRAMOVÁNÍ V SHELLU

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

Objektově orientované programování

Standardní vstup a výstup

2 Datové typy v jazyce C

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

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

VISUAL BASIC. Práce se soubory

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

3 KTE / ZPE Informační technologie

C++ Akademie SH. 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory. Michal Kvasni ka. 20. b ezna Za áte níci C++

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

Základy programování (IZP)

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

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

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

Např.: // v hlavičkovém souboru nebo na začátku // programu (pod include): typedef struct { char jmeno[20]; char prijmeni[20]; int rok_nar; } CLOVEK;

ZÁPOČTOVÝ TEST. Zpracoval Vilém Závodný, #include "stdafx.h" #include "stdio.h"

Proměnné a datové typy

Sada 1 - Základy programování

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.

Základy algoritmizace a programování

WSH Windows Script Hosting. OSY 2 Přednáška číslo 2 opravená verze z

Větvení a cykly. Úvod do programování 1 Tomáš Kühr

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

Stručný návod k programu Octave

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

Zápis programu v jazyce C#

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

Algoritmizace a programování

Algoritmizace a programování

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

Zjednodušené základy jazyku C. Josef Podstata

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

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

Řešení sady 1. Úvod do programování 1 Tomáš Kühr

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

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

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

Algoritmizace a programování

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.

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

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

Programovací jazyk Pascal

Algoritmizace a programování

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

Řídící struktury, if, while, switch

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

Programovací jazyk C++ Hodina 1

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

Algoritmizace a programování

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

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

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

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

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

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

VY_32_INOVACE_08_2_04_PR

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

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

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

Opakování programování

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

Aplikace Embedded systémů v Mechatronice. Michal Bastl A2/713a

3. přednáška. Obsah: Řídící struktury sekvence, if-else, switch, for, while, do-while. Zpracování posloupnosti

Vstup a výstup datové proudy v C

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

Programovanie v jazyku C - ti to zratam...

Transkript:

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

Základní příkazy Všechny příkazy se píšou malými písmeny! Za většinou příkazů musí být středník (;)! 2/41

Základní příkazy Všechny příkazy se píšou malými písmeny! Za většinou příkazů musí být středník (;)! Příkaz IF if (podmínka) jeden_příkaz; else jeden_příkaz; Je-li podmínka True, pak se vykoná příkaz za podmínkou. Není-li splněna, pak se vykoná příkaz za Else. Else nemusí být použito. 3/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 (;)! Příkaz IF if (podmínka) jeden_příkaz; else jeden_příkaz; Je-li podmínka True, pak se vykoná příkaz za podmínkou. Není-li splněna, pak se vykoná příkaz za Else. Else nemusí být použito. if (podmínka) { několik_příkazů } else { několik příkazů } Stejný význam jako u jednoduchého příkazu if, rozdíl je v tom, že se vykonají všechny příkazy ve složených závorkách. 4/41

if (podmínka1) { několik příkazů } else if (podmínka2) { několik příkazů } else { několik příkazů } Stejný význam jako u jednoduchého příkazu if, rozdíl je ve vloženém příkazu else if (podmínka2), který funguje jako samostatný if a je použit v případě, kdy je první podmínka false. 5/41

V případě složené podmínky se používají kulaté závorky! Např.: ((A>10) &&((B<=6) (C==0))) ((A>10) AND ((B<=6) OR (C==0))) to znamená: ((A>10) a také ((B<=6) nebo (C==0))) Pozor!!! Pokud zapíšeme (C=0), pak se do proměnné C přiřadí nula a ta je vyhodnocena jako false!!! 6/41

SWITCH switch(proměnná) { case hodnota1: příkazy break; case hodnota2: příkazy break; default: příkazy } 7/41

SWITCH switch(proměnná) { case hodnota1: příkazy break; case hodnota2: příkazy break; default: příkazy } Příkaz testuje obsah proměnné proměnná a pokud se rovná hodnotě1, pak se vykonají příkazy za příslušným case. Break končí blok příkazů case. Default se provede pouze v případě, že testovaná proměnná neobsahuje žádnou z hodnot za příkazy case, tedy neobsahuje hodnotu hodnota1 ani hodnota2. 8/41

FOR Příkaz cyklu. for (proměnná; podmínka; krok) { příkazy } nebo for (proměnná; podmínka; krok) jeden_příkaz; proměnná podmínka krok - řídící proměnná cyklu a její počáteční hodnota, proměnná může být int, double, char a pointer! - dokud je podmínka true, cyklus se provádí - hodnota, o kterou se řídící proměnná mění 9/41

Příklady použití příkazu FOR: int a; Proměnná a musí být definována před použitím v cyklu! 10/41

Příklady použití příkazu FOR: int a; Proměnná a musí být definována před použitím v cyklu! for (a=-1; a < 10; a++) jeden_příkaz; Proměnná a nabývá hodnot -1 až 9, cyklus začíná a = -1, postupně se a zvyšuje o jedničku a končí 9. Po ukončení příkazu FOR je v proměnné a hodnota 10! 11/41

Příklady použití příkazu FOR: int a; Proměnná a musí být definována před použitím v cyklu! for (a=-1; a < 10; a++) jeden_příkaz; Proměnná a nabývá hodnot -1 až 9, cyklus začíná a = -1, postupně se a zvyšuje o jedničku a končí 9. Po ukončení příkazu FOR je v proměnné a hodnota 10. int a[10]; int *b; for (b=a; b < a+sizeof(a); b++) jeden_příkaz; b nabývá hodnot adres jednotlivých prvků v poli a postupně se a zvyšuje o jedničku a končí 9. Po ukončení příkazu FOR je v proměnné a hodnota 10. b++ je posun pointeru v paměti, ve které jsou uloženy hodnoty pole a. 12/41

for (;1;) jeden_příkaz; Nekonečný cyklus. Takový cyklus můžeme ukončit příkazem break, např.: 13/41

For (;1;) jeden_příkaz; Nekonečný cyklus. Takový cyklus můžeme ukončit příkazem break, např.: for (;1;) if (a<10) a++; else break; K hodnotě proměnné a, která byla deklarována před cyklem, přičítáme jedničku, dokud je a < 10, jakmile je podmínka false, tak se cyklus zastaví break výstup z cyklu. break continue předčasné ukončení (opuštění) cyklu pokračování cyklu další smyčkou (loop), příkazy v těle cyklu za Continue se v dané smyčce nevykonají 14/41

Příklad cyklu for s proměnnou typu char a double #include <stdio.h> int main (void) { char A; double B; for(a='a'; A<='z'; A++) { printf("%c",a); } printf("\n"); for(b=-0.2; B<=0.2; B+=0.1) { printf("%.2f * ",B); } return 0; } 15/41

WHILE Příkaz cyklu. while(podmínka) { příkazy; } nebo do { příkazy; } while(podmínka) Cyklus se provádí, pouze když je podmínka true! Cyklus do while se provede vždy alespoň jednou! 16/41

PRINTF Slouží k zobrazení výstupů na konzoli. 17/41

PRINTF Slouží k zobrazení výstupů na konzoli. printf( formátovací řetězec, argumenty_oddělené_čárkami); 18/41

PRINTF Slouží k zobrazení výstupů na konzoli. printf( formátovací řetězec, argumenty_oddělené_čárkami); Formátovací řetězce: Vlastní text, do kterého dosadíme hodnoty proměnných pomocí konverzních znaků. 19/41

PRINTF Slouží k zobrazení výstupů na konzoli. printf( formátovací řetězec, argumenty_oddělené_čárkami); Formátovací řetězce: Vlastní text, do kterého dosadíme hodnoty proměnných pomocí konverzních znaků. Konverzní znaky: %d - celé číslo 20/41

PRINTF Slouží k zobrazení výstupů na konzoli. printf( formátovací řetězec, argumenty_oddělené_čárkami); Formátovací řetězce: Vlastní text, do kterého dosadíme hodnoty proměnných pomocí konverzních znaků. Konverzní znaky: %d - celé číslo %5d - celé číslo, doplněné zleva nulami na 5 znaků, pokud má více znaků, zobrazí se všechny 21/41

PRINTF Slouží k zobrazení výstupů na konzoli. printf( formátovací řetězec, argumenty_oddělené_čárkami); Formátovací řetězce: Vlastní text, do kterého dosadíme hodnoty proměnných pomocí konverzních znaků. Konverzní znaky: %d - celé číslo %5d - celé číslo, doplněné zleva nulami na 5 znaků, pokud má více znaků, zobrazí se všechny %h - celé číslo v šestnáctkové soustavě 22/41

PRINTF Slouží k zobrazení výstupů na konzoli. printf( formátovací řetězec, argumenty_oddělené_čárkami); Formátovací řetězce: Vlastní text, do kterého dosadíme hodnoty proměnných pomocí konverzních znaků. Konverzní znaky: %d - celé číslo %5d - celé číslo, doplněné zleva nulami na 5 znaků, pokud má více znaků, zobrazí se všechny %h - celé číslo v šestnáctkové soustavě %b - celé číslo ve dvojkové soustavě 23/41

PRINTF Slouží k zobrazení výstupů na konzoli. printf( formátovací řetězec, argumenty_oddělené_čárkami); Formátovací řetězce: Vlastní text, do kterého dosadíme hodnoty proměnných pomocí konverzních znaků. Konverzní znaky: %d - celé číslo %5d - celé číslo, doplněné zleva nulami na 5 znaků, pokud má více znaků, zobrazí se všechny %h - celé číslo v šestnáctkové soustavě %b - celé číslo ve dvojkové soustavě %c - jeden znak (jako proměnná typu char) 24/41

PRINTF Slouží k zobrazení výstupů na konzoli. printf( formátovací řetězec, argumenty_oddělené_čárkami); Formátovací řetězce: Vlastní text, do kterého dosadíme hodnoty proměnných pomocí konverzních znaků. Konverzní znaky: %d - celé číslo %5d - celé číslo, doplněné zleva nulami na 5 znaků, pokud má více znaků, zobrazí se všechny %h - celé číslo v šestnáctkové soustavě %b - celé číslo ve dvojkové soustavě %c - jeden znak (jako proměnná typu char) %s - pole znaků 25/41

PRINTF Slouží k zobrazení výstupů na konzoli. printf( formátovací řetězec, argumenty_oddělené_čárkami); Formátovací řetězce: Vlastní text, do kterého dosadíme hodnoty proměnných pomocí konverzních znaků. Konverzní znaky: %d - celé číslo %5d - celé číslo, doplněné zleva nulami na 5 znaků, pokud má více znaků, zobrazí se všechny %h - celé číslo v šestnáctkové soustavě %b - celé číslo ve dvojkové soustavě %c - jeden znak (jako proměnná typu char) %s - pole znaků %20s - zobrazí se 20 znaků zleva doplněné mezerami, pokud proměnná obsahuje více znaků, zobrazí se všechny 26/41

PRINTF Slouží k zobrazení výstupů na konzoli. printf( formátovací řetězec, argumenty_oddělené_čárkami); Formátovací řetězce: Vlastní text, do kterého dosadíme hodnoty proměnných pomocí konverzních znaků. Konverzní znaky: %d - celé číslo %5d - celé číslo, doplněné zleva nulami na 5 znaků, pokud má více znaků, zobrazí se všechny %h - celé číslo v šestnáctkové soustavě %b - celé číslo ve dvojkové soustavě %c - jeden znak (jako proměnná typu char) %s - pole znaků %20s - zobrazí se 20 znaků zleva doplněné mezerami, pokud proměnná obsahuje více znaků, zobrazí se všechny %f - desetinné číslo (float) 27/41

%5.3f - desetinné číslo, doplněné zleva nulami na 5 pozic před desetinnou čárkou (tečkou) a zprava nulami na tři pozice za desetinnou čárkou, pokud je za desetinnou čárkou více pozic, desetinné pozice se vypíšou pouze tři, bez zaokrouhlení 28/41

%5.3f %lf - desetinné číslo, doplněné zleva nulami na 5 pozic před desetinnou čárkou (tečkou) a zprava nulami na tři pozice za desetinnou čárkou, pokud je za desetinnou čárkou více pozic, desetinné pozice se vypíšou pouze tři, bez zaokrouhlení - desetinné číslo (double, long float) 29/41

%5.3f - desetinné číslo, doplněné zleva nulami na 5 pozic před desetinnou čárkou (tečkou) a zprava nulami na tři pozice za desetinnou čárkou, pokud je za desetinnou čárkou více pozic, desetinné pozice se vypíšou pouze tři, bez zaokrouhlení %lf - desetinné číslo (double, long float) \n - nový řádek 30/41

%5.3f - desetinné číslo, doplněné zleva nulami na 5 pozic před desetinnou čárkou (tečkou) a zprava nulami na tři pozice za desetinnou čárkou, pokud je za desetinnou čárkou více pozic, desetinné pozice se vypíšou pouze tři, bez zaokrouhlení %lf - desetinné číslo (double, long float) \n - nový řádek \ - zrušení významu konverzního znaku (např., pokud chceme mít ve výstupu symbol % nebo \ musíme před ním mít zpětné lomítko, tedy \%, \\ 31/41

%5.3f - desetinné číslo, doplněné zleva nulami na 5 pozic před desetinnou čárkou (tečkou) a zprava nulami na tři pozice za desetinnou čárkou, pokud je za desetinnou čárkou více pozic, desetinné pozice se vypíšou pouze tři, bez zaokrouhlení %lf - desetinné číslo (double, long float) \n - nový řádek \ - zrušení významu konverzního znaku (např., pokud chceme mít ve výstupu symbol % nebo \ musíme před ním mít zpětné lomítko, tedy \%, \\ \t - posunutí tabulátor 32/41

Příklady použití příkazu PRINTF: a) int a=5; printf( Hodnota proměnné \ a\ je %d.\n,a); Vypíše: Hodnota proměnné a je 5. Kurzor bude na novém řádku. 33/41

Příklady použití příkazu PRINTF: a) int a=5; printf( Hodnota proměnné \ a\ je %d.\n,a); Vypíše: Hodnota proměnné a je 5. Kurzor bude na novém řádku. b) double a=5, b=6.6; printf( %1.3lf+%lf=%1.2lf\n, a, b,a+b); Vypíše: 5.000+6.600000=11.60 Kurzor bude na novém řádku. Pokud není uveden počet desetinných míst, pak je použita defaultní hodnota 6. 34/41

Příklady použití příkazu PRINTF: a) int a=5; printf( Hodnota proměnné \ a\ je %d.\n,a); Vypíše: Hodnota proměnné a je 5. Kurzor bude na novém řádku. b) double a=5, b=6.6; printf( %1.3lf+%lf=%1.2lf\n, a, b,a+b); Vypíše: 5.000+6.600000=11.60 Kurzor bude na novém řádku. Pokud není uveden počet desetinných míst, pak je použita defaultní hodnota 6. c) char a=48, b='1'; printf( %d %d %c %c,a, b, a, b); Vypíše: 48 49 0 1, tedy ascii kód a symbol, který tento ascii kód reprezentuje. 35/41

SCANF Čte hodnoty z vstupu klávesnice. scanf( formátovací řetězec, ukazatele na proměnné oddělené čárkami); Má návratovou hodnotu určující počet úspěšných konverzí. Ignoruje bílé znaky, tedy mezerník, enter a tabulátor. 36/41

SCANF Čte hodnoty z vstupu klávesnice. scanf( formátovací řetězec, ukazatele na proměnné oddělené čárkami); Má návratovou hodnotu určující počet úspěšných konverzí. Ignoruje bílé znaky, tedy mezerník, enter a tabulátor. Příklady: a) int a; scanf( %d,&a); Načte celočíselnou hodnotu a vloží ji do proměnné a. 37/41

SCANF Čte hodnoty z vstupu klávesnice. scanf( formátovací řetězec, ukazatele na proměnné oddělené čárkami); Má návratovou hodnotu určující počet úspěšných konverzí. Ignoruje bílé znaky, tedy mezerník, enter a tabulátor. Příklady: a) int a; scanf( %d,&a); Načte celočíselnou hodnotu a vloží ji do proměnné a. b) if (scanf( %d %d,&a, &b)==2) { příkazy } Načte hodnotu do proměnné a a b pokud se konverze podaří u obou proměnných, pak provede tělo příkazu if. 2 znamená obě konverze! 38/41

Souhrn hlavních příkazů a potřebných knihoven Knihovna Příkazy stdio.h printf, scanf stdlib.h malloc, realloc, calloc math.h pow(základ, exponent), sqrt, sin, cos, abs, fabs assert.h assert(porovnání) logická (algoritmická) kontrola programu string.h strlen, strcpy Příkazy if, for, while, sizeof, return jsou přímo v C, nepotřebují žádnou knihovnu 39/41

Testování správnosti algoritmu Do kódu programu přidáme řádek s assertem. Jestli je podmínka true, pak program pokračuje bez chyby, jestli je false, pak se zastaví a vypíše chybu: #include<stdio.h> #include<assert.h> int obsahctverce (int strana) { return strana*strana; } int main (void) { assert(obsahctverce(5)==25); assert(obsahctverce(8)==35); return 0; } 40/41

Změření času běhu programu Pro měření času exekuce programu (zpracování dat) vytvoříme dávkový soubor (*.BAT). Tento soubor umístíme do stejné složky, ve které máme program (a.exe) a soubor dat (data.txt). Spustíme dávkový soubor a ten nám na konzoli vypíše čas startu a čas dokončení exekuce. Z rozdílu těchto časů vypočítáme čas běhu programu (zpracování dat). Obsah dávkového souboru: echo %time% a.exe <data.txt echo %time% (Vytvoříme ho v poznámkovém bloku a uložíme s koncovkou BAT, spouštíme ho z konzole příkazem jmeno_souboru.bat) 41/41