Está en la página 1de 345

UNIVERSIDAD TECNOLOGICA CENTROAMERICANA

UNITEC

METODOLOGIA DE LA PROGRAMACION

SEGUNDA EDICION REVISADA

Ing. Rosbinda Pacheco Banegas Lic. Alex R. Tbora Rivera ESCUELA DE CIENCIAS DE LA COMPUTACION Y TELECOMUNICACIONES 2007

Ttulo:

Metodologa de la Programacin segunda edicin, 2005. Revisin y reimpresin, 2007.

Autora: Ing. Rosbinda Pacheco Banegas. Autor de la primera edicin: Lic. Alex Tbora Rivera. Produccin de la Escuela de Ciencias de la Computacin y Telecomunicaciones. Revisin Tcnico-educativa: Lic. Alex Tbora Rivera. Ing. Julio Figueroa. Derechos Reservados: EDUNITEC. Asesora Tecno-Pedaggica. Lic. Martha I. Zepeda.

Diseo Grfico Alejandro Jos Lpez 005.1 P.116 Metodologa de la Programacin

Prohibida su reproduccin sin permiso expreso de UNITEC EDUNITEC, Tegucigalpa Honduras 2007

ii

SOBRE LOS AUTORES

a Universidad Tecnolgica Centroamericana presenta como un logro ms de la

produccin de su personal docente, la segunda edicin del texto Metodologa de la Programacin a cargo de la Ing. Rosbinda Pacheco Banegas, siendo la primera edicin del mismo de la autora del Lic. Alex R. Tbora Rivera (1991).

Rosbinda Pacheco Banegas.


La Ing Rosbinda Pacheco Banegas se gradu en la Universidad Nacional Autnoma de Honduras (UNAH) de la carrera de Ingeniera Qumica Industrial, y actualmente estudia la Licenciatura en Administracin Industrial y de Negocios en la Universidad Tecnolgica Centroamericana (UNITEC-Laureate Internacional Universities)

Por ms de 20 aos, la Ing. Pacheco ha sido Docente Titular en el rea de Programacin a nivel universitario, habindose iniciado en esta rea, como discpula del Lic. Alex Tbora R. reconocido estudioso investigador de la enseanza de la Programacin.

Labor como docente de Matemtica en la UNAH. Se desempeo como asistente del Gerente de Planta en la Cervecera Hondurea S. A. En su carrera como docente ha impartido clases en el rea Econo-Administrativa, coordinando Preclculo para Ciencias Econmicas, en el rea Fsico Matemtica imparti Algebra, Clculo y Programacin para Ingeniera. Particip en cursos y proyectos sobre informtica educativa, adems fue Coordinadora Administrativa del Centro de Cmputo del Departamento de Matemtica de la UNAH. Realiz estudios en la Licenciatura de Matemtica (UNAH), con orientacin en computacin, y en Informtica educativa en Murcia Espaa. Desde 1994 labora en la Universidad Tecnolgica Centroamericana (UNITEC), y actualmente es coordinadora del rea de Programacin I y II. Su vocacin como formadora, y dedicacin a enriquecer el acervo acadmico del libro con el que ya se contaba: Metodologa de la programacin, Primera edicin, la motiv a emprender este proyecto: Metodologa de la programacin, Segunda edicin, para

aprovechar todas su experiencia con la primera edicin y procesar toda la retroalimentacin obtenida todos estos aos.

La Ing. Pacheco no slo ha sobresalido por sus excelentes tcnicas pedaggicas, sino que tambin por el trato especial con los alumnos. Ella tambin ha entrenado a muchos de sus colegas para impartir clases de Programacin, ensendoles paso a paso y con paciencia las mejores tcnicas para poder transmitir y desarrollar de una forma eficaz el pensamiento lgico que el estudiante necesita para lograr el xito en la programacin de algoritmos

Alex Tbora Rivera


El Lic. Alex Tbora Rivera obtuvo su Bachillerato Universitario en Matemtica en la Universidad Nacional Autnoma de Honduras (UNAH) y su Maestra en Ciencias en Estadstica Matemtica en el Centro Interamericano de la Enseanza de la Estadstica (CIENES) en Chile.

El Lic. Tbora se ha desempeado como Programador y Analista de Sistemas Computacionales, desde 1974, en proyectos y oficinas tanto del sector privado como pblico.

Desde 1976, ha sido profesor de programacin y de cursos afines en distintas universidades del pas. Fue coordinador de la Seccin de Computacin de la Universidad Nacional Autnoma de Honduras, e introdujo la reforma de la enseanza de la programacin. Desde 1992 ha estado dictando cursos de programacin en UNITEC.

El Lic. Tbora siempre se ha distinguido por su creatividad y su deseo de innovacin en el rea de Programacin, y por iniciativa de l se dieron los primeros pasos, que ahora se plasman en esta segunda edicin.

Licda. Alejandra B. de Guardado.

ii

DEDICATORIAS De los autores:


Dedicamos este libro a la Lic. Norma Ponce de Snchez quin crey en este proyecto

De Ing. Rosbinda Pacheco Banegas:


A nuestro buen Dios, creador del universo y de quin proviene toda ciencia y conocimiento.

A mi amado esposo: Augusto Csar Antnez Ferrera. A mis tres hijos Aida Alejandra Augusto Csar Rosbinda Por su apoyo y comprensin en todo el tiempo dedicado a este proyecto. A mi padre () A mi madre

A mis familiares y amigos(as) A mis alumnos y ex-alumnos.

AGRADECIMIENTOS: A la Lic. Karla Ramrez y a la Ing. Jessy Ayestas Por su colaboracin en el diseo y conceptualizacin de varios ejemplos desarrollados.

EL PRINCIPIO DE LA SABIDURIA ES EL TEMOR DE JEHOVA

Indice General

Introduccin Captulo 1 1.1 1.2 Elementos de lgica Matemtica Proposiciones Operadores Lgicos y Tablas de Verdad La Negacin (no)

v 1 1 7 7 9 10 16 21 23 23 26 30 38 43 43 46 49 59 60 72 83

La Conjuncin (y) La Disyuncin (o) 1.3 1.4 Captulo 2 2.1 2.2 2.3 2.4 Captulo 3 3.1 3.2 3.3 3.4 Tautologas, Contradicciones y Equivalencias Notacin Booleana Concepto de Computador y almacenamiento Concepto de Von Neumann y de Programacin Concepto de almacenamiento y variable Concepto de Asignacin Condiciones y su Evaluacin Tcnica de Desglose Introduccin al Anlisis de un Programa Objeto del Programa Resumen del Anlisis de acuerdo al modelo Von Neumann Elementos en el Anlisis de un P.O.P. Desgloses y Pruebas de escritorio 3.4.1 3.4.2 3.4.3 Desgloses en Secuencia Desglose con instrucciones de Decisin Desglose con instrucciones de Repeticin i Parte I

3.5

Elementos en el Anlisisde un P.O.P. 3.5.1 Diagrama de Arbol de Decisiones

Parte II

98 98 104 116 119 119 121 126 126 131 136 144 149 151 151 153 162 167 179 179 181 181 183 188 202 202 203 208 213

3.5.2 Repeticin con Decisiones Anidadas 3.6 Captulo 4 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 Concepto de Algoritmo Fundamentos de Programacin Estructurada Concepto de Sistema Bloques estructurados atmicos e introduccin a la Notacin de Diagrama de Flujo Introduccin al Seudocdigo Nolae con los B.e.a Algoritmos seudocodificados con Concatenacin Algoritmos seudocodificados con Decisin Algoritmos seudocodificados con Repeticin Diagramas de Flujo con Algoritmos Estructurados Relacin entre Desgloses, Algoritmos, Diagramas Centinelas, Contadores Acumuladores 4.9.1 Centinelas 4.9.2 Contadores 4.9.3 4.9.4 Captulo 5 5.1 5.2 Acumuladores Repeticin controlada por contador

Estructuras Derivadas Asociatividad de la concatenacin Variantes y derivadas de la Decisin 5.2.1 La Decisin Abreviada 5.2.2 Las Decisiones anidadas y las decisiones Concatenadas 5.2.3 Bloque Caso

5.3

Variantes y derivadas de la Repeticin 5.3.1 Bloque Para 5.3.1.1 Aplicaciones con: Contadores y Acumuladores 5.3.1.2 Aplicaciones: Sucesiones 5.3.1.3 Aplicaciones: Series Finitas ii

5.3.2

Bloque repita-Hasta

221

Captulo 6 6.1 6.2 6.3 6.4

Subalgoritmos y Arreglos (elementos de estructura de datos) 229 Subalgoritmos Mens, una aplicacin de los Subalgoritmos Diagrama Jerrquico de procedimientos Arreglos Unidimensionados 6.4.1 Operaciones con Arreglos 6.4.2 Arreglos Paralelos 6.4.3 Arreglos y subalgoritmos 229 234 250 258 260 266 272

APENDICES A B C D E Ejercicios de las secciones: 2.2 a la 4.6 Ejercicios de las secciones Ejercicios de las secciones 4.7 a 5.2 5.2 a 6.3 279 289 299 305
307 315

Ejercicios de la seccin (arreglos) 6.4


Variantes en la resolucin de algunos ejemplos y Algunos ejercicios clsicos Prcticas de Auto-evaluacin, (lgica y tres parciales)

F G

Prctica de Laboratorio 01

Lenguaje de programacin ADA95 321 327 331

Listado de los ejemplos utilizados en los Captulos 3 al 6

BIBLIOGRAFIA

iii

EL CORAZON DEL ENTENDIDO ADQUIERE SABIDURIA; Y EL OIDO DE LOS SABIOS BUSCA LA CIENCIA

iv

INTRODUCCION
La primera computadora fue construida a mediados del siglo pasado, y a comienzos del siglo 21 el uso de la computadora se ha extendido prcticamente a todas las reas del quehacer humano. Cientficos y artistas, ingenieros y abogados, administradores y mdicos, por mencionar algunos, hacen uso directo e indirecto de las computadoras. La expansin del Internet a casi todos los rincones del planeta ha marcado un hito en la historia tecnolgica de la humanidad y ha permitido que millones se comuniquen diariamente gracias a la existencia de las computadoras personales. Ahora bien, para que la computadora pueda realizar una tarea es necesario que se le proporcionen instrucciones de antemano, a esto le llamamos programar la computadora. La interrogante comn de los estudiantes es Cmo comienzo a escribir un programa?. Este libro ha sido escrito para responder esa pregunta. Al abordar la tarea de producir un programa lo primero que se tiene que hacer es analizar el problema que la computadora va a resolver o la tarea que va a realizar, luego disear una estrategia de solucin para preparar un plan del programa. Todos estos pasos requieren nicamente del conocimiento de los conceptos bsicos de programacin y de la metodologa correspondiente que se aprender al estudiar este material. Por lo que cualquier estudiante con cierta experiencia en lgebra y con suficiente ejercitacin puede llegar a ser capaz de producir programas de dificultad media. No todas las carreras universitarias requieren profundizar en la programacin. Para estos estudiantes no es necesario llegar a ser un programador experto para aprovechar las ventajas que ofrece un computador. Sin embargo, el conocer los principios de programacin le permite a este futuro profesional universitario tener una visin ms completa del trabajo que se realiza con las computadoras, le permite poder comunicarse con los expertos y conocer el potencial y limitantes de la computadora como una herramienta de trabajo. Le enriquece, en fin, sus perspectivas para la acertada toma de decisiones en cuanto al rea de computacin se refiere. El contenido del libro y su desarrollo estn orientados para continuar con el aprendizaje de un lenguaje (PASCAL, ADA 95, etc.); sin embargo, dicho contenido es independiente de v

cualquier lenguaje de programacin. Ms aun, la presentacin del material permite que el estudiante adquiera los conocimientos y destrezas fundamentales para aprender a programar en cualquier lenguaje estructurado (y an no estructurado). As que, el objetivo primordial de este libro, es el de preparar al estudiante en una metodologa que le permita analizar un problema de programacin de computadoras, y desarrollar la lgica del programa como paso previo a la codificacin. El Captulo 1 presenta nicamente aquellos conceptos y terminologas elementales de la lgica matemtica requeridas en los captulos siguientes. En el Captulo 2 se desarrollan los conceptos bsicos de computador, almacenamiento y variables, con nfasis en la asignacin. El tema de la tcnica de desglose se trata en el Captulo 3. En la PARTE I de ste, se comienza con una introduccin al anlisis de problemas, como un paso previo para preparar un plan del programa que contribuir a resolver el problema propuesto y se presentan adems las estructuras bsicas de la programacin. En la PARTE II se introduce el uso de Arboles de decisin como una valiosa herramienta de ayuda. En los Captulos 4 y 5 se presentan los fundamentos de la programacin estructurado por medio de los diagramas de flujo y el seudocdigo NOLAE. En el desarrollo de estos temas importantes, se acenta el aspecto conceptual sin descuidar la aplicacin prctica. Se presentan adems variantes de la decisin y de la repeticin que permiten enriquecer las maneras de abordar y resolver problemas de mediana dificultad. Los subalgoritmos son tratados en el Captulo 6, se usan los mens como ejemplo de su aplicacin. Tambin se incluye el inicio del estudio de los arreglos con las operaciones de los arreglos manejadas por subalgoritmos.

Los Apndices A, B, C, D presentan ejercicios para las distintas secciones del libro. El Apndice E presenta mtodos alternativos de abordar algn tipo de ejercicios, y la resolucin de ejercicios tpicos y de utilidad para personas que continuarn profundizado en

vi

el estudio de la programacin, tambin se muestran exmenes para auto-evaluacin del estudiante. En el Apndice G se presenta una sesin inicial en un lenguaje de programacin (ADA95).

En todos los captulos, se desarrollan Ejemplos que ilustran aspectos tericos previamente introducidos, varios de los ejemplos son utilizados en las distintas secciones de este libro para ir introduciendo progresivamente nuevos aspectos, cuando en explicaciones posteriores se hacen referencia a dichos ejemplos, se indica en que pgina del texto se encuentra.

En el Apndice G se encuentra un listado de los Ejemplos numerados mencionados anteriormente, a la par, se coloc, entre parntesis, breves comentarios con palabras claves para identificar sobre que trata y que aspecto ilustra. Para facilitar bsquedas, al final de la lnea se incluy, el nmero de la pgina en donde se desarrollaron..

Ejemplo:
Ejemplo 4.18 (Repeticin controlada por contador, leer y sumar N nmeros) pg.169

En todos los captulos se colocaron, en recuadros, definiciones y palabras claves de la teora, tambin se resaltan en recuadros especiales comentarios y observaciones importantes, la mayora de los temas se presentan secciones de Ejercicios, en los cuales tambin se citan ejercicios de los respectivos Apndices, de tal manera que se cuenta con un compendio de ejercicios variados y de aplicacin prctica.

Es el deseo de los autores, que este libro sea de utilidad al lector para adoptar y desarrollar una Metodologa de la Programacin.

vii

Dmelo y lo olvidar Mustramelo y lo recordar; Hacindolo lo entender.

La importancia de practicar

viii

CAPITULO 1

ELEMENTOS DE LOGICA MATEMATICA


1.1 PROPOSICIONES Ejemplos: Una proposicin es la aseveracin o negacin de algo que puede ser verdadero o falso. Las computadoras se programan. 5 + 4 = 10 En estos ejemplos se ha afirmado algo, en la primera proposicin se afirma algo verdadero y en la segunda algo falso. Dicho de otra manera, la primera proposicin es verdadera, la segunda es falsa. Otros ejemplos podran ser: La semana no tiene 14 das. 4 no es un nmero par. En estos otros ejemplos se ha negado dos hechos o situaciones. En la primera proposicin se niega algo falso y en la segunda se niega algo verdadero, tambin se puede decir que la primera proposicin es verdadera y la segunda es falsa. Toda proposicin tiene que tener un valor de veracidad (o valor de verdad), el cual puede ser VERDADERO o FALSO. Es decir, que toda proposicin tiene que ser o bien verdadera o bien falsa, pero no ambas.

Si se afirma algo verdadero, Si se afirma algo falso, Si se niega Si se niega algo verdadero, algo falso,

la proposicin es verdadera. la proposicin es falsa. la proposicin es falsa. la proposicin es verdadera.

____________________________________________________________ 1

Si una oracin o frase no tiene valor de veracidad, es decir que no puede ser verdadera o falsa, o de la cual no tiene sentido hablar de su veracidad, entonces tal oracin NO es proposicin. Las siguientes frases u oraciones no son proposiciones: Contraejemplo De qu color es tu camisa? Qu lindo da hace hoy Razn por la cual NO es proposicin es una oracin interrogativa oracin exclamativa y una apreciacin subjetiva es una oracin imperativa est incompleta

Por favor, sume el primer nmero con el ltimo. ___________ es mi hermano.

En estos contraejemplos, se considera que no tiene sentido decir que la frase u oracin es verdadera o falsa ( oraciones interrogativas, exclamativas, imperativas o subjetivas). Las proposiciones se representan por medio de letras minsculas del alfabeto, as: p: Hoy es lunes q: Llueve r: 2+24

Proposiciones Abiertas: La siguiente es una proposicin verdadera: La unidad monetaria de Honduras es el Lempira, Se representa por p. y se dice que el valor de verdad p es V (se utiliza F para falso). Si se omite la palabra Lempira se deja el espacio correspondiente, se tiene: La unidad monetaria de Honduras es el __________________ De acuerdo al concepto inicial, lo anterior no seria una proposicin. Es necesario llenar el espacio en blanco para que se pueda asignar un valor de verdad. Si se coloca la palabra Yen se obtiene: La unidad monetaria de Honduras es el Yen. que resulta ser una proposicin, pero falsa. Este tipo de expresin incompleta, que puede convertirse en una proposicin, ser llamada proposicin abierta. Se debe notar que una proposicin abierta no es una proposicin, pero puede convertirse en una proposicin, verdadera o falsa, al llenar el espacio en blanco.

____________________________________________________________ 2

En este ejemplo cualquier denominacin monetaria del mundo (peso, euro, marco, dlar, franco, etc. que son nominaciones monetarias en gnero masculino) podra colocarse en el espacio y la frase incompleta se convierte en proposicin, en algunos casos verdadera y en otros falsa, por ejemplo: La unidad monetaria de Honduras es el Lempira. La unidad monetaria de Honduras es el Euro. (V) (F)

No se puede llenar el espacio con nombres de universidades, ya que no tendra sentido decir que una universidad es la unidad monetaria de Honduras. (A menos, claro est, que se escoja el nombre de una universidad como nombre de la unidad monetaria). Variables Al espacio en blanco de una proposicin abierta se le llamar variable y se representar por una letra (como x, y, z). De esta manera, la proposicin abierta anterior se rescribe: por p(x). El conjunto de valores que pueden colocarse en el espacio en blanco, o que pueden sustituir a x, se denomina el Universo de discurso de la variable, o simplemente el universo de x, que se representa por Ux o simplemente U. Se observa que al llenar espacio de la proposicin abierta, sta se transforma en una proposicin que puede ser verdadera o falsa. En el ejemplo anterior el universo sera el conjunto: U = {peso, euro, lempira, dlar, yen, } Por otra parte, el universo puede ser considerado hasta cierto punto como arbitrario, es decir que uno puede escogerlo de acuerdo a los objetivos de un estudio o problema especfico. Por ejemplo, para la proposicin abierta: x > 0 el universo podra ser el conjunto de nmeros enteros o bien podra ser el conjunto de todos los nmeros reales, dependiendo con que clase de nmeros interese o convenga trabajar. En caso de incertidumbre en cuanto a la seleccin de un universo, generalmente se selecciona el ____________________________________________________________ 3 La unidad monetaria de Honduras es el x y se dice que la expresin resultante, es una proposicin abierta que se puede representar

universo ms amplio posible, que es el conjunto de todos los valores posibles que convierten la proposicin abierta en una proposicin, ya sea sta verdadera o falsa. El universo determina generalmente lo que se llama el tipo de la variable. Como en ejemplo x > 0 el Universo es un conjunto de nmeros, se dice que la variable es de tipo numrico. Si x representa un nmero de personas, convendra entonces escoger U como el conjunto de nmeros enteros positivos.

Predicador A una proposicin abierta tambin se le llama predicado y se representa por p(x), q(x), r(x,y), etc., donde x representa a la variable. En una proposicin se pueden tener dos variables, como por ejemplo: __________es el hijo de _________________ Que se representa por: P(x,y): x es el hijo de y A continuacin se presentan varios ejemplos de proposiciones abiertas y sus respectivos universos.

Ejemplos 1.1
1. p(x) : 4 x = 7 U podra ser el conjunto de nmeros enteros.

2. p (y) : Maria se matricul en UNITEC, en la carrera y. U = {y/y es una carrera de UNITEC} 3. p(x,y) : x es el padre de y U = {(x, y)/x nombre de varn, y nombre de persona} Debe acordarse que cuando se llena espacio (la variable) de una proposicin abierta con un valor del universo, la proposicin abierta se transforma en una proposicin. Sea la proposicin abierta es p(x) y un valor del universo a, entonces el llenado de x por el valor especfico a, se representa por p(a). El valor de veracidad de p(a) depender de a. Para algunos valores de U, p(a) ser Verdadera y para otros valores de U, p(a) ser Falsa. Lo anterior se ilustra en los siguientes ejemplos:

____________________________________________________________ 4

Ejemplos 1.2
1. p(x) : x es la moneda de Japn p (el Yen) : El Yen es la moneda de Japn 2. p(x) : x es un nmero mayor que 20 p (12) : 12 es un nmero mayor que 20 3. p(x,y) : x es un mltiplo de y p (35,5) : 35 es un mltiplo de 5 (Verdadero) (Falso) (Verdadero)

El Conjunto Solucin (representado por C.S.) lo conforman aquellos elementos de U que hacen que la proposicin sea verdadera.

Ejemplo 1.3
Si q (z) : z es un pas que colinda con Honduras

El U mas amplio que se puede considerar es el conjunto de todos los pases. El conjunto solucin sera: C.S. = {Guatemala, El Salvador, Nicaragua} Ya que si en vez de z, se coloca uno de estos nombres de pases, la proposicin tiene valor de verdad V. O sea que q (Guatemala) es Verdadera, lo mismo que q (El Salvador) y q (Nicaragua), mientras que q (Costa Rica), q (Chile), etc., son Falsas.

Ejemplo 1.4
Sea U = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} y p(x) : x > 5, entonces C.S. = { 6, 7, 8, 9 }

Evaluacin de Predicados Evaluar lgicamente o simplemente evaluar una proposicin abierta para un valor dado de la variable significa determinar el valor de veracidad, Verdadero o Falso, que tiene la proposicin una vez que se llena la variable (o se sustituye la variable) por el valor dado. Vanse los siguientes ejemplos:

____________________________________________________________ 5

Ejemplos 1.5
a) Evaluar lgicamente la proposicin abierta x + 3 = 5 para 1 (o para x = 1). Para evaluar la proposicin, se coloca 1 en la variable y obtenindose 1 + 3 = 5 y como no es cierto, se evala lgicamente la proposicin como FALSA. b) Evaluar La capital de Francia es ____________, para el valor Pars. Llenando el espacio con el valor se obtiene: La capital de Francia es Pars y se determina que el valor lgico de la proposicin es VERDADERO. c) Evaluar q(x, y): x es un mltiplo de y, para (100,10). Al sustituir los valores (en el orden indicado) se obtiene 100 es mltiplo de 10 y la proposicin que resulta es VERDADERA. d) Evaluar r(x, y, z): x + 3y > z Al sustituir los valores indicados: para x=2, z = 5, y = -1 2 + 3(-1) > 5 que al simplificar queda como: 2-3>5 -1 > 5 lo cual es una proposicin FALSA. EJERCICIOS 1.1 1. Cuales de las siguientes frases u oraciones constituyen proposiciones, proposiciones abiertas o ninguna de ellas? a) Los ros del planeta Marte son rojos. b) Qu da es hoy? c) Los valientes no lloran. d) x es un valor mayor que 100. e) El sueldo no sobrepasa 1000 lempiras. f) Maria es la ta de ____________. g) Estudia cada da para que apruebes el curso. h) Si estudias cada da aprobaras el curso. i) y x = 23 j) Fuiste al cine o al circo. k) z < 30 ___________ ___________ ___________ ___________ ___________ ___________ ___________ ___________ ___________ ___________ ___________

____________________________________________________________ 6

2.- .Determine la variable y establezca un universo apropiado para cada una de las siguientes proposiciones abiertas. a) n es un nmero par. b) __________ es un miembro del Congreso Nacional. c) El color favorito de Picasso fue el y. d) La luna es de queso es una proposicin cuyo valor de verdad es _____. e) El impuesto sobre venta es de x % f) 3 + 2* ( ___ - 5) = 17 g) La pared mide z metros. h) x < 23.5 3. Encuentre el C.S. de las proposiciones del ejercicio anterior. 4. Evale las siguientes proposiciones abiertas con los valores indicados. a). __________ es un departamento de Honduras. para el valor Olancho b) ___- 3 = 6 para el valor 9 c) y > x + 5, para x = 3, y = 5 d) t es un nmero par para el valor 13

e) x y = 4 y para (10,2)

1.2 OPERADORES LOGICOS Y TABLAS DE VERDAD La Negacin (no) Si se tiene la proposicin p: La semana tiene 7 das (V), Se puede, a partir de ella, construir una nueva proposicin negando su contenido, as: La semana no tiene 7 das No es cierto que la semana tenga 7 das o bien

Estas nuevas proposiciones (que se consideran equivalentes entre si), se denominan la negacin de p, que se representa por ~p (que se lee no p). Y si p es verdadera, su negacin es falsa; y viceversa, si p es falsa, ~p es verdadera. Esta situacin la representa en

____________________________________________________________ 7

la siguiente tabla, que se denomina una tabla de verdad, en donde se consideran todas las posibles combinaciones de valores de verdad para p y ~p. p V F ~p F V

Ejemplo 1.6
Dada la proposicin q: 2 + 2 4, redactar ~q y Solucin: Proposicin q: 2 + 2 4 ~ q: ~ (2 +2 4) ~ q: 2 + 2 = 4 Valor de verdad (F) (V) (V) es la proposicin original, su negacin es: en forma equivalente determinar su valor de verdad

Considerando el ejemplo anterior, se presenta una tabla de equivalencia de negacin para smbolos matemticos: SIMBOLO NEGACION

= > <
Ejemplo 1.7
p(x): 2 + 3 * x > 10 ~p(x): ~ (2 + 3 * x > 10) ~ p(x): 2 + 3 * x < 10

= < >
Ejemplo 1.8
q(x, y): x < y ~ q(x, y): ~(x < y) ~ q(x, y): x > y

____________________________________________________________ 8

La Conjuncin y Dadas dos proposiciones p y q, por ejemplo: p : Hoy es lunes q : est lloviendo Se puede formar una nueva proposicin unindolas por medio de la conjuncin y, de esta manera: Hoy es lunes y est lloviendo La que se considera una proposicin y que se representa por: p ^ q Al ser p ^ q una proposicin, tiene que tener un valor de veracidad, el cual depender del valor de veracidad de p y del valor de veracidad de q, que por definicin vienen dados por la siguiente tabla:

p V V
F F

q V F
V F

p^q V F
F F
La conjuncin solamente es verdadera si las dos (proposiciones) son verdaderas.

Cada lnea de la tabla representa un caso de las posibles combinaciones de valores V y F de p y q, y el valor que se le asigna a p ^ q. Se dice que p y q son proposiciones simples o primitivas, no se pueden descomponer ms, p y q es una proposicin compuesta, no es simple y se descompone en p y en q. Segn lo que se puede observar de la tabla de verdad de la conjuncin si se toma la segunda lnea, si Hoy es Lunes es verdadero, pero est lloviendo es falso; por definicin Hoy es lunes y esta lloviendo seria falso, de acuerdo a la segunda lnea de la tabla. Se concluye diciendo que la conjuncin de p y q es nicamente verdadera cuando ambos p y q lo son. El siguiente esquema ilustra lo expresado anteriormente.

____________________________________________________________ 9

Ejemplo 1.9
Determinar el valor de verdad de p ^ q: p ^ q: Hoy es martes V ^ ^ ? F est lloviendo F Evaluar cada proposicin simple. Evaluar la conjuncin. Se trabaja en forma de tringulo invertido1 Usando la Tabla de Verdad P V q V p^q V

V
F F

F
V F

F
F F

La disyuncin o Tambin se puede obtener una nueva proposicin a partir de las dos anteriores, p y q, si se unen por medio de la disyuncin o. Y se denota por p v q Cuyos valores de verdad se definen por medio de la siguiente tabla p V V F q V F V pvq V V V

La disyuncin solamente es falsa si ambas son falsas

1 )

Trabajar en forma de tringulo invertido, implica que se colocarn los valores de verdad de las proposiciones en forma vertical, debajo de cada una y se copiarn todos los operadores que intervienen en la proposicin compuesta, se irn evaluando hasta obtener el valor de verdad final de sta, el cual quedar en la base del tringulo.

____________________________________________________________ 10

Ejemplo 1.10
Con las mismas proposiciones del ejercicio anterior, determinar el valor de verdad de pvq: pVq: Hoy es martes v est lloviendo V v F ? V p V q V Pvq V Evaluacin de cada proposicin simple. Evaluacin de la disyuncin.

V
F F

F
V F

V
V F

Aparte de la negacin, conjuncin y disyuncin, existen otros operadores lgicos que no se estudiarn en este texto. Sin embargo, con estos tres se pueden construir expresiones proposicionales ms complejas, que al resultar de la aplicacin de estos operadores una o ms veces, y al ser proposicin tiene un valor de veracidad, que depender de que valor de veracidad tengan p, q o r. Para analizar todos los posibles valores de veracidad que pueda tener una proposicin compuesta se construye una tabla de valores de veracidad, o tabla de verdad para dicha proposicin.

Ejemplo 1.11 Construir la tabla de verdad de (p v ~ q)


Se comienza colocando las proposiciones en orden alfabtico, y todas las posibles combinaciones de V y F de p y q. Observacin 1.2.1 En general el nmero de combinaciones (renglones totales de la tabla) es 2, en donde n es el nmero de proposiciones simples a considerar en la tabla, se comienza escribiendo todos esos casos, para p asignando la mitad de 4 o sea 2 V (de Verdadero) y 2 F (de Falsos), el cociente resultante 2, se divide nuevamente entre 2 obteniendo 1, as para q se alterna un (V) y un (F) hasta terminar.

____________________________________________________________ 11

p V V F F

q V F V F

A continuacin, se encuentran los valores que corresponderan a ~q: p V V F F q V F V F ~q F V F V

Luego por cada rengln se hace la conjuncin de p con ~q observando los valores de las columnas de p y de ~q, aplicando las reglas de la disyuncin. p V V F F q V F V F ~q F V F V pv~q V V F V

La ltima columna corresponde a los valores de verdad de p v ~ q segn los valores de p y de q como se especifican en la tabla. Los operadores lgicos y construccin de tablas de verdad se aplican a las proposiciones abiertas tal como se aplican a las proposiciones.

Ejemplo 1.12
Sean p(x) : q(x, y): los valores: Solucin: Por simplificacin se escribir ~q ^ (~ p v q) y construyendo la tabla, columna a columna ____________________________________________________________ 12 x>0 x<y ~ q(x, y) ^ [~p(x) v q(x, y) ] y posteriormente evaluarla para e y=2 X=5

Construir la tabla de:

p
V V F F

q
V F V F

~p
F F V V

~p v q
V F V V

~q
F V F V

~q ^ (~ p v q)
F F F V Tabla 1.2.1

. Observacin 1.2.3 Recuerde: la conjuncin es verdadera solamente si las dos proposiciones son verdaderas, resulta conveniente entonces, colocar primeramente (V) en donde las dos proposiciones sean Verdaderas y posteriormente rellenar los restantes renglones de la columna de inters con (F). En forma semejante, la disyuncin es falsa solamente si las dos son falsas, se deber colocar (F) en donde las dos proposiciones son falsas y despus rellena con (V)

Evaluar lgicamente la proposicin compuesta anterior, para los valores de x e y dados: x=5 y y =2 Se obtiene que: p (5): 5 > 0 q (5,2): 5 < 2, (sustituyendo 5 por x) es Verdadero que es Falso. y

Observando nuevamente la tabla de verdad:

p V V F F

q V F V F

~p F F V V

~p v q V F V V

~q F V F V

~q ^ (~ p v q) F F F V
Tabla 1.2.1

Esto corresponde a la segunda lnea* de la Tabla anterior, cuando p es V y q es F, y la proposicin ~q ^ (~ p v q) sera ~ (5 < 2) ^ [~ (5 > 0) v (5 < 2)] que tambin se puede

____________________________________________________________ 13

evaluar lgicamente, asignando los valores de veracidad correspondientes a cada proposicin y aplicando la definicin de los operadores lgicos, de la siguiente manera:
~ (5 < 2) ^ (~ (5 > 0) V (5 < 2))

Mtodo Directo

~ F ^ (~ V V ^ F

F)

V ^ ( F v F)

F Y se concluye que la proposicin ~ (5 < 2) ^ (~ (5 > 0) v (5 < 2)) es Falsa, y como se

menciono previamente esto coincide con lo encontrado en la Tabla de verdad 1.2.1.

Ejemplo 1.13
Construir la tabla de (p v q) ^ ( ~ p v r) Como el nmero de proposiciones simples es 3, se tiene que: El nmero de renglones es = 2n = 2 = 8, o sea que se tendrn 8 renglones en esta tabla.

Observacin 1.2.4

Continuando con la Observacin 1.2.1 de la tabla previa, ahora

intervienen 3 proposiciones simples (p, q, r), as n=3. Luego Renglones = 2 = 8, para la columna de p se tiene 8/2 = 4, se colocarn entonces cuatro (V) y cuatro (F), para q se colocarn 4/2 =2, alternos dos (V) y dos (F), finalmente para r, 2/2=1 sern alternos un (V) y un (F).

p
V V V V F F F F

q
V V F F V V F F

r
V F V F V F V F

~p
F F F F V V V V

pvq
V V V V V V F F

~pvr
V F V F V V V V

(p v q) ^ (~p v r)
V F V F V V F F

____________________________________________________________ 14

Ejemplo 1.14
Dadas las siguientes proposiciones abiertas, determinar el valor de verdad de la proposicin compuesta: ~ p v (q ^ ~ r) p(x): x * x 36, q(x, y): y + 1 < x, r(x, y): 2 * x > y /2 Para los valores de x = 6, y = 10 A. Mtodo Largo: ~ p v (q ^ ~ r)
~(x * x 36) v ( (y + 1 < x) ^ ~ (2 * x > y/2) ) (x * x = 36) v ( (y + 1 < x) ^ (2 * x < y/2) )

Sustituyendo para x e y:
(6 * 6 = 36) v ( (10 + 1 < 6) ^ (2 * 6 < 10/2) ) (36 = 36) V V v v v V ( (11< 6) (F F ^ ^ F) (12 < 5) )

B. Mtodo de Sustitucin (o Directo , es el mas corto):


p(x): x * x 36 P (6) : 6 * 6 36 36 36 (F) q(x, y): y + 1 < x q (6,10) : 10 + 1 < 6 11 < 6 (F) r(x, y): 2 * x > y /2 r (10): 2 * 6 > 10/2 12 > 5 (V)

Sustituyendo los valores de verdad encontrados en la proposicin de inters: ~ p v (q ^ ~ r),


~Fv(F^~V) Vv(F^F) V v F

V C. Usando la Tabla de Verdad (habiendo evaluado previamente cada proposicin):


p V V V V F F F F q V V F F V V F F r V F V F V F V F ~p F F F F V V V V ~r F V F V F V F V q^~r F V F F F V F F ~p v (q^ ~ r) F V F F V V V V

RESPUESTA: El valor de verdad de ~ p v (q ^ ~ r) es V ____________________________________________________________ 15

Como se puede observar, coincide con el valor de verdad encontrado utilizando los mtodos previamente mencionados.

EJERCICIOS 1.2.1 1. Construya las tablas de verdad para las siguientes proposiciones: a) b) c) d) e) f) g) h) i) j) 2. Dadas a) b) ~p^q ~(~p) ^ p ~ (~ p v q) ~ ( p ^ q) v ( p ^ ~ q ) ~ p v ( r ^ s) p ^ (~ r ^ s ) (r v ~ t) ^ ~q p v ~ (r v ~p) ( p v s ) ^ (( ~ q ^ s ) v p ) ~ (p ^ ~ (~ r ^ ~ s)) p ( x ) : x < 10 Construya la tabla para i) ii) iii) iv) x=5 x=3 x = 11 x = 20 y=5 y=0 y = 11 y=7 y q ( x,y ) : x = y

pv(~p^q)

Encuentre el valor de verdad para el caso de que:

1.3

TAUTOLOGIAS, CONTRADICCIONES Y EQUIVALENCIAS

Considrese la tabla de verdad de p v ~ p p V F ~p F V p v ~p V V

____________________________________________________________ 16

Resulta que la proposicin p v ~ p es siempre verdadera, independientemente de los valores que tome p, se dir que p v ~ p es una tautologa.

Una tautologa es una proposicin cuya tabla resulta en Verdadera en cada


Por otra parte, si se considera la proposicin p ^ ~ p P V F ~p F V p ^ ~p F F

Se puede observar, por el contrario, que p ^ ~ p siempre es falsa, sin importar los valores de verdad que tome p. En este caso se dice que la proposicin p ^ ~ p es una contradiccin.
Por ltimo, considerando las proposiciones (~ p ^ ~ q) y ~(pvq) (~ p ^ ~ q):

Se elaborar las tablas de verdad de cada una de ellas, se tiene para

p
V V F F

q
V F V F

~p
F F V V

~q
F V F V

~p ^ ~q
F F F V

Ahora para ~ ( p v q): p


V V F

q
V F V

pvq
V V V

~ (p v q)
F F F

Se puede observar que sus valores de verdad son los mismos (comparar las ltimas columnas de ambas tablas). En esta situacin se dice que las proposiciones son equivalentes y se denota as: ~(pvq) (~p^~q)

____________________________________________________________ 17

Ejemplo 1.15
Demostrar que las siguientes proposiciones son equivalentes: p v (q v r) y (p v q) v r

Solucin: se har una tabla de verdad para cada una, por simplificacin se utilizarn las mismas columnas de p, q y r ya que son comunes en ambas proposiciones compuestas:

P V V V V F F F F

q V V F F V V F F

r V F V F V F V F

qvr V V V F V V V F

p v (q v r) V V V V V V V F

pvq V V V V V V F F

(p v q) v r V V V V V V V F

Son Equivalentes Dos proposiciones son equivalentes cuando para cada rengln (de sus respectivas tablas de verdad) tienen los mismos valores de verdad.

Se concluye entonces que las dos proposiciones anteriores son equivalentes. Es decir: p v (q v r) (p v q) v r

____________________________________________________________ 18

Leyes bsicas de la lgica Existen muchas proposiciones equivalentes que permiten, entre otros fines no menos importantes, comprender y simplificar proposiciones complejas, y que se resumen en la siguiente tabla: Leyes Bsicas de la Lgica Doble negacin ~(~p)p Conmutatividad pvqqvp p^qq^p

Asociatividad (pvq)v rpv(qvr) (p^q)^rp^(q^r)

Distributividad p ^ ( q v r ) ( p ^ q ) v (p ^ r ) pv(q^r)(pvq)^(pvr)

Identidad pvFp pvpp p^Vp p^pp

dem potencia

Elemento absorbente p^FF pvVV Absorcin p^(pvq)pv(p^q)p

DeMorgan ~ ( p v q ) ~ p ^ ~ q, ~(p^q)~pv~q

____________________________________________________________ 19

EJERCICIOS 1.3 1.Compruebe que las expresiones de las leyes bsicas de la lgica constituyen realmente equivalencias. 2.Suponga que x = 3, y = -2. Traduzca a lenguaje simblico las siguientes expresiones y encuentre su valor de verdad. i) x es mayor que 20 pero y no es positivo j) x est entre 2 y 4 (sin tomar los valores de 2 y 4) k) No se cumple que x sea mayor que 2 o menor que 6; pero y tampoco es menor que 10 l) x es mayor que 10 es menor que 1 m) y no es igual a 1, pero x si lo es. 3.Llene los espacios vacos en las siguientes tablas: a) P V V F F q V F V F F V F V F p ~q F

b) p V V F F q V F V F V V F F F V F q ~( )

____________________________________________________________ 20

c)

p V V V V F F F F

q V V F F V V

r V F V F F F V F F V V F

(p

) ~q V V F F

1.4 NOTACION BOOLEANA

Otra forma de representar los valores V y F es utilizando 1 y 0 respectivamente. Esta notacin se llama boolena. De esta manera las tablas de los operadores lgicos bsicos siguiendo la costumbre de colocar primero los valores 0 (falso) quedara de la siguiente manera: Negacin: p 0 1 ~p 1 0

Conjuncin:

P 0 0 1 1

q 0 1 0 1

p^q 0 0 0 1

____________________________________________________________ 21

Disyuncin: P 0 0 1 1 q 0 1 0 1 pvq 0 1 1 1

____________________________________________________________ 22

CAPITULO 2

CONCEPTO DE COMPUTADOR Y ALMACENAMIENTO


2.1 CONCEPTO VON NEUMANN Y DE PROGRAMACION

Aparte de velocidad y precisin, la caracterstica fundamental que diferencia a la computadora de otras mquinas es el hecho de que puede almacenar previamente los datos que va a procesar, los resultados obtenidos y ms an, las instrucciones para efectuar una tarea. La computadora es capaz de recibir las instrucciones de antemano, de memorizar dichas instrucciones y de ejecutarlas en el momento en que se le ordene. De la misma manera puede aceptar de antemano los datos con que se va a trabajar, memorizarlos o almacenarlos para utilizarlos en el momento en que las instrucciones se lo indiquen. Este conjunto de instrucciones que se le proporcionan al computador para realizar una tarea especfica constituyen lo que se llama un programa. En los captulos siguientes se desarrollan tcnicas para planificar los programas para la computadora y se presentar la metodologa para disear un plan previo para producir un programa. Para aprender a producir un programa es necesario conocer cuales son los grandes componentes de una computadora y cual es la funcin de cada uno de ellos. Existen muchos diseos y arquitecturas para computadoras, cuya descripcin esta fuera de los objetivos de este libro, y para efectos de este estudio, se considerar un modelo basado en el de Von Neumann. Grficamente y de manera simplificada nuestro modelo de computador consta de tres componentes: Unidad de Entrada, Unidad Central de Proceso y Almacenamiento y Unidad de Salida, relacionadas de la manera siguiente:

U.C.P y Entrada Almacenamiento Salida

_______________________________________________________________ 23

UNIDAD DE ENTRADA Es un componente de la computadora, por medio del cual el usuario se comunica con la computadora al introducir datos o instrucciones. Se puede pensar en principio que el teclado es la unidad de entrada, sin embargo existen muchos dispositivos para este fin, como el Mouse, el lector del cdigo de barras, el micrfono, etc. La computadora solicita ingreso de datos de acuerdo al programa que previamente se le ha proporcionado. Del ingls INPUT (entrada) se toma la letra inicial I, con que muchas veces se refiere a las unidades de entrada. UNIDAD DE SALIDA Es el componente por medio del cual la computadora se comunica con el usuario. A travs de los dispositivos de salida la computadora proporciona los resultados deseados, interroga sobre las acciones que debe o puede tomar, y proporciona alguna otra informacin, todo ello segn las instrucciones del programa que est ejecutando. Un monitor (como el de TV) o una impresora en papel, los parlantes, etc., constituyen los medios de salida ms comunes; pero no son los nicos. Tambin del ingls OUTPUT (salida) se toma la inicial O para referirse a la salida. UNIDAD CENTRAL DE PROCESO Y ALMACENAMIENTO Constituye la parte medular de la computadora en donde se efectan las operaciones bsicas del proceso. Se pueden distinguir tres componentes principales: Unidad de Control Interpreta las instrucciones y dirige el resto de dispositivos para la ejecucin del programa. Unidad Lgica / Aritmtica Efecta los clculos aritmticos requeridos (sumas, productos, etc.) y puede evaluar la veracidad o falsedad de algunas proposiciones y efectuar operaciones lgicas. Almacenamiento o Memoria Guarda o almacena los datos y las instrucciones. Se puede distinguir lo que se llama la memoria principal (que se conoce como la Memoria de Acceso Aleatorio, o RAM Random Access Memory), y la memoria auxiliar, que aunque ms extensa, no es tan veloz _______________________________________________________________ 24

(en las computadoras se puede considerar que la memoria auxiliar reside en los discos magnticos).

Unidad Unidad Lgica/Aritmtica Lgica/Aritmtica

Unidad de CONTROL CONTROL

Memoria Auxiliar

Memoria MemoriaAlmacenamiento Almacenamiento Principal Principal

Cuando se programa un computador, se escriben las instrucciones de acuerdo a cierto cdigo preestablecido dentro de la sintaxis de un lenguaje de programacin de computadoras. Por ejemplo, si se desea que la computadora calcule el porcentaje de impuesto sobre la venta, no se usa el espaol para indicar la instruccin calcule el 12% de la venta (aunque ello es posible), sino que se debern usar las reglas de un lenguaje de programacin como ADA, por ejemplo IMP:= VAL_VEN * 0.12;. Aprender un lenguaje de programacin, consiste en aprender las reglas para codificar las instrucciones que forman un programa que la computadora ejecutar cuando se le indique.

EJERCICIOS 2.1 1. Determine la Veracidad (V) o Falsedad (F) de las siguientes proposiciones. _____ Normalmente las computadoras van ejecutando las instrucciones de un programa a medida que se le van proporcionando. _______________________________________________________________ 25

_____ Por medio de las unidades I/O se establece una comunicacin con la computadora. _____ Una vez que se determina y escribe en lenguaje natural las instrucciones para la computadora, se tienen que codificar en un lenguaje de programacin para proporcionrselo al computador. _____ La unidad de control puede ejecutar instrucciones como multiplicaciones y divisiones. _____Una unidad de entrada podra ser un reconocedor de la voz humana. 2.2 CONCEPTO DE ALMACENAMIENTO Y VARIABLE

Como se ha indicado anteriormente, el hecho de que la computadora puede almacenar los datos y las instrucciones (programas), previo a su ejecucin, distingue a la computadora de cualquier mquina (cuando cualquier otra mquina tiene esta capacidad se dice que est computarizada). La computadora puede distinguir que porciones de la memoria contienen instrucciones (programas) y que porciones contienen datos. Tanto los programas como los datos pueden estar en la memoria principal o en la auxiliar. Por ahora se abordara el problema de almacenar datos numricos. Concepto de Variable
. Una variable es un espacio reservado en la memoria en donde se puede almacenar un dato

Si el dato es numrico, se dice que la variable es numrica. Imagnese una variable como una caja con una etiqueta para distinguirla de las otras. A la variable se le asigna un nombre, que es el que se coloca en la etiqueta. Dentro de la caja se guarda el dato que se desea. Ejemplo grfico: TOTAL

1500

De esta manera, la variable tiene dos componentes: _______________________________________________________________ 26

El nombre de la variable, que sirve para identificarla El valor de la variable, que es el dato que se almacena El nombre de la variable es fijo, pero su valor varia segn los requerimientos del programa en cuestin. Para agilizar el trabajo, se simplifica el dibujo de la caja de la siguiente manera:

TOTAL 1,500

Nombre Valor

El dibujo anterior muestra una variable llamada TOTAL cuyo valor es 1,500. Se dir que 1,500 est almacenado en la variable TOTAL. son: La variable TOTAL contiene 1,500. Se ha guardado 1,500 en TOTAL En TOTAL se puso 1,500 TOTAL vale 1,500 Se asign 1,500 en TOTAL Otras formas de expresar esta situacin

Ejemplo 2.1
Dibuje una memoria con 3 variables y almacene un 18 en la variable SALDO, un 15 en la variable PAGO y en la variable RESTO guarde el numero 34. Primero se dibuja las tres cajas (una al lado de la otra) de la siguiente manera:

Luego se toma la primera instruccin almacene 18 en la variable SALDO. Para ello se escoge una caja, por ejemplo la primera y se identifica con el nombre SALDO. _______________________________________________________________ 27

SALDO

Y se coloca el nmero 18 SALDO 18 De la misma manera se procede con las siguientes dos instrucciones, y se llega a SALDO 18 PAGO 15 RESTO 34

La forma en que se ha indicado las instrucciones: almacene 18 en la variable SALDO no ha est codificada en ningn lenguaje de programacin (lo cual se estudiar ms adelante), sino que se expresa en nuestro lenguaje natural. Para efectos de comprender como trabaja la computadora, se ejecutan las instrucciones del modelo de computador adoptado, representando las variables como las cajas dibujadas, y escribiendo en la pizarra o en una hoja de papel lo que hara la computadora. A la accin de ejecutar las instrucciones a lpiz, simulando un computador, se le llama prueba de escritorio (P.E.).

Ejemplo 2.2
Realice la prueba de escritorio para las siguientes instrucciones: 1. Almacene un 10 en la variable T45 2. En TOTAL guarde 2300 3. Ponga 24 en la variable IMPUESTO Se dibuja la memoria con tres variables y siguiendo los pasos anteriores se obtiene el siguiente resultado.

_______________________________________________________________ 28

T45 10

TOTAL 2,300

IMPUESTO 24

El nombre de una variable es una palabra que sigue ciertas reglas, como esta palabra sirve para identificar una variable, se llamar identificador. Las reglas generales para un identificador de variable que se estarn utilizando son las siguientes: 1. Debe comenzar con una letra. 2. Despus de la letra inicial se pueden utilizar ms letras o nmeros. 3. No se aceptan espacios en blanco, smbolos que indican operaciones ( +, - , *, / ), signos de puntuacin y otros caracteres especiales. 4. Se acepta el subrayado _ . 5. Pueden utilizarse maysculas y minsculas indistintamente. 6. Pueden utilizarse hasta 80 caracteres, pero lo ms apropiado es que no sea muy largo, ni muy corto que no exprese el uso. Por ejemplo, TOTAL es mejor que T. 7. Cada lenguaje de programacin tiene su conjunto de palabras reservadas que no se pueden utilizar como identificadores, por lo tanto, no se debe escoger un identificador que este en la lista de dichas palabras. EJERCICIOS 2.2 Para cada ejercicio dibujar una memoria con 4 o 5 variables y realizar las instrucciones que se indican: 1. Ponga un 80 en CALIFICACION Guarde un 85 en PROMEDIO Almacene un 90 en REPOSICION Coloque un 92 en TAREA 3. Coloque -5.7 en X762 Guarde en TFC4 el numero 0.002 Ponga -2/3 en HY23 En YT_23 almacene 100000 _______________________________________________________________ 29 2. En ALTURA guarde 1.80 En PESO almacene 140 En CINTURA ponga 31

2.3

CONCEPTO DE ASIGNACION

En la seccin anterior se utilizan varias palabras del lenguaje comn para indicar el almacenamiento (guarde, almacene, ponga, etc.). Ahora se procede a uniformar la terminologa para efectos de simplificacin. Se escoge el trmino asignar para indicar el almacenamiento de un valor en una variable. De esta manera el ltimo ejemplo se reescribira: 1. Asigne 10 a la variable T45 2. A TOTAL asgnele 2300 3. Asigne 24 en IMPUESTO. Una manera simblica para representarlos es utilizando una flecha con punta hacia la izquierda, como se muestra a continuacin: 1. T45 2. TOTAL 3. IMPUESTO 10 2300 24

Se puede observar que la flecha apunta hacia la izquierda, donde se encuentra el nombre de la variable que se est asignando. A la derecha se coloca el valor que se desea almacenar. Una variable puede ser reasignada con un nuevo valor. Por ejemplo si se ejecuta la instruccin K 6, se tiene : K 6 Si luego si se quiere ejecutar la instruccin K K 14, primero se borra el 6

Y se escribe el 14

_______________________________________________________________ 30

K 14

Lo cual es el resultado final de las dos asignaciones K K 6 14

Ejecutadas una despus de la otra. Una variable puede ser reasignada todas las veces que se indique en el programa (es decir las veces que se desee o se considere conveniente de acuerdo a los objetivos del programa). El valor anterior a la reasignacin se pierde irremediablemente. Obviamente que si se desea conservar un valor en la memoria, no se utilizar la misma variable en la asignacin correspondiente. Como en la prueba de escritorio resulta incmodo estar borrando cada vez que se reasigna el valor de una variable, se acostumbra tachar el nmero que se pierde. Por ejemplo, en las asignaciones anteriores primero se tiene K 6 K 6 Luego al ejecutar K Primero se tacha el 6 K 6 14 luego se escribe el 14 K 6 14

En el ltimo dibujo an se puede ver que, aunque tachado, el 6 fue el primer nmero que se asigna, pero para efectos de ejecucin del programa este nmero 6 ya no existe, en su lugar est el 14. En el modelo de computador adoptado, en una variable slo se

_______________________________________________________________ 31

puede almacenar un solo dato y del mismo tipo de la variable (i.e. si la variable es numrica, slo se puede guardar un nmero a la vez en esa variable). Como la asignacin pierde completamente el valor previo a una nueva asignacin, se dice que es destructiva. Aunque la caracterstica suena negativa, de hecho es muy ventajosa ya que permite reutilizar las variables y minimizar el uso de la memoria que constituye un recurso escaso (ahora menos que antes), evitando as almacenar nmeros que ya no se necesitan.

Ejemplo 2.3
Realizar la prueba de escritorio para las siguientes asignaciones : T R R T 10 2 43 87

Las asignaciones se ejecutan en el orden que aparecen T T 10 10 T 10 R 2 R 2

R T 10

34 R 2 34

T T 10 87

87 R 2 34

No solamente valores constantes se pueden asignar (como el 10, 12, 2, 34 y 87 del ejemplo anterior), sino tambin el valor de otras variables, u operaciones entre los valores de otras variables.

_______________________________________________________________ 32

Ejemplo 2.4
Realice la prueba de escritorio para las siguientes asignaciones RIS X2 TOT SOL 10 RIS + 3 RIS 5 * X2 (el asterisco * indica multiplicacin)

Solucin RIS 10 RIS 10 X2 RIS + 3

Al encontrar a RIS se busca el valor que tiene asignado y se le suma 3, el valor que se obtiene se le asigna a X2.

RIS 10

X2 13

Al sustituir 10 por RIS, en la expresin aritmtica RIS +3, se dices que se ha evaluado (encontrado el valor) de la expresin.

A continuacin se ejecuta TOT RIS 10 X2 13

RIS TOT 10

En este caso, se dice que se ha pasado el valor de RIS a TOT, o que se ha copiado o movido el valor de RIS a TOT. Obsrvese que RIS mantuvo su valor, no lo perdi. _______________________________________________________________ 33

Finalmente se ejecuta SOL RIS 0 X2 13

5 * X2 TOT 10 SOL 65

En una asignacin, el nombre de la variable asignada puede aparecer en la expresin de la derecha, ejemplo:

Ejemplo 2.5
A A 23 A+5

En este caso primero se asigna 23 en A, luego al evaluar la expresin A + 5 se obtiene 28, que se asigna a la misma variable A. Primero A 23 Luego A 23 28

Observacin 2.3.1. Puede notar que la asignacin es diferente del igual = en las matemticas, si a ambos lados se cancela A, se obtiene que 0 es igual a 5 lo que no es cierto Cuando en las asignaciones intervienen varias operaciones aritmticas, se debe considerar la prioridad en las operaciones. La menor prioridad la tienen las sumas y las restas, despus siguen el producto y la divisin y finalmente tienen mayor prioridad los parntesis y las potencias, esto se muestra el siguiente grfico:

_______________________________________________________________ 34

Jerarqua de las operaciones

( ), potencias *, / +, Menor Prioridad En el caso de operaciones con la misma prioridad, se realizan por orden de aparicin de izquierda a derecha. Para realizar pruebas de escritorio de asignaciones que involucren expresiones aritmticas, siempre se debe considerar, la prioridad en las operaciones. Mayor Prioridad

Ejemplo 2.6
p q r r q s Para 20 5 p+q r+5 q*2 p q * (2 r/q) (1)1 determinar el valor de s se considera la prioridad en las operaciones p 20 q 5 10 r 25 30 s (1) 30

anteriormente citadas, as:


(1)

p q * (2 r/q) 20 10 * (2 30/10) 20 10 * (2 3) 20 10 * (1) 20 + 10 30

S S S S S

Se ilustra el desarrollo de las operaciones respetando la prioridad en las operaciones

_______________________________________________________________ 35

EJERCICIOS 2.3.1 Para cada ejercicio realice la prueba de escritorio para el conjunto de instrucciones que se indican. 1. a b c d e f g 10 17 a+b ba a*b a 4 * (e b) a

2.-

Tot Res Dif Tot Res Dif

100 70 Tot Res 300 210 Tot Res 1 0 n+1 P+5 N+1 P+7 N+1 P2 1 1 Signo X*3 Signo * X

3.-

N P N P N P N P

4.-

X X T

Signo Signo

_______________________________________________________________ 36

X T 5.Q R D 6.A B C D 7X Y Z, 8.dey inj pli 9.X1 X2 X1 X2 10.- a B C D

X*3 Signo Signo * X 3 2 (Q 1) / (1 1 / (R + 1)) 10 2 A2*B 1 B / (C 2 ) A * (1 B) 8 sqrt (X + 1) | 1Y | + 2 21 1 / sqrt (dey + 4) (22 dey) / 10 * inj 5 7 X1 Observacin 2.3 2: sqrt significa raz cuadrada y a rem b es el residuo de dividir a entre b en aritmtica entera, no se admiten decimales. X2 Cambio 10 rem 2 15 (a + b) * 4 c rem 3

Signo

Cambio

_______________________________________________________________ 37

CONDICIONES Y SU EVALUACION Una de las ventajas de la computadora, es que en el programa se puede indicar varios caminos que la computadora puede escoger segn sea el caso, a partir de alguna condicin que satisfaga o no los datos. En este sentido se considera que una condicin como una proposicin abierta, en donde las variables que aparecen son efectivamente variables de la memoria previamente asignadas. En una condicin generalmente se compara variables, expresiones aritmticas con constantes u otras variables. Por ejemplo: TOT > 0 SALDO 200 < 1200 IMPUESTO VENTA = COMISION Expresiones lgicas de estas comparaciones: NUM_VENTAS > 100 VAL_VENTAS > 5,660.50 No se cumple que (PAGO < 500 y DEDUCCION < 30) Se utilizan entonces operadores relacionales y/o lgicos, los cuales se enlistan a continuacin: Operadores relacionales Smbolo > < = Descripcin Mayor que Menor que Igual Distinto Menor o igual Mayor o igual Operadores lgicos Smbolo Descripcin Negacin (no) Conjuncin (y) Disyuncin (o)

^
v

Evaluar una condicin significa que se sustituyen las variables por los valores que aparecen en la memoria y se determina un valor de verdad (V o F).

_______________________________________________________________ 38

Ejemplo 2.7
De acuerdo al estado de la siguiente memoria, evale las condiciones que se presentan.

TOTAL PAGO 800 750

IMPTO SALDO 50 700

a) TOTAL < 1000 b) PAGO IMPTO > 900 c) PAGO > 200 y SALDO < 700 d) No (TOTAL < 1000) En cada caso se sustituye el nombre de la variable por su valor y se evala la condicin segn las reglas de la aritmtica y la lgica matemtica. a) TOTAL < 1000 al sustituir 800 < 1000 es Verdadera efectuando la resta lo que resulta Falso.

b) PAGO- IMPTO > 100

sustituyendo 750 50 > 900 700>900

c) PAGO > 200 y SALDO < 700 sustituyendo (750 > 200) y (700 < 700) esta proporcin es verdadera y sta es Falsa.

Aplicando la tabla de la conjuncin se tiene que V y F resulta ser FALSO Utilizando el mtodo directo se tiene: (750 > 200) Y (700 < 700) V ^ F F Evaluacin de las proposiciones simples. Evaluacin de la conjuncin.

_______________________________________________________________ 39

d) No (TOTAL < 1000) Sustituyendo se obtiene No (800 < 1000) Como la proposicin dentro de los parntesis es Verdadera, su negacin resulta Falsa Utilizando el mtodo directo se tiene: No (800 < 1000) ~ V F Evaluacin de la desigualdad Evaluacin de la negacin.

Ejemplo 2.8
Realizar primero las asignaciones y luego evaluar las condiciones: Pago Impto Total Saldo 1500 0.12 * Pago Pago + Impto 2000 - Total 2) Saldo 200 < 1200 320 200 < 1200 120 < 1200 V 3) No se cumple que (Impto > 100) (pago < 500 y saldo = 320) ~ (180 > 100) v ((1500< 500) ^ (320 = 320)) ~V F v v F ( F ^ V) F (F) (V) Pago 1500 Impto 180 Total 1680 Saldo 320

1) Total > 0 (V) 1680 > 0 V

_______________________________________________________________ 40

EJERCICIOS 2.4

En cada ejercicio realizar primero las asignaciones y luego evaluar las condiciones: 1.M N 23 M 17

M + N < 30 M>0 N=4

2.-

Pago Impto Total Impto

567 pago * 0.12 pago + Impto 45

Pago < 600 total < 700 No se cumple que (pago > 500 y total < 400)

3.-

I J K

1 I+1 I+2*J

I=J1 KJ 2 No se cumple que (K 5 J * I < 10)

4.-

x y

45 36

_______________________________________________________________ 41

xy0 3 < (y + x) y = 36 x < 45 y = 36 x 45 y = 36 x>0 e y>0 x>0 e y<0 x>0 y<0

_______________________________________________________________ 42

CAPITULO 3 TCNICA DE DESGLOSE


3.1 INTRODUCCIN AL ANLISIS DE UN

PROBLEMA OBJETO

DEL

PROGRAMA (P.O.P.)
Entre otras razones, se utilizan las computadoras para que realicen tareas de manera ms eficiente y rpida que los seres humanos. Para que una computadora realice un trabajo es necesario que tenga almacenada las instrucciones necesarias para ejecutarlo. A este conjunto de instrucciones se conoce como programa, y a la accin de escribir estas instrucciones se le llama programar. Al programar se debe disear un conjunto de instrucciones que la computadora pueda entender1. Para ello se escoge cierto lenguaje para la computadora tienen un significado especfico de acuerdo a cierto cdigo que una o varias personas haya preparado. Por ejemplo para indicarle que almacene el nmero 7 en la variable T, se puede escribir as: MOVE 7 TO T o tambin as: T := 7 ; Dependiendo de la forma en que se decida escribir la asignacin, se tendr un cdigo distinto. Las diferentes formas de escribir las instrucciones para la computadora son lo que se conoce como lenguajes de programacin. Una persona que disea y produce programas se llama programador y una persona que utiliza un programa para resolver un problema o realizar una tarea se llama usuario. El propsito de este libro es el de proporcionar un mtodo y tcnica para producir programas.

Entender o sea que al proporcionrsele una instruccin sea capaz de realizar la accin indicada por la instruccin.

______________________________________________________________________ 43

Para ilustrar los conceptos bsicos de la programacin, se considera el problema que tiene un profesor para procesar las distintas evaluaciones que tiene en un curso y que involucra varios componentes: dos exmenes parciales a 20% c/u, 1 examen final de 30%, 3 proyectos a 5% c/u y 15% en tareas y pruebas. El profesor califica cada examen, tarea, proyecto, etc. sobre la base de 100%; por lo tanto, para encontrar la calificacin final de cada estudiante tiene que efectuar varios clculos aritmticos. Esta tarea, aparte de tediosa, requiere de mucho cuidado por la naturaleza de la misma, por lo que constituye una situacin muy apropiada de aplicacin de la computadora. Para simplificar su trabajo, el profesor decide usar la computadora para resolver el problema del clculo de calificaciones de sus estudiantes, para ello tiene a su disposicin la alternativa de usar un paquete (como hoja de clculo electrnico) o de disear un programa especfico para su tarea. Con el propsito de ejemplificar la programacin, se supone que el profesor decide contratar una persona para que le programador. El programador tiene que conocer y entender todos los elementos involucrados en el proceso de los datos (en este caso las operaciones aritmticas para encontrar los promedios finales), para poder codificar apropiadamente las instrucciones que proporcionar a la computadora, o para poder programar apropiadamente la computadora. El profesor tendr que explicar detalladamente al programador cual es la naturaleza del problema, que es lo que desea obtener del programa, que datos se tienen que proporcionar y que clculos que se tienen que realizar. Es importante observar que en este ejemplo se presentan dos tipos de problemas: El problema del profesor de calcular las calificaciones finales de sus estudiantes, problema que ha decidido resolver mediante la computadora. El problema del programador que consiste en comprender lo que el profesor desea y producir el programa respectivo para que la computadora resuelva el problema del profesor. Al primer problema se le llama problema objeto del programa, que se abrevia p.o.p. El segundo problema es el de producir un programa, para lo cual se tiene que preparar un plan y proceder con cierta sistematizacin. El desarrollo del plan tiene que comenzar con un anlisis del p.o.p. Al analizar un problema se separa o descompone en sus partes hasta que ______________________________________________________________________ 44 prepare el programa, que es el

se llegue a tener un conocimiento fundamental de sus elementos, principios, y la relacin entre ellos. El p.o.p. es el problema del usuario y el producir un programa es el problema del programador. Al partir del anlisis se esboza un plan que se va detallando y perfeccionando sucesivamente, una vez que se tiene un plan del programa se proceder a codificar las instrucciones, probar su efectividad y finalmente a ejecutarlo para obtener la solucin del p.o.p.. Es importante poder diferenciar claramente los dos problemas. El problema del

programador contratado no es en si el de calcular y obtener las calificaciones finales de los estudiantes, sino el de producir un programa que las obtenga. Una vez que el programa est listo (sin errores) y el profesor le proporciona al computador las calificaciones parciales para el clculo del promedio final, por lo que el rol que desempea el profesor es el de usuario del programa. El usuario no necesariamente tiene que ser programador, y el programador no necesariamente tiene que ser usuario del programa. As como no es necesario que una persona construya la casa en que vive, y un ingeniero constructor no tiene porque vivir en las casas que construye. Por lo tanto, el usuario no tiene porque analizar el problema que le preocupa, lo que desea es una solucin al mismo. Si decide usar la computadora para resolver su problema, la computadora ejecuta el programa que se le indique y que ha sido preparado para ese fin especfico. El anlisis le permite al programador conocer a profundidad el p.o.p. dependiendo de la complejidad del p.o.p. el anlisis puede ser tan corto o extenso como lo ameriten los conocimientos y experiencia personales. Y a medida que se desarrollen las habilidades de programacin, ciertos programas no ameritarn ningn anlisis; ya sea porque se han desarrollado programas parecidos o porque se entiende a cabalidad el p.o.p. por su relativa simplicidad. En las secciones posteriores se estarn abordando ciertos p.o.p. cuyo tratamiento no amerite en realidad mayor anlisis, pero que se estarn analizando para fines pedaggicos con el propsito de ejemplificar las tcnicas que pueden ser tiles en el anlisis de problemas ms complejos.

______________________________________________________________________ 45

EJERCICIOS 3.1 Conteste brevemente las siguientes preguntas: 1 2 Porqu el programador debe entender a cabalidad el p.o.p.? Qu se logra al analizar un p.o.p.?

3.- Qu relacin existe entre un programa, la computadora y el p.o.p.? 4.- Cul es la diferencia entre el problema del usuario y el problema del programador? 5.- Qu problemas ameritan mayor anlisis? 3.2 RESUMEN DEL ANLISIS DE ACUERDO AL MODELO VON NEUMANN

El propsito del anlisis de un p.o.p. es el de disponer de todos los elementos necesarios para preparar un plan del programa que resolver el p.o.p.. El formato del anlisis no es nico, algunos problemas requerirn un enfoque muy distinto a otros, la originalidad o experiencia del analista le imprime un sello distintivo al anlisis; la complejidad o naturaleza del problema determina la profundidad del anlisis, etc.. No obstante, por muy variado y original que resulte el anlisis, la metodologa que se presenta en este texto requiere que se prepare un resumen del anlisis encaminado a la produccin del programa. El formato del resumen del anlisis est relacionado con el modelo de computador propuesto.

PROCESO

En primera instancia se determina cual es el objetivo del programa con respecto al p.o.p., es decir, que resultados va a proporcionar la computadora, cual es la SALIDA. Luego se debe definir cual ser la ENTRADA. Lo que significa que describe que tipo de datos se le ______________________________________________________________________ 46

proporcionarn al computador para obtener la SALIDA requerida. En la prctica, al ejecutar un programa, normalmente primero se realizan las tareas de ENTRADA y luego las de SALIDA. Sin embargo al realizar el resumen del anlisis se hace nfasis en la SALIDA para no perder de vista cual es la meta, que es lo que se desea obtener. La SALIDA se especifica de manera cualitativa y de manera cuantitativa, lo mismo que la ENTRADA. Preferiblemente se considera la ENTRADA mnima requerida para obtener la SALIDA deseada. En el prrafo anterior se han utilizado los trminos ENTRADA y SALIDA, para indicar el conjunto de datos que se le proporcionarn al computador (posiblemente va teclado) y el conjunto de datos que la computadora proporcionar (va monitor o impresora). Estos mismos trminos se han utilizado para indicar los dispositivos (teclado y monitor) para efectuar los procesos de ENTRADA y SALIDA. El estudiante no debe confundir el uso de la terminologa, la cual queda clara segn el contexto en que se utilice. De esta manera los trminos ENTRADA y SALIDA se han usado hasta ahora en tres formas distintas:

Para indicar un dispositivo o componente de la computadora. Para indicar un proceso o una actividad. Para indicar un conjunto de datos.

Una vez que se ha indicado la SALIDA y la ENTRADA que involucra el programa, se procede a esbozar el proceso que se sigue para obtener los resultados deseados a partir de los datos de entrada. El resumen del anlisis sigue el siguiente formato:

Resumen del Anlisis


SALIDA: (cuantitativamente) cualitativamente Ejemplo 3.1 (Resumen del Anlisis, calificaciones) ENTRADA: (cuantitativamente) cualitativamente Para el caso del problema de obtener las calificaciones finales de un curso universitario, el PROCESO: Expresado ser como resumida en resumen del anlisis podra de manerael siguiente: un lenguaje natural.

______________________________________________________________________ 47

Resumen del Anlisis SALIDA: (40 nmeros) Las calificaciones finales de los 40 estudiantes. Las calificaciones parciales de los 40 estudiantes.

ENTRADA: (varios nmeros) PROCESO:

De manera repetitiva y para cada estudiante se har lo siguiente: Proporcionar al computador las calificaciones parciales de un estudiante. Calcular la nota final del estudiante, basndose en las frmulas correspondientes. Imprimir o desplegar en el monitor, la nota final del estudiante.

EJERCICIOS 3.2 Complete brevemente las siguientes oraciones: 1.Cuando se dice que la ENTRADA de datos se realiza al principio de un programa, el trmino ENTRADA se refiere a: _______________________________________________________________ 2.Al indicar que la SALIDA de un programa la constituyen los promedios finales de un curso, el trmino SALIDA se refiere a: _______________________________________________________________ 3.Si se asevera que la Unidad Lgica/Aritmtica se encuentra en la unidad de PROCESO Central, la palabra PROCESO se refiere a: _______________________________________________________________ 4.Sin importar lo extenso de un anlisis, en el resumen siempre se especificar: _______________________________________________________________ 5.Es importante tener muy claro cual es la SALIDA de un programa ya que: _______________________________________________________________

3.3

ELEMENTOS EN EL ANLISIS DE UN P.O.P. PARTE I

______________________________________________________________________ 48

No se proporciona un mtodo rgido para desarrollar el anlisis de un p.o.p.. La dificultad del mismo, la experiencia y formacin del analista son factores que influyen en la forma y extensin del anlisis. Sin embargo siempre debe tenerse en cuenta que: El anlisis de un p.o.p. est orientado al diseo del plan de un programa. Los componentes bsicos que se desean comprender y definir son: o La salida o La entrada o El proceso El anlisis debe conducir al formato del resumen que contiene los componentes bsicos. Debe profundizarse el anlisis hasta definir claramente los componentes anteriores

No debe realizarse ms anlisis de lo necesario, si ya se han definido los componentes bsicos. Cabe mencionar decir que despus de realizar un Plan de Anlisis que culmina en la realizacin de un Resumen del Anlisis, se introducir una tcnica para generar desgloses. Estos desgloses (pueden validarse con Pruebas de Escritorio simulando al computador con papel y lpiz), posteriormente se transformar a un pseudocdigo algortmico que se llama Nolae o Notacin lineal de algoritmos estructurados (al que tambin se le pueden aplicar directamente las pruebas de escritorio), ste puede fcilmente traducirse o codificarse en una gran diversidad de lenguajes de programacin. El programa ya codificado se introduce al computador al igual que los datos, obtenindose as, la solucin del p.o.p. planteado. (Vase esta secuencia ilustrada en la Figura 3.3)

______________________________________________________________________ 49

P. O. P

Plan del Anlisis

Prueba de escritorio Resumen del Anlisis Desglose 1er.y 2do. Algoritmo Nolae

SOLUCION

Cdigo en Lenguaje Ada95 Prueba de escritorio

DATOS

Figura 3.3 El analista tiene la libertad de realizar el anlisis de la manera que considere eficaz y efectiva. Existen muchos caminos apropiados y correctos para llegar al resumen del anlisis, sin embargo a continuacin se presentan a travs del estudio de casos algunos elementos que pueden ser tiles para el desarrollo de un anlisis de p.o.p.

Ejemplo 3.2 (Promedio final de un estudiante)


Caso 1: Se toma de nuevo el problema del profesor sobre el clculo de los promedios finales, pero que para fines de simplificacin se considera que nicamente tiene un solo estudiante. Una vez que se resuelva la situacin para un estudiante, se aplicar el anlisis para considerar todos los estudiantes del curso. El problema consiste en preparar el anlisis para el plan del programa que calcule el promedio final de un estudiante. Previamente se present como podra ser un resumen del anlisis y ahora se ver como se puede llegar a ese resumen. El primer elemento que se presenta es el denominado ejemplo de escritorio.

______________________________________________________________________ 50

El ejemplo de escritorio consiste en seleccionar un ejemplo o varios ejemplos y resolverlos manualmente, generalmente con lpiz y papel, y posiblemente con una calculadora manual. El propsito del ejemplo de escritorio es el de ganar experiencia operativa con respecto a la solucin del p.o.p., de visualizar situaciones que no se presentan explcitamente en el planteamiento del problema y de investigar casos especiales y su tratamiento.
EJEMPLO DE ESCRITORIO

Se supone que un estudiante obtuvo las siguientes calificaciones:


NOTA PORCENTAJE (ponderacin)

Primer examen parcial Segundo examen parcial Examen final Proyecto 1 Proyecto 2 Proyecto 3 Tarea 1 Tarea 2 Quiz 1 Tarea 3 Exposicin Quiz 2 Tarea 4

85 90 80 95 100 100 70 85 80 100 90 90 100

(20%) (20%) (30%) ( 5% ) ( 5% ) ( 5% ) (15% en total)

Para los exmenes, se multiplica cada calificacin por el porcentaje y se suman los resultados, tal como se muestra a continuacin: Primer examen parcial Segundo examen parcial Examen final 85 X (0. 20 ) 90 X (0. 20 ) 80 X (0. 30 ) = = = = 17.0 18.0 24.0 59.0
(1)

Puntos ganados por exmenes


(1)

Obsrvese que para calcular los porcentajes se multiplica la nota por el porcentaje

dividido entre 100, de la siguiente manera: 85 X 20% = (85) (20) = (85) (0.20) = 17.0 100

______________________________________________________________________ 51

De la misma manera se trabaja con los proyectos: Proyecto 1 Proyecto 2 Proyecto 3 Puntos ganados por proyectos 95 X ( 0.05 ) = 100 X ( 0.05 ) = 85 X ( 0.05 ) = = 4.75 5.00 4.25 14.0

Con respecto a las tareas, quices, etc., si se les da el mismo valor, el camino ms rpido es el de encontrar el promedio y luego aplicar el porcentaje. Para calcular el promedio se suman todas las notas y se dividen entre el nmero de notas, en este caso son 7. Tarea 1 Tarea 2 Quiz 1 Tarea 3 Exposicin Quiz 2 Tarea 4 Suma 70 85 80 100 90 90 100 Promedio = 615 7 615 = 87.86

Por lo tanto los puntos ganados por proyectos seran: 87.86 x 0.15 = 13.05 Finalmente si se suman los distintos puntajes se obtiene: Promedio Final = 59 + 14 + 14 = 86 % El ejemplo de escritorio anterior ha permitido trabajar con los detalles y proporciona un conocimiento operativo de la naturaleza del problema. Como en el problema existen muchos datos, los cuales debern ser almacenados en la memoria de la computadora, se considera conveniente en este anlisis identificar las variables y se prepara el DICCIONARIO DE VARIABLES. DICCIONARIO DE VARIABLES El Diccionario de Variables es un listado completo de las variables identificadas por su nombre, con sus tributos y una breve descripcin de la variable. ______________________________________________________________________ 52

En algunas ocasiones es apropiado presentar los nombres de las variables en orden alfabtico; en esta ocasin se har conforme se ha ido presentando en el ejemplo de escritorio para asegurar que la lista est completa. PARCIAL1 PARCIAL2 EXFINAL PROYEC1 PROYEC2 PROYEC3 TAREA1 TAREA2 QUIZ1 TAREA3 QUIZ2 TAREA4 Primer examen parcial Segundo examen parcial Examen final Proyecto 1 Proyecto 2 Proyecto 3 Tarea 1 Tarea 2 Quiz 1 Tarea 3 Quiz 2 Tarea 4 Nmero sin decimales entre 0 y 100 Nmero sin decimales entre 0 y 100 Nmero sin decimales entre 0 y 100. .. : : : : : : : : : : Nmero con 2 decimales entre 0 y 100

EXPOSICION Exposicin

PROMFINAL Promedio final

Los nombres de las variables se escogen de tal manera que permita identificarlas fcilmente con la naturaleza del valor que se depositar en ellas. Por ejemplo es mejor el nombre PROMFINAL que simplemente P. Por supuesto, un nombre ms descriptivo: PROMEDIO_FINAL_DEL_ESTUDIANTE podra ser completamente descriptivo, pero no es prctico al momento de programar, dada la extensin del mismo. No se requiere presentar un diccionario de variables cuando el problema involucra un pequeo nmero de variables, especialmente si los nombres escogidos definen muy bien la naturaleza de la variable y lo que representa. Actualmente, con la ayuda de procesadores de palabras es sencillo ordenar los nombres de las variables en orden alfabtico y se puede presentar de la siguiente manera: Diccionario de Variables EXFINAL EXPOSICION Examen final Exposicin

______________________________________________________________________ 53

PARCIAL1 PARCIAL2 PROMFINAL PROYEC1 PROYEC2 PROYEC3 QUIZ1 QUIZ2 TAREA1 TAREA2 TAREA3 TAREA4

Primer examen parcial Segundo examen parcial Promedio final Proyecto 1 Proyecto 2 Proyecto 3 Quiz 1 Quiz 2 Tarea 1 Tarea 2 Tarea 3 Tarea 4

FORMULAS Los clculos que intervienen en la solucin de un p.o.p. se pueden expresar en un lenguaje coloquial, por ejemplo: Sumar las calificaciones de los acumulativos y dividir el resultado entre 7. Afortunadamente el lgebra provee un lenguaje simblico el cual adems de simplificar la escritura, resulta preciso y sin ambigedades, a travs de las frmulas. Cuando en un p.o.p se efectan muchos clculos, o stos son un tanto complejos, se recurre al uso de frmulas para describir tales clculos. Cuando se considera conveniente presentar las frmulas en el anlisis, es importante revisar el contexto dentro del cual son aplicables. En el problema del clculo de promedios finales se definirn primero otras variables para clculos intermedios, las cuales se agregan al diccionario de variables: PG_EXAMEN PG_PROYECTO ACUMULATIVO PROM_FINAL Puntos ganados por exmenes Puntos ganados por proyectos Puntos ganados por tareas, quices, etc. Promedio final del estudiante

A continuacin se escriben las frmulas correspondientes:

______________________________________________________________________ 54

PG_EXAMEN PG_PROYECTO ACUMULATIVO PROM_FINAL

= PARCIAL1 * 0.20 + PARCIAL2 * 0.20 + EXFINAL * 0.302 = PROYEC1 * 0.05 + PROYEC2 * 0.05 + PROYEC3 * 0.05 = (TAREA1 + TAREA2 + TAREA3 + TAREA4 + EXPOSICIN + QUIZ1 + QUIZ2) / 7 * 0.15 = PG_EXAMEN + PG_PROYECTO + ACUMULATIVO

Se puede observar que en el ejemplo del problema del profesor para obtener los promedios finales de sus estudiantes se han utilizado tres elementos en el anlisis: EJEMPLO DE ESCRITORIO DICCIONARIO DE VARIABLES FORMULAS

Se pudo haber comenzado con las frmulas y el diccionario para luego realizar el ejemplo de escritorio. No existen reglas al respecto, La experiencia y formas personales de pensar determinarn el estilo de realizar un anlisis. Con lo anterior el anlisis est completo, y se proceder a resumirlo. RESUMEN DEL ANALISIS SALIDA: (1 nmero) el promedio final de un estudiante.

ENTRADA: (13 nmeros) las distintas calificaciones del estudiante. (Vase el Diccionario de Variables) PROCESO: Inicialmente se proporcionan al computador las calificaciones del estudiante. A continuacin se calculan los puntos ganados por examen, por proyectos y acumulativos, aplicando las frmulas correspondientes. El promedio final se obtiene sumando los puntos ganados. Por ltimo se enva a imprimir el resultado. Cuando se dice que se le proporciona al computador 13 nmeros, se quiere indicar que por medio de la unidad de entrada (que podra ser el teclado) se le introduce al computador los 13 nmeros que almacena en la memoria.

Se utilizar el asterisco * en lugar del smbolo de multiplicar X

______________________________________________________________________ 55

En el ejemplo, las distintas calificaciones del estudiante se almacenarn en las variables cuyos nombres aparecen en el diccionario. Para referirse a la accin de entrada de nmeros al computador se usa el verbo leer. De esta manera, si da a leer al computador el valor de PARCIAL1, se esta indicando que a travs de la unidad de entrada se le proporciona al computador un nmero que se almacena en la variable llamada PARCIAL1. De acuerdo al ejemplo de escritorio, ese nmero es 85, el cual ser tecleado y almacenado en PARCIAL1.

PARCIAL1 85 A su vez, para indicar que la computadora proporciona un resultado (que lo realiza a travs de la unidad de SALIDA) se dice que imprime el resultado, pensando que la salida la lleva a cabo por medio de la impresora; o bien, se dice que despliega los resultados, para indicar que los muestra a travs del monitor o pantalla. Por los momentos y para los fines de este capitulo es indiferente el medio por el cual se produce la salida, por lo cual se utilizarn los trminos desplegar, imprimir o escribir como si fueran sinnimos. Ahora se introducir otro elemento que se puede utilizar en el anlisis de un p.o.p. por medio del siguiente problema.

Ejemplo 3.3 (Pendiente e intercepto)


Preparar un anlisis para un programa por medio del cual se le proporcionan al computador las coordenadas de dos puntos P y Q en el plano cartesiano y se pide que encuentre la pendiente y la ordenada en el origen de la recta que pasa por los puntos P y Q. DESARROLLO DEL ANALISIS Suponiendo que se cuenta con una base mnima de geometra analtica, es apropiado revisar los conceptos involucrados en el ejercicio planteado. Esto significa que se revisa los conceptos tericos del problema, por lo que se introduce el marco terico en este ejemplo. ______________________________________________________________________ 56

Marco terico Dados dos puntos en el plano cartesiano P: (x,y) Q: (w,z) Si los puntos son distintos, y no se encuentran alineados verticalmente, existe una y solo una recta que pasa por P y Q, la pendiente de la recta viene dada por la frmula: y m= x = xw yz

que es vlida siempre y cuando x 0 sea que x w 0 (es decir x w) La ordenada en el origen (intercepto en y) se puede encontrar aplicando la siguiente frmula: b=ymx Por otra parte, se puede dibujar uno o varios grficos para poder tener una mayor idea del planteamiento expuesto. Grficos Se consideran las dos posibilidades, cuando x w y cuando x = w, en el primer caso la recta no es vertical (su pendiente existe) y en el segundo caso la recta es vertical (se dice que la pendiente no existe o que es infinita) y L y L

x x w x=w

Para efectos de simplificar el programa, se supone que ciertas condiciones con respecto a los datos se cumplen de antemano. Estas premisas o condiciones supuestamente vlidas en el desarrollo del problema, se denominan hiptesis.

______________________________________________________________________ 57

HIPOTESIS 1. 2. Las coordenadas de los puntos corresponden a puntos distintos. Los puntos no determinan una recta vertical, por lo cual se tiene que x w.

La hiptesis 2 asegura que x w sea distinto de cero, por lo cual la divisin ser posible, y se puede encontrar la pendiente. EJEMPLO DE ESCRITORIO Con el marco terico ya desarrollado, se procede a realizar un ejemplo en el papel para tener una experiencia prctica del planeamiento, esto brinda la oportunidad de poder a su vez darse cuenta de cualquier otro aspecto no contemplado anteriormente. Sean P:(4,11) Q:(1,5) 15 entonces, m = 41 Ahora se encuentra el intercepto en el eje y : b=ymx = 11 2(4) = 11 8 = 3 Por lo tanto: la pendiente es y el intercepto es m=2 b=3 = 3 6 = 2

Finalmente se procede a redactar el RESUMEN DEL ANALISIS SALIDA: (2 nmeros) La pendiente m y el intercepto b X, Y, W, Z, los dos pares de coordenadas de los puntos P y Q en el plano cartesiano. PROCESO: Primero se dan a leer al computador los datos (x, y, w, z) y se aplican las frmulas de la pendiente y del intercepto. Los resultados obtenidos se envan a imprimir. ______________________________________________________________________ 58

ENTRADA: (4 nmeros)

EJERCICIOS 3.3. Para cada uno de los siguientes ejercicios se deber disear un programa; prepare el anlisis con su respectivo resumen para el plan del programa. 1.Se proporciona al computador el valor de venta de cuatro artculos y se desea imprimir el valor total de la venta, el valor del impuesto sobre venta y el monto total a pagar. 2.3.Dados los coeficientes a, b y c de una ecuacin cuadrtica: ax2 +bx + c = 0 encontrar las races o soluciones de la ecuacin. En una encuesta se entrevistaron 7 personas. Se les pregunt si posean computadoras. Al computador se le proporcionarn las respuestas de manera codificada: un 1 cuando la respuesta fue Si y un 0 cuando a respuesta fue No. Se desea determinar cuantas personas poseen computadoras 4.Tres personas deciden asociarse para iniciar una empresa y cada una contribuye con cierta cantidad de dinero. Se le proporciona al computador estas cantidades y se desea conocer el porcentaje de participacin a cada socio. 5.La frmula de espacio-tiempo de la cada libre puede simplificarse por: S = g t + vot + So Donde g representa el valor de la gravedad, vo es la velocidad inicial y So es la distancia inicial recorrida. Si se proporcionan valores para t, vo y So, se desea encontrar el valor de S correspondiente.

3.4

DESGLOSES Y PRUEBAS DE ESCRITORIO

Una vez que se ha llegado al resumen del anlisis, se comienza a preparar el plan del programa en pasos sucesivos. En la parte de PROCESO del resumen, se especifica en trminos muy generales los principales pasos que se realizan para lograr la solucin del p.o.p.. Al preparar el plan del programa se ir identificando los distintos componentes del proceso, la secuencia y forma de ejecutarse. Se har partiendo de lo general y llegando a lo particular de una manera sistemtica; se dice que se va desglosando el problema en subproblemas ms pequeos; de tal manera que al final se tendr un plan completo y detallado para el programa. ______________________________________________________________________ 59

Este proceso de refinamiento de la solucin partiendo de los elementos generales a los ms particulares en distintos niveles para disear un programa se denomina Diseo descendente.

3.4.1 DESGLOSES EN SECUENCIA

Ejemplo 3.4 (Secuencia, Sueldo neto)


PROBLEMA: Preparar un anlisis y desglose para un programa en el cual se desea calcular el sueldo neto a pagar a un obrero que trabaja por horas. Algunas de las horas trabajadas son extras y se le pagan el doble. Adems de deducrsele la aportacin por el Seguro Social, se le deduce una cantidad por pago de vivienda. Solucin ANALISIS Antes de comenzar con un ejemplo de escritorio, se pueden hacer algunas anotaciones generales llamadas Estrategia, en ella se harn algunas consideraciones generales que sern de mucha utilidad en ejercicios posteriores y avanzados, en los cuales ya no se depender de realizar ejemplos de escritorio detallados. ESTRATEGIA: Se comienza definiendo cuales sern las salidas y las entradas de este programa: Por salidas se entender a lo que se desea obtener y mirar ya sea en el monitor o impreso en un papel. En este caso son: Salidas: Ingreso bruto, deduccin del seguro social y sueldo neto. Las entradas que son los datos que se debern introducir o teclear por medio de un teclado u otro medio y son: Entradas: Pago por hora, horas trabajadas, horas extra y pago de vivienda. 1.- EJEMPLO DE ESCRITORIO Se escogen datos ejemplos de manera arbitraria, como ser:

______________________________________________________________________ 60

Pago base por hora = 2.50 Horas Trabajadas = 147.00 Horas extras = 25 Deduccin IHSS de un 3.5 % Pago vivienda = 190.00 El ingreso bruto sera: Por horas ordinarias 147 X 2.50 Por horas extras Las deducciones seran: Aportaciones (3.5%) IHSS 492 X0.035 = 17.22 Vivienda = 190.00 207.22 Por lo tanto el sueldo neto sera : 2.- DICCIONARIO DE VARIABLES Identificador PHORA HTRABAJ HEXTRAS DIHSS VIVIENDA INGBRUTO TDEDUC SNETO HIPOTESIS 1.HTRABAJADAS > 0 2.INGBRUTO Ser a 600.00 y mayor (>) que VIVIENDA Descripcin . Pago base por hora Horas ordinarias trabajadas Horas extras trabajadas Deduccin para el IHSS Pago de vivienda Ingreso total bruto Total de deducciones Sueldo Neto 492 - 207.22 = 284.78 = 367.50 25 X 2.50 X 2 = 125.00 Ingreso total = 492.00

3.- FORMULAS 1.2.3.4.INGBRUTO = DIHSS TDEDUC SNETO = = = HTRABAJ * PHORA + HEXTRAS * PHORA * 2 INGBRUTO * 0.035 DIHSS + VIVIENDA INGBRUTO TDEDUC

______________________________________________________________________ 61

4.- RESUMEN DEL ANALISIS SALIDA: ( 3 nmeros ) INGBRUTO, DIHSS Y SNETO

ENTRADA: ( 3 nmeros ) PHORA, HTRABAJ, HEXTRAS, VIVIENDA PROCESO: Despus de leer los datos, se procede a efectuar los clculos aplicando las frmulas y se imprimen los resultados.

Observacin 3.4.1.1: La salida de los tres nmeros que se indican es selectiva en este caso; se puede discutir si la salida puede ser ms amplia (que incluya el total de deducciones, por ejemplo). Originalmente, en el planteamiento del problema, nicamente se solicita el sueldo neto. Sin embargo, en este tipo de problemas el estudiante puede incluir ciertos resultados intermedios en la salida, segn considere conveniente y de acuerdo a la naturaleza del problema. Es tambin de inters hacer notar que el problema anterior quiz no amerite tanto anlisis (y que en la prctica generalmente no se disea un programa como el del ejemplo que encuentra el sueldo neto para un solo empleado). El propsito de seleccionar un problema simple y sencillo, es el de minimizar la complejidad del problema para concentrarse en la metodologa de preparacin de programas usada en este texto.

5.-DESGLOSE Puede notarse que en la descripcin del proceso en el resumen anterior se pueden distinguir tres pasos importantes que ejecutara el programa 1.2.3.LECTURA DE DATOS CALCULOS IMPRESION DE RESULTADOS

El bosquejo anterior se denomina Primer Desglose o Desglose a nivel 1. Es importante observar que en el primer desglose no se detallan los pasos, nicamente se describen en forma general y en el orden en que se ejecutarn. En el ejemplo, primero se ejecuta el nmero 1, luego el 2 y finalmente el 3, de acuerdo a la numeracin y orden secuencial en que se han presentados los pasos. Cuando las instrucciones se realizan en secuencia, una } ______________________________________________________________________ 62

despus de otra, se dice que las instrucciones estn concatenadas o que su estructura es una concatenacin. A continuacin se detalla cada uno de los tres pasos anteriores. 1.LECTURA DE LOS DATOS 1.1 Leer de Pago base por hora 1.2 1.3 1.4 2.Leer de Horas ordinarias trabajadas Leer de Horas extras trabajadas Leer de Pago de Vivienda

CALCULOS 2.1 Clculo del Ingreso Bruto 2.2 2.3 2.4 Clculo de la deduccin IHSS Clculo del total de deducciones Clculo de Sueldo Neto

(Frmula-1) (Frmula-2) (Frmula-3) (Frmula-4)

3.-

IMPRESIN DE RESULTADOS 3.1 Impresin del Ingreso Bruto 3.2 3.3 Impresin del total de deducciones Impresin del sueldo neto

Y as se completa el segundo desglose. De esta manera se tiene un plan del programa con 11 instrucciones sencillas (desde la 1.1 hasta la 3.3) que se ejecutan una tras otra en el orden en que se presentan; es decir, las instrucciones estn en secuencia o concatenacin. Este ejemplo ilustra la organizacin tpica de las instrucciones de acuerdo al modelo de computador adoptado; instrucciones de entrada de datos, instrucciones de proceso interno e instrucciones de salida. Sin embargo, no siempre este es el orden en que se ejecutan las instrucciones. 6.PRUEBA DE ESCRITORIO (P.E.)

Una manera de comprobar si el desglose est correcto es probndolo. Se hace el papel de la computadora, y con la ayuda de lpiz y papel se procede a ejecutar las instrucciones. Como se ha mencionado anteriormente las lecturas corresponden a operaciones de entrada de ______________________________________________________________________ 63

datos. Esto significa que los datos que dispone el usuario se los comunica al computador por medio de una unidad de entrada, o sea que el usuario teclea los datos, los cuales son almacenados en las variables de la memoria, y de esta manera se lleva a cabo la lectura de los datos. Ver Figura 3.3 Nuevamente, al distinguir los elementos de la prueba de escritorio (P.E.) se debe recurrir al modelo de computador adoptado y de esta manera se determinarn tres componentes en la prueba de escritorio: Datos Para representar los datos que el usuario le proporcionara al computador, que seran los que se estarn tecleando. Memoria Salida Para representar las variables y sus valores. Para representar lo que aparecera en la pantalla o que sera impreso en el papel. Para realizar la P.E. es conveniente tomar inicialmente los datos del ejemplo de escritorio para comparar los resultados. Los datos se escriben en el orden en que van leyendo y, para no perder la secuencia se irn tachando de la lista para indicar que ya han sido introducidos en la memoria. Al ejecutar la P.E. se debe realizar las operaciones evitando forzar los resultados que se desea tener. Se debe tener en mente que la P.E. se realiza para comprobar la validez de las instrucciones escritas y para verificar que el orden en que se han escrito tambin est correcto. Se comienza dibujando los componentes de la prueba de escritorio: Datos: 2.50, 147, Memoria: 25, 190

______________________________________________________________________ 64

Salida:

En la salida, la primera figura representa la pantalla del monitor y la segunda un trozo de papel que sale de la impresora. En las P.E. se dibuja cualquiera de ellas indistintamente por ahora. Se van ejecutando las instrucciones, una por una, en el orden indicado ya que se presentan de manera secuencial. 1.1 Leer pago base por hora De forma parecida a la asignacin, se identifica con un nombre la variable receptora y poner en su valor el nmero correspondiente. En este caso el primero que se encuentra en la lista de datos de entrada, el cual se tacha para indicar que ha pasado del teclado a la memoria. Datos: 2.50, 147, 25, 190

Memoria: PHORA 2.50

Salida:

En las mismas figuras se realizan las siguientes lecturas, una por una, de la misma forma, ______________________________________________________________________ 65

hasta llegar a lo siguiente: Datos: 2.50, 147, 25, 190 Memoria: PHORA 2.50 HTRABAJ 147 HEXTRAS 25 VIVIENDA 190

Salida:

A continuacin se procede a ejecutar los clculos que corresponden a las asignaciones. No es innecesario recordar que estos clculos se ejecutan uno por uno; que uno por uno se van apuntando en la memoria, de manera secuencial, hasta llegar a lo siguiente: Datos: 2.50, Memoria: 147, 25, 190

PHORA 2.50

HTRABAJ 147

HEXTRAS 25

VIVIENDA 190

INGBRUTO 492

DIHSS 15.47

TDEDUC 205.47

SNETO 286.53

______________________________________________________________________ 66

Salida:

Finalmente en la escritura de los resultados, las instrucciones se realizan una por una. As: 3.1 Impresin del ingreso bruto ( INGBRUTO) En este caso se inspecciona el contenido de la variable INGBRUTO y se escribe en la figura que representa la salida. Ntese, que en este caso el valor del INGBRUTO en la memoria queda intacto, no se pierde. A diferencia de la escritura y la asignacin, la escritura NO es destructiva. Luego, se obtiene: Salida:

492.00

Se realiza el resto de las instrucciones de salida, una por una, inspeccionando los valores y escribindolos en la pantalla: Salida:
492.00 15.47 205.47 286.53

Al comparar estos resultados con los del ejemplo de escritorio se comprueba que el desglose escrito est correcto. ______________________________________________________________________ 67

Se har un REPASO de lo visto hasta ahora desarrollando el siguiente ejemplo:

Ejemplo 3.5 (Repaso, Secuencia, Venta de dos artculos)


Preparar el anlisis para el plan de un programa, en el cual se le proporciona al computador los precios de venta de dos artculos y se desea imprimir el total a pagar por el comprador, se deber considerar el 12% de impuesto. ESTRATEGIA Se comenzar definiendo cuales sern las salidas y las entradas de este programa: Por salidas se refiere a lo que se desea obtener y mirar ya sea en el monitor o impreso en un papel. En este caso es el total a pagar por el cliente incluyendo el 12% de impuesto, lo cual es un nmero.

Pantalla Salida
1120.00

1120.00 seria el Total, as en forma resumida: Salida Total

Por entradas se refiere a los datos que se le proporciona al computador, que se introducen por medio de la unidad de entrada (Ejemplo teclado), y que sern almacenados en la memoria. Para el ejemplo son los dos precios de los artculos: Precio del artculo 1 y Precio del artculo 2, o sea dos nmeros: Teclado Entrada Entrada Precio del artculo 1 Precio del artculo 2

______________________________________________________________________ 68

PLAN DEL ANALISIS 1. EJEMPLO DE ESCRITORIO:.Con l se inicia el anlisis, en el cual se resuelve el problema a mano con datos especficos Precio del 1er. artculo = 425 Datos de entrada supuestos Precio del 2do. artculo = 575 Subtotal =425 +575 = 1000 Isv =1000 * 0.12 = 120 Total = 1000 + 120 = 1120 2. DICCIONARIO DE VARIABLES Identificador Precio1 Precio2 Subtotal ISV Total 3. FORMULAS Subtotal =precio1 + precio2 Isv =subtotal * 0.12 Total =subtotal + isv 4. RESUMEN DEL ANALISIS SALIDA: ENTRADA: PROCESO: (1 nmero) Total (2 nmeros) Precio1, Precio2 Inicialmente se introduce a la computadora precio1, precio2, se calcula el subtotal, isv y el Total con las frmulas respectivas, finalmente se imprime el Total. (Frmula-1) (Frmula-2) (Frmula-3) Descripcin Precio del artculo 1 Precio del artculo 2 Subtotal Impuesto sobre ventas Total a pagar por el cliente

______________________________________________________________________ 69

Antes de proceder al desglose se comenta nuevamente la relacin entre las entradas con la lectura y las salidas con la impresin:

Leer: (Lectura) es la instruccin que se encarga de tomar un valor que el usuario


proporciona a travs de un dispositivo de entrada (p.e. teclado) y lo almacena en una variable. En el ejemplo de escritorio se enunci que las entradas eran dos nmeros: el precio del primer artculo y el precio del segundo artculo y se introdujeron los valores 425 y 575 para cada uno. Las instrucciones para almacenar los valores tecleados en las variables correspondientes seran: Leer El Precio del Artculo 1 (Precio1) Leer El Precio del Artculo 2 (Precio2)

Imprimir: (Impresin) es la instruccin que toma el valor de una variable y lo muestra al


usuario a travs de un dispositivo de salida (p.e. monitor). A la accin de escribir tambin se le conoce como impresin. En el ejemplo de escritorio se detall que la salida era 1120.00. Este valor est contenido en la variable Total. La instruccin que muestra este valor en la pantalla sera: Imprimir el Total a Pagar por el Cliente (Total). Considerando lo anterior, se identificarn los distintos componentes del Proceso del Resumen del Anlisis, su secuencia y forma de ejecutarse. Se har partiendo de lo general y llegando a lo particular, de manera sistemtica; se dice que se va desglosando el problema en sub-problemas ms pequeos.

5. DESGLOSES Desglose 1 er. Nivel 1. Lectura de datos 2. Clculos 3. Impresin de resultados

______________________________________________________________________ 70

Desglose 2do Nivel 1. LECTURA DE DATOS 1.1 Leer Precio1 1.2 Leer Precio2 2. CALCULOS 2.1 Calcular Subtotal 2.2 Calcular Isv 2.3 Calcular Total (Frmula-1) (Frmula-2) (Frmula-3)

3. IMPRESIN DE RESULTADOS 3.1 Imprimir Total

6.

PRUEBA DE ESCRITORIO

Datos: 425, 575 Memoria: Precio1 425 Precio2 575 Subtotal 1000 ISV 120 Total 1120 Salida

1120

EJERCICIOS 3.4.1 1.-Haga el desglose de los EJERCICIOS 3.3 con la prueba de escritorio respectiva. 2.-Para los siguientes problemas se desea el anlisis y desglose para los programas que resuelvan los siguientes problemas. (Realice la P.E para comprobacin). a) Se desea programar una mquina vendedora de boletos que esta computarizada y que reconoce y acepta billetes de 1, 2, 5 y 10 lempiras. Cada boleto cuesta Lps. 6.00 y se le da a leer la cantidad de boletos que se desean y la cantidad de billetes de las distintas denominaciones que se le da. El programa deber calcular el cambio que se devuelve. ______________________________________________________________________ 71

b) La computadora lee una cantidad de tiempo en horas, minutos y segundos, y calcula el total de segundos que corresponden al tiempo dado. c) Conociendo la base y la altura de un tringulo, se desea encontrar el rea del mismo. d) Del Apndice A, pg.279-280, (desgloses en secuencia): d.1) d.2) d.3) d.4) Ejercicios del 1 al 4 Ejercicios del 5 al 8 Ejercicios del 9 al 12 Ejercicios 13 y 14

3.4.2

DESGLOSE CON INSTRUCCIONES EN DECISION

Ejemplo 3.6 (Decisin, Venta con descuentos)


PROBLEMA Realizar el anlisis y preparar el desglose correspondiente para un programa que se producir para la siguiente situacin: En una tienda se otorgar a los clientes descuentos en sus compras. Si el valor de la venta (excluyendo el 12% de impuesto sobre venta-isv) es de de Lps. 200.00 menos, se le concede un descuento del 10%, si es de ms de Lps. 200.00, el descuento ser de 20%. Se le proporciona al computador el valor de la venta, se desea calcular el descuento, el Isv. y el valor total a pagar.

ANALISIS EJEMPLO(S) DE ESCRITORIO Considrense dos Casos: 1.2.La venta es de Lps. 200.00 menos La venta es de ms de Lps. 200.00 (En lenguaje simblico: Venta > 200.00, se escogi arbitrariamente)

______________________________________________________________________ 72

EJEMPLO DE ESCRITORIO 1 El valor de la venta es de El descuento sera de 10% o sea Subtotal, Valor de venta con descuento 12 % ISV Total a pagar Lps. 150.00 Lps. 15.00 (1) Lps. 135.00 Lps. 16.20 Lps. 151.20

(1) Para calcular un porcentaje de una cantidad, se multiplica la cantidad por el valor del

porcentaje y se divide entre 100. En este ejemplo el descuento se calcul as: (150) (10) = 15 100 EJEMPLO DE ESCRITORIO 2 El valor de venta es de EL descuento sera de 20% o sea Subtotal, (Valor de venta con descuento) 12 % isv TOTAL a pagar 2.- DICCIONARIO DE VARIABLES NOMBRE Val_Venta Descuento Subtotal Isv Total DESCRIPCION Valor de la venta sin isv. Valor del descuento Nuevo valor de venta con descuento Valor del isv. Total a pagar UNIDADES (En Lps.) (En Lps.) (En Lps.) (En Lps.) (En Lps.) Lps. 300.00 60.00 ___________ Lps. 240.00 28.80 ___________ Lps. 268.80 bien (150) (0.10) = 15

______________________________________________________________________ 73

3.- FORMULAS Descuento = Val_Venta * 0.10 Descuento = Val_Venta * 0.20 Subtotal=Val_Venta Descuento Isv= Subtotal * 0.12 Total = Subtotal_Val + Isv. 4.- RESUMEN DEL ANALISIS SALIDA: (4 nmeros) Descuento, Subtotal, Isv, Total Val_Venta Caso 1 Caso 2 (Frmula-1) (Frmula-2) (Frmula-3) (Frmula-4) (Frmula-5)

ENTRADA: (1 nmero) PROCESO:

Se lee el valor de la venta, se determina si es superior a 200 o no calcular el descuento respectivo, luego se calcula el subtotal, el isv y el total, para terminar imprimiendo los resultados.

5.- DESGLOSES 1er Nivel 1.2.3.2do Nivel nicamente el 2do paso amerita mayor desglose 2.CALCULO DE VALORES 2.1 2.2 2.3 2.4 3er Nivel Para efectuar los clculos anteriores se aplican simplemente las frmulas correspondientes, excepto en el caso de la deduccin (paso num. 2.1), en el cual antes de aplicar una de las ______________________________________________________________________ 74 Calcular deduccin Calcular Subtotal con deduccin Calcular Impto. Sobre venta Calcular Total a pagar Lectura de dato Clculo de Valores Impresin de resultados

dos frmulas se tiene que determinar si el valor de venta es mayor a Lps. 200.00. 2.1 CALCULO DE LA DEDUCCION 2.1.1 Ver si el valor de venta es mayor de 200 (Val_venta > 200) 2.1.1.1 (Verdadero) Calcular la deduccin con el 20% 2.1.1.2 (Falso) Calcular la deduccin con el 10% Ntese que si el valor de venta no es mayor de 200 en el Ramal Falso no se pregunta si es menor o igual qu 200, pues esto es tcito, ya que una proposicin solo tiene dos valores de verdad: V o F. RESUMEN DEL DESGLOSE Como se ha ido refinado (desglosado) algunos pasos de manera separada, cuando se consider que se deberan detallar con mayor profundidad; resulta entonces conveniente integrar las partes en un solo desglose que constituir el plan del programa que resolver el problema propuesto (el p.o.p). 1. LECTURA DEL DATO 1.1 2. Leer Val_venta

CALCULO DE VALORES 2.1 Ver si el Val_venta > 200 2.1.1 (Verdadero) Calcular la deduccin con el 20% 2.1.2 (Falso) Calcular la deduccin con el 10% 2.2 2.3 2.4 Calcular Subtotal con deduccin Calcular impuesto sobre venta Calcular total a pagar (Frmula-1) (Frmula-2) (Frmula-3) (Frmula-4) (Frmula-5)

3.

IMPRESIN DE RESULTADOS 3.1 Imprimir Val_venta, Descuento, Subtotal, Isv, Total3 (1)

Se pueden imprimir varios valores en una misma instruccin, pero siempre se preferir imprimir un valor en cada inciso.

______________________________________________________________________ 75

En la seccin anterior las instrucciones estaban organizadas de manera secuencial. Una se ejecutaba despus de la otra, en el orden en que se presentaban. Se dijo que las instrucciones estaban concatenadas o bien que su estructura es la concatenacin. En el ejemplo se encuentran dos instrucciones: 2.1.1 y 2.1.2 que se presentan una seguida de la otra y con numeracin correlativa, pero que NO se ejecutan de manera secuencial. La ejecucin de 2.1.1 y de 2.1.2 depende de la condicin Val_Venta >200 y dependiendo del resultado de la evaluacin, que puede ser V o F, se ejecuta 2.1.1 o 2.1.2 correspondientemente, PERO NO AMBAS. Se dir entonces que la instruccin 2.1 tiene la estructura de una decisin, en el desglose antes de la condicin Val_venta >200, se colocan las palabras Ver si denotando que para determinar que curso de accin se va a tomar, se Verificar primero si la condicin (de decisin) se cumple o no. En una estructura de decisin se evala una condicin; como en este ejemplo, si la condicin resulta Verdadera, se ejecuta la instruccin 2.1.1. (Y se ignora la 2.1.2). Pero si la condicin es Falsa, se ejecuta la instruccin 2.1.2 (se ignora la 2.1.1). De tal manera que slo una de las dos instrucciones 2.1.1 2.1.2 se ejecutar al realizar la decisin 2.1. Despus de ejecutar la decisin 2.1. Se procede con 2.2, ya que 2.1 y 2.2 estn concatenadas, seguidamente se ejecutan 2.3 y 2.4. A la instruccin 2.1.1 se le llama la rama Verdadera de la decisin, a 2.1.2 la rama Falsa. Por lo tanto, se puede resumir, que ejecutar una decisin implica evaluar la condicin de la decisin y ejecutar una y solo una de sus dos ramas.

6.- PRUEBA DE ESCRITORIO Para probar completamente el desglose anterior, se tienen que hacer dos pruebas de escritorios con dos datos distintos, para poder probar las dos ramas. Los resultados de las pruebas son las siguientes: Prueba 1 Datos1: 150

______________________________________________________________________ 76

Memoria Val_Venta 150 Descuento 15 Subtotal 135 Isv 9.45 Total 144.45

Salida: 15.00 135.00 9.45 144.45

Prueba 2 Datos2: Memoria: Val_Venta 300 300 Salida: Descuento 60 Subtotal 240 Isv 16 Total 256 15.00 135.00 9.45 144.45

Observacin 3.4.2.1: Quizs hubiera sido conveniente agregar el valor de la venta en la lista de valores a imprimir, normalmente esto se hace en la prctica. Por ahora, el enfoque de este texto se centrar en el diseo de la lgica del programa; y a medida que se avance en la presentacin de los temas, se irn perfeccionando las propuestas de solucin.

Ejemplo 3.7 (Decisin, Boletos Tegucigalpa, San Pedro Sula SPS)


Una compaa de transporte dispone del servicio entre las ciudades de Tegucigalpa y San Pedro Sula. Se ofrecen dos tipos de tarifa (Primera clase y clase econmica) de Lps. 200.00 y Lps 110.00 respectivamente. Se le proporciona al programa el nmero de boletos y el cdigo de tarifa deseado (Cdigo = 1 para primera clase, cdigo = 2 para clase econmica) y se desea conocer el total a pagar (asumir que los boletos que se compran son de la misma tarifa). Reescribiendo la informacin anterior en forma esquemtica se tiene:

______________________________________________________________________ 77

Categora 1er Clase Clase econmica ESTRATEGIA:

Cdigo 1 2

Precio Lps. 200.00 Lps. 110.00

Se definen las Entradas y Salidas adems, se Verificara si el cdigo es igual a 1 o no para asociar el precio por boleto correspondiente, vale decir que si el cdigo no es 1 se entiende tcitamente que es igual 2, se considera que no existe la posibilidad de equivocacin al introducir el cdigo (1 2), lo anterior implica que se utilizar una estructura de decisin, mostrando un esquema se tiene: Cod Nbol

Salida

Pago

Entrada

Si Cod = 1 (Cod =2 )

(V) Precio = 200 (*) (F) Precio = 110 (**)

1. EJEMPLO DE ESCRITORIO Caso I Nbol = 2 Cod = 1 (*) Pago = 200 * 2 = 400 2.- DICCIONARIO DE VARIABLES Identificador Cod Nbol Pago 3.- FORMULAS Pago = 200 * Nbol Pago = 110 * Nbol (Frmula-1) (Frmula-2) Descripcin Nmero de boletos Total a pagar . Caso II Nbol = 3 Cod = 2 (**) Pago = 110 * 3 = 330

Cdigo del tipo de tarifa

______________________________________________________________________ 78

4.- RESUMEN DEL ANALISIS SALIDA: (1 nmero) Pago (1 mensaje) ENTRADA: (2 nmeros) Nbol, Cod PROCESO: Se lee Nmero de boletos (Nbol) y Cdigo (cod), si Cod=1, se calcula el Pago, con 1, sino con 2, y se imprime Pago con su respectivo mensaje.

5.- DESGLOSES 1er. Nivel 1. Lectura de datos 2. Clculos 3. Impresin de resultados 2do. Nivel 1. LECTURA DE DATOS 1.1 Leer Nbol 1.2 Leer Cod 2. CALCULOS (CLASIFICACION) 2.1. Ver si Cod = 1 2.1.1 (V) Calcular pago (Frmu1a-1) 2.1.2 (F) Calcular pago (Frmu1a-2) 3. IMPRESIN DE RESULTADOS 3.1 Imprimir Total a pagar Lps: 3.2 Imprimir Pago
Leer observacin 3.4.2.2

______________________________________________________________________ 79

Observacin 3.4.2.2. Para imprimir mensajes se har lo siguiente:


Definir el mensaje, este acepta palabras, espacios en blanco, smbolos especiales, etc.

Encerrarlo entre comillas. Preferiblemente se escribe en instrucciones separadas los mensajes y el contenido de las variables (Instrucciones 3.1, 3.2 del desglose anterior). En algunas ocasiones se puede hacer en la misma impresin, teniendo el cuidado de separa los mensajes de las variables con una coma , , por ejemplo: 3.1 Imprimir Total a pagar Lps. , Pago

A continuacin se comentar resolucin de este ejercicio

sobre las distintas estructuras que intervienen en la

Anlisis de Estructuras Concatenacin: 1, 2, 3 1.1, 1.2 3.1, 3.2 Se colocan en grupos por rengln para enfatizar la secuencia entre las instrucciones Decisin: 2.1 Es el numeral en que comienza la condicin de la decisin, est a la izquierda de la expresin Ver si. 6.- PRUEBA DE ESCRITORIO Datos 1: 2, 1 Memoria: Nbol 2 Cod 1 Pago 400 Salida: Total a Pagar Lps. 400

______________________________________________________________________ 80

Datos 2: 3, 2 Memoria: Nbol 3 Cod 2 Pago Total a Pagar Lps. 330 330 Salida:

Ejemplo 3.8 (Decisiones anidadas, Clasificar un nmero en negativo, cero y positivo.)


Determinar e imprimir si un nmero es positivo, negativo o cero. ESTRATEGIA: Negativo Salida Mensaje Cero Positivo Se clasificar el nmero X de acuerdo a los siguientes criterios: Negativo X < 0, Cero X = 0, Positivo X>0 Entrada X

Se usar: la recta real y DECISIONES ANIDADAS (Se ampliar este tema en el la seccin 3.5 Diagramas de Arbol)

Si X < 0 (V)
0

Negativo

(F) Si X = 0 (V) (F) RESUMEN DEL ANALISIS: SALIDA: (1 Mensaje) Negativo, Cero o Positivo
0

0
0

Cero Positivo

ENTRADA: (1 nmero) X

______________________________________________________________________ 81

PROCESO: Se lee el nmero X, mediante decisiones anidadas (Ver mas adelante la Observacin 3.4.2.3) se clasifica (X) e imprime el mensaje correspondiente. 6. DESGLOSES 1er. Nivel 1. Lectura de datos 2. Clasificacin e impresin 2do. Nivel 1. LECTURA DE DATOS 1.1 Leer X 2. CLASIFICACION E IMPRESION 2.1 Ver Si X < 0 2.1.1 (V) Imprimir Negativo 2.1.2 (F) Ver Si X = 0 2.1.2.1 (V) Imprimir Cero 2.1.2.2 (F) Imprimir Positivo Observacin 3.4.2.3: En los ramales (V) o (F) de una decisin, se puede a su vez haber otra decisin con sus respectivos Ramales, en el ejemplo anterior se nota que la decisin 2.1 posee en su ramal (F) la decisin 2.1.2

6.-. PRUEBA DE ESCRITORIO Dato 1: 0 Memoria: X 0 Salida Cero Dato 2: -3 Memoria: X -3 Salida Negativo Dato 3: 8 Memoria: X 8 Salida Positivo

______________________________________________________________________ 82

EJERCICIOS 3.4.2 Para cada uno de los problemas que se presentan se deber preparar el anlisis y desglose del programa correspondiente: 1.Dado el sueldo de un trabajador, aplicarle un aumento del 15% si su sueldo es inferior a L. 1000.00 y 12 % en caso contrario. Imprimir el nuevo sueldo. 2.Modificar el problema de la planilla de pagos suprimiendo la hiptesis que limita el ingreso bruto a Lps. 600.00. Si el ingreso bruto es de Lps.600.00 mas, la deduccin por el IHSS es fija de Lps. 120.00. 3.4.Ejercicios de estructuras de decisin en el Apndice A del 15 al 21. Una persona tiene una cantidad D de dinero en depsito en una cuenta de ahorro y desea retirar una cantidad R. Se da a leer D y R, si R es mayor o igual que D, el retiro se reduce a la cantidad depositada y se determina la nueva disponibilidad de Dinero,.en caso contrario se deber imprimir Fondos insuficientes (Referencia ejercicio 3.5 inciso 2 Hacerlo siguiente para ramales con mas de una instruccin)

3.4.3 DESGLOSE CON INSTRUCCIONES EN REPETICION

Ejemplo 3.9 (Repeticin centinela, Alquiler de automvil, Kilometraje)


Preparar un anlisis y desglose para un programa en el cual: Se leen varios nmeros que corresponden al kilometraje recorrido por varios clientes de una compaa que alquila automviles. Se cobra Lps. 200.00 base por alquiler del automvil y Lps. 0.50 por cada kilmetro (Km.) recorrido, Sin embargo si el kilometraje excede

100 kms. El costo por Km., es nicamente de Lps. 0.35 y la base es de Lps. 215.00,
Se desea calcular el pago que efectu cada cliente de acuerdo al kilometraje ledo. Al final de los nmeros de colocar un valor ficticio de cero (centinela), para indicar fin de datos. ESTRATEGIA: Se procesar cada cliente es decir se calcular el pago de cada cliente, uno por uno, dentro ______________________________________________________________________ 83

de un proceso repetitivo que se realizar siempre y cuando el kilometraje sea distinto de

cero (Km 0). Cuando Km = 0, el proceso termina. Para calcular cada pago, se Verificar
si Km > 100 o no para aplicar las tarifas correspondientes, ya que stas cambian en la base y el precio por Km. recorrido, simblicamente se tiene: Salida Pago (Varios) Entrada Km (Varios)

Verificar si km > 100 (V) base = 215 (F) Decisin base = 200

Costo por Km = 0.35 Costo por Km = 0.50

Se deber usar una decisin para el clculo del pago, ya que segn sea el valor del kilometraje recorrido (Km > 100), cambia la base y el precio por Km. recorrido. Repeticin Valor ficticio de fin de datos (centinela igual a cero) Km = 0 Condicin de repeticin Km 0 1.- EJEMPLO DE ESCRITORIO Caso 1 Kms. = 150 se cobra a 0.35 c. el Km. = 215 + 0.35 * 150 = 215 + 52.50 = 267.50 Caso 2 Kms. = 60 se cobra a 0.50 c. el Km. Pago = Base + gasto por kilometraje (kilmetros recorridos X costo por kilmetro) = 200 + 0.50 * 60 = 200 + 30 = 230 Pago = Base + gasto por kilometraje (kilmetros recorridos X costo por kilmetro)

______________________________________________________________________ 84

2.-DICCIONARIO DE VARIABLES Identificador Km Pago 3.- FORMULAS Pago = 215 + 0.35 * Km Pago = 200 + 0.50 * Km 4.- RESUMEN DEL ANALISIS SALIDA: ENTRADA: (Varios nmeros) Pago de cada cliente, pago 1 en cada ciclo (Varios nmeros) El kilometraje de cada cliente, Km 1 en cada ciclo PROCESO: Consiste fundamentalmente en un proceso repetitivo que se realiza mientras el kilometraje ledo sea distinto de cero. Dentro del proceso se calcula e imprime el pago. O bien Proceso repetitivo controlado por centinela (Km 0), en el cual para cada cliente se lee el valor de Km, si Km > 100, se calcula el Pago con 1, sino con 2, y se imprime el Pago. 5.- DESGLOSE Un primer intento de desglose comprendera nicamente el proceso repetitivo dentro del cual se realiza el proceso, cliente por cliente, se puede expresar de la siguiente manera. PROCESO DE CALCULO POR CLIENTE Siempre y cuando el kilometraje ledo sea distinto de cero (o sea, mientras Km 0), repetir lo siguiente: (Frmula-1) (Frmula-2) Descripcin Kilmetros recorridos Pago por el alquiler del vehculo .

______________________________________________________________________ 85

El problema con este intento es que asume que se conoce Km., el cual en realidad NO se ha ledo an. Por lo cual es necesario disponer de ciertos pasos iniciales antes del proceso repetitivo. De esta manera, una mejor propuesta sera la siguiente: 1.PASOS INICIALES 1.1 2.Leer el primer dato (Km)

PROCESO DE CLCULO POR CLIENTE 2.1 Mientras Km sea distinto de cero (Km 0) hacer lo siguiente repetidamente 2.1.1 Realizar el Proceso del Cliente 2.1.2 Leer el siguiente dato (Km)

Se desarrolla un nivel de desglose mayor para 2.1.1 2.1.1. PROCESO POR CLIENTE 2.1.1.1 Ver si Km. > 100 2.1.1.1.1 (V) Calcular pago con Frmula-1 2.1.1.1.2 (F) Calcular pago con Frmula-2 2.1.1.2 Imprimir el valor del pago * Sntesis del Desglose 1.PASOS INICIALES 1.1 2.Leer el primer dato (Km.) Caso 1 Caso 2

PROCESO DE CLCULO POR CLIENTE 2.1


Mientras Km. sea distinto de cero (Km. 0) hacer lo siguiente repetidamente

2.1.1 PROCESO POR CLIENTE 2.1.1.1 Ver si Km. > 100 2.1.1.1.1 (V) Calcular pago con Frmula-1 2.1.1.1.2 (F) Calcular pago con Frmula-2 2.1.1.2 Imprimir el valor del pago 2.1.2 Leer el siguiente dato (Km.)4 Caso 1 Caso 2

Leer la Observacin 3.4.3.1 en la siguiente pgina.

______________________________________________________________________ 86

Observacin 3.4.3.1 Las lneas marcadas con una estrella, son las 3 caractersticas de una repeticin controlada con centinela, cuando de las variables de entrada se ha seleccionado la que se comparar con el Centinela (dato no posible) se deber: Leer (el primer dato) VARIABLE En la lnea del mientras se compara VARIABLE Centinela Al final del rango se debe Leer (el siguiente dato) VARIABLE Vale decir que aunque por error se omitiera esta lectura, de todas maneras el programa regresara a evaluar la condicin de repeticin, y al no modificar el valor de la VARIABLE se entrara a un ciclo de repeticin o Loop infinito, Cundo parara?

Se puede observar que el primer desglose sera: 1.- PASOS INICIALES 2.- PROCESO Ya no se dice que el primer paso es 1.- LECTURA DE DATOS, pues en este paso solamente se lee el primer dato, hasta despus en el 2.- PROCESO repetitivo, se lee el resto de los datos. Se adoptar entonces, el siguiente desglose general: Desglose 1er. Nivel 1.- Pasos Iniciales 2.- Proceso 3.- Pasos Finales Por brevedad el inciso 2.1.1 Realizar el proceso del cliente, se omitir y se detallarn los subincisos correspondientes en forma concatenada:

______________________________________________________________________ 87

Desglose 2do. Nivel 1.PASOS INICIALES 1.1 Leer el primer dato (Km.) 2.Pago= 215 + 0.35 * Km Frmula-1 Pago= 200 + 0.50 * Km Frmula-2

PROCESO DE CLCULO POR CLIENTE 2.1 Mientras Km. sea distinto de cero (Km 0) hacer lo siguiente repetidamente 2.1.1 Ver si Km. > 100 2.1.1.1 (V) Calcular pago con Frmula-1 2.1.1.2 (F) Calcular pago con Frmula-2 2.1.2 Imprimir el valor del pago 2.1.3 Leer el siguiente dato (Km.) Caso 1 Caso 2

Observacin 3.4.3.2 Al conjunto de instrucciones que se repiten, que en este caso son: 2.1.1 2.1.2 2.1.3 Se llama RANGO de la Repeticin

6.- PRUEBA DE ESCRITORIO Supngase que se tienen tres clientes: el primero con 150 Km, el segundo con 60 Km. y el tercero con 100. No se olvide que se debe agregar el cero, para indicar fin de datos. Se dir en este caso que cero desempea el papel de Centinela. Se comienza dibujando el esquema de la P.E. Datos: 150, 60, 100, 0 Memoria Salida

Luego se ejecuta el paso 1.1, Lectura del primer dato ______________________________________________________________________ 88

Datos: 150, 60, 100, 0 Memoria Km. Salida

150

Se sigue con el Paso 2.1. El proceso repetitivo se ejecutar siempre y cuando Km. no sea cero. Por lo cual se evala la condicin Km 0 y se encuentra qu su valor de verdad es (V), esto permite realizar el proceso repetitivo y se pasa al paso 2.1.1 que constituye una decisin en donde se evala la condicin Km > 100 la condicin resulta (V), y se calcula el Pago (paso 2.1.1.1) que realmente es una asignacin. Datos: 150, 60, 100, 0 Memoria Km Pago

150

267.50

Como se ejecuta la rama V (paso 2.1.1.1) de la decisin, se ignora el paso 2.1.1.2, y se realiza el paso 2.1.2, la impresin del Valor del Pago. En la salida Salida 267.50

Finalizando con la lectura del siguiente valor de Km instruccin 2.1.3

______________________________________________________________________ 89

Datos: 150, 60, 100, 0 Memoria Km Pago 267.5 150 60 Con lo cual termina la primera ejecucin de las instrucciones dentro del proceso repetitivo. Se esta listo para comenzar con las instrucciones de repeticin. Pero antes de repetir, se revisa si la condicin previa a la repeticin (Km 0) todava se mantiene. El nuevo valor de Km de 60 que efectivamente es diferente de cero (paso 2.1). y al evaluar la condicin. Km no es mayor que 100 (paso 2.1.1) por lo cual se procede con el paso 2.1.1.2: (F) Datos: 150,60, 100, 0 Memoria Km Pago 267.50 Salida

150 60

267.50 223.00

Se contina con la impresin del Pago de este cliente (2.1.2) Salida 267.50 230.00

Se realiza el paso 2.1.3, que es la lectura para el siguiente ciclo ______________________________________________________________________ 90

Datos: 150, 60, 100, 0 Memoria Km 150 60 100 Se regresa a revisar la condicin para continuar con la repeticin y puesto que se cumple que 100 es distinto de cero, se recomienza con el paso 2.1. con la decisin 2.1.1 en la condicin Km > 100 es F, lo que se aplica la frmula del caso 2 (2.1.1.2), y se imprime el resultado (2.1.2). Salida 267.50 237.00 250.00 Pago 267.50 230.00

Se termina el ciclo, leyendo el siguiente dato (paso 2.1.3) Datos: 150, 60, 100, 0 Memoria Km 150 60 100 0 Y aunque se sepa que ya no hay ms datos, se debe regresar a revisar si la condicin de repeticin se sigue cumpliendo o no. Como en este caso Km = 0, se tiene que la condicin Km 0 no se cumple (es Falsa); y por lo tanto, ya NO se realiza otro ciclo ms de la repeticin y el proceso termina. Pago 267.50 230.00 250.00 267.50 230.00 250.00 Salida

______________________________________________________________________ 91

Anlisis de Estructuras Concatenacin: 1, 2, 3 2.1.1, 2.1.2, 2.1.3 Decisin: Repeticin: 2.1.1 2.1 (Numeral a la izquierda de la palabra MIENTRAS del desglose)

Ejemplo 3.10 (Repeticin centinela, Boletos Tegucigalpa, SPS.) modificacin del


Ejercicio 3.7 de Desglose de Decisin: Una compaa de transporte dispone del servicio entre las ciudades de Tegucigalpa y San Pedro Sula. Se ofrecen dos tipos de tarifa (Primera clase y clase econmica) de Lps. 200.00 y Lps 110.00 respectivamente. Se le proporciona al programa el nmero de boletos y el cdigo de tarifa deseado (Cdigo=1 para primera clase, cdigo=2 para clase econmica) y se desea conocer el total a pagar (asumir que los boletos que se compran son de la misma tarifa).por varios clientes y al finalizar colocar el mensaje FIN DEL PROGRAMA. Utilice un valor ficticio de fin de datos (o centinela) adecuado. Observacin 3.4.3.3: Este ejemplo se realiz previamente solamente para un cliente (Ejemplo 3.7), ahora ser para varios clientes utilizando un proceso repetitivo, las entradas, los casos y frmulas son muy semejantes, se recomienda que al ver el desarrollo de este ejercicio se hagan comparaciones uno a uno entre los 6 pasos elaborados para ambos ejercicios.

ESTRATEGIA: Trabajando de manera ms simplificada se tiene: (Varios) Salida Pago Entrada (Varios) Nbol Cod ______________________________________________________________________ 92

Decisin: Verificar si cod = 1, precio de los boletos es 200 sino 110, as sern diferentes frmulas para calcular el pago.

Repeticin: Se procesarn varios clientes y se deber utilizar un valor ficticio de fin de datos, escogiendo uno de los datos de entrada: Nbol o Cod para utilizarlo como centinela con un valor no posible, as: Centinela Nbol = 0, Redactando la Condicin de repeticin, se tiene Nbol 0

1. EJEMPLO DE ESCRITORIO Caso I Nbol = 2 Cod = 1 Pago = 2 * 200 = 400 Caso II Nbol = 3 Cod = 2 Pago = 3 * 110 = 330 Caso III Nbol = 0

2.-DICCIONARIO DE VARIABLES Identificador Cod Nbol Pago Descripcin Cdigo del tipo de tarifa Nmero de boletos Total a pagar .

3. FORMULAS Pago = 200 * Nbol Pago = 110 * Nbol (Frmula-1) (Frmula-2)

4. RESUMEN DEL ANALISIS SALIDA: ENTRADA: (Varios nmeros, mensajes) Pago 1 por ciclo, 1 por ciclo (Varios nmeros) Nbol, Cod 2 por ciclo

______________________________________________________________________ 93

PROCESO:

Repeticin controlada por centinela (Nbol 0), en el cual para cada cliente Se lee el Nmero de boletos (Nbol) y Cdigo (cod), si Cod=1, se calcula el Pago con Frmula-1, sino con Frmula-2, y se imprime el Pago con su respectivo mensaje. Al terminar el proceso imprimir un mensaje de despedida.

5. DESGLOSES 1er. Nivel 1. Pasos Iniciales 2. Proceso 3. Pasos finales

2do. Nivel 1. PASOS INICIALES 1.1 Leer el primer dato, Nbol 2. PROCESO 2.1 Mientras Nbol 0 hacer lo siguiente repetidamente 2.1.1 Leer cod --Del primer cliente faltaba leer su cdigo5 2.1.2 Realizar el PROCESO POR CLIENTE 2.1.3 Leer el siguiente dato, Nbol 3. PASOS FINALES 3.1 Imprimir Fin del Programa El inciso 2.1.1 requiere un nivel mayor de desglose, ya que como se mencion en la estrategia el clculo del pago depende de si se cumple que Cod = 1, adems para cada cliente se deber imprimir dicho pago, solamente se suprime el titular PROCESO POR CLIENTE

Del primer cliente solamente se haba ledo el nmero de boletos (Nbol), se tena pendiente leer el cdigo (cod).

______________________________________________________________________ 94

DESGLOSE 2do Nivel 1. PASOS INICIALES 1.1 Leer Nbol 2. PROCESO 2.1 Mientras Nbol 0 hacer lo siguiente repetidamente 2.1.1 Leer Cod 6 2.1.2 Ver Si Cod = 1 2.1.2.1 (V) Calcular Pago 2.1.2.2 (F) Calcular Pago 2.1.4 Leer (el siguiente) Nbol 3. PASOS FINALES 3.1 Imprimir Fin del Programa 6. PRUEBA DE ESCRITORIO Dato: 2, 1, 3, 2, 0 Salida: Cod 1 2 Pago 400 330 Total a pagar Lps.400 Total a pagar Lps.330 Fin del programa (Frmula-1) (Frmula-2)

2.1.3 Imprimir Total a pagar: Lps , Pago

Memoria: Nbol 2 3 0

Anlisis de Estructuras Concatenacin: Decisin: Repeticin: 1, 2, 3 2.1.1, 2.1.2, 2.1.3, 2.1.4 2.1.2 2.1

Como se mencion antes, del primer cliente solamente se haba ledo el Nmero de boletos (nbol) solicitados, as que se tena pendiente leer el cdigo (cod).

______________________________________________________________________ 95

Comparando los PROCESOS de los Resumen del Anlisis de los Ejemplos 3.7 y el 3.10 para uno y para varios clientes:

Proceso del Resumen del Anlisis


UN cliente VARIOS clientes (repetitivo)

Ejemplo 3.7

Ejemplo 3.10
Repeticin controlada por centinela (Nbol 0), en el cual para cada cliente

Se lee Nmero de boletos(Nbol) y Cdigo (cod), si Cod=1, se calcula el Pago, con Frmula-1, sino con Frmula- 2, y se imprime Pago con su respectivo mensaje. Se lee el Nmero de boletos(Nbol) y , Cdigo (cod,) si Cod=1, se calcula el Pago con Frmula-1, sino con Frmula-2, y se imprime el Pago con su respectivo mensaje. Al terminar el proceso imprimir un Mensaje de despedida final

En el ltimo ejercicio se adicion un mensaje de despedida que pudiera no ir, as que la diferencia entre ambos desgloses es nicamente Repeticin controlada por centinela (cero, Nbol 0), en el cual para cada cliente, el lector esta listo para convertir a procesos de repeticin los ejercicios de las secciones anteriores, solamente se debe tener cuidado de incorporar las 3 lneas caractersticas de una repeticin que se mencionaron en la Observacin 3.4.3.2.

Observacin 3.4.3.4 Hasta el momento para el desarrollo de los ejemplos y ejercicios indicados se han utilizado: lecturas, impresiones, asignaciones o clculos, se ha trabajado concatenadamente, o hemos decidido (Ver si) o se ha realizado procesos repetitivos (Mientras Variable Centinela haga repetidamente).

______________________________________________________________________ 96

EJERCICIOS 3.4.3 Para cada uno de los problemas que se presentan se deber preparar el anlisis y desglose del programa correspondiente: 1.Una maestra tiene varios estudiantes en un curso en donde practica 3 exmenes, los resultados de los exmenes los promedia para obtener nota final. Introduce al computador las tres notas de cada estudiante y de esa ir obteniendo uno por uno, su nota final Al final de las notas, le introduce al computador tres ceros, para indicar fin de datos. 2.Modificar el problema de la planilla de pago, Ejemplo 3.4, pg. 63 para que se puedan procesar la Informacin de varios trabajadores. (Usar centinela para indicar fin de datos). 3.4.5.Se leen varios nmeros distintos de cero, encontrar el valor absoluto de cada uno de ellos. Dado un nmero clasificarlo como negativo, cero o positivo (mensajes). Del Apndice A, ejercicios 22 al 24, pg. 280-281.

______________________________________________________________________ 97

3.5 3.5.1

ELEMENTOS EN EL ANALISIS DE UN P.O.P. DIAGRAMA DE ARBOL DE DECISIONES

PARTE II

Ejemplo 3.11 (rbol de decisiones, Decisiones anidadas, Mayor de 3 nmeros)


Hacer el anlisis y desglose para un programa en el cual se leen tres distintos nmeros a, b, c; y se determina cual de ellos es el mayor. ANALISIS DIAGRAMA DE ARBOL DE DECISIONES Una estrategia para determinar cual de los tres nmeros a, b c es el mayor, es la comparacin de los nmeros entre s, de dos en dos. Por ejemplo, se puede comenzar comparando a con b, evaluando la condicin a > b. Si es V, se sabr que efectivamente a es mayor que b, en caso contrario, se puede concluir que a < b, ya que por hiptesis son diferentes. Esta situacin se puede representar de la siguiente manera en el diagrama que a continuacin se presenta y que se llama diagrama de rbol. V a>b F Si resulta que a > b, no se puede todava llegar a ninguna conclusin ya que no se conoce la relacin entre a y c. Por ello, a continuacin se pregunta si a > c, que se agregar en el diagrama. V V a>b F ______________________________________________________________________ 98 a>c F

Ahora bien, si las dos condiciones son V, significa que a es mayor que los otros dos nmeros, y por lo tanto a es el mayor de los tres.

Si a > b y c > a (es decir que a > c es F), se tiene una situacin como la que est representada la recta real:

Por lo que c es el mayor de los tres, y estas conclusiones se agregan al diagrama de rbol siguiente: V a>c V a>b F Los segmentos de recta del diagrama se denominan las ramas del rbol, y a los extremos de los segmentos le llaman los nodos. Como en las dos ramificaciones superiores del diagrama se lleg a una conclusin, se considera que ya no se desarrollan ms y se puede decir que las conclusiones a mayor y c mayor son las hojas del rbol. Siguiendo con el smil de botnica, al primer nodo (donde se coloca la primera condicin a > b) se conoce como la raz del rbol. Se continua con la ramificacin inferior, que corresponde a la rama Falsa de la raz, y se compara a con c, en el caso de que a > c, se puede concluir que b es el mayor (Porqu?). F c, mayor a, mayor

______________________________________________________________________ 99

a, mayor V a>c V F a>b V F a>c F En la ramificacin incompleta se tiene que a > b y a > c son ambas falsas, lo que equivale a que a < b y a < c. Como a es menor que ambas, se puede concluir que a es el menor de los tres, pero no se tiene informacin con respecto a cual de los otros dos nmeros b y c, es el mayor. Por ejemplo podra suceder que: a=3 b=7 c=6 b, mayor c, mayor

En donde a > b y a > c resultan ser falsas. En este caso el mayor es b. Otro caso podra ser: a=3 b=5 c=9

En donde c resulta ser el mayor. En vista de lo anterior se agrega una comparacin ms al diagrama, lo que permite completarlo.

______________________________________________________________________ 100

V V a>c F a>b F a>c F V

a, mayor

c, mayor b, mayor V b>c F c, mayor b, mayor

El diagrama anterior permite desarrollar la lgica del programa, por lo que se considera que el anlisis est completo y se puede redactar el resumen respectivo. Obsrvese que en la construccin del diagrama de rbol se utilizan otros elementos del anlisis que por su brevedad no se nombra explcitamente, como sucedi en el ejemplo de escritorio en donde se asignaron valores especficos a: a, b y c; y se usaron otros grficos para representar los valores en la recta real. Lo anterior muestra que se puede utilizar varios elementos del anlisis de manera simultnea, segn se considere que se requieran.

RESUMEN DEL ANALISIS SALIDA: (1 nmero, 1 mensaje) Mensaje que indica cual nmero a, b c es el mayor (ver diagrama) ENTRADA: (3 nmeros) a, b, c PROCESO: Se leen los nmeros y se procede a determinar e imprimir cual es el mayor mediante varias comparaciones entre ellos, de acuerdo al diagrama de rbol anterior.

______________________________________________________________________ 101

DESGLOSES 1er. Nivel 1.-LECTURA DE DATOS 2.-COMPARACIONES E IMPRESION Niveles superiores 2.- COMPARACION E IMPRESIN 2.1 Ver si a > b 2.1.1 (V) Ver si si a > c 2.1.1.1. (V) Imprimir a, mayor 2.1.1.2. (F) Imprimir c, mayor 2.1.2 (F) Ver si a > c 2.1.2.1. (V) Imprimir b, mayor 2.1.2.2. (F) Ver si b > c 2.1.2.2.1. (V) Imprimir b, mayor 2.1.2.2.2. (F) Imprimir c, mayor El desglose anterior requiere de cinco pruebas de escritorio distintas (con cinco conjuntos de datos diferentes) para probar todas las distintas opciones.

EJERCICIOS 3.5.1 I. a) Realizar la prueba de escritorio de los siguientes desgloses, con los conjuntos de datos que se proporcionan: 1.-PASOS INICIALES 1.1 Asignar 0en T 1.2 Asignar 1 en N 2.-PROCESO 2.1 Mientras N sea menor que 5 hacer lo siguiente repetidamente: 2.1.1 Leer un valor de X 2.1.2 Ver si X es menor que 0 2.1.2.1 (V) 2.1.2.2 (F) Multiplicar X por -1 y sumrselo a T Sumar el valor de X a T N + 1)

2.1.3 Incrementar N en 1 (N

______________________________________________________________________ 102

3.-IMPRESIN 3.1 Imprimir el valor de T Datos 1: Datos 2: Datos 3: b) 1. 6, 2, -3, -1, 2, -3, 0, 2, -3, 3, 2, -3, -5 2 -3

LECTURA DE DATOS: 1.1. Leer el valor del CODIGO 1.2. Leer el valor del PAGO

2.

COMPARACIONES CALCULO E IMPRESIN 2.1. Ver si CODIGO > 5: 2.1.1. (V) Asignar 10 en TARIF 2.1.2. (F) Asignar 15 en TARIF 2.2. Leer DEDUC 2.3. Ver si DEDUC > 100

2.3.1. (V) Hacer lo siguiente secuencialmente


2.3.1.1. Multiplicar TARIF x PAGO y el resultado asignarlo a TOTAL 2.3.1.2 Restar DEDUC de TOTAL 2.3.1.3 Imprimir TOTAL

2.3.2 (F) Hacer lo siguiente secuencialmente


2.3.2.1 Multiplicar TARIF por 0.8 2.3.2.2 Multiplicar TARIF x PAGO y resultado Asignarlo en TOTAL 3.2.3 Restar DEDUC de TOTAL 2.3.2.4 Imprimir TOTAL y DEDUC

Datos 1: Datos 2: Datos 3: Datos 4: Datos 5:

7, 2150, 150 6, 1200, 80 2, 4000, 300 4, 600, 5, 100, 30 10

Observacin 3.5.1 Si el ramal 2.3.1 Verdadero o 2.3.2 Falso de una decisin tiene dos o ms instrucciones se utilizar la instruccin general HACER LO SIGUIENTE y se indentar a la derecha los subndices correspondientes.

______________________________________________________________________ 103

II. En los siguientes ejercicios desarrolle el anlisis y desglose para el programa respectivo (Compruebe con una P.E.): 1.- Se leen las longitudes de los lados de un tringulo. Determinar si el triangulo es equiltero, issceles propio o escaleno. (Issceles propio = dos lados congruentes, el tercer lado no congruente). 2.- Conociendo los coeficientes de una ecuacin cuadrtica, determinar si las races son reales o no. 3.- Dados Las coordenadas de dos puntos en el plano cartesiano, determinar si los puntos son iguales, o bien si determinan una recta horizontal, vertical u oblicua 4.- Se tienen varios nmeros enteros positivos, si el nmero es mayor que 10 se desea encontrar su triple, en caso contrario se debe calcular su doble. 5.- En una tienda se ofrece crdito a ciertos clientes. Se tienen los montos de la deuda y el nmero de meses de mora. Se cobrar un recargo de 2% por mora. Se desea calcular el monto pendiente de pago de cada cliente (incluye el recargo). 6.- Para una causa de beneficencia se han formado varios grupos de personas, casa grupo tiene un nmero distinto de miembros y se han comprometido a adoptar Lps. 1,000.00 por grupo independientemente del tamao de cada grupo. Dentro de cada grupo los miembros han decidido adoptar equitativamente. Se le proporciona al computador el nmero de miembros de cada grupo y se desea calcular la aportacin por miembro de cada grupo

3.5.2. REPETICION CON DECISIONES ANIDADAS

Ejemplo 3.12 (rbol de decisin, Repeticin centinela, Aumentos por categora)


Ejercicio del Apndice A, No.36 Dados la categora y el sueldo de un trabajador, calcule el aumento correspondiente teniendo en cuenta la siguiente tabla. Imprima la categora del trabajador y su nuevo sueldo. Categora 1 2 3 Aumento 15% 10% 8%

______________________________________________________________________ 104

ESTRATEGIA (Varios) Categora Nuevo_s (Varios) Categora Sueldo

Salidas

Entradas

Se necesitar utilizar: Decisiones anidadas: ya que el aumento varia segn la categora, se deben hacer clasificaciones segn esta (categora), para ello, se utilizar un rbol de decisiones V
Categora=1

Aumento del 15 % Aumento del 10% V

categora = 2 F Aumento del 8%

Observacin 3.5.2.1 : Cuando la categora = 2 (V) se considerar un aumento del 10%, si la categora no es igual a 2 , se asume entonces que ese ramal falso corresponder a la categora = 3 en forma tcita sin preguntar por ello, as se evita una condicin de decisin adicional.

Proceso repetitivo controlado por centinela (categora o sueldo), escogiendo la categora con un valor no posible = 99 (no es 1, 2 o 3) Condicin de repeticin: Categora 99

1. EJEMPLO DE ESCRITORIO Caso I Categora = 2 Sueldo = 2,000 Aumento = 2,000 * 0.10 = 200 Nuevo_S = 2,000 + 200 = 2,200 Categora = 1 Sueldo = 3,000 Aumento = 3,000 * 0.15 = 450 Nuevo_S =3,000 + 450 = 3,450 Caso II

______________________________________________________________________ 105

Observacin 3.5.2.2 Note que para todas la Categoras se podra realizar un ejemplo Caso, pero con los ya realizados se nota que para las diferentes categoras solamente varia el porcentaje de aumento.

2. DICCIONARIO DE VARIABLES Identificador Categora Sueldo Aumento Nuevo_S 3. FORMULAS Aumento = Sueldo * 0.15 Aumento = Sueldo * 0.10 Aumento = Sueldo * 0.08 Nuevo_S = Sueldo + Aumento 4. RESUMEN DEL ANALISIS SALIDA: (Varios nmeros) Categora, Nuevo_s 2 en cada ciclo ENTRADA: (Varios nmeros) Categora, Sueldo 2 en cada ciclo PROCESO: Proceso repetitivo controlado por centinela (99, Categora 99), en el cual, para cada empleado se lee la categora y el sueldo, y mediante decisiones anidadas, se calcula el aumento respectivo (Ver DIAGRAMA DE ARBOL), calcular e imprimir N_sueldo. (1) (2) (3) (4) Descripcin . Categora Sueldo Inicial Aumento Nuevo sueldo

______________________________________________________________________ 106

5. DESGLOSES 1er. Nivel 1. Pasos Iniciales 2. Proceso 2do. Nivel 1. PASOS INICIALES 1.1 Leer Categora 2. PROCESO 2.1 Mientras Categora 99 hacer lo siguiente repetidamente 2.1.1 Leer Sueldo 2.1.2 Calcular aumento (Frmulas) (*) 2.1.3 Calcular Nuevo_S 2.1.4 Imprimir Categora, Categora 2.1.5 Imprimir Nuevo sueldo, Nuevo_S 2.1.6 Leer Categora Aumento = Sueldo * 0.15 Aumento = Sueldo * 0.10 Aumento = sueldo * 0.08 (*) Nuevo_S = Sueldo + Aumento El clculo del aumento requerir mas detalle (desglose), requirindose decisiones anidadas, y la ayuda del Diagrama de rbol previamente mostrado

DESGLOSE 2do NIVEL 1. PASOS INICIALES 1.1 Leer Categora 2. PROCESO 2.1 Mientras Categora 99 hacer lo siguiente repetidamente 2.1.1 Leer Sueldo 2.1.2 Ver si Categora = 1 2.1.2.1 (V) Calcular aumento 2.1.2.2 (F) Ver si Categora = 2 2.1.2.2.1 (V) Calcular el aumento 2.1.2.2.2 (F) Calcular el aumento 2.1.3 Calcular Nuevo_S 2.1.4 Imprimir Categora : , Categora ______________________________________________________________________ 107 (Frmula-2) (Frmula-3) (Frmula-4) (Frmula-1)

2.1.5 Imprimir Nuevo sueldo : , Nuevo_S 2.1.6 Leer Categora El lector puede ver en el Apndice E en el Ejemplo E.1otra forma de desarrollar este ejercicio

6. PRUEBA DE ESCRITORIO Datos: Memoria Categora 2 1 99 Sueldo 2,000 3,000 Aumento 200 450 Nuevo_S 2,200 3,450 2, 2000, 1, 3000, 99 Salida: Categora: Nuevo Sueldo: Categora: Nuevo Sueldo: 2 2,200 1 3,450

Anlisis de Estructuras Concatenacin: Decisin: Repeticin: 1,2 2.1.1, 2.1.2, 2.1.3, 2.1.4, 2.1.5, 2.1.6 2.1.2, 2.1.2.2 2.1

Ejemplo 3.13 (rbol de decisiones, Repetitivo centinela, Lavado de autos, Apndice A No. 37)
Un grupo de personas dedicadas al negocio de lavado de automviles, necesita un programa para que determine cuanto tiene que pagar cada cliente de acuerdo a la siguiente tabla de servicio: Tipo de Servicio 1. Lavado Exterior 2. Lavado Interior 3. Lavado Exterior e Interior 4. Lavado de Motor Precio___ Lps. 25.00 Lps. 30.00 Lps. 35.00 Lps. 40.00

Adems de los servicios, se ofrece un descuento del 7% si se llevan dos o ms automviles. ______________________________________________________________________ 108

Se proporcionar al computador, el tipo de servicio y el No. de automviles, calcular el total a pagar por cliente. ESTRATEGIA: (Varios) Salida (Varios) Pagos Entrada Tipo N_autos

Se debe tomar en cuenta lo siguiente: Se utilizarn Decisiones anidadas, como los precios varan segn el tipo de servicio seleccionado, as se deber clasificar segn el Tipo, como hay un descuento a considerar, se debe tener antes un Subtotal , as para calcular dicho necesitar un Diagrama de rbol: Subtotal V Tipo=1 F Tipo=2 F Tipo =3 F Subtotal N_autos * 40 V Subtotal N_autos * 30 V Subtotal N_autos * 35 N_autos * 25 subtotal se

Como se mencion previamente, para hacer el rbol de decisiones se debe considerar un descuento lo que implica tener que calcular un Subtotal para posteriormente independientemente del tipo de servicio seleccionado, y segn el N_autos .calcular un descuento Si N_autos > 2 (V) se aplicar un descuento del 7% o del (F) 0% en caso contrario

______________________________________________________________________ 109

Repeticin, seleccionando como variable centinela (Valor ficticio de fin de datos) N_autos igual a cero y la condicin de la repeticin: N_autos 0

1. EJEMPLO DE ESCRITORIO Caso I N_autos = 3 Tipo = 4 Subtotal = 3 * 40 = 120 Desc = 0.07 * 120 = 8.4 Total = 120 8.4 = 111.6 Tipo = 2 Subtotal = 1 * 30 = 30 Desc = 0
(1)

Caso II N_autos = 1

Caso III N_autos = 0

Total = 30 0 = 30

(1) Observacin 3.5.2.3: En los casos en donde hay MUCHAS VARIANTES conviene seleccionar para el Caso I datos en los que apliquen todas ellas, para posteriormente en un Caso II tratar de llevar estos en forma paralela y hacer coincidir las frmulas, por ejemplo que en ambos casos el total sea subtotal descuento, debiendo entonces, en el Caso II, asignar 0 (cero) a descuento. En algunos ejercicios se estarn indicando formas alternativas para resolver problemas (ver Apndice E, ejemplos E.1, E.2).

2. DICCIONARIO DE VARIABLES Identificador Tipo N_autos Subtotal Desc Total Descripcin . Tipo de servicio Nmero de autos Subtotal Descuento Total a pagar

3. FORMULAS Subtotal = N_autos * 25 Subtotal = N_autos * 30 Subtotal = N_autos * 35 (Frmula-1) (Frmula-2) (Frmula-3)

______________________________________________________________________ 110

Subtotal = N_autos * 40 Desc = 0.07 * Subtotal Total = Subtotal - Desc

(Frmula-4) (Frmula-5) (Frmula-6)7

4. RESUMEN DEL ANALISIS SALIDA: (Varios nmeros) Total 1 en cada ciclo ENTRADA: (Varios nmeros) Tipo, N_autos 2 en cada ciclo PROCESO: Proceso repetitivo controlado por centinela (N_autos 0), para cada cliente se lee N_autos y el tipo, mediante decisiones anidadas (Diagrama de rbol adjunto), se calcula el subtotal respectivo, posteriormente, si N_autos 2, se calcula el descuento que corresponde. Al final se calcula e imprime Total. 5. DESGLOSES 1er. Nivel 1. Pasos Iniciales 2. Proceso ( Clasificacin e impresin) 3. Pasos Finales

2do. Nivel 1. PASOS INICIALES 1.1 Leer N_autos 2. PROCESO


7

Note que el subtotal solamente vara en el precio de cada tipo de servicio, posteriormente se estudiarn simplificaciones al respecto, ver Captulo IV Ejemplo 4.12 previo al estudio del seudocdigo Nolae (Ver Apndice E, ejemplo E.2).

______________________________________________________________________ 111

2.1 Mientras N_autos 0 hacer lo siguiente repetidamente 2.1.1 Leer Tipo 2.1.2 Ver Si Tipo = 1 2.1.2.1 (V) Calcular Subtotal 2.1.2.2 (F) Ver Si Tipo = 2 2.1.2.2.1 (V) Calcular Subtotal 2.1.2.2.2 (F) Ver Si Tipo = 3 2.1.2.2.2.1 (V) Calcular Subtotal (F-3) 2.1.2.2.2.2 (F) Calcular Subtotal (F-4) 2.1.3 Ver Si N_autos 2 2.1.3.1 (V) Calcular Desc 2.1.3.1 (F) Asignar 0 a Desc 2.1.4 Calcular Total 2.1.5 Imprimir Total a Pagar, Total 2.1.6 Leer (siguiente) N_autos (Frmula-6) (Frmula-5) (Frmula-2) (Frmula-1)

6. PRUEBA DE ESCRITORIO Datos: 3, 4, 1, 2, 0 Memoria: N_autos 3 1 0 Tipo 4 2 Subtotal 120 30 Desc 8.4 0 Pago 111.6 30

Salida Total a Pagar: 111.6 Total a Pagar: 30 Muchas Gracias

______________________________________________________________________ 112

Anlisis de Estructuras Concatenacin: Decisin: 1, 2, 3 2.1.1, 2.1.2, 2.1.3, 2.1.4, 2.1.5, 2.1.6 2.1.2, 2.1.2.2, 2.1.2.2.2, 2.1.3 2.1

Repeticin:

Ejemplo 3.14 (rbol de decisiones, decisin anidada, variable real, rangos, CI,)
Dado el Coeficiente Intelectual de un estudiante, clasificarlo conforme a los siguientes rangos (considerar que el CI es una variable real). ____CI CI < 80 80 < CI 110 CI >110 ESTRATEGIA: Subnormal Salida 1 Mensaje Normal Superior Repeticin controlada por centinela, condicin de repeticin: CI 0 Decisiones anidadas, ilustradas con un Diagrama de rbol. V CI < 80 F CI < 110 F Superior ______________________________________________________________________ 113 Subnormal Normal V Entrada CI Rango Subnormal Normal Superior .

Adicionalmente se ilustran los rangos con la ayuda de la recta real, y se recordar que: Si una cantidad no es menor entonces es mayor o igual", Sino es menor o igual es estrictamente mayor (Ver la Tabla No.1 del Captulo 1)

Si CI < 80 (V) 80 (F) 80 Si CI 110 80 (V) 80 (F) 110


110

Subnormal | 110 | 110

110 Normal

Superior

Observacin 3.5.2.4: Para el segundo intervalo no es necesario realizar una decisin compuesta 80 CI y CI 110, la primera parte no es necesaria pues si resulta y falsa la condicin CI < 80 la consecuencia inmediata es que CI > 80 (o 80 < CI) ya no es necesario plantearlo, basta preguntar solamente CI 110

Puede resultar mas claro al lector disear el rbol de decisiones respectivo, se emple la recta real para ilustrar grficamente los rangos involucrados. En vista de que en este ejercicio no hay que realizar ningn clculo y que la nica variable de entrada es el CI se proceder al 4.- RESUMEN DEL ANALISIS Subnormal SALIDA: (Un mensaje) Normal Superior

______________________________________________________________________ 114

ENTRADA: PROCESO:

(Un nmero)

CI

Se lee el CI del alumno y mediante decisiones anidadas se clasificar el CI imprimiendo el mensaje correspondiente (Ver diagramas adjuntos)

5. DESGLOSES 1er. Nivel 1. Pasos Iniciales 2. Proceso (Clasificacin e impresin) 2do. Nivel 1. PASOS INICIALES 1.1 Leer CI 2. PROCESO (CLASIFICACION E IMPRESION) 2.1 Ver Si CI < 80 2.1.2. (V) Imprimir Normal 2.1.2 (F) Ver Si CI < 110 2.1.2.1 (V) Imprimir Normal 2.1.2.22 (F) Imprimir Superior 6. PRUEBA DE ESCRITORIO Datos1: 100 Memoria: CI 100 Datos2: 75 Memoria: CI 75 Datos3: 125 Memoria: CI 125

Salida Normal

Salida Subnormal

Salida Superior

______________________________________________________________________ 115

Anlisis de Estructuras Concatenacin: 1, 2 Decisin: 2.1 2.1.2

Observacin 3.5.2.5. Las explicaciones brindadas para ilustrar las Decisiones anidadas en repeticin utilizando este tipo de rangos, aplican a variables enteras o discretas y a variables reales o continuas Vale decir que el lector ya est en la capacidad de realizar varios ejercicios relacionados, del Apndice A (del, ejercicios del 46 al 55), pero como se puede ver en el desarrollo de los ejemplos 3.12, 3.13 y 3.14, la numeracin detallada que da el Desglose ya se torna engorrosa, as que en las secciones subsiguientes se aprender a utilizar una notacin mas sencilla que facilitar el desarrollo de dichos ejercicios, vale decir que la metodologa utilizada hasta ahora siempre es vlida y el lector debe conservarla para seguir desarrollando buenos hbitos en la programacin, muchas veces se necesitar escribir ejemplos de escritorio, tener siempre claras las Salidas y las Entradas, etc..

3.6

CONCEPTO DE ALGORITMO

Se entender por algoritmo al conjunto finito de pasos o instrucciones claras, precisas y sin ambigedad; que aplicadas en un nmero finito de veces conducen a la realizacin de una tarea especfica. Todos los desgloses que se han presentado son ejemplos de algoritmos; y, en realidad, representan el tipo de algoritmos que sern de inters en este libro. Se puede observar que estos algoritmos se pueden realizar nicamente con ayuda de lpiz y papel, en lo que se ha llamado prueba de escritorio (P.E.). Si el resultado de la ejecucin del algoritmo es la misma, independientemente del ejecutor (suponiendo que el ejecutor realiza la P-E correctamente); se dir que el algoritmo est bien definido, Los algoritmos que se han diseado de manera descendente, o sea por medio de desgloses sucesivos, son susceptibles de codificarse de cierta manera para que la computadora entienda y los pueda ejecutar. El algoritmo codificado para la computadora constituye un programa. Hasta el momento se ha visto que las instrucciones dentro de un algoritmo pueden ejecutarse de tres maneras distintas: ______________________________________________________________________ 116

1.- Una seguida de otra, en la forma en que se presentan. 2.- Dependiendo de la evaluacin de una condicin, una o un conjunto de instrucciones se ejecuta y otras u otra no. 3.- Una o un conjunto de instrucciones se pueden ejecutar varias veces, repetidamente, dependiendo de la evaluacin de una condicin. Estas tres formas distintas de organizar o estructurar la ejecucin de las instrucciones se llaman las estructuras bsicas y son: 1.-La concatenacin o secuencia. 2.-La decisin o seleccin. 3.-La repeticin o iteracin. Cuando un algoritmo se fundamenta en estas tres estructuras, se dice que el algoritmo est estructurado.

EJERCICIOS 3.6 I.-Disear algoritmos para resolver las siguientes situaciones: a).b).c).d).e).II.Cambiar la llanta de un vehculo Cocinar un huevo revuelto (picado) Proceso de tu matrcula Ir al cine Preparar una taza de caf

Determina si los siguientes son algoritmos: a) 1.- Realiza el paso 2 2.- Volver al paso 1 b) 1.- Pasar al siguiente paso 2.- Pasar al siguiente paso 3.- Pasar al siguiente paso 4.- Pasar al siguiente paso

______________________________________________________________________ 117

Continuar. c) Con una calculadora en mano realizar las siguientes instrucciones para sumar 5 y 2: 1.- Presiona la tecla con el nmero 5 2.- Presiona la tecla con el signo + 3.- Presiona la tecla con el nmero 2 4.- Presiona la tecla el smbolo = 5.- Lee la respuesta en la pantalla de la calculadora

______________________________________________________________________ 118

CAPITULO 4

FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA


4.1 CONCEPTO DE SISTEMA

Considerando el concepto ms general de sistema: Un sistema es un conjunto de objetos o entes que estn relacionados de alguna Conceptualizado de esta manera, resulta ms difcil ejemplificar que no es un sistema por la generalidad del concepto. A continuacin algunos ejemplos: a) b) c) d) e) El sistema respiratorio del cuerpo humano El sistema seo de Juan Prez. El sistema solar. El sistema poltico de la Repblica de Honduras. El sistema del diseo estructural del edificio de la Municipalidad.

Dado un sistema, se puede determinar la frontera del mismo. Esta frontera distingue lo que est dentro del sistema de lo que est afuera. La frontera puede ser concreta o no. Lo que est afuera de la frontera del sistema se llama el medio ambiente del sistema.

______________________________________________________________________ 119

Medio ambiente

Frontera (puede ser Intangible)

Sistema

Figura 4.1 Tanto la definicin de la frontera, como la del medio ambiente (m.a.) de un sistema, es un tanto convencional, depender de cmo se aprecie o desee apreciar el sistema desde los puntos de vista de los intereses u objetivos de algn estudio particular que involucre el sistema. Los sistemas se pueden clasificar de distintas maneras, y se considerarn nicamente dos de ellas. Por su interrelacin con su medio ambiente, los sistemas pueden ser: o Cerrados: Cuando NO admiten interaccin con su medio ambiente. o Abiertos: Cuando admiten interaccin con su medio ambiente. Por su cambio en el tiempo (o algn perodo de tiempo) o Estticos: Cuando no varan en el tiempo (o en algn perodo de tiempo referencial). o Dinmicos: Cuando admiten cambios en el tiempo. Para los fines de este libro la computadora es un sistema abierto y dinmico. Sus componentes fundamentales: software y hardware interactan con su medio ambiente que es el usuario (el ser humano u otras mquinas) de quien recibe y enva datos o informacin. Para otros fines, el medio ambiente de la computadora podra ser algo ms amplio, podra incluir el medio fsico en donde se coloca la computadora y/o las fuentes de energa elctrica donde se conecta. Para efectos de la programacin nos interesa el procesamiento de los datos, por lo cual el dinamismo del sistema se refleja en los cambios que suceden en la memoria. Por otra parte, al ser el sistema abierto, recibe y proporciona informacin a su medio ambiente que es el usuario.

______________________________________________________________________ 120

No se debe perder de vista que la computadora acta bajo las instrucciones de un programa, as que, para que la computadora pueda ser un sistema abierto es necesario que disponer de instrucciones que le permitan interactuar con el usuario. De esta manera se tienen instrucciones de ENTRADA y de SALIDA; adems instrucciones que le permiten al computador cambiar los estados de la memoria o sea de los contenidos de las variables a partir de otras variables. En resumen, la computadora como sistema abierto requiere de cuatro tipos de instrucciones bsicas: 1.- Instrucciones que permitan al usuario transmitir datos o informacin hacia la computadora. 2.- Instrucciones que permitan al usuario obtener informacin o datos de la computadora. 3.- Instrucciones que permitan cambiar el contenido de las variables, en funcin del contenido de otras variables. 4.- Instrucciones que permitan al sistema no realizar cambios. Estas instrucciones bsicas se caracterizarn en la siguiente seccin. Un bloque estructurado es una instruccin o conjunto de instrucciones de un algoritmo 4.2 se representa por medio de un rectngulo, dibujando con una base horizontal, yA LA BLOQUES ESTRUCTURADOS ATOMICOS E INTRODUCCION con y NOTACION DE DIAGRAMA DE FLUJO una (y slo una) flecha de entrada y una (y slo una) flecha de salida.

Las flechas indican el orden en que se ejecutan las instrucciones dentro del algoritmo, por lo que el smbolo anterior es un componente de lo que se conoce como diagrama de flujo.

______________________________________________________________________ 121

En este enfoque, no toda instruccin o estructura ser vlida en la construccin de los algoritmos estructurados, por lo que se tiene que definir con cierto detalle cuales son los bloques estructurados (b.e.) con que se estar desarrollando este captulo. Los prrafos anteriores no especifican cuales son en s los bloques estructurados (b.e.), sino su representacin. Ahora se van a introducir los distintos b.e., y siguiendo con la notacin grfica, se presentan cuatro b.e. bsicos, que se llaman los bloques estructurados atmicos. (b.e.a)

Bloques estructurados atmicos


lea L 1. 2. 3. 4. lectura: escritura: asignacin: nulo: escriba L

nulo

1.-

Lectura :

Se efecta la lectura de las variables que aparecen en la lista L. Leer

una variable significa que se toma un dato del exterior y se almacena en la variable especificada, tal como se ha hecho en la seccin 3.4. 2.Escritura: Se realiza la impresin de las variables o mensajes que se indican en

la lista L. Imprimir una variable (que puede ser impresa en el papel por medio de una impresora o mostrado en un monitor) significa imprimir su contenido, como en los ejemplos de la seccin 3.4 (pginas 3.Asignacin: En la variable V se asigna el valor de la expresin E. Corresponde al almacenamiento en las variables de la memoria, segn se ha estudiado en la seccin 2.3. ______________________________________________________________________ 122

4.-

Nulo:

El bloque nulo le indica al computador que no haga nada, lo que en

muchos casos es equivalente a indicarle que siga con la siguiente instruccin de acuerdo al flujo del algoritmo, Ms adelante se ver su importancia.

Ejemplo 4.1 (Diagrama de Flujo, concatenacin, Planilla de sueldos)


Elaborar el Diagrama de flujo del Ejemplo 3.4 (pg. 60), Planilla de sueldos de la seccin 3.4.1 DICCIONARIO DE VARIABLES
PHORA HTRABAJ HEXTRAS DIHSS Pago base por hora Hrs ordin.trabajadas Hrs extras trabajadas Deduccin IHSS VIVIENDA TDEDUC SNETO Pago vivienda Total deduccin Sueldo neto

INGBRUTO Total Ing.bruto

Frmulas:
INGBRUTO = HTRABAJ * PHORA +HEXTRAS * PHORA * 2 DIHSS = INGBRUTO * 0.035 TDEDUC = DIHSS + VIVIENDA SNETO = INGBRUTO TDEDUC DESGLOSE 1.LECTURA DE DATOS 1.1 1.2 1.3 1.4 2.Lectura de Pago base por hora Lectura de Horas ordinarias trabajadas Lectura de Horas extras trabajadas Lectura de Pago de vivienda (Frmula-1) (Frmula-2) (Frmula-3) (Frmula-4)

CALCULOS 2.1 2.2 2.3 2.4 Calculo del Ingreso Bruto Clculo de la deduccin IHSS Clculo de total de deducciones Clculo del Sueldo Neto (Frmula-1) (Frmula-2) (Frmula-3) (Frmula-4)

3.-

IMPRESIN DE RESULTADOS 3.1 3.2 3.3 Impresin del Ingreso Bruto Impresin del total de deducciones Impresin del sueldo neto

______________________________________________________________________ 123

En la representacin en diagrama de flujo del algoritmo correspondiente, se agregan los smbolos extremos de inicio y final (que no son b.e.), y se tiene el siguiente diagrama:
Inicio

1.1 1.2 1.3

Lectura de Pago base por hora Lectura de Horas ord. Trabajadas Lectura de Horas ext. Trabajadas

Lea PHORA Lea HTRABAJ

Lea HEXTRAS

1.4

Lectura de Pago de Vivienda

Lea VIVIENDA

2.1

Clculo del Ingreso Bruto

INGBRUTO

HTRABAJ * PHORA + HEXTRAS * PHORA*2

2.2

Clculo de la deduccin

IHSS DIHSS

INGBRUTO * 0.035

2.3

Clculo del total de deduc.

TDEDUC

DIHSS + VIVIENDA

2.4

Clculo del Sueldo Neto

SNETO

INGBRUTO - TDEDUC

3.1 3.2

Impresin del Ingreso Bruto Impresin del total de deduc.

Escriba INGBRUTO

Escriba TDEDUC Escriba SNETO

3.3

Impresin del sueldo neto


Final

______________________________________________________________________ 124

En el ejemplo anterior se tienen dos representaciones del mismo algoritmo. En el lado izquierdo se encuentra el desarrollo del desglose y a la par el diagrama de flujo. Dentro de los rectngulos del diagrama se pudo haber colocado las instrucciones tal como aparecen en el desglose, pero abreviando, se simplific y estandariz el lenguaje tcnico para expresar los algoritmos. La notacin que se usar no ser grfica (como los diagramas de flujo que son planos) sino lineal y ser muy similar al cdigo de lenguajes de programacin como: PASCAL, ADA95, etc. Por tal razn la notacin simplificada que se estar usando para representar los algoritmos se conoce como un seudocdigo, y en particular el seudocdigo que se emplear es el NOLAE (NOtacin Lineal para Algoritmos Estructurados).

EJERCICIOS 4.2

1.-

Determine que grficos constituyen b.e. y cuales no ( explique porqu no)

(a) (b)

(d) (c)

(e)

(f)

______________________________________________________________________ 125

Sistema Lectura Asignacin Medio Ambiente

Frontera

Escritura NOtacin Lineal de Algoritmos Estructurados BLOQUE Lectura Escritura Asignacin Nulo NOlae lea escriba VE nulo

Figura 4.2.1 4.3. INTRODUCCION AL SEUDOCODIGO NOLAE CON LOS b.e.a.

La notacin NOLAE para los b.e.a. prcticamente ya ha sido introducido con sus representaciones en diagrama de flujo y es la siguiente (Ver figura 4.2.1): 1.2.3.4.Lectura Escritura Asignacin Nulo lea L escriba L V nulo E nulo lea L escriba L

4.4.-

ALGORITMOS SEUDOCODIFICADOS CON CONCATENACION

La concatenacin de instrucciones es la forma ms natural en que generalmente se presentan las instrucciones y de hecho ya se ha estado haciendo desde la seccin 4.2. Ahora se proceder a introducir el concepto formalmente.

______________________________________________________________________ 126

Si se tienen dos b.e. B1

B2 Y se hace coincidir la salida del primero con la entrada del segundo, se tiene lo siguiente: B1 B2

Por definicin, se considera que forman un nuevo b.e. B1 B2

Obsrvese que en las reglas de representacin de los b.e. en diagrama de flujo se respetan: un rectngulo con base horizontal, con una flecha de entrada y una de salida. El bloque anterior NO es un b.e.a (no es lectura, ni escritura, ni asignacin, ni nulo) sino que es compuesto y resulta de aplicar la estructura de concatenacin a B1 y B2. Si interesara lo que est dentro del b.e. anterior, se puede representar de la siguiente manera:

La concatenacin puede ser extendida a tres o ms b.e. como se vio en el ejemplo de la seccin 4.2. As, por ejemplo, el b.e. compuesto que resulta de la concatenacin de 3 b.e. se puede representar de la siguiente manera en el diagrama de flujo

______________________________________________________________________ 127

A continuacin se mostrarn los seudocdigos en Nolae de algunos de los Ejemplos desarrollados en secciones anteriores, en ellos se utilizarn todos los bloques estructurados vistos hasta el momento.

Ejemplo 4.2 (Nolae, Concatenacin, leer dos nmeros, imprimir suma)


Se tiene un desglose para un algoritmo en el cual se leen dos nmeros A y B, se calcula su suma y se imprime 1.2.3.Leer los nmeros A y B Calcular su suma y almacenarla en S Imprimir el valor de S

La representacin en NOLAE, lo mismo que la representacin en diagrama de flujo, comienza con la palabra inicio y termina con la palabra final que implcitamente indican concatenacin. Por otra parte las instrucciones, cuando estn concatenadas, se separan por coma , . Luego, el algoritmo en seudocdigo se puede escribir as: Inicio lea A, B, S A + B, escriba S final

Sin embargo, para mayor claridad, se colocan las instrucciones concatenadas una bajo otra, al mismo margen, de la manera siguiente: Inicio lea A, B S Final Tambin se puede sustituir el estilo de negrita por el de subrayado para las palabras claves de Nolae Inicio lea A, B S Final ______________________________________________________________________ 128 A + B escriba S A + B escriba S

Ejemplo 4.3 (Nolae, Decisin, Venta de dos artculos.)


Elaborar el seudocdigo del problema planteado en el Ejemplo 3.5, en el cual: se le proporciona al computador los precios de venta de dos artculos y se desea imprimir el total a pagar por el comprador, se deber considerar el 12% de impuesto. Se obtuvo el siguiente Desglose 2do Nivel: 1. LECTURA DE DATOS 1.1 Leer Precio1 1.2 Leer Precio2 2. CALCULOS 2.1 Calcular Subtotal 2.2 Calcular Isv 2.3 Calcular Total (Frmula-1) (Frmula-2) (Frmula-3) Frmulas: Subtotal =precio1 + precio2 (Frmula-1) Isv =subtotal * 0.12 Total =subtotal + isv (Frmula-2) (Frmula-3)

3. IMPRESION DE RESULTADOS 3.1 Total A continuacin, se presentan algunas reglas sencillas para reescribir este desglose en Nolae: a. Se omitirn los ttulos del primer desglose (1, 2, 3). b. Se emplearn las palabras reservadas (equivalentes del desglose) en Nolae. c. En lugar de citar las frmulas para los clculos se colocarn las frmulas mismas en el formato de asignaciones. d. Se agregarn en donde correspondan las palabras Inicio y Final. e. Se utilizarn INDENTACIONES en lugar de las numeraciones con subincisos propios del Desglose. Despus de aplicar las reglas antes citadas, se presenta a continuacin el algoritmo solicitado y a la par el desglose correspondiente (con el propsito de facilitar la comprensin del lector).

______________________________________________________________________ 129

DESGLOSE Inicio 1.1 Leer Precio1 1.2 Leer Precio2 2.1 Calcular Subtotal (Frmula_1) 2.2 Calcular Isv 2.3 Calcular Total 3.1 Imprimir Total Final (Frmula_2) (Frmula_3)

NOLAE lea Precio1 lea Precio2 Subtotal Precio1 + Precio2 Isv Subtotal * 0.12 Total Subtotal + Isv escriba Total

Observacin 4.4 Al codificar en Nolae, no se cuenta con las numeraciones que provee el Desglose, as, las indentaciones toman relevancia, por ejemplo inicio y final deben colocarse al mismo nivel, las instrucciones del cuerpo del algoritmo, para el caso de una concatenacin deben ir indentadas ms a la derecha en el mismo margen, esto se resalta con lneas verticales como las mostradas:

EJERCICIOS 4.4 1.Realizar la (s) prueba (s) de escritorio para cada uno de los algoritmos que se

presentan. Tome en cuenta que las pruebas de escritorio de un algoritmo seudocodificado en Nolae, se realizan de igual manera que en los Desgloses. a) inicio lea x, y t q final x y 20 t datos 1: 20, 4 datos 2: 5, 6

Escriba t, q

______________________________________________________________________ 130

b) inicio S 0 datos 1: 2, 3, 6 datos 2: 0, -1, 7 datos 3: -2, 0, 3 lea K2 escriba Inicio de clculos S S final c) inicio escriba Teclee un nmero lea num D 2 * num escriba El doble del nmero ledo es, D final dato : 5 S + K2 * 5 S + tron * (R2D2-5) lea tron, R2D2 escriba S

4.5.-

ALGORITMOS SEUDOCODIFICADOS CON DECISION

Para construir el b.e. generado por una decisin se necesita una condicin C y dos b.e.: B1 y B2. La Condicin se representar por un rombo y obteniendo el siguiente diagrama:

B1
Punto de salida

______________________________________________________________________ 131

Por definicin, el b.e. que se obtiene es un b.e. compuesto generado por una decisin, a B1 se le llama la rama verdadera y a B2 la rama falsa. Se puede remarcar el b.e. como se indica en el diagrama que sigue:

C B2
Punto de salida De nuevo se puede observar que se satisfacen las reglas de representacin de un b.e. A la flecha de salida se le llama tambin el punto de salida (de encuentro) o el final de la decisin. Tambin se puede observar que el flujo, desde la flecha de entrada a la flecha de salida, pasa o bien por B1 o bien por B2, pero no ambas, dependiendo de la veracidad o falsedad de la condicin C. Si la condicin C es Verdadera, se ejecuta B1 (ignorndose B2) y as se completa la ejecucin de la decisin. Pero, si resulta que C es Falsa, se ejecuta B2 y no B1. Ejecutar la decisin no solamente implica la evaluacin de la condicin C, sino adems la ejecucin de una (y slo una) de sus ramas. La representacin en Nolae es: si C entonces B1 sino B2 fin-si

O bien, usando mrgenes: Si C entonces B1 sino B2 Fin-si Fin-si sino B2 si C entonces B1

______________________________________________________________________ 132

Ejemplo 4.4 (Nolae, Decisin, Venta con descuento)


Disear el algoritmo en seudocdigo Nolae del Ejemplo 3.6 (pg.72) de la Seccin 3.4.2., en el cual se otorgan distintos porcentajes de descuento segn sea el monto de la Venta. DICCIONARIO DE VARIABLES
NOMBRE DESCRIPCION UNIDADES_

Val_Venta Descuento Subtotal Isv Total DESGLOSE 1. LECTURA DEL DATO 1.1. Leer Val_Venta 2. CALCULO DE VALORES

Valor de la venta sin isv Valor del descuento Subtotal con descuento Valor del Isv Total a Pagar

(en Lps.) (en Lps.) (en Lps.) (en Lps.) (en Lps.)

2.1. Ver si el Val_Venta es mayor de 200 2.1.1. 2.1.2. (Verdadero) Calcular la deduccin con el 20% (Falso) Calcular la deduccin con el 10% (Frmula-1) (Frmula-2) (Frmula-3) (Frmula-4) (Frmula-5)

2.2. Calcular Subtotal con deduccin 2.3. Calcular Impto. Sobre venta 2.4. Calcular total a pagar 3. IMPRESIN DE RESULTADOS 3.1. Imprimir Descuento, Subtotal, Isv, Total El algoritmo representado en seudocdigo Nolae es: Inicio lea valventa si val_venta > 200 entonces descuento val_venta * 0.2 sino descuento val_venta * 0.1 fin si Subtotal val_venta descuento isv total final subtotal *0.12 subtotal + isv

escriba val_venta, descuento, subtotal, isv, total

______________________________________________________________________ 133

Detallando mejor las salidas, separando cada variable y escribiendo mensajes apropiados para cada una de ellas, se obtiene el siguiente algoritmo: Inicio lea val_venta si val_venta > 200 entonces descuento sino descuento fin si subtotal isv total val_venta descuento subtotal_val + isv Lps. , Val_venta Lps , descuento Lps , subtotal Lps. , isv subtotal *0.12 Con ms detalle an sera: escriba Venta Lps escriba Val_venta val_venta * 0.1 val_venta * 0.2

escriba Venta escriba Descuento escriba Subtotal escriba Impuesto final

escriba Total a pagar Lps. , total

Ejemplo 4.5 (Nolae, Decisin, Boletos Tegucigalpa, SPS)


Escribir el algoritmo en seudocdigo Nolae del Ejemplo 3.7 pg. 77,(Decisin, Boletos Tegucigalpa, SPS) Una compaa de transporte dispone del servicio entre las ciudades de Tegucigalpa y San Pedro Sula. Se ofrecen dos tipos de tarifa (Primera clase y clase econmica) de Lps. 200.00 y Lps 110.00 respectivamente. Se le proporciona al programa el nmero de boletos y el cdigo de tarifa deseado (Cdigo=1 para primera clase, cdigo=2 para clase econmica) y se desea conocer el total a pagar. Asumir que los boletos que se compran son de la misma tarifa. Porqu?. El algoritmo solicitado se muestra a continuacin: ______________________________________________________________________ 134

Inicio Lea Cod Lea Nbol Si Cod = 1 entonces Pago sino Pago Fin-si Escriba Total a pagar: Lps. , Pago Final Una variante del Nolae de las decisiones incluye las Decisiones Anidadas, mostradas previamente en el Ejemplo 3.8 (pg.81)a continuacin un ejemplo: 110 * Nbol 200 * Nbol

Ejemplo 4.6 (Nolae, Decisiones anidadas, nmero negativo, cero positivo)


Escribir el algoritmo en seudocdigo Nolae de un programa en el cual se debe determinar e imprimir si un nmero es positivo, negativo o cero. Ver Ejemplo 3.8 (pg.81). El desglose 2do. Nivel codificacin en Nolae:
(1. Lectura de datos) 1.1 Leer X (2. Clasificacin e Impresin) Si X < 0 entonces 2.1.1 (V) Imprimir Negativo escriba Negativo sino 2.1.2 (F) Ver Si X = 0 Si X = 0 entonces 2.1.2.1 (V) Imprimir Cero Escriba Cero 2.1.2.2 (F) Imprimir Positivo sino Escriba Positivo Fin-si Fin-si Final Escrito en una forma mas clara se tiene: 2.1 Ver Si X < 0 Inicio lea X

obtenido se presenta a continuacin, colocando a la par su

______________________________________________________________________ 135

Inicio lea X Si X < 0 entonces escriba Negativo sino Si X = 0 entonces escriba Cero sino escriba Positivo Fin-si Fin-si Final Observacin 4.5.1: Todas las decisiones deben terminar con un fin si. En las decisiones anidadas, los fin si se irn colocando de adentro hacia fuera y un rengln ms abajo, recordando en general que se utilizarn en forma agrupada las palabras : Si entonces sino fin si

Observacin 4.5.2. Las pruebas de escritorio de un algoritmo seudocodificado en Nolae, se realizan de igual manera que en los Desgloses.

4.6

ALGORITMOS SEUCODODIFICADOS CON REPETICION

La repeticin tiene nicamente dos componentes: una condicin C y un b.e. B. Su representacin en diagrama de flujo es la siguiente:

______________________________________________________________________ 136

C
F Figura 4.6.1

Por definicin el bloque compuesto que resulta de aplicar la estructura de repeticin es tambin un b.e. Como el flujo lo indica, primero se evala la condicin C. Si es verdadera se procede a ejecutar B, y se vuelve a evaluar C. De tal manera que mientras C sea verdadera se estar repitiendo la ejecucin de B. Siempre, al terminar la ejecucin de B, se regresa a evaluar la condicin C. Una vez que C sea F, la ejecucin de la repeticin termina y se producir la salida del bloque; el cual se puede delimitar como se grafica a continuacin.

C
F

Figura 4.6.2 Al b.e. que se repite, o sea B, se le llamar RANGO de la repeticin Observe que la repeticin es la nica estructura en donde el flujo se dirige hacia atrs, cuando se regresa a evaluar la condicin C para determinar si se continua o no repitiendo la ejecucin del b.e. B. En el seudocdigo, la repeticin se expresa de la siguiente manera: ______________________________________________________________________ 137

mientras

haga B

fin mientras

Y, en el estilo con mrgenes se puede representar la estructura de la siguiente manera:

mientras

C B

haga

mientras fin mientras

C B

haga

fin mientras

No debe confundirse la repeticin con la decisin. En la decisin NO se ejecutan todas las instrucciones que aparecen, nicamente las de la rama verdadera o las de la rama falsa, pero no ambas. En la repeticin todas las instrucciones del rango se ejecutan una o varias veces repetitivamente. Una condicin es un componente comn en ambas estructuras, y en ambas tambin se evala a condicin, En la decisin la condicin determina que camino tomar (la rama V o la rama F), pero en la repeticin determina si el Rango tiene que seguir ejecutndose o no. En la repeticin, por lo tanto, no se habla de rama V o rama F.

Ejemplo 4.7 (Nolae, Repeticin, Kilometraje)


Elaborar el algoritmo en Nolae del Ejemplo 3.9 (pg.83)de la seccin 3.4.3, que trata de una Compaa que alquila automviles y cobra a sus clientes segn el kilometraje recorrido. Reescribiendo las frmulas y la sntesis del desglose se tiene:
FORMULAS Caso 1 Caso 2 Pago = 200 + 0.50 * Km Pago = 215 + 0.35 * Km Frmula-1 Frmula-2

Sntesis del DESGLOSE 1.PASOS INICIALES 1.1 Leer el primer dato (Km) 2. PROCESO 2.1 Mientras Km. sea distinto de cero (Km 0) hacer lo siguiente repetidamente 2.1.1 Ver si Km. > 100 2.1.1.1 (V) Calcular pago con Frmula-1 2.1.1.2 (F) Calcular pago con Frmula-2 2.1.2 Imprimir el valor del pago 2.1.3 Leer el siguiente dato (Km.) Caso 1 Caso 2

______________________________________________________________________ 138

Representando el algoritmo en Nolae, se tiene lo siguiente: Inicio lea Km mientras Km 0 haga si Km < 100 entonces Pago sino Pago fin si escriba Pago lea Km fin mientras final Observe que las instruccin 2.1 y 2.2 estn concatenadas, y a su vez el desglose de la 2.1 es una concatenacin de 2.1.1. y 2.1.2; resulta entonces que se puede considerar que 2.1.1, 2.1.2 y 2.1.3 forman una concatenacin de tres elementos. Esta consideracin permite simplificar la redaccin del seudocdigo. 215 + 0.35 * Km 200 + 0.50 * Km

Ejemplo 4.8 (Nolae, repeticin, Boletos Tegucigalpa, SPS)


Escribir el seudocdigo Nolae del Ejemplo 3.10 (pg.92) en la seccin 3.4.3, que dice lo siguiente Una compaa de transporte dispone del servicio entre las ciudades de Tegucigalpa y San Pedro Sula. Se ofrecen dos tipos de tarifa (Primera clase y clase econmica) de Lps. 200.00 y Lps 110.00 respectivamente. Se le proporciona al programa el nmero de boletos y el cdigo de tarifa deseado (Cdigo=1 para primera clase, cdigo=2 para clase econmica) y se desea conocer el total a pagar (asumir que los boletos que se compran son de la misma tarifa).por varios clientes y al finalizar colocar el mensaje FIN DEL PROGRAMA. Utilice un valor ficticio de fin de datos (o centinela) adecuado ______________________________________________________________________ 139

Inicio Lea Nbol Mientras Nbol 0 haga Lea Cod Si Cod = 1 entonces Pago sino Pago Fin-si escriba Total a a pagar: Lps. , Pago Lea Nbol Fin-Mientras Escriba Fin del Programa Final Para ejercitar ms este tipo de seudocdigo, se presentan los siguientes ejemplos que muestran algunas variantes: 200 * Nbol 110 * Nbol

Ejemplo 4.9 (Nolae, Repeticin centinela, CI)


Elaborar un algoritmo para resolver lo siguiente: Dado el Coeficiente Intelectual de varios estudiantes, clasificarlos conforme a los rangos mostrados (considerar que el CI es una variable real). CI CI < 80 80 < CI 110 CI >110 Rango Subnormal Normal Superior).

En el Captulo 3 se desarroll este ejemplo pero sin repeticin, (por favor vea el Ejemplo 3.8, pg.81) ahora se har repetitivo. Estrategia: (Varios) Salida Mensaje Entrada (Varios) CI

______________________________________________________________________ 140

Inicio

Se utilizarn Decisiones anidadas, ilustradas con Diagrama de rbol (se deja al lector la elaboracin del mismo) 2. Se modificar el ejercicio utilizando: Repeticin controlada por centinela (CI 0) Lea CI Mientras CI 0 haga Si CI < 80 entonces Escriba Subnormal sino Si CI 110 entonces Escriba Normal sino Escriba Superior Fin-si Fin-si Lea CI Fin-Mientras

Final A continuacin se muestra la PE con los siguientes datos PRUEBA DE ESCRITORIO Datos: 80, 120, 100, 0 Memoria: CI 80 120 100 0 ______________________________________________________________________ 141 Subnormal Superior Normal Salida:

Ejemplo 4.10 (Nolae, Decisiones anidadas, Repeticin con centinela, Lavado de Autos)
Codificar en Nolae el Ejemplo 3.13 (pg.108), el cual se desarroll hasta un segundo desglose, remitirse al enunciado en el Captulo 3, Seccin 3.5.(pg 108). Inicio Lea N_autos Mientras N_autos 0 haga Lea Tipo Si Tipo = 1 entonces Subtotal sino Si Tipo = 2 entonces Subtotal sino Si Tipo = 3 entonces Subtotal sino Subtotal Fin-si Fin-si Fin-si Si N_auto 2 entonces Desc sino Desc Fin-si Total Subtotal - Desc escriba Total lea N_autos Fin-Mientras Final 0 Subtotal * 0.07 40 * N_autos 35 * N_autos 30 * N_autos 25 * N_autos

______________________________________________________________________ 142

Ejemplo 4.11 (Nolae, Decisiones anidadas, Lavado de Autos, variante)


Elaborar un algoritmo para el ejemplo anterior, pero simplificando las frmulas (subtotal). Se presentar una variante del ejemplo anterior Ejemplo 4.10 (pg.142) consistente en una simplificacin de las frmulas en el Subtotal. Se puede observar que la diferencia entre estas frmulas es solamente el precio en el servicio, se asignarn entonces estos valores a la variable precio, para utilizar una sola frmula para el subtotal que ser: Subtotal Inicio Lea N_autos Mientras N_autos 0 haga Lea Tipo Si Tipo = 1 entonces Precio sino Si Tipo = 2 entonces Precio sino Si Tipo = 3 entonces Precio sino Precio Fin-si Fin-si Fin-si Subtotal Precio * N_autos Si N_auto 2 entonces Desc sino Desc Fin-si Total Subtotal - Desc 0 Subtotal * 0.07 40 35 30 25 precio *N_autos

escriba Total lea N_autos Fin-Mientras Final ______________________________________________________________________ 143

EJERCICIOS 4.6

1.- Realizar la prueba de escritorio para el algoritmo inicio lea M ; i 0 mientras M > 12 haga lea R si R > 5 entonces T sino T fin si i i+1 escriba i, TOTAL, T lea M fin mientras final 2.- Realizar la seudocodificacin del Ejemplo 3.12, pg.104, (Aumentos por categora) 3.- Apndice A, Ejercicio II incisos del 25 al 29. 4.-- Apndice A, Ejercicios III. 5.--Apndice A, Ejercicios del 47 al 51. 6.- Apndice A, Ejercicios del 52 al 55. datos: 16, 14, 4, 10, 3, 2, 11 T+R T+2*R

4.7 DIAGRAMACION DE FLUJO DE ALGORITMOS ESTRUCTURADOS Los algoritmos escritos en el seudocdigo se representan en diagramas de flujo por medio de b.e. que se resumen de la siguiente manera:

______________________________________________________________________ 144

Lectura Escritura B. e. Atmicos Asignacin Nulo Bloques Estructurados B.e. Concatenacin B. e. Compuestos Decisin Repeticin

que se han representado de la siguiente manera: b.e. atmicos Lectura lea L Asignacin V E Escritura escriba L Nulo nulo

b.e. compuestos (estructurados): Concatenacin, decisin y repeticin. Estos se ilustraron previamente en las secciones 4.4, 4.5 y 4.6, de manera informal, en este captulo se tratarn con ms profundidad, a continuacin se muestran la representacin de la concatenacin:

B1

B2

De igual manera existen grficos para representar los dems b.e. compuestos, los cuales se muestran de manera comparativa en los grficos siguientes.

______________________________________________________________________ 145

Concatenacin

Inicio B1

Decisin Inicio B1 B2

Repeticin Inicio B1

B2
V

C C
F F

B2

B3 B3 Final

B4

B4 Final

B5 Final
Ejemplo 4.12
Dibujar el diagrama de flujo del algoritmo del Ejemplo 4.7, pg.138, (Repeticin centinela,
Kilometraje)

inicio lea Km mientras Km 0 haga si Km < 100 entonces Pago sino Pago fin si escriba Pago lea Km fin mientras final ______________________________________________________________________ 146 215 + 0.35 * Km 200 + 0.5 * Km

Resolucin del Ejemplo 4.12: DIAGRAMA DE FLUJO


Inicio

lea Km

Pago 200 + 0.5 *Km

Km 0

V
Km <100
Escriba.pago lea Km

F
Final

Pago 215 +0.35* Km

F
Se muestran con diferentes cuadros punteados la identificacin de las distintas estructuras del diagrama.

Inicio

lea Km

V V Km <100 F

Pago 200 + 0.5 Km


Esc.pago

Km 0

lea Km

Pago 215 +0 .35 Km

Final

______________________________________________________________________ 147

EJERCICIOS 4.7

1.-

Redibujar el siguiente diagrama de flujo, identificando claramente las distintas estructuras que lo forman (sugerencia: se pueden marcar con distintos colores).

Inicio V B3 B4

B1

B2

C1

B6

F V C2 F B8 B5 F C3

V B7

Final 2.Dibujar el diagrama de flujo de los algoritmos de los Ejemplos del Captulo 4 a) Ejemplo 4.6 b) Ejemplo 4.8 c) Ejemplo 4.9 d) Ejemplo 4.10 e) Ejemplo 4.11 f) De los EJERCICIOS 4.6. Inciso 2, pg 144

______________________________________________________________________ 148

4.8.-

RELACION ENTRE DESGLOSES, ALGORITMOS Y DIAGRAMAS

Se ha estudiado que un algoritmo es un conjunto finito de instrucciones con ciertas caractersticas. Estas instrucciones se pueden escribir en lenguaje natural (la forma en que normalmente se habla) como en los desgloses o bien por medio de un lenguaje tcnico como el seudocdigo Nolae. An ms, se puede utilizar un seudocdigo menos exigente que est entre el lenguaje natural y el seudocdigo Nolae. Tambin se ha visto que la estructura del algoritmo se puede representar grficamente por medio de diagramas de flujo. Todas estas formas constituyen medios diferentes para representar un algoritmo dado. A continuacin se presenta un resumen de la utilidad, ventajas y desventajas de cada una de estas formas.

Desglose
El desglose permite desarrollar la lgica del algoritmo de manera descendente. Permite ir descubriendo la estructuracin del algoritmo de lo general a lo particular. Hasta llegar a las instrucciones especficas (b.e. atmicos). Tiene la facilidad de que se puede usar el lenguaje natural, por lo cual es posible la expresin de acuerdo a la manera personal de pensamiento. Por otra parte, tiene la desventaja de que no siempre es preciso y que su traduccin a un lenguaje de programacin no es inmediata. Aunque para efectos didcticos se han desarrollado desgloses para ejercicios sencillos, en la prctica, para el programador experimentado o al estudiante avanzado de programacin, el desarrollo de desgloses no es necesario en problemas de poca complejidad. Tambin es de notar que el flujo de las instrucciones no es tan evidente y su seguimiento requiere de cierto esfuerzo y alguna experiencia o ejercitacin previa.

Seudocdigo
El seudocdigo es preciso ya que cada palabra tiene un significado especfico y slo uno. Adems, cada instruccin o estructura tiene una y slo una representacin; por lo que constituye una manera ms exacta y detallada del tipo de algoritmos de inters en ______________________________________________________________________ 149

computacin. El seudocdigo define rigurosamente un algoritmo sin el tecnicismo extremo de las sintaxis de los lenguajes de programacin. Otra ventaja considerable de los seudocdigos es que estn escritos con palabras del idioma natural, que aunque restringidas a un significado muy especfico, permiten recordarlo fcilmente. Esto es particularmente vlido en el mbito del idioma espaol, ya que la gran mayora de los lenguajes de programacin usan trminos tomados de la lengua inglesa. El seudocdigo se asemeja mucho al cdigo de un lenguaje de programacin, por lo que su traduccin a ste es casi directa; siendo independiente del lenguaje de programacin que se haya escogido (sin embargo, esta traduccin es un tanto laboriosa en lenguajes no estructurados.). Tambin, el algoritmo en un seudocdigo se presta a una revisin completa y detallada de su lgica por medio de pruebas de escritorio. Igual que en el desglose, el flujo de las instrucciones no es tan evidente. Su nivel de detalle no siempre permite simplificaciones o resmenes como en el caso del desglose que puede desarrollarse a distintos niveles. En el caso de programas muy largos o que su utilizacin no es muy prctica. Al ser independiente de los lenguajes de programacin y construir una base para cualquiera de ellos, no siempre involucra todas las instrucciones especficas y/o especiales de los lenguajes de programacin.

Diagramas de flujo
Como todas las representaciones grficas, permite una visualizacin ms completa de la estructuracin del algoritmo. El flujo de ejecucin del algoritmo est indicado con claridad por medio de las flechas y las bifurcaciones estn inequvocamente representadas por medio de los rombos de las condiciones, por lo que es de fcil seguimiento. Para muchos es el medio que mejor muestra la lgica del algoritmo, y que efectivamente, es el caso de bifurcaciones hacia atrs, como en la repeticin que el flujo es evidente. Por lo tanto para el que se inicia en la programacin resulta ms comprensible que los desgloses o seudocdigos. Su traduccin a un lenguaje de programacin no es difcil, especialmente si para los bloques atmicos se utilizan la terminologa de un seudocdigo o bien se utilizan otros smbolos especficos en vez de los rectngulos (por ejemplo un trapezoide para la entrada-salida). Un diagrama de flujo puede representar distintos niveles de desgloses de un algoritmo, en donde los bloques representan procesos complejos que no se detallan, ______________________________________________________________________ 150

equivalentes al primero o segundo desglose del algoritmo. Los diagramas de flujos son muy tiles en la enseanza, ya que muestran con claridad, como se ha mencionado anteriormente, la lgica de un algoritmo o porcin del mismo. Son tiles para la introduccin de las estructuras, como se ha visto en este mismo libro. Entre las desventajas se pueden mencionar: que para algoritmos con muchas instrucciones no es prctico a un nivel profundo de detalle. Tampoco resulta prctico para el diseo descendente, que es la modalidad de desarrollo de algoritmos en este curso. Para su diseo especifico, an en algoritmos sencillos, la tcnica del diagrama de flujo como desarrollo de la lgica de un programa, presume que el diseador ya sabe lo que tiene que hacer. (A menos, por supuesto, que se est ensayando y probando; pero en este caso resulta engorroso por el dibujo del mismo). Cabe mencionar que para algunos que tienen buena lgica para los programas y que se han iniciado con los diagramas de flujo, ste constituye la forma ideal de desarrollar programas. Pero la instruccin que sigue a cada instruccin, o en el peor de los casos, las instrucciones que da inicio a un algoritmo, no siempre es evidente para el comn de los mortales que se est introduciendo al campo de la programacin. Didcticamente, el diagrama de flujo mal utilizado, puede abrir camino a una mala estructuracin de un algoritmo y a fomentar malos hbitos de programacin. Especficamente cuando se trazan flechas sin mucho cuidado o se dejan flujos incompletos. Puede inducir al uso indiscriminado de gotos, (si no sabe lo que es un goto, es mejor que no lo sepa por un buen tiempo), que si bien pueden codificarse en la mayora de los lenguajes, resultan en programas espageti

4.9.-

CENTINELAS, CONTADORES Y ACUMULADORES

4.9.1 Centinelas Bsicamente un centinela (llamado tambin bandera) es una variable cuyo valor representa un estado de una situacin especfica. Aunque no ha sido mencionado por su nombre ya se ha utilizado este concepto en el Ejemplo 3.9 (pg.83) de la seccin 3.4.3 y luego se utiliz tambin en la seccin 4.6 Ejemplo 4.7 (pg.138), su algoritmo se muestra a continuacin: ______________________________________________________________________ 151

Ejemplo 4.13(Centinela, Nolae, Kilometraje)


Dado el siguiente algoritmo, se analizar el uso de un centinela inicio lea Km mientras Km 0 haga si Km < 100 entonces Pago sino Pago fin si escriba Pago lea Km fin mientras final En el algoritmo la variable Km toma un valor centinela (que es 0) que indica fin de datos y que permite terminar el ciclo repetitivo. En este caso la situacin especfica es ya no hay ms datos vlidos que procesar otra aplicacin se puede ver en los Ejemplos 4.10 (pg.142) con la variable Numero de autos, toma un valor centinela de 0 y en el Ejemplo 3.12 (pg. 104)en donde la variable categora toma un valor centinela que es 99. En el caso de las Repeticiones controladas por Centinela, para seleccionar la variable que se comparar con un valor centinela, se deber considerar lo siguiente: De la lista de las Variables de Entrada, Seleccionar aquella que de una manera rpida se pueda determinar que tiene valores no posibles Normalmente, muchos programas se disean para que desde un principio no acepten datos incorrectos, de tal manera que si un dato es invlido, no se permite su ingreso o subsecuente almacenamiento. En relacin a la escogencia de los CENTINELAS se supondr que no se cometen errores al introducir los datos y que el valor escogido como tal, si es un valor que se puede teclear. En el Ejemplo 3.12 (pg. 104)en el que dados la categora (1, 2, 3) y el sueldo de un se calcula el aumento y el nuevo sueldo del trabajador. Para seleccionar la variable centinela ______________________________________________________________________ 152

200 + 0.5 * Km 215 + 0.35 * Km

puede pensarse que Cero para el sueldo puede ser una buena opcin, tambin para la categora las opciones posibles son 1, 2 3 y aunque se considere que el usuario no se equivoca al teclear los datos, se puede escoger cualquier valor que no sea uno de estos, las posibilidades son infinitas, se pudiera escoger: 4, -1, 99, etc., para el ejemplo se escogi 99, as el usuario podr teclear: 1, 2, 3 99. Otro uso de centinelas (Banderas) se ejemplificar mas adelante en aplicaciones de generacin de secuencias de nmeros (sucesiones), vale decir que las BANDERAS tambin se utilizan para denotar un cambio de estado, por ejemplo en bsquedas, se acostumbra inicializar la Bandera en un valor y si determinada condicin establecida se cumple en al menos un caso, se cambia de valor la bandera; bastar entonces preguntar en una decisin por el valor de dicha bandera, para as concluir con lo pertinente.

4.9.2 Contadores En muchos algoritmos se requiere ir contando ya sea los datos que se van leyendo o los ciclos que se repiten en una estructura mientas-haga o cualquier otra situacin de inters, en estos casos se utilizar un contador. Un contador consiste en una variable que se inicia en general en un valor cero y que se va incrementando (de 1 en 1 en la mayora de las veces) a medida que se cuenta lo que se desea. Se realizarn varios ejemplos para ilustrar diferentes aplicaciones de los contadores.

Ejemplo 4.14 (Contador)


Realizar la prueba de escritorio de las siguientes asignaciones: N 0

N N +1 N N+1 N N+1

______________________________________________________________________ 153

Prueba de escritorio: Memoria: N 0 1 2 3 Se puede observar que se inicializ la variable N en en Cero que es neutro aditivo, posteriormente se increment en 1 y se obtuvo 1, se vuelve a incrementar N en 1 y se obtine el valor de 2, as sucesivamente hasta terminar.

Ejemplo 4.15 (Contadores, Votacin entre 2 candidatos.)


Realizar el escrutinio de una eleccin entre dos candidatos (ADAN y BETO) por un nmero impar de votantes, considerando que todos los votos son vlidos y que no hay votos en blanco, lo votos estarn codificados con un 1 si el voto es para ADAN, y con un 2 si el voto es para BETO, al final de los datos se colocar como centinela 9 ESTRATEGIA Un mensaje Gana ADAN o Gana BETO (Varios) Voto

Asumiendo que se tienen todas las papeletas de la votacin de la siguiente manera Voto de ADAN 1 2 1 1 2 9 Marca de fin de datos, ya no hay mas votos Voto de BETO 2

Se tiene un proceso repetitivo controlado por centinela, cuya condicin de repeticin es Voto 9. Se necesita un contador de votos para cada uno de los candidatos,

CA CB

ser el contador de votos de ADAN ser el contador de votos de BETO

______________________________________________________________________ 154

Ambos deben inicializarse en cero ya que antes de comenzar con el conteo ningn candidato tiene votos, posteriormente segn el voto sea igual a 1 o a 2, se deber ir incrementando cada contador CA o CB, se debe tener presente que estos contadores se incrementaran de uno en uno (ver Ejemplo 4.14 en pg.153) as: CA CB CA + 1 CB + 1, se requerir entonces de una

Una decisin para incrementar el voto a quien corresponda (en un ciclo de Reticin) Si voto = 1 (V) (voto =2 ) (F) incrementar 1 voto a ADAN incrementar 1 voto a BETO

Una decisin fuera del ciclo repetitivo comparando los contadores y publicando al ganador: Si CA >CB (V) publicar Gana ADAN (F) publicar Gana BETO

DICCIONARIO DE VARIABLES Identificador CA CB Voto RESUMEN DEL ANALISIS SALIDA: (Un mensaje) Gana ADAN Gana BETO Descripcin Contador de votos de BETO Voto contenido en la boleta .

Contador de votos de ADAN

ENTRADA (Varios nmeros) Voto 1 por ciclo PROCESO: Se inicializan los contadores en cero (CA, C(B), se realiza un proceso repetitivo controlado por centinela (Voto 9) en el cual para cada persona se lee su voto, si voto =1 se incrementa el contador CA sino el contador CB, finalmente se imprime el ganador.

______________________________________________________________________ 155

DESGLOSES Desglose 1er. Nivel 1. Pasos Iniciales 2. Proceso 3. Pasos finales Desglose 2do Nivel 1. PASOS INICIALES 1.1 Inicializar el contador de votos de ADAN (CA) en Cero 1.2 Inicializar el contador de votos de BETO (CB) en Cero 1.3 Leer Voto 2.PROCESO 2.1 Mientras Voto 9 hacer lo siguiente repetidamente 2.1.1 Ver si Voto = 1 2.1.1.1 (V) Incrementar en 1 el contador de ADAN 2.1.1.2 (F) Incrementar CB en 1 2.1.2 Leer el siguiente Voto 3.PASOS FINALES 3.1 Ver si CA > CB 3.1.1 (V) Imprimir Gana ADAN 3.1.2 (F) Imprimir Gana BETO

Note que 2.1.1.1 y 2.1.1.2 son diferentes en forma, pero equivalentes en la asignacin respectiva.

______________________________________________________________________ 156

Seudocdigo Nolae Inicio CA CB 0 0 -- Inicializar un contador (1) (2)

lea Voto mientras Voto 9 haga si Voto = 1 entonces CA sino CB fin si lea Voto fin mientras si CA > CB entonces escriba Gana ADAN sino escriba Gana BETO fin si final

CA +1 -- Incrementar un voto CB +1

(3) (4)

(5)

PRUEBA DE ESCRITORIO Datos: 1, 2, 1, 1, 2, 9 Memoria Salida

CA 0 1 2 3

CB 0 1 2

Voto 1 2 1 1 2 9

Gana ADAN

______________________________________________________________________ 157

Observacin 4.9.2 Los contadores tienen en general tres momentos: 1) Inicializacin en general en cero y antes de un Ciclo Repetitivo, ejemplo 2) Incremento generalmente en 1 en un Ciclo Repetitivo: CA CA 0

CA +1

Note que se escribe la MISMA VARIABLE a AMBOS LADOS de la asignacin respectiva, esta asignacin se colocar estratgicamente en el flujo del programa segn corresponda. 3) Al finalizar el Ciclo repetitivo: Se pueden imprimir: escriba CA

o se pueden hacer otras operaciones con ellos e imprimirlos como datos con

Considerando el ltimo inciso de la observacin anterior, si en el ejemplo que nos ocupa si se quisiera publicar cuantos votantes participaron, se debern agregar las siguientes Lneas: Votantes CA + CB Lnea (6) Lnea (7)

Escriba Total de votantes: , votantes

Ejemplo 4.16 (Conteo de clientes con 20% y 10% de descuento, hace referencia al Ejemplo 4.4, pg.133)
El enunciado modificado es el siguiente: En una tienda se otorgar a los clientes descuentos en sus compras. Si el valor de la venta (excluyendo el 12% de impuesto sobre venta-isv) es de de Lps. 200.00 menos, se le concede un descuento del 10%, si es de ms de Lps.200.00, el descuento ser de 20%. Se le proporciona al computador el valor de la venta, se desea calcular el descuento, el isv. y el valor total a pagar, se imprimir solamente el Total a pagar por el cliente. Adems se desea determinar: A cuantos clientes se les otorgo el 20% de descuento A cuantos clientes se les otorgo el 10% de descuento El Total de clientes atendidos, Se usar como marca de fin de datos 0, Val_Venta = 0

______________________________________________________________________ 158

El algoritmo respectivo se muestra en el Ejemplo 4.4 ,pg. 133, (con la variante de que solamente se imprimir el total a pagar). Utilizando como ayuda el diccionario de variables y cambiando convenientemente un poco el orden usual de un plan de anlisis, se proceder a disear el algoritmo solicitado. DICCIONARIO DE VARIABLES
Identificador Descripcin TIPO de dato

Val_Venta Descuento Subtotal Isv C_20 C_10 N_Clientes

Valor de la venta sin isv Valor del descuento Subtotal,Nuevo valor de venta con descuento Valor del Isv Contador de clientes con 20% descuento contador de clientes con 10% descuento Clientes totales atendidos

(Real en Lps.) (Real en Lps.) (Real en Lps.) (Real en Lps.) (Entero) (Entero) (Entero)

Este ejemplo ya se abord previamente, las modificaciones a incorporar consistirn en adicionar dos contadoras C_20 y C_10, para su implementacin se considerarn los tres momentos de los contadores mencionados en la Observacin 4.9.2 Para determinar los clientes totales atendidos N_Clientes, existen dos alternativas: Utilizar un contador con su respectivo incremento: Calcularlo sumando C_20 y C_10, as: S ESTRATEGIA (Varios) Total N_Clientes N_Clientes + 1 N_Clientes C_20 + C_10

-----------------+--------------C_20, S C_10, Clientes con 20% de descuento: Clientes con 10% de descuento:

Asignacin Caracterstica

C_20 C_10

C_20 + 1 C_10 + 1 C_20 + C_10

N_Clientes Total de clientes atendidos

N_clientes

______________________________________________________________________ 159

(Varios) Val_Venta

Note que en las Salidas se tienen variantes: En el primer grupo la salida es de varios totales a pagar (uno por cliente) y Posteriormente nmeros nicos correspondientes a los reportes solicitados

RESUMEN DEL ANALISIS SALIDA : (Varios nmeros) 1 por ciclo y adems C_20, C_10 , N_clientes Val_venta (3 nmeros y sus mensajes) ENTRADA (Varios nmeros) 1 por ciclo PROCESO: Se inicializan los contadores en cero (C_20, C_10), se realiza un proceso repetitivo controlado por centinela (Val_Venta 0) en el cual para cada cliente se lee el Valor de la venta Val_venta, se determina si es superior a 200 o no para calcular el descuento respectivo e incrementar los contadores correspondientes, luego se calcula el subtotal, el isv y el total, para terminar imprimiendo el TOTAL a pagar por el cliente. Al finalizar se calcula el total de clientes N_clientes y se imprimen los reportes solicitados Total

A continuacin el respectivo algoritmo, considerando todo lo detallado en la Estrategia y Resumen del Anlisis previos.

______________________________________________________________________ 160

Algoritmo

Inicio C_20 C_10 .. Lea Val_venta Mientras Val_venta 0 haga Si Val_venta > 200 Entonces Deduccion C_20 Sino Deduccion C_10 Fin si Subtotal Isv Total . Lea Val_venta Fin mientras N_clientes C_20 + C_10 . (8) (9) (10) (11) Escriba Clientes con 20% de descuento: ; C_20 Escriba Clientes con 10% de descuento: ; C_10 Escriba Total de clientes atendidos: ; N_clientes Final Comentarios de la lneas numeradas del (1) al (11): Lneas (1) y (2) Se inicializan los contadores antes de entrar al Ciclo Repetitivo. Val_venta - deduccion Subtotal + isv (7) subtotal *0.12 Val_venta * 0.10 (6) C_10 + 1 Val_venta * 0.20 (5) C_20 + 1 (4) 0 0 (1) (2) (3)

Escriba Total a pagar Lps. , total

______________________________________________________________________ 161

Lneas (4,5, 6) Evaluando la condicin Si Val_venta > 20 se cumple, se realiza el ramal (V) en donde a los clientes se les da el 20% de descuento, entonces es ah donde se debe contar a los clientes a los que se les dio ese descuento, se har colocando el incremento del contador respectivo C_20 en la Lnea (5) Si dicha condicin no se cumple, el programa lleva al ramal (F), que corresponder a los clientes a quienes se les da un descuento del 10%, debiendo colocarse el incremento del contador C_10 en ese mismo ramal o sea la Lnea (6) Lneas (3, 7) Si el total de clientes se hubiera calculado utilizando el contador N_clientes, se necesitara inicializarlo en la Lnea 3, posteriormente se requeriran incrementos de 1, as la lnea 7 sera: N_Clientes N_Clientes +1

Lnea (8) Se calcula el N_clientes como la suma de dos contadores C_20 + C_10. Como se dijo antes, se puede utilizar un contador inicializado en cero: N_clientes N_clientes 0 en la Lnea (3) incrementndolo en el proceso repetitivo N_clientes +1 en la Lnea (7)

En consecuencia se tendra que omitir la Lnea (8). Lneas (9, 10, 11) Se imprimen las estadsticas o reportes con sus respectivos mensajes

4.9.3

Acumuladores

Otra necesidad que frecuentemente se encuentra en los problemas de programacin, y especialmente en aquellos de aplicacin comercial, es la de encontrar totales o subtotales de varias cantidades. Es decir, encontrar la suma de varios nmeros. La manera por excelencia de resolver este problema es por medio del concepto de acumulador aditivo. Un acumulador aditivo es una variable que se inicializar en 0 y a la cual sucesivamente se le van sumando distintos valores, precisamente los valores cuya suma se busca. Este concepto no est aislado de lo que se hace en la vida prctica cuando se suman varios nmeros. Las caractersticas de estos acumuladores sern anlogas a las mostradas en la Observacin 4.9.2, estas se muestran en la siguiente observacin: ______________________________________________________________________ 162

Observacin 4.9.3 Los Acumuladores tienen en general tres momentos: 1) Inicializacin en general en cero y antes de un Ciclo Repetitivo, ejemplo

Acum

2) Incremento generalmente en una variable X, ubicada en un Ciclo Repetitivo

Acum
asignacin respectiva.

Acum +X

Note que se escribe la MISMA VARIABLE a AMBOS LADOS en la Esta se colocar estratgicamente en el flujo del programa correspondiente. 3) Al finalizar el Ciclo repetitivo: Se pueden hacer otros clculos con los contadores, manipularlos, imprimirlos como datos estadsticos, reportes, etc..

Ejemplo 4.17 (Ingreso total, Conteo de Boletos de Tegucigalpa y San Pedro Sula) En el Ejemplo 4.8, pg.139-140, (Viajes Tegucigalpa, San Pedro Sula, boletos de primera clase y clase econmica) se quiere determinar cuantos boletos de primera clase y de clase econmica se vendieron y cual fue el Ingreso total del da. ESTRATEGIA (Varios) S Pago E (Varios) Nbol Cod ------------------+--------------------------Total Boletos de primera clase S Total Boletos de primera clase Ingresos totales C_primera C_econo T_ing
Asignacin Caracterstica

C_primera C_econo T_ing

C_primera + nbol C_econo + nbol

T_ing + pago

Note en las asignaciones sugeridas, que C_primera contar los boletos vendidos de primera clase, considerando que cada cliente pude comprar varios boletos (nbol) del mismo tipo el ______________________________________________________________________ 163

incremento entonces no ser de 1 sino de los nbol comprados, lo mismo aplica para C_econo.
DICCIONARIO DE VARIABLES (Se alterar el orden de su ubicacin con fines didcticos)

Identificador Cod Nbol Pago C_primera C_econo T_ing

Descripcin Cdigo del tipo de tarifa Nmero de boletos Total a pagar contador de boletos de primera clase contador de boletos de clase econmica Ingresos totales de la empresa

Tipo de dato Entero Entero Real Entero Entero Real

El lector deber completar los espacios en blanco en las lneas numeradas del siguiente algoritmo propuesto, posteriormente deber verificar si sus respuestas son correctas en la siguiente pgina: Inicio . . Lea Nbol Mientras Nbol 0 haga Lea Cod Si Cod = 1 entonces Pago 200 * Nbol sino Pago 110 * Nbol (5) . Fin-si escriba Total a a pagar: Lps. , Pago Lea Nbol Fin-Mientras ....... . Escriba Fin del Programa Final ______________________________________________________________________ 164 (1) (2) (3)
Llene los espacios en blanco inicializando cada uno de los contadores y acumuladores, colocando sus incrementos en las lneas correspondientes, finalizando con los reportes solicitados, en la siguiente pgina puede comparar sus

(4)

respuestas:

(6)

(7) (8) (9)

Inicio C_primera C_econo T_ing 0.0 Lea Nbol Mientras Nbol 0 haga Lea Cod Si Cod = 1 entonces Pago sino Pago Fin-si escriba Total a pagar: Lps. , Pago T_ing Fin-Mientras T_ing + pago 110 * Nbol C_econo 200 * Nbol C_primera 0 0

Observaciones (1) Tipo de dato entero (pueden ir en la misma lnea) (2) No se escribe punto decimal 0
(3) Tipo real, en su inicializacin se utilizar

punto decimal 0.0

C_primera + nbol

(4)

C_econo + nbol

(5)

(6)

Lea Nbol Escriba Boletos de primera clase vendidos: , C_primera (7) Escriba Boletos de clase economica: , C_econo Escriba Ingresos Totales Lps., T_ing Escriba Fin del Programa Final Algunas Lneas de este algoritmo requieren comentarios especiales: Lneas (1,2) Para ahorrar espacio, en Nolae se acostumbra colocar en un mismo rengln la inicializacin de contadores del mismo tipo numrico, en este caso tipo entero, as: C_primera 0, C_econo 0 (1) Lnea (3) Inicialmente no se ha recaudad nada, as que se inicializa T_ing en cero. (8) (9)

______________________________________________________________________ 165

Por razones didcticas, las inicializaciones que correspondan a distintos tipos de datos se escribirn agrupadas en diferente rengln, las inicializaciones previas corresponden a datos enteros pero T_ing es un dato real. T_ing admite nmeros decimales y su inicializacin se indica con punto decimal 0.0. Lneas (4) y (5) Se incrementan los contadores respectivos en Nbol (no en 1) pues cada cliente compra Nbol etos. Lnea (6) Se Acumula el pago por cada cliente que recin se ha calculado. Lneas (7, 8, 9) Se imprime el reporte estadstico solicitado. Se deja al lector realizar la prueba de escritorio correspondiente con los siguientes datos: Datos 3, 1, 4, 2, 5, 1,0 Otra manera directa de entender como funciona un contador o un acumulador es realizando una prueba de escritorio.

EJERCICIOS 4.9.3 1) Realizar la prueba de escritorio del siguiente algoritmo inicio i 1 lea X mientras X > 0 haga si X > 50 entonces i i+1 sino escriba <0 = 50 fin si lea X fin mientras escriba Se tienen , i, nmeros mayores que 50 final Conteste las siguientes preguntas: Cul es el ltimo valor de i? Qu hace este algoritmo? ______________________________________________________________________ 166 La repeticin (mientras) se puede controlar con condiciones diversas, no solamente con centinelas

2.2.1) inicio

Realizar la P.E. de los siguientes algoritmos

0 escriba Hola c c+1

mientras c <3 haga

fin mientras escriba Se repiti 3 veces final Despus de realizar las pruebas de escritorio, las salidas y que

2.2) inicio i 1 escriba Hola i i+1 fin mientras escriba Se repiti 3 veces final mientras i < 3 haga

2.1) y 2.2) Conteste las siguientes preguntas: Qu semejanzas tienen diferencias encuentra en las inicializaciones de los contadores y en las condiciones de repeticin?.

Cul es el ltimo valor de i ? ________ Por qu?____________________

4.9.4 Repeticin controlada por contador Se introducir este tema utilizando los ltimos dos EJERCICIOS 4.9.3. incisos 2.1) y 2.2), como se puede observar, con ambos algoritmos se obtiene la misma salida (3 saludos), el primero tiene la conveniencia que es natural pensar que inicialmente no se ha realizado un ciclo y que se comience con el contador C inicializado en cero, observe que la condicin de la repeticin no incluye al 3 (i < 3). El segundo algoritmo inicializa el contador i en 1 a pesar de que an no se ha realizado ningn ciclo y su condicin de repeticin si incluye a 3 (i < 3). El lector pudo comprobar que ambos algoritmos producen la misma salida, y controlan la repeticin con la ayuda de un contador. ______________________________________________________________________ 167

Cul algoritmo ser mejor para estos fines? En este libro se utilizar el algoritmo 2.2), esta decisin, est influenciada por la conveniencia de poder introducir mas adelante el BLOQUE PARA (seccin 5.3.1). Por el momento el algoritmo 2.2) se utilizar para realizar lo que se llama Repeticin controlada por contador, que tiene la siguiente estructura:

REPETICION CONTROLADA POR CONTADOR

mientras i < 3 haga Rango i i+1 Leer el la siguiente pgina la Observacin 4.9.4.1

fin mientras

Si se desea repetir el Rango N- veces en donde el valor de N es ledo, se tendra: Inicio Lea N i 1

mientras i < N haga escriba Esta es la vez numero: , i i i+1

fin mientras escriba Se repiti, N, veces final

Realizando la prueba de escritorio con el siguiente dato se tiene:

______________________________________________________________________ 168

PRUEBA DE ESCRITORIO Dato: 4 Salida I 1 2 3 4 5 Esta es la vez numero 1 Esta es la vez numero 2 Esta es la vez numero 3 Esta es la vez numero 4

Memoria N 4

Observacin 4.9.4.1 Las lneas marcadas con una de una repeticin controlada por Contador: (i) Inicializacin del contador i (en general) en 1, En la lnea del mientras se compara Note que el rango se realizar n - veces Al final del rango se incremente i en 1, i

, son las 3 caractersticas 1

i < N veces i i+1

Vale decir que aunque por error se omitiera esta incremento, de todas maneras el programa regresara a evaluar la condicin de repeticin, y al no modificar el valor del contador C se entrara a un ciclo de repeticin o Loop infinito, Cundo parara?

Observacin 4.9.4.2 La REPETICION CONTROLADA POR CONTADOR se utilizar cuando se conoce el nmero de veces en que se realizar el Rango, ya sea porque sea una constante dada o porque sea posible leer este nmero como dato(N).

A continuacin se presentan varios ejemplos para ilustrar esta nueva manera de controlar una repeticin:

Ejemplo 4.18 (Repeticin controlada por contador, leer y sumar N nmeros)


Disear un algoritmo que lea N nmeros y que imprima su suma ______________________________________________________________________ 169

ESTRATEGIA N (un nmero) S Suma (1 nmero) E X, El nmero en un ciclo (N+1 nmero) Observacin 4.9.4.3

Observacin 4.9.4.3 En forma cuantitativa, las Entradas del ejercicio son N + 1 datos ya que se da a leer N (1 dato) que ser el nmero de veces que se realizar el ciclo y N nmeros que se van a sumar. En este ejercicio, se suman N=5 Nmeros, as los datos son : N + 1 = 5 + 1 = 6 nmeros.

Se utilizar una repeticin controlada por contador, pues se sabe cuantas veces se deber realizar el Proceso de leer un nmero y acumular sus suma (N veces). Observacin 4.9.4.2

Para calcular el promedio se requerir, acumular la suma de todos los nmeros que se irn leyendo.

1.- EJEMPLO DE ESCRITORIO (y explicaciones adicionales) Este concepto no est aislado de lo que se hace en la vida prctica cuando se suman varios nmeros. Por ejemplo: Deteminar la suma de : 3 5 2 7 4

El lector habr encontrado que el resultado es 21. Muy posiblemente comenz sumndole el 5 al primer 3 (lo cul es 8) luego agreg 2 para obtener 10. Al sumarle el 7 que sigue obtuvo 17; y finalmente a 17 sum 4 para totalizar 21. Observando el proceso con ms cuidado se puede notar que se van obteniendo subtotales que son sumas parciales de los datos procesados (sumados en este caso) hasta un momento dado, se dice que es el valor acumulado hasta ese instante. No debe ser difcil reconocer que cada instante corresponde a un ciclo de un proceso repetitivo en donde se suma un nuevo valor al subtotal acumulado hasta entonces:

______________________________________________________________________ 170

S = 3 + 5 + 2 + 7 + 4 = 21 0 +3=3 +5=8 + 2 = 10 + 7 = 17 + 4 = 21 Se necesitar un contador para controlar que el ciclo se efecte N veces y adems un acumulador aditivo para ir sumando los nmeros ledos, llamados X. De nuevo, una manera prctica de fijar ideas es realizando la P.E. del algoritmo del ejemplo correspondiente. Como se sabe que se sumarn N (cinco) nmeros, se utilizar un contador para controlar la repeticin. Inicio Suma Lea N i 1 0 --Se lee cuantos nmeros se van a sumar.

mientras i < N haga lea X Suma i i+1 Suma + X

fin mientras escriba La suma de los numeros es : , Suma final Realizar la prueba de escritorio con los siguientes datos: PRUEBA DE ESCRITORIO Datos: 5, 3, 5, 2, 7, 4 Memoria Suma 0 3 8 10 17 21 N 5 i 1 2 3 4 5 6 X 3 5 2 7 4 La suma de los numeros es: 21 Salida

______________________________________________________________________ 171

Ejemplo 4.19 (Repeticin controlada por contador, acumuladores, descuentos, promedios)


Modificar el Ejemplo 4.16 (pg.158) considerando que es posible leer el N clientes como dato (por tanto ya no se contabilizar el N_clientes), que no se cobra el impuesto isv, y que se desea saber lo siguiente: Ventas promedio con el 20% de descuento. Ventas promedio con el 10% de descuento.

ESTRATEGIA Retomando algunos aspectos de la estrategia del Ejemplo 4.16 (pg 158), se plantear lo que corresponde a las modificaciones planteadas, comenzando por determinar las Salidas y las Entradas. N Val_Venta (1 nmero) (N nmeros)

S (Varios) Total

La entrada son:N + 1 nmeros, leer la Observacin 4.9.4.3 (pg.170)

Surgen nuevas Salidas con valores nicos, como se indica a continuacin:

----------------------- + ------------------------C_20, Clientes con 20% de descuento, C_10, Clientes con 10% de descuento, Ingresos_20 S
(1)

ASIGNACION CARACTERISTICA

C_20 C_10

C_20 + 1 C_10 + 1

Ingresos_20 Ingresos_20+total V_prom_20 Ingresos_20/C_20

V_prom_20 Clculo que requiere haber acumulado previamente los Ingresos_20

Ingresos_10 V_prom_20 Idem

Ingresos_10 Ingresos_10+total V_prom_10 Ingresos_10/C_10

(1)

Para calcular las ventas promedio V_prom_20 realizadas con el 20% de descuento, se

requiere dividir los Ingresos totales de las ventas con el 20% de descuento (Ingresos_20) entre el total de clientes a los que se les otorga ese descuento o sea C_20, As: V_prom_20 Ingresos_20 / C_20,

Un razonamiento similar se aplica a V_prom_10 ______________________________________________________________________ 172

Inicio C_20 0, C_10 0 0.0 (1) (2) (3) (4) (5) (6) (7) Val_venta * 20 (8) (9) (10) (11) (12) (13) (14) (15) (16) (17) (18) ingresos_20 / C_20 . ingresos_10 / C_10 . (19) (20) (21) (22) Ingreso_20 0.0, Ingreso_10

Lea N_clientes I 1

Mientras i < N_clientes Lea Val_venta Si Val_venta > 200 Entonces Deduccion Total C_20 Sino Deduccion Total C_10 Fin si Escriba Total a pagar Lps. ,total I I+1 Val_venta * 10 Val_venta- deduccin C_10 + 1 Ingreso_10 + Total Val_venta deduccion C_20 + 1 Ingreso_20 + Total

Ingreso_20

Ingreso_10

Fin mientras V_prom_20 V_prom_10

Escriba Clientes con 20% de descuento: ; C_20 Escriba Clientes con 10% de descuento: ; C_10

Escriba Ventas promedio para Clientes con 20% de descuento: , V_prom 20(23) Escriba Ventas promedio para Clientes con 10% de descuento: , V_prom 10(24) Fina

______________________________________________________________________ 173

Comentarios para algunas lneas del algoritmo: Lnea (1) Inicializacin de los contadores de clientes, (Valores enteros 0). Lnea (2) Inicializacin de los acumuladores de ingresos (Valores reales con decimales 0.0). Lneas (4, 5, 17) Repeticin controlada por contador. Lnea (6) En el Rango estn todas las lecturas de Val_venta, diferente de cuando se us centinela en el Ejemplo 4.16, en donde se requera una lectura inicial antes de entrar a la repeticin, y posteriormente otra lectura al final del Rango Lneas (9, 13) A diferencia del Ejemplo 4.16 que calculaba el Total despus de la decisin, ya que se necesita acumular los ingresos por categora, es necesario totalizar en el Ramal correspondiente. Lneas (10 y 11, 14 y 15) Se incrementan los contadores y acumuladores correspondientes Lnea (16) Se imprime el total a cobrar al cliente en forma concatenada a la decisin preliminar ya que a todos los clientes sin distincin se les va a cobrar, no es necesario escribir la misma lnea en cada uno de los ramales de la decisin. Lneas (19 y 20) Se calculan las ventas promedio de cada uno de los distintos tipos haciendo las operaciones necesarias. Note que estas se obtienen de un clculo, las ventas promedio no son acumuladores ni contadores. Lneas (21 al 24) Se imprimen los reportes solicitados utilizando rtulos amistosos que facilitarn la comprensin de los mismos.

Se deja al lector realizar la prueba de escritorio respectiva utilizando los siguientes datos PRUEBA DE ESCRITORIO Datos: 4, 250, 100, 300, 80

Observacin 4.9.4.4. En secciones y captulos subsiguientes, se estudiarn otras particularidades en aplicaciones Comerciales, en donde se utilizarn: contadores acumuladores, otros bloques como el Bloque Caso; el Bloque Para, el Repita_Hasta.

A continuacin se presenta otro tipo de acumulador llamado Acumulador Multiplicativo ______________________________________________________________________ 174

Observacin 4.9.4.5 Existe el Acumulador Multiplicativo, que igualmente tiene 3 Momentos: Inicializacin antes de un ciclo repetitivo: Incremento generalmente en un ciclo repetitivo: Impresin final: P 1 P P * num

escriba P.

Este posteriormente servir para calcular Productorios (acumulacin del producto de varios nmeros), potencias, factoriales, etc., en el Captulo 5 se presentaran ms Ejemplos ilustrativos.

Ejemplo 4.20 (Repeticin controlada por contador, Productorio de N nmeros)


Disear un algoritmo en el que dados N nmeros se calcule e imprima el producto de todos ellos (productorio de N nmeros). Posteriormente realizar la prueba de escritorio con los siguientes datos: Datos : 5, 3, 5, 2, 7, 4 Solucin: La Estrategia es igual que la empleada en el Ejemplo 4.18, con las diferencias existentes entre la adicin y el producto. Los resultados parciales de acumular el producto se pueden representar como sigue: P = 3 * 5 * 2 * 7 * 4 = 840

.. 1 * 3 = 3 *5 = 15 ..* 2 = 30 . *7 = 210 * 4 = 840

______________________________________________________________________ 175

El algoritmo final es: Inicio Producto Lea N I 1 Lea X Producto I i+1 Fin mientras escriba El producto de los numeros es : , Producto final PRUEBA DE ESCRITORIO Datos: 5, 3, 5, 2, 7, 4 Memoria Producto 1 3 15 30 210 840 N 5 i 1 2 3 4 5 6 X 3 5 2 7 4 El producto de los numeros es: 840 Salida Producto * X Mientras i < N haga 1

Observacin 4.9.4.6 * En general los contadores y acumuladores aditivos, se inicializan en CERO que es el elemento neutro de la adicin, en cambio los acumuladores multiplicativos en general se inicializan en UNO que es el elemento neutro de la multiplicacin, ya que todo nmero multiplicado por uno (1) vuelve a dar el mismo nmero. * Los contadores son un caso especial de los acumuladores, as i. Todo contador es un acumulador pero. ii. NO todo acumulador es contador.

______________________________________________________________________ 176

EJERCICIOS 4.9.4. En cada caso disee un algoritmo para los p.o.p. propuestos: 1.En una tienda se otorga un descuento del 10% a personas que realizan compras por un valor de Lps. 200.00 o ms. Se dan a leer al computador los totales de cada factura (no se conoce de antemano la cantidad de facturas) y se desea determinar a cuntas facturas se les favoreci con el descuento. 2.3Ampliar el algoritmo del problema anterior para calcular el ingreso total de la tienda. Un profesor tiene 40 estudiantes con tres calificaciones parciales cada uno. Calcular el promedio de cada estudiante para determinar cuantos aprueban, cuantos reprueban el curso, y la nota promedio del curso. 4.5.6.7.8.Ampliar el algoritmo anterior para N estudiantes. Calcular la suma de los cuadrados de los primeros 10 nmeros enteros positivos Dados N nmeros distintos de cero contar cuantos son positivos y cuantos negativos. Se tienen 12 ecuaciones de segundo grado. Determinar cuntas tienen soluciones no reales. Construir la tabla de equivalencia de temperaturas en grados centgrados a grados Fahrenheit, para los valores en C de la siguiente tabla: C 0 1 2 3 4 5 6 7 9.Modificar el algoritmo del problema anterior para: a) b) Valores en C de: 0, 10, 20, 30,70 Valores en C de: -15, -10, -5, 0, 5,,40 F

Del Apndice B realizar los ejercicios del 10 al 18: 10. Ejercicio I incisos 1 al 3 ______________________________________________________________________ 177

11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.22

Ejercicio I Ejercicio I Ejercicio III Ejercicio III

incisos 4 y 5 inciso 6 incisos 12 b) incisos 12 c) hasta aqu del Apndice B.

Ejercicio III incisos 12 a)

Ejercicio VI incisos 24 y 25 Ejercicio VI incisos 26 y 27

Imprimir los nmeros del 1 al 100 sin proporcionar ninguna entrada. Leer varios nmeros hasta encontrar uno que sea mayor de 100. Leer varios nmeros e ir calculando su suma, hasta que sta sobrepase a 200. Calcular la nota media de N estudiantes. Calcular la suma de las N potencias de 2.

Para resolver los siguientes ejercicios el lector deber investigar o consultar con tu maestro 23. Se leen 40 nmeros, encontrar el mayor de ellos. En el Apndice E, encontrar el algoritmo (Ejemplo E.3, pg. 313) para encontrar el mayor de 4 nmeros y la posicin que ocupa ste en la lista de nmeros. 24. 25. Se leen 25 nmeros, encontrar cual es el menor de los nmeros ledos y la posicin que ocupa en la lista de nmeros (la observacin del ejercicio 24). Se proporcionan al computador dos tiempos (medidos en horas, minutos y segundos). Determinar cual es el mayor y encontrar su diferencia en horas, minutos y segundos (es necesario conocer la diferencia entre aritmtica entera y real, y el manejo de sus cocientes y residuos). 26. Una tienda de suministros de computadoras vende diskettes de cierto tipo al por menor y mayor. La unidad la vende a Lps. 100.00. La caja de 10 los vende a Lps.90.0. (Si una persona necesitara 45 diskettes, comprara 4 cajas a Lps. 90.00 y 5 a Lps.10.00 c/u). Se tienen 70 facturas de estas ventas canceladas en efectivo, y para efectos de comprobacin con la cajera, se introducir por cada factura la cantidad de diskettes vendidos. Calcular el ingreso total (no hay impuesto de venta). 27. Del Apndice B, Ejercicio IV inciso 19 (pg. 293)

______________________________________________________________________ 178

CAPITULO 5 ESTRUCTURAS DERIVADAS 5.1 ASOCIATIVIDAD DE LA CONCATENACION

Se ha estudiado que la concatenacin se forma a partir de dos b.e. segn lo muestra el siguiente diagrama.

B1

B2

Si se aplica el concepto estrictamente, slo se podra concatenar dos b.e. y nada ms. De tal manera que si se necesita una secuencia de tres o ms bloques se tendra que ir concatenando de par en par de la siguiente manera:

Concatenando 1 con 2 y resulta A. A

Luego, concatenando A con 3 y se obtiene un b.e. llamado B. B A 3

Que en detalle sera:

___________________________________________________________________ 179

La anterior no es la nica forma de concatenar estos bloques, por ejemplo, se puede concatenar 2 con 3 y obtener C: C

Luego, se puede concatenar 1 con C y obtener D:

D 1

Sin embargo, se puede notar que tanto el bloque B como el D son equivalentes, ya que ambos se ejecutan 1, 2 y 3 en ese orden, (note que el orden NO cambia) sin importar la forma en que se hayan agrupado interiormente. Por esta razn se dice que la concatenacin es asociativa, y por lo tanto, independientemente de la forma que se agrupe internamente, el resultado es equivalente, por esto se puede prescindir de las agrupaciones internas y simplemente representar el b.e. compuesto de la siguiente manera:

___________________________________________________________________ 180

Que es la forma en que se han estado presentando los algoritmos anteriormente, esto es, concatenando 3 o ms bloques segn ha sido necesario de acuerdo a la estrategia del algoritmo. Se puede observar de lo anterior que no se trata en s de una nueva estructura (es decir la concatenacin de 3 b.e.), sino de una forma simplificada de sucesivas concatenaciones. Tambin, nicamente por comodidad y simplicidad en el lenguaje, se habla de la concatenacin de 3 o ms b.e., que es lo que en el captulo 4 se expuso como una extensin de la concatenacin. Para concluir, se debe hacer notar que el propsito de esta seccin ha sido el de formalizar la extensin de la concatenacin y proporcionar un vistazo del formalismo matemtico de cmo pueden ser tratados los conceptos de la programacin estructurada. 5.2 VARIANTES Y DERIVADAS DE LA DECISION

5.2.1 La decisin abreviada En determinadas ocasiones la rama falsa de una decisin es el bloque nulo, es decir no se efecta ninguna instruccin en dicho ramal En Nolae esta decisin se escribira: Si C Entonces B1 Sino Nulo Fin si Si C fin si entonces B1

Bajo el entendido de que si la rama falsa no se presenta, debe asumirse nicamente que corresponde al bloque nulo. La decisin en este caso se denominar abreviada. Debe observarse que no se trata de una nueva estructura, sino de un caso particular de la estructura bsica de la decisin, que por comodidad se expresa de manera ms sencilla. La representacin de diagrama de flujo es: ___________________________________________________________________ 181

C C

B1

B2

El diagrama anterior realmente equivale a:

C B1
nulo

Ejemplo 5.1 (Decisin abreviada, segmento Premio, Apndice A No.42, pg.285)


Si el grupo de personas que van a una cafetera es de mas de 3 personas, el grupo gana un premio. Si Numero_personas >3 Entonces Escriba Ganaste un premio Sino nulo Fin si La seudocodificacin del algoritmo se podra simplificar omitiendo la rama falsa y

simplemente se escribir: ___________________________________________________________________ 182

Si Numero_personas >3 Entonces Escriba Ganaste un premio Fin si 5.2.2 Las decisiones anidadas y las decisiones concatenadas Cuando se tiene una decisin dentro de otra decisin, se dice que esta ltima est anidada dentro de la primera. Se pueden tener varias decisiones anidadas, como en el ejercicio de encontrar el mayor de 3 nmeros de la seccin 3.5 (ejemplo de rbol de decisiones). El nombre se debe a una analoga con la forma en que los pjaros construyen sus nidos, ciertos patrones circulares hechos de ramitas dentro de otros ms grandes. El seudocdigo de un rbol de decisiones con varias decisiones involucra decisiones anidadas. Algunos lenguajes de programacin disponen de instrucciones que simplifican la notacin de este tipo de decisiones. A continuacin, se retoma el Ejemplo 3.11 (pg.98)de la seccin 3.5:

Ejemplo 5.2. (Nolae, rbol de decisiones, el mayor de 3 nmeros)


V a>c V F a>b F a>c V F b>c F Y el desglose correspondiente es: 1.LECTURA DE DATOS 1.1 Leer a 1.1 Leer b 1.1 Leer c ___________________________________________________________________ 183 c,es mayor b, es mayor V b mayor c, es mayor a, es mayor

2.-

COMPARACIONES E IMPRESION 2.2 Ver si a > b 2.2.1 (V) Ver si a > c 2.2.1.1. (V) Imprimir a, es mayor 2.2.1.2 (F) Imprimir c, es mayor 2.2.2. (F) Ver si a < c 2.2.2.1 (V) Imprimir b, es mayor 2.2.2.2. (F) Ver si b > c 2.2.2.2.1 (V) Imprimir b, es mayor 2.2.2.1.2 (F) Imprimir c, es mayor

El seudocdigo correspondiente tiene la siguiente forma: Inicio lea a,b,c si a > b entonces si a >c entonces escriba a, es mayor sino fin si sino si a < c entonces escriba b, es mayor sino si b > c entonces escriba b, es mayor sino Fin si fin si fin si final escriba c, es mayor escriba c, es mayor

___________________________________________________________________ 184

Es importante poder realizar el seguimiento de algoritmo al efectuar una P.E. Para ello se debe ubicar los puntos de salida de cada decisin. Obsrvese que en este algoritmo slo existe una concatenacin y es la de la lectura con la decisin mayor. Otra forma de seudocodificar es subrayando las palabras claves y colocar los bloques de cada ramal un rengln mas abajo, como se muestra a continuacin: Inicio lea a,b,c si a > b entonces si a >c entonces escriba a, es mayor sino escriba c, es mayor fin si sino si a < c entonces escriba b, es mayor sino si b > c entonces escriba b, es mayor sino escriba c, es mayor fin si fin si fin si final

A continuacin se presentan Diagramas que ilustran este algoritmo.

___________________________________________________________________ 185

Decisin. Lea a,b,c, F a>b V a>c a>c V F b>c V F

a mayor

c mayor

b mayor

b mayor

c mayor

En un ejemplo como el anterior, un diagrama de flujo es ms claro para seguir el algoritmo. V V a>c F c mayor

a mayor

Lea a,b,c,

a>b V b mayor a>c F F b>c F c mayor V b mayor

La anterior es la mejor forma de dibujar el diagrama, ya que muestra claramente cuales son los b.e. (en este caso de decisin) que se subordinan unos dentro de otros y los puntos de salida son fcilmente identificables. Otra solucin al mismo problema la proporciona el siguiente algoritmo: ___________________________________________________________________ 186

Inicio Lea a,b,c, Si a > b y a > c entonces escriba a es mayor fin si Si b > a y b > c entonces escriba b es mayor fin si Si c > a y c > b entonces escriba c es mayor fin si Final O escrito de otra manera: Inicio Lea a Lea b Lea c Si a > b y a > c entonces escriba a, es mayor fin si Si b > a y b > c entonces escriba b, es mayor fin si Si c > a y c > b entonces escriba c, es mayor fin si Final Desde el punto de vista de la estructuracin son diferentes ya que aqu las decisiones (que son abreviadas) NO estn anidadas, sino que concatenadas. Esto significa que despus de realizar la primera decisin, ya sea que la condicin haya sido evaluada V F, la segunda se ejecuta irremediablemente y lo mismo la tercera. No se debe considerar que los tres mensajes se escriben uno despus de otro, sino que las evaluaciones de las tres condiciones compuestas se realizan. En uno de los casos se ejecuta la escritura del mensaje y en los otros dos no (ya que se ha supuesto que los nmeros son diferentes).

___________________________________________________________________ 187

El diagrama de flujo en este caso tiene la siguiente forma:


inicio

Lea a,b,c,

a>b y a>c

a mayor

b>a y b>c

b mayor

V
c>a y c>b

c mayor

fin 5.2.3 BLOQUE CASO En algunas situaciones tenemos una porcin de un algoritmo de la siguiente forma y que involucra decisiones anidadas: Si i=1 entonces B1 Sino Si i=2 entonces B2 Sino si i=3 entonces a mayor B3 B4

En donde B1,., B4 representan b.e. (ya sean atmicos o compuestos). ___________________________________________________________________ 188

Esta estructura compuesta aparece muchas veces, por lo que se ha decidido simplificar su representacin denotndola as: Caso i i=1 i=2 i=3 sino fin-caso Observe que NO se trata de decisiones concatenadas, sino anidadas. Ello significa entre otras cosas, que una vez que se realiza uno de los bloques B, no se evalan mas condiciones y se va al final del bloque caso (a fin-caso). Una forma alterna, ms similar a algunos lenguajes de programacin, sera: Caso i 1: 2: 3: fin-caso Cada uno de los valores contra los cuales se compara i, no tienen porque estar aislados o en algn orden especfico. Los valores de comparacin y los bloques B que se ejecutan de acuerdo al caso, corresponden ms bien a la naturaleza del p.o.p.. Por ejemplo, Caso k 1, 2, 3 : 4, 5 : 6, 8, 9 : fin-caso A diferencia de las estructuras bsicas, las derivadas no tienen una representacin nica en diagramas de flujo o en diagrama de bloque. A continuacin se presentan algunas de ellas. B1 B2 B3 B1 B2 B3 BLOQUE CASO, variante de la Decisin :B1 :B2 :B3 :B4

Sino: B4

___________________________________________________________________ 189

i=1 B1

i=2 B2

i=3 B3

sino B4

B1 1 2 i 3 B3 sino B4 B2

Ejemplo 5.3 (Bloque Caso, Biblioteca.)


En el reintegro de libros a una biblioteca, la persona encargada anota el estado del libro en un registro para tal efecto. El estado del libro se ha codificado de la siguiente manera: 1.2.3.4.5.Perfectas condiciones, como nuevo Buenas condiciones Completo, pero con desgaste natural Completo, maltratado o rayado Malas condiciones

___________________________________________________________________ 190

Se proporciona al computador los cdigos de estado de cada libro y se desea un reporte con la siguiente informacin: REPORTE DE ESTADO DE LIBROS DEVUELTOS Estado Cantidad de libros 1 2 3 4 5 Total DESARROLLO ESTRATEGIA Se utilizar un centinela para EOF, y dentro de un proceso repetitivo se ir contando los libros que estn en un estado determinado (usaremos cinco contadores, uno para cada estado). Una vez que se termine de leer los estados, se calculan los porcentajes y se imprimen los resultados. DICCIONARIO DE VARIABLES
E C1 C2 C3 C4 C5 C1 C2 C3 C4 C5 TT TP El estado de cada libro. (La variable E se lee tantas veces como libros hayan sido devueltos. Cuando E=0, se detecta fin de archivo). Contador de libros en el estado 1 Contador de libros en el estado 2 Contador de libros en el estado 3 Contador de libros en el estado 4 Contador de libros en el estado 5 Porcentaje de libros en el estado 1 Porcentaje de libros en el estado 2 Porcentaje de libros en el estado 3 Porcentaje de libros en el estado 4 Porcentaje de libros en el estado 5 Total de libros Total de porcentaje (se espera que sea 100 o muy cercano a 100)

% de libros ---.-----.-----.-----.-----.-----.---

---------------------------

RESUMEN DEL ANALISIS SALIDA: [Ver diseo de reporte]

___________________________________________________________________ 191

ENTRADA: (Varios nmeros) por cada libro su cdigo E del estado en que fue devuelto (al final E=0 como centinela EOF) PROCESO: Primero se inicializan las variables contadores, y se lee el primer dato.

Luego, dentro de un proceso repetitivo, se ir incrementando el contador correspondiente, dependiendo del valor de E, por medio de un bloque caso. Al final, se calculan los porcentajes y se realiza la salida. DESGLOSE 1.Pasos Iniciales 1.1 Inicializacin de contadores 1.2 2.Lectura del primer dato

Conteo Mientras no EOF. Haga lo siguiente: 2.1 Incrementar el contador correspondiente, segn sea el caso. 2.1.1 (E=1) Incrementar C1 2.1.2 (E=2) Incrementar C2 2.1.3 (E=3) Incrementar C3 2.1.4 (E=4) Incrementar C4 2.1.5 (E=5) Incrementar C5

3.-

Promedios e Impresin 3.1 Calcular Promedios y Gran Totales. 3.2 Imprimir encabezados 3.3 Imprimir resultados de detalle por cada estado. 3.4 Imprimir lneas de totales

ALGORITMO Inicio C1 0; C2 0; C3 Lea E Mientras E 0 haga Caso E 1: 2: 3: 4: 5: fin caso lea E fin mientras ___________________________________________________________________ 192 C1 C2 C3 C4 C5 C1 + 1 C2 + 1 C3 + 1 C4 + 1 C5 + 1 0; C4 0; C5 0

TT P1 P3 P5 TP

C1+ C2 + C3 + C4 + C5 C1/TT * 100 ; P2 C2/TT * 100 C3/TT * 100 ; P4 C4/TT * 100 C5/TT * 100 P1 + P2 + P3 + P4 + P5

escriba ..encabezados.. escriba 1 ,C1, ,P1 escriba 2 ,C2, ,P2 escriba 3 ,C3, ,P3 escriba 4 ,C4, ,P4 escriba 5 ,C5, ,P5 escriba 1_________________ escriba Total ,TT, ,TP final Obsrvese que como las instrucciones de escritura de los encabezados son obvias, no se escribirn en detalle y se sobreentender que corresponde a todas las lneas laterales del encabezado del reporte. Sin olvidar que el seudocdigo tiende a simplificar la descripcin del algoritmo. En el lenguaje de programacin tendramos que escribir las lneas respectivas a: escriba REPORTE DEL ESTADO DE LIBROS DEVUELTOS escriba Estado Cantidad de libros % de libros escriba ____________________________________________ A continuacin se presenta un ejemplo en donde se combina el uso del Bloque Caso, acumuladores, contadores y la repeticin controlada por contador. Ejemplo 5.4 (Bloque Caso, repeticin controlada por contador, contadores, acumuladores, Categoras) Dados la categora y el sueldo de N empleados, calcule el aumento correspondiente teniendo en cuenta la siguiente tabla. Imprima la categora y nuevo sueldo de cada empleado.
CATEGORIA 1 2 3 AUMENTO % 15 10 8

___________________________________________________________________ 193

Al final se desea un reporte en donde se indique: Total de empleados en cada categora Total pagado en categora Total pagado en Planilla

Este ejemplo se desarroll con un centinela en el Capitulo 3, utilizando una repeticin controlada por centinela, se modificar para controlarla por contador sabiendo que son N empleados, as que se harn las modificaciones pertinentes al desglose del Ejemplo 3.12 (pg.104).Algunas partes del Anlisis se cambiarn de orden por motivos pedaggicos: DICCIONARIO DE VARIABLES Identificador Categoria Sueldo Aumento Nuevo_S N_empleados Descripcin__________ Categoria Sueldo Inicial Aumento Nuevo sueldo Nmero de empleados

Utilizando el desglose desarrollado previamente, el algoritmo correspondiente es:


Inicio Lea N I 1 Mientras i < N haga Lea categoria Lea sueldo Si categoria = 1 entonces aumento sino Si categoria = 2 entonces aumento sino aumento Fin-si Fin-si sueldo * 0.10 sueldo *0.08 sueldo *0.15

Nuevo_s

Sueldo + aumento

Escriba Categoria Escriba Nuevo_s I i +1 Fin-Mientras Final ___________________________________________________________________ 194

Utilizando el Bloque Caso se tiene: Inicio Lea N I 1 Mientras i < N haga Lea categoria Lea sueldo Caso categoria 1: aumento 2: aumento Sino: aumento Fin caso Nuevo_s Sueldo + aumento Escriba categoria Escriba Nuevo_s I Final A continuacin el diccionario de variables modificado para incorporar los reportes: NUEVO DICCIONARIO DE VARIABLES Identificador Categoria Sueldo Aumento Nuevo_S N E1 E2 E3 S1 S2 Categoria Sueldo Inicial Aumento Nuevo sueldo Nmero de empleados Empleados de la categora 1 Empleados de la categora 2 Empleados de la categora 3 Total pagado a los empleados de la categora 1 Total pagado a los empleados de la categora 2 Descripcin i+1 Fin-mientras sueldo * 0.15 sueldo * 0.10 sueldo *0.08

___________________________________________________________________ 195

S3 Planilla

Total pagado a los empleados de la categora 3 Total pagado en Planilla.

La Estrategia sufrir modificaciones, pues ahora se solicitan reportes estadsticos que presentarn valores nicos Estrategia N (1 nmero) Salidas Categoria (N nmeros) Nuevo_s (N nmeros) Total de salidas: 2 * N nmeros --------------+------------------C1, C2, C3, C4 Empleados de cada categora S S1, S2, S3 Planilla Total pagado en cada categora Entradas Categoria (N nmeros) Sueldo (N nmeros) Total de entradas: 2*N +1 nmeros Asignaciones sugeridas C1 S1 C1 + 1 S1 + Nuevo_s S1 + S2 + S3

Planilla

Para acumular los Nuevos sueldos pagados en cada categora se usar el BLOQUE CASO, pero se requiere tener el total a pagar ya calculado en cada una de las ramas de este, para poder, segn lo solicitado, contar y acumular por categora. ALGORITMO Inicio E1 S1 0, E2 0.0, S2 0, E3 0.0, S3 0 0.0

___________________________________________________________________ 196

Lea N I 1 Lea categoria Lea sueldo Caso categoria 1: aumento Nuevo_s E1 S1 2: E1 + 1 S1 + Nuevo_s sueldo * 0.10 Sueldo + aumento sueldo * 0.15 Sueldo + aumento Mientras i < N haga

aumento Nuevo_s E2 S2

E2 + 1 S2 + Nuevo_s sueldo *0.08 Sueldo + aumento

Sino:

aumento Nuevo_s E3 S3

E3 + 1 S3 + Nuevo_s

Fin caso Escriba categoria Escriba Nuevo_s I Planilla i+1 S1 + S2+S3 Fin-mientras Escriba Empleados de la categora 1: , E1 Escriba Empleados de la categora 2: , E3 Escriba Empleados de la categora 3: , E3 Escriba Total pagado a empleados de la categora 1: Lps. , S1 Escriba Total pagado a empleados de la categora 2: Lps. , S2 Escriba Total pagado a empleados de la categora 3: Lps. , S3 Escriba Planilla Total Lps.: , Planilla Final

___________________________________________________________________ 197

Ejemplo 5.5 (Lavado de autos, Bloque caso, contadores y acumuladores)


Retomando el Ejemplo de una Agencia de Lavado de Autos (Ejemplo 3.13, pg.108), cuyo seucdigo original se muestra en primera instancia en el Ejemplo 4.10, (pg.142) se usar el Bloque Caso y se adicionarn estadsticas que incluyan: cantidad de clientes e ingresos por tipo de servicio, los cambios se adicionarn paulatinamente. Utilizando el BLOQUE CASO se tiene el siguiente Algoritmo: Inicio Lea N_autos Mientras N_autos 0 haga Lea Tipo Caso tipo 1: 2: 3: Sino: Fin caso si N_auto 2 entonces Desc sino Desc Fin-si Total Subtotal - Desc Escriba Total Lea N_autos Fin-mientras Final Antes de incorporar los reportes solicitados se modificar el Diccionario de variables y se mostrarn las asignaciones sugeridas. Identificador Tipo N_autos Subtotal Descripcin Tipo de servicio Nmero de autos Subtotal Subtotal * 0.07 0 Subtotal Subtotal Subtotal Subtotal 25 * N_autos - 30 * N_autos 35 * N_autos 40 * N_autos

___________________________________________________________________ 198

Desc Total C1 C2 C3 C4 Ing1 Ing2 Ing3 Ing4

Descuento Total a pagar Clientes atendidos con el servicio tipo 1 Clientes atendidos con el servicio tipo 2 Clientes atendidos con el servicio tipo 3 Clientes atendidos con el servicio tipo 4 Ingresos por el servicio tipo 1 Ingresos por el servicio tipo 2 Ingresos por el servicio tipo 3 Ingresos por el servicio tipo 4 Asignaciones sugeridas

C1,C2,C3,C4 S

Clientes de cada Tipo,

C1 Ing1 Ing2

C1+1 Ing1 + Total Ing2 + Total

Ing1, Ing2, Ing,3, Ing.4 Ingresos de cada Tipo

Para acumular los ingresos por tipo Ing1 requiere haber calculado el total como: total

Ing1 + Total en el BLOQUE CASO, se subtotal + descuento, en vista de que

resulta engorroso introducir la decisin mostrada en cada opcin del Bloque Caso: si N_auto 2 entonces Desc sino Desc Fin-si Se puede simplificar el ejercicio asignando solamente los porcentajes de descuento, previo al Bloque caso: si N_auto 2 entonces porcentaje_desc sino porcentaje_desc fin-si El algoritmo final es: ___________________________________________________________________ 199 0.07 0.0 Subtotal * 0.07 0

Inicio C1 Ing1 0, C2 0, C3 0, C4 0 0.0, Ing4 0.0 0.0, Ing2 0.0, Ing3

Lea N_autos Mientras N_autos 0 haga


Lea tipo si N_auto 2 entonces porcentaje_desc sino porcentaje_desc Fin-si Caso tipo 1: Subtotal 25 * N_autos Descuento Total C1 Ing1 2: C1 +1 Ing1 + Total subtotal * porcentaje_desc subtotal * porcentaje_desc subtotal - descuento 0.07 0.0

Subtotal 30 * N_autos Descuento Total C2 Ing2 C2 +1 Ing2 + Total subtotal * porcentaje_desc subtotal - descuento

3:

Subtotal 35 * N_autos Descuento Total C3 Ing3 C3 +1 Ing3 + Total subtotal * porcentaje_desc subtotal - descuento

sino:

Subtotal 40 * N_autos Descuento Total C4 Ing4 C4 +1 Ing4 + Total subtotal - descuento

Fin caso Escriba Total Lea N_autos Fin-mientras

___________________________________________________________________ 200

Escriba Clientes a los que se les brindo servicio de tipo 1; C1 Escriba Clientes a los que se les brindo servicio de tipo 2; C2 Escriba Clientes a los que se les brindo servicio de tipo 3; C3 Escriba Clientes a los que se les brindo servicio de tipo 4; C4 Escriba Ingresos por servicio de tipo 1; Ing1 Escriba Ingresos por servicio de tipo 2; Ing2 Escriba Ingresos por servicio de tipo 3; Ing3 Escriba Ingresos por servicio de tipo 4; Ing4 Final Se deja al lector una prueba de escritorio con los siguientes datos Datos: 5, 2, 1, 1, 2, 3, 4, 3, 2, 4, 3

EJERCICIOS 5.2.3 En cada problema desarrollar un breve anlisis, desglose y algoritmo 1.Se tienen 4 planillas en una eleccin para junta directiva estudiantil. Los 300 votos se introducen al computador codificados. Se desea obtener los resultados de la votacin. 2.Un banco ofrece 6 tasas de inters anual distinto segn el tipo de prstamo que se solicita (codificados del 1 al 6). Se desea calcular el inters total que se obtendr para veinte clientes que solicitan distintos montos en diferentes plazos (Asumir inters simple). 3.Aparte del sueldo base, una compaa de venta de computadoras ofrece un porcentaje como comisin a sus representantes de venta. Se alimentan las facturas con los cdigos de los vendedores y los valores de la venta. Calcular el pago total de cada vendedor, y el valor total de las comisiones. Del Apndice B los siguientes ejercicios: 4. 5. 6. 7. Ejercicios II inciso 11. Ejercicios No.7 y 8. Ejercicio No. 9. Ejercicio No. 10.

___________________________________________________________________ 201

5.3.5.3.1

VARIANTES Y DERIVADAS DE LA REPETICION Bloque Para En el Captulo 4 seccin 4.9 se estudi la repeticin controlada por contador cuyo esquema general fue: Lea Valor_final C Valor_inicial Mientras C < Valor_final haga B1 C C+1 Fin mientras

Ahora se introducir un Bloque equivalente pero abreviado llamado BLOQUE PARA, siempre y cuando el contador o ndice sea entero y los incrementos sean de uno en uno, como se muestra a continuacin: En seudocdigo, el Bloque Para resume varias de las lneas del seudocdigo anterior: Lea Valor_final C Valor_inicial Para I B1 Fin-Para El efecto del ciclo de repeticin Para es repetir el bloque de instrucciones B1 (RANGO) un nmero fijo de veces. Efectivamente, se repite Valor _final - Valor_inicial + 1 veces Cuando se ejecuta un ciclo Para, en la memoria se declara la variable de control (I en este caso) y se inicializa en el Valor_inicial, luego se ejecuta el bloque de instrucciones B1. Una vez terminadas todas las instrucciones de B1, la Variable de Control o ndice se incrementan en uno (1) automticamente y se vuelve a repetir todas las instrucciones del bloque B1. La repeticin se termina en el momento que la variable de control llega a tener un valor mayor que el Valor_ final. ___________________________________________________________________ 202 Valor_inicial, Valor_final haga BLOQUE PARA

Valor_inicial y Valor_final pueden ser variables o constantes. A continuacin se presentan varias aplicaciones del Bloque Para. Se utilizar ejemplos del Captulo 4, que fueron ya desarrollados utilizando la Repeticin controlada por Contador, se incluirn tambin ejemplos en donde se generan secuencias numricas y la suma de stas (series y sucesiones). 5.3.1.1 Bloque Para y su uso con contadores y acumuladores

Ejemplo 5.6 (Bloque Para, leer y sumar N nmeros)


Disear un algoritmo que lea N nmeros y que imprima su suma (utilice el bloque Para). En el Ejemplo 4.18, (pg.171) se obtuvo el siguiente algoritmo: Inicio Suma Lea N i 1 lea X Suma I fin mientras final Utilizando el Bloque Para, el algoritmo solicitado es: Inicio Suma Lea N Para i 0 1, N haga lea X Suma fin para final ___________________________________________________________________ 203 Suma + X (B1) (B2) (B3) (B4) (B5) (B6) Suma + X I+1 0 (A1) (A2) (A3) (A4) (A5) (A6) (A7) (A8)

mientras i < N haga

escriba La suma de los nmeros es : , Suma

escriba La suma de los nmeros es : , Suma

Observacin 5.3.1.1. Para i 1, N Se lee : para i desde 1 hasta N, el ndice i comienza en 1 y

tiene incrementos de 1 en 1 hasta llegar a N, en N +1 se sale del ciclo Observe que: Lnea (A3) Desaparece pues con el Bloque Para, ya no es necesario la lnea previa de inicializacin de I en 1, I 1, sta queda absorbida en la Lnea (B3). Lnea (A4) Queda modificada por la Lnea (B3). Lnea (A7) La ltima lnea del rango desaparece, ya no necesario escribir el incremento de I en uno, en el Bloque Para este incremento es tcito, I I + 1.

La prueba de escritorio es igual a la mostrada en el Ejemplo 4.18

Ejemplo 5.7 (Bloque Para, contadores, acumuladores, descuentos, ingresos totales)


Determinar si el posible codificar el Ejemplo 4.19. utilizando el Bloque Para. El enunciado del ejercicio original es el siguiente: En una tienda se otorgar a los clientes descuentos en sus compras. Si el valor de la venta es de de Lps. 200.00 menos, se le concede un descuento del 10%, si es de ms de Lps.200.00, el descuento ser de 20%. Se le proporciona al computador el valor de la venta, se desea calcular el descuento, el isv. y el valor total a pagar. Se sabe que se atendern N clientes, que no se cobra el impuesto isv, y que se desea saber lo siguiente: El total a pagar por cada cliente Ventas totales (Lps.) con el 20% de descuento. Ventas totales (Lps.) con el 10% de descuento.

Observando el Algoritmo final del Ejemplo 4.19, se puede determinar que al ser una repeticin controlada por contador, fcilmente se puede codificar utilizando el Bloque Para.

___________________________________________________________________ 204

inicio C_20 Lea N Para 1 1, N haga Lea Val_venta Si Val_venta > 200 Entonces Deduccion Total C_20 Sino Deduccion Total C_10 Fin si Escriba Total a pagar Lps. ,total Fin para Escriba Clientes con 20% de descuento: , C_20 Escriba Clientes con 10% de descuento: , C_10 Escriba Ventas con 20% de descuento: , Ingreso_20 Escriba Ventas con 10% de descuento: , Ingreso_10 Fina Comentarios sobre algunas lneas del algoritmo anterior: Lnea (1) Inicializacin de los contadores de clientes, (Valores enteros 0 ) Lnea (2)Inicializacin de los acumuladores de ingresos, (Valores reales o decimales 0.0 ) Lnea (3)Se lee el Numero N de clientes, que ser el Valor_final del Bloque Para. Lneas (4, 16) Repeticin utilizando un BLOQUE PARA con un Valor_final o mximo de N (clientes). (15) (16) (19) (20) (21) (22) Val_venta * 10 (11) (12) (13) (14) Val_venta- deduccin C_10 + 1 Ingreso_10 + Total Val_venta * 20 (7) (8) (9) (10) Val_venta deduccion C_20 + 1 Ingreso_20 + Total 0, C_10 0 0.0 (1) (2) (3) (4) (5) (6) Ingreso_20 0.0, Ingreso_10

Ingreso_20

Ingreso_10

___________________________________________________________________ 205

Lnea (5) En el Rango del Bloque Para se realizan todas las lecturas de Val_venta, esto es diferente de cuando se usa repeticin controlada por un centinela, (ver Ejemplo 4.16, pg. 158) en el que el primer valor de Val_venta se lee antes de ingresar al mientras y de nuevo se vuelve a leer al final del rango de la repeticin. Lneas (7, 8) A diferencia del Ejemplo 4.16 , (pg. 158)que calculaba el total despus de la decisin, en vista de que se necesita acumular los ingresos por categora, es necesario totalizar en el Ramal correspondiente. Lneas (9, 10; 13,14) Se incrementan los contadores y acumuladores correspondientes. Lnea (15) Se imprime el total a cobrar al cliente en forma concatenada a la decisin preliminar ya que a todos los clientes sin distincin se les va a cobrar, por lo tanto no es necesario escribir la misma lnea en cada uno de los ramales de la decisin. Lneas (17 y 18) Se calculan las ventas promedio de cada uno de los distintos tipos haciendo las operaciones necesarias. Note que estas se obtienen de un clculo, las ventas promedio no son acumuladores ni contadores. Lneas (19 al 22) Se imprimen los reportes solicitados utilizando rtulos amistosos que facilitarn la comprensin de los mismos. Se deja al lector realizar la prueba de escritorio respectiva utilizando los siguientes datos Datos: 4, 250, 100, 300, 80 A continuacin se presenta un ejemplo que utiliza el Bloque Caso (seccin 5.2.3), Bloque para, contadores y acumuladores.

Ejemplo 5.8 (Bloque Para, Bloque Caso, contadores, acumuladores, Categoras)


Escribir un algoritmo modificando el mostrado en el Ejemplo 5.4, de tal manera que se calcule el aumento de sueldo ahora para N empleados Inicio E1 S1 0, E2 0.0, S2 0, E3 0.0, S3 0 0.0

Lea N Para i 1, N haga Lea categoria Lea sueldo ___________________________________________________________________ 206

Caso categoria 1: aumento Nuevo_s E1 S1 2: E1 + 1 S1 + Nuevo_s sueldo * 0.10 Sueldo + aumento sueldo * 0.15 Sueldo + aumento

aumento Nuevo_s E2 S2

E2 + 1 S2 + Nuevo_s sueldo *0.08 Sueldo + aumento

Sino: aumento Nuevo_s E3 S3 Fin caso Escriba categoria Escriba Nuevo_s Fin-para Planilla S1 + S2+S3

E3 + 1 S3 + Nuevo_s

--La impresin del reporte es igual . . .

EJERCICIOS 5.3.1.1
En cada problema desarrollar un breve anlisis, desglose y algoritmo 1.2.3.4.Imprima N veces el mensaje Hola mundo. Genere la Tabla de multiplicacin del 5. Genere la Tabla de multiplicacin del nmero N (se debe leer N). Genere todas las tablas de multiplicacin rotulando debidamente cada una de ellas Del Apndice B los siguientes ejercicios: 5. 6. 7. Ejercicio No. 25. Ejercicio No. 26. Ejercicio No. 27.

___________________________________________________________________ 207

5.3.1.2

Aplicaciones del Bloque Para, Sucesiones

A continuacin realizaremos ejemplos de aplicacin de los conceptos de: contadores, acumuladores aditivos y multiplicativos, etc. generando: Sucesiones de nmeros, que son secuencias de nmeros que siguen cierto patrn.

Ejemplo 5.9 (Bloque Para, Sucesin, nmeros pares, inicializacin en cero)


Sin datos de entrada, generar la siguiente sucesin 2, 4, 6, 8, ESTRATEGIA Entrada NO hay, los nmeros Se generan internamente Salida (20 nmeros) X 20 trminos (los nmeros pares son positivos)

Proceso repetitivo controlado por el Bloque Para, se realizar 20 veces. Podemos observar que los nmeros se generan si vamos sumamos 2 a cada uno. 2, 2 4, 2 6, 2 8,

Esto sugiere un acumulador aditivo con incrementos de 2, as: X ALGORITMO Inicio X 0 1, 20 haga X Fin para Final Comentarios sobre este algoritmo: Lneas (2 y 5) Controlarn que el RANGO se realice 20 veces. Lnea (1) Sabiendo que los nmeros se generarn en incrementos de 2, y que la expresin ___________________________________________________________________ 208 x+2 Escriba X (1) (2) (3) (4) (5) Para i X+2

correspondiente es X

X + 2, la variable X se debe iniciar en 0 para que 0 + 2 del

primer 2, los dems nmeros, no presentan particularidades. Lnea (3) La primera vez que se ingresa al ciclo, se genera el primer nmero de la sucesin:

2
Lnea (4) Despus de general el nmero de inters, ya est listo para imprimirse. PRUEBA DE ESCRITORIO Para propsitos de simplificacin modificaremos la Lnea (2) Para i Datos: No hay Memoria X 0 2 4 6 8 i 1 2 3 4 5 2 4 6 8 Salida 1, 4 haga (2) -- Solamente 4 Nmeros.

A continuacin se presenta otra manera de resolver este problema, iniciando el valor de la variable X directamente en 2.

Ejemplo 5.10 (Bloque Para, Sucesin, nmeros pares, inicializacin en 2)


Sin datos de entrada, generar la siguiente sucesin 2, 4, 6, 8, Modificacin Inicio X 2 1, 20 haga Escriba X X Fin para Final ___________________________________________________________________ 209 x+2 (1) (2) (3) (4) (5) Para i 20 trminos del Ejemplo 5.9

Comentarios sobre el algoritmo anterior: Lnea (1) La modificacin planteada ser inicializar X en el primer valor de la sucesin: 2 Lnea (3) La primera vez que entramos al ciclo, X ya tiene el valor de 2, y se deber imprimir inmediatamente. Si se colocara previamente la instruccin X x + 2 se obtendra el nmero 4 y no se habra impreso el 2 inicial deseado.

Lnea (4) En el primer ciclo, despus de imprimir el valor vigente de X, se genera el siguiente nmero que ser impreso en el siguiente ciclo. El Rango se efectuar siempre 20 veces, as que la instruccin Escriba X incluida en ste nos garantiza que se que se imprimirn los mismos 20 nmeros. Se recomienda al lector el anlisis de las Lneas (3,4) de los algoritmos correspondientes a este ejemplo y al del anterior (Ejemplo 5.9), observar que stas estn intercambiadas. PRUEBA DE ESCRITORIO Para propsitos de simplificacin modificaremos la Lnea (2) I Para i Datos: No hay Memoria X 2 4 6 8 10 i 1 2 3 4 5 Salida 2 4 6 8 1, 4 haga (2) --Solamente 4 nmeros

Note que se gener un nmero mas el 10 pero no se imprim pes el contador i control o detuvo la repeticin.

Ejemplo 5.11 (Bloque Para, Potencias de 3)


Generar la siguiente sucesin 3, 9, 27 , N trminos

___________________________________________________________________ 210

ESTRATEGIA N Entrada (La cantidad de nmeros que se desear imprimir ) Salida N nmeros

Proceso repetitivo que se realizar N veces, se utilizar el Bloque Para. Observando la secuencia de nmeros el prximo sera 81, se trata de las potencias de 3, se van acumulando multiplicaciones sucesivas por * 3. Se requerir de un Acumulador Multiplicativo, inicializado en 1 (Pudiera ser 3)

Pot

1 3, 1 *3=3 *3=9 *3=27 *3=81 9, 27, 81, . N trminos

La asignacin para el acumulador sera pot proceder a escribir el algoritmo:

pot * 3, con todas estas consideraciones se

ALGORITMO Inicio Lea N pot Para i 1 1, N haga pot Fin para final Se deja al lector la realizacin de la Prueba de Escritorio respectiva con Dato: 4 pot * 3 Escriba pot

___________________________________________________________________ 211

Ejemplo 5.12 (Bloque Para, potencias de 3, signos alternos)


Generar la siguiente sucesin 3, 9, 27 , 81 ESTRATEGIA N Entrada (La cantidad de nmeros que se desear imprimir ) Son aplicables las consideraciones del ejemplo anterior, la modificacin introducida son los signos alternos. Se conserva la magnitud de los nmeros generados pero se introducir la variable signo mediante una Prueba de Escritorio. Prueba de escritorio Signo Signo Signo Signo 1 signo signo signo Memoria Signo -1 1 -1 1 Salida signo_pot (N nmeros) N trminos

Observacin 5.3.1.2.1. Cada vez que se ejecuta signo signo, se va alternando el signo de negativo a positivo o viceversa, segn se inicialice con -1 o +1. La sucesin empieza con 3 positivo as que en base a la Observacin 4.9.11 se inicializar la variable Signo en -1 ALGORITMO Inicio Lea N

___________________________________________________________________ 212

Signo pot Para i 1

1 1, N haga Signo pot signo pot * 3 signo * pot Observacin 5.3.1.2.2: Se conservar el signo positivo de las potencias de 3, para alternar el signo dichas potencias, se debern multiplicar por la variable Signo, y se crear una nueva variable signo_pot.

signo_pot Fin para final

Escriba signo_pot

PRUEBA DE ESCRITORIO Datos: 4 Memoria N 4 Signo -1 1 -1 1 1 pot 1 3 9 27 81 I 1 2 3 4 5 signo_pot 3 9 27 81 3 9 27 81 Salida

5.3.1.3 Aplicaciones del Bloque Para, Series finitas Otra aplicacin de acumuladores y contadores son las SERIES. Las series finitas, son el resultado de sumar nmeros que siguen un determinado patrn o secuencia (o sea la suma de los elementos de una sucesin). Sin pretender poner mucho rigor matemtico, se dir que en stas el resultado es un nmero.

Ejemplo 5.13. (Bloque Para, Serie finita, suma de pares)


Calcular el valor de la siguiente serie: 2 + 4 +6 +8 + 50 trminos Revisar los Ejemplos 5.9 (pg 208) y 5.10 (pg.209) ___________________________________________________________________ 213

Para tener mas claridad se puede replantear el ejercicio, as: Calcular el valor de la Suma: Suma = 2 + 4 +6 +8 + ESTRATEGIA Entrada NO hay, los nmeros Se generan internamente Salida Suma (1 Nmero) 50 trminos:

Proceso repetitivo controlado por contador, se realizar 50 veces. Se sugiere un acumulador aditivo con incrementos de 2, as: X X + 2 para generar los sumandos requeridos. suma + X, que a su vez tendr que inicializarse en Cero. Suma es un acumulador aditivo: Suma

ALGORITMO Inicio Suma X 2 1, 50 haga Suma X Fin para Escriba El valor de la serie es: , suma Final Se generan trminos que se incrementarn en 2 los cuales a su vez se irn sumando y acumulando en el acumulador Suma. El algoritmo merece otros cometarios adicionales: Lnea (1) Lnea (2) Lnea (3) Inicializacin del acumulador Suma en cero. Inicializacin de los trminos a sumar que a su vez se incrementarn internamente de dos en dos. Bloque Para que inicia en 1 y realiza el Rango (lneas 4 y 5)50 veces. Suma + X X+ 2 Para i 0 (1) (2) (3) (4) (5) (6) (7)

___________________________________________________________________ 214

Lnea (4) Lnea (5) Lnea (7)

Incremento del acumulador suma en el valor del trmino generado X. Se genera el nuevo trmino el cual se acumular hasta en el siguiente ciclo, esto implica que el ltimo trmino generado no se utilizar. Al finalizar el Bloque para o ciclo repetitivo, se imprime una sola vez (pes es un solo nmero), el valor final de la Suma.

Observacin 5.3.1.3. Revisando las pruebas de escritorio de los ejercicios realizados previamente, se puede observar que la casilla de memoria del ndice

i muestra los nmeros

1, 2, 3, 4, 5.lo cual no es de extraar pues as se

cuenta en forma natural. Lo anterior puede ser muy til para el desarrollo de ejercicios en donde ciertas variables puedan obtenerse operando con el ndice i, por ejemplo: 2*i, (i+1)/2, el Factorial de un nmero N!, etc.

Ejemplo 5.14 (Bloque Para, Sucesin, serie, fracciones signos alternos)


Sin datos de entrada, disear algoritmos para lo solicitado a continuacin: 5.14.a) La sucesin 5.14.b) La serie 1/2, 2/5, 3/8, 4/11, 30 trminos (solo indicar los cocientes) S = 1/2 + 2/5 3/8 + 4/11 30 trminos (calcular la suma indicada)

Desarrollo del ejemplo 5.14.a) El numerador de las fracciones podra ser el ndice

i mismo del Bloque Para,

pues comienza en 1 y sus incrementos son de uno en uno. El signo del numerador se puede obtener como se mostr en el Ejemplo 5.12 debiendo comenzar Signo en 1 positivo pues en el ciclo signo signo dara el primer signo que se necesita para signo_i (o signo_numerador). El denominador comienza en 2 y crece en incrementos de 3, as el denominador ser un acumulador: denominador denominador + 3. Se solicita que la sucesin se observe con los cocientes indicados o sea usando la pleca / , esto se logra imprimiendo el signo_i, la pleca en literal y el denominador como tal.1

Estos ejemplos son triviales y en general requeriran solamente imprimir el resultado de los nmeros generados, pero con el propsito de desarrollar la lgica del alumno se detallan las variantes presentadas.

___________________________________________________________________ 215

ALGORITMO Inicio denominador signo Para i 1 1, 30 haga signo signo_i signo signo * i denominador + 3 2 (1) (2) (3) (4) (5) (7)

escriba signo_i, / , denominador (6) denominador Fin para Final Algoritmo 5.14 a) Es recomendable leer de nuevo todos los aspectos considerados en la ESTRATEGIA de este ejercicio y relacionar cada aspecto con las lneas enumeradas del algoritmo anterior.

PRUEBA DE ESCRITORIO para tres trminos Memoria Denominador 2 5 8 11 Signo 1 -1 1 -1 I 1 2 3 4 signo_i -1 2 -3 -1 / 2 2/5 -3 / 8 Para i 1, 3 haga (3) Salida

Ejemplo 5.14.b) NOLAE Inicio Serie signo 0

(S = 1/2 + 2/5 3/8 +)

(1) 2 (2) (3)

denominador 1

___________________________________________________________________ 216

Para i

1, 30 haga signo signo_i cociente serie signo signo * i signo_i / denominador serie + cociente denominador + 3

(4) (5) (6) (7) (8) (9) (10)

denominador Fin para Escriba Serie = , serie Final Comentarios al algoritmo:

Lnea (1) Serie es un acumulador aditivo que se inicializa en cero. La generacin de los numeradores con su signo y sus denominadores se analiz en el ejercicio anterior inciso 5.14.a, (pg. 216) En la sucesin del inciso a) se escribieron los trminos solamente indicando el cociente ver Lnea (6) que lee escriba signo_i, / , denominador (6) Pero al tratarse ahora de la serie correspondiente, en donde efectivamente se suman los trminos el cociente deber efectuarse como se indica en la Lnea (7).

Lnea (8) Serie se incrementa en el cociente generado previamente Lnea (7) Para i 1, 3 haga (4) Salida denominador Signo 2 5 8 1 -1 1 -1 i 1 2 3 4 signo_i -1 2 -3 cociente - 0.5 0.4 -0.375 Serie = -0.475

PRUEBA DE ESCRITORIO para tres trminos Memoria Serie 0 -0.5 -0.1 -0.475

Ejemplo 5.15 (Bloque Para, Serie y Sucesin incrementos alternos)


Generar la siguiente sucesin de nmeros 0, 1, 5, 6, 10, 11, 15, 16.25 trminos

___________________________________________________________________ 217

Se puede observar que los incrementos varan comienza con forma alterna: 0,
1

1, despus

4 y sigue en

1 ,
4

5,
1

6,
4

10,
1

11,
4

15,

ESTRATEGIA Para resolver esta nueva variante, se utilizar una BANDERA (mencionadas, al inicio de la Seccin 4.9 del captulo 4), estas son tiles para indicar cambios de estado, sus valores estarn cambiando de valores convenientemente Ramal Verdadero Ramal Falso ALGORITMO Inicio Bandera 1 Num 0 Para i 1, 25 haga Escriba Num Si Bandera = 1 Entonces Num Num + 1 Bandera -1 Sino Num Num + 4 Bandera 1 Fin si Fin para Final Comentarios al algoritmo: Lnea (1) Lnea (2) Lnea (4) Lnea (5) Lnea (6) Se inicializa la Bandera en un valor arbitrario igual a 1 Se inicializa el valor de Num en cero que es el primer valor de la sucesin Impresin del nmero en turno de la sucesin
Se verifica mediante una decisin el valor de la bandera si es 1 hace el ramal (V)

de

-1 a 1. y esto servir en una


a

decisin en particular como un interruptor para cambiar de: (con un incremento de 1) (con un incremento de 4)

(1) (2) (3) (4) (5) (6) (7) (8) (9)

Generacin del siguiente trmino con un incremento den 1 y

___________________________________________________________________ 218

Lnea (7)

Se cambia el valor de la Bandera a - 1para que en la subsiguiente vez el programa haga el ramal (F) y se realice el incremento de cuatro Lnea (8) y en la Lnea (9) se cambiar el valor de la bandera a 1 para volver a incrementar en uno.

A continuacin se muestra la prueba de escritorio PRUEBA DE ESCRITORIO para 5 trminos Memoria Bandera 1 --1 1 -1 1 num 0 1 5 6 10 11 i 1 2 3 4 5 6 Para i 1, 5 haga (3)

Salida 0 1 5 6 10

Queda al lector realizar el algoritmo de la respectiva Serie. Otra aplicacin de acumulador multiplicativo es el clculo del factorial de un nmero N, la notacin usada es N!, a continuacin se brinda un Marco Terico. El Factorial de un nmero entero N > 0 se denota como N! se define por: 1 N! = N * (N-1) * (N-2) * (N-3) * *1 si N > 2 si N=0 o si N=1

Ejemplo 5.16 (Factorial, Bloque Para)


Para N = 4, Calcular 4! ESTRATEGIA Por definicin significa lo siguiente: 4! = 4 * 3 * 2 * 1 , o reescribindolo convenientemente es igual a

Leer la Observacin 5.3.1.3, en la pg.215) ___________________________________________________________________ 219

4! = 1 1*1=1

3 *

4 = 24

Reconoce el lector Quin progresa en esa forma?

1 * 2=2 2 * 3=6 6 * 4 = 24 Este es un ejercicio en donde se utiliza un acumulador Multiplicativo que llamamos Factorial, el cual se inicializa en 1 y Luego en un ciclo de repeticin se acumula su producto con los Indices generados convenientemente 1, 2, 3, 4. Cuando el ndice generado sobrepasa el lmite superior 4 o Valor_final, el ciclo termina su ejecucin. Se acumulan los productos de los Indices que se van generando. Podemos utilizar el bloque para tal fin y adems para controlar el ciclo repetitivo que deber realizarse 4 veces. NOLAE Inicio Factorial Para i Fin para escriba el factorial de 4 es . , factorial Final Se deja al lector realizar la prueba de escritorio respectiva. (7) 1 factorial *i (1) (3) (4) 1, 4 haga Factorial

EJERCICIOS 5.3.1.2 Para los siguientes ejercicios elabore el algoritmo correspondiente: 1. 2. 3. Del Apndice C los incisos 4, 5. Del Apndice C los incisos 6, y 7. Generar la sucesin 3, 5, 10, 12, 15, . 20 trminos ___________________________________________________________________ 220

4. 5. 6. 7. 8. 9.

Generar la sucesin 1/5, 2/10, 3/15,.8/40 Ejercicios del Apndice B inciso 21 (sucesiones) Ejercicios del Apndice B, inciso 22 (series) Calcular la suma de las potencias de 2 Generar la sucesin 2, 4, 6, 8, 10 35 trminos, utilizando el Bloque para y operando con el ndice de ste, es decir sin utilizar un acumulador Leer varios nmeros hasta encontrar uno que sea mayor de 100. (Ver el EJERCICIO 4.6. inciso.1 (pg. 144), EJERCICIO 4.9.3. inciso 1 (pg.208), en donde la condicin de repeticin es una comparacin)

10-

Leer varios nmeros e ir calculando su suma, hasta que sta sobrepase a 200.

5.3.2 Bloque Repita-hasta Los procesos repetitivos se han logrado con el bloque de repeticin: Mientras C haga B fin mientras En este caso primero se evala la condicin C para ejecutar el bloque B. Sin embargo, no siempre es deseable que se evale C primero antes de ejecutar B, y el siguiente esquema aparece a menudo: B Mientras no C haga B Fin mientras REPITA HASTA

Que dibujando en diagrama de flujo sera:

___________________________________________________________________ 221

V C F Figura 5.3.2.1 B

La representacin anterior se puede simplificar de la siguiente manera:

F C V B

Figura 5.3.2.2 A la estructura anterior se le llamar el Bloque Repita. En si no constituye una nueva estructura bsica, sino mas bien derivada de la repeticin. Observe, que como b.e. se representan las reglas de una entrada y una salida.

___________________________________________________________________ 222

F C V

Figura 5.3.2.3 En el Repita-hasta, se inicia con la ejecucin de B, y luego se evala la condicin C, si es Falsa (a diferencia de la repeticin) se vuelve a ejecutar B, y as sucesivamente hasta que C es Verdadera. Una vez que C es verdadera, se llega a la salida del bloque. En seudocdigo, se representa de la siguiente manera: Repita B Hasta que C En donde C es una condicin de repeticin y B es un bloque estructurado que constituye el Rango

Ejemplo 5.17 (Repita-hasta, Suma)


Se desea un programa en el cual se sumen varios nmeros hasta que la suma sea mayor que 200, al final imprimir el valor de la suma S. Estrategia: (Varios) Salida S Entrada Num

La suma de los nmeros S es un acumulador, que se inicializa en Cero.

___________________________________________________________________ 223

Considerando que al iniciar no se tiene una condicin Centinela se utilizar el Repita hasta que la condicin S > 200 sea (V)erdadera

El Algoritmo resultante es: Inicio S 0 Lea Num S s + Num Hasta que S > 200 Escriba La suma es: , S Final A continuacin se muestra la prueba de escritorio paso a paso con los datos dados: Datos: 100, 50, 65 Memoria: S 0 100 100 Num Salida: (1) (2) (3) (4) (5) (6) Repita

Lnea (1): Lnea (2): Lnea (3): Lnea (4): Lnea (5):

Inicializa S en cero, y en la NO existe una condicin que limite la primera entrada al ciclo de repeticin Se lee nmero 100 y se acumula en S, no como resultado 100. Evaluando la condicin es 100 >200 como resulta Falsa, se continua con La repeticin y se vuelve a realizar el Rango de sta.

___________________________________________________________________ 224

Datos: 100, 50, 65 Memoria: S 0 100 150 Lnea (3): Lnea (4) Lnea (5) Se lee el nmero 50. y se acumula en S, dando como resultado 150. Se evala la condicin 150 >200, como resulta Falsa, se continua con la repeticin y se vuelve a realizar el Rango de sta. Num 100 50 Salida:

Datos: 100, 50, 65, 10 Memoria: S 0 100 150 210 Lnea (3): Lnea (4): Lnea (5): Se lee el nmero 65 y se acumula en S, da como resultado 210. Se evala la condicin 210 >200, como resulta Verdadera, ya no se continua con la Repeticin, ya que sta se hace Hasta que efectivamente S >200. Como se cumpli que 210 > 200, no se continua Repitiendo el Rango. Num 100 50 65 La suma es: 210 Salida:

___________________________________________________________________ 225

Ejemplo 5.18 (Repita-hasta, Kilometraje)


Elaborar el seudocdigo del Ejemplo 4.7, pg. 138, (alquiler de vehculos, cobro por Kilometraje) utilizando el Bloque Repita-Hasta, se leer el primer Kilometraje antes de entrar al Bloque, considerando que el primer valor ledo de Kilometraje (Km) ser distinto de cero y se deber leer de nuevo al finalizar el Rango de ste. Con las consideraciones anteriores, se puede esperar las mismos resultados obtenidos cuando se aplic la repeticin controlada por centinela ver figura

Repeticin controlada por centinela


lea Km mientras Km 0 haga si Km < 100 entonces Pago sino Pago 215 + 0.35 *Km fin si escriba Pago lea Km fin mientras 200 + 0.5 *Km lea Km Repita

Bloque Repita-Hasta

si Km < 100 entonces Pago sino Pago fin si escriba Pago lea Km Hasta que Km=0 215 + 0.35 * Km 200 + 0.5 * Km

Figura 5.3.2.4 Por razones de espacio se omiti el inicio y final de cada uno de los algoritmos. Observe las condiciones de repeticin: Una es la negacin de la otra: Km 0 Km = 0

Ambas poseen lectura previa al bloque de repeticin y al final del Rango En la repeticin controlada por centinela, se tiene una lectura previa a la repeticin, de otra manera, no se tendra un valor inicial para evaluar la condicin Km 0, adems si este es cero se entra al ciclo y no se realiza ni una vez. ___________________________________________________________________ 226

En el caso del bloque Repita-hasta, no es necesario tener una lectura previa (ni que se cumpla alguna condicin) para entrar a la repeticin, si se dejase la lectura del Kilometraje (Km.) al inicio del Rango sta pudiera ser Cero. La siguiente porcin de algoritmo es incorrecta, porque (si Km = 0) se continuara procesando informacin para un valor no vlido, se hace necesario la suposicin de que el primer valor ledo no puede ser igual a cero. Repita Lea Km si Km < 100 entonces Pago sino Pago fin si Hasta- que Km 0 : etc. 215 + 0.35 * Km 200 + 0.5 * Km

Por lo que es aconsejable utilizar el Bloque Repita-hasta bajo el supuesto de que: El ciclo se realizar al menos una vez, y Se realizar una lectura antes de entrar al Bloque y otra al finalizar el rango de este. Observacin 5.3.2. En el Apndice E (Ejemplo E.4, pg. 314) se encuentra otra variante de la repeticin, siempre se utiliza el mientras, pero la repeticin est controlada por la RESPUESTA DEL USUARIO, se hace una pregunta sobre si se desea seguir o no procesando informacin, si la respuesta es afirmativa (S o s se continua el proceso, si la respuesta es no (N n ) el proceso termina. Se solicita al lector que estudie con detenimiento el ejemplo que ah se ilustra.

___________________________________________________________________ 227

EJERCICIOS 5.3.2 1. 2. 3. Elaborar un algoritmo en Nolae del Ejemplo 3.10, pg.92, o Ejemplo 4.8, pg 140. (Boletos Tegucigalpa, SPS) utilizando el Repita-Hasta. Ejercicios del Apndice C incisos del 1 al 3 (pg.299). Se deber hacer un programa para un supermercado que pregunte para cada cliente: el precio del artculo, la cantidad de artculos del mismo tipo que lleva. Adems deber permitir que se le indique cuando terminan los artculos de un cliente para ofrecer el total de la venta. El programa debe indicar el total de la venta del cliente y preguntar si se atender otro cliente. Adicionalmente se desea que tambin controle el corte de las cajas, por lo que debe ofrecer como salidas el total de ventas del da, y el total de ingresos por impuestos 4. La comercializadora El GLOBO vende al por mayor zapatos estilo "ZZ", manteniendo tres tipos de tarifa:

TARIFA A: para mayoristas de la zona norte, el precio de cada par es de L. 220.00


TARIFA B: para mayoristas de la zona central, el precio de cada uno es de L. 210.00

TARIFA C: para mayoristas de la zona sur, el precio de cada uno es de L. 200.00

Se lee la tarifa y el nmero de artculos a comprar y se desea imprimir el total de la venta y el tipo de tarifa, el 12% de impuesto sobre ventas y el total a pagar por el cliente. Al final disee un reporte que muestre: La cantidad de pares de zapatos vendidos en cada Tarifa. Total de clientes atendidos. Ingreso total de la comercializadora al final del da. Monto de la venta promedio por cliente.

NOTA: Para los Ejercicios 3 y 4 (Apndice E, ejemplo E.4, pg. 314) se deber utilizar la repeticin controlada por RESPUESTA DEL USUARIO, en el ejercicio 4 se deber utilizar un Bloque Caso con variables tipo carcter para las tarifas.

___________________________________________________________________ 228

CAPITULO 6 SUBALGORITMOS, ARREGLOS Y ELEMENTOS DE ESTRUCTURAS DE DATOS


6.1 Subalgoritmos Un subalgoritmo es un algoritmo que necesita ser llamado o invocado por otro algoritmo para su ejecucin. Para desarrollar un estilo que facilite la mantenibilidad (fcil mantenimiento), la legibilidad (fcil lectura), la modularidad (agrupada por tareas afines) de programas ms complejos, es altamente recomendable que se utilicen los subalgoritmos. Adems de ello, los subalgoritmos tienen la ventaja del Reuso es decir, se definen una vez y posteriormente pueden ser reutilizados todas las veces que el programador lo considere conveniente, ahorrando muchas lneas de cdigo que de otra manera se estaran repitiendo innecesariamente. En general cuando se determine que hay lneas de cdigo que se estn utilizando con frecuencia para realizar una tarea especfica, ser conveniente agruparlas y asignarles un nombre en particular (preferiblemente que haga alusin a la tarea principal que realiza.) y se invocarn cuando sea necesario. Este tema ser introducido por medio de ejemplos sencillos para enfatizar la diferencia entre su definicin y su uso o invocacin. Los subalgorimos se ejecutan cuando son llamados o INVOCADOS, as como cuando una persona responde cuando se le llama por su nombre. En el captulo 3 de este libro se utilizan desgloses de primer y segundo nivel, en este momento se debe tener presente esto, para aplicar dichos principios en el ejemplo que mostramos a continuacin:

Ejemplo 6.1 (Promedio de un estudiante, Introduccin a los subalgoritmos)


Disear el algoritmo para un programa en el cual, dados el nmero de cuenta y las 3 calificaciones de un alumno, calcule e imprima su promedio simple y el mensaje Aprobo Reprobo segn sea el caso. ______________________________________________________________________ 229

Estrategia: Promedio Salida mensaje Aprobo Reprobo Entrada Cuenta nota1 nota2 nota3 Despus de calcular el promedio, se necesita una decisin

Si promedio > 60 (V) el alumno Aprueba (F)


El algoritmo resultante es: Inicio lea cuenta lea nota1 lea nota2 lea nota3 Promedio (nota1+ nota2 + nota3)/3

Sino

Reprueba

(1) (2) (3) (4) (5) (6) (7) Mensaje Aprobo (8) (9) Mensaje Reprobo (10) (11) (12) (13) Algoritmo 6.1

si promedio > 60 entonces

sino

fin si escriba promedio escriba mensaje Final

Se puede observar que: En que las Lneas del 1 al 4 se realiza la Las lneas del 5 al 11se realizan los LECTURA DE DATOS CALCULOS Y CLASIFICACION IMPRESIN DE RESULTADOS

Finalmente en las lneas 11 y 12 se hace la

______________________________________________________________________ 230

Las lneas que se han agrupado y asociado a los distintos titulares, se podrn ubicar, de tal manera, que se divide el Programa propuesto en 3 subalgoritmos y se les nombra de manera particular con un Nombre, a continuacin la DEFINICION (o lneas de cdigo) de los subalgoritmos de inters.

Ejemplo 6.2 (Subalgoritmos, Promedio de un estudiante)


Inicio (Lectura) lea cuenta lea nota1 lea nota2 lea nota3 Final En la Lnea (0) se puede observar que, al lado de la palabra Inicio se coloca entre parntesis el nombre del subalgoritmo. Inicio ( Calculos_y_clasificacion) Promedio (nota1+ nota2 + nota3)/3 si promedio > 60 entonces Mensaje sino Mensaje Fin si Final -- Se coloca el nombre entre parntesis. Lnea (0) (1) (2) (3) (4)

(5) (6) (7) (8) (9) (10) (11)

Aprobo Reprobo

Inicio (Impresion) escriba promedio escriba mensaje Final

(12) (13)

Cada uno de los tres segmentos anteriores es un subalgoritmo, en este momento se ha realizado la DEFINICION de cada uno de ellos y se les asign un nombre. En general se dir que cuando un algoritmo llama (o invoca) a un subalgoritmo por su Nombre el subalgoritmo se ejecuta y al finalizar ste, se regresa al algoritmo original que lo INVOCO, continuando ste su ejecucin normalmente. A continuacin se muestra el Programa Principal en el cual se ejemplificar como se realiza la INVOCACION de los subalgoritmos anteriores. ______________________________________________________________________ 231

Inicio (Principal) Lectura --en la invocacin basta colocar el nombre del subalgoritmo Calculos_y_Clasificacion Impresin Algoritmo 6.2 Final En el ejemplo desarrollado se ilustra el orden en la ubicacin fsica de los subalgoritmos y del algoritmo principal, es decir, primero se colocarn los subalgoritmos y posteriormente el algoritmo Principal. En el desarrollo de la prueba de escritorio del Algoritmo 6.2, se considera lo siguiente: Al INVOCAR Lectura, se remite al subalgoritmo Lectura en su DEFINICION, al finalizar ste se regresa al punto de partida inicial (en este caso el Principal), para realizar la siguiente instruccin concatenada con ella, que es el llamado o INVOCACION al subagoritmo Calculos_y_clasificacion y as sucesivamente, hasta terminar. La ejecucin del algoritmo 6.1) es igual a la del Algoritmo 6.2), el lector puede realizar dos Pruebas de escritorio de para cada uno de ellos con los siguientes datos, y comparar las Memorias y Salidas finales: Datos1: 40, 50, 60 Datos2: 60, 70, 80 Un subalgoritmo a su vez puede llamar o invocar a otro, por lo que se establece el siguiente Toda DEFINICION de un subalgoritmo debe estar colocada antes del algoritmo (u principio: otro subalgoritmo) que lo va a llamar o INVOCAR. Adems, los nombre asignados a los subalgoritmos deben seguir las mismas reglas para los identificadores estudiadas en el Captulo 2.

Ejemplo 6.3 (Subalgoritmos, Promedio de N alumnos)


Modificar el Ejemplo 6.2 (pg 231), para N alumnos Solucin: Los subalgoritmos LECTURA, CALCULOS_Y_CLASIFICACION e IMPRESIN,

______________________________________________________________________ 232

siguen siendo vlidos, solamente se requiere utilizar un Bloque Para pues bastar leer el Nmero de alumnos (N_alumnos) para tener el Valor Tope, el nuevo algoritmo es:

Inicio Lea N_alumnos Para i 1, N_alumnos Lectura Calculos_y_Clasificacion Impresion Fin para Final

EJERCICIOS 6.1 1.Modificar el Ejemplo 6.2 (pg. 231) para que calcule e imprima nmero de Aprobados, nmero de Reprobados, y la nota promedio de todo el curso. 2.3.Del Apndice C, hacer los ejercicios 10 al 13 (pg. 299,300). Para ser aceptado en la Universidad Luz del saber se debe tener un promedio de la secundaria superior a 80% y se requiere haber aprobado el examen de admisin con una nota de 70% o ms, disear un programa que utilice los siguientes subalgoritmos y procese varios alumnos: LECTURA: para leer el promedio y la nota de examen de cada aspirante SELECCION: para determinar si el alumno ser aceptado o no en la Universidad ESCRITURA. Imprimir el promedio, nota y el mensaje Aceptado o Rechazado 4.Para la elaboracin de un censo poblacional de N municipios, se le ha asignado un cdigo numrico a cada municipio, se ha registrado, con la mayor aproximacin posible, el nmero de habitantes que tienen y la extensin territorial de cada uno de ellos (medidas en hectreas). Disear un programa en (el lenguaje que su profesor le indique) que clasifique los municipios por categoras segn el nmero de habitantes que posea, ver tabla adjunta:

______________________________________________________________________ 233

RANGO habitantes Menor de 1,000 De 1,000 a 5,000 De 5,001 a 10,000 Mas de 10, 001

CATEGORIA / MUNICIPIO INCIPIENTE EN DESARROLLO FLORECIENTE MADURO

El programa deber, imprimir el cdigo del municipio, nmero de habitantes, hectreas y el mensaje de la clasificacin correspondiente (Nota: todos los municipios debern quedar clasificados). Adems se debe generar un reporte con la siguiente informacin: Nmero de municipios en cada una de las categoras. Poblacin Total en cada una de las categoras. Cdigo del municipio ubicado en la mayor cantidad de Hectreas de terreno y la categora de este. Cdigo del municipio con la menor cantidad de Hectreas de terreno y su categora.

6.2 MENUS, UNA APLICACIN DE LOS SUBALGORITMOS Otra aplicacin de los subalgoritmos son los MENUS Un MENU es un conjunto de opciones (generalmente numeradas) que se presentan al usuario para su seleccin, cada opcin conlleva a la ejecucin de una tarea especfica.

Se introduce el uso de stos con el ejemplo de una calculadora:

Ejemplo 6.4 (Mens, Calculadora)


Se desea un programa que, de manera repetitiva, sume o reste dos nmeros, segn se le indique. Para ello, presentara un <<Men>> de opciones hasta que se selecciones la opcin de terminar el programa.

______________________________________________________________________ 234

DESARROLLO DE UN BREVE ANALISIS Se presentar el siguiente men.

MENU 1. Sumar dos nmeros 2. Restar dos nmeros 3. Terminar el programa Teclee el nmero de su opcin: __

Figura 6.2.1 Si la opcin escogida es 1, se solicitarn los nmeros que se van a sumar y se escribe el resultado, como se indica en el siguiente diseo de pantalla.

Proporcione los nmeros que se van a sumar: X =__ Y =__ La suma es :_____ Teclee <<Enter>> para continuar Figura 6.2.2 Y, de manera similar, para el caso de la resta. DESGLOSE 1. Proceso repetitivo de presentacin del men Repetir 1.1 Presentacin del men 1.2 Seleccin del caso 1 2, para efectuar operaciones hasta que la opcin sea 3. El desglose anterior lleva a la necesidad de utilizar el Bloque Repita-hasta

______________________________________________________________________ 235

2do. Desglose 1.2 Segn sea el caso para la opcin: 1.2.1 1.2.2 (Opcin = 1) Solicitar los nmeros, sumarlos e imprimirlos (Opcin = 2) Solicitar los nmeros, restarlos e imprimirlos

Como se puede observar se utilizar bloque caso pues la opciones son nmeros enteros Se comienza diseando la pantalla principal que estar presentando el MENU de opciones cuyo diseo se mostr previamente (Figura 6.2.1), este procedimiento se llama Pantalla_Menu: y consistir de varias escrituras y una lectura nica de la OPCION.

Inicio(Pantalla_ Menu) Limpia_Pantalla escriba MENU escriba 1.- Sumar dos nmeros escriba 2.- Restar dos nmeros escriba 3.- Terminar el programa escriba Teclee el numero de su opcin Lea OPCION Final

(1) (2)

El procedimiento Limpia_Pantalla de la Lnea (2), existe en los lenguajes de programacin y su finalidad, como dice su nombre es Limpiar la Pantalla, de manera que en las corridas, las salidas previas al llamado de ste, no son visibles al usuario (como una pgina nueva)

Posteriormente se har el procedimiento Suma, de acuerdo al diseo mostrado en la Figura 6.2.2 (pg. 235), en el cual los mensajes son asociados a la escritura y los valores de X e y debern leerse. Inicio (Suma) Limpia_Pantalla escriba Proporcione los nmeros que se van a sumar ______________________________________________________________________ 236

escriba X = lea X escriba Y = lea Y S X+Y

escriba La suma es : , S escriba Teclee <<Enter>> para continuar lea Final El ltimo lea (sin parmetro) sirve para que la computadora ESPERE la pulsacin de la tecla ENTER para continuar con el programa. --Efecto de una Pausa

Ahora se continuar con el procedimiento Resta, que resulta similar al de Suma Inicio (Resta ) Limpia_Pantalla escriba Proporcione los nmeros que se van a restar escriba X = lea X escriba Y = lea Y R X-Y

escriba La resta es : , R escriba Teclee <<Enter>> para continuar lea Final

Como se mencion anteriormente en el paso de los desgloses, ya que Repetidamente se estar presentando esta pantalla con opciones para 1.- Sumar y 2.- Restar hasta que la opcin sea 3. Terminar, se recurrir al Bloque Repita hasta, entonces el algoritmo principal se escribe as:

______________________________________________________________________ 237

Inicio (Principal) Repita Pantalla_Menu Caso OPCION 1: Suma 2: Resta Sino: nulo fin caso hasta que OPCION = 3 Final
ESQUEMA GENERAL DE UN MENU ITERATIVO

Pensando en una Prueba de escritorio, se puede observar que se exhibir primero el Menu principal (Figura 6.2.1. pg.235) con la ejecucin del procedimiento Pantalla_Menu, al ingresar la opcin (por ejemplo) 1 se continua con el Bloque Caso y se llama o INVOCA al procedimiento Suma, en este (Figura 6.2.2. pg.235 ) se piden los dos nmeros a sumar etc. y salimos del Bloque Caso, y como hasta que OPCION =3 es (F), se regresa a realizar de nuevo el Rango, y se ejecuta otra vez Pantalla_Menu, que vuelve a exhibir el men principal. El sino del Bloque Caso es til en los casos en que ninguna de las opciones definidas se cumpla. Por ejemplo cuando el usuario errneamente presiona el nmero 5. El sino lo lleva a un bloque nulo, (lo cual no implica que ira a la opcin 3.-Terminar ya que sta no es un procedimiento), se sale del Bloque Caso, y como no se ha cumplido que

OPCION = 3, regresa a realizar el Rango para presentar de nuevo la pantalla del MENU. El subalgoritmo Pantalla_Menu presenta literales de las opciones para el usuario, con toda la libertad propia de estos (espacios en blanco, caracteres especiales, etc.), no deben confundirse con los nombres de los procedimientos que hacen posible el desarrollo de dichas opciones, dichos nombres debern seguir todas las reglas de identificadores indicadas en el. Captulo 2, y estn como opciones del Bloque Caso.

______________________________________________________________________ 238

Opciones

presentadas

en

el Invocacin a los procedimientos En el Bloque Caso Caso opcion 1: Suma 2: Resta

procedimiento, Pantalla_ Menu Put(1.-Sumar dos nmeros) Put(2.-Restar dos nmeros)

Ejemplo 6.5 (Mens, Agencia Turismo Islas)


Una agencia de viajes va a proporcionar tres paquetes tursticos, con un costo base para dos personas y un costo adicional por persona extra, segn se muestra en la siguiente tabla.

PAQUETE

DESTINO

PRECIO DOS PERSONAS

PRECIO PERSONA EXTRA

1 2 3

Islas Baha Mxico Madrid

2,500.00 4,800.00 15,000.00

1,000.00 2,500.00 9,000.00

El precio incluye transporte areo, hotel y desayuno por cuatro das y tres noches. Cada uno de los paquetes tiene opciones adicionales que se pagan por aparte por cada persona. 1. Islas de la Baha a. Clases de esqu acutico b. Visitas a delfines 300.00 por persona 80.00 por persona

2. Mxico a. Visitas a las pirmides b. Presentacin Ballet Folklrico c. Visita a Garibaldi 60.00 por persona 50.00 por persona 200.00 por persona

3. Madrid a. Visita a Valencia 270.00 por persona

______________________________________________________________________ 239

Con el propsito de atender los clientes se desea un programa de consulta para calcular costos totales segn el paquete y las opciones escogidas. Por lo cual, el programa deber presentar una pantalla as:

MENU 1. 2. 3. 4. Islas de la Baha Ciudad de Mxico Madrid Espaa Salir del programa

Cul es su opcin: ? _____

La cual deber aparecer siempre que se termine con un cliente para esperar a atender el siguiente.

Si por ejemplo, el cliente pide el paquete # 1, se deber ir preguntando sobre el # de personas que escogieron determinada opcin para los clculos de los costos, (si ninguna persona escoge o desea una opcin, el numero de personas NO ser 0). Al final de la consulta, la pantalla quedar as:

PAQUETE : ISLAS DE LA BAHIA Cantidad de personas extra ___________________ Cantidad de personas a esqu acutico __________ Cantidad de personas visita a delfines _________ Costo del Viaje : Costo base para 2 personas Lps. _________ Subtotal _________ Impuesto _________ Gran Total Lps. _________ Teclee <<Enter>> para continuar

______________________________________________________________________ 240

DESARROLLO Nuevamente se disearn subalgoritmos. Se puede observar que un desglose general para el programa de consulta es el siguiente: 1. Repetir sucesivamente lo siguiente : 1.1 1.2 Mostrar el men en la pantalla Atender la consulta del cliente segn sea el caso : 1.2.1 1.2.2 1.2.3 (opcin = 1) Consulta para Islas (opcin = 2) Consulta para Mxico (opcin = 3) Consulta para Madrid

Hasta que se escoja la opcin = 4 para salir del programa. La codificacin de este desglose general ser el algoritmo principal, el cual invoca a los subalgoritmos utilizados Se considerarn los siguientes subalgoritmos. NOMBRE Pantalla_Menu Islas Mxico Madrid PROPOSITO Presentar el men en la pantalla Consulta para el paquete Islas Consulta para el paquete Mxico Consulta para el paquete Madrid

DICCIONARIO DE VARIABLES Opcion CE Pesq Pdelf Costo_ce Costo_Pesq Costo_Pdef Costo Impto Total Opcin del Men principal Cantidad de personas extra Cantidad de personas que tomarn clase de esqu acutico Cantidad de personas visita a delfines Costo por persona extra Costo por las clases de esqu acutico Costo por la visita a delfines Subtotal Impuesto sobre ventas (12%) Total a pagar por que paquete

______________________________________________________________________ 241

Inicio (Pantalla_Menu) Limpia_Pantalla escriba MENU escriba ______ escriba escriba 1.- Islas de la Baha escriba 2.- Ciudad de Mxico escriba 3.- Madrid, Espaa escriba escriba 4.- Salir del Programa escriba Cul es su opcin : ? lea OPCION Final Inicio (Islas) Limpia_Pantalla escriba Paquete: Islas de la Baha escriba escriba Cantidad de personas extras lea Ce costo_Ce Ce * 1500.00

escriba Cantidad de personas esqu acutico lea Pesq costo_pesq pesq * 300

escriba Cantidad de personas visita a delfines lea Pdelf costo_pdelf Costo impto Total Pdelf * 80

2500 + costo_ce+ costo_pesq + costo_pdelf costo * 0.12 costo + impto

escriba Costo base para 2 personas Lps. 2,500.00 escriba Sub. total , costo escriba Impuesto , impto ______________________________________________________________________ 242

escriba GRAN TOTAL , Total escriba Teclee <<Enter>> para continuar lea Final El subalgortimo Islas puede elaborarse de manera que costo sea un ACUMULADOR ADITIVO, en el caso de que en las salidas se requieran impresiones de clculos intermedios, se debern separar los clculos segn convenga Inicio (Islas) Limpia_Pantalla escriba Paquete: Islas de la Baha escriba costo 2500 escriba Cantidad de personas extras: lea Ce Costo costo + Ce * 1500.00 -- Acumula

escriba Cantidad de personas a esqu acutico: lea Pesq costo costo + pesq * 300 -- acumula

escriba Cantidad de personas visita a delfines lea Pdelf costo impto Total costo + Pdelf * 80 costo * 0.10 costo + impto -- es un literal -- acumula -- Usa otra variable pues impto se imprimir

escriba Costo base para 2 personas Lps. 2,500.00 escriba Sub. total , costo escriba Impuesto , impto escriba GRAN TOTAL , Total escriba Teclee <<Enter>> para continuar lea Final

De la misma manera se sigue con los otros dos procedimientos Mxico y Madrid. El algoritmo principal es:

______________________________________________________________________ 243

Inicio Repita Pantalla_Menu Caso OPCION 1: Islas 2: Mxico 3: Madrid Sino: nulo fin caso hasta que OPCION = 4 Final

Ejemplo 6.6 (Mens, Agencia Turismo Islas, preguntas en preferencias, contadores,


acumuladores, reportes)

Modificar el ejercicio anterior de la siguiente manera: 1) Para el paquete Islas, las nicas opciones sern: a) Preguntar Numero de personas y que el programa determine si hay personas extras b) Preguntar si habr personas que irn a visitar a los delfines Si la respuesta es Si Teclear So s si es NO teclear No n

En el caso de responder que s preguntar el nmero de personas que ir y hacer los clculos respetivos. 2) Incluir la opcin de reportes que en cualquier momento brinde lo siguiente : a) Paquetes vendidos de cada tipo b) Ingresos por cada tipo de paquete c) Ingresos totales de la agencia de turismo El nuevo men Principal se deber ver as: MENU 1. Islas de la Baha 2.- Ciudad de Mxico 3.- Madrid Espaa 4.- Reporte de Paquetes vendidos y los Ingresos generados 5.-Salir del programa Cul es su opcin: ? _____

______________________________________________________________________ 244

Solucin: Ya que se cuenta con el algoritmo bsico del ejemplo anterior Ejemplo 6.6, se comenzar por ampliar el diccionario de variables e ilustrando las asignaciones para los contadores y acumuladores que se necesitarn

DICCIONARIO DE VARIABLES Opcion : Total Opcin del Men principal : Total a pagar por que paquete Nuevas variables
P_islas P_mex P_madrid Ing_islas Ing_mex Ing_madrid Ing._Total Paquetes vendidos para Islas de la Bahia Paquetes vendidos para Mxico Paquetes vendidos para Madrid Ingresos por la venta de paquetes a las Islas Ingresos por la venta de paquetes a Mxico Ingresos por la venta de paquetes a Madrid Ingreso total de la Agencia de turismo

Asignacin P_islas P_islas +1 P_mex mex +1 P_madrid P_madrid +1


Ing_islas Ing_mex Ing_islas+Total Ing_mex+Total

Ing_madrid Ing_madrid+Total Ing_Total Ing_islas+ Ing_mex+ Ing_madrid

En primera instancia el subalgoritmo Pantalla_Menu se modificar al surgir una nueva opcin que es Reporte Inicio (Pantalla_Menu) Limpia_Pantalla escriba MENU escriba ______ escriba 1. Islas de la Baha escriba 2. Ciudad de Mxico escriba 3. Madrid, Espaa escriba 4. Reporte de Paquetes vendidos y los Ingresos generados escriba escriba 5. Salir del Programa escriba escriba Cul es su opcin : ? lea OPCION Final Algoritmo 6.6a

______________________________________________________________________ 245

A pesar de que primero se colocan los subalgoritmos y posteriormente el principal, por fines didcticos se empezar a desarrollar este ltimo, para visualizar mejor la lgica total del programa, as como tambin las inicializaciones necesarias Inicio P_islas 0, P_mex Ing_islas Repita Pantalla_Menu Caso OPCION 1: Islas 2: Mxico 3: Madrid 4: Reporte Sino: nulo fin caso hasta que OPCION = 5 Final Algoritmo 6.6b Comentarios por Lnea: Lnea (1): Inicializacin de los contadores de paquetes vendidos, estos se deben colocar antes de entrar a la repeticin (Por qu?) Lnea (2): Inicializacin de los acumuladores de ingresos, como ya hemos dicho antes, estos sern de tipo real o float, as que colocaremos punto decimal 0.0 Lnea (9): Lnea (12): Se agreg la invocacin al subalgoritmo REPORTE Ahora que tenemos la opcion 4. REPORTE, el Rango del Bloque Repita se estar realizando repetitivamente ahora hasta que la OPCION = 5 Ahora se modificar el subalgoritmo ISLAS, lo que implica preguntas al usuario, comparaciones e incrementos en los acumuladores y contadores. 0, P_madrid 0 0.0, Ing_madrid 0.0 (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13)

0.0, Ing_mex

Inicio (Islas) Limpia_Pantalla escriba Paquete: Islas de la Baha ______________________________________________________________________ 246

escriba costo 2500 escriba Cantidad de personas:

-- Costo por 2 personas

lea N_per si N_per > 2 -- El paquete ya incluye 2 personas entonces Costo costo + (N_per-2) * 1500.00 -- Acumula Fin si escriba Desean ir esqu acutico S/N? lea Resp si Resp = S o Resp= s entonces lea Pesq costo fin si impto Total costo * 0.10 costo + impto costo + pesq * 300 -- Acumula -- Cubre la posibilidad de maysculas y minsculas

-- si no van a esqu el costo sigue igual no se incrementa -- Usa otra variable pues impto se imprimir

escriba Costo base para 2 personas Lps. 2,500.00 escriba Subtotal , costo escriba Impuesto , impto escriba GRAN TOTAL , Total P_islas Ing_islas P_islas + 1 Ing_islas + total Lnea (22) Lnea (23) --Se cuenta el paquete --Acumula esta venta

escriba Teclee <<Enter>> para continuar lea Final Subalgoritmo 6.6.c Algunas de las lneas agregadas estn en negritas, conteniendo comentarios pertinentes. Se puede observar que los incrementos de acumuladores y contadores se realizan en el cuerpo de este subalgoritmo, ya que las inicializaciones se hicieron en el algoritmo principal, de igual manera se modificarn los subalgoritmos Mexico o Madrid y para terminar se detallar el subalgoritmo REPORTE

______________________________________________________________________ 247

Inicio (Reporte) Escriba Paquetes vendidos a Islas de la Bahia Escriba P_islas Escriba Paquetes vendidos a Islas de la Bahia Escriba P_Mex Escriba Paquetes vendidos a Islas de la Bahia Escriba P_Madrid Escriba Ingresos por venta de paquetes a Islas de la Bahia Escriba Ing_Islas Escriba Ingresos por venta de paquetes a Mexico Escriba Ing_Mex Escriba Ingresos por venta de paquetes a Madrid Escriba Ing_Madrid final Algoritmo 6.6d

Ejemplo 6.7 (Mens, Agencia Turismo Islas, reporte al final)


Modificar el Ejemplo anterior 6.6 mostrando ahora el REPORTE al final del da Solucin En ocasiones el REPORTE debe mostrarse al salir del men, en cuyo caso los subalgoritmos Islas, Mexico, Madrid quedan igual los cambios ocurren en: Pantalla_menu pues ya no se presenta la opcion REPORTE (queda el men original) y en el Programa principal, ya que REPORTE no esta en el Bloque caso, sino al finalizar el Repita Hasta, obtenemos lo siguiente:

Inicio P_islas 0, P_mex Ing_islas Repita Pantalla_Menu Caso OPCION 1: Islas 2: Mxico 0, P_madrid 0 0.0, Ing_madrid 0.0 (1) (2) (3) (4) (5) (6) (7) 0.0, Ing_mex

______________________________________________________________________ 248

3: Madrid Sino: nulo fin caso hasta que OPCION = 4 Reporte Final

(8) (9) (10) (11) (12) (13)

Algoritmo 6.7a A su vez un subalgoritmo puede invocar a otro subalgoritmo. Por ejemplo para todos los paquetes del ejemplo anterior puede existir la opcin de pagar al contado o al crdito en cuyo caso el total a pagar se incrementa en un 6%. Los cambios a introducir involucran definir el Subalgoritmo Forma _de_pago, que se escribe as: Inicio (Forma_de_pago) Escriba Forma de pago 1- contado 2 Tarjeta de credito ? Lea Resp Si resp = 1 Entonces Total Fin si Final Algoritmo 6.7b Este Subalgoritmo sera invocado entre las Lneas (22) y (23) del algoritmo 6.6c (pg.247) : : escriba Sub. total , costo escriba Impuesto , impto Lnea (22) -- Invocacin del subalgoritmo Lnea (23) --Contamos el paquete --Acumulamos esta venta

total + total*0.06

-- acumulamos en la misma variable --para imprimirla en Islas

Forma_de_pago
escriba GRAN TOTAL , Total P_islas Ing_islas P_islas + 1 Ing_islas + total

escriba Teclee <<Enter>> para continuar lea Final (islas) Algoritmo (parte) 6.7c

______________________________________________________________________ 249

Este subalgoritmo Forma_de_pago deber colocarse antes del que lo invoca o sea Islas. Se asignarn ejercicios adicionales para esta seccin, hasta despus de haber obtenido familiaridad con una til herramienta llamada Diagrama Jerrquico de Procedimientos, que se presenta a continuacin:

6.3. DIAGRAMA JERARQUICO DE PROCEDIMIENTOS (DJP) Cuando se van a utilizar subalgoritmos o procedimientos, el hecho de colocarlos en determinado orden puede crear confusin, se hace til entonces emplear un Diagrama Jerrquico procedimientos (DJP), este consiste en colocar los nombres de los procedimientos (en rectngulos) en la jerarqua de su invocacin (mediante lneas rectas), lo cual da una idea del orden fsico en que irn colocados stos en el algoritmo o programa principal. Los Diagramas Jerrquicos no se deben confundir con los Diagramas de Flujo, se ilustrar su uso, aplicndolos a los ejemplos realizados con anterioridad.

Ejemplo 6.8 (DJP, Mens, calculadora)


Elaborar el Diagrama Jerrquico de Procedimientos (DJP) del Ejemplo 6.2.1 (Calculadora) Principal

Pantalla_Menu

Sumar

Restar

Observacin 6.3.1 El Diagrama Jerrquico de procedimiento ilustra los subalgoritmos utilizados y la relacin (jerarquca) de invocacin por el programa o subalgoritmo principal o por otros subalgoritmos, adems es una gran ayuda para colocarlos fsicamente en el orden correcto, es decir:. de abajo hacia arriba y de izquierda a derecha ______________________________________________________________________ 250

Se puede observar que el programa principal invoca a estos tres subalgoritmos, y aunque lo haga de manera repetitiva, solamente se dibujarn una vez. El orden fsico en que se coloca los subalgoritmos ser de abajo hacia arriba y de izquierda a derecha, en la forma en que estn apuntando las flechas Subalgoritmo Pantalla_menu Subalgoritmo Sumar Subalgoritmo Restar Algoritmo o procedimiento Principal

Adems un principio general es que el subalgoritmo llamado debe estar colocado arriba del que lo invoca.

Ejemplo 6.9 (DJP, Mens, Agencia Turismo Islas)


Elaborar el Diagrama Jerrquico de Procedimientos (DJP) del Ejemplo 6.6 (Agencia de turismo) La idea de las invocaciones la tenemos en el algoritmo 6.6b (pg. 246)el Principal Principal

Pantalla_Menu

Islas

Mexico

Madrid

Reportes

Luego el orden es: Subalgoritmo Pantalla_Menu Subalgoritmo Islas Subalgoritmo Mexico Subalgoritmo Madrid Subalgoritmo Reporte Algoritmo principal o programa principal

______________________________________________________________________ 251

Ejemplo 6.10 (DJP, Mens, Agencia Turismo Islas, Reporte, Forma_pago)


Elaborar el Diagrama Jerrquico de Procedimientos (DJP) del Ejemplo 6.7 (Agencia de turismo, con REPORTE y otro subalgoritmo Forma_de_pago) e indicar el orden de los subalgoritmos Principal

Pantalla_Menu

Islas

Mexico

Madrid

Reportes

Forma_de_pago

Forma_de_pago

Forma_de_pago

Luego el orden es: Subalgoritmo Forma_de_pago Subalgoritmo Pantalla_Menu Subalgoritmo Islas Subalgoritmo Mexico Subalgoritmo Madrid Subalgoritmo Reporte Algoritmo principal o programa principal

Observacin: el subalgoritmo Forma_de_pago, solamente se coloca una vez, a pesar de que es invocado o llamado 3 veces, adems observa que debe ir antes de los subalgoritmos que lo llaman.

Ejemplo 6.11 (DJP, Mens, Agencia Turismo Biosfera, mas subalgoritmos)


La Agencia de turismo Los Viajeros, realiza excursiones tursticas, desea un seudocdigo para determinar cuanto tiene que pagar cada cliente. Las excursiones que se ofrecen son las siguientes: ______________________________________________________________________ 252

TIPO

DESCRIPCION ISLAS DE LA BAHIA RUINAS DE COPAN BIOSFERA DEL RIO PLATANO

Precio X Grupo de 3 personas

1 2 3

L. 5000.00 L. 7000.00 L. 6000.00

Todas las excursiones incluyen transporte y hospedaje. En caso que el grupo incluya ms de 3 personas, el precio por excursin se incrementara en L. 1000,00 para el tipo 1 y 2 y en L. 1400.00 para el tipo 3. Si el grupo as lo desea para solicitar que se le incluya un plan de comida el cual tiene un costo de L. 100.00 diarios por persona para los tipo 1 y 3, L. 150.00 para el tipo 2. El seudocdigo deber calcular el ingreso segn el tipo de excursin, ingreso total de la empresa. Nota: Disear el DJP a utilizar Solucin Se dar una solucin parcial a este ejercicio, el algoritmo principal tendr la misma forma Tpica que involucra un Repita hasta y un Bloque caso. Se necesitar un subalgoritmo para la Pantalla_Menu que llamaremos ahora P_M y

subalgoritmos para cada uno de los Paquetes que llamaremos: BAHIA, COPAN, BIOS. Por otro lado vemos que en todos tenemos costos por personas extras y por comida, as que recurriremos a los procedimientos P_EXTRA y COMIDA. Adems nos auxiliaremos del DJP Principal

P_M

Bahia

Copan

Bios

P_extra

Comida

P_extra

Comida

P_extra

Comida

______________________________________________________________________ 253

Se puede ver que, cada Paquete turstico est llamando a los mismos dos subalgoritmos P_extra y Comida, estos deben disearse de tal manera que abarquen las variantes de todos los Paquetes, ejemplificando esto con el paquete Copan se tiene lo siguiente: Inicio (Copan) Limpia_Pantalla costo P_extra Comida escriba Total a pagar Lps , Costo Ing_copan Ing_copan + costo --Acumula esta venta 7000 --Costo por 3 personas -- Invoca dos subalgoritmos

escriba Teclee <<Enter>> para continuar lea Final

Similarmente para el subalgoritmo Bahia Inicio (Bahia) Limpia_Pantalla costo P_extra Comida escriba Total a pagar Lps , Costo Ing_bahia Ing_bahia + costo --Acumula esta venta 5000 -- Costo por 3 personas -- Invoca dos subalgoritmos

escriba Teclee <<Enter>> para continuar lea Final Queda al lector el diseo del subalgoritmo Bios Como elaborar los procedimientos P_ext y Comida para que sean tiles para todos los paquetes?se usar un Bloque Caso de la OPCION seleccionada para asignar los distintos precios por persona extra que se tienen y de igual manera para los distintos planes de Comida

______________________________________________________________________ 254

Inicio (P_ext) Escriba Ingrese el numero de personas en la excursin Lea N_per Si N_per >3 Entonces Caso OPCION 1, 2 : Costo costo + (N_per-3) * 1000 3 : costo Sino nulo Fin caso Fin si Final costo + (N_per-3) * 1400

Inicio (Comida) Escriba Desea tomar el plan de comidas (S/N) ? Lea Resp Si Resp = S o Resp = s entonces Escriba Numero de dias Lea dias Escriba Numero de personas Lea per_comi Caso OPCION 1, 3 : Costo costo + Per_comi * dias * 100 2 : costo Sino nulo Fin caso Fin si Final costo + Per_comi * dias * 150

Otra manera de hacerlo sera ir calculando costos por rubro para despus sumar todos estos en el algoritmo del paquete respectivo ejemplo:

______________________________________________________________________ 255

Inicio (P_ext) Escriba Ingrese el numero de personas en la excursin Lea N_per Si N_per >3 Entonces Caso opcion 1, 2 : Precio_Ext 3 : Precio_Ext Sino nulo Fin caso Costo_Ext Sino Costo_Ext Fin si Final Inicio (Comida) Escriba Desea tomar el plan de comidas (S/N) ? Lea Resp Si Resp = S o Resp = s entonces Escriba Numero de dias Lea dias Escriba Numero de personas Lea Per_comi Caso opcion 1, 3 : precio_comida 100 2 : precio_comida 150 Sino nulo Fin caso Costo_comida Sino Costo_comida Fin si Final 0 Per_comi * dias * precio_comida 0 (N_per-3) * Precio_Ext 1000 1400

En el paquete turstico respectivo se calcula el costo as: ______________________________________________________________________ 256

Costo Costo

5000 + Costo_Ext + Costo_comida 7000 + Costo_Ext + Costo_comida

etc.

Por otro lado el subalgoritmo REPORTE es semejante al diseado en el Ejemplo 6.6 mostrado en el Algoritmo 6.6d (pg. 248).
Para finalizar se muestra el algoritmo principal:

Inicio Ing_bahia 0.0, Ing_copan Repita Pantalla_Menu Caso OPCION 1: Bahia 2: Copan 3: Bios Sino: nulo fin caso hasta que OPCION = 4 Reporte Final 0.0, Ing_bios 0.0 (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12)

Recapitulando y considerando el DJP diseado al inicio de este ejemplo, el orden de los subalgoritmos es: Subalgoritmo P_extra Subalgoritmo Comida Subalgoritmo P_M Subalgoritmo Bahia Subalgoritmo Copan Subalgoritmo Bios Subalgoritmo Reporte Algoritmo principal o programa principal.

EJERCICIOS 6.3 1.- Disear el DJQ del Algoritmo 6.1.1.b 2.- Disear el DJP de los Ejercicios 6.1 inciso 2 y 3, pg.233. 3.- Ejercicios selectos del Apndice C, incisos del 14 al 16, pg.300. 4.- Ejercicios selectos del Apndice C, incisos del 17 al 20, pg.300-302. 5.- Ejercicios selectos del Apndice C, incisos del 21 al 23, pg. 302-304. ______________________________________________________________________ 257

6.4

Arreglos Unidimensionados

Un arreglo es un conjunto de variables con el mismo nombre y el mismo tipo de dato. Tambin un arreglo es una estructura conveniente para almacenar elementos datos continuos, homogneos y ordenados; continuos porque fsicamente uno est prximo al otro, homogneos pues los datos son del mismo tupo y ordenados porque se accesa cada dato a travs de un ndice.

Como se estudiar ms adelante, los arreglos facilitan obtener datos de la memoria y el acceso eficiente a ellos. Los arreglos son tiles cuando una lista de datos se debe procesar ms de una vez.

Todas las variables que se han consideradas han sido de tipo simple, es decir que solo consiste de una casilla de memoria, en cambio para una variable de tipo estructurado se tiene una coleccin de casillas de memoria, en las cuales el orden de los elementos es importante: Arreglo X

Para distinguir las distintas posiciones del arreglo se indexan, es decir, a la variable X se le coloca un ndice o nmero entero entre parntesis X(1) X(2) X(3) X(4)

Observacin 6.4a Las aplicaciones de los arreglos son diversas, una de stas se estudiarn ms adelante, en el Ejemplo 6.16 (pg. 268) y es cuando una lista de valores ledos Z son procesados, y posteriormente se necesitan para otra aplicacin. Si se usa la misma variable Z para todas las lecturas, solamente se habr conservado el ltimo valor de la misma, en cambio si Z es un arreglo se conservarn en casillas de memoria diferentes los distintos valores ledos, pudindose utilizar stos nuevamente. ______________________________________________________________________ 258

Se pueden realizar las distintas operaciones, esto se puede confirmar haciendo la siguiente Prueba de escritorio X (1) I 2 X(i) X(i+1) X(4) 10 2 * X(1) X(1) + X(2) 5 * X(i 1) Dato 6

Lea X(3) Escriba X(I +1)

Memoria: X(1) 10 X(2) 20 X(3) 30 6 X(4) 50 I 2

Salida 6

O en forma equivalente para el arreglo X

X(1) X(2) X(3) X(4)

10 20 30 6 50 Observacin 6.4b Se tienen dos ambientes de memoria, uno son las casilla de memoria del o los arreglos, y otro la casilla de memoria usual

Haciendo una analoga entre un arreglo y un edificio de apartamentos. El nombre del arreglo es el nombre del edificio y los elementos son los apartamentos, cada uno tiene un Nmero ndice, que corresponde al de un apartamento, as Riz (4) corresponder el apartamento 4. Si se tratara de las contribuciones de 3 socios, contribucin (2), es la contribucin del segundo socio.

______________________________________________________________________ 259

EJERCICIOS 6.4 Dado el siguiente arreglo B: Memoria B(1) 8 B(2) 10 B(3) -3 B(4) 2 B(5) 4 B(6) 0

Hacer la prueba de escritorio de cada uno de los siguientes incisos: a.) escriba B(6) X B(5) escriba X b) I 25 X B (i-23) escriba X

c) X 3 Y 8 B(Y-3) x + y escriba B(3) escriba B(5)

d)

I 1 Y B(i) B(y-4) 3 escriba B(3)

6.4.1

Operaciones con Arreglos

Para la lectura de 3 elementos del arreglo X (arreglo de longitud 3), inicialmente podramos pensar en el siguiente algoritmo Inicio Lea X(1) Lea X(2) Lea X(3) Final

pero si el arreglo tiene muchos elemento este mtodo no resulta prctico, recordando entonces al Bloque Para, se mostr como ste utiliza un ndice que se incrementa de uno en uno y en los ejemplos desarrollados en el Captulo 4 se vio que la secuencia tpica del ndice general es: 1, 2, 3, 4, 5 . A continuacin se ilustrar con un ejemplo, como se combinan los Arreglos con el Bloque Para. ______________________________________________________________________ 260

Ejemplo 6.12 (Arreglos, Leer un arreglo de longitud N)


Disear un algoritmo para leer el arreglo A de longitud N Solucin: ESTRATEGIA (N+1, nmeros) Salida Ninguna Entrada N Arreglo A Se comenzar leyendo la longitud del arreglo. Se utilizar un Bloque Para, que proporcionar los ndices del arreglo.

Inicio Lea N Para i 1, N haga Lea A(i) Fin para Final PRUEBA DE ESCRITORIO Datos: 5, 4 , 8, -4, 0, 7

Memoria: Arreglo X N 5 i 1 2 3 4 5 6 X(1) 4 X(2) 8 X(3) -4 X(4) 0 X(5) 7

Salida NO hay

Vale decir que se pueden usar variantes para la representacin en la Memoria de los elementos de un Arreglo como ser: ______________________________________________________________________ 261

a) X(1) 4 X(2) 8 X(3) -4 X(4) 0 X(5) 7

b) O en forma equivalente para el arreglo X X 1 4 2 8 3 -4 4 0 5 7 En esta variante el Nombre del arreglo se escribe arriba, en la esquina superior izquierda y en la primera fila solamente se colocan los ndices c) Otra manera es Vertical, escribiendo Variable e ndices d) Y finalmente solo el Nombre y los ndices X X(1) X(2) X(3) X(4) X(5) 4 8 -4 0 7 1 2 3 4 5 4 8 -4 0 7

Ejemplo 6.13 (Arreglos, manipulacin, lectura, clculos, escritura)


Disear un algoritmo en el cual se lea un arreglo A de longitud 4, se calcule el promedio Prom de sus elementos, imprima el arreglo original y el promedio Prom. Se solicita que la lectura y escritura del arreglo sea amistosa Solucin ESTRATEGIA (4 nmeros) Entrada Arreglo A Salida (5 nmeros) Arreglo A Prom ______________________________________________________________________ 262

Para calcular el promedio, es necesario acumular la suma de los elementos del arreglo, comenzaremos entonces inicializando en cero un acumulador S Al finalizar de acumular la suma de los elementos S, se calcular Prom Utilizaremos un Bloque Para, el que nos proporcionar los ndices del arreglo A esta altura del curso, muy probablemente ya has visto los Fundamento de un Lenguaje de Programacin, as introduciremos mensajes amistosos en lectura e impresin de los elementos del arreglo, entonces disearemos la impresin de los letreros:

A( 1 ) =___ lectura

A( 1 ) = 10

escritura

Observe que lo que est en Negrillas son literales, lo dems son variables Inicio S 0 1, 4 haga escriba A( escriba i escriba ) = lea A(i) S Fin para Prom S/4 s + A(i) Al usuario se le pedir la informacin as: A( 1 ) =__ se teclee el valor(lea)

Para i

Escriba El arreglo leido es: Para i 1, 4 haga escriba A( escriba i escriba ) = escriba A(i) fin para escriba El promedio de los elementos es: escriba Prom Final El usuario mirar la informacin as: A( 1 ) = 10 se escribe el valor

______________________________________________________________________ 263

A continuacin se muestra la prueba de escritorio de este algoritmo con una salvedad: en las salidas no escribiremos los rtulos amistoso diseados previamente, pues da lugar a confusin

PRUEBA DE ESCRITORIO Datos: 5, 4 , 7, -4, Memoria: Arreglo X X(1) X(2) X(3) X(4) 5 4 7 -5 S 0 5 9 17 12 1 2 3 4 5 i 1 2 3 4 5
Prom

Salida

El promedio de los elementos es: 3

Ejemplo 6.14 (Arreglos, elemento mayor y su posicin)


Problema: En el arreglo Sueldo se guarda el sueldo de N empleados, imprimir el mayor sueldo y el codigo del empleado (que coincide con el ndice) con el mayor sueldo. (Consultar apndice E, Ejemplo elemento mayor de una lista de nmeros) ESTRATEGIA (N + 1 nmeros) Entrada N (longitud) Arreglo Sueldo Salida (2 nmeros) Mayor_sueldo codigo

Suponiendo que el Arreglo es de longitud 4 se tiene lo siguiente: Sueldo 1 2 3 4 6000 9000 10000 7000 Se puede ver que el mayor sueldo es 10000 y corresponde al empleado con ndice o cdigo 3, se continuar con la estrategia para obtener esta respuesta con un algoritmo apropiado:

______________________________________________________________________ 264

Se lee todo el arreglo, como un hbito, si estn en memoria los elementos, se pueden hacer varias y diversas operaciones. En una programacin modular es preferible tener separadas las operaciones, para poder despus reutilizar dichos mdulos

Para encontrar el sueldo mayor, se comienza suponiendo que el primer elemento Sueldo(1) es el mayor_sueldo con ndice o codigo = 1) Desde el segundo elemento en adelante, se recorre el resto del arreglo con la ayuda de un Bloque Para, y se va comparando el supuesto mayor_sueldo con el resto de los elementos, si un elemento es mayor que el supuesto mayor, entonces se hacen las reasignaciones correspondientes del nuevo mayor y la posicin de este.

Inicio Lea N Para i 1, N haga escriba Sueldo empleado escriba i escriba = lea sueldo(i) Fin para Mayor_sueldo Codigo Para i 1 2, N haga -- Se comparar del segundo elemento en adelante sueldo(1)
Al usuario se le pedir la informacin as: Sueldo empleado 1 = ___

Si Sueldo (i) > Mayor_sueldo Entonces Mayor_sueldo Codigo Fin si fin para escriba El Mayor sueldo es: Lps escriba Mayor_sueldo escriba de el empleado con codigo : escriba Codigo Final i Sueldo(i)

______________________________________________________________________ 265

PRUEBA DE ESCRITORIO Datos: Memoria Sueldo N 4 Mayor_sueldo 6000 9000 10000 codigo 1 2 3 2 3 4 5 i 1 2 3 4 5 1 2 3 4 6000 9000 10000 7000
El Mayor sueldo es Lps 10000 de el empleado con codigo: 3

4, 6000, 9000, 10000, 7000 Salida

6.4.2 Arreglos Paralelos Se entender por arreglos paralelos aquellos que tienen la misma longitud y tipos de dato y que en el contexto en que estn, los elementos de estos que posean el mismo ndice estn relacionados al mismo item.

Ejemplo 6.15 (Arreglos paralelos, Pagos quincenales, planilla)


El sistema de pago para los N empleados de la empresa PAGABIEN es quincenal, se guardan los pagos de la Primer quincena y de la segunda quincena en dos 2 arreglos llamados PQ y SQ respectivamente. Disear un programa que lea los dos arreglos, se trabaje con ambos arreglos en forma paralela, y se calcule el sueldo MENSUAL

devengado por cada uno de los empleados, as como tambin el total de la planilla ESTRATEGIA

(2*N + 1 nmeros) N (longitud) Entrada Arreglo PQ Arreglo SQ Salida (N +1 nmeros) Arreglo MENSUAL Planilla

Suponiendo que por conveniencia la longitud N de todos los arreglos es 3 se plantea lo siguiente: El elemento i-simo del arreglo mensual resulta de sumar las quincenas respectivas

______________________________________________________________________ 266

PQ 1 2 3 3000 4000 5000 1 + 2 3

SQ 1000 2000 3000 1 = 2

MENSUAL 4000 6000 3000+1000=4000

3 8000 Planilla: 18000


PQ(1) + SQ(1) PQ(2) + SQ(2) PQ(3) + SQ(3)

Para calcular MENSUAL(1)


MENSUAL(2) MENSUAL(3)

4000 = 3000 + 1000 6000 = 4000 + 2000 8000 = 5000 + 3000

Observa que en cada frmula el ndice es el mismo, as generalizando la frmula del i-simo elemento de Mensual es: MENSUAL(i) PQ(i) + SQ(i)

Esta es importante ya que es la que se escribir en el Rango del Bloque Para La planilla se calcula sumando todos los elementos del arreglo MENSUAL, sta variable es entonces un Acumulador Los arreglos PQ y SQ se pueden leer de dos maneras: a) Verticalmente: es decir leer todos los sueldos de la Primera Quincena y

posteriormente los de la Segunda se pueden leer en forma b) Paralela: es decir para cada empleado se pueden leer simultneamente sus

dos quincenas, en este ejemplo, se usar esta ltima. Inicio Lea N Planilla Para i 0.0 1, N haga escriba Empleado escriba i lea PQ(i) lea SQ(i) MENSUAL(i) Planilla Fin para ______________________________________________________________________ 267 _ _ PQ(i) + SQ(i) Para el Empleado 1 se leern las 2 quincenas Empleado 2

Planilla + mensual (I)

Escriba Empleado Para i 1,n haga Escriba i, Fin para Escriba Planilla Lps. Escriba planilla Final

Mensualidad

, Mensual (i)

El lector debe elaborar la prueba de escritorio con los siguientes datos: PRUEBA DE ESCRITORIO Datos: 3, 3000, 1000, 4000, 2000, 5000, 3000 Memoria PQ 1 2 3 1 2 3 SQ 1 2 3 MENSUAL N Planilla I

Salida

Empleado

Mensualidad

El lector deber encontrar el empleado que obtuvo el menor sueldo y cual es su Nmero de empleado (que coincide con el ndice), ver Ejemplo 6.14

Ejemplo 6.16 (Arreglos Paralelos. Porcentajes de aportacin)


Una sociedad annima tiene m socios. Cada socio ha hecho una aportacin de C lempiras. Cul es el porcentaje de participacin de cada socio, PORC?

______________________________________________________________________ 268

ESTRATEGIA (M + 1 nmeros) Entrada N (No. De Socios) Arreglo C Salida (M nmeros) Arreglo Porc (no necesariamente como arreglo)

Para calcular el porcentaje de aportacin se debe dividir cada C(i) entre el total de las aportaciones, este total se obtiene sumando todos los elementos del arreglo, de tal manera que primero se debe calcular este total, para luego proceder a dividir cada C(i) entre total. Vemos aqu la utilidad de conservar el valor de las aportaciones, pues el arreglo C se necesita utilizar en dos momentos, primero para calcular la suma y posteriormente para calcular el porcentaje

Para determinar el elemento i-simo del arreglo Porc, usaremos un ejemplo de escritorio C 1 2 3 400 1000 600 1 2 3 Porc

Total: 2000 Los Porcentajes de aportacin son: Porc(1) Porc(2) Porc(3) (400 / 2000) * 100=20 % (1000/ 2000) * 100=50 % (600 / 2000) * 100=30 % Porc (1) Porc (2) Porc (3) C(1) / total *100 C(2) / total *100 C(3) / total *100

Observa que para cada aportante el ndice de Porc es el mismo que el de C, entonces la frmula del i-simo trmino ser entonces: inicio Total lea M para i 0 1, M haga Porc(i) C(i) / total *100

lea C (i) Total Total + C (i) fin para ______________________________________________________________________ 269

escriba Socio para j 1, m haga Porc (j)

Porcentaje de aportacin

C (j) / Total *100

escriba Porc(j) fin para final Se deja al lector realizar la prueba de escritorio con los siguientes datos: PRUEBA DE ESCRITORIO Datos 3, 400, 1000, 600 C 400 1000 600 Porc 1 2 3 i Total j

1 2 3

Salida Socio Porcentaje de aportacion

En ocasiones el ndice de los elementos de un arreglo puede ser un contador, a continuacin un ejemplo para ilustrar estos casos.

Ejemplo 6.17 (Arreglos, Contadores como ndices de un Arreglo)


Se dan a leer un arreglo E de nmeros enteros positivos de longitud 5, se desea formar el arreglo PAR con los nmeros pares que contenga ste.
ESTRATEGIA

Salida

Arreglo PAR

Entrada

(5 nmeros) Arreglo E

______________________________________________________________________ 270

La longitud del Arreglo E es conocida, la del arreglo PAR no. Se recomienda realizar un ejemplo de escritorio ya que esto siempre es de utilidad.

1 2 3 4 5

E 3 4 6 7 10

1 2 3

PAR 4 6 10

Observacin 6.4.2: Un nmero es par cuando al dividirlo entre 2 el residuo es cero, si trabajamos en aritmtica entera, todos los lenguajes de programacin tienen instrucciones(ejemplo rem) que nos devuelven los residuos de divisiones as: 19 rem 2 devuelve el residuo de dividir 19 entre 2: 1 4 rem 2 la divisin es exacta el residuo es 0, por tanto es par.

Como se indic en la Observacin 6.4.2 se utilizar la instruccin rem Si E(i) rem 2 = 0 el nmero ser par y lo contaremos como tal, nuestra variable CP ser el contador de nmeros pares

Para genera los ndices requeridos para el arreglo PAR utilizaremos el contador CP, de tal manera que no podremos saber de antemano la longitud de este arreglo. Inicio Cp Para i

0 1, 5 haga si E(i) rem 2 = 0 entonces Cp Cp +1 E(i)

Par(cp) Fin si Fin para

Escriba Arreglo de numeros pares Para k 1, cp haga Escriba Par(k) Fin para Final Se deja al lector realizar la prueba de escritorio con los siguientes datos

______________________________________________________________________ 271

PRUEBA DE ESCRITORIO

Datos 3, 4, 6, 7, 10 Memoria: 1 2 3 4 5 E 3 4 6 7 10 1 2 3 PAR 4 6 10 Cp i k Salida:

6.4.3

Arreglos y subalgoritmos

En varias ocasiones se pueden utilizar subalgoritmos en operaciones que requieren el uso de arreglos, a continuacin se presentan maneras diversas de realizar dichas operaciones mediante el desarrollo de un ejercicio de tres maneras diferentes. .

Ejemplo 6.18 (Arreglos paralelos, Subalgoritmos i-simos, Pagos quincenales, planilla) Ver ejemplo 6.15, pg.266-267) El sistema de pago para los N empleados de la empresa PAGABIEN es quincenal, se
guardan los pagos de la Primer quincena y de la segunda quincena en dos 2 arreglos llamados PQ y SQ respectivamente. Disear un programa que lea los dos arreglos, se trabaje con ambos arreglos en forma paralela, y se calcule el sueldo MENSUAL

devengado por cada uno de los empleados, as como tambin el total de la planilla Solucin: El lector debe revisar detalladamente el desarrollo del EJEMPLO 6.15, solamente se harn modificaciones que consistirn en dividir el programa en subalgoritmos. Los subalgoritmos a utilizar sern los siguientes: a) LECTURA Paralela de los elementos i-simos de los dos arreglos PQ y SQ. Clculo de la mensualidad de cada empleado y acumulacin de sta para totalizar la planilla. c) REPORTE: Impresin de la mensualidad de cada empleado y de la planilla.

b) MENSUALIDADES_PLANILLA:

______________________________________________________________________ 272

Como es conocido el Nmero de empleados se utilizar el Bloque Para Los subalgoritmos LECTURA y MENSUALIDADES_PLANILLA se invocar en el rango del Bloque Para, al finalizar ste, se invocara al subalgoritmo REPORTE, pues se requiere haber calculado y acumulado todas las mensualidades de los empleados.

Los subalgoritmos se desarrollarn siguiendo la misma lgica mostrada en el Ejemplo 15.

Inicio (Lectura) escriba Empleado escriba i lea PQ(i) lea SQ(i) final Inicio (Mensualidad_planilla) MENSUAL(i) Planilla Final Inicio(Reporte) Escriba Empleado Para i 1,n haga Escriba i, Fin para Escriba Planilla Lps. Escriba planilla Final Inicio (Principal) Lea N Planilla Para i 0.0 1, N haga LECTURA MENSUALIDAD_PLANILLA Fin para REPORTE final ______________________________________________________________________ 273 ,Mensual (i) Mensualidad PQ(i) + SQ(i)

Planilla + mensual (I)

Ejemplo 6.19 (Arreglos paralelos, Subalgoritmos completos, Pagos quincenales, planilla)


Variante de los Ejemplos 6.15 (pg.267) y 6.18(pg.273) El sistema de pago para los N empleados de la empresa PAGABIEN es quincenal, se guardan los pagos de la Primer quincena y de la segunda quincena en dos 2 arreglos llamados PQ y SQ respectivamente. Disear un programa que lea los dos arreglos, se trabaje con ambos arreglos en forma paralela, y se calcule el sueldo MENSUAL

devengado por cada uno de los empleados, as como tambin el total de la planilla. Adems se deber indicar el mayor sueldo y a que empleado corresponde, considerando que el codigo de ste coincide con el ndice respectivo. Se solicita que cada subalgoritmo utilizado realice una tarea especfica completa, y que sea un subalgoritmo completo es decir que procese a los N empleados. Solucin: Se le solicita al lector el estudio detallado de los ejemplos anteriormente citados. Se aplicarn algunas variantes, aprovechando el hecho de que los datos ledos de las quincenas quedan almacenados en la memoria para posteriores aplicaciones. .Los subalgoritmos a utilizar sern los siguientes: a) LECTURA: Paralela de dos arreglos PQ y SQ. b) MENSUALIDADES_PLANILLA: Clculo e impresin de todas las mensualidades y de la planilla. c) MAYOR: Determinacin del mayor sueldo y del empleado a quien corresponde. Considerando lo anterior, el algoritmo principal propuesto es: Inicio (Principal) LECTURA MENSUALIDADES_PLANILLA: MAYOR Final

A continuacin se presenta la definicin de cada uno de los subalgoritmos a utilizar: ______________________________________________________________________ 274

Inicio (Lectura) Lea N_empleados Para i 1, N haga escriba Empleado escriba i lea PQ(i) lea SQ(i) fin para final

Inicio(Reporte) Escriba Empleado Para i 1,n haga MENSUAL(i) Planilla Escriba i, Fin para Escriba Planilla Lps. Escriba planilla Final En el Ejemplo 6.14 (pg 265) se utiliza y explica este algoritmo. Inicio (Mayor) Mayor mensual(1) Posicin Para i 1 2, N haga Si mensual(i) > mayor Entonces Mayor x(i) Posicin i Finsi Fin para EscribaEl mayor sueldo es , mayor Escribay correponde al empleado No. : , posicion final ______________________________________________________________________ 275 PQ(i) + SQ(i) Mensualidad

Planilla + mensual (I) ,Mensual (i)

Se deber recordar que despus de definir cada subalgoritmo, se escribe el programa principal (ya previamente diseado), desde el cual se realizarn las invocaciones respectivas.

Ejemplo 6.20 (Arreglos paralelos, Menus, Pagos quincenales, planilla)


Variante de los Ejemplos 6.15 (pg. 267-268) y 6.19 (pg.274-275) El sistema de pago para los N empleados de la empresa PAGABIEN es quincenal, se guardan los pagos de la Primer quincena y de la segunda quincena en dos 2 arreglos llamados PQ y SQ respectivamente. Disear un programa que lea los dos arreglos, se trabaje con ambos arreglos en forma paralela, y se calcule el sueldo MENSUAL

devengado por cada uno de los empleados, as como tambin el total de la planilla. Adems se deber indicar el mayor sueldo y a que empleado corresponde, considerando que el codigo de ste coincide con el ndice respectivo.

El problema deber resolverse utilizando subalgoritmos y MENUS. Se presentar el siguiente men.

Menu Principal 1. Mensualidades y planilla 2. Mayor sueldo y a quien corresponde 3. Terminar el programa Teclee el nmero de su opcin: __

Figura Solucin:

Se le solicita al lector el estudio detallado de los ejemplos anteriormente citados Ejemplo 6.15 (pg. 267-268) y 6.19 (pg.274-275), en el Ejemplo 6.19 (pg.274-275), ya se

disearon los subalgoritmos a utilizar, as que solamente se enlistarn.

______________________________________________________________________ 276

a) LECTURA b) MENSUALIDADES_PLANILLA:

Paralela de dos arreglos PQ y SQ. Clculo e impresin de todas las

mensualidades y de la planilla. c) MAYOR: Determinacin del mayor sueldo y del empleado a quien corresponde Siempre con fines didcticos y de acuerdo a lo mostrado en la seccin 6.2 de este libro, se plantea el siguiente algoritmo:

Inicio (Principal) LECTURA Repita Pantalla_Menu Caso opcion 1: 2: MENSUALIDADES_PLANILLA: MAYOR

Sino : nulo Fin caso Hasta que opcion = 3 final

Solamente falta definir el subalgoritmo Pantalla_Menu de la siguiente manera: Inicio (Pantalla_Menu) Escriba Menu pricipal

Escriba 1.- Mensualidades y planilla. Escriba 2.- Mayor sueldo y a quien corresponde. Escriba. 3.- Terminar el programa. Escriba Escriba. Teclee su opcion: Lea opcion Final

______________________________________________________________________ 277

Este ejemplo tiene limitaciones, las lecturas se tienen que realizar antes de proceder a otras opciones, adems no es posible escoger la opcin 2 sin antes .haber ejecutado la opcin 1, aun as se escogi este ejemplo con fines didcticos y considerando que se pueden realizar validaciones del mismo.

EJERCICIOS 6.5 1.Disear un algoritmo para la siguiente situacin: En la ferretera Clavo de oro cuentan con 10 artculos estrella de los cuales se desea saber su inventario en Lps y el inventario total de la ferretera, para ello se cuenta con la siguiente informacin: COD UNIDADES PRECIO_U Arreglo de codigos de los productos Arreglo de Unidades por producto Arreglo de los precios unitarios por producto

INV_PROD INVENTARIO 2.-

Se deber crear un arreglo de inventario por producto Lps Inventario total, este es un nmero

Se tiene un arreglo de tamao N cuyos elementos son ceros y unos. Elabore el seudocdigo para que coloque los ceros primero, y los unos despus.

3.-

Ejercicios sobre Arreglos en el Apndice D (pg.305-306) de este libro, incluyendo el ejercicio No.16 pues se requieren subalgoritmos con Mens.

4.-

Se necesita procesar las calificaciones de un grupo de N estudiantes para lo cual se desea un programa que haga lo siguiente. a. Utilice un subprograma "LECTUDATOS" para leer los nombres y los promedios de los estudiantes en 2 arreglos paralelos. b. Determine por medio de un subprograma cuales fueron los estudiantes con mayor promedio y menor promedio respectivamente. c. Imprima por medio del subprograma IMPRESION los nombres y promedios de los estudiantes con excelencia acadmica (promedio mayor o igual que 90). NOTA: Utilice mens y arreglos.

______________________________________________________________________ 278

APENDICE A
I. Escribir el Anlisis y el desglose de los programas que resuelven los siguientes problemas. Realice la Prueba de Escritorio respectiva.

ESTRUCTURAS SECUENCIALES 1. Escriba un programa que pida al usuario que introduzca dos nmeros, que imprima la suma, el producto, la diferencia y el cociente de ambos nmeros. 2. Escriba un programa que acepte como entrada el radio de un crculo e imprima su dimetro, circunferencia y su rea. Emplee el valor constante 3.14159 para . 3. Escriba un programa para calcular la distancia entre dos puntos en el plano. Dados P( X1,Y1), Q(X2,Y2), la distancia entre P y Q es: Distancia =

( x 2 x1) 2 + ( y 2 y1) 2

4. Escriba un programa que acepte como entrada el numero de horas trabajadas a la semana por un empleado, y el pago por hora. Debe calcular el salario bruto, la deduccin de l RAPFOSOVI consistente en el 1.5% del salario bruto, la deduccin del sindicato que equivale a un 1% del sueldo bruto y el salario neto. 5. La Tierra no es una esfera; est ligeramente aplanada por los polos y es mas bien un esferoide aplanado. La frmula para su volumen es: Volumen =

4 2 a b 3
volumen.

Hacer un programa que acepte como entrada el valor de a y b y que calcule el

6. Un estudio emprico ha mostrado que la relacin entre volumen y presin para vapor sobrecalentado es: Presin = 1000v 1.4 donde v es el volumen. Hacer un programa para calcular la presin. 7. Hacer un programa donde se ingresan el largo y ancho en metros de un terreno rectangular, se calcula el rea y el valor del terreno sabiendo que cada metro cuadrado vale Lps. 560.00 8. Dado el costo de un artculo vendido y la cantidad de dinero entregada por el cliente, calcule e imprima el cambio que debe entregrsele al mismo. 9. 10. 11. Leer el peso de un hombre (en libras) e imprimirlo en Kilogramos y en Gramos. Nota: 1 lb = 0.454 Kg. , 1 lb = 454 gr. Los surtidores de una gasolinera registran lo que surten en galones, pero el precio de la gasolina est fijado en litros. Calcular e imprimir lo que hay que cobrarle al cliente. Se emplean varios mtodos para depreciar bienes de capital, uno de ellos es el mtodo de Balance Disminuido. El valor del artculo al final del ao (n) es: Valor = vo(1 r ) n donde vo es el valor inicial , r es la tasa de depreciacin y n el ao. Haga un programa para calcular dicho valor ingresando vo, n y r. Una persona desea determinar cuanto tiene que gastar en un viaje de cierta cantidad de kilmetros, considerando que su vehculo gasta un nmero dado de kilmetros/galn. El precio

12.

__________________________________________________________________ 279

de la gasolina es de L. 45.00. Se leer el nmero de kilmetros a recorrer y el nmero de kilmetros que recorre el vehculo por galn. Nota: verificar que las unidades de sus frmulas sean congruentes. 13. La oficina de admisiones de un instituto tecnolgico, desea calcular cuanto tiene que pagar un estudiante anualmente si el precio de la matrcula es de L. 400.00, el precio por cada asignatura es de L. 150.00, el costo por uso de laboratorio es de un 15% del total de costo por asignaturas. El costo mensual por uso de materiales (10 meses) esta dado como un 40% del triple de la edad del estudiante. Un empresario quiere determinar en cuanto tiempo puede entregar sus productos desde Tegucigalpa a San Pedro Sula, y desde Tegucigalpa a La Ceiba, si ha fijado como regla que sus conductores manejen a una velocidad de 80 km./hora.

14.

ESTRUCTURAS DE DECISION 15. La densidad de una sustancia esta dada por la frmula d = m/v, en donde m es la masa y v el volumen. Si se proporciona la masa y el volumen determinar si la sustancia se hundir o flotar en el agua (e imprimir el mensaje correspondiente). La sustancia se hundir si la densidad es mayor que uno. Dado como dato el sueldo y el nombre de un trabajador, aplicarle un aumento del 15% si su sueldo es inferior a L. 1000.00 y 12 % en caso contrario. Imprimir el nombre y el nuevo sueldo del trabajador. Se dan como datos el nombre y 5 calificaciones de un alumno, debe imprimirse el nombre, el promedio y la palabra APROBADO si el alumno tiene promedio mayor o igual de 60 y la expresin NO APROBADO en caso contrario. Determinar e imprimir si un nmero es positivo, negativo o cero. Calcular el precio del billete ida y vuelta en ferrocarril, conociendo la distancia del viaje de ida y el tiempo de estancia. Se sabe adems que si el nmero de das de estancia es superior a 7 das y la distancia total (ida y vuelta) es superior a 800 Km., el billete tiene una reduccin del 30%. El precio por kilmetro es de L. 0.17. El costo por da de estancia es de Lps 900.00 Calcular el salario semanal de los empleados de una empresa, sabiendo que dicho salario se calcula en base a las horas trabajadas durante la semana y de acuerdo a un precio por hora trabajada especificado, si las horas trabajadas se pasan de 40 horas semanales, estas se consideran como extraordinaras y se pagan a razn de 1.5 veces la hora ordinaria. Dados los valores de p, q, determine si los mismos satisfacen la siguiente expresin: p + q - 2 * p < 680

16.

17.

18. 19.

20.

21.

ESTRUCTURAS DE REPETICION 22. 23. Elaborar el desglose repetitivo para los ejercicios de la primera seccin de estructuras secuenciales indicados: a) 4 b) 8 c) 9 d) 10 Utilizar centinelas apropiados. Elaborar el desglose repetitivo para los ejercicios de la seccin de estructuras de decisin indicados: a) 16 b) 17 c) 20 Utilizar centinelas apropiados.

__________________________________________________________________ 280

24.

Se desea elaborar un programa para calcular la nota final de cada uno de los estudiantes matriculados en un curso de programacin I. Durante el curso se dan tres exmenes ponderados a 15, 20 y 25, un acumulativo que consta de tres partes: un trabajo de investigacin de 10%, tareas de 10 % y un proyecto final de 20%. Si se proporcionan al computador estos datos en base a 100 puntos, calcular la nota final de cada alumno, Utilizar como centinela Primer examen igual a cero. A continuacin se presenta la seudocodificacin para algunos problemas de esta gua con el objetivo de ilustrar el estilo adoptado en clase, adems se solicita realizar la prueba escritorio con los datos indicados: 25. Seudo cdigo para problema 2 de estructuras secuenciales Inicio lea n1 lea n2 suman1+n2 restan1-n2 multn1*n2 escriba suma escriba resta escriba mult final datos1: 3, 5 datos2: -1, 10

II

26.

Seudo cdigo para problema 16 de Estructuras de Decisin Inicio Lea sueldo Lea nombre Si sueldo <1000 entonces aumentosueldo * 0.15 Sino aumentosueldo * 0.12 Fin si Nvo_sueldosueldo + aumento escriba Nombre escriba Nvo_sueldo final 27. Se presenta el seudocdigo para problema 23 que es el ejercicio 16 hecho repetitivo de Estructuras de Repeticin y se le solicita que realice la prueba de escritorio con los siguientes datos: datos1: 800, Jose datos2: 2000, Pedro

Las decisiones contienen: si entonces sino fin si

__________________________________________________________________ 281

Inicio

DATOS:800, Jose, 2000, Pedro , 3500, Marcos, 0, 5000, Juan lea sueldo mientras sueldo 0 haga lea nombre si sueldo < 1000 entonces aumentosueldo*0.15 sino aumentosueldo*0.12 fin-si Nvo_sueldosueldo + aumento escriba Nombre escriba Nvo_sueldo lea sueldo fin-mientras

final

La estructura de repeticin contiene mientras C haga fin mientras al final

28.

Elaborar la prueba de escritorio con los siguientes DATOS: 1,10,3,1,2,5,-99,5,0 inicio lea tipo Mientras tipo haga lea dias si tipo=1 entonces Recargo 10.00* dias Sino Si tipo=2 entonces Recargo 15.0 * dias Sino Recargo 20.0 * dias Fin si Fin si si dias <= 3 entonces adicional 0 sino Adicional Recargo * 0.15 Fin si Total Recargo + Adicional Escriba El total a pagar es ,Total lea tipo La solucin est al final de este Apndice fin mientras escriba Fin de dia final

__________________________________________________________________ 282

29. Prueba de escritorio con los siguientes Inicio

DATOS: 1,3,6,2,2,1,1,4,0,9

Lea NUM SUBTOT 0 Mientras NUM 0 haga Lea TIPO TOTAL NUM+SUBTOTAL si TIPO = 1 entonces SUBTOT NUM*5 escriba Es clase A sino si tipo= 2 entonces SUBTOT NUM*10 escriba Es clase B sino si tipo=3 entonces SUBTOT NUM*15 escriba Es clase C sino SUBTOT NUM*20 Escriba Es clase D Fin si Fin si Fin si escriba NUM escriba TOTAL La solucin est al final de este Apndice lea NUM fin mientras escriba Fin de Programa final III. 30.IV. Elaborar los algoritmos de los ejercicios : a) 34, 7, 10 b) 15, 17, 20 c) 23, 24

Para los siguientes ejercicios: Elabore un Plan de anlisis resumido (Resumen del anlisis completo) , el pseudocdigo NOlae y prueba de escritorio con datos convenientes.

ESTRUCTURAS SECUENCIALES 31. En las olimpiadas, el tiempo que realizan los participantes en la competencia de velocidad en pista, se mide en minutos, segundos y centsimas. Por otra parte, la distancia que recorren, se expresa en metros. Calcule la velocidad de los participantes, en Kilmetros por hora. El nmero de sonidos emitidos por un grillo en un minuto (N), es una funcin de la temperatura. Como resultado de esto, es posible determinar el nivel de la temperatura haciendo uso de un grillito como termmetro. La Frmula para la funcin es: T = N / 4 + 40 Dado N calcule la temperatura aproximada.

32.

__________________________________________________________________ 283

33.

Una empresa desea calcular la comisin de ventas para cada uno de sus tres vendedores, el porcentaje de comisiones es de 10%, 12% y 15% respectivamente. Si se proporcionan las ventas realizadas por cada uno, determinar cuanto le pago la empresa a cada vendedor por concepto de comisiones y el total de comisiones pagado por la empresa. Una empresa desea obtener el 40% de ganancia sobre el costo en la venta de sus productos. Dado el costo unitario y el nmero de unidades solicitadas de un determinado producto, determinar el precio de venta unitario de dicho producto y el total a pagar por las unidades solicitadas. En una agencia de alquiler de automviles, al proporcionarle al computador el nmero de das que fue alquilado el automvil y l numero de kilmetros recorridos; calcular el total a pagar por el cliente si por cada kilmetro se pagan L. 0.75, L. 400.00 por cada da, 10% de impuesto y adems se paga L. 800.00 por seguro.

34.

35.

ESTRUCTURAS DE DECISION: 36. Dados la categora y el sueldo de un trabajador, calcule el aumento correspondiente teniendo en cuenta la siguiente tabla. Imprima la categora del trabajador y su nuevo sueldo. CATEGORIA 1 2 3 4 37. AUMENTO 15% 10 8 7

Un grupo de personas dedicadas al negocio de lavado de automviles, necesita un programa para que determine cuanto tiene que pagar cada cliente de acuerdo a la siguiente tabla de servicios: TIPO DE SERVICIO 1. LAVADO EXTERIOR 2. - LAVADO INTERIOR 3. - LAVADO EXTERIOR E INTERIOR 4. - LAVADO DE MOTOR PRECIO Lps. 25.00 Lps. 30.00 Lps. 35.00 Lps. 40.00

Adems de los servicios, se ofrece un descuento del 7% si se llevan dos o ms automviles. Se proporcionara al computador, el Tipo de servicio y No. de automviles, calcular el total a pagar por el cliente. 38. Una distribuidora de artculos vende al por mayor y tiene tres tipos de tarifas: TARIFA A:Si se compran de 1 a 99 artculos, el precio de cada uno es de L. 150.00 TARIFA B:Si se compran de 100 a 499 artculos, el precio de cada uno es de L. 145.00 TARIFA C: Si son 500 o mas artculos, el precio de cada uno es de L. 140.00

Se lee el nmero de artculos (no la tarifa) a comprar y se desea imprimir el total de la venta, el 12% de impuesto sobre ventas y el total a pagar por el cliente.

__________________________________________________________________ 284

39.

Se leer el sueldo por hora y horas trabajadas por semana por un empleado, y se necesita conocer la cuota de la deduccin y salario neto. La deduccin es calculada de acuerdo al salario bruto mensual. Si el salario bruto es menor de L. 600.00 no existe deduccin. Si el salario bruto mensual esta entre L. 600.00 y L. 1000.00 la deduccin es fija de L. 25.00; Sin embargo, si el salario es mayor a los L. 1000.00 la deduccin es de un 7.5% del salario. En una tienda efectan un descuento a los clientes dependiendo del monto de la compra. El descuento se efecta con base al siguiente criterio:

40.

Si el monto es menor a L.1000.00 no hay descuento Si el monto est comprendido entre L. 1000.00 y L. 3000.00 inclusive, descuento del 5% Si el monto est comprendido entre L. 2000.00 y L. 8000.00 inclusive, descuento del 11% Si el monto es mayor a L. 8000.00, descuento del 12% Dado el monto de la compra de un cliente, determinar lo que debe pagar. Calcular el valor de la funcin F de acuerdo a las siguientes condiciones: f= 10 + el doble de x/360 f= 25*x/3 + triple de x f=x + 3*x+100 si x <= 100 si 100 < x <= 350 si x > 350

41.

42.

En una cafetera se venden bsicamente tres tipos de comida: 1 - desayuno, 2 - almuerzo, 3 cena con precios de L. 22.00, L 30.00 y L. 40.00 por persona respectivamente. Adems se ofrece una jarra de refresco gratis si el grupo es de mas de tres personas. Si se proporciona el cdigo de la comida (1, 2 o 3) y el nmero de personas en el grupo, determinar el total a pagar por el grupo, e imprimir el mensaje "Jarra Gratis" cuando sea necesario. Una tienda que se dedica a la venta de electrodomsticos realiza la mayora de las ventas al crdito. Debido a la tardanza con que sus clientes realizan los pagos, la tienda ha decidido cobrar un 2% de inters diario por mora por 5 das o menos de retraso, y 5% diario por mas de 5 das. Si se proporciona al computador el monto del prstamo y los das de retraso calcular el cargo por mora. En un cierto pas el impuesto que se debe pagar por los artculos que se calcula mediante la siguiente regla: los primeros Lps.20 no causan impuesto, los siguientes Lps. 20 tienen el 30% de impuesto y el resto el 40% de impuesto, pero si el costo del producto es mayor a Lps. 500, entonces en lugar de 40% se cobra el 50%. Disee un programa que lea el costo bsico de un artculo y calcule su precio total. Precio total =precio bsico + impuesto

43.

44.

45.

Un contador necesita un programa para que le calcule el gasto por depreciacin anual de ierto equipo de acuerdo a la siguiente tabla de depreciacin: TIPO DE EQUIPO 1 2 3 4 DEPRECIACION 4 Aos 5 Aos 7 Aos 10 Aos

__________________________________________________________________ 285

La depreciacin anual se calculara dividiendo el valor del equipo entre los aos que este se deprecia segn la tabla anterior. Se proporcionar al computador el valor del equipo, calcular la depreciacin anual. NOTA: En los ejercicios en donde hay clasificaciones, se recomienda utilizar Arboles de decisin con Decisiones Anidadas ya que en el caso de clasificar variables discretas (valores como 1, 2, 3, etc.) facilita la introduccin del bloque caso en el segundo parcial, ocasionalmente puede utilizar decisiones abreviadas concatenadas. ESTRUCTURAS DE REPETICION 46. Se desea elaborar un programa para calcular la nota final de cada uno de los estudiantes matriculados en un curso de programacin I. Durante el curso se dan tres exmenes ponderados a 15, 20 y 25, un acumulativo que consta de tres partes: un trabajo de investigacin de 10%, tareas de 10 % y un proyecto final de 20%. Si se proporcionan al computador estos datos en base a 100 puntos, calcular la nota final de cada alumno. 47. Calcule al aumento de sueldo para un grupo de empleados de una empresa, teniendo en cuenta los siguientes criterios: Si el sueldo es inferior a L. 1000.00 Si el sueldo es mayor a L. 2500.00 Se debe imprimir el nombre y el nuevo sueldo del trabajador. 48. 49. Hacer repetitivos los ejercicios: a) 32 b) 33 c) 34 d) 37 e) 40 f) 42 : : Aumento 15% Aumento 8%

Si el sueldo est comprendido entre L. 1000.00 y L. 2,500.00 inclusive : Aumento 10%

En un parque de juegos infantiles la entrada para nios mayores de 10 aos es de L. 8.00 y L. 5.00 para menores de 10. Si el grupo incluye 2 o ms nios, el precio por cada uno es de L. 6.50. Ya que la permanencia en el parque requiere de la presencia de adultos, se le cobrara L. 10.00 por cada adulto. Si se proporciona al computador el nero de nios que entran, la edad en caso que sea solamente uno y el nmero de adultos, determinar el total a pagar por el grupo. La Compaa de luz Del Centro desea imprimir los recibos de cobro de los cuentahabientes, en el ltimo perodo. Por cada cliente se ingresa su nombre, direccin, registro inicial y registro final. El cobro se efecta en base a la siguiente tabla: CONSUMO 140 KVH o menos Los siguientes 170 KVH Exceso sobre 310 KVH TARIFA Lps.. 3.20 Lps. 0.15 por KVH Lps.0.10 por KVH

50.

51.

Construya un programa que dados como datos el modelo de un vehculo y su precio, determine el valor final que debe pagar el comprador. El concesionario esta haciendo descuentos teniendo en cuenta el modelo, con base en la siguiente tabla:

__________________________________________________________________ 286

MODELO Cutlass Cavalier Chevy Century

DESCUENTO 8% 5% 6% 9%

52.

En la Universidad se necesita obtener una lista de los alumnos candidatos a la facultad de Economa, Administracin, Contabilidad e Ingeniera en Computacin. Las condiciones para ser seleccionado como presunto candidato para entrar a la facultad, varan segn la carrera y se presentan a continuacin:
Condiciones para facultad de Economa Condiciones para facultad de Administracin Condiciones para facultad de Contabilidad Condiciones para facultad de Computacin Semestre >= 5 y promedio >= 8.5 Semestre>= 6 y promedio >=8.8 Semestre >= 6 y promedio >=8.5 Semestre >= 6 y promedio >=8.8

Para cada uno de los estudiantes de la universidad, se ingresa su nmero de cuenta, carrera en que est inscrito, semestre que cursa y promedio general hasta el momento, imprimir el mensaje correspondiente (Seleccionado como candidato o No fue seleccionado). 53. Una compaa que se dedica al envo de paquetes, cobra L. 1.80 mas una cantidad basada en el paquete de acuerdo a la siguiente tabla: PESO EN LIBRAS 25 O MENOS 45 O MENOS MAS DE 45 PRECIO POR LIBRA L. 0.15 L. 0.25 L. 0.35

Hay un cargo adicional de L. 2.00 si el volumen del paquete excede los 15 pies cbicos. Si se proporciona el volumen y el peso determinar el total a pagar por el cliente. (Si su profesor lo solicita, imprima la cantidad de paquetes que se enviaron dentro de los rangos descritos en la tabla, y el total de paquetes con cargo adicional). 54. Una fbrica de automviles tiene varios empleados trabajando en dos turnos: maana(0) y tarde(1). Considerando al nmero de horas semanales trabajadas, se desea calcular el sueldo semanal devengado por cada empleado si se sabe que todos trabajan 5 das a la semana y bajo las siguientes tarifas L. 60.00 por hora: turno de la maana L. 80.00 por hora: turno de la tarde Adems si se pasan de 40 horas semanales, las horas se consideran extraordinarias y se paga a razn de: 2 veces la hora ordinaria para el turno de la maana 3 veces la hora ordinaria para el turno de la tarde (Si su profesor lo solicita, imprimir: total de empleados en cada una de las jornadas) 55. Leer varios nmeros enteros no negativos, calcular el mayor y el menor de ellos.

__________________________________________________________________ 287

SOLUCION DE PROBLEMAS SELECTOS No. 28 Memoria: TIPO 1 3 2 -99 Salida: El total a pagar es 115 El total a pagar es 20 El total a pagar es 86.25 Fin del dia DIAS 10 1 5 RECARGO 100 20 75 ADICIONAL 15 0 11.25 TOTAL 115 20 86.25

Por razones de legibilidad, no se tacharon valores en la Memoria. Solamente quedaran sin tachar, es decir como valores vigentes las ltimas filas de cada casilla que estn en negrillas

No. 29 Memoria NUM 1 6 2 1 0 TIPO 3 2 1 4 SUBTOTAL 0 15 60 10 20 TOTAL 1 21 62 11 Salida:

Es Clase C 1 1 Es Clase B 6 21 Es Clase A 2 62 Es Clase D 1 11

__________________________________________________________________ 288

APENDICE B
I. 1. Elaborar un resumen de anlisis y algoritmo en NOLAE para cada uno de los siguientes ejercicios: Realizar el escrutinio de una eleccin entre dos candidatos por un nmero impar de votantes, con todos los votos vlidos. Publicar el candidato ganador y cuantos votos obtuvo cada uno de ellos. Cdigo del candidato A= 0, cdigo del candidato B=1. Marca de fin de datos = 9. En la compaa Paga Bien solicitan un programa para calcular el nuevo sueldo de sus empleados, en dicho programa se da a leer el sueldo de cada trabajador y se le aplica un aumento del 20% si su sueldo es inferior a Lps. 4000.00 y 15% en caso contrario, se deber publicar el nuevo sueldo y al final se deber indicar lo siguiente: A cuantos empleados se les aumento el 20% y a cuantos el 15% Cuantos empleados hay en total. El total de la nueva Planilla. Se desea elaborar un programa para calcular la nota final para cada uno de los estudiantes matriculados en la clase de Programacin I. Durante el curso se dan tres exmenes tericos ponderados en 15%, 20% y 25% , y los acumulativos prcticos respectivos incluyen : trabajos de investigacin, tareas y proyectos ponderados en : 10%, 15% y 15%. Si se proporcionan las calificaciones todas en base a 100 puntos, calcular e imprimir la nota final de cada alumno. Determinar cuantos estudiantes aprobaron y cuantos reprobaron la clase. Brindar adems las siguientes estadsticas: Total de alumnos con nota entre 0 y 40 Total de alumnos con nota entre 41 y 59 Total de alumnos con nota entre 60 y 80 Total de alumnos con nota entre 80 y 100 El promedio general de la clase Nota: Resolver este ejercicio considerando las notas como nmeros reales. Se desea elaborar un programa para calcular la nota final para cada uno de los N estudiantes matriculados en la clase de Programacin I. Durante el curso se dan tres exmenes tericos ponderados en 15%, 20% y 25% , y los acumulativos prcticos respectivos incluyen: trabajos de investigacin, tareas y proyectos ponderados en : 10%, 15% y 15%. Para aprobar la asignatura se debe aprobar separadamente la teora de la prctica es decir, se debe sacar una nota mayor o igual a 36% en los exmenes y en los acumulativos una mayor o igual a 24% , en el caso de no aprobar una de las dos aunque la suma de ambas sea superior a 60%, el alumno reprueba con 58%. Si se proporcionan las calificaciones todas en base a 100 puntos, calcular e imprimir la nota final de cada alumno, con el mensaje aprob o reprob correspondiente. Adems se solicita la siguiente informacin: Cuantos estudiantes aprobaron y cuantos reprobaron la clase. Nota promedio de los estudiantes que aprobaron el curso. Nota promedio de los estudiantes que reprobaron el curso.

2.

3.

4.

__________________________________________________________________ 289

5.

Dados la categora y el sueldo de varios empleados, calcule el aumento correspondiente teniendo en cuenta la siguiente tabla. Imprima la categora y el nuevo sueldo de cada empleado. CATEGORIA 1 2 3 4 AUMENTO % 15 10 8 7

Al final se desea un reporte en donde se indique: El total a pagar en aumentos de sueldo para cada categora Total de empleados en cada categora El sueldo promedio por categora Total pagado 6. Los dueos de el Carwash "CARRO LIMPIO", necesitan un programa que determine cuanto tiene que pagar cada cliente de acuerdo a la siguiente tabla de servicios: TIPO DE SERVICIO 1. LAVADO EXTERIOR 2. LAVADO INTERIOR 3.- LAVADO EXTERIOR E INTERIOR 4. LAVADO DE MOTOR Lps. 60.00 PRECIO Lps. 30.00 Lps. 40.00 Lps. 50.00

Adems si se llevan dos o ms automviles. se ofrece un descuento del 7% para todos los tipos de servicio. Se proporcionar al computador, el Tipo de servicio y No. de automviles, calcular el total a pagar por el cliente. Al final indique: 7. Total de automviles a los que se les brind cada uno de los servicios Ingreso por cada uno de los tipos de servicio brindados Ingreso total del negocio al final del da Total de clientes con descuento.

Una distribuidora de artculos "yy" vende al por mayor y tiene diferentes precios segn los volmenes de compra: Si se compran de 1 a 99 artculos, el precio de cada uno es de Lps. 150.00 Si se compran de 100 a 499 artculos, el precio de cada uno es de Lps. 145.00 Si son 500 o mas artculos, el precio de cada uno es de Lps. 140.00 Se lee el nmero de artculos a comprar y se desea imprimir el total de la venta, el 12% de Impuesto sobre ventas y el total a pagar por el cliente. Al final disee un reporte que Muestre: La cantidad de artculos vendidos en cada rango. Total de clientes atendidos. Ingreso total de la distribuidora al final del da.

__________________________________________________________________ 290

8.

Monto de la venta promedio por cliente.

La comercializadora El GLOBO vende al por mayor zapatos estilo "ZZ", manteniendo tres tipos de tarifa: TARIFA A: para mayoristas de la zona norte, el precio de cada par es de L. 220.00 TARIFA B: para mayoristas de la zona central, el precio de cada uno es de L. 210.00 TARIFA C: para mayoristas de la zona sur, el precio de cada uno es de L. 200.00 Se lee la tarifa y el nmero de artculos a comprar y se desea imprimir el total de la venta y el tipo de tarifa, el 12% de impuesto sobre ventas y el total a pagar por el cliente. Al final disee un reporte que muestre: 9. La cantidad de pares de zapatos vendidos en cada Tarifa Total de clientes atendidos Ingreso total de la comercializadora al final del da Monto de la venta promedio por cliente o lotes para

Un negocio de estacionamiento vehicular ha clasificado los espacios estacionar, de la siguiente manera: Tipo de Espacio 1. Fijo bajo Techo 2. Fijo sin Techo 3. Movible (detrs de otro vehculo) Disee un Algoritmo que haga lo siguiente: Precio de Pago / hora Lps. 20.00 Lps. 15.00 Lps. 10.00

Precio de Pago/da Lps. 100.00 Lps. 75.00 No Hay

a) De como entrada: El tipo de estacionamiento contratado El numero de horas de estacionamiento (< = 24 horas) y Un indicador para especificar si es por hora o por da. b) Calcule e imprima el pago de cada cliente por concepto de estacionamiento. c) Adems, al final del da se requiere la siguiente informacin: c.1) Ingreso total por cada tipo de estacionamiento c.2) El ingreso total del negocio. c.3) El total de clientes atendidos en el da. c.4) El tiempo promedio de estacionamiento por cliente. 10. En una Gasolinera que vende cuatro tipos de combustible a los precios mostrados en la siguiente tabla: COMBUSTIBLE Diesel (D) Regular (R) Suprema (S) Especial (E) PRECIO/GALON Lps. 25.00 Lps. 35.00 Lps. 40.00 Lps. 45.00

__________________________________________________________________ 291

Adems, si el cliente as lo desea, se da el servicio de lavado del automvil bajo las siguientes condiciones: El costo normal del lavado es de Lps. 40.00. Si la compra de combustible es mayor a los Lps. 400.00 el lavado del automvil gratis. Si el consumo de combustible es menor de Lps. 200.00 el costo del lavado es normal. Pero la compra en combustible esta entre Lps. 200.00 y Lps. 400.00 inclusive, cliente recibe una rebaja en el costo del lavado equivalente al 20 % sobre exceso a los Lps. 200.00. Disee un algoritmo para un programa que haga lo siguiente: es el el el

a) Se de como entrada el tipo de combustible ( D, R, S o E) y el numero de galones de combustible que compra el cliente. Adems se dar de entrada la respuesta del cliente, si desea o no el servicio de lavado. b) Para cada cliente calcule el costo del combustible, el costo del lavado del automvil si el cliente lo pidi y el valor total a pagar (suma de ambos costos). c) Imprima los valores anteriormente calculados. d) Adems, que al final del da brinde la siguiente informacin: d.1) El total del ingreso diario del negocio por concepto de venta de combustible, servicio de lavado y el ingreso total. d.2) II. Tambin, calcule e imprima el consumo promedio de combustible por cliente.

11.-- Realice la prueba de escritorio del siguiente algoritmo, en el cual se ha utilizado

BLOQUE CASO, Contadores y Acumuladores:


Inicio DATOS: 3, 5, N, 2, 1,E, 1, 10, N, 0, 3

Ing_1 0.0 , Ing_2 0.0 , Ing_3 0.0, Ing_total 0.0 c_per 0 escriba "Ingrese cdigo" lea cdigo Mientras cdigo 0 haga escriba "Ingrese numero de personas" lea nper escriba Ingrese tipo de cliente (N/E) : lea cliente c_per c_per + nper Caso cdigo 1: total Nper * 15 caso cliente 'N', `n : descuento total*0.05 'E', e : descuento total*0.07 sino: nulo fin caso total total-descuento Ing_1 ing_1 + total

__________________________________________________________________ 292

2: 3: sino fin caso

total nper*35 ing_2 ing_2 + total total nper*60 ing_3 ing_3 + total : Nulo

escriba "el total a pagar es ", total escriba "Ingrese siguiente codigo" lea codigo fin mientras ing_total ing_1 + ing_2 + ing_3 escriba "El numero de personas atendidas fue ", c_pe escriba "El ingreso por tipo 1 fue ", ing_1 escriba "El ingreso por tipo2 fue ", ing_2 escriba "El ingreso por tipo3 fue ", ing_3 escriba "El total de ingresos del dia fue ", ing_total Fin Nota: La solucin de este ejercicio est al final de este Apndice III. Codificar en un lenguaje de programacin, los ejercicios del Apndice A ) 25, 9, 10, 15, 26, 18, 20 12. b) 27, 28, 24, 36, 37 12.c) 42, 44, 53, 54, 48d), 48e), 48f) IV. 13.14. Elaborar un resumen de anlisis, adems un Programa en un Lenguaje de programacin para cada uno de los siguientes ejercicios: Calcular la nota media de N estudiantes En la distribuidora El Diamante, todos los vendedores tienen como sueldo base Lps. 5000.00, las comisiones ganadas son el 10% del monto total de las ventas realizadas. Disear un programa en el cual para cada empleado se lea su Numero de empleado y las ventas totales realizadas en el mes, el programa deber imprimir el Numero de empleado su sueldo mensual. Adems deber calcular: las comisiones y el sueldo promedio de estos Imprimir los nmeros del 1 al 100 sin proporcionar ninguna entrada. Determinar el mayor de 20 nmeros. Determinar el menor de n nmeros. Elaborar un programa para calcular el factorial de un nmero entero positivo. Ej. Factorial de 6, 6! = 1 * 2 * 3 * 4 * 5 * 6 = 720 a. Dado un nmero entero positivo, determinar el nmero de docenas contenidas en l.. Ejemplos: 32 2 docenas 48 4 docenas Dado un nmero entero positivo, determinar el nmero de dgitos que tiene e imprimir dgitos de derecha a izquierda o sea las unidades, decenas, centenas etc.. Ejemplos: 164 461 3 dgitos 23458 85432 5 dgitos

15. 16. 17. 18.

19.

__________________________________________________________________ 293

20.

En la venta de accesorios de computadoras e impresoras, venden cajas de Discos compactos, si la caja de 10 unidades cuesta Lps. 200 , y cada unidad de Cd cuesta Lps 25.00, cuanto deber pagar un cliente que desea N Discos compactos. Elaborar un programa que imprima las siguientes sucesiones: a) b) c) d) e) f) g) h) 1, 4, 7, 10, 13, -6, -3, 0, 3, 6, 9, 1, 5, 8, 12, 15, 19, 1/2, -1/4, 1/8, -1/16, 1!, 2!, 3!, 4!, 5!, 3 / 2! , 9 / 3!, 27 / 4!,... 0, 1, 1, 2, 3, 5, 8, 13 2/4, 3/9, 4/16 (50 trminos) ( n trminos) (25 trminos) (50 trminos) ( n trminos) (60 trminos) (80 trminos) (20 trminos)

21.

22.

Calcule el valor de S: a) b) c) d) S = 2 + 4 + 8 + 16 + S = -2 /1 + 4/2 6/4 + 8/7 10/11 + 12/ 16,... S= 2 + 5*3 + 8*4 + 11*5 + 14*6 + ... S =1! + 2! + 3! + 4! + 5!, ( n trminos) (10 trminos) (n trminos) (50 trminos)

V. 23.

Realizar la prueba de escritorio del siguiente programa en Ada 95 DATOS: 10

With Ada.Text_Io,Ada.Integer_Text_Io,Ada.Float_Text_Io; Use Ada.Text_Io,Ada.Integer_Text_Io,Ada.Float_Text_Io; Procedure Serie is C, Num, N, Den : Integer; Sum:float; Begin Num:=2; C:=1; Den:=1; Sum:=0.0; Put("Ingrese numero de terminos deseados: "); Get(N);skip_line; While C <= n loop Put(Num,0); Put("/"); Put(Den,0); New_line; Num:=num+2; Den:=den+num; Sum:=sum+float(num)/float(den); C:=C+1; End loop;

__________________________________________________________________ 294

New_line; Put("La suma total es : "); Put(Sum,0,2,0);new_line; End Serie; Nota: la solucin de este ejercicio est al final de este Apndice VI. 24. 25. Elaborar un resumen de anlisis y un Programa en un lenguaje de Programacin para cada uno de los siguientes ejercicios: Dada una lista de 200 nmeros enteros positivos entre 1 y 100, encuentre la suma. Una agencia de alquiler de autos desea un programa que le sirva de apoyo al empleado encargado de atencin al cliente. Para el uso del cliente, la empresa cuenta con la siguiente flota de autos: TIPO 1 2 3 4 4x4 Turismo pequeo Turismo grande Busito DESCRIPCION COSTO Lps. 400.00 200.00 300.00 600.00 CANTIDAD 5 10 6 2

El programa deber permitir alquilar autos a los clientes, verificando que stos se encuentren disponibles, aceptar las devoluciones de autos y volverlos a colocar como disponibles, listar los ingresos por tipo de auto y listar el nmero de veces que se ha alquilado cada tipo de auto. 26. En una cafetera se venden bsicamente tres tipos de comida: 1 - desayuno, 2 almuerzo, 3 - cena con precios de L. 22.00, L 30.00 y L. 40.00 por persona respectivamente. Adems se ofrece una jarra de refresco gratis si el grupo es de mas de tres personas. Si se proporciona el cdigo de la comida (1, 2 o 3) y el nmero de personas en el grupo, determinar el total a pagar por el grupo, e imprimir el mensaje "Jarra Gratis" cuando sea necesario. Indicar al final del da: El nmero de personas atendidas, el ingreso por cada tipo de comida, el total de Jarras Gratis dadas a los clientes y el Ingreso total del da 27. En una tienda de equipo de cmputo, EXCALIBUR S de RL, se utiliza una computadora para emitir la facturacin a los clientes. A la computadora se le da entrada al nombre del cliente, el cdigo del artculo y la cantidad de artculos que lleva y el precio unitario de cada artculo. Emita la factura incluyendo: Nombre del cliente, precio del artculo, subtotal, impuesto sobre ventas y total a pagar (emita una hiptesis). Para completar el problema anterior, se desea saber el ingreso total del da, as como el Total de impuesto sobre ventas del da. 28. Un aserradero ha decidido computarizar el rea de ventas, y desea que a partir de los datos de grueso, ancho y largo de la madera a comprar indique el nmero de pies tablares. La frmula es la siguiente: Pies ( Grueso * Ancho * Largo ) / 12

__________________________________________________________________ 295

Recuerde que una persona puede llevar madera de diferentes largos, gruesos y anchos. Si el precio del pie tablar es de Lps. 5.60, calcule las siguientes estadsticas: 29. El monto a pagar de cada cliente El total de pies tablares que lleva cada cliente El ingreso total al final del da El total de pies tablares vendidos al final del da El total de pies tablares vendidos al final del da de madera de 1" de grueso

Se deber hacer un programa para un supermercado que pregunte para cada cliente: el precio del artculo, la cantidad de artculos del mismo tipo que lleva y si al artculo se le aplica el impuesto o no. Adems deber permitir que se le indique cuando terminan los artculos de un cliente para ofrecer el total de la venta. El programa debe indicar el total de la venta del cliente y preguntar si se atender otro cliente. Adicionalmente se desea que tambin controle el corte de las cajas, por lo que debe ofrecer como salidas el total de ventas del da, y el total de ingresos por impuestos. Realizar la Prueba de escritorio del siguiente programa, en el cual se encuentran 2 WHILE dentro de otro WHILE

VII. 30.

With Ada.Text_Io, Ada.Integer_Text_Io; Use Ada.Text_Io, Ada.Integer_Text_Io; Procedure Letras is con_a,con_b,a,b,n:Integer; Begin N:=0; a:=3; b:=3; While n < 4 loop con_a:=a; While con_a /= 0 loop Put("a"); con_a:=con_a-1; End loop; con_b:=b; While con_b /= 0 loop Put("b"); con_b:=con_b-1; End loop; New_line; a:=a+1; b:=b+1; n:=n+1; End loop; End Letras; Nota: la solucin de este ejercicio est al final de este Apndice NOTA: En este momento el alumno estar en la capacidad de codificar en ADA y emplear correctamente, lo siguiente: CONST, PUT , PUT_LINE , GET , SKIP_LINE, Inicializacion de variables,

__________________________________________________________________ 296

IF C THEN ELSE END IF; WHILE C LOOP - END LOOP; CASE <VARIABLE> IS WHEN 1 => B1; WHEN 2 => B2; WHEN OTHERS=>B3; END CASE; CONVERSION DE TIPOS, FORMATOS DE SALIDA SOLUCION A PROBLEMAS SELECTOS Ejercicio II Memoria:
CODIGO NPER CLIENTE CPER TOTAL ING1 ING2 ING3 ING_TOTAL DESCUENTO

3 2 1

5 1 10

N E N

5 6 16

300 35 1500 1425

1425

35

300

1760

75

Salida en Pantalla El total a pagar es 300 Ingrese el codigo El total a pagar es 35 Ingrese el codigo El total a pagar es 1425 Ingrese el codigo El numero de personas atendidas fue 16 El ingreso por tipo 1 fue 1425 El ingreso por tipo2 fue 35

El ingreso por tipo3 fue 300


El total de ingresos del dia 176

Ejercicio V Memoria: N 10 C 1 2 3 4 5 6 7 8 9 10 NUM 2 4 6 8 10 12 14 16 18 20 DEN 1 5 11 19 29 41 55 71 89 109 SUM 0.0 0.80 1.35 1.77 2.11 2.40 2.66 2.88 3.09 3.27 3.44

__________________________________________________________________ 297

Salida en Pantalla Ingrese numero de terminos deseados: 2/1 4/5 6/11 8/19 10/29 12/41 14/55 16/71 18/89 20/109 La suma total es : 3.44

Ejercicio VII Memoria: CON_A 3 2 1 0 4 3 2 1 0 5 4 3 2 1 0 6 5 4 3 2 1 0 CON_B 3 2 1 0 4 3 2 1 0 5 4 3 2 1 0 6 5 4 3 2 1 0 A 3 4 5 6 7 B 3 4 5 6 7 N 0 1 2 3 4 Salida en Pantalla: aaabbb aaaabbbb aaaaabbbbb aaaaaabbbbbb

__________________________________________________________________ 298

APENDICE C
I. VARIANTES DE LA REPETICION Utilizando las diferentes estructuras de programacin repetitivas, elaborar los Algoritmos y Programas en Ada 95 (u otro lenguaje de programacin) para los ejercicios que a continuacin se describen. Ciclo Repita-Hasta 1.Leer varios nmeros y acumularlos hasta que el total de la suma de los mismos sea mayor a 200, se deber imprimir la cantidad de nmeros que se leyeron. 2.Calcular e imprimir el producto de 2 nmeros introducidos por teclado, esta operacin se har para varios nmeros en forma repetitiva hasta que el usuario decida salirse (Ciclo controlado por respuesta de usuario). Adems se deber imprimir cuantas multiplicaciones se efectuaron y cual fue el producto de la ultima. Imprimir los primeros 100 trminos de la serie Fibonachi 0,1,1,2,3,5,8,13,21..

3.-

Ciclo Para 4.Escriba la suma de los primeros N nmeros enteros pares 5.6.7.Escriba la suma de los primeros N nmeros enteros impares Escriba la suma que contenga N trminos de la siguiente sucesin S = 1-3/4+5/7-7/10+9/13-11/16..hasta N trminos. Imprimir los primeros 100 trminos de la serie Fibonachi , en la cual a partir de un 0 y un 1 se genera el siguiente nmero sumando los dos anteriores. 0,1,1,2,3,5,8,13,21.. Ciclo Mientras-Haga 8.Se lee una secuencia de nmeros positivos para hacer lo siguiente:

a) b)
c) 9.-

Calcular el nmero con mayor valor en la secuencia


Calcular el nmero con menor valor en la secuencia Calcular el promedio de la secuencia

Imprimir los primeros 100 trminos de la serie Fibonachi , en la cual a partir de un 0 y un 1 se genera el siguiente nmero sumando los dos anteriores: 0,1,1,2,3,5,8,13,21

II. PROCEDIMIENTOS 10.Si se depositan "P" lempiras en una cuenta de ahorros que paga un inters I compuesto anualmente, entonces despus de "N" aos, el monto presente de la cuenta esta dada por: A = P(l+i)n a. b. Escriba un subprograma para calcular "A". Escriba un programa que llame al subprograma del inciso "a" para calcular el inters total recibido por una persona que deposita "P" dlares en la cuenta.

__________________________________________________________________ 299

11.

Se desea un programa que lea una serie de enteros de entrada. Para cada uno deber imprimir un mensaje que seale si el nmero es par o no. Utilice un subprograma para determinar s el nmero es par o no. Se desea un programa que utilice un subprograma para ordenar los elementos de un arreglo. (en orden ascendente descendente). En cierto pas el impuesto que se debe pagar por los artculos se calculan mediante la siguiente regla: Los primeros $20 no causan impuesto, los siguientes $20 tienen el 30% de impuesto y el resto el 40% de impuesto, pero si el costo del producto es mayor a $500 entonces en lugar del 40% se cobra el 50%. a. b. Elabore un subprograma que calcule el impuesto para un artculo dado. Elabore un programa de dado el costo bsico llame el subprograma del inciso a para calcular el imprimir el precio total.

12.13.-

PROCEDIMIENTOS Y MENUS 14.Elabore un programa que permita al usuario calcular el rea de la superficie y el volumen de uno de los siguientes slidos. 1. Una esfera 2. Un cono 3. Una pirmide 4. Un cilindro El programa deber utilizar un men de opciones y un subprograma para una de las opciones. 15.Dada la categora y el sueldo de un trabajador se desea calcular el aumento correspondiente teniendo en cuenta la siguiente tabla. CATEGORIA 1 2 3 4 a) b) 16. AUMENTO 15 10 8 7

Elabore un subprograma PLUS que calcule el aumento para un trabajador. Construya un programa que utilice el subprograma PLUS para calcular el nuevo sueldo.

Elabore un programa que simule una calculadora de bolsillo con las operaciones bsicas. 1. Sumar (enteros positivos y cero o enteros negativos) 2. Restar 3. Multiplicar 4. Dividir 5. Raz cuadrada Utilice subprogramas y menu de opciones. En la opcion 5 utilizar un submenu 1. Enteros positivos y cero 2. Enteros negativos 3. Regresar al Menu Principal

17.

Se desea un pseudocdigo para que muestre un men de opciones para procesar conversiones segn sea requerido por el usuario. Las conversiones que se pueden realizar son las siguientes:

__________________________________________________________________ 300

TIPO CONVERSION 1. METROS A CENTIMETROS 2. GRADOS CENTIGRADOS A GRADOS FAHRENHETT Y VICEVERSA 3. LIBRAS A KILOGRAMOS Y GRAMOS Al final, se desea conocer cuantas conversiones se realizaron de cada tipo. Suponiendo que cada conversin tuviera un costo de L. 0.40, excepto la tercera conversin que tiene un costo de L. 0.50, determinar cuanto ganara el programador por el alquilar de su programa. 18. Una empresa que se dedica a realizar excursiones tursticas, desea un pseudocdigo para determinar cuanto tiene que pagar cada cliente. Las excursiones que se ofrecen son las siguientes: TIPO 1 2 3 DESCRIPICION ISLAS DE LA BAHIA RUINAS DE COPAN BIOSFERA DEL RIO PLATANO PRECIO X GRUPO DE TRES PERSONAS L. 5000.00 L. 7000.00 L. 6000.00

Todas las excursiones incluyen transporte y hospedaje. En caso que el grupo incluya ms de 3 personas, el precio por excursin se incrementara en L. 1000,00 para el tipo 1 y 2 L. 1400.00 para el tipo 3. Si el grupo as lo desea para solicitar que se le incluya un plan de comida el cual tiene un costo de L. 100.00 diarios por persona para los tipo 1 y 3, L. 150.00 para el tipo 2. Para poder realizar excursiones a La Mosquitia y a la Biosfera del Ro Pltano es necesario tener conocimientos de primeros auxilios. Si el cliente no lo tiene, este podr tomar un curso que se ofrece 2 semanas antes del viaje a un costo de L. 300.00 por persona. Cada persona deber pagar una cantidad de L. 25.00, el cual es destinado al fondo para el "DESARROLLO ECOLOGICO". El pseudocdigo deber calcular el ingreso segn el tipo de excursin, ingreso total de la empresa y el nmero de personas que tomar el curso de primeros auxilios. 19.Una tienda de alquiler de videos ha clasificado sus pelculas de la siguiente manera. CATEGORIA 1 2 3 DESCRIPCION DRAMA TERROR ACCION ALQUILER POR DIA L. 8.00 L.10.00 L. 9.00

Si la persona ha sido cliente por ms de 2 aos, se le rebaja L.0.50 por cada da adicional al primero.

__________________________________________________________________ 301

Las pelculas de DRAMA y ACCION, son las que contienen ms estrenos; si la pelcula alquilaba es estreno el alquiler se incrementa en L. 1.50 por da. Para las pelculas ACCION se ofrece un descuento de un 10% siempre y cuando las pelcula sea rentada un da viernes, sbado o domingo. Elaborar Pseudocdigo, utilizando mens y subrutinas, para que calcule el total a pagar por el cliente, adems se necesita determinar cuantas pelculas se rentaron de cada tipo y el total de ingreso de la tienda. 20. Una empresa hotelera, se dedica principalmente al alquiler de varias casa y apartamentos en la playa y los ha clasificado de la siguiente manera. CLASIFICACION 1 2 3 DESCRIPCION DEPTO. 2 CUARTOS DEPTO. 3 CUARTOS CASA ALQUILER POR SEMANA L. 1500.00 L. 1800.00 L. 2100.00

Los tipos 1 y 2 se ofrecen, si el cliente as los desea, con cocineta a un precio adicional de L. 500.00 por persona. Las casas se ofrecen con aire acondicionado central, a un precio adicional de L. 400.00. En el caso que el alquiler se haga por mas de una semana la empresa ofrece un descuento del 8% para los tipos 1 y 2 y 10% para las casas. En caso que la persona interesada sea extranjera, a esta se le deber cobrar un impuesto turstico del L. 120.00 Elaborar Pseudocdigo, utilizando mens y subrutinas, para que calcule el total a pagar por el cliente, total de habitaciones que se rentaron de cada tipo, y total de ingreso de la empresa. 21.Una agencia de alquiler de automviles, ofrece a sus clientes bsicamente tres tipos de carros. TIPO 1 2 3 TURISMO MINI-VAN TURISMO STATION WAGON DESCRIPCION ALQUILER BASE L. 1000.00 L. 1500.00 L. 2000.00

Los autos turismo se ofrecen con asientos para bebes, a un precio de 230 c/u. Los autos mini-van, se ofrecen con parrilla para cargar por un precio de L. 300.00 por semana. El gerente de agencia ha determinado que los turismos Wagon son los autos que sufren mayor deterioro, por lo tanto ha decidido cobrar L. 10.00 por cada da adicional a la primera semana. La agencia tambin ofrece el servicio de rescate vial, para lo cual se cobra L. 150.00, L. 200.00 y L. 250.00 para cada tipo respectivamente.

__________________________________________________________________ 302

El cliente puede optar por realizar el pago con tarjeta de crdito o al contado, en caso que se utilice la tarjeta de crdito habr un recargo del 3% por servicios. En caso de pagos de contado, se ofrece un descuento del 10% en tipo 1 y 2, y 12% para los autos turismo station wagon. Elaborar el pseudocdigo, utilizando mens y subrutinas, para que calcule el total a pagar por el cliente y adems el nmero de autos que se rentaron de cada tipo e ingreso total de la agencia. 22. Una empresa dedicada a la produccin de software ofrece a sus clientes comerciales clasificado de la siguiente manera: TIPO 1 2 3 DESCRIPCION CONTABILIDAD BASICA CONTABILIDAD DE COSTOS CONTABILIDAD AVANZADA aplicaciones

COSTO L. 1000.00 L. 1500.00 L. 2000.00

Las aplicaciones comerciales se venden por nmero de licencia segn el nmero de localidades del cliente. La primera licencia esta incluida dentro del costo del paquete, para cada licencia adicional se cobra Lps.200.00 por cada una. Si el cliente as lo desea (Respuesta S o N) se le ofrece un plan de mantenimiento del software a un precio adicional de Lps.8,000 para la modalidad 1, 9,000 para la 2 y 10,000 para la 3. Para la modalidad 2 y 3 se debe comprar un manual de usuario a un precio adicional del L500.00 a los clientes que compren mas de una licencia se les otorga un descuento del 25% del precio del manual. Elaborar el pseudocdigo, utilizando mens y subrutinas, para que calcule el total a pagar por el cliente y adems el nmero de licencias que se vendieron de cada tipo e ingreso total de la empresa. 23. Como parte de una campaa motivacional, una empresa ha iniciado un plan de incentivos econmicos entre sus empleados, el plan esta dividido en 3 incrementos: a) Un incremento sobre su sueldo actual (depende del departamento al que pertenecen) b) Una bonificacin para aquellos empleados con antigedad mayor a 5 aos c) Una bonificacin del 5% sobre su sueldo para aquellos empleados que cumplieron con las metas establecidas por sus jefes inmediatos (Se deber preguntar si el empleado cumpli o NO las metas) Departamento A.- Produccin B.-.Administracin C.- Ventas Incremento sobre sueldo actual. 20% 25% 18% Bonificacin por antigedad L. 0.00 L.500.00 L. 1000.00

Si se da como entrada el departamento en el cual se encuentra el empleado, el sueldo actual y si cumpli las metas establecidas, se deber elaborar el seudocdigo utilizando los conceptos

__________________________________________________________________ 303

de subprogramas y mens para que calcule e imprima el aumento otorgado y el nuevo sueldo para cada uno de los empleados, Adems como apoyo a la administracin se requiere un reporte con los siguientes datos: a) b) c) d)Total pagado por la empresa por concepto de incrementos por tipo de departamento Total pagado por la empresa por concepto de incrementos por antigedad Total empleados que cumplieron las metas Total empleados para cada categora.

__________________________________________________________________ 304

APENDICE D ARREGLOS
1. Se desea un programa que permita ingresar 100 nmero en dos arreglos, los primeros 50 en el arreglo llamado A y los segundos 50 en el arreglo llamado B. Una vez ingresados los nmeros, el programa debe calcular la suma de los elementos de los dos arreglos y almacenarlos en un arreglo llamado C. Ej. C[1] A[1] + B[1] 2. Una lista de 30 nmeros debern ser guardados en el arreglo ORIGINAL. Debe crear un programa que forme el arreglo INVERTIDO con los mismos nmeros en el arreglo ORIGINAL, pero en sentido inverso. Ej. INVERTIDO[1] ORIGINAL[30] 3. Se desea guardar una lista de 20 nmeros en un arreglo llamado NOSOTROS. Determinar cuantos nmeros contenidos en el arreglo son positivos, cuantos son cero y cuantos son negativos. 4. Calcule la suma de los valores contenidos en un arreglo de tamao n. 5. Se tiene un arreglo de tamao n cuyos elementos son ceros y unos. Elabore el seudocdigo para que coloque los ceros primero seguido de los unos. 6. Cuatro arreglos, cada uno de longitud 40, debern ser formados a partir de 160 nmeros suministrados a la computadora. Determine cual es el arreglo con suma mayor y cual es el arreglo con suma menor. 7. Encontrar el elemento menor, y la celda en la que se encuentra, de un arreglo llamado GRANDE de n elementos. 8. Una lista de 200 nmeros debern ser guardados intercaladas en dos arreglos, UNOS y OTROS. Un arreglo, AQUELLOS, tendra el resultado de la multiplicacin de los anteriores de la siguiente manera: Primer elemento de UNOS por el ltimo elemento de OTROS Segundo elemento de UNOS por el penltimo elemento de OTROS

9. Elaborar un seudocdigo para que guarde en cada celda de un arreglo de tamao 30, el factorial correspondiente al ndice de cada celda. Ej. Para la celda 4 se deber almacenar 4! 10. Una tienda tiene 4 almacenes, donde cada almacn tiene 10 departamentos. Las ventas de cada almacn estn almacenadas en 4 arreglos de longitud 10 cada uno. Determine el total de las ventas por departamento, por almacn y de toda la tienda. 11. Una cafetera de gran tamao ofrece a sus clientes 200 productos totalmente distintos. Como entrada de datos a la computadora se proporcionar la factura que contiene el cdigo de la comida (1200) y el precio de venta. Determinar cuantas comidas se vendieron de cada tipo, el ingreso total de la cafetera correspondiente a ese da. Suponer que cada factura corresponde a un cliente. 12. En una ferretera, FECOSA, se utiliza una computadora para emitir la facturacin a los

__________________________________________________________________ 305

clientes. A la computadora se le da entrada al nombre del cliente, el cdigo del artculo y la cantidad de artculos que lleva. El precio del artculo se obtiene de ubicar el cdigo del artculo en el arreglo PRECIO. El cdigo del artculo corresponde al nmero del elemento dentro del arreglo. Emita la factura incluyendo precio total del artculo, subtotal, impuesto sobre ventas y total general. TIP: Para indicar el fin de los artculos se utilizar 0 como cdigo.

13. La Escuela Agrcola Centro Lenca nos ha solicitado un programa para controlar la produccin de leche de sus vacas. Se sugiere un arreglo VACA de 30 elementos, donde en cada celda se almacenar el nmero de litros de leche que produce una vaca. Se desea conocer cual fue el da de mayor produccin, cual fue el da de menor produccin y cual fue el promedio de produccin. 14. Para complementar el programa anterior, se nos dijo que de las 50 vacas que tienen, se desea conocer cual es la vaca que mas produce en promedio, y cual es la que menos produce. TIP: Para esto se debe crear un arreglo llamado PRODUCCION, donde se almacenar el promedio de produccin de los arreglos arriba mencionados. 15.Se desea un programa que utilice un subprograma para ordenar los elementos de un arreglo. (en orden ascendente descendente). 16. Se necesita procesar las calificaciones de un grupo de N estudiantes para lo cual se desea un programa que haga lo siguiente. a. Utilice un subprograma "LECTUDATOS" para leer los nombres y los promedios de los estudiantes en 2 arreglos paralelos. b. c. Determine por medio de un subprograma cuales fueron los estudiantes con mayor promedio y menor promedio respectivamente.

Imprima por medio del subprograma IMPRESION los nombres y promedios de los estudiantes con excelencia acadmica (promedio mayor o igual que 90). NOTA: Optativo usar mens 17. Modifique el problema 5 de tal forma que el subprograma LECTUDATOS garantice que cada promedio este entre 0 y 100 inclusive.

__________________________________________________________________ 306

APENDICE E VARIANTES EN LA RESOLUCION DE ALGUNOS EJEMPLOS Y ALGUNOS EJERCICIOS CLASICOS En el presente texto, se hace referencia a este Apndice que presenta ejercicios varios, que son variantes de los ya desarrollados, o cuya temtica no fue abordada en el mismo, pero que se considera que son convenientes para el lector, por su aplicacin en cursos avanzados.

E.1 - Ejemplo 3.12b(Aumentos por categora, decisiones anidadas, rboles de decisin, repeticin)
Ejercicio del Apndice A, No.36 Dados la categora y el sueldo de un trabajador, calcule el aumento correspondiente teniendo en cuenta la siguiente tabla. Imprima la categora del trabajador y su nuevo sueldo. Categora 1 2 3 ESTRATEGIA (Varios) Categora Nuevo_s (Varios) Categora Sueldo Aumento 15% 10% 8%

Salidas

Entradas

Se necesitar utilizar: Decisiones anidadas: ya que el aumento varia segn la categora, se deben hacer

clasificaciones segn esta (categora), para ello, utilizaremos un rbol de decisiones V Categoria=1 F Categoria = 2 F Aumento del 8% Proceso repetitivo controlado por centinela (categoria o sueldo), escogiendo la categora con un valor no posible = 99 (no es 1, 2 o 3) Condicin de repeticin Categoria 99 Aumento del 15 % Aumento del 10% V

__________________________________________________________________ 307

Antes de comenzar el ejemplo de escritorio, observe las frmulas del Ejemplo 3.12 y podr notar que la nica diferenta en las frmulas del aumento es solamente el porcentaje, lo dems es igual, as que se dejar los ramales de las decisiones anidadas lo ms simplificadas posible, asignando solamente el porcentaje propiamente dicho. 1. EJEMPLO DE ESCRITORIO Caso I Categora = 2 Sueldo = 2,000 Porcentaje = 0.10 Aumento =2,000 * 10 =200 Nuevo_S =2,000 +200 =2,200 Caso II Categora = 1 Sueldo = 3,000 porcentaje =0.15 Aumento =3,000 * 0.15 =450 Nuevo_S =3,000 +450 =3,450

Observacin :Note que se asigna el porcentaje de aumento para cada Categora, as las
2. frmulas se reducirn a una: DICCIONARIO DE VARIABLES Aumento

sueldo * porcentaje

2. DICCIONARIO DE VARIABLES Identificador Categoria Sueldo Porcentaje Aumento Nuevo_S 3. FORMULAS Aumento = Sueldo * porcentaje Nuevo_S = Sueldo + Aumento (F-1) (F-2) Descripcin Categora Sueldo Inicial Porcentaje de aumento Aumento Nuevo sueldo

Estas son las frmulas convencionales: Aumento = Sueldo * 0.15 (Frmula-1) Aumento = Sueldo * 0.10 (Frmula-2) Aumento = Sueldo * 0.08 (Frmula-3)

Obsrvece que de las 3 frmulas que se tenan con el mtodo anterior ahora quedan reducidas a 1 4.RESUMEN DEL ANALISIS SALIDA: ENTRADA: (Varios nmeros) Categoria, Nuevo_s 2 en cada ciclo (Varios nmeros) Categoria, Sueldo 2 en cada ciclo

__________________________________________________________________ 308

PROCESO:

Proceso repetitivo controlado por centinela (Categora 99) , en el cual,

para cada empleado se lee la categora y el sueldo, y mediante decisiones anidadas, se asigna el porcentaje de aumento respectivo (Ver DIAGRAMA DE ARBOL) , Calcular el aumento y al final calcular e imprimir N_sueldo. 5. DESGLOSES 1er. Nivel 1. Pasos Iniciales 2. Proceso 2do. Nivel 1. Pasos Iniciales 1.1 Leer Categora 2. Proceso 2.1 Mientras Categora 99 haga lo siguiente repetidamente 2.1.1 Leer Sueldo 2.1.2 Ver Si Categora = 1 2.1.2.1V) Asignar 0.15 a porcentaje 2.1.2.2 (F) Ver Si Categora = 2 2.1.2.2.1 (V) Asignar 0.10 a porcentaje 2.1.2.2.2 (F) Asignar 0.08 a porcentaje 2.1.3 Calcular Aumento 2.1.3 Calcular Nuevo_S 2.1.4 Imprimir Categora : , Categoria 2.1.5 Imprimir Nuevo sueldo : , Nuevo_S 2.1.6 Leer Categora 6. PRUEBA DE ESCRITORIO Datos: Memoria categora 2 1 99 2, 2000, 1, 3000, 99 Salida: Sueldo 2,000 3,000 porcentaje Aumento 0.10 200 0.15 450 Nuevo_S 2,200 3,450 (Frmula-1) (Frmula-2)

categora 2 Nuevo sueldo 2,200 categora 1 Nuevo sueldo 3,450

__________________________________________________________________ 309

E.2-Ejemplo 3.13b (Lavado de autos, rbol de decisin ,repetitivo, Apndice A No. 37)
Un grupo de personas dedicadas al negocio de lavado de automviles, necesita un programa para que determine cuanto tiene que pagar cada cliente de acuerdo a la siguiente tabla de servicio: Tipo de Servicio 1. Lavado Exterior 2. Lavado Interior 3. Lavado Exterior e Interior 4. Lavado de Motor _Precio___ Lps. 25.00 Lps. 30.00 Lps. 35.00 Lps. 40.00

Adems de los servicios, se ofrece un descuento del 7% si se llevan dos o ms automviles. Se proporcionara al computador, el tipo de servicio y el No. de automviles, calcular el total a pagar por cliente. ESTRATEGIA: ( Varios) Tipo N_autos (Varios) Pagos

Entrada

Salida

Se debe tomar en cuenta lo siguiente: Decisiones anidadas, como los precios varan segn el tipo de servicio seleccionado, se deber clasificar segn el Tipo, Como hay un descuento a considerar, se debe tener antes un Subtotal , as para calcular dicho subtotal se necesitar un Diagrama de rbol. Al igual que el ejemplo anterior las frmulas convencionales solamente difieren en el precio del servicio brindado, en las decisiones anidadas solamente se asignarn los valores respectivos, reduciendo as el nmero de frmulas: Precio V Tipo=1 F Tipo=2 F Tipo =3 F Precio 40 V V Precio 30 Precio 35 25

__________________________________________________________________ 310

Como se mencion anteriormente, para hacer el rbol de decisiones se debe considerar un descuento descuento. si N_autos 2 (V) se aplicar un descuento del 7 % o del (F ) 0 % en caso contrario lo que implica tener que calcular un subtotal para posteriormente independientemente del tipo de servicio seleccionado, y segn el N_autos .calcular un

Repeticin, seleccionando como variable centinela (Valor ficticio de fin de datos) N_autos igual a cero, condicin de la repeticin: 1. EJEMPLO DE ESCRITORIO Caso I N_autos = 3 Tipo = 4 Subtotal = 3 * 40 = 120 Desc = 0.07 * 120 = 8.4 Total = 120 8.4 = 111.6 2. DICCIONARIO DE VARIABLES Identificador Tipo N_autos Precio Subtotal Desc Total 3. FORMULAS Subtotal =N_autos * precio (F-1) Desc = 0.07 * Subtotal Total = Subtotal - Desc (F-2) (F-3) Descripcin Tipo de servicio Nmero de autos Precio de cada uno de los servicios Subtotal Descuento Total a pagar Caso II N_autos = 1 Tipo = 2 Subtotal = 1 * 30 = 30 Total = 30 Caso III N_autos = 0 N_autos 0

Frmulas convencionales Subtotal = N_autos * 25 Subtotal = N_autos * 30 Subtotal = N_autos * 35 Subtotal = N_autos * 40 (F-1) (F-2) (F-3) (F-4)

Ver Captulo IV Ejemplo 4.11 simplificaciones al respecto. Nota que de las 4 frmulas que se tenan con el mtodo anterior ahora quedan reducidas a 1

__________________________________________________________________ 311

4. RESUMEN DEL ANALISIS SALIDA: ENTRADA: PROCESO: (Varios nmeros) Total 1 en cada ciclo (Varios nmeros) Tipo, n_autos 2 en cada ciclo Proceso repetitivo controlado por centinela (N_autos 0), para cada cliente se lee

n_autos y el tipo, mediante decisiones anidadas (Diagrama de rbol adjunto), se asigna el precio por el servicio correspondiente, seguidamente se calcula el subtotal respectivo, posteriormente si n_autos 2, se calcula el descuento que corresponde .Al final se calcula e imprime Total. 5. DESGLOSES 1er. Nivel 1. Pasos Iniciales 2. Proceso (Clasificacin e impresin) 3. Pasos Finales

2do. Nivel 1. Pasos Iniciales 1.1 Leer N_autos 2. Proceso 2.1 Mientras N_autos 0 haga lo siguiente repetidamente 2.1.1 Leer Tipo 2.1.2 Ver Si Tipo = 1 2.1.2.1 (V) Asignar 25 a Precio 2.1.2.2 (F) Ver Si Tipo = 2 2.1.2.2.1 (V) Asignar 30 a Precio 2.1.2.2.2 (F) Ver Si Tipo = 3 2.1.2.2.2.1 (V) Asignar 35 a Precio 2.1.2.2.2.2 (F) Asignar 40 a Precio 2.1.3 Calcular Subtotal (F-1) 2.1.4 Ver Si N_autos 2 2.1.3.1 (V) Hacer lo siguiente 2.1.3.1.1 Calcular Desc (F-2) 2.1.3.1.2 Calcular el Total (F-3) 2.1.3.1 (F) Asignar Subtotal a total 2.1.5 Imprimir Total 2.1.5 Imprimir Total a Pagar : Lps. , Total 2.1.6 Leer (siguiente)N_autos 6. PRUEBA DE ESCRITORIO Datos: 3, 4, 1, 2, 0

__________________________________________________________________ 312

Memoria: N_autos 3 1 0 Salida Tipo 4 2 Precio 40 30 Subtotal 120 30 Desc 8.4 Total 111.60 30

Total a Pagar:Lps.111.60 Total a Pagar:Lps.30 Muchas Gracias

En la seccin 3.5 se determino el mayor de 3 nmeros utilizando un Arbol de Decisiones, si se trata de mas de 3 nmeros las comparaciones son difciles de manejar, se presenta a continuacin un algoritmo para

Ejemplo E.3 Determinar el mayor de una lista de 4 Nmeros y su posicin en la lista.


Algoritmo Inicio Lea X Mayor Posicin Para i X 1 2, N haga Lea X Si X > mayor Entonces Mayor Pos Fin si Fin para Escriba El numero mayor es: Escriba mayor Escriba su posicin en la lista de numeros es: Escriba posicin Fina i X de ser as, ese es el nuevo nmero mayor y tambin se guarda su posicin. Compara si hay otro mayor que el supuesto mayor Comentarios Se asume que el primer nmero ledo es el mayor por tanto est en la primera posicin Desde el siguiente nmero en adelante

__________________________________________________________________ 313

Se deja la prueba de escritorio al lector con los siguientes datos: PRUEBA DE ESCRITORIO Datos: 4, 6, 8, 3 Memoria: X Mayor posicion I Salida:

En este libro se han presentado diferentes maneras de realizar una repeticin, por ejemplo: La controlada por un centinela Controlada por un contador El Bloque Para Controlada por una condicin varia (por ejemplo x >200) A continuacin se presenta la controlada POR RESPUESTA DEL USUARIO

Ejemplo E.4
Disear un algoritmo en el cual, de manera repetitiva, se de cmo entrada el monto de la venta de cada cliente y se le cobre considerando el 12 % de impuesto. Solulcin: 1. ESTRATEGIA (Varios) pago (Varios) Venta Respuesta (N n

Salidas

Entradas

Se deber preguntar si se desea atender a mas clientes, cuando la respuesta sea N de No o n de no, el proceso terminar, se estar utilizando entonces variables tipo carcter para la Respuesta

Algoritmo inicio Respuesta S -- se inicializa con Spara poder compara en el Mientras en el 1er.ciclo Mientras respuesta = S o respuesta = n haga Lea Venta Pago Venta + Venta * 0.12 -- pago Venta * 1.12 Escriba pago Escriba Desea atender a otro cliente: (S/N) : ? Lea respuesta Fin mientras final

__________________________________________________________________ 314

EXAMEN CORTO No.1


1.- Dadas las siguientes expresiones, coloque en el espacio en blanco la(s) palabra(s) segn aplique la clasificacin: Proposicin, Proposicin Abierta o Ninguna.(12% ) a) Y*(2) +3*X=4 b) Este examen esta difcil d) La mejor Universidad de Honduras es UNITEC PROPOSICION ABIERTA NINGUNA NINGUNA

c) Programacin I no es requisito para ____________ PROPOSICION ABIERTA

2.- Segn las reglas para los identificadores de Variables, indique cual de los siguientes nombres estn SI correctos y cuales NO (cuando sea Incorrecto, asignar un nombre que cumpla con dichas reglas, si no asigna un nombre correcto no se considerara vlida la respuesta. (12%) Si/No Nombre correcto a.- 200Saldo NO Saldo200 b.- Total_pago c.- (mayorr) d.- Impuesto/ventas SI NO NO __________________ Mayor_r Impuesto_s_ventas

3.- Dadas las siguientes proposiciones abiertas P(x) : x -10 = 20 s(x,y): x = y + 20 r(y): y * y =100

a) Construya la tabla de verdad de ~ p v (r s) (10%) p V V V V F F F F r V V F F V V F F s V F V F V F V F ~p F F F F V V V V rs V F F F V F F F ~ p v (r s) V F F F V V V V

c) Determinar el valor de verdad de ~ p v (r s) utilizando el mtodo directo (tringulo invertido) para los valores de: x = 10 y = -10 (10%) Y compare su resultado con el de la Tabla de verdad del inciso a) Sustituyendo P(10): 10 10 = 20 100 0 = 20 (F) s(10, -10) : 10 = -10 + 20 10 = 10 (V) r(-10) : (-10) * (-10) = 100 = 100 (V)

__________________________________________________________________ 315

~ p v (r s) ~ F v ( V V) V v V V
4.- Encuentre el valor de verdad de las condiciones mostradas a continuacin, realice primero las asignaciones y reasignaciones dadas. Utilice el mtodo del tringulo invertido: 4.1.pago 567 4.2.bono pago * 0.10 4.3.total pago + bono 4.4.bono 45 (5%) 4.5.total pago + bono a) (No se cumple que (pago > 500 y bono < 40)) o (bono = 45) (10%)

b) (pago + bono > 1000) o (bono < 45+50)

(10%)

5.-

Explique cada una de las partes de las partes de la Unidad Central de Proceso (17%)

__________________________________________________________________ 316

EXAMEN PARCIAL I
INSTRUCCIONES Desarrolle los siguientes problemas en una forma clara y ordenada. I. Coloque en el espacio en blanco la palabra que da sentido a lo planteado (10%) 1. ______________ Unidad que ejecuta los clculos aritmticos y puede evaluar la veracidad o falsedad de algunas proposiciones y efectuar operaciones lgicas 2.________________Accin de ejecutar las instrucciones a lpiz, simulando un computador. 3. _______________Trmino para indicar el almacenamiento en una variable 4. ______________ Espacio reservado en la memoria donde podemos almacenar un dato. 5. ______________ Unidad que interpreta las instrucciones y dirige el resto de los dispositivos para la ejecucin del programa II Para el siguiente desglose haga lo siguiente:

FORMULAS TOTAL TOTAL

VAL * NUM * 2 (F1) VALOR * NUM * 3 (F2)

DATOS: 1,4,3, 3, 1,2, -0, 8,1

1. Pasos Iniciales 1.1 Leer NUM 2. Proceso 2.1 Mientras NUM 0 haga 2.1.1 Leer VAL 2.1.2 Asignar 0 a TOTAL 2.1.3 Ver si NUM = 1 2.1.3.1 (V) Calcular TOTAL segn F1 2.1.3.2 (F) Calcular TOTAL segn F2 2.1.4 Imprimir VALOR 2.1.5 Imprimir TOTAL 2.1.6 Leer NUM 2.2 ver si TOTAL < 20 2.2.1 (V) Asignar 1 a VALOR 2.2.2 (F) Asignar 0 a VALOR 2.3 Imprimir VALOR Cual es el centinela utilizado en el desglose anterior? (5%) Identifique las estructuras utilizando los numerales (5%) Utilizando las frmulas y datos, realice una prueba de escritorio para el desglose anterior (20%) __________________________________________________________________ 317

III. Una empresa dedicada a la fabricacin de puertas, necesita un programa para calcular el total a pagar por el cliente. Los tipos de puertas y los precios se presentan en la tabla a continuacin: Cdigo 1 2 3 Descripcin Puerta de Pino Puerta de Cedro Puerta de Caoba Precio (Lps.) 600.00 800.00 1300.00

Los cdigos de los tipos de puertas son los que se muestran en la tabla. Dicha empresa tiene la siguiente promocin: si el cliente compra 3 puertas o ms se otorga un descuento del 20% en el tipo 1 y un 30% en el tipo 2 y 3. Se le pide preparar un anlisis del problema, algorimo en NOLAE, para un programa que calcule el total a pagar por concepto de entradas al concierto. Se deber de proporcionar el cdigo del revelado y el nmero de rollos a revelar. Se asume que cada cliente solicita revelados del mismo tipo.

Ejemplo de escritorio Diccionario de variables Formulas Resumen del anlisis Programa en NOLAE

(5 %) (5 %) (5 %) (5 %) (20 %)
(Total 40 %)

(Nota: Usar centinela)

__________________________________________________________________ 318

EXAMEN PARCIAL II
Ejercicio #1 (20%)

Responda las siguientes preguntas, muestre su procedimiento cuando sea necesario: 1. Cules son los dos tipos de clusulas (no libreras) que se utilizan en un programa en ADA 95? 2. Dadas las siguientes declaraciones: X: Integer; Y:Float; haga la prueba de escritorio para estas asignaciones: X:= 8; Y:= 7.5; Y:= Y*5.0 + FLOAT(X); 3. Escriba el nombre del tipo de las variables que slo pueden almacenar un smbolo especial, un dgito o una letra. Ejercicio # 2 Escriba el seudocdigo de un programa que calcule e imprima el valor de S: S = 2/3 + 4/6 + 6/9 + 8/12 + ,... Ejercicio # 3 (51 trminos) (50%) (30%).

El administrador de una maquila en donde se fabrican distintos tipos de camisetas, necesita un programa para calcular el total a pagar por cada cliente, considerando que la gerencia desea ganar un 10% sobre los costos de material. La informacin que se tiene la provee el Ingeniero de Planta, y se muestra en las siguientes tablas:
Descripcin camiseta 1.- Camiseta para dama 2.- Camiseta juvenil 3.- Camiseta para caballero Yardas Tela /camiseta Tipo Alfa 1.5 Tipo Orion 2.0 Tipo Omega 1.5 Tipo Alfa 0.5

Tipo de Tela Alfa Orion Omega

Precio por Yarda Lps 40 Lps 30 Lps 25

El programa deber solicitar el Tipo de camiseta a comprar y Cantidad (de camisetas) a comprar, se deber calcular el costo por materiales y el total a pagar por el cliente. Adems al final del da se desea la siguiente informacin: Costos totales por materiales de cada uno de los tipos de camiseta vendidos Ingresos por las ventas de cada uno de los tipos de camiseta __________________________________________________________________ 319

EXAMEN PARCIAL III


EJERCICIO 1 Usando procedimientos; escriba un programa en Ada para determinar si 20 solicitantes pueden optar a un prstamo en una entidad bancaria. Inicialmente se leen los datos para cada solicitante: valor del prstamo, ingreso mensual y valor de otras propiedades. El prstamo ser otorgado a los solicitantes con ingreso mensual mayor de Lps. 10,000.00 y que obtengan ms de 6 puntos. Los puntos se obtienen como sigue: 6 puntos, si el salario es mayor del valor de las propiedades y 2 puntos en caso contrario 4 puntos, si el valor del prstamo es menor o igual al ingreso mensual y 2 en caso contrario. Se sugiere: Hacer un procedimiento (LECTURA) para leer los datos de cada solicitante Hacer un procedimiento para calcular total de puntos (CALCULO) Hacer un programa para imprimir respuesta al cliente, incluyendo el valor del prstamo y total de puntos obtenidos. (IMPRESIN) Ejercicio 2 Usando subrutinas y mens hacer un programa en Ada-95 para calcular lo que cada cliente debe pagar por alquiler de telfono, los precios por minuto y la empresa se describen a continuacin: EMPRESA 1. TELHABLA 2. LORATEL 3. PERITEL Valor por minuto Lps. 6.00 Lps. 5.50 Lps. 3.00

El programa debe solicitar informacin de los clientes: Tipo de cliente: Nuevo(N) o Viejo(V), Empresa y numero de Minutos utilizados El programa debe calcular el total a pagar por el cliente, dando un descuento del 5% si es cliente viejo para producto 1 y 3 y del 10% para producto 2. Adems preparar un reporte que muestre lo siguiente: 1. Total de ingresos 2. Total de minutos pagados en LORATEL 3. Total de clientes atendidos

__________________________________________________________________ 320

APENDICE F

PRACTICA DE LABORATORIO

LENGUAJE DE PROGRAMACION ADA95

INSTRUCCIONES: La presente gua de laboratorio est elaborada para ayudarte en la clase de Programacin I, debes seguir las instrucciones descritas. Si tienes alguna duda consulta con tu maestro o tutor.

F.1
PRIMER PROGRAMA (concatenacin) Para comenzar a trabajar, debe arrancar su computadora y entrar a Windows Estando en la ventana principal, activa el men inicio y ubquese en Programas. Seleccione GNAT ADA95 COMPILER y luego de un clic a ADA GIDE. Estando el editor de ADA escribir el siguiente programa tal como se muestra a continuacin. (click FILE escoger New) -------------------------------------------DIGITE EL SIGUIENTE PROGRAMA-------------------------------NOMBRE : PROMEDIO Este programa mediante la asignacin, calcula el promedio de tres alificaciones e imprime las tres calificaciones y el promedio. Programa elaborado por Nombre del alumno: , Fecha:

With Ada.Text_IO; use Ada.Text_IO; With Ada.Integer_Text_IO; use Ada.Integer_Text_IO; Procedure promedio is Nota1:Integer; Nota2:Integer; Nota3:Integer; Prom:Integer; No_Exam:Integer; Begin No_Exam:=3; Nota1:=80; Nota2:=95; Nota3:=75; Prom:=(nota1+nota2+nota3)/No_Exam; Put( CALCULO DE PROMEDIO); New_Line; Put(Nota del primer examen: ); Put(nota1);New_Line; Put(Nota del segundo examen: ); Put(nota2);New_Line; Put(Nota del tercer examen: ); Put(nota3);New_Line; Put(Promedio Final: ); Put(prom); Put(Teclee << enter>> para continuar); -- Para hacer una pausa Skip_Line; -- en su programa End Promedio;

__________________________________________________________________ 321

Una vez que haya editado el programa debe compilarlo presionando F3, el compilador solicitar salvar su programa, debe guardarlo con promedio; identifique sus errores en la ventana inferior, de un click sobre el primer error y el cursor se ubicara en la parte del programa en donde este ocurri, corrija y pase al segundo error con un click, repita el procedimiento de correccin para cada error indicado. Si tuvo errores y los corrigi compile el programa nuevamente. Cada vez el compilador pedir guardar las modificaciones. Ejecute o corra el programa presionando F4, vea sus resultados y compruebe Para regresar al editor de ADA presione la tecla ENTER (cerrando la ventana .). Debe guardar su programa en su disco. Para grabaciones subsiguientes use CTRL +S NOTA: Si el ejercicio anterior lo est haciendo con su maestro de la clase, sugiero que se modifique, leyendo los datos desde el teclado, es decir usado get(nota1), get(nota2), get(nota3) y los skp_line (respectivos) en vez de la asignacin. Compilar nuevamente el programa y observar que aparece la pantalla limpia y el cursor pulsando, teclear las notas presionando <<Enter>> por cada nota que introduce. Lo anterior lleva a la necesidad de hacer un programa amigable y lo hacemos escribiendo un mensaje antes de cada get, as por ejemplo: Sustituir la instruccin Get(Nota1) por lo siguiente: Put(Introduzca la nota 1: ); Get(Nota1); skip_line; -- colocar skip_line despus de cada lectura -- numrica y de tipo caracter. OBS:Despus de hacer una modificacin a un programa en ADA siempre se debern salvar los cambios antes de volver a compilar y correr su programa.

F.2
SEGUNDO PROGRAMA (concatenacin) Instrucciones: Compile y corra el programa dado a continuacin. Salvelo con el nombre Suma. --------------------------------------------------------------------NOMBRE: SUMA --Este programa calcula la suma de dos nmeros enteros -los cuales son ledos desde el teclado -----------------------------------------------------------------------------with Ada.Text_IO, Ada.Integer_Text_IO;

__________________________________________________________________ 322

use Ada.Text_IO, Ada.Integer_Text_IO; procedure Suma is x, y, sum : Integer; begin Get(x); Skip_line; Get (y); Skip_line; sum:=x+y; put(" La Suma = "); put(sum); end Suma; Observacin: En el programa no puede utilizarse una variable que tenga el mismo nombre con que se salvo dicho programa. Ahora se modificara el programa anterior, hacindolo amistoso. Insertar la siguiente lnea : Put(Teclee un numero: ) antes de Get(x): Insertar Put(Teclee otro numero: ); antes de Get(y);

F.3
TERCER PROGRAMA (decisin) Edite y compile el siguiente programa. Slvelo con el nombre Venta -- NOMBRE: VENTA --- Este programa lee la venta de un artculo, luego le -- hace un descuento, le calcula el impuesto sobre venta -- y calcula el total a pagar. Al final imprime el descuento, -- nuevo valor, impuesto sobre venta y total a pagar. --------------------------------------------------------------------with Ada.Text_IO, Ada.float_Text_IO; use Ada.Text_IO, Ada.float_Text_IO; procedure Venta is Val_venta, Descuento, Nuevo_val, isv, Total : float; Begin Put("Ingrese el valor de la venta: "); Get(Val_venta);skip_line; If val_Venta > 200.00 then Descuento:=Val_Venta*0.2; else Descuento:=Val_Venta*0.1; end if; --1 --2 --3 --4 --5 --6 --7 --8 --9 --10 --11 --12 --13

__________________________________________________________________ 323

Nuevo_Val:=Val_Venta-Descuento; --14 isv:=Nuevo_val*0.12; --15 Total:=Nuevo_val+isv; --16 New_Line; --17 Put("Descuento:");Put(Item=>descuento,fore=>5,aft=>2,exp=>0);--18 New_Line; --19 Put("Nuevo Valor:");Put(Nuevo_Val,0,2,0); --20 New_Line; --21 Put("Impuesto sobre Venta:");Put(isv,0,2,0); --22 New_Line; --23 Put("Total a Pagar:");Put(Total); --24 end Venta; --25 Nota: En este programa se ilustra el formato de salida de los numero reales La lnea 18 presenta en el Put algunos PARAMETROS que significan lo siguiente: Item : Variable o constante a imprimir Fore : Nmero de espacios reservados para posicionar los dgitos ubicados antes del punto decimal y ajustados hacia la derecha. Aft : Nmero de dgitos ubicados despus del punto decimal Exp : Determina la representacin exponencial del nmero. Si Exp =>0, el nmero se escribe sin parte exponencial. De lo contrario los nmeros lucen como 1.23E+01, y no son fcilmente legibles.

F.4
CUARTO PROGRAMA (Repeticin) Edite y compile el siguiente programa. Salvarlo con el nombre Alquiler --- NOMBRE: ALQUILER -- Este programa utiliza un ciclo repetitivo para calcular -- el pago por cliente por el alquiler de un automovil, -- imprime el pago, adems calcula el total recaudado -- por la empresa -with Ada.Text_Io, Ada.Float_Text_Io; use Ada.Text_Io, Ada.Float_Text_Io; procedure Alquiler is Km, Pago Recaudado : Float; : Float; --* Ver llamada al final de la pagina

begin Recaudado:=0.0; Put("INGRESE EL KILOMETRAJE: "); Get(Km);Skip_line;

--para nmeros reales colocar siempre decimales, * --Ver llamada al final del ejercicio

__________________________________________________________________ 324

While Km /=0.0 loop if Km < 100.0 then

-- Variable float al compararse con una Constante numrica --a esta se le agrega punto decimal Pago:=200.0+0.5*Km;

else Pago:=215.0+0.35*Km; end if; Recaudado:=Recaudado+Pago; Put("Total a pagar:");Put(Item=>Pago,Fore=>8,Aft=>2,exp=>0); New_Line; Put("INGRESE EL KILOMETRAJE: "); Get(Km);Skip_line; end loop; Put(Total de ingresos Lps ); Put(recaudado,0,2,0); end Alquiler; Observacin: En ADA95 es posible inicializar variables al mismo tiempo que se declara el tipo de esta, por ejemplo en el caso anterior es posible escribir la variable Recaudado en la seccin de declaracin de variables de la siguiente manera: Recaudado : Float:=0.0; (en el cuerpo del programa) Recaudado:=0.0;

As, la lnea de inicializacin de la variable ya no es necesaria.

__________________________________________________________________ 325

APENDICE G

LISTADO DE LOS EJEMPLOS UTILIZADOS EN LOS CAPITULOS 3 AL 6

__________________________________________________________________ 326

APENDICE G

LISTADO DE LOS EJEMPLOS UTILIZADOS EN LOS CAPITULOS 3 AL 6


CAPITULO 3

Pgina 43
48 50 56

3.3 ELEMENTOS EN EL ANLISIS DE UN P.O.P. PARTE I


Ejemplo 3.1 (Resumen del Anlisis, calificaciones) Ejemplo 3.2 (Promedio final de un estudiante) Ejemplo 3.3 (Pendiente e intercepto)

3.4 DESGLOSES Y PRUEBAS DE ESCRITORIO


3.4.1 DESGLOSES EN SECUENCIA Ejemplo 3.4 (Secuencia, Sueldo neto) Ejemplo 3.5 (Repaso, Secuencia, Venta de dos artculos) 3.4.2 DESGLOSE CON INSTRUCCIONES EN DECISION Ejemplo 3.6 (Decisin Venta con descuentos,) Ejemplo 3.7 (Decisin, Boletos Tegucigalpa, San Pedro Sula SPS,) Ejemplo 3.8 (Decisin anidada, Clasificar un nmero en negativo, cero y positivo.) 3.4.3 DESGLOSE CON INSTRUCCIONES EN REPETICION Ejemplo 3.9 (Repeticin centinela, Kilometraje) Ejemplo 3.10 (Repeticin centinela, Boletos Tegucigalpa, SPS.) 3.5 ELEMENTOS EN EL ANALISIS DE UN P.O.P 3.5.1 DIAGRAMA DE ARBOL DE DECISIONES Ejemplo 3.11 (Arbol de decisiones, Mayor de 3 nmeros,) PARTE II

59
60 60 68 72 72 77 81 83 83 92 98 98 98 104 104 108 113 119

3.5.2. REPETICION CON DECISIONES ANIDADAS Ejemplo 3.12 (Arbol de decisiones, Repeticin centinela, Aumentos por categora,) Ejercicio del Apndice A, No.36 Ejemplo 3.13 (Arbol de decisiones, Repeticin centinela, Lavado de autos, Apndice A No. 37) Ejemplo 3.14 (Arbol de decisiones, decisin anidada, variable real, rangos, CI,) CAPITULO 4

4.2.1

BLOQUES ESTRUCTURADOS ATOMICOS E INTRODUCCION A LA NOTACION DE DIAGRAMA DE FLUJO ALGORITMOS SEUDOCODIFICADOS CON CONCATENACION

121
123

Ejemplo 4.1 (Diagrama de Flujo, Concatenacin, Planilla de sueldos)

4.4.-

126
128 129 131 133

Ejemplo 4.2(Nolae, Concatenacin, Leer dos nmeros, imprimir suma) Ejemplo 4.3 (NOlae , Decisin, Venta de dos artculos) 4.5.- ALGORITMO SEUDOCODIFICADOS CON DECISION Ejemplo 4.4 (Nolae, Decisin, Venta con descuento)

__________________________________________________________________ 327

Ejemplo 4.5 (NOlae, Decisin, Boletos Tegucigalpa, SPS) Ejemplo 4.6 (Nolae, Decisiones anidadas, Nmero negativo, cero positivo) 4.6 ALGORITMOS SEUCODODIFICADOS CON REPETICION Ejemplo 4.7 (Nolae, Repeticin centinela, Kilometraje) Ejemplo 4.8 (Nolae, Repeticin centinela, Boletos Tegucigalpa, SPS) Ejemplo 4.9 (Nolae, Repeticin centinela, CI) en mencin Ej 3.8 Ejemplo 4.10 (Nolae, Decisiones anidadas, Repeticin centinela, Lavado de Autos) Ejemplo 4.11 (Nolae, Decisiones anidadas, Repeticin centinela, Lavado de Autos, variante) 4.7 DIAGRAMACION DE FLUJO DE ALGORITMOS ESTRUCTURADOS Ejemplo 4.12 (Diagrama de flujo del algoritmo del Ejemplo 4.7 (Repeticin centinela,Km.) 4.9. - CENTINELAS, CONTADORES Y ACUMULADORES 4.9.1 Centinelas Ejemplo 4.13 (Centinela, NOlae, Kilometraje) 4.9.2 Contadores Ejemplo 4.14 (Contador) Ejemplo 4.15 (Contadores, Votacin entre 2 candidatos.) Ejemplo 4.16 (Conteo de clientes con 20% y 10% de descuento, referencia al Ejemplo 4.4) 4.9.3 Acumuladores Ejemplo 4.17 (Ingreso total, Conteo de Boletos de Tegucigalpa y San Pedro Sula) 4.9.4 Repeticin controlada por contador Ejemplo 4.18 (Repeticin controlada por contador, leer y sumar N nmeros) Ejemplo 4.19 (Repeticin controlada por contador, acumuladores,descuentos, promedios) Ejemplo 4.20 (Repeticin controlada por contador, Productorio de N nmeros) CAPITULO 5

134 135 136 138 139 140 142 143 144 146 151 151 152 153 153 154 158 162 163 167 169 172 175

ESTRUCTURAS DERIVADAS 5.1 ASOCIATIVIDAD DE LA CONCATENACION 5.2 VARIANTES Y DERIVADAS DE LA DECISION 5.2.1 La decisin abreviada Ejemplo 5.1 (Decisin abreviada, segmento Premio, Apndice A No.42) 5.2.2 Las decisiones anidadas y las decisiones concatenadas Ejemplo 5.2 (Nolae, Arbol de decisiones, el mayor de 3 nmeros) 5.2.3 BLOQUE CASO Ejemplo 5.3 (Bloque Caso, Biblioteca.) Ejemplo 5.4 (Bloque Caso, Categoras, repeticin controlada por contador, contadores, acumuladores) Ejemplo 5.5 (Lavado de autos, Bloque caso, contadores y acumuladores)

179 179 181 181 182 183 183 188 190 193 198

__________________________________________________________________ 328

5.3.- VARIANTES Y DERIVADAS DE LA REPETICION 5.3.1 Bloque Para 5.3.1.1 Bloque Para y su uso con contadores y acumuladores Ejemplo 5.6 (Bloque Para, leer y sumar N nmeros) Ejemplo 5.7 (Bloque Para, contadores, acumuladores, descuentos, ingresos totales) Ejemplo 5.8 (Bloque Para, Bloque Caso, , contadores, acumuladores, Categoras) 5.3.1.2 Aplicaciones del Bloque Para, Sucesiones Ejemplo 5.9 (Bloque Para, Sucesin , nmeros pares, inicializacin en cero) Ejemplo 5.10 (Bloque Para, Sucesin, nmeros pares, inicializacin en 2) Ejemplo 5.11 (Bloque Para, Potencias de 3,) Ejemplo 5.12 (Bloque Para, potencias de 3, signos alternos, ) 5.3.1.3 Aplicaciones del Bloque para, Series Ejemplo 5.13 (Bloque Para Serie, suma de pares) Ejemplo 5.14 (Bloque Para, Sucesin, serie, fracciones signos alternos) Ejemplo 5.15 (Bloque Para Serie y Sucesin incrementos alternos) Ejemplo 5.16 (Bloque Para, Factorial) Ejemplo 5.3.2 Bloque Repita-hasta Ejemplo 5.17 (Repita-hasta, Suma) Ejemplo 5.18 (Repita-hasta, Kilometraje)

202 202 203 203 204 206 208 208 209 210 212 213 213 215 217 219 221 223 226

CAPITULO 6 SUBALGORITMOS, ARREGLOS Y ELEMENTOS DE ESTRUCTURAS DE DATOS 6.1 Subalgoritmos Ejemplo 6.1 (Introduccin a los subalgoritmos, Promedio de un estudiante)
Ejemplo 6.2 (Subalgoritmos, Promedio de un estudiante) Ejemplo 6.3(Subalgoritmos Promedio de N alumnos)

229

229 229
231 232

6.2 MENUS, UNA APLICACIN DE LOS SUBALGORITMOS


Ejemplo 6.4 (Mens, Calculadora) Ejemplo 6.5 (Mens, Agencia Turismo, Islas) Ejemplo 6.6 (Mens, Agencia Turismo, Islas, preguntas en preferencias, contadores, acumuladores, reportes) Ejemplo 6.7 (Mens, Agencia Turismo Islas, reporte al final) 6.3. DIAGRAMA JERARQUICO DE PROCEDIMIENTOS (DJP) Ejemplo 6.8(DJP, Mens, calculadora) Ejemplo 6.9 (DJP, Mens, Agencia Turismo, Islas) Ejemplo 6.10 (DJP, Mens, Agencia Turismo, reporte) Ejemplo 6.11(DJP, Mens, Agencia Turismo, Biosfera, mas subalgoritmos)

234
234 239 244 248 250 250 251 252 252

6.4 Arreglos Unidimensionados 6.4.1 Operaciones con Arreglos Ejemplo 6.12 (Arreglos, Leer un arreglo de longitud N) Ejemplo 6.13 (Arreglos, manipulacin, lectura, clculos, escritura) Ejemplo 6.14 (Arreglos, elemento mayor y su posicin)

258 260 261 262 264

__________________________________________________________________ 329

6.4.2 Arreglos Paralelos


Ejemplo 6.15 (Arreglos paralelos, Pagos quincenales, planilla) Ejemplo 6.16 (Arreglos Paralelos, Porcentajes de aportacin) Ejemplo 6.17 (Arreglos, Contadores como ndices de un Arreglo)

266
266 268 270

6.4.3 Arreglos y subalgoritmos Ejemplo 6.18 (Arreglos paralelos, Subalgoritmos i-simos, Pagos quincenales, planilla) Ejemplo 6.19 (Arreglos paralelos, Subalgoritmos completos, Pagos quincenales, planilla) Variante de los Ejemplos 6.15 y 6.18 Ejemplo 6.20 (Arreglos paralelos, Mens, Pagos quincenales, planilla) Variante de los Ejemplos 6.15 y 6.19

272 272 274 276

__________________________________________________________________ 330

BIBLIOGRAFA

1.-

Fundamentos de Ada 95. Autor Eraldo Ventura Pancham. Co-autora Ing. Rosbinda Pacheco Banegas, ao 2002, UNITEC.

2.

Fundamentos de Programacin, Autor Luis Joyanes A., Luis Rodrguez, Matilde Fernndez a.. Editorial Mc Graw Hill, Segunda Edicin, Ao 2003

3.

Referencia. Metodologa de la Programacin. Autor Luis J. Aguilar. Editorial McGraw Hill 1era. Edicin.

4.

Referencia. Ada 95 The craft of object oriented programming. Autor John English University of Brighton, Editorial Prentice Hall, Edicin version 1.0. Ao 1997 .

5.

Turbo Pascal con aplicaciones 4.0-6.0., Mxico: Grupo Editorial Iberoamrica, segunda edicin , 1992.

__________________________________________________________________ 331

También podría gustarte