Linguaxe de programación C (IV). Estruturas de control I
1991/05/01 Alegria Loinaz, Iñaki | Maritxalar, Montse Iturria: Elhuyar aldizkaria
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.
Estrutura IF
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:
- Expresións das ramas, terminando co carácter.
- Nas ramas con máis dunha orde débese especificar ao principio e ao final da mesma.
- Paira expresar a igualdade na expresión condicional utilízase o axente = e non =, xa que neste caso non se produce erro, pero se produce una asignación e se o valor asignado é Ø, considerarase un resultado falso e no resto como verdadeiro.
- Cando hai outra if (if kabiatua) dentro de una if hai un problema coas ramas, xa que ao atopar una else pode dubidar de si corresponde á primeira ou segunda. A regra é que una else corresponde sempre co último if- escrito, sen ter en conta as marxes.
- Condición de estrutura If? expresión 1: expresion2, que pode ser substituída pola expresión, como se aprecia no programa 1.

Estrutura SWITCH
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).

Estrutura WHILE
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.

Estrutura DO-WHILE
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.

Gai honi buruzko eduki gehiago
Elhuyarrek garatutako teknologia