Programování ÚVOD, PROMĚNNÉ, OPERÁTORY A PODMÍNĚNÝ PŘÍKAZ ERIK KRÁL
Obsah Historie a současnost jazyka C Kompilace a sestavení Nejjednodušší program v C Program s výstupem na konzoli Proměnné Identifikátor proměnné (název proměnné) Datové typy a jejich velikost Operátory Podmíněný příkaz
Historie a současnost 1969 – 73 – vývoj v laboratořích AT&T ◦Vychází z jazyků BCPL a B 1978 – Brian W. Kernighan & Dennis M. Ritchie ◦1. standard jazyka C ◦The C Programming Language ◦K&R C 1988 – ANSI C ◦rozšíření popisu o řadu knihovních funkci ◦ve stejné době začíná vývoj jazyka C rozšiřující standard ISO/IEC 9899:1999 (označován jako C99) ◦Možnost kdekoliv deklarovat proměnné ◦Nový datový typ boolean ◦Pole s proměnnou délkou 2011 – nejnovější standard ISO/IEC 9899:2011 ◦Podpora vláken ◦Pole s proměnnou délkou jsou již pouze volitelnou vlastností
Kompilace a sestavení Kompilovaný jazyk (compiled language). Zdrojový soubor (source file.c) je přeložen (compile) do objektového souboru (object file) a objektové soubory jsou potom spojeny (link) linkerem do spustitelného souboru (executable file). Překlad zjednodušeně znamená převod kódu v C do strojového kódu procesoru. source file 1 compile object file 1 link executable file source file 1 compile object file 1 Sestavení (build)
Nejjednoduší program v C Zápis nejjednodušší možné funkce main, která nemá žádné argumenty a nedělá nic. Složené závorky představují seskupení více příkazů do jednoho (složený příkaz). V tomto případě definují začátek a konec těla funkce. int znamená návratový typ funkce, pokud funkce main() nevrací žádnou hodnotu, tak systém získá hodnotu indikující úspěšné dokončení funkce. Každý program v C musí mít přesně jednu globální funkci main() Každý program v C začíná spuštění funkce main(). // označuje začátek jednořádkového komentáře, který slouží pouze pro poznámky int main(){} // nejjednodussi program v C
Program s výstupem na konzoli #include int main() { printf("Ahoj svete!\n"); return 0; } Vložení hlavičkového souboru pro vstupně výstupní operace Složené závorky ohraničují tělo funkce Vypíše na terminál text v ASCII kódování Návratová hodnota funkce Řídící posloupnost pro nový řádek
Proměnné Proměnné jsou základní datové objekty s nimiž program manipuluje. Každá proměnná musí být před použitím deklarována. Deklarace vytváří proměnné, které budeme používat, uvádějí jejich typ, identifikátor a někdy i počáteční hodnoty. Datový typ objektu vymezuje operace, které lze s tímto objektem provádět a množinu hodnot, kterých může objekt nabývat. Objekt je paměť, která udržuje hodnotu konkrétního datového typu. Hodnota je množina bitů interpretovaná podle konkrétního datového typu. Proměnná je pojmenovaný objekt. int x = 0; TypIdentifikátor (název)Počáteční hodnota ; ukončuje příkaz
Identifikátor proměnné (název) Rozlišuje se mezi velkými a malými písmeny int x; a int X; jsou jiné proměnné. Nepoužíváme diakritiku i když je to povolené. int poloměr; Název proměnné nesmí obsahovat mezery: int polomer kruhu; Název proměnné nesmí začínat číslicí: int 1polomer; Název proměnné nesmí být totožný s klíčovým slovem nebo spojením klíčových slov jazyka C. int return; Název proměnné se nesmí shodovat s názvem jiné proměnné, která byla ve zdrojovém kódu jazyka C již dříve definovaná ve stejném rozsahu platnosti. Jmenné konvence (zvolíme jednu a nekombinujeme je vzájemně): ◦Jednotlivá slova oddělujeme podtržením: int polomer_kruhu; ◦Velbloudí notace: int polomerKruhu;
Datové typy a jejich velikosti char znak; ◦jeden byte, například ASCII znak int celeCislo; ◦celé číslo se znaménkem, dostatečný rozsah pro většinu programů double desetinne; ◦desetinné číslo se znaménkem, dvojitá přesnost, dostatečná přesnost pro většinu běžných programů float position; ◦desetinné číslo se znaménkem, jednoduchá přesnost ◦zabere méně místa než double, používá se například v počítačové grafice Dále existují kvalifikátory short a long pro int, které umožňují přesněji specifikovat délky a kvalifikátory signed a unsigned, které umožňují pro některé typy specifikovat zda jsou a nebo nejsou se znaménkem. Délka typů je závislá na konkrétním hardwaru a překladači, specifikovány jsou pouze minimální délky, například int musí mít nejméně 16 bitů. Ke zjištění skutečné délky typu v bytech slouží operátor sizeof. Například sizeof(char) může vrátit 1, sizeof(int) může vrátit 4 a sizeof(double) může vrátit 8.
Operátory Operátory určují, co se má s proměnnými provést. Výrazy vytvářejí nové hodnoty kombinováním proměnných s využitím operátorů. Příkaz je výraz ukončený středníkem. Operátor přiřazení slouží k přiřazení hodnoty proměnné. int x = 3; int y = 2; int z = 0; z = x + y; Aritmetický operátor součtu Operátor přiřazení
Aritmetické operátory x + y// součet x – y// rozdíl -x;// záporná hodnota x * y// násobení x / y// dělení x % y// modulo Operace modulo je zbytek po celočíselném dělení (10 % 3 == 1)
Boolean (logický datový typ) v jazyku C nepravda ( false ) je reprezentovaná vždy hodnotou 0 pravda ( true ) je reprezentovaná jakoukoliv jinou hodnotou než 0, nejčastěji 1, ale také například -1 nebo 128 budou ve výrazech vyhodnoceny jako pravda. Součástí standardu C99 je speciální typ _Bool, pokud vložíme hlavičkový soubor stdbool.h, tak můžeme používat zápis bool. #include int main() { bool logicka; logicka = true; logicka = false; } Logický datový typ 1, pravda 0, nepravda
Operátor rovnosti a relační operátory x == y// rovnost x != y// nerovnost x < y// menší x > y// větší x <= y// menší nebo rovno x >= y// větší nebo rovno Relační operátory a operátor rovnosti vracejí 1 ( true ) pokud je výraz pravdivý a 0 ( false ) pokud je nepravdivý. #include int main() { int x = 3; int y = 5; bool logicka = x > 3; } true pokud je x > 3
Logické operátory x && y// logický AND (a zároveň) x || y// logický OR (a nebo) !x// logický NOT, logická negace Logické operátory vracejí 1 ( true ) pokud je výraz pravdivý a 0 ( false ) pokud je nepravdivý. #include int main() { int x = 3; int y = 5; bool logicka = (x > y) && (x > 0); } true pokud je x > y a zároveň je x > 0
Bitové operátory x & y// bitový AND x | y// bitový OR x ^ y// bitový XOR ~x// Bitový NOT, doplněk Provádí operace s jednotlivými bity. int main() { char x = 9; char y = 16; char z = x | y; } Výsledek bude 25, protože | ==
Podmíněný příkaz Provedení příkazu je možné podmínit. Příkaz se provede, pouze pokud je výraz v podmínce pravdivý. int x = 3; int y = 2; if (x > y) printf("x je vetsi nez 3 !\n"); Relační operátor, true pokud je x > 3, tedy výraz je pravdivý Provede se, pokud je výraz pravdivý
Podmíněný příkaz - else Podmínkou lze rozdělit program do dvou větví. Pokud je výraz v podmínce pravdivý, provede se první větev a pokud ne, tak se provede druhá větev. int x = 3; int y = 2; if (x > y) printf("x je vetsi nez 3 !\n"); else printf("x je mensi nez 3 !\n"); Relační operátor, true pokud je x > 3, tedy výraz je pravdivý Provede se, pokud je výraz pravdivý Volitelná část, provede se, pokud není výraz pravdivý
Podmíněný příkaz – if else Také je možné rozdělit program do více větví a řetězit podmínky. Provede se pokud neplatí přechozí podmínky int x = 12; if (x < 10) printf("x je < 10\n"); else if(x < 20) printf("x je >= 10 a zaroven < 20\n"); else printf("x je >= 20\n"); Provede se, pokud je výraz pravdivý Provede se, pokud je první podmínka nepravdivá a druhá pravdivá
Podmíněný příkaz – složený příkaz Pokud chci provést více příkazu v jednom, tak můžu použít složený příkaz, tedy napsat příkazy do složených závorek. U podmíněného příkazu je doporučené používat složené závorky vždy. int x = 3; int y = 2; if (x > y) { printf("x je vetsi nez 3 !\n"); } else { printf("x je mensi nez 3 !\n"); }
Ukázka podmíněného příkladu Live coding
Děkuji za pozornost Otázky?