Vnořené větvení
If – else - vnořování Kostrukce if, nebo if-else lze do sebe vnořovat, a tak vytvářet další větvení již rozvětveného kódu
Modelový příklad vytvoříme program, kdy uživatel zadává, jakou částku klient stavební spořitelny v daném roce na svůj účet vložil, dále kolik bylo v témže roce připsáno na úrocích a jaká je částka vkladů, jež nebyla v předchozích letech využita pro čerpání státní podpory. Uživatel může také pomocí zaškrtávacího políčka určovat, jestli „ počítaná“ smlouva o stavebních spoření byla či nebyla uzavřena před novelou zákona o stavebním spoření, jež výpočet státní podpory upravila. Po stisknutí tlačítka „Spočti“ se vypočtené výsledky zobrazí ve spodní části okna
Vysvětlení problematiky Výpočet se řídí těmito pravidly: 1)Pro každý rok se vypočte veličina nazývaná základna pro výpočet státní podpory (ZVSP) = součet vkladů klienta v daném roce a části ZVSP z předchozího roku, která nebyla pro státní podporu využita 2)Výše státní podpory za daný rok se určí jako 15% z hodnoty ZVSP. Maximální výše státní podpory je Kč (15% z částky ) 3)Nespotřebovaná částka ZVSP – tzn. převis nad ,- Kč, se převádí do ZVSP pro další rok
Vysvětlení problematiky Uvedená pravidla je třeba drobně pozměnit, pokud se výpočet provádí pro smlouvy o stavebním spoření uzavřené do – tj. předtím, než vstoupila v platnost novela zákona o stavebním spoření. „Starý“ zákon byl k účastníkům štědřejší – státní podpora činila 25% z naspořené částky a její strop byl na 4 500,- Kč (= 25% ze ZVSP ,-Kč)
Tvorba programu V projektu „stavební spoření“ vytvoříme uživatelské rozhraní: poleVklady poleÚroky polePřevis políčkoPřed2004 tlačítkoSpočti poleStátníPodpora polePřevisDoDalšího
private void tlačítkoSpočti_Click(object sender, EventArgs e) { //Převod vstupních údajů na číselné hodnoty: double vklady, úroky, převis; try { vklady = Convert.ToDouble(poleVklady.Text); úroky = Convert.ToDouble(poleÚroky.Text); převis = Convert.ToDouble(polePřevis.Text); } catch { poleStátníPodpora.Text = null; MessageBox.Show("Zadán nekorektní údaj!"); return; } //Výpočet státní podpory a převisu double státníPodpora, převisDoDalšího; double ZVSP = vklady + úroky + převis; if (políčkoPřed2004.Checked) {
//Výpočet pro "staré" smlouvy státníPodpora = 0.25 * ZVSP; if (státníPodpora > 4500) státníPodpora = 4500; if (ZVSP < 18000) převisDoDalšího = 0; else převisDoDalšího = ZVSP ; } else { // výpočet pro "nové" smlouvy státníPodpora = 0.15 * ZVSP; if (státníPodpora > 3000) státníPodpora = 3000; if (ZVSP < 20000) převisDoDalšího = ZVSP ; } // Zobrazení výsledků s přesností na haléře poleStátníPodpora.Text = státníPodpora.ToString("F2"); polePřevisDoDalšího.Text = převisDoDalšího.ToString("F2");
Řešte příklady: Úloha Falešná kostka: naprogramujte falešnou hrací kostku, na které bude šestka padat mnohem častěji než na běžné, poctivé kostce řečeno přesně, pravděpodobnost šestky bude stejná jako pravděpodobnost všech ostatních čísel dohromady padne číslo…….…s pravděpodobností 1½. 1/5 = 1/10 2 1/ ½
Návod na řešení: jako by se programovala kostka od 1 do 10, přičemž hodnoty 6 a více se pomocí konstrukce if sloučí na hodnotu 6. ?
Příklad – zkoušení z počtů připravte program, který bude děti zkoušet z počtů v rámci jednoho testu vygeneruje deset příkladů na sčítání čísel 0 do 9 uživatel vždy zadá svoje řešení a stiskne tlačítko „Vyhodnoť“ průběžný stav testu se bude ukazovat ve střední části okna po deseti příkladech se zobrazí zpráva s celkových hodnocením (pokud uživatel správně řešil všechny úlohy, tak ho pochválit….)
Řešení příkladu dvě čísla, která tvoří jednu z deseti úloh testu, se náhodně vygenerují, uloží do členských proměnných a sestaví se z nich popisek zadání při vyhodnocení se správný součet porovnává s číslem, které zadá uživatel. Podle výsledku porovnání se aktualizují hodnoty v textových polích v jiné členské proměnné je třeba počítat úlohy Po dokončení desáté se provede celkové vyhodnocení a znovu se aktivuje tlačítko „Spusť nový test“ ?