miércoles, 30 de noviembre de 2011

sentencias


Una sentencia es cualquier expresión en C que se espera que tenga alguna consecuencia. Pueden ser asignaciones, operaciones, llamadas a funciones o combinaciones de ellas.
Toda sentencia termina con un ";". Una sentencia simple consiste en una expresión acabada en un punto y coma (;).
7.1 Etiquetas de sentencia
Sirven para etiquetar una sentencia de forma que el control del programa pueda ser transferido a ella. Se separan de la sentencia por dos puntos ":".

La sintaxis es:etiqueta: sentencia;
 


Por ejemplo, etiq100: x++;.7.2 Sentencias compuestas
Es un conjunto de sentencia simples que se encierran entre los símbolos "{" y "}" para formar un bloque de código. Pueden aparecer en cualquier sitio en el que podría aparecer una sentencia simple. Pueden contener declaraciones de nuevos objetos (el alcance de la declaración afecta al bloque).

La sintaxis es:{
sentencia;
sentencia;
¿.
sentencia;
}

Sentencias de selección 

Existen dos tipos, if y switch. Además, el operador "?" es una alternativa para if en ciertas situaciones. if y switch. Además, el operador "?" es una alternativa para if en ciertas situaciones.
 

IF
La forma general es:

if
(expresion) sentencia;
else sentencia;

Donde sentencia puede ser una sentencia simple, un bloque de sentencias o nada (en el caso de sentencias vacías). La cláusula else es opcional. Si la expresión del if es cierta (cualquier valor que no sea 0), se ejecuta la sentencia o el bloque de sentencias que constituye el objetivo del if; en cualquier otro caso se ejecuta la sentencia o bloque de sentencias que constituye el objetivo del else, si existe. Siempre se ejecuta el código asociado al if o al else, nunca ambos.
Un if anidado es un if que es el objeto de otro if o else. Son muy comunes en la programación. Un sentencia else siempre se refiere al if más próximo que esté en el mismo bloque que el else y que no esté asociado con un if. Por ejemplo: else es opcional. Si la expresión del if es cierta (cualquier valor que no sea 0), se ejecuta la sentencia o el bloque de sentencias que constituye el objetivo del if; en cualquier otro caso se ejecuta la sentencia o bloque de sentencias que constituye el objetivo del else, si existe. Siempre se ejecuta el código asociado al if o al else, nunca ambos.
if(i) {
if(j) sentencia 1;
if(k) sentencia 2; /* este if esta */
else sentencia 3; /* asociado con este else */
}
El estándar ANSI específica que al menos se deben permitir 15 niveles de anidamiento. En la práctica, la mayoría de los compiladores permiten bastantes más. La alternativa ?

SWITCH 
Es una sentencia de selección múltiple, que compara sucesivamente el valor de una expresión con una lista de constantes enteras o de caracteres. Cuando se encuentra una16-correspondencia, se ejecutan las sentencias asociadas con la constante. La forma general es:
-correspondencia, se ejecutan las sentencias asociadas con la constante. La forma general es:

switch (expresión) {
case constante1:
secuencia de sentencias;
break;
¿..
¿..
default:
secuencia de sentencias;
}

Se comprueba el valor de la expresión, por orden, con los valores de las constantes especificadas en las sentencias case. Cuando se encuentra una correspondencia, se ejecuta la secuencia de sentencias asociada con ese case, hasta que se encuentra la sentencia break o el final de la sentencia switch. Si no se incluye la sentencia break, sigue buscando más correspondencias en las siguientes sentencias case. La sentencia sentencia break o el final de la sentencia switch. Si no se incluye la sentencia break, El estándar ANSI específica que una sentencia switch debe permitir al menos 257 sentencias case. En la práctica el número empleado es menor por razones de eficiencia.
Aunque case es una sentencia de etiqueta, no tiene calidad por sí misma fuera de un case. En la práctica el número empleado es menor por razones de eficiencia.
Aunque case es una sentencia de etiqueta, no tiene calidad por sí misma fuera de un case es una sentencia de etiqueta, no tiene calidad por sí misma fuera de un switch.
La sentencia switch se diferencia de la sentencia if en que sólo puede comparar la igualdad, mientras que if puede evaluar expresiones relacionales o lógicas.
No puede haber dos constantes case en el mismo switch que tengan los mismos valores (por supuesto que una sentencia switch contenida en otra sentencia switch pude tener constantes case que sean iguales).
Si se utilizan constantes de tipo carácter en la sentencia switch, se convierten automáticamente a sus valores enteros.

 Sentencias de iteración 

También denominadas bucles. Permiten realizar un conjunto de instrucciones hasta que se alcance una cierta condición (que puede estar predefinida como en el bucle for; o no haber final predeterminado, como en los bucles while y do-while).
 FOR

El formato general es:for (inicialización; condición; incremento) sentencia; La inicialización normalmente es una sentencia de asignación que se utiliza para iniciar la variable de control del bucle.
La condición es una expresión relacional que determina cuando finaliza el bucle. El incremento define como cambia la variable de control cada vez que se repite el bucle.
Estas tres secciones principales deben ser separadas por punto y coma (";"). El bulce for continua ejecutándose mientras que la condición sea cierta. Una vez que la condición es falsa, la ejecución del programa sigue por la sentencia siguiente al for.

No es obligatoria ninguna de las tres expresiones, por ejemplo, se puede realizar un bucle infinito de la forma:

FOR

Sentencias de salto 

C tiene cuatro sentencias que llevan a cabo un salto incondicional (además de goto, pero su uso no está bien visto por sus programadores): return, break, exit() y continue. goto, pero su uso no está bien visto por sus programadores): return, break, exit() y continue.
 

RETURN 

Se usa para volver de una función. Se trata de una sentencia de salto porque hace que la ejecución vuelva al punto en que se hizo la llamada a la función. Si hay algún valor asociado con return, se trata del valor de vuelta de la función. Si no se especifica un valor de vuelta, se asume que devuelve un valor sin sentido.
 
Donde expresión es opcional. Se pueden usar tantas sentencias return como se quiera en una función. Sin embargo, la función termina al encontrar el primero.
expresión es opcional. Se pueden usar tantas sentencias return como se quiera en una función. Sin embargo, la función termina al encontrar el primero.

BREAK 

Tiene dos usos: para finalizar un case en una sentencia switch y para forzar la terminación inmediata de un bucle, saltando la evaluación condicional normal del ciclo.
Cuando se encuentra la sentencia break dentro de un bucle, el bucle finaliza inmediatamente y el control sigue en la sentencia posterior al bucle.

EXIT() 

Igual que se puede interrumpir un bucle, se puede salir anticipadamente de un programa usando la función exit() de la biblioteca estándar. Esta función da lugar a la terminación inmediata del programa, forzando la vuelta al sistema operativo. La forma general de la
 
función exit() es:

void exit (int código_de_vuelta);

El valor de código_de_vuelta es el que se devuelve al proceso de llamada, que normalmente es el sistema operativo. Generalmente se usa un cero como código de vuelta para indicar que se trata de una terminación normal del programa. Se utiliza otros argumentos para indicar algún tipo de error.

CONTINUE 

Funciona de forma similar a break. Sin embargo, en vez de forzar la terminación, break. Sin embargo, en vez de forzar la terminación, continue fuerza una nueva iteración del bucle y salta cualquier código que exista entremedias. Para el bucle for, continue hace que se ejecuten las partes de prueba condicional y de incremento del bucle. Para los bucles while y do-while, el control del programa pasa a la prueba condicional.

No hay comentarios:

Publicar un comentario en la entrada