C# konzole – Podíl dvou čísel, podmínka IF Tematická oblast Internetové technologie, programování Datum vytvoření 2013 Ročník 3 Stručný obsah Výpočet podílu v konzolové aplikaci v jazyce C#. Způsob využití Studenti napíší algoritmus pro výpočet podílu dvou čísel a seznámí se s podmínkou if. Autor Mgr. Michal Mikláš Kód VY_32_INOVACE_35_IMIK15 Gymnázium a Jazyková škola s právem státní jazykové zkoušky Zlín
Zadání Napište program který si zapamatuje dvě zadaná celá čísla z klávesnice, podíl těchto čísel uloží do proměnné a vypíše ji do příkazového řádku (výsledek podílů obou zadaných čísel). Vyřešte nejprve následující otázky: Kolik proměnných budeme v našem programu na podíl potřebovat? V jakých krocích bude náš program probíhat? Kroky programu formulujte velmi přesně a dobře je promyslete.
Řešení úvodních otázek Kolik proměnných budeme v našem programu na výpočet podílu potřebovat? Celkem budeme potřebovat 3 proměnné: Dělenec delenec, dělitel delitel a výsledek podil Program tedy poskytne výpočet výrazu delenec/delitel a výslednou hodnotu uloží do proměnné podil. Proměnná podíl už nebude datového typu int, ale datového typu double – PROČ? Na následujícím snímku si rozebereme kroky algoritmu.
Řešení úvodních otázek V jakých krocích bude náš program probíhat? Vypíše na obrazovku informaci o tom, co provede: „Ahoj, ja jsem program na podíl dvou cisel.“ Vyzve uživatele k zadání prvního čísla delenec: „Zadej první číslo: “ Načte zadanou hodnotu do proměnné delenec. Vyzve uživatele k zadání druhého čísla delitel: „Zadej druhé číslo: “ Načte zadanou hodnotu do proměnné delitel. Do proměnné c vypočítá hodnotu součtu delenec/delitel. Na obrazovku vypíše řetězec „Vysledek je: “ Vypíše hodnotu proměnné podil. Čeká na stisk klávesy pro ukončení programu (enter).
Řešení úvodních otázek Náš program funguje zcela analogicky jako v případě součtu dvou čísel až na prováděnou operaci mezi nimi. Je takto náš program v pořádku? Resp. Pracuje náš program správně pro všechny možné vstupní hodnoty delenec, delitel z oboru celých čísel?
Řešení úvodních otázek Resp. Pracuje náš program správně pro všechny možné vstupní hodnoty a, b z oboru celých čísel, které uživatel zadá? Náš program nepracuje správně pro všechny vstupní hodnoty. Vezměme v úvahu, že by uživatel jako číslo a (dělenec) zadal například číslo 5 a jako číslo b (dělitel) zadal číslo 0. Dostali bychom tak příklad: 5/0 Jaký je výsledek tohoto výpočtu? Uvědomme si, že dělení nulou není povolená výpočetní operace. V našem programu to proto musíme vyřešit a za předpokladu, že by uživatel zadal jako dělitel číslo 0, musí program sdělit, že nulou nelze dělit a ukončí svou činnost. Pokud by se počítač pokusil nulou dělit, tak běh programu skončí jeho havárií.
Řešení úvodních otázek Pokud se tedy potřebujeme v programu nějak rozhodnout a za určitých okolností se zachovat jinak, pak můžeme použít konstrukci: if (podmínka){ sada příkazů 1 }else{ sada příkazů 2 } Tato konstrukce pracuje tak, že, program ověří platnost podmínky v závorce za příkazem if (když) a pokud je podmínka platná, tak vykoná sadu příkazů 1. V opačném případě (else) vykoná sadu příkazů 2.
Realizace podmínky v našem algoritmu if(delitel == 0){ Console.WriteLine("Nulou nelze delit."); }else{ Console.WriteLine("Podil je:"); podil = (double)delenec / delitel; Console.WriteLine(podil); } Objasněte význam operátoru == a příkazu podil = (double)delenec / delitel;
Realizace podmínky v našem algoritmu Objasněte význam operátoru == operátor == zastupuje v jazyku C# test na rovnost (zatímco operátor = je operátor přiřazení hodnoty do proměnné) Objasněte význam příkazu: podil = (double)delenec / delitel; Tady je nutno si uvědomit, že podíl bude obecně reálné číslo (desetinné) a nemusí tedy být číslem celým. Je tedy vhodné v programu říci, že výsledná hodnota v proměnné podíl bude desetinné číslo (datový typ double).
Algoritmus int delenec, delitel; double podil; Console.WriteLine("Ahoj, ja jsem program na deleni dvou cisel."); Console.WriteLine("Zadej prvni cislo (delenec):"); delenec = int.Parse(Console.ReadLine()); Console.WriteLine("Zadej druhe cislo (delitel):"); delitel = int.Parse(Console.ReadLine()); if(delitel == 0){ Console.WriteLine("Nulou nelze delit."); }else{ Console.WriteLine("Podil je:"); podil = (double)delenec / delitel; Console.WriteLine(podil); } Console.ReadKey();
Výpis kompletního zdrojového kódu konzolové aplikace namespace ConsoleApplication8 { class Program static void Main(string[] args) int delenec, delitel; double podil; Console.WriteLine("Ahoj, ja jsem program na deleni dvou cisel."); Console.WriteLine("Zadej prvni cislo (delenec):"); delenec = int.Parse(Console.ReadLine()); Console.WriteLine("Zadej druhe cislo (delitel):"); delitel = int.Parse(Console.ReadLine()); if(delitel == 0){ Console.WriteLine("Nulou nelze delit."); }else{ Console.WriteLine("Podil je:"); podil = (double)delenec / delitel; Console.WriteLine(podil); } Console.ReadKey();