Sei sulla pagina 1di 17

Colegio Nacional de Educacin Profesional Tcnica

Profesional Tcnico Bachiller en Informatica


J. Refugio. Esparza Reyes

Nombre: Carlos Daniel Martnez Morales.

Docente: Yolanda Catalina Navarrete Beas.

Modulo: Programacin orientada a objetos

Especialidad: Informtica.

Grupo: 410

Turno: Matutino
INDICE

Manejo de estructuras

Ficheros C++

Libreras C++

Funcin de cadenas

Manejo de nmeros aleatorios Randomize

Fuentes
Estructuras
Una estructura es un grupo de variables las cuales pueden ser de diferentes tipos
sostenidas o mantenidas juntas en una sola unidad. La unidad es la estructura.

Las estructuras de datos se emplean con el objetivo principal de organizar los


datos contenidos dentro de la memoria de la PC. As , nuestra primera
experiencia con estructuras comienza desde el momento mismo en que usamos
en nuestros programas variables de tipos primitivos (char, short, int,
float, etc).

Sintaxis
En C/C++ se forma una estructura utilizando la palabra reservada struct, seguida
por un campo etiqueta opcional, y luego una lista de miembros dentro de la
estructura. La etiqueta opcional se utiliza para crear otras variables del tipo
particular de la estructura:

struct [ <nombre tipo de estructura > ] {

[<tipo> <nombre-variable[,nombre-variable,...]>];

[<tipo> <nombre-variable[,nombre-variable,...]>];

...

} [ <variables de estructura> ] ;

Un punto y coma finaliza la definicin de una estructura puesto que _esta es


realmente una sentencia C/C++.

De acuerdo con la sintaxis general de la orden struct es posible crear estructuras


de datos annimas. Solamente hay que tener en cuenta que en una declaracin
annima se debe definir al menos una variable al final de la declaracin. Por
ejemplo, con el siguiente

fragmento de codigo:

struct {

int a;

int b;

} p1;
Se declara y define la variable estructurada p1, misma que se compone por los
miembros a y b; ambos del tipo int.

Ahora bien, la sintaxis mostrada no es tan comn ni conveniente, ya que con la


misma solamente se est creando una variable estructurada pero no un nuevo
tipo. Es decir, si deseramos tener otra variable que tuviera las mismas
caractersticas que posee la variable p1, necesitremos escribir exactamente la
misma instruccin, salvo que cambiando el nombre de la variable. Por ejemplo:

struct { int a, b; } p2;

Por supuesto, en una misma lnea de instruccin podemos definirms de una


variable. Ejemplo:

struct { int a, b; } p1, p2;

Entonces, para crear nuevos tipos con struct deberemos de modificar la sintaxis
mostrada en los ejemplos anteriores.

#include <stdio.h>

using namespace std;

struct punto{

int x;

int y;

};

struct linea{

punto p1;

punto p2;

};

int main(){

return 0;

int main(){
linea l1;

l1.p1.x=1;

l1.p1.y=1;

l1.p2.x=2;

l1.p2.y=2;

printf("La linea l1 pasa por los puntos (%d,%d),

(%d,%d)\n",l1.p1.x,l1.p1.y,l1.p2.x,l1.p2.y);

return 0;

Ficheros
El estndar de C contiene varias funciones para la edicin de ficheros, stas estn definidas
en la cabecera stdio.h y por lo general empiezan con la letra f, haciendo referencia a file.
Adicionalmente se agrega un tipo FILE, el cual se usar como apuntador a la informacin del
fichero. La secuencia que usaremos para realizar operaciones ser la siguiente: _

Crear un apuntador del tipo FILE *


Abrir el archivo utilizando la funcin fopen y asignndole el resultado de la llamada a
nuestro apuntador.
Hacer las diversas operaciones (lectura, escritura, etc).
Cerrar el archivo utilizando la funcin fclose.

fopen
Esta funcin sirve para abrir y crear ficheros en disco.
El prototipo correspondiente de fopen es:

FILE * fopen (const char *filename, const char *opentype);

Los parmetros de entrada de fopen son:


filename: una cadena que contiene un nombre de fichero vlido. opentype: especifica el tipo
de fichero que se abrir o se crear.

Una lista de parmetros opentype para la funcin fopen son:

"r" : abrir un archivo para lectura, el fichero debe existir.


"w" : abrir un archivo para escritura, se crea si no existe o se sobreescribe si existe.
"a" : abrir un archivo para escritura al final del contenido, si no existe se crea.
"r+" : abrir un archivo para lectura y escritura, el fichero debe existir.
"w+" : crear un archivo para lectura y escritura, se crea si no existe o se sobreescribe si
existe.
"r+b rb+" : Abre un archivo en modo binario para actualizacin (lectura y escritura).
"rb" : Abre un archivo en modo binario para lectura.

Adicionalmente hay tipos utilizando "b" (binary) los cuales no sern mostrados por ahora y que
solo se usan en los sistemas operativos que no pertenecen a la familia de unix.

fclose
Esta funcin sirve para poder cerrar un fichero que se ha abierto.
El prototipo correspondiente de fclose es:

int fclose (FILE *stream);

Un valor de retorno cero indica que el fichero ha sido correctamente cerrado, si ha habido
algn error, el valor de retorno es la constante EOF.
Un ejemplo pequeo para abrir y cerrar el archivo llamado fichero.in en modo lectura:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char** argv)


{
FILE *fp;
fp = fopen ( "fichero.in", "r" );
if (fp==NULL) {fputs ("File error",stderr); exit (1);}
fclose ( fp );

return 0;
}

Como vemos, en el ejemplo se utiliz el opentype "r", que es para la lectura.


Otra cosa importante es que el lenguaje C no tiene dentro de si una estructura para el manejo
de excepciones o de errores, por eso es necesario comprobar que el archivo fue abierto con
xito "if (fp == NULL)". Si fopen pudo abrir el archivo con xito devuelve la referencia al
archivo (FILE *), de lo contrario devuelve NULL y en este caso se debera revisar la direccion
del archivo o los permisos del mismo. En estos ejemplos solo vamos a dar una salida con un
retorno de 1 que sirve para sealar que el programa termino por un error.

feof
Esta funcin sirve para determinar si el cursor dentro del archivo encontr el final (end of file).
Existe otra forma de verificar el final del archivo que es comparar el caracter que trae fgetc del
archivo con el macro EOF declarado dentro de stdio.h, pero este mtodo no ofrece la misma
seguridad (en especial al tratar con los archivos "binarios"). La funcin feof siempre devolver
cero (Falso) si no es encontrado EOF en el archivo, de lo contrario regresar un valor distinto
de cero (Verdadero).
El prototipo correspondiente de feof es:

int feof(FILE *fichero);

rewind
Literalmente significa "rebobinar", sita el cursor de lectura/escritura al principio del archivo.
El prototipo correspondiente de rewind es:

void rewind(FILE *fichero);

Lectura
Un archivo generalmente debe verse como un string (una cadena de caracteres) que esta
guardado en el disco duro. Para trabajar con los archivos existen diferentes formas y
diferentes funciones. Las funciones que podramos usar para leer un archivo son:

char fgetc(FILE *archivo)


char *fgets(char *buffer, int tamano, FILE *archivo)
size_t fread(void *puntero, size_t tamano, size_t cantidad, FILE *archivo);
int fscanf(FILE *fichero, const char *formato, argumento, ...);
Las primeras dos de estas funciones son muy parecidas entre si. Pero la tercera, por el
numero y el tipo de parmetros, nos podemos dar cuenta de que es muy diferente, por eso la
trataremos aparte junto al fwrite que es su contraparte para escritura.

fgetc
Esta funcin lee un caracter a la vez del archivo que esta siendo sealado con el
puntero *archivo. En caso de que la lectura sea exitosa devuelve el caracter ledo y en caso
de que no lo sea o de encontrar el final del archivo devuelve EOF.
El prototipo correspondiente de fgetc es:

char fgetc(FILE *archivo);

Esta funcin se usa generalmente para recorrer archivos de texto. A manera de ejemplo
vamos a suponer que tenemos un archivo de texto llamado "prueba.txt" en el mismo directorio
en que se encuentra el fuente de nuestro programa. Un pequeo programa que lea ese
archivo ser:

#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *archivo;
char caracter;

archivo = fopen("prueba.txt","r");

if (archivo == NULL)
{
printf("\nError de apertura del archivo. \n\n");
}
else
{
printf("\nEl contenido del archivo de prueba es \n\n");
while (feof(archivo) == 0)
{
caracter = fgetc(archivo);
printf("%c",caracter);
}
}
fclose(archivo);
return 0;
}

fgets
Esta funcin est diseada para leer cadenas de caracteres. Leer hasta n-1 caracteres o
hasta que lea un cambio de lnea '\n' o un final de archivo EOF. En este ltimo caso, el
carcter de cambio de lnea '\n' tambin es ledo.
El prototipo correspondiente de fgets es:

char *fgets(char *buffer, int tamao, FILE *archivo);

El primer parmetro buffer lo hemos llamado as porque es un puntero a un espacio de


memoria del tipo char (podramos usar un arreglo de char). El segundo parmetro es tamao
que es el limite en cantidad de caracteres a leer para la funcion fgets. Y por ultimo el puntero
del archivo por supuesto que es la forma en que fgets sabra a que archivo debe leer.

#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *archivo;

char caracteres[100];

archivo = fopen("prueba.txt","r");

if (archivo == NULL)
exit(1);

printf("\nEl contenido del archivo de prueba es \n\n");


while (feof(archivo) == 0)
{
fgets(caracteres,100,archivo);
printf("%s",caracteres);
}
system("PAUSE");

fclose(archivo);
return 0;
}

Este es el mismo ejemplo de antes con la diferencia de que este hace uso de fgets en lugar
de fgetc. La funcin fgets se comporta de la siguiente manera, leer del archivo apuntado por
archivo los caracteres que encuentre y a ponerlos en buffer hasta que lea un caracter menos
que la cantidad de caracteres especificada en tamao o hasta que encuentre el final de una
linea (\n) o hasta que encuentre el final del archivo (EOF). En este ejemplo no vamos a
profundizar mas que para decir que caracteres es un buffer, los pormenores seran explicados
en la seccin de manejo dinmico de memoria.
El beneficio de esta funcin es que se puede obtener una linea completa a la vez. Y resulta
muy til para algunos fines como la construccin de un parser de algn tipo de archivo de
texto.

fread
size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );
Esta funcin lee un bloque de una "stream" de datos. Efecta la lectura de un arreglo de
elementos "count", cada uno de los cuales tiene un tamao definido por "size". Luego los
guarda en el bloque de memoria especificado por "ptr". El indicador de posicin de la cadena
de caracteres avanza hasta leer la totalidad de bytes. Si esto es exitoso la cantidad de bytes
ledos es (size*count).

PARAMETROS:
ptr : Puntero a un bloque de memoria con un tamao mnimo de (size*count) bytes.
size : Tamao en bytes de cada elemento (de los que voy a leer).
count : Nmero de elementos, los cuales tienen un tamao "size".
stream: Puntero a objetos FILE, que especifica la cadena de entrada.

fscanf
La funcin fscanf funciona igual que scanf en cuanto a parmetros, pero la entrada se toma de
un fichero en lugar del teclado.
El prototipo correspondiente de fscanf es:

int fscanf(FILE *fichero, const char *formato, argumento, ...);

Podemos ver un ejemplo de su uso, abrimos el documento "fichero.txt" en modo lectura y


leyendo dentro de el.

#include <stdio.h>

int main ( int argc, char **argv )


{
FILE *fp;

char buffer[100];

fp = fopen ( "fichero.txt", "r" );

fscanf(fp, "%s" ,buffer);


printf("%s",buffer);

fclose ( fp );

return 0;
}

Escritura
As como podemos leer datos desde un fichero, tambin se pueden crear y escribir ficheros
con la informacin que deseamos almacenar, Para trabajar con los archivos existen diferentes
formas y diferentes funciones. Las funciones que podramos usar para escribir dentro de un
archivo son:

int fputc(int caracter, FILE *archivo)


int fputs(const char *buffer, FILE *archivo)
size_t fwrite(void *puntero, size_t tamano, size_t cantidad, FILE *archivo);
int fprintf(FILE *archivo, const char *formato, argumento, ...);
fputc
Esta funcin escribe un carcter a la vez del archivo que esta siendo sealado con el
puntero *archivo. El valor de retorno es el carcter escrito, si la operacin fue completada con
xito, en caso contrario ser EOF.
El prototipo correspondiente de fputc es:

int fputc(int carcter, FILE *archivo);

Mostramos un ejemplo del uso de fputc en un "fichero.txt", se escribira dentro del fichero
hasta que presionemos la tecla enter.

#include <stdio.h>

int main ( int argc, char **argv )


{
FILE *fp;

char caracter;

fp = fopen ( "fichero.txt", "a+t" ); //parametro para escritura al final y para file tipo texto

printf("\nIntroduce un texto al fichero: ");

while((caracter = getchar()) != '\n')


{
printf("%c", fputc(caracter, fp));
}

fclose ( fp );

return 0;
}

fputs
La funcin fputs escribe una cadena en un fichero. la ejecucin de la misma no aade el
carcter de retorno de lnea ni el carcter nulo final. El valor de retorno es un nmero no
negativo o EOF en caso de error. Los parmetros de entrada son la cadena a escribir y un
puntero a la estructura FILE del fichero donde se realizar la escritura.
El prototipo correspondiente de fputs es:
int fputs(const char *buffer, FILE *archivo)

para ver su funcionamiento mostramos el siguiente ejemplo:

#include <stdio.h>

int main ( int argc, char **argv )


{
FILE *fp;

char cadena[] = "Mostrando el uso de fputs en un fichero.\n";

fp = fopen ( "fichero.txt", "r+" );

fputs( cadena, fp );

fclose ( fp );

return 0;
}

fwrite
Esta funcin 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 direccin de memoria determinada. El valor de retorno es el
nmero de registros escritos, no el nmero de bytes. Los parmetros son: un puntero a la
zona de memoria de donde se obtendrn los datos a escribir, el tamao de cada registro, el
nmero de registros a escribir y un puntero a la estructura FILE del fichero al que se har la
escritura.
El prototipo correspondiente de fwrite es:

size_t fwrite(void *puntero, size_t tamano, size_t cantidad, FILE *archivo);

Un ejemplo concreto del uso de fwrite con su contraparte fread y usando funciones es:

#include <stdio.h>

int main ( int argc, char **argv )


{
FILE *fp;
char cadena[] = "Mostrando el uso de fwrite en un fichero.\n";

fp = fopen ( "fichero.txt", "r+" );

fwrite( cadena, sizeof(char), sizeof(cadena), fp ); //char cadena[]... cada posicin es de


tamao 'char'

fclose ( fp );

return 0;
}

fprintf
La funcin fprintf funciona igual que printf en cuanto a parmetros, pero la salida se dirige a
un archivo en lugar de a la pantalla.
El prototipo correspondiente de fprintf es:

int fprintf(FILE *archivo, const char *formato, argumento, ...);

Podemos ver un ejemplo de su uso, abrimos el documento "fichero.txt" en modo


lectura/escritura y escribimos dentro de el.

#include <stdio.h>

int main ( int argc, char **argv )


{
FILE *fp;

char buffer[100] = "Esto es un texto dentro del fichero.";

fp = fopen ( "fichero.txt", "r+" );

fprintf(fp, buffer);
fprintf(fp, "%s", "\nEsto es otro texto dentro del fichero.");
fclose ( fp );
return 0;
}
Nombres Descripcin

memcpy copia n bytes entre dos reas de memoria que no deben solaparse

copia n bytes entre dos reas de memoria; al contrario que memcpy las
memmove
reas pueden solaparse

busca un valor a partir de una direccin de memoria dada y devuelve un


memchr
puntero a la primera ocurrencia del valor buscado o NULL si no se encuentra

memcmp compara los n primeros caracteres de dos reas de memoria

memset sobre escribe un rea de memoria con un patrn de bytes dado

strcat aade una cadena al final de otra

strncat aade los n primeros caracteres de una cadena al final de otra

strchr localiza un carcter en una cadena, buscando desde el principio

strrchr localiza un carcter en una cadena, buscando desde el final

strcmp compara dos cadenas alfabticamente ('a'!='A')

strncmp compara los n primeros caracteres de dos cadenas numricamente ('a'!='A')

strcoll compara dos cadenas segn la colacin actual ('a'=='A')

strcpy copia una cadena en otra

strncpy copia los n primeros caracteres de una cadena en otra

devuelve la cadena con el mensaje de error correspondiente al nmero de


strerror
error dado

strlen devuelve la longitud de una cadena

devuelve la posicin del primer carcter de una cadena que no coincide con
strspn
ninguno de los caracteres de otra cadena dada

devuelve la posicin del primer carcter que coincide con alguno de los
strcspn
caracteres de otra cadena dada
encuentra la primera ocurrencia de alguno de los caracteres de una cadena
strpbrk
dada en otra

strstr busca una cadena dentro de otra

strtok parte una cadena en una secuencia de tokens

strxfrm transforma una cadena en su forma de colacin (??)

strrev invierte una cadena

Manejo de nmeros aleatorios Randomize


Es algo muy frecuente, cuando ya dominas todo eso de pedir y almacenar datos, ahora tu
profesor te pedir que tus programas generen nmeros aleatorios para automatizar el
proceso de llenar arreglos y todo eso.

As que lo primero que tenemos que hacer es incluir la librera: #include<stdlib.h>


Necesitamos esta librera para usar la funcin time() #include<time.h>
Luego inicializar los nmeros aleatorios incluyendo esto: srand(time(NULL));
Luego guardar el nmero aleatorio en alguna parte: num = rand();
Para ajustar el rango de nmero aleatorios podemos hacer varias cosas.
- Nmero aleatorios entre 0 y 50:
num=rand()%51;
- Nmero aleatorios entre 1 y 100:
num=1+rand()%(101-1);
- Nmero aleatorios entre 250 y 420:
num=250+rand()%(421-250);

De forma general es:


variable = limite_inferior + rand() % (limite_superior +1 - limite_inferior) ;

#include <stdlib.h>

#include <time.h>

#include<iostream>

using namespace std;

int main()

int num, c;
srand(time(NULL));

for(c = 1; c <= 10; c++)

num = 1 + rand() % (11 - 1);

cout << num<< " ";

return 0;

Fuentes
http://sopa.dis.ulpgc.es/fso/cpp/intro_c/introc53.htm

http://www.cplusplus.com/forum/beginner/98214/

https://www.slideshare.net/Kevin2811/librerias-enlenguajec

http://www.nebrija.es/~abustind/Informatica/MetodologiaI/Funciones_cadena.pdf

Potrebbero piacerti anche