martes, 22 de octubre de 2019

Laboratorio 9_2019


Laboratorio 9
"Programación básica con bucles de control"

1.- Marco teórico

BUCLES DE CONTROL

La estructura condicional if ... else
En la gran mayoría de los programas será necesario tomar decisiones sobre qué acciones realizar. Esas decisiones pueden depender de los datos que introduzca el usuario, de si se ha producido algún error o de cualquier otra cosa.
La estructura condicional if ... else es la que nos permite tomar ese tipo de decisiones. Traducida literalmente del inglés, se la podría llamar la estructura "si...si no", es decir, "si se cumple la condición, haz esto, y si no, haz esto otro".
Un ejemplo sencillo sería el siguiente (no se trata de un programa completo, sino tan sólo una porción de código):
if (edad < 18)
               printf("No puedes acceder.\n");
        else
               printf("Bienvenido.\n");


La estructura condicional abierta y cerrada switch ... case
La estructura condicional switch ... case se utiliza cuando queremos evitarnos las llamadas escaleras de decisiones. La estructura if nos puede proporcionar, únicamente, dos resultados, uno para verdadero y otro para falso. Una estructura switch ... case, por su parte, nos permite elegir entre muchas opciones. Ejemplo:
#include <stdio.h>
#include <stdlib.h>
 
int main(void) {
        int dia;
 
        printf("¿Qué número de día de la semana es?");
        scanf("%i",&dia);
 
        switch(dia) {
               case 1 :
                       printf("Lun, Lunes");
                       break;
               case 2 :
                       printf("Mar, Martes");
                       break;
               case 3 :
                       printf("Mier, Miercoles");
                       break;
               case 4 :
                       printf("Jue, Jueves");
                       break;
               case 5 :
                       printf("Vie, Viernes");
                       break;
               case 6 :
                       printf("Sab, Sabado");
                       break;
               case 7 :
                       printf("Dom, Domingo");
                       break;
               default :
                       printf("No existe");
}
return 0;
}

La estructura anterior, de realizarse con sentencias if, necesitaría cuatro de ellas, resultando un enorme bloque muy difícil de leer. En la mayoría de los casos, además, la sentencia switch proporciona una ganancia en velocidad del código, pues permite al compilador trabajar en base a que se trata de una decisión múltiple para una única variable, cosa que con sentencias if el compilador no tiene por qué detectar.

El bucle while
El bucle while sirve para ejecutar código reiteradas veces.
while (/*condicion*/) {
        /* Código */
}
La condición debe de ser una expresión lógica, similar a la de la sentencia if. Primero se evalúa la condición. Si el resultado es verdadero, se ejecuta el bloque de código. Luego se vuelve a evaluar la condición, y en caso de dar verdadero se vuelve a ejecutar el bloque. El bucle se corta cuando la condición da falso.
Ejemplo: imprimir los números de 0 a 99:
int i = 0;
while (i < 100) {
        printf("%d\n", i);
        i = i + 1;
}
Inicialmente se declara que la variable i tiene un valor de 0. Al iniciar el bucle, se cumple la condición i < 100, por lo que se procede a la instrucción de imprimir dicho número (cero, en el caso inicial). Posteriormente i cambiará su valor de uno en uno por la instrucción i = i + 1 y seguidamente dicho valor nuevo, será evaluado en la condicion while hasta que i llegue al valor 100, donde debido a la condicional, éste será un valor falso, dando fin al código.
El bucle for
El bucle for es un bucle muy flexible y a la vez muy potente ya que tiene varias formas interesantes de implementarlo, su forma más tradicional es la siguiente:

for (/* inicialización */; /* condición */; /* incremento */) {
        /* código a ejecutar */
}
Inicialización: en esta parte se inicia la variable que controla el bucle y es la primera sentencia que ejecuta el bucle. Sólo se ejecuta una vez ya que solo se necesita al principio del bucle.
Expresión condicional: al igual que en el bucle while, esta expresión determina si el bucle continuará ejecutándose o no.
Incremento: es una sentencia que ejecuta al final de cada iteración del bucle. Por lo general, se utiliza para incrementar la variable con que se inicio el ciclo. Luego de ejecutar el incremento, el bucle revisa nuevamente la condición, si es verdadera tiene lugar una ejecución más del cuerpo del ciclo, si es falsa se termina el ciclo y así.

2.- Vídeo


Simulación 

Código



3.-Conclusiones
  • Reconocimos los comandos del software de programación de CCS C COMPILER. 
  • Realizamos la simulación en ISIS PROTEUS del mismo programa.
  • Realizamos un programa para el funcionamiento de un semáforo tomando como base el ejemplo del laboratorio.

No hay comentarios:

Publicar un comentario