Darmowe Forum
Grudzieñ 23, 2024, 03:23:31 *
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 4473 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

shaggydogss proskills zlotasiodemka blackmoon mylittlepony