1.1 El ordenador: una mquina que procesa algoritmos. 1.1.1 Qu tareas puede realizar un ordenador?
1.2 Nocin de proceso computacional. Estado de un proceso
1.3 Estructura de un ordenador: naturaleza digital
1.4 Definicin de informacin. Codificacin
1.5 Un ordenador como una jerarqua de mquinas virtuales
1.6 Lenguajes de programacin. Traductores
1.7 La creacin de software
1.8 La informtica y el papel de la programacin de ordenadores PDF Created with deskPDF PDF Writer - Trial :: http://www.docudesk.com El ordenador, una mquina que procesa algoritmos.
Era digital. Sociedad de la informacin Internet (servicio Web) Nuevas formas de comunicacin Nuevos modelos de negocios Un ordenador es un ejemplo de mecanismo
MECANISMO INDICADORES Cisterna Nivel del agua y abertura Reproductor de CD Pista que se ests reproduciendo y posicin de ella Reloj digital Hora, minutos y segundos Ordenador digital Variables o elementos de memoria
Definicin de ordenador Mecanismo digital de propsito general que se convierte en un mecanismo para uso especfico cuando procesa un determinado algoritmo. Nminas de una empresa Control de temperatura de una habitacin
Software frente hardware
PDF Created with deskPDF PDF Writer - Trial :: http://www.docudesk.com
El ordenador, una mquina que procesa algoritmos.
Mquina de propsito general + operaciones = mquina de propsito particular
Algoritmo = Secuencia de instrucciones (operaciones) que especifican las acciones que deber ejecutar un computador para realizar una tarea
Cmo se conoce el grado de cumplimiento de la tarea? A travs de su estado (variables)
PROCESAMIENTO DATOS RESULTADOS Lenguaje mquina 100000110 000110110 000110100 ... PDF Created with deskPDF PDF Writer - Trial :: http://www.docudesk.com El ordenador, una mquina que procesa algoritmos.
El computador ejecuta operaciones muy simples (instrucciones mquina)
Lenguajes de programacin. Notaciones que expresan las operaciones que pretendemos que ejecute el ordenador, escritas con un nivel de abstraccin superior al del lenguaje mquina
Necesidad de un traductor
Es habitual utilizar en el anlisis del problema una notacin algortmica, con el fin de evitar los detalles propios de un lenguaje de programacin, y centrarse ms en los aspectos que describen el proceso que debe llevar a cabo el computador
Programa versus algoritmo PDF Created with deskPDF PDF Writer - Trial :: http://www.docudesk.com PROPIEDADES DE UN ALGORITMO
Finitud: La longitud y duracin de un algoritmo son finitos.
Definitud: Un algoritmo determina sin ningn tipo de ambigedad las operaciones que debe ejecutar un ordenador. Estas operaciones se deben de interpretar de una nica forma.
Efectividad. Las reglas pueden ser ejecutadas por un ser humano con papel y lpiz.
Generalidad. Normalmente, un algoritmo resuelve una clase de problemas y no un problema en particular. PDF Created with deskPDF PDF Writer - Trial :: http://www.docudesk.com PROPIEDADES DE UN ALGORITMO
Entradas y salidas. Un algoritmo puede tener varias entradas o ninguna, sin embargo, al menos debe tener una salida, el resultado que se pretende obtener.
Eficiencia. La ejecucin de un programa consume una serie de recursos: tiempo y memoria. Estos recursos son limitados y por tanto ante dos algoritmos que solucionen el mismo problema, ser ms eficaz el que utilice el menor nmero de recursos.
Determinismo. Un algoritmo se comporta de la misma forma para los mismos datos de entrada. PDF Created with deskPDF PDF Writer - Trial :: http://www.docudesk.com LA NOCIN DE ALGORITMO ES MS GENERAL
Algoritmo Problema Conjunto de instrucciones para tejer un jersey Partitura Un plan de trabajo para cursar una licenciatura Receta de cocina Mtodo de Newton Tejer un jersey
Tocar una sonata Cursar una licenciatura
Cocinar un bizcocho Calcular las races de una funcin
DETERMINISTA? DEFINIDO SIN AMBIGEDADES? Ingredientes: Huevos Harina leche
Receta para bizcocho Mezclar la levadura con la harina, batir los huevos, cocinar durante media hora. Datos de entrada Algoritmo Ordenador Datos de salida PDF Created with deskPDF PDF Writer - Trial :: http://www.docudesk.com QU TAREAS PUEDE REALIZAR UN ORDENADOR?
Problemas del mundo real: Computables Tratables Intratables No computables
Un problema es computable cuando existe un algoritmo que lo resuelve
Un problema computable es tratable si existen un algoritmo eficiente (orden polinomial) que lo resuelve
Problemas NP-completos un caso especial de algoritmos intratables
Existe un algoritmo eficiente para un problema NP-completo si y slo existen algoritmos eficientes para todos los problemas NP-completos PDF Created with deskPDF PDF Writer - Trial :: http://www.docudesk.com Nocin de proceso computacional. Estado de un proceso
PROCESO VARIABLES
LOCAL 3 VISITANTE 1
VARIABLES V 1 ,..,V n
INSTRUCCIONES I 1 M 1 ,.., ,..,I M ..M M PROGRAMA Cambio estado en las variables PROCESO
A 1 ---------> E 1 ,.., ,.., ,..,A M---------> E M PDF Created with deskPDF PDF Writer - Trial :: http://www.docudesk.com Nocin de proceso computacional. Estado de un proceso
Definicin de Proceso
Un proceso es un algoritmo en ejecucin y es caracterizado por una sucesin de estados.
Definicin de Estado de un proceso
Determina el grado de progreso de un proceso, viene dado por los valores de las variables y un indicador de la siguiente instruccin a ejecutar.
Definicin de Variable
Magnitud o informacin manejada por un algoritmo a la que se da un nombre y registra un valor. Representa una entidad del mundo real cuyo valor es relevante en el problema a resolver. PDF Created with deskPDF PDF Writer - Trial :: http://www.docudesk.com Nocin de proceso computacional. Estado de un proceso
Problema: Dado un entero n 0 calcular el factorial de n (n!) definido como 0! = 1 n! = n (n 1) (n 2) ... 1
LXICO n es un entero 0 i es un entero 1 f es un entero 1 ALGORITMO 1. Introducir n 2. Asignar el valor 1 a f 3. Asignar el valor 1 a i 4. Si i > n entonces mostrar f en pantalla y fin de la ejecucin 5. Asignar a f el producto de i por el valor anterior de f 6. Sumar 1 a i 7. Ir al paso 4 PDF Created with deskPDF PDF Writer - Trial :: http://www.docudesk.com Nocin de proceso computacional. Estado de un proceso
PDF Created with deskPDF PDF Writer - Trial :: http://www.docudesk.com LENGUAJE MQUINA
Es necesario conocer la estructura y funcionamiento del ordenador en particular. Naturaleza binaria de las instrucciones Ausencia de generalidad. Un programa se escribe para un procesador con un determinado juego de instrucciones. Los programas son muy largos debido a la simplicidad de las instrucciones. El programador debe idear el programa en trminos del flujo de ejecucin que sigue el procesador.
Un ordenador como una jerarqua de mquinas virtuales
CADA NIVEL OFRECE UNOS SERVICIOS QUE EL USUARIO DE AQUEL NIVEL PUEDE UTILIZAR SIN NECESIDAD DE CONOCER EL RESTO DE NIVELES
Lenguaje de la aplicacin Instrucciones con mayor expresividad e independientes del LM, portabilidad Llamadas al sistema, lenguaje de rdenes Nemnicos, formato decimal y hexadecimal para valores y direcciones Macros, servicios del SO NIVEL MQUINA NIVEL SISTEMA OPERATIVO NIVEL LENGUAJE ENSAMBLADOR NIVEL APLICACIN NIVEL LENGUAJE DE PROGRAMACIN USUARIO HARDWARE Microsoft Word ENTORNO GPS GNAT ADA, EMACS, ... Linux MS DOS Windows NT ... Pascal C Java ... PDF Created with deskPDF PDF Writer - Trial :: http://www.docudesk.com
Lenguajes de programacin. Traductores
Etapas en la compilacin: Anlisis lxico Anlisis sintctico Anlisis semntico Generacin de cdigo intermedio Generacin de cdigo mquina Optimizacin del cdigo.
Programa fuente
Intrprete
Programa fuente
Programa Objeto
Lecuc1n 1aducc1n y Lecuc1n s1mu1fnea
Compilador PDF Created with deskPDF PDF Writer - Trial :: http://www.docudesk.com Lenguajes de programacin. Traductores
Paradigma de programacin Coleccin de conceptos que guan el proceso de construccin de un programa, determinando su estructura. Dichos conceptos controlan la forma en que se piensan y formulan los programas.
Tres tipos de paradigmas: Imperativo o procedural Estructurados: Algol, Pascal, Ada No Estructurados: Fortran, Basic, Cobol, C Declarativo Relacional: Prolog, Parlog Funcional: Lisp, Hope, Miranda Orientado a objetos: Smalltalk, Eiffel, C++, Java
PDF Created with deskPDF PDF Writer - Trial :: http://www.docudesk.com La creacin de software
Tamao de los problemas
En los inicios de la programacin programar era dominar un lenguaje de programacin
Los fracasos en diferentes proyectos dio lugar a la crisis del software. 1968 (Conferencia de la OTAN en Garmisch). Naci la Ingeniera del Software.
Disciplina que se ocupa de la aplicacin del conocimiento cientfico al diseo y construccin de programas de ordenador, y a las actividades asociadas de documentacin, operacin y mantenimiento, lo que proporciona un enfoque sistemtico
Aunque se ha mejorado, contina la crisis. PDF Created with deskPDF PDF Writer - Trial :: http://www.docudesk.com La creacin de software
Frederick P. Brooks en su artculo No Silver Bullet -- Essence and Accident in Software Engineering, 1987.
Crear software siempre sera una actividad difcil, ya que existan problemas esenciales que ninguna tcnica podra hacerlos desaparecer: los sistemas software son sistemas muy complejos y sujetos a continuos cambios, y los requisitos son difciles de capturar
La reutilizacin, las tcnicas para mejorar la captura de los requisitos y disponer de buenos programadores son las mejores armas para atacar la dificultad inherente a la construccin de software.
ANLISIS DEL PROBLEMA DISEO DE LA SOLUCIN CONSTRUCCIN DEL PROGRAMA VALIDACIN DOCUMENTACIN MANTENIMIENTO
PDF Created with deskPDF PDF Writer - Trial :: http://www.docudesk.com La informtica y el papel de la programacin de ordenadores
Informtica versos TIC (Tecnologas de la Informacin y las Comunicaciones)
Sinergia entre informtica, comunicaciones y electrnica
Definicin de Informtica (1989. ACM/IEEE) disciplina del estudio sistematizado de los procesos algortmicos que describen y transforman informacin, su teora, anlisis, diseo, eficiencia, implementacin, y aplicacin. La cuestin fundamental es qu puede ser automatizado de un modo eficiente?
PDF Created with deskPDF PDF Writer - Trial :: http://www.docudesk.com La informtica y el papel de la programacin de ordenadores
Informtica es simultneamente una disciplina matemtica, cientfica y una ingeniera. Tres formas de pensar propias de la:
Teora: usando, desarrollando y entendiendo los principios matemticos que se aplican Matemtica discreta Computabilidad Teora de la complejidad Gramticas formales y autmatas Con el pensamiento terico se describen y prueban relaciones entre objetos.
Abstraccin: esta forma de pensar tiene su raz en las ciencias experimentales y el mtodo cientfico. Recoleccin de datos y formacin de hiptesis, Definicin de un modelo Prediccin Diseo Experimentacin Anlisis de resultados
PDF Created with deskPDF PDF Writer - Trial :: http://www.docudesk.com La informtica y el papel de la programacin de ordenadores
Diseo: tiene que ver con el aspecto de ingeniera de la informtica. Se construyen artefactos (aplicaciones, ordenadores, sistemas operativos, traductores, etc.) de un modo sistemtico, aplicando tcnicas bien definidas. Requisitos Especificaciones Se disean y analizan sistemas o mecanismos para resolver problemas y se prueban.
Marco curricular ACM e IEEE (Computing Curricula 2001). Se identifican catorce reas dentro de la informtica Estructuras Discretas Fundamentos de Programacin Algoritmos y Complejidad Lenguajes de Programacin Arquitectura y Organizacin Sistemas Operativos Computacin Centrada en la Red Ingeniera del Software Gestin de la Informacin Sistemas Inteligentes Interaccin HombreMquina Informtica Grfica Computacin Cientfica Cuestiones Sociales y Profesionales.
PDF Created with deskPDF PDF Writer - Trial :: http://www.docudesk.com