profesor: josémiguel rubio l.zeus.inf.ucv.cl/~jrubio/docs/2010-2/cif 2452/introduccion.pdf · 1...

31
1 Profesor: José Miguel Rubio L. Magíster en Ingeniería Informática Ingeniero Civil en Informática Licenciado en Ciencias de la Ingeniería Técnico en Programación (nivel medio) e-mail 1: [email protected] e-mail 2: [email protected]

Upload: others

Post on 25-Sep-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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