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

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

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

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

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

Operátory. Základy programování 1 Tomáš Kühr

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

Seminář z IVT Proměnné a operátory. Slovanské gymnázium Olomouc 11. září 2014 Tomáš Kühr

Vícerozměrná pole. Úvod do programování 2 Tomáš Kühr

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

Algoritmizace a programování

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

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

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

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

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

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

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

Úvod do programování. Lekce 1

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

Úvod do programovacích jazyků (Java)

Programovací jazyk Pascal

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

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

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

Základy algoritmizace a programování

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

Základy algoritmizace a programování

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

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

Algoritmizace a programování

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

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

Programovací jazyk C++ Hodina 1

Zápis programu v jazyce C#

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

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

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

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

Data, výrazy, příkazy

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

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#

- speciální symboly + - * / =., < > <> <= >= a další. Klíčová slova jsou chráněnými útvary, které nelze použít ve významu identifikátorů.

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

Programování v jazyce C pro chemiky (C2160) 9. Práce s PDB soubory

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

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

Výrazy, operace, příkazy

Výrazy, operace, příkazy

Algoritmizace a programování

Jazyk C# a platforma.net

Objektově orientované programování

Ahoj mami. Uložení dat v počítači. Příklady kódování dat. IAJCE Přednáška č. 4

Datové typy strana 29

Datové typy pro reálná čísla

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

Java reprezentace dat, výrazy. A0B36PR1-Programování 1 Fakulta elektrotechnická České vysoké učení technické

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

Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické

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 Program v jazyku C má následující strukturu: konstanty nebo proměnné musí Jednoduché datové typy: Strukturované datové typy Výrazy operátory

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

Znalost výčtových typů. Aktivní znalost kombinovaných (zkrácených přiřazení). Znalost bitových operací. Znalost operátoru sekvence.

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

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

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

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

Ukázka knihy z internetového knihkupectví

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky

Programovací jazyk C(++) C++ area->vm_mm->locked_vm -= len >> PAGE_SHIFT;

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

Algoritmy v jazyku C a C++

Programování v jazyce JavaScript

C# konzole Podíl dvou čísel, podmínka IF

Číselné soustavy v mikroprocesorové technice Mikroprocesorová technika a embedded systémy

BI-PA1 Programování a algoritmizace 1, ZS Katedra teoretické informatiky

Čísla a číselné soustavy.

Opakování programování

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

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

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

Standardní vstup a výstup

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.

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

Seznámení s datovými typy a operátory

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

Jazyk C++ I. Polymorfismus

Algoritmizace prostorových úloh

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty

Sada 1 - Základy programování

Základy programování (IZP)

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

Sada 1 - Základy programování

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

Algoritmizace prostorových úloh

NPRG030 Programování I, 2016/17 1 / :58:13

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

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

Transkript:

Základy jazyka C Úvod do programování 1 Tomáš Kühr

Organizační záležitosti u Konzultace u Pracovna 5.043 u Úterý 12.30 14.00 u Čtvrtek 14.00 16.00 u Pátek 9.30 11.30 a od 14.45 dle potřeby (neoficiální) u Emailem tomas.kuhr@upol.cz u Web předmětu http://www.inf.upol.cz/kombinovane-studium/uvod-do-programovani-1 u Sbírka úloh http://jazykc.inf.upol.cz/

Literatura u Pavel Herout: Učebnice Jazyka C. Kopp, 2007. u Brian W. Kernighan, Dennis M. Ritchie: Programovací jazyk C, Computer Press, 2006. u Reek Kenneth: Pointers on C. Addison Wesley, 1997. u Robert Sedgewick: Algorithms in C. Addison-Wesley Professional, 2001. u Jeri R. Hanly, Elliot B. Koffman: Problem Solving and Program Design in C. Addison Wesley, 2006. u Eric S. Roberts: Programming Abstractions in C. Addison Wesley, 1997. u Eric S. Roberts: The Art and Science of C. Addison Wesley, 1994. u a další

Zápočet u Bude udělen za vzorné vyřešení zadaných úloh u Zadání naleznete ve Sbírce úloh z jazyka C (http://jazykc.inf.upol.cz/) u Minimální požadovaný počet úspěšně vyřešených úloh k jednotlivým tématům bude uveden na webu předmětu u Úlohy řešte v maximální možné míře samostatně u Části vašich řešení, které jste převzali z literatury / webových tutoriálů, náležitě označte (komentářem) u Podobně ve zdrojovém souboru označte části, na kterých jste spolupracovali s kolegy u Řešení odevzdávejte emailem nejpozději do příštího semináře u Za neúplnou nebo pozdě odevzdanou sadu řešení bude potřeba vyřešit 1 úlohu navíc

Jazyk C u vytvořen 1972 u autor Dennis Ritchie u poslední verze C11 (prosinec 2011) u my si ale vystačíme s ANSI C (1990), příp. C99 (1999) u inspirace pro mnoho soudobých jazyků u vlastnosti: u nízkoúrovňový u překládaný (kompilovaný) u platformově nezávislý u staticky typovaný u procedurální (imperativní) paradigma

Ukázka zdrojového souboru #include <stdlib.h> #include <stdio.h> /* * Tento program nedělá nic jiného, * než že pozdraví celý svět. */ int main() { // hlavní funkce programu /* sem budeme zatím psát všechny příkazy */ printf("ahoj, světe!\n"); // napíše text do konzole } return 0; // úspěšný konce programu

Vývojová prostředí u MS Visual Studio / MS Visual C++ (MS Windows) u Code::Blocks (multiplatformní) u GNU Emacs (GNU/Linux) u Xcode (OS X) u Libovolný textový editor

Několik poznámek k syntaxi u C rozlišuje velká a malá písmena (case sensitivity) system System SYSTEM u C ignoruje většinu bílých znaků (mezer, tabulátorů, odřádkování) (2*pi*r*(r+v)) je stejné jako (2 * pi * r * (r+v)) u ale naopak "Ahoj světe!" "Ahoj int cislo; intcislo; světe!" u Příkazy jsou ukončeny středníkem povrch = (2 * pi * r * (r+v)); printf("ahoj světe!");

Proměnná u Pojmenované místo v paměti u Lze v ní uchovávat 1 hodnotu u Předem daného datového typu u Vytvoření proměnné: typ identifikátor; typ identifikátor = hodnota; u Příklady: int cislo; double desetinne_cislo = 3.14; char pismeno = 'A'; int logickahodnota = 0;

Identifikátor proměnné u Jedinečný v rámci daného bloku / programu u Může obsahovat písmena, číslice a podtržítko u Musí začínat písmenem (nebo podtržítkem) u Identifikátor by měl být smysluplný Program častěji čteme než píšeme! obsah = pi * polomer * polomer; vs. xyz = ahoj * abc * abc; u Nedoporučuji používat háčky a čárky u Doporučuje se underscore_case, případně camelcase double polomer_kruznice; double pi = 3.14; int idhlavnihouzivatelevaplikaci;

Základní datové typy u char - obvykle pro znaky (1 byte, rozsah typicky 0 až 255) u int - celé číslo (velikost přirozená pro danou platformu) u float / double - desetinná čísla (s pohyblivou řadovou čárkou) (double má dvojnásobnou přesnost) u Na typ int lze aplikovat kvalifikátory long a short: short int prumerna_mzda = 25000; int poslanecky_plat = 56000; long int majetek_billa_gatese = 1180000000000; short prumerna_mzda = 25000; long majetek_billa_gatese = 1180000000000; u Kvalifikátor long lze aplikovat na double: long double velke_desetinne_cislo = 0.1234567890234567893;

Znaménkové a neznaménkové typy u Na celočíselné typy (int, char, ale i short, long) lze aplikovat modifikátory signed a unsigned u unsigned - reprezentace pouze nezáporných čísel u signed - čísla mohou být kladná i záporná u Stejná velikost paměti u Rozsah signed char je od -128 do 127. u Rozsah unsigned char je od 0 do 255.

Logické hodnoty v C u Logické hodnoty pravda a nepravda reprezentujeme v C čísly u Není zde speciální datový typ u Nula = nepravda u Nenulové číslo (typicky 1) = pravda

Číselné konstanty u Celočíselné konstanty zapisujeme číslicemi u Záporní čísla odlišujeme znaménkem mínus u Implicitně mají typ int (velké hodnoty long int) u Desítkové: 14, 16U, -12, 5145L, 58UL u Osmičkové: 07, 0245, 0123 u Šestnáctkové: 0xABC, 0x0, 0x12B u U desetinných čísel používáme tečku (ne čárku) u Implicitně jsou tyto konstanty typu double u Desetinné: 12.34, 15.47F, 57.478L, 1e+6, 3.14e-3

Konstantní znaky a řetězce u Znakové konstanty zapisujeme do apostrofů u Znakové: 'a', '9', '\'', '\n' u Řetězcové konstanty zapisujeme do úvozovek u Řetězce: "Ahoj", "124", "\"Ahoj\"", "Prvni\nDruhy\nTreti\n" u Textové řetězce jsou posloupnosti znaků ukončené '\0'

Výstup na obrazovku u Pomocí funkce printf z knihovny stdio u Obecně: printf(řídící_řetězec, hodnota1, hodnota2,...); u Příklady: int x = 5, y = 3; int sum = 8; int cislo = 23; printf("součet je 8"); printf("součet je %d", 8); printf("součet je %d", sum); printf("součet je %d", x + y); printf("součet je %d\t Součin je %d\n", x + y, x * y); printf("plán jsme splnili na 100 %%."); printf("dekadicky %d je oktalově %o a hexadecimálně %x.\n", cislo, cislo, cislo);

Vstup z klávesnice u Pomocí funkce scanf z knihovny stdio u Obecně: scanf(řídící_řetězec, &promenna1, &promenna2,...); u Příklady: int cislo, cislo2; unsigned int hexa_cislo; unsigned int den, mesic, rok; scanf("%d", &cislo); scanf("%x", &hexa_cislo); scanf("%d %d", &cislo, &cislo2); scanf("%d.%d.%d", &den, &mesic, &rok);

Možnosti formátovacího řetězce u %c výpis nebo načtení znaku u %d (%i) celé číslo desítkově znaménkově u %u celé číslo desítkově neznaménkově u %o celé číslo osmičkově u %x (%X) celé číslo šestnáctkově (malá / velká písmena) u %f desetinné číslo (float a double při výpisu) u %lf načtení desetinného čísla typu double u %e (%E) desetinné číslo semilogaritmicky u %g (%G) jako %f nebo %e (%E) podle hodnoty čísla u %s textový řetězec

Operátory a jejich vlastnosti u Základní konstrukce (skoro) každého jazyka u Z daných operandů vytvoří výsledek, který je možné dále využívat u Arita udává počet operandů (vstupů) u Některé operátory mají i tzv. vedlejší efekt u Příklady výrazů s operátory: u a+b (binární sčítání) u a-b (binární odčítání) u -a (unární mínus) u a<=b (binární menší nebo rovno) u a-- (unární dekrementace) u prumer = (a+b)/2; (přiřazení, sčítání a dělení v 1 výrazu)

Priorita a asociativita operátorů u Priorita určuje pořadí, ve kterém se operátory vyhodnocují u Znáte ji vlastně už z matematiky u 1 + 2 / 3 + 4 =? u Vyhodnocování výrazu lze ovlivnit použitím (kulatých) závorek (1 + 2) / (3 + 4) 1 + (2 / 3 + 4) (1 + 2) / 3 + 4 u Asociativita udává směr, ve kterém se vyhodnocují binární operátory se stejnou prioritou u Zleva nebo zprava u 1 2 3 4 =? u Opět lze ovlivnit závorkami ((1 2) -3) 4 (1 2) (3 4) 1 (2 (3 4))

Aritmetické operátory u Unární operátory + a u Binární operátory +,, * a / s obvyklým významem u Asociativita zleva u Příklady: stejne_cislo = +cislo; opacne_cislo = -cislo; delka = vetsi - mensi; prumer = (prvni + druhy + treti) / 3; obsah = 2 * pi *polomer * polomer; u Binární operátor % pro určení zbytku po celočíselném dělení (modulo) u Příklad: int delenec = 13, delitel=5, podil, zbytek; podil = delenec / delitel; zbytek = delenec % delitel;

Aritmetické operátory u Pozor na typy operandů u Pokud jsou všechny operandy celočíselné, je i výsledek celočíselný u Jinak je výsledek reálné číslo u Například při dělení toto může ovlivnit i hodnotu výsledku int cislo = 15; double polovina; polovina = cislo / 2; u Lze obejít přetypováním operandu nebo desetinným zápisem konstanty polovina = (double)cislo / 2; polovina = cislo / 2.0;

Přiřazení u Pomocí operátoru = u Zápis ve tvaru identifikátor_proměnné = jakýkoli_výraz u Příklady použití cislo = 15; druhe_cislo = 2*cislo; u Vedlejší efekt do proměnné uvedené vlevo uloží výsledek výrazu vpravo u Asociativní zprava prvni = druhy = treti = 42; (prvni = (druhy = (treti = 42))); u Další přiřazovací operátory += -= *= /= %= atd. u Význam cislo += 5; cislo = cislo+5;

Inkrementace a dekrementace u Aritmetické operátory, které v matematice nemáme u Mají vedlejší efekt u Inkrementace (++) zvyšuje hodnotu operandu o 1 cislo++; cislo+=1; cislo = cislo+1; u Dekrementace (--) snižuje hodnotu operandu o 1 cislo--; cislo-=1; cislo = cislo-1; u Mohou být v tzv. prefixovém nebo postfixovém tvaru u Prefixové a postfixové použití se odlišuje výsledkem int vysledek1, vysledek2; int cislo = 5; vysledek1 = cislo++; vysledek2 = ++cislo; u Nepoužívejte přiřazení, inkrementaci a dekrementaci ve složitějších výrazech y = (x++ - 5 + (z = y - 2));

Podmínkové operátory u Operátory pro porovnávání < > <= >= == (rovná se)!= (nerovná se) u Binární operátory u Výsledkem je logická hodnota (nula vs. nenulové číslo) u Příklady: prvni >= druhe + treti cislo!= - cislo dalsi_cislo == cislo + 10 u Typické chibyčki: prvni >= druhe > treti 10 < cislo < 20

Logické operátory u Slouží pro konstrukci složitějších podmínek u K dispozici máme operátory u konjunkce (a zároveň) && u disjunkce (nebo) u negace! u Asociativita zleva u Příklady: (10 < cislo) && (cislo < 20) (cislo <= 10) (20 <= cislo)!((10 < cislo) && (cislo < 20)) a b a && b a b!a 1 1 1 1 0 1 0 0 1 0 0 1 0 1 1 0 0 0 0 1

Líné vyhodnocování u Při vyhodnocování logických operátorů (konjunkce a disjunkce) u Vyhodnocuje se pouze část výrazu nezbytná pro určení výsledku u Příklady: (2 < 1) && (10 < cislo/0) (10 <= cislo) && (cislo <= 20) (10 < 12) cokoli (10 < cislo) (cislo <= 0) u Nepoužívejte v podmínkách operátory s vedlejším efektem (přiřazení, inkrementace, dekrementace)

Přetypování u Změna typu výrazu na jiný typ u Obecně: (nový_typ)výraz u Příklady: int delenec = 5, delitel = 2; double podil; podil = (double)delenec / delitel; u Existuje i implicitní přetypování: double cislo = 3.123; int cela_cast; cela_cast = cislo;

Podmínkový operátor u Slouží pro větvení uvnitř výrazu u Při složitějším použití nepřehledný u Jediný ternární operátor u Obecně: podmínka? výraz_splněno : výraz_nesplněno u Pokud platí podmínka, pak se operátor vyhodnotí na výraz_splněno, jinak na výraz_nesplněno. u Příklady: int cislo1, cislo2; int min;... min = (cislo1 < cislo2)? cislo1 : cislo2;

Čárka u Slouží pro vytváření sekvencí u Smysluplný téměř jen v řídících řádcích cyklů u Obecně: výraz_1, výraz_2 u Vyhodnotí se výraz_1, výsledek se zapomene, vyhodnotí se výraz_2 a jeho výsledek udává výsledek celé sekvence u Výrazy obvykle mívají nějaký vedlejší efekt u Příklady: int cis1 = 5, cis2 = 2; int min, max, por;... por = (cis1 < cis2)? (min = cis1, max = cis2, 1) : (min = cis2, max = cis1, -1);

Přehled operátorů Priorita Operátory Asociativita Arita 1 () [] ->. 2! ~ ++ -- + - (typ) * & sizeof unární 3 * / % zleva doprava binární 4 + - zleva doprava binární 5 << >> zleva doprava binární 6 < > <= >= zleva doprava binární 7 ==!= zleva doprava binární 8 & zleva doprava binární 9 ^ zleva doprava binární 10 zleva doprava binární 11 && zleva doprava binární 12 zleva doprava binární 13? : zprava doleva ternární 14 = += -= *= /= %= >>= <<= &= = ^= zprava doleva binární 15, zleva doprava binární

Operátory cvičení 5 Vytvořte program, který převede velikost úhlu ve stupních na velikost úhlu v radiánech. Program pořádně otestujte

Operátory cvičení 6 Vytvořte program, který převede finanční částku v amerických dolarech na odpovídající částku v českých korunách. Pro převod použijte aktuální kurz České národní banky

Operátory cvičení 7 Vytvořte program, který načte velké písmeno a vypíše odpovídající malé písmeno. Příklad použití: Zadejte velke pismeno: C Male pismeno je: c

Operátory cvičení 8 Vytvořte jednoduchou textovou kalkulačku. Program se uživatele zeptá na první operand a poté na druhý operand. Následně provede výpočet operací +, -, *, / a vypíše výsledky do konzole. Příklad použití: Zadejte prvni cislo: 14 Zadejte druhe cislo: 3 Soucet je: 17 Rozdil je: 11 Soucin je: 42 Podil je: 4.6667

Operátory cvičení 9 Vytvořte textovou kalkulačku. Program se uživatele zeptá na první operand, poté na znaménko operace a nakonec na druhý operand. Následně provede výpočet a vypíše výsledek do konzole. Příklad použití: Zadejte prvni cislo: 14 Zadejte operaci: + Zadejte druhe cislo: 3 Vysledek je: 17