Вы находитесь на странице: 1из 53

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa 1.1.

1 ANTECEDENTES El baco es considerado como el primer instrumento elaborado por el hombre para realizar operaciones aritmticas de manera ms eficiente. El baco no realiza clculos de manera autnoma (por si solo), simplemente le permite al hombre realizarlos de manera ms eficiente. La primera mquina que realizaba clculos de manera autnoma fue inventada en 1642 por el gran matemtico y filsofo francs Blas Pascal. La mquina de Pascal (en honor a su inventor), era movida mediante una serie de ruedas dentadas, numeradas del cero al nueve, alrededor de sus circunferencias y era capaz de sumar y restar.

Figura 1. Mquina de Pascal (1642) En 1671 Gottfried Wilhelm Leibniz le adicion a la mquina de Pascal un cilindro diseado especialmente para que fuera capaz de multiplicar y dividir de manera directa. A principios del siglo XIX el ingeniero Joseph Marie Jacquard perfeccion el concepto de tarjeta perforada, con el cual se podan programar las mquinas de tejer para que siguieran un patrn o diseo. Este concepto fue posteriormente utilizado en las mquinas de cmputo para decirles que deban calcular. Pero ninguno de estos avances fue antecesor directo de las computadoras electrnicas de hoy. La verdadera precursora de la computadora fue la mquina llamada motor de diferencias, construida en 1822 por Charles Babbage para calcular algoritmos y tablas astronmicas. A partir de su trabajo en el motor de diferencias, Babbage dise un poderoso instrumento para el clculo automtico. Tal como lo concibi Babbage, este motor analtico estara impulsado por vapor, y trabajara basado en un programa de planeacin almacenado en tarjetas perforadas. Concibi una memoria, un procesador aritmtico, los medios de ingresar datos y/o instrucciones, as como una seccin de produccin que escribira los resultados de las computaciones. Todos estos son los elementos de las computadoras modernas y no se hicieron realidad sino varias generaciones despus de ser propuestos por Babagge. Charles Babbage no pudo implementar el motor analtico y muri sin saber que realmente funcionaba.

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa

Figura 2. Mquina Diferencial de Charles Babbage Durante los cien aos siguientes, las mquinas activadas por tarjetas perforadas se modificaron, se mejoraron e hicieron ms rpidas, pero an no podan mantener el ritmo de las crecientes necesidades humanas de procesamiento de listas de pagos, cuentas, facturas, anlisis de ventas y otros problemas. En 1937, Howard H. Aiken, un candidato al doctorado en fsica de Harvard, trabaj en una mquina que podra resolver automticamente ecuaciones diferenciales. La I.B.M. (International Business Machines), hoy una de las ms grandes empresas de esta fase de la industria norteamericana, ayudo al inventor a crear la Calculadora Controlada de Secuencia Automtica conocida como el Mark I.

Figura 3. Mark I El Mark I era un monstruo de cuatro y media toneladas mtricas, con 78 aparatos independientes vinculados por unos 800 kilmetros de cable. En tres dcimas de segundo poda efectuar sumas y restas de 23 dgitos y en cerca de 6 segundos poda multiplicar nmeros de 23 dgitos. Fue retirado en 1959. Tanto el Mark I como la Segunda Guerra Mundial desempearon un papel clave en el desarrollo de las computadoras. El Mark I aport los ingredientes tecnolgicos bsicos mientras que la segunda guerra mundial con sus inmensas demandas de mano de obra y mquinas, cre la necesidad. El resultado fue el Integrador y Calculador Numrico Electrnico, ms conocido como el ENIAC.

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa

Figura 4. ENIAC

Terminado en 1946, el ENIAC fue creado para el ejrcito norteamericano en la escuela Moore de Ingeniera Elctrica, de la Universidad de Pennsylvania. Sus creadores fueron un estudiante graduado, J. Presper Eckert, y un fsico, el Dr. John W. Mauchly. Juntos eliminaron la necesidad de las partes que se movan mecnicamente en la computadora central. En su lugar, adaptaron circuitos elctricos de gatillo flip-flop y pulsaciones electrnicas para conectar o desconectar tubos al vaco, como interruptores. Como las interrupciones de este tipo podan hacerse miles de veces ms rpido que los aparatos electromecnicos, el ENIAC constituy un gran inicio hacia el desarrollo de las computadoras modernas. El ltimo paso para completar el concepto de la computadora de hoy, fue el desarrollo del concepto de mquina almacenadora de programas. Este paso se dio a fines de los cuarenta, despus de que el clebre matemtico hungaro-norteamericano Dr. John Von Neumann sugiri que las instrucciones de operacin, as como los datos, se almacenaran de la misma manera en la memoria de la computadora. Adems, aport la idea de haga que la computadora modificara sus propias instrucciones de acuerdo con un control programado. Desde entonces, se ha tratado de modificar, mejorar y apresurar estos conceptos, en fin, de haga computadoras cada vez ms eficientes.

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa

Figura 5. Computador electrnico IBM 360 __ 1.1.2 LA FABRICACION EN SERIE (GENERACIONES DE COMPUTADORES) Se suelen considerar cinco generaciones:. Generacin Cero: En la cul el hombre construy mquinas, usando dispositivos mecnicos

tales como ruedas dentadas y piones, para realizar bsicamente operaciones aritmticas como suma, resta, multiplicaciones y divisiones. Estas mquinas se conocen con el nombre de Mquinas Aritmticas.

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa

Figura 6. Folleto promocional de una mquina aritmtica Primera Generacin: En la cul el hombre construy mquinas de clculo para tareas muy

especficas como investigacin y militares, usando dispositivos electro-mecnicos como rels y tubos de vaco (los cuales le dieron paso a los elementos transistorizados). Las mquinas de computo de esta generacin tenan pocas facilidades de programacin.
Segunda Generacin: En la cul el hombre construy computadores (mquinas de clculo), basados en el transistor.

Los computadores de esta generacin tienen propsito general, no son usados nicamente para la investigacin y el aspecto militar, ya son usados en el arte, la economa y la industria. Adicionalmente, aparecen los primeros lenguajes de programacin.

Figura 7. Dibujo esquemtico de un transistor

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa Tercera Generacin: En la cual el hombre construye diferentes tipos de computadores,

basados en el desarrollo de los circuitos integrados. En esta generacin se desarrollan los primeros programas de software de tipo especfico.

Figura 8. Computador Electrnico -VAX Cuarta Generacin: En la cual el hombre construye computadores de tamao pequeo pero

de gran capacidad, llamados microcomputadores, los cuales estn basados en el microprocesador. La aparicin del microprocesador se debe a los desarrollos hechos en la tecnologa VLSI (Integracin de Gran Escala). En esta generacin se hacen aplicaciones de software orientadas al usuario final.

Figura 9. El Apple-II, Primer Computador Personal Quinta Generacin: En la cual el hombre construye computadores con ms de un procesador, cada uno con una tarea especfica como procesamiento de imagen y procesamiento de sonido, y/o con una tarea en comn. Adicionalmente se construyen computadores capaces de auto-configurarse, autoprogramarse, etc. En esta generacin se desarrolla software tanto genrico como especfico.

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa

Figura 10. Computador con mltiples procesadores. __ 1.2 ESTRUCTURA DE UN COMPUTADOR Un COMPUTADOR es una mquina que permite y realiza clculos de manera automtica. Se divide fundamentalmente en dos partes: el hardware y el software. El HARDWARE es la parte fsica de un computador, es decir, la parte que realiza los clculos; El SOFTWARE es la parte lgica del computador, es decir, la parte que le dice al hardware que haga . Usando una metfora se puede decir que: Un computador es como un ser humano: el hardware es el cuerpo y el software es la mente 1.2.1 Arquitectura de hardware 1.2.2 Arquitectura de software 1.2.1 ARQUITECTURA DE HARDWARE Un computador desde la perspectiva del hardware, esta constituido por una serie de dispositivos cada uno con un conjunto de tareas definidas. Los dispositivos de un computador se dividen segn la tarea que realizan en: dispositivos de entrada, salida, comunicaciones, almacenamiento y computo.

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa

Figura 11. Arquitectura de Hardware Dispositivos de entrada: Son aquellos que permiten el ingreso de datos a un computador. Entre estos se cuentan, los teclados, ratones, scaners, micrfonos, cmaras fotogrficas, cmaras de video, game pads y guantes de realidad virtual.

Figura 12. Dispositivos de Entrada Dispositivos de salida. Son aquellos que permiten mostrar informacin procesada por el computador. Entre otros estn, las pantallas de video, impresoras, audfonos, plotters, guantes de realidad virtual, gafas y cascos virtuales.

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa Figura 13. Dispositivos de Salida Dispositivos de almacenamiento. Son aquellos de los cuales el computador puede guardar informacin nueva y/o obtener informacin previamente almacenada. Entre otros estn los discos flexibles, discos duros, unidades de cinta, CD-ROM, CD-ROM de re-escritura y DVD.

Figura 14. Dispositivos de Almacenamiento. Dispositivos de comunicacin: Son aquellos que le permiten a un computador comunicarse con

otros. Entre estos se cuentan los modems, tarjetas de red y enrutadores.

Figura 15. Modem Dispositivo de computo: Es la parte del computador que le permite realizar todos los clculos

y tener el control sobre los demas dispositivos. Esta formado por tres elementos fundamentales, la unidad central de proceso, la memoria y el bus de datos y direcciones.

Figura 16. Diagrama esquemtico del dispositivo de computo

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa La unidad central de proceso (UCP)[1]: es el cerebro del computador, esta encargada de realizar todos los clculos, utilizando para ello la informacin almacenada en la memoria y de controlar los dems dispositivos, procesando las entradas y salidas provenientes y/o enviadas a los mismos. Mediante el bus de datos y direcciones, la UCP se comunica con los diferentes dispositivos enviando y obteniendo tales entradas y salidas.

Figura 17. Unidad Central de Proceso. Para realizar su tarea la unidad central de proceso dispone de una unidad aritmtico lgica, una unidad de control, un grupo de registros y opcionalmente una memoria cache para datos y direcciones. La unidad aritmtico lgica (UAL)[2] es la encargada de realizar las operaciones aritmticas y lgicas requeridas por el programa en ejecucin, la unidad de control es la encargada de determinar las operaciones e instrucciones que se deben realizar, el grupo de registros es donde se almacenan tanto datos como direcciones necesarias para realizar las operaciones requeridas por el programa en ejecucin y la memoria cache se encarga de mantener direcciones y datos intensamente usados por el programa en ejecucin. La memoria esta encargada de almacenar toda la informacin que el computador esta usando, es decir, la informacin que es accedida (almacenada y/o recuperada) por la UCP y por los dispositivos. Existen diferentes tipos de memoria, entre las cuales se encuentran las siguientes:

RAM (Random Access Memory): Memoria de escritura y lectura, es la memoria principal del
computador. Solo se mantiene mientras el computador est encendido. ROM (Read Only Memory): Memoria de solo lectura, es permanente y no se afecta por el

encendido o apagado del computador. Generalmente almacena las instrucciones que le permite al computador iniciarse y cargar (poner en memoria RAM) el sistema operativo. Cache: Memoria de acceso muy rpido, usada como puente entre la UCP y la memoria RAM, para evitar las demoras en la consulta de la memoria RAM.
El bus de datos y direcciones permite la comunicacin entre los elementos del computador. Por el bus de datos viajan tanto las instrucciones como los datos de un programa y por el bus de direcciones viajan

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa tanto las direcciones de las posiciones de memoria donde estn instrucciones y datos, como las direcciones lgicas asignadas a los dispositivos. [1] La unidad central de proceso es ms conocida como CPU por sus siglas en ingls Central Process Unit. [2] La unidad aritmtico lgica es ms conocida como ALU por sus siglas en ingls Arithmetic Logic Unit. 1.2.2 ARQUITECTURA DE SOFTWARE Un computador desde la perspectiva del software, esta constituido por: Un sistema operativo. Un conjunto de lenguajes a diferente nivel con los cuales se comunica con el usuario y con sus dispositivos. Entre estos estn los lenguajes de mquina, los ensambladores y los de alto nivel. Un conjunto de aplicaciones de software. Un conjunto de herramientas de software.

1.2.2.1

Definiciones Bsicas

Software: El hardware por si solo no puede haga nada, pues es necesario que exista el software, que es un conjunto de instrucciones que le dicen al hardware que haga. Lenguaje de programacin: Es un conjunto de reglas y estndares que es utilizado para escribir programas de computadoras que puedan ser entendidos por ellas. . Programa: Es la representacin de algn algoritmo en un lenguaje de programacin especfico. 1.2.2.2 Lenguaje de Mquina

Es el nico lenguaje que entiende el hardware (mquina) y usa exclusivamente el sistema binario. Este lenguaje es especfico para cada hardware (procesador, dispositivos, etc.)[1]. El programa es almacenado en memoria y es tanto cdigos de instruccin como datos. La estructura de una instruccin en lenguaje mquina es la siguiente: CODIGO ARGUMENTO(S)

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa

Figura 18. Lenguaje de mquina 1.2.2.3 Lenguaje Ensamblador

Es un lenguaje que usa mnemnicos (palabras cortas escritas con caracteres alfanumricos), para codificar las operaciones. Los datos y/o direcciones son codificados generalmente como nmeros en un sistema hexadecimal. Generalmente es especfico (aunque no nico) para cada lenguaje de mquina. La estructura de una instruccin en este lenguaje es la siguiente: MNEMONICO ARGUMENTO(S) Un ENSAMBLADOR es un software, generalmente escrito en lenguaje de mquina, que es capaz de traducir de lenguaje ensamblador a lenguaje de mquina, mientras que un CARGADOR es un software que almacena en memoria el programa en lenguaje de mquina generado por el ensamblador.

Figura 19. Lenguaje Ensamblador.

1.2.2.4 Lenguaje de Alto Nivel


Lenguaje basado en una estructura gramatical que permite el anidamiento de instrucciones (instrucciones dentro de instrucciones). Cuenta con un conjunto de palabras reservadas (escritas en lenguaje natural), para codificar estructuras de control y/o instrucciones. Estos lenguajes permiten el uso de smbolos aritmticos y/o relacionales para describir clculos matemticos, y generalmente representan las cantidades numricas mediante sistema decimal.

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa Gracias a su estructura gramatical, estos lenguajes permiten al programador olvidar el direccionamiento de memoria (donde cargar datos y/o instrucciones en la memoria), ya que este se realiza mediante el uso de conceptos como el de variable; De esta manera, permiten la realizacin de programas independiente del Hardware. Los COMPILADORES e INTERPRETES son software capaz de traducir de un lenguaje de alto nivel al lenguaje ensamblador especfico de una mquina. Los primeros toman todo el programa en lenguaje de alto nivel, lo pasan a lenguaje ensamblador y luego lo ejecutan. Los ltimos toman instruccin por instruccin, la traducen y la van ejecutando.

Figura 20. Lenguaje de Alto Nivel.

1.2.2.5 Sistema Operativo


Es el software encargado de administrar los recursos del sistema, para esto ofrece un conjunto de primitivas (funciones y procedimientos) a otro software, que le permiten a este ultimo ser tan independiente de la arquitectura de hardware como le sea posible. Se dice que un software es para el sistema operativo <nombre>, si utiliza las primitivas que el sistema operativo <nombre> proporciona. Adicionalmente, un sistema operativo ofrece un conjunto de comandos a los humanos sean o no programadores, para interactuar con la mquina. Los sistemas operativos pueden ser escritos en lenguaje de alto nivel, como UNIX que fue escrito en C, en lenguaje ensamblador y/o en lenguaje mquina. Algunos de los sistemas operativos ms conocidos son UNIX, LINUX, Microsoft Windows.

1.2.2.6 Aplicaciones y Herramientas


Una APLICACION es un software construido para que el computador realice una tarea especfica y con el cual no se puede construir otro software. Ejemplos de aplicaciones son los procesadores de texto como Microsoft Word y Word Perfect y las hojas electrnicas de clculo como Microsoft Excel y Lottus.

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa Una HERRAMIENTA es un software construido especialmente para el desarrollo de nuevo software, (tanto de aplicaciones como de herramientas). Ejemplos de herramientas son los compiladores como Turbo C y Turbo Pascal, las herramientas CASES y los ambientes integrados de desarrollo.

Figura 21. Arquitectura de Software Completa. [1] En el Anexo A se expone el concepto de sistema de numeracin, y en el Anexo B se muestra como el sistema de numeracin binario es utilizado para representar datos en un computador digital.

Figura 21. Arquitectura de Software Completa. [1] En el Anexo A se expone el concepto de sistema de numeracin, y en el Anexo B se muestra como el sistema de numeracin binario es utilizado para representar datos en un computador digital. __

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa 2.1 ALGORITMOS Un ALGORITMO es una secuencia finita bien definida de tareas bien definidas, cada una de las cuales se puede realizar con una cantidad de recursos finitos. Se dice que una tarea esta bien definida, si se sabe de manera precisa las acciones requeridas para su realizacin. Aunque los recursos que debe utilizar cada tarea deben ser finitos estos no estn limitados, es decir, si una tarea bien definida requiere una cantidad inmensa (pero finita) de algn recurso para su realizacin, dicha tarea puede formar parte de un algoritmo. Adems, se dice que una secuencia de tareas esta bien definida si se sabe el orden exacto de ejecucin de cada una de las mismas. EJECUTAR un algoritmo es realizar las tareas del mismo, en el orden especificado y utilizando los recursos disponibles. 2.1.1 Caractersticas de un algoritmo 2.1.2 Tcnicas para la formulacin de algoritmos 2.1.3 Ejemplos de algoritmos 2.1.4 Ejercicios de algoritmos 2.1.5 Estructura bsica de un algoritmo __ 2.1.1 CARACTERISTICAS DE UN ALGORITMO Las caractersticas que debe poseer una secuencia de tareas para considerarse algoritmo son: precisin, definitud y finitud. Precisin Definitud o determinismo Finitud El algoritmo debe indicar Si se sigue el algoritmo dos o ms veces El algoritmo debe terminar en el orden exacto de con los mismos datos de entrada, se deben algn momento y debe usar una ejecucin de cada tarea. obtener los mismos datos de salida. cantidad de recursos finita.

Dada una cantidad de datos de entrada de un algoritmo, se dice que la cantidad de un recurso usada por dicho algoritmo para su ejecucin determina la complejidad del algoritmo respecto a tal recurso. Cuando se implementa un algoritmo en un computador digital, los recursos con los que se cuenta son tiempo de proceso y memoria. Por lo tanto, a un algoritmo implementado en un computador digital se le pueden calcular sus complejidades temporal y espacial.[1] [1] El estudio de la complejidad de un algoritmo respecto a sus recursos es conocido como algoritmia, la cual no es tratada en este curso.

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa

2.1.2 TECNICAS PARA LA FORMULACION DE ALGORITMOS Las tcnicas para la formulacin de algoritmos ms populares son: 2.1.2.1 Diagramas de flujo 2.1.2.2 Pseudocdigo 2.1.2.1 DIAGRAMAS DE FLUJO Se basan en la utilizacin de diversos smbolos para representar operaciones especficas. Se les llama diagramas de flujo porque los smbolos utilizados se conectan por medio de flechas para indicar la secuencia de operacin.

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa

SIMBOLOGIA UTILIZADA EN LOS DIAGRAMAS DE FLUJO SIMBOLO FUNCION

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa

2.1.2.2 PSEUDOCODIGO Es un lenguaje de especificacin de algoritmos. El uso de tal lenguaje hace el paso de codificacin final (esto es, la traduccin a un lenguaje de programacin) relativamente fcil. El pseudocdigo naci como un lenguaje similar al lenguaje natural y era un medio para representar bsicamente las estructuras de control de programacin estructurada. Se considera un primer borrador, dado que el pseudocdigo tiene que traducirse posteriormente a un lenguaje de programacin. La ventaja del pseudocdigo es que en su uso en la planificacin de un programa, el programador se puede concentrar en la lgica y en las estructuras de control y no preocuparse de las reglas de un lenguaje especfico. Es tambin fcil modificar el pseudocdigo si se descubren errores o anomalas en la lgica del programa, adems de todo esto es fcil su traduccin a lenguajes como Pascal, C o Basic. El pseudocdigo utiliza para representar las acciones sucesivas palabras reservadas (similares a sus homnimos en los lenguajes de programacin), tales como inicio, fin, si-entonces-sino, mientras, repita-hasta.etc Secuencia Inicio accin1 accin2 . . . accin n Fin Decisin Simple si condicin entonces

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa accin1 accin2 . . . accin n

Doble si condicin entonces accin1 accin2 . . . en caso contrario accin1 accin2 Iteraccin Fija para var. Entera inicial hasta final hacer accin1 accin2

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa . . . accin n

Condicional al inicio mientras condicin hacer accin1 accin2 . . . accin n

Condicional al final repita accin1 accin2 . . . accin n

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa Hasta que condicin

Seleccin casos selector de valor1 : accin1 accin2

valor2 : accin1 accin2 ... valor n : accin1 accin2 2.1.2 EJEMPLOS DE ALGORITMOS 1. PROBLEMA: Un estudiante se encuentra en su casa (durmiendo) y debe ir a la universidad (a tomar la clase de programacin!!), qu debe haga el estudiante? ALGORITMO: Inicio Dormir haga 1 hasta que suene el despertador (o lo llame la mam). Mirar la hora. Hay tiempo suficiente? Si hay, entonces Baarse. Vestirse. Desayunar. Sino, Vestirse. Cepillarse los dientes. Despedirse de la mam y el pap. Hay tiempo suficiente? Si, Caminar al paradero.

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa Sino, Correr al paradero. Hasta que pase un bus para la universidad haga : Esperar el bus Ver a las dems personas que esperan un bus. Tomar el bus. Mientras no llegue a la universidad haga : Seguir en el bus. Pelear mentalmente con el conductor. Timbrar. Bajarse. Entrar a la universidad. Fin 2. PROBLEMA: Cambiar la rueda pinchada de un automvil teniendo un gato mecnico en buen estado, una rueda de reemplazo y una llave inglesa. ALGORITMO: Inicio PASO 1. Aflojar los tornillos de la rueda pinchada con la llave inglesa. PASO 2. Ubicar el gato mecnico en su sitio. PASO 3. Levantar el gato hasta que la rueda pinchada pueda girar libremente. PASO 4. Quitar los tornillos y la rueda pinchada. PASO 5. Poner rueda de repuesto y los tornillos. PASO 6. Bajar el gato hasta que se pueda liberar. PASO 7. Sacar el gato de su sitio. PASO 8. Apretar los tornillos con la llave inglesa. Fin

3. PROBLEMA: Realizar la suma de los nmeros 2448 y 5746. ALGORITMO: Inicio PASO 1. Colocar los nmeros el primero encima del segundo, de tal manera que las unidades, decenas, centenas, etc., de los nmeros queden alineadas. Trazar una lnea debajo del segundo nmero. PASO 2. Empezar por la columna ms a la derecha. PASO 3. Sumar los dgitos de dicha columna. PASO 4. Si la suma es mayor a 9 anotar un 1 encima de la siguiente columna a la izquierda y anotar debajo de la lnea las unidades de la suma. Si no es mayor anotar la suma debajo de la lnea. PASO 5. Si hay ms columnas a la izquierda, pasar a la siguiente

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa

columna a la izquierda y volver a 3. PASO 6. El nmero debajo de la lnea es la solucin. Fin

4. PROBLEMA: Sean los puntos P=(a,b) y Q=(c,d) que definen una recta, encontrar un segmento de recta perpendicular a la anterior que pasa por el punto medio de los puntos dados. ALGORITMO: Inicio

PASO 1. Trazar un crculo con centro en el punto P que pase por el punto Q.

PASO 2. Trazar un crculo con centro en el punto Q que pase por el punto P.

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa

PASO 3. Trazar un segmento de recta entre los puntos de interseccin de las circunferencias trazadas.

Fin. El segmento de recta trazada es el buscado.

2.1.3 EJERCICIOS DE ALGORITMOS Para los siguientes problemas dar un algoritmo y si es posible una ejecucin del mismo. 1. Buscar en el directorio telefnico, el nmero de: a. Jos Gonzlez Prez b. Pedro Gmez Bernal. c. Escribir un algoritmo que sirva para buscar a cualquier persona.

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa 2. Calcular el nmero de das entre las fechas: a. Enero 17 de 1972 y Julio 20 de 1973 b. Febrero 2 de 1948 y Agosto 11 de 1966 c. Escribir un algoritmo que sirva para calcular la cantidad de das entre cualquier dos fechas. 3. Solicitar en prstamo algn libro de una biblioteca. 4. haga una caja de cartn con tapa de: a. 20 cm de largo, por 10 cm de ancho y 5 cm de alto. b. 10 cm de largo, por 30 cm de ancho y 15 cm de alto. c. Escribir un algoritmo que sirva para construir una caja de cartn con tapa de cualquier tamao. 5. Construir un avin de papel. 6. Calcular manualmente la divisin de cualquier par de nmeros naturales. El resultado tambin debe ser un nmero natural. Escribir un algoritmo para calcular el residuo de la divisin. 7. Un juego muy famoso entre dos nios es el de adivina mi nmero,el cual consiste en que cada nio trata de adivinar el nmero pensado por el otro nio. Dicho nmero generalmente est entre 1 y 100. Las reglas del juego son las siguientes: a. Cada nio posee un turno en el que trata de averiguar el nmero del otro. b. En su turno el primer nio pregunta si un nmero que dice es el pensado por el segundo. c. Si el nmero que ha dicho el primer nio es el que pens el segundo, este ltimo debe informarle al primero que gan. d. Si el nmero no es el segundo nio debe decir si su nmero pensado es menor o mayor al que el primer nio dijo. e. Luego el segundo nio tiene su turno y de esta manera se van intercalando hasta que alguno de los dos gane.Desarrollar un algoritmo para jugar adivina mi nmero. 8. Una balanza se encuentra en equilibrio cuando el producto de la carga aplicada sobre el brazo derecho por la longitud de este brazo, es igual al producto de la carga aplicada sobre el brazo izquierdo por la longitud de este otro brazo. Determinar si la balanza se encuentra en equilibrio si:

a. La longitud del brazo izquierdo es3 m, la del derecho es 2 m, la carga aplicada al brazo izquierdo es 5 Kg y la carga aplicada al derecho es 7 Kg. b. La longitud del brazo izquierdo es4 m, la del derecho es 2 m, la carga aplicada al brazo izquierdo es 4 Kg y la carga aplicada al derecho es 4 Kg. c. Desarrollar un algoritmo que sirva para cualquier conjunto de valores para las longitudes de los brazos y las cargas aplicadas. 2.1.4 ESTRUCTURA BASICA DE UN ALGORITMO

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa En esencia un algoritmo est constituido por los siguientes tres elementos: Datos Lo que el algoritmo recibe, procesa y entrega como resultado. Instrucciones Las acciones o procesos que el algoritmo realiza sobre los datos. Estructuras de control Las que determinan el orden en que se ejecutarn las instrucciones del algoritmo.

En el captulo siguiente se presenta de manera completa los conceptos de dato e instrucciones sobre datos y en el captulo cuatro se describe el concepto de estructura de control. 2.2 PROBLEMAS Se tiene un problema cuando se desea encontrar uno o varios objetos desconocidos (ya sean estos nmeros, diagramas, figuras, demostraciones, decisiones, posiciones, algoritmos, u otras cosas), que cumplen condiciones y/o relaciones, previamente definidas, respecto a uno o varios objetos conocidos. De esta manera, solucionar un problema es encontrar los objetos desconocidos de dicho problema.
2.2.1 Clasificacin de problemas 2.2.2 2.2.3 Ejemplos de problemas Ejercicios

2.2.1 CLASIFICACION DE PROBLEMAS Los problemas se clasifican por la existencia de una solucin en solubles, no solubles e indecidible. Un problema se dice SOLUBLE si se sabe de antemano que existe una solucin para l. Un problema se dice INSOLUBLE si se sabe que no existe una solucin para l. Un problema se dice INDECIDIBLE si no se sabe si existe o no existe solucin para l. A su vez, los problemas solubles se dividen en dos clases: los algortmicos y los no algortmicos. Un problema se dice ALGORTMICO[1] si existe un algoritmo que permita darle solucin. Un problema se dice NO ALGORTMICO si no existe un algoritmo que permita encontrar su solucin. [1] En este curso solo se tratarn problemas algortmicos 2.2.2 EJEMPLOS DE PROBLEMAS 1. Sean los puntos P=(a,b) y Q=(c,d) que definen una recta, encontrar un segmento de recta perpendicular a la anterior que pase por el punto medio de los puntos dados. OBJETOS CONOCIDOS CONDICIONES TIPO DE PROBLEMA Los puntos P y Q. El segmento de recta debe pasar por el punto medio entre P y Q, y debe ser perpendicular a la recta trazada entre P y Q Soluble-algortmico. Es soluble por que ya existe un algoritmo que

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa permite encontrar la solucin del mismo. Este algoritmo fue presentado en la seccin anterior. 2. De las siguientes cuatro imgenes, cul es la ms llamativa?

OBJETOS DESCONOCIDOS OBJETOS CONOCIDOS TIPO DE PROBLEMA

Una de las cuatro imgenes. Las cuatro imgenes. Soluble-no algortmico. La solucin de este problema existe, es alguna de las cuatro imgenes presentadas, pero no existe un algoritmo que permita determinar cual es, ya que el concepto de imagen ms llamativa no esta bien definido.

3. Un granjero tiene cincuenta animales entre conejos y gansos. Si la cantidad de pies de los animales es ciento cuarenta, cuntos conejos y cuantos gansos tiene el granjero? OBJETOS DESCONOCIDOS OBJETOS CONOCIDOS CONDICIONES TIPO DE PROBLEMA La cantidad de conejos y la cantidad de gansos. La cantidad total de animales, cantidad de pies totales. La suma de los conejos y los gansos es igual a cincuenta. La suma de los pies de los conejos (cuatro por cada uno) y de los gansos (dos por cada uno) es igual a ciento cuarenta. Soluble-algortmico.

4. Existe en la expansin decimal de p una secuencia de tamao n para cualquier nmero natural n? OBJETOS DESCONOCIDOS OBJETOS CONOCIDOS CONDICIONES TIPO DE PROBLEMA Un valor de verdad (falso o verdadero). El nmero n. Verdadero si existe en la expansin decimal de p una secuencia de tamao n del nmero n, para todo nmero natural n, Falso en otro caso. Indecidible. Este problema es indecidible por que si en el primer milln de dgitos de p no se encuentra una secuencia como la buscada, nada garantiza que en el siguiente milln de dgitos no se encuentre tal secuencia. Pero si no se encuentra en el segundo milln, nada garantiza que no se encuentre despus o no se encuentre. De esta manera no se

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa puede decidir si existe o no existe tal secuencia. 5. Realizar la suma de los siguientes nmeros: 1245893467 y 3464895786. Un nmero natural. Dos nmeros naturales 1245893467 y 3464895786. El nmero desconocido es igual a la suma de los dos nmeros dados. Soluble-algortmico. Es soluble por que ya existe un algoritmo que permite encontrar la solucin del mismo. Este algoritmo fue presentado en la seccin anterior.

OBJETOS DESCONOCIDOS OBJETOS CONOCIDOS CONDICIONES TIPO DE PROBLEMA

6. Una partcula se mueve en el espacio de manera aleatoria, si en el instante de tiempo t se encuentra en la posicin x, cul ser la posicin exacta de dicha partcula 10 segundos despus? OBJETOS DESCONOCIDOS OBJETOS CONOCIDOS CONDICIONES TIPO DE PROBLEMA Una posicin. Posicin en el instante de tiempo t. La partcula se mueve en el espacio de manera aleatoria. Insoluble. No se puede solucionar por que no existe forma de predecir la posicin de la partcula, pues su movimiento es aleatorio, es decir, se mueve de manera arbitraria.

7. Un robot puede apilar (poner encima), en ciertos lugares cajas de diferentes tamaos. La caja a apilar no puede ser ms grande que las que ya estn apiladas en dicho lugar. El robot puede solo tomar la caja de ms arriba de una pila. Mirando la figura, como puede el robot pasar las tres cajas apiladas en el lugar A, al lugar C usando, si es necesario, el lugar de apilar B.

OBJETOS DESCONOCIDOS OBJETOS CONOCIDOS CONDICIONES TIPO DE PROBLEMA

Una secuencia de apilamientos. Nmero de cajas, posicin inicial y posicin destino, nmero de lugares de apilamiento. Solo se pueden apilar cajas sobre otras ms grandes. Solo se puede tomar la una caja a la vez y solo la que este ms arriba en una pila de cajas. Soluble-algortmico.

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa 2.2.3 EJERCICIOS Para los siguientes problemas, determine los objetos conocidos, desconocidos, las condiciones y el tipo de problema. Para aquellos problemas algortmicos desarrolle adicionalmente un algoritmo que permita encontrar una solucin. 1. Se tienen dos jarras (A y B) de capacidades 3 y 7 litros respectivamente, sobre las cuales se pueden efectuar las siguientes acciones: Llenar totalmente cualquiera de las dos jarras, vaciar una de las dos jarras en la otra hasta que la jarra origen este vaca o hasta que la jarra destino este llena y vaciar el contenido de una jarra (este llena o no) en un sifn. Cmo se puede dejar en la jarra A un solo litro utilizando solamente las anteriores acciones?. 2. Es cierta o no es cierta la siguiente frase: Esta frase no es cierta. 3. Si Juan tiene el doble de la edad de Pedro y la suma de las edades de los dos es 33 aos, Cuntos aos tiene Juan y cuntos tiene Pedro?. 4. Qu figura se forma al unir los puntos marcados con nmeros consecutivos con una lnea?

5. Calcular de manera exacta el nmero de tomos del universo. 6. Calcular el costo de una serie de productos comprados en el supermercado. 7. Determinar quien es el mejor jugador de ftbol de toda la historia. 8. Construir un barco de papel. 2.3 PROGRAMACIN ESTRUCTURADA Introduccin La programacin estructurada es un estilo de programacin en el cual, la estructura de un programa se hace tan clara como sea posible utilizando tres estructuras:

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa 1. Secuencia Simple 2. Seleccin 3. Iteracin Estos tres tipos de estructuras de control pueden combinarse para producir programas con cualquier tipo de informacin que se vaya a procesar. Un programa estructurado tiene como caracterstica que puede leerse de arriba hacia abajo lo que hace que el programa sea ms fcil de leer y comprender por otros programadores facilitando as su mantenimiento. Un programa estructurado se compone de segmentos. Cada segmento est constituido por una entrada y una salida, tal segmento de denomina un programa propio. TEORIA DE LA PROGRAMACION ESTRUCTURADA

El teorema de la estructura. El teorema de la estructura se refiere a que cualquier programa propio se puede escribir usando solamente las tres estructurad de control: secuencia, seleccin e iteracin. Un programa propio contempla dos segmentos bsicos: 1. Tiene exactamente un punto de entrada y uno de salida 2. Dentro de ese punto de entrada y salida hay trayectorias que conducen a cada parte del programa; esto significa que no existen loops infinitos o una codificacin inalcanzable. Las tres estructuras de control se ilustran a continuacin: Secuencia: Las instrucciones del programa se ejecutan en el orden en el cual ellas aparecen en el programa como se indica en la siguiente figura:

A y B pueden ser simples instrucciones hasta mdulos completos. A y B deben ser ambos programas propios en el sentido ya definido de entrada y salida. La combinacin de A y B es tambin un programa propio y que tiene tambin una entrada y una salida. Seleccin: Es escoger entre dos opciones basadas en un predicado. Se conoce como estructura SI ENTONCES SINO P es el predicado y A y B son las afirmaciones.

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa

Iteracin: Repetir varias veces una accin hasta cuando deje de cumplirse la condicin. Se conoce como la estructura HACER - MIENTRAS

Es de anotar que hay algunas variaciones a esta estructura dependiendo del lenguaje de programacin. La idea fundamental es que siempre que aparezca una funcin que se puede dibujar en recuadro se pueda sustituir por cualquiera de las tres estructuras bsicas constituyendo as un programa propio.

3. METODOLOGIA DE PROGRAMACION UN-PROGRAMA El desarrollo de un programa que resuelva un problema dado es una tarea compleja, ya que es necesario tener en cuenta de manera simultnea muchos elementos. Por lo tanto, es indispensable usar una metodologa de programacin. Una metodologa de programacin es un conjunto o sistema de mtodos, principios y reglas que permiten enfrentar de manera sistemtica el desarrollo de un programa que resuelve un problema algortmico. Estas metodologas generalmente se estructuran como una secuencia de pasos que parten de la definicin del problema y culminan con un programa que lo resuelve.

A continuacin se presenta de manera general los pasos de una metodologa:

El Dilogo La Especificacin Diseo Codificacin

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa Con la cual se busca comprender totalmente el problema a resolver. Con la cual se establece de manera precisa las entradas, salidas y las condiciones que deben cumplir. En esta etapa se construye un algoritmo que cumpla con la especificacin. Se traduce el algoritmo a un lenguaje de programacin. Se realizan pruebas del programa implementado para determinar su validez en la resolucin del problema.

Prueba y Verificacin

Nota: Los ejemplos incluidos en esta seccin presentados en pseudocdigo son solo para ilustrar la metodologa mas no se espera que el estudiante los comprenda.

3.1 DIALOGO En el primer paso en el proceso de solucin a un problema se debe determinar de manera clara y concisa la siguiente informacin: 1. Los objetos conocidos, es decir, aquellos objetos de los cuales poseemos informacin total o parcial til en la bsqueda de los objetos desconocidos. 2. Las condiciones, aquellas relaciones establecidas entre los objetos conocidos y los desconocidos. Para esto se deben encontrar entre otras, la dependencia entre los valores de los objetos desconocidos de los valores de los objetos conocidos y que restricciones le impone el planteamiento del problema a dichos objetos. 3. Los valores posibles que pueden tomar los objetos desconocidos.

Ejemplo. Sean los puntos P=(a,b) y Q=(c,d) que definen una recta, encontrar un segmento de recta perpendicular a la anterior que pase por el punto medio de los puntos dados. OBJETOS DESCONOCIDOS OBJETOS CONOCIDOS CONDICIONES Un segmento de recta. Los puntos P y Q. El segmento de recta debe pasar por el punto medio entre P y Q, y debe ser perpendicular a la recta trazada entre P y Q.

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa

3.2 ESPECIFICACIN DE ALGORITMOS


Introduccin 3.2.1 Pasos para la especificacin de algoritmos 3.2.2 Ejemplos de especificacin

3.2 ESPECIFICACION DE ALGORITMOS Despus de entender totalmente el problema a resolver (lo cual se consigue con la etapa del dilogo), se debe realizar una especificacin del algoritmo que permite encontrar su solucin. Un algoritmo que no est claramente especificado puede ser interpretado de diferentes maneras y al disearlo se puede terminar con un algoritmo que no sirve para solucionar el problema. La especificacin de un algoritmo se hace mediante una descripcin clara y precisa de: 1. 2. 3. Las entradas que el algoritmo recibir. Las salidas que el algoritmo proporcionar. La dependencia que mantendrn las salidas obtenidas con las entradas recibidas.

Esta descripcin puede ser presentada mediante un diagrama de caja negra como el de la siguiente figura:

3.2.1 PASOS PARA LA ESPECIFICACIN DE ALGORITMOS Las entradas corresponden a los objetos conocidos. Se debe indicar Especificar Entradas claramente la descripcin, cantidad y tipo de las mismas. Especificar Salidas Las salidas corresponden a los objetos desconocidos del problema. Se debe indicar claramente la cantidad, descripcin y tipo de las mismas.

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa Especificar Condiciones Se describe claramente como dependen las salidas de las entradas, se puede usar lenguaje matemtico o informal. 3.2.2 EJEMPLOS DE ESPECIFICACIN PROBLEMA 1: Construir un algoritmo que calcule el promedio de 4 notas. ESPECIFICACION A: (Sin diagrama de caja negra) N1,N2,N3,N4 (notas parciales) de tipo Real. Final (nota final) de tipo Real.

Entradas Salidas Condiciones

ESPECIFICACION B: (Con diagrama de caja negra) Diagrama de Caja Negra:

Descripcin de Entradas y Salidas Tipo de Entradas y Salidas Condiciones

Ni: Nota i-sima con i=1,2,3,4, Final: Nota Final. N1, N2, N3, N4, Final Reales.

PROBLEMA 2: Construir un algoritmo que determine el mayor de tres nmeros enteros. ESPECIFICACION A A,B,C (nmeros de entrada) de tipo Real. Mayor (valor mayor) de tipo Real. Mayor debe ser el valor mximo de A, B y C.

Entradas Salidas Condiciones

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa

ESPECIFICACION B Diagrama de Caja Negra:

Descripcin de Entradas y Salidas Tipo de Entradas y Salidas Condiciones

A, B, C: Nmeros de entrada, Mayor: Valor Mayor. A, B, C, Mayor Enteros

PROBLEMA 3: Determinar si un punto est dentro de un crculo.

ESPECIFICACION A Cx (coordenada x del crculo) de tipo Real. Cy (coordenada y del crculo) de tipo Real. Entradas r (radio del crculo) de tipo Real. Px (coordenada x del punto) de tipo Real. Py (coordenada y del punto) de tipo Real. Salidas Condiciones Pertenece de tipo Booleano, (indica si el punto est dentro o fuera del crculo). Pertenece = Verdadero, si el punto est dentro del crculo.

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa Pertenece = Falso, si el punto est fuera del crculo.

ESPECIFICACION B Diagrama de Caja Negra:

(Cx, Cy): Coordenadas del crculo. Descripcin de Entradas y Salidas r: Radio del crculo. (Px, Py):Coordenadas del punto. Tipo de Entradas y Salidas Condiciones Cx, Cy, r, Px, Py Mayor Enteros.

3.3 DISEO ESTRUCTURADO DE ALGORITMOS


Introduccin 3.3.1 Divisin 3.3.2 Definicin de abstracciones

3.3 DISEO ESTRUCTURADO DE ALGORITMOS La fase de diseo del algoritmo, es decir, la fase en la que se construye el algoritmo que permitir encontrar la solucin al problema, est dividida en dos pasos importantes: Divisin: En el que a partir de la especificacin del algoritmo se divide el proceso (algoritmo en abstracto) en varios subprocesos hasta llegar al nivel de instruccin. Abstraccin: En el que se revisa que porciones del algoritmo se repiten o son muy utilizadas y con las cuales se construyen funciones y/o procedimientos.

3.3.1 DIVISIN

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa Consiste en subdividir de manera sistemtica el proceso en una coleccin de pasos ms pequeos. Est subdivisin se realiza de manera repetida hasta llegar al nivel de instruccin.

Durante el proceso de divisin se determina la estructura de control adecuada, ya sea, secuencia, seleccin, repeticin, asignacin, lectura o escritura, que se puede asociar con cada subproceso obtenido. Tanto los pasos intermedios de subdivisin como el resultado final pueden ser representados por un diagrama de flujo o por pseudo cdigo. Problema b.1: Realizar un programa que lea una serie de n nmeros enteros y determine si la suma de los mismos es un cuadrado perfecto. Especificacin:

donde n N, datos es una coleccin de n nmeros naturales, Es_cuadrado Booleano

Divisin: Primera Iteracin

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa Segunda Iteracin

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa

Tercer Iteracin (final en este ejemplo)

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa Pseudo-cdigo


Procedimiento principal() variables n : entero suma : entero dato : entero dato : entero i : entero Inicio escribir (Nmero de datos:) leer (n) suma := 0 para (i:=1 hasta n hacer) escribir (ingrese un dato:) leer (dato) suma := suma + dato fin_para si redondear( raiz2( suma ) ) = raiz2( suma ) entonces escribir (La suma es un cuadrado perfecto) sino escribir (La suma no es un cuadrado perfecto) fin_si Fin fin_procedimiento

3.3.2 DEFINICIN DE ABSTRACCIONES Identificar que secuencias de pasos se utilizan ms de una vez en diferentes partes del proceso. Recolectar estas secuencias de pasos en funciones y procedimientos segn sea el caso. Documentar cada funcin y procedimiento especificando claramente: El propsito de la funcin (o procedimiento). El nombre, tipo y propsito de cada argumento. El resultado (o efectos laterales). Resultado final: Diagrama de flujo (o pseudo cdigo) final incluyendo las funciones y procedimientos. Ejemplo: Problema: Desarrollar un programa que dados dos conjuntos finitos de enteros y un entero, determine si el entero dado esta o no en alguno de los dos conjuntos.

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa Solucin: Se seguir la metodologa propuesta en este libro. Dialogo: El primer paso es entender completamente el problema y que esquemas de representacin se usarn. En general, se pueden utilizar arreglos de elementos de tipo T para representar conjuntos finitos de elementos de tipo T[1]. El uso de arreglos para representar conjuntos, requiere que se realicen ciertas validaciones que garanticen la validez como conjunto, por ejemplo, que en el arreglo no este un mismo elemento dos veces (en un conjunto un elemento esta solo una vez). Teniendo en cuenta estos razonamientos, se puede decir que: Los objetos conocidos son dos conjuntos (arreglos) y el entero. El objeto desconocido es un valor de verdad. La condicin es que si el entero dado est en alguno de los conjuntos dados el valor de verdad ser verdadero y ser falso si no est en alguno de los dos. Especificacin:

donde, A :es un conjunto de enteros. B : es un conjunto de enteros. elemento : es el entero a comprobar si esta en alguno de los conjuntos. bandera : es un booleano que indica si el el elemnto esta o no esta.

Divisin: Primer Iteracin. Inicio 1. Leer primer conjunto. 2. Leer segundo conjunto. 3. Leer entero. 4. Determinar si el entero esta en el primer conjunto. 5. Determinar si el entero esta en el segundo conjunto.

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa 6. escribir el resultado. Fin Segunda Iteracin. 1. L eer primer conjunto se divide en: 1.1. eer un dato. 1.2. Determinar si el elemento no esta en el primer conjunto. 1.3. Si no esta agregar el dato al primer conjunto, si ya esta mostrar un mensaje de error. 1.4. Preguntar si el usuario desea ingresar un nuevo elemento al primer conjunto. 1.5. Si el usuario desea ingresar un nuevo elemento volver a 1.1. 2. Leer segundo conjunto se divide en: 2.1. Leer un dato. 2.2. Determinar si el elemento no esta en el segundo conjunto. 2.3. Si no esta agregar el dato al segundo conjunto, si ya esta mostrar un mensaje de error. 2.4. Preguntar si el usuario desea ingresar un nuevo elemento al segundo conjunto. 2.5. Si el usuario desea ingresar un nuevo elemento volver a 2.1 3. Leer entero. 4. Determinar si el entero esta en el primer conjunto. 5. Determinar si el entero esta al segundo conjunto. 6. escribir el resultado. tercera iteracin Asociar las instrucciones apropiadas.
Procedimiento principal() variables i : entero j : entero n : entero m : entero elemento : entero continuar : caracter bandera1 : booleano bandera2 : booleano A : arreglo [100] de entero B : arreglo [100] de entero /* el codigo siguiente lee el conjunto A*/ n := 0 escribir (Desea ingresar elementos al conjunto A (S/N):) leer (continuar) mientras (continuar =S | continuar = s) hacer escribir (Ingrese el elemento al conjunto A:) leer (elemento) /* el codigo siguiente prueba si el elemento esta en el conjunto A */ Inicio i := 0

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa


mientras (i<n & A[i] <>elemento) hacer i := i+1; fin_mientras si (i =n entonces) A[n] := elemento n := n+1 sino escribir (Error: el elemento ya esta en el conjunto A) fin_si escribir (Desea ingresar mas elementos al conjunto A (S/N)) leer (continuar) fin_mientras /* el codigo siguiente lee el conjunto B */ m := 0 escribir (Desea ingresar mas elementos al conjunto B (S/N)) leer (continuar) mientras (continuar =S |continuar = s hacer) escribir (Ingrese el elemento al conjunto B:) leer (elemento) /* el codigo siguiente prueba si el elemento esta en el conjunto B */ i := 0 mientras (i<m & B[i] <>elemento hacer) i := i+1; fin_mientras si (i = m) entonces B[m] := elemento m := m+1 sino escribir (Error: el elemento ya esta en el conjunto B) fin_si escribir (Desea ingresar mas elementos al conjunto B (S/N)) leer (continuar) fin_mientras /* el codigo siguiente lee un elemento a probar */ escribir (Ingrese el dato a probar en los conjuntos) leer (elemento) /* el codigo siguiente prueba si el elemento esta en el conjunto A */ i := 0 mientras (i<m & A[i] <>elemento) hacer i := i+1; fin_mientras si( i =n entonces) bandera1 := falso sino bandera1 := verdadero fin_si /* el codigo siguiente prueba si el elemento esta en el conjunto B */ i := 0 mientras (i<m & B[i] <>elemento) hacer i := i+1

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa


fin_mientras si (i = m entonces) bandera2 := falso sino bandera2 := verdadero fin_si /* el codigo siguiente determina si el elemento esta en alguno de los dos conjuntos */ si (bandera1 | bandera2) entonces escribir (El dato dado esta en alguno de los dos conjuntos) sino escribir (El dato dado esta en ninguno de los conjuntos) fin_si Fin fin_procedimiento

Abstraccin: En el cdigo obtenido mediante la fase de divisin se puede apreciar la existencia de porciones de cdigo que aunque no son iguales pero son muy parecidas. Este es el caso de las porciones de cdigo que permiten leer los conjuntos A y B (lineas de cdigo 11-32 y 33-54), y las porciones de cdigo que permiten determinar si un elemento esta en un conjunto (lineas de cdigo 1829, 40-51, 58-69 y 70-71). De esta manera se pueden crear un procedimiento que permita leer el conjunto y una funcin de retorne si un elemento esta en un conjunto o no que permite abstraer estas porciones de cdigo. La funcin pertenece se define as: pertenece: Arreglo[100] de Entero x Entero x Entero x Booleano (A , , n , e ) x V si e = A[i] para algn i F en otro caso Se puede observar que esta funcin adems de recibir el arreglo de datos y el elemento, recibe un entero adicional n. Este entero se utiliza para indicar el tamao del conjunto dado. Esta funcin se codifica como sigue: funcin pertenece( A :arreglo[100] de entero, n :entero, e :entero ):booleano Variables bandera :booleano i : entero inicio /* el codigo siguiente prueba si el elemento esta en el conjunto */ i := 0 mientras (i<n & A[i] != e) haga i := i+1; fin_mientras

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa si (i == n) entonces bandera := falso sino bandera := verdadero fin_si retornar bandera fin_funcion

El procedimiento de leer el conjunto se puede codificar como sigue: procedimiento leer_conjunto( var A :arreglo [100] de entero, var n :entero, c :caracter ) Variables i :entero elemento :entero continuar :caracter inicio /* el codigo siguiente lee el conjunto */ n := 0 escribir (Desea ingresar elementos al conjunto , c, (S/N)) leer (continuar) mientras (continuar =S | continuar =s) haga escribir (Ingrese el elemento al conjunto , A , :) leer (elemento) /* el codigo siguiente prueba si el elemento esta en el conjunto y de no ser as lo adiciona */ si pertenece( A, n, elemento ) entonces A[n] := elemento n := n+1 sino escribir (Error: el elemento ya esta en el conjunto ) fin_si escribir (Desea ingresar mas elementos al conjunto (S/N)?") leer (continuar) fin_mientras fin_procedimiento Se puede observar que tanto el arreglo de datos como la variable de tamao del conjunto pasan por referencia. Esto es debido a que este procedimiento modificar el arreglo de datos enviado como argumento, pues en ste es donde se almacenarn los datos ledos, y el argumento n donde se almacenar el tamao del conjunto ledo. Adicionalmente se pasa un carcter por valor, que indica el

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa nombre del conjunto a leer, para escribirlo en pantalla mientras se leen los elementos del conjunto de tal manera que el usuario conozca el nombre del conjunto que esta ingresando. Otro aspecto importante que se puede destacar en este procedimiento es que usa la funcin pertenece para determinar si se debe o no adicionar el elemento ledo. De esta manera el algoritmo principal se puede presentar como sigue: Procedimiento principal() inicio n :entero m :entero elemento :entero A :arreglo [100] de entero B :arreglo [100] de entero /* el codigo siguiente lee el conjunto A */ leer_conjunto( A, n, A ) /* el codigo siguiente lee el conjunto B */ leer_conjunto( B, m, B ) /* el codigo siguiente determina si el elemento esta en alguno de los dos conjuntos */ si pertenece( A, n, elemento ) || pertenece( B, m, elemento ) entonces escribir (El dato dado esta en alguno de los dos conjuntos) sino escribir (El dato dado esta en ninguno de los conjuntos) fin_si fin_procedimiento Se puede apreciar la reduccin de lneas de cdigo del programa y la facilidad de lectura de cada uno de estos algoritmos (funcin, procedimiento y algoritmo principal) respecto al algoritmo inicial realizado sin abstraccin. Se deja al lector la escritura del programa completo, utilizando las reglas descritas en esta seccin.

[1] El programador avanzado, que conozca estructuras de datos sabr, que es posible y mejor representar los elementos de un conjunto mediante un Arbol. 3.4 CODIFICACIN Cuando ya se ha diseado completamente el algoritmo y se tiene escrito en algn esquema de representacin (pseudo-cdigo o diagrama de flujo), el siguiente paso es codificarlo en el lenguaje de programacin definido para tal fin.

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa En este momento es cuando el programador interactua con el computador mediante la herramienta de software que disponga para codificar en el lenguaje seleccionado. EJEMPLO. Tmese como base el pseudo-cdigo desarrollado en la seccin anterior, el programa en C++ para este pseudo-cdigo sera: #include <iostream.h> int pertenece( int A[100], int n, int e) { bool bandera; int i; /* el codigo siguiente prueba si el elemento esta en el conjunto */ i=0 while(> i<n && A[i] != e ) { i = i+1; }; if( i == n ) { bandera = falso; } else { bandera = verdadero; }; return bandera; };

void leer_conjunto( intA[100], int & n, char c ) { int i; int elemento; char continuar; /* el codigo siguiente lee el conjunto */ n = 0; cout << Desea ingresar elementos al conjunto; cout << c << (S/N); cin >> continuar; while( continuar == S || continuar == s ) { cout << Ingrese el elemento al conjunto << A << :; cin >> elemento; /* el codigo siguiente prueba si el elemento esta en el conjunto y de no ser as lo

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa adiciona */ if( !pertenece( A, n, elemento ) ) { A[n] = elemento; n = n+1; } else { cout << Error: el elemento ya esta en el conjunto; }; cout << Desea ingresar mas elementos al conjunto (S/N) ; cin>> continuar; }; }; void main() { int n; int m; int elemento; int A[100]; int B[100]; /* el codigo siguiente lee el conjunto A */ leer_conjunto( A, n, A ); /* el codigo siguiente lee el conjunto B */ leer_conjunto( B, m, B ) /* el codigo siguiente determina si el elemento esta en alguno de los dos conjuntos */ if( pertenece(A, n, elemento) || pertenece(B, m, elemento) ) { cout << El dato dado esta en alguno de los dos conjuntos; } else { cout<< El dato dado esta en ninguno de los conjuntos; }; };

3.5 PRUEBAS DE ESCRITORIO

La prueba de escritorio es una herramienta til para entender que hace un determinado algoritmo, o para verificar que un algoritmo cumple con la especificacin sin necesidad de ejecutarlo.

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa Bsicamente, una prueba de escritorio es una ejecucin a mano del algoritmo, por lo tanto se debe llevar registro de los valores que va tomando cada una de las variables involucradas en el mismo. A continuacin se muestra un ejemplo de prueba de escritorio del siguiente algoritmo: suma :entero entrada :entero menor :entero leer entrada menor = entrada suma = 0 mientras (entrada != 0) haga si (entrada < menor) entonces menor =entrada fin_si suma = suma + entrada leer entrada fin_mientras escribir valor Menor: escribir menor escribir Suma: escribir suma tr> INSTRUCCIN leer entrada menor = entrada suma :=0 suma :=suma + entrada leer entrada menor = entrada suma :=suma + entrada leer entrada suma :=suma + entrada leer entrada Escribir valor menor: Escribir menor Escribir Suma: Escribir suma entrada 10 10 0 10 7 7 17 9 26 0 Valor Menor 7 Suma: 26 __ menor suma Pantalla

MICROPROCESADORES Y MICROCONTROLADORES Ing. Rubn Daro Crdenas Espinosa

Вам также может понравиться