ejercicio en C
Estructures de control
1. Estructures alternatives
1.1. La sentència if-else
1.2. La sentència switch
2. Estructures iteratives
2.1. La sentència while
2.2. La sentència do-while
2.3. El bucle for
Apèndix: Biblioteca de problemes
Quique Lorente
Pàgina 1
Curs 2012-2013 • Mòdul 3 : Programació “Estructures deControl”
Estructures de control
1. Estructures alternatives
Fins ara, les sentències d'un programa C/C++ s'executen seqüencialment, és a dir, una a
continuació de l'altra. Un programa amb estructura seqüencial se sol representar gràficament de la
següent forma:
En els programes seqüencials les accions:
•
•
•
s'executen totes
s'executa cadascuna només una vegada
s'executen en elmateix ordre en què han estat escrites
En la majoria de programes necessitarem que els programes executin o no, una o més accions,
depenent que es compleixi o no una condició. Això s'aconsegueix amb les sentències alternatives
(o condicionals o selectives).
1.1. La sentència if-else
Les sentències condicionals més simples de C són la sentència if i la sentència if-else que
tenen la següentsintaxi:
if (condició)
sentència
if (condició)
sentència1
else
sentència2
En el primer cas, la condició, que és una expressió lògica (recordeu que en C, les expressions
lògiques són de fet expressions numèriques) és avaluada. Si esta té el valor de veritat (valor
diferent de 0) s'executa la sentència, en cas contrari, és a dir, si el valor de la condició és fals (igual
a 0), se saltal'execució de la sentència (o bloc) que hi ha a continuació i passa a la sentència
immediatament posterior.
En el segon cas, una vegada avaluada la condició, si esta és certa s'executa la sentència1, i a
continuació se salta la sentència2 per executar la sentència immediatament posterior a la
sentència2. Si la condició és falsa se salta la sentència1 i passa directament a la sentència2.Quique Lorente
Pàgina 2
Curs 2012-2013 • Mòdul 3 : Programació “Estructures de Control”
El diagrama de flux d'estes dues sentències és:
if
if-else
falsa
condició
certa
falsa
condició
certa
sentència2
sentència
sentència1
Les sentències poden ser, evidentment, sentències simples (acabades en punt i coma) o blocs de
sentències (tancades entre claus).
Exemple:Prova de divisibilitat
#include
void main()
{
int n, d;
printf("Introdueix dos enters: ");
scanf("%d %d", &n, &d);
if (n%d==0)
printf(" %d és divisible per %d\n", n, d);
}
Exemple: Calculeu el major de dos números enters llegits del teclat
#include
void main()
{
int x, y;
printf("Introdueix dos enters: ");
scanf("%d %d", &x, &y);
if (x>y)
printf("\nEl major és %d", x);
elseprintf("\nEl major és %d", y);
}
Les seqüències condicionals es poden encaixar donant
lloc a estructures condicionals complexes com:
Quique Lorente
Pàgina 3
Curs 2012-2013 • Mòdul 3 : Programació “Estructures de Control”
Exemple:
if (x>0)
printf("El número és positiu");
else
if (xb)
if (a>c) major=a;
else major=c;
else
if (b>c) major=b;
else major=c;
printf("El major és %d\n", major);
}
En el cas de tindre més d'una seqüència if, una dins de l'altra, cada else es refereix a l’if més
proper. A continuació es mostra un exemple on el sagnat mostra clarament què volem, però el
compilador no ho interpreta de la mateixa manera, provocant així un error que és difícil de trobar:
if (n>0)
if (i>j)
printf("n és major que 0, i és major que j");
else
printf("n no ésmajor que 0");
En este exemple hi ha dos if imbricats (un dins l'altre). En estos casos si apareix un else, com
en l’exemple, s'ha d'anar en compte en veure a qui apareix associat este else. Observant el sagnat
de l'exemple anterior, la paraula clau else sembla associada al primer if, així però està
associada al segon if. Això és perquè, com s'ha dit, l'else s'associa a l'if més proper...
Regístrate para leer el documento completo.