Actualizado el 21 de Marzo del 2018 (Publicado el 7 de Diciembre del 2017)
1.238 visualizaciones desde el 7 de Diciembre del 2017
3,6 MB
241 paginas
Creado hace 11a (24/07/2013)
Dpto. de Ingeniería Telemática
Escuela Técnica Superior de Ingeniería
Universidad de Sevilla
Fundamentos de Programación I
Apuntes de la Asignatura
Índice general
I Teoría
1
1. Introducción a la Programación
1-1
Arquitectura Básica de los computadores
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-3
Introducción a los Sistemas Operativos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-6
Introducción a los Lenguajes de Programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-9
2. Programación Estructurada
2-1
Resolución de Problemas y Algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-1
Introducción al Lenguaje C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-10
3. Codicación de la Información
3.1.
3-1
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-1
3.1.1. Los Sistemas Posicionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-1
3.2. Codicación de Enteros sin Signo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-2
3.2.1. La aritmética binaria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
3.2.2. Otras Bases de Numeración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
3.2.3. El Desbordamiento en los Enteros sin Signo . . . . . . . . . . . . . . . . . . . . . . . . 3-5
3.3. Codicación de los Enteros con Signo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-6
3.3.1. Codicación en Complemento a Dos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-6
3.3.2. El Desbordamiento en los Enteros con Signo
. . . . . . . . . . . . . . . . . . . . . . . 3-7
3.4. Codicación de Números con Decimales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-7
4. Tipos, Constantes y Variables
4-1
4.1. Tipos de Datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-1
4.1.1. Los Tipos de Datos en C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-2
4.1.2. Tipos Enteros sin Signo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-2
4.1.3. Tipos Enteros con Signo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-2
4.1.4. Tipos con Decimales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-3
4.1.5. Tipo Lógico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-3
4.1.6. Tipo Carácter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-4
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-4
4.2.1. Constantes enteras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-5
4.2.2. Constantes en coma otante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-5
4.2. Constantes
i
ii
20132014
4.3. Variables
4.2.3. Constantes de carácter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-6
4.2.4. Cadenas de caracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-6
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-7
4.3.1. Declaración de Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-7
4.3.2. Utilización del Valor de una Variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-8
4.3.3. Asignación de Valores a Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-8
4.3.4. Tiempo de Vida de las Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-9
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-10
4.3.5. Visibilidad de las variables
5. Expresiones
5.1.
5.2. Operadores Aritméticos
5-1
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-1
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-2
5.2.1. Operaciones con valores de tipo char . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-3
5.3. Operadores Relacionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-3
5.3.1. Precisión de los Números con Decimales . . . . . . . . . . . . . . . . . . . . . . . . . . 5-4
5.4. Operadores Lógicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-4
5.5. Operadores de Manejo de Bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-5
5.6. Asignación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-6
5.7. Asignación Compacta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-7
5.8. Conversión Forzada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-8
5.9. Operadores de Autoincremento y Autodecremento . . . . . . . . . . . . . . . . . . . . . . . . 5-9
5.9.1. Efectos secundarios de ++ y -- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-10
5.10. Operador Condicional
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-11
5.11. Operador sizeof . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-11
5.12. Reglas de Prioridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-12
6. Estructuras de Control
6-1
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-1
6.1.
6.2. Estructuras Secuenciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-2
6.3. Estructuras Selectivas
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-2
6.3.1. Estructura Selectiva Simple: if else . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-3
6.3.2. Sentencias Selectivas Simples Anidadas
. . . . . . . . . . . . . . . . . . . . . . . . . . 6-4
6.3.3. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-5
6.3.4. Estructura Selectiva Múltiple: switch . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-6
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-9
6.4.1. Sentencia while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-9
6.4.2. Sentencia do while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-11
6.4.3. Sentencia for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-12
6.5. Ejemplos de Uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-15
6.5.1. Lectura del teclado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-15
6.5.2. Solución de una ecuación de primer grado . . . . . . . . . . . . . . . . . . . . . . . . . 6-15
6.4. Estructuras Repetitivas
7. Funciones
7-1
20132014
iii
7.1. Funciones: Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-1
7.1.1. La función main . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-2
7.2. Denición de una Función . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-2
7.2.1. El identicador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-3
7.2.2. Los parámetros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-3
7.2.3. El Cuerpo de la Función . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-3
7.2.4. El Tipo de la Función . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-4
7.3. Declaración de una Función . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-4
7.4. Utilización de una Función . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-5
7.4.1. Correspondencia de parámetros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-5
7.5. Recursividad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-7
7.6. Compilación Separada y Descomposición en Ficheros . . . . . . . . . . . . . . . . . . . . . . . 7-8
7.6.1. Funciones y cheros de cabecera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-9
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-9
7.7.1. La directiva include . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-10
7.7.2. La directiva define . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-10
7.7.3. Directivas condicionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-12
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-13
7.7. El preprocesador de C.
7.8. Resultado nal
8. Punteros
8.1.
8.2.1. Prioridades de los Operadores de Punteros
8-1
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-1
8.1.1. Declaración de Punteros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-2
8.1.2. El valor NULL en los Punteros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-3
8.2. Operadores Especícos de Punteros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-3
. . . . . . . . . . . . . . . . . . . . . . . . 8-4
8.3. Aritmética de punteros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-5
8.3.1. Operaciones entre punteros y enteros . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-5
8.3.2. Resta de dos Punteros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-6
8.3.3. Comparaciones de Punteros . . . . . . . . . . . . . . . . . . . . .
Comentarios de: Fundamentos de Programación I - Apuntes de la Asignatura (0)
No hay comentarios