PDF de programación - Una introducción a la programación. Un enfoque algorítmico - Anexo I. Programas en C

Imágen de pdf Una introducción a la programación. Un enfoque algorítmico - Anexo I. Programas en C

Una introducción a la programación. Un enfoque algorítmico - Anexo I. Programas en Cgráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 9 de Febrero del 2018)
4.229 visualizaciones desde el 9 de Febrero del 2018
857,8 KB
158 paginas
Creado hace 15a (21/10/2005)
Una introducción a la programación.

Un enfoque algorítmico

Anexo I. Programas en C

Jesús J. García Molina

Francisco J. Montoya Dato
José L. Fernández Alemán
María J. Majado Rosales

21 de octubre de 2005

Programas en C. Una introducción a la Programación.

Índice

1. Introducción

1.1. Guía de usuario para Dev-C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2. Fe de erratas

3
4

5

3. Listados

7
7
3.1. Capítulo 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
3.2. Capítulo 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
3.3. Capítulo 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
61
3.4. Capítulo 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.5. Capítulo 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
3.6. Capítulo 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
3.7. Capítulo 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148

ITES  PARANINFO c(cid:13) 2

Programas en C. Una introducción a la Programación.

1.

Introducción

Este documento incluye los programas C que se han obtenido al codicar en este lenguaje de progra-
mación todos los algoritmos que aparecen en el libro Una Introducción a la Programación. Un enfoque
algorítmico, según la conversión descrita en el Capítulo 9 del libro. Por tanto, el lector del libro dispone
de los programas que le permiten analizar el comportamiento de los algoritmos durante la ejecución.

Los programas han sido creados y probados con la versión 4.9.7.0 del entorno Dev-C++ (compi-
lador gcc) de Bloodshed, sobre los sistemas operativos Windows 98, 2000 y XP. Si el lector está más
habituado a entornos Linux, puede utilizar el compilador gcc para Linux. Dev-C++ es un entorno
de programación moderno potente y amigable, y se puede descargar desde el sitio web de Bloodshed
http://www.bloodshed.net/devcpp.html.

El lector encontrará los programas en el chero C.zip que puede obtener en el sitio web donde aparece
este documento. Los programas están distribuidos en carpetas, una por cada capítulo. El nombre de los
archivos hace referencia al identicador en el libro del algoritmo que implementa, por ejemplo ALG6_4.C,
es el programa para el Algoritmo 6.4 del Capítulo 6.

Puesto que C no dispone del tipo secuencia propiamente dicho, se han implementado unas unidades
que permiten el manejo de secuencias de caracteres, enteros y reales para el primer y segundo modelos
de acceso secuencial descritos en el Capítulo 5. Los dos últimos modelos se han construido apoyándonos
en el concepto de secuencia intermedia. En la carpeta lib están los archivos cabecera, los archivos con
el código fuente y las librerías compiladas de seis máquinas secuenciales, que corresponden con los dos
primeros modelos de cada uno de los tres tipos de datos: caracteres, enteros y reales.

Los archivos cabecera y el código fuente de cada unidad se han nombrado con el prejo ms seguido
de una letra que indica el tipo de elemento (c, e o r) y un 1 o 2 para señalar el modelo. Por
ejemplo, mse2.h es el archivo cabecera y mse2.c es el archivo con el código fuente para secuencias de
enteros del segundo modelo.

Las primitivas para el manejo de secuencias se nombran igual que en el libro (EA, Comenzar,
Avanzar, etc.) pero con un sujo que indica el tipo de elemento y el modelo secuencial (EA_MSC1, EA_MSE2,
Avanzar_MSR2, Avanzar_MSC2, etc.). Para conocer el léxico que puede utilizar se puede consultar el archivo
cabecera de cada librería. El lector interesado también puede escudriñar el código de los archivos que
contiene el código fuente de las librerías con el objetivo de aprender sobre estructuras de datos dinámicas
(se han implementado como listas).

Para ejecutar los programas se han creado archivos que almacenan secuencias que se utilizan como
ejemplo de entrada, preparados para que el lector pueda modicarlos. Estos archivos de datos se identican
con el prejo datos seguido del identicador del algoritmo. Por ejemplo, datos4.3.txt corresponde
con la entrada de datos del programa ALG4_3.C. Las secuencias de datos se almacenan como líneas
de caracteres y las secuencias de números con un número por línea de entrada. En la carpeta con los
programas del Capítulo 6 se incluyen dos programas (GENF6_1.C y GENF6_4.C) que crean los archivos de
datos C para el Algoritmo 6.1 y el Algoritmo 6.4 (también se proporcionan los programas que permiten
la visualización de los dos archivos creados, VERF6_1.C y VERF6_4.C).

En los programas no se ha realizado la comprobación de que los datos de entrada son válidos, por lo

que en el caso de una entrada incorrecta el resultado es impredecible.

En la próxima versión de este documento se incluirá el código de todas las acciones y funciones del
Capítulo 8, así como de la aplicación gestor de archivos indexados que se discute en dicho capítulo.
También estarán disponibles en el sitio web del libro algoritmos y programas que son soluciones a los
ejercicios del libro y la implementación de las librerías del tercer y cuarto modelo de acceso secuencial.

3

c(cid:13)ITES  PARANINFO

Programas en C. Una introducción a la Programación.

1.1. Guía de usuario para Dev-C++

El entorno dispone de una ayuda y un tutorial. Los pasos para ejecutar un programa, una vez abierto

el entorno, serían (existen botones para ejecutar las órdenes, además de teclas rápidas):

Establecer el directorio en el que se encuentran las librerías (opción Opciones del compilador
del menú Herramientas). En la pestaña Directorios, seleccionar e introducir, si procede, los
directorios donde se encontrarán los archivos cabecera (include) y las librerías. Este paso sólo sería
necesario realizarlo una vez. Incluir las opciones del compilador necesarias para enlazar con las
librerías que utilice el programa (opción Opciones del compilador del menú Herramientas).
En la pestaña Compilador, activar añadir los siguientes comandos al llamar al compilador e
incluir en el cuadro de texto las opciones que correspondan. Por ejemplo, si es preciso enlazar con
la librería libconio.a y libmsc1.a, se introducirá la cadena -lconio -lmsc1 -lstdc++. Para
ejecutar nuestros programas siempre se deben enlazar con las librerías libconio.a y libstdc++.a,
la primera incluye la función clrscr para limpiar la pantalla que se utiliza en todos los programas
y la segunda es la librería estándar de C++ que es necesario por un error del compilador. En
http://conio.sourceforge.net/ se pueden encontrar enlaces para descargar la librería libconio, así
como una breve introducción y documentación sobre ella.
Cargar el programa (opción Abrir Proyecto o Archivo del menú Archivo). Hay que asegurarse
que en el nombre del archivo fuente la extensión es C mayúscula, ya que si fuese minúscula al
compilar se producirán errores al enlazar con unidades.
Compilar el programa (opción Compilar del menú Ejecutar).
Ejecutar el programa (opción Ejecutar del menú Ejecutar).

Para generar una librería se deben seguir los siguientes pasos:

Crear un proyecto con el nombre de la librería (por ejemplo libmsc1). Seleccionar Static Library
de la opción Nuevo proyecto del menú File.
Cargar el archivo que contiene el código fuente de la librería, opción Añadir a proyecto del menú
Proyecto.
Compilar el código fuente mediante la opción Compile del menú Execute. El resultado es una
librería estática (en el ejemplo libmsc1.a) que será preciso incluir en el directorio de las librerías
para poder enlazarla con un programa.

ITES  PARANINFO c(cid:13) 4

Programas en C. Una introducción a la Programación.

2. Fe de erratas

Hemos encontrado en el libro las erratas que indicamos abajo organizadas por capítulos. En el sitio

web del libro iremos actualizando esta fe de erratas en un chero aparte.

Capítulo 4

Algoritmo 4.4

El segundo argumento de la llamada a la acción Escribir que escribe el resultado debe ser suma/numElem

en vez de suma/num.

Capítulo 6

Algoritmo 6.17

La función PosEnTabla no coincide en el texto y en el algoritmo. El algoritmo válido es el que aparece

en el texto.

En la función Codificacion hay que cambiar nuevoPar.c por nuevoPar.s en la segunda asignación

de la cláusula EN_OTRO_CASO de la instrucción SEGÚN.

Capítulo 7

Algoritmo 7.13

El tipo Estaca debe denirse fuera de la acción Hanoi, ya que se utiliza como tipo de los parámetros

origen, intermedio y destino.

La segunda llamada a la acción Hanoi debería ser Hanoi(n-1, intermedio, origen, destino) en

vez de Hanoi(n-1, intermedio, destino, origen).

Sección 7.5.4 (Página 377)

En la postcondición de la acción OrdenarI debería decir tk = Tviejak en vez de tk = Tviejak.

Capítulo 8

Sección 8.3 (Página 395)

En la tercera línea debería decir una secuencia de cuatro nodos: en vez de una secuencia de tres

nodos:.

Sección 8.7.4 (Página 464)

En la acción InsertarArchivoIndexado hay que cambiar:

SI (BuscarPosicionIndice(arch↑.indice, p.clave) : POS_NULA)

por:

SI (BuscarPosicionIndice(arch↑.indice, p.clave) 6= POS_NULA)

5

c(cid:13)ITES  PARANINFO

Programas en C. Una introducción a la Programación.

Capítulo 9

Sección 9.7.12 (Página 565)

En la Figura 9.4 el elemento [0][29] debería ser t[0][29]

ITES  PARANINFO c(cid:13) 6

Programas en C. Una introducción a la Programación.

3. Listados



3.1. Capítulo 2

/*

Un enfoque algoritmico

* Algoritmo 2.1. Calculo de la nota final de una asignatura
* Titulo del libro: Una introduccion a la programacion.
*
* Autores del libro: Jesus J. Garcia Molina
*
*
*
* Fecha: 1/9/2005
* Capitulo 2. Secuenciacion y analisis de casos
*/

Francisco J. Montoya Dato
Jose L. Fernandez Aleman
Maria J. Majado Rosales

#include <stdio.h>
#include <conio.h>

int main () {

float notaTeoria;
float notaPra
  • Links de descarga
http://lwp-l.com/pdf8696

Comentarios de: Una introducción a la programación. Un enfoque algorítmico - Anexo I. Programas en C (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad