• No results found

Specific Problems for Comparison

6. Generic concurrency problems

6.2. Specific Problems for Comparison

en los registros de la CPU para que los cálculos con éstas sean ejecutado de manera más ágil. Es de tener en cuenta que para las funciones no existen los modos de almacenamiento register ni auto.

7. Control del Flujo de ejecución.

Teniendo como principio la ejecución Secuencial de los programas, es decir que sus sentencias se ejecutan una tras otra en orden desde la primera hasta la última. Algunas veces es necesario no seguir el flujo del programa en orden sino saltar a partes del programa que serán ejecutadas en casos específicos, para tal efecto C cuenta con sentencias especiales que se clasifican en dos grupos las Bifurcaciones, sentencias que según ciertas condiciones pueden ser elegidas dos o mas opciones, y por otro lado están los Bucles, sentencias que permiten la ejecución cíclica de conjuntos de instrucciones el numero de veces que sea requerido por la aplicación.

7.1. Bifurcaciones.

Entre las bifurcaciones tenemos:

 Operador Condicional: Está compuesto por tres operandos que cumplen con la siguiente notación general:

expresión_1 ? expresión_2 : expresión_3;

Este operador se ejecuta de la siguiente forma: se evalúa la expresión_1, si el resultado de dicha expresión es trhue, se ejecuta la expresión_2; caso contrario se ejecuta la expresión_3.

Sentencia IF: esta permite la ejecución o no de una sentencia simple o compuesta dependiendo de una determinada condición. Su forma general es la siguiente:

if (expresión) sentencia;

Primero se evalúa la expresión si el resultado es true se ejecuta la sentencia en caso contrario se salta la sentencia a la siguiente línea del

programa teniéndose en cuenta que la sentencias pueden ser simples o compuestas (bloques {…}).

 Sentencia IF … ELSE: esta permite una ejecución de una parte u otra del programa dependiendo del valor de verdad de la expresión entre paréntesis.

if (expresión) sentencia_1; else

sentencia_2;

Se evalúa la expresión si es verdadera se ejecuta la sentencia_1, saltando sentencia_2 hasta la siguiente línea de comando, si por el contrario la expresión es falsa se ejecuta la sentencia_2 directamente saltándose sentencia_1.

 Sentencia IF … ELSE Múltiple: con esta sentencia se puede realizar ramificaciones múltiples ejecutando solo una de diferentes partes de un programa según se cumpla una entre „n‟ condiciones.

if (expresión_1) sentencia_1; else if (expresión_2) sentencia_2; else if (expresión_3) sentencia_3; else if (…) … [else sentencia_n;]

Se evalúa expresión_1 si es verdad se ejecuta sentencia_1, si es falsa se salta sentencia_1 evaluándose expresión_2 y así sucesivamente; si ninguna de las expresiones es verdadera se ejecuta entonces la sentencia_n que se conoce como la opción por defecto que a su vez puede ser una sentencia nula (;)

Sentencia SWITCH: Similar a la sentencia IF … ELSE múltiple pero con importantes diferencias, su forma general es la siguiente:

switch (expresión) { case expresión_cte_1: sentencia_1; case expresión_cte_2: sentencia_2; …

case expresión_cte_n: sentencia_n; [default

sentencia] }

Se evalúa expresión se tiene en consideración el resultado de esta expresión si dicho valor coincide con el valor constante expresión_cte_1 entonces se ejecuta sentencia_1, sentencia_2, … ,sentencia. Si coincide con expresión_cte_2 entonces se ejecutan todas las sentencias a partir de la sentencia_2.

Si no coinciden ninguna de las expresiones constantes entonces solo se ejecuta la sentencia por defecto si solo se desea ejecutar una de las sentencia, se emplea la sentencia brake al final de cada sentencia para dar por terminada la sentencia switch.

Si se desea ejecutar determinada sentencia para diferentes valores de expresión se pueden colocar varios case expresión_cte seguidos. (case expresión_cte1: case expresión_cte_2:…)

8. Bucles.

Los bucles pueden repetir cíclicamente la ejecución de determinadas líneas de código de un programa bien sea un número definido de veces o hasta que se cumpla una determinada condición lógica o aritmética, las tres herramientas que presenta C para tales efectos son:

Sentencia WHILE: Esta permite ejecutar repetidamente una instrucción o bloque de instrucciones mientras se cumpla una determinada condición, su forma general es la siguiente:

while (expresión_de_control) sentencia;

Sentencia se ejecutará siempre que al evaluarse „expresión_de_control‟ resulte verdadera es de señalarse que en „sentencia‟ alguna variable que también intervenga en „expresión_de_control‟ debe ir cambiando para evitar que el programa entre en un bucle infinito.

Sentencia FOR: La forma general del FOR en C es la siguiente: for (inicialización, expresión_de_control, actualización)

sentencia;

Al ejecutarse una sentencia FOR primeramente se inicializa una variable a conveniencia de la aplicación, seguidamente y de forma general se tienen en cuenta las variables inicializadas para evaluar la „expresión_de_control‟,

siempre que esta resulte verdadera se ejecutará „sentencia‟ después se realiza la actualización que puede consistir en el incremento de contadores o la actualización de variables y retornará a evaluar la „expresión_de_control‟ hasta que esta sea falsa.

Sentencia DO WHILE: Funciona de modo similar que la sentencia WHILE con la diferencia de que la evaluación de la „expresión_de_control’ se realiza al final del bucle después de haber ejecutado una vez al menos las sentencias entre las llaves, estas se seguirán ejecutando mientras que „expresión_de_control’ sea verdadera, a continuación la forma general de esta sentencia:

do

sentencia;

while (expresión_de_control);

El punto y coma se debe colocar después del paréntesis para diferenciar esta línea de una con una sentencia WHILE normal.

9. Sentencias break, continue, goto.

Como se observó anteriormente la sentencia break interrumpe el bucle donde se encuentre incluida, aunque la expresión de control correspondiente sea verdadera. La sentencia continue hace que el programa comience el siguiente ciclo del bucle donde se encuentre aunque no haya completado la ejecución completa de una sentencia compuesta o bloque.

La sentencia goto etiqueta hace saltar al programa a punto donde se haya escrito la etiqueta correspondiente.