Materiały do zajęć III Instrukcja wyboru if Spis treści I. Instrukcja wyboru if II. Wybór wielowariantowy III. Czy liczba podana przez użytkownika jest parzysta? IV. Wyjątki V. Instrukcje iteracji pętle VI. Instrukcja wyboru switch VII. Instrukcje skoku VIII. Szablon programu Instrukcja wyboru if Składnia instrukcji if if() Składnia instrukcji if if() instrukacja4 instrukacja3 instrukacja3 instrukacja2 instrukacja2 1
Wybór wielowariantowy if (1) if (2) if (1) if (2) if (1) if (2) Czy liczba podana przez użytkownika jest parzysta? static void Main(string[] args) iny x; Console.Write("Podaj liczbę: "); x = Convert.ToInt32(Console.ReadLine()); if (x%2 == 0) Console.WriteLine("Podana liczba jest parzysta"); Console.WriteLine("Podana liczba jest nieparzysta "); Console.ReadKey(); Exception Wyjątki Hierarchia wyjątków SystemException ArgumentException ArithmeticException FormatException IndexOutOfRangeException NullReferenceException OutOfMemoryException ApplicationException ArgumentNullException ArgumentOutOfRangeException DivideByZeroException OverflowException Wyjątki Blok i catch w bloku umieść kod potencjalnie niebezpieczny w bloku catch obsłuż sytuację wyjątkowe int a = 0; int b = 10 / a; //wyjątek catch(dividebyzeroexception e) Console.WriteLine("Uwaga wyjątek. \n0",e.message); 2
catch(formatexception e) catch(exception e) Wiele bloków catch Zgłoszony wyjątek może być obsłużony przez pojedynczy blok catch Wyjątki klas bardziej ogólnych powinny być przechwytywane później Dobrze catch(exception e) catch(formatexception e) Źle Wiele bloków Poszukiwanie typu wyjątku zgodnego z rzuconym rozpoczyna się od najbliższego bloku catch Gdy żaden z obsłużonych wyjątków nie jest zgodny pod względem typu lub nadrzędny w stosunku do rzuconego wyjątku aplikacja nie jest zabezpieczona na wystąpienie sytuacji wyjątkowej Obsługa wszystkich wyjątków catch.. Blok finally Instrukcje bloku finally wykonywane są zawsze bez względu na wystąpienie lub brak sytuacji wyjątkowej Musi wystąpić po wszystkich blokach catch związanych z danym blokiem finally Rzucanie wyjątków Instrukcja throw throw new Exception("Komunikat - Massage"); Ponowne zgłaszanie wyjątku catch(exception e) throw ; 3
Zadania Napisz kod, który sprawdza, czy zmienna x jest parzysta i wypisuje odpowiedni komunikat o tym na ekranie. Napisz fragment kod, który sprawdza czy zmienna p oznaczająca prawdopodobieństwo należy do przedziału <0,1>. Jeżeli nie zgłoś wyjątek ApplicationException. Instrukcje iteracji pętle Pętla while instrukacja1; while() int i = 1; while(i <= 10) Console.Write(i+", "); i++; instrukcja3 instrukcja2 Pętla for instrukacja1; for(;instrukcja3) instrukcja5; for(int i=1; i <= 10; i++) instrukcja5 Console.Write(i+, ); Instrukcja 2 Instrukcja4 Instrukcja 3 Pętla do while int i = 1; do instrukacja1; do while(); Console.Write(I + ", "); i++; while(i <= 10); instrukcja3 instrukcja2 4
Zadania Zapisz poniższy kod, zapisany przy pomocy pętli for, przy pomocy pętli while. Zadania Algorytm Euklidesa znajdowania największego wspólnego dzielnika (NWD) dwóch liczb naturalnych. for(int i = 1; i <= 100; i+=2) Console.Write("0, ",i); Napisz program obliczający sumę i iloczyn n pierwszych liczb naturalnych podzielnych przez k, gdzie k oraz n są dowolnymi liczbami naturalnymi. Gra - zgadnij liczbę. Użytkownik ma zgadnąć liczbę wylosowaną przez komputer. (Komputer odpowiada czy wylosowana liczba jest mniejsza czy większa od podanej przez użytkownika) Instrukcja wyboru switch Przykład poprawnego i błędnego użycia w C#, często poprawny w innych językach Jako typ wartości wybieranej może być dowolny typ całkowity, dowolny typ wyliczeniowy oraz typ string ma "swobodnego" przejścia między blokami case (default) case opcja1: case opcja2: instrkcja2; default: char c; case 'a': case 'A': case 'b': case 'B': Dobrze default: instrukacja3; char c; case 'a': //brak break case 'A': case 'b': //brak break case 'B': default: instrukacja4; //brak break Źle 5
Goto Instrukcje skoku Powinno się jej unikać - powoduje nieczytelny kod!!! Wyjście z głęboko zagnieżdżonych pętli while() for() for() goto wyjscie; wyjscie: Wewnątrz instrukcji switch char c; case 'a': goto case 'A'; case 'A': case 'b': goto default; default: instrukacja4; Break Przerywa wykonywanie pętli, w której się znajduje while() for() for() if() int i = 1; while(i<=10) Console.Write(i+", "); i++; if(i > 6) Continue Przerywa wykonanie bieżącego przebiegu pętli while() if() continue; for(int i = 1; i <= 10; i++) if(i % 2 == 0) continue; Console.Write(I +", "); 6
Szablon programu char c = a ; while (!(c == 'k' c == 'K')) //Menu Console.WriteLine("a opcja1"); Console.WriteLine("b - opcja1"); Console.Write("k - Koniec"); c = Console.ReadKey(true).KeyChar; //Obsługa poleceń switch (c) case 'a': case 'A': Console.WriteLine("Akcja dla opcji 1"); Console.ReadKey(true); case 'b': case 'B': Console.WriteLine("Akcja dla opcji 2"); Console.ReadKey(true); 7