You are on page 1of 11

07.

Estructura de control alternativa


UOC -2- 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

07. Estructura de control alternativa


TAULA DE CONTINGUTS
• Objectius
• Introducció
• 1. Estructura alternativa
• 1.1. Exemple 07_01
• 1.2. Exemple 07_02
• 1.3. Exemple 07_03
• 2. Codificació d’una estructura de control alternativa
• 2.1. Exemple 07_04
• 2.2. Exemple 07_05
• 2.3. Exemple 07_06
• 2.4. Exemple 07_07
• Resum

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

vertader Consulta sobre fals


la condició

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.

Fi Continua l’execució de la resta del programa.

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ó.

1.1. Exemple 07_01


Donat un nombre enter n, indiqueu si és parell. En cas contrari no cal fer res.

Identificant les parts de l’estructura alternativa tenim el següent diagrama de flux d’execució:
UOC -5- 07. Estructura de control alternativa

vertader El nombre fals


n és parell?

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.

1.2. Exemple 07_02


Donat un sensor de temperatura, si la temperatura t és inferior a 21 graus, s’ha d’encendre la calefacció, en cas
contrari, la calefacció ha d’apagar-se.

Identificant les parts de l’estructura alternativa tenim el diagrama de flux següent:


UOC -6- 07. Estructura de control alternativa

vertader La temperatura és fals


inferior a 21°C?

Encendre la calefacció Apagar la calefacció

Fi

En aquest exemple estan definits tots dos camins, per la qual cosa es col·loquen blocs d’instruccions en tots
dos camins.

1.3. Exemple 07_03


Donat el sensor de temperatura de l’exemple anterior, si la temperatura t és inferior a 18 graus, s’ha d’encendre la
calefacció. Si la temperatura t és superior a 26 graus, s’ha d’encendre l’aire condicionat. Si no, s’han d’apagar la
calefacció i l’aire condicionat.

Identificant les parts de l’estructura alternativa, tenim el diagrama de flux següent:


UOC -7- 07. Estructura de control alternativa

vertader La temperatura és fals


inferior a 18°C?

vertader La temperatura és fals


Encendre la calefacció
superior a 26°C?

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.

2. Codificació d’una estructura de control alternativa


En aquest apartat es presenta la codificació d’una estructura de control alternativa quan solament hi ha
instruccions a executar en un camí, quan hi ha blocs d’instruccions en tots dos camins i quan es tracta d’una
estructura de control alternativa niada.

Parts Codificació en llenguatge algorísmic


  Consulta sobre l’estat actual o condició if estructura condicional then
  Què fer quan la condició és Vertadera              bloc d’instruccions
  Què fer quan la condició és Falsa else
            bloc d’instruccions
UOC -8- 07. Estructura de control alternativa

  Marca de finalització d’estructura alternativa end if

2.1. Exemple 07_04


 
A continuació veiem un algorisme codificat tant en llenguatge algorísmic com en llenguatge C. Es tracta d’un
algorisme per a detectar nombres parells.

• 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;
}

Analitzem l’execució de l’estructura alternativa:

 # Línia   Codi
  1   if n mod 2 = 0 then
  2         writeString ("És parell");
  3   end if

Cas 1: el nombre n és parell.

La línia 1 avalua Vertader, per tant s’executen les línies 2 i 3.

Cas 2: el nombre no és parell.

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.

2.2. Exemple 07_05


Suposem implementades les accions switchOnHeating() i switchOffHeating(), que s’encarreguen de fer totes les
operacions necessàries per a encendre o apagar la calefacció respectivament.

• Algorisme
• C

algorithm ex5
    var 
        t: real;
    end var

    t := readReal();
UOC -9- 07. Estructura de control alternativa

    if t < 21 then


        switchOnHeating();
    else
        switchOffHeating();
    end if
end algorithm

#include <stdio.h>
int main(int argc, char** argv) {
   float t;
    scanf("%f", &t);
   if (t < 21) {
        switchOnHeating();
    } else {
        switchOffHeating();
    }
   return 0;
}

Analitzem l’execució de l’estructura alternativa:

# Línia Codi
  1 if t < 21 then
  2       switchOnHeating();
  3 else
  4       switchOffHeating();
  5  end if

Cas 1: la temperatura és inferior a 21 graus.

La línia 1 avalua vertader, per tant s’executa la línia 2. Les línies 3 i 4 no s’executen.

Cas 2: la temperatura és superior o igual a 21 graus.

La línia 1 avalua fals, per tant la línia 2 se salta i s’executa a partir de la línia 3.

2.3. Exemple 07_06


Suposem implementades les accions switchOnHeating(), switchOffHeating(), que s’encarreguen de fer totes les
operacions necessàries per a encendre o apagar la calefacció respectivament, i suposem implementades les
accions switchOnAirConditioning(), switchOffAirConditioning(), que s’encarreguen de fer totes les operacions
necessàries per a encendre o apagar l’aire condicionat respectivament.

• 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;
}

Analitzem l’execució de l’estructura alternativa:

# 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

Cas 1: la temperatura és inferior a 18 graus.

La línia 1 avalua vertader, per tant s’executa la línia 2. Les línies 3-9 no s’executen.

Cas 2: la temperatura és superior a 26 graus.

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.

Cas 3: la temperatura és superior o igual a 18 graus però inferior o igual a 26 graus.

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.

2.4. Exemple 07_07


Finalment, vegem un exemple per a compartir un cotxe. L’algorisme ha de dir que si una persona té menys de
divuit anys no pot conduir i, per tant, no es pot compartir el cotxe. Si és major de divuit i té carnet llavors sí que
pot conduir. La solució seria la següent:

• 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.

You might also like