Добавил admin | Категория Pascal за 12 уроков, перевод | 25 Декабря 2013
Доброго времени суток уважаемый читатель! Для того что бы лучше понять и усвоить этот урок тебе необходимо хорошо знать предыдущий урок.
До сих пор условия в программе мы описывали, используя оператор IF THEN ELSE но бывают случае когда двух веток ветвления нам не достаточно а делать вложенные IF THEN ELSE не очень красиво и с точки зрения оформления программного кода и логики программы. В таких случаях необходимо применять оператор CASE его работа кстати очень похожа на работу оператора IF THEN ELSE, теперь давайте взглянем на него
Case {переменная типа: integer, string, byte – целого типа, строковые, символьные} of
{значение переменной} : {программный код который следует выполнить если переменная имеет это значение}
{значение переменной} : {программный код который следует выполнить если переменная имеет это значение}
End; {End Case}
Я надеюсь вам все тут понятно, кому не понятно, пожалуйста пример программы с использованием IF THEN ELSE ниже
Program Program1a_Lesson5;
Uses Crt;
Label Return;
Var SEL : Integer;
YN : Char;
Begin
Return: Clrscr;
Writeln('[1].PLAY GAME');
WRITELN('[2].LOAD GAME');
WRITELN('[3].MULTIPLAYER');
WRITELN('[4].EXIT GAME');
Writeln('note: Do note press anything except');
Writeln('numbers; otherwise an error occurs!');
Readln(SEL);
If SEL = 1 then
Begin
Writeln('Are you able to create a game');
Writeln('of yourself using pascal??');
Delay(2000);
Goto Return;
End;
If SEL = 2 then
Begin
Writeln('Ahhh... no saved games');
Delay(2000);
Goto Return;
End;
If SEL = 3 then
Begin
Writeln('networking or 2 players?');
Delay(2000);
Goto Return
End
If SEL = 4 then
Begin
Writeln('Exit?');
YN := Readkey;
If YN = 'y' then
Begin
Writeln('Nooooooooooooo...');
Delay(1000);
Halt; {EXIT PROGRAM}
End;
If YN = 'n' then
Goto Return;
End;
End.
Ну а теперь тоже самое только с CASE
Program Program1b_Lesson5;
Uses Crt;
Label Return; {use of the goto statement
is not recommended..avoid it}
Var SEL : Integer;
YN : Char;
Begin
Return:Clrscr;
Writeln('[1].PLAY GAME');
WRITELN('[2].LOAD GAME');
WRITELN('[3].MULTIPLAYER');
WRITELN('[4].EXIT GAME');
Writeln('note: Do note press anything except');
Writeln('numbers; otherwise an error occurs!');
Readln(SEL);
Case SEL of
1 : Begin
Writeln('Are you able to create');
Writeln('a game of yourself using pascal??');
Delay(2000);
Goto Return;
End;
2 : Begin
Writeln('Ahhh... no saved games')
Delay(2000);
Goto Return;
End;
3 : Begin
Writeln('networking or 2 players?');
Delay(2000);
Goto Return;
End;
4 : Begin
Writeln('Exit?');
YN := Readkey;
Case YN of {a sort of a nested case statement}
'y' : Begin
Writeln('Nooooooooooooo...');
Delay(1000);
Halt;
End;
'n' : Goto Return;
End;{End Case2}
End;{Close Conditional Expression 4}
End; {End Case1}
End.
Вы можете заметить что CASE в наших примерах похоже на сокращенную форму IF THEN, да, это так, но у CASE так же есть и полная форма, изучите пример ниже что бы понять как она работает
Program Program2_Lesson5;
Uses Crt;
Label Return; { avoid it }
Var YN : Char;
Begin
Return:ClrScr;
Writeln('Exiting?');
YN := Readkey;
Case YN of
'y' : Halt;
'n' : Begin
Writeln('What are you going to do here, anyway?');
Delay(2000);
Halt;
End;
Else
Begin
Writeln('Either press ''y'' for yes');
Writeln('or ''n'' for no.. please try again..');
Delay(3500);
ClrScr;
Goto Return;
End;
End; {CASE}
End. {PROGRAM}