AULA POLITÈCNICA / ETSETB
Marco A. Peña Basurto
José M. Cela Espín
Introducción a
la programación en C
EDICIONS UPC
Primera edición: septiembre de 2000
Diseño de la cubierta: Manuel Andreu
©
©
Los autores, 2000
Edicions UPC, 2000
Edicions de la Universitat Politècnica de Catalunya, SL
Jordi Girona Salgado 31, 08034 Barcelona
Tel.: 934 016 883 Fax: 934 015 885
Edicions Virtuals: www.edicionsupc.es
E-mail:
[email protected]
Producción:
CPET (Centre de Publicacions del Campus Nord)
La Cup. Gran Capità s/n, 08034 Barcelona
Depósito legal: B-32.449-2000
ISBN: 84-8301-429-7
Quedan rigurosamente prohibidas, sin la autorización escrita de los titulares del copyright, bajo las san-
ciones establecidas en las leyes, la reproducción total o parcial de esta obra por cualquier medio o pro-
cedimiento, comprendidos la reprografía y el tratamiento informático, y la distribución de ejemplares de
ella mediante alquiler o préstamo públicos.
Introducción a la programación en C
Marco A. Peña
José M. Cela
Departament d’Arquitectura de Computadors
Universitat Polit`ecnica de Catalunya
08034 Barcelona, España
[email protected]
[email protected]
19 de junio de 2000
i
Índice General
Índice General
Índice de Figuras
Índice de Tablas
Prefacio
1 Conceptos básicos de programación
1.1 Ordenador y periféricos . .
. . .
. . .
1.2 Bits, bytes y palabras . . .
1.3 Lenguajes de programación . . .
1.3.1 Lenguajes de bajo nivel .
1.3.2 Lenguajes de alto nivel .
1.4 Elaboración de un programa . .
. . .
1.5 Traductores . .
. . .
. . .
. . .
. . .
1.5.1 Ensambladores . .
1.5.2
. . .
1.5.3 Compiladores . . .
Intérpretes
. . .
.
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
2 Primer contacto con C
. . .
. . .
2.1 Un poco de historia .
2.2 Características del lenguaje . . .
2.3 Creación de un programa .
. . .
2.4 Primeros pasos con C . . .
. . .
2.5 El modelo de compilación de C .
. . .
. . .
. . .
. . .
. . .
3 Empezando a programar
. . .
Identificadores .
. . .
. . .
3.1
3.2 Estructura de un programa . . .
. . .
3.3 Variables y constantes . . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
3.3.1 Variables . .
. . .
3.3.2 Constantes
.
3.3.3 Entrada y salida de valores . .
. . .
. . .
. . .
. . .
3.4.1 Operador de asignación .
3.4.2 Operadores aritméticos .
3.4 Expresiones . .
. . .
. . .
v
vii
ix
1
1
2
2
3
3
4
5
5
5
6
7
7
7
8
9
10
13
13
13
14
14
15
16
17
17
17
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
Índice General
3.4.3 Operadores relacionales
3.4.4 Operadores lógicos . . .
Prioridad de operadores
3.4.5
. . .
. . .
. . .
. .
3.5 Ejercicios .
. . .
. . .
. . .
. . .
. .
. .
. .
. .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. .
. .
. .
. .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. .
. .
. .
. .
. .
. .
. .
. .
4 Construcciones condicionales
. . .
4.1 Construcción if . .
. . .
. . .
4.1.1 Variante if-else . .
. . .
4.1.2 Variante if-else-if . . .
. . .
. . .
. . .
4.2 El operador condicional ? . . .
4.3 Construcción switch . .
. . .
4.4 Ejercicios .
. . .
. . .
. . .
. .
. .
. .
. .
. .
. .
. .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
5 Construcciones iterativas
5.1 Construcción while . . .
. . .
. . .
5.2 Construcción do-while . . .
. . .
5.3 Construcción for .
. . .
. . .
5.3.1 El operador coma (,) . .
. . .
5.3.2 Equivalencia for-while . .
. .
. .
. .
. .
. .
5.4 Las sentencias break y continue . .
5.5 Ejercicios .
. .
. . .
. . .
. . .
. .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
6.2 Caracteres .
. . .
. .
. . .
. . .
6.1 Números enteros
6 Tipos de datos elementales
. .
6.1.1 Modificadores
6.1.2 Resumen . .
. . .
. . .
. . .
. . .
. . .
6.2.1 Caracteres especiales . .
6.2.2 Enteros y el tipo char .
6.2.3 Conversiones de tipos
.
. . .
. . .
6.3 Números reales . . .
6.4 Ejercicios .
. . .
. . .
. . .
. .
. .
7.2 Matrices . .
7.1 Vectores . .
. . .
. .
7.1.1 Consulta
. .
7.1.2 Asignación .
7.1.3 Ejemplos . .
. . .
. .
7.2.1 Consulta
. .
7.2.2 Asignación .
7.2.3 Ejemplo . . .
7 Tipos de datos estructurados: Tablas
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
7.3 Tablas multidimensionales . . .
. . .
. . .
. . .
7.4 Cadenas de caracteres . . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
7.3.1 Ejemplo . . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
ii
18
19
19
20
23
23
25
26
27
28
31
33
33
35
36
38
38
38
39
41
41
42
43
44
44
45
45
46
47
49
49
50
50
52
53
54
54
55
55
56
57
iii
Índice General
. . .
. . .
7.4.1 Asignación .
. .
7.4.2 Manejo de cadenas de caracteres .
. .
7.4.3 Ejemplos . .
. . .
. .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. .
7.5 Ejercicios .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. .
. .
. .
. .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. .
. .
. .
. .
. .
. .
. .
. .
8 Otros tipos de datos
. .
8.1 Estructuras
. .
. . .
. . .
. . .
8.2 Uniones . .
. . .
. . .
. . .
. . .
. . .
8.1.1 Declaración de variables . . .
8.1.2 Acceso a los campos . .
. . .
8.1.3 Asignación .
. . .
. . .
. . .
. . .
8.1.4 Ejemplo . . .
. . .
. . .
. . .
. . .
. . .
8.2.1 Ejemplo . . .
. . .
8.3 Tipos de datos enumerados . . .
8.4 Definición de nuevos tipos de datos
.
8.5 Tiras de bits . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
8.5.1 Operador de negación .
. . .
8.5.2 Operadores lógicos . . .
. . .
8.5.3 Operadores de desplazamiento de bits .
. . .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
8.6 Ejercicios .
. . .
. . .
. . .
. . .
. . .
. . .
. .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. .
9 Punteros
. . .
. . .
9.1 Declaración y asignación de direcciones .
. .
. .
. .
. .
. .
. .
. .
9.1.1 Declaración .
. . .
9.1.2 Asignación de direcciones . .
Indirección . .
. . .
. . .
. . .
. . .
. . .
9.2
. . .
9.3 Operaciones con punteros .
9.4 Punteros y tablas
. . .
9.5 Punteros y estructuras . . .
9.6 Ejercicios .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. .
. .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
10 Funciones
. . .
10.2.1 Definición . .
10.2.2 Prototipos . .
10.2.3 Llamada . . .
. . .
10.1 Generalidades .
. . .
10.2 Definición y llamada . . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
10.3 Variables y parámetros . .
. . .
. . .
10.3.1 Variables locales .
10.3.2 Variables globales
. . .
10.3.3 Parámetros formales . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
10.5.1 Paso de parámetros por valor .
. . .
10.5.2 Paso de parámetros por referencia . . .
10.4 Devolución de resultados .
10.5 Paso de parámetros .
. . .
. .
. .
. .
. .
.
Comentarios de: Introduccion a la programacion en C (0)
No hay comentarios