Permite seleccionar ou reproducir expresións mediante estruturas de control. Aínda que as expresións analizadas no capítulo anterior permiten escribir programas totalmente lineais e secuenciales, na maioría dos programas débese decidir si executar ou non certas ordes segundo os datos, mediante estruturas condicionais e repetir a execución dos conxuntos de ordes utilizando estruturas repetitivas. O obxectivo deste capítulo é a redacción e uso destas estruturas en linguaxe C.
Entre as estruturas condicionais, as máis utilizadas son dúas e a linguaxe C ten dúas estruturas (if) e una opción (switch). Na primeira elíxese entre dúas ramas en función do valor dunha expresión lóxica. Na segunda, con todo, pódense pór tantas ramas como se desexe.
C é moi rico en estruturas repetitivas, xa que ten tres tipos: mentres (while), refrán (do/while) e cambiando (for). As súas características serán analizadas máis adiante.
Esta estrutura ou sentenza está en calquera linguaxe e en C mata as características xerais, é dicir, avalíase una expresión lóxica e execútase a rama correspondente á seguinte ou na súa falta ri (else) en función do resultado.
A sintaxe estrutural é a seguinte:
Como pode observarse, o ramal é opcional, distinguindo a estrutura completa ou simple en función da aparición.
Por exemplo, a estrutura if que aparece na parte seguinte do programa é sinxela.
En cambio, na seguinte parte temos toda a estrutura:
Hai que ter en conta os seguintes matices:
Esta estrutura permite xerar o número de ramas que desexamos segundo o valor dunha expresión, comezando cada rama por unha palabra crave case (excepto a última, que pode empezar pola palabra crave default). A sintaxe correspondente é:
Como se pode observar, as expresións nas ramas son opcionais como o ramal default. Si nunha rama colócase máis dunha expresión, non hai que pór{ e}, pero cada un debe acabar co carácter.
Cando se atopa un swicth na execución avalíase a expresión de baldin e búscase en función do valor en que rama a expresión contable ten o mesmo valor. Se se atopan estas ramas, realízanse as sentenzas correspondentes a esa rama e ás seguintes. Na estrutura “case” de Pascal realízanse unicamente as expresións correspondentes á rama. No entanto, si C deséxao, a última expresión das ramas será breas
...Se o valor da expresión non se atopa nas ramas, realizaranse as expresións da rama default, se se escribiu esta rama.
No programa 2 explícase o uso convencional do switch (utilizado polo break).
A estrutura repetitiva máis xeral é como a sentenza “while-do” de Pascal. Desde o punto de vista sintáctico:
Avalíase a expresión de baldin e si é certa (non Ø) realízanse as expresións propias da estrutura e vólvese a avaliar a expresión, formando un bigal.
Cando a avaliación da expresión é falsa pasa á seguinte sentenza.
A expresión entre paréntese é a condición de repetición e o corpo no que se repite a outra expresión ou conxunto de expresións. Se o corpo ten varias sentenzas ao principio e ao final son necesarias. No programa 4 pódese ver un uso.
While
nesta modificación da estrutura, a avaliación da condición prodúcese ao final do abrandamento. Por tanto, nesta estrutura de do-while o corpo execútase polo menos una vez. Pola contra, na estrutura while pode ocorrer que a primeira avaliación sexa falsa. No resto son exactamente iguais.
A sintaxe da estrutura é a seguinte:
No programa 5 pódense ver os cambios realizados no programa do factorial do-while.
if
utilízase a nova para que os factoriales de Ø e 1 execútense correctamente.
No seguinte capítulo continuaremos coas estruturas e coa axuda de exemplos profundaremos no uso de estruturas de control.