Gratulujeme!

Gratulujeme, váš program funguje a jste na konci kurzu C++! Program vypíše body a známku každého žáka, spočítá průměr, najde nejlepšího žáka, přidá body za chybnou úlohu a opraví body podle jména. A celé jste ho napsali sami.

Poslední vylepšení. Učitelka chce na první pohled vidět, kolik žáků test nezvládlo. Na konec výsledků přidejte řádek s počtem pětek. Je to počítání s podmínkou z lekce o cyklech: počítadlo začne na 0, cyklus projde body všech žáků a pokaždé, když znamka() vrátí 5, počítadlo zvýší o 1.

Co jste se naučili. Podívejte se, jak si v programu našla místo každá část kurzu:

  • Proměnné a výpočty drží součet bodů a počítadlo pětek. Průměr vyšel s desetinami, protože jste sčítali do proměnné typu double.
  • Podmínky určují známku (else if ve správném pořadí), hlídají strop 50 bodů a kontrolují, jestli se žák našel.
  • Vektory drží jména a body. Co k sobě patří, má stejný index.
  • Cykly procházejí žáky, aby je vypsaly, sečetly body, našly nejlepšího a hledaného žáka (s break) a spočítaly pětky.
  • Funkce rozdělují program na části s jasným úkolem: znamka(), prumer() a nejlepsi() počítají a výsledek vracejí, pridejBody() a opravBody() mění data a vypisVysledky() vypisuje.
  • Reference předávají vektory bez kopírování. S const je funkce jen čte, bez const je může změnit.
  • Texty (std::string) jsou jména žáků a porovnáváte je pomocí ==.
  • A když něco nefungovalo, chybové hlášky kompilátoru vám řekly, co je špatně a na kterém řádku. Opravovat se vyplatí vždycky nejdřív tu první.

Ukazatele jste v projektu nepotřebovali: pro parametry funkcí jsou reference jednodušší a bezpečnější. Uvidíte je ale v cizím kódu a v knihovnách a budete je potřebovat, až se budete učit o dynamické paměti.

C++ ve vašem počítači. Tady programy kompiluje a spouští prohlížeč. Ve vlastním počítači máte několik možností:

  • Online kompilátor nepotřebuje žádnou instalaci. Třeba na onlinegdb.com vyberte jazyk C++, vložte program a spusťte ho tlačítkem Run. Funguje tam i vstup z klávesnice.
  • Windows: nainstalujte si Visual Studio Community, které je zdarma, a při instalaci vyberte sadu pro vývoj desktopových aplikací v C++ (anglicky Desktop development with C++). Pak vytvořte nový projekt typu Konzolová aplikace (Console App), nahraďte ukázkový kód svým programem a spusťte ho klávesami Ctrl+F5. Visual Studio Code je jiný program: jen editor, ke kterému byste kompilátor museli instalovat zvlášť.
  • macOS: v Terminálu nainstalujte nástroje příkazem xcode-select --install (Xcode Command Line Tools). Program uložte jako main.cpp, v Terminálu přejděte do jeho složky příkazem cd a zkompilujte ho: clang++ main.cpp -o main. Vznikne program main, který spustíte příkazem ./main.
  • Linux: kompilátor g++ nainstalujete třeba na Ubuntu příkazem sudo apt install g++. Program pak zkompilujete příkazem g++ main.cpp -o main a spustíte příkazem ./main.

Část -o main říká, jak se má hotový program jmenovat. Po každé změně kódu ho musíte zkompilovat znovu, jinak spustíte starou verzi. Tady na webu to za vás dělalo tlačítko Spustit. Kdyby kompilátor na Macu u novějších věcí z C++ hlásil chyby nebo varování, přidejte -std=c++17: clang++ -std=c++17 main.cpp -o main používá stejnou verzi jazyka jako tento web. A ve Windows se v konzoli místo písmen s háčky a čárkami mohou objevit jiné znaky. Chyba to v programu není, konzole jen čte text v jiném kódování.

Co dál. Teď znáte základy, ze kterých se skládá každý program v C++. Pár nápadů, co se naučit dál:

  • Vstup od uživatele. Ve vašem počítači funguje std::cin: std::cin >> pocetBodu; počká, až uživatel napíše číslo a stiskne Enter, a uloží ho do proměnné. (Tady v prohlížeči nemá kdo psát, a tak nefunguje.) Učitelka by tak mohla body zadávat sama.
  • Struktury a třídy. Místo dvou vektorů, které musíte držet ve stejném pořadí, si pomocí struct vytvoříte vlastní typ, třeba struct Zak { std::string jmeno; int body; };, a všechny žáky dáte do jednoho vektoru std::vector<Zak>. Třídy (class) k datům přidávají i vlastní funkce.
  • Slovník std::map. Ukládá hodnoty pod klíči: s std::map<std::string, int> zapíšete body podle jména, třeba body["Lenka"] = 35;, a žáka nemusíte hledat cyklem.
  • Soubory. Knihovna <fstream> umí číst data ze souboru a zapisovat do něj, takže výsledky nezmizí, když program skončí.
  • Algoritmy. Knihovna <algorithm> má hotové funkce na to, co jste psali cykly: std::sort seřadí vektor, std::max_element najde největší prvek a std::find hledá. Teď víte, jak fungují uvnitř.
  • Vlastní projekty a soutěže. Hra na hádání čísla, kvíz, piškvorky ve vnořeném vektoru. Nejvíc se naučíte, když řešíte vlastní problémy. C++ se také hodně používá v programátorských soutěžích. Pro středoškoláky je tu třeba Korespondenční seminář z programování nebo kategorie P Matematické olympiády.

A pokud si chcete vyzkoušet další jazyk, čekají na vás kurzy Pythonu a JavaScriptu.

Pokyny

Na konec funkce vypisVysledky(), pod řádek s nejlepším žákem, přidejte řádek s počtem pětek. Počítadlo začne na 0 a cyklus ho zvýší o 1 u každého žáka, kterému znamka() vrátí 5. V naší třídě je pětka jedna:

Počet pětek: 1

Zkontrolujte, že číslo za textem "Počet pětek: " vypisuje proměnná s počítadlem, ne číslo napsané přímo v kódu. Jen tak bude program počítat správně i pro jinou třídu.

Začněte programovat zdarma

Registrací souhlasíte s provozními podmínkami a zásadami ochrany osobních údajů.

Nebo se registrujte pomocí:

7/7