L9. Instrukcja warunkowa Case.
Transkrypt
L9. Instrukcja warunkowa Case.
Instrukcja warunkowa Case. Instrukcja wyboru jest strukturą sterowania. Realizacja instrukcji tej jednak wymusza pewne ograniczenia ilościowe. Istnienie tego problemu sprawiło, Ŝe w Turbo Pascalu instrukcja wyboru jest udogodnieniem czysto notacyjnym, a nie strukturą sterowania o szczególnie atrakcyjnych właściwościach operacyjnych. W przypadku tym procesor wykonuje ten sam ciąg rozkazów, a kolejność elementów listy wyboru ma wpływ na sprawność programu. Przypadkiem w programowaniu jest konieczność podjęcia kilku decyzji. W takich sytuacjach pomocna jest instrukcja „Case”, jak równieŜ „if”, ale wówczas cierpi na tym czytelność programu. Instrukcja „Case” jest instrukcją warunkową, w której podstawą podjęcia decyzji nie musi być wyraŜenie logiczne (jak w instrukcji „if”), lecz moŜe być dowolne wyraŜenie typu porządkowego. Odpowiednio więcej jest teŜ moŜliwości wyboru. Instrukcja ta posiada następującą składnię: CASE wyraŜenie OF wartość1 : Instrukcja1; wartość2 : Instrukcja2; ... END; lub CASE wyraŜenie OF wartość1 : Intrsukcja1; wartość2 : Instrukcja2; ... ELSE Instrukcja3 End; Działanie jej jest następujące: zostanie obliczone lub wpisane z klawiatury [wyraŜenie] i jeśli jest ono równe [wartość1] zostanie wykonana [Instrukcja1], Jeśli wartość wyraŜenia jest równe [wartość2], zostanie wykonana [instrukcja2] itd. Jeśli wynikiem wyraŜenia nie jest Ŝaden z podanych poniŜej wartości zostanie wykonana instrukcja znajdująca się po opcjonalnym parametrze ELSE. Po słowie kluczowym „Case” występuje wyraŜenie typu porządkowego np. - znakowego - całkowitego - logicznego W zaleŜności od tego jaką wartość przyjmuje wyraŜenie zostanie wykonana ta instrukcja, która jest poprzedzona wartością równą temu wyraŜeniu. Jeśli dla kilku róŜnych wartości wyraŜenia ma zostać wykonana ta sama instrukcja to przed dwukropkiem naleŜy umieścić te wartości oddzielając je przecinkami. CASE z OF `w`, `n`, ELSE END; { z- jest typu Char} `W`: Writeln (`wysoki`); `N`: Writeln (`niski`); Writeln (`nijaki`); Instrukcja Case, która słuŜy do zastąpienia kodu, w którym została uŜyta funkcja If: Program DuzoIfow; Var Wybor : ShortInt; Begin WriteLn('Menu:'); WriteLn(' 1. Otwórz plik'); WriteLn(' 2. Zapisz plik'); WriteLn(' 3. Przetwarzaj'); WriteLn(' 4. Zakończ'); Write('Twój wybór [1-4]: '); ReadLn(Wybor); If (Wybor=1) Then WriteLn('Wybrałeś 1 - Otwórz.'); If (Wybor=2) Then WriteLn('Wybrałeś 2 - Zapisz.'); If (Wybor=3) Then WriteLn('Wybrałeś 3 - Przetwarzaj.'); If (Wybor=4) Then WriteLn('Wybrałeś 4 - Zakończ.'); If (Wybor<1) Or (Wybor>4) Then WriteLn('Nie wybrałeś niczego z listy :('); End. Takim: Program BezIfow; Var Wybor : ShortInt; Begin WriteLn('Menu:'); WriteLn(' 1. Otwórz plik'); WriteLn(' 2. Zapisz plik'); WriteLn(' 3. Przetwarzaj'); WriteLn(' 4. Zakończ'); Write('Twój wybór [1-4]: '); ReadLn(Wybor); Case (Wybor) Of 1 : WriteLn('Wybrałeś 1 - Otwórz.'); 2 : WriteLn('Wybrałeś 2 - Zapisz.'); 3 : WriteLn('Wybrałeś 3 - Przetwarzaj.'); 4 : WriteLn('Wybrałeś 4 - Zakończ.'); Else WriteLn('Nie wybrałeś niczego z listy :('); End; { Koniec instrukcji Case } End. Warto zapamiętać sobie tę konstrukcje, bo niejednokrotnie pomoŜe nam w uczynieniu kodu bardziej przejrzystym (i wydajniejszym). ZADANIA DO WYKONANIA. Zadanie 1. Stwórz program wykonujący podstawowe działania matematyczne (+ - * /), wybrane przez uŜytkownika. Zadanie 2. Napisz program, ocena, który dla parametrów całkowitych zwraca ocenę słownie tzn., 1-niedostateczny, 2-dopuszczający, ale np. 0 lub - 7 nie ma takiej oceny.