Introduktion till Pascal - Del 04: Sammansatta villkor
Förord
Sammansatta villkor är ett sätt att kompletera if-satser som vi lärde oss om i förra artikeln.Innehåll
»»
»
»
»
»
»
Relaterade artiklar
» Introduktion till Pascal - Del 03: Selektion
Case
Case-satser är i vissa situationer mycket enklare att använda än if-satser. Det gäller speciellt när man har ett villkor med många olika val.
program LunchMeny;
uses Crt;
{$APPTYPE Console}
var Val : Byte;
begin
WriteLn(’Dagens lunch:’);
WriteLn(‘1. Fiskpinnar med potatis’);
WriteLn(‘2. Köttfärssås och spaghetti’);
WriteLn(‘3. Kycklingklubbor med ris’);
WriteLn(‘Pannkakor’);
Write(’Vad vill du ha?: ’);
ReadLn(Val);
Write(‘Beställt: ‘);
{case}
case Val of
1 : WriteLn(‘Fisk’);
2 : WriteLn(‘Pasta’);
3 : WriteLn(‘Fågel’);
4 : WriteLn(’Pannkakor’);
end;
else
begin
WriteLn(’Felaktig beställning’);
end;
{case slut}
ReadLn;
end.
Om du nu vill göra fler val, vi säger att menyvalen 1-4 är fisk. Då skriver man:
case Val of
1 .. 4 : WriteLn(‘Fisk’);
5 .. 8 : WriteLn(‘Pasta’);
9 .. 12 : WriteLn(‘Fågel’);
13 .. 16 : WriteLn(’Pannkakor’);
end;
Eller om exempelvis 1, 3 och 9 är fisk:
case Val of
1,3,9 : WriteLn(‘Fisk’);
2,4 : WriteLn(‘Pasta’);
5,7 : WriteLn(‘Fågel’);
6,8 : WriteLn(’Pannkakor’);
end;
And
Om flera villkor ska uppfyllas samtidigt använder man and. Exmpelvis om du måste vara både glad och hungrig för att få komma in på en restaurang.
program Restaurang;
uses Crt;
{$APPTYPE Console}
var Glad, Hungrig : Char;
begin
WriteLn(‘Är du glad? (J/N)’);
ReadLn(Glad);
WriteLn(’Är du hungrig? (J/N)’);
ReadLn(Hungrig);
If (Glad = ’J’) and (Hungrig = ’J’) then
begin
WriteLn(‘Välkommen in!’);
end;
else
begin
WriteLn(’Tyvärr, man måste vara både glad och hungrig för att få äta här.’);
end;
ReadLn;
end.
Or
Tvärtom från and så används or när man vill att minst ett av flera villkor ska uppfyllas. Om vi ska skriva om ovanstående program så att det räcker om man är antingen glad eller lycklig för att få komma in. Då ändrar vi bara i if-satsen så att det nu står:
If (Glad = ’J’) or (Hungrig = ’J’) then
xor
Xor används när något av alternativen ska vara sant för att något ska hända, men båda villkoren får absolut inte uppfyllas samtidigt. Ska du till exempel på en finare tillställning måste du kanske ha antingen frack eller smoking. Men hur skulle det se ut om du hade båda samtidigt, det kan vi ju inte tillåta.
program SmokingEllerFrack;
uses Crt;
{$APPTYPE Console}
var Smoking : Boolean; {boolean är en variabel som antingen är true eller false, inget annat}
Frack : Boolean;
Svar : Char;
begin
WriteLn(’Har du frack?’);
ReadLn(Svar);
Frack := ((Svar = ’J’) or (Svar = ’j’)) {frack sätts till true om Svar är J eller j (j är alltså INTE lika med J)}
WriteLn(’Har du smoking?’);
ReadLn(Svar); {samma variabel används igen, det går eftersom svaret redan är kopierat till Frack}
Smoking := ((Svar = ’J’) or (Svar = ’j’)); {samma gäller som för Frack}
if Frack xor Smoking then
begin
WriteLn(‘Välkommen in!’);
end;
else
begin
WriteLn(’Tyvärr, du får gå någon annanstans.’);
end;
ReadLn;
end.
not
Ibland kanske det inte spelar så stor roll vem som släpps in på din restaurang, men vi vill ju inte ha några stupfulla personer som kommer och stör våra gäster. I det här fallet används not.
program Berusad;
uses Crt;
{$APPTYPE Console}
var Full : Char;
begin
WriteLn(’Är du berusad?’);
ReadLn(Full);
if not ((Full = ’J) or (Full = ‘j’)) then
begin
WriteLn(‘Välkommen in!’);
end;
else
begin
WriteLn(’Tyvärr, du är välkommen tillbaka imorgon.’);
end;
ReadLn;
end.
0 Kommentarer