About this entry
You’re currently reading the article “Tutorial Intermedio sobre Lenguaje de Programación C (Intermediate Tutorial on C Programming, Spanish only).”
- Published:
- August 6th 03:36 AM
- Updated:
- August 17th 07:49 PM
- Sections:
- Tutorial de C y C++
Tutorial Intermedio sobre Lenguaje de Programación C (Intermediate Tutorial on C Programming, Spanish only)
El siguiente articulo es un tutorial que muestra de una manera simple y sintetizada aspectos intermedios del Lenguaje C: arreglos, funciones, manejo de hileras de caracteres y procesamiento de archivos.
Liked it? !
Antes de leer este artículo se recomienda haber leído Tutorial Introductorio sobre Lenguaje de Programación C.
Índice
Arreglos
Repaso de arreglos
Sintaxis: tipo nombre [tamaño];
Ejemplo: int vec[5]={5,7,3,9,2};
Repaso de Introducción a punteros
int vec[5], *elem; elem=vec; vec[3]*(vec+3)
Introducción a Manipulación de Hilera de Caracteres
char cadena[]="abcd"; // "abcd\0" char cadena[3]="abcd";
Arreglos Multidimensionales
Sintaxis: tipo nombre[expr-cte][expr-cte2]...;
Ejemplo:
vec[2][2]={ 2, 4, 3, 3 };
Funciones
Colección de declaraciones, definiciones, expresiones y sentencias que ejecutan una tarea especifica. Una función no puede contener a otra función.
En una declaración forward se dan sus características pero no se define su contenido.
La declaración implícita se da cuando la función es llamada y no existe una declaración previa.
La declaración explicita permite conocer las características de la función antes de ser utilizada.
Declaración
Declaración forward:
tipo-resultado nombre-función ([lista de tipos de argumentos]);
Definición de función:
tipo-resultado nombre-función ([param1, param2,...]) { declaraciones; sentencias; [return(expresion)]; }Por defecto el valor retornado es int. Los parámetros formales de una función son las variables que reciben los valores de los argumentos en la llamada a la función.
Manipulación de Parámetros
Todos los argumentos, excepto los arrays, son pasados por valor. Esto es, a la función se pasa una copia del argumento, no su dirección. Esto contenidos de las variables pasadas, entonces hay que pasar los argumentos por referencia. Esto es, a la función se pasa la dirección del argumento. Si quiero pasar un vector le mando la dirección del primer elemento del vector.
Recursión
Cuando una función se llama a ella misma. Necesitamos dos elementos básicos: la base y la formula recursiva.
Manejo de Hilera de Caracteres
Funciones de manejo de caracteres: ctype.h
Devuelve verdadero si:
- int isdigit(int c) digito (0,...,9)
- int isalpha(int c) letra (A,...,Z, a,...,z )
- int isalnum(int c) digito o letra
- int isxdigit(int c) digito hexadecimal (0,...,9, A,...,F)
- int islower(int c) letra minúscula (a,...,z)
- int isupper(int c) letra mayúscula (A,...,Z)
- int isspace(int c) espacio ( , \n, \t, \f, \r, \v )
- int iscntrl(int c) carácter de control
- int ispunct(int c) distinto a espacio, digito o letra
- int isprint(int c) imprimible incluyendo el espacio
- int isgraph(int c) imprimible sin incluir el espacio
Devuelve un carácter:
int tolower(int c) carácter c en minúsculas
int toupper(int c) carácter c en mayúsculas
Conversión de Datos: stdlib.h
Si la hilera contiene caracteres inválidos su comportamiento es impredecible
- double atof (const char *nPtr) convierte la cadena nPtr a double
- int atoi (const char *nPtr) convierte la cadena nPtr a int
- long atol (const char *nPtr) convierte la cadena nPtr a long
Reciben la hilera en nPtr y un puntero a uno hilera. Al puntero se le asigna la posición del primer carácter después de la porcion convertida de la cadena.
- double strtod (const char *nPtr, char **endPtr)
- long strtol (const char *nPtr, char **endPtr, int base)
- unsigned long strtoul (const char *nPtr, char **endPtr, int base)
Donde Base: puede ser 0 (base octal, decimal o hexadecimal dependiendo de la notación) o cualquier numero entre 2 y 36.
Manipulación de Hilera de Caracteres: string.h
Las siguientes devuelven un puntero a hil1. hil2 puede ser constante. n es entero
- strcpy (hil1, hil2) copia el contenido de hil2 a hil1
- strncpy (hil1, hil2, n) copia n caracteres de hil2 a hil1
- strcat (hil1, hil2) concatena hil2 a hil1
- strncat (hil1, hil2, n) concatena n caracteres de hil2 a hil1
Las siguientes funciones regresan 0, menos que 0, mayor que 0, si hil1 es igual, menor que o mayor que hil2 respectivamente. hil1 y hil2 pueden ser constantes.
- strcmp (hil1, hil2) compara hil1 con hil2
- strncmp (hil1, hil2, n) compara n caracteres de hil1 e hil2, hil1 puede ser constante.
Otras funciones de string.h
- strchr (hil, ch) regresa un apuntador a la primera instancia de ch en hil, si no regresa NULL
- strrchr (hil, ch) regresa un apuntador a la ultima instancia de ch en hil, si no regresa NULL
- strstr(hil, subhil) regresa un apuntador a la primera instancia de subhil en hil, si no regresa NULL
- strpbrk (hil, subhil) regresa un apuntador a la primera instancia de cualquier carácter de subhil en hil, si no regresa NULL
- strcspn (hil1, hil2) regresa la longitud del segmento inicial de la hil1, consistiendo de caracteres no contenidos en hil2.
- strcspn (hil1, hil2) regresa la longitud del segmento inicial de la hil1,
consistiendo solo de caracteres contenidos en hil2.
Procesamiento de Archivos
Un archivo es una colección de información que almacenamos en un soporte magnético, generalmente un disco, para poder manipularla en cualquier momento. Distinguimos entre dos tipos de acceso: acceso secuencial (se van accediendo posiciones sucesivas) y acceso aleatorio o directo (cuando se accede directamente a la posición deseada, sin necesidad de acceder a las posiciones que le preceden).
Abrir un Archivo
Utilizamos la función fopen. Se debe establecer un puntero a una estructura de tipo FILE.
Sintaxis fopen: FILE *fopen(path, acceso);
acceso descripción
"r" Abrir un fichero para leer. Si el fichero no existe o no se encuentra se obtiene error. "w" Abrir un fichero para escribir. Si el fichero no existe se crea y si existe su contenido se destruye para ser creado de nuevo. "a" Abrir un fichero para añadir información al final del mismo. Si el fichero no existe se crea. "r+" Abrir un fichero para leer y escribir. El fichero debe de existir. "w+" Abrir un fichero para leer y escribir. Si el fichero no existe se crea y si existe su contenido se destruye para ser creado de nuevo. "a+" Abrir un fichero para leer y añadir. Si el fichero no existe se crea.
Cerrar un Archivo
utilizamos la función fclose.
Sintaxis: fclose(FILE *);
Otras funciones de archivos
unlink(path) borra un archivo
rename(orig, dest) renombra archivos
fcloseall() cierra todos los archivosAcceso Secuencial
Utilizamos las sentencias fprintf y fscanf para escribir al archivo. Los registros que se escriben al archivo no necesariamente son del mismo tamaño.
Sintaxis: printf | scanf (archivo, formato [, argumento]...);
Acceso Directo
Normalmente son de longitud fija y se puede tener acceso directo (y por lo tanto mas rápidamente) sin tener que buscar a través de otros registros.
- sizeof(expresion)
Este operador da como resultado un entero indicando el tamaño en bytes del identificador o tipo especificado.
- fseek(ptrf, desp, pos)
Mueve el puntero asociado con el fichero apuntado por ptrf, a una nueva localizacion desplazada desp bytes de la posicion dada por el argumento pos.
Pos Definicion SEEK_SET Principio del fichero SEEK_CUR Posicion actual del puntero SEEK_END final de fichero
- fwrite(buffer, n, c, ptrf);
Esta función escribe hasta c elementos de longitud n bytes, almacenados en el buffer, en el fichero apuntado por ptrf.
- fread(buffer, n, c, ptrf);
Esta función lee hasta c elementos de longitud n bytes, del fichero apuntado por ptrf, y los almacena en el buffer.

1 comment
Jump to comment form | comments rss [?]