SlideShare una empresa de Scribd logo
Arreglos unidimensionales y multidimensionales

Los arreglos son una colección de variables del mismo tipo que se referencian
utilizando un nombre común. Un arreglo consta de posiciones de memoria
contigua. La dirección más baja corresponde al primer elemento y la más alta al
último. Un arreglo puede tener una o varias dimensiones. Para acceder a un
elemento en particular de un arreglo se usa un índice. El formato para declarar
un arreglo unidimensional es:

tipo nombre_arr [ tamaño ]

Por ejemplo, para declarar un arreglo de enteros llamado a con diez elementos
se hace de la siguiente forma:

int a[10];

En C, todos los arreglos usan cero como índice para el primer elemento. Por
tanto, el ejemplo anterior declara un arreglo de enteros con diez elementos
desde a[0] hasta a[9].

La forma como pueden ser accesados los elementos de un arreglo, es de la
siguiente forma:

a[2] = 15; /* Asigna 15 al 3er elemento del arreglo a*/

num = a[2]; /* Asigna el contenido del 3er elemento a la variable num */

El lenguaje C no realiza comprobación de contornos en los arreglos. En el caso de
que sobrepase el final durante una operación de asignación, entonces se
asignarán valores a otra variable o a un trozo del código, esto es, si se
dimensiona un arreglo de tamaño N, se puede referenciar el arreglo por encima
de N sin provocar ningún mensaje de error en tiempo de compilación o
ejecución, incluso aunque probablemente se provoque un error en el programa.

Como programador se es responsable de asegurar que todos los arreglos sean lo
suficientemente grandes para guardar lo que pondrá en ellos el programa.

C permite arreglos con más de una dimensión, el formato general es:

tipo nombre_arr [ tam1 ][ tam2 ] ... [ tamN];

Por ejemplo un arreglo de enteros bidimensionales se escribirá como:

int b[50][50];

Observar que para declarar cada dimensión lleva sus propios paréntesis
cuadrados.
Para acceder los elementos se procede de forma similar al ejemplo del arreglo
unidimensional, esto es,

b[2][3] = 15; /* Asigna 15 al elemento de la 3ª fila y la 4ª columna*/

num = b[25][16];

A continuación se muestra un ejemplo que asigna al primer elemento de un
arreglo bidimensional cero, al siguiente 1, y así sucesivamente.

main() {
    int t,i,num[3][4];

     for(t=0; t<3; ++t)
         for(i=0; i<4; ++i)
             num[t][i]=(t*4)+i*1;

     for(t=0; t<3; ++t){
         for(i=0; i<4; ++i)
             printf("num[%d][%d]=%d          ", t,i,num[t][i]);
         printf("n");
     }

}

En C se permite la inicialización de arreglos, debiendo seguir el siguiente
formato:

tipo nombre_arr[ tam1 ][ tam2 ] ... [ tamN] = {lista-valores};

Por ejemplo:

int c[10] = {1,2,3,4,5,6,7,8,9,10};

int num[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};
Tipo FILE:

     C define la estructura de datos FILE en el archivo de cabecera "stdio.h"
     para el manejo de archivos. Nosotros siempre usaremos punteros a estas
     estructuras.

     La definición de ésta estructura depende del compilador, pero en general
     mantiene n un campo con la posición actual de lectura/escritura, un buffer
     para mejorar las prestaciones de acceso al archivo y algunos campos para
     uso interno.

Función fopen:

     Sintaxis:


     FILE *fopen(char *nombre, char *modo);

     ésta función sirve para abrir y crear archivos 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 archivo válido, esto
     depende del sistema operativo que estemos usando. El nombre puede
     incluir el camino completo.

     modo: especifica en tipo de archivo que se abrirá o se creará y el tipo de
     datos que puede contener, de texto o binarios:

     r: sólo lectura. El archivo debe existir.

     w: se abre para escritura, se crea un archivo nuevo o se sobrescribe si ya
     existe.

     a: añadir, se abre para escritura, el cursor se sitúa al final del archivo. Si el
     archivo no existe, se crea.

     r+: lectura y escritura. El archivo debe existir.

     w+: lectura y escritura, se crea un archivo nuevo o se sobrescribe si ya
     existe.

     a+: añadir, lectura y escritura, el cursor se sitúa al final del archivo. Si el
     archivo 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 *archivo);

     Es importante cerrar los archivos abiertos antes de abandonar la aplicación.
     Esta función sirve para eso. Cerrar un archivo almacena los datos que aún
     están en el buffer de memoria, y actualiza algunos datos de la cabecera del
     archivo que mantiene el sistema operativo. Además permite que otros
     programas puedan abrir el archivo para su uso. Muy a menudo, los archivos
     no pueden ser compartidos por varios programas.

     Un valor de retorno cero indica que el archivo 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 archivo que queremos
     cerrar.

Función fgetc:

     Sintaxis:


     int fgetc(FILE *archivo);

     Esta función lee un carácter desde un archivo.

     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 archivo del que se hará
     la lectura.

Función fputc:

     Sintaxis:


     int fputc(int caracter, FILE *archivo);

     Esta función escribe un carácter a un archivo .
El valor de retorno es el carácter escrito, si la operación fue completada con
     éxito, en caso contrario será EOF. Los parámetros de entrada son el
     carácter a escribir, convertido a int y un puntero a una estructura FILE del
     archivo en el que se hará la escritura.

Función feof:

     Sintaxis:


     int feof(FILE *archivo);

     Esta función sirve para comprobar si se ha alcanzado el final del archivo.
     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 archivo . 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
     archivo. El parámetro es un puntero a la estructura FILE del archivo que
     queremos verificar.

Función rewind:

     Sintaxis:


     void rewind(FILE *archivo)

     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 archivo que queremos
     rebobinar.

     Ejemplos:

     // ejemplo1.c: Muestra un archivo dos veces.
     #include <stdio.h>

     int main()
{
         FILE *archivo;

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


Función fgets:

     Sintaxis:


     char *fgets(char *cadena, int n, FILE *archivo);

     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 archivo o si hay un error. Los parámetros
     son: la cadena a leer, el número de caracte res máximo a leer y un puntero
     a una estructura FILE del archivo del que se leerá.

Función fputs:

     Sintaxis:


     int fputs(const char *cadena, FILE *stream);

     La función fputs escribe una cadena en un archivo. 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 archi vo donde se realizará la escritura.
Función fread:

     Sintaxis:

     size_t fread(void *puntero, size_t tamaño, size_t nregistros, FILE
     *archivo);


     Esta función está pensada para trabajar con registros de longitud constante.
     Es capaz de leer desde un archivo 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 archivo del que se hará
     la lectura.

Función fwrite:

     Sintaxis:

     size_t fwrite(void *puntero, size_t tamaño, size_t nregistros, FILE
     *archivo);


     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 archivo
     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 archivo del que se hará
     la lectura.

     Ejemplo:

     // copia.c: Copia de archivos
     // Uso: copia <archivo_origen> <archivo_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 <archivo_origen> <archivo_destino>n");
             return 1;
          }

          // Abrir el archivo de entrada en lectura y binario
          fe = fopen(argv[1], "rb");
          if(!fe) {
             printf("El archivo %s no existe o no puede ser abierto.n",
      argv[1]);
             return 1;
          }
          // Crear o sobreescribir el archivo de salida en binario
          fs = fopen(argv[2], "wb");
          if(!fs) {
             printf("El archivo %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 archivos:
          fclose(fe);
          fclose(fs);
          return 0;
      }


Función fprintf:

      Sintaxis:


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


      La función fprintf funciona igual que printf en cuanto a parámetros, pero la
      salida se dirige a un archivo en lugar de a la pantalla.

Función fscanf:

      Sintaxis:


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

Función fflush:

     Sintaxis:


     int fflush(FILE *archivo);

     Esta función fuerza la salida de los datos acumulados en el buffer de salida
     del archivo. Para mejorar las prestaciones del manejo de archivos 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
     archivo del que se quiere vaciar el buffer. Si es NULL se hará el vaciado de
     todos los archivos abiertos.

Más contenido relacionado

La actualidad más candente

Librerias ansi c
Librerias ansi cLibrerias ansi c
Librerias ansi c
Nestor Lagunez Caramon
 
POO - 16 - Polimorfismo
POO - 16 - PolimorfismoPOO - 16 - Polimorfismo
POO - 16 - Polimorfismo
Ludimila Monjardim Casagrande
 
Manejo de archivos en JAVA
Manejo de archivos en JAVAManejo de archivos en JAVA
Manejo de archivos en JAVA
Michelle Torres
 
DiseñO De Compilador
DiseñO De CompiladorDiseñO De Compilador
DiseñO De Compilador
BigbossH
 
Pseint Variables Y Comentarios
Pseint Variables Y ComentariosPseint Variables Y Comentarios
Pseint Variables Y Comentarios
MonjeOneble
 
Diferencia entre Swing y Awt
Diferencia entre Swing y AwtDiferencia entre Swing y Awt
Diferencia entre Swing y Awt
ValentinaCely
 
Taller de introduccion a python con turtle
Taller de  introduccion a python  con  turtleTaller de  introduccion a python  con  turtle
Taller de introduccion a python con turtle
Albert Page
 
UNIDAD 3 MODULARIZACIÓN
UNIDAD 3 MODULARIZACIÓNUNIDAD 3 MODULARIZACIÓN
Java OO Tema 04 Alcance de Clase
Java OO Tema 04 Alcance de ClaseJava OO Tema 04 Alcance de Clase
Java OO Tema 04 Alcance de Clase
Eric Gustavo Coronel Castillo
 
Circuitos
CircuitosCircuitos
Circuitos
IES Iturralde
 
Informe Proyecto Final
Informe Proyecto FinalInforme Proyecto Final
Informe Proyecto Final
Jorge Ramon
 
VLSM y CIDR
VLSM y CIDRVLSM y CIDR
VLSM y CIDR
David Narváez
 
Sistema de archivos y directorios - Ubuntu - Compendio
Sistema de archivos y directorios - Ubuntu - CompendioSistema de archivos y directorios - Ubuntu - Compendio
Sistema de archivos y directorios - Ubuntu - Compendio
Jose Diaz Silva
 
Capas del Modelo OSI.
Capas del Modelo OSI.Capas del Modelo OSI.
Capas del Modelo OSI.
Jose Torres
 
5 metodos y parametros
5 metodos y parametros5 metodos y parametros
5 metodos y parametros
Claribel Eusebio Nolasco
 
Java: Manipulação de Arquivos
Java:  Manipulação  de ArquivosJava:  Manipulação  de Arquivos
Java: Manipulação de Arquivos
Arthur Emanuel
 
Routers CIsco: configu
Routers CIsco: configuRouters CIsco: configu
Routers CIsco: configu
Jesús Moreno León
 
Integracion multiple
Integracion multipleIntegracion multiple
Integracion multiple
ERICK CONDE
 
Lenguaje Ensamblador
Lenguaje EnsambladorLenguaje Ensamblador
Lenguaje Ensamblador
iagardea
 

La actualidad más candente (19)

Librerias ansi c
Librerias ansi cLibrerias ansi c
Librerias ansi c
 
POO - 16 - Polimorfismo
POO - 16 - PolimorfismoPOO - 16 - Polimorfismo
POO - 16 - Polimorfismo
 
Manejo de archivos en JAVA
Manejo de archivos en JAVAManejo de archivos en JAVA
Manejo de archivos en JAVA
 
DiseñO De Compilador
DiseñO De CompiladorDiseñO De Compilador
DiseñO De Compilador
 
Pseint Variables Y Comentarios
Pseint Variables Y ComentariosPseint Variables Y Comentarios
Pseint Variables Y Comentarios
 
Diferencia entre Swing y Awt
Diferencia entre Swing y AwtDiferencia entre Swing y Awt
Diferencia entre Swing y Awt
 
Taller de introduccion a python con turtle
Taller de  introduccion a python  con  turtleTaller de  introduccion a python  con  turtle
Taller de introduccion a python con turtle
 
UNIDAD 3 MODULARIZACIÓN
UNIDAD 3 MODULARIZACIÓNUNIDAD 3 MODULARIZACIÓN
UNIDAD 3 MODULARIZACIÓN
 
Java OO Tema 04 Alcance de Clase
Java OO Tema 04 Alcance de ClaseJava OO Tema 04 Alcance de Clase
Java OO Tema 04 Alcance de Clase
 
Circuitos
CircuitosCircuitos
Circuitos
 
Informe Proyecto Final
Informe Proyecto FinalInforme Proyecto Final
Informe Proyecto Final
 
VLSM y CIDR
VLSM y CIDRVLSM y CIDR
VLSM y CIDR
 
Sistema de archivos y directorios - Ubuntu - Compendio
Sistema de archivos y directorios - Ubuntu - CompendioSistema de archivos y directorios - Ubuntu - Compendio
Sistema de archivos y directorios - Ubuntu - Compendio
 
Capas del Modelo OSI.
Capas del Modelo OSI.Capas del Modelo OSI.
Capas del Modelo OSI.
 
5 metodos y parametros
5 metodos y parametros5 metodos y parametros
5 metodos y parametros
 
Java: Manipulação de Arquivos
Java:  Manipulação  de ArquivosJava:  Manipulação  de Arquivos
Java: Manipulação de Arquivos
 
Routers CIsco: configu
Routers CIsco: configuRouters CIsco: configu
Routers CIsco: configu
 
Integracion multiple
Integracion multipleIntegracion multiple
Integracion multiple
 
Lenguaje Ensamblador
Lenguaje EnsambladorLenguaje Ensamblador
Lenguaje Ensamblador
 

Similar a Arreglos Turbo C

Objetivo 01 Archivos de Texto
Objetivo 01 Archivos de TextoObjetivo 01 Archivos de Texto
Objetivo 01 Archivos de Texto
nakaryortegaleon
 
Archivos de datos en C
Archivos de datos en CArchivos de datos en C
Archivos de datos en C
José Ricardo Tillero Giménez
 
Tarea pagweb
Tarea pagwebTarea pagweb
Tarea pagweb
Parra Patricia
 
Archivos en c clase unsam
Archivos en c clase unsamArchivos en c clase unsam
Archivos en c clase unsam
devxon9
 
Fichc
FichcFichc
Manejo de archivos en c++
Manejo de archivos en c++Manejo de archivos en c++
Manejo de archivos en c++
Whaleejaa Wha
 
Manejo de archivosss
Manejo de archivosssManejo de archivosss
Manejo de archivosss
taniarodri
 
Manejo dearchivosc
Manejo dearchivoscManejo dearchivosc
Manejo dearchivosc
AaronVega18
 
Archivos c
Archivos cArchivos c
Archivos c
norkis perez
 
Archivos c
Archivos cArchivos c
Archivos c
norkis perez
 
PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++
die_dex
 
Gestion de archivos
Gestion de archivosGestion de archivos
Gestion de archivos
Cesar Oswaldo Osorio Agualongo
 
Fichero c y c++
Fichero c y c++Fichero c y c++
Fichero c y c++
mauro0210
 
ARCHIVOS DEL LENGUAJE C
ARCHIVOS DEL LENGUAJE CARCHIVOS DEL LENGUAJE C
ARCHIVOS DEL LENGUAJE C
leonard1994
 
Archivos C++
Archivos C++Archivos C++
Archivos C++
Gero Calderon
 
Utp pti_s11_archivos
 Utp pti_s11_archivos Utp pti_s11_archivos
Utp pti_s11_archivos
c09271
 
Tema 10 www.fresymetal.com
Tema 10 www.fresymetal.comTema 10 www.fresymetal.com
Tema 10 www.fresymetal.com
FresyMetal
 
ARCHIVOS LENGUAJE C
ARCHIVOS LENGUAJE CARCHIVOS LENGUAJE C
ARCHIVOS LENGUAJE C
Gustavo Salazar Loor
 
Archivos en C
Archivos en CArchivos en C
Archivos en C
Ronny Parra
 
16 Archivos
16 Archivos16 Archivos
16 Archivos
lichic
 

Similar a Arreglos Turbo C (20)

Objetivo 01 Archivos de Texto
Objetivo 01 Archivos de TextoObjetivo 01 Archivos de Texto
Objetivo 01 Archivos de Texto
 
Archivos de datos en C
Archivos de datos en CArchivos de datos en C
Archivos de datos en C
 
Tarea pagweb
Tarea pagwebTarea pagweb
Tarea pagweb
 
Archivos en c clase unsam
Archivos en c clase unsamArchivos en c clase unsam
Archivos en c clase unsam
 
Fichc
FichcFichc
Fichc
 
Manejo de archivos en c++
Manejo de archivos en c++Manejo de archivos en c++
Manejo de archivos en c++
 
Manejo de archivosss
Manejo de archivosssManejo de archivosss
Manejo de archivosss
 
Manejo dearchivosc
Manejo dearchivoscManejo dearchivosc
Manejo dearchivosc
 
Archivos c
Archivos cArchivos c
Archivos c
 
Archivos c
Archivos cArchivos c
Archivos c
 
PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++
 
Gestion de archivos
Gestion de archivosGestion de archivos
Gestion de archivos
 
Fichero c y c++
Fichero c y c++Fichero c y c++
Fichero c y c++
 
ARCHIVOS DEL LENGUAJE C
ARCHIVOS DEL LENGUAJE CARCHIVOS DEL LENGUAJE C
ARCHIVOS DEL LENGUAJE C
 
Archivos C++
Archivos C++Archivos C++
Archivos C++
 
Utp pti_s11_archivos
 Utp pti_s11_archivos Utp pti_s11_archivos
Utp pti_s11_archivos
 
Tema 10 www.fresymetal.com
Tema 10 www.fresymetal.comTema 10 www.fresymetal.com
Tema 10 www.fresymetal.com
 
ARCHIVOS LENGUAJE C
ARCHIVOS LENGUAJE CARCHIVOS LENGUAJE C
ARCHIVOS LENGUAJE C
 
Archivos en C
Archivos en CArchivos en C
Archivos en C
 
16 Archivos
16 Archivos16 Archivos
16 Archivos
 

Más de tacubomx

Cuadro sinoptico lenguaje de programacion
Cuadro sinoptico lenguaje de programacionCuadro sinoptico lenguaje de programacion
Cuadro sinoptico lenguaje de programacion
tacubomx
 
Cuestionario
CuestionarioCuestionario
Cuestionario
tacubomx
 
Como se instala java y turbo c 3.0
Como se instala java y turbo c 3.0Como se instala java y turbo c 3.0
Como se instala java y turbo c 3.0
tacubomx
 
Expocicion de Arreglos
Expocicion de ArreglosExpocicion de Arreglos
Expocicion de Arreglos
tacubomx
 
Examen de Turbo C
Examen de Turbo CExamen de Turbo C
Examen de Turbo C
tacubomx
 
Exposicion Arreglos
Exposicion ArreglosExposicion Arreglos
Exposicion Arreglos
tacubomx
 
Algoritmica
AlgoritmicaAlgoritmica
Algoritmica
tacubomx
 
Ciclos C++
Ciclos C++Ciclos C++
Ciclos C++
tacubomx
 
Clase de turbo C
Clase de turbo CClase de turbo C
Clase de turbo C
tacubomx
 
Turbo c
Turbo cTurbo c
Turbo c
tacubomx
 
La estructura if
La estructura ifLa estructura if
La estructura if
tacubomx
 
La estructura if en turbo C
La estructura if en turbo CLa estructura if en turbo C
La estructura if en turbo C
tacubomx
 
Arreglos En C ++
Arreglos En C ++Arreglos En C ++
Arreglos En C ++
tacubomx
 
Arreglos en c ++
Arreglos en c ++Arreglos en c ++
Arreglos en c ++
tacubomx
 
Curso de Lenguaje C
Curso de Lenguaje CCurso de Lenguaje C
Curso de Lenguaje C
tacubomx
 
Lenguajec diapositivas
Lenguajec diapositivasLenguajec diapositivas
Lenguajec diapositivas
tacubomx
 
Historia de la programacion
Historia de la programacionHistoria de la programacion
Historia de la programacion
tacubomx
 

Más de tacubomx (17)

Cuadro sinoptico lenguaje de programacion
Cuadro sinoptico lenguaje de programacionCuadro sinoptico lenguaje de programacion
Cuadro sinoptico lenguaje de programacion
 
Cuestionario
CuestionarioCuestionario
Cuestionario
 
Como se instala java y turbo c 3.0
Como se instala java y turbo c 3.0Como se instala java y turbo c 3.0
Como se instala java y turbo c 3.0
 
Expocicion de Arreglos
Expocicion de ArreglosExpocicion de Arreglos
Expocicion de Arreglos
 
Examen de Turbo C
Examen de Turbo CExamen de Turbo C
Examen de Turbo C
 
Exposicion Arreglos
Exposicion ArreglosExposicion Arreglos
Exposicion Arreglos
 
Algoritmica
AlgoritmicaAlgoritmica
Algoritmica
 
Ciclos C++
Ciclos C++Ciclos C++
Ciclos C++
 
Clase de turbo C
Clase de turbo CClase de turbo C
Clase de turbo C
 
Turbo c
Turbo cTurbo c
Turbo c
 
La estructura if
La estructura ifLa estructura if
La estructura if
 
La estructura if en turbo C
La estructura if en turbo CLa estructura if en turbo C
La estructura if en turbo C
 
Arreglos En C ++
Arreglos En C ++Arreglos En C ++
Arreglos En C ++
 
Arreglos en c ++
Arreglos en c ++Arreglos en c ++
Arreglos en c ++
 
Curso de Lenguaje C
Curso de Lenguaje CCurso de Lenguaje C
Curso de Lenguaje C
 
Lenguajec diapositivas
Lenguajec diapositivasLenguajec diapositivas
Lenguajec diapositivas
 
Historia de la programacion
Historia de la programacionHistoria de la programacion
Historia de la programacion
 

Arreglos Turbo C

  • 1. Arreglos unidimensionales y multidimensionales Los arreglos son una colección de variables del mismo tipo que se referencian utilizando un nombre común. Un arreglo consta de posiciones de memoria contigua. La dirección más baja corresponde al primer elemento y la más alta al último. Un arreglo puede tener una o varias dimensiones. Para acceder a un elemento en particular de un arreglo se usa un índice. El formato para declarar un arreglo unidimensional es: tipo nombre_arr [ tamaño ] Por ejemplo, para declarar un arreglo de enteros llamado a con diez elementos se hace de la siguiente forma: int a[10]; En C, todos los arreglos usan cero como índice para el primer elemento. Por tanto, el ejemplo anterior declara un arreglo de enteros con diez elementos desde a[0] hasta a[9]. La forma como pueden ser accesados los elementos de un arreglo, es de la siguiente forma: a[2] = 15; /* Asigna 15 al 3er elemento del arreglo a*/ num = a[2]; /* Asigna el contenido del 3er elemento a la variable num */ El lenguaje C no realiza comprobación de contornos en los arreglos. En el caso de que sobrepase el final durante una operación de asignación, entonces se asignarán valores a otra variable o a un trozo del código, esto es, si se dimensiona un arreglo de tamaño N, se puede referenciar el arreglo por encima de N sin provocar ningún mensaje de error en tiempo de compilación o ejecución, incluso aunque probablemente se provoque un error en el programa. Como programador se es responsable de asegurar que todos los arreglos sean lo suficientemente grandes para guardar lo que pondrá en ellos el programa. C permite arreglos con más de una dimensión, el formato general es: tipo nombre_arr [ tam1 ][ tam2 ] ... [ tamN]; Por ejemplo un arreglo de enteros bidimensionales se escribirá como: int b[50][50]; Observar que para declarar cada dimensión lleva sus propios paréntesis cuadrados.
  • 2. Para acceder los elementos se procede de forma similar al ejemplo del arreglo unidimensional, esto es, b[2][3] = 15; /* Asigna 15 al elemento de la 3ª fila y la 4ª columna*/ num = b[25][16]; A continuación se muestra un ejemplo que asigna al primer elemento de un arreglo bidimensional cero, al siguiente 1, y así sucesivamente. main() { int t,i,num[3][4]; for(t=0; t<3; ++t) for(i=0; i<4; ++i) num[t][i]=(t*4)+i*1; for(t=0; t<3; ++t){ for(i=0; i<4; ++i) printf("num[%d][%d]=%d ", t,i,num[t][i]); printf("n"); } } En C se permite la inicialización de arreglos, debiendo seguir el siguiente formato: tipo nombre_arr[ tam1 ][ tam2 ] ... [ tamN] = {lista-valores}; Por ejemplo: int c[10] = {1,2,3,4,5,6,7,8,9,10}; int num[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};
  • 3. Tipo FILE: C define la estructura de datos FILE en el archivo de cabecera "stdio.h" para el manejo de archivos. Nosotros siempre usaremos punteros a estas estructuras. La definición de ésta estructura depende del compilador, pero en general mantiene n un campo con la posición actual de lectura/escritura, un buffer para mejorar las prestaciones de acceso al archivo y algunos campos para uso interno. Función fopen: Sintaxis: FILE *fopen(char *nombre, char *modo); ésta función sirve para abrir y crear archivos 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 archivo válido, esto depende del sistema operativo que estemos usando. El nombre puede incluir el camino completo. modo: especifica en tipo de archivo que se abrirá o se creará y el tipo de datos que puede contener, de texto o binarios: r: sólo lectura. El archivo debe existir. w: se abre para escritura, se crea un archivo nuevo o se sobrescribe si ya existe. a: añadir, se abre para escritura, el cursor se sitúa al final del archivo. Si el archivo no existe, se crea. r+: lectura y escritura. El archivo debe existir. w+: lectura y escritura, se crea un archivo nuevo o se sobrescribe si ya existe. a+: añadir, lectura y escritura, el cursor se sitúa al final del archivo. Si el archivo no existe, se crea. t: tipo texto, si no se especifica "t" ni "b", se asume por defecto que es "t"
  • 4. b: tipo binario. Función fclose: Sintaxis: int fclose(FILE *archivo); Es importante cerrar los archivos abiertos antes de abandonar la aplicación. Esta función sirve para eso. Cerrar un archivo almacena los datos que aún están en el buffer de memoria, y actualiza algunos datos de la cabecera del archivo que mantiene el sistema operativo. Además permite que otros programas puedan abrir el archivo para su uso. Muy a menudo, los archivos no pueden ser compartidos por varios programas. Un valor de retorno cero indica que el archivo 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 archivo que queremos cerrar. Función fgetc: Sintaxis: int fgetc(FILE *archivo); Esta función lee un carácter desde un archivo. 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 archivo del que se hará la lectura. Función fputc: Sintaxis: int fputc(int caracter, FILE *archivo); Esta función escribe un carácter a un archivo .
  • 5. El valor de retorno es el carácter escrito, si la operación fue completada con éxito, en caso contrario será EOF. Los parámetros de entrada son el carácter a escribir, convertido a int y un puntero a una estructura FILE del archivo en el que se hará la escritura. Función feof: Sintaxis: int feof(FILE *archivo); Esta función sirve para comprobar si se ha alcanzado el final del archivo. 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 archivo . 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 archivo. El parámetro es un puntero a la estructura FILE del archivo que queremos verificar. Función rewind: Sintaxis: void rewind(FILE *archivo) 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 archivo que queremos rebobinar. Ejemplos: // ejemplo1.c: Muestra un archivo dos veces. #include <stdio.h> int main()
  • 6. { FILE *archivo; archivo = fopen("ejemplo1.c", "r"); while(!feof(archivo)) fputc(fgetc(archivo), stdout); rewind(archivo); while(!feof(archivo)) fputc(fgetc(archivo), stdout); fclose(archivo); getchar(); return 0; } Función fgets: Sintaxis: char *fgets(char *cadena, int n, FILE *archivo); 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 archivo o si hay un error. Los parámetros son: la cadena a leer, el número de caracte res máximo a leer y un puntero a una estructura FILE del archivo del que se leerá. Función fputs: Sintaxis: int fputs(const char *cadena, FILE *stream); La función fputs escribe una cadena en un archivo. 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 archi vo donde se realizará la escritura.
  • 7. Función fread: Sintaxis: size_t fread(void *puntero, size_t tamaño, size_t nregistros, FILE *archivo); Esta función está pensada para trabajar con registros de longitud constante. Es capaz de leer desde un archivo 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 archivo del que se hará la lectura. Función fwrite: Sintaxis: size_t fwrite(void *puntero, size_t tamaño, size_t nregistros, FILE *archivo); 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 archivo 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 archivo del que se hará la lectura. Ejemplo: // copia.c: Copia de archivos // Uso: copia <archivo_origen> <archivo_destino> #include <stdio.h> int main(int argc, char **argv) {
  • 8. FILE *fe, *fs; unsigned char buffer[2048]; // Buffer de 2 Kbytes int bytesLeidos; if(argc != 3) { printf("Usar: copia <archivo_origen> <archivo_destino>n"); return 1; } // Abrir el archivo de entrada en lectura y binario fe = fopen(argv[1], "rb"); if(!fe) { printf("El archivo %s no existe o no puede ser abierto.n", argv[1]); return 1; } // Crear o sobreescribir el archivo de salida en binario fs = fopen(argv[2], "wb"); if(!fs) { printf("El archivo %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 archivos: fclose(fe); fclose(fs); return 0; } Función fprintf: Sintaxis: int fprintf(FILE *archivo, const char *formato, ...); La función fprintf funciona igual que printf en cuanto a parámetros, pero la salida se dirige a un archivo en lugar de a la pantalla. Función fscanf: Sintaxis: int fscanf(FILE *archivo, const char *formato, ...);
  • 9. La función fscanf funciona igual que scanf en cuanto a parámetros, pero la entrada se toma de un archivo en lugar del teclado. Función fflush: Sintaxis: int fflush(FILE *archivo); Esta función fuerza la salida de los datos acumulados en el buffer de salida del archivo. Para mejorar las prestaciones del manejo de archivos 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 archivo del que se quiere vaciar el buffer. Si es NULL se hará el vaciado de todos los archivos abiertos.