Introduktion |
Nationellt centrum för flexibelt lärande 2002 |
 |
Ibland
räcker det inte med att bara använda villkorsoperatorerna,
vi måste kunna kombinera uttrycken med flera villkor.
Vi ska även titta på en smidig programsats, case, som
underlättar stort när vi programmerar.
Case-satsen
Om
vi inte bara vill jämföra om en variabel är mindre
eller större än ett visst värde så kan det
lätt bli en massa jämförelser.
Säg att vi vill göra ett enkelt program som skriver ut
månadernas namn.
Man matar in en siffra och därefter skrivs månadens namn
ut.
Matar användaren in t ex en tvåa skrivs "Februari"
ut.
Om vi antar att variabeln nr är av heltalstyp och att det är
där månadens nr lagras så kommer programmet en
bit ned se ut någonting så här:
if
(nr=1) then
writeln('Januari')
else
if (nr=2) then
writeln('Februari')
else
if (nr=3)
then
writeln('Mars') ...
Jag
orkar inte skriva allt som du säkert förstår men
sista if:et skulle ha med villkoret (nr=12). Väldigt jobbigt
att koda som du ser.
Men här kan vi ersätta allt det här jobbiga med en
case-sats istället.
Den ser ut så här:
case nr of
1 : writeln('Januari);
2 : writeln('Februari');
3 : writeln('Mars');
4 : writeln('April');
5 : writeln('Maj');
6 : writeln('Juni');
7 : writeln('Juli');
8 : writeln('Augusti');
9 : writeln('September');
10 : writeln('Oktober');
11 : writeln('November');
12 : writeln('December')
else
writeln('Du maste ange en siffra mellan 1-12');
end; {case-satsen avslutas med ett end}
Man
behöver inte ta med else-satsen ifall man inte vill, men här
känns det lämpligt.
Case-satsen avslutas slutligen med ett end.
Variabeln nr måste vara av en uppräkningsbar datatyp,
det innebär att den inte kan vara t ex av flyttalstyp (real,
double osv).
Datatyperna char och alla heltalsdatatyper fungerar.
Om
man skulle vilja månaderna 6-8 vara sommar och skriva ut "Sommar".
Då sätter man bara .. mellan siffrorna så här:
6..8:
writeln('Sommar');
Vill
man av någon anledning bara ta vissa månader kan man
räkna upp dem och bara sätta ett komma mellan. Så
här:
1,3,5,7,9,11:
writeln('Udda månad');
Sammansatta
villkor/Logiska operatorer
Som
det tidigare är sagt behöver vi verktyg för att skapa
mer avancerade villkorsuttryck
Även här är det viktigt med att sätta parenteser
kring uttrycken.
Sanningstabellerna används för att visa hur de logiska
operatorerna AND, OR, XOR och NOT fungerar.
(Man kan lika gärna använda små bokstäver)
AND
true
|
AND
|
true
|
=true
|
true
|
AND
|
false
|
=false
|
false
|
AND
|
true
|
=false
|
false
|
AND
|
false
|
=false
|
OR
true
|
OR
|
true
|
=true
|
true
|
OR
|
false
|
=true
|
false
|
OR
|
true
|
=true
|
false
|
OR
|
false
|
=false
|
XOR
true
|
XOR
|
true
|
=false
|
true
|
XOR
|
false
|
=true
|
false
|
XOR
|
true
|
=true
|
false
|
XOR
|
false
|
=false
|
NOT
NOT
|
true
|
=false
|
NOT
|
false
|
=true
|
Parenteser
Är de här uttrycken verkligen lika?
NOT
true AND false
NOT (true AND false)
Tips!
Sätt in uttrycken i en writeln-sats ifall du inte känner
dig säker.
Studiehandledningen!
|