Actualizado el 21 de Junio del 2018 (Publicado el 23 de Mayo del 2018)
1.832 visualizaciones desde el 23 de Mayo del 2018
312,4 KB
81 paginas
Creado hace 11a (15/05/2013)
Lenguaje C
Tutorial
Introduccion a la Programacion (T.U.M - T.U.E. - T.U.G.)
Introduccion a la Computacion (T.U.R. - T.U.W.)
Fundamento de la Informatica (Ing. Electr. - Ing. Minas)
Programacion (Prof. en Tec. Electr. - Ing. Electr. - T.U.M )
Programacion I (T.U.G. - T.U.R.)
Area de Servicios
Departamento de Informatica
Universidad Nacional de San Luis
Lenguaje C
Indice
1. Introducción
2. El primer programa
3. Tipos de datos
3.1. Nombres de variables y declaraciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2. El tipo entero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3. El tipo caracter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4. Constantes enteras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.5. Combinando enteros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6. El tipo flotante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.7. Combinando flotantes con enteros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.8. Conversión de tipos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
3
4
4
5
6
7
8
9
9
9
4. Operadores
10
4.1. Operadores aritméticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.2. Operadores relacionales
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.3. Operadores lógicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.4. Operadores a nivel de bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.5. Operadores de asignación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.6. Operadores de incremento y decremento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.7. Operador condicional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5. Control de secuencia
15
5.1. La sentencia de selección if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5.2. La sentencia de selección switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
5.3. La sentencia de iteración while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5.4. La sentencia de iteración do while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
5.5. La sentencia de iteración for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
5.6. Las sentencias break y continue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
6. Objetos de datos estructurados
22
6.1. Arreglos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
6.2. Estructuras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
6.3. Uniones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
6.4. Combinación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
7. Funciones
26
7.1. Creación y utilización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
7.2. Parámetros formales y Parámetros reales o actuales . . . . . . . . . . . . . . . . . . . . . . . . . . 27
7.3. Tipos de una función . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
7.3.1. Devolución de un valor desde una función . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
7.3.2. Funciones de tipo void . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
7.4. Un programa más complejo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
8. Punteros
30
8.1. Punteros como parámetros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
8.2. Punteros y arreglos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
8.3. Aritmética de punteros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
8.4. Punteros a estructuras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
8.4.1. Declaración de un puntero a estructuras . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Área de Servicios - Departamento de Informática - Universidad Nacional de San Luis
1
Lenguaje C
8.4.2. Utilización de punteros a estructuras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
9. Strings
46
9.1. Funciones de strings de biblioteca en Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
9.2. Funciones de strings definidas por el programador . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
10.Entrada y salida estándar
49
10.1. Entrada y Salida Básica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
10.2. Entrada y Salida Formateada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
11.Archivos
51
11.1. Archivos ASCII y Binarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
11.2. Trabajo con los archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
11.2.1. Archivos ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
11.2.2. Archivos Binarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
11.3. Ejemplos
12.Administración dinámica de memoria
13.Parámetros del programa
14.Declaraciones de tipos
59
60
62
15.Estructura del programa
62
15.1. Clases de almacenamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
15.2. Alcance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
16.El preprocesador
A. Precedencia y asociatividad de las operaciones
B. Especificadores de formato
C. Respuestas
65
68
69
70
D. Bibliotecas
76
D.1. Funciones matemáticas: math.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
D.2. Funciones de cadenas de caracteres: string.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
D.3. Funciones de utilería: stdlib.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
D.4. Funciones de entrada y salida con archivos: stdio.h . . . . . . . . . . . . . . . . . . . . . . . . . . 78
D.4.1. Lectura y escritura en archivos ASCII o de textos
. . . . . . . . . . . . . . . . . . . . . . 79
D.4.2. Lectura y escritura en archivos binarios. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Área de Servicios - Departamento de Informática - Universidad Nacional de San Luis
2
Lenguaje C
1.
Introduccion
El lenguaje C es un lenguaje de programación que fue definido por Dennis Ritchie en los laboratorios de
la AT&T Bell en 1972. Fue definido en principio para el sistema operativo Unix, pero se ha extendido a casi
todos los sistemas hoy en día. De hecho, el diseño de muchos lenguajes más modernos se han basado en las
características del lenguaje C.
El lenguaje C es un lenguaje de programación de propósito general, que permite la escritura de programas
compactos, eficientes y de alta portabilidad. Provee al programador de un medio conveniente y efectivo para
acceder a los recursos de la computadora. Es un lenguaje de suficiente alto nivel para hacer los programas
portables y legibles, pero de relativo bajo nivel para adecuarse al hardware particular.
C es un lenguaje muy simple, con un conjunto de operadores muy bien diseñados. No provee, por ejemplo,
operadores para trabajar con strings ni arreglos en forma completa, no provee mecanismos de administración
dinámica de memoria, ni forma de trabajar con archivos. Es decir, el lenguaje C es muy pequeño y fácil de
describir. Todas las operaciones adicionales tales como las mencionadas, cuya falta haría al lenguaje C muy
restringido en sus aplicaciones, son provistas a través de funciones presentes en una biblioteca que está incluso
escrita en el mismo lenguaje C.
El lenguaje fue documentado completamente en 1977 en el libro “El lenguaje de programación C”, de
Kernighan y Ritchie. Fue de hecho el primer estándar. A medida que C fue creciendo en popularidad y fue
implementado en distintos ambientes, perdió su portabilidad, apareciendo una serie de variantes del lenguaje.
En el año 1988 el ANSI (American National Standards Institute) definió un nuevo estándar corrigiendo algunos
errores en su diseño original, y agregando algunas características que demostraron ser necesarias. El lenguaje,
conocido como ANSI C, es de total aceptación hoy en día.
2. El primer programa
La mejor forma de comenzar a estudiar C es viendo algunos ejemplos. De hecho, todo programador C
escribió alguna vez el famoso programa que se muestra a continuación, cuyo único objetivo es imprimir las
palabras “Hola mundo” en la pantalla.
#include <stdio.h>
int main() {
printf("Hola mundo\n");
return(0);
}
Los programas en C están compuestos por funciones. Normalmente, se tiene la libertad de dar cualquier
nombre a las funciones pero la función main, cuya definición aparece en este pequeño programa, es una función
especial: es el punto donde comienza le ejecución del programa.
El encabezamiento de la definición de la función:
Comentarios de: Lenguaje C - Tutorial (0)
No hay comentarios