C/Instrucións de control: Diferenzas entre revisións

Contido eliminado Contido engadido
Gallaecio (conversa | contribucións)
m Equivalentes noutras linguas
m Bot: Cambios estética
 
Liña 7:
As instrucións de control permiten, como o seu nome indica, controlar o fluxo dun programa. Mediante este tipo de instrucións, pódense establecer [[{{PAGENAME}}#Condicións|condicións]] para a execución doutras instrucións, crear ciclos de instrucións que se repiten varias veces, saír dun [[{{PAGENAME}}#Bloques de instrucións|bloque]] ou dunha [[{{BASEPAGENAME}}/Funcións|función]], etc.
 
== Condicións ==
Na linguaxe de programación C, certo e falso son cuestións puramente aritméticas, e considérase falso o valor nulo, <code>0</code>, e certo calquera outro valor. De feito, “<em>''o valor máis certo é <code>-1</code></em>''”, e non 1, dado que en binario o computador detecta antes que non é cero o <code>-1</code>, que en binario comeza por <code>1</code>, que o <code>1</code>, cuxos bits son todos <code>0</code> agás o último.
 
As condicións que se utilizarán nas instrucións de control poden ser unha variable, unha expresión completa ou mesmo un número. Por exemplo, unha condición podería ser <code>-1</code>, que sería certa. Outra pode ser <code>a</code>, que será certa mentres o valor de <code>a</code> sexa distinto de <code>0</code>. E outra podería ser «<source lang=c enclose=none>a * (b - c / d)</source>». As posibilidades son inmensas. Coñecendo o uso dos distintos tipos de [[{{BASEPAGENAME}}/Operadores|operadores]], todo dependerá do que sexa necesario ter en conta.
 
== Bloques de instrucións ==
Cando se cumpre a condición dunha instrución de control, pódese establecer que se execute unha instrución calquera. Porén, cando se queira que se execute máis dunha (que será o caso case sempre), non abonda con escribir a lista de instrucións a continuación da condición. Fai falla indicarlle ao compilador que todas esas instrucións forman parte dun mesmo grupo que se executará cando se cumpra a condición da instrución de control. Isto faise mediante un bloque de instrucións.
 
Liña 89:
Por último, <source lang=c enclose=none>default:</source> indica as instrucións que se executarán en caso de que o valor da expresión non se corresponda con ningún dos <source lang=c enclose=none>case</source>. A súa inclusión na instrución de control é opcional.
 
=== “Caída” ===
O comportamento de executar as instrucións dos seguintes <source lang=c enclose=none>case</source> se non se engade un <source lang=c enclose=none>break</source> ou un <source lang=c enclose=none>return</source> pode aproveitarse nalgunhas ocasións para obter un comportamento específico. Pero se no mesmo código traballa ou vai traballar máis dun programador, cómpre indicar que isto se está facendo a propósito para evitar que alguén “corrixa o erro”. Isto faise xeralmente mediante o comentario «<source lang=c enclose=none>// CAÍDA</source>», ou se se trata dun proxecto internacional, «<source lang=c enclose=none>// FALL THROUGH</source>». Véxase o seguinte exemplo:
<source lang="c">
Liña 118:
case 6: // A función printf() imprime en pantalla o texto pasado como argumento.
case 10: printf("Verás este texto se a variable vale 1, 6 ou 10.\n");
break;
case 2: printf("Verás este texto se a variable vale 2.\n");
break;
default: printf("Verás este texto se a variable non vale nin 1, nin 2, nin 6 nin 10.\n");
break;
}
</source>
Liña 136:
</source>
 
== Ciclos ==
Os ciclos consisten en instrucións que se repiten ata que se cumpra unha condición. As instrucións dos ciclos non varían durante a súa execución, pero poden varias os valores das variables, de xeito que as posibilidades vólvense infinitas.
 
En C existen tres instrucións de control para a creación de ciclos, cada unha coas súas peculiaridades, e se ben xeralmente se poden adaptar todos os ciclos para facer as mesmas funcións, en cada situación resultará máis eficiente, elegante, ou simplemente evidente a utilización dun ciclo concreto. Algo que si que teñen todos os ciclos en común é que a súa execución non se detén no mesmo intre en que a condición se volve falsa, senón cando esta é falsa ao avaliala, algo que se fai xusto antes de comezar a execución da instrución ou bloque de instrucións do ciclo.
 
=== Ciclos sen fin ===
Cómpre lembrar de cara aos ciclos que se poden crear expresións que sempre son certas, como sería a expresión «<code>-1</code>», de xeito que se conseguiría o que se denomina un “ciclo sen fin”. Por suposto, hai maneiras de saír co ciclo alternativas a que a condición cambie, coma as instrucións de control [[{{PAGENAME}}#break|<source lang=c enclose=none>break</source>]] ou [[{{PAGENAME}}#return|<source lang=c enclose=none>return</source>]]. Pero se nun ciclo sen fin non se establece algunha forma de saír del, o programa non deixará de executarse, e haberá que interromper a súa execución manualmente.
 
Liña 223:
 
O uso desta instrución de control está desaconsellado salvo para os casos nos que sexa imprescindible o seu uso ou en que este sexa moito máis comprensible á hora de ler o código que o seu equivalente sen esta instrución. Algunhas situacións en que podería usarse esta instrución son as seguintes:
* Saír dun ciclo con moitos bloques (<source lang=c enclose=none>break</source> non pode saír máis que dun bloque). En todos os casos sería posible saír do ciclo sen necesidade de usar o <source lang=c enclose=none>goto</source>, pero pode resultar nun código case ilexible.
* Desfacer accións de maneira ordenada, como liberar memoria.
 
 
Liña 230:
 
<!-- Categorías: -->
<!-- Noutras linguas: -->
 
[[Categoría:C ─ Elementos|Instrucions de control]]
 
<!-- Noutras linguas: -->
[[en:C Programming/Control]]
[[es:Programación en C/Instrucciones de control]]