You are on page 1of 11

UNIVERSIDAD POLITÉCNICA DE VICTORIA

Ingeniería Mecatrónica

MICROCONTROLADORES

PRÁCTICA 1

Alumnos:
Guerrero Ferrer Jenifer Yadira
Guerrero Mercado Aldo Sahid

Ing. Jesús Alejandro Paz Villafaña

Cd. Victoria, Tam. Enero, 2018

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

Se le llama programación a la acción de diseñar, codificar, depurar y mantener el código fuente de


programas computacionales para una tarea determinada. El objetivo de la programación es la de
crear software que después será ejecutado de manera directa por el hardware de la computadora, a
través de otro programa.

Para la resolución de problemas que involucran el uso de la programación es fundamental llevar a


cabo un proceso, el cual consiste en: analizar y tener claro el problema, y diseñar un algoritmo que
resuelva el mismo. Una vez teniendo los primeros pasos, lo siguiente consiste en transformar el
algoritmo a un lenguaje de programación y después de ejecutar y validar el mismo.

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

A continuación se presentan y explican los códigos realizados para los ejercicios.


Programa de pila.
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char *argv [ ]){ En esta primera parte del
int i,opc,tam,a; código se inicializan las
librerías, las variables y
int *vector, *aux; los vectores. Así como la
instrucción de pedirle al
printf("Especifique el tama%co de la pila:\n",164);
usuario que defina el
scanf("%d",&tam); tamaño de la pila.

vector=(int*) malloc(tam*sizeof(int));
aux=(int*) malloc(tam*sizeof(int));

for(i=0;i<tam;i++){ Se coloca un for para


vector[i]=0; } inicializar las posiciones
del vector en 0.
vector[tam]=0; Con un while que siempre
será verdadero
while(1){
preguntamos que desea
printf("\250Qu\202 desea hacer? hacer el usuario, leemos
\n1. Agregar elemento \n2. Borrar elemento la opción y el switch hará
\n3. Imprimir pila\n0. Borrar pantalla\n"); el caso escogido.
scanf("%d",&opc);
El case 0 solo limpia la
switch (opc){ pantalla.
case 0:
system("cls");
break;

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.

default: En el caso de ingresar un


número que no esté en el
printf("No digite eso, por favor\n"); menú, default imprime
break; mensaje de error.

}
}
}

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.

printf("No hay elementos para eliminar\n\n"); Dentro del for está la


condición if que hace que
for(i=0;i<tam;i++){ a la posición del vector se
la sume uno para recorrer
if(vector[i]!=0) {
el elemento, esto
vector[i]=vector[i+1]; }
mientras que la última
} posición sea diferente de
break; cero.

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

You might also like