1 / 26

Operátory (2. část)

Verze 2009.01. Operátory (2. část). 4. A1PRG - Programování – Seminář Ing. Michal Heczko heczko@fai.utb.cz. Agenda. Další operátory v jazyce C Priorita a asociativita vyhodnocování operátorů. Opakování.

abia
Download Presentation

Operátory (2. část)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Verze 2009.01 Operátory (2. část) 4 A1PRG - Programování – Seminář Ing. Michal Heczko heczko@fai.utb.cz

  2. Agenda • Další operátory v jazyce C • Priorita a asociativita vyhodnocování operátorů

  3. Opakování • Operátor - symbolické vyjádření elementární funkce s jednou nebo i více vstupními proměnnými, vrací jednu výstupní hodnotu. • Aritmetické operátory – základní matematické operace. • Relační operátory – porovnání dvou hodnot • Logické operátory – logické operace nad logickými hodnotami. • Bitové logické operátory - logické operace nad jednotlivými bity.

  4. Opakování • Dělení operátorů podle počtu vstupních hodnot: • Unární operátory –pouze jedna vstupní hodnota • Binární operátory – dvě vstupní hodnoty • Ternární operátory – tři vstupní hodnoty

  5. Operátor podmínky • Jediný ternární operátor v jazyce C • Obecná syntaxe: • Výraz_1?Výraz_2:Výraz_3 • Příklad: • (x > 5) ? 1 : 0

  6. Operátor podmínky • V určitých případech nahrazuje příkaz IF • Př. if (y > z) { x = y; } else { x = z; } • x = (y > z) ? y : z

  7. Adresní operátor • Operátor reference – získání adresy objektu • Unární operátor & • Pozn. Operátor & je v jazyce C definován i jako binární ve významu bitového součinu. • Návratovou hodnotou tohoto operátoru je adresa proměnné. • Použití např. u funkce scanf: • scanf(“%d”,&x);

  8. Unární operátor * • Operátor dereference – získání objektu dle adresy. • Pozn. Operátor * je v jazyce C definován i jako binární ve významu součinu. • Umožňuje odkazovat na adresu, která je uložená v dané proměnné. • Umožňuje přistupovat k danému objektu, na jehož adresu odkazuje.

  9. Příklad int *x; int y = 5; x = &y; printf(“%d %d %d”,*x,x,y); *x = 8; printf(“%d %d %d”,*x,x,y); x = 8; printf(“%d %d %d”,*x,x,y);

  10. Operátor přetypování • Slouží k přetypování z jednoho datového typu na jiný. • Zápis: • Nový datový typ v závorkách před jménem proměnné. • Příklad: int a=5, b=3; double c; c = a / (double)b;

  11. sizeof • Operátor pro získání délky objektu nebo typu. • Návratová hodnota: počet bytů. • Obecná syntaxe: unsigned int sizeof(<jmeno>);

  12. sizeof • Příklad: int velikost; float cislo; double pole[10]; velikost = sizeof(int); velikost = sizeof(cislo); velikost = sizeof(pole);

  13. Čárka • Postupné vyhodnocování dvou výrazů • Obecný zápis: výraz_1, výraz_2 • Postup vyhodnocování: • Nejprve se vyhodnotí výraz_1 a následně výraz_2. Jeho hodnota se stává hodnotou celého výrazu.

  14. Čárka Příklad Ekvivalentní zápis int i = 2; j = 3; int k; k = (i++, i + j); int i = 2; j = 3; int k; i++; k = i + j;

  15. Priorita a asociativita vyhodnocování operátorů • Priorita – určuje, který operátor bude vyhodnocen jako první • Asociativita – pokud mají dva operátory stejnou prioritu, rozhoduje o pořadí směr vyhodnocování.

  16. Priorita a asociativita vyhodnocování operátorů 1) Unární operátor + nebo - 2) Binární operátor + nebo -

  17. Priorita a asociativita vyhodnocování operátorů

  18. Priorita a asociativita vyhodnocování operátorů • Příklad 1: v = x + y * z; v = (x + (y * z)); • Pozn.: Násobení má nejvyšší prioritu, přiřazení nejnižší. • Příklad 2: v = x – y - z; v = ((x – y) - z); • Pozn.: Rozdíl má asociativitu zleva, přiřazení má nižší prioritu

  19. Priorita a asociativita vyhodnocování operátorů • Příklad 3: v += w << x << y / z; v += ((w << x) << (y / z)); • Příklad 4: v = (int)w & x % y / z; v = (((int)w) & ((x % y) / z));

  20. Priorita a asociativita vyhodnocování operátorů • Pokud si nejste jisti prioritou a asociativitou, použijte závorky.

  21. Závorky • 3 druhy závorek • ( … ) • [ … ] • { … }

  22. Závorky ( … ) • 3 významy: • za názvem funkce pro umístění argumentů funkce intmain( ) { … } • Změna priority nebo asociativity – upřednostnění jedné části výrazu před jinou x = (a + b) * c;

  23. Závorky ( … ) • za názvem příkazu pro umístění parametrů if( x > 5 ) { … }

  24. Závorky [ … ] • 2 významy: • Definice velikosti poleint pole[10]; • Umístění indexu prvku pole pole[5] = 11;

  25. Závorky { … } • Označení bloku kódu • Tělo funkce intmain() { … } • Podmínky, cykly if (x > 5) { }

  26. A1PRG 4. Operátory II. Děkuji za pozornost Ing. Michal Heczko heczko@fai.utb.cz 218/U3 Prezentace k dispozici na http://vyuka.fai.utb.cz

More Related