dijous, 14 d’abril del 2011

instruccions condicionals

estructura condicional

Guia per fer els exercicis: if then | if..then..else | if..then..else anidades | case

introducció

En aquesta pràctica es descriu una de les dues estructures de programació que alteren el flux de control d'un programa, l'estructura condicional, que ens permet seleccionar una sèrie de sentències a executar i no altres en funció d'una certa condició o del valor d'una variable. En aquests casos, més que mai, és molt d'agrair l'ús de la identació (ús de tabuladors) a l'hora d'escriure les sentències que van entre cada { i la seva respectiu }, els quals delimiten un conjunt d'accions que s'executaran com un bloc: o totes o cap, i que depenen que se satisfaci una condició.

exercicis

2.1 Fer un programa que donat un nombre enter determini si és positiu, negatiu o nul.

2.2 Realitzar un programa que permeti entrar dos numeros enters i determini si un és divisor de l'altre.

2.3 Realitzar un programa que demani tres nombres per teclat i els doni ordenats de menor a major. Se suggereix pensar-lo, abans de programar-lo utilitzant llapis i paper, ja que la solució no és trivial (en efecte, donats tres nombres les possibles combinacions en les quals poden quedar ordenats són 6, i en el nostre cas hem de tenir en compte les 6 possibilitats). Encara que realment no influïx en el programa, es pot suposar que els tres nombres que s'introduiran seran diferents entre si.

instrucció if...then...

La sentència if... then... és la sentència selectiva per excel·lència i apareix en la majoria de llenguatges de programació existents, encara que de vegades canviï un xic la sintaxi. La traducció al català seria la següent: si... llavors... La forma d'usar aquesta sentència és bastant simple.

exemple 2.1

writeln( 'quest programa demana un número i li diu si és major que 10 ' )

write ('Introdueixi un número');readln(numero)

if ( numero>10 ) then

write( "El número que has introduït és major que 10" )


instrucció if...then...else

Aquesta sentència podem considerar-la com una ampliació de l'anterior (en realitat, és l'anterior la qual és una reducció d'aquesta). La forma d'usar-la és:

exemple 2.2

Program notes01;
var
nota : integer;
begin
write('entra la teva nota');readln(nota);
if nota >=5 then
writeln('estàs aprovat')
else
writeln('estàs suspès);
end.

Observeu com la instrucció que va abans de l'else no porta punt i coma.

exemple 2.3

Program notes02;
var
nota : integer;
begin
write('entra la teva nota');readln(nota);
if nota >= 5 then
begin
writeln('estàs aprovat');
writeln('==felicitats==');
end
else
begin
writeln('estàs suspès');
writeln('== t’’has 'esforçarés ===');
end;
end.

observeu com aquest exemple és igual que l'anterior amb la salvetat que cada bloc d'instrucció de la instrucció if..then..else va entre Begin i End, el motiu es que s'executa més d'una instrucció i en aquest cas s'ha d'indicar al compilador on comença i on acaba el bloc d'instruccions.


exemple 2.4

write( 'Aquest programa demana dos nombres i els escriu ordenats alfaèticament '); rite('Entreu el primer nombre:');readln(nombre1)
write ('Entreu el segon nombre:' );readln(nombre2)
write( 'Els nombres ordenats:' )
if nombre1

begin

write( nombre1, ' i ', nombre2 )
write('s''ha executat el if');

end;
else
begin

write( nombre2, ' i ', nombre1 )
write('s''ha executat el else');

end;

if...then...else....anidades

Atès que dintre de les claus { i }, tant de la part then com de la part else d'una sentència selectiva hem d'escriure sentències, això ens possibilita l'escriure noves sentències if... then... else... (o if... then... solament si no fa falta el else...) dintre d'altre if... then... else.... D'aquesta manera es poden fer condicions més complexes que serien impossibles d'altra forma.

exemple 2.5

Writeln('Calculadora utilitzant If-Then-Else');
Write('Entra el primer número:'); Read(un);
Write('Entra l’’ operador +,-,*,/');Operador:=Readkey;
Writeln;
Write('Entra el segon número:'); Readln(dos);
control:=true; {inicialització de la variable boolean}
If operador='+' then
resultat:=un+dos
Else
If operador='-' then
resultat: = un-dos
Else
If operador='*' then
resultat:=un*dos
Else
If operador='/' then
resultat:=un/dos
Else
control:=false;
if control then
begin
Writeln;
Writeln('el resultat de',un,' ',operador, ' ',dos,' és',resultat)
End;
Else
Writeln('Operador desconegut');
{si tecla diferent signes matemàtics}


case

Aquesta forma de control, l'alternativa múltiple, s'utilitza quan s'avalua una expressió que pot contenir varies dades diferents i per cada dada el programa realitza un bloc d'accions especial.

L'exemple 2.6

ilustra la calculadora senzilla de l'exemple 2.5 però en aquest cas utilitzant l'estructura alternativa múltiple.

writeln('calculadora utilitzant case');
write('entra el primer número:');readln(un);
write('entra l' operador +,-,*,/');operador:=readkey; ;
write('entra el segon número:');readln(dos)
case operador of
'+': resultat:=un+dos;
'-': resultat:=un-dos;
'*': resultat:=un*dos;
'/': resultat:=un/dos;
else {si tecla diferent als signes matemàtics}
writeln('!!operador invàlid!!');
end; {fi del case}
writeln('resultat sense format : ',resultat);
writeln('resultat amb format : ',resultat:5:2);


Cap comentari:

Publica un comentari a l'entrada