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 ifve 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()anejlepsi()počítají a výsledek vracejí,pridejBody()aopravBody()mění data avypisVysledky()vypisuje. - Reference předávají vektory bez kopírování. S
constje funkce jen čte, bezconstje 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 jakomain.cpp, v Terminálu přejděte do jeho složky příkazemcda zkompilujte ho:clang++ main.cpp -o main. Vznikne programmain, 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říkazemg++ main.cpp -o maina 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í
structvytvoříte vlastní typ, třebastruct Zak { std::string jmeno; int body; };, a všechny žáky dáte do jednoho vektorustd::vector<Zak>. Třídy (class) k datům přidávají i vlastní funkce. - Slovník
std::map. Ukládá hodnoty pod klíči: sstd::map<std::string, int>zapíšete body podle jména, třebabody["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::sortseřadí vektor,std::max_elementnajde největší prvek astd::findhledá. 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.
Jak psát:
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: 1Zkontrolujte, ž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
7/7