Practica Dev Cpp archivos

17
MATERIA: LENGUAJE DE PROGRAMACION PROF: M. en ING. JORGE RAMOS GARCIA. CLAVE: ABP01.9 GPO: B PREREQUISITOS: Sin Requisito. DPTO.: AREA BASICA DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mx. SALON: 312 TRIM: Otoño 2011 HORARIO: Martes y Jueves de 8:00am- 10:00am Lenguaje de Programación: C/C++ con DevCpp Correo Electrónico: [email protected] Pagina 1 / 17 P R O G R A M A C I Ó N C/C++ PRÁCTICAS DE LABORATORIO

description

JOSH

Transcript of Practica Dev Cpp archivos

Page 1: Practica Dev Cpp archivos

MATERIA: LENGUAJE DE PROGRAMACION PROF: M. en ING. JORGE RAMOS GARCIA.

CLAVE: ABP01.9 GPO: B PREREQUISITOS: Sin Requisito. DPTO.: AREA BASICA DICIS – DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA

UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mx. SALON: 312 TRIM: Otoño 2011 HORARIO: Martes y Jueves de 8:00am- 10:00am

Lenguaje de Programación: C/C++ con DevCpp Correo Electrónico: [email protected] Pagina 1 / 17

P R O G R A M A C I Ó N C/C++

PRÁCTICAS DE LABORATORIO

Page 2: Practica Dev Cpp archivos

MATERIA: LENGUAJE DE PROGRAMACION PROF: M. en ING. JORGE RAMOS GARCIA.

CLAVE: ABP01.9 GPO: B PREREQUISITOS: Sin Requisito. DPTO.: AREA BASICA DICIS – DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA

UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mx. SALON: 312 TRIM: Otoño 2011 HORARIO: Martes y Jueves de 8:00am- 10:00am

Lenguaje de Programación: C/C++ con DevCpp Correo Electrónico: [email protected] Pagina 2 / 17

Introducción

Estas prácticas se han elaborado para orientar a los alumnos de la materia de LENGUAJE DE

PROGRAMACION en el aprendizaje de algoritmos computacionales en el entorno del DEV C

Todas las prácticas de laboratorio estarán estructuradas de la siguiente forma:

Objetivo.

Recursos.

Teoría.

Desarrollo de ejercicios y entrega de resultados

NOTAS:

EL RESULTADO DE CADA PROGRAMA DE ESTA PRÁCTICA, SE ENVIARA AL CORREO: PROF. ING. JORGE

RAMOS GARCIA, [email protected] (pantalla de resultados y los archivos fuente .CPP)

REVISE Y ESTUDIE CADA EJERCICIO Y TRATE DE ENTENDERLOS PARA LOS EJERCICIOS QUE SE

REALIZARAN EN LAS SIGUIENTES PRACTICAS.

CUALQUIER DUDA O COMENTARIO FAVOR DE EXPRESARLO

Page 3: Practica Dev Cpp archivos

MATERIA: LENGUAJE DE PROGRAMACION PROF: M. en ING. JORGE RAMOS GARCIA.

CLAVE: ABP01.9 GPO: B PREREQUISITOS: Sin Requisito. DPTO.: AREA BASICA DICIS – DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA

UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mx. SALON: 312 TRIM: Otoño 2011 HORARIO: Martes y Jueves de 8:00am- 10:00am

Lenguaje de Programación: C/C++ con DevCpp Correo Electrónico: [email protected] Pagina 3 / 17

P R A C T I C A No. 7

OBJETIVO:

Declaración y uso de Funciones (Subrutinas/subprogramas)

Manejo de archivos FILES (escritura/lectura)

RECURSOS:

Para implementar los ejercicios de programación en lenguaje C se utilizarán las siguientes herramientas de software:

a) DEV C ++ b) FreeDFD

TEORIA.

Funciones en Lenguaje C.

La modularización, es una técnica usada por los programadores para hacer sus códigos más cortos, ya que consiste en reducir un gran

problema complejo, en pequeños problemitas más sencillos, concentrándose en la solución por separado, de cada uno de ellos.

En C, se conocen como funciones aquellos trozos de códigos utilizados para dividir un programa con el objetivo que, cada bloque

realice una tarea determinada.

En las funciones juegan un papel muy importe las variables, ya que como se ha dicho estas pueden ser locales o globales.

Variables Globales: Estas se crean durante toda la ejecución del programa, y son globales, ya que pueden ser llamadas, leídas,

modificadas, etc; desde cualquier función. Se definen antes del main().

Variables Locales: Estas, pueden ser utilizadas únicamente en la función que hayan sido declaradas.

La sintaxis de una función es la siguiente:

Tipo_de_datos nombre_de_la_funcion (tipo y nombre de argumentos)

{

acciones

}

donde:

Tipo_de_datos: Es el tipo de dato que devolverá esa función, que puede ser real, entera, o tipo void(es decir que no devolverá

ningún valor).

Nombre_de_la_funcion: Es el identificador que le damos a nuestra función, la cual debe cumplir las reglas que definimos en

un principio para los identificadores.

Tipo y nombre de argumentos:son los parámetros que recibe la función. Los argumentos de una función no son más que

variables locales que reciben un valor. Este valor se lo enviamos al hacer la llamada a la función. Pueden existir funciones que

no reciban argumentos.

Acciones: Constituye el conjunto de acciones, de sentencias que cumplirá la función, cuando sea ejecutada. Entre ellas están:

1. Asignaciones

Page 4: Practica Dev Cpp archivos

MATERIA: LENGUAJE DE PROGRAMACION PROF: M. en ING. JORGE RAMOS GARCIA.

CLAVE: ABP01.9 GPO: B PREREQUISITOS: Sin Requisito. DPTO.: AREA BASICA DICIS – DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA

UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mx. SALON: 312 TRIM: Otoño 2011 HORARIO: Martes y Jueves de 8:00am- 10:00am

Lenguaje de Programación: C/C++ con DevCpp Correo Electrónico: [email protected] Pagina 4 / 17

2. Lecturas

3. Impresiones

4. Cálculos, etc

Una función, termina con la llave de cerrar, pero antes de esta llave, debemos colocarle la instrucción return, con la cual devolverá un

valor específico. Es necesario recalcar que si la función no devuelve ningún valor, es decir, es tipo void, no tiene que ir la sentencia return, ya que

de lo contrario, nos dará un error.

¿Cómo es que funcionan los Subprogramas?

A menudo, se utiliza el adjetivo de “Subprogramas”, para referirse a las funciones, así que, el lector debe familiarizarse también con

este término.

Los subprogramas se comunican con el programa principal, que es el que contiene a las funciones, mediante parámetros, que estos

pueden ser: Parámetros Formales y Parámetros Actuales.

Cuando se da la comunicación los parámetros actuales son utilizados en lugar de los parámetros formales.

Paso de Parámetros

Existen dos formas de pasar parámetros, las cuales son:

A) Paso por Valor

También conocido como parámetros valor. Los valores se proporcionan en el orden de cálculos de entrada.

Los parámetros se tratan como variables locales y los valores iniciales se proporcionan copiando los valores de correspondientes

argumentos.

Los parámetros formales-Locales de una función reciben como inicilaes los valores de los parámetros actuales y con ellos se ejecutan

las acciones descritas en el subprograma.

Ejemplo:

A=5;

B=7;

C=proc1(A, 18, B*3+4);

Proc1(X, Y, Z)

Explicación:

Donde, se encuentra c, se está llamando la función, denominada proc1, en la cual se están enviando como parámetros el valor de A, que

es cinco; el cual es recibido por la variable X, en la definición de la función proc1; en la misma función, Y tendrá el valor de 18; por que ese es el

valor del parámetro formal, mientras que Z, tendrá un valor inicial de 25, ya que ese es el resultado del tercer parámetro que resulta ser una

expresión aritmética.

Funciones Definidas Por El Usuario en C

Una función, como ya se ha dicho, es un bloque de código dentro del programa que se encarga de realizar una tarea determinada. Por lo

tanto un programa en c debe constar de una o más funciones, y por su puesto no puede faltar la función principal main().

Un viejo adagio dice: Separa y vencerás, lo cual se acopla perfectamente cuando tenemos un programa que es bastante grande; podemos

separarlos en pequeños subprogramas (funciones), y concentrarnos en la solución por separados de cada uno de ellos y así resolver un gran

problemas, en unos cuantos problemitas más pequeños.

Si un programa, está constituido por más de una función, las llamadas a la misma, pueden realizarse desde cualquier parte del programa,

y la definición de ellas debe ser independiente unas de otras.

Page 5: Practica Dev Cpp archivos

MATERIA: LENGUAJE DE PROGRAMACION PROF: M. en ING. JORGE RAMOS GARCIA.

CLAVE: ABP01.9 GPO: B PREREQUISITOS: Sin Requisito. DPTO.: AREA BASICA DICIS – DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA

UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mx. SALON: 312 TRIM: Otoño 2011 HORARIO: Martes y Jueves de 8:00am- 10:00am

Lenguaje de Programación: C/C++ con DevCpp Correo Electrónico: [email protected] Pagina 5 / 17

Por lo tanto sería un grave error el tratar de definir una función dentro de otra.

Una función puede ser llamada desde cualquier parte del programa no sólo una vez, y cuando es llamada, empieza a ejecutar las

acciones que están escritas en código.

Ejemplos:

1. Funciones que no devuelven ningún valor

2. Funciones que devuelven un valor entero

3. Funciones que devuelven un valor Real

4. Funciones combinadas

5. Funciones en las que usamos Menú.

FUNCIONES PARA TRATAMIENTO DE FICHEROS EN LENGUAJE C

Tipo FILE:

C define la estructura de datos FILE en el fichero de cabecesa "stdio.h" para el manejo de ficheros. Nosotros siempre usaremos punteros a estas estructuras. La definición de ésta estructura depende del compilador, pero en general mantienen un campo con la posición actual de lectura/escritura, un buffer para mejorar las prestaciones de acceso al fichero y algunos campos para uso interno.

Función fopen: Sintaxis:

FILE *fopen(char *nombre, char *modo); ésta función sirve para abrir y crear ficheros en disco. El valor de retorno es un puntero a una estructura FILE. Los parámetros de entrada son: nombre: una cadena que contiene un nombre de fichero válido, esto depende del sistema operativo que estemos usando. El nombre puede incluir el camino completo. modo: especifica en tipo de fichero que se abrirá o se creará y el tipo de datos que puede contener, de texto o binarios: r: sólo lectura. El fichero debe existir. w: se abre para escritura, se crea un fichero nuevo o se sobreescribe si ya existe. a: añadir, se abre para escritura, el cursor se situa al final del fichero. Si el fichero no existe, se crea. r+: lectura y escritura. El fichero debe existir.

w+: lectura y escritura, se crea un fichero nuevo o se sobreescribe si ya existe. a+: añadir, lectura y escritura, el cursor se situa al final del fichero. Si el fichero no existe, se crea. t: tipo texto, si no se especifica "t" ni "b", se asume por defecto que es "t" b: tipo binario.

Función fclose: Sintaxis: int fclose(FILE *fichero);

Es importante cerrar los ficheros abiertos antes de abandonar la aplicación. Esta función sirve para eso. Cerrar un fichero almacena los datos que aún están en el buffer de memoria, y actualiza algunos datos de la cabecera del fichero que mantiene el sistema operativo. Además permite que otros programas puedan abrir el fichero para su uso. Muy a menudo, los ficheros no pueden ser compartidos por varios programas. Un valor de retorno cero indica que el fichero ha sido correctamente cerrado, si ha habido algún error, el valor de retorno es la constante EOF. El parámetro es un puntero a la estructura FILE del fichero que queremos cerrar.

Función fgetc: Sintaxis: int fgetc(FILE *fichero); Esta función lee un carácter desde un fichero. El valor de retorno es el carácter leído como un unsigned char convertido a int. Si no hay ningún carácter disponible, el valor de retorno es

EOF. El parámetro es un puntero a una estructura FILE del fichero del que se hará la lectura.

Page 6: Practica Dev Cpp archivos

MATERIA: LENGUAJE DE PROGRAMACION PROF: M. en ING. JORGE RAMOS GARCIA.

CLAVE: ABP01.9 GPO: B PREREQUISITOS: Sin Requisito. DPTO.: AREA BASICA DICIS – DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA

UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mx. SALON: 312 TRIM: Otoño 2011 HORARIO: Martes y Jueves de 8:00am- 10:00am

Lenguaje de Programación: C/C++ con DevCpp Correo Electrónico: [email protected] Pagina 6 / 17

Función fputc: Sintaxis: int fputc(int caracter, FILE *fichero); Esta función escribe un carácter a un fichero. El valor de retorno es el carácter escrito, si la operación fue completada con éxito, en caso contrario será EOF. Los parámet ros de entrada son

el carácter a escribir, convertido a int y un puntero a una estructura FILE del fichero en el que se hará la escritura.

Función feof: Sintaxis: int feof(FILE *fichero); Esta función sirve para comprobar si se ha alcanzado el final del fichero. Muy frecuentemente deberemos trabajar con todos los valores almacenados en un archivo de forma secuencial, la forma que suelen tener los bucles para leer todos los datos de un archivo es permanecer leyendo mientras no se detecte el fin de fichero. Esta función suele usarse como prueba para verificar si se ha alcanzado o no ese punto.

El valor de retorno es distinto de cero sólo si no se ha alcanzado el fin de fichero. El parámetro es un puntero a la estructura FILE del fichero que queremos verificar.

Función rewind: Sintaxis: void rewind(FILE *fichero) Es una función heredada de los tiempos de las cintas magnéticas. Literalmente significa "rebobinar", y hace referencia a que para volver al principio de un archivo almacenado en cinta, había que rebobinarla. Eso es lo que hace ésta función, sitúa el cursor de lectura/escritura al principio del archivo.

El parámetro es un puntero a la estructura FILE del fichero que queremos rebobinar. Ejemplos: // ejemplo1.c: Muestra un fichero dos veces. #include <stdio.h> int main() { FILE *fichero;

fichero = fopen("ejemplo1.c", "r"); while(!feof(fichero)) fputc(fgetc(fichero), stdout); rewind(fichero); while(!feof(fichero)) fputc(fgetc(fichero), stdout); fclose(fichero); getchar(); return 0;

}

Función fgets: Sintaxis: char *fgets(char *cadena, int n, FILE *fichero); Esta función está diseñada para leer cadenas de caracteres. Leerá hasta n-1 caracteres o hasta que lea un retorno de línea. En este último caso, el carácter de retorno de línea también es leído. El parámetro n nos permite limitar la lectura para evitar derbordar el espacio disponible en la cadena.

El valor de retorno es un puntero a la cadena leída, si se leyó con éxito, y es NULL si se detecta el final del fichero o si hay un error. Los parámetros son: la cadena a leer, el número de caracteres máximo a leer y un puntero a una estructura FILE del fichero del que se leerá.

Función fputs: Sintaxis: int fputs(const char *cadena, FILE *stream); La función fputs escribe una cadena en un fichero. No se añade el carácter de retorno de línea ni el carácter nulo final.

El valor de retorno es un número no negativo o EOF en caso de error. Los parámetros de entrada son la cadena a escribir y un puntero a la estructura FILE del fichero donde se realizará la escritura.

Función fread: Sintaxis:

Page 7: Practica Dev Cpp archivos

MATERIA: LENGUAJE DE PROGRAMACION PROF: M. en ING. JORGE RAMOS GARCIA.

CLAVE: ABP01.9 GPO: B PREREQUISITOS: Sin Requisito. DPTO.: AREA BASICA DICIS – DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA

UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mx. SALON: 312 TRIM: Otoño 2011 HORARIO: Martes y Jueves de 8:00am- 10:00am

Lenguaje de Programación: C/C++ con DevCpp Correo Electrónico: [email protected] Pagina 7 / 17

size_t fread(void *puntero, size_t tamaño, size_t nregistros, FILE *fichero); Esta función está pensada para trabajar con registros de longitud constante. Es capaz de leer desde un fichero uno o varios registros de la misma longitud y a partir de una dirección de memoria determinada. El usuario es responsable de asegurarse de que hay espacio suficiente para contener la información leída. El valor de retorno es el número de registros leídos, no el número de bytes. Los parámetros son: un puntero a la zona de memoria donde se almacenarán los datos leídos, el tamaño de cada registro, el número de registros a leer y un puntero a la estructura FILE del fichero del que se

hará la lectura.

Función fwrite: Sintaxis: size_t fwrite(void *puntero, size_t tamaño, size_t nregistros, FILE *fichero); Esta función también está pensada para trabajar con registros de longitud constante y forma pareja con fread. Es capaz de escribir hacia un fichero uno o varios registros de la misma longitud almacenados a partir de una dirección de memoria determinada. El valor de retorno es el número de registros escritos, no el número de bytes. Los parámetros son: un puntero a la zona de memoria donde se

almacenarán los datos leídos, el tamaño de cada registro, el número de registros a leer y un puntero a la estructura FILE del fichero del que se hará la lectura. Ejemplo: // copia.c: Copia de ficheros // Uso: copia <fichero_origen> <fichero_destino> #include <stdio.h> int main(int argc, char **argv) {

FILE *fe, *fs; unsigned char buffer[2048]; // Buffer de 2 Kbytes int bytesLeidos; if(argc != 3) { printf("Usar: copia <fichero_origen> <fichero_destino>\n"); return 1; }

// Abrir el fichero de entrada en lectura y binario fe = fopen(argv[1], "rb"); if(!fe) { printf("El fichero %s no existe o no puede ser abierto.\n", argv[1]); return 1; } // Crear o sobreescribir el fichero de salida en binario

fs = fopen(argv[2], "wb"); if(!fs) { printf("El fichero %s no puede ser creado.\n", argv[2]); fclose(fe); return 1; } // Bucle de copia: while((bytesLeidos = fread(buffer, 1, 2048, fe)))

fwrite(buffer, 1, bytesLeidos, fs); // Cerrar ficheros: fclose(fe); fclose(fs); return 0; }

Función fprintf: Sintaxis: int fprintf(FILE *fichero, const char *formato, ...); La función fprintf funciona igual que printf en cuanto a parámetros, pero la salida se dirige a un fichero en lugar de a la pantalla. Función fscanf:

Page 8: Practica Dev Cpp archivos

MATERIA: LENGUAJE DE PROGRAMACION PROF: M. en ING. JORGE RAMOS GARCIA.

CLAVE: ABP01.9 GPO: B PREREQUISITOS: Sin Requisito. DPTO.: AREA BASICA DICIS – DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA

UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mx. SALON: 312 TRIM: Otoño 2011 HORARIO: Martes y Jueves de 8:00am- 10:00am

Lenguaje de Programación: C/C++ con DevCpp Correo Electrónico: [email protected] Pagina 8 / 17

Sintaxis: int fscanf(FILE *fichero, const char *formato, ...); La función fscanf funciona igual que scanf en cuanto a parámetros, pero la entrada se toma de un fichero en lugar del teclado.

Función fflush: Sintaxis:

int fflush(FILE *fichero); Esta función fuerza la salida de los datos acumulados en el buffer de salida del fichero. Para mejorar las prestaciones del manejo de ficheros se utilizan buffers, almacenes temporales de datos en memoria, las operaciones de salida se hacen a través del buffer, y sólo cuando el buffer se llena se realiza la escritura en el disco y se vacía el buffer. En ocasiones nos hace falta vaciar ese buffer de un modo manual, para eso sirve ésta función. El valor de retorno es cero si la función se ejecutó con éxito, y EOF si hubo algún error. El parámetro de entrada es un puntero a la estructura FILE del fichero del que se quiere vaciar el buffer. Si es NULL se hará el vaciado de todos los ficheros abiertos.

Funciones C específicas para ficheros de acceso aleatorio

Función fseek: Sintaxis: int fseek(FILE *fichero, long int desplazamiento, int origen); Esta función sirve para situar el cursor del fichero para leer o escribir en el lugar deseado. El valor de retorno es cero si la función tuvo éxito, y un valor distinto de cero si hubo algún error. Los parámetros de entrada son: un puntero a una estructura FILE del fichero en el que queremos cambiar el cursor de lectura/escritura, el valor

del desplazamiento y el punto de origen desde el que se calculará el desplazamiento. El parámetro origen puede tener tres posibles valores: SEEK_SET el desplazamiento se cuenta desde el principio del fichero. El primer byte del fichero tiene un desplazamiento cero. SEEK_CUR el desplazamiento se cuenta desde la posición actual del cursor. SEEK_END el desplazamiento se cuenta desde el final del fichero.

Función ftell: Sintaxis:

long int ftell(FILE *fichero); La función ftell sirve para averiguar la posición actual del cursor de lectura/excritura de un fichero. El valor de retorno será esa posición, o -1 si hay algún error. El parámetro de entrada es un puntero a una estructura FILE del fichero del que queremos leer la posición del cursor de lectura/escritura

Page 9: Practica Dev Cpp archivos

MATERIA: LENGUAJE DE PROGRAMACION PROF: M. en ING. JORGE RAMOS GARCIA.

CLAVE: ABP01.9 GPO: B PREREQUISITOS: Sin Requisito. DPTO.: AREA BASICA DICIS – DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA

UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mx. SALON: 312 TRIM: Otoño 2011 HORARIO: Martes y Jueves de 8:00am- 10:00am

Lenguaje de Programación: C/C++ con DevCpp Correo Electrónico: [email protected] Pagina 9 / 17

DESARROLLO DE EJERCICIOS.

1. Crear una función en C que permita al usuario escribir una palabra pero cuando se digite cada letra o

carácter sólo aparezca un asterisco como si estuviese ingresando una clave. Ejemplo si digita la palabra

profesor aparecerá en la pantalla ********

#include <stdio.h>

#include <conio.h>

#include <string.h>

#include <stdlib.h>

void password(void);

char c, palabra[30];

int k;

main()

{

printf("\n Ingrese una password: ");

password();

printf("\n OK. ...... fin");

getch();

return 0; }

void password(void)

{

k=0;

c=getch();

while (c!=13&&c!=10)

{

palabra[k]=c;

printf("*"); k++;

c=getch();

}

printf("\n\n");

printf("\n La palabra que usted ingreso fue: ");

palabra[k]='\0';

puts(palabra);

}

Page 10: Practica Dev Cpp archivos

MATERIA: LENGUAJE DE PROGRAMACION PROF: M. en ING. JORGE RAMOS GARCIA.

CLAVE: ABP01.9 GPO: B PREREQUISITOS: Sin Requisito. DPTO.: AREA BASICA DICIS – DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA

UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mx. SALON: 312 TRIM: Otoño 2011 HORARIO: Martes y Jueves de 8:00am- 10:00am

Lenguaje de Programación: C/C++ con DevCpp Correo Electrónico: [email protected] Pagina 10 / 17

2. Escribe una función que reciba un número como parámetro y devuelva el número que se obtiene al invertir el orden

de los dígitos del número original. Por ejemplo, si la función recibe el número 356 devolverá el número 653.

3. Ejercicio de función. Calcular el precio de un producto.

#include <stdio.h>

#include <conio.h>

float importe = 2.5;

float tasa = 0.07;

float precio(float base, float impuesto); /* declaración de la función */

main()

{

printf("El precio a pagar es: %.2f\n", precio(importe, tasa)); //llamado de la función ……………

getch();

return 0;

}

float precio(float base, float impuesto) /* definición de la funcion */

{

float calculo; calculo = base + (base * impuesto);

return calculo;

}

4. A continuación veremos un ejemplo de un programa en el cual utilizamos dos funciones de diferente tipo de dato.

El valor del número e se puede aproximar sumando n términos de la serie: e = 1 + 1/1! + 1/2! + 1/3! + ... Escribir

un programa que solicite el número de términos de la serie a sumar e informe del valor aproximado de e. Téngase en

cuenta que el termino i de la anterior serie se obtiene dividiendo por (i-1).

/* programa de funciones combinadas

Lenguaje de Programacion: C

Universidad de Guanajuato

*/

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

void calculodatos(int numero);

double factorial(int dato);

Page 11: Practica Dev Cpp archivos

MATERIA: LENGUAJE DE PROGRAMACION PROF: M. en ING. JORGE RAMOS GARCIA.

CLAVE: ABP01.9 GPO: B PREREQUISITOS: Sin Requisito. DPTO.: AREA BASICA DICIS – DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA

UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mx. SALON: 312 TRIM: Otoño 2011 HORARIO: Martes y Jueves de 8:00am- 10:00am

Lenguaje de Programación: C/C++ con DevCpp Correo Electrónico: [email protected] Pagina 11 / 17

int numero;

char respuesta;

main()

{

printf("\n\n\nINICIO DEL PROGRAMA\n\n\n");

printf("\n\nEl programa te calcula el valor del numero e.");

do {

do {

printf("\n\nIntroduzca un numero de terminos de la serie: ");

scanf("%d",&numero); } while (numero<0);

calculodatos(numero);

printf("\n\n¨Desea introducir mas datos\?\n\n");

respuesta=getch();

system("cls");

} while (respuesta=='s' || respuesta=='S');

printf("\n\n\n\t\tÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ");

printf("\n\t\tÛÛÛ FIN DEL PROGRAMA ÛÛÛ"); printf("\n\t\tÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ\n\n\n");

getch();

return 0;

}// fin de main

//----------------------- funciones definicas --------------------

void calculodatos(int numero)

{

register int i; register double e=1.;

for (i=1;i<=numero;i++) {

e=e+1./factorial(i);

}

printf("\n\nEl valor de e para %d terminos es %f.",numero,e);

}

double factorial(int dato)

{

register int i; register double resultado=1;

for (i=dato;i>0;i--) resultado=resultado*i;

return resultado;

}

Page 12: Practica Dev Cpp archivos

MATERIA: LENGUAJE DE PROGRAMACION PROF: M. en ING. JORGE RAMOS GARCIA.

CLAVE: ABP01.9 GPO: B PREREQUISITOS: Sin Requisito. DPTO.: AREA BASICA DICIS – DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA

UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mx. SALON: 312 TRIM: Otoño 2011 HORARIO: Martes y Jueves de 8:00am- 10:00am

Lenguaje de Programación: C/C++ con DevCpp Correo Electrónico: [email protected] Pagina 12 / 17

5. Funciones en C.

Antes de ejecutar el siguiente programa, crear una carpeta denominada PROGRAMACION en la unidad de disco. Ej. C:\programacion\

/* Ejemplo de fopen

Lenguaje de Programacion C, DICIS

*/

#include <stdio.h>

#include <conio.h>

int main ()

{

FILE * pFile; pFile = fopen ("c:/programacion/mifile.txt","w"); //nombre del archive ………………….

if (pFile!=NULL)

{

fputs ("Ejemplo de Crear y escribir en Archivo .... ",pFile); // informacion a escribir

fclose (pFile);

}

getch();

return 0;

}

Se aprecia en la pantalla la creación del archivo MIFILE.TXT en la unidad de disco C:\programacion y su contenido.

Page 13: Practica Dev Cpp archivos

MATERIA: LENGUAJE DE PROGRAMACION PROF: M. en ING. JORGE RAMOS GARCIA.

CLAVE: ABP01.9 GPO: B PREREQUISITOS: Sin Requisito. DPTO.: AREA BASICA DICIS – DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA

UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mx. SALON: 312 TRIM: Otoño 2011 HORARIO: Martes y Jueves de 8:00am- 10:00am

Lenguaje de Programación: C/C++ con DevCpp Correo Electrónico: [email protected] Pagina 13 / 17

6. Revise cada uno de los ejemplos que a continuación se listan y verifique su resultado.

a)

//Escribimos un caracter en un fichero (abierto en modo escritura).

// fputc( variable_caracter , puntero_fichero );

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

main()

{

FILE *pf;

char letra='A';

if (!(pf=fopen("c:/programacion/datos.txt","w")))

{

printf("Error al abrir el archivo");

exit(0);

getch();

}

else fputc(letra,pf);

fclose(pf);

printf("\n OK, presione cualquier tecla para salir ................ ");

getch(); return 0;

}

b)

//Escribimos un caracter en un fichero (abierto en modo escritura).

// fputc( variable_caracter , puntero_fichero );

#include <stdio.h>

#include <stdlib.h> #include <conio.h>

main()

{

FILE *pf;

char letra='A';

if (!(pf=fopen("c:/programacion/datos.txt","w")))

{

printf("Error al abrir el archivo");

exit(0);

getch(); }

else fputc(letra,pf);

fclose(pf);

printf("\n OK, presione cualquier tecla para salir ................ ");

getch();

Page 14: Practica Dev Cpp archivos

MATERIA: LENGUAJE DE PROGRAMACION PROF: M. en ING. JORGE RAMOS GARCIA.

CLAVE: ABP01.9 GPO: B PREREQUISITOS: Sin Requisito. DPTO.: AREA BASICA DICIS – DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA

UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mx. SALON: 312 TRIM: Otoño 2011 HORARIO: Martes y Jueves de 8:00am- 10:00am

Lenguaje de Programación: C/C++ con DevCpp Correo Electrónico: [email protected] Pagina 14 / 17

return 0;

}

c)

//Escribe un numero entero en formato binario en el fichero.

// putw( variable_entera, puntero_fichero );

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

main()

{ FILE *pf;

int num=5; // valor a ser almacenado ................

if (!(pf=fopen("c:/programacion/base.txt","wb")))

{

printf("Error al abrir el archivo");

exit(0);

}

else

{

putw(num,pf); fclose(pf);

}

printf("\n OK. ya se grabo el dato ........... ");

getch();

return 0;

}

d)

// Lee un numero entero de un fichero, avanzando dos bytes después de cada lectura.

// getw( puntero_fichero );

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

int carnum;

main()

{ FILE *pf;

int num;

if (!(pf=fopen("c:/programacion/base.txt","rb")))

{

printf("Error al abrir el archivo");

Page 15: Practica Dev Cpp archivos

MATERIA: LENGUAJE DE PROGRAMACION PROF: M. en ING. JORGE RAMOS GARCIA.

CLAVE: ABP01.9 GPO: B PREREQUISITOS: Sin Requisito. DPTO.: AREA BASICA DICIS – DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA

UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mx. SALON: 312 TRIM: Otoño 2011 HORARIO: Martes y Jueves de 8:00am- 10:00am

Lenguaje de Programación: C/C++ con DevCpp Correo Electrónico: [email protected] Pagina 15 / 17

exit(0);

}

else carnum=getw( pf );

printf("\n El caracter leido es ====> %d", carnum);

getch();

return 0;

}

e)

// Una cadena de caracteres

// Escribe una cadena de caracteres en el fichero.

g// fputs( variable_array, puntero_fichero );

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

main()

{

FILE *pf;

char cad[12]="Hola mundo";

if (!(pf=fopen("c:/programacion/frase.txt","w")))

{

printf("Error al abrir el archivo");

exit(0);

}

else

{ fputs(cad,pf);

fclose(pf);

}

printf("\n OK ....... ");

getch();

return 0;

}

f)

//Una cadena de caracteres

// Lee una cadena de caracteres del fichero y la almacena en variable_array. La variable_entera indica la longitud

máxima de caracteres que puede leer.

Page 16: Practica Dev Cpp archivos

MATERIA: LENGUAJE DE PROGRAMACION PROF: M. en ING. JORGE RAMOS GARCIA.

CLAVE: ABP01.9 GPO: B PREREQUISITOS: Sin Requisito. DPTO.: AREA BASICA DICIS – DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA

UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mx. SALON: 312 TRIM: Otoño 2011 HORARIO: Martes y Jueves de 8:00am- 10:00am

Lenguaje de Programación: C/C++ con DevCpp Correo Electrónico: [email protected] Pagina 16 / 17

// fgets( variable_array, variable_entera, puntero_fichero );

#include <stdio.h>

#include <stdlib.h> #include <conio.h>

char sstr[50];

main()

{

FILE *pf;

char cad[20];

if (!(pf=fopen("c:/programacion/frase.txt","rb")))

{

printf("Error al abrir el archivo");

exit(0); }

else

fgets(sstr,20,pf);

printf("\n La cadena obtenida es :: %s", sstr);

getch();

return 0;

}

Page 17: Practica Dev Cpp archivos

MATERIA: LENGUAJE DE PROGRAMACION PROF: M. en ING. JORGE RAMOS GARCIA.

CLAVE: ABP01.9 GPO: B PREREQUISITOS: Sin Requisito. DPTO.: AREA BASICA DICIS – DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA

UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mx. SALON: 312 TRIM: Otoño 2011 HORARIO: Martes y Jueves de 8:00am- 10:00am

Lenguaje de Programación: C/C++ con DevCpp Correo Electrónico: [email protected] Pagina 17 / 17