Druhý výukový týden byla odpřednášena látka z přednášek z jazyka Java do snímku "Znakový typ a jeho konstanty". Přednášky z jazyka Java jsou stále na stránce http://efis.tul.cz/~dana.nejedlova/ v odstavci "Moderní programování". Teď je čtvrtý výukový týden, kdy si sami prostudujte v přednáškách vše do snímku "Problém vyprázdnění vstupu". Z dosud probrané látky a z látky, kterou si máte prostudovat místo dnešní rozvrhované přednášky, se ke zkoušce naučte především následující témata: - Vznik programu v jazyce Java (zdrojový kód, bytecode, Java Virtual Machine) - Pravidla pro zápis identifikátorů (Nebudete z nich zkoušeni, ale ke zkoušce budete moci jít, až když Váš program bude mít všechny identifikátory podle těch pravidel.) - Anotace - Wrapper class - Rozdíl mezi reprezentací datových typů v jazyce C od jazyka Java (Jazyk C nemá pevně stanovený počet bajtů pro datové typy, aby mohly být namapovány na libovolý hardware, což maximalizuje efektivitu vykonávání programu. Jazyk Java má pevně stanovený počet bajtů pro datové typy, a Java Virtual Machine (JVM) zajišťuje, aby bylo možné provádět výpočty i na hardware, který má instrukce pro tyto datové typy s jiným počtem bajtů. Výsledkem je to, že stejný bytecode se může zpracovat na všech platformách s nainstalovaným JVM.) - Deklarace proměnných s konstantní hodnotou - Deklarace výčtového typu enum (Nezkouším z něj, pokud si jej někdo nedá do projektu. Jeho možnosti mám v projektech "Kámen, nůžky, papír" a "Hra Cílová částka". Další příklady jsou například pod odkazy na snímku "Deklarace výčtového typu enum".) - Úplné vyhodnocování logických výrazů (V jazyce C je možné jen zkrácené vyhodnocování logických výrazů. Porovnejte tuto problematiku s přednáškami z jazyka C.) - Založte si projekt a vyzkoušejte si příkazy na snímcích "Metoda System.out.print()" a "Metoda System.out.format() příklady". - Založte si projekt a vyzkoušejte si program na snímku "Formátovaný vstup". Odstraňte běhovou chybu v tomto programu pomocí vyprázdnění vstupu na dalším snímku "Problém vyprázdnění vstupu". - Pro pochopení běhové chyby v programu na snímku "Formátovaný vstup" si prostudujte popis metody nextLine() v Java API o třídě Scanner, která se otevře po kliknutí na odkaz "java.util.Scanner" na snímku "Formátovaný vstup". Klíčovou informací je "This method returns the rest of the current line, excluding any line separator at the end.". Tedy po přečtení čísla se čtecí hlava zastaví na znaku pro nový řádek a metoda nextLine() tento nový řádek přečte a jeho konec vynechá. Má vrátit řetězec na přečteném řádku, ale když je řádek tvořen jen koncem řádku, tak vrací prázdný řetězec, a proto dojde k běhové chybě, když se snažíme metodou charAt(0) přečíst první znak, který tam není. - Když se v programu v jazyce C nejdříve četlo číslo a potom znak, tak také musel být po čtení čísla vyprázdněn buffer cyklem while (getchar() != '\n');, aby se ze vstupu odtranil konec řádku vzniklý odesláním čísla do vstupu klávesou Enter. Čtení čísel metodami třídy Scanner se chová jako čtení čísel v jazyce C funkcí scanf(), tedy prázdné znaky před číslem se automatikcy přeskočí a čtení se ukončí před prvním znakem, který do čísla nepatří.