Download Proceso

Document related concepts

MIX (lenguaje de programación) wikipedia , lookup

Little man computer wikipedia , lookup

Programación funcional wikipedia , lookup

Transcript
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)
Oficina: 3-20
e-mail 1: [email protected]
e-mail 2: [email protected]
1
INF 154
Laboratorio
de Programación
Evaluaciones
Prueba 1: Jueves 16 de Septiembre
Prueba 2: Jueves 21 de Octubre
Prueba 3: Jueves 18 de Noviembre
Recuperativa: Jueves 25 de Noviembre
Examen Final: Jueves 02 de Diciembre
3 Controles: cada uno antes de cada cátedra
8 Tareas: Fechas por definir
3
Nota Final
Evaluación
Nota Final = 0,4 * NE + 0,6 * (P1 * 0,15 + P2 * 0,25 + P3 * 0,3 + PT
* 0,3)
donde:
NE: Nota de examen
Pi: Nota prueba i (i  {1, 2 ,3})
PT: Promedio de tareas
El alumno se exime si:
Promedio de Presentación a Examen es >= 5.0 y P1 >= 4.0 y P2 >= 4.0 y P3 >= 4.0 y PT >= 4.0 ó Promedio de
Presentación a Examen es >=5.5
4
Metodología
Trabajo en Equipos:
El número de integrantes debe ser 4.
Cada equipo cuenta con un facilitador (líder), escritor, presentador y
proveedor de materiales.
Las tareas, trabajos de clase y de laboratorio se desarrollan en equipo.
Co-evaluación:
El líder debe evaluar a los miembros del equipo según una escala de
evaluación de 1 a 7, así mismo, los miembros del equipo deberán
evaluar a su líder. Para ello 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.
5
Metodología
Portafolio de aprendizaje:
Cada equipo debe trabajar en un ambiente colaborativo mediante un
portafolio digital de aprendizaje.
Este debe incluir la resolución de TODOS los ejercicios de clases y
guías de problemas. También se realizará la entrega de tareas en esta
plataforma.
La no entrega del portafolio o entrega incompleta implica
reprobación con nota mínima.
6
Clase de introducción
1.
2.
3.
4.
5.
Historia de la Programación
¿Qué es una computadora?
Programas y algoritmos
Lenguajes de programación
Lenguaje C
7
Historia de la Programación
• Resumen
http://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
(hardware)
Unidad aritmetica
yProcesador
logica (ALU)
Unidad
de
(CPU)
Control (CU)
Dispositivos de entrada
teclado
ratón
Memoria Principal
(RAM)
Programa
Dispositivos de salida Dispositivos de
almacenamiento de datos
pantalla
impresora
disco duro
lector/grabador de CD-ROM
10
lector/grabador de disquete
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: My name is Anders.
ASCII: 77-121-32-110-97-109-101-32-105-115-32-65-110-100-101-114-115-46
18 bytes
13
Representación de imagen
00000000
00110110
00100010
00100010
00110110
00000000
00110110
00000000
• División de la imagen en una matriz de pixels (unidad
de la imagen)
• Cada pixel asociado con un color
14
Representación de sonido
4 8 12 13 12 10 8…
• Discretización de la amplitud
• Un byte para cada valor
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
RAM
1 12
2 125
3 45
4 2
CPU
5 0
6 10
7 32
8 64
9 15
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.
2.
3.
4.
5.
Poner la bolsa de té en la taza
Poner el agua a hervir en la tetera
Verter el agua hervida en la taza
Añadir leche
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.
2.
3.
4.
Leer el pedido
Examinar la ficha del cliente
Si el cliente es solvente, aceptar pedido
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
OPCION 1
OPCION 2
PROGRAMA FUENTE
Fase de compilación
Fase de compilación
programa
ejecutable
COMPILADOR
ENLAZADOR
(binder, linker)
programa
objeto
Fase de ejecución
Fase de ejecución
EJECUCION
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
Preprocesamiento
Fichero Fuente
.c
Paso a Ensamblador
Compilación
Enlazado
Fichero Ejecutable
.s
Ensamblar
.o
.a
.o
.o
.o
.o
Librerías
32