Download Proceso
Document related concepts
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: jose.rubio.l@ucv.cl e-mail 2: jrubio@inf.ucv.cl 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