Instituto Tecnoló Tecnológico de Oaxaca PROGRAMACION UNIDAD I INGENIERIA ELECTRICA L. I. Francisco Javier Trujillo Ló López francisco.itoaxaca@gmail.com 1. Introducción a la Computación. 1.1 Breve reseña de la computación. 1.2 Impacto de las computadoras en la sociedad. 1.3 Definiciones. • • • • • Lenguaje de Alto Nivel, Bajo Nivel, Ensamblador y Maquina. Compilador. Traductor. Sistemas Numéricos. Sistemas Operativos. 1.4 Algoritmos. 1.5 Descripción de tipos de programación. 1.5.1 Programación estructurada. 1.5.2 Programación orientada a objetos. 1.5.3 Programación de descripción de Hardware Sistemas Numéricos. 1.1 Breve reseña de la computación. 1.1 Breve reseña de la computación. El Origen de la Computadora, se remonta a varios siglos en la Antigüedad. Surge frente a la necesidad que tenía el Hombre de Contar. ¾ Las Primeras Máquinas de Calcular. Para poder entender la Situación Actual de las Computadoras, es importante conocer el Desarrollo Evolutivo que han tenido que pasar para llegar a este momento. Conocer este Desarrollo sirve también para encontrar las Razones que Ocasionaron la Elección de Ciertos Caminos. • El Ábaco. Los Egipcios 500 años a.C. Inventaron el Primer Dispositivo para Calcular, basado en bolitas atravesadas por alambres. • Posteriormente, a principios del 2° siglo d.C., los chinos perfeccionaron este dispositivo, al cual le agregaron un soporte tipo bandeja, poniéndole por nombre Saun-pan. • El Ábaco permite Sumar, Restar, Multiplicar y Dividir. 1 1.1 Breve reseña de la computación. 1.1 Breve reseña de la computación. ¾ Las Primeras Máquinas de Calcular. ¾ Las Primeras Máquinas de Calcular. • Rodillos Napier. John Napier inventó en 1583 la precursora de las Modernas Calculadoras de Bolsillo de hoy en día. Este Rústico Sistema era un método para Multiplicar y Dividir usando Varillas y Placas Metálicas. • En 1640 Gottfried Leibniz, mejora Pascalina, al agregarle capacidades Multiplicación, División y Raíz Cúbica. • Pascalina. Blaise Pascal en 1645 construyó una complicada Máquina de Sumar y Restar. • La Pascalina Operaciones de Dígitos. realizaba hasta 8 la de • Charles Babbage. Es considerado el Padre de la Computadora. • Es el Inventor Fracasado que se pasó Toda su Vida Intentando Construir la Primera Computadora de Uso General de la Historia y que, pese a haber Fracasado, hizo Aportaciones muy Significativas al Desarrollo de la Informática. 1.1 Breve reseña de la computación. 1.1 Breve reseña de la computación. ¾ Las Primeras Máquinas de Calcular. ¾ Las Primeras Máquinas de Calcular. • La Máquina Diferencial, era un dispositivo de 6 Dígitos que resolvía Ecuaciones Polinómicas por el método diferencial, y que requería, de cualquier manera, bastante trabajo con lápiz y papel. • La • La Máquina Analítica. De haberse construido, 1. Sugirió el uso de Tarjetas Perforadas para Controlar su Máquina. Anticipó el Uso de las mismas para representar un Algoritmo. Inventó el concepto de Ciclos en Programación. Anticipó el uso de Microprogramación. habría sido efectivamente la Primera Computadora de uso General de la Historia. 2. • Las 2 Máquinas que Ideó Babbage eran totalmente mecánicas, usaban Ejes, Engranajes y Poleas para poder Ejecutar los Cálculos 3. 4. Máquina muchas ideas computadoras: Analítica. visionarias Babbage sobre tuvo las 2 1.1 Breve reseña de la computación. 1.1 Breve reseña de la computación. ¾ Las Primeras Máquinas de Calcular. ¾ Las Primeras Máquinas de Calcular. • La Máquina Analítica. Estaba Compuesta por 5 partes: • 1. Dispositivo de entrada de la información: Tarjetas Metálicas Perforadas en miles de combinaciones. Unidad de almacenaje: Tablero que contenía Ejes y Piñones que podían Registrar Dígitos. Procesador: Dispositivo con Cientos de Ejes Verticales y Miles de Piñones. Unidad de control: Dispositivo en forma de Barril con Filamentos y Ejes (como cuerdas de piano). Dispositivo de salida: Plantillas Diseñadas para ser utilizadas en una Prensa de Imprenta. Los Planos y Notas de La Maquina Analítica fueron tan Detallados que en 1991 el Museo Nacional de Ciencia y Tecnología de Londres construyó una Máquina basándose en ellos y usando sólo materiales y herramientas disponibles en la época de Babbage. • La máquina ha funcionado desde entonces, sin ningún problema. 2. 3. 4. 5. 1.1 Breve reseña de la computación. 1.1 Breve reseña de la computación. ¾ Las Primeras Máquinas de Calcular. ¾ Las Primeras Máquinas de Calcular. • Mark I. Era una máquina impresionante, pues medía unos 15.5 mts. de Largo, unos 2.40 mts. de Alto y unos 60 cm. de Ancho, pesando unas 5 Toneladas. • ENIAC. Tenía aproximadamente 18,000 Bulbos. Medía 2.4 mts. de Altura, 90 cm. de Ancho y casi 30 mts. de Largo; y pesaba 30 Toneladas. • Su Funcionamiento era Electromecánico y Recibía sus Secuencias de Instrucciones y Datos a través de Lectoras de Cinta de Papel Perforada y los Números se Transferían por medio de Señales Eléctricas. • Realizaba 10 Adiciones por Segundo. • La Entrada y Salida de Datos se daba con Tarjetas Perforadas, los Programas se construían Alambrando Conexiones entre Sus Componentes, lo cuál Resultaba Terriblemente Tedioso. • Era Capaz de Realizar cinco mil Operaciones Aritméticas por Segundo. 3 1.1 Breve reseña de la computación. 1.1 Breve reseña de la computación. ¾ Las Generaciones de las Computadoras ¾ Las Generaciones de las Computadoras 1ª Generación Usaban Tubos al Vacío para Procesar Información. Usaban Tarjetas Perforadas. Usaban Cilindros Magnéticos. Eran Sumamente Grandes. Se comenzó a utilizar el Sistema Binario para Representar los Datos. 3ª Generación Se Desarrollaron Circuitos Integrados o “Chips" para Almacenar y Procesar la Información. Emerge la industria del “Software“. Las Computadoras se tornan más pequeñas, más ligeras y más eficientes. 2ª Generación Usaban Transistores para Procesar Información. Usaban Pequeños Anillos Magnéticos para Almacenar Información. Se Desarrollaron Lenguajes de Programación como COBOL y FORTRAN. Se comenzó a disminuir el Tamaño de las Computadoras 4ª Generación Se Desarrolló el Microprocesador. Se Reemplaza la Memoria de Anillos Magnéticos por la Memoria de "chips" de Silicio. Se Desarrollan las Computadoras Personales. Se Desarrollan las Supercomputadoras. 5ª Generación Se Desarrollan los Campos de Estudio de: Inteligencia Artificial, Robótica y Sistemas Expertos. 1.2 Impacto de las computadoras en la sociedad. 1.2 Impacto de las computadoras en la sociedad. El Uso Racional de la Informática trae al Hombre una Calidad Superior en su Nivel de Vida al Facilitar su Labor al dedicar más su Tiempo a Tareas Cotidianas. Hoy en día, las Computadoras hacen todo tipo de Gráficos, Pagan Dinero, lo Reciben, lo Transfieren, Dan Saldos, Enseñan a Niños y Adultos, Aprenden y en General, se encuentran en muchas Esferas de la Actividad Humana. El Rápido Auge de la Computadora ha generado un Fenómeno en Múltiples Facetas Culturales, Sociales, Comunicativas y Educativas. La Computadora es la Herramienta más poderosa que el Hombre ha tenido jamás a su Alcance para Manejar Información de todo tipo. La presencia creciente de la Tecnología Genera Entusiasmo, Aceptación, Rechazo, Resistencia y otra gama de reacciones en la Sociedad. La Aparición de las Microcomputadoras ha hecho Rentable la Automatización, sea en Oficinas, Laboratorios, Fábricas, Comercios, Universidades, Supermercados, etc. 4 1.2 Impacto de las computadoras en la sociedad. Pero, ¿Afectan las Computadoras a las Personas y si es así, en qué forma? ¿Inciden sobre la Sociedad, sus Costumbres, su Cultura o sus Medios? La Automatización Industrial Afecta Principalmente a aquellos que Trabajan o han Trabajado donde se han Introducido; pero en las Oficinas nos afectan directamente a todos. Además, nos atienden en los Bancos y Corporaciones de Ahorro; Máquinas de Vídeo con Circuitos Idénticos nos permiten Jugar en Casa o en las Salas de Juegos. 1.3 Definiciones. El Lenguaje es el Medio de Comunicación entre los Seres Humanos a través de Signos Orales y Escritos que poseen un Significado. En un sentido más amplio, es cualquier procedimiento que sirve para comunicarse. Un Lenguaje no sólo consta de “palabras”, sino también de su Pronunciación y los Métodos para combinar las Palabras en Frases y Oraciones. La Enumeración puede ser extensa, pero la realidad es que las Computadoras están casi en todas partes. Los Lenguajes se forman mediante combinaciones de palabras definidas en un diccionario terminológico previamente establecido. 1.3 Definiciones. 1.3 Definiciones. Las combinaciones posibles deben respetar un conjunto de Reglas Sintácticas establecidas, a ello se le conoce con el nombre de Sintaxis. Aunque existen muchas clasificaciones, en general se puede distinguir entre dos clases de lenguajes: Además, las palabras deben tener determinado Sentido, deben ser Comprendidas por un Grupo Humano en un Contexto dado, a ello se le denomina Semántica. • Los Lenguajes Naturales (ingles, alemán, español, etc.), y • Los Lenguajes Artificiales o Formales (matemático, lógico, computacional, etc.). Tanto el lenguaje natural como el lenguaje artificial son humanos. 5 1.3 Definiciones. Se denomina Lenguaje Natural porque aprende (o adquiere) inconsciente involuntariamente. 1.3 Definiciones. se e Ningún bebé decide Aprender o No la Lengua que hablan sus padres, y ningún padre sienta a su hijo y le enseña las Reglas Sintácticas de su Lengua. Las personas hablan y se entienden, pero generalmente no se Cuestionan las Reglas que utilizan al Hablar. Por otra parte, los Lenguajes Artificiales sí se Aprenden de Manera Voluntaria y Conscientemente. Un ejemplo de Lenguaje Artificial son los Lenguajes de Programación utilizados para desarrollar Programas Informáticos. Un Lenguaje de Programación es una Técnica Estándar de Comunicación que permite expresar las Instrucciones que han de ser ejecutadas en una Computadora. 1.3 Definiciones. 1.3 Definiciones. Los Lenguajes de Programación constan de: ¾ Lenguaje Máquina. • Un Conjunto Finito de símbolos, a partir del cual se define el léxico o vocabulario del lenguaje. • Un Conjunto Finito de reglas, la gramática del lenguaje, para la construcción de las sentencias “correctas” del Lenguaje (Sintaxis). • Semántica, que asocia un significado (la acción que debe llevarse a cabo) a cada posible construcción del Lenguaje. El Lenguaje Máquina es el sistema de códigos directamente interpretable por un Circuito Microprogramable. Ordena a la Computadora realizar sus operaciones fundamentales una por una. Dicho lenguaje es Difícil de Usar para las Persona porque trabajar con Números no es muy Cómodo, además de que estos Números están en Formato Binario (0 y 1). 6 1.3 Definiciones. 1.3 Definiciones. ¾ Lenguaje Máquina. ¾ Lenguaje Máquina. El Lenguaje Máquina es el Lenguaje más Primitivo y Depende Directamente del Hardware. La Solución que se tomó fue la siguiente: a cada Acción que sea capaz de realizar la Computadora, se le asocia un Número, que corresponde a su código de operación (opcode). Una Computadora sólo puede entender el Lenguaje Máquina, es por esto que John Von Neumann desarrolló el modelo que lleva su nombre para Representar las Operaciones como Números. Por ejemplo, una Calculadora Programable Simple podría asignar los siguientes opcodes : 1 = SUMA, 2 = RESTA, 3 = MULTIPLICA, 4 = DIVIDE Se tenía el problema de representar las acciones que iba a realizar la computadora, sabiendo que la memoria, al estar compuesta por bits, solamente permite almacenar números binarios. Con esta Representación, es Simple expresar las Pperaciones de las que es capaz el Hardware en la Memoria. 1.3 Definiciones. 1.3 Definiciones. ¾ Lenguaje Máquina. Ensamblador. Supóngase entonces que se quiere realizar la operación 5 * 3 + 2, en la calculadora descrita arriba. En la memoria de la calculadora se podría representar el programa de la siguiente forma: El Lenguaje Ensamblador representa las Acciones de la Computadora mediante Pequeñas Abreviaturas de Palabras en Inglés. Posición Opcode Significado 0 5 5 Primer número de la fórmula 1 3 * 3 es el opcode que representa la multiplicación. 2 3 3 Segundo número de la fórmula 3 1 + 1 es el opcode para la suma. 4 2 2 Último número de la fórmula y en código binario: Comentario 5 101 3 3 1 2 011 011 001 010 Consiste en escribir las Instrucciones utilizando, en vez de Códigos Binarios o Intermedios, una Notación Simbólica o Mnemotécnica para representar los OpCode. Normalmente los Códigos Mnemotécnicos están constituidos por 3 o 4 letras que, en forma abreviada, indican la operación a realizar. 7 1.3 Definiciones. 1.3 Definiciones. Ensamblador. Ensamblador. Por ejemplo: la Suma se suele representar como ADD (suma en inglés), SUB (sustracción), MOV (movimiento), NOT (negación lógica), CALL (llamada a un procedimiento), RET (retorno de procedimiento), etc. Existen Sentencias Declarativas (también denominadas Pseudoinstrucciones o Directivas) para indicar al Traductor la Correspondencia entre Direcciones Simbólicas y Direcciones de Memoria. Se utilizar, para los Datos, Direcciones Simbólicas de Memoria en lugar de Direcciones Binarias Absolutas. Así, por ejemplo, los datos pueden ser referenciados mediante identificadores, tales como SUMA, PROD, CONT, AUX, etc. Con estas Pseudoinstruciones, el Traductor crea una tabla con cuya ayuda, al generar las Instrucciones Máquina, sustituye las Direcciones Simbólicas por las Direcciones Binarias correspondientes. 1.3 Definiciones. 1.3 Definiciones. Ensamblador. Los Programas que traducen Código Simbólico al Lenguaje de Máquina se llaman Ensambladores ("assembler", en inglés), porque son capaces de ensamblar el programa traducido a partir de varias piezas, procedimientos o subrutinas a código binario ("1" y "0") que entiende el procesador. Lenguaje de Bajo Nivel. Un Lenguaje de Bajo Nivel es el que proporciona poca o ninguna Abstracción del Microprocesador. Consecuentemente es fácilmente trasladado a Lenguaje de Máquina. La palabra “Bajo" no implica que el Lenguaje sea inferior a un Lenguaje de Alto Nivel; se refiere a la Reducida Abstracción entre el Lenguaje y el Hardware. 8 1.3 Definiciones. 1.3 Definiciones. Lenguaje de Bajo Nivel. Lenguaje de Bajo Nivel. En general se utiliza este tipo de Lenguaje para Programar Controladores (Drivers). • Se trabaja a nivel de Microinstrucciones, es decir, su programación es al más fino detalle, y • Está Orientado a la Máquina. Pero también tiene importantes inconvenientes: • Imposibilidad de escribir Código Independiente de la Máquina, y • Mayor Dificultad en la Programación y en la Comprensión de los Programas. La Programación tiene ciertas ventajas: • Mayor adaptación al equipo, y • Posibilidad de obtener la máxima Velocidad con mínimo uso de Memoria. 1.3 Definiciones. 1.3 Definiciones. Lenguaje de Alto Nivel. Lenguaje de Alto Nivel. Para acelerar aun más el Proceso de Programación se Desarrollaron los Lenguajes de Alto Nivel, en los que se podía escribir un enunciado para realizar tareas sustanciales. Estos Lenguajes permiten a los Programadores escribir Instrucciones que asemejan al Inglés Cotidiano y contiene notaciones matemáticas de uso común. A partir de FORTRAN, se han desarrollado innumerables lenguajes que siguen el mismo concepto: Este Concepto nació con el Lenguaje FORTRAN (FORmula TRANslation) que, como su nombre indica, surgió como un intento de traducir fórmulas al Lenguaje Ensamblador y por consiguiente al Lenguaje de Máquina. Entre estos lenguajes de alto nivel se encuentra el lenguaje C que servirá de base para el desarrollo del curso • Buscar la mayor Abstracción Posible, y • Facilitar la vida productividad. al programador, aumentando la 9 1.3 Definiciones. 1.3 Definiciones. Código Fuente. Traductor. Se le da el nombre de Código Fuente a los Programas Escritos en un determinado Lenguaje de Programación y que está compuesto por instrucciones escritas por un programador. El código fuente no constituye software propiamente dicho pero es una instancia mediante la cual se logra el software. Los Traductores son Programas que Traducen los Programas en Código Fuente, escritos en Lenguajes de Alto Nivel, a Programas escritos en Lenguaje Máquina. Los Traductores pueden ser Compiladores e Intérpretes. Lenguaje de Alto Nivel Traductor Compilador 1.3 Definiciones. (Traductor) 1.3 Definiciones. Código Fuente Compilador. Componentes Léxicos Fase de Análisis Análisis Léxico Análisis Sintáctico Árbol Sintáctico Análisis Semántico Árbol anotado Sintáctico Tabla de Símbolos Gestor de Errores Fase de Síntesis Generación/Optimización Código Intermedio Código Intermedio de dos tipos: Lenguaje Maquina Interprete Un Compilador es un Programa que lee el Código Escrito en un Lenguaje (Lenguaje Origen), y lo traduce en un Programa equivalente Escrito en otro Lenguaje (Lenguaje Objetivo). Como una parte fundamental de este proceso de Traducción, el Compilador le hace notar al usuario la presencia de errores en el Código Fuente del Programa. Lenguaje Origen COMPILADOR Lenguaje Objetivo Generación/Optimización Código Objeto Código Objeto Mensajes de Error 10 1.3 Definiciones. Compilador. Entrando en más detalle un Programa en Código Fuente es Compilado obteniendo un Archivo Parcial (un Objeto). Luego el Compilador invoca al “linker” que convierte al Archivo Objeto en un Ejecutable con extensión exe; este último archivo es un archivo en formato Binario (ceros y unos) y que puede funcionar por Sí Sólo. 1.3 Definiciones. Código Fuente Compilador Programa Objeto Linker Lenguaje Maquina Intérprete. Los intérpretes no producen un lenguaje objetivo como en los compiladores. Un intérprete lee el código como está escrito e inmediatamente lo convierte en acciones; es decir, lo ejecuta en ese instante. Existen lenguajes que utilizan un intérprete (como por ejemplo JAVA) que traduce en el instante mismo de lectura el código en lenguaje máquina para que pueda ser ejecutado. Código Fuente INTERPRETE Traducción Ejecución 1.3 Definiciones. 1.3 Definiciones. Diferencia entre Compilador e Interprete. Sistemas Numéricos. • Un programa que ha sido Compilado puede correr por sí sólo. • Un Intérprete traduce el Programa cuando lo lee, convirtiendo el Código del Programa directamente en Acciones. • La Ventaja del Intérprete es que dado cualquier programa se puede interpretar en cualquier plataforma (sistema operativo). En cambio, el archivo generado por el compilador solo funciona en la plataforma en donde se le ha creado. • Hablando de la Velocidad de Ejecución, un archivo Compilado es de 10 a 20 veces más rápido que un archivo Interpretado Un Sistema de Numeración es un Conjunto de Símbolos y Reglas que permiten Construir todos los Números Válidos en el Sistema. Un Sistema de Numeración puede Representarse como N = S + R donde: N - Es el Sistema de Numeración Considerado. S - Son los Símbolos Permitidos en el Sistema. R - Son las Reglas de Generación que nos Indican qué Números Son o No Válidos en el Sistema. 11 1.3 Definiciones. 1.3 Definiciones. Sistemas Numéricos. Sistema Decimal. Estas Reglas son Diferentes para cada Sistema de Numeración Considerado, pero una Regla común a Todos es que para Construir Números Válidos en un Sistema de Numeración Determinado sólo se pueden utilizar los Símbolos Permitidos en ese Sistema (para indicar el sistema de numeración utilizado se añade como subíndice al número). Es un Sistema de Numeración en el que las Cantidades se Representan utilizando como Base el Número Diez, por lo que se compone de las cifras: 0, 1, 2, 3, 4, 5, 6, 7, 8 y 9. Este conjunto de símbolos se denomina Números Árabes. 12510 es un Número Válido en el Sistema Decimal. 3B16 es un Número Válido en el Sistema Hexadecimal. Es el Sistema de Numeración usado habitualmente en Todo el Mundo (excepto ciertas culturas) y en todas las áreas que requieren de un Sistema de Numeración. 100 000 10 000 1 000 100 10 1 105 104 103 102 101 100 1.3 Definiciones. 1.3 Definiciones. Sistema Binario. Sistema Binario. Es un Sistema de Numeración en el que los Números se Representan utilizando las Cifras 0 y 1. Convertir 011001002 a Decimal: 128 64 32 16 8 4 2 1 27 26 25 24 23 22 21 20 Convertir 5210 a Binario: 00110100 2 División Cociente Resto 52 / 2 26 0 26 / 2 13 0 13 / 2 6 1 6/2 3 0 3/2 1 1 1 10010 0 * 128 1 * 64 1 * 32 0 *16 0*8 1*4 0*2 0 *1 27 26 25 24 23 22 21 20 ( 0 + 64 + 32 + 0 + 0 + 4 + 0 + 0 ) 1 12 1.3 Definiciones. 1.3 Definiciones. Sistema Hexadecimal. Sistema Hexadecimal. Es el Sistema de Numeración de Base 16. Su uso actual está muy vinculado a las Ciencias de la Computación. Se compone de las cifras: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A (10), B (11), C (12), D (13), E (14) y F (15). Convertir 3E0 16 777 216 1 048 576 65 536 4 096 256 16 1 166 165 164 163 162 161 160 Convertir 33210 a Hex: 14C 16 División Cociente Resto 332 / 16 20 12 = C 20 / 16 1 4 1 16 a Decimal: 992 10 65 536 4 096 3 * 256 E * 16 0*1 164 163 162 161 160 ( 0 * 65 536 ) + ( 0 * 4096 ) + ( 3 * 256 ) + ( 14 * 16) + ( 0 * 1 ) ( 0 + 0 + 768 + 224 + 0 ) 1 1.3 Definiciones. 1.3 Definiciones. Arquitectura de Computadoras. Componentes de una computadora ¿Que es una Computadora? Una computadora de cualquier forma que se vea tiene dos tipos de componentes: El Hardware y el Software. Una computadora es una máquina capaz de aceptar datos a través de un medio de entrada, procesarlos automáticamente bajo el control de un programa previamente almacenado, y proporcionar la información resultante a través de un medio de salida. Es un dispositivo capaz de realizar cálculos y tomar decisiones lógicas a velocidades hasta miles de millones de veces más rápidas que las alcanzables por los seres humanos Hardware.- Es la parte Física de la Computadora; corresponde a las partes que podamos percibir con el sentido del tacto. Software.Son todos aquellos Programas necesarios para que la computadora funcione apropiadamente. El software dirige de forma adecuada a los elementos físicos. 13 1.3 Definiciones. 1.3 Definiciones. El Hardware esta compuesto por cinco unidades o secciones básicas: Unidades de Entrada y Salida Unidades de Entrada y Salida Es la parte del ordenador que le sirve para comunicarse con el exterior; es decir, para recibir y emitir información. A las unidades de entrada y salida se le conoce también como Periféricos. El lector de CD/DVD-ROM sirve para leer la información almacenada en un CD/DVD El monitor nos muestra la información. Mediante la impresora se obtiene una versión en papel de la información procesada por la computadora Las bocinas sirven para escuchar los sonidos que emite la computadora a través de una tarjeta de sonido El Teclado y el Mouse sirven para introducir los datos a la computadora 1.3 Definiciones. 1.1 Arquitectura de la Computadora. Unidad Central de Procesamiento (CPU) La CPU se divide en dos partes: La Unidad Central de Proceso (CPU) es la parte más importante de una Computadora. Esta unidad se encarga de realizar las tareas fundamentales y es por ello el elemento principal de un sistema computarizado. Si hacemos una comparación entre una Computadora y el Cuerpo Humano, la CPU haría el papel del Cerebro: atender las solicitudes, mandar y hacer controlar la ejecución. Un microprocesador es un circuito integrado o chip que contiene a la CPU. Su tamaño es algo menor que el de una caja de cerrillos • Una parte que controla todo el proceso (Unidad de Control), y • Otra parte en la que se realizan las operaciones aritméticas y lógicas que ordene la Unidad de Control (Unidad Aritmético-Lógica). La Unidad de Control actúa como el Corazón del Sistema, enviando impulsos eléctricos (Señales de Control) para secuenciar (poner en Orden) y sincronizar (Marcar el Tiempo) el funcionamiento de los componentes restantes. 14 1.1 Arquitectura de la Computadora. 1.1 Arquitectura de la Computadora. Unidad de Memoria Memoria RAM (Random Access Memory) La Memoria Principal es el Dispositivo que sirve para Almacenar los Programas (Instrucciones) que se quieran ejecutar y para Almacenar los Datos, los Cálculos Intermedios y los Resultados. Sólo los Datos Almacenados en la Memoria son procesables por la CPU. Los Datos que estén contenidos en algún Dispositivo de Almacenamiento Externo deben ser previamente introducidos a la Memoria, por medio de una Unidad Periférica. La Memoria de Acceso Aleatorio esta destinada a contener los Programas cambiantes del usuario y los Datos que se vayan necesitando durante la ejecución de dichos Programas. La memoria RAM se llama también Memoria de Usuario, por ser la Memoria con la que trabaja el sistema para ejecutar los Programas. Cuando se hace referencia a la capacidad de memoria de una Computadora se está hablando de la memoria RAM del sistema. Existen 2 Divisiones en Función de las posibilidades de lectura/escritura o solamente lectura: RAM y ROM. 1.1 Arquitectura de la Computadora. 1.1 Arquitectura de la Computadora. Memoria ROM (Read Only Memory) Unidad de Almacenamiento Secundario Memoria de Solo Lectura, son las Memorias que Sólo permiten la Lectura y no pueden ser Re-Escritas. Su contenido viene grabado por el Fabricante de la Computadora y no puede ser cambiado. Esta Memoria se usa para Almacenar Información Vital para el Funcionamiento del Sistema. • La Gestión del Proceso de Arranque • La Verificación Inicial del Sistema • La Carga del Sistema Operativo, y • Diversas rutinas de Control de Dispositivos de Entrada/Salida. Estos programas forman la llamada BIOS (o ROMBIOS) de la Computadora (Basic Input Output System). Es el Almacenamiento de Largo Plazo y de Alta Capacidad de la Computadora. Los Programas y Datos que no están siendo utilizados por las otras Unidades normalmente se colocan en Dispositivos de Almacenamiento Secundario hasta que necesiten, posiblemente horas, días, meses o incluso años después. 15 1.3 Definiciones. 1.3 Definiciones. El Software ¿Qué es un Programa? El hardware, por sí mismo, no puede realizar ninguna función; es necesario que algo la dirija y organice. Este "algo" son las instrucciones que el programador escribe. Estas instrucciones, agrupadas en forma de programas que son depositados en la Memoria de la Computadora, forman lo que se denomina “Software". El software es el nexo de unión entre el hardware y el hombre. SOFTWARE Un programa es una Secuencia de Instrucciones que pueden ser Interpretadas por una Computadora, obteniendo como Fruto de esa Interpretación un determinado Resultado. Podemos clasificar en software en dos grupos: • Software de Sistema (Sistema Operativo), y USUARIO HARDWARE (COMPUTADORA) • Software de Aplicación. 1.3 Definiciones. 1.3 Definiciones. Software del Sistema Software del Sistema El Sistema Operativo es un Conjunto de Programas Destinados a permitir la Comunicación del Usuario con una Computadora, y Gestionar sus Recursos de Manera Eficiente. El software de sistema se puede dividir en: Comienza a Trabajar cuando se Enciende Computadora, y Gestiona el Hardware de Máquina desde los Niveles Más Básicos. la la Características: Administración de Tareas y Usuarios. • Los Programas de Control son los que van orientados a facilitar, automatizar y mejorar el rendimiento de los procesos en la Computadora. • Los Programas de Servicio o de Proceso son los que van Orientados a proporcionar facilidades de Expresión y Comunicación al usuario. Manejo de Recursos. 16 1.4 Algoritmos. 1.4 Algoritmos. La Resolución de Problemas es el Motivo de la Programación. Análisis del Problema. Se determina que hace el Programa. Esta fase requiere una clara definición donde se contemple exactamente lo que debe hacer el Programa y el Resultado o Solución Deseada. Dado que se busca una Solución se precisan especificaciones de Entrada y Salida. Para Programar cualquier Tarea antes hay que encontrar el Camino y dar los Pasos para Resolverla. Fases de Resolución Para poder definir bien un Problema es conveniente responder a las siguientes preguntas: • ¿Qué Entradas se requieren? (cantidad y tipo) • ¿Cuál es la Salida Deseada? (cantidad y tipo) • ¿Qué Método Produce la Salida Deseada? • Definición del Problema. • Análisis del Problema. • Diseño del Algoritmo. Definición del Problema. Es la descripción Problema para conocer la Temática a tratar. del Diseño del Algoritmo. Se Determina como hace el programa la tarea solicitada. 1.4 Algoritmos. 1.4 Algoritmos. Un Algoritmo es un Conjunto Finito de Instrucciones o Pasos que sirven para Ejecutar una Tarea y/o Resolver un Problema. Estructura Básica de un Algoritmo: Un Algoritmo es un Sistema por el cual se llega a una Solución, teniendo en cuenta que debe de ser Definido, Finito y Preciso. • Por Preciso entendemos que cada paso a seguir tiene un orden. • Finito implica que tiene un determinado número de pasos, o sea, que tiene un fin. • Definido, que si se sigue el mismo proceso más de una vez llegaremos al mismo resultado. 1. 2. 3. 4. 5. Inicio. Datos de Entrada (Operaciones Básicas). Procesamiento de los Datos. Datos de Salida. Fin. Ejemplo: Ver una película Buscar el videocasete de la película SI el televisor y la video se encuentran apagados, encenderlos. Sacar el video del estuche Introducirlo en la video casetera Tomar el control del televisor y la video Dirigirme a el sofá Ponerme cómodo Disfrutar la película 17 1.4 Algoritmos. 1.4 Algoritmos. Ej. Diseñar un Algoritmo para calcular el área y el perímetro de un rectángulo. Análisis del problema. • Datos de entrada: b y h (base y altura) • Datos de salida: área y perímetro • Procesos: área = b * h y Perímetro = 2 * (b + h) Definición del Problema. Calcular área y perímetro de un rectángulo. Diseño de la solución. Análisis del problema. Para desarrollar este problema es necesario conocer las fórmulas para obtener tanto el área como el perímetro de un rectángulo. • Sea b=Base y h=Altura, las Fórmulas a utilizar son: • Area = Base * Altura • Perímetro = 2 * (Base + Altura) 1. 2. 3. 4. 5. 6. 7. Inicio Leer b, h a=b*h p = 2 (b + h) Escribir "área:", a Escribir "perímetro:", p Fin 1.4 Algoritmos. 1.5 Descripción de Tipos de Programación. Ejercicios Propuestos. ¾ Programación Estructurada. 1. Un Maestro desea saber que Porcentaje de Hombres y que Porcentaje de Mujeres hay en un grupo de estudiantes. Es 2. Se desea un Algoritmo para obtener el Valor Absoluto de un Número. una forma de escribir Computadoras de forma Clara. Programación de Para ello utiliza únicamente Tres Estructuras: 3. Un Algoritmo para mostrar los Números del 1 al 10. • Estructura Secuencial, • Estructura Selectiva, y • Estructura Iterativa 4. Dada las Horas Trabajadas de una Persona y la Tarifa de Pago, calcular su salario. Solamente con estas Tres Estructuras se puede hacer un Programa de Computadora. 18 1.5 Descripción de Tipos de Programación. 1.5 Descripción de Tipos de Programación. ¾ Programación Estructurada. ¾ Programación Estructurada. • Estructura Secuencial • Estructura Selectiva Una Estructura de Programa es Secuencial si se ejecutan Una Tras Otra a modo de Secuencia. Permite la realización de una Instrucción u otra según un Criterio, solo una de estas Instrucciones se Ejecutara. Ejemplo: auxiliar:= x x:= y y:= auxiliar si señala el comienzo de la instrucción condicional, y se espera que después esté la condición de control de la instrucción. 1º Guardamos una copia del valor de x en auxiliar. 2º Guardamos el valor de y en x, se pierde el valor anterior de x pero no importa porque tenemos una copia en auxiliar. 3º Guardamos en y el valor de auxiliar, que es el valor inicial de x. entonces señala el fin de la condición, y después estará la instrucción a realizar si la condición es cierta. si_no separa la instrucción que se ejecutará si la condición es cierta de la que se ejecutará si es falsa. Fin si indica que la instrucción condicional finaliza y el programa seguirá su curso. 1.5 Descripción de Tipos de Programación. 1.5 Descripción de Tipos de Programación. ¾ Programación Estructurada. ¾ Programación Estructurada. • Estructura Selectiva • Estructura Iterativa Ejemplo: si a > b entonces Escribir a es mayor que b si_no Escribir a no es mayor que b Fin si Esta instrucción selectiva puede presentar dos mensajes, uno a es mayor que b, y el otro a no es mayor que b, solo uno de ellos será presentado, según el resultado de la comparación de a y b, si el resultado de a > b es cierto, se presenta el primer mensaje, si es falso el segundo, las palabras si, entonces, si_no, fin si; son propias de la instrucción (palabra reservadas) que tienen un significado en el lenguaje, sirven de separadores, y el usuario no debe utilizarlas salvó para este fin. Un Bucle Iterativo o Iteración de una Secuencia de Instrucciones, hace que se Repitan Mientras se Cumpla una Condición, en un principio el Número de Iteraciones no tiene porque estar determinado. mientras: señala el comienzo del bucle y después de esta palabra se espera la condición de repetición, si la condición es cierta se pasa al cuerpo del bucle, si no al final de la Instrucción mientras. hacer: señala el final de la condición, lo que esté después será el cuerpo del bucle. fmientras: señala el final del cuerpo del bucle y de la Instrucción mientras. 19 1.5 Descripción de Tipos de Programación. 1.5 Descripción de Tipos de Programación. ¾ Programación Estructurada. ¾ Programación Orientada a Objetos. • Estructura Iterativa Es Ejemplo: b:= 7 Escribir a a:= a + 1 fmientras los La POO Expresa un Programa como un Conjunto de estos Objetos, que colaboran entre ellos para Realizar Tareas. Esto permite hacer los Programas y Módulos más Fáciles de Escribir, Mantener y Reutilizar. a:= 0 mientras b > a hacer un Paradigma de Programación que define Programas en Términos de “Clases de Objetos“. El bucle mientras, se Repite Mientras la Condición sea cierta, esta Condición se comprueba al Principio por lo que el cuerpo del bucle puede que no se ejecute nunca, cuando la Condición es falsa en un principio, o que se Repita tantas veces como sea Necesario, mientras la condición sea cierta. Un Objeto es una representación Detallada, Concreta y Particular de un "algo". Tal representación determina su Identidad, su Estado y su Comportamiento Particular en un momento dado. 1.5 Descripción de Tipos de Programación. 1.5 Descripción de Tipos de Programación. ¾ Programación Orientada a Objetos. ¾ Programación de Descripción de Hardware. La Clase es un Modelo o Prototipo que define las Variables y Métodos Comunes a todos los Objetos de Cierta Clase. También se puede decir que una Clase es una Plantilla Genérica para un Conjunto de Objetos de Similares Características. Las siguientes Características son las más importantes de la POO: • Abstracción • Encapsulamiento • Polimorfismo • Herencia El Objetivo de los Lenguaje de Descripción de Hardware (HDL), es el de Programar un Circuito Electrónico. Los HDL son utilizados para describir la Arquitectura y Comportamiento de un Sistema Electrónico, el cual fue Desarrollado para Trabajar con Diseños Complejos. El • • • Flujo de Diseño suele ser típico: Definir la(s) tarea(s) que tiene que hacer el Circuito. Escribir el Programa usando un Lenguaje HDL. Comprobación de la Sintaxis y Simulación del Programa. • Programación del Dispositivo y Comprobación del Funcionamiento. 20 Bibliografía. http://es.wikipedia.org http://www.iqcelaya.itc.mx/~vicente/Programacion/Curs oUnidad1.pdf http://www.uag.mx/214/I_LENGUAJES_DE_DESCRIPCIO N_DE_HARDWARE.pdf http://enriquebarrueto0.tripod.com/algoritmos.htm http://enriquebarrueto0.tripod.com/algoritmos/cap01.pdf http://enriquebarrueto0.tripod.com/algoritmos/cap02.pdf 21