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

Post on 25-Sep-2020

3 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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: jose.rubio.l@ucv.cle-mail 2: jrubio.leon@gmail.com

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

top related