Professional Documents
Culture Documents
FPI - T2. Estructures de Control-1
FPI - T2. Estructures de Control-1
no unes condicions.
– El bucle (o repetició o iteració) permet executar instruccions
un determinat nombre de vegades o mentre es compleixi
una condició.
condició
sí
si (condició) llavors
Departament d’Enginyeria Informàtica i Matemàtiques
seqüència d’instruccions
seqüència no
fsi d’instruccions
seqüència d’instruccions
Obtenir valor
Calcular valor absolut
Mostrar resultat
falgorisme
llegir(x)
si (x < 0) llavors $ Si és negatiu cal canviar el signe
x ß -x
fsi
escriure ("El valor absolut és ", x)
falgorisme
dues pleques
(en anglès,
pipes)
1
if (x < 0)
{
En les condicions compostes
x = -x; hem d’usar parèntesis que les
} englobin, això també millora
la llegibilitat del codi:
Quan hi ha una única instrucció dins els blocs, es
poden ometre les claus. Tanmateix, no és una opció ((n>=2) && (j<3))
recomanable quan us inicieu a la programació.
si (condició) llavors
Departament d’Enginyeria Informàtica i Matemàtiques
inici
escriure ("Introdueix una lletra")
llegir (ll)
si (ll=’a’ o ll=’e’ o ll=‘i’ o ll=‘o’ o ll=‘u’) llavors
escriure ("És una vocal") Fixeu-vos que si introduïm una
sino vocal en majúscules o amb
escriure ("És una consonant") accent/dièresi no funcionaria.
Com que l’objectiu és didàctic, ja
fsi ens va bé aquest exemple.
falgorisme
...
falgorisme
...
Recuperem l’exemple de la divisió
inici que hem vist al tema anterior.
escriure ("Introdueix el dividend:")
llegir (n1) $ Obtenim dividend
escriure ("Introdueix el divisor:")
llegir (n2) $ Obtenim divisor
Departament d’Enginyeria Informàtica i Matemàtiques
if (a >= 5)
{
nota = 'A';
}
else
{
nota = 'S';
}
tractin. seq.instr.1
Departament d’Enginyeria Informàtica i Matemàtiques
algorisme dia_setmana
var x: enter fvar
Departament d’Enginyeria Informàtica i Matemàtiques
inici
escriure("Introdueix un nombre (1..7)")
llegir(x)
...
2: escriure("Dimarts")
3: escriure("Dimecres")
4: escriure("Dijous")
5: escriure("Divendres")
6,7: escriure("Cap de setmana") $ Tractem dues opcions
altre cas: escriure("Valor no vàlid")
fopció
falgorisme Com es faria sense utilitzar el condicional múltiple?
Fonaments de Programació I – Estructures de control 19
Condicionals: llenguatge C
§ Utilitzem switch / case / default al condicional múltiple.
opció (x) switch (x)
1: escriure("Dilluns") {
2: escriure("Dimarts") case 1 : printf("Dilluns \n");
... break;
6,7: escriure("Cap de case 2 : printf("Dimarts \n");
Departament d’Enginyeria Informàtica i Matemàtiques
setmana")
break;
altre cas: escriure("Valor
...
invàlid")
fopció case 6 :
case 7 : printf("Cap de setmana\n");
Fixeu-vos com usem els break i com break;
no l’usem en l’opció 6: amb la manca
default : printf("Valor invàlid\n");
de break el programa executarà les
instruccions del següent cas. }
si C1 llavors
si C1 o C2 llavors
instruccions
instruccions
fsi
fsi
si C2 llavors
instruccions
Sempre i quan les
fsi instruccions siguin
les mateixes!
cert
Departament d’Enginyeria Informàtica i Matemàtiques
algorisme sumar_valors
Departament d’Enginyeria Informàtica i Matemàtiques
inici
Mostrar instruccions a l’usuari
Demanar valor
mentre (n ≠ 0) fer
Sumar i demanar un nou valor
fmentre
Mostrar resultat
falgorisme
algorisme generar_múltiples
inici
Departament d’Enginyeria Informàtica i Matemàtiques
fer
Departament d’Enginyeria Informàtica i Matemàtiques
fer
escriure ("Introdueix el divisor:")
llegir (n2)
mentre (n2 = 0) $ Demanem el divisor
i el tornem a demanar mentre aquest sigui 0
q ß n1 div n2 $ Calculem el quocient
r ß n1 mod n2 $ Calculem el residu
$ Mostrem resultat
escriure ("El quocient és ", q, " i el residu és ",r )
mulß 3
mentre (mul ≤ max) fer
mul = 3;
escriure(mul)
while (mul <= max)
Departament d’Enginyeria Informàtica i Matemàtiques
mul ß mul + 3
{
fmentre
printf ("%d\n", mul);
mul = mul + 3;
}
mentre (n2 = 0)
do
{
printf("Introdueix el divisor\n");
scanf("%d", &n2);
}
while (n2 == 0);
fper
sino
n ß min
mentre (n ≤ max) fer
si (n mod 5 = 0) llavors
escriure (n)
fsi
n ß n + 1
mentre
fsi
falgorisme
Fonaments de Programació I – Estructures de control 40
Estructures de control
Versió 2. Fet amb un bucle per, controlant valors
...
escriure("Introdueix un nombre") $ Demanar el valor màxim i el mínim
llegir (min)
escriure ("Introdueix un nombre més gran que ", min)
llegir (max)
si (min ≥ max) llavors
Departament d’Enginyeria Informàtica i Matemàtiques
printf("Introdueix un nombre\n");
scanf("%d", &min);
printf("Introdueix un nombre més gran que %d\n", min);
scanf("%d", &max);
Departament d’Enginyeria Informàtica i Matemàtiques
return 0;
} /* Fi programa */
fmentre res = 2
Prova 3
escriure (b, "^", e, "= ", res)
Potència 20 à e>i, no farà iteració
falgorisme
res = 1 (que és el valor inicial)
Fonaments de Programació I – Estructures de control 47
Estructures de control
En llenguatge C
int main()
{
int b, e, res, i; /* Res desarà el resultat */
printf("Introdueix la base\n");
scanf("%d", &b);
printf("Introdueix l'exponent\n");
scanf("%d", &e);
Departament d’Enginyeria Informàtica i Matemàtiques
res = 1;
i = 1;
while (i <= e) /* Tantes vegades com indica l'exponent */
{
res = res * b; /* Multipliquem la base */
i++;
}
printf("%d ^ %d = %d", b, e, res);
return 0;
}
Fonaments de Programació I – Estructures de control 48
Estructures de control
§ Menú d’opcions
– Quan usem el terminal per demanar dades a l’usuari, sovint
hem de fer un menú d’opcions:
• En primer lloc, es presenta a l’usuari el conjunt d’opcions entre
les quals triar.
Departament d’Enginyeria Informàtica i Matemàtiques
printf("[0] sortir\n");
scanf("%d", &op);
}
while ((op < 0) || (op > 3));
switch (op)
{
case 0 : printf("Adeu\n");
break;
...