Está en la página 1de 10

| Programación - IQ | Unidad 3 |

Programación - IQ
Unidad 3 - Estructuras de control.
Competencia específica a desarrollar:
 Resolver problemas específicos con estructuras de control, mediante el uso de herramientas
computacionales en el ámbito de competencia.

Estructuras de control
En lenguajes de programación, las estructuras de control permiten modificar el flujo de ejecución de las
instrucciones de un programa.
Con las estructuras de control se puede:
 De acuerdo a una condición, ejecutar un grupo u otro de sentencias (If-Then-Else)
 De acuerdo al valor de una variable, ejecutar un grupo u otro de sentencias (Select-Case)
 Ejecutar un grupo de sentencias mientras se cumpla una condición (Do-While)
 Ejecutar un grupo de sentencias hasta que se cumpla una condición (Do-Until)
 Ejecutar un grupo de sentencias un número determinado de veces (For-Next)
Todas las estructuras de control tienen un único punto de entrada. Las estructuras de control se puede
clasificar en: secuenciales, iterativas y de control avanzadas. Esto es una de las cosas que permite que
la programación se rija por los principios de la programación estructurada.

Los lenguajes de programación modernos tienen estructuras de control similares. Básicamente lo que varía
entre las estructuras de control de los diferentes lenguajes es su sintaxis, cada lenguaje tiene una sintaxis
propia para expresar la estructura.

3.1 - Asignación.
La asignación consiste, en el paso de valores o resultados a una zona de la memoria. Dicha zona será
reconocida con el nombre de la variable (identificador) que recibe el valor.
Formas de asignación:
 Simple: Consiste en pasar un valor constante a una variable.
Variable = Valor
 Contador: Consiste en usarla como un verificador del número de veces que se realiza un proceso
Valor = Valor + 1
 Acumulador: Consiste en usarla como un sumador en un proceso

M@lonso © 2016 |1
| Programación - IQ | Unidad 3 |

Suma = Suma + Valor


 De trabajo: Donde puede recibir el resultado de una operación matemática que involucre muchas
variables.
Valor = (a + b) / c
El formato general de la sentencia de asignación es:
Nombre_de_Variable = Expresion ;
Donde:
 Nombre_de_Variable.- Es un nombre de identificador de variable previamente definido.
 Expresión.- Puede ser tan simple como una constante o tan compleja como una combinación de
variables, operadores y constantes.
El destino o parte izquierda de la asignación debe ser una variable, no una función o una constante.

3.2 - Selección (if, switch, case).

Las estructuras selectivas sirven para seguir una sola de entre varias líneas de ejecución disponibles

Selectiva simple

La estructura selectiva simple sirve para seguir una línea de ejecución cuando se cumple una condición.

Sintaxis:

Caso 1)
If (condición) instrucción; // Una sola instrucción

Caso 2)
If (condición)
{
Bloque // Varias instrucciones
}

Ejemplo 1:
If (calificación >= 70) estado = "Acreditado";

Ejemplo 2:
If (crédito == true)
{
clave = 1200 ;
adeudo += compra ;
}

Selectiva doble
M@lonso © 2016 |2
| Programación - IQ | Unidad 3 |

La estructura selectiva doble sirve para seguir una línea de ejecución cuando se cumple la condición, o
seguir otra línea cuando no se cumple la condición.

Sintaxis:
Caso 1)
If (condición) instrucción 1 ; // Una sola instrucción
else instrucción 2 ;

Caso 2)
If (condición)
{
Bloque 1 // Varias instrucciones
}
else
{
Bloque 2 // Varias instrucciones
}

Ejemplo 1:
If (calificación >= 70) estatus = "Acreditado";
else estatus = "No Acreditado";

Ejemplo 2:
If (crédito == true)
{
clave = 1200 ;
adeudo += compra ;
}
else
{
clave = 1000 ;
adeudo += 0.0 ;
}
/* Programa 1: El número mágico */
#include <stdio.h>
main()
{
int magico = 123 ;
int adivina ;
puts( " Teclea un numero entero: " ) ;
scanf( " %d " , &adivina ) ;
if ( adivina = = magico ) printf( " ** Correcto ** " ) ;
else printf( " ** Equivocado ** " ) ;
getch() ; /* Pausa */
}

M@lonso © 2016 |3
| Programación - IQ | Unidad 3 |

Selectiva anidada

La estructura selectiva anidada es una cadena de estructuras selectivas que se conectan de la parte else
de la actual con la parte if de la siguiente.

Sintaxis:

If (condición1) Bloque 1 ;
else if (condición2) Bloque 2 ;
else Bloque 3;

Ejemplo:
If (edad < = 2 )
Printf("Bebé" ) ;
else if (edad < 12)
Printf("Niño" ) ;
else if ( edad < 18)
Printf("Adolescente" ) ;
else Printf (" Adulto" ) ;

/* Programa 2: El número mágico con if’s anidados */


#include <stdio.h>
main()
{
int magico = 123 ;
int adivina ;
puts( " Teclea un numero entero: " ) ;
scanf( " %d " , &adivina ) ;
if ( adivina = = magico )
{
printf( " ** Correcto ** \a \a \n " ) ;
printf( " %d es el numero magico " , magico ) ;
}
else
{
printf( " ** Equivocado ** \a \a \n " ) ;
if ( adivina > magico ) printf( " Demaciado alto " ) ;
else printf( " Demaciado bajo " ) ;
}
getch(); /* Pausa */
}

M@lonso © 2016 |4
| Programación - IQ | Unidad 3 |

Selectiva múltiple
La estructura selectiva múltiple es similar a la selectiva anidada, salvo que las condiciones deben ser de
alguno de los tipos enteros o de tipo carácter.

Sintaxis:
switch(Expresión)
{
case Cte 1: Bloque 1 ; break;
case Cte 2: Bloque 2 ; break;
case Cte N: Bloque N ; break;
default: Bloque X ; break;// Opcional.
}
Ejemplo:
switch(opción)
{
case 'A': printf("Altas"); break;
case 'B': printf("Bajas") ; break;
case 'C': printf("Cambios") ; break;
default: printf("Opción inválida") ; break;
}

/* Programa 3: Operaciones aritméticas */


#include <stdio.h>
main()
{
char opcion ;
int a , b ;
clrscr() ;
printf( " Teclear 2 numeros enteros : " ) ;
scanf( " %d %d " , &a , &b ) ;
clrscr() ;
printf( " Opciones: \n " ) ;
printf( " 1 - Suma 2 - Resta 3 - Multiplica 4 - Divide \n " ) ;
printf( " Seleccione una Opcion: " ) ;
opcion = getchar() ;
switch ( opcion )
{
case ' 1 ' : printf( " La suma de %d + %d = %d \n " , a , b , a+b ) ;
break;
case ' 2 ' : printf( " La resta de %d - %d = %d\n " , a , b , a-b ) ;
break;
case ' 3 ' : printf( " La multiplicación de %d * %d = %d \n " , a , b , a*b ) ;
break;
case ' 4 ' : printf( " La division de %d/ %d = %d \n " , a , b , a/b ) ;
break;
default : printf( " Opcion incorrecta " ) ;
}
}

M@lonso © 2016 |5
| Programación - IQ | Unidad 3 |

3.3 - Iteración o repetición (do, while, for).

Las estructuras de iteración o repetición sirven para formar bucles o ciclos en los que se ejecuta
repetidamente un bloque de instrucciones.

Nota: La sentencia break, causa la terminación del ciclo while, do, for o switch más cercano; el control
continúa en la proposición o sentencia que sigue a la que ha finalizado. Esta función requiere del archivo
de cabecera stdlib.h.

Repetir mientras (while)

En esta estructura, de entrada se evalúa una condición. En caso de que el resultado de tal evaluación sea
verdadero (true), se ejecuta un bloque de instrucciones, en el cual debe existir una instrucción que
modifique la condición. De no existir esa instrucción, se ejecutará un ciclo infinito (loop). Si el resultado de
la evaluación es falso (false), el bloque de instrucciones no se ejecuta y finaliza la ejecución de la
estructura.

Sintaxis:
while( condición )
{
Bloque ;
}
/* Programa 4: Lee números y los suma hasta teclear un cero */
#include <stdio.h>
main()
{
int numero , suma = 0 ;
puts( " Tecleé un numero: " ) ;
scanf( " %d " , &numero ) ;
while ( numero )
{
suma = suma + numero ;
puts( " Teclee un numero: " ) ;
scanf( " %d " , &numero ) ;
}
printf( " La suma de los numeros es %d " , suma ) ;
getch() ;
}

M@lonso © 2016 |6
| Programación - IQ | Unidad 3 |

Repetir hasta (do-while)

La estructura do-while tiene un comportamiento similar a while, sólo que en este caso primero se ejecuta el
bloque de instrucciones y después se evalúa la condición. Con esto se asegura que el bloque se ejecutará
al menos una vez.

Sintaxis:
do
{
Bloque ;
} while(condición) ;

/* Programa 5: Lee números y los suma hasta teclear un cero */

#include <stdio.h>
main()
{
int numero , suma = 0 ;
do {
suma = suma + numero ;
puts( " Tecleé un numero: " ) ;
scanf( " %d " , &numero ) ;
} while ( numero ) ;
getch() ;
}
Repetir desde (for)

Entre las estructuras de iteración, for es la más versátil ya que, entre otras características, permite la
declaración de variables dentro de su estructura.

Sintaxis:
for ( Inicialización ; Condición ; Control) Bloque ;
Donde:
Inicialización es un bloque de instrucciones que puede incluir la
declaración de las variables involucradas y la asignación de valores
iniciales.
Condición es una instrucción que puede evaluarse de tal forma que se
obtenga como resultado un valor de verdad (false o true). Mientras se
cumpla la condición, se ejecutará el Bloque.
Control es un conjunto de instrucciones, separadas por comas, que
controlan la variación de los valores de las variables utilizadas.
Los bloques de Inicialización, Condición y Control no son obligatorios,
pero sí los dos punto y coma (;) que los separan, por lo que la forma
mínima de una estructura for quedaría así:
for ( ; ; ) ; // ciclo infinito que no realiza tarea alguna.

M@lonso © 2016 |7
| Programación - IQ | Unidad 3 |

Ejemplo:
for (int i = 1 ; i <= 10 ; i++)
{
printf("Soy la línea %d \n" , i ) ;
}
/* Programa 5: Imprime los números del 1 al 100 */

#include <stdio.h>
main()
{
int x ;
for ( x = 1 ; x < = 100 ; x ++ )
printf( " %d " , x ) ;
}

3.4 - Combinadas y anidadas.


Los ciclos anidados NO son en sí una estructura de control, son de hecho un conjunto de estructuras de
control anidadas, con anidadas se refiere a que una está dentro de la otra. De este modo un ciclo anidado
no es más que uno o más ciclos dentro de otro y no se tienen límite alguno para la cantidad de ciclos
anidados.
¿Cómo funciona un ciclo anidado?
Un único ciclo al interior de otro, funciona como un ciclo normal pero elevado al cuadrado, el ciclo externo
comienza su ejecución con normalidad y luego va hasta el ciclo interno, y aquí es donde cambia todo; el
ciclo externo no avanza hasta que el ciclo interno termine y una vez el ciclo externo avanza un paso vuelve
a esperar al interno y así sucesivamente hasta que el externo termina, es por esto que puede ser un poco
ineficiente.
Los ciclos anidados suelen usarse para llenar matrices (un vector de varias dimensiones) donde un ciclo
recorre cada fila y otra cada columna o viceversa. De este modo, entonces el ciclo externo empieza por la
columna cero y el interno llena cada casilla de la columna cero y luego de la uno y las dos y así
sucesivamente.
Hay que hacer que el ciclo externo (el de las columnas) no avanza al siguiente hasta que el ciclo interno no
llene todas las casillas de esa columna (lo cual tiene sentido, pues debe llenarse en orden).
Sintaxis de ciclos anidados:

M@lonso © 2016 |8
| Programación - IQ | Unidad 3 |

Ejemplos
El método de ordenamiento de burbuja (Bubble Sort), es un algoritmo que se aplica para poder ordenar
una cantidad de datos ya sea de forma ascendente o descendente.
Es el algoritmo más fácil de implementar, pero a cambio se paga un alto precio en procesamiento, ya que
este método evalúa una cantidad de datos muchas veces y en ocasiones innecesariamente (como por
ejemplo cuando son iguales).
Un array o estructura que ordenar (>1 elemento).
Dos variables contadoras de ciclos (i,j por ejemplo).
Una variable temporal (para almacenar un dato momentáneamente).
Dos ciclos y un Condicional...
....
//DE MENOR A MAYOR (Ascendente)
#define Nelementos 4
....
int i,j; //Variables contadoras del ciclo.
int lista[Nelementos]={6,9,3,1}; //Declaracion e inicializacion de un arreglo de 4 elementos.
int temp=0; //Variable temporal.

for (i=1;i<Nelementos;i++)
{
for (j=0; j <= Nelementos-1 ;j++) // for(j=0; j < Nelementos-1; j++) es menor y no menor igual
{
if (lista[j] > lista[j+1])//Condicion mayor-menor
{
temp=lista[j];
lista[j]=lista[j+1];
lista[j+1]=temp;
}
}
}
//Para cambiar el modo de ordenamiento solo se debe de cambiar la condición < ó >

M@lonso © 2016 |9
| Programación - IQ | Unidad 3 |

Estructuras cíclicas anidadas


Una estructura cíclica puede estar anidada dentro de otra estructura cíclica o de decisión sin problemas.
Hay que tener en cuenta que el anidamiento debe ser total.

Ejemplo: Ordenar tres número de mayor a menor

M@lonso © 2016 | 10

También podría gustarte