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

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

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

Algoritmizace a programování

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

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

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

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

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

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

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

Úvod do programovacích jazyků (Java)

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

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh. Ing. Hodál Jaroslav, Ph.D. VY_32_INOVACE_25 09

Zápis programu v jazyce C#

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

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

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í

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

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

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

Programování v jazyce JavaScript

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

Programovanie v jazyku C - ti to zratam...

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

Sada 1 - Základy programování

MQL4 COURSE. By Coders guru -4 Operace & Výrazy

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.

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

Algoritmizace a programování

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

Booleovská algebra. Booleovské binární a unární funkce. Základní zákony.

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

Datové typy strana 29

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

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

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

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

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

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

Booleovská algebra. Pravdivostní tabulka. Karnaughova mapa. Booleovské n-krychle. Základní zákony. Unární a binární funkce. Podmínky.

KTE / PPEL Počítačová podpora v elektrotechnice

Úvod do programování. Lekce 1

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

Objektově orientované programování

SPJA, cvičení 1. ipython, python, skripty. základy syntaxe: základní datové typy, řetězce. podmínky: if-elif-else, vyhodnocení logických výrazů

Programovací jazyk Pascal

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

LEKCE 6. Operátory. V této lekci najdete:

VÝRAZY výrazy = operandy prokládané operátory, vyhodnocované podle priority operátorů

Algoritmizace a programování

Jazyk C# a platforma.net

1. Téma 03 - Rozhodování

Algoritmizace a programování

Programovací jazyk C++ Hodina 1

Základy algoritmizace a programování

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

cyklus s daným počtem opakování cyklus s podmínkou na začátku (cyklus bez udání počtu opakování)

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

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

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

Algoritmizace prostorových úloh

KTE / ZPE Informační technologie

Binární logika Osnova kurzu

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

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

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

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 -

Operátory pro maticové operace (operace s celými maticemi) * násobení maticové Pro čísla platí: 2*2

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

KTE / ZPE Informační technologie

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

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

Základy algoritmizace a programování

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

pi Ludolfovo číslo π = 3,14159 e Eulerovo číslo e = 2,71828 (lze spočítat jako exp(1)), např. je v Octave, v MATLABu tato konstanta e není

Test prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem

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

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

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

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

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

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

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

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

Stručný návod k programu Octave

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

8 Třídy, objekty, metody, předávání argumentů metod

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

Data, výrazy, příkazy

NPRG030 Programování I, 2010/11

Iterační výpočty Projekt č. 2

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

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

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

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

Činnost: 1) Vyhodnotí se výraz E. 2) Jeho hodnota se uloží do proměnné V.

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

- transpozice (odlišuje se od překlopení pro komplexní čísla) - překlopení matice pole podle hlavní diagonály, např.: A.' ans =

Transkript:

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 - sníží hodnotu proměnné o 1 a = 5; a++; // funguje jako a = a + 1; // v a je teď 6 Používají dvěma způsoby - jako prefix před názvem proměnné: ++i nebo --i - proměnná i je napřed zvýšena (snížena) o 1 a teprve následně se vykonná zbytek řádku - jako sufix za názvem proměnné: i++ nebo i-- - napřed se vykonná výpočet v řádku a teprve potom je proměnná i je zvýšena (snížena) o 1 Např.: int i = 5, j = 1, k; i++; // i bude 6 j = ++i; // i bude 7, j bude 7 j = 0; // vynulujeme j (bude 0), i zůstává 7 j = i++; // j bude 7 dle i a pak i bude 8 k = --j + 2; // j bude 6, potom +2 a k bude 8

k = j-- + 2; // j je 6, +2, k bude 8, j bude 5 Příkaz: k = --j + 2; Funguje takto: j = j 1; // nebo j--; nebo -j; k = j + 2; Příkaz: k = j-- + 2; Funguje takto: k = j + 2; j = j 1; // nebo j--; nebo -j; #include <stdio.h> int main(void) { int i; i = 5; printf("prefix: %d\n", ++i); i = 5; printf("postfix: %d\n", i++); printf("a ted i: %d\n", i); while(!kbhit()) ; return 0;

Základní binární operátory - sčítání + - odečítání - násobení * - reálné dělení / - celočíselné dělení / - dělení modulo % - zbytek po celočíselném dělení (např. 10%3 bude 1) Jak je to s tím dělením? - C to pozná podle datových typů operandů Tj.: int / int dělí celočíselně (např. 13 / 5 bude 2) int / float dělí reálně int / double dělí reálně float / int dělí reálně double / int dělí reálně atd. pro další typy (long, short jsou jako int, long double jako double) Pozor, toto je zdrojem častých chyb: double vysl, pi; pi = 3.1415; vysl = 4 / 3 * pi; 1 vysl bude 3.1415, protože 4 typu int / 3 typu int je 1 Správný zápis: double vysl, pi; pi = 3.1415; vysl = 4.0 / 3.0 * pi; // stačí 4/3.0 nebo 4.0/3 Stejná chyba: double vysl, pi; int a, b; a = 4; b = 3; pi = 3.1415; vysl = a / b * pi;

vysl bude 3.1415, protože a typu int / b typu int je 1 Přiřazovací operátor - v C vypadá takto = Upozornění: double a; a = 5; - nezpůsobí chybu, ale nutím program k převodu 5 typu int na 5.0 typu double. Zbytečně. Korektnější: double a; a = 5.0; l-hodnota = výraz; // hodnota nalevo od přiřazení Další operátory přiřazení += např. a += b * 3 + x znamená a = a + (b * 3 + x) -= totéž obdobně *= např. a *= b + 3 - x znamená a = a * (b + 3 - x) /= totéž obdobně %= totéž obdobně atd. totéž pro ostatní binární operátory (bez mezery) Např. v cyklu for pro určení jiného kroku než 1: for (i = 0; i < 100; i += 5) { příkazy; totéž jako: for (i = 0; i < 100; i = i + 5) { příkazy;

Booleovské operátory - C nezná logický datový typ, místo něj používá typ int (resp. celočíselné typy) - kladná čísla (nejčastěji 1) značí PRAVDA (TRUE) - nula (popř. záporná čísla) značí NEPRAVDA (FALSE) == - rovnost!= - nerovnost && - logický součin (AND, "a zároveň") - logický součet (OR, "nebo") Pozn.: if ((a < 5) && (a > 8)) v podstatě chyba!!!! tato podmínka je vždy 0, tj. nepravda, jak by mohlo být a menší než 5 a zároveň větší než 8 Je-li hodnota uvnitř intervalu otestuji správně takto: if ((a >= 5) && (a <= 8)) nebo if (!((a < 5) (a > 8))); Jednodušší příklad: if (x < 10) a totéž je (s negací): if (!(x >= 10))! - negace (NOT) např.: if (!(a < 5)) což je totéž jako if (a >= 5) < - menší než <= - menší nebo rovno > - větší než >= - větší nebo rovno

Chci vymezit obdélník v soustavě souřadnic: 4 y 2 5 x 9 Body o souřadnicích x a y test zda jsou uvnitř nebo na hranici: if (((x >= 5) && (x <= 9)) && ((y >= 2) && (y <= 4))) { printf("bod je uvnitř či na hranici obdelnika.\n"); Body o souřadnicích x a y test zda jsou vně obdélníka: if (!(((x >= 5) && (x <= 9)) && ((y >= 2) && (y <= 4)))) { printf("bod mimo obdelnik.\n"); Nebo (bez negace): if (((x < 5) (x > 9)) ((y < 2) (y > 4))) { printf("bod mimo obdelnik.\n");

Pozor: j = k = 5; - přiřazení, k bude 5, na místě přiřazení bude jako výsledek ta 5: j = 5; - ta se přiřadí do j a to bude tedy také 5 Lze též toto: x = sin(y = 2.34); - do y se přiřadí 2.34, to bude na místě přiřazení a x tedy bude sin(2.34) k == 5; - toto je porovnání, výsledek bude 0 nebo 1 (ve smyslu nepravda nebo pravda) např.: int jetotak, cislo; cislo = 5; jetotak = (cislo == 5); // do jetotak se ulozi 1 Zkrácené vyhodnocování logických výrazů - v C vždy! - pokud je výsledek podmínky jasný (0 && cokoliv), popř. (1 cokoliv) nepokračuje ve vyhodnocení dál (toho "cokoliv") a podmínka je vyhodnocena Pozor, možná úskalí zkráceného vyhodnocení: if ((a < 3) && (++i < 10)) {...nějaké příkazy... - bude dělat problémy (pokud to není záměr), protože: bude-li a >= 3, první podmínka je 0, druhá část podmínky se nebude vyhodnocovat a tím pádem ani operace ++i neproběhne. Totéž např.: if ((a < 3) && ((i = i + 5) < 10)) {...nějaké příkazy...

Toto lze i využít např.: - potřebuji ošetřit případ, kdy kolik může být i nula. A hrozí chyba dělení nulou: if ((kolik!= 0) && ((pocet / kolik) < 50) {...nějaké příkazy... - je-li kolik rovno 0, testování skončí u toho && a druhá část podmínky se nevyhodnotí k dělení nulou nedojde Ternární podmíněný operátor?: - má tři operandy Má tvar: podmínka? příkazy je-li podm.pravdivá : příkazy je-li podm. nepravdivá Např.: (i == 5)? i++ : j++; - je-li i rovno 5, vykoná se i++, jinak j++ totéž jako: if (i == 5) i++; else j++; Ternární operátor lze použít též takto: i = (j == 8)? 10 : 3; totéž jako: if (j == 8) i = 10; else i = 3; Např.: hledám-li maximum ze dvou hodnot: int a, b, max;... nějaké příkazy... max = (a > b)? a : b;

Tj. jako: int a, b, max;... nějaké příkazy... if (a > b) max = a; else max = b; Převod malých písmen na velká: int c; c = getchar(); c = ((c >= 'a') && (c <= 'z'))? c - ('a'-'a'):c;