Darmowe Forum
Maj 02, 2024, 08:32:34 *
Witamy, Gość. Zaloguj się lub zarejestruj.
Czy dotarł do Ciebie email aktywacyjny?

Zaloguj się podając nazwę użytkownika, hasło i długość sesji
Aktualności: Forum zostało uruchomione!
 
   Strona główna   Pomoc Zaloguj się Rejestracja  
Strony: [1]
  Drukuj  
Autor Wątek: Instrukcja wyboru case-else  (Przeczytany 4263 razy)
admin
Administrator
Ekspert
*****
Wiadomości: 821


Email
« : Grudzień 05, 2011, 09:07:01 »

Czasami okazuje się,że w programie trzeba sprawdzić kilka warunków i w zależności od nich podjąć odpowiednią akcję np.

If warunek_1 then działanie_1
else
If warunek_2 then działanie_2
else
If warunek _3 then działanie _3


Takie działanie jest nieporęczne, dlatego w wprowadzono instrukcję wyboru case-else.


Case przełącznik of
Wartość_1: akcja_1;
Wartość_2:akcja_2;
............................
Wartość_n: akcja_n;
Else działanie zastępcze {gdy nie spełnione pozostałe}
End;

Przykład 1.

Program kalkulator;
uses crt,dos;
Var
Liczba1,liczba2,wynik:real;
Działanie:char;

Begin
Write(‘Podaj pierwszą liczbę   ‘); readln(Liczba1);
Write(‘Podaj drugą liczbę    ‘); readln(Liczba2);
Write(‘rodzaj działania(+ -  * /)   ’);
Readln(dzialanie);

Case dzialanie of
‘+’:wynik:=Liczba1+liczba2;
‘*’:wynik:=Liczba1*liczba2;
‘-’:wynik:=Liczba1-liczba2;
‘/’:if liczba2<>0 then wynik:=Liczba1/liczba2
Else write('zly znak');
End;

readkey;
End.


Przykład 1A. Zmodyfikowany poprzedni program, wyświetlający wyniki działania

program bimbacz;
uses crt,dos;
var liczba1, liczba2,wynik:real;
znak: char;
begin
clrscr;
write('Podaj pierwsza liczbe: ');readln(liczba1);
write('Podaj druga liczbe: ');readln(liczba2);
write('Podaj znak dzialania: ');readln(znak);

case znak of
'+':begin write(liczba1:0:2,'+ ',liczba2:0:2,' = ',liczba1+liczba2:0:2);end;
'-':begin write(liczba1:0:2,'- ',liczba2:0:2,' = ',liczba1-liczba2:0:2);end;
'*':begin write(liczba1:0:2,'* ',liczba2:0:2,' = ',liczba1*liczba2:0:2);end;
'/':if liczba2<>0 then
begin write(liczba1:0:2,'+/',liczba2:0:2,' = ',liczba1/liczba2:0:2);end
else write('Blad');  end;
readln;
end.
« Ostatnia zmiana: Grudzień 05, 2011, 10:23:43 wysłane przez admin » Zapisane
admin
Administrator
Ekspert
*****
Wiadomości: 821


Email
« Odpowiedz #1 : Grudzień 05, 2011, 09:53:49 »

Przykład 2. Napisać menu gry w której będą pola (1- start, 2- nowa gra, 0 -wyjście). Po wciśnięciu odpowiedniego klawisza wyświetlany jest napis odpowiadający działaniu. Jeżeli do programu wprowadzono niewłaściwej zmiennej  prosi ponownie o podanie wyboru, tak długo do czasu wprowadzenia poprawnej  wartości.   


Faza1:
program bimbacz;
uses crt,dos;
var liczba1, liczba2,wynik:real;
znak: char;
begin
clrscr;
writeln('MENU');
writeln('1- START');
writeln('2-NOWA GRA');
writeln('0 - WYJSCIE');
writeln('TWOJ WYBOR'); readln(znak);



readkey;
 end.

FAZA 2. Instrukcja CASE

program bimbacz;
uses crt,dos;
var liczba1, liczba2,wynik:real;
znak: char;
begin
clrscr;
writeln('MENU');
writeln('1- START');
writeln('2-NOWA GRA');
writeln('0 - WYJSCIE');
write('TWOJ WYBOR'); readln(znak);

case znak of
'1':begin writeln('ROZPOCZYNAM PROCEDURE -START!!!!!');end;
'2':  begin writeln('ROZPOCZYNAM PROCEDURE -NOWA GRA!!!!!');end;
'0': begin writeln('ROZPOCZYNAM PROCEDURE - WYJSCIA Z PROGRAMU!!!!!');end;
 ELSE writeln ('PORAZKA PRZY WPROWADZANIU DANYCH'); END;

readkey;
 end.


FAZA 3. Wprowadzenie komunikatu ze zmianą koloru w przypadku wprowadzenia błędnej danej.

program bimbacz;
uses crt,dos;
var liczba1, liczba2,wynik:byte;
znak: char;
begin
clrscr;
writeln('MENU');
writeln('1- START');
writeln('2-NOWA GRA');
writeln('0 - WYJSCIE');
write('TWOJ WYBOR'); readln(znak);
 wynik:=0;
case znak of
'1':begin writeln('ROZPOCZYNAM PROCEDURE -START!!!!!');end;
'2':  begin writeln('ROZPOCZYNAM PROCEDURE -NOWA GRA!!!!!');end;
'0': begin writeln('ROZPOCZYNAM PROCEDURE - WYJSCIA Z PROGRAMU!!!!!');end;
 ELSE

repeat wynik:=wynik+1;wynik:=wynik mod 2;
 if(wynik =0)then  textbackground(red) else textbackground(yellow);
 clrscr;
 gotoxy(30,10);writeln ('PORAZKA PRZY WPROWADZANIU DANYCH');delay(500);
 until keypressed END;


readkey;
 end.

« Ostatnia zmiana: Grudzień 05, 2011, 12:09:27 wysłane przez admin » Zapisane
Strony: [1]
  Drukuj  
 
Skocz do:  

Powered by SMF 1.1.11 | SMF © 2006-2008, Simple Machines LLC | Sitemap

Polityka cookies
Darmowe Fora | Darmowe Forum

croissanta amazonsolidarnosc companions garage endermanpl