Sei sulla pagina 1di 50

Practica 1.1: Leer e imprimir un vector de datos numricos de tipo esttico.

Objetivo: El alumno adquirir el conocimiento en lenguaje C para poder programar un


vector esttico de datos numricos.
Introduccin: Un vector es un arreglo de datos numricos en una sola dimensin. Si el
arreglo que contiene al vector es esttico entonces dicho arreglo tiene un tamao mximo
que ha sido definido durante la compilacin del programa. Esto significa que el vector
reside en la zona de memoria que comparte con el cdigo del programa (por supuesto si
es que no utilizamos variables globales).
Anlisis del problema: Se requiere realizar un programa que permita recuperar N datos
numricos desde el teclado para almacenarlos en un vector (de tamao mximo acotado
a 10 datos). Los elementos del vector entonces se debern imprimir en pantalla.
Desarrollo: Se define a un vector como arreglo unidimensional de nmeros. Si X es un
vector de tamao N entonces:
X={X0, X1, X2, ..., XN-1}
El diagrama de flujo para representar el problema para leer e imprimir los elementos de un
vector se muestra a continuacin:
Si observamos el diagrama se deduce que contiene tres partes:
1. La primera parte est dedicada a saber con cuntos elementos vamos a trabajar y si
ser posible almacenar estos datos en el vector.
2. La segunda parte est dedicada a recuperar los datos desde el teclado y almacenarlos
en el arreglo esttico.
3. La tercera parte est dedicada a imprimir los datos almacenados en el vector.
Cada una de las partes que se han logrado identificar conformarn un mdulo secundario
de nuestro programa. Cabe sealar que ser necesario contar con un mdulo principal
que coordine el funcionamiento del programa realizando llamadas a los otros mdulos
secundarios para que se ejecuten en la secuencia correcta.
El directorio de la aplicacin propuesta se presenta en la siguiente figura:
Ahora se presenta el cdigo fuente de mdulo principal:
Para validar cuntos datos numricos se van a almacenar en el vector se utiliza la funcin
validar_dimensin que debe regresar un valor entre 1 y 10 (se ha diseado as para este
caso en particular):
Entonces el programa podr solicitar los datos para que el usuario los ingrese desde el
teclado. Para almacenar estos datos se utiliza la funcin leer_vector:
Luego se imprimen en pantalla los datos almacenados (con formato de 8 dgitos en la
matisa) por medio de la funcin imprimir_vector:
Las llamadas a funciones de librera necesitan de directivas al preprocesador que en este
caso comparten todos los mdulos secundarios:
Resultados: Una vez compilado el proyecto utilizando la herramienta "Xcode" se podr
entonces ejecutar el programa. La siguiente figura muestra como funciona nuestra
aplicacin propuesta. La ejecucin del programa nos revela que se ingresaron 5 datos
numricos por consola.
Conclusiones:
Para realizar este programa se emple el lenguaje de programacin GNU C para codificar
cada uno de los mdulos que lo componen. La aplicacin solicita al usuario ingresar
primeramente la cantidad de datos de entrada. Posteriormente se leen los datos para
almacenarlos en el vector esttico para que finalmente se impriman estos en pantalla.
Practica 1.2: leer e imprimir un vector de datos numricos.
Objetivo: El alumno adquirir el conocimiento en lenguaje C para poder programar un
vector dinmico de datos numricos.
Introduccin: Un vector es un arreglo de datos numricos en una sola dimensin. Si el
arreglo que contiene al vector es dinmico entonces dicho arreglo podr tener un tamao
que ha sido definido durante la ejecucin del programa. Esto significa que el vector no
reside en la zona de memoria que comparte con el cdigo del programa si no que reside
en el montculo del programa.
Anlisis del problema: Se requiere realizar un programa que permita recuperar N datos
numricos desde el teclado para almacenarlos en un arreglo que se deber construir en
tiempo de ejecucin. Los elementos del vector dinmico entonces se debern imprimir en
pantalla para finalmente liberar la memoria utilizada por el mismo arreglo.
Desarrollo: Los mdulos para realizar la aplicacin propuesta son los mismos que en el
caso esttico ms los mdulos necesarios para construir y destruir el arreglo dinmico.
En este caso el directorio de nuestra aplicacin se presenta a continuacin:
Ahora se presenta el cdigo fuente de mdulo principal modificado para trabajar con un
vector dinmico:
El cdigo fuente de la funcin construir_vector se muestra en la siguiente figura:
Cuando ya no se necesita mas trabajar con el vector dinmico entonces la memoria que
ocupa se debe liberar de forma explcita llamando a la funcin destruir_vector:
Resultados: Una vez compilado el proyecto utilizando la herramienta "Xcode" se podr
entonces ejecutar el programa. En la siguiente figura se muestra como funciona nuestra
aplicacin propuesta.
Este programa nos revela que se han introducido 5 datos numricos con los que se ha
construido un vector dinmico para luego imprimir estos datos y finalmente destruir el
mismo vector.
Conclusiones: Para realizar este programa se emple el lenguaje de programacin GNU
C para codificar cada uno de los mdulos que lo componen. La aplicacin recupera 5
datos ingresados por el usuario para construir un vector dinmico para que solamente se
manden imprimir en la pantalla del ordenador. Se utiliza la variable dinmica X para
construir un vector dinmico lo que permitir contar con diferentes cantidades de datos
para probar este programa.
Prctica 1.3: Leer imprimir una matriz de datos numricos de tipo esttica.
Objetivo: El alumno adquirir el conocimiento en lenguaje C para poder programar una
matriz esttica.
Introduccin: Una matriz es un arreglo numrico en dos dimensiones. Si A es una matriz
de m renglones y n columnas, entonces cada rengln se puede considerar un vector de n-
elementos por lo que podemos decir (en este caso) que una matriz es un arreglo de m-
vectores.
Anlisis del problema: Se requiere realizar un programa que permita recuperar el nmero
de renglones y de columnas para que entonces se puedan ingresar los datos que
conformarn una matriz esttica. Los elementos de esta matriz una vez almacenados se
debern entonces imprimir en pantalla.
Desarrollo:
En la figura siguiente se presenta el diagrama de flujo para leer e imprimir los elementos
de una matriz. Para efectos optimizacin de recursos de memoria al programar arreglos
en C++ utilizamos el subndice cero como primer elemento de cada rengln de la matriz.
Aplicando la tcnica de descomposicin modular identificamos los diferentes mdulos
necesarios para construir nuestra aplicacin. El programa principal realizar las llamadas
a los siguientes mdulos:

Para empezar a describir nuestra implementacin se presenta a continuacin el cdigo


fuente del programa principal:
La funcin validar_dimensiones.c se encarga de leer dos datos numricos desde la
consola (del teclado) que corresponden a los nmeros de renglones y columnas con los
que deseamos trabajar nuestra matriz (se han acotado las dimensiones a 10 renglones y
10 columnas como mximo).
El mdulo encargado para almacenar los elementos de la matriz corresponde a
leer_matriz.c en donde se aprovecha el paso de parmetros por referencia para realizar la
captura de estos datos:
Finalmente se presenta la funcin imprimir_matriz.c que permitir desplegar en la pantalla
la salida de los elementos con un formato especfico.
Resultados: Una vez compilado el proyecto utilizando la herramienta "Xcode" se podr
entonces ejecutar el programa. La siguiente figura muestra como funciona nuestra
aplicacin propuesta. El programa nos revela que el usuario solicita trabajar con una
matriz de determinadas dimensiones para luego capturar y almacenar estos valores.
Finalmente los elementos almacenados se mandan imprimir en pantalla.
Conclusiones: Para realizar este programa se emple el lenguaje de programacin GNU
C para codificar cada uno de los mdulos que lo componen. La aplicacin almacena e
imprime los datos solicitados en la pantalla del ordenador. El programa utiliza variables
estticas (de tamao fijo) para poder guardar y recuperar los datos numricos tanto de las
dimensiones as como de los elementos de la matriz.
Prctica 1.4: Leer imprimir una matriz de datos numricos de tipo dinmica.
Objetivo: El alumno adquirir el conocimiento en lenguaje C para poder programar una
matriz dinmica .
Introduccin: Una matriz dinmica es un arreglo numrico en dos dimensiones que se
construye en tiempo de ejecucin.
Anlisis del problema: Se requiere realizar un programa que permita ingresar el nmero
de renglones y de columnas desde consola para que se pueda construir el arreglo
necesario y entonces solicitar los datos que conformarn una matriz dinmica. Los
elementos de esta matriz una vez almacenados se debern imprimir en pantalla para que
finalmente se libere la memoria asociada al mismo arreglo.
Desarrollo: Aplicando la tcnica de descomposicin modular identificamos los diferentes
mdulos necesarios para construir nuestra aplicacin. Para empezar a describir esta
implementacin se presenta a continuacin el cdigo fuente del programa principal:
Hay que notar que la aplicacin propuesta contiene los mismos mdulos que la aplicacin
de carcter esttico ms los mdulos que corresponden a las funciones construir_matriz y
destruir_matriz para poder crear y liberar el arreglo.
Cabe sealar que la nica diferencia es que los parmetros ahora cambian porque se
debe utilizar la notacin de apuntadores en vez de la notacin de corchetes (se debe
cambiar "arr[MR][MC]" por "**arr" en la seccin de parmetros para los mdulos de lectura
y escritura de la matriz).
Resultados: Una vez compilado el proyecto utilizando la herramienta "Xcode" se podr
entonces ejecutar el programa. La siguiente figura muestra como funciona nuestra
aplicacin propuesta. El programa nos revela que el usuario solicita trabajar con una
matriz de determinadas dimensiones para luego capturar y almacenar estos valores.
Finalmente los elementos de la matriz dinmica se mandan imprimir en pantalla.
Conclusiones: Para realizar este programa se emple el lenguaje de programacin GNU
C para codificar cada uno de los mdulos que lo componen. La aplicacin almacena e
imprime los datos solicitados en la pantalla del ordenador. El programa utiliza variables
dinmicas para poder guardar y recuperar los datos numricos de la matriz.
Prctica 1.5: Leer e imprimir un arreglo de registros tipo esttico.
Objetivo: El alumno adquirir el conocimiento en lenguaje C para poder programar un
arreglo esttico.
Introduccin:Un registro de datos es un conjunto de variables que pueden ser de un
mismo o de diferente tipo referenciados con un slo nombre. Este conjunto se caracteriza
porque cada una de dichas variables conforman un campo del mismo registro.
Anlisis del problema:Se requiere realizar un programa que permita ingresar N datos
definidos por el usuario (se podrn ingresar como mximo 10 datos) desde el teclado para
almacenarlos en un arreglo esttico. Posteriormente estos elementos se debern imprimir
en pantalla.
Desarrollo:El tipo de dato "persona" que ha sido propuesto para realizar este ejercicio
contiene los siguientes campos (atributos de una persona):
Nombre
Direccin
Telfono
Edad
El contenido del directorio para desarrollar la aplicacin propuesta se presenta en la
siguiente figura:
Todos los mdulos comparten el archivo "persona.h" que contiene la definicin del tipo de
dato "persona" as como las libreras necesarias para la entrada y salida de datos:
Ahora se presenta el cdigo fuente de mdulo principal:
Para validar cuntos datos se pretenden ingresar se utiliza la funcin validar_dimensin
que permite ingresar al programa un valor entero entre 1 y 10 (se ha diseado as para
este caso en particular):
Cuando ya sabemos cuntos datos se van a ingresar entonces podemos solicitarlos
mediante la funcin leer_agenda:
Finalmente se imprimen en pantalla los datos almacenados en el arreglo por medio de la
funcin imprimir_agenda:
Resultados:Una vez compilado el proyecto utilizando la herramienta "Xcode" se podr
entonces ejecutar el programa. La siguiente figura muestra como funciona nuestra
aplicacin propuesta. En esta figura se puede apreciar que se ingresaron desde el teclado
3 registros de datos para posteriormente imprimirlos en pantalla.
Conclusiones: Para realizar este programa se emple el lenguaje de programacin GNU
C para codificar cada uno de los mdulos que lo componen. La aplicacin solicita al
usuario ingresar primeramente la cantidad de datos de entrada. Entonces se ingresan los
datos para almacenarlos en un arreglo de estructuras estticas para que finalmente se
impriman sus correspondientes valores en la pantalla.
Practica 1.6: Leer e imprimir un arreglo de registros tipo dinmico.
Objetivo: El alumno adquirir el conocimiento en lenguaje C para poder programar un
arreglo dinmico.
Introduccin: Un registro de datos es dinmico si este se crea en tiempo de ejecucin. Las
variables dinmicas no comparten su espacio de memoria con el cdigo del programa
sino con el montculo del programa.
En GNU C para crear una sola variable dinmica utilizamos la funcin "malloc". En cambio
si deseamos crear arreglos de variables dinmicas utilizamos la funcin "calloc". Ambas
funciones se encuentran en la librera estndar "stdlib.h".
Anlisis del problema: Se requiere realizar un programa que permita ingresar N datos
definidos por el usuario (se podrn ingresar como mximo 10 datos) desde el teclado para
almacenarlos en un arreglo dinmico. Posteriormente estos elementos se debern
imprimir en pantalla para que finalmente se pueda liberar la memoria que estos mismos
datos ocupan.
Desarrollo: El tipo de dato "persona" que fue utilizado en el ejercicio anterior (de carcter
esttico) es el mismo que se utilizar en este caso de carcter dinmico.
A continuacin se presenta el contenido del directorio para desarrollar nuestra aplicacin:
Como podemos apreciar solamente se han agregado los mdulos para construir y destruir
la agenda que es un arreglo dinmico de estructuras del tipo "persona".
Ahora se presenta el cdigo fuente de mdulo principal con las modificaciones necesarias
para almacenar este arreglo durante el tiempo de ejecucin.
Las cdigos de las funciones para construir y destruir la agenda de personas son los
siguientes
Cabe sealar que las modificaciones a los dems mdulos son mnimas puesto que
nicamente hay que cambiar los parmetros de los arreglos; es decir, la notacin esttica
(con corchetes) debe cambiar a la notacin dinmica (con apuntadores).
Resultados:
Una vez compilado el proyecto utilizando la herramienta "Xcode" se podr entonces
ejecutar el programa. La siguiente figura muestra como funciona nuestra aplicacin
propuesta. En esta figura se puede apreciar que se ingresaron desde el teclado 3
registros de datos para posteriormente imprimirlos en pantalla.
Conclusiones:
Para realizar este programa se emple el lenguaje de programacin GNU C para codificar
cada uno de los mdulos que lo componen. La aplicacin solicita al usuario ingresar
primeramente la cantidad de datos de entrada. Entonces se ingresan los datos para
almacenarlos en un arreglo de estructuras dinmicas para que finalmente se impriman
sus correspondientes valores en la pantalla.
Practica 1.7: Crear y arreglar elementos de tipo cadena a una lista ligada.
Objetivo: El alumno adquirir el conocimiento en lenguaje C para poder programar una
lista ligada.
Introduccin: Una lista es una estructura de datos lineal que representa una sucesin de
elementos. Dicha sucesin se caracteriza porque todos sus elementos (excepto 2: el
primer y ltimo elemento) tienen un elemento "siguiente" y un elemento "anterior".
Anlisis del problema: Se requiere realizar un programa que permita ingresar N cadenas
definidas por el usuario desde el teclado para almacenarlas en una lista ligada.
Posteriormente estas cadenas se debern imprimir en pantalla.
Desarrollo: Una "celda" es la unidad bsica que utilizamos para construir una lista.
Normalmente cada celda puede contener dos tipos de campos:
1. Campo(s) de elemento(s).
2. Campo(s) de enlace(s).
Sin embargo para simplificar nuestro problema se propone utilizar en este ejercicio solo el
campo de enlace "siguiente" para mostrar como enlazar las celdas. Para tener una idea
podemos pensar que se desea generar el modelo fsico que se presenta a continuacin:

El contenido del directorio para desarrollar la aplicacin propuesta se presenta en la
siguiente figura:
Todos
los mdulos comparten el archivo "celda.h" que contiene adems de esta definicin las
libreras necesarias para desarrollar la lista ligada:
Hay que notar que el mecanismo empleado para lograr enlazar las celdas se realiza
utilizando "estructuras autoreferenciadas". Ahora se presenta el cdigo fuente de mdulo
principal:
En este caso los elementos que conformarn la lista se tendrn que ingresar como
argumentos en la lnea de comandos.Para enlazar las celdas de forma automtica se
hace uso de la funcin "crealista" que simplemente agrega las cadenas que se han
ingresado (cada una se inserta al final de la lista).
Es necesario reservar espacio de memoria para construir celdas de forma dinmica
mediante la funcin "creacelda":
Tambin es necesario reservar espacio de memoria para construir los elementos (las
cadenas) de forma dinmica utilizando la funcin "copiacadena":
Cuando ya estn almacenadas las cadenas en la lista entonces se imprimen en pantalla
estos datos por medio de la funcin "imprimelista":
Finalmente es recomendable liberar la memoria que ha sido solicitada tanto para construir
las celdas as como de los mismos elementos de la lista ligada utilizando las funciones
"anulalista" y "destruyecelda".
Es importante decir que hay que liberar la memoria solicitada considerando la secuencia
correcta.
Cabe sealar que para desarrollar estas aplicaciones el concepto de recursividad es muy
importante porque se emplea para construir, imprimir y destruir las celdas de la lista de
una manera muy fcil.
Resultados:
Una vez compilado el proyecto utilizando la herramienta "Xcode" se podr entonces
ejecutar el programa. La siguiente figura muestra como funciona nuestra aplicacin
propuesta. En esta figura se puede apreciar que se ingresaron desde el teclado 3
cadenas para posteriormente imprimirlas en pantalla.
Conclusiones:
Para realizar este programa se emple el lenguaje de programacin GNU C para codificar
cada uno de los mdulos que lo componen. El usuario debe ingresar los datos de entrada
como argumentos en la lnea de comandos. Posteriormente estos datos se almacenan en
una lista ligada para que finalmente se impriman sus correspondientes valores en la
pantalla.
Practica 1.8: Crear, arreglar elementos y recorrer un rbol binario de bsqueda.
Objetivo: El alumno podr desarrollar un programa escrito en GNU C para generar datos
aleatorios de tipo numrico y construir con estos datos un rbol binario de bsqueda.
Finalmente se debern imprimir dichos elementos en orden de magnitud.
Introduccin: Un rbol binario de bsqueda es una estructura de datos no lineal que se
caracteriza porque cada nodo del rbol contiene exactamente un padre y dos hijos
(excepto el nodo raz que no tiene padre y las hojas del mismo rbol que no tienen hijos).
Anlisis del problema: Se requiere realizar un programa que permita generar 10 datos
numricos pseudo-aleatorios para posteriormente almacenarlos en un rbol binario de
bsqueda. Una vez creada la estructura del rbol con estos datos numricos entonces se
debern imprimir en orden de magnitud en la pantalla del ordenador.
Desarrollo: Un "nodo" es la unidad bsica que utilizamos para construir un rbol.
Normalmente cada nodo puede contener dos tipos de campos:
1. Campo(s) de elemento(s).
2. Campo(s) de enlace(s).
El diseo propuesto almacenar los datos numricos en forma de cadenas dentro del
campo del elemento. En este caso los campos de enlace corresponden a los hijos
izquierdo y derecho de cada nodo.
En la siguiente figura se muestra el contenido del directorio para desarrollar la aplicacin
propuesta:
Todos los mdulos comparten el archivo "nodo.h" que contiene adems de esta definicin
las libreras necesarias para desarrollar el rbol binario de bsqueda:
Hay que notar que el mecanismo empleado para lograr enlazar las celdas se realiza
utilizando "estructuras autoreferenciadas". Ahora se presenta el cdigo fuente de mdulo
principal:
En este caso los elementos que conformarn el rbol binario de bsqueda se generan
utilizando la funcin de librera "rand". Cada dato aleatorio que se genera se convierte a
cadena para instalarlo despus en el rbol.
Para enlazar los nodos de forma automtica se hace uso de la funcin "crearbol" que
simplemente agrega las cadenas que se han ingresado (cada una se inserta en la
posicin correspondiente dentro del rbol).
Es necesario reservar espacio de memoria para construir nodos de forma dinmica
mediante la funcin "creanodo":
Tambin es necesario reservar espacio de memoria para construir los elementos (las
cadenas) de forma dinmica utilizando la funcin "copiacadena":
Cuando ya estn almacenadas las cadenas en el rbol binario entonces se imprimen en
pantalla estos datos por medio de la funcin "imprimearbol":
Finalmente es recomendable liberar la memoria que ha sido solicitada tanto para construir
los nodos as como de los mismos elementos del rbol utilizando las funciones "anularbol"
y "destruyenodo".
Cabe sealar que para desarrollar estas aplicaciones el concepto de recursividad es muy
importante porque se emplea para construir, imprimir y destruir los nodos del rbol de una
manera muy fcil.
Resultados:Una vez compilado el proyecto utilizando la herramienta "Xcode" se podr
entonces ejecutar el programa. La siguiente figura muestra como funciona nuestra
aplicacin propuesta. En esta figura se puede apreciar que se generaron 10 elementos
numricos para posteriormente imprimirlos en orden (ntese que se realiza el recorrido
recursivo "en-orden").
Conclusiones:Para realizar este programa se emple el lenguaje de programacin GNU C
para codificar cada uno de los mdulos que lo componen. El programa genera los datos
pseudo aleatorios y construye el rbol automticamente. Finalmente se imprimen sus
correspondientes valores en orden de magnitud en la pantalla del ordenador.
Prctica 2.1: Aplicacin del mtodo de bsqueda secuencia.
Objetivo: El alumno podr desarrollar un programa escrito en C++ para encontrar algn
elemento especfico en un arreglo numrico aplicando el mtodo de bsqueda secuencial.
Introduccin: La sencillez es una caracterstica deseable en un algoritmo porque facilita la
verificacin de que dicho algoritmo sea correcto, as como su escritura, depuracin e
implementacin mediante un programa.
El mtodo de bsqueda secuencial a pesar de parecer un mtodo de fuerza puede
demostrarse que es en realidad un mtodo ptimo si la distribucin de los elementos del
arreglo es aleatoria.
Al aplicar este mtodo para encontrar un elemento determinado en un arreglo que
contiene n elementos distintos el peor caso ser cuando sea necesario el realizar n-1
comparaciones.

Anlisis del problema: Se requiere realizar un programa que permita recuperar N datos
numricos contenidos en un archivo denominado "datos.txt" para entonces construir un
arreglo (en forma dinmica) con dichos datos. Estos elementos se debern imprimir en
pantalla.
Despus se solicitar al usuario ingresar el dato numrico que queremos buscar y
entonces el programa deber imprimir la posicin (o las posiciones) en donde se
encuentre ste dato en el arreglo.
Desarrollo: Se define a un vector como arreglo unidimensional de nmeros. Si X es un
vector de tamao N entonces:
X={X0, X1, X2, ..., XN-1}
El diseo del mtodo de bsqueda secuencial se puede representar mediante el siguiente
diagrama de flujo de datos:
Considerando el diagrama de flujo de sta tcnica de bsqueda se presenta a
continuacin el cdigo fuente correspondiente:
Resultados: Una vez compilado el proyecto utilizando la herramienta "Xcode" se podr
entonces ejecutar el programa. La siguiente figura muestra como funciona nuestra
aplicacin propuesta. El programa nos revela que el archivo contiene un vector de prueba
conformado con 10 datos numricos ordenados de forma aleatoria.
Conclusiones: Para realizar este programa se emple el lenguaje de programacin GNU
C para codificar cada uno de los mdulos que lo componen. La aplicacin recupera 10
datos almacenados en un archivo de texto y se mandan imprimir en la pantalla del
ordenador.
Posteriormente el programa solicita el valor del elemento a buscar y entonces se
imprimen las posiciones en donde se encuentre dicho elemento en el arreglo.
Prctica 2.2: Aplicacin del mtodo de bsqueda binaria.
Objetivo: El alumno podr desarrollar un programa escrito en C para encontrar algn
elemento especfico en un arreglo numrico aplicando el mtodo de bsqueda binaria.
Introduccin: El mtodo de bsqueda binaria es un mtodo generalmente mucho ms
rpido que el de bsqueda secuencial. Sin embargo hay que pagar un precio: ordenar
previamente el arreglo para poder realizar su aplicacin satisfactoriamente.
Al igual que el mtodo secuencial el mtodo de bsqueda binaria nos permitir encontrar
un elemento determinado en un arreglo que contiene n elementos distintos.

Anlisis del problema: Se requiere realizar un programa que permita recuperar N datos
numricos contenidos en un archivo denominado "datos.txt" para entonces construir un
arreglo (en forma dinmica) con dichos datos. Estos elementos se debern ordenar para
posteriormente imprimirlos en pantalla. Despus se solicitar al usuario ingresar el dato
numrico que queremos buscar y entonces el programa deber imprimir la posicin en
donde se encuentre ste dato en el arreglo.
Desarrollo: El diseo del mtodo de bsqueda binaria se puede representar mediante el
siguiente diagrama de flujo de datos:
Considerando implementar sta tcnica de bsqueda se presenta a continuacin el
cdigo fuente del programa principal de nuestra aplicacin:
Tambin se presenta el cdigo fuente del mtodo de ordenacin rpida que es utilizado
previamente a buscar algn elemento:
El cdigo del mdulo de particin es el siguiente:
Adems aqu se incluye el mdulo que permitir realizar el intercambio de elementos
cuando fuese necesario:
Finalmente el mdulo que implementar el mtodo de bsqueda binaria se presenta a
continuacin.
Resultados: Una vez compilado el proyecto utilizando la herramienta "xcode" se podr
entonces ejecutar el programa. La siguiente figura muestra como funciona nuestra
aplicacin propuesta. El programa nos revela que el archivo contiene un vector de prueba
conformado con 10 datos numricos que han sido ordenados de forma ascendente para
entonces solicitar la bsqueda del elemento deseado.
Conclusiones:Para realizar este programa se emple el lenguaje de programacin GNU C
para codificar cada uno de los mdulos que lo componen. La aplicacin recupera 10 datos
almacenados en un archivo de texto que se ordenan y se mandan imprimir en la pantalla
del ordenador.Posteriormente el programa solicita el valor del elemento a buscar y
entonces se imprimir la posicin en donde se encuentre dicho elemento en el arreglo.
Prctica 2.3: Problema de suma de matrices.
Objetivo: El alumno podr desarrollar un programa escrito en GNU C para realizar la
suma de dos matrices que se encuentran almacenadas en archivos para posteriormente
imprimir la matriz de resultados en otro archivo.
Introduccin: La suma de matrices se realiza sobre elementos que se encuentren en una
misma posicin relativa. Es por esto que para realizar la suma de dos matrices ambas
tienen que ser del mismo tamao.
Anlisis del problema: Se requiere realizar un programa que permita ingresar las
dimensiones de las matrices a sumar para poder recuperar correctamente sus datos a
partir de dos archivos de entrada. Posteriormente se crean con estos datos las matrices
(de forma dinmica) para entonces sumarlas e imprimir la matriz resultante en un archivo
de salida.
Desarrollo: La solucin del problema de suma de matrices se presenta a continuacin
utilizando un diagrama de flujo de datos:
El contenido del directorio para desarrollar la aplicacin propuesta se presenta en la
siguiente figura:
Todos los mdulos comparten el archivo "librerias.h" que contiene las definiciones de MR
(mximo nmero de renglones) y MC (mximo nmero de columnas) para acotar el
tamao mximo que podrn tener las matrices.Ahora se presenta el cdigo fuente de
mdulo principal:
Para recuperar los datos de entrada se utiliza la funcin leer_matriz que requiere el
nombre de archivo de entrada para accesar a ellos correctamente.
La impresin de la matriz resultante se realiza por medio de la funcin imprimir_matriz que
requiere (entre otros parmetros) el nombre del archivo de salida.
El mdulo para realizar la suma de matrices corresponde con la funcin suma_matrices:
Resultados: Una vez compilado el proyecto utilizando la herramienta "Xcode" se podr
entonces ejecutar el programa. La siguiente figura muestra como funciona nuestra
aplicacin propuesta. En esta figura se puede apreciar que se ingresaron desde el teclado
las dimensiones de las matrices almacenadas en archivos. Hay que notar que tambin se
presenta el contenido de los archivos de trabajo.
Conclusiones: Para realizar este programa se emple el lenguaje de programacin GNU
C para codificar cada uno de los mdulos que lo componen. El usuario debe
primeramente ingresar las dimensiones de las matrices. Posteriormente con estos datos
se crean las matrices para recuperar sus valores, sumarlas e imprimir la matriz resultante
en un archivo. Finalmente se libera la memoria solicitada para construir tanto las matrices
de entrada as como de la matriz de resultante.
Prctica 2.4: Operaciones con registros en archivos de texto.
Objetivo: El alumno podr desarrollar diferentes programas escritos en GNU C para
realizar altas, bajas y cambios de registros de datos almacenados en archivos de texto.
Introduccin: Las operaciones propuestas para manejar una agenda se realizan sobre
archivos de texto plano para almacenar registros de tipo persona. Para simplificar el
problema solo se contemplan los campos del nombre y la edad de una persona.
Desarrollo:
Ejemplo #1: Crear archivo para almacenar Agenda
Ejemplo #2: Alta de una segunda
Ejemplo #3: Desplegar el contenido del archivo en pantalla.
Ejemplo #4
Ejemplo #5:
Resultados: Una vez compilados entonces se pueden ejecutar estos programas. La
siguiente figura muestra como funcionan estas aplicaciones propuestas. En esta figura se
puede apreciar como se va modificando secuencialmente el contenido del archivo de
texto con los registros.
Conclusiones: Para realizar todos estos programas se emple el lenguaje de
programacin GNU C. Es importante recalcar que el usuario debe ejecutar estos
programas en el orden que ha sido propuesto. Cada una de las operaciones efectuadas
actualizan el archivo que contiene la agenda.
Prctica 2.5: Operaciones con registros en archivos binarios.
Objetivo:El alumno podr desarrollar diferentes programas escritos en GNU C para
realizar altas, bajas y cambios de registros de datos almacenados en archivos binarios
(archivos de datos).
Introduccin: Las operaciones propuestas para manejar una agenda se realizan sobre
archivos binarios para almacenar registros de tipo persona. Para simplificar el problema
solo se contemplan los campos del nombre y la edad de una persona.
Anlisis del problema: Se requieren realizar 5 diferentes programas que permitan mostrar
el funcionamiento de las operaciones bsicas para trabajar archivos con registros de
datos. Las operaciones bsicas que deben realizar estos programas son: altas, bajas y
cambios. Cada vez que se realiza alguna de estas operaciones se tiene que reflejar la
modificacin correspondiente en el archivo que contiene la agenda. Es importante sealar
que se considera que existen los permisos necesarios para crear y trabajar con un mismo
archivo de datos.
Desarrollo: Para mostrar como crear el archivo que contendr la agenda e ingresar un
primer registro se presenta el siguiente ejemplo:
Si se requiere ingresar un segundo registro lo ms recomendable es agregarlo al final del
archivo (abriendo el archivo con el modo de apertura correspondiente):
El siguiente programa permite desplegar el contenido del archivo en la pantalla:
Para realizar una baja se tiene que construir un arreglo con los registros en archivo. Esto
es porque en este arreglo se van a agregar todos los registros excepto el que hemos
decidido dar de baja (en este caso se supone que se requiere eliminar el registro # 2).
Al igual que en el caso anterior (archivos de texto) primero se contabilizan cuantos
registros hay en el archivo binario:
Despus se construye un arreglo dinmico de tipo persona con los registros almacenados
en el archivo.Finalmente se manda imprimir el arreglo exceptuando el registro que fue
seleccionado para eliminar (el registro nmero dos):
Resultados:Una vez compilados entonces se pueden ejecutar estos programas. La
siguiente figura muestra como funcionan estas aplicaciones propuestas. En esta figura se
puede apreciar como se va modificando secuencialmente el contenido del archivo de
registros.
Conclusiones: Para realizar todos estos programas se emple el lenguaje de
programacin GNU C. Es importante sealar que el usuario debe ejecutar estos
programas en el orden que ha sido propuesto. Cada una de las operaciones efectuadas
actualizan el archivo que contiene la agenda.

Potrebbero piacerti anche