PDF de programación - Introducción a la programación con C

Imágen de pdf Introducción a la programación con C

Introducción a la programación con Cgráfica de visualizaciones

Actualizado el 21 de Julio del 2021 (Publicado el 10 de Febrero del 2018)
829 visualizaciones desde el 10 de Febrero del 2018
2,9 MB
375 paginas
Creado hace 16a (16/02/2008)
Introducci´on a la programaci´on

con C

Andr´es Marzal

Isabel Gracia

Departamento de Lenguajes y Sistemas Inform´aticos

Universitat Jaume I

Obra distribuida con licencia Creative Commons

Esta obra se distribuye con licencia Creative Commons en su modalidad ((Reconocimiento-No
Comercial-Sin obras derivadas 2.5 Espa˜na)).

Usted es libre de copiar, distribuir y comunicar p´ublicamente la obra bajo las condiciones

siguientes:

Reconocimiento. Debe reconocer los cr´editos de la obra de la manera especificada
por el autor o el licenciador (pero no de una manera que sugiera que tiene su apoyo
o apoyan el uso que hace de su obra).

No comercial. No puede utilizar esta obra para fines comerciales.

Sin obras derivadas. No se puede alterar, transformar o generar una obra derivada a
partir de esta obra.

Este texto es un resumen de la licencia. El texto completo de la licencia se encuentra en

http://creativecommons.org/licenses/by-nc-nd/2.5/es/legalcode.es.

ii

Introducci´on a la Programaci´on con C

´Indice general

1. Introducci´on a C

1
3
1.1. C es un lenguaje compilado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2. Traduciendo de Python a C: una gu´ıa r´apida . . . . . . . . . . . . . . . . . . . .
5
1.3. Estructura t´ıpica de un programa C . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.4. C es un lenguaje de formato libre . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.5. Hay dos tipos de comentario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.6. Valores literales en C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.6.1. Enteros
1.6.2. Flotantes
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.6.3. Cadenas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.7. C tiene un rico juego de tipos escalares . . . . . . . . . . . . . . . . . . . . . . . . 23
1.7.1. El tipo int
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.7.2. El tipo unsigned int . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.7.3. El tipo float . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.7.4. El tipo char . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.7.5. El tipo unsigned char . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.8. Se debe declarar el tipo de toda variable antes de usarla . . . . . . . . . . . . . . 24
1.8.1.
Identificadores v´alidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.8.2. Sentencias de declaraci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.8.3. Declaraci´on con inicializaci´on . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.9. Salida por pantalla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.9.1. Marcas de formato para la impresi´on de valores con printf . . . . . . . . . 27
1.10. Variables y direcciones de memoria . . . . . . . . . . . . . . . . . . . . . . . . . . 31
1.11. Entrada por teclado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
1.12. Expresiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
1.13. Conversi´on impl´ıcita y expl´ıcita de tipos . . . . . . . . . . . . . . . . . . . . . . . 41
1.14. Las directivas y el preprocesador . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
1.15. Constantes
1.15.1. Definidas con la directiva define
. . . . . . . . . . . . . . . . . . . . . . . 44
1.15.2. Definidas con el adjetivo const . . . . . . . . . . . . . . . . . . . . . . . . 44
1.15.3. Con tipos enumerados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
1.16. Las bibliotecas (m´odulos) se importan con #include . . . . . . . . . . . . . . . . 47
1.16.1. La biblioteca matem´atica . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
1.17.1. Estructuras de control condicionales . . . . . . . . . . . . . . . . . . . . . 49
1.17.2. Estructuras de control iterativas
. . . . . . . . . . . . . . . . . . . . . . . 54
1.17.3. Sentencias para alterar el flujo iterativo . . . . . . . . . . . . . . . . . . . 59

1.17. Estructuras de control

2. Estructuras de datos en C: vectores est´aticos y registros

63
2.1. Vectores est´aticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
2.1.1. Declaraci´on de vectores
2.1.2.
Inicializaci´on de los vectores . . . . . . . . . . . . . . . . . . . . . . . . . . 64
2.1.3. Un programa de ejemplo: la criba de Erat´ostenes . . . . . . . . . . . . . . 65
2.1.4. Otro programa de ejemplo: estad´ısticas
. . . . . . . . . . . . . . . . . . . 68
2.1.5. Otro programa de ejemplo: una calculadora para polinomios . . . . . . . . 77
2.1.6. Disposici´on de los vectores en memoria . . . . . . . . . . . . . . . . . . . . 83
2.1.7. Algunos problemas de C: accesos il´ıcitos a memoria
. . . . . . . . . . . . 87

Introducci´on a la Programaci´on con C

i

´INDICE GENERAL

2.1.8. Asignaci´on y copia de vectores
2.1.9. Comparaci´on de vectores

. . . . . . . . . . . . . . . . . . . . . . . . 88
. . . . . . . . . . . . . . . . . . . . . . . . . . . 90
2.2. Cadenas est´aticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
2.2.1. Declaraci´on de cadenas
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
2.2.2. Representaci´on de las cadenas en memoria . . . . . . . . . . . . . . . . . . 91
2.2.3. Entrada/salida de cadenas . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
2.2.4. Asignaci´on y copia de cadenas
. . . . . . . . . . . . . . . . . . . . . . . . 97
2.2.5. Longitud de una cadena . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
2.2.6. Concatenaci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
2.2.7. Comparaci´on de cadenas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
2.2.8. Funciones ´utiles para manejar caracteres . . . . . . . . . . . . . . . . . . . 107
2.2.9. Escritura en cadenas: sprintf
. . . . . . . . . . . . . . . . . . . . . . . . . 108
2.2.10. Un programa de ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
2.3. Vectores multidimensionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
2.3.1. Sobre la disposici´on de los vectores multidimensionales en memoria . . . . 110
2.3.2. Un ejemplo: c´alculo matricial
. . . . . . . . . . . . . . . . . . . . . . . . . 111
2.3.3. Vectores de cadenas, matrices de caracteres . . . . . . . . . . . . . . . . . 117
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123

2.4. Registros

2.4.1. Un ejemplo: registros para almacenar vectores de talla variable (pero

acotada) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
2.4.2. Un ejemplo: rectas de regresi´on para una serie de puntos en el plano . . . 129
2.4.3. Otro ejemplo: gesti´on de una coleci´on de CDs . . . . . . . . . . . . . . . . 132
2.5. Definici´on de nuevos tipos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . 136

3. Funciones

139
3.1. Definici´on de funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
3.2. Variables locales y globales
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
3.2.1. Variables locales
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
3.2.2. Variables globales
3.3. Funciones sin par´ametros
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
3.4. Procedimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
3.5. Paso de par´ametros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
3.5.1. Par´ametros escalares: paso por valor . . . . . . . . . . . . . . . . . . . . . 149
3.5.2. Organizaci´on de la memoria: la pila de llamadas a funci´on . . . . . . . . . 149
3.5.3. Vectores de longitud variable . . . . . . . . . . . . . . . . . . . . . . . . . 155
3.5.4. Par´ametros vectoriales: paso por referencia . . . . . . . . . . . . . . . . . 155
3.5.5. Par´ametros escalares: paso por referencia mediante punteros . . . . . . . . 161
3.5.6. Paso de registros a funciones
. . . . . . . . . . . . . . . . . . . . . . . . . 166
3.5.7. Paso de matrices y otros vectores multidimensionales . . . . . . . . . . . . 169
3.5.8. Tipos de retorno v´alidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
3.5.9. Un ejercicio pr´actico: miniGalaxis
. . . . . . . . . . . . . . . . . . . . . . 173
3.6. Recursi´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
3.6.1. Un m´etodo recursivo de ordenaci´on: mergesort
. . . . . . . . . . . . . . . 191
3.6.2. Recursi´on indirecta y declaraci´on anticipada . . . . . . . . . . . . . . . . . 197
3.7. Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
3.8. Otras cuestiones acerca de las funciones . . . . . . . . . . . . . . . . . . . . . . . 201
3.8.1. Funciones inline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
3.8.2. Variables locales static . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
3.8.3. Paso de funciones como par´ametros
. . . . . . . . . . . . . . . . . . . . . 203
3.9. M´odulos, bibliotecas y unidades de compilaci´on . . . . . . . . . . . . . . . . . . . 205
3.9.1. Declaraci´on de prototipos en cabeceras . . . . . . . . . . . . . . . . . . . . 207
3.9.2. Declaraci´on de variables en cabeceras
. . . . . . . . . . . . . . . . . . . . 209
3.9.3. Declaraci´on de registros en cabeceras . . . . . . . . . . . . . . . . . . . . . 210

ii

Introducci´on a la
  • Links de descarga
http://lwp-l.com/pdf8701

Comentarios de: Introducción a la programación con C (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad