Programmering A

 
Introduktion
Första programmet
Strukturerad programmering
Variabler
Selektion
Sammansatta villkor
 
Introduktion
Självrättande övning 6.1
Självrättande test 6.1
Insändningsuppgift 1
Iteration
Underprogram
Klassrum
Hjälp
   
Senaste nytt
Till kursens början
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!

Introduktion Upp
   Kursindex HSw CFL 2002