Linguaxe de programación C (V). Estruturas de control II
1991/06/01 Alegria Loinaz, Iñaki | Maritxalar, Montse Iturria: Elhuyar aldizkaria
IF
Tras analizar as estruturas condicionais e repetitivas de while e do-while no capítulo anterior, o obxectivo deste capítulo céntrase nas seguintes explicacións:
- Estrutura for repetitiva
- break e uso de sentenzas continue en estruturas repetitivas.
- Utilización das estruturas e expresións analizadas en exemplos de interese: if cavadas, manexo de bits.
- A cadea de caracteres e a definición e utilización de táboas en estruturas repetitivas.
Estrutura FOR
Nesta complexa estrutura repetitiva admítense expresións de inicialización e actualización por ciclo sobre o corpo do abrandamento e a condición de repetición, resultando nalgúns casos una estrutura moi cómoda.
A sintaxe é a seguinte:

O seu funcionamento é o seguinte:
- avaliar a expresión inicial (inicialización).
- avaliar a expresión dos baldines. Si é falso pasar á seguinte sentenza (fin).
- se a expresión de baldin é certa, realízase a expresión ou expresións corporais.
- avaliar a expresión diaria (actualización) e 2) ao momento.
Por tanto, a primeira expresión entre paréntese (inicialización) execútase una vez, a segunda ao comezo de cada ciclo e a terceira (actualización) ao final de cada ciclo. No entanto, o que se realiza coa estrutura for pódese realizar mediante while e asignación como se pode ver a continuación.

O cálculo do factorial descrito no Programa 1 no capítulo anterior pódese ver utilizando a estrutura for.

Se as expresións da estrutura son opcionais, a expresión da baldin debe aparecer sempre, xa que pola contra o abrandamento sería infinito. Cando a primeira e a terceira expresión non aparecen, for e while son totalmente equivalentes.
O corpo pode estar formado por unha soa expresión ou por un conxunto de expresións separadas por{ e}, admitíndose tamén o corpo baleiro (neste caso o corpo está formado polo carácter).
Break e Continue
En estruturas repetitivas, aínda que ás veces cúmprase a expresión que controla o bigal (expresión de baldin), é conveniente que salga do bigal si produciuse algunha excepción. Paira iso utilízase a sentenza break en estruturas repetitivas.
Un exemplo pódese ver no programa 2. Nel lense 80 caracteres e cóntase o número de maiúsculas que hai. No entanto, se se le o carácter ‘.’ non se deben ler máis caracteres.

Noutros casos, cando o corpo da estrutura repetitiva é complexo, pode suceder que, a pesar de querer seguir abrandándose nunha situación, non sexa necesario executar una parte do corpo, paira o que se produce una sentenza continue moi adecuada.
No 3er programa lense 20 números e hai que calcular o seu produto, pero se o número é Ø non se ten en conta.

Exemplos
Enunciado 1: Ler tres números enteiros e grandes (Programa 4).

Neste exemplo, nas ramas dunha if móstranse as estruturas if ( if cavadas) e ao considerar cada estrutura como una expresión simple, non se necesita chave.
Enunciado 2: Ler un carácter e calcular cantos bits hai en estado cero. (Programa 5).

O manexo de bits resulta moi difícil en linguaxes superiores, mentres que Cz é extremadamente sinxelo (and), | (or), interactivo (xor), (desprazamento esquerdo) e (desprazamento dereito). No exemplo, mediante a operación and analízase un bit, xa que cando na operación and emparellamos un dato cunha máscara cun único bit en estado 1, se o bit do dato correspondente a 1 é cero, e si é un, o resultado distinto é cero. A operación atópase nun bigal ( coa estrutura for) que se repite 8 veces, pero paira analizar os diferentes bits é necesario desprazar dentro do bigal os bits da máscara (como o que se fixo no programa) ou desprazar o mesmo dato.
Enunciado 3: Ler 40 caracteres e contar os bits en Ø.
Ante este exemplo exponse 2 preguntas:
- Pódense ler os caracteres á vez ou un por un? É posible ler todos á vez, pero paira iso hai que utilizar o tipo de datos cadea de caracteres, que non analizamos até agora.
- É posible utilizar o código utilizado no enunciado 2 paira resolver isto? A resposta é afirmativa, pero paira iso, en lugar de ser o programa principal 5 (main), debe definirse como una acción non primitiva (tamén coñecida como función, procedemento ou rutina), que analizaremos no capítulo seguinte.
Cadeas de caracteres e táboas
Os datos básicos vistos até o momento son caracteres (char), números enteiros (short, int, long) e reais (float, double). Sobre eles pódense definir conxuntos de datos formando táboas ou vectores, como se pode observar no seguinte exemplo:
char [8Ø];
/* Cadea Ø 8 caracteres */
Táboa int [Ø 2], matriz [M] [N];
A cadea de caracteres (string en inglés) é una táboa de caracteres na que o último carácter é constante ‘\Ø’. Este carácter final de cadea permite detectar o final da cadea cando a cadea é de lonxitude variable.
As táboas poden ser unidimensionales (string ou táboa no exemplo) ou múltiples (a matriz no exemplo é binaria). No uso menciónase o nome e o índice (entre macos), estando o índice entre Ø e o número de compoñentes menos un. Na definición débese indicar o nome e o número de compoñentes (entre macos) sendo opcional a inicialización. No Programa 6 pódese ver un exemplo.


Gai honi buruzko eduki gehiago
Elhuyarrek garatutako teknologia