Asignatura: PROGRAMACIÓN Código: TE243 Prerrequisitos: Algebra Lineal (S)* Intensidad horaria: 80 H.P.S. Profesor: Jose Norbey Sanchez Fernandez Universidad Tecnológica de Pereira Programa de Tecnología Eléctrica MÓDULO 1: Sistemas de Cómputo Introducción: un sistema de cómputo es un conjunto de elementos electrónicos que interactúan entre sí, (Hardware) para procesar y almacenar información de acuerdo a una serie de instrucciones. (Software). En este módulo, podemos identificar las partes físicas internas y externas o periféricos que conforman un computador y los diferentes tipos de software o programas que realizan tareas exactas o específicas y que se utilizan para manipular datos y programas en un computador y hacen parte del soporte lógico de un sistema informático. Los diagramas de flujo son un conjunto de cajas que unidos a través de flechas indican la representación gráfica de un algoritmo. Finalmente se elaboran los pasos para la elaboración de un programa. Objetivos: Conocer las partes físicas de un computador y cómo funcionan Identificar diferentes tipos de software o programas Almacenamiento informático conversión de binario a decimal un dato de 8 bits Identificar diferentes lenguajes de programación Representación gráfica de los algoritmos Pasos para la elaboración de un programa Contenido Lección 1: Hardware 1.1 El computador, definición, partes de un computador, proceso de la información (datos) Lección 2: Software 2.1 Arquitectura interna 2.2 Lenguajes de programación 2.3 Representación gráfica de los algoritmos Lección 3: Diseño de programas 3-1 Pasos para la elaboración de un programa 3.2 Características de un algoritmo
DESARROLLO Lección 1: Hardware Introducción: representa todos los componentes que constituyen la parte física de un computador, que junto con los dispositivos que realizan las tareas de entrada y salida llamados periféricos se conocen con el nombre de hardware. Objetivos: conocer las partes de un computador, cómo funcionan y se interconectan entre si Tema 1.1: El computador, definición, partes de un computador, proceso de la información (datos) Computador: el computador, es un dispositivo electrónico que puede almacenar, manipular y transmitir información (datos). Los datos se introducen al computador como entradas, y a continuación se procesan para producir una salida, como se ve en la figura 1. Figura 1. Manejo de la información entrada, proceso y salida de datos Dispositivos de entrada Los dispositivos de entrada permiten la comunicación entre el computador y el usuario. Sirven para introducir datos en el computador como: el teclado el mouse y micrófono etc. Ver figura 2. Figura 2. Dispositivos de entrada Unidad central de proceso (CPU) La Unidad central de proceso (CPU) llamado microprocesador o procesador, dirige y controla el proceso de la información datos e interpreta las instrucciones de los programas realizados por el computador. Ver figura 3.
Figura 3. Unidad central de proceso (CPU) Componentes: Unidad de control: la unidad de control, coordina todas las actividades del computador y determina que operaciones se deben realizar y en qué orden sincroniza todo el proceso en el computador. Unidad aritmética lógica (ALU): la unidad aritmética lógica, realiza todas las operaciones aritméticas y lógicas (comparaciones). Memoria interna: la memoria interna es la memoria principal de un computador llamada RAM (Randon Acces Memory). Es la memoria donde el procesador almacena de forma temporal los datos y los programas con los que trabaja. La cantidad de memoria RAM influye bastante en la velocidad de un computador, entre más memoria RAM tenga, más rápido trabajan los programas y más programas se pueden tener abiertos al mismo tiempo. En la figura 4, se muestran algunos tipos de memoria RAM. Figura 4. Tipos de Memoria interna RAM
Memoria externa: la memoria externa, es la memoria auxiliar y de almacenamiento permanente de un computador; en él se guardan todos los programas, archivos o datos creados por el usuario como: el disco duro o HHD, el CD RW, y la memoria USB etc.). Ver figura 5. Figura 5. Memoria externa Dispositivos de salida Los dispositivos de salida son componentes externos de hardware, sirven para representar los resultados en el proceso de los datos como: el monitor y la impresora etc. Todos los elementos externos al computador se denominan también periféricos. Ver figura 6. Figura 6. Dispositivos de salida
Dispositivos de comunicación Los dispositivos de comunicación, son dispositivos de entrada y salida externos o internos que permiten o facilitan la interacción entre dos o más computadores como la comunicación de voz y de datos en un computador y se hace a través de diferentes medios. Ver figura 7. Figura 7. Dispositivos de comunicación En la siguiente figura 8, se muestra el computador y sus partes o periféricos.
Figura 8. El computador y sus partes
En el procesamiento y almacenamiento informático, un bit es la unidad de información más pequeña manipulada por el ordenador equivale decir 0 o 1 lógico o en su defecto 0 VDC o 5 VDC. La representación de la información o datos se logra mediante la agrupación de estos bits esto hace que se pueda lograr un conjunto mayor de valores que permita manejar mucho más información. Un byte es una unidad compuesta de 8 bits y equivale a un único carácter que puede ser una letra, un número o un signo de puntación del teclado. La cantidad de memoria de almacenamiento de un computador o máquina suele indicarse en byte, kilobyte, megabyte y gigabyte etc. En la tabla 1, se muestra la cantidad de almacenamiento y su base en binario. Tabla 1. Cantidad de memoria y su almacenamiento en bit Item Cantidad Base 2 (binario) BYTE 256 BIT 2 8 KILOBYTE 1.024 BYTE 2 10 MEGABYTE 1.048.576 BYTE 2 20 GIGABYTE 1073.741.824 BYTE 2 30 Ejemplo: convertir un dato binario o base 2 de 8 bits 1 0 0 0 1 0 0 1 a decimal o base 10. Se toman los valores de posición correspondientes a cada columna y luego se suman para obtener el valor decimal, el bit menos peso LSB está a la derecha y el bit de mayor peso MSB está a la izquierda ver tabla 2. Tabla 2. Conversión de binario a decimal 2 0 *1=1 2 1 *0=0 2 2 *0=0 2 3 *1=8 2 4 *0=0 2 5 *0=0 2 6 *0=0 2 7 *1=128 ------------------------ =137 decimal Tipo de examen Módulo 1, Lección 1: 1 Cuestionario o crucigrama (semana 1)
Lección 2: Software Introducción: El software, es un conjunto de instrucciones que se utilizan para manipular datos y programas en un computador y hacen parte del soporte lógico de un sistema informático que hace necesario la realización de tareas específicas. Objetivos: identificar diferentes tipos de software o programas que realizan tareas exactas o específicas. 2.1 Arquitectura interna 2.2 Lenguajes de programación 2.3 Representación gráfica de los algoritmos Tema 2.1: Arquitectura interna software La arquitectura interna software, son los programas o conjuntos de instrucciones que le dicen al computador que tareas exactas debe hacer específicamente, entre ellos tenemos: Software del sistema: el software de sistema o software de base es el programa más importante, ya que controla el funcionamiento del computador y el de los demás programas. Como el sistema operativo, que es el encargado de comunicar el computador con el hardware y periféricos, entre estos están: Windows, Macintosh, Unix y Linux etc. Software de desarrollo: el software de desarrollo son programas usados para hacer y mantener programas o que permite el desarrollo de aplicaciones como: C, Pascal, Fortran, Delphi y Java etc. Software de aplicación: el software de aplicación son programas que le permiten al usuario realizar tareas típicamente humanas en el computador como: editores de texto, bases de datos, hojas de cálculo, navegadores y aplicaciones personales etc. Tema 2.2: Lenguajes de programación Un lenguaje de programación es un lenguaje artificial, diseñado para expresar procesos dentro de la informática y que nos permite crear programas por medio de instrucciones y son utilizados por el hombre para describir algoritmos (programas) que deberán ser ejecutados por el computador entre ellos tenemos: Lenguaje de máquina: un lenguaje de máquina o código de máquina es el lenguaje usado directamente por el computador que los interpreta a través de un circuito micro programable (microprocesador) y compuesto de instrucciones codificadas en código binario (0 o 1). Lenguaje de bajo nivel (ensamblador): un lenguaje de bajo nivel es un lenguaje básico de instrucciones que ejercen un control directo sobre el hardware, no utiliza cadenas de números si no abreviaturas para representar las operaciones elementales de la computadora. Ejemplos instrucciones lenguaje ensamblador: ADD M N P; sumar M y N y almacenarlo en P MOVLW OFF; carga el registro W con OFF TRIS PTOA; y envíelo al Puerto A
Lenguaje de alto nivel: un lenguaje de alto nivel son aquellos que están diseñados para que las personas escriban y entiendan los programas, las instrucciones no dependen del diseño de hardware y son los más cercanos al lenguaje natural de los programadores y utilizan los traductores del lenguaje que convierten en lenguaje de alto nivel a código de máquina entre estos tenemos: o o Compiladores: un compilador es un programa informático que traduce los programas fuente escritos (código fuente) en lenguaje de alto nivel a lenguaje de máquina comprensible por el computador (código objeto) como el Fortran, el C++ y el Pascal etc. Intérprete: un intérprete es un programa informático que traduce las instrucciones escritas en lenguaje fuente a código de máquina directamente durante su ejecución como el Basic y el Qbasic etc. En la figura 10, se muestran los diagramas de flujo de un intérprete y un compilador. Figura 10. Diagrama de flujo de un intérprete y de un compilador Tema 2.3: Representación gráfica de los algoritmos La representación gráfica de un algoritmo, es la representación detallada en forma gráfica de los diferentes procesos de un computador que permite independizarlo del lenguaje de programación, es decir los pasos sucesivos en su representación gráfica no dependen de la sintaxis de ningún programa. Diagrama de flujo: un diagrama de flujo es un diagrama que utiliza ciertos símbolos o cajas, que contienen los pasos del algoritmo para producir resultados. Dichas cajas están unidas por flechas denominadas líneas de flujo, que indican la secuencia en que se deben ejecutar los procesos. En la figura 11, se muestra Los símbolos estándar normalizados por ANSI (abreviatura de American National Standards Institute) son muy variados, entre ellos tenemos:
En el siguiente enlace es donde se obtuvo la información. Los símbolos estándar normalizados por ANSI (abreviatura de... Figura 11. Símbolos estándar normalizados ANSI de diagramas de flujo Representa el inicio y el fin de un Entrada/salida (cualquier tipo de introducción de datos en la memoria desde los periféricos entrada, o registro de la información procesada en un periférico salida. Proceso (cualquier tipo de operación que pueda originar cambio de valor, formato o posición de la información almacenada en memoria, operaciones aritméticas, de transferencia. Decisión (indica operaciones lógicas o de comparación, dando como posible respuesta, si o no, según sea el caso). Salida por impresora (Se utiliza en ocasiones en lugar de E/S. Conector (sirve para enlazar dos partes cualesquiera de un ordinograma a través de un conector en la salida y otro en la entrada. Pantalla (se utiliza en ocasiones en lugar del símbolo de E/S) Llamada o subrutina o un proceso predeterminado (una subrutina es un módulo independiente del programa principal, que recibe una entrada procedente de dicho programa, realiza una tarea y regresa, al terminar el programa principal. Indicador de dirección o línea de flujo (indica el sentido de ejecución de las operaciones. Tipo de exámen Módulo 1, lección 2.1, lección 2.2 y lección 2.3: 1 Cuestionario o crucigrama (semana 1)
Lección 3: Diseño de programas Introducción: Un diseño de programas es un conjunto de líneas de código escritas en un lenguaje de programación determinado. Este conjunto de código escrito está en un lenguaje de alto nivel que no puede ser entendido por el computador por lo que es necesario compilarlo para que se traduzca a un lenguaje de máquina entendible por el computador. También se estudiaran los pasos para la elaboración de un programa, y cuáles son las características de un algoritmo como entrada de datos, proceso y salida. Objetivos: 3-1 Pasos para la elaboración de un programa 3-2 Características de un algoritmo Tema 3.1: Pasos para la elaboración de un programa Los pasos para la elaboración de un programa, consiste en un proceso mediante el cual, siguiendo una secuencia ordenada de pasos, se llega a la solución de un problema. No existe un conjunto completo de reglas, ni algoritmos para indicar como escribir programas. Es una tarea difícil y es un proceso creativo. Después de analizar el problema en cuestión, lo que sigue es definir los pasos de entrada, proceso y salida de los datos, luego se codifica el programa en un lenguaje (Matlab, Devian C++ etc.), se depura y se prueba. Estos son los pasos: Definición y análisis del problema (entrada, proceso y salida de los datos) Diseñar el algoritmo (sub problemas, tareas importantes, tareas específicas) Transformar el algoritmo en un programa (codificación) Ejecutar el programa (compilación) Comprobar el programa (verificación) Definición y análisis del problema: En la definición y análisis del problema se requiere normalmente el máximo de imaginación y creatividad por parte del programador para identificar los componentes del problema como: 1. Debe analizarse el problema para identificar qué información debe producirse 2. Debe identificarse que información dada por el problema son útiles para obtener la solución 3. Finalmente se plantea un procedimiento para obtener los resultados deseados a partir de la información útil 4. El análisis debe tener los componentes del siguiente gráfico. Ver figura 12 Figura 12. Análisis del problema, entrada, proceso y salida
Diseñar el algoritmo: Un diseño de algoritmo es un conjunto prescrito de instrucciones bien definidas, ordenadas y finitas de pasos ordenados que conducen a la solución de un problema determinado. La solución a un problema completo puede requerir de muchos pasos y la mejor metodología para atacarlo es dividir el problema en sub problemas más fáciles de resolver. Sub-problemas: los sub-problemas consiste es un método basado en la solución recursiva de un problema dividiéndolo en dos o más sub-problemas de igual tipo o similares. Se comienza por identificar las tareas más importantes como entrada de datos, proceso y salida, de las tareas específicas como variables de entrada y cálculos para resolver el problema disponiéndose en el orden a ser ejecutadas. La primera descripción se amplía añadiendo más detalle a estos pasos obteniéndose una nueva lista de actividades del algoritmo. Veamos un ejemplo para calcular el área de un triángulo rectángulo. Ejemplo: calcular el área de un triángulo rectángulo. -Tareas importantes Entrada de datos : Proceso: Salida: -Tareas específicas Digite la base y la altura Calcular el área del triángulo rectángulo El área del triángulo rectángulo es: Transformar el algoritmo en un programa: Para transformar un algoritmo en un programa o lenguaje de programación se debe plantear y analizar mediante instrucciones adecuadas la solución de un problema. Se plantea el algoritmo como un conjunto finito de instrucciones (codificación) que sirven para ejecutar una tarea o resolver el problema, que después de un número finito de instrucciones entrega un resultado. Ejecutar el programa: La ejecución de un programa consiste en el proceso mediante el cual un computador lleva a cabo las instrucciones de un programa. El programa se ejecuta siguiendo paso a paso las instrucciones del algoritmo, anotando los diferentes valores que van tomando las variables en forma secuencial de manera que se pueda verificar si hay errores en alguna instrucción (no se aplica para algoritmos extensos). Se pueden ejecutar programas compilados (.exe) y ejecutar programas interpretados (scripts). Comprobar el programa: consiste en verificar que el programa hace o calcula lo que uno quiere que haga. Por ejemplo puede verificar los resultados con una calculadora o datos previos en una tabla, o utilizar un simulador etc. Tema 3.2: Características de un algoritmo Un algoritmo es una secuencia finita de pasos lógicos con un significado claro, que se requieren para completar un proceso y además debe cumplir con lo siguiente:
Debe ser preciso: con instrucciones claras e indicar el orden de realización de cada paso Debe ser definido: si se sigue el algoritmo varias veces con los mismos datos de entrada, se debe obtener siempre el mismo resultado Debe ser finito: si se sigue el algoritmo, debe terminar en algún momento Debe constar de tres partes: entrada, proceso y salida Los algoritmos son independientes de los lenguajes de programación.