Академический Документы
Профессиональный Документы
Культура Документы
Ingeniería Mecatrónica
MICROCONTROLADORES
PRÁCTICA 1
Alumnos:
Guerrero Ferrer Jenifer Yadira
Guerrero Mercado Aldo Sahid
1
ÍNDICE
Introducción ..................................................................................................................................... 3
Objetivos .......................................................................................................................................... 4
Objetivo general ................................................................................................................... 4
Objetivos específicos ............................................................................................................ 4
Desarrollo
Programa de pila ................................................................................................................... 5
Programa de cola .................................................................................................................. 8
Resultados ........................................................................................................................................ 9
Conclusión ...................................................................................................................................... 11
2
INTRODUCCIÓN
Una pila en C es una estructura de datos que permite almacenarlos en el orden LIFO (Last In, First
Out) esto quiere decir que el último valor ingresado será el primero en salir.
En cambio la cola, también llamada estructura FIFO (First In, First Out), funciona de tal manera
que el primer elemento en entrar será también el primero en salir.
Como práctica se presentan dos problemas a resolver. El primero consiste en realizar un programa
en C que funcione como una pila de números enteros, y el segundo como una cola, dando como
opciones “agregar elemento”, “borrar elemento” e “imprimir cola/pila”. Mediante el uso de
vectores con memoria dinámica.
3
OBJETIVOS
OBJETIVO GENERAL:
Realizar un programa en C que realice la función de una pila y una cola mediante el
uso de arreglos.
OBJETIVOS ESPECÍFICOS:
Realizar la codificación de una pila y una cola en C utilizando vectores de una
dimensión con memoria dinámica
Establecer las condiciones necesarias en el programa para evitar errores durante la
ejecución del mismo.
4
DESARROLLO
vector=(int*) malloc(tam*sizeof(int));
aux=(int*) malloc(tam*sizeof(int));
5
case 1:
if(vector[tam-1]!=0){ En el case 1 la primera
printf("No quedan m\240s espacios en la pila\n\n"); condición if nos indica si
tiene espacio la última
break; } posición, si esto es
verdadero, no permite al
printf("Digite el elemento\n");
usuario ingresar más
scanf("%d",&a);
elementos, si es falso
for(i=0;i<tam;i++){ procede a pedir el
elemento.
if(vector[i]==0){
vector[i]=a; El for se encarga de ir de
posición en posición para
break; llenar el vector con los
} elementos ingresados.
}
break;
case 2:
if(vector[0]==0){ En el case 2 la primera
printf("No hay elementos para eliminar\n\n"); condición if compara la
posición 0 con un cero, si
break; } es verdadera manda un
mensaje, ya que no hay
for (i=(tam-1);i>=0;i--){
más elementos para
if(vector[i]!=0) { eliminar, si es falsa el for
printf("El elemento %d ha sido eliminado\n\n", recorre todas las
vector[i]); posiciones desde tam-1 y
al mismo tiempo con el if
vector[i]=0; coloca un 0 en la posición
break; si este es diferente de 0.
}
}
break;
6
case 3:
printf("\nImprimir Pila:\n");
En el case 3 el for recorre
for(i=(tam-1);i>=0;i--){ todas las posiciones
desde tam-1 hasta la
if(vector[i]!=0)
primera posición (0), el if
printf("%d\n",vector[i]);
compara si la posición es
} diferente de cero, si es
verdadero, imprime el
printf("\n\n"); número, si es falso, lo
break; omite.
}
}
}
7
Programa de cola.
Se utilizó el mismo cuerpo del programa de la pila para el de la cola, con diferencia en el case 2 y
3.
case 2:
En el case 2 las primeras
if(vector[0]!=0) dos condiciones
comparan la posición 0
printf("El elemento %d ha sido eliminado\n\n”, del vector, para indicar si
vector[0]); hay o no elementos para
if(vector[0]==0) eliminar.
case 3:
En el case 3 el for recorre
printf("\nImprimir Cola:\n”); las posiciones, desde cero
for(i=0;i<tam;i++){ hasta que sea menor que
el tamaño de la cola del
if(vector[i]!=0) vector e imprime el valor
printf("%d\n”, vector[i]); de cada una mientras
este sea diferente de
}
cero.
printf("\n\n");
break;
8
RESULTADOS
(a) (b)
Fig. 1
Resultados del programa de la pila.
a) En esta parte el usuario ingresa los valores de la pila y los imprime.
b) El usuario borra el último elemento ingresado.
9
(a) (b)
Fig. 2
Resultados del programa de la cola.
a) En esta parte el usuario ingresa los valores de la cola.
b) Se imprime la cola y el usuario borra el primer elemento ingresado.
10
CONCLUSIÓN
Se resolvió el problema presentado cumpliendo con los propósitos planteados
por el equipo, obteniendo un programa funcional que realizaba las tareas indicadas,
con ligeras mejoras en cuanto a comodidad, como la opción de limpiar la pantalla
cuando esta se saturaba de texto. Sin embargo, se puede optimizar su claridad
mediante el uso de funciones, lo cual puede ser tomado en cuenta para futuros
proyectos. También se pudo comprender mejor la utilidad de usar espacios de
memoria dinámica en un vector, ya que elimina el límite de casillas que este puede
tener.
11