Professional Documents
Culture Documents
05.554 07 Estructura de Control Alternativa
05.554 07 Estructura de Control Alternativa
Taula de continguts
07. Estructura de control alternativa ...................................................................................................................... 3
Objectius ................................................................................................................................................................ 3
Introducció ............................................................................................................................................................. 3
1. Estructura alternativa ......................................................................................................................................... 3
1.1. Exemple 07_01 ............................................................................................................................................ 4
1.2. Exemple 07_02 ............................................................................................................................................ 5
1.3. Exemple 07_03 ............................................................................................................................................ 6
2. Codificació d’una estructura de control alternativa ............................................................................................ 7
2.1. Exemple 07_04 ............................................................................................................................................ 8
2.2. Exemple 07_05 ............................................................................................................................................ 8
2.3. Exemple 07_06 ............................................................................................................................................ 9
2.4. Exemple 07_07 .......................................................................................................................................... 10
UOC -3- 07. Estructura de control alternativa
Objectius
• Aprendre a controlar el flux d’execució d’un programa amb estructures alternatives.
• Aprendre a construir una estructura alternativa.
• Aprendre a utilitzar una estructura alternativa.
• Conèixer diferents tipus d’estructures alternatives.
Introducció
En aquesta unitat es presenten les estructures de control de flux alternatives per a controlar dinàmicament
l’execució d’un programa. Així mateix s’explica que, per a aconseguir-ho, un programa ha de decidir quin bloc
d’instruccions executar depenent del resultat d’avaluar una expressió lògica.
1. Estructura alternativa
En el diagrama de flux següent es presenten les parts d’una estructura alternativa. Les fletxes indiquen el sentit
del flux d’execució.
Primer es realitza la consulta sobre l’estat actual o condició (rombe verd) i depenent del resultat de l’avaluació
de la condició (vertader o fals) hi ha dos camins: si l’avaluació dona vertader, s’executa el bloc d’instruccions de
l’esquerra (rectangle groc). En cas contrari, si dona fals, s’executa el bloc d’instruccions de la dreta (rectangle
gris).
Quan acaba l’execució del bloc d’instruccions de la dreta o de l’esquerra, el flux d’execució continua tenint un
sol camí (rombe blau de finalització).
UOC -4- 07. Estructura de control alternativa
Bloc d’instruccions que cal executar Bloc d’instruccions que cal executar
quan la condició és vertadera quan la condició és falsa
Fi
És aquella instrucció que ens permet consultar sobre l’estat actual de l’entorn per a poder reaccionar
Consulta sobre l’estat
en funció del valor obtingut. La consulta sobre l’estat actual tindrà com a resposta un valor lògic
actual o condició
(vertader o fals) i d’aquesta manera es pot prendre una decisió entre dos camins diferents.
Què fer quan la condició Conjunt qualsevol d’instruccions que s’executaran només en el cas en què el resultat de l’avaluació de
és vertadera la condició sigui vertader.
Conjunt qualsevol d’instruccions que s’executaran només en el cas en què el resultat de l’avaluació de
Què fer quan la condició
la condició sigui fals. Aquesta part és opcional: no és obligatori tenir definit què fer quan la condició és
és falsa (opcional)
falsa.
A continuació es mostren exemples d’ús d’estructures alternatives. Per a mostrar com funcionen es presenta per
a cada exemple el diagrama del seu flux d’execució.
Identificant les parts de l’estructura alternativa tenim el següent diagrama de flux d’execució:
UOC -5- 07. Estructura de control alternativa
Escriure el missatge:
“És parell”
Fi
Ja que no està definit què fer quan la condició és falsa, no cal col·locar bloc d’instruccions en aquest cas i es
passa directament al final de l’estructura alternativa.
Fi
En aquest exemple estan definits tots dos camins, per la qual cosa es col·loquen blocs d’instruccions en tots
dos camins.
Apagar la calefacció i
Encendre l’aire condicionat
apagar l’aire condicionat
Fi
Fi
En aquest exemple, quan la condició és falsa, s’obren dues alternatives possibles. Per aquest motiu es col·loca
una altra vegada el rombe indicant una condició. Aquest tipus d’estructura alternativa es denomina niada.
• Algorisme
• C
algorithm ex4
var
n: integer;
end var
n := readInteger();
if n mod 2 = 0 then
writeString("És parell");
end if
end algorithm
#include <stdio.h>
int main(int argc, char** argv) {
int n;
scanf("%d", &n);
if (n%2 == 0) {
printf("Es parell");
}
return 0;
}
# Línia Codi
1 if n mod 2 = 0 then
2 writeString ("És parell");
3 end if
La línia 1 avalua a Fals, per tant la línia 2 no s’executa (se salta) i continua l’execució a partir de la línia 3.
• Algorisme
• C
algorithm ex5
var
t: real;
end var
t := readReal();
UOC -9- 07. Estructura de control alternativa
#include <stdio.h>
int main(int argc, char** argv) {
float t;
scanf("%f", &t);
if (t < 21) {
switchOnHeating();
} else {
switchOffHeating();
}
return 0;
}
# Línia Codi
1 if t < 21 then
2 switchOnHeating();
3 else
4 switchOffHeating();
5 end if
La línia 1 avalua vertader, per tant s’executa la línia 2. Les línies 3 i 4 no s’executen.
La línia 1 avalua fals, per tant la línia 2 se salta i s’executa a partir de la línia 3.
• Algorisme
• C
algorithm ex6
var
t: real;
end var
t := readReal();
if t < 18 then
switchOnHeating ():
else
if t > 26 then
switchOnAirConditioning();
else
switchOffHeating();
switchOffAirConditioning();
end if
UOC - 10 - 07. Estructura de control alternativa
end if
end algorithm
#include <stdio.h>
int main(int argc, char** argv) {
float t;
scanf("%f", &t);
if (t < 18) {
switchOnHeating();
} else {
if (t > 26) {
switchOnAirConditioning();
} else {
switchOffHeating();
switchOffAirConditioning();
}
}
return 0;
}
# Línia Codi
1 if t < 18 then
2 switchOnHeating();
3 else
4 if t > 26 then
5 switchOnAirConditioning();
6 else
7 switchOffHeating();
8 switchOffAirConditioning();
9 end if
10 end if
La línia 1 avalua vertader, per tant s’executa la línia 2. Les línies 3-9 no s’executen.
La línia 1 avalua fals, per tant la línia 2 se salta i s’executa a partir de la línia 3. La línia 4 avalua vertader, per
tant s’executen les línies 5, 9 i 10.
La línia 1 avalua fals, per tant la línia 2 se salta i l’execució continua a partir de la línia 3. La línia 4 avalua fals,
per tant la línia 5 se salta i l’execució continua a partir de la línia 6.
• Algorisme
• C
algorithm carPooling
var
age: integer;
UOC - 11 - 07. Estructura de control alternativa
hasDrivingLicense: boolean;
end var
writeString("How old are you?");
age := readInteger();
if age < 18 then
writeString("You still cannot drive");
else
writeString("Do you have a driving licence?");
hasDrivingLicense := readBoolean();
if hasDrivingLicense then
writeString("Nice, we can share the car");
else
writeString("I do. If you want we can use my car");
end if
end if
end algorithm
#include <stdio.h>
#include <stdbool.h>
int main(int argc, char **argv) {
int age;
bool hasDrivingLicense;
int aux;
printf("How old are you?\n");
scanf("%d", &age);
if (age < 18){
printf("You still cannot drive\n");
} else {
printf("Do you have driving licence?\n");
scanf("%d", &aux);
hasDrivingLicense = aux;
if (hasDrivingLicense) {
printf("Nice, we can share the car\n");
} else {
printf("I do. If you want we can use my car\n");
}
}
return 0;
}
Resum
En aquesta unitat s’ha definit l’estructura alternativa. Aquest tipus d’instruccions són bàsiques per a controlar el
flux d’execució d’un programa. S’han utilitzat diagrames de flux per a mostrar el funcionament d’aquesta estructura
de control.
S’han presentat tres exemples d’estructura alternativa juntament amb la seva traducció al llenguatge algorísmic,
considerant tots els camins possibles, tal com seria el flux d’execució en cada cas.