}

Llenguatge de programació C (V). Estructures de control II

1991/06/01 Alegria Loinaz, Iñaki | Maritxalar, Montse Iturria: Elhuyar aldizkaria

Després d'analitzar en el capítol anterior les estructures condicionals F i switch i les estructures repetitives while i do-while, l'objectiu en aquest capítol se centra en les explicacions.

IF

Després d'analitzar les estructures condicionals i repetitives de while i do-while en el capítol anterior, l'objectiu d'aquest capítol se centra en les següents explicacions:

  • Estructura for repetitiva
  • break i ús de sentències continue en estructures repetitives.
  • Utilització de les estructures i expressions analitzades en exemples d'interès: if cavades, maneig de bits.
  • La cadena de caràcters i la definició i utilització de taules en estructures repetitives.

Estructura FOR

En aquesta complexa estructura repetitiva s'admeten expressions d'inicialització i actualització per cicle sobre el cos de l'estovament i la condició de repetició, resultant en alguns casos una estructura molt còmoda.

La sintaxi és la següent:

El seu funcionament és el següent:

  1. avaluar l'expressió inicial (inicialització).
  2. avaluar l'expressió dels baldines. Si és fals passar a la següent sentència (fi).
  3. si l'expressió de baldin és certa, es realitza l'expressió o expressions corporals.
  4. avaluar l'expressió diària (actualització) i 2) al punt.

Per tant, la primera expressió entre parèntesi (inicialització) s'executa una vegada, la segona a l'inici de cada cicle i la tercera (actualització) al final de cada cicle. No obstant això, el que es realitza amb l'estructura for es pot realitzar mitjançant while i assignació com es pot veure a continuació.

El càlcul del factorial descrit en el Programa 1 en el capítol anterior es pot veure utilitzant l'estructura for.

Programa 1. Factorial per for.

Si les expressions de l'estructura són opcionals, l'expressió de la baldin ha d'aparèixer sempre, ja que en cas contrari l'estovament seria infinit. Quan la primera i la tercera expressió no apareixen, for i while són totalment equivalents.

El cos pot estar format per una sola expressió o per un conjunt d'expressions separades per{ i}, admetent-se també el cos buit (en aquest cas el cos està format pel caràcter).

Break i Continue

En estructures repetitives, encara que a vegades es compleixi l'expressió que controla el bigal (expressió de baldin), és convenient que surti del bigal si s'ha produït alguna excepció. Per a això s'utilitza la sentència break en estructures repetitives.

Un exemple es pot veure en el programa 2. En ell es llegeixen 80 caràcters i es compta el nombre de majúscules que hi ha. No obstant això, si es llegeix el caràcter ‘.’ no s'han de llegir més caràcters.

Programa 2. Ús de la sentència Break.

En altres casos, quan el cos de l'estructura repetitiva és complex, pot succeir que, malgrat voler continuar estovant-se en una situació, no sigui necessari executar una part del cos, per al que es produeix una sentència continue molt adequada.

En el 3er programa es llegeixen 20 números i cal calcular el seu producte, però si el número és Ø no es té en compte.

Programa 3. Ús de la sentència Continue.

Exemples

Enunciat 1: Llegir tres nombres enters i grans (Programa 4).

Programa 4. Cavats If.

En aquest exemple, en les branques d'una if es mostren les estructures if ( if cavades) i en considerar cada estructura com una expressió simple, no es necessita clau.

Enunciat 2: Llegir un caràcter i calcular quants bits hi ha en estat zero. (Programa 5).

Programa 5. Cavats If.

El maneig de bits resulta molt difícil en llenguatges superiors, mentre que Cz és extremadament senzill (and), | (or), interactiu (xor), (desplaçament esquerre) i (desplaçament dret). En l'exemple, mitjançant l'operació and s'analitza un bit, ja que quan en l'operació and aparellem una dada amb una màscara amb un únic bit en estat 1, si el bit de la dada corresponent a 1 és zero, i si és un, el resultat diferent és zero. L'operació es troba en un bigal ( amb l'estructura for) que es repeteix 8 vegades, però per a analitzar els diferents bits és necessari desplaçar dins del bigal els bits de la màscara (com el que s'ha fet en el programa) o desplaçar la mateixa dada.

Enunciat 3: Llegir 40 caràcters i comptar els bits en Ø.

Davant aquest exemple es plantegen 2 preguntes:

  • Es poden llegir els caràcters alhora o d'un en un? És possible llegir tots alhora, però per a això cal utilitzar el tipus de dades cadena de caràcters, que no hem analitzat fins ara.
  • És possible utilitzar el codi utilitzat en l'enunciat 2 per a resoldre això? La resposta és afirmativa, però per a això, en lloc de ser el programa principal 5 (main), ha de definir-se com una acció no primitiva (també coneguda com a funció, procediment o rutina), que analitzarem en el capítol següent.

Cadenes de caràcters i taules

Les dades bàsiques vistes fins al moment són caràcters (char), nombres enters (short, int, long) i reals (float, double). Sobre ells es poden definir conjunts de dades formant taules o vectors, com es pot observar en el següent exemple:

char [8Ø];

/* Cadena Ø 8 caràcters */

Taula int [Ø 2], matriu [M] [N];

La cadena de caràcters (string en anglès) és una taula de caràcters en la qual l'últim caràcter és constant ‘\Ø’. Aquest caràcter final de cadena permet detectar el final de la cadena quan la cadena és de longitud variable.

Les taules poden ser unidimensionals (string o taula en l'exemple) o múltiples (la matriu en l'exemple és binària). En l'ús s'esmenta el nom i l'índex (entre macos), estant l'índex entre Ø i el nombre de components menys un. En la definició s'ha d'indicar el nom i el nombre de components (entre macos) sent opcional la inicialització. En el Programa 6 es pot veure un exemple.

Programa 6. Utilitzant taules.

Gai honi buruzko eduki gehiago

Elhuyarrek garatutako teknologia