You are on page 1of 171

ALGORITMOS: Aprendiendo a programar a travs de pseudocdigos.

Jos Luis Parra Daz Graduado de Ingeniero en Informtica Universidad Centro Occidental Lisandro Alvarado Barquisimeto Lara - Venezuela

J. L. Parra

ALGORITMOS: Aprendiendo a programar a travs de pseudocdigos. No est permitida la reproduccin total o parcial de este libro, ni su tratamiento informtico, ni la transmisin de ninguna forma o por cualquier medio, ya sea electrnico, mecnico, por fotocopiadora, por registro u otro mtodo, sin el permiso previo y por escrito del titular del derecho de autor. ISBN: 980-332-177-3 Deposito Legal: 08120010043284 Diseo de Portada: Impreso en:

J. L. Parra

DEDICATORIA

A mis hijos Leonel Jos, Luis Enrique y Julielis Jos por ser las personitas que me dan las fuerzas para seguir adelante y lograr lo propuesto.

J. L. Parra

AGRADECIMIENTOS
A Dios, por darme el aliento de vida. A Mis Padres, por el apoyo que me han dado en todos los momentos de mi vida, sin el cual no hubiese sido posible esta obra. A Darlyn Gonzlez, fuente de aliento para culminar esta obra, por ser adems la persona que se dedic a pasar largos ratos de su tiempo delante de un teclado transcribiendo mis borradores. A todos aquellos amigos que de una u otra forma han hecho crticas constructivas o no a esta obra, ya que las mismas me estimularon a esforzarme y dar todo de m para concluirla.

J. L. Parra

PROLOGO
Hoy en da en el rea de la informtica han incursionado personas que nunca pensaron manejar una computadora, y se han dado cuenta lo rpido y preciso que pueden ser los resultados emitidos por las mismas; muchas de ellas quizs no se han detenido a pensar lo que est escondido detrs de esa rapidez y precisin. En la misma estn involucrados los avances tecnolgicos y la capacidad de razonamiento del ser humano; sin los cuales una computadora no tendra cabida en este mundo. Esta obra est concebida en primer lugar para ayudar a los estudiantes que inician estudios en el rea de informtica, a pensar en la manera de escribir procesos que puedan ser entendidos y ejecutados por una computadora, basados en una metodologa que simplifica los pasos para lograr un cdigo programado como es el diseo de procesos mediante Pseudocdigos. En segundo trmino se dirige a cualquier persona interesada en aprender cmo se construyen los procesos que se ejecutan en una computadora sin importar el hecho de que posean o no conocimiento de informtica. El fuerte de este libro no est en el hecho de mostrar determinado problema y su resolucin mediante Pseudocdigos, sino en el hecho de que a medida que se presentan las soluciones a los problemas propuestos se da una visin de cmo es su ejecucin dentro de la computadora, mostrando cmo se van almacenando y cambiando los datos en memoria, con la finalidad de emitir los resultados deseados. A este proceso muy pocos autores le han dado importancia, dejando muchas veces en la mente de la persona que est interesada en aprender el funcionamiento de los procesos computarizados, incgnitas quizs mayores a las que tena antes de comenzar a leer la obra. El libro est estructurado en siete captulos, los cuales de una manera muy sistemtica va introduciendo al estudiante en el diseo de Pseudocdigos utilizando las tres estructuras bsicas de programacin como son la secuencial, la alternativa y la repetitiva, siendo estas las bases para que el aprendiz pueda introducirse en la creacin
J. L. Parra

de programas utilizando Lenguajes de Programacin. El tiempo escolar estimado para lograr un aprendizaje efectivo ser de un Semestre. La obra se estructura de la siguiente manera: El captulo 1 da al lector los conceptos utilizados en el ambiente de informtica y programacin de una manera muy sencilla y directa, ya que el objetivo de esta obra no es explicar la teora concerniente a informtica para lo cual existen bastantes obras en el mercado. El captulo 2 proporciona al lector el concepto de algoritmo y sus caractersticas, adems lo introduce en el diseo de algoritmos mediante Pseudocdigos definiendo la estructura general del mismo y las palabras involucradas en el proceso. El captulo 3 inicia al lector en el diseo de Pseudocdigos secuenciales sencillos, donde se involucra un solo proceso. El captulo 4 explica el diseo de Pseudocdigos con estructuras condicionales o alternativas en sus tres formas: simples, dobles y mltiples. El captulo 5 explica el diseo de Pseudocdigos con estructuras repetitivas utilizando sus tres formas bsicas como son: Repita mientras, Repita Hasta y Haga-Desde-Hasta. El captulo 6 introduce al lector en el diseo avanzado de algoritmos haciendo uso de las tres estructuras presentadas en los captulos anteriores. El captulo 7 explica el uso de las estructuras de datos y especficamente uso de matrices y vectores. Espero que la obra logre su objetivo y sea de utilidad para todas aquellas personas que por alguna razn hojee sus captulos. El Autor.
J. L. Parra

INDICE
Pag. PROLOGO CAPITULO 1. COMPUTACIN INTRODUCCION FUNDAMENTAL A LA 1 1 1 4 4 5 5 6 6 7 9 11 12 12 13 14 15 15 16 19 19 32 34 34 35 36 40 51 52 58

1.1 Computadora 1.2 Componentes fsicos de la computadora 1.3 Clasificacin de las computadoras 1.3.1 Segn la manera como se representan internamente y se procesan los datos. 1.3.2 Segn el uso o el propsito para el cual fueron diseadas 1.3.3 Segn la potencia, capacidad o tamao 1.4 Software 1.5 Lenguaje de Programacin 1.6 Procesamiento de Datos 1.7 Identificadores, variables, constantes y expresiones Cuestionario CAPITULO 2. ALGORITMOS 2.1 2.2 2.3 2.4 Algoritmos Caractersticas de los Algoritmos Programas Diseo de Algoritmos mediante Pseudocdigos 2.4.1 Estructura general de los Pseudocdigos 2.4.2 Palabras y reglas bsicas utilizadas en el diseo de Pseudocdigos

CAPITULO 3. DISEO DE PSEUDOCODIGOS SECUENCIALES 3.1 Estructuras Secuenciales Cuestionario CAPITULO 4. DISEO DE PSEUDOCODIGOS CON ESTRUCTURAS SELECTIVAS O ALTERNATIVAS 4.1 Tabla de la verdad 4.2 Estructuras Selectivas o Alternativas 4.2.1 Estructuras Alternativas Simples 4.2.2 Estructuras Alternativas Dobles Cuestionario 4.2.3 Estructuras Alternativas Mltiples Cuestionario

J. L. Parra

CAPITULO 5. DISEO DE PSEUDOCODIGOS CON ESTRUCTURAS REPETITIVAS O ITERATIVAS 5.1 Estructura Repetitiva Repita Mientras Cuestionario 5.2 Estructura Repetitiva Repita Hasta Cuestionario 5.3 Estructura Repetitiva Haga.........Hasta Cuestionario CAPITULO 6. DISEO AVANZADO DE ALGORITMOS 6.1 Datos Centinela y Datos Respuesta Cuestionario 6.2 Diseo de Reportes. Resumen Cuestionario 6.3 Ruptura de Control Cuestionario CAPITULO 7. MATRICES O ARREGLOS 7.1 Estructura de Datos 7.2 Matrices o Arreglos 7.2.1 Caractersticas de los Arreglos 7.2.2 Tipos de Arreglos 7.3 Diseo de Algoritmos para la manipulacin de vectores Cuestionario 1. Cuestionario 2. 7.4 Arreglos Multidimensionales 7.5 Arreglos Bidimensionales o Matrices 7.6 Diseo de Algoritmos para Arreglos Bidimensionales Cuestionario BIBLIOGRAFA INDICE ALFABETICO

59 61 71 71 76 77 83 84 84 96 96 114 115 135 136 136 137 137 137 138 141 145 145 145 147 154 155 156

J. L. Parra

CAPITULO 1
INTRODUCCION FUNDAMENTAL A LA COMPUTACION. Hoy en da, las computadoras son una de las herramientas de mayor utilidad para el ser humano, ayudndolo a resolver problemas en reas tales como: industrias, educacin, ciencias, etc. y en general pueden ser utilizadas en casi todos los campos de nuestra vida; sin embargo, una computadora sin un conjunto de instrucciones que le indique los pasos a seguir para alcanzar la resolucin de un determinado problema, es completamente intil. En este tema estudiaremos los componentes principales de las computadoras, los lenguajes de programacin y los conceptos bsicos utilizados para la resolucin de problemas a travs de computadoras, aspectos fundamentales para comenzar con el diseo de algoritmos. 1 . 1. COMPUTADORA

Es un dispositivo electrnico utilizado para recibir, procesar y almacenar datos con la finalidad de obtener resultados a gran velocidad. Los componentes fsicos de una computadora se conocen como Hardware y el conjunto de instrucciones que hacen posible la resolucin de problemas se denominan Software (programas). 1. 2. COMPONENTES FISICOS DE LA COMPUTADORA Las computadoras estn formadas por los siguientes elementos: Unidades de entrada Memoria principal (Unidad de almacenamiento interna) Unidad central de proceso (C.P.U.) Unidades de salida Memoria secundaria (Unidad de almacenamiento externa) UNIDADES DE ENTRADA: Son dispositivos que sirven para introducir datos a las computadoras para su procesamiento. Entre estos podemos encontrar: teclado, lpices pticos, lectores de cdigo de barras, ratn, etc.

J. L. Parra

MEMORIA PRINCIPAL: Es el componente donde se almacena informacin. Esta informacin puede ser de dos tipos: instrucciones de un programa y datos con los que se ejecuta las instrucciones del programa. Para que un computador pueda resolver un problema, el grupo de instrucciones diseadas para resolver tal problema, debe ser cargado en memoria y en el momento en que dichas instrucciones necesite de algn dato para su procesamiento estos tambin deben ser cargados en memoria, mediante instrucciones que permitan su almacenamiento en ella. Generalmente la memoria se divide en: Memoria RAM (Random Access Memory): Son direcciones de almacenamiento temporal cuyo contenido permanecer en memoria solo durante el tiempo que el computador esta encendido, al momento de apagarse su contenido se pierde o se borra. Memoria ROM (Read Only Memory): Son direcciones de almacenamiento de datos permanentes. Son utilizadas para almacenamiento de datos permanentes. Son utilizadas para almacenar informacin propia del computador tales como: el reloj, instrucciones para cargar el sistema operativo etc. Las cuales deben permanecer en memoria aunque el computador est apagado. UNIDADES DE ALMACENAMIENTO EN MEMORIA A medida que se ha desarrollado la tecnologa en el rea de computacin se han creado nuevas unidades de almacenamiento en memoria, en la actualidad podemos encontrar las siguientes unidades de memoria: Bit Byte Kilobyte Megabyte Gigabyte Terabyte

BIT : Es la unidad bsica de almacenamiento, donde solo se puede almacenar un dgito binario, es decir un cero (0) o un uno (1). BYTE : Es una unidad de almacenamiento en memoria compuesta por ocho bit, cada byte tiene asociada una direccin y un contenido: la direccin indica la posicin en memoria a acceder para almacenar o recuperar informacin y el contenido indica el dato o parte de instruccin almacenado en memoria. La direccin es permanente y nica, el contenido puede cambiar mientras se ejecuta un programa.
J. L. Parra

KILOBYTE : Unidad de almacenamiento en memoria compuesta por 1024 byte. MEGABYTE : Unidad de almacenamiento en memoria compuesta por 1024 kilobyte, es decir 1048576 byte. GIGABYTE: Unidad de almacenamiento en memoria compuesta por 1024 Megabyte, es decir 1073741824 byte. TERABYTE: Unidad de almacenamiento en memoria compuesta por 1024 Gigabyte, es decir 1099511627776 byte. UNIDAD CENTRAL DE PROCESO: Es el elemento dentro del computador que dirige y controla el procesamiento de datos, esta compuesto por la unidad de control y la unidad aritmtico-lgica. LA UNIDAD DE CONTROL: Coordina y controla las actividades a realizar dentro del computador, indicando que operacin o instruccin se va a ejecutar y cual o cuales dispositivos o partes del computador sern activados para ejecutar dicha instruccin. LA UNIDAD ARITMETICO-LOGICA: Realiza las operaciones aritmticas tales como: suma, resta, multiplicacin, divisin, etc. y lgicas como comparaciones, evaluacin de condiciones, etc. UNIDADES DE SALIDA: Son dispositivos a travs de los cuales se presentan a los usuarios el resultado del procesamiento de datos, entre estos dispositivos encontramos: pantallas, impresoras, trazadores grficos o plotters, etc. MEMORIA SECUNDARIA (Externa): Los datos o instrucciones de programas de los usuarios permanecen en memoria principal solo durante el tiempo de ejecucin, por lo que se hace necesario almacenar estos en medios que permitan su almacenamiento y recuperacin de forma permanente, estos medios utilizados para guardar informacin y datos en forma permanente son conocidos como memoria secundaria o medio de almacenamiento externo, los ms conocidos y utilizados en la actualidad son las cintas magnticas , discos magnticos y los CDROM. CINTAS MAGNETICAS: Son cintas plsticas con un recubrimiento de oxido de hierro u otro material magntico, en la cual por medio de pulsos electromagnticos se graban marcas invisibles que representan datos. Los datos grabados en cintas se borran automticamente cuando se graban nuevos en el mismo lugar. Las cintas magnticas generalmente tienen un ancho de media pulgada y se pueden conseguir en longitudes de 300, 600, 1200, 2400 pies, la organizacin de los datos en la cinta es de forma secuencial, por lo que para llegar a un dato determinado se deber leer la cinta desde el principio para obtener el dato deseado, esto es similar a las canciones grabadas en un cassette,
J. L. Parra

para escuchar una determinada cancin grabada en un cassette se debe pasar por las canciones que estn grabadas antes de la cancin deseada. Los dispositivos a travs de los cuales se procesan los datos almacenados en las cintas son conocidos como unidad de cinta o lectora de cinta. DISCO MAGNETICO: Es un plato metlico o plstico parecido a un disco musical sin surco, recubierto de algn material de grabacin magnetizable, pueden ser porttiles conocidos como diskette o estar montado permanentemente en el computador conocido como discos duros. Los datos se graban en los discos por medio de pulsos electromagnticos los cuales dejan marcas invisibles en la superficie magntica que representan los datos, estos son borrados cuando se graban nuevos datos sobre la misma superficie. El acceso a los datos en los discos puede ser en forma secuencial o en forma directa, es decir, se puede acceder a un determinado dato pasando por todos los datos que estn almacenados antes del dato deseado o localizarlo directamente sin pasar primero por los anteriores. En la actualidad puede encontrar en el mercado diskette con capacidad de almacenamiento de 340 kilobytes, 720 kilobytes, 1.44 Megabytes y de 3 1 / 2 y de 5 1 / 4 pulgadas de dimetro, as como discos duro con capacidad de 10, 20, 40, 80, 120 Megabytes hasta varios Gigabytes. Los dispositivos a travs de los cuales se procesan los datos almacenados en discos se denominan unidades de discos. CD-ROM: Disco compacto de memoria solo de lectura, es un dispositivo de almacenamiento ptico donde un lser, lee la superficie para almacenar y recuperar informacin; utiliza la misma tecnologa usada en los discos compactos de msica, son tiles para almacenar grandes volmenes de informacin que cambian con poca frecuencia, por ejemplo enciclopedias, bibliotecas, msica, videos, otros; normalmente se pueden almacenar en ellos hasta 600 Megabytes. 1. 3. CLASIFICACION DE LAS COMPUTADORAS. Las computadoras se clasifican de acuerdo a los siguientes aspectos: la manera como se representan internamente y se procesan los datos, segn el propsito para el cual fueron diseadas y segn la potencia, capacidad y tamao. 1.3.1 Segn la manera como se representan internamente y se procesan los datos, las computadoras se clasifican en: 1.3.1.1- Computadoras Analgicas: Son sistemas analgicos en los que los datos se representan por seales fsicas (Elctricas; por lo general), proporcionales al valor de la variable, se utilizan usualmente para resolver ecuaciones matemticas. Contienen una serie de circuitos o mdulos que efectan con sus seales de entrada operaciones tales
J. L. Parra

como suma, resta, multiplicacin, divisin, potenciacin, etc. Su programacin en la mayora de los casos est en su propio cableado. 1.3.1.2 Computadoras Digitales: Los datos se representan por seales elctricas discretas que solo pueden tomar dos valores ceros (0) y unos (1). Trabaja procesando nmeros que representan cifras, letras, u otros smbolos especiales. Se programa por medio de lenguajes de programacin. 1.3.1.3 Computadoras Hbridas: Poseen caractersticas de las dos anteriores. Suelen estar constituidas de una computadora digital que procesa informacin analgica, para lo cual tiene sus entradas y salidas controladas por medio de convertidores analgicos - digitales y digitales analgicos. Segn el propsito para el que fueron diseadas, se clasifican en: Computadoras de uso general: Son aquellas que pueden utilizarse para distintos tipos de aplicaciones, entre las que podemos mencionar: administrativas, clculos cientficos, clculos tcnicos, etc. El tipo de aplicacin a realizar depende del programa que el usuario ordene ejecutar. 1.3.2.21 Computadoras de usos especficos: Son computadoras que pueden utilizarse solo para ejecutar una aplicacin concreta. Se caracterizan porque ejecutan uno o muy pocos programas, ejemplo de estas computadoras son las mquinas de juego. 1.3.3 Segn la potencia, capacidad o tamao: En la actualidad esta es la clasificacin ms compleja ya que computadores muy pequeos pueden tener potencias mayores que las de computadoras grandes. En este grupo las computadoras se clasifican en:

Microcomputadoras : Son los sistemas de computacin ms pequeos para uso general, pero estos pueden ejecutar operaciones muy complejas a grandes velocidades. La memoria principal suele tener capacidades entre 512 KB y 16 megabytes, normalmente son utilizados en ambiente monousuario (una sola persona), aunque en la actualidad pueden ser utilizados en ambiente multiusuarios (varias personas trabajando al mismo tiempo), una caracterstica es la gran cantidad de programas o aplicaciones disponibles para ellos. 1.3.3.2 Minicomputadoras : En este grupo con longitud de palabra de 16 a procesamiento de 1 MIPS (millones de y que admiten uso interactivo por ambiente multiusuarios. se incluyen computadores 32 bit y velocidad de instrucciones por segundo) varias personas es decir
J. L. Parra

1.3.3.3 Macrocomputadoras : (Mainframe), son computadoras que pueden ser utilizados por muchos usuarios simultneamente, su memoria principal base est en el orden de 16 a 128 megabyte, la mayora son bsicamente de longitud de palabra de 32 bit. Supercomputadoras : Son los ms grandes, rpidos y caros computadores del mundo, sus caractersticas principales son su rapidez (ms de 50 MIPS) y la precisin de sus clculos. Sueles contener varios C.P.U. trabajando en paralelo. 1. 4. SOFTWARE

El software es el conjunto de programas que permiten la ejecucin de una tarea en un sistema de computacin, se divide en dos grupos: Software del sistema y software de aplicacin. SOFTWARE DEL SISTEMA: Es el conjunto de programas indispensables para que la computadora funcione bsicamente, estos son: el sistema operativo, los compiladores e intrpretes y los programas de utilidad del sistema operativo, el cual dirige las operaciones a ejecutar por la computadora, controla el almacenamiento y recuperacin de archivos, activa y desactiva los diferentes dispositivos conectados al computador. A travs del sistema operativo es posible que los usuarios puedan introducir y grabar nuevos programas e indicarle al computador que los ejecute. SOFTWARE DE APLICACIN: Son programas creados para realizar tareas especficas para los usuarios tales como: nmina, contabilidad, inventario, control de estudio, etc. 1. 5. LENGUAJE DE PROGRAMACION. Desde el punto de vista comunicacional, los lenguajes son los medios de comunicacin que permiten el entendimiento entre un emisor y un receptor; de igual manera desde el punto de vista computacional existen los lenguajes de programacin que son medios que permiten el entendimiento entre las instrucciones de los programas escritos por el hombre (emisor) y los componentes del computador (receptor), es decir, los lenguajes de programacin son utilizados para escribir programas que puedan ser entendidos por las computadoras, los lenguajes de programacin se clasifican en las tres categoras siguientes:

J. L. Parra

LENGUAJE MAQUINA: Son aquellos entendibles directamente por la computadora, es decir, no necesitan traduccin para que la unidad central de proceso pueda comprender y ejecutar un programa. Las instrucciones en lenguaje mquina se expresan en trminos binarios, valores de ceros (0) y unos (1). LENGUAJE DE BAJO NIVEL: Estos lenguajes son generalmente dependientes de la mquina, es decir, los programas escritos en estos lenguajes la mayora de las veces solo funcionan para el tipo de mquina en el que fue escrito. El ms conocido de este tipo de lenguaje es el ASSEMBLER o lenguaje ensamblador, un programa escrito en lenguaje ensamblador en un microcomputador personal IBM no ser entendido por un computador IBM AS- 400 ya que como dijimos anteriormente son lenguajes que dependen del tipo de mquina. LENGUAJE DE ALTO NIVEL: Son aquellos en los que las instrucciones son escritas con sintaxis similar a las utilizadas por los lenguajes humanos, por lo que se facilita su escritura y comprensin por parte de los programadores. Los programas escritos en estos tipos de lenguajes son fciles de transportar entre diferentes tipos de computadores ya que son independientes del diseo del computador. Los programas escritos en lenguaje de alto nivel no son entendibles directamente por el computador, para que el computador entienda las instrucciones contenidas en un programa escrito en lenguaje de alto nivel stos deben ser traducidos a lenguaje mquina, este proceso se conoce como compilacin o interpretacin. Los programas escritos en lenguaje de alto nivel son conocidos tambin como programas fuentes y los programas resultantes de la compilacin de un programa fuente se denominan programas objetos los cuales son directamente ejecutables por el computador. Interpretacin, es el proceso que traduce cada instruccin de un programa escrito en lenguaje de alto nivel a una instruccin en lenguaje mquina e inmediatamente la ejecuta. 1. 6. PROCESAMIENTO DE DATOS. DATOS : Son entes aislados susceptibles de ser estudiados o procesados, es decir, son la materia prima de la informacin. INFORMACION : Es el conocimiento operaciones de procesamiento de datos. producido como resultado de las

PROCESAMIENTO DE DATOS: Son todos aquellos procesos o actividades que se pueden realizar con los datos, con la finalidad de obtener informacin. Los procesos bsicos que se pueden realizar con los datos son los siguientes: CAPTURA : Consiste en la obtencin del dato a ser estudiado.

J. L. Parra

AGRUPACION : Es el proceso de organizar elementos similares para formar grupos o clases. CLASIFICACION : Consiste en ordenar los datos en secuencias lgicas que faciliten el procesamiento de los mismos, estas secuencias podran ser del primero al ltimo, del ms antiguo al ms nuevo, del ms grande al ms pequeo, en orden alfabtico, etc. ALMACENAMIENTO: Consiste en la conservacin de los datos para consultarlos o procesarlos en el futuro. RECUPERACIN : Consiste en obtener o acceder los datos almacenados. COMUNICACIN : Consiste en la transferencia de datos o informacin entre diferentes operaciones con la finalidad de utilizarlos o de seguir procesndolos. REPRODUCCIN : Consiste en duplicar o copiar datos de manera de poder ser procesado o utilizado por diferentes actividades o usuarios al mismo tiempo.

TIPOS DE DATOS: Los datos se clasifican en datos numricos y no numricos. a) Datos numricos : Este tipo de dato est compuesto por combinaciones entre los dgitos cero ( 0 ) al nueve ( 9 ), son utilizados cuando se requiere efectuar operaciones de tipo aritmtica con ellos, se representan de las maneras siguientes: Nmero entero : Son aquellos que no poseen cifras decimales o fraccionarias, pueden representar valores positivos o negativos. Ejemplo de nmeros enteros sern: 6 32 26 - 110000 400 -2850

Nmeros reales : Son aquellos que pueden tomar cualquier valor en el espacio numrico real, pueden tener cifras decimales o fraccionarias y tomar valores positivos o negativos . Ejemplo de nmeros reales sern : 6,5 6,0 -20,01 32,31 -10,51 -15,10

b) Datos no numricos: Son todos aquellos que estn compuestos por combinaciones de los caracteres del alfabeto, los dgitos del cero (0) al nueve (9) y caracteres especiales tales como #, $, %, @, etc. Generalmente se clasifican en datos alfanumricos y datos lgicos, aunque actualmente han surgido en algunos lenguajes de programacin las clasificaciones de tipo fecha y memo; el aspecto que hay que tener en cuenta para clasificar un dato como no numrico
J. L. Parra

es que con este tipo de dato no se puede realizar ningn tipo de operaciones aritmticas.

Datos alfanumricos: Compuestos por combinaciones entre los caracteres A, B, C, ..Z, a, b, c, z, los dgitos del cero (0) al nueve (9) y caracteres especiales tales como #, $, %, @. Etc. Ejemplo de datos alfanumricos sern: jose01 Barcelona Jos Luis Parra 77-77-08

Datos lgicos: Son aquellos que solo pueden tomar dos valores: Falso y verdadero; Los cuales normalmente se representan como: TRUE o FALSE, 1 o 0 ( uno o cero). Datos memos: Son datos especiales utilizados para guardar informacin importante acerca de un elemento determinado. Ejemplo de un dato memo ser: Este es un ejemplo de un dato tipo memo. Datos Fechas: Utilizados en la actualidad solo para almacenar valores de tipo fechas, por ejemplo: 20/01/99 20/01/1999 20 jun 1999 domingo 19 de junio de 1994

1.7. IDENTIFICADORES, VARIABLES, CONSTANTES Y EXPRESIONES IDENTIFICADORES : Representan las estructuras u objetos (constantes, variables, procesos, archivos, arreglos) que se utilizarn en un algoritmo. Es una secuencia de caracteres que para su construccin en la mayora de los lenguajes de programacin se siguen las siguientes reglas: 1. Debe comenzar por una letra (A Z, a. z).

2. Letras dgitos y caracteres subrayados ( - ) se pueden utilizar despus del primer carcter. 3. No se debe incluir el carcter blanco entre las combinaciones de letras, dgitos y caracteres que conforman el identificador. 4. El nombre del identificador debe guardar relacin con la funcin o tarea que ejecuta dentro del programa, es decir, debe ser significativo. VARIABLES : Es una estructura de almacenamiento de datos cuyo valor puede cambiar en el tiempo, toda definicin de variable est compuesta por un nombre el cual sirve para identificarla, un tipo el cual indica el tipo de dato
J. L. Parra

que contendr y un nmero el cual indica la cantidad mxima de dgitos que podr contener. Por ejemplo con la siguiente definicin: resultado entero (4) estamos especificando que la variable se llama resultado, es de tipo entero y el mximo nmero que puede contener es 9999. CONSTANTES : Son estructuras de almacenamiento de datos cuyo valor permanecer inalterable en el tiempo, al igual que las variables toda definicin de constante, esta compuesta por un nombre el cual sirve para identificarla, un tipo el cual indica el tipo de dato que contendr y un nmero el cual indica la cantidad mxima de dgitos que podra contener. Por ejemplo con la siguiente definicin: NUMERODIASENERO ENTERO (2) Indica que se est definiendo una constante llamada NUMERODIASENERO, que contendr un dato de tipo entero con una longitud mxima de dos dgitos. El valor que contendr esta constante lo asignaremos de la siguiente manera: NUMERODIASENERO=31 lo que significa que la variable NUMERODIASENERO, siempre contendr el valor 31. EXPRESIONES : Son combinaciones de caracteres, constantes, variables, operadores, parntesis, funciones parecidas a las notaciones matemticas comunes, se clasifican en: aritmticas, booleanas y literales. EXPRESIONES ARITMETICAS: Son anlogas a las frmulas matemticas, utilizan los operadores y funciones aritmticas tradicionales tales como: +, _, *, /, etc. ejemplo: b + (4* a * c) en esta expresin se combinan las variables a, b, c los operadores + , * y la funcin ( raz cuadrada ). EXPRESIONES BOOLEANAS: Son aquellas cuyo resultado debe ser un valor verdadero o falso, se construyen con los operadores booleanos and ( y ), or not (no) y los operadores >, <, >=, <=, <> ( diferente ), ejemplo: a > b and c > b

J. L. Parra

esta expresin ser verdadera solo cuando se cumpla que los valores contenidos en las variables a y c sean mayores que el valor contenido en la variable b, en cualquier otra circunstancia el valor de la expresin ser falso. EXPRESIONES LITERALES: Son expresiones compuestas por cualquier combinacin de caracteres, dgitos, smbolos encerrados entre comillas ejemplo: El numero de das de enero es:

CUESTIONARIO.

1. Explique los componentes del computador. 2. Diga el concepto de software y explique los tipos de software. 3. Diga el concepto de lenguaje de programacin y explique los tipos de lenguaje de programacin. 4. Explique los procesos bsicos que se pueden hacer con los datos. 5. Explique las diferencias entre variables y constantes. 6. Enumere los distintos tipos de datos utilizados en computacin. 7. Diga que son expresiones. Explique los diferentes tipos de expresiones.

J. L. Parra

CAPITULO 2
ALGORITMOS. La ejecucin de tareas o actividades a travs de las computadoras, requiere que cada accin que conlleve a la realizacin del proceso se presente muy bien definida a la mquina, este conjunto de acciones a ser ejecutadas por la mquina se conoce como algoritmo.
2. 1. ALGORITMOS.

Un algoritmo es una secuencia de instrucciones detalladas que se ejecutan secuencialmente con la finalidad de resolver un problema o realizar un proceso determinado. Disear un algoritmo se asemeja a describir los pasos que ejecutamos al realizar actividades diarias, para lo cual debemos tener una meta y los recursos para alcanzar la meta, por ejemplo estudiemos el caso de cambiar un caucho daado y montar el caucho en buen estado: sin embargo, tenemos que saber si contamos con las herramientas necesarias tales como: el gato, la llave cruz, un caucho en buen estado. El proceso constar de las siguientes actividades: 1. Determinar que caucho se cambiar. 2. Caminar hacia la maletera.
J. L. Parra

3. Abrir la maletera. 4. Sacar la llave cruz y el gato. 5. Sacar el caucho en buen estado (repuesto). 6. Llevar la llave cruz y el gato hasta un lado del caucho a cambiar. 7. Buscar el caucho de repuesto. 8. Llevar el caucho de repuesto hasta un lado del caucho a cambiar. 9. Tomar la llave cruz y aflojar las tuercas que sujetan el ring del caucho a cambiar. 10. levantar el carro. 11. 12. lado. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. Colocar el gato en la posicin adecuada y

Sacar las tuercas y colocarlas en el suelo. Sacar el caucho con el ring y colocarlo a un Tomar el caucho de repuesto. Montar el caucho de repuesto. Tomar las tuercas. Colocar las tuercas en los esprragos. Tomar la llave cruz. Apretar las tuercas con la llave cruz. Bajar el carro utilizando el gato. Sacar el gato y colocarlo a un lado. Tomar la llave cruz. Verificar que las tuercas estn bien apretadas. Tomar la llave cruz y el gato. Meter la llave cruz y el gato en la maletera. Buscar el caucho daado.
J. L. Parra

26. 27.

Meter el caucho daado en la maletera. Cerrar la maletera.

Todas estas actividades describen el proceso para cambiar un caucho, si retrocedemos al concepto de algoritmo, notamos que la descripcin de este proceso cumple con este concepto por lo que podemos decir que hemos diseado un algoritmo para cambiar un caucho. 2. 2. CARACTERISTICAS DE LOS ALGORITMOS. Las caractersticas principales de un algoritmo son las siguientes:
1. Deben ser precisos y claros, es decir, las instrucciones que lo componen, no

deben prestarse a ambigedades.


2. Debe ser veraz. Si se ejecuta dos veces un algoritmo con los mismos valores

de entradas debe arrojar el mismo resultado.


3. Debe tener una secuencia lgica. Las instrucciones que lo conforman deben

ejecutarse en forma coherente, por ejemplo en el algoritmo para cambiar el caucho es ilgico colocar la siguiente secuencia de instrucciones: -Buscar el caucho de repuesto -Levantar el carro -Colocar el gato en el lugar adecuado
4. Debe ser finito. El algoritmo debe finalizar en algn momento. 5. Est compuesto de tres partes: Entradas: recursos que existen y sern

utilizados por el algoritmo. Proceso: actividades que se realizan con las entradas. Salidas son las metas a alcanzar. La ejecucin de un algoritmo consiste en transformar las entradas en salida. Por ejemplo en el algoritmo para cambiar un caucho podemos identificar estas tres partes de la siguiente forma: entradas: caucho de repuesto, llave cruz, gato. Salida: montar el caucho en buen estado. Procesos acciones que se realizan con la llave cruz el gato y el caucho de repuesto para lograr cambiar el caucho daado por el que est en buen estado .
6. Debe ser general: no se debe limitar a un caso especifico; por ejemplo al disear un

algoritmo par sumar dos nmero, con las mismas instrucciones se debe poder sumar 2 mas 2, 4 mas 3, etc.
2. 3. PROGRAMAS.
J. L. Parra

Todo algoritmo que ser utilizado por un computador debe ser escrito de manera que sea entendible por el computador esto se logra a travs de un lenguaje de programacin, los cuales poseen sus propios caracteres, smbolos y reglas sintcticas para conformar las instrucciones. PROGRAMA : Es un conjunto de instrucciones escritas en un lenguaje de programacin las cuales se ejecutarn en forma secuencial con el fin de efectuar tareas determinadas. 2.4. DISEO DE ALGORITMO MEDIANTE PSEUDOCDIGOS. Para el diseo de algoritmo se utilizan normalmente dos tcnicas, la tcnica de los diagramas de flujos y las tcnicas de los pseudocdigos en este tema nos basaremos en la tcnica de los pseudocdigos. PSEUDOCDIGOS : Se deriva de la palabra pseudo que significa imitacin o supuesto y la palabra cdigo que significa cuerpo de reglas que componen un sistema de una determinada materia; por lo que podemos concluir que en el rea de informtica Pseudocdigo significa, imitacin de un conjunto de reglas o instrucciones que forman un programa. Los pseudocdigos son escritos en el lenguaje natural de las personas que los disea, es decir, Espaol, Italiano, Ingles, etc. y poseen palabras y reglas que definen su estructura. 2.4.1 ESTRUCTURA GENERAL DE LOS PSEUDOCDIGOS.

La estructura general de un algoritmo diseado mediante un pseudocdigo es la siguiente: INICIO. IDENTIFICACION DE DATOS. ENTRADA DE DATOS. PROCESO. SALIDA DE DATOS. FIN.

J. L. Parra

INICIO: Simula indicar al computador el comienzo del proceso. IDENTIFICACION DE DATOS: Simula indicar al computador que separe o guarde espacio de memoria para las diferentes variables, constantes, estructuras de datos que sern utilizadas en el algoritmo. ENTRADA DE DATOS: Simula indicar al computador que se est obteniendo un valor a travs de la unidad de entrada, el cual ser almacenado en el espacio de memoria guardado o separado para la variable, constante, etc. a la que se le est introduciendo dato. PROCESO : Simula las diferentes acciones que se realizan con los datos para alcanzar el objetivo deseado. SALIDA DE DATOS: Simula indicar al computador que emita por las unidades de salida correspondiente los resultados de los procesos. FIN: Simula indicar al computador que el proceso finaliz. Muchas veces las fases de entrada, proceso y salida de datos pueden variar de posiciones e incluso estar incluidas una dentro de la otra. Los procesos de acuerdo a las metas a alcanzar pueden realizarse de tres formas: Secuencial, Condicional y repetitivas. Proceso secuencial: Es aquel en que todas las acciones a realizar para alcanzar el objetivo se realizan una tras otra. Por ejemplo para sumar dos nmeros obtengo primero los nmeros a sumar y luego efecto la operacin de sumar. Proceso condicional: Es aquel en que dada una condicin se realiza una accin u otra de acuerdo al resultado de la evaluacin de la condicin. Ejemplo si el caucho est daado lo cambio. Proceso repetitivo: Es aquel en el cual una o varias acciones se ejecuta varias veces. Por ejemplo sumar los nmeros del 1 al 100. El pseudocdigo no es un lenguaje de programacin sino una Tcnica de diseo de algoritmo que plantea los pasos para ejecutar una tarea o resolver un problema de alguna forma que su traduccin o codificacin a un lenguaje de programacin se realice en forma sencilla. Es la tcnica actualmente ms utilizada en el diseo de algoritmo para los lenguajes de programacin estructurado tales como: PASCAL, MODULAS, PROLOG, C, ETC. 2.4.2 PALABRAS Y REGLAS BASICAS UTILIZADAS EN EL DISEO DE PSEUDOCDIGOS.

J. L. Parra

1. La inicializacin de un pseudocdigo se indica con la palabra:

INICIO.
2. Todo dato de entrada y los datos generados por el pseudocdigo deben ser

identificados, colocando antes del identificador del dato la siguiente palabra : DECLARAR con la estructura sintctica siguiente: DECLARAR Identificador o DECLARAR Identificador, Identificador1 dato). Ejemplo: DECLARA Nombre carcter ( 45) . tipo de datos (longitud mxima del Tipo de dato (longitud mxima del dato)

Esta pseudoinstruccin significa que se est apartando 45 espacios de memoria para una variable identificada como Nombre, en la cual solo se pueden almacenar datos de tipo carcter.
3. La entrada de datos a un identificador se realiza por medio de la palabra:

LEER Puede poseer las siguientes estructuras sintcticas: LEER (Identificador) o LEER (Identificador 1, Identificador 2, Identificador N) Ejemplo LEER (Nombre) Esta pseudoinstruccin le indica al computador que se prepare para obtener un dato a travs de la unidad de entrada especificada el cual ser almacenado en el espacio de memoria guardado para la variable Nombre. o

J. L. Parra

LEER (Nombre, Cdula, edad) Explique, Que significado tiene la pseudoinstruccin anterior?.
4. La salida de datos desde un identificador o con una expresin literal se

realiza con la palabra: ESCRIBIR Posee las siguientes estructuras sintcticas: ESCRIBIR ESCRIBIR ESCRIBIR ESCRIBIR Ejemplos: ESCRIBIR (nombre) Esta pseudoinstruccin le indica al computador que enve hacia la unidad de salida predeterminada el valor contenido en el espacio de memoria identificado por la variable nombre. ESCRIBIR (nombre, cdula, edad) Explique Que significado tiene la pseudoinstruccin anterior?. ESCRIBIR (Estos son solo ejemplos ) Esta pseudoinstruccin le indica al computador que enve hacia la unidad de salida predeterminada el literal: Estos son solo ejemplos ESCRIBIR (El nombre del alumno es: ,nombre) Explique Que significado tiene la pseudoinstruccin anterior? .
5. Se utilizan los siguientes operadores para construir operaciones aritmticas:

(Identificador) (Identificador1, Identificador2. Identificador N) (Expresin literal ) (Expresin literal , Identificador)

+ * / ^

Suma Resta Multiplicacin Divisin Exponenciacin.


J. L. Parra

6. Las

instrucciones comparativos: Operador = > <

booleanas

se

construyen con Operador >= <= <>

los siguientes

operadores

Compara por Igual Mayor Menor

Compara por Mayor Igual Menor Igual Diferente

7. El final del pseudocdigo se indica con la palabra: FIN

CAPITULO 3
DISEO DE PSEUDOCODIGOS SECUENCIALES. Una estructura de pseudocdigo es secuencial cuando las instrucciones que la conforman se ejecutan una tras otra, son utilizadas para resolver procesos que se ejecutaran una sola vez, por ejemplo, realizar la suma de dos nmeros. La estructura general de un pseudocdigo secuencial es la siguiente: INICIO ACCIN 1 ACCIN 2 . . . ACCINN FIN.
J. L. Parra

Ejemplo. 1. Disee un Pseudocdigo que permita emitir el siguiente encabezado: INSTITUTO UNIVERSITARIO DE TECNOLOGA FECHA: / / LA EXCELENCIA Analizando este algoritmo notamos que consiste en generar una salida (encabezado), para lo cual no necesitamos ningn dato de entrada sino el formato del encabezado, por lo tanto el proceso estar conformado por instrucciones de salidas conformadas por expresiones literales, el diseo del pseudocdigo para ejecutar este proceso es el siguiente: INICIO ESCRIBIR ("INSTITUTO UNIVERSITARIO DE") ESCRIBIR (" TECNOLOGA FECHA: / /") ESCRIBIR (" LA EXCELENCIA") FIN Simulando ejecutar por computadora este pseudocdigo se realizarn los siguientes pasos: INICIO. Le indica a la computadora que se va a comenzar un proceso. ESCRIBIR ("INSTITUTO UNIVERSITARIO DE"). Le indica a la computadora que emita por la unidad de salida predeterminada el literal encerrado en comillas ( ), la salida ser: INSTITUTO UNIVERSITARIO DE ESCRIBIR ( TECNOLOGA FECHA: / /). Le indica a la computadora que emita por la unidad de salida predeterminada el literal encerrado en comillas ( ), la salida ser: TECNOLOGA FECHA: / /

J. L. Parra

ESCRIBIR ( LA EXCELENCIA). Le indica a la computadora que emita por la unidad de salida predeterminada el literal encerrado en comillas ( ), la salida ser: LA EXCELENCIA FIN. Indica a la computadora que el proceso termin. Uniendo todas las salidas anteriores generadas por la simulacin de la ejecucin del programa, obtendramos el siguiente formato: INSTITUTO UNIVERSITARIO DE TECNOLOGA FECHA: / / LA EXCELENCIA el cual fue nuestro objetivo al disear el algoritmo. 2. Disee un pseudocdigo que permita emitir el siguiente encabezado: INSTITUTO UNIVERSITARIO DE TECNOLOGA LA EXCELENCIA

FECHA:(fecha actual)

A simple vista parece que es el mismo algoritmo diseado anteriormente, sin embargo notamos que en el encabezado se requiere que al lado de la palabra FECHA: se coloque la fecha del da actual, por lo que en este diseo necesitamos introducir una variable de entrada que permita obtener y cargar en memoria la fecha actual; el diseo de este pseudocdigo es el siguiente: INICIO DECLARAR FECHA ALFANUMERICO (8) LEER (FECHA) ESCRIBIR ("INSTITUTO UNIVERSITARIO DE") ESCRIBIR (" TECNOLOGA FECHA: ",FECHA) ESCRIBIR (" LA EXCELENCIA") FIN Simulando la ejecucin de este algoritmo realizamos los siguientes pasos:

J. L. Parra

INICIO. Indica a la computadora que comenzar un proceso DECLARAR FECHA ALFANUMERICO (8). Indica a la computadora que guarde en memoria un espacio de ocho posiciones que aceptar solo datos de tipo alfanumrico; esto debido a que normalmente los formatos de fecha son los siguientes: dd/mm/aa, dd-mm-aa, mm/dd/aa, etc. los cuales poseen ocho espacios y caracteres no numricos como "/" o "-", el resultado de esta operacin es el siguiente: FECHA

LEER (FECHA). Indica a la computadora que obtenga a travs del medio de entrada predeterminado un valor para la fecha del da actual y lo almacene en el espacio guardado en memoria para la variable FECHA. Supongamos que leemos el valor 15/05/96. Lo que significa que almacene en memoria en el espacio FECHA el valor 15/05/96 , dando como resultado lo siguiente: FECHA 1 5

ESCRIBIR ("INSTITUTO UNIVERSITARIO DE"). Le indica a la computadora que emita por la unidad de salida predeterminada el literal encerrado en comillas ( ), la salida ser: INSTITUTO UNIVERSITARIO ESCRIBIR (" TECNOLOGA FECHA: ",FECHA). Le indica a la computadora que emita por la unidad de salida predeterminada el literal encerrado en comillas ( ) y que coloque al lado el valor que en memoria contiene el espacio identificado por FECHA, es decir, 15/05/96, la salida ser: TECNOLOGA FECHA: 15/05/96

ESCRIBIR (" LA EXCELENCIA"). Le indica a la computadora que emita por la unidad de salida predeterminada el literal encerrado en comillas ( ), la salida ser: LA EXCELENCIA FIN. Indica a la computadora que el proceso termino.

J. L. Parra

Uniendo todas las salidas anteriores generadas por la simulacin de la ejecucin del programa, obtendramos el siguiente formato: INSTITUTO UNIVERSITARIO DE TECNOLOGA FECHA: 15/05/96 LA EXCELENCIA Analizando la lgica del diseo debemos concluir que en el procesamiento de datos los pasos fundamentales a realizar son los siguientes: 1. 2. 3. 4. 5. Apartar espacios para almacenar los datos Inicializar variables Obtener los datos de entradas Los pasos 3 al 5 no necesariamente Procesar los datos deben seguir ese orden, sino que se Emitir el resultado del proceso. utilizarn de acuerdo a lo requerido en el problema.

Supongamos que para emitir el encabezado anterior realizamos el siguiente pseudocdigo:

1. 2. 3. 4. 5. 6. 7.

INICIO DECLARAR FECHA ALFANUMERICO (8) ESCRIBIR ("INSTITUTO UNIVERSITARIO DE") ESCRIBIR (" TECNOLOGA LEER (FECHA) ESCRIBIR (" LA EXCELENCIA") FIN.

FECHA: ",FECHA)

Analizando las instrucciones 4 y 5, podemos notar que en la instruccin 4 se ordena emitir por la unidad de salida predeterminada el literal TECNOLOGA FECHA: y colocar al lado el valor que en memoria contiene la variable FECHA, la cual debera contener la fecha actual, sin embargo, en las instrucciones 1,2,3 no se obtuvo dicho valor por lo que la salida emitida por esta instruccin ser:
J. L. Parra

TECNOLOGA

FECHA:

Luego en la instruccin 5 se le indica a la computadora que obtenga el valor de la fecha el cual no podr imprimirse ya que al momento de ejecutarse la instruccin nmero 4 el valor de la fecha actual no estaba cargado en memoria. Podemos concluir que esta secuencia de pasos no es la correcta ya que no se sigui la regla de obtener el dato, procesarlo e imprimir el resultado; lo que arrojo como resultado un pseudocdigo que emite el siguiente encabezado errado: INSTITUTO UNIVERSITARIO DE TECNOLOGA LA EXCELENCIA

FECHA:

3. Disee un pseudocdigo que permita obtener e imprimir la edad y el nombre de la primera persona que entre a un saln de clase. Notamos que nuestra meta es obtener datos y presentarlos por algn medio de salida, los recursos para alcanzar esta meta son los datos de entradas, es decir, edad y nombre, los cuales en el enunciado del algoritmo se indica que los debemos obtener, por lo que contamos con los recursos necesarios para el diseo del algoritmo, el cual es el siguiente:

INICIO DECLARAR EDAD NUMERICO (3) DECLARAR NOMBRE ALFANUMRICO (45) LEER (EDAD,NOMBRE) ESCRIBIR (EDAD,NOMBRE) FIN Analizaremos cada instruccin: INICIO. Indica a la computadora que se comenzar un proceso.

J. L. Parra

DECLARAR EDAD NUMERICO (3). Indica a la computadora que aparte en memoria un espacio de tres posiciones que se identificar como EDAD, donde se almacenarn datos de tipo numrico; es de hacer notar que en estos tres espacios hay cabida para una edad comprendida en el rango de 0 al 999 aos, aunque sabemos que no existen personas que puedan alcanzar esa cantidad de aos, pero es posible que sobrepasen los 100 aos y es por esta razn que se apartan los tres espacios de memoria, el resultado de esta operacin es la siguiente: EDAD

DECLARAR NOMBRE ALFANUMERICO (45). Indica a la computadora que aparte un espacio en memoria de 45 posiciones que se identificar como NOMBRE, el cual contendr datos de tipo alfanumrico, el resultado de esta operacin es la siguiente: NOMBRE

LEER (EDAD,NOMBRE). Indica a la computadora que le pida al usuario que introduzca por la unidad de entrada el dato a almacenar en el espacio guardado en memoria para la variable EDAD y que seguidamente introduzca el dato a almacenar en el espacio guardado en memoria para la variable NOMBRE. Supongamos que se introducen los siguientes datos, EDAD=32 y NOMBRE= Jos Luis Parra el resultado de esta operacin es el siguiente: EDAD 3 2

NOMBRE J O s L u i s P a r r a

ESCRIBIR (EDAD,NOMBRE). Indica a la computadora que busque en memoria los valores almacenados en los espacios identificados por EDAD y NOMBRE y active la unidad de salida predeterminada para emitir como salida los valores contenidos en dichas variables, la salida ser la siguiente: 32 Jos Luis Parra
J. L. Parra

FIN. Indica a la computadora que se finaliza el proceso. La salida de este algoritmo ser: 32 Jos Luis Parra

Esta salida ser clara para la persona que diseo y codific el Pseudocdigo, pero para un usuario que no conozca la meta del algoritmo y en algn momento lo mande a ejecutar se le har difcil interpretar esta salida. Esto nos hace ver que debemos disear algoritmos que sean claros y precisos con la finalidad que cualquier usuario que lo ejecute pueda entenderlo y hacerle el seguimiento, una versin del mismo algoritmo siguiendo los aspectos de claridad y precisin es el siguiente: INICIO DECLARAR EDAD NUMERICO (3) DECLARAR NOMBRE ALFANUMRICO (45) ESCRIBIR ("INTRODUZCA EL NOMBRE:") LEER (NOMBRE) ESCRIBIR ("INTRODUZCA LA EDAD:") LEER (EDAD) ESCRIBIR ("EL NOMBRE DE LA PERSONA QUE ENTRO ES: ",NOMBRE) ESCRIBIR ("SU EDAD ES: ",EDAD, AOS) FIN Anlisis de las instrucciones: INICIO. Indica a la computadora que se comenzar un proceso. DECLARAR EDAD NUMERICO (3). Indica a la computadora que aparte en memoria un espacio de tres posiciones que se identificar como EDAD donde se almacenarn datos de tipo numrico; la razn por la cual se apartan tres espacios de memoria se explic en el diseo anterior, el resultado de esta operacin es el siguiente: EDAD

J. L. Parra

DECLARAR NOMBRE ALFANUMERICO (45). Indica a la computadora que aparte un espacio en memoria de 45 posiciones que se identificar como NOMBRE el cual contendr datos de tipo alfanumrico el resultado de esta operacin es el siguiente: NOMBRE

ESCRIBIR ("INTRODUZCA EL NOMBRE:"). Le indica a la computadora que emita por la unidad de salida el literal: INTRODUZCA EL NOMBRE: Esto con la finalidad de indicar al usuario la accin a ejecutar en la siguiente instruccin. LEER (NOMBRE). Indica a la computadora que espere hasta que el usuario introduzca el valor que se almacenar en memoria en el lugar guardado para la variable NOMBRE; supongamos que introducimos el valor Jos Luis Parra, la representacin de los datos almacenados en memoria en este momento es la siguiente: EDAD

NOMBRE J O s L u i s P a r r a

ESCRIBIR ("INTRODUZCA LA EDAD:"). Indica a la computadora que emita por la unidad de salida el literal: INTRODUZCA LA EDAD: De manera que el usuario pueda entender que la prxima accin ser introducir la edad. LEER (EDAD). Indica a la computadora que espere hasta que el usuario introduzca al valor que se almacenar en memoria en el espacio apartado para la variable EDAD. Supongamos que introducimos 32, la representacin de los datos almacenados en memoria en este momento es la siguiente:

J. L. Parra

EDAD 3 NOMBRE J O s L u i s P a r r a 2

ESCRIBIR ("EL NOMBRE DE LA PERSONA QUE ENTRO ES: ",NOMBRE). Le indica a la computadora que escriba por la unidad de salida el literal encerrado entre comillas y al lado el valor que contiene en memoria la variable NOMBRE, es decir, que emita la siguiente salida: EL NOMBRE DE LA PERSONA QUE ENTRO ES: Jos Luis Parra ESCRIBIR ("SU EDAD ES:",EDAD, AOS). Indica a la computadora que escriba por pantalla el literal encerrado entre comillas y al lado el valor que en memoria contiene el espacio identificado por EDAD y luego la otra expresin literal encerrada entre comillas, es decir, que emita la siguiente salida: SU EDAD ES: 32 AOS FIN. Indica a la computadora que finaliz el proceso. Uniendo la emisin de las salidas el resultado de este algoritmo es: EL NOMBRE DE LA PERSONA QUE ENTRO ES: Jos Luis Parra SU EDAD ES: 32 AOS Esta salida ser mas clara para cualquier usuario que ejecute este programa una vez codificado, que la ejecucin de este mismo programa con el diseo realizado la primera vez. 4. Realice un Pseudocdigo que permita obtener valores para las variables OPERANDO1, OPERANDO2 sumar ambos valores, el resultado almacenarlo en la variable RESULTADO y escribir el resultado de la operacin. Al analizar este algoritmo notamos que la meta es crear una formula matemtica que sume dos valores y almacene el resultado en una variable que luego ser impresa; los datos de entradas sern los valores para La variable OPERANDO1 y la variable OPERANDO2, como contamos con todos los requerimientos podemos disear el Pseudocdigo:

J. L. Parra

1. Indicamos que comenzar un proceso, esto se hace con la pseudoinstruccin. INICIO 2. Guardamos espacios de memoria para las variables que sern utilizadas en el proceso en este caso, debemos declarar tres variables las cuales sern de tipo numrico debido a que se efectuarn operaciones aritmticas con ellas, asignndoles una longitud de acuerdo a los valores a sumar. Las instrucciones declarativas podran ser las siguientes: DECLARAR OPERANDO1, OPERANDO2 NUMERICO (4) DECLARAR RESULTADO NUMERICO (5) 3. Indicar a la computadora que pida al usuario que introduzca el valor para el primer operando, para lo cual utilizamos la instruccin: ESCRIBIR (" Introduzca el valor del primer sumando:") 4. Indicar a la computadora que espere hasta que el usuario introduzca el valor que se almacenar en memoria en el lugar apartado para OPERANDO1, mediante la instruccin: LEER (OPERANDO1) 5. Indicar a la computadora que pida al usuario que introduzca el valor por el segundo operando, para lo cual utilizamos la instruccin siguiente: ESCRIBIR (" Introduzca el valor del segundo sumando:") 6. Indicar a la computadora que espere hasta que el usuario introduzca el valor que se almacenar en memoria en el lugar apartado para OPERANDO2, mediante la instruccin: LEER (OPERANDO2) 7. En este momento ya hemos creado las instrucciones para cargar en memoria los datos del OPERANDO1 y el OPERANDO2. Debemos estar claro que el tercer dato declarado (RESULTADO) no es un dato de entrada por lo cual no se efecta una instruccin de lectura como : LEER (RESULTADO), este dato se generar en el proceso mediante la creacin de una expresin aritmtica que le
J. L. Parra

asignar el valor del resultado de sumar OPERANDO1 con OPERANDO2, la instruccin que crea esta expresin aritmtica ser la siguiente: RESULTADO=OPERANDO1+OPERANDO2 8. Indicar a la computadora que emita por la unidad de salida el resultado del proceso para lo cual podemos utilizar la instruccin: ESCRIBIR ("La suma de estos dos valores es:", RESULTADO) 9. Indicar a la computadora que el proceso finaliz, para lo cual utilizamos la instruccin: FIN. Al agrupar estas instrucciones obtenemos como resultado el siguiente pseudocdigo:

INICIO DECLARAR OPERANDO1,OPERANDO2 NUMERICO (4) DECLARAR RESULTADO NUMERICO (5) ESCRIBIR ("Introduzca el valor del primer sumando: ") LEER (OPERANDO1) ESCRIBIR ("Introduzca el valor del segundo sumando: ") LEER (OPERANDO2) RESULTADO= OPERANDO1+OPERANDO2 ESCRIBIR ("La suma de estos dos valores es:", RESULTADO) FIN Simulemos la ejecucin de este pseudocdigo indicando la accin realizada por el computador en cada instruccin: INICIO .Prepara a la computadora para recibir instrucciones.

DECLARAR OPERANDO1,OPERANDO2 NUMERICO (4). Esta Instruccin separa dos espacios de memoria de cuatro (4) posiciones cada uno, donde solo se podrn almacenar valores numricos. Si vemos la memoria del computador como un conjunto
J. L. Parra

de espacios contiguos donde se almacenan datos, el resultado de esta operacin lo pudisemos ver de la siguiente forma: OPERANDO1

OPERANDO2

DECLARAR RESULTADO NUMERICO (5). Al igual que la instruccin anterior aparta espacio de memoria, en este caso un espacio de 5 posiciones para almacenar un valor de tipo numrico. Una vista grfica de los espacios apartados en memoria sera la siguiente: OPERANDO1

OPERANDO2

RESULTADO

ESCRIBIR ("Introduzca el valor del primer sumando: "). Emite por la unidad de salida el mensaje encerrado entre las comillas. La salida ser la siguiente: Introduzca el valor del primer sumando: LEER (OPERANDO1). Espera hasta que la persona (Usuario) que est ejecutando el programa, introduzca por la unidad de entrada un valor NUMERICO, el cual ser almacenado en el espacio guardado en memoria para la variable OPERANDO1. Supongamos que el usuario introdujo el nmero 10; una representacin grfica de los datos en memoria de la computadora una vez almacenado el valor del OPERANDO1, podra ser la siguiente: OPERANDO1 1 OPERANDO2
J. L. Parra

RESULTADO

ESCRIBIR ("Introduzca el valor del segundo sumando: "). Emite por la unidad de salida el mensaje encerrado entre las comillas. La salida ser la siguiente: Introduzca el valor del segundo sumando: LEER (OPERANDO2). Espera hasta que la persona que est ejecutando el programa, introduzca por la unidad de entrada, un valor numrico, el cual ser almacenado en el espacio guardado en memoria para la variable OPERANDO2. Supongamos que el usuario introduce el nmero 9998; una representacin grfica de la memoria del computador una vez almacenado el valor del operando2, podra ser la siguiente: OPERANDO1 1 OPERANDO2 9 9 9 RESULTADO 0

RESULTADO=OPERANDO1+OPERANDO2. La unidad central de proceso (C.P.U.) determina que se efectuar una operacin aritmtica que sumar dos valores guardados en memoria identificados como OPERANDO1 y OPERANDO2 cuyo resultado ser almacenado en el espacio guardado en memoria identificado como RESULTADO. De manera general las acciones que se realizan para poder ejecutar esta instruccin son las siguientes: El C.P.U. determina que se efectuar una operacin de Sumar, activa la unidad aritmtico-lgica y le indica que realizar una operacin de suma, busca en memoria los valores contenidos en los espacios identificados por OPERANDO1 y OPERANDO2, es decir, 10 y 9998 respectivamente, los enva a la unidad aritmticolgica para su procesamiento, una vez efectuada la operacin almacena el valor resultante, es decir, 10008 en el espacio de memoria identificado como RESULTADO lo cual explica por si solo el porque se declar la variable RESULTADO de 5 posiciones y no de 4. La representacin grfica de los valores almacenados en memoria pudiera ser la siguiente:

J. L. Parra

OPERANDO1 1 OPERANDO2 9 9 9 RESULTADO 1 0 0 0

ESCRIBIR ("La suma de estos dos valores es: ", RESULTADO). Emite por la unidad de salida el literal encerrado entre las comillas y seguidamente el valor que en memoria contiene el espacio identificado por RESULTADO. La salida ser la siguiente: La suma de estos dos valores es: 10008 FIN. Finaliza el proceso.

CUESTIONARIO.

1. Disee un algoritmo que obtenga un nmero, lo multiplique por 5 y escriba el resultado. 2. Disee un algoritmo que calcule la superficie de un cuadrado, utilizando la siguiente formula: SUPERFICIE=LADO*LADO. 3. Disee un algoritmo que permita calcular el pago semanal a un trabajador, para lo cual se tiene como entrada los siguientes datos: Cdula, nombre, salario diario, nmero de horas extra laboradas. Las asignaciones sern la suma del salario ms el pago por concepto de horas extras, el valor de una hora extra ser, el valor de la hora normal ms el 50% de la misma. Las deducciones sern: Seguro social obligatorio, Poltica habitacional; la deduccin del seguro social obligatorio ser el 2% del salario y la de la Poltica habitacional ser el 1% del salario.

J. L. Parra

4. Disee un algoritmo que obtenga dos nmero en dos variables distintas e intercambie su contenido.

5. Disee un algoritmo que dado el valor X, permita determinar el punto Y la recta, basado en la siguiente ecuacin: Y=2X+3 6. Disee un algoritmo que calcule la superficie de un tringulo en funcin de la base y la altura. SUPERFICIE=(BASE*ALTURA)/2

J. L. Parra

CAPITULO 4.
DISEO DE PSEUDOCODIGOS CON ESTRUCTURAS SELECTIVAS O ALTERNATIVAS. Hasta los momentos slo se han estudiado estructuras algortmicas para ejecutar instruccin por instruccin, una tras otra, sin embargo, existen procesos que al momento de ejecutarse deben seleccionar entre varios caminos posibles de solucin, este tipo de instrucciones se conocen como instrucciones selectivas o alternativas cuya construccin se realiza a partir de expresiones lgicas. Antes de comenzar con el estudio de las estructuras alternativas, es conveniente conocer una de las herramientas utilizadas para determinar el valor de una expresin lgica; conociendo de antemano que la evaluacin de una expresin lgica solo puede arrojar como resultado dos valores, VERDADERO O FALSO, TRUE O FALSE, 0 o 1. La herramienta a estudiar se denomina la Tabla de La Verdad. 4.1 TABLA DE LA VERDAD. Es una estructura de toma de decisiones que determina el valor de una expresin lgica de acuerdo a los valores de las proposiciones y del operando lgico que la conforma, siendo los posibles operadores lgicos, la Conjuncin lgica denotada con las palabras Y o AND, la Disyuncin lgica denotada con las palabras O u OR y la negacin lgica denotada las palabras NO o NOT. REPRESENTACION DE LA TABLA DE LA VERDAD. A V V F F B V F V F AYB V F F F AOB V V V F NO A F F V V NO B F V F V

J. L. Parra

El valor lgico de una proposicin se obtiene como resultado de evaluar cualquier relacin o comparacin lgica, resultando la proposicin, verdadera si se cumple la comparacin y falsa en caso contrario, para esto utilizamos los siguientes operadores relacionales: SIMBOLO > < = SIGNIFICADO Mayor que Menor que Igual que SIMBOLO o >= o <= <> SIGNIFICADO Mayor igual que Menor igual que Diferente que

Por ejemplo, sea P una variable booleana y X,Y,Z variables enteras con los valores 15,18,20 respectivamente. Determinar el resultado de la variable P de acuerdo a su evaluacin con los valores anteriores: P X=Y X<Y (X=Y) OR (Y=Z) X<>Z RESULTADO FALSO VERDADERO FALSO VERDADERO P Z<Y (Y<Z) AND (Z>Y) Y<Z NOT(Y>Z) OR (X=Y) RESULTADO

Haciendo uso de la tabla de la verdad podemos determinar el valor que en un determinado momento posee una expresin lgica. Por Ejemplo, Sea P y Q dos expresiones lgicas y X,Y,Z valores enteros con los valores 15,18,20, respectivamente, podemos determinar el valor de las siguientes expresiones lgicas: P X<Y X<Y Y=Z X=Y Q Y<Z Y=Z Z>X Y=Z P o Q VERDADERO VERDADERO VERDADERO FALSO P y Q VERDADERO FALSO FALSO FALSO No P FALSO FALSO VERDADERO VERDADERO

Una vez conocida la utilidad de la Tabla de la Verdad podemos comenzar con el estudio de las estructuras alternativas o condicionales.

J. L. Parra

4.2 ESTRUCTURAS SELECTIVAS O ALTERNATIVAS. Una estructura es selectiva cuando se presentan varios caminos posibles de solucin, se construyen utilizando expresiones lgicas las cuales deben evaluarse para determinar el camino a seguir para llegar a la solucin, esta evaluacin slo puede arrojar dos posibles resultados: VERDADERO o FALSO. Si el resultado es verdadero se toma un camino de accin y si es falso se puede ejecutar o no un camino de accin distinto a cuando es verdadero, no es posible tomar los dos camino al mismo tiempo. Las estructuras alternativas o selectivas se clasifican en: ALTERNATIVAS SIMPLES. ALTERNATIVAS DOBLES. ALTERNATIVAS MULTIPLES. 4.2.1. ESTRUCTURAS ALTERNATIVAS SIMPLES. Una estructura es de ALTERNATIVA SIMPLE, cuando dada una condicin se ejecuta una accin o un grupo de acciones solo si la condicin es verdadera, en caso de que la condicin sea falsa no se ejecuta ninguna accin. La sintaxis para el diseo de una instruccin de alternativa simple es la siguiente: Primer caso: existen varias acciones a ejecutar en caso de cumplirse la condicin: SI condicin ENTONCES accin1 accin2 . . accinn FIN DEL SI. Segundo caso: Existe solo una accin que ejecutar al cumplirse la condicin SI condicin ENTONCES accin FIN DEL SI EJEMPLOS. 1. Disee un algoritmo que obtenga dos nmeros y escriba el valor del primer nmero si este es mayor que el segundo nmero.
J. L. Parra

Antes de comenzar, debemos tener claro que disear un algoritmo con estructura alternativa no significa que todas las instrucciones que lo conforman sern de estructura alternativa, sino, que en algn momento en el diseo estas sern utilizadas, lo que quiere decir, que las siguientes estructuras: secuenciales, alternativas, repetitivas pueden combinarse para crear un determinado algoritmo. Una vez hecha esta aclaratoria podemos disear el algoritmo antes planteado; un diseo de un pseudocdigo para este proceso podra ser el siguiente: INICIO DECLARAR VALOR1,VALOR2 NUMERICO (3) ESCRIBIR ("INTRODUZCA EL PRIMER VALOR: ") LEER (VALOR1) ESCRIBIR ("INTRODUZCA EL SEGUNDO VALOR: ") LEER (VALOR2) SI VALOR1>VALOR2 ENTONCES ESCRIBIR(" EL PRIMER NUMERO ES MAYOR SU VALOR ES: ",VALOR) FIN-SI FIN INICIO. Indica a la computadora que se comenzar un proceso. DECLARAR VALOR1,VALOR2 NUMERICO (3). Guarda dos espacios en memoria de tres posiciones cada uno, los cuales almacenarn dato de tipo numrico y sern identificados como VALOR1 y VALOR2. VALOR1 VALOR2 ESCRIBIR ("INTRODUZCA EL PRIMER VALOR: "). Emite por la unidad de salida el mensaje encerrado entre comillas, es decir: INTRODUZCA EL PRIMER VALOR: LEER (VALOR1). Espera hasta que el usuario que est ejecutando el programa introduzca un valor numrico el cual se almacenar en el espacio en memoria identificado por VALOR1. Supongamos que se introduce el valor 15, la representacin de los valores en memoria ser: VALOR1 1 5

J. L. Parra

VALOR2 ESCRIBIR ("INTRODUZCA EL SEGUNDO VALOR: "). Emite por la unidad de salida el mensaje encerrado entre comillas, es decir: INTRODUZCA EL SEGUNDO VALOR: LEER (VALOR2). Espera hasta que el usuario que est ejecutando el programa introduzca un valor numrico el cual se almacenar en el espacio en memoria identificado por VALOR2. Supongamos que se introduce el valor 10, la representacin de los valores en memoria ser: VALOR1 1 VALOR2 1 5 0

SI VALOR1>VALOR2 ENTONCES ESCRIBIR ("EL PRIMER NUMERO ES MAYOR SU VALOR ES: ", VALOR1) FIN-SI. Esta es una estructura alternativa que para ejecutarse completamente se debern realizar las cuatro acciones siguientes: 1. Sacar de memoria los valores almacenados en los lugares identificado por VALOR1, VALOR2, es decir, 15 y 10 y llevarlo a la unidad central de proceso (Unidad Aritmtico-Lgica). 2. Hacer la comparacin 15>10 cuyo resultado ser un valor booleano (verdadero o falso). 3. En caso de que el valor resultante de la comparacin sea verdadero, que en este caso lo es, realizar la instruccin: ESCRIBIR ("EL PRIMER NUMERO ES MAYOR SU VALOR ES: ", VALOR1). La cual consiste en emitir por la unidad de salida el mensaje escrito entre comillas y al lado el valor contenido en memoria en el espacio identificado por VALOR1, la salida ser la siguiente: EL PRIMER NUMERO ES MAYOR SU VALOR ES: 15 4. FIN-SI. Indica que la instruccin alternativa ha llegado a su final.

J. L. Parra

FIN. Indica el final del proceso 2. Disee un pseudocdigo que permita obtener el nombre y la nacionalidad de una persona, si la nacionalidad es extranjera, emitir un mensaje que indique el nombre y la nacionalidad de la persona procesada. Para la creacin de este pseudocdigo debemos realizar los siguientes pasos: a) Indicar a la computadora que se va a dar comienzo a un proceso con la instruccin: INICIO b) Apartar los espacios de memoria donde guardaremos los valores para los datos de entrada: NOMBRE y NACIONALIDAD, por medio de las instrucciones: DECLARAR NOMBRE ALFANUMERICO (40) DECLARAR NACIONALIDAD ALFANUMERICO (15) c) Emitir por la unidad de salida un mensaje que le indique al usuario que introduzca el nombre de la persona a procesar, por medio de la siguiente instruccin: ESCRIBIR ("Introduzca el Nombre: ") d) Obtener a travs de la unidad de entrada, el valor para la variable NOMBRE y almacenarlo en memoria, por medio de la instruccin: LEER (NOMBRE) e) Emitir por la unidad de salida un mensaje que le indique al usuario que introduzca la nacionalidad de la persona a procesar, por medio de la siguiente instruccin: ESCRIBIR ("Introduzca la Nacionalidad: ") f) Obtener a travs de la unidad de entrada, el valor para la variable NACIONALIDAD y almacenarlo en memoria, por medio de la instruccin: LEER (NACIONALIDAD) g) Hacer la comparacin de la nacionalidad de la persona que se est procesando. Como en este caso debemos escribir un mensaje si la persona procesada no es Venezolana, la condicin podra ser: SI NACIONALIDAD <> "VENEZOLANA" ENTONCES Con esto construimos la primera parte de la instruccin alternativa, se nos pide en el algoritmo escribir un mensaje de la nacionalidad, solo en el caso de que el valor ledo
J. L. Parra

para la variable nacionalidad sea distinto de VENEZOLANA. Por la que solo debemos hacer acciones si la evaluacin de la condicin construida anteriormente es verdadera, la accin a construir ser la siguiente: ESCRIBIR (" La Nacionalidad de: ", Nombre, " es ",Nacionalidad) Luego indicamos el fin de la instruccin alternativa con la instruccin: FIN-SI Uniendo las construcciones efectuadas en el punto "g", nos quedar la siguiente construccin alternativa: SI NACIONALIDAD <> "VENEZOLANA" ENTONCES ESCRIBIR ("La Nacionalidad de: ", Nombre, " es ",Nacionalidad) FIN-SI h) Indicar a la computadora el fin del proceso con la instruccin: FIN. El diseo total para este Pseudocdigo ser el siguiente: INICIO DECLARAR NOMBRE ALFANUMERICO (40) DECLARAR NACIONALIDAD ALFANUMERICO (15) ESCRIBIR ("Introduzca el Nombre: ") LEER (NOMBRE) ESCRIBIR ("Introduzca la Nacionalidad: ") LEER (NACIONALIDAD) SI NACIONALIDAD <> "VENEZOLANA" ENTONCES ESCRIBIR ("La Nacionalidad de: ", Nombre, " es ",Nacionalidad) FIN-SI FIN. Ejercicio: Simule la ejecucin de este algoritmo con los datos de ud. 4.2.2. ESTRUCTURAS ALTERNATIVAS DOBLES. Las estructura alternativas simples son limitadas ya que solo es posible ejecutar acciones cuando el resultado de evaluar la condicin es verdadero, sin embargo muchas veces se nos presentan problemas en los cuales tenemos que decidir entre dos posibles caminos de acciones, para lo cual si solo existieran estructuras de alternativas
J. L. Parra

simples tendramos que construir dos estructuras de este tipo: una para cuando la condicin resultara verdadera y la otra para cuando la condicin resultara falsa. Esto conlleva a la creacin de estructuras alternativas dobles las cuales permiten que una vez evaluada la condicin se pueda realizar acciones cuando el resultado de evaluar dicha condicin sea verdadero y cuando sea falso. La sintaxis general de una instruccin con estructura alternativa doble es la siguiente:

SI CONDICION ENTONCES SI CONDICION ENTONCES ACCION1 ACCION1 ACCION2 ACCION2 . . . . ACCIONN ACCIONN DE LO CONTRARIO O SINO ACCION11 ACCION11 ACCION21 ACCION21 . . . . ACCIONN ACCIONN FIN-SI FIN-SI Desarrollemos a continuacin algunos ejemplos donde se hace necesario utilizar instrucciones de tipo alternativa doble: 1. Disee un Pseudocdigo que obteniendo como dato de entrada: CDULA, NOMBRE Y NOTA DEFINITIVA DE UN ALUMNO, determine si el alumno est aprobado o aplazado. La escala de calificacin es de 0 (cero) al 20 (veinte) y la nota mnima de aprobacin 10 (diez) puntos. Analizando el problema podemos observar que nuestra meta es determinar si un alumno est aprobado o aplazado, conociendo de antemano su nota definitiva. Si esta nota es mayor o igual que 10 puntos el alumno est aprobado de lo contrario est aplazado. A continuacin diseemos un algoritmo que permita realizar esta tarea: 1. Indicamos que se comenzar un proceso mediante la pseudoinstruccin:
J. L. Parra

INICIO 2. Apartamos espacios de memoria para nuestras variables de entrada: CDULA, NOMBRE, NOTA mediante la siguiente pseudoinstruccin: DECLARAR CDULA ALFANUMERICO (10) DECLARAR NOMBRE ALFANUMERICO (23) DECLARAR NOTA NUMERICO (2) NOTA: Declaramos la variable CDULA alfanumrico, ya que aunque normalmente solo colocamos los nmeros que la conforman no realizamos ninguna operacin de tipo aritmtico con dicho valor. Esto lo tomaremos como una regla para toda variable que cumpla con esta caracterstica. 3. Obtenemos los valores de entradas y los almacenamos en memoria mediante las siguientes instrucciones: ESCRIBIR ("CDULA DEL ALUMNO: ") LEER (CDULA) ESCRIBIR ("NOMBRE DEL ALUMNO: ") LEER (NOMBRE) ESCRIBIR ("NOTA DEFINITIVA: ") LEER (NOTA) 4. Una vez almacenada la NOTA en memoria podemos determinar si el alumno est aprobado o no mediante la creacin de la siguiente expresin lgica: SI NOTA 10 ENTONCES Luego de creada esta condicin, podemos crear las acciones a seguir en caso de aprobado y en caso de aplazado estas instrucciones son las siguientes: ESCRIBIR ("EL ALUMNO: ", NOMBRE," ESTA APROBADO ") SINO ESCRIBIR ("EL ALUMNO: ", NOMBRE," ESTA APLAZADO ") ya creada las acciones a seguir en caso de cumplirse cualquiera de los dos opciones, finalizamos la instruccin alternativa doble con la siguiente instruccin: FIN-SI Uniendo las partes creada anteriormente esta instruccin de estructura alternativa doble quedara de la siguiente manera: SI NOTA 10 ENTONCES ESCRIBIR ("EL ALUMNO: ", NOMBRE," ESTA APROBADO ")
J. L. Parra

SINO ESCRIBIR ("EL ALUMNO: ", NOMBRE," ESTA APLAZADO ") FIN-SI 5. Con la instruccin anterior hemos alcanzado nuestra meta por lo tanto, podemos indicar a la computadora la finalizacin del proceso mediante la instruccin FIN Uniendo los 5 conjuntos de instrucciones anteriormente construida el pseudocdigo definitivo ser el siguiente:

INICIO DECLARAR CDULA ALFANUMERICO (10) DECLARAR NOMBRE ALFANUMERICO (23) DECLARAR NOTA NUMERICO (2) ESCRIBIR ("CDULA DEL ALUMNO: ") LEER (CDULA) ESCRIBIR ("NOMBRE DEL ALUMNO: ") LEER (NOMBRE) ESCRIBIR ("NOTA DEFINITIVA: ") LEER (NOTA) SI NOTA 10 ENTONCES ESCRIBIR ("EL ALUMNO: ", NOMBRE," ESTA APROBADO ") SINO ESCRIBIR ("EL ALUMNO: ", NOMBRE," ESTA APLAZADO ") FIN-SI FIN Simulemos la ejecucin de este Pseudocdigo para los siguientes datos de entrada: Cdula = 9.997.231 Nombre = Leonel Parra Nota = 18 INICIO. Indica a la computadora el comienzo del proceso. DECLARAR CDULA ALFANUMERICO (10). Aparta 10 espacios de memoria y lo identifica como CDULA, la representacin en memoria ser la siguiente: CDULA

J. L. Parra

DECLARAR NOMBRE ALFANUMERICO (23). Aparta 23 espacios de memoria y lo identifica como NOMBRE, la representacin de la memoria en este momento es la siguiente: CDULA NOMBRE DECLARAR NOTA NUMERICO (2). Aparta 2 espacios de memoria y lo identifica como NOTA, la representacin de la memoria en este momento es la siguiente: CDULA NOMBRE NOTA ESCRIBIR ("CDULA DEL ALUMNO: "). Emite por la unidad de salida el mensaje o expresin literal encerrada entre comillas, es decir: CDULA DEL ALUMNO: LEER (CDULA). Espera hasta que el usuario que est ejecutando el proceso introduzca el nmero de cdula del alumno que se est procesando, en este caso ser 9.997.231 el cual se guardar en memoria en el espacio identificado por CDULA. La representacin grfica de los espacios guardados en memoria en este momento ser: 9 CDULA NOMBRE NOTA ESCRIBIR ("NOMBRE DEL ALUMNO: "). Emite por la unidad de salida el mensaje o expresin literal encerrada entre comillas, es decir: NOMBRE DEL ALUMNO:
J. L. Parra

LEER (NOMBRE). Espera hasta que el usuario que est ejecutando el proceso introduzca el nombre del alumno que se est procesando en este caso ser Leonel Parra el cual se guardar en memoria en el espacio identificado por NOMBRE. La representacin grfica de los espacios guardados en memoria en este momento ser: 9 CDULA NOMBRE NOTA ESCRIBIR ("NOTA FINAL: "). Emite por la unidad de salida el mensaje o expresin literal encerrada entre comillas, es decir: NOTA FINAL: LEER (NOTA). Espera hasta que el usuario que est ejecutando el proceso introduzca la nota del alumno que se est procesando en este caso ser 18 el cual se guardar en memoria en el espacio identificado por NOTA. La representacin grfica de los espacios guardados en memoria en este momento ser: 9 CDULA NOMBRE 1 NOTA 8 . 9 9 7 . L e o 2 n e 3 l 1 P a r r a . 9 9 7 . L e o 2 n e 3 l 1 P a r r a

SI NOTA 10 . Compara por mayor el valor que en memoria contiene el espacio identificado como NOTA con el valor 10 es decir: 18 10. Cuya respuesta en este caso es verdadera, por lo que se ejecuta la accin seguida del trmino ENTONCES, es decir: ESCRIBIR ("EL ALUMNO: ", NOMBRE," ESTA APROBADO "). La cual emite por la unidad de salida la expresin literal encerrada entre comillas, seguida del valor que en memoria contiene el espacio identificado por NOMBRE y seguidamente la otra expresin literal encerrada entre comillas, es decir se emite la siguiente salida:
J. L. Parra

EL ALUMNO: Leonel Parra ESTA APROBADO Una vez ejecutada esta salida, finaliza la instruccin cuando encuentra la accin FIN-SI FIN. Indica que se finaliza el proceso. Simule la ejecucin del siguiente algoritmo y agregue las instrucciones necesarias en caso que falten:

INICIO DECLARAR CDULA ALFANUMERICO (10) DECLARAR NOMBRE ALFANUMERICO (23) DECLARAR NOTA NUMERICO (2) ESCRIBIR ("CDULA DEL ALUMNO:") LEER (CDULA) ESCRIBIR ("NOMBRE DEL ALUMNO:") LEER (NOMBRE) ESCRIBIR ("NOTA DEFINITIVA:") LEER (NOTA) SI NOTA 10 ENTONCES CONDICION="APROBADO" SINO CONDICION="APLAZADO" FIN-SI ESCRIBIR ("EL ALUMNO: ", NOMBRE," ESTA ", CONDICION) FIN. 2. Crear un pseudocdigo que teniendo como entrada los siguientes datos: nmero telefnico, nombre del usuario, duracin de la llamada; permita calcular la cantidad a pagar por una llamada telefnica, teniendo en cuenta las siguientes condiciones: a) Toda llamada que dure menos de tres minutos tiene un costo de 5 bolvares.

J. L. Parra

b) Todo minuto adicional despus de los tres primeros minutos cuesta 2 bolvares. Analizando el problema nuestra meta ser determinar la cantidad a pagar por una llamada telefnica, dadas dos opciones para efectuar su clculo. Los recursos a utilizar o datos de entradas sern: Nmero telefnico, Nombre del cliente, duracin de la llamada. Un pseudocdigo para lograr realizar esta tarea pudiera ser:

1.- INICIO 2.- DECLARAR TELEFONO ALFANUMERICO (10)


3.- DECLARAR CLIENTE ALFANUMERICO (23) 4.- DECLARAR TIEMPO NUMERICO (2) 5.- DECLARAR COSTO NUMERICO (5) 6.- DECLARAR MINEXTRA NUMERICO (3) 7.- ESCRIBIR ("INTRODUZCA EL NUMERO TELEFNICO: ") 8.- LEER (TELEFONO) 9.- ESCRIBIR ("INTRODUZCA EL NOMBRE DEL CLIENTE: ") 10.- LEER (CLIENTE) 11.- ESCRIBIR ("INTRODUZCA DURACION DE LA LLAMADA: ") 12.- LEER (TIEMPO) 13.- SI TIEMPO<=3 ENTONCES COSTO=5 SINO MINEXTRA=TIEMPO-3 COSTO=(MINEXTRA*2)+5 FIN-SI 14.- ESCRIBIR ("LA LLAMADA DEL CLIENTE ", CLIENTE, " TIENE UN COSTO DE ", COSTO, " BOLVARES") 15.- FIN

Simulemos la ejecucin de este algoritmo con los siguientes datos: Nmero de telfono= 775592
J. L. Parra

Cliente= Pedro Prez Duracin de la llamada= 15 minutos La instruccin nmero 1 indica a la computadora que se dar inicio a un proceso. Las instrucciones 2 al 6 guardan espacios de memoria para las variables: TELFONO, CLIENTE, TIEMPO, COSTO, MINEXTRA. La representacin grfica de estos espacios una vez guardados en memoria pudiera ser la siguiente: TELFONO CLIENTE MINEXTRA TIEMPO COSTO ESCRIBIR ("INTRODUZCA EL NUMERO TELEFNICO:"). Emite a travs de la unidad de salida el mensaje encerrado entre comillas, es decir: INTRODUZCA EL NUMERO TELEFNICO: LEER (TELFONO). Espera hasta que el usuario introduzca por la unidad de entrada el nmero del telfono al cual se le calcular el costo de la llamada, en este caso se introduce el nmero 775592. La representacin en memoria de las variables que se estn utilizando en el proceso en este momento es la siguiente: 7 TELFONO CLIENTE MINEXTRA TIEMPO
J. L. Parra

COSTO ESCRIBIR ("INTRODUZCA EL NOMBRE DEL CLIENTE: "). Emite a travs de la unidad de salida el mensaje encerrado entre comillas, es decir: INTRODUZCA EL NOMBRE DEL CLIENTE: LEER (CLIENTE). Espera hasta que el usuario introduzca por la unidad de entrada el nombre del cliente al cual se le calcular el costo de la llamada, en este caso se introduce el nombre Pedro Prez. La representacin en memoria de las variables que se estn utilizando en el proceso en este momento es la siguiente: 7 TELFONO P CLIENTE MINEXTRA TIEMPO COSTO ESCRIBIR ("INTRODUZCA DURACION DE LA LLAMADA: "). Emite a travs de la unidad de salida el mensaje encerrado entre comillas, es decir: INTRODUZCA DURACION DE LA LLAMADA: LEER (TIEMPO). Espera hasta que el usuario introduzca por la unidad de entrada la duracin de la llamada a la cual se le calcular su costo, en este caso se introduce el valor 15 (representa que se efectu una llamada cuya duracin fue de 15 minutos). La representacin en memoria de las variables que se estn utilizando en el proceso en este momento es la siguiente: 7 TELFONO P CLIENTE e d r o P r e z 7 5 5 9 2 e d r o P r e z 7 5 5 9 2

J. L. Parra

MINEXTRA 1 5 TIEMPO COSTO SI TIEMPO<= 3. Busca en memoria el valor que contiene el espacio en memoria identificado como tiempo en este caso el valor es 15 lo enva a la unidad aritmtico lgica y evala la siguiente condicin 15<=3 cuyo resultado es falso, por lo que se procede a realizar las acciones siguiente a la palabra SINO de la instruccin alternativa doble, es decir: MINEXTRA=TIEMPO - 3. La cual consiste en buscar en memoria el valor que contiene la variable TIEMPO en este caso 15, restarle el valor 3 dando como resultado el valor 12 el cual ser almacenado en memoria en el espacio identificado como MINEXTRA. La representacin de los datos almacenados en memoria hasta este momento es la siguiente: 7 TELFONO P CLIENTE 1 MINEXTRA 1 5 TIEMPO COSTO Luego se realiza la segunda instruccin que conforma el bloque SINO de la instruccin condicional, es decir: COSTO=(MINEXTRA*2)+5 Cuya ejecucin consiste en buscar en memoria el valor contenido en el espacio identificado por MINEXTRA, es decir 12, multiplicarlo por 2 cuyo resultado es 24, sumarle 5 resultando el valor 29 y almacenarlo en el espacio de memoria identificado como COSTO. La representacin de los datos almacenados en memoria hasta este momento es la siguiente:
J. L. Parra

5 e

5 d r

9 o

2 P r e z

7 TELFONO

5 P e

5 d r

9 o

2 P r e z

CLIENTE 1 MINEXTRA 1 5 TIEMPO 2 COSTO FIN-SI. Indica el final de la instruccin alternativa que calcula el costo de la llamada. ESCRIBIR ("LA LLAMADA DEL CLIENTE ", CLIENTE, " TIENE UN COSTO DE ", COSTO, " BOLVARES") Emite por pantalla los mensajes encerrados entre comillas y los valores de la variable cliente y costo es decir, emite la siguiente salida: LA LLAMADA DEL CLIENTE Pedro Prez BOLVARES CUESTIONARIO 1. Simule ejecutar el siguiente algoritmo con los dos grupos de datos de entrada suministrados: Nmero de telfono = 772708 Cliente = Luis Enrique Prado Duracin de la llamada = 2 minutos Nmero de telfono = 686798 Cliente = Darlyn Gonzalez Duracin de la llamada = 20 minutos INICIO DECLARAR TELFONO ALFANUMERICO (10) DECLARAR CLIENTE ALFANUMERICO (27) DECLARAR TIEMPO NUMERICO (2)
J. L. Parra

TIENE UN COSTO DE 29

DECLARAR COSTO NUMERICO (5) DECLARAR MINEXTRA NUMERICO (3) ESCRIBIR ("INTRODUZCA EL NUMERO TELEFNICO: ") LEER (TELFONO) ESCRIBIR ("INTRODUZCA EL NOMBRE DEL CLIENTE:") LEER (CLIENTE) ESCRIBIR ("INTRODUZCA DURACION DE LA LLAMADA:") LEER (TIEMPO) SI TIEMPO<=3 ENTONCES COSTO=5 ESCRIBIR ("LA LLAMADA DEL CLIENTE ", CLIENTE, " TIENE UN COSTO DE ", COSTO, " BOLVARES") SINO MINEXTRA=TIEMPO-3 COSTO=(MINEXTRA*2)+5 ESCRIBIR ("LA LLAMADA DEL CLIENTE ", CLIENTE, " TIENE UN COSTO DE ", COSTO, " BOLVARES") FIN-SI FIN 2. Desde su punto de vista cual de los dos diseos del algoritmo para calcular el costo de la llamada telefnica, realizados anteriormente es ms ptimo. Razone su respuesta.

4.2.3 ESTRUCTURAS ALTERNATIVAS MULTIPLES. Muchas veces nos enfrentamos a problema que cuando evaluamos una determinada alternativa esta nos lleva a evaluar otras alternativas y as sucesivamente hasta englobar todas las alternativas posibles, para resolver este tipo de procesos a travs de algoritmos surgen las ESTRUCTURAS ALTERNATIVAS MULTIPLES las cuales son estructuras compuestas por un grupo de estructuras alternativas dobles anidadas, funcionan de la siguiente manera, se evala la condicin de una estructura alternativa, si el resultado es verdadero se ejecutan las acciones correspondientes, en caso de que el resultado sea falso surge una nueva estructura alternativa. Son utilizadas generalmente cuando se evala un valor en distintos rangos. Su estructura sintctica es la siguiente: SI condicion1 ENTONCES accion1
J. L. Parra

accion2 . . accionn DE LO CONTRARIO SI condicion2 ENTONCES accion1 accion2 . . . accionn DE LO CONTRARIO accion1 accion2 . . accionn FIN-SI FIN-SI

EJEMPLO. Dada la siguiente escala de calificaciones: NOTA ACUMULADA 91-100 81-90 71-80 61-70 50-60 37-49 25-36 13-24 1- 12 CALIFICACION 9 8 7 6 5 4 3 2 1 EXPRESION CUALITATIVA EXCELENTE SOBRESALIENTE DISTINGUIDO BUENO SATISFACTORIO DEFICIENTE DEFICIENTE MUY DEFICIENTE MUY DEFICIENTE
J. L. Parra

Disee un pseudocdigo que permita determinar la calificacin y expresin cualitativa de un estudiante, teniendo como entradas los siguientes datos: Cdula, nombre y nota acumulada. Analizando el problema podemos determinar que nuestro objetivo es asignar al estudiante una calificacin dependiendo de la nota acumulada durante el perodo de estudio; nuestro recurso bsico para alcanzar el objetivo es conocer la nota acumulada, el cual lo tenemos como dato de entrada. Una vez conocido nuestro objetivo podemos realizar el diseo de la manera que aparece en la siguiente pgina:

1.- INICIO 2.- DECLARAR CDULA ALFANUMERICO (10) 3.- DECLARAR NOMBRE ALFANUMERICO (23) 4.- DECLARAR NOTA NUMERICO (3) 5.- DECLARAR CALIFICACION NUMERICO (1) 6.- DECLARAR EXPRESION ALFANUMERICO (15) 7.- ESCRIBIR ("INTRODUZCA EL NUMERO DE CDULA: ") 8.- LEER (CDULA) 9.- ESCRIBIR ("INTRODUZCA EL NOMBRE: ") 10.- LEER (NOMBRE) 11.- ESCRIBIR ("INTRODUZCA LA NOTA ACUMULADA: ") 12.- LEER (NOTA) 13.- SI NOTA>=1 Y NOTA<=12 ENTONCES CALIFICACION=1 EXPRESION="MUY DEFICIENTE" SINO SI NOTA>=13 Y NOTA<=24

J. L. Parra

ENTONCES CALIFICACION=2 EXPRESION="MUY DEFICIENTE" SINO SI NOTA>=25 Y NOTA>=36 ENTONCES CALIFICACION=3 EXPRESION="DEFICIENTE" SINO SI NOTA>= 37 Y NOTA<= 49 ENTONCES CALIFICACION=4 EXPRESION="DEFICIENTE" SINO SI NOTA>= 50 Y NOTA<= 60 ENTONCES CALIFICACION=5 EXPRESION="SATISFACTORIO" SINO SI NOTA>= 61 Y NOTA<= 70 ENTONCES CALIFICACION=6 EXPRESION="BUENO" SINO SI NOTA>= 71 Y NOTA<= 80 ENTONCES CALIFICACION=7 EXPRESION="DISTINGUIDO" SINO SI NOTA>= 81 Y NOTA<= 90 ENTONCES CALIFICACION=8 EXPRESION="SOBRESALIENTE" SINO SI NOTA>= 91 Y NOTA<= 100 ENTONCES CALIFICACION=9 EXPRESION="EXCELENTE" FIN-SI 14.- ESCRIBIR ("EL ALUMNO ",NOMBRE,"OBTUVO CALIFICACION DE: ",CALIFICACION," Y ES UN ALUMNO ", EXPRESION) 15.- FIN ALGORITMO

Simulemos la corrida de este pseudocdigo para los siguientes valores de entrada: Cdula= 8924111 Nombre= Pedro Daz Nota acumulada= 75 1. Las instrucciones 2 al 5 apartan los espacios para almacenar en memoria los valores para los datos de entrada CDULA, NOMBRE Y NOTA, as como para los datos generados en el proceso, es decir, CALIFICACIN y EXPRESIN su representacin en memoria podra ser:

J. L. Parra

CDULA NOMBRE CALIFICACIN NOTA EXPRESIN 2. Se obtienen los datos de entrada mediante las instrucciones 7 al 12, estos datos son: 8924111 Pedro Daz 75. Una vez ingresados su representacin en memoria podra ser: 8 CDULA P NOMBRE CALIFICACIN 7 NOTA EXPRESIN 3. Se evala los diferentes rangos de calificaciones hasta encontrar el rango de calificaciones en el que se encuentra el valor almacenado en memoria identificado como NOTA, esto se realiza de la siguiente forma: 3.1 Se evala si la variable NOTA almacenada en memoria cuyo valor es 75 esta entre 1 y 12 ambos valores inclusive, como no se cumple la condicin, se evala la condicin que sigue a la palabra SINO, es decir, si 75 est en el rango entre 13 y 24 ambos valores inclusive lo cual no se cumple, por lo que se procede a evaluar el siguiente SINO es decir, si 75 est entre 25 y 36 lo cual no se cumple, por lo que se procede a evaluar el siguiente SINO, es decir, si 75 est entre 37 y 49 lo cual no se cumple por lo que se procede a evaluar el siguiente SINO, es decir, si 75 est entre
J. L. Parra

1 e d

1 r o

1 D a z

50 y 60 lo cual no se cumple por lo que se procede a evaluar el siguiente SINO, es decir, si 75 est entre 61 y 70 lo cual no se cumple por lo que se procede a evaluar el siguiente SINO es decir si 75 est entre 71 y 80 condicin lo cual se cumple por lo que se procede a ejecutar el grupo de instrucciones siguientes a la palabra ENTONCES, es decir, asignar a la variable CALIFICACIN el valor 7 y asignar a la variable EXPRESIN el literal DISTINGUIDO. Al encontrarse el rango en el cual est el valor que en memoria se identifica como NOTA, se finaliza la evaluacin de rangos de nota. La representacin de los datos almacenados en memoria una vez finalizada esta instruccin es: 8 CDULA P NOMBRE 7 CALIFICACIN 7 NOTA D EXPRESIN 4. Se emite por la unidad de salida el mensaje siguiente: EL ALUMNO Pedro Daz OBTUVO CALIFICACIN DE 7 Y ES UN ALUMNO DISTINGUIDO 5. Se finaliza el algoritmo. Explique en que se basa la diferencia del Pseudocdigo anterior con el siguiente Pseudocdigo:
INICIO DECLARAR CDULA ALFANUMERICO (10) DECLARAR NOMBRE ALFANUMERICO (23) DECLARAR NOTA NUMERICO (3) DECLARAR CALIFICACIN NUMERICO (1) DECLARAR EXPRESIN ALFANUMERICO (15) ESCRIBIR ("INTRODUZCA EL NUMERO DE CDULA: ") LEER (CDULA) ESCRIBIR ("INTRODUZCA EL NOMBRE: ") LEER (NOMBRE) ESCRIBIR ("INTRODUZCA LA NOTA ACUMULADA: ") LEER (NOTA) SI NOTA>= 1 Y NOTA<= 12

1 e d

1 r o

1 D a z

5 I S T I N G U I D O

J. L. Parra

ENTONCES CALIFICACIN=1 EXPRESIN="MUY DEFICIENTE" SINO SI NOTA>= 13 Y NOTA<= 24 ENTONCES CALIFICACIN=2 EXPRESIN="MUY DEFICIENTE" SINO SI NOTA>= 25 Y NOTA<= 36 ENTONCES CALIFICACIN=3 EXPRESIN="DEFICIENTE" SINO SI NOTA>= 37 Y NOTA<= 49 ENTONCES CALIFICACIN=4 EXPRESIN="DEFICIENTE" SINO SI NOTA>= 50 Y NOTA<= 60 ENTONCES CALIFICACIN=5 EXPRESIN="SATISFACTORIO" SINO SI NOTA>= 61 Y NOTA<= 70 ENTONCES CALIFICACIN=6 EXPRESIN="BUENO" SINO SI NOTA>= 71 Y NOTA<= 80 ENTONCES CALIFICACIN=7 EXPRESIN="DISTINGUIDO" SINO SI NOTA>= 81 Y NOTA<= 90 ENTONCES CALIFICACIN=8 EXPRESIN="SOBRESALIENTE" SINO CALIFICACIN=9 EXPRESIN="EXCELENTE FIN-SI ESCRIBIR ("EL ALUMNO ",NOMBRE,"OBTUVO CALIFICACIN DE: ",CALIFICACIN," Y ES UN ALUMNO ", EXPRESIN) FIN ALGORITMO

CUESTIONARIO.

1. Disee un algoritmo que obtenga dos nmero y emita como

resultado el mayor entre los dos nmeros.

J. L. Parra

2. Disee un algoritmo que obtenga un nmero y determine si el mismo es mltiplo de 4. 3. Disee un algoritmo que permita calcular el monto a pagar por llamada telefnica basado en la siguiente condicin: si la duracin de la llamada es menor a 3 (tres) minutos la llamada tendr un costo de 8 bolvares, si la duracin es mayor a 3 minutos su costo ser de 8 bolvares ms 3 bolvares por minutos adicionales. 4. Disee un algoritmo que obtenga tres nmero y determine si uno de ellos es el resultado de la suma de las otras dos restantes. 5. Disee un algoritmo que obtenga dos nmero en las variables A y B, intercambie sus valores y escriba el valor de A solo si esta es mayor que B. 6. Escriba un algoritmo que obtenga el nmero de un mes (1 al 12) y emita como salida el nmero de das del mes.

CAPITULO 5
J. L. Parra

DISEO DE PSEUDOCODIGOS CON ESTRUCTURAS REPETITIVAS O ITERATIVA.

Las estructuras repetitivas son utilizadas cuando es necesario ejecutar una accin o un grupo de acciones una o ms veces en forma consecutiva. Se denomina iteracin a cada una de las diferentes veces que se ejecuta la accin o grupo de acciones en una estructura repetitiva. A continuacin estudiaremos las tres formas ms comunes de disear estructuras de tipo repetitivas, cuyas sintaxis son las siguientes: 1.- REPITA MIENTRAS (CONDICION) ACCION1 ACCION2 . . ACCIONN FIN DEL REPITA 2.- REPITA ACCION1 ACCION2 . . ACCIONN HASTA QUE (CONDICION) 3.- HAGA DESDE VARIABLE=NUMEROINICIAL HASTA NUMEROFINAL ACCION1 ACCION2 . . ACCIONN FIN DEL HAGA Antes de explicar la ejecucin de cada una de estas instrucciones repetitivas, daremos a conocer dos tipos de variables muy utilizadas en este tipo de proceso. CONTADORES: Es un tipo de variable utilizada para contener valores que se incrementarn o decrementarn en un nmero fijo en cada iteracin; normalmente se utiliza para contar el nmero de veces que ocurre un suceso dentro del ciclo
J. L. Parra

repetitivo. Para utilizar variables de tipo contador se debe realizar dos acciones: Inicializacin y asignacin. La inicializacin consiste en colocar el valor con el cual comenzar el incremento o decremento del contador, esta accin se coloca antes de la instruccin repetitiva que utilizar dicho contador. Ejemplo Nroalumno=1 Repita mientras condicin . . Fin repita La asignacin consiste en disear una instruccin que permita incrementar o decrementar el contador en un valor fijo, esta accin se realiza dentro de la estructura de tipo repetitiva. La sintaxis general de una asignacin de contador es la siguiente: CONTADOR=CONTADOR CONSTANTE Ejemplo. Nroalumno=1 Repita mientras condicin . . Nroalumno=Nroalumno + 1 Fin repita ACUMULADORES: es un tipo de variable cuya finalidad es almacenar cantidades distintas dentro de una instruccin de tipo repetitiva. Al igual que los contadores se deber realizar dos acciones para su uso: Inicializacin y asignacin

Inicializacin. Consiste en colocar el valor con el cual se comenzar la acumulacin, normalmente la inicializacin consiste en colocar el valor cero ( 0 ) al acumulador, lo cual se hace antes de comenzar la instruccin de tipo repetitiva.

Ejemplo.
J. L. Parra

Resultadosuma= 0 Repita mientras condicin . . Fin repita Asignacin. Consiste en disear una instruccin que permita incrementar o decrementar el acumulador. Esta instruccin se coloca dentro de la estructura de tipo repetitiva. La sintaxis general de una asignacin de acumuladores es la siguiente: ACUMULADOR = ACUMULADOR VALOR Ejemplo. Resultadosuma= 0 Repita mientras condicin . . Resultadodesuma = Resultadodesuma + sumando Fin repita Una vez dada a conocer estos dos tipos de variables procederemos a explicar la utilizacin de las estructuras repetitivas antes presentadas.

5.1 ESTRUCTURA REPETITIVA REPITA MIENTRAS La primera instruccin repetitiva a estudiar es la ms utilizada de las instrucciones de este tipo, ya que cualquier condicin para ejecutar acciones varias veces se puede amoldar a ella. Puede ser utilizada cuando conocemos el nmero de iteraciones a ejecutar o cuando no lo conocemos posee la siguiente sintaxis: REPITA MIENTRAS (CONDICION) ACCION1 ACCION2 . . ACCIONN FIN DEL REPITA Esta instruccin funciona de la siguiente manera: el grupo de acciones dentro de la estructura repetitiva se ejecuta cuando el resultado de evaluar la condicin es verdadero. Por lo que al ejecutar este tipo de instrucciones primero se evala la condicin, si el
J. L. Parra

resultado es verdadero se ejecutan el grupo de instrucciones encerradas en la estructura repetitiva, de lo contrario se ejecutan las acciones o instrucciones que le siguen a la instruccin fin del repita. Ejemplo. Disee un Pseudocdigo que permita leer y sumar 4 nmeros. Nuestro objetivo es obtener el resultado de la suma de cuatro nmeros, lo cual podra realizarse por medio de las siguientes instrucciones secuenciales: INICIO DECLARAR SUMA NUMERICO (4) DECLARAR NUMERO NUMERICO (2) SUMA = 0 LEER ( NUMERO ) SUMA = SUMA + NUMERO LEER ( NUMERO ) SUMA = SUMA + NUMERO LEER ( NUMERO ) SUMA = SUMA + NUMERO LEER ( NUMERO ) SUMA = SUMA + NUMERO FIN DEL ALGORITMO Simulemos la corrida de este algoritmo con los siguientes valores: 5, 10, 20, 9 1.- Se apartan los espacios de memoria para el acumulador SUMA de tipo numrico de 4 espacios y para la variable NUMERO de tipo numrico de 2 espacios, su representacin en memoria puede ser: SUMA NUMERO 2.- Se inicializa el acumulador SUMA con el valor 0. Su representacin en memoria es la siguiente: SUMA 0 NUMERO

J. L. Parra

3.- Se lee la variable NUMERO es decir se obtiene el primer valor de la lista dada o sea, el valor 5, su representacin en memoria es la siguiente: SUMA 0 NUMERO 5 4.- Se acumula el valor ledo en el espacio identificado en memoria como SUMA, mediante la instruccin SUMA=SUMA+ NUMERO, es decir, se almacena en el espacio guardado en memoria para la variable SUMA, el valor que actualmente contiene ms el valor contenido en el espacio identificado en memoria como NUMERO, efectundose la operacin 0+5 y el resultado se almacena en el espacio de memoria identificado por SUMA. Una representacin de los valores en memoria es la siguiente: SUMA 5 NUMERO 5 5.- Se lee la variable NUMERO es decir se obtiene el primer valor de la lista dada o sea, el valor 10, su representacin en memoria es la siguiente: SUMA 5 NUMERO 1 0 6.- Se acumula el valor ledo en el espacio identificado en memoria como SUMA, mediante la instruccin SUMA=SUMA+ NUMERO, es decir, se almacena en el espacio guardado en memoria para la variable SUMA, el valor que actualmente contiene ms el valor contenido en el espacio identificado en memoria como NUMERO, efectundose la operacin 5+10 y el resultado se almacena en el espacio de memoria identificado por SUMA. Una representacin de los valores en memoria es la siguiente: SUMA 1 NUMERO 1 0
J. L. Parra

7.- Se lee la variable NUMERO, es decir, se obtiene el primer valor de la lista dada o sea, el valor 20, su representacin en memoria es la siguiente: SUMA 1 NUMERO 2 0 8.- Se acumula el valor ledo en el espacio identificado en memoria como SUMA, mediante la instruccin SUMA=SUMA+ NUMERO, es decir, se almacena en el espacio guardado en memoria para la variable SUMA, el valor que actualmente contiene ms el valor contenido en el espacio identificado en memoria como NUMERO, efectundose la operacin 15+20 y el resultado se almacena en el espacio de memoria identificado por SUMA. Una representacin de los valores en memoria es la siguiente: SUMA 3 NUMERO 2 0 9.- Se lee la variable NUMERO es decir se obtiene el primer valor de la lista dada o sea, el valor 9, su representacin en memoria es la siguiente: SUMA 3 NUMERO 9 10.- Se acumula el valor ledo en el espacio identificado en memoria como SUMA, mediante la instruccin SUMA=SUMA+ NUMERO, es decir, se almacena en el espacio guardado en memoria para la variable SUMA, el valor que actualmente contiene ms el valor contenido en el espacio identificado en memoria como NUMERO, efectundose la operacin 35+9 y el resultado se almacena en el espacio de memoria identificado por SUMA. Una representacin de los valores en memoria es la siguiente: SUMA 4 NUMERO 9
J. L. Parra

11.- Se finaliza el algoritmo. En este diseo notamos que las instrucciones: LEER (NUMERO) SUMA=SUMA+NUMERO Se repiten cuatro veces ya que necesitamos sumar cuatro nmeros, pero Qu pasara si se nos pidiera sumar mil nmeros?. Tendramos que repetir estas dos instrucciones mil veces, lo que significara perdida de tiempo y mal utilizacin de recursos. Sin embargo, utilizando estructuras de tipos repetitivas se disean algoritmos ms cortos y ptimos, un diseo podra ser el siguiente: INICIO DECLARAR SUMA NUMERICO (4) DECLARAR NUMERO NUMERICO (2) DECLARAR CONTADOR NUMERICO (1) SUMA=0 CONTADOR=1 REPITA MIENTRAS CONTADOR <= 4 LEER (NUMERO) SUMA=SUMA+NUMERO CONTADOR=CONTADOR+1 FIN DEL REPITA FIN Simulemos la corrida de este algoritmo para los valores 5, 10, 20, 9. 1.- Se da inicio al proceso mediante la instruccin: INICIO 2.- Mediante las instrucciones DECLARAR, se apartan espacios de memorias para la variables SUMA, NUMERO y CONTADOR. SUMA NUMERO CONTADOR

J. L. Parra

3.- Se inicializa el acumulador SUMA en 0 (cero), mediante la instruccin SUMA=0, la representacin de los datos almacenados en memoria en este momento es la siguiente: SUMA 0 NUMERO CONTADOR

4.- Se inicializa el contador CONTADOR en 1 (uno) mediante la instruccin CONTADOR=1, la representacin de los datos almacenados en memoria en este momento es la siguiente: SUMA 0 NUMERO CONTADOR 1 5.- Se evala el ciclo repetitivo comparando por menor o igual el valor contenido en memoria en el espacio identificado como CONTADOR con el valor 4, es decir, se evala si 1 es menor o igual que 4 cuyo resultado es cierto, por lo que se procede a ejecutar el grupo de instrucciones dentro de la estructura repetitiva, realizndose las siguientes instrucciones: 5.1.- Obtener un valor a almacenar en el espacio en memoria identificado como NUMERO, en este caso obtener el valor 5 . Quedando la representacin de los valores en memoria de la siguiente forma: SUMA 0 NUMERO 5 CONTADOR 1
J. L. Parra

5.2.- Sumar al valor almacenado en el espacio identificado en memoria como SUMA, el valor contenido en el espacio identificado en memoria como NUMERO, es decir, se realiza la operacin 0+5 y el resultado almacenarlo en el espacio en memoria identificado como SUMA. La representacin de los valores en memoria es la siguiente: SUMA 5 NUMERO 5 CONTADOR 1 5.3.- Incrementar el espacio de memoria identificado como CONTADOR en uno mediante la operacin CONTADOR=CONTADOR +1, es decir, efectuar la suma 1+1 y el resultado almacenarlo en el espacio identificado en memoria como CONTADOR. La representacin de los valores en memoria sera la siguiente: SUMA 5 NUMERO 5 CONTADOR 2 5.4.- Al encontrar la instruccin FIN DEL REPITA el proceso se devuelve y evala la condicin CONTADOR <= 4 con la finalidad de determinar si se contina en el ciclo repetitivo. 6.- Se evala la condicin que controla la entrada al ciclo repetitivo comparando si el valor contenido en memoria en el espacio identificado como CONTADOR es menor o igual a 4, es decir, 2 es menor o igual que 4 cuyo resultado es cierto, por lo que se procede a ejecutar el grupo de instrucciones dentro de la estructura repetitiva, realizndose las siguientes instrucciones: 6.1.- Obtener un valor a almacenar en el espacio en memoria identificado como NUMERO, en este caso obtener el valor 10 . Quedando la representacin de los valores en memoria de la siguiente forma: SUMA
J. L. Parra

5 NUMERO 1 0 CONTADOR 2 6.2.- Sumar al valor almacenado en el espacio identificado en memoria como SUMA, el valor contenido en el espacio identificado en memoria como NUMERO, es decir, se realiza la operacin 5+10 y el resultado almacenarlo en el espacio en memoria identificado como SUMA. La representacin de los valores en memoria es la siguiente: SUMA 1 NUMERO 1 0 CONTADOR 2 6.3.- Incrementar el espacio de memoria identificado como CONTADOR en uno mediante la operacin CONTADOR=CONTADOR +1, es decir, efectuar la suma 2+1 y el resultado almacenarlo en el espacio identificado en memoria como CONTADOR. La representacin de los valores en memoria sera la siguiente: SUMA 1 NUMERO 1 0 CONTADOR 3 6.4.- Al encontrar la instruccin FIN DEL REPITA el proceso se devuelve y evala la condicin CONTADOR <= 4 con la finalidad de determinar si se continua en el ciclo repetitivo. 7.- Se evala el ciclo repetitivo comparando si el valor contenido en memoria en el espacio identificado como CONTADOR es menor o igual a 4, es decir, 3 es menor o igual que 4 cuyo resultado es cierto, por lo que se procede a ejecutar el grupo de instrucciones dentro de la estructura repetitiva, realizndose las siguientes instrucciones:
J. L. Parra

7.1.- Obtener un valor a almacenar en el espacio en memoria identificado como NUMERO, en este caso obtener el valor 20 . Quedando la representacin de los valores en memoria de la siguiente forma: SUMA 1 NUMERO 2 0 CONTADOR 3 7.2.- Sumar al valor almacenado en el espacio identificado en memoria como SUMA, el valor contenido en el espacio identificado en memoria como NUMERO, es decir, se realiza la operacin 15+20 y el resultado almacenarlo en el espacio en memoria identificado como SUMA. La representacin de los valores en memoria es la siguiente: SUMA 3 NUMERO 2 0 CONTADOR 3 7.3.-Incrementar el espacio de memoria identificado como CONTADOR en uno mediante la operacin CONTADOR=CONTADOR +1, es decir, efectuar la suma 3+1 y el resultado almacenarlo en el espacio identificado en memoria como CONTADOR. La representacin de los valores en memoria sera la siguiente: SUMA 3 NUMERO 2 0 CONTADOR 4 5 5 5

J. L. Parra

7.4.- Al encontrar la instruccin FIN DEL REPITA el proceso se devuelve y evala la condicin CONTADOR <= 4 con la finalidad de determinar si se continua en el ciclo repetitivo. 8.- Se evala el ciclo repetitivo comparando si el valor contenido en memoria en el espacio identificado como CONTADOR es menor o igual que 4, es decir, 4 es menor o igual que 4 cuyo resultado es cierto, por lo que se procede a ejecutar el grupo de instrucciones dentro de la estructura repetitiva, realizndose las siguientes instrucciones: 8.1.- Obtener un valor a almacenar en el espacio en memoria identificado como NUMERO, en este caso obtener el valor 9 . Quedando la representacin de los valores en memoria de la siguiente forma: SUMA 3 NUMERO 9 CONTADOR 4 8.2.- Sumar al valor almacenado en el espacio identificado en memoria como SUMA, el valor contenido en el espacio identificado en memoria como NUMERO, es decir, se realiza la operacin 35+9 y el resultado almacenarlo en el espacio en memoria identificado como SUMA. La representacin de los valores en memoria es la siguiente: SUMA 4 NUMERO 9 CONTADOR 4 8.3.- Incrementar el espacio de memoria identificado como CONTADOR en uno mediante la operacin CONTADOR=CONTADOR +1, es decir, efectuar la suma 4+1 y el resultado almacenarlo en el espacio identificado en memoria como CONTADOR. La representacin de los valores en memoria sera la siguiente: SUMA 4 NUMERO 9
J. L. Parra

CONTADOR 5 8.4.- Al encontrar la instruccin FIN DEL REPITA el proceso se devuelve y evala la condicin CONTADOR <= 4 con la finalidad de determinar si se continua en el ciclo repetitivo. En este caso el resultado de la evaluacin es falso por lo que se termina el ciclo repetitivo y se ejecuta la instruccin siguiente a la instruccin FIN DEL REPITA. 9.- Se finaliza el algoritmo al encontrar la instruccin FIN DEL ALGORITMO.

CUESTIONARIO. Modifique el algoritmo anterior para que lea y sume 1000 nmeros y adems emita el resultado de la suma.

5.2 ESTRUCTURA REPETITIVA REPITA .... HASTA

El segundo tipo de estructura repetitiva a estudiar al igual que la anterior se utiliza cuando conocemos o no el nmero de iteraciones a realizar, posee la siguiente sintaxis: REPITA ACCION1 ACCION2 . . ACCIONN HASTA (CONDICION) En este tipo de estructura repetitiva el grupo de instrucciones dentro de la misma se ejecuta hasta que la condicin sea verdadera y se realizan al menos una vez ya que la evaluacin de la condicin se realiza al final del ciclo repetitivo. Para explicar la ejecucin de este tipo de estructuras y adems observar la diferencia en cuanto a su construccin con respecto a la estructura REPITA ...MIENTRAS, utilizaremos el
J. L. Parra

mismo enunciado del algoritmo anterior, con la diferencia, que debemos escribir el resultado final de la suma de los 4 nmeros. El enunciado es el siguiente: Disee un pseudocdigo que permita leer y sumar 4 nmeros y escriba el resultado de la suma. El diseo sera el siguiente: INICIO DECLARAR SUMA NUMERICO (4) DECLARAR CONTADOR NUMERICO (1) DECLARAR NUMERO NUMERICO (2) SUMA=0 CONTADOR=0 REPITA LEER (NUMERO) SUMA=SUMA+NUMERO CONTADOR=CONTADOR + 1 HASTA (CONTADOR=4) ESCRIBIR ("EL RESULTADO DE LA SUMA DE LOS 4 NUMEROS ES:", SUMA) FIN Simulemos la corrida de este algoritmo para los valores 5,10,15,9. 1.- El proceso comienza mediante la instruccin INICIO. 2.- Se apartan los espacios en memoria para las variables SUMA, CONTADOR, NUMERO. 3.- Inicializar la variable SUMA con el valor 0 (cero). 4.- Inicializar la variable CONTADOR con el valor 0 (cero). 5.- Comenzar el ciclo repetitivo mediante la instruccin REPITA. 5.1.- Obtener el valor a almacenar en el espacio guardado en memoria para la variable NUMERO, en este caso el valor 5. Siendo la representacin de los datos en memoria la siguiente: SUMA 0 NUMERO 5 CONTADOR
J. L. Parra

0 5.2.- Sumar al valor almacenado en el espacio identificado en memoria como SUMA, el valor contenido en el espacio identificado en memoria como NUMERO, es decir, se realiza la operacin 0+5 y el resultado almacenarlo en el espacio en memoria identificado como SUMA. La representacin de los valores en memoria es la siguiente: SUMA 5 NUMERO 5 CONTADOR 0 5.3.- Incrementar el espacio de memoria identificado como CONTADOR en uno mediante la operacin CONTADOR=CONTADOR +1, es decir, efectuar la suma 0+1 y el resultado almacenarlo en el espacio identificado en memoria como CONTADOR. La representacin de los valores en memoria sera la siguiente: SUMA 5 NUMERO 5 CONTADOR 1 5.4.- Evaluar la condicin CONTADOR = 4 con la finalidad de determinar si se contina en el ciclo repetitivo. Se efecta la comparacin 1 es igual a 4 cuyo resultado es falso por la que se contina en el ciclo repetitivo. 6.1.- Obtener el valor a almacenar en el espacio guardado en memoria para la variable NUMERO, en este caso el valor 10. Siendo la representacin de las variables en memoria la siguiente: SUMA 5 NUMERO 1 0
J. L. Parra

CONTADOR 1 6.2.- Sumar al valor almacenado en el espacio identificado en memoria como SUMA, el valor contenido en el espacio identificado en memoria como NUMERO, es decir, se realiza la operacin 5+10 y el resultado almacenarlo en el espacio en memoria identificado como SUMA. La representacin de los valores en memoria es la siguiente: SUMA 1 NUMERO 1 0 CONTADOR 1 6.3.- Incrementar el espacio de memoria identificado como CONTADOR en uno mediante la operacin CONTADOR=CONTADOR +1, es decir, efectuar la suma 1+1 y el resultado almacenarlo en el espacio identificado en memoria como CONTADOR. La representacin de los valores en memoria sera la siguiente: 5

SUMA 1 NUMERO 1 0 CONTADOR 2 6.4.- Evaluar la condicin CONTADOR = 4 con la finalidad de determinar si se contina en el ciclo repetitivo. Se efecta la comparacin 2 es igual a 4 cuyo resultado es falso por la que se contina en el ciclo repetitivo. 7.1.- Obtener el valor a almacenar en el espacio guardado en memoria para la variable NUMERO, en este caso el valor 15. Siendo la representacin de las variables en memoria la siguiente: SUMA 1 NUMERO
J. L. Parra

CONTADOR 2 7.2.- Sumar al valor almacenado en el espacio identificado en memoria como SUMA, el valor contenido en el espacio identificado en memoria como NUMERO, es decir, se realiza la operacin 15+15 y el resultado almacenarlo en el espacio en memoria identificado como SUMA. La representacin de los valores en memoria es la siguiente: SUMA 3 NUMERO 1 5 CONTADOR 2 7.3.- Incrementar el espacio de memoria identificado como CONTADOR en uno mediante la operacin CONTADOR=CONTADOR +1, es decir, efectuar la suma 2+1 y el resultado almacenarlo en el espacio identificado en memoria como CONTADOR. La representacin de los valores en memoria sera la siguiente: 0

SUMA 3 NUMERO 1 5 CONTADOR 3 7.4.- Evaluar la condicin CONTADOR = 4 con la finalidad de determinar si se contina en el ciclo repetitivo. Se efecta la comparacin 3 es igual a 4 cuyo resultado es falso por la que se contina en el ciclo repetitivo. 8.1.- Obtener el valor a almacenar en el espacio guardado en memoria para la variable NUMERO, en este caso el valor 9. Siendo la representacin de las variables en memoria la siguiente: SUMA 3 0
J. L. Parra

NUMERO 9 CONTADOR 3 8.2.- Sumar al valor almacenado en el espacio identificado en memoria como SUMA, el valor contenido en el espacio identificado en memoria como NUMERO, es decir, se realiza la operacin 30+9 y el resultado almacenarlo en el espacio en memoria identificado como SUMA. La representacin de los valores en memoria es la siguiente: SUMA 3 NUMERO 9 CONTADOR 3 8.3.- Incrementar el espacio de memoria identificado como CONTADOR en uno mediante la operacin CONTADOR=CONTADOR +1, es decir, efectuar la suma 3+1 y el resultado almacenarlo en el espacio identificado en memoria como CONTADOR. La representacin de los valores en memoria sera la siguiente: 9

SUMA 3 NUMERO 9 CONTADOR 4 8.4.- Evaluar la condicin CONTADOR = 4 con la finalidad de determinar si se contina en el ciclo repetitivo. Se efecta la comparacin 4 es igual a 4 cuyo resultado es cierto por lo tanto se finaliza la instruccin repetitiva. 9. Emitir la salida final del algoritmo mediante la instruccin: ESCRIBIR ("EL RESULTADO DE LA SUMA DE LOS 4 NUMEROS ES:", SUMA)
J. L. Parra

lo que arrojar la siguiente salida: EL RESULTADO DE LA SUMA DE LOS 4 NUMEROS ES: 39 10.- Se finaliza el algoritmo mediante la instruccin: FIN. CUESTIONARIO. 1.- Cual sera el resultado de la corrida para un algoritmo con el mismo enunciado anterior pero con el siguiente diseo?. INICIO DECLARAR SUMA NUMERICO (4) DECLARAR CONTADOR NUMERICO (1) DECLARAR NUMERO NUMERICO (2) SUMA=0 CONTADOR=0 REPITA LEER (NUMERO) SUMA=SUMA+NUMERO CONTADOR=CONTADOR + 1 ESCRIBIR ("EL RESULTADO DE LA SUMA DE LOS 4 NUMEROS ES:", SUMA) HASTA (CONTADOR=4) FIN Diga como considera ud. este diseo?. Porque?.

5.3 ESTRUCTURA REPETITIVA HAGA ....HASTA

El tercer tipo de instruccin repetitiva o iterativa que procederemos a explicar es usada cuando conocemos el nmero de veces que se ejecutaran las acciones a procesar es el siguiente: HAGA DESDE Variable=NumeroInicial HASTA NumeroFinal INCREMENTO EN n accion1 accion2
J. L. Parra

. . accionn FIN HAGA En este tipo de estructura repetitiva las instrucciones dentro del ciclo repetitivo se ejecutarn tantas veces como sea la diferencia entre el nmero inicial y el nmero final, NumeroInicial es el valor en el cual se inicializar la variable que controlar el nmero de iteraciones que tendr el ciclo repetitivo, no hace falta colocar una instruccin de inicializacin de contador, ya que esta se efecta en este tipo de instruccin directamente en su construccin al colocar Variable=NumeroInicial; NumeroFinal indicar el valor que deber contener la variable que controla el ciclo repetitivo para finalizar el mismo; n es el valor en el cual se incrementar la variable que controla el ciclo repetitivo, en caso de no colocar INCREMENTO EN n el proceso asume que el incremento es de 1 en 1, por lo que no hace falta una instruccin de incremento de contador. Ejemplo: El diseo del pseudocdigo que permita leer y sumar 4 nmeros y escribir el resultado de la suma con este tipo de instruccin repetitiva es el siguiente:
INICIO DECLARAR SUMA NUMERICO (4) DECLARAR CONTADOR NUMERICO (1) DECLARAR NUMERO NUMERICO (2) SUMA=0 HAGA DESDE CONTADOR=1 HASTA 4 LEER (NUMERO) SUMA=SUMA+NUMERO FIN DEL HAGA ESCRIBIR ("EL RESULTADO DE LA SUMA DE LOS 4 NUMEROS ES:", SUMA) FIN

Simulemos la corrida de este algoritmo con los siguientes valores 5,10,20,9. 1.- Se da inicio a la ejecucin del proceso con la instruccin: INICIO 2.- Se apartan espacios de memoria para las variables SUMA, CONTADOR y NUMERO la representacin en memoria es la siguiente: SUMA NUMERO
J. L. Parra

CONTADOR 3.- Se inicializa la variable SUMA con el valor 0 (cero), la representacin de los valores en memoria ser la siguiente: SUMA 0 NUMERO CONTADOR 4.- Se comienza el ciclo repetitivo para lo cual se inicializa la variable CONTADOR con el valor 1 y se evala si este valor es menor o igual a 4 siendo este resultado verdadero por lo que se procede a efectuar las instrucciones que estn dentro del ciclo repetitivo. En este momento la representacin de los valores en memoria es la siguiente: SUMA 0 NUMERO CONTADOR 1 4.1.- Obtener el valor a almacenar en la variable NUMERO, en este caso obtener el valor 5. La representacin de los valores en memoria en este momento es la siguiente: SUMA 0 NUMERO 5 CONTADOR 1 4.2.- Acumular el valor de la variable NUMERO con el valor ubicado en el espacio guardado en memoria para la variable SUMA, por medio de efectuar la operacin
J. L. Parra

SUMA=SUMA+NUMERO donde se realiza la suma 0+5 y el resultado almacenarlo en el espacio de memoria guardado para la variable SUMA. la representacin de los valores en memoria en estos momentos es la siguiente: SUMA 5 NUMERO 5 CONTADOR 1 4.3.- Ir a evaluar la finalizacin o no del ciclo repetitivo, lo cual sucede al encontrar la instruccin: FIN DEL HAGA. 5.- Incrementar la variable CONTADOR en uno, asignndole el valor 2 y evaluar si 2 es menor o igual a 4 siendo el resultado de esta evaluacin verdadera, por lo que continan efectuando las instrucciones dentro del ciclo repetitivo. La representacin de las variables en memoria en este momento es la siguiente: SUMA 5 NUMERO 5 CONTADOR 2 5.1.- Obtener el valor a almacenar en la variable NUMERO, en este caso obtener el valor 10. La representacin de los valores en memoria en este momento es la siguiente: SUMA 5 NUMERO 1 0 CONTADOR 2
J. L. Parra

5.2.- Acumular el valor de la variable NUMERO con el valor ubicado en el espacio guardado en memoria para la variable SUMA, por medio de efectuar la operacin SUMA=SUMA+NUMERO donde se realiza la suma 5+10 y el resultado almacenarlo en el espacio de memoria guardado para la variable SUMA. la representacin de los valores en memoria en estos momentos es la siguiente: SUMA 1 NUMERO 1 0 CONTADOR 2 5.3.- Ir a evaluar la finalizacin o no del ciclo repetitivo, lo cual sucede al encontrar la instruccin: FIN DEL HAGA. 6.- Incrementar la variable CONTADOR en uno, asignndole el valor 3 y evaluar si 3 es menor o igual a 4 siendo el resultado de esta evaluacin verdadera, por lo que continan efectuando las instrucciones dentro del ciclo repetitivo. La representacin de las variables en memoria en este momento es la siguiente: SUMA 1 NUMERO 1 0 CONTADOR 3 6.1.- Obtener el valor a almacenar en la variable NUMERO, en este caso obtener el valor 20. La representacin de los valores en memoria en este momento es la siguiente: SUMA 1 NUMERO 2 0 CONTADOR
J. L. Parra

3 6.2.- Acumular el valor de la variable NUMERO con el valor ubicado en el espacio guardado en memoria para la variable SUMA, por medio de efectuar la operacin SUMA=SUMA+NUMERO donde se realiza la suma 15+20 y el resultado almacenarlo en el espacio de memoria guardado para la variable SUMA. la representacin de los valores en memoria en estos momentos es la siguiente: SUMA 3 NUMERO 2 0 CONTADOR 3 6.3.- Ir a evaluar la finalizacin o no del ciclo repetitivo, lo cual sucede al encontrar la instruccin: FIN DEL HAGA. 7.- Incrementar la variable CONTADOR en uno, asignndole el valor 4 y evaluar si 4 es menor o igual a 4 siendo el resultado de esta evaluacin verdadera, por lo que continan efectuando las instrucciones dentro del ciclo repetitivo. La representacin de las variables en memoria en este momento es la siguiente: SUMA 3 NUMERO 2 0 CONTADOR 4 7.1.- Obtener el valor a almacenar en la variable NUMERO, en este caso obtener el valor 9. La representacin de los valores en memoria en este momento es la siguiente: SUMA 3 5 NUMERO 9
J. L. Parra

CONTADOR 4 7.2.- Acumular el valor de la variable NUMERO con el valor ubicado en el espacio guardado en memoria para la variable SUMA, por medio de efectuar la operacin SUMA=SUMA+NUMERO donde se realiza la suma 35+9 y el resultado almacenarlo en el espacio de memoria guardado para la variable SUMA. la representacin de los valores en memoria en estos momentos es la siguiente: SUMA 4 NUMERO 9 CONTADOR 4 7.3.- Ir a evaluar la finalizacin o no del ciclo repetitivo, lo cual sucede al encontrar la instruccin: FIN DEL HAGA. 8.- Incrementar la variable CONTADOR en uno, asignndole el valor 5 y evaluar si 5 es menor o igual a 4 siendo el resultado de esta evaluacin falso, por lo que se finaliza el ciclo repetitivo y se procede a ejecutar la instruccin siguiente a la instruccin FIN DEL HAGA 9.- Emitir el resultado de la suma de los cuatro nmeros el cual est contenido en el espacio de memoria identificado como SUMA, a travs de la instruccin: ESCRIBIR ("EL RESULTADO DE LA SUMA DE LOS 4 NUMEROS ES:", SUMA) La cual se ejecuta de la siguiente forma, se escribe por la unidad de salida el literal encerrado entre comillas es decir: EL RESULTADO DE LA SUMA DE LOS 4 NUMEROS ES: Se extrae de la memoria el valor contenido en memoria en el espacio identificado por SUMA y se emite a travs de la unidad de salida dando como resultado final la siguiente salida: EL RESULTADO DE LA SUMA DE LOS 4 NUMEROS ES: 44
J. L. Parra

10.- Se finaliza la ejecucin del algoritmo con la instruccin: FIN. CUESTIONARIO. 1.- Un nmero natural es primo si solo es divisible por la unidad y por el mismo; por ejemplo 3 es un nmero primo ya que solo es divisible por 1 y por 3, sin embargo, 4 no es primo porque es divisible por 1,2 y 4. Disee un algoritmo que lea un nmero y permita determinar si el mismo es primo. 2.- El factorial del nmero n se calcula de la siguiente forma: 1*1*2*3*...*n Disee un algoritmo que lea un nmero entero y calcule su factorial. 3.- Disee un algoritmo que genere la tabla de sumar. 4.- El Banco Venezolano posee actualmente 200 clientes y la gerencia desea saber cuanto dinero debera tener disponible el prximo ao, para cancelar el capital ms los intereses a sus clientes en caso de que todos decidan cerrar sus cuentas bancarias. El dato de entradas para este clculo ser el capital actual de los clientes. El inters que paga anualmente el banco es de 20%. 5.- Disee un algoritmo que teniendo como dato de entrada la cdula, el nombre y la nota definitiva de los 30 alumnos de la materia Informtica, permita determinar y escribir el promedio de alumnos aprobados y el promedio de alumnos aplazados en la materia. La escala de calificacin es de 1 al 20 y la nota mnima aprobatoria es 10 puntos. 6.-La compaa telfono de Venezuela desea disear un programa que permita emitir el recibo de pago mensual de sus clientes, para lo cual se dan como datos de entradas el nmero de telfono, el nombre del cliente, el consumo mensual. Si el consumo mensual por cliente es menor a 180 impulsos el cliente cancelar 800 bolvares si es mayor a 180 impulsos cancelar 800 bolvares ms 5 bolvares por impulso adicional. Asuma que el nmero de clientes de la compaa es 100.

CAPITULO 6
J. L. Parra

DISEO AVANZADO DE ALGORITMOS. El verdadero poder de los algoritmos radica en la posibilidad de utilizar las diferentes estructuras explicadas anteriormente, secuenciales, alternativas y repetitivas en la resolucin de problemas, en especial las estructuras repetitivas ya que normalmente los programas se efectan para procesar mucha informacin por lo que este tipo de estructuras en la ms utilizada, en los ciclos repetitivos no siempre ser conocido el nmero de iteraciones a ser ejecutadas en el mismo, por lo que el programador debe establecer la condicin adecuada para detener la ejecucin del ciclo repetitivo, en este capitulo estudiaremos dos tcnicas que comnmente son utilizadas para detener la ejecucin de ciclos repetitivos ellas son: el Dato Centinela y el Dato Respuesta. 6.1 DATOS CENTINELAS Es un valor que deber ser introducido a la variable que controla la ejecucin del ciclo repetitivo para que este se detenga. Normalmente la variable a utilizar para contener el dato centinela deber ser aquella que identifique o haga nico al elemento que se est procesando, por ejemplo, la cdula, el cdigo del producto. A continuacin se procede a explicar el uso de datos centinelas a travs de un ejemplo. Disee un algoritmo que permita emitir el recibo de pago por concepto de utilizacin del servicio telefnico a los usuarios de este servicio. El monto a cancelar estar condicionado de la siguiente manera: Los primeros 100 impulsos tendrn un costo de 300 bolvares, los impulsos adicionales sern cancelados a razn de 4 bolvares por impulso, los datos de entradas sern los siguientes: nmero de telfono, nmero de cdula, nombre, direccin, nmero de impulsos mensuales. El formato del recibo de pago ser el que aparece en la siguiente pgina:

COMPAIA TELEFONICA. BARCELONA


J. L. Parra

RECIBO DE PAGO CDULA DEL CLIENTE: DIRECCION: DESCRIPCION IMPULSOS NOMBRE: TELEFONO: MONTO

TARIFA BASICA xxx Pago por tarifa bsica: xyx TOTAL...................................... yyyyy Analizando este problema, vemos que nuestra meta u objetivo es emitir el recibo de pago para cada cliente que procesemos con el formato dado, calculndoles el monto a pagar por la utilizacin del servicio telefnico basado en las siguientes condiciones: La tarifa bsica son 300 Bolvares y cubre los 100 primeros impulsos, los impulsos adicionales se cobraran a razn de 4 Bolvares por impulsos, Cmo calculamos los impulsos adicionales y el monto a pagar?, como dato de entrada se nos da el nmero de impulsos mensuales utilizados por el cliente y adems sabemos que 100 es el nmero de impulsos mximos para cancelar la tarifa bsica , por lo que para calcular los impulsos adicionales y el monto a pagar por impulsos adicionales podemos utilizar la siguiente formula: IMPULSO ADICIONALES = NUMERO DE IMPULSO CONSUMIDO EN EL MES 100 MONTO A PAGAR ADICIONALES * 4 POR IMPULSOS ADICIONALES = IMPULSOS

Pero que pasa con aquellos clientes que no sobrepasan la cantidad de impulsos asignado a la tarifa bsica Les deberamos realizar el clculo de impulsos adicionales?, no, ya que ellos solo pagarn la tarifa bsica. Por lo que concluimos que para realizar el clculo de pago por clientes debemos utilizar una instruccin de tipo alternativa, en la cual la expresin lgica va a estar condicionada por el nmero de impulsos mensuales utilizados por el cliente, esta instruccin alternativa podra ser la siguiente:

SI IMPULSOMENSUAL <= IMPULSOSBASICO ENTONCES


J. L. Parra

MONTO=300 SINO IMPULSOADICIONAL=IMPULSOMENSUAL - IMPULSOSBASICOS MONTOADICIONAL = IMPULSOADICIONAL * 4 MONTO= 300 + MONTOADICIONAL FIN SI Adems este proceso debemos realizarlo para uno o ms clientes, por lo que debemos utilizar ESTRUCTURAS REPETITIVAS. Sin embargo no sabemos cuantas iteraciones se realizaran en el ciclo repetitivo, ya que podra darse el caso de que el supervisor de la persona que opera el sistema mande a emitir solo el recibo de un cliente especifico o puede ser que se mande a emitir solo 5 recibos, entonces el algoritmo a disear debe ser capaz de utilizarse en ambos casos, es aqu donde se utiliza el dato centinela para detener el ciclo repetitivo. Ahora nos falta determinar cul de los datos de entrada ser el ideal a utilizarse como dato centinela, en este caso existen dos variables que hacen nico al cliente; estas son EL NUMERO DE CDULA y EL NUMERO DE TELEFONO, como lo que deseamos es emitir un recibo por nmero telefnico utilizaremos la variable nmero de telfono como la variable a travs de la cual se introducir el dato centinela: este dato centinela podra ser espacios en blanco, ceros, asteriscos, etc. Una vez determinado el dato centinela estamos en la capacidad de disear la estructura repetitiva la cual podra ser: REPITA MIENTRAS NUMERO_TELEFONICO <> 000 . . . . . . . . LEER (NUMERO_TELEFONICO) FIN DEL REPITA. Esto quiere decir que en el momento en que obtengamos como entrada en la variable NUMERO_TELEFONICO el valor 000 el ciclo repetitivo culminar. Una vez explicado los procesos bsicos para el diseo de este algoritmo procederemos a realizar el diseo completo el cual puede ser el que aparece en la siguiente pgina.

1 Inicio J. L. Parra

2 Declarar Nmero_telefnico Alfanumerico (7) 3 Declarar Cdula Alfanumerico (10) 4 Declarar Nombre Alfanumerico (30) 5 Declarar Direccin Alfanumerico (44) 6 Declarar Impulso_mensuales numerico (4) 7 Declarar Impulso_adicionales numerico (4) 8 Declarar Impulso_bsicos numerico (3) 9 Declarar Monto_impulso_adicional numerico (2) 10 Declarar Monto_adicional numerico (5) 11 Declarar Monto bsico numerico (4) 12 Impulsos_bsicos = 100 13 Monto_bsico =300 14 Monto_impulso_adicional =4 15 Escribir (INTRODUZCA EL NUMERO TELEFONICO) 16 Leer (Nmero_telfonico) 17 REPITA MIENTRAS NUMERO_TELEFONICO <> 000 17.0 Monto_adicional=0 17.0.1 Impulso_Adicional=0 17.1. ESCRIBIR (INTRODUZCA EL NUMERO DE CDULA DEL CLIENTE : ) 17.2. LEER (Cdula) 17.3. ESCRIBIR (INTRODUZCA EL NOMBRE DEL CLIENTE : ) 17.4. LEER (Nombre) 17.5. ESCRIBIR (INTRODUZCA LA DIRECCION DEL CLIENTE :) 17.6 LEER (Direccin) 17.7 ESCRIBIR (INTRODUZCA EL NUMERO DE IMPULSOS UTILIZADOS EN EL MES :) 17.8 LEER (Impulso_mensuales) 17.9 ESCRIBIR (COMPAA TELEFONICA) 17.10 ESCRIBIR (BARCELONA) 17.11 ESCRIBIR ( RECIBO DE PAGO) 17.12 ESCRIBIR (NUMERO DE TELEFONO :, Nmero_telfono) 17.13 ESCRIBIR (CDULA DEL CLIENTE :, Cdula) 17.14 ESCRIBIR (NOMBRE DEL CLIENTE :, Nombre) 17.15 ESCRIBIR (DIRECCION DEL CLIENTE :, Direccin) 17.16 ESCRIBIR (DESCRIPCION IMPULSOS MONTO) 17.17 ESCRIBIR (TARIFA BASICA ,Impulsos_bsicos, ,Monto_bsico) 17.18.SI Impulso_mensual > Impulso_bsico ENTONCES 17.18.1 Impulso_adicional=Impulso_mensual-Impulso_bsico 17.18.2 Monto_adicional=Impulso_adicional*Monto_Impulso_adicional 17.18.3 ESCRIBIR (IMPULSOS ADICIONALES ,Impulso_adicional, , Monto_adicional) 17.18.4 FIN DEL SI 17.19 ESCRIBIR(TOTAL A PAGAR = , Monto_bsico+Monto_adicional) 17.20 ESCRIBIR (INTRODUZCA EL NUMERO TELEFONICO) 17.21 LEER (Nmero_telefnico) 17.22 FIN DEL REPITA 18 FIN DEL ALGORITMO.

Simulemos la corrida de este algoritmo con los siguientes dos grupos de datos de entradas: (775592, 8.334.556, Pedro Prez, Urbanizacin Boyac, Barcelona, 300) (744626, 8.644.208, Juan Daz, Barrio Sucre, Barcelona,70) (000)
J. L. Parra

1. No explicaremos las instrucciones del 1 al 11 ya que sabemos que estas apartan espacio en memoria para las variables que intervendrn en el algoritmo, solo colocaremos el resultado de la ejecucin de este grupo de instrucciones as como su representacin en memoria que ser la siguiente : Nmero_telefnico Nombre Cdula

Direccin

Impulso_mensuales Impulso_bsico Monto_adicional

Impulso_adicionales Monto_impulso_adicional Monto_bsico

2. Las instrucciones 12 al 14 introducen en memoria valores que sern constantes durante la ejecucin del algoritmo, esto se hace con la finalidad de facilitar el mantenimiento de dichos algoritmos o programas, ya que en el momento en que la empresa cambia estos valores el programador solo deber corregir en el programa estas tres lneas. Una vez inicializadas las constantes, los valores en memoria quedarn representados de la siguiente manera : Nmero_telefnico Nombre Cdula

Direccin

Impulso_mensuales

Impulso_adicionales
J. L. Parra

Impulso_bsico 1 0 0 Monto_adicional

Monto_impulso_adicional 4 Monto_bsico 3 0 0

3. Las instrucciones 15 al 16 permiten obtener el dato nmero telefnico, en este caso el nmero 775592 e introducirlo en el espacio determinado para la variable Nmero_telefnico . Las representaciones en memoria de las variables utilizadas en el algoritmo son hasta este momento es : Nmero_telefnico 7 7 5 5 Nombre Cdula 9 2

Direccin

Impulso_mensuales Impulso_bsico 1 0 0 Monto_adicional

Impulso_adicionales Monto_impulso_adicional 4 Monto_bsico 3 0 0

4. En la instruccin 17 se evala la entrada o no al ciclo repetitivo, para lo cual en las instrucciones anteriores debemos obtener el valor que contendra la variable que en este caso controla el ciclo, es decir Nmero_telefnico, y preguntamos si el valor contenido en el espacio de memoria para la variable Nmero_telefnico en este caso 775592 es diferente de 000, Como el resultado es verdadero se ejecuta la instruccin dentro del ciclo repetitivo. 5. Las instrucciones 17.0 y 17.0.1 inicializan las variables Monto_adicional e Impulso_adicional con el valor cero (0), esto con la finalidad de que cada vez que se procese un nuevo nmero telefnico se le indique al proceso que este no posee Impulsos adicionales y por lo tanto su monto adicional es cero, la representacin de los datos en memoria es la siguiente:
J. L. Parra

Nmero_telefnico 7 7 5 5 Nombre

Cdula 9 2

Direccin

Impulso_mensuales Impulso_bsico 1 0 0 Monto_adicional 0

Impulso_adicionales 0 Monto_impulso_adicional 4 Monto_bsico 3 0 0

6. Las instrucciones 17.1 al 17.8 nos permiten obtener los restantes datos de entrada e introducirlo en memoria cuya representacin una vez ejecutada este grupo de instrucciones sera la siguiente : Nmero_telefnico 7 7 5 5 Nombre P Direccin A c i n , B o y a c a , B a U r r c b e a l n o i n z a e d r o P r e z 9 2 Cdula 8 . 3 3 4 . 5 5 6

Impulso_mensuales 3 0 0 Impulso_bsico 1 0 0

Impulso_adicionales 0

Monto_impulso_adicional 4
J. L. Parra

Monto_adicional 0

Monto_bsico 3 0 0

7. Las instrucciones 17.9 al 17.16 nos permiten emitir la siguiente salida : COMPAA TELEFONICA BARCELONA RECIBO DE PAGO NUMERO DE TELEFONO : 775592 CDULA DEL CLIENTE : 8.334.556 NOMBRE DEL CLIENTE : Pedro Prez DIRECCION DEL CLIENTE : Urbanizacin Boyac Barcelona DESCRIPCION IMPULSO MONTO 8. La instruccin 17.17 permite emitir como salida el monto a pagar por tarifa bsica haya utilizado o no el cliente este servicio, en cambio si el cliente utiliz mas de los servicios bsicos la instruccin de salida sera la siguiente : TARIFA BASICA 100 300

9. la instruccin 17.18 permite evaluar si el cliente sobrepas el limite de los impulsos bsicos asignado mensualmente, para as calcularle el monto a pagar por impulsos adicionales, esta evaluacin se hace de la siguiente manera; busca los valores en memoria de las variables Impulso_mensuales y Impulso_bsico, hace la comparacin en este caso 300>100, como el resultado es verdadero ejecuta el grupo de instruccin dentro de la estructura condicional o alternativa. 10. La instruccin 17.18.1 calcula el nmero de impulsos adicional utilizado haciendo la operacin siguiente: Impulso_adicional =300-100 y el resultado lo introduce en el espacio de memoria guardado para la variable Impulso_adicional, la representacin de los datos en memoria hasta este momento es la siguiente: Nmero_telefnico 7 7 5 5 Nombre P Direccin U r b a n i z e d r o P r e z 9 2 Cdula 8 . 3 3 4 . 5 5 6

J. L. Parra

A c

B O y

B a

Impulso_mensuales 3 0 0 Impulso_bsico 1 0 0 Monto_adicional 0

Impulso_adicionales 2 0 0

Monto_impulso_adicional 4 Monto_bsico 3 0 0

11. La instruccin 17.18.2 permite calcular el monto a pagar por los impulsos adicionales utilizados mediante la siguiente operacin aritmtica : Monto_adicional=Impulso_adicionales*Monto_impulso_adicional, en este caso la operacin sera Monto_adicional=200*4 y el resultado se almacena en memoria en el espacio guardado para la variable Monto_adicional, en este momento los datos en memoria seran : Nmero_telefnico 7 7 5 5 Nombre P Direccin A c I n , B o y a c a , B a U r r c b e a l n o i n z a e d r o P r e z 9 2 Cdula 8 . 3 3 4 . 5 5 6

Impulso_mensuales 3 0 0 Impulso_bsico 1 0 0 Monto_adicional 8

Impulso_adicionales 2 0 0

Monto_impulso_adicional 4 0 0 Monto_bsico 3 0 0

12. La instruccin 17.18.3 permite emitir la siguiente salida : IMPULSOS ADICIONALES 200 800
J. L. Parra

13. La instruccin 17.18.4 finaliza la estructura alternativa. 14. la instruccin 17.19 permite emitir la siguiente salida, TOTAL A PAGAR y luego efecta la operacin Monto_basico+Monto_adicional, para la cual busca en memoria los valores correspondiente obteniendo como resultado 1100, el resultado de esta instruccin es el siguiente: TOTAL A PAGAR = 1100 15. Las instrucciones 17.20 y 17.21 permite obtener un nuevo dato para el nmero telefnico y as saber si seguiremos procesando o no este caso, obtenemos el Nmero 744626. La representacin de los datos en memoria es la siguiente : Nmero_telefnico 7 4 4 6 Nombre P Direccin a c i n , B o y a c A , B a U r r c b e a l n o i n z a e d r o P r e z 2 6 Cdula 8 . 3 3 4 . 5 5 6

Impulso_mensuales 3 0 0 Impulso_bsico 1 0 0 Monto_adicional 8

Impulso_adicionales 2 0 0

Monto_impulso_adicional 4 0 0 Monto_bsico 3 0 0

Note que en estos momento el nico dato de un nuevo cliente es el nmero telefnico, los otros datos pertenecen al cliente anterior, estos se actualizarn a medidas que se procese un nuevo cliente. 16. La instruccin 17.22 permite ir a evaluar nuevamente la continuacin o no del ciclo repetitivo es decir ir a la instruccin NRO.17. 17. Se evala nuevamente la instruccin NRO.17 para saber si entra o no al ciclo repetitivo evaluando si 744626<> 000 como el resultado es verdadero se ejecutan las instrucciones dentro del ciclo repetitivo. 18. Se inicializan las variables Monto_adicional e impulso_adicional con el valor 0, la representacin de los datos en memoria es la siguiente:
J. L. Parra

Nmero_telefnico 7 4 4 6 Nombre

Cdula 8 . 3

P Direccin a c i n , B o y

A ,

B a

U r r c

b e

a l

n o

i n

z a

Impulso_mensuales 3 0 0 Impulso_bsico 1 0 0 Monto_adicional 0

Impulso_adicionales 0

Monto_impulso_adicional 4 Monto_bsico 3 0 0

19. Se ejecutan las instrucciones 17.1 al 17.8 los cuales permiten obtener los datos de entrada restante correspondiente al nmero telefnico 744626, una vez ejecutada este grupo de instrucciones los datos en memoria seran los siguientes: Nmero_telefnico 7 4 4 6 Nombre J Direccin B a r r i o S u c r e , B a 0 r c e l o n a u a n D a z 2 6 Cdula 8 . 6 4 4 . 2 0 8

Impulso_mensuales 7 0 Impulso_bsico 1 0 0 Monto_adicional

Impulso_adicionales

Monto_impulso_adicional 4 Monto_bsico
J. L. Parra

20. Se ejecutan las instrucciones 17.9 al 17.16 las cuales nos permiten emitir la siguiente salida:

COMPAA TELEFONICA BARCELONA RECIBO DE PAGO NUMERO DE TELEFONO : 744626 CDULA DEL CLIENTE : 8.644.208 NOMBRE DEL CLIENTE : Juan Daz DIRECCION : Barrio Sucre Barcelona DESCRIPCION IMPULSO MONTO

21. Se ejecuta la instruccin 17.17 la cual emite el monto a pagar por consumo bsico cuya salida ser la siguiente : TARIFA BASICA 100 300

22. Se ejecuta la instruccin 17.18 la cual evala si el cliente sobrepaso el limite de los impulsos bsicos asignados mensualmente, para esto se hace la siguiente evaluacin 70>100, como el resultado es falso y la construccin alternativa no tiene instrucciones en caso de ser contrario no se le calcula monto adicional a cancelar. 23. Se ejecuta la instruccin 17.18.4 y se finaliza la instruccin alternativa. 24. la instruccin 17.19 permite emitir la siguiente salida, TOTAL A PAGAR y luego efecta la operacin Monto_basico+Monto_adicional, para la cual busca en memoria los valores correspondiente obteniendo como resultado 300, el resultado de esta instruccin es el siguiente: TOTAL A PAGAR = 300

25. Se ejecutan las instrucciones 17.20 y 17.21 que permite obtener un nuevo dato para la variable Nmero_telefnico y as confirmar si se contina ejecutando o no el ciclo repetitivo, es decir de introducirse el dato centinela en este caso el valor a obtener es 000 la representacin en memoria de los datos es :
J. L. Parra

Nmero_telefnico 7 4 4 6 Nombre

Cdula 8 . 6

J Direccin B a r r i o S u c r

B a 0

Impulso_mensuales 7 0 Impulso_bsico 1 0 0 Monto_adicional 0

Impulso_adicionales

Monto_impulso_adicional 4 Monto_bsico 3 0 0

26. Se ejecuta la instruccin 17.22 la cual permite ir a evaluar nuevamente el ciclo repetitivo es decir ir a la instruccin 17. 27. Se evala nuevamente la instruccin NRO.17 para saber si se ejecuta o no el ciclo repetitivo, para esto se hace la siguiente comparacin 000<>000 como el resultado es falso no se ejecutan las instrucciones dentro del ciclo repetitivo si no que se ejecuta la instruccin siguiente al fin del repita. 28. Se ejecuta la instruccin 18 es decir Fin del Algoritmo. CUESTIONARIO 1. Suponga que por error Ud. Mando a ejecutar este programa, Que dato introducira para que no se emitiera ningn recibo de pago?. 2. Que sucedera si las instrucciones 17.0 y 17.0.1 no existieran y se ejecuta el algoritmo con los datos de entrada anteriormente dados?. Explique 3. Que sucedera si se eliminaran las instrucciones 17.20 y 17.21?. Explique. 4. Qu sucedera si no existieran las instrucciones 15 y 16?. Explique.

J. L. Parra

5. Qu sucedera si la instruccin 17.18.3 estuviese colocada despus de la instruccin 17.18.3?. Explique. 6. Si en algn momento la directiva la Compaa decide que el monto a pagar por 100 impulsos bsicos es 400 y que el monto a pagar por impulso adicional es 5 qu cambios hara ud. en el algoritmo?.

6.2 DISEO DE REPORTES. RESUMEN. Como sabemos los reportes son un medio que permiten a los usuarios obtener informacin sumarizada de las transacciones o movimientos realizados a un grupo de personas, productos, etc. de manera de poder tener una visin global de dichos movimientos, generalmente el formato de estos reportes de resumen es : ENCABEZADO NOMBRE DEL REPORTE LINEA DE ENCABEZADO DE DATOS

DETALLES DEL REPORTE

TOTALES Analizando el diseo para este tipo de reportes, vemos que estos deben contener un grupo de instrucciones que permitan escribir el encabezado, las cuales deben ser escritas una sola vez y al principio de la pagina, un cuerpo de instrucciones que permitan escribir las transacciones o movimientos de cada elemento, las cuales debern estar dentro de un ciclo repetitivo ya que el nmero de elementos a procesar puede ser uno o varios y un grupo de instrucciones que permitan escribir los totales calculados dentro del cuerpo de instruccin en el ciclo repetitivo, estudiemos ms a fondo este diseo mediante el siguiente ejemplo. Disee un algoritmo que permita emitir el siguiente reporte : COMPAA TELEFONICA BARCELONA FECHA RESUMEN DE PAGO
J. L. Parra

Cdula

Nombre

NRO. Telfono

Impulsos utilizados

Monto a pagar

TOTAL CLIENTE = XXX TOTAL PAGO = YYYY Teniendo como entrada los siguientes datos: Nmero de telfono, nmero de Cdula, nombre del cliente, nmero de impulsos mensuales; el monto de pago por cliente se calcular mediante las siguientes condiciones: los primeros 100 impulsos tendrn un costo de 500 bolvares, los impulsos adicionales sern calculados a razn de seis bolvares por impulso. Analizando este problema notamos que se puede emitir el reporte de resumen de pago, el cual est compuesto por un grupo de lneas que conforman el siguiente encabezado: COMPAA TELEFONICA BARCELONA FECHA RESUMEN DE PAGO Cdula Nombre NRO.telefnico Impulsos utilizados Monto a pagar

Los cuales deben ser impresos al comienzo de la pagina y una sola vez, por lo que las instrucciones en el algoritmo que emitan este encabezado deben estar antes de comenzar el ciclo repetitivo que calcular el pago por cliente. Un grupo de instrucciones para calcular el pago por cada cliente el cual deber realizarse de la siguiente manera; si la persona no sobrepasa el total de impulsos asignados mensualmente, cancelar la tarifa bsica ms el monto por impulsos adicionales. Este clculo se efectuar de acuerdo a la siguiente formula: Impulso-adicional= Impulsos-mensuales - Impulsos-bsicos Monto-adicional= Impulso-adicional * Monto-impulso-adicional Este grupo de instrucciones de calculo de pago por cliente deber estar dentro de una estructura repetitiva ya que el proceso deber poder ejecutarse para uno o varios clientes y en este caso desconocemos la cantidad de clientes a procesar, por lo que utilizaremos un DATO RESPUESTA el cual tiene como finalidad detener la ejecucin del proceso cuando se introduzca en el valor N o continuarlo mientras se introduzca el valor S, para lo cual dentro del algoritmo debemos utilizar una variable donde se almacene el valor S o N. El dato respuesta permitir ejecutar las instrucciones necesarias para procesar los diferentes cliente que use el servicio de la compaa y cada vez que se ejecute este grupo de instrucciones se deber contar para al final saber cual es el total de cliente procesado, as como cada vez que calculemos los montos a pagar
J. L. Parra

por cliente debemos acumularlo para al final saber cual es el monto recaudado por la compaa. Una vez finalizada de ejecutar el grupo de instrucciones repetitivas se proceder a disear el conjunto de instrucciones que permitan escribir los totales de clientes procesados y de bolvares recaudados. Finalizado este anlisis procederemos a disear el algoritmo que permita emitir el reporte anterior. Un diseo podra ser el siguiente:

1. Inicio 2. Declarar NmeroTelfono Alfanumerico (7) 3. Declarar Cdula Alfanumerico (10) 4. Declarar Nombre Alfanumerico (30) 5. Declara ImpulsosMensuales Numerico (4) 6. Declarar ImpulsosAdicionales Numerico (4) 7. Declarar ImpulsosBsicos Numerico (3) 8. Declarar MontoImpulsoAdicional Numerico (2) 9. Declarar MontoAdicional Numerico (5) 10. Declarar MontoBsico Numerico (4) 11. Declarar ContadorCliente Numerico (2) 12. Declarar AcumuladorPago Numerico (7) 13. Declarar Fecha Alfanumerico (8) 14. Declarar MontoPago Numerico (5) 15. Declarar Respuesta Alfanumerico (1) 16. ImpulsosBsicos =100 17. MontoBsico = 300 18. MontoImpulsoAdicional = 4 19. Leer (Fecha) 20. Escribir (COMPAA TELEFONICA) 21. Escribir ( BARCELONA FECHA :,Fecha) 22. Escribir ( ) 23. Escribir ( ) 24. Escribir ( RESUMEN DE PAGO) 25. Escribir ( Cdula Nombre NRO. Telfono Impulso utilizado Monto a pagar) 26. ContadorCliente = 0 27. AcumuladorPago = 0 28. Escribir (Desea comenzar el proceso S/N) 29. Leer (Respuesta) 30. Repita mientras Respuesta = S 30.0 ImpulsosAdicionales= 0 30.1 MontoAdicional = 0 30.2 ContadorCliente = ContadorCliente + 1 30.3 Leer (NmeroTelefono, Cdula, Nombre, ImpulsosMensuales) J. L. Parra

30.4 SI ImpulsosMensuales > ImpulsosBsicos Entonces 30.4.1 ImpulsosAdicionales = ImpulsosMensuales ImpulsosBsicos 30.4.2 MontoAdicional = ImpulsosAdicionales * MontoImpulsoAdicional 30.4.3 Fin del SI 30.5 MontoPago = MontoBsico + MontoAdicional 30.6 AcumuladorPago = AcumuladorPago + MontoPago 30.7 Escribir (Cdula, ,Nombre, ,NRO. Telfono, ,ImpulsosMensuales, 30.8 saltar lnea 30.9 Escribir(Desea continuar el proceso S/N) 30.10 Leer (Respuesta) 30.11 Fin del Repita 31. Escribir ( TOTAL DE CLIENTE =, ContadorCliente) 32. Saltar Lnea 33. Escribir (TOTAL DE PAGOS =, AcumuladorPago) 34. FIN DEL ALGORITMO

,MontoPago)

Simulemos la corrida de este algoritmo con los siguientes datos de entrada: (775592, 8.334.556, Pedro Prez, 300) (744626, 8.644.208, Juan Daz, 70) 1. Se da inicio al algoritmo mediante la instruccin Inicio. 2. Las instrucciones 2 al 15 aportan los espacios de memoria para todas las variables y Constantes que sern utilizadas en el proceso. Una vez ejecutadas las instrucciones la memoria quedar representada de la siguiente forma : NumeroTelfono Nombre Cdula

ImpulsoMensuales ImpulsoBsico MontoAdicional AcumuladorPago MontoPago

ImpulsoAdicionales MontoImpulsoAdicional MontoBsico ContadorCliente

J. L. Parra

Fecha

Respuesta

3. Las instrucciones 16 al 18 inicializan las constantes en los valores Bsicos para realizar el clculo del monto a pagar por cliente. La representacin de las variables en memoria sera: NumeroTelfono Nombre Cdula

ImpulsoMensuales

ImpulsoAdicionales

ImpulsoBsico 1 0 0 MontoAdicional AcumuladorPago MontoPago Fecha

MontoImpulsoAdicional 4 MontoBsico 3 0 0

ContadorCliente

Respuesta

4.

Se obtiene la fecha del da mediante la instruccin NRO. 19. La representacin de las variables en memoria sera: Cdula

NumeroTelfono Nombre

J. L. Parra

ImpulsoMensuales ImpulsoBsico 1 0 0 MontoAdicional AcumuladorPago MontoPago Fecha 0 1

ImpulsoAdicionales MontoImpulsoAdicional 4 MontoBsico 3 0 0

ContadorCliente

Respuesta 1 1 1 9 9 8

5. Las instrucciones 20 al 25 permiten emitir el encabezado del reporte, es decir emitir la siguiente salida : COMPAA TELEFONICA BARCELONA FECHA 01-11-1998

RESUMEN DE PAGO Cdula Nombre NRO. telfono Impulsos utilizados Monto a pagar

6. Las Instrucciones 26 y 27 inicializan el contador de cliente y el acumulador de pago con el valor 0, la representacin de los datos en memoria hasta estos momentos es la siguiente : NumeroTelfono Nombre Cdula

ImpulsoMensuales

ImpulsoAdicionales
J. L. Parra

ImpulsoBsico 1 0 0 MontoAdicional AcumuladorPago

MontoImpulsoAdicional 4 MontoBsico 3 0 0 0

ContadorCliente 0

MontoPago Fecha 0 1 Respuesta 1 1 1 9 9 8

7. Las Instrucciones 28 y 29 permiten introducir el dato que determinar comenzar el proceso o no, lo cual depender de la respuesta que introduzca la persona que esta ejecutando el programa; en este caso como sabemos que existen dos grupos de datos a procesar introducimos el valor S en la variable Respuesta, los datos almacenados en memoria hasta estos momento estarn representado de la siguiente manera: NumeroTelfono Cdula Nombre

ImpulsoMensuales ImpulsoBsico 1 0 0 MontoAdicional AcumuladorPago

ImpulsoAdicionales MontoImpulsoAdicional 4 MontoBsico 3 0 0 0

ContadorCliente 0

MontoPago

J. L. Parra

Fecha 0 1

Respuesta S

8. La instruccin 30 permite la ejecucin o no del ciclo repetitivo, esto se hace mediante la evaluacin de la expresin Respuesta = S, para lo cual se busca en memoria el valor almacenado en la variable Respuesta en este caso S, luego se compara S=S, como el resultado de la evaluacin es verdadero se procede a ejecutar el grupo de instrucciones que conforman el ciclo repetitivo. 9. Las instrucciones 30.0 y 30.1 inicializan las variables ImpulsosAdicionales y MontoAdicional en 0 para que en el caso de que el cliente no sobrepase los impulsos bsicos asignados, el monto a pagar no se vea afectado con la suma del Monto-Adicional. La representacin de los datos en memoria es la siguente: Cdula

NumeroTelfono Nombre

ImpulsoMensuales ImpulsoBsico 1 0 0 MontoAdicional

ImpulsoAdicionales 0 MontoImpulsoAdicional 4 0 MontoBsico 3 0 0 0

AcumuladorPago MontoPago Fecha 0 1

ContadorCliente 0

Respuesta S

10. La instruccin 30.2 incrementa el contador de interacciones en 1 es decir realiza la operacin ContadorCliente = 0+1 y el resultado lo almacena en memoria, en el espacio identificado por ContadorCliente, la representacin de los datos en memoria hasta el momento es la siguiente :
J. L. Parra

NumeroTelfono Nombre

Cdula

ImpulsoMensuales ImpulsoBsico 1 0 0 MontoAdicional AcumuladorPago

ImpulsoAdicionales MontoImpulsoAdicional 4 MontoBsico 3 0 0 0

ContadorCliente 1

MontoPago

Fecha 0 1

Respuesta S

11. La instruccin 30.3 permite obtener los valores de entrada restantes y almacenarlos en los espacios guardados en memoria para cada uno de ellos, la representacin de los datos en memoria es la siguiente : NumeroTelfono 7 7 5 5 Nombre P e ImpulsoMensuales 3 0 0 ImpulsoBsico 1 0 0 d r o P E r e z Cdula 8 .

ImpulsoAdicionales

MontoImpulsoAdicional 4
J. L. Parra

MontoAdicional AcumuladorPago 0 MontoPago Fecha 0 1

MontoBsico 3 0

ContadorCliente 1

Respuesta S

12. La instruccin 30.4 permite evaluar si el cliente utiliz ms de los impulsos bsicos asignados en el mes, esto se hace mediante la comparacin 300>100 cuyo resultado es verdadero, por lo que se procede a ejecutar el grupo de instrucciones que siguen a la palabra entonces en la estructura alternativa. 13. La instruccin 30.4.1 permite calcular el nmero de impulsos adicionales consumidos por el cliente mediante la operacin ImpulsoAdicional = 300-100 = 200 cuyo resultado se almacena en memoria en el espacio identificado por ImpulsosAdicionales. La representacin en memoria hasta entonces es la siguiente : NumeroTelfono 7 7 5 5 Nombre P e ImpulsoMensuales 3 0 0 ImpulsoBsico 1 0 0 MontoAdicional AcumuladorPago 0 MontoPago
J. L. Parra

Cdula 8 . 3

P e

ImpulsoAdicionales 2 0 0

MontoImpulsoAdicional 4 MontoBsico 3 0 0

ContadorCliente 1

Fecha 0 1

Respuesta S

14. La instruccin 30.4.2 permite calcular el monto a pagar por los impulsos adicionales utilizados por el cliente mediante la operacin MontoAdicional = 200*4 = 800 cuyo resultado se almacena en memoria en el espacio identificado como MontoAdicional. La representacin en memoria es la siguiente : NumeroTelfono 7 7 5 5 Nombre P e ImpulsoMensuales 3 0 0 ImpulsoBsico 1 0 0 MontoAdicional 8 AcumuladorPago 0 MontoPago Fecha 0 1 Respuesta S d r o P E r e z Cdula 8 .

ImpulsoAdicionales 2 0 0

MontoImpulsoAdicional 4 0 0 MontoBsico 3 0 0

ContadorCliente 1

15. La instruccin 30.4.3 finaliza la estructura alternativa. 16. La instruccin 30.5 permite calcular el monto total a pagar por cliente mediante la operacin MontoPago = 300+800 = 1100 y el resultado se almacena en memoria en el espacio identificado por MontoPago. La representacin de los datos en memoria hasta los momentos es la siguiente : NumeroTelfono 7 7 5 5 Cdula 8 .

J. L. Parra

Nombre P e ImpulsoMensuales 3 0 0 ImpulsoBsico 1 0 0 MontoAdicional 8 AcumuladorPago 0 MontoPago 1 Fecha 0 1 1 1 0 1 0 1 9 9 8 Respuesta S d r o P e r e z

ImpulsoAdicionales 2 0 0

MontoImpulsoAdicional 4 0 0 MontoBsico 3 0 0

ContadorCliente 1

17. La instruccin 30.6 permite acumular la cantidad total de pago hasta este momento calculados, mediante la operacin AcumuladorPago = 0 +100 =1100 y el resultado se almacena en memoria en el espacio identificado por AcumuladorPago. La representacin de los datos es la siguiente : NumeroTelfono 7 7 5 5 Nombre P e ImpulsoMensuales 3 0 0 ImpulsoBsico 1 0 0 MontoAdicional 8 AcumuladorPago 1 1 0 0 Cdula 8 . o P e r

9 d r

3 e

3 z

ImpulsoAdicionales 2 0 0

MontoImpulsoAdicional 4 0 0 MontoBsico 3 0 0

ContadorCliente 1
J. L. Parra

MontoPago 1 Fecha 0 1

1 1

0 1

0 1 9 9 8 Respuesta S

18. La instruccin 30.7 permite emitir la lnea de salida resultante de los procesos de clculos anteriores por medio de buscar en memoria los valores almacenados en las variables indicada en esta instruccin e imprimirlo, es decir emitir la siguiente salida: 8.334.556 Pedro Prez 775592 300 1100

19. La instruccin 30.8 permite colocarse el dispositivo de impresin al comienzo de la siguiente lnea, para que la siguiente lnea de impresin no se emita a continuacin de la salida anterior. 20. Las instrucciones 30.9 y 30.10 permite obtener el dato que determinar la continuidad o no del ciclo repetitivo, estas instrucciones le indica al usuario si desean o no continuar el proceso, en este caso todava queda un grupo de datos a procesar por lo que se deber introducir en la variable respuesta el valor S. La representacin en memoria hasta los momentos es la siguiente : NumeroTelfono 7 7 5 5 Cdula 8 .

Nombre P e ImpulsoMensuales 3 0 0 ImpulsoBsico 1 0 0 MontoAdicional 8 AcumuladorPago d r o P e r e z

ImpulsoAdicionales 2 0 0

MontoImpulsoAdicional 4 0 0 MontoBsico 3 0 0

ContadorCliente
J. L. Parra

1 MontoPago 1 Fecha 0 1 1 1 0 1

1 0 1

Respuesta S

21. La instruccin 30.11 permite ir a evaluar nuevamente el ciclo repetitivo, es decir ir a la instruccin Nro. 30 22. Se evala nuevamente la continuacin o no del ciclo repetitivo mediante la instruccin Nro. 30, la cual realiza la siguiente comparacin S = S como el resultado de la comparacin es verdadero se ejecutan nuevamente las instrucciones que se encuentran dentro del ciclo repetitivo. 23. La instrucciones 30.0 y 30.1 permiten inicializar los espacios de memoria identificados como ImpulsoAdicionales y MontoAdicional con el valor 0, la representacin de los datos en memoria es la siguiente : NmeroTelfono 7 7 5 5 Nombre P e ImpulsoMensuales 3 0 0 ImpulsoBsico 1 0 0 MontoAdicional 0 AcumuladorPago 1 MontoPago 1 1 0 1 0 0 0 d r o P e r e z Cdula 8 .

ImpulsoAdicionales 0

MontoImpulsoAdicional 4 MontoBsico 3 0 0

ContadorCliente 1

J. L. Parra

Fecha 0 1

Respuesta S

24. La instruccin 30.2 permite incrementar el espacio de memoria identificado como Contador-cliente en uno, es decir realiza la operacin Contador-Cliente = 1+1=2. La representacin de los datos en memoria hasta los momentos es la siguiente : NmeroTelfono 7 7 5 5 Nombre P e ImpulsoMensuales 3 0 0 ImpulsoBsico 1 0 0 MontoAdicional 0 AcumuladorPago 1 MontoPago 1 Fecha 0 1 1 1 0 1 1 0 1 9 9 8 Respuesta S 0 0 d r o P e r e z Cdula 8 .

ImpulsoAdicionales 0

MontoImpulsoAdicional 4 MontoBsico 3 0 0

ContadorCliente 2

25. La instruccin 30.3 permite obtener los datos restantes del cliente, cuyo nmero de telfono es 744626 y guardarlo en memoria en los espacios para ella destinados, una vez ejecutada esta instruccin la representacin de los datos en memoria es la siguiente : NmeroTelfono 7 4 4 6 Nombre J u a n D a z
J. L. Parra

Cdula 8 .

ImpulsoMensuales 7 0 ImpulsoBsico 1 0 0 MontoAdicional 0 AcumuladorPago 1 MontoPago 1 Fecha 0 1 1 1 0 1 1 0 1

ImpulsoAdicionales 0

MontoImpulsoAdicional 4 MontoBsico 3 0 0 0 0

ContadorCliente 2

Respuesta S

26. En la instruccin 30.4 se evala si el cliente cuyo telfono es 744626 sobrepas la cantidad de impulsos asignada mensualmente, esto se hace mediante la comparacin 70>100, como el resultado es falso y no existe un grupo de instrucciones precedidas por la palabra de lo contrario, se ejecuta la instruccin nmero 30.4.3. 27. La instruccin 30.4.3 finaliza la instruccin alternativa. 28. La instruccin 30.5 permite calcular el monto total a cancelar por el cliente 744626 por medio de la operacin MontoPago = 300+0 = 300 y el resultado se almacena en el espacio identificado por MontoPago, la representacin de los datos en memoria es la siguiente : NmeroTelfono 7 4 4 6 Nombre J ImpulsoMensuales 7 0 ImpulsoBsico 1 0 0 u a n D a z Cdula 8 .

ImpulsoAdicionales 0

MontoImpulsoAdicional 4

J. L. Parra

MontoAdicional 0 AcumuladorPago 1 MontoPago 3 Fecha 0 1 1 0 1 0 1 9 1 0

MontoBsico 3 0 0

ContadorCliente 2

Respuesta S

29. La instruccin 30.6 permite acumular el monto de lo cancelado por servicio telefnico de los clientes hasta el momento procesados, a travs de la operacin siguiente : AcumumuladorPago = 1100+300 = 1400, el resultado se almacena en memoria en el espacio identificado por AcumuladorPago la representacin de los datos en memoria es la siguiente : NmeroTelfono 7 4 4 6 Nombre J ImpulsoMensuales 7 0 ImpulsoBsico 1 0 0 MontoAdicional 0 AcumuladorPago 1 MontoPago 3 Fecha 0 1 1 0 1 0 1 9 9 8 Respuesta S
J. L. Parra

Cdula 8 .

ImpulsoAdicionales 0

MontoImpulsoAdicional 4 MontoBsico 3 0 0 0 0

ContadorCliente 2

30. La instruccin 30.7 permite emitir como salida el resultado de las operaciones anteriores, por medio de buscar en memoria los datos indicados en esta instruccin, es decir emitir la siguiente salida : 8.644.208 Juan Daz 744626 70 300 31. La instruccin 30.8 permite al dispositivo de salida colocarse al principio de la siguiente lnea para su impresin. 32. Las instrucciones 30.9 y 30.10 permite obtener el dato que determinar la continuidad o no del ciclo repetitivo, estas instrucciones le indica al usuario si desean o no continuar el proceso, en este momento no existen ms datos que procesar por lo que se deber introducir en la variable respuesta el valor N. La representacin en memoria hasta los momentos es la siguiente : NmeroTelfono 7 4 4 6 Nombre J ImpulsoMensuales 7 0 ImpulsoBsico 1 0 0 MontoAdicional 0 AcumuladorPago 1 MontoPago 3 Fecha 0 1 1 0 1 0 1 9 9 8 Respuesta N 4 0 0 u a n D i a z Cdula 8 .

ImpulsoAdicionales 0

MontoImpulsoAdicional 4 MontoBsico 3 0 0

ContadorCliente 2

33. La instruccin 30.11 permite ir a evaluar nuevamente al ciclo repetitivo es decir permite ir a la instruccin Nro. 30.

J. L. Parra

34. Se evala nuevamente la continuidad o no del ciclo repetitivo, por medio de realizar la siguiente comparacin N = S, en este caso el resultado de la comparacin es falso, por lo que se termina el ciclo repetitivo y se procede a ejecutar la instruccin siguiente a la Nro. 30.11 es decir la Nro. 31. 35. Se emite la salida que indica el nmero de clientes procesados por medio de la instruccin Nro. 31, cuyo resultado es el siguiente : TOTAL DE CLIENTES = 2 36. Se coloca el dispositivo de impresin al comienzo de la siguiente lnea mediante la instruccin Nro. 32. 37. Se emite la salida que indica el monto total recaudado por concepto de pago de los clientes por medio de la instruccin Nro. 33. TOTAL DE PAGO = 1400 38. Se finaliza la ejecucin del algoritmo mediante la instruccin Nro. 34.

CUESTIONARIO. 1. Explique que sucedera en el diseo anterior si las instrucciones NRO.20-25 se colocaran dentro del ciclo repetitivo. 2. Explique que sucedera en el diseo anterior si las instrucciones NRO.31-33 se colocaran despus de las instrucciones 30.10 y antes de la instruccin 30.11.

6.3 RUPTURA DE CONTROL.

J. L. Parra

Muchas veces necesitamos disear algoritmos que permitan procesar todas las transacciones o movimientos de un elemento determinado, por ejemplo: Todos los alumnos que cursan una materia, todas las ventas realizadas por un vendedor en un mes, las compras realizadas por un cliente, etc. En estos casos notamos que es difcil conocer el nmero de movimientos o transacciones por cada elemento, por lo que debemos buscar una manera de controlar la ejecucin del ciclo repetitivo, que permita realizar el proceso para cualquier elemento especfico; es lgico pensar que la manera de controlar la continuidad o no del ciclo repetitivo es colocar como condicin que elemento = elemento, es decir que mientras el elemento sea el mismo contine el proceso repetitivo, sin embargo esta forma de disear la expresin lgica no esta bien formulada, ya que siempre se va a cumplir esa condicin y el ciclo repetitivo se ejecutara indefinidamente, por ejemplo, analicemos el siguiente grupo de instrucciones : Declarar Cdula alfanumrico (8) . . . Leer Cdula Repita mientras Cdula = Cdula . . . Leer Cdula Fin del Repita. La primera instruccin aparta espacio en memoria para la variable Cdula, la representacin en memoria es la siguiente: Cdula

La siguiente instruccin obtiene un valor y almacena en el espacio guardado para la variable Cdula, supongamos que obtenemos el valor 8508224, la memoria queda representada de la siguiente forma: Cdula 8

J. L. Parra

Luego se evala el ciclo repetitivo, es decir se realiza la comparacin 8.508.224 = 8.508.224, el resultado es verdadero por lo que se ejecutan las instrucciones dentro del ciclo repetitivo. La siguiente instruccin obtiene un valor para variable Cdula, supongamos que tienen el mismo valor 8508224 la representacin en memoria contina siendo la misma. Se efecta la evaluacin del ciclo repetitivo y por supuesto el resultado de esta es verdadero, por lo que se ejecutan nuevamente las instrucciones dentro del ciclo repetitivo. Se obtiene un nuevo valor para la variable Cdula y en este caso leemos el valor 7782508, la representacin en memoria es la siguiente: Cdula 7

Se efecta la evaluacin del ciclo repetitivo por medio de la siguiente comparacin 7782508 = 7782508 la cual arroja un resultado verdadero, por lo cual se contina con el ciclo repetitivo, sin embargo, para este momento ya hemos terminado de procesar las transacciones del elemento 8508224 y no hemos arrojado el resultado del procedimiento de las transacciones del elemento 8508224, debido a que el ciclo repetitivo no se detuvo. Observando esto concluimos que debemos buscar una forma de procesar las transacciones de un elemento mientras sea el mismo, pero que permita romper el control del ciclo repetitivo, esta tcnica se conoce como ruptura de control, la cual consiste en asignar a una variable el valor del elemento que estamos procesando y colocar como expresin lgica en la estructura repetitiva la condicin Elemento = AuxiliarElemento. Analicemos esto con el siguiente grupo de instrucciones: Declarar Cdula alfanumrico (8) Declarar AuxiliarCdula alfanumrico (8) . . Leer (Cdula) AuxiliarCdula = Cdula Repita mientras AuxiliarCdula = Cdula . .
J. L. Parra

Leer Cdula Fin del Repita. Las dos primeras instrucciones permiten apartar espacios de memoria para las variables Cdula y AuxiliarCdula cuya representacin en memoria sera la siguiente: Cdula

AuxiliarCdula

La instruccin Leer (Cdula) , permite obtener un valor a ser colocado en el espacio en memoria identificado por Cdula, supongamos que leemos el valor 8508224, su representacin en memoria sera la siguiente : Cdula 8

AuxiliarCdula

La instruccin AuxiliarCdula=Cdula, permite asignar el espacio guardado en memoria para la variable AuxiliarCdula el mismo valor que en memoria contiene el espacio identificado por Cdula. La representacin sera la siguiente: Cdula 8

AuxiliarCdula 8 5

La instruccin Repita mientras AuxiliarCdula=Cdula , permite evaluar el ciclo repetitivo haciendo la comparacin 8508224 = 8508224 cuyo resultado es verdadero por lo que se ejecutan las instrucciones del ciclo repetitivo. Luego mediante la instruccin Leer (Cdula), se obtiene un valor a ser almacenado en el espacio en memoria identificado por Cdula, supongamos en este caso que leemos el mismo valor anterior es decir 8508224 la representacin en memoria es la misma.
J. L. Parra

La siguiente instruccin consiste en evaluar nuevamente el ciclo repetitivo y realiza la comparacin 8508224 = 8508224 la cual es verdadera por lo que se mete nuevamente en el ciclo repetitivo. Mediante la instruccin Leer (Cdula), se obtiene un nuevo valor a ser almacenado en el espacio de memoria identificado por Cdula, supongamos que obtenemos el valor 77825508, la representacin de los datos en memoria ser la siguiente: Cdula 7 7

AuxiliarCdula 8 5

A travs de la instruccin, Repita mientras AuxiliarCdula=Cdula, se evala la continuidad del ciclo repetitivo mediante la comparacin 77825508 = 8508224 cuyo resultado es falso, lo que finaliza la ejecucin del procedimiento de las transacciones del elemento 8508224, permitiendo de esta forma emitir los resultados de dicho procesamiento. Una vez explicado en que consiste la tcnica de ruptura de control, ahondaremos en ellas mediante la realizacin del siguiente algoritmo. Disear un algoritmo que permita calcular el monto de las ventas realizadas por todos los vendedores de una compaa y el pago de sus comisiones de acuerdo a las siguientes condiciones: si el monto total de la venta es mayor a 10.000.000 de bolvares la comisin ser de un 10 % del monto de la venta sino la comisin ser de un 8,5 del monto de la venta. Los datos de entrada sern los siguientes: cdigo del vendedor, nombre del vendedor, nombre del cliente, nmero de factura, monto de factura, fecha de venta. El algoritmo a disear debe emitir el siguiente reporte:

J. L. Parra

COMPAA

XXX FECHA: / /

BARCELONA

RESUMEN DE VENTA CODIGO DEL VENDEDOR = XXX NOMBRE DEL VENDEDOR = XXXXXX XXXXX NOMBRE DEL CLIENTE NRO. DE FACTURA . . . TOTAL VENTA = XXXX TOTAL COMISION = XXXX FECHA MONTO

CODIGO VENDEDOR = XYZ NOMBRE DEL VENDEDOR = YYYYY XXXXX NOMBRE DEL CLIENTE NRO. DE FACTURA . . . TOTAL VENTA = XYXY TOTAL COMISION = XY FECHA MONTO

Analizando el reporte deseado notamos que debemos calcular la venta y comisiones a todos los vendedores de la empresa, razn por la cual debemos utilizar una estructura repetitiva para este proceso, sin embargo, no conocemos cuantos vendedores existen en la compaa, por lo que debemos controlar el ciclo repetitivo mediante un dato centinela, luego para cada vendedor debemos procesar las ventas realizadas e
J. L. Parra

imprimirlas, as como acumular sus ventas, para esto debemos construir otra estructura repetitiva dentro de la anterior que permita realizar este procesamiento de transaccin para cada vendedor y debemos procesar mientras sea el mismo vendedor para que al finalizar dicho proceso por vendedor podamos emitir el resultado del clculo de sus ventas y calcular sus comisiones. El diseo de este algoritmo sera el siguiente:

1. Inicio 2. Declarar CodVendedor alfanumerico (4) 3. Declarar AuxVendedor alfanumerico (4) 4. Declarar NomVendedor alfanumerico (30) 5. Declarar NomCliente alfanumerico (30) 6. Declarar Factura alfanumerico (5) 7. Declarar FechaVenta alfanumerico (7) 8. Declarar Fecha alfanumerico (7) 9. Declarar MontoVenta numerico (5) 10. Declarar AcumuladorVenta numerico (8) 11. Declarar Comisin numerico (5) 12. Leer (Fecha) 13. Escribir (COMPAA XXX) 14. Escribir ( BARCELONA) 15. Escribir ( ) 16. Escribir ( ) 17. Escribir ( RESUMEN DE VENTA) 18. Leer (CodVendedor) 19. Repita mientras CodVendedor <> 000 19.1 Escribir (CODIGO DEL VENDEDOR = , CodVendedor) 19.2 Leer (NomVendedor) 19.3 Escribir (NOMBRE DEL VENDEDOR = , NumVendedor) 19.4 Escribir ( NOMBRE DEL CLIENTE NRO. FACTURA FECHA MONTO) 19.5 AcumuladorVenta = 0 19.6 Comisin = 0 19.7 AuxVendedor = CodVendedor 19.8 Repita mientras AuxVendedor = Codvendedor 19.8.1 Leer ( NomCliente, Factura, FechaVenta, MontoVenta) 19.8.2 AcumuladorVenta = AcumuladorVenta + MontoVenta 19.8.3 Escribir (NomCliente, , Factura, , Fecha, , Monto) 19.8.4 Leer (CodVendedor) 19.8.5 Fin del Repita 19.9 Escribir (TOTAL VENTA = , AcumuladorVenta) 19.10Si AcumuladorVenta 10.000.000 J. L. Parra

19.10.1

19.10.2 19.10.3 Fin del Si 19.11 Escribir (Total comisiones = , Comisin) 19.12 Fin del Repita 19.13 Fin del Algoritmo

Entonces Comisin = AcumuladorVenta * 0,10 De lo contrario Comisin = AcumuladorVenta * 0,085

Si simulamos la corrida de este algoritmo con los siguientes grupos de datos de entrada: (8508, PEDRO PEREZ, JUAN ROJAS, 854, 02-10-1998, 10.000) (8508, PEDRO PEREZ, MARIO PEREZ, 855, 03-10-1998, 20.000) (8224, JUAN LOPEZ, JOSE PARRA, 950, 02-10-1998, 10.000) (000) 1. La instruccin 1 indica el comienzo del proceso. 2. La instruccin 2 al 11 permiten apartar los espacios en memoria para las variables que intervendrn en el proceso. La representacin de estos espacios de memoria una vez ejecutadas estas instrucciones es: CodVendedor NomVendedor AuxVendedor AcumuladorVenta

NomCliente

Factura MontoVenta Comisin

FechaVenta Fecha

J. L. Parra

3. La instruccin NRO.12 permite obtener la fecha del da y guardarla en el espacio de memoria identificado por Fecha, la representacin de los datos hasta este momento en memoria es la siguiente: CodVendedor NomVendedor AuxVendedor AcumuladorVenta

NomCliente

Factura MontoVenta Comisin

FechaVenta Fecha 0 1

4. Las instrucciones 13 al 17 permiten emitir el siguiente encabezado: COMPAA XXX BARCELONA RESUMEN DE VENTA 5. La instruccin NRO.18 permite obtener un valor a ser almacenado en memoria en el espacio identificado por CodVendedor, en este caso obtenemos el valor 8508, la representacin de los datos en memoria hasta los momentos es: CodVendedor 8 5 0 8 NomVendedor AuxVendedor AcumuladorVenta FECHA: 01-11-1998

J. L. Parra

NomCliente

Factura MontoVenta Comisin

FechaVenta Fecha 0 1

6. La instruccin NRO.19 permite evaluar el ciclo repetitivo para comenzar el proceso de clculo de venta por vendedor, a travs de la comparacin 8508<>000 cuyo resultado es verdadero, por lo que se procede a ejecutar el grupo de instrucciones dentro del ciclo repetitivo. 7. La instruccin NRO.19.1 emite la salida siguiente: CODIGO DE VENDEDOR = 8508 8. La instruccin 19.2 obtiene un valor a ser almacenado en el espacio de memoria identificado por NomVendedor, en este caso se obtiene el valor PEDRO PEREZ, la representacin de los datos en memoria hasta el momento es: CodVendedor 8 5 0 8 NomVendedor P E D R O NomCliente P E R E Z AuxVendedor AcumuladorVenta

Factura MontoVenta

FechaVenta Fecha 1

8
J. L. Parra

Comisin

9. La instruccin 19.3 emite la salida siguiente: NOMBRE DEL VENDEDOR= PEDRO PEREZ 10. La instruccin 19.4 emite como salida el siguiente sub-encabezado: NOMBRE DEL CLIENTE NRO. FACTURA FECHA MONTO 11. Las instrucciones 19.5 y 19.6 inicializa con el valor cero los espacios de memoria identificados por AcumuladorVenta y comisin, la representacin de los datos en memoria hasta estos momentos es: CodVendedor 8 5 0 8 NomVendedor P E D R O NomCliente P E R E Z AuxVendedor AcumuladorVenta 0

Factura MontoVenta Comisin 0

FechaVenta Fecha 0 1

12. La instruccin 19.7 permite preparar la ruptura de control mediante la colocacin en el espacio de memoria identificado por AuxVendedor el valor que en memoria tiene asignado el espacio identificado por CodVendedor. La representacin de los datos en memoria es: CodVendedor AuxVendedor AcumuladorVenta
J. L. Parra

NomVendedor P E D R O NomCliente P E R E Z

Factura MontoVenta Comisin 0

FechaVenta Fecha 0 1

13. La instruccin 19.8 permite evaluar el ciclo repetitivo, en este caso evala la ruptura de control mediante la comparacin 8508=8508, cuyo resultado es verdadero por lo que se procede a ejecutar el grupo de instrucciones dentro del ciclo repetitivo. 14. La instruccin 19.8.1 obtiene los valores restantes de una transaccin realizada por el vendedor 8508 en este caso los valores, JUAN ROJAS, 854, 02-10-98 y 10.000 las cuales sern almacenadas en los espacios de memoria identificada como NomCliente, Factura, Fecha, Monto, respectivamente. La representacin de los datos en memoria hasta estos momentos es: CodVendedor 8 5 0 8 NomVendedor P E D R O NomCliente J Factura 8 5 4 U A N R O J A S P E R E Z AuxVendedor 8 5 0 8 AcumuladorVenta 0

FechaVenta 0 2 1

J. L. Parra

MontoVenta 1 0 0 Comisin

0 0

Fecha 1

15. La instruccin 19.8.2 permite ir acumulando el total de venta realizada por el vendedor cdigo 8508 a travs de la operacin AcumuladorVenta = 0+10.000 = 10.000 cuyo resultado se almacena en el espacio de memoria identificado como AcumuladorVenta, la representacin de los datos hasta estos momentos almacenados en la memoria es la siguiente: CodVendedor 8 5 0 8 NomVendedor P E D R O NomCliente J Factura 8 MontoVenta 1 0 0 Comisin 0 16. La instruccin 19.8.3 busca los datos almacenados en memoria en los espacios identificados por NomCliente, Factura, Fecha, Monto y emite la siguiente salida: JUAN ROJAS 854 02-10-1998 10000 17. La instruccin 19.8.4 permite obtener un nuevo dato para la variable CodVendedor, ya que permite evaluar la ruptura de control, en este caso obtiene el valor 8508. La representacin en memoria para el espacio que ocupa la variable CodVendedor ser el mismo, ya que se proceder a realizar una nueva transaccin para este vendedor. 18. La instruccin 19.8.5 devuelve la ejecucin del programa hacia la instruccin 19.8.
J. L. Parra

AuxVendedor 8 5 0 8

AcumuladorVenta 1 0 0

P E R E Z

U A N

R O J

A S

5 0

4 0

FechaVenta 0 2 1 Fecha 0 1 1

0 1

1 1

9 9

9 9

8 8

19. La instruccin 19.8 evala nuevamente el ciclo repetitivo por medio de evaluar la ruptura de control que compara la variable CodVendedor con la variable AuxVendedor, es decir, realiza la comparacin 8508 = 8508 cuyo resultado es verdadero, por lo que se ejecuta nuevamente el grupo de instrucciones dentro del ciclo repetitivo. 20. La instruccin 19.8.1 obtiene los valores restantes de la siguiente transaccin realizada por el vendedor 8508 en este caso obtiene los valores: MARIO PEREZ, 855, 03-10-1998, 20.000 los cuales se almacenaran en los espacios de memoria identificadas por NomCliente, Factura, Fecha, Monto respectivamente. La representacin de los datos en memoria en estos casos es:

CodVendedor 8 5 0 8 NomVendedor

AuxVendedor 8 5 0 8

AcumuladorVenta 1 0 0

P E D R O NomCliente M A R I Factura 8 MontoVenta 2 0 0 Comisin 0 5 0 5 0 O

P E R E Z

P E R E Z FechaVenta 0 3 1 0 Fecha 1 1

0 1

1 1

9 9

9 9

8 8

21. La instruccin 19.8.2 permite ir acumulando el total de venta realizado por el vendedor cdigo 8508 a travs de la operacin: AcumuladorVenta = 10.000+20.000 = 30.000, cuyo resultado se almacenar en el espacio de memoria identificado como AcumuladorVenta. La representacin de los datos hasta este momento almacenados en memoria es la siguiente:

J. L. Parra

CodVendedor 8 5 0 8 NomVendedor

AuxVendedor 8 5 0 8

AcumuladorVenta 3 0 0

P E D R O NomCliente M A R I Factura 8 MontoVenta 2 0 0 5 0 5 0 O

P E R E Z

P E R E Z FechaVenta 0 3 1 Fecha 0 1 1

0 1

1 1

9 9

9 9

8 8

Comisin 0 22. La instruccin 19.8.3 busca los datos almacenados en memoria en los espacios identificados por NumCliente, Factura, Fecha, Monto y emite la siguiente salida: MARIA PEREZ 855 03-10-1998 20000

23. La instruccin 19.8.4 permite obtener un nuevo dato para la variable CodVendedor que permita evaluar la ruptura de control, en este caso se obtiene el valor 8224. La representacin de los datos en memoria es la siguiente: CodVendedor 8 2 2 4 NomVendedor P E D R O NomCliente M A R I Factura O P E R E Z FechaVenta
J. L. Parra

AuxVendedor 8 5 0 8

AcumuladorVenta 3 0 0

P E R E Z

8 MontoVenta 2 0 0 Comisin

5 0

5 0 0

0 0

3 Fecha 1

1 1

0 1

1 1

9 9

9 9

8 8

24. La instruccin nmero 19.8.5 devuelve la ejecucin del programa hacia la instruccin NRO.19.8. 25. La instruccin 19.8 evala nuevamente el ciclo repetitivo por medio de evaluar la ruptura de control, la cual compara la variable CodVendedor con la variable AuxVendedor es decir realiza la comparacin 8508=8224 cuyo resultado es falso, debido a esto se procede a ejecutar el grupo de instrucciones siguientes a la instruccin NRO.19.8.5. 26. La instruccin 19.9 busca el valor en memoria que tiene la variable AcumuladorVenta y emite la siguiente salida: TOTAL VENTA = 30.000
27. La

instruccin 19.10 ejecuta una estructura alternativa para calcular el monto de las comisiones del vendedor 8508 para esto realiza la comparacin de si el acumulador de venta es mayor o igual a 10.000.000 es decir realiza la comparacin 30.000 10.000.000 lo cual es falso, por lo que se ejecuta el grupo de instrucciones siguientes a las palabra De lo contrario, es decir, ejecuta la instruccin NRO.19.10.2.

28. La instruccin 19.10.2 calcula el monto de las comisiones ganadas por el vendedor 8508 a travs de la siguiente operacin: Comisin = 30.000*0.085 = 2550, la cual se almacena en el espacio en memoria guardado para la variable Comisin. La representacin de los datos en memoria hasta los momentos es la siguiente: CodVendedor 8 2 2 4 NomVendedor P E D R O P E R E Z
J. L. Parra

AuxVendedor 8 5 0 8

AcumuladorVenta 3 0 0

NomCliente M A R I Factura 8 MontoVenta 2 0 0 Comisin 2 2 5 0 5 5 0 0 O P E R E Z FechaVenta 0 3 1 0 Fecha 1 1

0 1

1 1

9 9

9 9

8 8

29. La instruccin 19.10.3 finaliza la estructura alternativa. 30. La instruccin 19.11 busca en memoria el valor almacenado en el espacio identificado por comisin y emite la siguiente salida: TOTAL COMISION = 2550 31. La instruccin 19.12 devuelve la ejecucin del programa a la instruccin NRO.19. 32. Se evala nuevamente el ciclo que controla la existencia o no de vendedores, es decir, el que est controlado por el Dato Centinela, para ver si se procesa el monto de venta a un nuevo vendedor, en este caso se busca en memoria el valor almacenado en el espacio de memoria identificado por CodVendedor y se compara con el Dato Centinela, es decir se realiza la siguiente comparacin 8224<>000 cuyo resultado es verdadero, por lo que nuevamente se ejecutan las instrucciones dentro de este ciclo repetitivo. Para calcular el monto de venta y la comisin del vendedor NRO.8224. 33. La instruccin 19.1 busca en memoria el valor almacenado en la variable CodVendedor y emite la siguiente salida: CODIGO DE VENDEDOR = 8224 34. La instruccin 19.2 permite obtener el nombre del vendedor y almacenarlo en el espacio en memoria identificado como NomVendedor, en este caso se obtiene el valor JUAN LOPEZ . La representacin de los datos en memoria es la siguiente: CodVendedor AuxVendedor AcumuladorVenta
J. L. Parra

NomVendedor J NomCliente M A R I Factura 8 MontoVenta 2 0 0 Comisin 2 2 5 0 5 5 0 0 O P E R E Z FechaVenta 0 3 1 Fecha 0 1 1 U A N L O P E Z

0 1

1 1

9 9

9 9

8 8

35. La instruccin NRO.19.3 busca en memoria el valor almacenado en el espacio de memoria identificado por NomVendedor y emite la siguiente salida: NOMBRE DEL VENDEDOR = JUAN LOPEZ 36. La instruccin 19.4 emite como salida el siguiente subencabezado: NOMBRE DEL CLIENTE NRO.FACTURA FECHA MONTO

37. La instruccin 19.5 y 19.6 inicializan los espacios de memoria identificados como AcumuladorVenta y Comisin con el valor 0. La representacin de estos datos en memoria es la siguiente: CodVendedor 8 2 2 4 NomVendedor J NomCliente M A R I O P E R E Z
J. L. Parra

AuxVendedor 8 5 0 8

AcumuladorVenta 0

U A N

L O P E Z

Factura 8 MontoVenta 2 0 0 Comisin 0 5 0 5 0

FechaVenta 0 3 1 0 Fecha 1 1

0 1

1 1

9 9

9 9

8 8

38. La instruccin 19.7 prepara nuevamente la ejecucin de la ruptura de control, por medio de almacenar en el espacio en memoria identificado como AuxVendedor el valor que en memoria posee el espacio identificado por CodVendedor, es decir, asigna el valor 8224 en la variable AuxVendedor. La representacin de los datos en memoria es la siguiente: CodVendedor 8 2 2 4 NomVendedor J NomCliente M A R I Factura 8 MontoVenta 2 0 0 Comisin 0 39. La instruccin 19.8 evala la ejecucin del ciclo repetitivo a travs de una ruptura de control mediante la comparacin 8224 = 8224, cuyo resultado es verdadero, por lo que se procede a ejecutar el grupo de instrucciones dentro del ciclo repetitivo. 40. La instruccin 19.8.1 obtiene los valores restantes de la transaccin realizados por el vendedor 8224, en este caso obtiene los valores JOSE PARRA, 950, 02-10-1998, 10.000 los cuales se almacenaran en los espacios de memoria identificados por 5 0 5 0 O P E R E Z FechaVenta 0 3 1 Fecha 0 1 1 U A N L O P E Z AuxVendedor 8 2 2 4 AcumuladorVenta 0

0 1

1 1

9 9

9 9

8 8

J. L. Parra

NomCliente, Factura, Fecha, Monto respectivamente. La representacin de los datos en memoria hasta los momentos es la siguiente: CodVendedor 8 2 2 4 NomVendedor J NomCliente J Factura 9 MontoVenta 1 0 0 Comisin 0 41. La instruccin 19.8.2 permite ir acumulando el total de venta realizada por el vendedor cdigo 8224 a travs de la operacin AcumuladorVenta = 0 + 10.000, cuyo resultado se almacena en el espacio de memoria identificado como AcumuladorVenta. La representacin de los datos en memoria es la siguiente: CodVendedor 8 2 2 4 NomVendedor J NomCliente J Factura 9 5 0 O S E P A R R A FechaVenta 0 2 1 0 1 9 9 8 U A N L O P E Z AuxVendedor 8 2 2 4 AcumuladorVenta 1 0 0 5 0 0 0 O S E P A R R A FechaVenta 0 2 1 Fecha 0 1 1 0 1 1 1 9 9 9 9 8 8 U A N L O P E Z AuxVendedor 8 2 2 4 AcumuladorVenta 0

J. L. Parra

MontoVenta 1 0 0 Comisin

0 0

Fecha 1

42. La instruccin 19.8.3 busca los datos almacenados en memoria en los espacios identificados por NomCliente, Factura, Fecha, Monto y emite la siguiente salida: JOSE PARRA 950 02-10-1998 10000

43. La instruccin 19.8.4 permite obtener un nuevo dato para la variable CodVendedor que permite evaluar la ruptura de control, en este caso se obtiene el valor 000. La representacin de los datos en memoria es la siguiente: CodVendedor 0 0 0 NomVendedor J NomCliente J Factura 9 MontoVenta 1 0 0 Comisin 0 44. La instruccin 19.8.5 devuelve la ejecucin del programa hacia la instruccin NRO.19.8. 45. La instruccin 19.8 evala nuevamente el ciclo repetitivo, para lo cual busca en memoria los datos almacenados en los espacios CodVendedor y AuxVendedor, realizando luego la comparacin de la ruptura de control, es decir, 8224 = 000, lo cual resulta falso, por lo que se procede a ejecutar la instruccin NRO.19.9. 5 0 0 0 O S E P A R R A FechaVenta 0 2 1 Fecha 0 1 1 0 1 1 1 9 9 9 9 8 8 U A N L O P E Z AuxVendedor 8 2 2 4 AcumuladorVenta 1 0 0

J. L. Parra

46. La instruccin NRO.19.9 busca el valor en memoria que tiene la variable AcumuladorVenta y emite la siguiente salida: TOTAL VENTA = 10.000 47. La instruccin 19.10 ejecuta una estructura alternativa para evaluar el monto de la comisin del vendedor 8224, para esto realiza la comparacin de si el acumulado de venta es mayor o igual a 10.000.000, es decir, realiza la comparacin siguiente: 10.000 10.000.000 lo cual resulta falso, por lo que se ejecuta el grupo de instrucciones siguientes a la palabra De lo contrario, es decir ejecuta la instruccin NRO.19.10.2. 48. La instruccin 19.10.2 calcula el monto de las comisiones guardadas por el vendedor 8224 a travs de la siguiente operacin: Comisin = 10.000 * 0,085 = 850, lo cual se almacena en el espacio de memoria Guardado para la variable Comisin. La representacin de las variables en memoria es la siguiente: 49. La instruccin 19.10.3 finaliza la ejecucin de la estructura alternativa. 50. La instruccin 19.11 busca en memoria el valor almacenado en el espacio identificado por Comisin y emite la siguiente salida: TOTAL COMISION = 850 51. La instruccin 19.12 devuelve la ejecucin del programa a la instruccin NRO.19. 52. Se evala nuevamente el ciclo que controla la existencia o no del vendedor, es decir, el que est controlado por el dato centinela para ver si se procesa el monto de venta a un nuevo vendedor, en este caso se busca en memoria el valor almacenado en el espacio de memoria identificado por CodVendedor y se compara con el dato centinela, es decir se realiza la siguiente comparacin : 000 <> 000, cuyo resultado es falso, por lo cual se procede a finalizar este ciclo repetitivo y se ejecutan las instrucciones siguientes a la instruccin 19.12, es decir la instruccin 19.13. 53. La instruccin 19.13 finaliza la ejecucin del algoritmo.

CUESTIONARIO.
J. L. Parra

1. Explica que sucedera si las instrucciones 19.9 al 19.11 estuviesen ubicadas despus de la instruccin 19.8.4 y antes de la instruccin 19.8.5.

J. L. Parra

CAPITULO 7
MATRICES O ARREGLOS En los captulos anteriores, para la resolucin de problemas mediante algoritmos trabajamos con estructuras de almacenamiento que representaban datos elementales, por ejemplo podemos mencionar las siguientes estructuras: Cdula, Nombre, Sumando1; los cuales podan contener datos como 8.224.556, Pedro Prez, 100, respectivamente. Estos datos no guardan relacin entre si dentro de un mismo soporte, es decir no necesariamente el nmero de cdula 8.224.556 corresponde al seor Pedro Prez. Otro aspecto importante de la forma como hemos manejado los datos, es el hecho que en la memoria principal cuando se trabaja con datos de varios elementos de informacin como por ejemplo los datos de ventas de los vendedores para el clculo de las comisiones de ventas, los datos del vendedor anterior a que se est procesando no estn cargado en la memoria, por lo que si hay un error en el proceso se debe cargar nuevamente los mismo. Ests dos caractersticas importantes que dificultan los procesos informticos se solucionan con la utilizacin de las ESTRUCTURAS DE DATOS

7.1 . ESTRUCTURA DE DATOS. Es una coleccin de datos organizados de un modo particular, en los cuales los diferentes elementos de un grupo se encuentran relacionados entre si. Las estructuras de datos se clasifican en dos tipos: ESTATICAS Y DINAMICAS.

ESTRUCTURA DE DATOS ESTATICAS: Son aquellos en los que se asigna una cantidad fija de memoria cuando se declara el identificador, entre estos podemos mencionar: Registros, Pilas, Colas, Matrices. ESTRUCTURA DE DATOS DINAMICAS: Son aquellas cuya ocupacin en memoria puede aumentar o disminuir en el tiempo de ejecucin, entre estos encontramos: Listas, Archivos.

Una de las principales decisin que debe tomar un programador al momento de disear un programa es elegir la estructura y almacenamiento de la informacin, lo cual determinar la eficacia del algoritmo. Una mala seleccin de la estructura de almacenaje puede resultar costosa en cuanto al espacio de memoria utilizado as como en el tiempo de respuesta. En este capitulo solo se estudiar dos de las estructuras bsicas de programacin como son los arreglos y matrices.

J. L. Parra 1

7.2 .

ARREGLOS O MATRICES.

Es una estructura de dato esttica, que consiste en una secuencia de elementos de un mismo tipo, donde cada elemento dentro de la matriz ser accesado mediante un conjunto ordenado de entero denominado ndice.

7.2.1. CARACTERISTICA DE LOS ARREGLOS. 1. Los datos que los conforman al momento de ser procesado sern almacenados en posiciones continuas de memoria. 2. Todos los elementos dentro del arreglo sern identificado por el nombre del arreglo y se diferenciaran unos de otros a travs del ndice. 3. El acceso a los datos almacenados dentro del arreglo se puede realizar de manera secuencial y directa.

7.2.2. TIPOS DE ARREGLOS. Los arreglos se clasifican en vectores o arreglos unidimensionales y matrices o arreglos multidimensionales.

Vectores: Es un conjunto ordenado de elementos que contienen un nmero fijo de ellos, los cuales deben ser del mismo tipo (reales, enteros, caracteres).

La longitud de un vector ser determinada por el nmero total de elementos que contiene cada elemento de un vector, se representa por el nombre del vector y un ndice. Ejemplo de vector: Supongamos que deseamos realizar un proceso de conteo de votos para unas elecciones regionales en la que compiten 5 candidatos. El proceso consiste en sacar una tarjeta de votacin de la urna y asignarla al candidato marcado en la misma. Como podemos notar, en este caso conocemos el nmero de candidatos que estn participando en las elecciones, esto determinar la cantidad de espacio de memoria a reservar, en este caso 5 espacios de memoria continua, adems, a cada candidato lo podemos identificar por un nmero, es decir el candidato 1, el candidato 2, el candidato 3, ... el candidato 5, por lo que estn dadas las condiciones para utilizar un vector con la finalidad de realizar el proceso de conteo de las elecciones. Para este problema, llamaremos al vector VOTOS, suponiendo que al terminar de procesar los votos para cada candidato se obtienen los siguientes resultados:
J. L. Parra 2

(1000, 500, 2500, 100, 2998) Podemos representar este vector de la siguiente manera: VOTOS 100 0 0 50 0 250 0 10 2998

VOTOS [2] VOTOS[1]

VOTOS[4] VOTOS[3] VOTOS[5]

Donde toda la estructura de almacenamiento se conoce con el nombre de VOTOS y un valor dentro de la estructura se obtendr a travs del nombre de la estructura y el ndice correspondiente. Por ejemplo si deseamos conocer cuantos votos obtuvo el candidato NRO.3 accesamos el elemento VOTO [3], cuyo contenido es igual a 2500.

7.3. DISEO DE ALGORITMO PARA LA MANIPULACION DE VECTORES. Supongamos que una vez conocidos los datos almacenados en el vector VOTOS, deseamos emitir un pequeo reporte que permita dar a conocer el resultado de las elecciones. En este caso nuestro objetivo es, accesar la posicin del vector e imprimir su contenido tantas veces como posiciones tenga el vector, por lo que para disear el algoritmo debemos utilizar una estructura repetitiva ideal para la manipulacin de arreglos, esta estructura es la siguiente: Haga desde variable = nmero-inicial Hasta variable nmero-final accin 1 accin 2 . . . accin n Fin del Haga Debido a que siempre vamos a conocer el nmero en el cual se inicializa el ndice del vector y el nmero final del ndice.

J. L. Parra 3

Una vez conocido el objetivo para el diseo de este algoritmo y la estructura repetitiva ideal para el manejo de arreglos, podemos disear el algoritmo de la siguiente manera: 1. 2. 3. 4. Inicio Declarar VOTOS[3] numerico (4) Declarar Candidato numerico (1) Haga desde candidato =1 Hasta 5 4.1 Escribir (EL CANDIDATO NUMERO : ,Candidato, OBTUVO, VOTOS[Candidato], VOTOS) 4.2 Fin del Haga. 5. Fin del algoritmo. Simulemos la corrida de este algoritmo: 1. La instruccin NRO.1 da inicio al proceso. 2. La instruccin NRO.2 aparta tres espacios de memoria, cada uno de cuatro posiciones, los cuales sern identificados con el nombre VOTOS, donde solamente se podrn almacenar datos de tipo numrico. Su representacin en memoria es la siguiente: 1 0 0 0 5 0 0 2 5 0 0

VOTOS 3. La instruccin NRO.3 aparta un espacio de memoria de una posicin, que ser identificado como candidato, en la cual solo se podr almacenar datos de tipo numrico, en este caso la variable candidato actuar como ndice para accesar las diferentes posiciones del vector VOTOS, la representacin de los espacios apartados en memoria hasta este momento es la siguiente: VOTOS 1 0 0 0
Candidato

5 0 0 2 5 0 0

4.

La estructura 4 da inicio al ciclo repetitivo, el cual funcionar de la siguiente forma, primero inicializa el espacio de memoria identificado por candidato con el valor 1 y efecta la comparacin siguiente: 1 3 cuyo resultado es verdadero por lo que
J. L. Parra 4

procede a ejecutar las instrucciones dentro del ciclo repetitivo. La representacin de los datos en memoria hasta este momento es la siguiente: VOTOS 1 0 0 0 Candidato 1 5. La instruccin 4.1 busca en memoria los valores almacenados en las variables candidato es este caso el valor 1 y VOTO [candidato] o VOTO [1] cuyo valor es 1000 y emite la siguiente salida: EL CANDIDATO NUMERO: 1 OBTUVO 1000 VOTOS

5 0 0 2 5 0 0

6. La instruccin 4.2 devuelve la ejecucin del programa a la instruccin 4.


7.

La instruccin 4 incrementa el valor de la variable candidato en 1, es decir, realiza la operacin 1+1 = 2 y evala la comparacin 2 3 cuyo resultado es verdadero, por lo que ejecuta la instruccin dentro del ciclo repetitivo. La representacin de los datos en memoria es la siguiente:

VOTOS 1 0 0 0 Candidato 2

5 0 0 2 5 0 0

8. La instruccin 4.1 busca en memoria los valores almacenados en los espacios identificados por candidato y VOTO [candidato], en este caso 2 y 500 respectivamente para emitir la siguiente salida: EL CANDIDATO NUMERO : 2 OBTUVO 500 VOTOS 9. La instruccin 4.2 devuelve la ejecucin del programa a la instruccin 4.
10.

La instruccin 4 incrementa el valor de la variable candidato en 1, es decir, realiza la operacin 2+1 = 3 y evala la comparacin 3 3 cuyo resultado es verdadero, luego procede a ejecutar las instrucciones dentro del ciclo repetitivo. La representacin de los datos en memoria es la siguiente:
J. L. Parra 5

VOTOS 1 0 0 0 Candidato 3

5 0 0 2 5 0 0

11. La instruccin 4.1 busca en memoria los valores almacenados en los espacios identificados por candidato y VOTO[candidato], en este caso 3 y 2500 respectivamente para emitir la siguiente salida. EL CANDIDATO NUMERO : 3 OBTUVO 2500 VOTOS 12. La instruccin 4.2 devuelve la ejecucin del programa a la instruccin NRO.4.
13.

La instruccin NRO.4 incrementa el valor de la variable candidato en 1, es decir, realiza la operacin 3+1 = 4 y efecta la comparacin 4 3 cuyo resultado es falso, por lo que se procede a ejecutar la instruccin siguiente a la instruccin 4.2, es decir en este caso la NRO.5.

14. La instruccin 5 finaliza el proceso.

CUESTIONARIO 1.

1.

Qu modificaciones realizara ud. en el pseudocdigo anterior para procesar 20 candidatos?.

2. Realice un algoritmo para realizar el proceso de emitir los resultados de las elecciones utilizando la estructura repetitiva. Repita mientras < condicin > accin accin Fin del repita

J. L. Parra 6

Para el diseo anterior, supusimos que los datos ya estaban almacenados en al arreglo, sin embargo, el proceso lgico es almacenar primeramente los datos en el arreglo y luego procesarlo. A continuacin diseamos un algoritmo que permita almacenar los siguientes datos en un arreglo unidimencional denominado VOTO (100, 500, 2500). El objetivo de este algoritmo es obtener el dato y almacenarlo en la posicin correspondiente en el arreglo. Esto se debe hacer tantas veces como datos se vallan a almacenar. Un diseo para este proceso podra ser: 1. Inicio. 2. Declarar VOTOS [3] numerico (4) 3. Declarar Posicin numerico (1) 4. Haga desde Posicin = 1 Hasta 3 4.1 Leer (VOTOS [Posicin ]) 4.2 Fin del Haga 5. Fin del algoritmo. Simularemos la corrida de este algoritmo. 1. La instruccin NRO.1 da inicio al proceso. 2. La instruccin NRO.2 aparta tres espacios de memoria, cada uno de cuatro posiciones, los cuales sern identificados con el nombre VOTO, donde solamente se podr almacenar datos de tipo numricos. Su representacin en memoria es la siguiente: VOTOS

3.

La instruccin NRO.3 aparta un espacio de memoria de una posicin que ser identificado como Posicin, en la cual slo se podr almacenar datos de tipo numrico, en este caso la variable Posicin actuar como ndice para acceder las diferentes posiciones del vector VOTO. La representacin de los espacios apartados en memoria hasta este momento es la siguiente: VOTOS

Posicin

J. L. Parra 7

4.

La instruccin NRO.4 da inicio al ciclo repetitivo, el cual funcionar de la siguiente manera, primero inicializa el espacio de memoria identificado por Posicin con el valor 1 y efecta la comparacin siguiente: 1 3 cuyo resultado es verdadero por lo que procede a ejecutar las instrucciones dentro del ciclo repetitivo. La representacin de los datos en memoria hasta este momento es: VOTOS

Posicin 1 5. La instruccin 4.1 obtiene el valor (en este caso 100) a ser almacenado en el vector VOTO en la posicin indicada por el valor contenido en memoria en el espacio identificado por Posicin cuyo valor es 1. La representacin de los datos en memoria es la siguiente: VOTOS 1 0 0 Posicin 1

6. La instruccin NRO.4.2 devuelve la ejecucin del programa a la instruccin NRO.4.


7.

La instruccin NRO.4 incrementa el valor de la variable Posicin en 1, es decir realiza la operacin 1+1 = 2 y evala la comparacin 2 3 cuyo resultado es verdadero por lo que ejecuta las instrucciones dentro del ciclo repetitivo. La representacin de los datos en memoria es la siguiente: VOTOS 1 0 0

Posicin 2 8. La instruccin 4.1 obtiene un valor en este caso 500, el cual ser almacenado en memoria en el vector VOTO en la posicin indicada por el valor contenido en memoria en el espacio identificado por Posicin cuyo valor es 2, es decir incluir el
J. L. Parra 8

valor 500 en el arreglo VOTO en la posicin 2, la representacin de los datos en memoria hasta estos momentos es la siguiente: VOTOS 5 0 0

1 0 0 Posicin 2

9. La instruccin 4.2 devuelve la ejecucin del programa a la instruccin NRO.4.


10.

La instruccin 4 incrementa el valor de la variable posicin en 1, es decir realiza la operacin 2+1 = 3 y evala la comparacin 3 3 cuyo resultado es verdadero y procede a ejecutar las instrucciones dentro del ciclo repetitivo. La representacin de los datos en memoria es la siguiente : VOTOS 5 0 0

1 0 0 Posicin 3

11. La instruccin 4.1 obtiene un valor, en este caso 2500, el cual ser almacenado en memoria en el vector VOTO en la posicin indicada por el valor contenido en memoria en el espacio identificado por posicin cuyo valor es 3, es decir incluir el valor 2500 en el arreglo VOTO en la posicin 3. La representacin de los datos en memoria es la siguiente: VOTOS 5 0 0 2 5 0 0

1 0 0 Posicin 3

12. La instruccin 4.2 devuelve la ejecucin del programa a la instruccin NRO.4.


13.

La instruccin 4 incrementa el valor de la variable posicin en 1, esto quiere decir que realiza la operacin 3+1 = 4 y evala la comparacin 4 3 cuyo resultado es falso por lo que se procede a ejecutar la instruccin 4.2, es decir la instruccin NRO.5.
J. L. Parra 9

14. La instruccin NRO.5 finaliza la ejecucin del algoritmo.

CUESTIONARIO 2. 1. Realice un algoritmo que permita incluir datos en un vector de 5 posiciones y una vez incluidos los datos emitir un reporte que indique los valores almacenados en el vector. 2. Realice un algoritmo que permita determinar el mayor valor almacenado en un vector e identifique en que posicin se encuentra el valor mayor. 3. Realice un algoritmo que permita sumar los datos almacenados en un vector de n posicin e imprima el resultado de la suma. 4. Realice un algoritmo que permita calcular la media de los elementos almacenados en un vector de n posicin. 5. La compaa XXX posee un cuerpo de venta formado por 10 vendedores, estos estn identificados por los nmeros del 1 al 10. Disee un algoritmo que permita almacenar los montos de venta mensuales correspondientes a cada vendedor y una vez almacenado, permita determinar cual vendedor efecta la mayor venta en el mes, cual fue el promedio de venta en el mes y cual fue el promedio de venta de todos los vendedores de la compaa.

7.4.

ARREGLOS MULTIDIMENSIONALES. Son estructuras de datos estticas que almacenan elementos de un mismo tipo y los elementos contenidos se manipularn a travs de una posicin conformado por mas de un ndice, el nmero de ndices determinar la dimensin del arreglo.

Basaremos nuestro estudio en arreglos Bidimensionales.

7.5.

ARREGLOS BIDIMENSIONALES O MATRICES. Es un arreglo con dos ndices, es decir, para localizar o almacenar un valor dentro del arreglo se deben especificar dos posiciones, una para la fila y otra para la columna.

J. L. Parra 10

En los lenguajes de programacin las matrices se suelen denominar Tablas, en matemtica se representan con la notacin: Columna

Fila

a 11 a 21 an1

a12 a22 an2

... a1m a2m anm

Para indicar una matriz de n fila y m columna, supongamos que una vez realizado el conteo de votos en una eleccin donde participan tres candidatos, los cuales compiten en cuatro regiones distintas, se obtiene la siguiente matriz:

Regiones Candidatos 100 325 310 350 200 500 250 400 255 500 150 350 MATRIZ VOTOS

Si deseamos saber cuantos votos obtuvo el candidato NRO.2 en la regin 3, simplemente nos ubicamos en la posicin (2.3), es decir, fila 2 columna 3 y el valor lo representamos dentro de la variable VOTO [2.3] = 400 es decir que el candidato 2 en la regin 3 obtuvo 400 VOTOS . En general en la matriz VOTO podemos representar sus valores de la manera siguiente: VOTO [1.1] = 100 VOTO [1.2] = 350 VOTO [1.3] = 250 VOTO [1.4] = 500 VOTO [2.1] = 325 VOTO [2.2] = 200 VOTO [2.3] = 400 VOTO [2.4] = 150 VOTO [3.1] = 310 VOTO [3.2] = 500 VOTO [3.3] = 255 VOTO [3.4] = 350

J. L. Parra 11

7.6 DISEO DE ALGORITMOS PARA ARREGLOS BIDIMENSIONALES.

Disee un algoritmo que permita incluir en una matriz el resultado final del conteo de votos de unas elecciones en la cual participaron dos candidatos en tres regiones diferentes, la matriz resultado ser:

100 325

350 200

250 400

El objeto de este algoritmo es llenar una matriz con los valores correspondientes a cada posicin, estas posiciones estarn representadas por dos ndices, uno que indicar el nmero del candidato al cual se est procesando y el otro que indicar la regin. Es importante notar que en este proceso tenemos que ubicarnos en un candidato e incluir los votos de las cuatro diferentes regiones que representan, luego ubicarnos en el siguiente candidato e incluir los votos de las cuatro diferentes regiones, por lo que concluimos que necesitamos dos estructuras repetitivas, una dentro de la otra. Para realizar este proceso una de las estructuras se ubicar en el candidato y la otra en las diferentes regiones para ir incluyendo el dato (candidato, Regin). El diseo de este algoritmo es el siguiente: 1. Inicio 2. Declarar VOTO [3,4] numerico (3) 3. Declarar Candidato, Regin numerico (1) 4. Haga desde Candidato = 1 Hasta 3 4.1 Haga desde Regin = 1 Hasta 4 4.1.1 Leer (VOTO [Candidato, Regin]) 4.1.2 Fin Haga 4.2 Fin Haga 5 Fin del Algoritmo. Simulemos la ejecucin de este algoritmo: 1. La instruccin nmero 1 da inicio al proceso. 2. La instruccin nmero 2 aparta 6 espacios de memoria de 3 posiciones cada uno identificado como VOTO, donde slo se puede almacenar datos de tipo numrico, su representacin en memoria es la siguiente.

J. L. Parra 12

VOTOS

3. La instruccin nmero 3 aparta 2 espacios de memoria para las variables identificadas como Candidato y Regin, cada una de una posicin, donde slo se puede almacenar datos de tipo numrico, la representacin de la memoria en estos momentos es la siguiente: VOTOS

Candidato

Regin

4.

La instruccin nmero 4 inicializa el ciclo repetitivo para procesar los diferentes candidatos, para esto previamente inicializa el espacio de memoria identificado como Candidato con el valor 1 y luego realiza la siguiente comparacin 1 2, lo cual resulta verdadero por lo que procede a ejecutar las instrucciones dentro del ciclo repetitivo. La representacin en memoria para este momento es:

VOTOS

Candidato
1

Regin

5.

La instruccin 4.1 inicializa el ciclo repetitivo para procesar las diferentes regiones, para esto inicializa el espacio en memoria identificado como Regin con el valor 1, luego realiza la comparacin 1 3 cuyo resultado es verdadero por lo que se procede a ejecutar las instrucciones dentro de este segundo ciclo. Cabe indicar que para este momento ya tendremos en memoria la posicin candidato, en este caso los valores (1,1), por lo que ya podemos procesar los votos obtenidos por el candidato NRO.1 en la regin nmero 1. La representacin de estos datos en memoria hasta estos momentos es la siguiente:
J. L. Parra 13

VOTOS

Candidato
1

Regin 1

6. La instruccin 4.1.1 permite obtener un valor para ser almacenado en memoria identificado como VOTO [Candidato, Regin], en este caso VOTO[1.1] cuyo valor ser 100, el cual indica que el candidato NRO.1, en la regin nmero uno obtuvo 100 votos. La representacin de los datos en memoria para estos momentos es la siguiente: VOTOS 1 0

Candidato
1

Regin 1

7. La instruccin 4.1.2 devuelve la ejecucin del programa a la instruccin 4.1.


8.

La instruccin 4.1 incrementa el valor de la variable regin en 1, es decir, realiza la operacin 1+1 = 2 y efecta la comparacin 2 3 cuyo resultado es verdadero por lo que nuevamente se ejecutan las instrucciones dentro del ciclo repetitivo. La representacin de los datos en memoria es la siguiente:

VOTOS 1 0

Candidato
1

Regin 2

9. La instruccin 4.1.1 obtiene un valor para ser almacenado en el espacio identificado en memoria como VOTO [Candidato, Regin], en este caso VOTO[1,2], cuyo valor
J. L. Parra 14

ser 350 el cual indica que el candidato NRO.2 en la regin nmero 2 obtuvo 350 votos. La representacin en memoria es la siguiente: VOTOS 1 0

Candidato
1

Regin 2

10. La ejecucin 4.1.2 devuelve la ejecucin del programa a la instruccin 4.1.


11.

La instruccin 4.1 incrementa el valor de la variable regin en 1, es decir realiza la operacin 2+1 = 3 y efecta la comparacin 3 3 lo cual es verdadero por lo que nuevamente se ejecuta el grupo de instrucciones que estn contenidas dentro del segundo ciclo repetitivo. La representacin de los datos en memoria es la siguiente:

VOTOS 1 0

Candidato
1

Regin 3

12. La instruccin 4.1.1 obtiene un valor a ser almacenado en el espacio identificado en memoria como VOTO [Candidato, Regin], en este caso VOTO [1,3] cuyo valor ser 250. La representacin en memoria es la siguiente: VOTOS 1 0

Candidato
1

Regin 3

13. La instruccin 4.1.2 devuelve la ejecucin del programa a la instruccin 4.1.


J. L. Parra 15

14.

La instruccin 4.1 incrementa el valor de la variable Regin en 1, es decir, realiza la operacin 3+1=4 y efecta la comparacin 4 3 cuyo resultado es falso, por lo que se procede a ejecutar la instruccin siguiente o final de este ciclo repetitivo, la cual es la instruccin 4.2.

15. La instruccin 4.2 devuelve la ejecucin del programa a la instruccin NRO.4.


16.

La instruccin nmero 4 incrementa el valor de la variable Candidato en 1, es decir realiza la operacin 1+1= 2 y efecta la comparacin 2 2 cuyo resultado es verdadero y procede a ejecutar la instruccin dentro del ciclo repetitivo la cual controla los candidatos procesados, este ciclo repetitivo comienza la preparacin para el procesamiento de los votos del candidato NRO.2. La representacin de los datos en memoria es la siguiente:

VOTOS 1 0

Candidato
2

Regin 3

17.

La instruccin 4.1 inicializa el ciclo repetitivo para procesar las diferentes regiones, para esto inicializa el espacio de memoria identificado como Regin en el valor 1 y luego realiza la comparacin 1 3 cuyo resultado es verdadero, por esta razn procede a ejecutar las instrucciones dentro de este segundo ciclo, para as procesar los votos obtenidos por el candidato nmero 2 en la regin nmero 1. La representacin de los datos en memoria para este momento es la siguiente:

VOTOS 1 0

Candidato
2

Regin 1

18. La instruccin 4.1.1 permite obtener un valor para ser almacenado en el espacio de memoria identificado por VOTO [Candidato, Regin], en este caso VOTO [1,3] cuyo valor es 325, el cual indica que el Candidato nmero 2 en la Regin nmero 1 obtuvo 325 votos. La representacin de los datos para este momento es:
J. L. Parra 16

VOTOS 1 0 3 2 Candidato
2

0 5

Regin 1

19. La instruccin 4.1.2 devuelve la ejecucin del programa a la instruccin 4.1.


20.

La instruccin 4.1 incrementa el valor de la variable Regin en 1, es decir realiza la operacin 1+1 = 2 y efecta la comparacin 2 3 cuyo resultado es verdadero, por lo que nuevamente se ejecutan las instrucciones dentro del ciclo repetitivo. La representacin de los datos en memoria es la siguiente:

VOTOS 1 0 3 2 Candidato
2

0 5

Regin 2

21. La instruccin 4.1.1 obtiene un valor para ser almacenado en el espacio identificado en memoria como VOTO [Candidato, Regin], en este caso VOTO [2,2] cuyo valor ser 200, lo cual indica que el candidato nmero 2 en la regin 2 obtuvo 200 votos. La representacin en memoria es la siguiente: VOTOS 1 0 3 2 Candidato
2

0 5

3 2

5 0

0 0

Regin 2

22. La instruccin 4.1.2 devuelve la ejecucin del programa a la instruccin 4.1.


23.

La instruccin 4.1 incrementa el valor de la variable regin en 1, es decir realiza la operacin 2+1 =3 y efecta la comparacin 3 3 lo cual es verdadero, por lo que
J. L. Parra 17

nuevamente se ejecutan el grupo de instrucciones que estn contenidas dentro del segundo ciclo repetitivo. La representacin de los datos en memoria es la siguiente: VOTOS 1 0 3 2 Candidato
2

0 5

3 2

5 0

0 0

Regin 3

24. La instruccin 4.1.1 obtiene un valor a ser almacenado en el espacio identificado en memoria como VOTO [Candidato, Regin], en este caso VOTO [1,3] cuyo valor ser 400. La representacin de los datos en memoria hasta este momento es: VOTOS 1 0 3 2 Candidato
2

0 5

3 2

5 0

0 0

2 4

5 0

0 0

Regin 3

25. La instruccin 4.1.2 devuelve la ejecucin del programa a la instruccin NRO.4.1.


26.

La instruccin 4.1 incrementa el valor de la variable Regin en 1, es decir realiza la operacin 3+1= 4 y efecta la comparacin 4 3 cuyo resultado es falso, por lo que se procede a ejecutar las instrucciones siguientes al final de este ciclo repetitivo, es decir la instruccin 4.2.

27. La instruccin 4.2 devuelve la ejecucin del programa a la instruccin NRO.4.


28.

La instruccin NRO.4 incrementa el variable candidato en 1, es decir, realiza la operacin 2+1 = 3 y efecta la comparacin 3 2 cuyo resultado es falso, por lo que se procede a ejecutar la instruccin siguiente a la que finaliza este ciclo repetitivo, es decir la instruccin NRO.5.

29. La instruccin NRO.5 finaliza el proceso.

J. L. Parra 18

CUESTIONARIO 1. Dada la siguiente matriz:

100 500 600

200 200 100

300 400 200

500 500 250

1.1 Realice un algoritmo que permita obtener la suma de los valores de cada fila y con este resultado forme un vector que contenga los totales por fila. 1.2 Realice un algoritmo que permita imprimir el valor contenido en cada posicin de la matriz. 2. Dada una matriz de NxN posiciones, es decir, una matriz cuadrada: 2.1 Disee un algoritmo que permita sumar los valores de la diagonal principal. 2.2 Disee un algoritmo que permita imprimir los valores que se encuentran por encima de la diagonal principal. 2.3 Disee un algoritmo que permita obtener e imprimir la media de los valores que se encuentran por debajo de la diagonal principal.

J. L. Parra 19

BIBLIOGRAFIA
ANGULO J. M.. Electrnica Digital Moderna Teora y Prctica. Editorial Paraninfo 13 edicin, 1992 Madrid Pp 812. FRANCISCO JAVIER MUOZ LOPEZ. Estructura de la informacin. Editorial Paraninfo.1990. LUIS JOYANES AGUILAR. Metodologa de la programacin. Diagramas de flujos algoritmos y programacin estructurada. Editorial McGraw-Hill, 1995. MORRIS MANO M.. Lgica digital y diseo de computadores. Editorial PHH Prentice Hall, 1 edicin, 1982, Mxico Pp 634. RITERMAN SAUL.. Circuitos de computadoras. Editorial McGraw-Hill, 1 edicin, 1987, Mxico Pp 463. SANDERS H. DONALD. Informtica: Presente y Futuro. Editorial McGraw-Hill, 3 edicin, 1990, Mxico Pp 887. TOKHEIM ROGER L. Fundamento de los Microprocesadores. Editorial McGraw-Hill, 2 edicin, 1987, Mxico Pp 463. PETER NORTON. Introduccin a la Computacin. Editorial McGraw Hill. 1 edicin. Pp. 567

LARRY LONG. Introduccin a las Computadoras y al Procesamiento De Informacin. Editorial Prentince Hall. 4 edicin. Pp. 522. WWW.GRATISWEB.COM/atlasernesto/6.htm

WWWDI.UJAEN.ES/asignaturas/fundTopo/TEMA1.pdf

J. L. Parra 20

INDICE

J. L. Parra 21

A Acumuladores, 60 Inicializacin, 60 Asignacin, 61 Algoritmos, 12 Caractersticas, 13 Arreglos, 137 Arreglos Bidimensionales o Matrices, 145 Arreglos Multidimensionales, 145 C Caractersticas de los arreglos, 137 Computadora, 1 Clasificacin de las computadoras, 4 Componentes fsicos, 1 Memoria principal, 1 Memoria RAM, 2 Memoria ROM, 2 Memoria secundaria, 3 Cintas magnticas, 3 Discos magnticos, 4 CD-Rom, 4 Unidades de entrada, 1 Unidad central de proceso, 3 Unidad de control, 3 Unidad aritmtico-lgica, 3 Unidades de salida, 3 Constantes, 9 Contadores, 60 Inicializacin, 60 Asignacin, 60 D Datos, 7 Tipos de datos, 8 Dato centinela, 84 Dato respuesta, 98 Diseo de Reporte, 96 E Entrada de datos, 15 Estructura de datos, 136 Estructura de datos dinmicos, 136 Estructura de datos estticos, 136

Estructura General de los Pseudocdigo, 15 Estructura repetitiva Haga... Hasta, 77 Estructura repetitiva Repita... Hasta, 71 Estructura repetitiva Repita... Mientras, 61 Estructura selectiva o alternativa, 35 Estructura alternativa doble, 40 Estructura alternativa mltiple, 52 Estructura alternativa simple, 36 Expresiones, 10 Expresiones aritmticas, 10 Expresiones booleanas, 10 Expresiones literales, 10 F Fin, 16 I Identificacin de datos, 15 , Identificadores, 9 Informacin, 7 Inicio, 15 Iteracin, 59 L Lenguaje de programacin, 6 Lenguaje de alto nivel, 7 Lenguaje de bajo nivel, 6 Lenguaje maquina, 6 M Matrices o arreglos, 136-137 Memoria principal, 1 Memoria secundaria, 3

P
Procesamiento de datos, 7 Agrupacin, 7 Almacenamiento, 8 Captura, 7 Clasificacin, 7 Comunicacin, 8 Recuperacin, 8 Reproduccin, 8

J. L. Parra 22

J. L. Parra 23

You might also like