C# konzole Program emoce Tematická oblast Datum vytvoření 2013 Ročník 3 Stručný obsah Způsob využití Autor Kód Internetové technologie, programování Jednoduchá implementace emotivní umělé inteligence reagující na různý počet neúspěšných zadání vstupu od uživatele. Studenti navrhnou algoritmus s prvky umělé inteligence. Mgr. Michal Mikláš VY_32_INOVACE_35_IMIK18 Gymnázium a Jazyková škola s právem státní jazykové zkoušky Zlín
Zadání Napište program, který bude po uživateli požadovat zadání nějakého čísla většího než 10. Uživatel bude mít celkem 3 pokusy. Pokud zadá číslo větší než 10, pak mu počítač poděkuje a ukončí program. V opačném případě uživateli oznámí, že nezadal předpokládanou hodnotu. Navíc budeme v tomto jednoduchém programu chtít, aby byl počítač emotivní. Pokusíme se tedy naprogramovat počítač tak, aby reagoval na zadání uživatele podle toho, jak se mu to daří. Počítač by tedy měl v komunikaci s uživatelem vykazovat emoce a reagovat jako inteligentní bytost měnícími se pokyny dle situace.
Zadání V našem algoritmu nám tedy jde v podstatě o jisté znaky umělé inteligence. Uživatel bude mít celkem 3 pokusy. Při prvním pokusu počítač vyzve uživatele k zadání čísla pokynem: Zadej prosím číslo větší než deset. Při druhém pokusu (po neúspěšném prvním zadání) počítač vyzve uživatel k zadání čísla již emotivnějším pokynem: Prosil jsem o číslo větší než deset. Zkus to prosím ještě jednou znovu. Při třetím pokusu (po neúspěšném druhém zadání) dá počítač uživateli poslední možnost: TO NENÍ ČÍSLO VĚTŠÍ NEŽ 10! MÁŠ POSLEDNÍ POKUS!
Zadání Pokud se zadání podaří, tak bude počítač reagovat také rozdílně vzhledem pořadí úspěšného pokusu. Při prvním úspěšném pokusu počítač napíše: Děkuji, skutečně umíš hned zadat číslo větší než 10. Při úspěšném zadání na 2. pokus počítač napíše: Děkuji. Zadal jsi dobře na 2. pokus. Při úspěšném zadání na 3. pokus počítač napíše: Děkuji. Tak nakonec se Ti to povedlo. Zadal jsi dobře na 3. pokus. Pokud uživatel nezadá požadované číslo ani na třetí pokus, tak mu počítač napíše jen toto: Ani na poslední pokus jsi nezadal číslo větší než deset. To je ale smutný příběh... :(
Řešení Celý algoritmus se skládá z podmínek IF. Dá se jednoduše popsat takto: Když uživatel zadal správné číslo, tak napiš: JINAK napiš a vyzvi jej k novému zadání. Když uživatel zadal správné číslo, tak napiš: Když uživatel opět nezadá správné číslo, tak napiš a vyzvi jej k novému zadání. Když uživatel zadal správné číslo, tak napiš: Když uživatel ani na třetí pokus nezadá správné číslo, tak napiš
Řešení první podmínka int cislo; Console.WriteLine("Zadej prosím číslo větší než deset."); if (cislo > 10) Console.WriteLine("Děkuji, skutečně umíš hned zadat číslo větší než 10."); else Console.WriteLine("Prosil jsem o číslo větší než deset. Zkus to prosím ještě jednou znovu.");
Řešení první dvě podmínky Druhá podmínka je vnořená v else sekci první podmínky. Proběhne tedy tehdy, pokud se nepodaří splnit zadání na druhý pokus. Podobně se vnoří i podmínka třetí. Console.WriteLine("Zadej prosím číslo větší než deset."); if (cislo > 10) Console.WriteLine("Děkuji, skutečně umíš hned zadat číslo větší než 10."); else Console.WriteLine("Prosil jsem o číslo větší než deset. Zkus to prosím ještě jednou znovu."); if (cislo > 10) Console.WriteLine("Děkuji. Zadal jsi dobře na 2. pokus."); else Console.WriteLine("TO NENÍ ČÍSLO VĚTŠÍ NEŽ 10! MÁŠ POSLEDNÍ POKUS!");
Výpis kompletního zdrojového kódu konzolové aplikace namespace ConsoleApplication10 class Program static void Main(string[] args) int cislo; if (cislo > 10) Console.WriteLine("Děkuji. Zadal jsi dobře na 2. pokus."); else Console.WriteLine("TO NENÍ ČÍSLO VĚTŠÍ NEŽ 10! MÁŠ POSLEDNÍ POKUS!"); Console.WriteLine("Zadej prosím číslo větší než deset."); if (cislo > 10) Console.WriteLine("Děkuji. Tak nakonec se Ti to povedlo. Zadal jsi dobře na 3. pokus."); if (cislo > 10) Console.WriteLine("Děkuji, skutečně umíš hned zadat číslo větší než 10."); else else Console.WriteLine("Ani na poslední pokus jsi nezadal číslo větší než deset. To je ale smutný příběh... :("); Console.WriteLine("Prosil jsem o číslo větší než deset. Zkus to prosím ještě jednou znovu."); Console.ReadKey();