Profesor: JoséMiguel Rubio L.zeus.inf.ucv.cl/~jrubio/docs/2010-2/CIF 2452/Introduccion.pdf · 1...
Transcript of Profesor: JoséMiguel Rubio L.zeus.inf.ucv.cl/~jrubio/docs/2010-2/CIF 2452/Introduccion.pdf · 1...
![Page 1: Profesor: JoséMiguel Rubio L.zeus.inf.ucv.cl/~jrubio/docs/2010-2/CIF 2452/Introduccion.pdf · 1 Profesor: JoséMiguel Rubio L. Magíster en Ingeniería Informática Ingeniero Civil](https://reader034.fdocuments.net/reader034/viewer/2022051511/600b25c6c3b2cd0f130e3525/html5/thumbnails/1.jpg)
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]
![Page 2: Profesor: JoséMiguel Rubio L.zeus.inf.ucv.cl/~jrubio/docs/2010-2/CIF 2452/Introduccion.pdf · 1 Profesor: JoséMiguel Rubio L. Magíster en Ingeniería Informática Ingeniero Civil](https://reader034.fdocuments.net/reader034/viewer/2022051511/600b25c6c3b2cd0f130e3525/html5/thumbnails/2.jpg)
CIF 2452Fundamentos de Programación
![Page 3: Profesor: JoséMiguel Rubio L.zeus.inf.ucv.cl/~jrubio/docs/2010-2/CIF 2452/Introduccion.pdf · 1 Profesor: JoséMiguel Rubio L. Magíster en Ingeniería Informática Ingeniero Civil](https://reader034.fdocuments.net/reader034/viewer/2022051511/600b25c6c3b2cd0f130e3525/html5/thumbnails/3.jpg)
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
![Page 4: Profesor: JoséMiguel Rubio L.zeus.inf.ucv.cl/~jrubio/docs/2010-2/CIF 2452/Introduccion.pdf · 1 Profesor: JoséMiguel Rubio L. Magíster en Ingeniería Informática Ingeniero Civil](https://reader034.fdocuments.net/reader034/viewer/2022051511/600b25c6c3b2cd0f130e3525/html5/thumbnails/4.jpg)
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.
![Page 5: Profesor: JoséMiguel Rubio L.zeus.inf.ucv.cl/~jrubio/docs/2010-2/CIF 2452/Introduccion.pdf · 1 Profesor: JoséMiguel Rubio L. Magíster en Ingeniería Informática Ingeniero Civil](https://reader034.fdocuments.net/reader034/viewer/2022051511/600b25c6c3b2cd0f130e3525/html5/thumbnails/5.jpg)
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
![Page 6: Profesor: JoséMiguel Rubio L.zeus.inf.ucv.cl/~jrubio/docs/2010-2/CIF 2452/Introduccion.pdf · 1 Profesor: JoséMiguel Rubio L. Magíster en Ingeniería Informática Ingeniero Civil](https://reader034.fdocuments.net/reader034/viewer/2022051511/600b25c6c3b2cd0f130e3525/html5/thumbnails/6.jpg)
Mesa Redonda
• En grupos de 4 estudiantes, defina:
– Computadora
– Algoritmo
– Programa
– Lenguaje de Programación
6
![Page 7: Profesor: JoséMiguel Rubio L.zeus.inf.ucv.cl/~jrubio/docs/2010-2/CIF 2452/Introduccion.pdf · 1 Profesor: JoséMiguel Rubio L. Magíster en Ingeniería Informática Ingeniero Civil](https://reader034.fdocuments.net/reader034/viewer/2022051511/600b25c6c3b2cd0f130e3525/html5/thumbnails/7.jpg)
7
Historia de la Programación
• Resumenhttp://www.youtube.com/watch?v=MiMKWVqxSls
![Page 8: Profesor: JoséMiguel Rubio L.zeus.inf.ucv.cl/~jrubio/docs/2010-2/CIF 2452/Introduccion.pdf · 1 Profesor: JoséMiguel Rubio L. Magíster en Ingeniería Informática Ingeniero Civil](https://reader034.fdocuments.net/reader034/viewer/2022051511/600b25c6c3b2cd0f130e3525/html5/thumbnails/8.jpg)
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.
![Page 9: Profesor: JoséMiguel Rubio L.zeus.inf.ucv.cl/~jrubio/docs/2010-2/CIF 2452/Introduccion.pdf · 1 Profesor: JoséMiguel Rubio L. Magíster en Ingeniería Informática Ingeniero Civil](https://reader034.fdocuments.net/reader034/viewer/2022051511/600b25c6c3b2cd0f130e3525/html5/thumbnails/9.jpg)
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)
![Page 10: Profesor: JoséMiguel Rubio L.zeus.inf.ucv.cl/~jrubio/docs/2010-2/CIF 2452/Introduccion.pdf · 1 Profesor: JoséMiguel Rubio L. Magíster en Ingeniería Informática Ingeniero Civil](https://reader034.fdocuments.net/reader034/viewer/2022051511/600b25c6c3b2cd0f130e3525/html5/thumbnails/10.jpg)
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
![Page 11: Profesor: JoséMiguel Rubio L.zeus.inf.ucv.cl/~jrubio/docs/2010-2/CIF 2452/Introduccion.pdf · 1 Profesor: JoséMiguel Rubio L. Magíster en Ingeniería Informática Ingeniero Civil](https://reader034.fdocuments.net/reader034/viewer/2022051511/600b25c6c3b2cd0f130e3525/html5/thumbnails/11.jpg)
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
![Page 12: Profesor: JoséMiguel Rubio L.zeus.inf.ucv.cl/~jrubio/docs/2010-2/CIF 2452/Introduccion.pdf · 1 Profesor: JoséMiguel Rubio L. Magíster en Ingeniería Informática Ingeniero Civil](https://reader034.fdocuments.net/reader034/viewer/2022051511/600b25c6c3b2cd0f130e3525/html5/thumbnails/12.jpg)
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
![Page 13: Profesor: JoséMiguel Rubio L.zeus.inf.ucv.cl/~jrubio/docs/2010-2/CIF 2452/Introduccion.pdf · 1 Profesor: JoséMiguel Rubio L. Magíster en Ingeniería Informática Ingeniero Civil](https://reader034.fdocuments.net/reader034/viewer/2022051511/600b25c6c3b2cd0f130e3525/html5/thumbnails/13.jpg)
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
![Page 14: Profesor: JoséMiguel Rubio L.zeus.inf.ucv.cl/~jrubio/docs/2010-2/CIF 2452/Introduccion.pdf · 1 Profesor: JoséMiguel Rubio L. Magíster en Ingeniería Informática Ingeniero Civil](https://reader034.fdocuments.net/reader034/viewer/2022051511/600b25c6c3b2cd0f130e3525/html5/thumbnails/14.jpg)
14
Representación de sonido
• Discretización de la amplitud
• Un byte para cada valor
4 8 12 13 12 10 8…
![Page 15: Profesor: JoséMiguel Rubio L.zeus.inf.ucv.cl/~jrubio/docs/2010-2/CIF 2452/Introduccion.pdf · 1 Profesor: JoséMiguel Rubio L. Magíster en Ingeniería Informática Ingeniero Civil](https://reader034.fdocuments.net/reader034/viewer/2022051511/600b25c6c3b2cd0f130e3525/html5/thumbnails/15.jpg)
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.
![Page 16: Profesor: JoséMiguel Rubio L.zeus.inf.ucv.cl/~jrubio/docs/2010-2/CIF 2452/Introduccion.pdf · 1 Profesor: JoséMiguel Rubio L. Magíster en Ingeniería Informática Ingeniero Civil](https://reader034.fdocuments.net/reader034/viewer/2022051511/600b25c6c3b2cd0f130e3525/html5/thumbnails/16.jpg)
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
![Page 17: Profesor: JoséMiguel Rubio L.zeus.inf.ucv.cl/~jrubio/docs/2010-2/CIF 2452/Introduccion.pdf · 1 Profesor: JoséMiguel Rubio L. Magíster en Ingeniería Informática Ingeniero Civil](https://reader034.fdocuments.net/reader034/viewer/2022051511/600b25c6c3b2cd0f130e3525/html5/thumbnails/17.jpg)
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
![Page 18: Profesor: JoséMiguel Rubio L.zeus.inf.ucv.cl/~jrubio/docs/2010-2/CIF 2452/Introduccion.pdf · 1 Profesor: JoséMiguel Rubio L. Magíster en Ingeniería Informática Ingeniero Civil](https://reader034.fdocuments.net/reader034/viewer/2022051511/600b25c6c3b2cd0f130e3525/html5/thumbnails/18.jpg)
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
![Page 19: Profesor: JoséMiguel Rubio L.zeus.inf.ucv.cl/~jrubio/docs/2010-2/CIF 2452/Introduccion.pdf · 1 Profesor: JoséMiguel Rubio L. Magíster en Ingeniería Informática Ingeniero Civil](https://reader034.fdocuments.net/reader034/viewer/2022051511/600b25c6c3b2cd0f130e3525/html5/thumbnails/19.jpg)
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
![Page 20: Profesor: JoséMiguel Rubio L.zeus.inf.ucv.cl/~jrubio/docs/2010-2/CIF 2452/Introduccion.pdf · 1 Profesor: JoséMiguel Rubio L. Magíster en Ingeniería Informática Ingeniero Civil](https://reader034.fdocuments.net/reader034/viewer/2022051511/600b25c6c3b2cd0f130e3525/html5/thumbnails/20.jpg)
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
![Page 21: Profesor: JoséMiguel Rubio L.zeus.inf.ucv.cl/~jrubio/docs/2010-2/CIF 2452/Introduccion.pdf · 1 Profesor: JoséMiguel Rubio L. Magíster en Ingeniería Informática Ingeniero Civil](https://reader034.fdocuments.net/reader034/viewer/2022051511/600b25c6c3b2cd0f130e3525/html5/thumbnails/21.jpg)
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
![Page 22: Profesor: JoséMiguel Rubio L.zeus.inf.ucv.cl/~jrubio/docs/2010-2/CIF 2452/Introduccion.pdf · 1 Profesor: JoséMiguel Rubio L. Magíster en Ingeniería Informática Ingeniero Civil](https://reader034.fdocuments.net/reader034/viewer/2022051511/600b25c6c3b2cd0f130e3525/html5/thumbnails/22.jpg)
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
![Page 23: Profesor: JoséMiguel Rubio L.zeus.inf.ucv.cl/~jrubio/docs/2010-2/CIF 2452/Introduccion.pdf · 1 Profesor: JoséMiguel Rubio L. Magíster en Ingeniería Informática Ingeniero Civil](https://reader034.fdocuments.net/reader034/viewer/2022051511/600b25c6c3b2cd0f130e3525/html5/thumbnails/23.jpg)
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
![Page 24: Profesor: JoséMiguel Rubio L.zeus.inf.ucv.cl/~jrubio/docs/2010-2/CIF 2452/Introduccion.pdf · 1 Profesor: JoséMiguel Rubio L. Magíster en Ingeniería Informática Ingeniero Civil](https://reader034.fdocuments.net/reader034/viewer/2022051511/600b25c6c3b2cd0f130e3525/html5/thumbnails/24.jpg)
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
![Page 25: Profesor: JoséMiguel Rubio L.zeus.inf.ucv.cl/~jrubio/docs/2010-2/CIF 2452/Introduccion.pdf · 1 Profesor: JoséMiguel Rubio L. Magíster en Ingeniería Informática Ingeniero Civil](https://reader034.fdocuments.net/reader034/viewer/2022051511/600b25c6c3b2cd0f130e3525/html5/thumbnails/25.jpg)
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
![Page 26: Profesor: JoséMiguel Rubio L.zeus.inf.ucv.cl/~jrubio/docs/2010-2/CIF 2452/Introduccion.pdf · 1 Profesor: JoséMiguel Rubio L. Magíster en Ingeniería Informática Ingeniero Civil](https://reader034.fdocuments.net/reader034/viewer/2022051511/600b25c6c3b2cd0f130e3525/html5/thumbnails/26.jpg)
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)
![Page 27: Profesor: JoséMiguel Rubio L.zeus.inf.ucv.cl/~jrubio/docs/2010-2/CIF 2452/Introduccion.pdf · 1 Profesor: JoséMiguel Rubio L. Magíster en Ingeniería Informática Ingeniero Civil](https://reader034.fdocuments.net/reader034/viewer/2022051511/600b25c6c3b2cd0f130e3525/html5/thumbnails/27.jpg)
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!
![Page 28: Profesor: JoséMiguel Rubio L.zeus.inf.ucv.cl/~jrubio/docs/2010-2/CIF 2452/Introduccion.pdf · 1 Profesor: JoséMiguel Rubio L. Magíster en Ingeniería Informática Ingeniero Civil](https://reader034.fdocuments.net/reader034/viewer/2022051511/600b25c6c3b2cd0f130e3525/html5/thumbnails/28.jpg)
28
Traductores de lenguaje: intérpretes
PROGRAMA FUENTE
INTERPRETE
EJECUCION DE LA(S)
INSTRUCCION(ES)
INTERPRETADA(S)
![Page 29: Profesor: JoséMiguel Rubio L.zeus.inf.ucv.cl/~jrubio/docs/2010-2/CIF 2452/Introduccion.pdf · 1 Profesor: JoséMiguel Rubio L. Magíster en Ingeniería Informática Ingeniero Civil](https://reader034.fdocuments.net/reader034/viewer/2022051511/600b25c6c3b2cd0f130e3525/html5/thumbnails/29.jpg)
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
![Page 30: Profesor: JoséMiguel Rubio L.zeus.inf.ucv.cl/~jrubio/docs/2010-2/CIF 2452/Introduccion.pdf · 1 Profesor: JoséMiguel Rubio L. Magíster en Ingeniería Informática Ingeniero Civil](https://reader034.fdocuments.net/reader034/viewer/2022051511/600b25c6c3b2cd0f130e3525/html5/thumbnails/30.jpg)
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.
![Page 31: Profesor: JoséMiguel Rubio L.zeus.inf.ucv.cl/~jrubio/docs/2010-2/CIF 2452/Introduccion.pdf · 1 Profesor: JoséMiguel Rubio L. Magíster en Ingeniería Informática Ingeniero Civil](https://reader034.fdocuments.net/reader034/viewer/2022051511/600b25c6c3b2cd0f130e3525/html5/thumbnails/31.jpg)
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