Está en la página 1de 50

Universidad Mariano Glvez de Guatemala Facultad Ingeniera en Sistemas de Informacin Seccin B Saln T-311 Catedrtico/a: Inga.

Beatriz Girard

CARPETA ACADEMICA DEL CURSO DE ALGORITMOS

NOMBRE Simaoli Deyanira Prez Diego Alejandro Barrascout Silva Pablo Javier Esquivel

CARNE 0901 10 8924 0901 10 0901 10 2496 0901 10 331 0901 11 -

pg. 1

TABLA DE CONTENIDO

pg. 2

INTRODUCCION .4 COMPILADOR C++................5 ALGORITMOS..6 JERARQUIA DE OPERADORES..7 DIAGRAMAS DE FLUJO DE DATOS..10 ESTRUCTURA DE UN PSEUDOCODIGO..13 MENU EN C++.17 INSTRUCCIONES REPETITIVAS.22 CICLO WHILE CONTROLADO POR CENTINELA ..25 CICLO FOR C++...27 ESTRUCTURA DE DATOS...29 MATRICES BIDIMENCIONALES.33 ESTRUCTURA O REGISTROS35 ARREGLO DE ESTRUCTURAS..38 ARCHIVOS EN C++ = FLUJOS DE ENTRADA/SALIDA..39 LECTURA-ESCRITURA EN FICHEROS DE TEXTO: CON << Y >>...............42 FICHEROS BINARIOS...43 CONCLUSIONES.48 RECOMENDACIONES..49

pg. 3

INTRODUCCION

pg. 4

COMPILADOR C++ ZONA 1 PARCIAL 15pts 19 agosto 2 PARCIAL 15pts 10 octubre Tareas fecha de entrega: 1) 24 Agosto 2) 21 Septiembre 5pts c/u 3) 24 Octubre 20pts 4) 9 Noviembre EXAMEN FINAL 40pts 25 noviembre CARPETA ACADEMICA 10pts Mandar un correo con: - Asunto: mensaje de prueba (carn y nombre) - Contenido: o Carn o Nombre o Titulo de diversificado o Direccin o No. Celular o Direccin de trabajo (puesto) Libros: - Algoritmos, Osvaldo Cair

pg. 5

13 de julio 2011 ALGORITMOS - Desarrollo de la habilidad mental de alumno en base a la informtica, aplicable a cualquier rea. - Conjunto de pasos ordenados para la resolucin de un problema. Caractersticas: o Es finito, tiene principio y fin o No debe ser ambiguo o Debe ser definido o Preciso y claro Herramientas: 1. Descripcin narrada 2. Diagramas de flujo 3. Pseudocdigo 4. Lenguaje de programacin Fases: 1. Obtener el problema 2. Hacer anlisis del problema, involucra 3 etapas a. Entrada b. Proceso c. Salida Tipos de datos - Numricos: nmeros o Enteros: ENTERO o Decimal: REAL - Alfabticos: letras o Caracteres: CARCTER o Cadena: CADENA - Alfanumricos: letras y nmeros o Cadenas: CADENA - Lgicos: verdaderos o falsos o Verdadero/falso: LOGICO TIPOS DE OPERADORES - Aritmticos: suma, resta, funciones, etc. - Relacin: <,>, =, etc. - Lgicos: and, or, not Constantes: , valor gravitacional, nmero natural e. Estos no cambian. Variables: estas pueden ser modificadas, con cualquier valor.

pg. 6

15 de julio 2011 Etapas en la Resolucin de Problemas 1. Obtener el problema. 2. Hacer un anlisis del problema. El anlisis incluye 3 fases que son: entrada -> proceso->salida. 3. Elaborar un algoritmo. 4. Representarlo en una de las tres herramientas. Diagrama de flujo, Pseudocdigo, C++ 5. Elaborar el programa en un lenguaje. 6. Compilar el programa. 7. Ejecutar el programa con datos ficticios o de prueba. 8. Depurar el programa (eliminar errores). 9. Hacer pruebas. 10. Documentar el programa en forma Interna(comentarios o aclaraciones) o externa(hacer un manual para el usuario). JERARQUIA DE OPERADORES No. Operador Operaciones 1 ( ) Agrupar datos 2 Raz cuadrada 3 4 5 6 7 8 9 **,^ *, /, div(), mod() +,>,>=, <,<=, =, >< No Y O Elevacin Multiplicacin, divisin Suma, resta Relacin Lgicas

Div: es el cociente de la divisin Mod: es el residuo de la divisin p V V F F Q V F V F -p F F V V -q F V F V pyq V F F F Po q V V V F

pg. 7

Expresin: conjunto de operadores, operandos y funciones, escritas en una formula. Ej. Aritmticos 1. 7+5-6 = 6 y 7+5 =12 y 12-6 = 6 y 6 2. 9+7*8-36/5 y 7*8 =56 y 36/5= 7.2 y 9+56= 65 y 65-7.2= 57.8 y 57.8 3. 7*5**3/4 div3 y 5**3= 125 y 7*125=875 y 875/4 = 218.75 y 218.75div 3 = 72 y 72 4. 7*8*(160 mod 3**3)div 5*13-28 y 3**3=9 y 160 mod 9 = 25 y 7*8= 56 y 56*25 =1400 y 1400 div 5= 280 y 280*13=3640 y 3640-28=3612 y 3612 Ej. Lgicos 1. a = 5 b = 16 (a**2)>(b*2) y 5**2 =25 y 16*2=32

pg. 8

y y

25>32 Falso

2. x = 6 b = 7.8 (x*5+b**3/4)<=(x**3div b) (x*5+b**3/4) y 7.8**3= 574.552 y 6*5=30 y 574.553/4 = 118 (x**3div b) y 118 +30 = 148.638 y 6**3= 216 y 216div 7.8 = 27.68 y 118 <= 27.68 = falso Asignacin directa: I, acum, j, rea, sum, band, car 1. i 0 2. i i+1 3. acum 0 4. j 5**2div3 5. car a 6. acum j div i 7. rea acum /3 8. band (8>5) y (15<2**3) 9. sum acum*5/j **2 10. i i*3 11. rea rea/5 12. band band o (i=j) 13. i rea 14. car j

pg. 9

Tarea, hacer la tabla de la siguiente forma. ASIGNACION I J ACUM REA SUM CAR BANDA 1 0 2 1 3 0 4 8.33 5 a 6 8.33 7 2.77 8 v 9 0.6 10 3 11 0.55 12 V 13 0.55 14 8.33

DIAGRAMAS DE FLUJO DE DATOS Representacin grafica de un algoritmo o proceso, se utiliza en disciplinas como la programacin, procesos industriales e ingenieras. Utiliza smbolos con significados bien definidos que representan los pasos de un algoritmo y representan el flujo de ejecucin mediante flechas que conectan los puntos de inicio y fin. La simbologa principal es la siguiente:

TERMINAL PROCESO

Indica el inicio y el fin del diagrama Inicializar variables, constantes, tipos de datos del usuario, y realiza operaciones aritmticas Enviar a pantalla mensajes y resultados de operaciones aritmticas Igual que pantalla, solo que enva datos a la impresora

PANTALLA IMPRESORA

pg. 10

LECTURA 1 LECTURA 2 DECISIN SIMPLE


Condi cin

Leer los datos que ingresa el usuario desde el teclado Igual que lectura 1 Evala una condicin simple o compuesta toma uno de dos caminos

DECISIN MULTIPLE
En caso que

Evala el valor de una variable y sigue uno o varios caminos

Ciclo, bucle o lazo Sub proceso

Ejecutar un bloque de instrucciones varias veces Llama a una funcin o procedimiento con o sin parmetro Indica que diagrama continua en la misma pagina, donde encuentre otro smbolo con la misma letra Indica que continua en otra pagina, donde encuentra el mismo smbolo con el mismo numero Se usa para conectar 2 smbolos de ciclo solo por el lado izquierdo Indican el sentido en que continua el siguiente smbolo en el organigrama Se usa para agregar comentarios al diagrama por el lado derecho

Conector dentro de pagina

Conecto fuera de pagina

Flecha con lnea punteada Flechas

Comentario

Ejemplo: programa que muestre que diga hola mundo

INICIO hola mundo FIN

pg. 11

Ejemplo: programa que pida al usuario su nombre


INICIO CADENA nom

ingrese su nombre

nom

FIN

Ejemplo: elabore el diagrama de flujo que pida al usuario 2 nmero enteros y muestre la suma y el cociente de ambos nmeros.
INICIO
ENTERO n1, n2, suma REAL co

ingrese 2 nmeros

n1, n2
Suma n1+n2 Co n1/n2

suma es: , sum cociente es: , co

FIN

pg. 12

ESTRUCTURA DE UN PSEUDOCODIGO //comentario ALGORITMO Mdulos incluidos (entrada-salida) CONSTANTES VARIABLES: enteros real INICIO instrucciones ---------------------------------------------------------FIN DEALGORITMO Tipos de instrucciones: - SALIDA: ESCRIBIR, WRITE - ENTRADA: LEER, READ - Asignacin directa: a 5 - De decisin: s - Cclicas o repetitivas: PARA, MIENTRAS - Modulares: - Arreglos - Registros 1) Elabore el pseudocdigo que muestre en pantalla un mensaje de bienvenida. Solucin: 1) //El siguiente algoritmo muestra un mensaje de bienvenida en pantalla 2) ALGORITMO Mensaje1 3) MODULOS INCLUIDOS 4) Entrada-salida 5) CONSTANTES 6) //No hay 7) VARIABLES 8) //No hay 9) INICIO 10) ESCRIBIR Bienvenido al curso de Algoritmos +CDL (cambio de lnea) 11)FIN ALGORITMO Mensaje1

pg. 13

2) Elabore el pseudocdigo que pida al usuario 2 nmeros enteros, los sume y calcule el cociente. Solucin: 1. /*El siguiente algoritmo calcula la suma y el cociente de 2. Dos nmeros ingresados por el usuario*/ 3. ALGORITMO Clculos 4. MODULOS INCLUIDOS 5. Entrada-salida 6. CONSTANTES 7. //No hay 8. VARIABLES 9. ENTERO: n1, n2, suma 10. REAL: co 11. INICIO 12. ESCRIBIR (ingrese dos nmeros enteros, +CDL) 13. LEER: (n1, n2) 14. Suma n1+n2 15. Co n1/n2 16. ESCRIBIR (La suma es: , suma,+ CDL) 17. ESCRIBIR (El cociente es: , co+CDL) 18. FIN DE ALGORITMO Clculos 3) RESUELVA 1. //El siguiente programa resuelve 2. ALGORITMO rea de elipse 3. MODULOS INCLUIDOS 4. Entrada-salida-Matemtica 5. CONSTANTES 6. //no hay 7. VARIABLES 8. ENTERO: a,b 9. REAL: res 10. INICIO TAREA: elabore el diagrama, pseudocdigo y programa: 1. determinar los valores de: ergios dadas las siguientes relaciones de las formulas: Ergios = pergios x sqrt(lergios) lergios= 2piE^u E: 2.7818 u: 1.672 pi= 3.1416 fergios= 14.45 Los tipos de instrucciones selectivas son:

pg. 14

Simples: con la instruccin, SI-ENTONCES (if) Dobles: con el comando, SI-ENTONCES-SINO (if-else) Anidadas: un SI dentro de otro SI o un SI dentro de un SINO Mltiples: utilizan la instruccin EN CASO QUE (switch())

pg. 15

pg. 16

MENU EN C++

pg. 17

#include <conio.h> #include <math.h> #include <stdlib.h> #include <iostream.h> int main() { int opc; float coor1,coor2,angulo,radio,n1,n2,multi,cel,f,z,nota; const mu=75,vari=4; clrscr; cout<<"------MENU PRINCIPAL------"<<endl; cout<<"1. Coordenadas Polares a Rectanculares"<<endl; cout<<"2. Multiplicar 2 numeros"<<endl; cout<<"3. Grados Celsius a Fahrenheit"<<endl; cout<<"4. Desviacion Estandar"<<endl; cout<<"5. Salir del menu"<<endl; cout<<"\n Ingrese su numero de opcion 1-5"<<endl; cin>>opc; switch(opc) { case 1: { cout<<"Ingrese RADIO y ANGULO "; cin>>radio>>angulo; coor1=radio*(cos(angulo)); coor2=radio*(sin(angulo)); cout<<"Las coordenadas rectangulares son: "<<"x: "<<coor1<<", "<<"y: "<<coor2<<endl; };break; case 2: { cout<<"Ingrese 2 numeros a multiplicar: "; cin>>n1>>n2; multi=n1*n2; cout<<"La multiplicacion es: "<<multi<<endl;

pg. 18

};break; case 3: { cout<<"Ingrese C para convertir a F "; cin>>cel; f=(cel*1.8)+32; cout<<"Los grados Fahrenheit son: "<<f<<endl; };break; case 4: { cout<<"Ingrese la nota a calcular "; cin>>nota; z=(nota-mu)/vari; cout<<"La desviacion estandar es: "<<z<<endl; };break; case 5: exit(1); default: cout<<"ERROR, INGRESE LA OPCION DE NUEVO \n"; } system("pause"); return 0; }

pg. 19

pg. 20

pg. 21

24 de agosto de 2011 INSTRUCCIONES REPETITIVAS Tipos: - ciclo -bucle -lazo Tipos de ciclos: - While (mientras) controlado por contador - Do-while (hacer mientras) controlado por centinela - For (para) Sintaxis del ciclo mientras: Var de control MIENTRAS (condicin simple o compuesta) HACER INICIO ___ ___ ___ FIN ALGORITMO Var control While(condicin) { ____ ____ }

Var control

MIENTRAS (condicin) HACER

FIN MIENTRAS

Elabore Diagrama de flujo, pseudocdigo, y C++ para resolver el siguiente problema. Un contenedor transporta hacia una distribuidora de producto informticos, monitores, cases, mouse y diferentes productos de computacin, empacados en cajas donde n programador ingresara al sistema las siguientes datos. NOMBRE DEL PRDUCTO, FECHA DE INGRESO, CANTIDAD Y PRECIO UNITARIO. Encuentre y muestre en pantalla siendo usted el programador, el peso y el precio total que llego a la distribuidora. 50 cajas

pg. 22

pg. 23

pg. 24

CICLO WHILE CONTROLADO POR CENTINELA Variable de control

pg. 25

#include <conio.h> #include <math.h> #include <iostream.h> int main() { int num, cont, cont1, cta; char resp; resp='S'; cont=0; cont1=0; cta=0; while (resp =='S') { cout<<"ingrese un numero: "; cin>>num; cout<<"desea continuar S/N?"; cin>>resp; cta++; num=num%2; if(num==1) { cont++; } else { cont1++; } } cout<<"El total de pares es: " <<cont<<endl <<"EL Total de impares es: " <<cont1<<endl; cout<<"El total de iteraciones es: " <<cta; getch (); return 0; }

pg. 26

CICLO FOR C++ Este ciclo es de los ms usados para repetir una secuencia de instrucciones, sobre todo cuando se conoce la cantidad exacta de veces que se quiere que se ejecute una instruccin simple o compleja. Su formula general es: For (inicializacin; condicin; incremento) { Instruccin (es)}; Ejemplo For (x-1; x<=-1; x-1) {puts(MAMA)}; En su forma simple la inicializacin es una instruccin de asignacin que carga la variable de control de ciclo con un valor inicial. La condicin es una expresin relacional que evala la variable de control de ciclo contra un valor final o de parada que determina cuando debe acabar el ciclo. El incremento detiene la manera en que la variable de control de ciclo debe cambiar cada vez que el computador repite un ciclo. Se deben separar esos 3 argumentos con punto y coma (;) EJEMPLO: #include <stdio.h> #include <conio.h> #include <string.h> void main () { clrscr (); //declaracion de variables int x; //instruccin for for(x=1;x<=10;x=x+1) { gotoxy(10),x+4); print f(&d mama,x); }; getch(); }

pg. 27

pg. 28

21/9/11 ESTRUCTURA DE DATOS Clasificados en: 1) Estticas: 1.1. Arreglos o arrays: 1.1.1. Unidimensionales (vectores): a. Vectores simples: necesitan un ciclo for simple para manipular sus datos. b. Vectores paralelos: formados por 2 ms vectores del mismo tamao y necesitan y ciclo for para manipular sus datos. 1.1.2. Bidimensionales: tiene 2 dimensiones: columnas y filas. Necesitan dos ciclos for, pero estos deben estar anidados. 1.1.3. Tridimensionales: conocidos como cubos, tienen tres dimensiones: columnas, filas y capas o niveles. Necesitan 3 ciclos for anidados. 1.2. Registros 1.3. Archivos. 2. Dinmicas: 2.1 Listas 2.1.1. En cadenas simples 2.1.2. Doblemente encadenadas 2.1.3. Circulares 2.2 Pilas 2.3 Colas 2.4 Grafos 2.5 rboles ARREGLOS UNIDIMENSIONALES: Estructuras estticas de una dimensin, representadas grficamente como un conjunto de casillas adyacentes, en posicin horizontal o vertical. Por ejemplo

Las partes de un arreglo son: 1. Tipo de dato que almacenan 2. Nombre de dato 3. Tamao de dato 4. ndice del arreglo

pg. 29

Ejemplo: Si se requiere guardar los datos de un vector simple, la declaracin del mismo a un nivel de diagrama de flujo es el siguiente.
TIPO DE DATO nombre [cantidad] REAL nombre [25]

A nivel de C++ la declaracin seria: int nombre [25]; Grficamente el vector de notas se representa as: 0 1 2 3 4 5 6 . . . 23 24

Existen tres formas de llenar un vector con datos: 1. Asignando valores fijos a cada casilla, ejemplo: int nombre [10] ={1,2,3,4,5,6,7,8,9,10}; 2. Pidindole los datos al usuario dentro de un ciclo for, ejemplo: for(int n>0; n<35; n++) { cout<<ingrese los datos para la cadea; cin>>datos[n]; } 3. Generando valores dentro de un ciclo for, ejemplo: for(int n>0; n<35; n++) { notas [n] = rand ()%10; cout<<notas [n]<<5; }

pg. 30

Elabore un programa que guarde en un vector el precio de 15 productos ingresados por el usuario #include <iostream.h> #include <conio.h> float precios[15]; int main() { clrscr(); cout<<"Llenando un vector con precios de productos... \n\n"; for (int pos=0;pos<15;pos++) { cout<<"ingrese el precio para el producto # "<<(pos+1)<<","; cin>>precios[pos]; } getch (); return 0; }

pg. 31

#include <iostream.h> #include <conio.h> int llena_vector();//prototipo int main() { clrscr(); llena_vector();//llamando a la funcion del usuario getch(); } int llena_vector() //definicion de la funcion del usuario { float precios[15]; cout<<"Llenando un vector con precios de productos... \n\n"; for (int pos=0;pos<15;pos++) { cout<<"ingrese el precio para el producto # "<<(pos+1)<<","; cin>>precios[pos]; } getch (); return 0; }

pg. 32

MATRICES BIDIMENCIONALES En C++ se coloca: #include <.h> int a [3][4]; //matriz declarada en forma global. void main () { A[ ][ ]={ { 1,2,3 } { 1,3,7 } }//llenado por asignacin directa. for (int f=0;f<4;f++) { for(int c=0;c <3; c++) { cout<<Ingrese el valor para la casilla <<c<<,<<f<<:; cin>>a[c][f]; //llenado por peticin al usuario. } } for (int f=0;f<4;f++) { for(int c=0;c <3; c++) { A [c][f]=rand()%51+50 //se coloca el numero que falta para llegar al limite maximo + el numero menor Cout<< A[c][f]; } Cout<<endl; //llenado por random }

pg. 33

#include <iostream.h> #include <conio.h> #include <stdio.h> #include <stdlib.h> int A[3][4],B[3][4],C[3][4]; int suma_matrices(); void main() { clrscr(); suma_matrices(); getch(); } suma_matrices() { randomize (); for (int f=0;f<4;f++) { for(int c=0;c <3; c++) { A[c][f]=rand()%5+4; B[c][f]=rand()%5+9; C[c][f]=A[c][f]+B[c][f]; cout<<C[c][f]<<"\t"; } cout<<endl; } }

pg. 34

26/10/11 ESTRUCTURA O REGISTROS 1. Estructuras o registros simples: estas contiene una lista de campos o elementos, clasificados segn su tipo 2. Estructuras o registros anidados: estos contiene una estructura dentro de otra estructura o una estructura dentro de una unin 3. Arreglo de estructuras: una estructura simple o anidada, se puede convertir en un arreglo de estructuras cuando se necesita almacenar dos o ms registros. Un array con datos distribuidos en filas y columnas, por ejemplo: si necesitamos almacenar los datos de una agenda podramos tener los siguientes campos: - Condigo de la persona - Nombre de la persona - Nmero de celular - Direccin de e-mail Estos datos distribuidos en filas y columnas quedaran asi: ESTRUCTURA_AGENDA [5]: Cod_per Nomb_per P-001 Mauricio Larios P-002 Claudia Jimnez P-003 Brenda Castillo P-004 Carlos Herrera P-005 Julio Glvez

1 2 3 4 5

Tel_per 4567-3679 4567-8907 4567-5876 4345-6789 4567-8906

E-mail_per mlario@hotmail.com cjimenz@hotmail.com bcastillo@hotmail.com cherrera@hotmail.com jgalvez@hotmail.com

Las estructuras se pueden declarar en forma global, es decir antes de MAIN o en forma local entro de MAIN o por una funcin del usuario. Cuando se declaran en forma global, es necesario renombrar la estructura dentro de la funcin que la va a utilizar.

pg. 35

Ejemplo de estructuras simples declarada en forma global: # include <iostream.h> #include <conio.h> struct clientex { char cod_cte[5], nom_cte[20]; int edad; float saldo_pte; }; void main () { struc cliente cte; } cte =alias de la estructura y es el nombre que se usara en el resto del programa. Ejemplo de estructuras simples declarada en forma local # include <iostream.h> #include <conio.h> void main () { struct clientex { char cod_cte[5], nom_cte[20]; int edad; float saldo_pte; } }

pg. 36

# include <iostream.h> # include <conio.h> # include <stdio.h> struct Ejemplo { char nombre[30],carnet[15], curso[20], fecha[25]; int notaf; }; int llena_estructura(); int reporte1(); void main() { clrscr(); llena_estructura(); reporte1(); } int llena_estructura() { struct Ejemplo ejem[5]; cout<< "Llenando la estructura de ejemplo"; for(int x=0; x<5; x++) { printf("Ingrese el numero del carnet: "); gets(ejem[x].carnet); printf("Ingrese el nombre del alumno: "); gets(ejem[x].nombre); printf("Ingrese el curso del alumno. "); gets(ejem[x].curso); printf("Ingrese la nota final del alumno: "); scanf("%d", & ejem[x].notaf); printf(" Ingrese la fecha de evaluacion: "); gets(ejem[x].fecha); } return 0; } int reporte1() { return 0; }

pg. 37

02/Noviembre/2011 ARREGLO DE ESTRUCTURAS #include <iostream.h> #include <conio.h> #include <stdio.h> struct { char mes[3]; int dia,anio; }fecha; union alumno { char carnet_alum[15],nom_alum[20]; struct { char nom_curso[15], fecha_eval[20]; int nota_final; }cursos[5]; }; void main() { clrscr(); union alumno alum[27]; for (int a=0; a <27;a++) { cout<< Ingresando datos del alumno # <<(a+1)<<\n; cout <<Ingrese el # de carnet del alumno:; gets(alum[a]. carnet_alum); cout<< Ingresando los datos de los cursos\n\n; for(int c= 0; c <5; c++) { cout << datos del curso # <<(c+1)<<endl; cout<<Ingrese el nombre del curso:; gets(alum[a].cursos[c].nom_curso); } } }

pg. 38

ARCHIVOS EN C++ = FLUJOS DE ENTRADA/SALIDA. Ejemplo: cin y cout Tipos de ficheros: de texto y binarios Biblioteca de gestin de ficheros (a incluir en los programas) #include <fstream.h> Apertura de ficheros (1) : Ficheros de entrada o salida. (A) Como fichero de entrada: Para ello empleamos la sentencia ifstream descriptor (nombre.extensin); (B) Como fichero de salida: Para ello empleamos la sentencia ofstream descriptor (nombre.extensin); Comentario: EMPLEAR EL DESCRIPTOR A PARTIR DE AQU.

Apertura de ficheros (2) : Ficheros de entrada o salida. y PRIMERO: declaramos la direccin del flujo de entrada ifstream descriptor; // Para ficheros deentrada ofstream descriptor; // Para ficheros de salida y SEGUNDO: Asociamos el descriptor de ficheros al fichero en s. descriptor.open(nombre.extensin,int modo); Donde modo puede ser una combinacin (empleando |) de lo siguiente: ios:: in // Modo entrada ios:: out // Modo salida (por defecto) ios:: app // Modo aadir, o sea, posicionar el cursor del fichero (ver abajo) // al final del fichero antes de cada escritura ios:: binary // El archivo se abre en modo binario ios:: ate // El archivo se abre y el cursor se posiciona al final ios:: nocreate // Genera un error si el fichero no existe ios:: noreplace // Genera un error si el fichero existe ya Apertura de ficheros (3) : Combinando ambas formas ifstream descriptor(nombre.extensin,int modo); // para entrada ofstream descriptor(nombre.extensin,int modo); // para salida Ejemplo: Las dos lneas siguientes abren el fichero mio.txt como fichero de entrada (para lectura) y lo asocian al descriptor in. ifstream in; // descriptor del fichero a abrir in.open(mio.txt); // Apertura del fichero; Esas dos lneas equivalen a la siguiente: ifstream in (mio.txt); // Apertura del fichero;

pg. 39

Ejemplo: Para abrir el fichero salida.dat en modo modo salida (si el fichero no existe lo crea, y si existe borra su contenido) asocindolo al descriptor out podemos usar la siguiente sentencia; ofstream out("salida.txt"); o la siguiente ofstream out("salida.txt", ios::out); o tambin ofstream out; out.open("salida.txt"); Ficheros de entrada/ salida (1): Declaracin-apertura fstream descriptor; descriptor.open(nombrefichero.ext, ios::in | ios::out) Ficheros de entrada/ salida (1): Declaracin-apertura fstream descriptor(nombre.extensin,ios::in | ios:: out); // para entrada-salida Comprobacin de apertura correcta. if (descriptor){ \\Buen estado. Continuamos \\ operando sobre el fichero ..... } if (! descriptor){ \\ Mal estado. Escribimos un mensaje \\ a la salida estndar cout << Error en la apertura ..... }

pg. 40

Ejemplo: ifstream in("F1.dat"); if (!in) { cout << "\n Incapaz de crear este o abrir el fichero "; // salida estndar cout << " para salida " << endl; } else { .... // Se opera sobre el fichero } Cierre de ficheros. descriptor.close() Deteccin de fin de fichero y otras funciones. descriptor.funcin(); Donde funcin es una de las siguientes: La funcin eof() que devuelve un valor distinto de cero si se ha alcanzado el final del fichero. LECTURA ADELANTADA!! La funcin fail(). La funcin good()

pg. 41

LECTURA-ESCRITURA EN FICHEROS DE TEXTO: con << y >>. Comentario: El operador << omite los espacios en blanco. Ejemplo: El siguiente programa escribe tres lneas en un fichero llamado EJEMPLO5.TXT que se crea en el programa (si ya existe borramos su contenido). Cada lnea consta de un entero, un real y una cadena de caracteres. Los datos en cada lnea estn separados por espacios en blanco. #include <fstream.h> // Biblioteca para el manejo de ficheros #include <iostream.h> // Bibliooteca para la entrada-salida estndar int main(){ ofstream fichout("EJEMPLO5.TXT",ios::out); if (!fichout) cout << "\n Incapaz de crear este o abrir el fichero \n"; else { fichout << 1 << " " << 5.0 << " APROBADO" << endl; fichout << 2 << " " << 1.1 << " SUSPENSO" << endl; fichout << 3 << " " << 8.0 << " NOTABLE " << endl; fichout.close(); } } // Fin del main Ejemplo: El siguiente programa lee el fichero de texto llamado EJEMPLO5.TXT y visualiza su contenido en el monitor. #include <fstream.h> // Libreria para el manejo de ficheros #include <iostream.h> typedef char TCadena[30]; int main(){ int i; char c; float r; TCadena cad; ifstream fichin("EJEMPLO5.TXT"); // declaracion y apertura del fichero if (!fichin) cout << "\n Incapaz de crear este o abrir el fichero ";

pg. 42

else{ fichin >> i; // Observese la lectura adelantada!!! while (!fichin.eof()){ cout << i << " "; fichin >> r; cout << r << " "; fichin >> cad; cout << cad << "\n"; fichin >> i; } fichin.close(); } // Fin del main FICHEROS BINARIOS. Lectura byte a byte. descriptor.get(ch); Escritura byte a byte. descriptor.put(ch); El siguiente programa escribe un texto (byte a byte) en el fichero Ejemplo8.dat. #include <fstream.h> #include <iostream.h> int main(){ char cad[17]="TEXTO A ESCRIBIR"; ofstream fichout("Ejemplo8.dat", ios::out | ios::binary); if (!fichout) cout << "\n Incapaz de Crear o Abrir el fichero "; else{ for (int i=0;i<=16;i++) fichout.put(cad[i]); // Escritura en el fichero fichout.close(); } } // Fin del main

pg. 43

FICHEROS BINARIOS. Escritura por bloque de bytes. descriptor.read(&c, num); Escritura por bloque de bytes. Descriptor.write(&c, num); Recomendacin: Usar sizeof() y pasar c por referencia Acceso aleatorio a ficheros. seekg(pos) y seekp(pos) mueven la posicin del cursor del fichero a la posicin relativa del fichero indicada por pos, donde pos es un entero (o variable conteniendo un entero). tellg() y tellp() devuelven la posicin relativa actual del cursor asociado al fichero de entrada y devuelve un 1 en caso de existir algn error. Ficheros pasados como argumentos: POR REFERENCIA!!. El siguiente programa declara el fichero F.dat para entrada-salida, graba en dicho fichero el valor 1234.86 en binario y despus los veinte primeros enteros. Posteriormente, lee el fichero visualizando su informacin en la salida estndar (el monitor). #include <fstream.h> #include <iostream.h> int main(){ float R=1234.86; int i,N; fstream fichbin("F.dat",ios::binary | ios::out); // Apertura como salida fichbin.write(&R,sizeof(float)); for (i=1;i<=20;i++) fichbin.write(&i,sizeof(int)); fichbin.close(); fichbin.open("F.dat",ios::binary | ios::in); // Apertura como entrada fichbin.read(&R,sizeof(float)); cout <<endl << "R= " << R << endl; for (i=1;i<=20;i++){ fichbin.read(&N,sizeof(float)); cout <<endl << i << "= " << N << endl; }

pg. 44

} // Fin del main

El siguiente programa almacena en un fichero los 10 primeros enteros, luego muestra por pantalla el quinto entero (o sea el 5), posteriormente lo reemplaza por el valor 100, y al final visualiza en el monitor el contenido del fichero. #include <fstream.h> #include <iostream.h> int main(){ int i,N; fstream fichbin("ejemplo11.dat",ios::binary | ios::in | ios::out); for (i=1;i<=10;i++) fichbin.write(&i,sizeof(int)); // Almacena los 10 primeros enteros fichbin.seekp(4*sizeof(int)); // se posiciona al principio del quinto/ entero fichbin.read(&N,sizeof(float)); // Lee dicho entero cout <<endl << "Quinto= " << N << endl; // visualiza el valor 5 fichbin.seekp(4*sizeof(int)); // se posiciona de nuevo en el quinto entero // pues el cursor haba avanzado. i=100; fichbin.write(&i,sizeof(int)); // Modifica el valor 5 por el valor 100; fichbin.seekp(0*sizeof(int)); // se posiciona de nuevo al principio del fichero for (i=1;i<=10;i++){ fichbin.read(&N,sizeof(float)); cout <<endl << i << "= " << N << endl; // Se visualiza el contenido } fichbin.close(); } // Fin del main

pg. 45

Para Lectura de archivos: 1. ifstream Arch1(c:\Archivos\Ejercicios\Listado1.TXT); //path o camino 2. ifstream Arch1; Arch1.open(c:\Archivos\Ejercicios\Listado1.TXT,ios::in); 3. ifstream Arch1(c:\Archivos\Ejercicios\Listado1.TXT, ios::in); Para Creacin de archivos: 1. ofstream Arch1(c:\Archivos\Ejercicios\Listado1.TXT);

//path o camino

2. ofstream Arch1; Arch1.open(c:\Archivos\Ejercicios\Listado1.TXT,ios::out); 3. ofstream Arch1(c:\Archivos\Ejercicios\Listado1.TXT, ios::out); pipe

pg. 46

arch1.close () struct Persona { int edad; char nom[15]; }; int main() { struc persona per[20]; char resp; resp == s; int p= 1; while (resp == s) { cout<< Ingrese su edad: ; cin >> per[p].edad; cout<< Ingrese su nombre: ; cin >> per[p].nombre; arch1<<per[p]; arch1.write(edad); arch1.put(edad); p++; cout << Desea ingresar otra edad s/n:; cin >> resp; } arch1>>edad; arch1.read(edad); arch1.get(edad);

pg. 47

CONCLUSIONES

pg. 48

RECOMENDACIONES:

Las recomendaciones para la siguiente carpeta acadmica son las siguientes: y y y y y y Lea detenidamente el texto. Seguir las instrucciones o pasos descritos en la carpeta. Poner en prctica lo descrito. Si tiene alguna duda sobre el tema, avocarse a internet. Usar el lenguaje de programacin C++ Utiliza una versin acorde a los bits de tu computadora para que funcione correctamente. y Para los diagramas de flujo, puedes utilizar las formas que se encuentran en Microsoft Office Word. y En los programas, termina las llaves al mismo nivel donde las comenzaste, para que sea ordenado. y Deja los espacios necesarios y justifica tu texto para cualquier forma de representar el algoritmo. y Si no te corren los programas descritos en la carpeta, asegurate de haberlos copiado correctamente. y y Utiliza siempre una jerarqua de operaciones para resolver los problemas. Para compilar tu programa en Borland C++ y corregir tus errores presiona F9.

pg. 49

CD

pg. 50

También podría gustarte