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.