1
Profesor: José Miguel Rubio L.
Magíster en Ingeniería Informática Ingeniero Civil en InformáticaLicenciado en Ciencias de la IngenieríaTécnico en Programación (nivel medio)
e-mail 1: [email protected] 2: [email protected]
CIF 2452Fundamentos de Programación
3
Trabajo en Equipos: El número de integrantes debe ser 2.Programación en parejas (eXtreme Programming).Las tareas, trabajos de clase y de laboratorio se desarrollan en equipo.
Co-evaluación:Evaluación entre pares antes de cada cátedra. Para ello, se debe completar una pauta de evaluación confeccionada por el profesor.
Clases expositivas:Sólo cuando el profesor considere necesario, duración máxima de 30 min.
Metodología
Evaluaciones
• Primera Prueba : Martes 28 de Septiembre, 8:00 horas.
• Segunda Prueba: Miércoles 27 de Octubre, 12:45 horas.
• Tercera Prueba: Martes 30 de Noviembre, 8:00 horas.
• Prueba Especial: Miércoles 8 de Diciembre, 12:45 horas.
5
Clase de introducción
1. Historia de la Programación
2. ¿Qué es una computadora?
3. Programas y algoritmos
4. Lenguajes de programación
5. Lenguaje C
Mesa Redonda
• En grupos de 4 estudiantes, defina:
– Computadora
– Algoritmo
– Programa
– Lenguaje de Programación
6
7
Historia de la Programación
• Resumenhttp://www.youtube.com/watch?v=MiMKWVqxSls
8
¿Qué es una computadora?
• “Un sistema digital con tecnología microelectrónica capaz de procesar información a partir de un grupo de instrucciones denominado programa”
• Componentes principales:– Procesador (CPU: Central Processing Unit)
– Memoria (RAM: Random Access Memory)
• Componentes auxiliares:– Disco duro
– Lector CD-ROM
– Teclado
– Pantalla
– etc.
9
Elementos de una computadora
Memoria Principal
(RAM)Unidad de
Control (CU)
Unidad aritmetica
y logica (ALU)
Programa
Dispositivos de entrada Dispositivos de salida Dispositivos de
almacenamiento de datosteclado
ratón
pantalla
impresora disco duro
lector/grabador de CD-ROM
lector/grabador de disquete
Procesador
(CPU)
(hardware)
10
Representación de los datos en la computadora
• El único código que entiende la CPU son los bits. • Los bits son representados en circuitos electrónicos que pueden estar en estado “on” (1) u “off” (0)
• Las instrucciones se mandan a la CPU en forma de bytes, que son palabras de 8 bits
• 1 byte = 8 bits
• 1 kilobyte = 1 024 bytes
• 1 megabyte = 1 024 kilobytes = 1 048 576 bytes
11
Representación de los datos en la computadora
• Base 10:– Dígitos = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
– 1111 = 1*103 + 1*102 + 1*101 + 1*100
• Base 2:– Dígitos = {0, 1}
– 1111 = 1*23 + 1*22 + 1*21 + 1*20 = 8 + 4 + 2 + 1 = 15
• ¿Cuántos valores puede representar un byte?– 1 byte = 8 bits (Ej: 01100101)
– Cada bit puede representar 2 valores (0 y 1)
– Un byte puede representar 28 = 256 valores
12
Representación de textos
TEXTO: TEXTO: TEXTO: TEXTO: My name is Anders.ASCII: ASCII: ASCII: ASCII: 77-121-32-110-97-109-101-32-105-115-32-65-110-100-101-114-115-4618 bytes18 bytes18 bytes18 bytes
13
Representación de imagen
• División de la imagen en una matriz de pixels (unidad de la imagen)
• Cada pixel asociado con un color
0 0 0 0 0 0 0 0
0 0 1 1 0 1 1 0
0 0 1 0 0 0 1 0
0 0 1 0 0 0 1 0
0 0 1 1 0 1 1 0
0 0 0 0 0 0 0 0
0 0 1 1 0 1 1 0
0 0 0 0 0 0 0 0
14
Representación de sonido
• Discretización de la amplitud
• Un byte para cada valor
4 8 12 13 12 10 8…
15
¿Qué es un programa?
• Un programa es una secuencia de instrucciones a la CPU
• Cada instrucción es un conjunto de bytes
• Ejemplos de instrucciones:– Leer un dato del teclado
– Guardar un dato en la memoria
– Ejecutar una operación sobre dos datos
– Mostrar un dato en la pantalla
– etc.
16
Acceso a la memoria
1 12
2 125
3 45
4 2
5 0
6 10
7 32
8 64
9 15
RAM
CPU
17
Algoritmo
• Un esquema para resolver un cierto tipo de problema
• Se puede traducir en un programa para ejecutarlo en una computadora
• Pasos para la resolución de un problema con computadora:
1. Diseño de un algoritmo
2. Codificación de un programa
3. Ejecución y validación
18
Algoritmo• Componentes:
– Entrada: datos del problema a resolver
– Salida: el resultado de la resolución
– Proceso: pasos a seguir para la resolución
• Propiedades:
– Preciso: orden estricto + expresiones precisas
– Definido: con la misma entrada, siempre resulta la misma salida
– Finito: número finito de pasos
19
Algoritmo 1
• Problema: Sumar dos números
• Solución:
– Entrada: dos números
– Salida: guardar la suma en la memoria y imprimirla por pantalla
– Proceso:1) Añadir los dos números
2) Guardar el resultado en la memoria
3) Imprimir el resultado por pantalla
20
Algoritmo 2
• Problema: hacer una taza de té a la inglesa
• Solución:
– Entrada: agua, bolsa de té, leche, tetera, taza, cuchara
– Salida: una taza de té a la inglesa
– Proceso:1. Poner la bolsa de té en la taza2. Poner el agua a hervir en la tetera3. Verter el agua hervida en la taza4. Añadir leche5. Remover
21
Algoritmo 3
• Problema: averiguar la solvencia de un cliente que ejecuta un pedido a una fábrica.
• Solución:
– Entrada: el pedido
– Salida: mensaje de aceptación o rechazo
– Proceso: 1. Leer el pedido
2. Examinar la ficha del cliente
3. Si el cliente es solvente, aceptar pedido
4. En caso contrario, rechazar pedido
22
Lenguajes de programación
• Lenguajes máquina
• Lenguajes ensamblador
• Lenguajes de alto nivel: C, C++, Visual Basic, Java, Pascal, Prolog, LISP,…
• http://www.youtube.com/watch?v=RJcVJw7cvMg
23
Lenguajes máquina
• Programas son secuencias de instrucciones compuestas de bytes:– 16 29 156 9 82 75
• Ventajas:– La CPU entiende estos programas
• Desventajas:– Pensar en modo de 0’s y 1’s es muy difícil para nosotros
24
Lenguajes ensamblador
• Instrucciones compuestas de palabras cortas y números:– LOD 15 6
– LOD 16 8
– ADD 15 16 17
– JMP 10
• Ventajas:– Más fácil a entender
• Desventajas:– Todavía bastante abstracto
– Necesita traducir el código a lenguajes máquina
25
Lenguajes de alto nivel
• Diseñados para ser más parecidos a lenguaje natural
• Ventajas:– Mucho más fácil de dar instrucciones
• Desventajas:– Más complicado convertir en lenguajes máquina
26
Lenguajes de programación:¿Por qué hay tantos?
¿Cómo nacen, sobreviven y caducan?
1. Diferentes dominios de aplicación:• Programación de sistemas – rapidez y acceso de
bajo nivel: C
• Inteligencia artificial – computación simbólica: LISP, Prolog
• Programación científica – fórmulas matemáticas: Fortran
• Negocios – transacciones: COBOL
• Uso específico: SQL (bases de datos), Perl(manipulación de textos), JavaScript (páginas web), Pascal (formación)
27
Lenguajes de programación:¿Por qué hay tantos?
¿Cómo nacen, sobreviven y caducan?
2. Diferentes necesidades:• Fiabilidad: Ada
• Escabilidad, paradigma orientado a objeto: C � C++
• Portabilidad: Java
3. Evolución: • Mejora del hardware
• Mejor comprensión de como reforzar criterios de legibilidad, facilidad de aprender y escribir, fiabilidad…
4. Importancia de la estandarización
5. ¡Número de usuarios!
28
Traductores de lenguaje: intérpretes
PROGRAMA FUENTE
INTERPRETE
EJECUCION DE LA(S)
INSTRUCCION(ES)
INTERPRETADA(S)
29
Traductores de lenguaje: compiladores
PROGRAMA FUENTE
COMPILADOR
ENLAZADOR
(binder, linker)
EJECUCION
Fase de compilación
Fase de ejecución
OPCION 1
programa
ejecutable
Fase de compilación
Fase de ejecución
OPCION 2
programa
objeto
30
Lenguaje C
• C es un lenguaje de programación creado en 1972 por Ken Thompson y Dennis M. Ritchie en los Laboratorios Bell como evolución del anterior lenguaje B, a su vez basado en BCPL.
• Al igual que B, es un lenguaje orientado a la implementación de Sistemas Operativos, concretamente Unix.
• C es apreciado por la eficiencia del código que produce y es el lenguaje de programación más popular para crear software de sistemas, aunque también se utiliza para crear aplicaciones.
31
Fase de Compilación
.c.c
Fichero Fuente
Preprocesamiento .c.c Paso a Ensamblador .s.s
.o.o
EnsamblarCompilación
.o.o.o.o.o.o.o.oEX
EEX
E
Enlazado
.a.aLibrerías
Fichero Ejecutable