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? 1. Vypíše na obrazovku informaci o tom, co provede: „Ahoj, ja jsem program na podíl dvou cisel.“ 2. Vyzve uživatele k zadání prvního čísla delenec: „Zadej první číslo: “ 3. Načte zadanou hodnotu do proměnné delenec. 4. Vyzve uživatele k zadání druhého čísla delitel: „Zadej druhé číslo: “ 5. Načte zadanou hodnotu do proměnné delitel. 6. Do proměnné c vypočítá hodnotu součtu delenec/delitel. 7. Na obrazovku vypíše řetězec „Vysledek je: “ 8. Vypíše hodnotu proměnné podil. 9. Č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; if(delitel == 0){ double podil; Console.WriteLine("Nulou nelze delit."); Console.WriteLine("Ahoj, ja jsem program na deleni dvou cisel."); }else{ Console.WriteLine("Zadej prvni cislo Console.WriteLine("Podil je:"); (delenec):"); podil = (double)delenec / delitel; delenec = Console.WriteLine(podil); int.Parse(Console.ReadLine()); Console.WriteLine("Zadej druhe cislo } Console.ReadKey(); (delitel):"); } delitel = int.Parse(Console.ReadLine());
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();