Cílem cvičení je pochopit, jak program v jazyce C provádí aritmetické a logické operace. Každý z vás dostane svoji úlohu odlišnou od ostatních a pokud chce započíst účast na jednom cvičení z Programování I, tak mi pošle její správně vypracovaný výsledek. Vzorové zadání Jaký je výsledek výrazu 7 - 3.0 - 'A' + 0 && 3.0 > 'A' && 7.0 a jak se k tomuto výsledku došlo v programu v jazye C? Potřebné materiály: Snímky "Zápis konstant jako literálů" až "Implicitní typová konverze" přednášky z jazyka C na stránce http://efis.tul.cz/~dana.nejedlova/ v odstavci "Programování I a II". https://en.wikipedia.org/wiki/ASCII#Printable_characters Tuto stránku budete potřebovat pro zjištění kódu (číslo ve sloupci "Dec") znaku, což je literál obklopený apostrofy. Po zjištění kódu znaku budete zacházet se znakem jako s celým číslem. https://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B#Operator_precedence Zde je tabulka operátorů seřazená dle jejich precedence spolu s jejich asociativitou, viz snímky "Operátory" a "Operátory – precedence" přednášky z jazyka C na stránce http://efis.tul.cz/~dana.nejedlova/ v odstavci "Programování I a II". Vypracování vzorového zadání Pusťe si program, do kterého vložíte svůj výraz. Zde je vložen výraz ze vzorového zadání. #include int main (void) { printf("%d\n", 7 - 3.0 - 'A' + 0 && 3.0 > 'A' && 7.0); return 0; } Při kompilaci programu s Vaším výrazem se může vypsat varování začínající na "warning: suggest parentheses ...", které v této úloze ignorujte. Zapište si, jaký výsledek se vypíše jako výsledek programu. Pro vzorové zadání se vypíše výsledek 0. Jiný možný výsledek je 1. Jiné výsledky v žádné z těchto úloh nevycházejí. Rozepište pomocí textového procesoru nebo nějakého kreslícího programu postup, jak se výraz vyhodnotil. Výsledekm bude graf typu strom s faktorem větvení 2 (https://en.wikipedia.org/wiki/Branching_factor), který má v kořeni výsledek, který vyšel v programu, a jeho listy jsou operandy vyhodnocovaného výrazu. Výsledný soubor s grafem mi pošlete ve formátu PDF nebo DOCX. Návod na práci s tabulkou operátorů na stránce https://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B#Operator_precedence Pracujte jen s operátory, které mají číslo ve sloupci "Precedence" 5, 6, 9, 10, 14, 15. Začnete u operátorů s nejnižším číslem precedence, protože ty mají nejvyšší přednost ve vyhodnocování. Najděte výskyty operátorů s nejnižším čísem precedence ve vašem výrazu. Ve vzorovém příkladu není žádný operátor s precedencí 5. Pokud tam nejsou, tak najděte výskyty operátorů s druhým nejnižším čísem precedence. Ve vzorovém příkladu takové operátory jsou. Pokud operátory se stejnou precedencí jsou vedle sebe, tak o pořadí jejich vyhodnocování rozhoduje asociativita. U operátorů s precedencí 6 je to "Left-to-right". To znamená, že se operátory se stejnou precedencí vyhodnocují počínaje těmi, které jsou nejvíce vlevo. Když mají operátory stejnou precedenci, tak nezáleží na jejich pořadí v rámci buňky. Například operátor Addition nemá přednost před operátorem Subtraction. Operátory s precedencí 9, 14 a 15 mají jako výsledek hodnotu typu boolean, která se v jazyce C reprezentuje celým číslem 0 (nepravda) nebo 1 (pravda). Například není pravda, že 3.0 > 'A', tedy že 3.0 > 65, takže výsledek je 0. Operandy operátorů s precedencí 14 a 15 se interpretují tak, že jejich hodnota 0 nebo 0.0 znamená hodnotu nepravda a jakákoliv nenulová hodnota (i záporná) je pravda.