345
UNIVERSIDAD TECNOLOGICA CENTROAMERICANA UNITEC METODOLOGIA DE LA PROGRAMACION SEGUNDA EDICION REVISADA Ing. Rosbinda Pacheco Banegas Lic. Alex R. Tábora Rivera ESCUELA DE CIENCIAS DE LA COMPUTACION Y TELECOMUNICACIONES 2007

Universidad Tecnologica Centroamericana

  • Upload
    alexcen

  • View
    7.380

  • Download
    12

Embed Size (px)

Citation preview

Page 1: Universidad Tecnologica Centroamericana

UNIVERSIDAD TECNOLOGICA CENTROAMERICANA

UNITEC

METODOLOGIA DE LA PROGRAMACION

SEGUNDA EDICION

REVISADA

Ing. Rosbinda Pacheco Banegas

Lic. Alex R. Tábora Rivera

ESCUELA DE CIENCIAS DE LA COMPUTACION

Y TELECOMUNICACIONES

2007

Page 2: Universidad Tecnologica Centroamericana

ii

Título: Metodología de la Programación segunda edición, 2005.

Revisión y reimpresión, 2007.

Autora: Ing. Rosbinda Pacheco Banegas.

Autor de la primera edición: Lic. Alex Tábora Rivera.

Producción de la Escuela de Ciencias de la Computación y Telecomunicaciones. Revisión Técnico-educativa: Lic. Alex Tábora Rivera. Ing. Julio Figueroa. Derechos Reservados: EDUNITEC.

Asesoría Tecno-Pedagógica. Lic. Martha I. Zepeda. Diseño Gráfico Alejandro José López 005.1 P.116 Metodología de la Programación

Prohibida su reproducción sin permiso expreso de UNITEC © EDUNITEC, Tegucigalpa Honduras 2007

Page 3: Universidad Tecnologica Centroamericana

SOBRE LOS AUTORES

a Universidad Tecnológica Centroamericana presenta como un logro más de la

producción de su personal docente, la segunda edición del texto “Metodología de la

Programación” a cargo de la Ing. Rosbinda Pacheco Banegas, siendo la primera edición del

mismo de la autoría del Lic. Alex R. Tábora Rivera (1991).

Rosbinda Pacheco Banegas. La Ing Rosbinda Pacheco Banegas se graduó en la Universidad Nacional Autónoma de

Honduras (UNAH) de la carrera de Ingeniería Química Industrial, y actualmente estudia la

Licenciatura en Administración Industrial y de Negocios en la Universidad Tecnológica

Centroamericana (UNITEC-Laureate Internacional Universities)

Por más de 20 años, la Ing. Pacheco ha sido Docente Titular en el área de Programación a

nivel universitario, habiéndose iniciado en esta área, como discípula del Lic. Alex Tábora

R. reconocido estudioso investigador de la enseñanza de la Programación.

Laboró como docente de Matemática en la UNAH. Se desempeño como asistente del

Gerente de Planta en la Cervecería Hondureña S. A.

En su carrera como docente ha impartido clases en el área Econo-Administrativa,

coordinando Precálculo para Ciencias Económicas, en el área Físico Matemática impartió

Algebra, Cálculo y Programación para Ingeniería. Participó en cursos y proyectos sobre

informática educativa, además fue Coordinadora Administrativa del Centro de Cómputo del

Departamento de Matemática de la UNAH.

Realizó estudios en la Licenciatura de Matemática (UNAH), con orientación en

computación, y en Informática educativa en Murcia España.

Desde 1994 labora en la Universidad Tecnológica Centroamericana (UNITEC), y

actualmente es coordinadora del área de Programación I y II.

Su vocación como formadora, y dedicación a enriquecer el acervo académico del libro con

el que ya se contaba: “Metodología de la programación, Primera edición”, la motivó a

emprender este proyecto: “Metodología de la programación, Segunda edición”, para

L

Page 4: Universidad Tecnologica Centroamericana

ii

aprovechar todas su experiencia con la primera edición y procesar toda la retroalimentación

obtenida todos estos años.

La Ing. Pacheco no sólo ha sobresalido por sus excelentes técnicas pedagógicas, sino que

también por el trato especial con los alumnos. Ella también ha entrenado a muchos de sus

colegas para impartir clases de Programación, enseñándoles paso a paso y con paciencia las

mejores técnicas para poder transmitir y desarrollar de una forma eficaz el pensamiento

lógico que el estudiante necesita para lograr el éxito en la programación de algoritmos

Alex Tábora Rivera

El Lic. Alex Tábora Rivera obtuvo su Bachillerato Universitario en Matemática en la

Universidad Nacional Autónoma de Honduras (UNAH) y su Maestría en Ciencias en

Estadística Matemática en el Centro Interamericano de la Enseñanza de la Estadística

(CIENES) en Chile.

El Lic. Tábora se ha desempeñado como Programador y Analista de Sistemas

Computacionales, desde 1974, en proyectos y oficinas tanto del sector privado como

público.

Desde 1976, ha sido profesor de programación y de cursos afines en distintas universidades

del país. Fue coordinador de la Sección de Computación de la Universidad Nacional

Autónoma de Honduras, e introdujo la reforma de la enseñanza de la programación. Desde

1992 ha estado dictando cursos de programación en UNITEC.

El Lic. Tábora siempre se ha distinguido por su creatividad y su deseo de innovación en el

área de Programación, y por iniciativa de él se dieron los primeros pasos, que ahora se

plasman en esta segunda edición.

Licda. Alejandra B. de Guardado.

Page 5: Universidad Tecnologica Centroamericana

DEDICATORIAS De los autores:

Dedicamos este libro a la Lic. Norma Ponce de Sánchez quién creyó en este proyecto

De Ing. Rosbinda Pacheco Banegas:

A nuestro buen Dios, creador del universo y de quién proviene

toda ciencia y conocimiento.

A mi amado esposo: Augusto César Antúnez Ferrera.

A mis tres hijos

Aida Alejandra

Augusto César

Rosbinda

Por su apoyo y comprensión 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 Ramírez y a la Ing. Jessy Ayestas

Por su colaboración en el diseño y conceptualización de varios ejemplos desarrollados.

Page 6: Universidad Tecnologica Centroamericana

i

EL PRINCIPIO DE LA SABIDURIA ES EL TEMOR DE JEHOVA

Page 7: Universidad Tecnologica Centroamericana

i

Indice General

Introducción v Capítulo 1 Elementos de lógica Matemática 1

1.1 Proposiciones 1

1.2 Operadores Lógicos y Tablas de Verdad 7

La Negación (no) 7

La Conjunción (y) 9

La Disyunción (o) 10

1.3 Tautologías, Contradicciones y Equivalencias 16

1.4 Notación Booleana 21

Capítulo 2 Concepto de Computador y almacenamiento 23

2.1 Concepto de Von Neumann y de Programación 23

2.2 Concepto de almacenamiento y variable 26

2.3 Concepto de Asignación 30

2.4 Condiciones y su Evaluación 38

Capítulo 3 Técnica de Desglose 43

3.1 Introducción al Análisis de un Programa Objeto del Programa 43

3.2 Resumen del Análisis de acuerdo al modelo Von Neumann 46

3.3 Elementos en el Análisis de un P.O.P. Parte I 49

3.4 Desgloses y Pruebas de escritorio 59

3.4.1 Desgloses en Secuencia 60

3.4.2 Desglose con instrucciones de Decisión 72

3.4.3 Desglose con instrucciones de Repetición 83

Page 8: Universidad Tecnologica Centroamericana

ii

3.5 Elementos en el Análisisde un P.O.P. Parte II 98

3.5.1 Diagrama de Arbol de Decisiones 98

3.5.2 Repetición con Decisiones Anidadas 104

3.6 Concepto de Algoritmo 116

Capítulo 4 Fundamentos de Programación Estructurada 119

4.1 Concepto de Sistema 119

4.2 Bloques estructurados atómicos e introducción a la Notación de Diagrama de Flujo 121

4.3 Introducción al Seudocódigo Nolae con los B.e.a 126

4.4 Algoritmos seudocodificados con Concatenación 126

4.5 Algoritmos seudocodificados con Decisión 131

4.6 Algoritmos seudocodificados con Repetición 136

4.7 Diagramas de Flujo con Algoritmos Estructurados 144

4.8 Relación entre Desgloses, Algoritmos, Diagramas 149

4.9 Centinelas, Contadores Acumuladores 151

4.9.1 Centinelas 151

4.9.2 Contadores 153

4.9.3 Acumuladores 162

4.9.4 Repetición controlada por contador 167

Capítulo 5 Estructuras Derivadas 179

5.1 Asociatividad de la concatenación 179

5.2 Variantes y derivadas de la Decisión 181

5.2.1 La Decisión Abreviada 181

5.2.2 Las Decisiones anidadas y las decisiones Concatenadas 183

5.2.3 Bloque Caso 188

5.3 Variantes y derivadas de la Repetición 202

5.3.1 Bloque Para 202

5.3.1.1 Aplicaciones con: Contadores y Acumuladores 203

5.3.1.2 Aplicaciones: Sucesiones 208

5.3.1.3 Aplicaciones: Series Finitas 213

Page 9: Universidad Tecnologica Centroamericana

iii

5.3.2 Bloque repita-Hasta 221

Capítulo 6 Subalgoritmos y Arreglos (elementos de estructura de datos) 229

6.1 Subalgoritmos 229

6.2 Menús, una aplicación de los Subalgoritmos 234

6.3 Diagrama Jerárquico de procedimientos 250

6.4 Arreglos Unidimensionados 258

6.4.1 Operaciones con Arreglos 260

6.4.2 Arreglos Paralelos 266

6.4.3 Arreglos y subalgoritmos 272

APENDICES

A Ejercicios de las secciones: 2.2 a la 4.6 279

B Ejercicios de las secciones 4.7 a 5.2 289

C Ejercicios de las secciones 5.2 a 6.3 299

D Ejercicios de la sección (arreglos) 6.4 305

E Variantes en la resolución de algunos ejemplos y 307 Algunos ejercicios clásicos

Prácticas de Auto-evaluación, (lógica y tres parciales) 315

F Práctica de Laboratorio 01 Lenguaje de programación ADA95 321

G Listado de los ejemplos utilizados en los Capítulos 3 al 6 327 BIBLIOGRAFIA 331

Page 10: Universidad Tecnologica Centroamericana

iv

EL CORAZON DEL ENTENDIDO ADQUIERE SABIDURIA;

Y EL OIDO DE LOS SABIOS BUSCA LA CIENCIA

Page 11: Universidad Tecnologica Centroamericana

v

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 prácticamente a todas las áreas del

quehacer humano. Científicos y artistas, ingenieros y abogados, administradores y médicos,

por mencionar algunos, hacen uso directo e indirecto de las computadoras. La expansión

del Internet a casi todos los rincones del planeta ha marcado un hito en la historia

tecnológica 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 común de los estudiantes es “¿Cómo 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 diseñar una

estrategia de solución para preparar un plan del programa. Todos estos pasos requieren

únicamente del conocimiento de los conceptos básicos de programación y de la

metodología correspondiente que se aprenderá al estudiar este material. Por lo que

cualquier estudiante con cierta experiencia en Álgebra y con suficiente ejercitación puede

llegar a ser capaz de producir programas de dificultad media.

No todas las carreras universitarias requieren profundizar en la programación. 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

programación le permite a este futuro profesional universitario tener una visión más

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 computación se refiere.

El contenido del libro y su desarrollo están orientados para continuar con el aprendizaje de

un lenguaje (PASCAL, ADA 95, etc.); sin embargo, dicho contenido es independiente de

Page 12: Universidad Tecnologica Centroamericana

vi

cualquier lenguaje de programación. Más aun, la presentación del material permite que el

estudiante adquiera los conocimientos y destrezas fundamentales para aprender a programar

en cualquier lenguaje estructurado (y aún no estructurado).

Así que, el objetivo primordial de este libro, es el de preparar al estudiante en una

metodología que le permita analizar un problema de programación de computadoras, y

desarrollar la “lógica” del programa como paso previo a la codificación.

El Capítulo 1 presenta únicamente aquellos conceptos y terminologías elementales de la

lógica matemática requeridas en los capítulos siguientes.

En el Capítulo 2 se desarrollan los conceptos básicos de computador, almacenamiento y

variables, con énfasis en la asignación.

El tema de la técnica de desglose se trata en el Capítulo 3. En la PARTE I de éste, se

comienza con una introducción al análisis de problemas, como un paso previo para preparar

un plan del programa que contribuirá a resolver el problema propuesto y se presentan

además las estructuras básicas de la programación. En la PARTE II se introduce el uso de

Arboles de decisión como una valiosa herramienta de ayuda.

En los Capítulos 4 y 5 se presentan los fundamentos de la programación estructurado por

medio de los diagramas de flujo y el seudocódigo NOLAE. En el desarrollo de estos temas

importantes, se acentúa el aspecto conceptual sin descuidar la aplicación práctica. Se

presentan además variantes de la decisión y de la repetición que permiten enriquecer las

maneras de abordar y resolver problemas de mediana dificultad.

Los subalgoritmos son tratados en el Capítulo 6, se usan los menús como ejemplo de su

aplicación. También se incluye el inicio del estudio de los arreglos con las operaciones de

los arreglos manejadas por subalgoritmos.

Los Apéndices A, B, C, D presentan ejercicios para las distintas secciones del libro. El

Apéndice E presenta métodos alternativos de abordar algún tipo de ejercicios, y la

resolución de ejercicios típicos y de utilidad para personas que continuarán profundizado en

Page 13: Universidad Tecnologica Centroamericana

vii

el estudio de la programación, también se muestran exámenes para auto-evaluación del

estudiante. En el Apéndice G se presenta una sesión inicial en un lenguaje de programación

(ADA95).

En todos los capítulos, se desarrollan Ejemplos que ilustran aspectos teóricos 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 página del texto se

encuentra.

En el Apéndice G se encuentra un listado de los Ejemplos numerados mencionados

anteriormente, a la par, se colocó, entre paréntesis, breves comentarios con palabras claves

para identificar sobre que trata y que aspecto ilustra. Para facilitar búsquedas, al final de la

línea se incluyó, el número de la página en donde se desarrollaron..

Ejemplo: Ejemplo 4.18 (Repetición controlada por contador, leer y sumar N números) pág.169

En todos los capítulos se colocaron, en recuadros, definiciones y palabras claves de la

teoría, también se resaltan en recuadros especiales comentarios y observaciones

importantes, la mayoría de los temas se presentan secciones de Ejercicios, en los cuales

también se citan ejercicios de los respectivos Apéndices, de tal manera que se cuenta con

un compendio de ejercicios variados y de aplicación práctica.

Es el deseo de los autores, que este libro sea de utilidad al lector para adoptar y desarrollar

una Metodología de la Programación.

Page 14: Universidad Tecnologica Centroamericana

viii

“Dímelo y lo olvidaré

Muéstramelo y lo recordaré;

Haciéndolo lo entenderé.”

La importancia de practicar

Page 15: Universidad Tecnologica Centroamericana

____________________________________________________________ 1

CAPITULO 1

ELEMENTOS DE LOGICA MATEMATICA

1.1 PROPOSICIONES

Ejemplos:

• Las computadoras se programan.

• 5 + 4 = 10

En estos ejemplos se ha afirmado algo, en la primera proposición se afirma algo verdadero

y en la segunda algo falso. Dicho de otra manera, la primera proposición es verdadera, la

segunda es falsa. Otros ejemplos podrían ser:

• La semana no tiene 14 días.

• 4 no es un número par.

En estos otros ejemplos se ha negado dos hechos o situaciones. En la primera proposición

se niega algo falso y en la segunda se niega algo verdadero, también se puede decir que la

primera proposición es verdadera y la segunda es falsa.

Toda proposición tiene que tener un valor de veracidad (o valor de verdad), el cual puede

ser VERDADERO o FALSO. Es decir, que toda proposición tiene que ser o bien

verdadera o bien falsa, pero no ambas.

Si se afirma algo verdadero, la proposición es verdadera.

Si se afirma algo falso, la proposición es falsa.

Si se niega algo verdadero, la proposición es falsa.

Si se niega algo falso, la proposición es verdadera.

Una proposición es la aseveración o negación de algo que puede ser verdadero o falso.

Page 16: Universidad Tecnologica Centroamericana

____________________________________________________________

2

Si una oración 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 oración NO es

proposición. Las siguientes frases u oraciones no son proposiciones:

Contraejemplo Razón por la cual NO es proposición

• ¿De qué color es tu camisa? es una oración interrogativa

• ¡ Qué lindo día hace hoy ¡ oración exclamativa y una apreciación subjetiva

• Por favor, sume el primer número con el último. es una oración imperativa

• ___________ es mi hermano. está incompleta

En estos contraejemplos, se considera que no tiene sentido decir que la frase u oración es

verdadera o falsa ( oraciones interrogativas, exclamativas, imperativas o subjetivas).

Las proposiciones se representan por medio de letras minúsculas del alfabeto, así:

• p: Hoy es lunes

• q: Llueve

• r : 2 + 2 ≠ 4

Proposiciones Abiertas:

La siguiente es una proposición 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 proposición. 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 proposición, pero falsa. Este tipo de expresión incompleta, que puede

convertirse en una proposición, será llamada proposición abierta. Se debe notar que una

proposición abierta no es una proposición, pero puede convertirse en una proposición,

verdadera o falsa, al llenar el espacio en blanco.

Page 17: Universidad Tecnologica Centroamericana

____________________________________________________________ 3

En este ejemplo cualquier denominación monetaria del mundo (peso, euro, marco, dólar,

franco, etc. que son nominaciones monetarias en género masculino) podría colocarse en el

espacio y la frase incompleta se convierte en proposición, en algunos casos verdadera y en

otros falsa, por ejemplo:

• La unidad monetaria de Honduras es el Lempira. ( V )

• La unidad monetaria de Honduras es el Euro. ( F )

No se puede llenar el espacio con nombres de universidades, ya que no tendría 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

De esta manera, la proposición abierta anterior se rescribe:

• La unidad monetaria de Honduras es el x

y se dice que la expresión resultante, es una proposición abierta que se puede representar

por p(x).

Se observa que al llenar espacio de la proposición abierta, ésta se transforma en una

proposición que puede ser verdadera o falsa. En el ejemplo anterior el universo sería el

conjunto:

U = {peso, euro, lempira, dólar, 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

específico. Por ejemplo, para la proposición abierta: “x > 0” el universo podría ser el

conjunto de números enteros o bien podría ser el conjunto de todos los números reales,

dependiendo con que clase de números interese o convenga trabajar. En caso de

incertidumbre en cuanto a la selección de un universo, generalmente se selecciona el

Al espacio en blanco de una proposición abierta se le llamará variable y se representará

por una letra (como x, y, z).

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.

Page 18: Universidad Tecnologica Centroamericana

____________________________________________________________

4

universo más amplio posible, que es el conjunto de todos los valores posibles que

convierten la proposición abierta en una proposición, 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 números, se dice que la variable es de tipo numérico.

Si x representa un número de personas, convendría entonces escoger U como el conjunto de

números enteros positivos.

Predicador

En una proposición 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 continuación se presentan varios ejemplos de proposiciones abiertas y sus respectivos

universos.

Ejemplos 1.1

1. p(x) : 4 x = 7 U podría ser el conjunto de números 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 varón, y nombre de persona} Debe acordarse que cuando se llena espacio (la variable) de una proposición abierta con un

valor del universo, la proposición abierta se transforma en una proposición. Sea la

proposición abierta es p(x) y un valor del universo a, entonces el “llenado” de x por el

valor específico 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:

A una proposición abierta también se le llama predicado y se representa por p(x), q(x),

r(x,y), etc., donde x representa a la variable.

Page 19: Universidad Tecnologica Centroamericana

____________________________________________________________ 5

Ejemplos 1.2

1. p(x) : x es la moneda de Japón

p (el Yen) : El Yen es la moneda de Japón (Verdadero) 2. p(x) : x es un número mayor que 20

p (12) : 12 es un número mayor que 20 (Falso) 3. p(x,y) : x es un múltiplo de y

p (35,5) : 35 es un múltiplo de 5 (Verdadero)

Ejemplo 1.3 Si q (z) : z es un país que colinda con Honduras El U mas amplio que se puede considerar es el conjunto de todos los países. El conjunto

solución sería: C.S. = {Guatemala, El Salvador, Nicaragua}

Ya que si en vez de z, se coloca uno de estos nombres de países, la proposición 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 }

Evaluación de Predicados

El Conjunto Solución (representado por C.S.) lo conforman aquellos elementos de U

que hacen que la proposición sea verdadera.

Evaluar lógicamente o simplemente evaluar una proposición abierta para un valor

dado de la variable significa determinar el valor de veracidad, Verdadero o Falso, que

tiene la proposición una vez que se “llena” la variable (o se “sustituye” la variable) por

el valor dado. Véanse los siguientes ejemplos:

Page 20: Universidad Tecnologica Centroamericana

____________________________________________________________

6

Ejemplos 1.5 a) Evaluar lógicamente la proposición abierta “x + 3 = 5” para 1 (o para x = 1).

Para evaluar la proposición, se coloca 1 en la variable y obteniéndose “1 + 3 = 5” y

como no es cierto, se evalúa lógicamente la proposición como FALSA. b) Evaluar “La capital de Francia es ____________”, para el valor “París”.

Llenando el espacio con el valor se obtiene: “La capital de Francia es París” y se

determina que el valor lógico de la proposición es VERDADERO. c) Evaluar q(x, y): x es un múltiplo de y, para (100,10).

Al sustituir los valores (en el orden indicado) se obtiene “100 es múltiplo de 10” y la

proposición que resulta es VERDADERA. d) Evaluar r(x, y, z): x + 3y > z para x=2, z = 5, y = -1

Al sustituir los valores indicados: 2 + 3(-1) > 5 que al simplificar queda como:

2 - 3 > 5

-1 > 5 lo cual es una proposición FALSA.

EJERCICIOS 1.1

1. ¿Cuales de las siguientes frases u oraciones constituyen proposiciones,

proposiciones abiertas o ninguna de ellas?

a) Los ríos del planeta Marte son rojos. ___________

b) ¿Qué día 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 tía de ____________. ___________

g) Estudia cada día para que apruebes el curso. ___________

h) Si estudias cada día aprobaras el curso. ___________

i) y – x = 23 ___________

j) Fuiste al cine o al circo. ___________

k) z < 30 ___________

Page 21: Universidad Tecnologica Centroamericana

____________________________________________________________ 7

2.- .Determine la variable y establezca un universo “apropiado” para cada una de las

siguientes proposiciones abiertas.

a) n es un número 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 proposición 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. Evalúe 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 número par” para el valor 13

e) “x – y = 4 y” para (10,2)

1.2 OPERADORES LOGICOS Y TABLAS DE VERDAD La Negación (no) Si se tiene la proposición

• p: La semana tiene 7 días (V),

Se puede, a partir de ella, construir una nueva proposición negando su contenido, así:

• La semana no tiene 7 días o bien

• No es cierto que la semana tenga 7 días

Estas nuevas proposiciones (que se consideran equivalentes entre si), se denominan la

negación de p, que se representa por ~p (que se lee “no p”). Y si p es verdadera, su

negación es falsa; y viceversa, si p es falsa, ~p es verdadera. Esta situación la representa en

Page 22: Universidad Tecnologica Centroamericana

____________________________________________________________

8

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 ~p

V F

F V

Ejemplo 1.6

Dada la proposición q: 2 + 2 ≠ 4, redactar ~q y determinar su valor de verdad

Solución: Proposición Valor de verdad

q: 2 + 2 ≠ 4 (F) es la proposición original, su negación es:

~ q: ~ (2 +2 ≠ 4) (V) ó en forma equivalente ~ q: 2 + 2 = 4 (V) Considerando el ejemplo anterior, se presenta una tabla de equivalencia de negación para

símbolos matemáticos:

SIMBOLO NEGACION = ≠ ≠ = > ≤ ≥ < < ≥ ≤ >

Ejemplo 1.7 Ejemplo 1.8

p(x): 2 + 3 * x > 10 q(x, y): x < y

~p(x): ~ (2 + 3 * x > 10) ~ q(x, y): ~(x < y)

~ p(x): 2 + 3 * x < 10 ~ q(x, y): x > y

Page 23: Universidad Tecnologica Centroamericana

____________________________________________________________ 9

La Conjunción “y” Dadas dos proposiciones p y q, por ejemplo:

p : Hoy es lunes

q : está lloviendo

Se puede formar una nueva proposición uniéndolas por medio de la conjunción “y”, de esta

manera:

Hoy es lunes y está lloviendo

La que se considera una proposición y que se representa por: p ^ q

Al ser p ^ q una proposición, 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 definición vienen dados por

la siguiente tabla:

Cada línea 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 más,

“p y q “es una proposición compuesta, no es simple y se descompone en p y en q.

Según lo que se puede observar de la tabla de verdad de la conjunción si se toma la segunda

línea, si “Hoy es Lunes” es verdadero, pero “está lloviendo” es falso; por definición “Hoy

es lunes y esta lloviendo” seria falso, de acuerdo a la segunda línea de la tabla. Se

concluye diciendo que la conjunción de “p y q” es únicamente verdadera cuando ambos p y

q lo son. El siguiente esquema ilustra lo expresado anteriormente.

p q p ^ q

V V V

V F F

F V F

F F F

La conjunción solamente es verdadera si las dos (proposiciones) son verdaderas.

Page 24: Universidad Tecnologica Centroamericana

____________________________________________________________

10

Ejemplo 1.9 Determinar el valor de verdad de p ^ q:

p ^ q: Hoy es martes ^ está lloviendo V ^ F • Evaluar cada proposición simple. ? F •Evaluar la conjunción.

• Se trabaja en forma de triángulo invertido1 Usando la Tabla de Verdad

La disyunción “o” También se puede obtener una nueva proposición a partir de las dos anteriores, p y q, si se

unen por medio de la disyunción “o”. Y se denota por “p v q”

Cuyos valores de verdad se definen por medio de la siguiente tabla

1 ) Trabajar en forma de triángulo invertido, implica que se colocarán los valores de verdad de las proposiciones en forma vertical, debajo de cada una y se copiarán todos los operadores que intervienen en la proposición compuesta, se irán evaluando hasta obtener el valor de verdad final de ésta, el cual quedará en la base del triángulo.

P q p ^ q

V V V

V F F F V F

F F F

p q p v q

V V V

V F V

F V V

F F F La disyunción solamente es falsa si ambas son falsas

Page 25: Universidad Tecnologica Centroamericana

____________________________________________________________ 11

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 •Evaluación de cada proposición simple.

? V • Evaluación de la disyunción.

Aparte de la negación, conjunción y disyunción, existen otros operadores lógicos que no se

estudiarán en este texto. Sin embargo, con estos tres se pueden construir expresiones

proposicionales más complejas, que al resultar de la aplicación de estos operadores una o

más veces, y al ser proposición 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 proposición compuesta se construye una tabla de valores de veracidad, o

tabla de verdad para dicha proposición.

Ejemplo 1.11 Construir la tabla de verdad de (p v ~ q) Se comienza colocando las proposiciones en orden alfabético, y todas las posibles

combinaciones de V y F de p y q.

p q P v q

V V V

V F V

F V V

F F F

Observación 1.2.1 En general el número de combinaciones (renglones totales de la tabla) es 2ⁿ, en donde “n” es el número 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.

Page 26: Universidad Tecnologica Centroamericana

____________________________________________________________

12

p q

V V

V F

F V

F F A continuación, se encuentran los valores que corresponderían a ~q:

p q ~q

V V F

V F V

F V F

F F V Luego por cada renglón se hace la conjunción de p con ~q observando los valores de las

columnas de p y de ~q, aplicando las reglas de la disyunción.

p q ~q p v ~ q

V V F V

V F V V

F V F F

F F V V La última columna corresponde a los valores de verdad de p v ~ q según los valores de p y

de q como se especifican en la tabla.

Los operadores lógicos y construcción de tablas de verdad se aplican a las proposiciones

abiertas tal como se aplican a las proposiciones.

Ejemplo 1.12 Sean p(x) : x > 0

q(x, y): x < y

Construir la tabla de: ~ q(x, y) ^ [~p(x) v q(x, y) ] y posteriormente evaluarla para

los valores: X = 5 e y = 2 Solución:

Por simplificación se escribirá ~q ^ (~ p v q) y construyendo la tabla, columna a columna

Page 27: Universidad Tecnologica Centroamericana

____________________________________________________________ 13

p q ~p ~p v q ~ q ~q ^ (~ p v q)

V V F V F F

V F F F V F

F V V V F F

F F V V V V

Tabla 1.2.1

.

Evaluar lógicamente la proposición compuesta anterior, para los valores de x e y dados: x = 5 y y =2 Se obtiene que:

p (5): 5 > 0 (sustituyendo 5 por x) es Verdadero y

q (5,2): 5 < 2, que es Falso.

Observando nuevamente la tabla de verdad:

p q ~p ~p v q ~ q ~q ^ (~ p v q)

V V F V F F

V F F F V F *

F V V V F F

F F V V V V

Tabla 1.2.1

Esto corresponde a la segunda línea* de la Tabla anterior, cuando p es V y q es F, y la

proposición “~q ^ (~ p v q)” sería ~ (5 < 2) ^ [~ (5 > 0) v (5 < 2)] que también se puede

Observación 1.2.3

Recuerde: la conjunción 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 interés con (F).

En forma semejante, la disyunción es falsa solamente si las dos son falsas, se deberá

colocar (F) en donde las dos proposiciones son falsas y después rellena con (V)

Page 28: Universidad Tecnologica Centroamericana

____________________________________________________________

14

evaluar lógicamente, asignando los valores de veracidad correspondientes a cada

proposición y aplicando la definición de los operadores lógicos, de la siguiente manera:

~ (5 < 2) ^ (~ (5 > 0) V (5 < 2))

~ F ^ (~ V F )

V ^ ( F v F )

V ^ F

F

Y se concluye que la proposición ~ (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 número de proposiciones simples es 3, se tiene que:

El número de renglones es = 2n = 2³ = 8, o sea que se tendrán 8 renglones en esta tabla.

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

V V F F V F F

V F V F V V V

V F F F V F F

F V V V V V V

F V F V V V V

F F V V F V F

F F F V F V F

Observación 1.2.4 Continuando con la Observación 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 colocarán entonces cuatro (V) y cuatro (F), para “q” se

colocarán 4/2 =2, alternos dos (V) y dos (F), finalmente para “r”, 2/2=1 serán alternos un (V)

y un (F).

Método Directo

Page 29: Universidad Tecnologica Centroamericana

____________________________________________________________ 15

Ejemplo 1.14 Dadas las siguientes proposiciones abiertas, determinar el valor de verdad de la proposición 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. Método 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 ( (11< 6) ^ (12 < 5) )

V v (F ^ F)

V v F

V

B. Método de Sustitución (o Directo , es el mas corto): p(x): x * x ≠ 36 q(x, y): y + 1 < x r(x, y): 2 * x > y /2

P (6) : 6 * 6 ≠ 36 q (6,10) : 10 + 1 < 6 r (10): 2 * 6 > 10/2

36 ≠ 36 (F) 11 < 6 (F) 12 > 5 (V)

Sustituyendo los valores de verdad encontrados en la proposición de interés: ~ p v (q ^ ~ r),

~ F v ( F ^ ~ V )

V v ( F ^ F )

V v F

V C. Usando la Tabla de Verdad (habiendo evaluado previamente cada proposición):

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

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

Page 30: Universidad Tecnologica Centroamericana

____________________________________________________________

16

Como se puede observar, coincide con el valor de verdad encontrado utilizando los

métodos previamente mencionados.

EJERCICIOS 1.2.1

1. Construya las tablas de verdad para las siguientes proposiciones:

a) ~ p ^ q

b) ~(~p) ^ p c) ~ (~ p v q)

d) ~ ( p ^ q) v ( p ^ ~ q )

e) ~ p v ( r ^ s)

f) p ^ (~ r ^ s )

g) (r v ~ t) ^ ~q

h) p v ~ (r v ~p)

i) ( p v s ) ^ (( ~ q ^ s ) v p )

j) ~ (p ^ ~ (~ r ^ ~ s))

2. Dadas p ( x ) : x < 10 y q ( x,y ) : x = y

a) Construya la tabla para p v ( ~ p ^ q )

b) Encuentre el valor de verdad para el caso de que:

i) x = 5 y = 5

ii) x = 3 y = 0

iii) x = 11 y = 11

iv) x = 20 y = 7

1.3 TAUTOLOGIAS, CONTRADICCIONES Y EQUIVALENCIAS Considérese la tabla de verdad de p v ~ p

p ~p p v ~p

V F V

F V V

Page 31: Universidad Tecnologica Centroamericana

____________________________________________________________ 17

Resulta que la proposición p v ~ p es siempre verdadera, independientemente de los valores

que tome p, se dirá que p v ~ p es una tautología. Por otra parte, si se considera la proposición p ^ ~ p

Por último, considerando las proposiciones (~ p ^ ~ q) y ~ ( p v q )

Se elaborará las tablas de verdad de cada una de ellas, se tiene para (~ p ^ ~ q):

Ahora para ~ ( p v q):

p q p v q ~ (p v q)

V V V F V F V F F V V F F F F V

Se puede observar que sus valores de verdad son los mismos (comparar las últimas columnas de ambas tablas). En esta situación se dice que las proposiciones son equivalentes y se denota así:

~ ( p v q ) ⇔ ( ~ p ^ ~ q )

P ~p p ^ ~p

V F F

F V F

p q ~p ~q ~ p ^ ~ q

V V F F F V F F V F F V V F F F F V V V

Una tautología es una proposición cuya tabla resulta en “Verdadera” en cada

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 proposición p ^ ~ p es una

contradicción.

Page 32: Universidad Tecnologica Centroamericana

____________________________________________________________

18

Ejemplo 1.15 Demostrar que las siguientes proposiciones son equivalentes:

p v (q v r) y (p v q) v r Solución: se hará una tabla de verdad para cada una, por simplificación se utilizarán las

mismas columnas de p, q y r ya que son comunes en ambas proposiciones compuestas:

Se concluye entonces que las dos proposiciones anteriores son equivalentes.

Es decir: p v (q v r) ⇔ (p v q) v r

P q r q v r p v (q v r) p v q (p v q) v r

V V V V V V V

V V F V V V V

V F V V V V V

V F F F V V V

F V V V V V V

F V F V V V V

F F V V V F V

F F F F F F F

Son Equivalentes

Dos proposiciones son equivalentes cuando para cada renglón (de sus respectivas tablas de verdad) tienen los mismos valores de verdad.

Page 33: Universidad Tecnologica Centroamericana

____________________________________________________________ 19

Leyes básicas de la lógica 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 Básicas de la Lógica

Doble negación

~ ( ~ p ) ⇔ p

Conmutatividad

p v q ⇔ q v p p ^ q ⇔ q ^ p

Asociatividad

( p v q ) v r ⇔ p v ( q v r ) ( p ^ q ) ^ r ⇔ p ^ ( q ^ r )

Distributividad

p ^ ( q v r ) ⇔ ( p ^ q ) v (p ^ r ) p v ( q ^ r ) ⇔ ( p v q ) ^ ( p v r )

Identidad

p v F ⇔ p p ^ V ⇔ p

Ídem potencia

p v p ⇔ p p ^ p ⇔ p

Elemento absorbente

p ^ F ⇔ F p v V ⇔ V

Absorción

p ^ ( p v q ) ⇔ p v ( p ^ q ) ⇔ p

DeMorgan

~ ( p v q ) ⇔ ~ p ^ ~ q, ~ ( p ^ q ) ⇔ ~ p v ~ q

Page 34: Universidad Tecnologica Centroamericana

____________________________________________________________

20

EJERCICIOS 1.3

1.- Compruebe que las expresiones de las leyes básicas de la lógica constituyen

realmente equivalencias.

2.- Suponga que x = 3, y = -2. Traduzca a lenguaje simbólico 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 vacíos en las siguientes tablas:

a)

b)

P q p ~ q

V V F F

V F V

F V F

F F V F

p q q ~ ( )

V V

V F V F F

F V V F

F F F V

Page 35: Universidad Tecnologica Centroamericana

____________________________________________________________ 21

c)

1.4 NOTACION BOOLEANA

Otra forma de representar los valores V y F es utilizando 1 y 0 respectivamente. Esta

notación se llama boolena.

De esta manera las tablas de los operadores lógicos básicos siguiendo la costumbre de

colocar primero los valores 0 (falso) quedaría de la siguiente manera:

Negación: Conjunción:

p q r (p ) ~q

V V V F

V V F V F V

V F V V

V F F V V

F V F F F

F V F F

F

F

p ~p

0

1

1

0

P q p ^ q

0

0

1

1

0

1

0

1

0

0

0

1

Page 36: Universidad Tecnologica Centroamericana

____________________________________________________________

22

Disyunción:

P q p v q

0

0

1

1

0

1

0

1

0

1

1

1

Page 37: Universidad Tecnologica Centroamericana

_______________________________________________________________ 23

CAPITULO 2

CONCEPTO DE COMPUTADOR Y ALMACENAMIENTO

2.1 CONCEPTO VON NEUMANN Y DE PROGRAMACION

Aparte de velocidad y precisión, la característica fundamental que diferencia a la

computadora de otras máquinas es el hecho de que puede almacenar previamente los datos

que va a procesar, los resultados obtenidos y más aún, 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

específica constituyen lo que se llama un programa. En los capítulos siguientes se

desarrollan técnicas para planificar los programas para la computadora y se presentará la

metodología para diseñar 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 función de cada uno de ellos. Existen

muchos diseños y arquitecturas para computadoras, cuya descripción esta fuera de los

objetivos de este libro, y para efectos de este estudio, se considerará un modelo basado en

el de Von Neumann.

Gráficamente 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:

Entrada U.C.P y

Almacenamiento Salida

Page 38: Universidad Tecnologica Centroamericana

_______________________________________________________________ 24

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 código de barras, el micrófono, etc. La computadora

solicita ingreso de datos de acuerdo al programa que previamente se le ha proporcionado.

Del inglés 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 través

de los dispositivos de salida la computadora proporciona los resultados deseados, interroga

sobre las acciones que debe o puede tomar, y proporciona alguna otra información, todo

ello según 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 más

comunes; pero no son los únicos. También del inglés 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 efectúan las operaciones

básicas del proceso. Se pueden distinguir tres componentes principales:

Unidad de Control

Interpreta las instrucciones y dirige el resto de dispositivos para la ejecución del programa. Unidad Lógica / Aritmética

Efectúa los cálculos aritméticos requeridos (sumas, productos, etc.) y puede evaluar la

veracidad o falsedad de algunas proposiciones y efectuar operaciones lógicas.

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 más extensa, no es tan veloz

Page 39: Universidad Tecnologica Centroamericana

_______________________________________________________________ 25

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

magnéticos).

Cuando se programa un computador, se escriben las instrucciones de acuerdo a cierto

código preestablecido dentro de la sintaxis de un lenguaje de programación de

computadoras. Por ejemplo, si se desea que la computadora calcule el porcentaje de

impuesto sobre la venta, no se usa el español para indicar la instrucción “calcule el 12% de

la venta” (aunque ello es posible), sino que se deberán usar las reglas de un lenguaje de

programación como ADA, por ejemplo “IMP:= VAL_VEN * 0.12;”.

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.

Unidad Lógica/Aritmética

CONTROL

Memoria-Almacenamiento

Principal

Memoria Auxiliar

Unidad Lógica/Aritmética

Unidad de CONTROL

Memoria –Almacenamiento

Principal

Aprender un lenguaje de programación, consiste en aprender las reglas para

codificar las instrucciones que forman un programa que la computadora ejecutará

cuando se le indique.

Page 40: Universidad Tecnologica Centroamericana

_______________________________________________________________ 26

_____ Por medio de las unidades I/O se establece una comunicación 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 programación para

proporcionárselo al computador.

_____ La unidad de control puede ejecutar instrucciones como multiplicaciones y

divisiones.

_____Una unidad de entrada podría 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 ejecución, distingue a la computadora de

cualquier máquina (cuando cualquier otra máquina 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 numéricos.

Concepto de Variable

.

Si el dato es numérico, se dice que la variable es numérica. Imagínese 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 gráfico:

De esta manera, la variable tiene dos componentes:

TOTAL

11550000

Una variable es un espacio reservado en la memoria en donde se puede almacenar un dato

Page 41: Universidad Tecnologica Centroamericana

_______________________________________________________________ 27

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” según los requerimientos del

programa en cuestión.

Para agilizar el trabajo, se simplifica el dibujo de la caja de la siguiente manera:

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. Otras formas de expresar esta situación

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

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 instrucción “almacene 18 en la variable SALDO”. Para ello se

escoge una caja, por ejemplo la primera y se identifica con el nombre SALDO.

TOTAL

1,500

Page 42: Universidad Tecnologica Centroamericana

_______________________________________________________________ 28

SALDO

Y se coloca el número 18

SALDO

18

De la misma manera se procede con las siguientes dos instrucciones, y se llega a

SALDO PAGO RESTO

18 15 34

La forma en que se ha indicado las instrucciones: “almacene 18 en la variable SALDO” no

ha está codificada en ningún lenguaje de programación (lo cual se estudiará más 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 haría la computadora.

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.

A la acción de ejecutar las instrucciones a lápiz, simulando un computador, se le

llama prueba de escritorio (P.E.).

Page 43: Universidad Tecnologica Centroamericana

_______________________________________________________________ 29

T45 TOTAL IMPUESTO

10 2,300 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 estarán utilizando son las

siguientes:

1. Debe comenzar con una letra.

2. Después de la letra inicial se pueden utilizar más letras o números.

3. No se aceptan espacios en blanco, símbolos que indican operaciones ( +, - , *, / ),

signos de puntuación y otros caracteres especiales.

4. Se acepta el subrayado “ _ ”.

5. Pueden utilizarse mayúsculas y minúsculas indistintamente.

6. Pueden utilizarse hasta 80 caracteres, pero lo más 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 programación 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

2. En ALTURA guarde 1.80

En PESO almacene 140

En CINTURA ponga 31

3. Coloque -5.7 en X762

Guarde en TFC4 el numero 0.002

Ponga -2/3 en HY23

En YT_23 almacene 100000

Page 44: Universidad Tecnologica Centroamericana

_______________________________________________________________ 30

2.3 CONCEPTO DE ASIGNACION En la sección anterior se utilizan varias palabras del lenguaje común para indicar el

almacenamiento (guarde, almacene, ponga, etc.). Ahora se procede a uniformar la

terminología para efectos de simplificación.

De esta manera el último ejemplo se reescribiría:

1. Asigne 10 a la variable T45

2. A TOTAL asígnele 2300

3. Asigne 24 en IMPUESTO. Una manera simbólica para representarlos es utilizando una flecha con punta hacia la

izquierda, como se muestra a continuación:

1. T45 10

2. TOTAL 2300

3. IMPUESTO 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

instrucción K 6, se tiene :

K

6

Si luego si se quiere ejecutar la instrucción K 14, primero se borra el 6

K

Y se escribe el 14

Se escoge el término asignar para indicar el almacenamiento de un valor en una variable.

Page 45: Universidad Tecnologica Centroamericana

_______________________________________________________________ 31

K

14

Lo cual es el resultado final de las dos asignaciones

K 6

K 14

Ejecutadas una después 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 reasignación se pierde irremediablemente.

Obviamente que si se desea conservar un valor en la memoria, no se utilizará la misma

variable en la asignación correspondiente. Como en la prueba de escritorio resulta

incómodo estar borrando cada vez que se reasigna el valor de una variable, se

acostumbra tachar el número que se pierde. Por ejemplo, en las asignaciones anteriores

primero se tiene K 6

Luego al ejecutar K 14

Primero se tacha el 6 luego se escribe el 14

K K

6 6

14

En el último dibujo aún se puede ver que, aunque tachado, el 6 fue el primer número

que se asigna, pero para efectos de ejecución del programa este número 6 ya no existe,

en su lugar está el 14. En el modelo de computador adoptado, en una variable sólo se

K

6

Page 46: Universidad Tecnologica Centroamericana

_______________________________________________________________ 32

puede almacenar un solo dato y del mismo tipo de la variable (i.e. si la variable es

numérica, sólo se puede guardar un número a la vez en esa variable).

Como la asignación pierde completamente el valor previo a una nueva asignación, se

dice que es destructiva. Aunque la característica 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 números

que ya no se necesitan.

Ejemplo 2.3 Realizar la prueba de escritorio para las siguientes asignaciones :

T 10

R 2

R 43

T 87

Las asignaciones se ejecutan en el orden que aparecen

T 10 R 2 R 34 T 87

No solamente valores constantes se pueden asignar (como el 10, 12, 2, 34 y 87 del ejemplo

anterior), sino también el valor de otras variables, u operaciones entre los valores de otras

variables.

T 10

T R 10 2

T R 10 2

34

T R 10 2

87 34

Page 47: Universidad Tecnologica Centroamericana

_______________________________________________________________ 33

Ejemplo 2.4 Realice la prueba de escritorio para las siguientes asignaciones

RIS 10

X2 RIS + 3

TOT RIS

SOL 5 * X2 (el asterisco * indica multiplicación)

Solución 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 X2

10 13

Al sustituir 10 por RIS, en la expresión aritmética RIS +3, se dices que se ha evaluado

(encontrado el valor) de la expresión.

A continuación se ejecuta TOT RIS

RIS X2 TOT

10 13 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. Obsérvese que RIS mantuvo su valor, no lo perdió.

Page 48: Universidad Tecnologica Centroamericana

_______________________________________________________________ 34

Finalmente se ejecuta SOL 5 * X2

RIS X2 TOT SOL

0 13 10 65

En una asignación, el nombre de la variable asignada puede aparecer en la expresión de la

derecha, ejemplo:

Ejemplo 2.5

A 23

A A + 5

En este caso primero se asigna 23 en A, luego al evaluar la expresión A + 5 se obtiene 28,

que se asigna a la misma variable A.

Primero …Luego

A A

23 23

28

Cuando en las asignaciones intervienen varias operaciones aritméticas, se debe considerar

la prioridad en las operaciones. La menor prioridad la tienen las sumas y las restas, después

siguen el producto y la división y finalmente tienen mayor prioridad los paréntesis y las

potencias, esto se muestra el siguiente gráfico:

Observación 2.3.1. Puede notar que la asignación es diferente del igual “=” en las

matemáticas, si a ambos lados se cancela A, se obtiene que 0 es igual a 5 lo que no

es cierto

Page 49: Universidad Tecnologica Centroamericana

_______________________________________________________________ 35

Jerarquía de las operaciones

En el caso de operaciones con la misma prioridad, se realizan por orden de aparición de

izquierda a derecha.

Para realizar pruebas de escritorio de asignaciones que involucren expresiones aritméticas,

siempre se debe considerar, la prioridad en las operaciones.

Ejemplo 2.6 p 20

q 5

r p + q

r r + 5

q q * 2

s p – q * (2 – r/q) (1)1

Para determinar el valor de “s” se considera la prioridad en las operaciones

anteriormente citadas, así:

(1)S p – q * (2 – r/q)

S 20 – 10 * (2 – 30/10)

S 20 – 10 * (2 – 3)

S 20 – 10 * (–1)

S 20 + 10

S 30

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

p q r s (1)

20 5 25 30

10 30

+, -

*, /

( ), potencias

Menor Prioridad

Mayor Prioridad

Page 50: Universidad Tecnologica Centroamericana

_______________________________________________________________ 36

EJERCICIOS 2.3.1 Para cada ejercicio realice la prueba de escritorio para el conjunto de instrucciones que se

indican.

1. a 10

b 17

c a + b

d b – a

e a * b

f a – 4 * (e – b)

g a²

2.- Tot 100

Res 70

Dif Tot – Res

Tot 300

Res 210

Dif Tot – Res

3.- N 1

P 0

N n + 1

P P + 5

N N + 1

P P + 7

N N + 1

P P – 2

4.- X 1

Signo –1

X X * 3

Signo – Signo

T Signo * X

Page 51: Universidad Tecnologica Centroamericana

_______________________________________________________________ 37

X X * 3

Signo – Signo

T Signo * X

5.- Q 3

R 2

D (Q – 1)² / (1 – 1 / (R + 1))

6.- A 10

B 2

C A – 2 * B

D 1 – B² / (C – 2 ) – A * (1 – B)

7- X 8

Y sqrt (X + 1)

Z, | 1–Y | + 2

8.- dey 21

inj 1 / sqrt (dey + 4)

pli (22 – dey) / 10 * inj

9.- X1 5

X2 7

Cambio X1

X1 X2

X2 Cambio

10.- a 10 rem 2

B 15

C (a + b) * 4

D c rem 3

Observación 2.3 2: • sqrt significa raíz cuadrada y • “a rem b” es el residuo de dividir a entre b en

aritmética entera, no se admiten decimales.

Page 52: Universidad Tecnologica Centroamericana

_______________________________________________________________ 38

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 según sea el caso, a partir de alguna condición

que satisfaga o no los datos.

• En una condición generalmente se compara variables, expresiones aritméticas con

constantes u otras variables. Por ejemplo:

TOT > 0

SALDO – 200 < 1200

IMPUESTO – VENTA = COMISION

• Expresiones lógicas 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 lógicos, los cuales se enlistan a

continuación:

Operadores relacionales Operadores lógicos

Símbolo

Descripción Símbolo Descripción

> Mayor que < Menor que ⌐ ó ~ Negación (no)

= Igual ≠ Distinto

^

Conjunción (y)

≤ Menor o igual ≥ Mayor o igual

v Disyunción (o)

En este sentido se considera que una condición como una proposición abierta, en

donde las variables que aparecen son efectivamente variables de la memoria

previamente asignadas.

Evaluar una condición significa que se sustituyen las variables por los valores que

aparecen en la memoria y se determina un valor de verdad (V o F).

Page 53: Universidad Tecnologica Centroamericana

_______________________________________________________________ 39

a) TOTAL < 1000

b) PAGO – IMPTO > 900

c) PAGO > 200 y SALDO < 700

d) No (TOTAL < 1000)

Ejemplo 2.7

De acuerdo al estado de la siguiente memoria, evalúe las condiciones que se presentan.

En cada caso se sustituye el nombre de la variable por su valor y se evalúa la condición

según las reglas de la aritmética y la lógica matemática.

a) TOTAL < 1000 al sustituir 800 < 1000 es Verdadera

b) PAGO- IMPTO > 100 sustituyendo 750 – 50 > 900 efectuando la resta

700>900 lo que resulta Falso.

c) PAGO > 200 y SALDO < 700 sustituyendo (750 > 200) y (700 < 700)

esta proporción y ésta

es verdadera es Falsa.

Aplicando la tabla de la conjunción se tiene que V y F resulta ser FALSO

Utilizando el método directo se tiene:

(750 > 200) Y (700 < 700)

V ^ F •Evaluación de las proposiciones simples.

F •Evaluación de la conjunción.

TOTAL PAGO IMPTO SALDO

800 750 50 700

Page 54: Universidad Tecnologica Centroamericana

_______________________________________________________________ 40

d) No (TOTAL < 1000) Sustituyendo se obtiene No (800 < 1000)

Como la proposición dentro de los paréntesis es Verdadera, su negación resulta

Falsa

Utilizando el método directo se tiene:

No (800 < 1000) • Evaluación de la desigualdad

~ V • Evaluación de la negación.

F

Ejemplo 2.8

Realizar primero las asignaciones y luego evaluar las condiciones: Pago 1500

Impto 0.12 * Pago

Total Pago + Impto

Saldo 2000 - Total

1) Total > 0 (V) 2) Saldo – 200 < 1200 (V)

1680 > 0 320 – 200 < 1200

V 120 < 1200

V

3) No se cumple que (Impto > 100) ó (pago < 500 y saldo = 320) (F)

~ (180 > 100) v ((1500< 500) ^ (320 = 320))

~ V v ( F ^ V)

F v F

F

Pago Impto Total Saldo

1500 180 1680 320

Page 55: Universidad Tecnologica Centroamericana

_______________________________________________________________ 41

EJERCICIOS 2.4

En cada ejercicio realizar primero las asignaciones y luego evaluar las condiciones:

1.- M 23

N M – 17

M + N < 30

M > 0

N = 4

2.- Pago 567

Impto pago * 0.12

Total pago + Impto

Impto 45

Pago < 600 ó total < 700

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

3.- I 1

J I + 1

K I + 2 * J

I = J – 1

K – J ≥ 2

No se cumple que (K ≠ 5 ó J * I < 10)

4.- x 45

y 36

Page 56: Universidad Tecnologica Centroamericana

_______________________________________________________________ 42

x – y ≠ 0

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

Page 57: Universidad Tecnologica Centroamericana

______________________________________________________________________ 43

CAPITULO 3

TÉCNICA DE DESGLOSE 3.1 INTRODUCCIÓN AL ANÁLISIS DE UN PROBLEMA OBJETO DEL

PROGRAMA (P.O.P.)

Entre otras razones, se utilizan las computadoras para que realicen tareas de manera más

eficiente y rápida 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 acción de escribir estas

instrucciones se le llama programar. Al programar se debe diseñar un conjunto de instrucciones que la computadora pueda

“entender”1. Para ello se escoge cierto lenguaje para la computadora tienen un significado

específico de acuerdo a cierto “código” que una o varias personas haya preparado. Por

ejemplo para indicarle que almacene el número 7 en la variable T, se puede escribir así: MOVE 7 TO T o también así:

T := 7 ; Dependiendo de la forma en que se decida escribir la asignación, se tendrá un código

distinto. Las diferentes formas de escribir las instrucciones para la computadora son lo que

se conoce como lenguajes de programación. Una persona que diseña 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 propósito de este libro es el de proporcionar un método y técnica para producir

programas.

1 “Entender” o sea que al proporcionársele una instrucción sea capaz de realizar la acción indicada por la instrucción.

Page 58: Universidad Tecnologica Centroamericana

______________________________________________________________________ 44

Para ilustrar los conceptos básicos de la programación, se considera el problema que tiene

un profesor para procesar las distintas evaluaciones que tiene en un curso y que involucra

varios componentes: dos exámenes 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 calificación final de

cada estudiante tiene que efectuar varios cálculos aritméticos. Esta tarea, aparte de tediosa,

requiere de mucho cuidado por la naturaleza de la misma, por lo que constituye una

situación muy apropiada de aplicación de la computadora. Para simplificar su trabajo, el profesor decide usar la computadora para resolver el

problema del cálculo de calificaciones de sus estudiantes, para ello tiene a su disposición la

alternativa de usar un paquete (como hoja de cálculo electrónico) o de diseñar un programa

específico para su tarea. Con el propósito de ejemplificar la programación, se supone que el

profesor decide contratar una persona para que le prepare el programa, que es el

programador. El programador tiene que conocer y entender todos los elementos involucrados en el

proceso de los datos (en este caso las operaciones aritméticas 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 cálculos 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 sistematización. El desarrollo del plan tiene que comenzar con un

análisis del p.o.p. Al analizar un problema se separa o descompone en sus partes hasta que

Page 59: Universidad Tecnologica Centroamericana

______________________________________________________________________ 45

se llegue a tener un conocimiento fundamental de sus elementos, principios, y la relación

entre ellos. El p.o.p. es el problema del usuario y el producir un programa es el problema

del programador.

Al partir del análisis 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 solución 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 cálculo del promedio final, por lo que el rol que desempeña 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 solución 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 específico.

El análisis le permite al programador conocer a profundidad el p.o.p. dependiendo de la

complejidad del p.o.p. el análisis puede ser tan corto o extenso como lo ameriten los

conocimientos y experiencia personales. Y a medida que se desarrollen las habilidades de

programación, ciertos programas no ameritarán ningún análisis; 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 estarán abordando ciertos p.o.p. cuyo tratamiento no amerite

en realidad mayor análisis, pero que se estarán analizando para fines pedagógicos con el

propósito de ejemplificar las técnicas que pueden ser útiles en el análisis de problemas más

complejos.

Page 60: Universidad Tecnologica Centroamericana

______________________________________________________________________ 46

EJERCICIOS 3.1

Conteste brevemente las siguientes preguntas: 1 ¿Porqué el programador debe entender a cabalidad el p.o.p.? 2 ¿Qué se logra al analizar un p.o.p.? 3.- ¿Qué relación existe entre un programa, la computadora y el p.o.p.? 4.- ¿Cuál es la diferencia entre el problema del usuario y el problema del programador? 5.- ¿Qué problemas ameritan mayor análisis? 3.2 RESUMEN DEL ANÁLISIS DE ACUERDO AL MODELO VON NEUMANN El propósito del análisis 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 análisis no es

único, algunos problemas requerirán un enfoque muy distinto a otros, la originalidad o

experiencia del analista le imprime un sello distintivo al análisis; la complejidad o

naturaleza del problema determina la profundidad del análisis, etc.. No obstante, por muy variado y original que resulte el análisis, la metodología que se

presenta en este texto requiere que se prepare un resumen del análisis encaminado a la

producción del programa.

El formato del resumen del análisis está relacionado con el modelo de computador

propuesto.

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

l P R O C E S O 0

Page 61: Universidad Tecnologica Centroamericana

______________________________________________________________________ 47

proporcionarán al computador para obtener la SALIDA requerida. En la práctica, al

ejecutar un programa, normalmente primero se realizan las tareas de ENTRADA y luego

las de SALIDA. Sin embargo al realizar el resumen del análisis 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 mínima requerida para obtener la

SALIDA deseada.

En el párrafo anterior se han utilizado los términos ENTRADA y SALIDA, para indicar el

conjunto de datos que se le proporcionarán al computador (posiblemente vía teclado) y el

conjunto de datos que la computadora proporcionará (vía monitor o impresora). Estos

mismos términos 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 terminología, la cual queda clara según el contexto en que se utilice. De esta manera los

términos 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 análisis sigue el siguiente formato:

Ejemplo 3.1 (Resumen del Análisis, calificaciones)

Para el caso del problema de obtener las calificaciones finales de un curso universitario, el

resumen del análisis podría ser como el siguiente:

Resumen del Análisis SALIDA: (cuantitativamente) cualitativamente ENTRADA: (cuantitativamente) cualitativamente PROCESO: Expresado de manera resumida en un lenguaje natural.

Page 62: Universidad Tecnologica Centroamericana

______________________________________________________________________ 48

Resumen del Análisis SALIDA: (40 números) Las calificaciones finales de los 40 estudiantes. ENTRADA: (varios números) Las calificaciones parciales de los 40 estudiantes. 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, basándose en las fórmulas

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 término ENTRADA se refiere a:

_______________________________________________________________

2.- Al indicar que la SALIDA de un programa la constituyen los promedios finales

de un curso, el término SALIDA se refiere a:

_______________________________________________________________

3.- Si se asevera que la Unidad Lógica/Aritmética se encuentra en la unidad de

PROCESO Central, la palabra PROCESO se refiere a:

_______________________________________________________________

4.- Sin importar lo extenso de un análisis, 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 ANÁLISIS DE UN P.O.P. PARTE I

Page 63: Universidad Tecnologica Centroamericana

______________________________________________________________________ 49

No se proporciona un método rígido para desarrollar el análisis de un p.o.p.. La dificultad

del mismo, la experiencia y formación del analista son factores que influyen en la forma y

extensión del análisis. Sin embargo siempre debe tenerse en cuenta que:

• El análisis de un p.o.p. está orientado al diseño del plan de un programa.

• Los componentes básicos que se desean comprender y definir son:

o La salida

o La entrada

o El proceso

• El análisis debe conducir al formato del resumen que contiene los componentes

básicos.

• Debe profundizarse el análisis hasta definir claramente los componentes anteriores

No debe realizarse más análisis de lo necesario, si ya se han definido los componentes

básicos. Cabe mencionar decir que después de realizar un Plan de Análisis que culmina en

la realización de un Resumen del Análisis, se introducirá una técnica para generar

desgloses. Estos desgloses (pueden validarse con “Pruebas de Escritorio” simulando al

computador con papel y lápiz), posteriormente se transformará a un pseudocódigo

algorítmico que se llama Nolae o Notación lineal de algoritmos estructurados (al que

también se le pueden aplicar directamente las pruebas de escritorio), éste puede fácilmente

traducirse o codificarse en una gran diversidad de lenguajes de programación. El programa

ya codificado se introduce al computador al igual que los datos, obteniéndose así, la

solución del p.o.p. planteado. (Véase esta secuencia ilustrada en la Figura 3.3)

Page 64: Universidad Tecnologica Centroamericana

______________________________________________________________________ 50

Figura 3.3

El analista tiene la libertad de realizar el análisis de la manera que considere eficaz y

efectiva. Existen muchos caminos apropiados y correctos para llegar al resumen del

análisis, sin embargo a continuación se presentan a través del estudio de casos algunos

elementos que pueden ser útiles para el desarrollo de un análisis de p.o.p.

Ejemplo 3.2 (Promedio final de un estudiante) Caso 1: Se toma de nuevo el problema del profesor sobre el cálculo de los promedios finales, pero

que para fines de simplificación se considera que únicamente tiene un solo estudiante. Una

vez que se resuelva la situación para un estudiante, se aplicará el análisis para considerar

todos los estudiantes del curso.

El problema consiste en preparar el análisis para el plan del programa que calcule el

promedio final de un estudiante. Previamente se presentó como podría ser un resumen del

análisis y ahora se verá como se puede llegar a ese resumen.

El primer elemento que se presenta es el denominado “ejemplo de escritorio”.

P. O. P Plan del Análisis

SOLUCION

Desglose 1er.y 2do.

Algoritmo Nolae

Código en Lenguaje

Ada95

Resumen del Análisis

Prueba de escritorio

Prueba de escritorio

DATOS

Page 65: Universidad Tecnologica Centroamericana

______________________________________________________________________ 51

El propósito del ejemplo de escritorio es el de ganar experiencia operativa con respecto a

la solución del p.o.p., de visualizar situaciones que no se presentan explícitamente 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 (ponderación) Primer examen parcial 85 (20%)

Segundo examen parcial 90 (20%)

Examen final 80 (30%)

Proyecto 1 95 ( 5% )

Proyecto 2 100 ( 5% )

Proyecto 3 100 ( 5% )

Tarea 1 70 (15% en total)

Tarea 2 85

Quiz 1 80

Tarea 3 100

Exposición 90

Quiz 2 90

Tarea 4 100

Para los exámenes, se multiplica cada calificación por el porcentaje y se suman los resultados, tal como se muestra a continuación:

Primer examen parcial 85 X (0. 20 ) = 17.0 (1)

Segundo examen parcial 90 X (0. 20 ) = 18.0

Examen final 80 X (0. 30 ) = 24.0

Puntos ganados por exámenes = 59.0 (1)Obsérvese 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

El ejemplo de escritorio consiste en seleccionar un ejemplo o varios ejemplos y

resolverlos manualmente, generalmente con lápiz y papel, y posiblemente con una

calculadora manual.

Page 66: Universidad Tecnologica Centroamericana

______________________________________________________________________ 52

De la misma manera se trabaja con los proyectos:

Proyecto 1 95 X ( 0.05 ) = 4.75

Proyecto 2 100 X ( 0.05 ) = 5.00

Proyecto 3 85 X ( 0.05 ) = 4.25

Puntos ganados por proyectos = 14.0

Con respecto a las tareas, quices, etc., si se les da el mismo valor, el camino más rápido 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 número de notas, en este caso son 7.

Tarea 1 70

Tarea 2 85

Quiz 1 80

Tarea 3 100

Exposición 90

Quiz 2 90

Tarea 4 100 615 Promedio = = 87.86 Suma 615 7

Por lo tanto los puntos ganados por proyectos serían: 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 deberán ser almacenados en la

memoria de la computadora, se considera conveniente en este análisis 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 descripción de la variable.

Page 67: Universidad Tecnologica Centroamericana

______________________________________________________________________ 53

En algunas ocasiones es apropiado presentar los nombres de las variables en orden

alfabético; en esta ocasión se hará conforme se ha ido presentando en el ejemplo de

escritorio para asegurar que la lista esté completa.

PARCIAL1 Primer examen parcial Número sin decimales entre 0 y 100

PARCIAL2 Segundo examen parcial Número sin decimales entre 0 y 100

EXFINAL Examen final Número sin decimales entre 0 y 100. ..

PROYEC1 Proyecto 1 :

PROYEC2 Proyecto 2 :

PROYEC3 Proyecto 3 :

TAREA1 Tarea 1 :

TAREA2 Tarea 2 :

QUIZ1 Quiz 1 :

TAREA3 Tarea 3 :

EXPOSICION Exposición :

QUIZ2 Quiz 2 :

TAREA4 Tarea 4 :

PROMFINAL Promedio final Número con 2 decimales entre 0 y 100

Los nombres de las variables se escogen de tal manera que permita identificarlas fácilmente

con la naturaleza del valor que se depositará en ellas. Por ejemplo es mejor el nombre

“PROMFINAL” que simplemente “P”. Por supuesto, un nombre más descriptivo:

PROMEDIO_FINAL_DEL_ESTUDIANTE podría ser completamente descriptivo, pero

no es práctico al momento de programar, dada la extensión del mismo.

No se requiere presentar un diccionario de variables cuando el problema involucra un

pequeño número 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 alfabético y se puede presentar de la siguiente manera:

Diccionario de Variables

EXFINAL Examen final

EXPOSICION Exposición

Page 68: Universidad Tecnologica Centroamericana

______________________________________________________________________ 54

PARCIAL1 Primer examen parcial

PARCIAL2 Segundo examen parcial

PROMFINAL Promedio final

PROYEC1 Proyecto 1

PROYEC2 Proyecto 2

PROYEC3 Proyecto 3

QUIZ1 Quiz 1

QUIZ2 Quiz 2

TAREA1 Tarea 1

TAREA2 Tarea 2

TAREA3 Tarea 3

TAREA4 Tarea 4

FORMULAS Los cálculos que intervienen en la solución 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 simbólico el cual además de

simplificar la escritura, resulta preciso y sin ambigüedades, a través de las fórmulas.

Cuando en un p.o.p se efectúan muchos cálculos, o éstos son un tanto complejos, se recurre

al uso de fórmulas para describir tales cálculos. Cuando se considera conveniente presentar

las fórmulas en el análisis, es importante revisar el contexto dentro del cual son aplicables.

En el problema del cálculo de promedios finales se definirán primero otras variables para

cálculos intermedios, las cuales se agregan al diccionario de variables:

PG_EXAMEN Puntos ganados por exámenes

PG_PROYECTO Puntos ganados por proyectos

ACUMULATIVO Puntos ganados por tareas, quices, etc.

PROM_FINAL Promedio final del estudiante

A continuación se escriben las fórmulas correspondientes:

Page 69: Universidad Tecnologica Centroamericana

______________________________________________________________________ 55

PG_EXAMEN = PARCIAL1 * 0.20 + PARCIAL2 * 0.20 + EXFINAL * 0.302

PG_PROYECTO = PROYEC1 * 0.05 + PROYEC2 * 0.05 + PROYEC3 * 0.05

ACUMULATIVO = (TAREA1 + TAREA2 + TAREA3 + TAREA4 +

EXPOSICIÓN + QUIZ1 + QUIZ2) / 7 * 0.15

PROM_FINAL = 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 análisis:

• EJEMPLO DE ESCRITORIO

• DICCIONARIO DE VARIABLES

• FORMULAS

Se pudo haber comenzado con las fórmulas y el diccionario para luego realizar el ejemplo

de escritorio. No existen reglas al respecto, La experiencia y formas personales de pensar

determinarán el estilo de realizar un análisis.

Con lo anterior el análisis está completo, y se procederá a resumirlo. RESUMEN DEL ANALISIS SALIDA: (1 número) el promedio final de un estudiante. ENTRADA: (13 números) las distintas calificaciones del estudiante.

(Véase el Diccionario de Variables)

PROCESO: Inicialmente se proporcionan al computador las calificaciones del

estudiante. A continuación se calculan los puntos ganados por examen, por

proyectos y acumulativos, aplicando las fórmulas correspondientes. El

promedio final se obtiene sumando los puntos ganados. Por último se envía a

imprimir el resultado.

Cuando se dice que se le proporciona al computador 13 números, se quiere indicar que por

medio de la unidad de entrada (que podría ser el teclado) se le introduce al computador

los 13 números que almacena en la memoria.

2 Se utilizará el asterisco “*” en lugar del símbolo de multiplicar “X”

Page 70: Universidad Tecnologica Centroamericana

______________________________________________________________________ 56

En el ejemplo, las distintas calificaciones del estudiante se almacenarán en las variables

cuyos nombres aparecen en el diccionario. Para referirse a la acción de entrada de números

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 través de la unidad de entrada se le

proporciona al computador un número que se almacena en la variable llamada

PARCIAL1. De acuerdo al ejemplo de escritorio, ese número es 85, el cual será tecleado y

almacenado en PARCIAL1.

A su vez, para indicar que la computadora proporciona un resultado (que lo realiza a

través 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 través 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

utilizarán los términos “desplegar”, “imprimir” o “escribir” como si fueran sinónimos. Ahora se introducirá otro elemento que se puede utilizar en el análisis de un p.o.p. por

medio del siguiente problema.

Ejemplo 3.3 (Pendiente e intercepto)

Preparar un análisis 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 mínima de geometría analítica, es apropiado revisar

los conceptos involucrados en el ejercicio planteado. Esto significa que se revisa los

conceptos teóricos del problema, por lo que se introduce el “marco teórico” en este

ejemplo.

PARCIAL1

85

Page 71: Universidad Tecnologica Centroamericana

______________________________________________________________________ 57

Marco teórico

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 fórmula:

∆y y – z

m = = ∆x x – w que es válida 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

fórmula:

b = y – m x

Por otra parte, se puede dibujar uno o varios gráficos para poder tener una mayor idea del

planteamiento expuesto.

Gráficos 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 y L

L

x 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 válidas en

el desarrollo del problema, se denominan hipótesis.

Page 72: Universidad Tecnologica Centroamericana

______________________________________________________________________ 58

HIPOTESIS 1. Las coordenadas de los puntos corresponden a puntos distintos.

2. Los puntos no determinan una recta vertical, por lo cual se tiene que x ≠ w. La hipótesis 2 asegura que x – w sea distinto de cero, por lo cual la división será posible, y

se puede encontrar la pendiente.

EJEMPLO DE ESCRITORIO Con el marco teórico ya desarrollado, se procede a realizar un ejemplo en el papel para

tener una experiencia práctica 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)

1 – 5 6

entonces, m = = = 2 4 – 1 3 Ahora se encuentra el intercepto en el eje “y” :

b = y – m x

= 11 – 2(4) = 11 – 8 = 3

Por lo tanto: la pendiente es m = 2

y el intercepto es b = 3

Finalmente se procede a redactar el… RESUMEN DEL ANALISIS SALIDA: (2 números) La pendiente m y el intercepto b

ENTRADA: (4 números) 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

fórmulas de la pendiente y del intercepto. Los resultados obtenidos se envían

a imprimir.

Page 73: Universidad Tecnologica Centroamericana

______________________________________________________________________ 59

EJERCICIOS 3.3.

Para cada uno de los siguientes ejercicios se deberá diseñar un programa; prepare el análisis

con su respectivo resumen para el plan del programa. 1.- Se proporciona al computador el valor de venta de cuatro artículos y se desea

imprimir el valor total de la venta, el valor del impuesto sobre venta y el monto total

a pagar.

2.- Dados los coeficientes a, b y c de una ecuación cuadrática: ax2 +bx + c = 0

encontrar las raíces o soluciones de la ecuación.

3.- En una encuesta se entrevistaron 7 personas. Se les preguntó si poseían

computadoras. Al computador se le proporcionarán 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 participación a cada socio.

5.- La fórmula de espacio-tiempo de la caída 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 análisis, se comienza a preparar el plan del

programa en pasos sucesivos. En la parte de PROCESO del resumen, se especifica en

términos muy generales los principales pasos que se realizan para lograr la solución 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 sistemática; se dice que se va desglosando el problema en

subproblemas más pequeños; de tal manera que al final se tendrá un plan completo y

detallado para el programa.

Page 74: Universidad Tecnologica Centroamericana

______________________________________________________________________ 60

3.4.1 DESGLOSES EN SECUENCIA Ejemplo 3.4 (Secuencia, Sueldo neto)

PROBLEMA: Preparar un análisis 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. Además de deducírsele la aportación por el Seguro Social,

se le deduce una cantidad por pago de vivienda.

Solución ANALISIS

Antes de comenzar con un ejemplo de escritorio, se pueden hacer algunas anotaciones

generales llamadas Estrategia, en ella se harán algunas consideraciones generales que

serán 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 serán 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, deducción del seguro social y sueldo neto.

Las entradas que son los datos que se deberán 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:

Este proceso de refinamiento de la solución partiendo de los elementos generales a los más

particulares en distintos niveles para diseñar un programa se denomina Diseño descendente.

Page 75: Universidad Tecnologica Centroamericana

______________________________________________________________________ 61

Pago base por hora = 2.50 Horas Trabajadas = 147.00

Horas extras = 25

Deducción IHSS de un 3.5 %

Pago vivienda = 190.00 El ingreso bruto sería:

Por horas ordinarias 147 X 2.50 = 367.50

Por horas extras 25 X 2.50 X 2 = 125.00

Ingreso total = 492.00 Las deducciones serían:

Aportaciones (3.5%) IHSS 492 X0.035 = 17.22

Vivienda = 190.00

207.22

Por lo tanto el sueldo neto sería : 492 - 207.22 = 284.78

2.- DICCIONARIO DE VARIABLES

Identificador Descripción . PHORA Pago base por hora HTRABAJ Horas ordinarias trabajadas

HEXTRAS Horas extras trabajadas

DIHSS Deducción para el IHSS

VIVIENDA Pago de vivienda

INGBRUTO Ingreso total bruto

TDEDUC Total de deducciones

SNETO Sueldo Neto HIPOTESIS

1.- HTRABAJADAS > 0

2.- INGBRUTO Será a 600.00 y mayor (>) que VIVIENDA 3.- FORMULAS

1.- INGBRUTO = HTRABAJ * PHORA + HEXTRAS * PHORA * 2

2.- DIHSS = INGBRUTO * 0.035

3.- TDEDUC = DIHSS + VIVIENDA

4.- SNETO = INGBRUTO – TDEDUC

Page 76: Universidad Tecnologica Centroamericana

______________________________________________________________________ 62

4.- RESUMEN DEL ANALISIS

SALIDA: ( 3 números ) INGBRUTO, DIHSS Y SNETO

ENTRADA: ( 3 números ) PHORA, HTRABAJ, HEXTRAS, VIVIENDA

PROCESO: Después de leer los datos, se procede a efectuar los cálculos

aplicando las fórmulas y se imprimen los resultados.

5.-DESGLOSE

Puede notarse que en la descripción del proceso en el resumen anterior se pueden distinguir

tres pasos importantes que ejecutaría el programa

1.- LECTURA DE DATOS

2.- CALCULOS

3.- 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 ejecutarán. En el ejemplo, primero se ejecuta el

número 1, luego el 2 y finalmente el 3, de acuerdo a la numeración y orden secuencial en

que se han presentados los pasos. Cuando las instrucciones se realizan en secuencia, una }

Observación 3.4.1.1: La salida de los tres números que se indican es selectiva en este

caso; se puede discutir si la salida puede ser más 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, según considere conveniente y de acuerdo a la

naturaleza del problema.

Es también de interés hacer notar que el problema anterior quizá no amerite tanto análisis (y

que en la práctica generalmente no se diseña un programa como el del ejemplo que

encuentra el sueldo neto para un solo empleado). El propósito de seleccionar un problema

simple y sencillo, es el de minimizar la complejidad del problema para concentrarse en la

metodología de preparación de programas usada en este texto.

Page 77: Universidad Tecnologica Centroamericana

______________________________________________________________________ 63

después de otra, se dice que las instrucciones están concatenadas o que su estructura es una

concatenación.

A continuación se detalla cada uno de los tres pasos anteriores.

1.- LECTURA DE LOS DATOS 1.1 Leer de Pago base por hora

1.2 Leer de Horas ordinarias trabajadas

1.3 Leer de Horas extras trabajadas

1.4 Leer de Pago de Vivienda

2.- CALCULOS 2.1 Cálculo del Ingreso Bruto (Fórmula-1)

2.2 Cálculo de la deducción IHSS (Fórmula-2)

2.3 Cálculo del total de deducciones (Fórmula-3)

2.4 Cálculo de Sueldo Neto (Fórmula-4)

3.- IMPRESIÓN DE RESULTADOS 3.1 Impresión del Ingreso Bruto

3.2 Impresión del total de deducciones

3.3 Impresión 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 están en secuencia o concatenación.

Este ejemplo ilustra la organización típica 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 probándolo. Se hace el papel de la

computadora, y con la ayuda de lápiz y papel se procede a ejecutar las instrucciones. Como

se ha mencionado anteriormente las lecturas corresponden a operaciones de entrada de

Page 78: Universidad Tecnologica Centroamericana

______________________________________________________________________ 64

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 determinarán tres componentes en la

prueba de escritorio:

Datos Para representar los datos que el usuario le proporcionaría al computador,

que serían los que se estarán tecleando.

Memoria Para representar las variables y sus valores.

Salida Para representar lo que aparecería en la pantalla o que sería 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 irán 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

también esté correcto.

Se comienza dibujando los componentes de la prueba de escritorio:

Datos: 2.50, 147, 25, 190

Memoria:

Page 79: Universidad Tecnologica Centroamericana

______________________________________________________________________ 65

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 asignación, se identifica con un nombre la variable receptora

y poner en su valor el número 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,

ó

Page 80: Universidad Tecnologica Centroamericana

______________________________________________________________________ 66

hasta llegar a lo siguiente:

Datos: 2.50, 147, 25, 190 Memoria:

PHORA HTRABAJ HEXTRAS VIVIENDA

2.50 147 25 190

Salida:

A continuación se procede a ejecutar los cálculos que corresponden a las asignaciones. No

es innecesario recordar que estos cálculos 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, 147, 25, 190

Memoria:

PHORA HTRABAJ HEXTRAS VIVIENDA

2.50 147 25 190

INGBRUTO DIHSS TDEDUC SNETO

492 15.47 205.47 286.53

Page 81: Universidad Tecnologica Centroamericana

______________________________________________________________________ 67

Salida:

Finalmente en la escritura de los resultados, las instrucciones se realizan una por una. Así: 3.1 Impresión 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. Nótese, que en este caso el valor del INGBRUTO

en la memoria queda intacto, no se pierde. A diferencia de la escritura y la

asignación, la escritura NO es destructiva.

Luego, se obtiene: Salida:

Se realiza el resto de las instrucciones de salida, una por una, inspeccionando los valores y

escribiéndolos en la pantalla:

Salida:

Al comparar estos resultados con los del ejemplo de escritorio se comprueba que el

desglose escrito está correcto.

492.00

492.00 15.47 205.47 286.53

Page 82: Universidad Tecnologica Centroamericana

______________________________________________________________________ 68

Se hará un REPASO de lo visto hasta ahora desarrollando el siguiente ejemplo: Ejemplo 3.5 (Repaso, Secuencia, Venta de dos artículos) Preparar el análisis para el plan de un programa, en el cual se le proporciona al computador

los precios de venta de dos artículos y se desea imprimir el total a pagar por el comprador,

se deberá considerar el 12% de impuesto.

ESTRATEGIA Se comenzará definiendo cuales serán 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 número.

Pantalla Salida

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 serán almacenados en la

memoria. Para el ejemplo son los dos precios de los artículos: Precio del artículo 1 y Precio

del artículo 2, o sea dos números:

Teclado

Entrada

1120.00

Salida Total

1120.00 seria el Total, así en forma resumida:

Entrada Precio del artículo 1 Precio del artículo 2

Page 83: Universidad Tecnologica Centroamericana

______________________________________________________________________ 69

PLAN DEL ANALISIS

1. EJEMPLO DE ESCRITORIO:.Con él se inicia el análisis, en el cual se resuelve el

problema a mano con datos específicos

Precio del 1er. artículo = 425

Precio del 2do. artículo = 575 Subtotal =425 +575 = 1000 Isv =1000 * 0.12 = 120 Total = 1000 + 120 = 1120

2. DICCIONARIO DE VARIABLES

Identificador Descripción

Precio1 Precio del artículo 1

Precio2 Precio del artículo 2

Subtotal Subtotal

ISV Impuesto sobre ventas

Total Total a pagar por el cliente

3. FORMULAS

Subtotal =precio1 + precio2 (Fórmula-1)

Isv =subtotal * 0.12 (Fórmula-2)

Total =subtotal + isv (Fórmula-3)

4. RESUMEN DEL ANALISIS SALIDA: (1 número) Total ENTRADA: (2 números) Precio1, Precio2 PROCESO: Inicialmente se introduce a la computadora precio1, precio2, se

calcula el subtotal, isv y el Total con las fórmulas respectivas, finalmente se imprime el Total.

Datos de entrada supuestos

Page 84: Universidad Tecnologica Centroamericana

______________________________________________________________________ 70

Antes de proceder al desglose se comenta nuevamente la relación entre las entradas con la

lectura y las salidas con la impresión: Leer: (Lectura) es la instrucción que se encarga de tomar un valor que el usuario

proporciona a través 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 números: el

precio del primer artículo y el precio del segundo artículo y se introdujeron los valores 425

y 575 para cada uno.

Las instrucciones para almacenar los valores tecleados en las variables correspondientes

serían:

Leer El Precio del Artículo 1 (Precio1)

Leer El Precio del Artículo 2 (Precio2)

Imprimir: (Impresión) es la instrucción que toma el valor de una variable y lo muestra al

usuario a través de un dispositivo de salida (p.e. monitor). A la acción de escribir también

se le conoce como impresión. En el ejemplo de escritorio se detalló que la salida era

1120.00. Este valor está contenido en la variable Total. La instrucción que muestra este

valor en la pantalla sería:

Imprimir el Total a Pagar por el Cliente (Total).

Considerando lo anterior, se identificarán los distintos componentes del Proceso del

Resumen del Análisis, su secuencia y forma de ejecutarse. Se hará partiendo de lo general y

llegando a lo particular, de manera sistemática; se dice que se va desglosando el problema

en sub-problemas más pequeños.

5. DESGLOSES Desglose 1 er. Nivel

1. Lectura de datos

2. Cálculos

3. Impresión de resultados

Page 85: Universidad Tecnologica Centroamericana

______________________________________________________________________ 71

Desglose 2do Nivel

1. LECTURA DE DATOS

1.1 Leer Precio1

1.2 Leer Precio2

2. CALCULOS

2.1 Calcular Subtotal (Fórmula-1)

2.2 Calcular Isv (Fórmula-2)

2.3 Calcular Total (Fórmula-3)

3. IMPRESIÓN DE RESULTADOS

3.1 Imprimir Total

6. PRUEBA DE ESCRITORIO Datos: 425, 575 Memoria: Salida

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 análisis y desglose para los programas que

resuelvan los siguientes problemas. (Realice la P.E para comprobación).

a) Se desea programar una máquina 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.

Precio1 Precio2 Subtotal ISV Total

425 575 1000 120 1120 1120

Page 86: Universidad Tecnologica Centroamericana

______________________________________________________________________ 72

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 triángulo, se desea encontrar el área del mismo.

d) Del Apéndice A, pág.279-280, (desgloses en secuencia):

d.1) Ejercicios del 1 al 4

d.2) Ejercicios del 5 al 8

d.3) Ejercicios del 9 al 12

d.4) Ejercicios 13 y 14

3.4.2 DESGLOSE CON INSTRUCCIONES EN DECISION

Ejemplo 3.6 (Decisión, Venta con descuentos)

PROBLEMA Realizar el análisis y preparar el desglose correspondiente para un programa

que se producirá para la siguiente situación:

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 más 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

Considérense dos Casos:

1.- La venta es de Lps. 200.00 ó menos

2.- La venta es de más de Lps. 200.00 (En lenguaje simbólico: Venta > 200.00,

se escogió arbitrariamente)

Page 87: Universidad Tecnologica Centroamericana

______________________________________________________________________ 73

EJEMPLO DE ESCRITORIO 1

El valor de la venta es de Lps. 150.00

El descuento sería de 10% o sea Lps. 15.00 (1)

Subtotal, Valor de venta con descuento Lps. 135.00

12 % ISV Lps. 16.20

Total a pagar 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 ó bien (150) (0.10) = 15 100

EJEMPLO DE ESCRITORIO 2

El valor de venta es de Lps. 300.00

EL descuento sería de 20% o sea 60.00 ___________

Subtotal, (Valor de venta con descuento) Lps. 240.00

12 % isv 28.80 ___________

TOTAL a pagar Lps. 268.80

2.- DICCIONARIO DE VARIABLES

NOMBRE DESCRIPCION UNIDADES

Val_Venta Valor de la venta sin isv. (En Lps.)

Descuento Valor del descuento (En Lps.)

Subtotal Nuevo valor de venta con descuento (En Lps.)

Isv Valor del isv. (En Lps.)

Total Total a pagar (En Lps.)

Page 88: Universidad Tecnologica Centroamericana

______________________________________________________________________ 74

3.- FORMULAS

Descuento = Val_Venta * 0.10 Caso 1 (Fórmula-1)

Descuento = Val_Venta * 0.20 Caso 2 (Fórmula-2)

Subtotal=Val_Venta – Descuento (Fórmula-3)

Isv= Subtotal * 0.12 (Fórmula-4)

Total = Subtotal_Val + Isv. (Fórmula-5)

4.- RESUMEN DEL ANALISIS

SALIDA: (4 números) Descuento, Subtotal, Isv, Total ENTRADA: (1 número) Val_Venta

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.- Lectura de dato

2.- Cálculo de Valores

3.- Impresión de resultados

2do Nivel Únicamente el 2do paso amerita mayor desglose 2.- CALCULO DE VALORES

2.1 Calcular deducción

2.2 Calcular Subtotal con deducción

2.3 Calcular Impto. Sobre venta

2.4 Calcular Total a pagar

3er Nivel Para efectuar los cálculos anteriores se aplican simplemente las fórmulas correspondientes,

excepto en el caso de la deducción (paso num. 2.1), en el cual antes de aplicar una de las

Page 89: Universidad Tecnologica Centroamericana

______________________________________________________________________ 75

dos fórmulas 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 deducción con el 20%

2.1.1.2 (Falso) Calcular la deducción con el 10%

Nótese 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 tácito, ya que una proposición 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 deberían 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 Leer Val_venta 2. CALCULO DE VALORES

2.1 Ver si el Val_venta > 200

2.1.1 (Verdadero) Calcular la deducción con el 20% (Fórmula-1)

2.1.2 (Falso) Calcular la deducción con el 10% (Fórmula-2)

2.2 Calcular Subtotal con deducción (Fórmula-3)

2.3 Calcular impuesto sobre venta (Fórmula-4)

2.4 Calcular total a pagar (Fórmula-5)

3. IMPRESIÓN DE RESULTADOS

3.1 Imprimir Val_venta, Descuento, Subtotal, Isv, Total3 (1)

3 Se pueden imprimir varios valores en una misma instrucción, pero siempre se preferirá imprimir un valor en cada inciso.

Page 90: Universidad Tecnologica Centroamericana

______________________________________________________________________ 76

En la sección anterior las instrucciones estaban organizadas de manera secuencial. Una se

ejecutaba después de la otra, en el orden en que se presentaban. Se dijo que las

instrucciones estaban concatenadas o bien que su estructura es la concatenación. En el ejemplo se encuentran dos instrucciones: 2.1.1 y 2.1.2 que se presentan una seguida

de la otra y con numeración correlativa, pero que NO se ejecutan de manera secuencial. La

ejecución de 2.1.1 y de 2.1.2 depende de la condición “Val_Venta >200” y dependiendo del

resultado de la evaluación, que puede ser V o F, se ejecuta 2.1.1 o 2.1.2

correspondientemente, PERO NO AMBAS. Se dirá entonces que la instrucción 2.1 tiene la estructura de una decisión, en el desglose

antes de la condición Val_venta >200, se colocan las palabras Ver si denotando que para

determinar que curso de acción se va a tomar, se Verificará primero si la condición (de

decisión) se cumple o no. En una estructura de decisión se evalúa una condición; como en

este ejemplo, si la condición resulta Verdadera, se ejecuta la instrucción 2.1.1. (Y se ignora

la 2.1.2). Pero si la condición es Falsa, se ejecuta la instrucción 2.1.2 (se ignora la 2.1.1).

De tal manera que sólo una de las dos instrucciones 2.1.1 ó 2.1.2 se ejecutará al realizar la

decisión 2.1. Después de ejecutar la decisión 2.1. Se procede con 2.2, ya que 2.1 y 2.2 están

concatenadas, seguidamente se ejecutan 2.3 y 2.4.

A la instrucción 2.1.1 se le llama la “rama Verdadera” de la decisión, a 2.1.2 la “rama

Falsa”. Por lo tanto, se puede resumir, que ejecutar una decisión implica evaluar la

condición de la decisión 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

Page 91: Universidad Tecnologica Centroamericana

______________________________________________________________________ 77

Memoria Salida:

Val_Venta Descuento Subtotal Isv Total

150 15 135 9.45 144.45

Prueba 2 Datos2: 300 Memoria: Salida:

Val_Venta Descuento Subtotal Isv Total

300 60 240 16 256

Ejemplo 3.7 (Decisión, Boletos Tegucigalpa, San Pedro Sula SPS)

Una compañía de transporte dispone del servicio entre las ciudades de Tegucigalpa y San

Pedro Sula. Se ofrecen dos tipos de tarifa (Primera clase y clase económica) de

Lps. 200.00 y Lps 110.00 respectivamente. Se le proporciona al programa el número de

boletos y el código de tarifa deseado (Código = 1 para primera clase, código = 2 para clase

económica) y se desea conocer el total a pagar (asumir que los boletos que se compran son

de la misma tarifa).

Reescribiendo la información anterior en forma esquemática se tiene:

15.00 135.00 9.45 144.45

15.00 135.00 9.45 144.45

Observación 3.4.2.1: Quizás hubiera sido conveniente agregar el valor de la venta

en la lista de valores a imprimir, normalmente esto se hace en la práctica. Por

ahora, el enfoque de este texto se centrará en el diseño de la “lógica” del programa;

y a medida que se avance en la presentación de los temas, se irán perfeccionando

las propuestas de solución.

Page 92: Universidad Tecnologica Centroamericana

______________________________________________________________________ 78

Categoría Código Precio 1er Clase 1 Lps. 200.00

Clase económica 2 Lps. 110.00

ESTRATEGIA: Se definen las Entradas y Salidas además, se Verificara si el código es igual a 1 o no para

asociar el precio por boleto correspondiente, vale decir que si el código no es 1 se entiende

tácitamente que es igual 2, se considera que no existe la posibilidad de equivocación al

introducir el código (1 ó 2), lo anterior implica que se utilizará una estructura de decisión,

mostrando un esquema se tiene:

Cod Salida Pago Entrada Nbol

1. EJEMPLO DE ESCRITORIO

2.- DICCIONARIO DE VARIABLES

Identificador Descripción .

Cod Código del tipo de tarifa

Nbol Número de boletos

Pago Total a pagar

3.- FORMULAS

Pago = 200 * Nbol (Fórmula-1)

Pago = 110 * Nbol (Fórmula-2)

Caso I Caso II Nbol = 2 Nbol = 3 Cod = 1 (*) Cod = 2 (**) Pago = 200 * 2 = 400 Pago = 110 * 3 = 330

Si Cod = 1 (V) Precio = 200 (*) (Cod =2 ) (F) Precio = 110 (**)

Page 93: Universidad Tecnologica Centroamericana

______________________________________________________________________ 79

4.- RESUMEN DEL ANALISIS SALIDA: (1 número) Pago

(1 mensaje)

ENTRADA: (2 números) Nbol, Cod

PROCESO: Se lee Número de boletos (Nbol) y Código (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. Cálculos

3. Impresión 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 (Fórmu1a-1)

2.1.2 (F) Calcular pago (Fórmu1a-2)

3. IMPRESIÓN DE RESULTADOS

3.1 Imprimir “Total a pagar Lps: ” Leer observación 3.4.2.2

3.2 Imprimir Pago

Page 94: Universidad Tecnologica Centroamericana

______________________________________________________________________ 80

A continuación se comentará sobre las distintas estructuras que intervienen en la

resolución de este ejercicio

Análisis de Estructuras Concatenación: 1, 2, 3

1.1, 1.2

3.1, 3.2

Se colocan en grupos por renglón para enfatizar la secuencia

entre las instrucciones

Decisión: 2.1

Es el numeral en que comienza la condición de la decisión, está a la izquierda de la expresión Ver si.

6.- PRUEBA DE ESCRITORIO

Datos 1: 2, 1

Memoria: Salida:

Nbol Cod Pago

2 1 400

Total a Pagar Lps. 400

Observación 3.4.2.2. Para imprimir mensajes se hará lo siguiente:

• Definir el mensaje, este acepta palabras, espacios en blanco, símbolos 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 impresión, teniendo el cuidado

de separa los mensajes de las variables con una coma “,” , por ejemplo:

3.1 Imprimir “Total a pagar Lps. ”, Pago

Page 95: Universidad Tecnologica Centroamericana

______________________________________________________________________ 81

Datos 2: 3, 2

Memoria: Salida:

Ejemplo 3.8 (Decisiones anidadas, Clasificar un número en negativo, cero y positivo.) Determinar e imprimir si un número es positivo, negativo o cero. ESTRATEGIA:

Negativo

Salida Mensaje Cero ó Entrada X

Positivo

• Se clasificará el número X de acuerdo a los siguientes criterios:

Negativo X < 0, Cero X = 0, Positivo X > 0

• Se usará: la recta real y DECISIONES ANIDADAS (Se ampliará este tema en el

la sección 3.5 Diagramas de Arbol)

RESUMEN DEL ANALISIS: SALIDA: (1 Mensaje) “Negativo”, “Cero” o “Positivo”

ENTRADA: (1 número) X

Nbol Cod Pago

3 2 330 Total a Pagar Lps. 330

0

0

Si X < 0 (V)

(F)

(F)

(V) ●0

Si X = 0

“Negativo”

“Cero”

“Positivo” 0

Page 96: Universidad Tecnologica Centroamericana

______________________________________________________________________ 82

PROCESO: Se lee el número X, mediante decisiones anidadas (Ver mas adelante la

Observación 3.4.2.3) se clasifica (X) e imprime el mensaje correspondiente.

6. DESGLOSES 1er. Nivel 1. Lectura de datos

2. Clasificación e impresión 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”

6.-. PRUEBA DE ESCRITORIO Dato 1: 0 Dato 2: -3 Dato 3: 8 Memoria: Memoria: Memoria:

Salida Salida Salida

X

8

X

-3

X

0

Observación 3.4.2.3: En los ramales (V) o (F) de una decisión, se puede a su vez

haber otra decisión con sus respectivos Ramales, en el ejemplo anterior se nota que

la decisión 2.1 posee en su ramal (F) la decisión 2.1.2

Cero

Negativo Positivo

Page 97: Universidad Tecnologica Centroamericana

______________________________________________________________________ 83

EJERCICIOS 3.4.2 Para cada uno de los problemas que se presentan se deberá preparar el análisis 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 hipótesis que limita el

ingreso bruto a Lps. 600.00. Si el ingreso bruto es de Lps.600.00 ó mas, la deducción

por el IHSS es fija de Lps. 120.00.

3.- Ejercicios de estructuras de decisión en el Apéndice A del 15 al 21. 4.- Una persona tiene una cantidad D de dinero en depósito 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 instrucción)

3.4.3 DESGLOSE CON INSTRUCCIONES EN REPETICION Ejemplo 3.9 (Repetición centinela, Alquiler de automóvil, Kilometraje) Preparar un análisis y desglose para un programa en el cual: Se leen varios números que corresponden al kilometraje recorrido por varios clientes de una

compañía que alquila automóviles. Se cobra Lps. 200.00 base por alquiler del automóvil y

Lps. 0.50 por cada kilómetro (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 leído. Al final

de los números 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

Page 98: Universidad Tecnologica Centroamericana

______________________________________________________________________ 84

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, simbólicamente se tiene:

Salida Pago (Varios) Entrada Km (Varios)

• Decisión

Se deberá usar una decisión para el cálculo del pago, ya que según sea el valor del

kilometraje recorrido (Km > 100), cambia la base y el precio por Km. recorrido.

• Repetición

Valor ficticio de fin de datos (centinela igual a cero) Km = 0

Condición de repetición Km ≠ 0

1.- EJEMPLO DE ESCRITORIO

Caso 1

Kms. = 150 se cobra a 0.35 c. el Km.

Pago = Base + gasto por kilometraje (kilómetros recorridos X costo por kilómetro)

= 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 (kilómetros recorridos X costo por kilómetro)

= 200 + 0.50 * 60

= 200 + 30 = 230

Verificar si km > 100 (V) base = 215 Costo por Km = 0.35

(F) base = 200 Costo por Km = 0.50

Page 99: Universidad Tecnologica Centroamericana

______________________________________________________________________ 85

2.-DICCIONARIO DE VARIABLES Identificador Descripción .

Km Kilómetros recorridos

Pago Pago por el alquiler del vehículo

3.- FORMULAS Pago = 215 + 0.35 * Km (Fórmula-1) Pago = 200 + 0.50 * Km (Fórmula-2) 4.- RESUMEN DEL ANALISIS SALIDA: (Varios números) Pago de cada cliente, pago

1 en cada ciclo

ENTRADA: (Varios números) El kilometraje de cada cliente, Km

1 en cada ciclo

PROCESO: Consiste fundamentalmente en un proceso repetitivo que se realiza

mientras el kilometraje leído 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 comprendería ú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 leído sea distinto de cero (o sea, mientras Km ≠ 0), repetir

lo siguiente:

Page 100: Universidad Tecnologica Centroamericana

______________________________________________________________________ 86

El problema con este intento es que asume que se conoce Km., el cual en realidad NO se ha

leído aún. Por lo cual es necesario disponer de ciertos pasos iniciales antes del proceso

repetitivo. De esta manera, una mejor propuesta sería la siguiente:

1.- PASOS INICIALES

1.1 Leer el primer dato (Km) 2.- PROCESO DE CÁLCULO 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 Fórmula-1 Caso 1

2.1.1.1.2 (F) Calcular pago con Fórmula-2 Caso 2

2.1.1.2 Imprimir el valor del pago

* Síntesis del Desglose 1.- PASOS INICIALES

1.1 Leer el primer dato (Km.)

2.- PROCESO DE CÁLCULO 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 Fórmula-1 Caso 1

2.1.1.1.2 (F) Calcular pago con Fórmula-2 Caso 2

2.1.1.2 Imprimir el valor del pago

2.1.2 Leer el siguiente dato (Km.)4

4 Leer la Observación 3.4.3.1 en la siguiente página.

Page 101: Universidad Tecnologica Centroamericana

______________________________________________________________________ 87

Se puede observar que el primer desglose sería: 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 después 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 detallarán los

subincisos correspondientes en forma concatenada:

Observación 3.4.3.1 Las líneas marcadas con una “estrella”, son las 3 características de una repetición 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 línea 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 regresaría a evaluar la condición de repetición, y al no modificar el valor de la VARIABLE se entraría a un ciclo de repetición o “Loop” infinito, ¿Cuándo pararía?

Page 102: Universidad Tecnologica Centroamericana

______________________________________________________________________ 88

Desglose 2do. Nivel

1.- PASOS INICIALES

1.1 Leer el primer dato (Km.) 2.- PROCESO DE CÁLCULO 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 Fórmula-1 Caso 1

2.1.1.2 (F) Calcular pago con Fórmula-2 Caso 2

2.1.2 Imprimir el valor del pago

2.1.3 Leer el siguiente dato (Km.)

6.- PRUEBA DE ESCRITORIO

Supóngase 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” desempeña 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

Pago= 215 + 0.35 * Km Fórmula-1 Pago= 200 + 0.50 * Km Fórmula-2

Observación 3.4.3.2 Al conjunto de instrucciones que se repiten, que en este

caso son: 2.1.1

2.1.2 Se llama RANGO de la Repetición

2.1.3

Page 103: Universidad Tecnologica Centroamericana

______________________________________________________________________ 89

Datos: 150, 60, 100, 0 Memoria Salida

Km.

150

Se sigue con el Paso 2.1. El proceso repetitivo se ejecutará siempre y cuando Km. no sea

cero. Por lo cual se evalúa la condición “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

decisión en donde se evalúa la condición “Km > 100” la condición resulta (V), y se

calcula el Pago (paso 2.1.1.1) que realmente es una asignación.

Datos: 150, 60, 100, 0 Memoria

Km Pago

150

267.50

Como se ejecuta la rama V (paso 2.1.1.1) de la decisión, se ignora el paso 2.1.1.2, y se

realiza el paso 2.1.2, la impresión del Valor del Pago. En la salida …

Salida

Finalizando con la lectura del siguiente valor de Km instrucción 2.1.3

267.50

Page 104: Universidad Tecnologica Centroamericana

______________________________________________________________________ 90

Datos: 150, 60, 100, 0 Memoria Salida

Km Pago

150

60

267.50

Con lo cual termina la primera ejecución de las instrucciones dentro del proceso repetitivo.

Se esta listo para comenzar con las instrucciones de repetición. Pero antes de repetir, se

revisa si la condición previa a la repetición (Km ≠ 0) todavía se mantiene. El nuevo valor

de Km de 60 que efectivamente es diferente de cero (paso 2.1). y al evaluar la condición.

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

150

60

267.50

223.00

Se continúa con la impresión del Pago de este cliente (2.1.2) Salida

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

267.5

267.50 230.00

Page 105: Universidad Tecnologica Centroamericana

______________________________________________________________________ 91

Datos: 150, 60, 100, 0 Memoria

Km Pago

150

60

100

267.50

230.00

Se regresa a revisar la condición para continuar con la repetición y puesto que se cumple

que 100 es distinto de cero, se recomienza con el paso 2.1. con la decisión 2.1.1 en la

condición “Km > 100” es F, lo que se aplica la fórmula del caso 2 (2.1.1.2), y se imprime el

resultado (2.1.2).

Salida

Se termina el ciclo, leyendo el siguiente dato (paso 2.1.3) Datos: 150, 60, 100, 0 Memoria Salida

Km Pago

150

60

100

0

267.50

230.00

250.00

Y aunque se sepa que ya no hay más datos, se debe regresar a revisar si la condición de

repetición se sigue cumpliendo o no. Como en este caso Km = 0, se tiene que la condición

“Km ≠ 0” no se cumple (es Falsa); y por lo tanto, ya NO se realiza otro ciclo más de la

repetición y el proceso termina.

267.50 237.00 250.00

267.50 230.00 250.00

Page 106: Universidad Tecnologica Centroamericana

______________________________________________________________________ 92

Análisis de Estructuras Concatenación: 1, 2, 3

2.1.1, 2.1.2, 2.1.3

Decisión: 2.1.1 Repetición: 2.1 (Numeral a la izquierda de la palabra MIENTRAS del desglose)

Ejemplo 3.10 (Repetición centinela, Boletos Tegucigalpa, SPS.) modificación del

Ejercicio 3.7 de Desglose de Decisión: Una compañía de transporte dispone del servicio entre las ciudades de Tegucigalpa y San

Pedro Sula. Se ofrecen dos tipos de tarifa (Primera clase y clase económica) de

Lps. 200.00 y Lps 110.00 respectivamente. Se le proporciona al programa el número de

boletos y el código de tarifa deseado (Código=1 para primera clase, código=2 para clase

económica) 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.

ESTRATEGIA: Trabajando de manera más simplificada se tiene: (Varios) (Varios)

Salida Pago Entrada Nbol

Cod

Observación 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 fórmulas 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.

Page 107: Universidad Tecnologica Centroamericana

______________________________________________________________________ 93

• Decisión: Verificar si cod = 1, precio de los boletos es 200 sino 110, así serán

diferentes fórmulas para calcular el pago.

• Repetición: Se procesarán 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 Condición de repetición, se tiene Nbol ≠ 0

1. EJEMPLO DE ESCRITORIO

2.-DICCIONARIO DE VARIABLES

Identificador Descripción .

Cod Código del tipo de tarifa

Nbol Número de boletos

Pago Total a pagar

3. FORMULAS Pago = 200 * Nbol (Fórmula-1)

Pago = 110 * Nbol (Fórmula-2)

4. RESUMEN DEL ANALISIS SALIDA: (Varios números, mensajes) Pago

1 por ciclo, 1 por ciclo

ENTRADA: (Varios números) Nbol, Cod

2 por ciclo

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

Page 108: Universidad Tecnologica Centroamericana

______________________________________________________________________ 94

PROCESO: Repetición controlada por centinela (Nbol ≠ 0), en el cual para cada

cliente Se lee el Número de boletos (Nbol) y Código (cod), si Cod=1,

se calcula el Pago con Fórmula-1, sino con Fórmula-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 código5

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 cálculo del pago depende de si se cumple que Cod = 1, además para cada

cliente se deberá imprimir dicho pago, solamente se suprime el titular PROCESO POR

CLIENTE

5 Del primer cliente solamente se había leído el número de boletos (Nbol), se tenía pendiente leer el código (cod).

Page 109: Universidad Tecnologica Centroamericana

______________________________________________________________________ 95

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 (Fórmula-1)

2.1.2.2 (F) Calcular Pago (Fórmula-2)

2.1.3 Imprimir “Total a pagar: Lps ”, 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 Memoria: Salida:

Análisis de Estructuras

Concatenación: 1, 2, 3

2.1.1, 2.1.2, 2.1.3, 2.1.4

Decisión: 2.1.2

Repetición: 2.1

6 Como se mencionó antes, del primer cliente solamente se había leído el Número de boletos (nbol) solicitados, así que se tenía pendiente leer el código (cod).

Nbol Cod Pago

2

3

0

1

2

400

330

Total a pagar Lps.400 Total a pagar Lps.330 Fin del programa

Page 110: Universidad Tecnologica Centroamericana

______________________________________________________________________ 96

Comparando los PROCESOS de los Resumen del Análisis de los Ejemplos 3.7 y el 3.10

para uno y para varios clientes:

En el último ejercicio se adicionó un mensaje de despedida que pudiera no ir, así que la

diferencia entre ambos desgloses es únicamente Repetición controlada por centinela

(cero, Nbol ≠ 0), en el cual para cada cliente, el lector esta listo para convertir a procesos

de repetición los ejercicios de las secciones anteriores, solamente se debe tener cuidado de

incorporar las 3 líneas características de una repetición que se mencionaron en la

Observación 3.4.3.2.

Proceso del Resumen del Análisis UN cliente

Ejemplo 3.7

VARIOS clientes (repetitivo)

Ejemplo 3.10

Se lee Número de boletos(Nbol) y

Código (cod), si Cod=1, se calcula el

Pago, con Fórmula-1, sino con

Fórmula- 2, y se imprime Pago con

su respectivo mensaje.

Repetición controlada por centinela

(Nbol ≠ 0), en el cual para cada

cliente

Se lee el Número de boletos(Nbol) y

, Código (cod,) si Cod=1, se calcula el

Pago con Fórmula-1, sino con

Fórmula-2, y se imprime el Pago

con su respectivo mensaje.

Al terminar el proceso imprimir un

Mensaje de despedida final

Observación 3.4.3.4 Hasta el momento para el desarrollo de los ejemplos y

ejercicios indicados se han utilizado: lecturas, impresiones, asignaciones o cálculos,

se ha trabajado concatenadamente, o hemos decidido (Ver si…) o se ha realizado

procesos repetitivos (Mientras Variable ≠ Centinela haga repetidamente).

Page 111: Universidad Tecnologica Centroamericana

______________________________________________________________________ 97

EJERCICIOS 3.4.3 Para cada uno de los problemas que se presentan se deberá preparar el análisis y desglose

del programa correspondiente:

1.- Una maestra tiene varios estudiantes en un curso en donde practica 3 exámenes, los

resultados de los exámenes 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, pág. 63 para que se

puedan procesar la Información de varios trabajadores. (Usar centinela para indicar

fin de datos).

3.- Se leen varios números distintos de cero, encontrar el valor absoluto de cada uno de

ellos.

4.- Dado un número clasificarlo como negativo, cero o positivo (mensajes).

5.- Del Apéndice A, ejercicios 22 al 24, pág. 280-281.

Page 112: Universidad Tecnologica Centroamericana

______________________________________________________________________ 98

3.5 ELEMENTOS EN EL ANALISIS DE UN P.O.P. PARTE II

3.5.1 DIAGRAMA DE ARBOL DE DECISIONES Ejemplo 3.11 (Árbol de decisiones, Decisiones anidadas, Mayor de 3 números) Hacer el análisis y desglose para un programa en el cual se leen tres distintos números 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 números a, b ó c es el mayor, es la

comparación de los números entre sí, de dos en dos. Por ejemplo, se puede comenzar

comparando a con b, evaluando la condición “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 hipótesis son

diferentes. Esta situación se puede representar de la siguiente manera en el diagrama que a

continuación se presenta y que se llama diagrama de árbol.

V

a > b

F

Si resulta que a > b, no se puede todavía llegar a ninguna conclusión ya que no se conoce la

relación entre a y c. Por ello, a continuación se pregunta si “a > c”, que se agregará en el

diagrama.

V

V a > c

F

a > b

F

Page 113: Universidad Tecnologica Centroamericana

______________________________________________________________________ 99

Ahora bien, si las dos condiciones son V, significa que a es mayor que los otros dos

números, y por lo tanto a es el mayor de los tres.

b c a

Si a > b y c > a (es decir que “a > c” es F), se tiene una situación como la que está

representada la recta real:

b a c

Por lo que “c” es el mayor de los tres, y estas conclusiones se agregan al diagrama de árbol

siguiente:

V a, “mayor”

a > c

V F c, “mayor”

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 conclusión, se considera que ya no se desarrollan más y se puede

decir que las conclusiones “a mayor” y “c mayor” son las “hojas” del árbol. Siguiendo con

el símil de botánica, al primer nodo (donde se coloca la primera condición “a > b”) se

conoce como la raíz del árbol. Se continua con la ramificación inferior, que corresponde a

la rama Falsa de la raíz, y se compara a con c, en el caso de que a > c, se puede concluir

que b es el mayor (¿Porqué?).

Page 114: Universidad Tecnologica Centroamericana

______________________________________________________________________ 100

a, “mayor”

V

a > c

V

F c, “mayor”

a > b

V b, “mayor”

F

a > c

F

En la ramificación 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 información con respecto a cual de los otros dos números b y c, es el

mayor. Por ejemplo podría suceder que:

a = 3 b = 7 c = 6

En donde a > b y a > c resultan ser falsas. En este caso el mayor es b.

Otro caso podría ser:

a = 3 b = 5 c = 9

En donde c resulta ser el mayor. En vista de lo anterior se agrega una comparación más al

diagrama, lo que permite completarlo.

Page 115: Universidad Tecnologica Centroamericana

______________________________________________________________________ 101

V a, “mayor”

V a > c

F c, “mayor”

a > b V b, “mayor”

F a > c V b, “mayor”

F

b > c

F c, “mayor”

El diagrama anterior permite desarrollar la “lógica” del programa, por lo que se considera

que el análisis está completo y se puede redactar el resumen respectivo.

Obsérvese que en la construcción del diagrama de árbol se utilizan otros elementos del

análisis que por su brevedad no se nombra explícitamente, como sucedió en el ejemplo de

escritorio en donde se asignaron valores específicos a: a, b y c; y se usaron otros gráficos

para representar los valores en la recta real. Lo anterior muestra que se puede utilizar varios

elementos del análisis de manera simultánea, según se considere que se requieran.

RESUMEN DEL ANALISIS SALIDA: (1 número, 1 mensaje) Mensaje que indica cual número a, b ó c es el mayor

(ver diagrama)

ENTRADA: (3 números) a, b, c

PROCESO: Se leen los números y se procede a determinar e imprimir cual es el mayor

mediante varias comparaciones entre ellos, de acuerdo al diagrama de árbol

anterior.

Page 116: Universidad Tecnologica Centroamericana

______________________________________________________________________ 102

DESGLOSES 1er. Nivel 1.-LECTURA DE DATOS

2.-COMPARACIONES E IMPRESION Niveles superiores

2.- COMPARACION E IMPRESIÓN

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. Realizar la prueba de escritorio de los siguientes desgloses, con los conjuntos de

datos que se proporcionan:

a) 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) Multiplicar X por -1 y sumárselo a T

2.1.2.2 (F) Sumar el valor de X a T

2.1.3 Incrementar N en 1 (N N + 1)

Page 117: Universidad Tecnologica Centroamericana

______________________________________________________________________ 103

3.-IMPRESIÓN

3.1 Imprimir el valor de T

b) 1. LECTURA DE DATOS:

1.1. Leer el valor del CODIGO 1.2. Leer el valor del PAGO

2. COMPARACIONES CALCULO E IMPRESIÓN

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: 6, -1, 0, 3, -5

Datos 2: 2, 2, 2, 2, 2

Datos 3: -3, -3, -3, -3, -3

Datos 1: 7, 2150, 150

Datos 2: 6, 1200, 80

Datos 3: 2, 4000, 300

Datos 4: 4, 600, 30

Datos 5: 5, 100, 10

Observación 3.5.1 Si el ramal 2.3.1 Verdadero o

2.3.2 Falso de una decisión tiene dos o más

instrucciones se utilizará la instrucción

general HACER LO SIGUIENTE y se indentará a

la derecha los subíndices correspondientes.

Page 118: Universidad Tecnologica Centroamericana

______________________________________________________________________ 104

II. En los siguientes ejercicios desarrolle el análisis y desglose para el programa respectivo

(Compruebe con una P.E.):

1.- Se leen las longitudes de los lados de un triángulo. Determinar si el triangulo es

equilátero, isósceles propio o escaleno. (Isósceles propio = dos lados congruentes, el

tercer lado no congruente).

2.- Conociendo los coeficientes de una ecuación cuadrática, determinar si las raíces 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 números enteros positivos, si el número es mayor que 10 se desea

encontrar su triple, en caso contrario se debe calcular su doble.

5.- En una tienda se ofrece crédito a ciertos clientes. Se tienen los montos de la deuda y

el número 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 número distinto de miembros y se han comprometido a adoptar Lps.

1,000.00 por grupo independientemente del tamaño de cada grupo. Dentro de cada

grupo los miembros han decidido adoptar equitativamente. Se le proporciona al

computador el número de miembros de cada grupo y se desea calcular la aportación

por miembro de cada grupo

3.5.2. REPETICION CON DECISIONES ANIDADAS Ejemplo 3.12 (Árbol de decisión, Repetición centinela, Aumentos por categoría)

Ejercicio del Apéndice A, No.36

Dados la categoría y el sueldo de un trabajador, calcule el aumento correspondiente

teniendo en cuenta la siguiente tabla. Imprima la categoría del trabajador y su nuevo sueldo.

Categoría Aumento

1 15%

2 10%

3 8%

Page 119: Universidad Tecnologica Centroamericana

______________________________________________________________________ 105

ESTRATEGIA

(Varios) (Varios) Salidas Categoría Entradas Categoría Nuevo_s Sueldo Se necesitará utilizar:

• Decisiones anidadas: ya que el aumento varia según la categoría, se deben hacer

clasificaciones según esta (categoría), para ello, se utilizará un árbol de decisiones

V Aumento del 15 %

Aumento del 10%

Categoría=1 V

F categoría = 2

F

Aumento del 8%

• Proceso repetitivo controlado por centinela (categoría o sueldo), escogiendo la

categoría con un valor no posible = 99 (no es 1, 2 o 3)

Condición de repetición: Categoría ≠ 99

1. EJEMPLO DE ESCRITORIO

Caso I Caso II

Categoría = 2 Categoría = 1

Sueldo = 2,000 Sueldo = 3,000

Aumento = 2,000 * 0.10 = 200 Aumento = 3,000 * 0.15 = 450

Nuevo_S = 2,000 + 200 = 2,200 Nuevo_S =3,000 + 450 = 3,450

Observación 3.5.2.1 : Cuando la categoría = 2 (V) se considerará un aumento

del 10%, si la categoría no es igual a 2 , se asume entonces que ese

ramal falso corresponderá a la categoría = 3 en forma tácita sin preguntar por

ello, así se evita una condición de decisión adicional.

Page 120: Universidad Tecnologica Centroamericana

______________________________________________________________________ 106

2. DICCIONARIO DE VARIABLES Identificador Descripción .

Categoría Categoría

Sueldo Sueldo Inicial

Aumento Aumento

Nuevo_S Nuevo sueldo

3. FORMULAS

Aumento = Sueldo * 0.15 (1)

Aumento = Sueldo * 0.10 (2)

Aumento = Sueldo * 0.08 (3)

Nuevo_S = Sueldo + Aumento (4)

4. RESUMEN DEL ANALISIS

SALIDA: (Varios números) Categoría, Nuevo_s

2 en cada ciclo

ENTRADA: (Varios números) Categoría, Sueldo

2 en cada ciclo

PROCESO: Proceso repetitivo controlado por centinela (99, Categoría ≠ 99), en

el cual, para cada empleado se lee la categoría y el sueldo, y mediante

decisiones anidadas, se calcula el aumento respectivo (Ver

DIAGRAMA DE ARBOL), calcular e imprimir N_sueldo.

Observación 3.5.2.2 Note que para todas la Categorías se podría realizar un

ejemplo Caso, pero con los ya realizados se nota que para las diferentes

categorías solamente varia el porcentaje de aumento.

Page 121: Universidad Tecnologica Centroamericana

______________________________________________________________________ 107

5. DESGLOSES 1er. Nivel

1. Pasos Iniciales

2. Proceso

2do. Nivel

1. PASOS INICIALES 1.1 Leer Categoría

2. PROCESO 2.1 Mientras Categoría ≠ 99 hacer lo siguiente repetidamente

2.1.1 Leer Sueldo

2.1.2 Calcular aumento (Fórmulas) (*)

2.1.3 Calcular Nuevo_S

2.1.4 Imprimir “Categoría”, Categoría

2.1.5 Imprimir “Nuevo sueldo”, Nuevo_S

2.1.6 Leer Categoría

(*)

DESGLOSE 2do NIVEL 1. PASOS INICIALES 1.1 Leer Categoría

2. PROCESO

2.1 Mientras Categoría ≠ 99 hacer lo siguiente repetidamente

2.1.1 Leer Sueldo

2.1.2 Ver si Categoría = 1

2.1.2.1 (V) Calcular aumento (Fórmula-1)

2.1.2.2 (F) Ver si Categoría = 2

2.1.2.2.1 (V) Calcular el aumento (Fórmula-2)

2.1.2.2.2 (F) Calcular el aumento (Fórmula-3)

2.1.3 Calcular Nuevo_S (Fórmula-4)

2.1.4 Imprimir “Categoría : ”, Categoría

Aumento = Sueldo * 0.15 Aumento = Sueldo * 0.10 Aumento = sueldo * 0.08 Nuevo_S = Sueldo + Aumento

El cálculo del aumento requerirá mas detalle (desglose), requiriéndose decisiones anidadas, y la ayuda del Diagrama de Árbol previamente mostrado

Page 122: Universidad Tecnologica Centroamericana

______________________________________________________________________ 108

2.1.5 Imprimir “Nuevo sueldo : ”, Nuevo_S

2.1.6 Leer Categoría

El lector puede ver en el Apéndice E en el Ejemplo E.1otra forma de desarrollar este

ejercicio 6. PRUEBA DE ESCRITORIO Datos: 2, 2000, 1, 3000, 99

Memoria Salida:

Categoría

Sueldo Aumento

Nuevo_S

2

1 99

2,000

3,000

200

450

2,200

3,450

Análisis de Estructuras Concatenación: 1,2 2.1.1, 2.1.2, 2.1.3, 2.1.4, 2.1.5, 2.1.6

Decisión: 2.1.2, 2.1.2.2 Repetición: 2.1

Ejemplo 3.13 (Árbol de decisiones, Repetitivo centinela, Lavado de autos, Apéndice A No. 37) Un grupo de personas dedicadas al negocio de lavado de automóviles, necesita un programa

para que determine cuanto tiene que pagar cada cliente de acuerdo a la siguiente tabla de

servicio: Tipo de Servicio Precio___

1. Lavado Exterior Lps. 25.00

2. Lavado Interior Lps. 30.00

3. Lavado Exterior e Interior Lps. 35.00

4. Lavado de Motor Lps. 40.00

Además de los servicios, se ofrece un descuento del 7% si se llevan dos o más automóviles.

Categoría: 2 Nuevo Sueldo: 2,200 Categoría: 1 Nuevo Sueldo: 3,450

Page 123: Universidad Tecnologica Centroamericana

______________________________________________________________________ 109

Se proporcionará al computador, el tipo de servicio y el No. de automóviles, calcular el

total a pagar por cliente.

ESTRATEGIA:

(Varios)

Salida (Varios) Entrada Tipo

Pagos N_autos

Se debe tomar en cuenta lo siguiente: • Se utilizarán Decisiones anidadas, como los precios varían según el tipo de servicio

seleccionado, así se deberá clasificar según 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:

Subtotal N_autos * 25

V

Tipo=1 V Subtotal N_autos * 30

F Tipo=2 V Subtotal N_autos * 35

F

Tipo =3

F Subtotal N_autos * 40

• 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 según el N_autos .calcular un

descuento

Si N_autos > 2 (V) se aplicará un descuento del 7% o del

(F) 0% en caso contrario

Page 124: Universidad Tecnologica Centroamericana

______________________________________________________________________ 110

• Repetición, seleccionando como variable centinela (Valor ficticio de fin de datos)

N_autos igual a cero y la condición de la repetición: N_autos ≠ 0

1. EJEMPLO DE ESCRITORIO

2. DICCIONARIO DE VARIABLES

Identificador Descripción . Tipo Tipo de servicio

N_autos Número de autos

Subtotal Subtotal

Desc Descuento

Total Total a pagar

3. FORMULAS

Subtotal = N_autos * 25 (Fórmula-1)

Subtotal = N_autos * 30 (Fórmula-2)

Subtotal = N_autos * 35 (Fórmula-3)

Caso I Caso II Caso III

N_autos = 3 N_autos = 1 N_autos = 0

Tipo = 4 Tipo = 2

Subtotal = 3 * 40 = 120 Subtotal = 1 * 30 = 30

Desc = 0.07 * 120 = 8.4 Desc = 0 (1)

Total = 120 – 8.4 = 111.6 Total = 30 – 0 = 30

(1) Observación 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 fórmulas, 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 estarán indicando formas alternativas para resolver

problemas (ver Apéndice E, ejemplos E.1, E.2).

Page 125: Universidad Tecnologica Centroamericana

______________________________________________________________________ 111

Subtotal = N_autos * 40 (Fórmula-4)

Desc = 0.07 * Subtotal (Fórmula-5)

Total = Subtotal - Desc (Fórmula-6)7

4. RESUMEN DEL ANALISIS

SALIDA: (Varios números) Total

1 en cada ciclo

ENTRADA: (Varios números) 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 (ó Clasificación e impresión)

3. Pasos Finales

2do. Nivel

1. PASOS INICIALES

1.1 Leer N_autos

2. PROCESO

7 Note que el subtotal solamente varía en el precio de cada tipo de servicio, posteriormente se estudiarán simplificaciones al respecto, ver Capítulo IV Ejemplo 4.12 previo al estudio del seudocódigo Nolae (Ver Apéndice E, ejemplo E.2).

Page 126: Universidad Tecnologica Centroamericana

______________________________________________________________________ 112

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 (Fórmula-1)

2.1.2.2 (F) Ver Si Tipo = 2

2.1.2.2.1 (V) Calcular Subtotal (Fórmula-2)

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 (Fórmula-5)

2.1.3.1 (F) Asignar 0 a Desc

2.1.4 Calcular Total (Fórmula-6)

2.1.5 Imprimir “Total a Pagar”, Total

2.1.6 Leer (siguiente) N_autos 6. PRUEBA DE ESCRITORIO Datos: 3, 4, 1, 2, 0 Memoria:

N_autos Tipo Subtotal Desc Pago

3 1 0

4

2

120

30

8.4

0

111.6

30

Salida

Total a Pagar: 111.6

Total a Pagar: 30

Muchas Gracias

Page 127: Universidad Tecnologica Centroamericana

______________________________________________________________________ 113

Análisis de Estructuras Concatenación: 1, 2, 3 2.1.1, 2.1.2, 2.1.3, 2.1.4, 2.1.5, 2.1.6 Decisión: 2.1.2, 2.1.2.2, 2.1.2.2.2, 2.1.3 Repetición: 2.1 Ejemplo 3.14 (Árbol de decisiones, decisión 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 Rango .

CI < 80 Subnormal

80 < CI ≤ 110 Normal

CI >110 Superior ESTRATEGIA:

Subnormal

Salida 1 Mensaje Normal ó Entrada CI

Superior • Repetición controlada por centinela, condición de repetición: CI ≠ 0 • Decisiones anidadas, ilustradas con un Diagrama de árbol.

V “Subnormal”

“Normal”

CI < 80 V

F CI < 110

F

“Superior”

Page 128: Universidad Tecnologica Centroamericana

______________________________________________________________________ 114

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 Capítulo 1)

Puede resultar mas claro al lector diseñar el árbol de decisiones respectivo, se empleó la

recta real para ilustrar gráficamente los rangos involucrados.

En vista de que en este ejercicio no hay que realizar ningún cálculo y que la única variable

de entrada es el CI se procederá al…

4.- RESUMEN DEL ANALISIS

Subnormal

SALIDA: (Un mensaje) Normal

Superior

80 110 |

80

110

110

Si CI < 80 (V)

(F)

11080

(F)

Si CI ≤ 110

(V)

“Subnormal”

“Normal”

“Superior”

80 110|

Observación 3.5.2.4: Para el segundo intervalo no es necesario realizar una decisión

compuesta 80 ≤ CI y CI ≤ 110, la primera parte no es necesaria pues si resulta

falsa la condición CI < 80 la consecuencia inmediata es que CI > 80 (o 80 < CI) y

ya no es necesario plantearlo, basta preguntar solamente CI ≤ 110

Page 129: Universidad Tecnologica Centroamericana

______________________________________________________________________ 115

ENTRADA: (Un número) CI

PROCESO: 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 (Clasificación e impresión)

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 Datos2: 75 Datos3: 125 Memoria: Memoria: Memoria:

CI CI CI 100 75 125

Salida Salida Salida

Normal Subnormal Superior

Page 130: Universidad Tecnologica Centroamericana

______________________________________________________________________ 116

Análisis de Estructuras Concatenación: 1, 2 Decisión: 2.1 2.1.2

Vale decir que el lector ya está en la capacidad de realizar varios ejercicios relacionados,

del Apéndice 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 numeración detallada que da el Desglose ya se torna

engorrosa, así que en las secciones subsiguientes se aprenderá a utilizar una notación mas

sencilla que facilitará el desarrollo de dichos ejercicios, vale decir que la metodología

utilizada hasta ahora siempre es válida y el lector debe conservarla para seguir

desarrollando buenos hábitos en la programación, muchas veces se necesitará escribir

ejemplos de escritorio, tener siempre claras las Salidas y las Entradas, etc..

3.6 CONCEPTO DE ALGORITMO

Todos los desgloses que se han presentado son ejemplos de algoritmos; y, en realidad,

representan el tipo de algoritmos que serán de interés en este libro. Se puede observar que

estos algoritmos se pueden realizar únicamente con ayuda de lápiz y papel, en lo que se ha

llamado prueba de escritorio (P.E.). Si el resultado de la ejecución 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

diseñado 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:

Observación 3.5.2.5. Las explicaciones brindadas para ilustrar las Decisiones

anidadas en repetición utilizando este tipo de rangos, aplican a variables enteras o

discretas y a variables reales o continuas

Se entenderá por algoritmo al conjunto finito de pasos o instrucciones claras, precisas y sin ambigüedad; que aplicadas en un número finito de veces conducen a la realización de una tarea específica.

Page 131: Universidad Tecnologica Centroamericana

______________________________________________________________________ 117

1.- Una seguida de otra, en la forma en que se presentan.

2.- Dependiendo de la evaluación de una condición, 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 evaluación de una condición. Estas tres formas distintas de organizar o estructurar la ejecución de las instrucciones se

llaman las estructuras básicas y son:

1.-La concatenación o secuencia.

2.-La decisión o selección.

3.-La repetición o iteración. Cuando un algoritmo se fundamenta en estas tres estructuras, se dice que el algoritmo está

estructurado.

EJERCICIOS 3.6 I.-- Diseñar algoritmos para resolver las siguientes situaciones:

a).- Cambiar la llanta de un vehículo

b).- Cocinar un huevo revuelto (“picado”)

c).- Proceso de tu matrícula

d).- Ir al cine

e).- Preparar una taza de café

II.- 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

Page 132: Universidad Tecnologica Centroamericana

______________________________________________________________________ 118

Continuar….

c) Con una calculadora en mano realizar las siguientes instrucciones para sumar

5 y 2:

1.- Presiona la tecla con el número 5

2.- Presiona la tecla con el signo +

3.- Presiona la tecla con el número 2

4.- Presiona la tecla el símbolo =

5.- Lee la respuesta en la pantalla de la calculadora

Page 133: Universidad Tecnologica Centroamericana

______________________________________________________________________ 119

CAPITULO 4 FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA 4.1 CONCEPTO DE SISTEMA

Considerando el concepto más general de sistema:

Conceptualizado de esta manera, resulta más difícil ejemplificar que no es un sistema por la

generalidad del concepto.

A continuación algunos ejemplos:

a) El sistema respiratorio del cuerpo humano

b) El sistema óseo de Juan Pérez.

c) El sistema solar.

d) El sistema político de la República de Honduras.

e) El sistema del diseño 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.

“Un sistema es un conjunto de objetos o entes que están relacionados de alguna

Page 134: Universidad Tecnologica Centroamericana

______________________________________________________________________ 120

Medio ambiente Frontera (puede ser Intangible)

Figura 4.1

Tanto la definición de la frontera, como la del medio ambiente (m.a.) de un sistema, es un

tanto convencional, dependerá de cómo se aprecie o desee apreciar el sistema desde los

puntos de vista de los intereses u objetivos de algún estudio particular que involucre el

sistema.

Los sistemas se pueden clasificar de distintas maneras, y se considerarán únicamente dos de

ellas.

• Por su interrelación con su medio ambiente, los sistemas pueden ser:

o Cerrados: Cuando NO admiten interacción con su medio ambiente.

o Abiertos: Cuando admiten interacción con su medio ambiente.

• Por su cambio en el tiempo (o algún período de tiempo)

o Estáticos: Cuando no varían en el tiempo (o en algún período de tiempo

referencial).

o Dinámicos: Cuando admiten cambios en el tiempo.

Para los fines de este libro la computadora es un sistema abierto y dinámico. Sus

componentes fundamentales: software y hardware interactúan con su medio ambiente que

es el usuario (el ser humano u otras máquinas) de quien recibe y envía datos o información.

Para otros fines, el medio ambiente de la computadora podría ser algo más amplio, podría

incluir el medio físico en donde se coloca la computadora y/o las fuentes de energía

eléctrica donde se conecta. Para efectos de la programación 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 información a su

medio ambiente que es el usuario.

Sistema

Page 135: Universidad Tecnologica Centroamericana

______________________________________________________________________ 121

No se debe perder de vista que la computadora actúa 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; además 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

básicas:

1.- Instrucciones que permitan al usuario transmitir datos o información hacia la

computadora.

2.- Instrucciones que permitan al usuario obtener información o datos de la

computadora.

3.- Instrucciones que permitan cambiar el contenido de las variables, en función del

contenido de otras variables.

4.- Instrucciones que permitan al sistema no realizar cambios.

Estas instrucciones básicas se caracterizarán en la siguiente sección.

4.2 BLOQUES ESTRUCTURADOS ATOMICOS E INTRODUCCION A LA

NOTACION DE DIAGRAMA DE FLUJO

Las flechas indican el orden en que se ejecutan las instrucciones dentro del algoritmo, por

lo que el símbolo anterior es un componente de lo que se conoce como diagrama de flujo.

Un bloque estructurado es una instrucción o conjunto de instrucciones de un algoritmo

y se representa por medio de un rectángulo, dibujando con una base horizontal, y con

una (y sólo una) flecha de entrada y una (y sólo una) flecha de salida.

Page 136: Universidad Tecnologica Centroamericana

______________________________________________________________________ 122

En este enfoque, no toda instrucción o estructura será válida en la construcción 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 capítulo.

Los párrafos anteriores no especifican cuales son en sí los bloques estructurados (b.e.), sino

su representación. Ahora se van a introducir los distintos b.e., y siguiendo con la notación

gráfica, se presentan cuatro b.e. básicos, que se llaman los bloques estructurados atómicos.

(b.e.a)

Bloques estructurados atómicos 1.- Lectura : Se efectúa 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 sección 3.4.

2.- Escritura: Se realiza la impresión 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 sección 3.4 (páginas

3.- Asignación: En la variable V se asigna el valor de la expresión E. Corresponde al

almacenamiento en las variables de la memoria, según se ha estudiado en la sección

2.3.

1. lectura:

2. escritura:

3. asignación:

4. nulo:

lea L

escriba L

V E

nulo

Page 137: Universidad Tecnologica Centroamericana

______________________________________________________________________ 123

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 instrucción de

acuerdo al flujo del algoritmo, Más adelante se verá su importancia.

Ejemplo 4.1 (Diagrama de Flujo, concatenación, Planilla de sueldos)

Elaborar el Diagrama de flujo del Ejemplo 3.4 (pág. 60), Planilla de sueldos de la sección 3.4.1

DICCIONARIO DE VARIABLES PHORA Pago base por hora VIVIENDA Pago vivienda

HTRABAJ Hrs ordin.trabajadas INGBRUTO Total Ing.bruto

HEXTRAS Hrs extras trabajadas TDEDUC Total deducción

DIHSS Deducción IHSS SNETO Sueldo neto

Fórmulas:

INGBRUTO = HTRABAJ * PHORA +HEXTRAS * PHORA * 2 (Fórmula-1) DIHSS = INGBRUTO * 0.035 (Fórmula-2) TDEDUC = DIHSS + VIVIENDA (Fórmula-3) SNETO = INGBRUTO – TDEDUC (Fórmula-4) DESGLOSE

1.- LECTURA DE DATOS

1.1 Lectura de Pago base por hora

1.2 Lectura de Horas ordinarias trabajadas

1.3 Lectura de Horas extras trabajadas

1.4 Lectura de Pago de vivienda

2.- CALCULOS

2.1 Calculo del Ingreso Bruto (Fórmula-1)

2.2 Cálculo de la deducción IHSS (Fórmula-2)

2.3 Cálculo de total de deducciones (Fórmula-3)

2.4 Cálculo del Sueldo Neto (Fórmula-4)

3.- IMPRESIÓN DE RESULTADOS

3.1 Impresión del Ingreso Bruto

3.2 Impresión del total de deducciones

3.3 Impresión del sueldo neto

Page 138: Universidad Tecnologica Centroamericana

______________________________________________________________________ 124

En la representación en diagrama de flujo del algoritmo correspondiente, se agregan los

símbolos extremos de inicio y final (que no son b.e.), y se tiene el siguiente diagrama:

1.1 Lectura de Pago base por hora 1.2 Lectura de Horas ord. Trabajadas 1.3 Lectura de Horas ext. Trabajadas 1.4 Lectura de Pago de Vivienda

2.1 Cálculo del Ingreso Bruto

2.2 Cálculo de la deducción

2.3 Cálculo del total de deduc.

2.4 Cálculo del Sueldo Neto

3.1 Impresión del Ingreso Bruto

3.2 Impresión del total de deduc.

3.3 Impresión del sueldo neto

Inicio

Lea PHORA

Lea HEXTRAS

Lea HTRABAJ

Lea VIVIENDA

INGBRUTO HTRABAJ * PHORA + HEXTRAS * PHORA*2

IHSS DIHSS INGBRUTO * 0.035

TDEDUC DIHSS + VIVIENDA

SNETO INGBRUTO - TDEDUC

Escriba INGBRUTO

Escriba TDEDUC

Escriba SNETO

Final

Page 139: Universidad Tecnologica Centroamericana

______________________________________________________________________ 125

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 rectángulos del diagrama se pudo haber colocado las instrucciones tal como aparecen en

el desglose, pero abreviando, se simplificó y estandarizó el lenguaje técnico para expresar

los algoritmos.

La notación que se usará no será gráfica (como los diagramas de flujo que son planos) sino

lineal y será muy similar al código de lenguajes de programación como: PASCAL, ADA95,

etc. Por tal razón la notación simplificada que se estará usando para representar los

algoritmos se conoce como un seudocódigo, y en particular el seudocódigo que se empleará

es el NOLAE (NOtación Lineal para Algoritmos Estructurados).

EJERCICIOS 4.2

1.- Determine que gráficos constituyen b.e. y cuales no ( explique porqué no) (a)

(b) (d) ( c ) (e) (f)

Page 140: Universidad Tecnologica Centroamericana

______________________________________________________________________ 126

NOtación Lineal de Algoritmos Estructurados

BLOQUE NOlae

Lectura lea

Escritura escriba

Asignación V ← E

Nulo nulo

Figura 4.2.1

4.3. INTRODUCCION AL SEUDOCODIGO NOLAE CON LOS b.e.a. La notación NOLAE para los b.e.a. prácticamente ya ha sido introducido con sus

representaciones en diagrama de flujo y es la siguiente (Ver figura 4.2.1):

1.- Lectura lea L ó lea L 2.- Escritura escriba L ó escriba L 3.- Asignación V E 4.- Nulo nulo ó nulo

4.4.- ALGORITMOS SEUDOCODIFICADOS CON CONCATENACION La concatenación de instrucciones es la forma más natural en que generalmente se

presentan las instrucciones y de hecho ya se ha estado haciendo desde la sección 4.2. Ahora

se procederá a introducir el concepto formalmente.

AsignaciónLectura

Medio Ambiente

S i s t e m a

Escritura

Frontera

Page 141: Universidad Tecnologica Centroamericana

______________________________________________________________________ 127

Si se tienen dos b.e.

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

Por definición, se considera que forman un nuevo b.e.

Obsérvese que en las reglas de representación de los b.e. en diagrama de flujo se respetan:

un rectángulo 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 asignación, ni nulo) sino

que es compuesto y resulta de aplicar la estructura de concatenación a B1 y B2.

Si interesara lo que está dentro del b.e. anterior, se puede representar de la siguiente

manera:

La concatenación puede ser extendida a tres o más b.e. como se vio en el ejemplo de la

sección 4.2. Así, por ejemplo, el b.e. compuesto que resulta de la concatenación de 3 b.e. se

puede representar de la siguiente manera en el diagrama de flujo

B1

B2

B1 B2

B1 B2

Page 142: Universidad Tecnologica Centroamericana

______________________________________________________________________ 128

A continuación se mostrarán los seudocódigos en Nolae de algunos de los Ejemplos

desarrollados en secciones anteriores, en ellos se utilizarán todos los bloques estructurados

vistos hasta el momento.

Ejemplo 4.2 (Nolae, Concatenación, leer dos números, imprimir suma)

Se tiene un desglose para un algoritmo en el cual se leen dos números A y B, se calcula su

suma y se imprime 1.- Leer los números A y B

2.- Calcular su suma y almacenarla en S

3.- Imprimir el valor de S La representación en NOLAE, lo mismo que la representación en diagrama de flujo,

comienza con la palabra inicio y termina con la palabra final que implícitamente indican

concatenación. Por otra parte las instrucciones, cuando están concatenadas, se separan por

coma “ , ”. Luego, el algoritmo en seudocódigo 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 A + B

escriba S Final

También se puede sustituir el estilo de negrita por el de subrayado para las palabras claves

de Nolae

Inicio lea A, B

S A + B

escriba S

Final

Page 143: Universidad Tecnologica Centroamericana

______________________________________________________________________ 129

Ejemplo 4.3 (Nolae, Decisión, Venta de dos artículos.)

Elaborar el seudocódigo del problema planteado en el Ejemplo 3.5, en el cual: se le

proporciona al computador los precios de venta de dos artículos 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

3. IMPRESION DE RESULTADOS

3.1 Total

A continuación, se presentan algunas reglas sencillas para reescribir este desglose en Nolae: a. Se omitirán los títulos del primer desglose (1, 2, 3).

b. Se emplearán las palabras reservadas (equivalentes del desglose) en Nolae.

c. En lugar de citar las fórmulas para los cálculos se colocarán las fórmulas mismas en el

formato de asignaciones.

d. Se agregarán en donde correspondan las palabras Inicio y Final.

e. Se utilizarán “INDENTACIONES” en lugar de las numeraciones con subincisos

propios del Desglose.

Después de aplicar las reglas antes citadas, se presenta a continuación el algoritmo

solicitado y a la par el desglose correspondiente (con el propósito de facilitar la

comprensión del lector).

Subtotal =precio1 + precio2 (Fórmula-1)

Isv =subtotal * 0.12 (Fórmula-2)

Total =subtotal + isv (Fórmula-3)

2.1 Calcular Subtotal (Fórmula-1)

2.2 Calcular Isv (Fórmula-2)

2.3 Calcular Total (Fórmula-3)

Fórmulas:

Page 144: Universidad Tecnologica Centroamericana

______________________________________________________________________ 130

DESGLOSE NOLAE Inicio 1.1 Leer Precio1 lea Precio1

1.2 Leer Precio2 lea Precio2

2.1 Calcular Subtotal (Fórmula_1) Subtotal ← Precio1 + Precio2

2.2 Calcular Isv (Fórmula_2) Isv ← Subtotal * 0.12

2.3 Calcular Total (Fórmula_3) Total ← Subtotal + Isv

3.1 Imprimir Total escriba Total

Final

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 datos 1: 20, 4

lea x, y datos 2: 5, 6

t x – y²

q 20 – t

Escriba t, q

final

Observación 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 concatenación deben ir indentadas más a

la derecha en el mismo margen, esto se resalta con

líneas verticales como las mostradas:

Page 145: Universidad Tecnologica Centroamericana

______________________________________________________________________ 131

4.5.- ALGORITMOS SEUDOCODIFICADOS CON DECISION

Para construir el b.e. generado por una decisión se necesita una condición C y dos b.e.: B1

y B2. La Condición se representará por un rombo y obteniendo el siguiente diagrama:

b) inicio S 0 datos 1: 2, 3, 6

lea K2 datos 2: 0, -1, 7

escriba “Inicio de cálculos” datos 3: -2, 0, 3

S S + K2 * 5

lea tron, R2D2

S S + tron * (R2D2-5)

escriba S

final

c) inicio dato : 5 escriba “Teclee un número”

lea num

D 2 * num

escriba “El doble del número leído es”, D

final

B1

CV F

Punto de salida

Page 146: Universidad Tecnologica Centroamericana

______________________________________________________________________ 132

Por definición, el b.e. que se obtiene es un b.e. compuesto generado por una decisión, 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:

De nuevo se puede observar que se satisfacen las reglas de representación de un b.e. A la

flecha de salida se le llama también el punto de salida (de encuentro) o el final de la

decisión. También 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 condición C.

Si la condición C es Verdadera, se ejecuta B1 (ignorándose B2) y así se completa la

ejecución de la decisión. Pero, si resulta que C es Falsa, se ejecuta B2 y no B1. Ejecutar la

decisión no solamente implica la evaluación de la condición C, sino además la ejecución de

una (y sólo una) de sus ramas. La representación en Nolae es: si C entonces B1 sino B2 fin-si O bien, usando márgenes:

V F

Punto de salida

B2

C

Si C si C entonces entonces B1 B1 sino ó sino B2 B2 Fin-si Fin-si

Page 147: Universidad Tecnologica Centroamericana

______________________________________________________________________ 133

Ejemplo 4.4 (Nolae, Decisión, Venta con descuento) Diseñar el algoritmo en seudocódigo Nolae del Ejemplo 3.6 (pág.72) de la Sección 3.4.2., en el

cual se otorgan distintos porcentajes de descuento según sea el monto de la Venta.

DICCIONARIO DE VARIABLES NOMBRE DESCRIPCION UNIDADES_ Val_Venta Valor de la venta sin isv (en Lps.) Descuento Valor del descuento (en Lps.) Subtotal Subtotal con descuento (en Lps.) Isv Valor del Isv (en Lps.) Total Total a Pagar (en Lps.)

DESGLOSE

1. LECTURA DEL DATO

1.1. Leer Val_Venta

2. CALCULO DE VALORES

2.1. Ver si el Val_Venta es mayor de 200

2.1.1. (Verdadero) Calcular la deducción con el 20% (Fórmula-1)

2.1.2. (Falso) Calcular la deducción con el 10% (Fórmula-2)

2.2. Calcular Subtotal con deducción (Fórmula-3)

2.3. Calcular Impto. Sobre venta (Fórmula-4)

2.4. Calcular total a pagar (Fórmula-5)

3. IMPRESIÓN DE RESULTADOS

3.1. Imprimir Descuento, Subtotal, Isv, Total El algoritmo representado en seudocódigo 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 subtotal *0.12

total subtotal + isv

escriba val_venta, descuento, subtotal, isv, total final

Page 148: Universidad Tecnologica Centroamericana

______________________________________________________________________ 134

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 val_venta * 0.2

sino

descuento val_venta * 0.1

fin si

subtotal val_venta – descuento

isv subtotal *0.12

total subtotal_val + isv

escriba “Venta Lps. “, Val_venta

escriba “Descuento Lps “, descuento

escriba “Subtotal Lps “, subtotal

escriba” Impuesto Lps. “, isv

escriba “Total a pagar Lps. ”, total

final

Ejemplo 4.5 (Nolae, Decisión, Boletos Tegucigalpa, SPS) Escribir el algoritmo en seudocódigo Nolae del Ejemplo 3.7 pág. 77,(Decisión, Boletos

Tegucigalpa, SPS)

Una compañía de transporte dispone del servicio entre las ciudades de Tegucigalpa y San

Pedro Sula. Se ofrecen dos tipos de tarifa (Primera clase y clase económica) de

Lps. 200.00 y Lps 110.00 respectivamente. Se le proporciona al programa el número de

boletos y el código de tarifa deseado (Código=1 para primera clase, código=2 para clase

económica) 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 continuación:

Con más detalle aún sería: escriba “Venta Lps ” escriba Val_venta

Page 149: Universidad Tecnologica Centroamericana

______________________________________________________________________ 135

Inicio Lea Cod

Lea Nbol

Si Cod = 1

entonces

Pago 200 * Nbol

sino

Pago 110 * Nbol

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 (pág.81)a continuación un ejemplo:

Ejemplo 4.6 (Nolae, Decisiones anidadas, número negativo, cero positivo)

Escribir el algoritmo en seudocódigo Nolae de un programa en el cual se debe determinar e

imprimir si un número es positivo, negativo o cero. Ver Ejemplo 3.8 (pág.81). El desglose 2do. Nivel obtenido se presenta a continuación, colocando a la par su

codificación en Nolae: (1. Lectura de datos) Inicio 1.1 Leer X lea X (2. Clasificación e Impresión) 2.1 Ver Si X < 0 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:

Page 150: Universidad Tecnologica Centroamericana

______________________________________________________________________ 136

Inicio

lea X

Si X < 0

entonces

escriba “Negativo

sino Si X = 0

entonces

escriba “Cero”

sino

escriba “Positivo ”

Fin-si

Fin-si

Final

4.6 ALGORITMOS SEUCODODIFICADOS CON REPETICION

La repetición tiene únicamente dos componentes: una condición C y un b.e. “B”. Su

representación en diagrama de flujo es la siguiente:

Observación 4.5.1: Todas las decisiones deben terminar con un fin si. En las

decisiones anidadas, los fin si se irán colocando de adentro hacia fuera y un renglón

más abajo, recordando en general que se utilizarán en forma agrupada las palabras :

Si entonces sino fin si

Observación 4.5.2. Las pruebas de escritorio de un algoritmo seudocodificado en

Nolae, se realizan de igual manera que en los Desgloses.

Page 151: Universidad Tecnologica Centroamericana

______________________________________________________________________ 137

Figura 4.6.1 Por definición el bloque compuesto que resulta de aplicar la estructura de repetición es

también un b.e.

Como el flujo lo indica, primero se evalúa la condición 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 ejecución de B. Siempre, al terminar la ejecución de B, se regresa a evaluar la

condición C. Una vez que C sea F, la ejecución de la repetición termina y se producirá la

salida del bloque; el cual se puede delimitar como se grafica a continuación.

Figura 4.6.2

Al b.e. que se repite, o sea B, se le llamará RANGO de la repetición Observe que la repetición es la única estructura en donde el flujo se dirige hacia atrás,

cuando se regresa a evaluar la condición C para determinar si se continua o no repitiendo

la ejecución del b.e. B.

En el seudocódigo, la repetición se expresa de la siguiente manera:

CV

F

B

C

B V

F

Page 152: Universidad Tecnologica Centroamericana

______________________________________________________________________ 138

mientras C haga B fin mientras Y, en el estilo con márgenes se puede representar la estructura de la siguiente manera:

No debe confundirse la repetición con la decisión. En la decisión 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 repetición todas las instrucciones del rango se ejecutan una o varias

veces repetitivamente. Una condición es un componente común en ambas estructuras, y en

ambas también se evalúa a condición, En la decisión la condición determina que camino

tomar (la rama V o la rama F), pero en la repetición determina si el Rango tiene que seguir

ejecutándose o no. En la repetición, por lo tanto, no se habla de rama V o rama F.

Ejemplo 4.7 (Nolae, Repetición, Kilometraje) Elaborar el algoritmo en Nolae del Ejemplo 3.9 (pág.83)de la sección 3.4.3, que trata de

una Compañía que alquila automóviles y cobra a sus clientes según el kilometraje

recorrido.

Reescribiendo las fórmulas y la síntesis del desglose se tiene: FORMULAS Caso 1 Pago = 200 + 0.50 * Km Fórmula-1

Caso 2 Pago = 215 + 0.35 * Km Fórmula-2

Síntesis 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 Fórmula-1 Caso 1

2.1.1.2 (F) Calcular pago con Fórmula-2 Caso 2

2.1.2 Imprimir el valor del pago

2.1.3 Leer el siguiente dato (Km.)

mientras C haga mientras C haga

B ó B

fin mientras fin mientras

Page 153: Universidad Tecnologica Centroamericana

______________________________________________________________________ 139

Representando el algoritmo en Nolae, se tiene lo siguiente: Inicio lea Km

mientras Km ≠ 0 haga

si Km < 100

entonces

Pago 200 + 0.50 * Km

sino

Pago 215 + 0.35 * Km

fin si

escriba Pago

lea Km

fin mientras

final

Observe que las instrucción 2.1 y 2.2 están concatenadas, y a su vez el desglose de la 2.1 es

una concatenación 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 concatenación de tres elementos. Esta consideración permite

simplificar la redacción del seudocódigo.

Ejemplo 4.8 (Nolae, repetición, Boletos Tegucigalpa, SPS)

Escribir el seudocódigo Nolae del Ejemplo 3.10 (pág.92) en la sección 3.4.3, que dice lo

siguiente

Una compañía de transporte dispone del servicio entre las ciudades de Tegucigalpa y San

Pedro Sula. Se ofrecen dos tipos de tarifa (Primera clase y clase económica) de

Lps. 200.00 y Lps 110.00 respectivamente. Se le proporciona al programa el número de

boletos y el código de tarifa deseado (Código=1 para primera clase, código=2 para clase

económica) 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

Page 154: Universidad Tecnologica Centroamericana

______________________________________________________________________ 140

Inicio

Lea Nbol Mientras Nbol ≠ 0 haga

Lea Cod

Si Cod = 1

entonces Pago 200 * Nbol

sino Pago 110 * Nbol

Fin-si

escriba “Total a a pagar: Lps. ”, Pago

Lea Nbol

Fin-Mientras

Escriba “Fin del Programa ”

Final

Para ejercitar más este tipo de seudocódigo, se presentan los siguientes ejemplos que muestran algunas variantes:

Ejemplo 4.9 (Nolae, Repetición 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 Rango

CI < 80 Subnormal

80 < CI ≤ 110 Normal

CI >110 Superior).

En el Capítulo 3 se desarrolló este ejemplo pero sin repetición, (por favor vea el Ejemplo

3.8, pág.81) ahora se hará repetitivo.

Estrategia:

(Varios) (Varios)

Salida Mensaje Entrada CI

Page 155: Universidad Tecnologica Centroamericana

______________________________________________________________________ 141

• Se utilizarán Decisiones anidadas, ilustradas con Diagrama de árbol (se deja al

lector la elaboración del mismo)

• 2. Se modificará el ejercicio utilizando: Repetición controlada por centinela (CI ≠ 0)

Inicio 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 continuación se muestra la PE con los siguientes datos PRUEBA DE ESCRITORIO

Datos: 80, 120, 100, 0

Memoria: Salida:

CI

80

120

100

0

Subnormal

Superior

Normal

Page 156: Universidad Tecnologica Centroamericana

______________________________________________________________________ 142

Ejemplo 4.10 (Nolae, Decisiones anidadas, Repetición con centinela, Lavado de Autos) Codificar en Nolae el Ejemplo 3.13 (pág.108), el cual se desarrolló hasta un segundo

desglose, remitirse al enunciado en el Capítulo 3, Sección 3.5.(pág 108).

Inicio

Lea N_autos

Mientras N_autos ≠ 0 haga

Lea Tipo

Si Tipo = 1

entonces

Subtotal 25 * N_autos

sino

Si Tipo = 2 entonces Subtotal 30 * N_autos

sino

Si Tipo = 3 entonces Subtotal 35 * N_autos sino

Subtotal 40 * N_autos Fin-si Fin-si

Fin-si

Si N_auto ≥ 2

entonces Desc Subtotal * 0.07

sino Desc 0

Fin-si

Total Subtotal - Desc

escriba Total

lea N_autos

Fin-Mientras

Final

Page 157: Universidad Tecnologica Centroamericana

______________________________________________________________________ 143

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

Elaborar un algoritmo para el ejemplo anterior, pero simplificando las fórmulas (subtotal). Se presentará una variante del ejemplo anterior Ejemplo 4.10 (pág.142) consistente en una

simplificación de las fórmulas en el Subtotal. Se puede observar que la diferencia entre

estas fórmulas es solamente el precio en el servicio, se asignarán entonces estos valores a

la variable precio, para utilizar una sola fórmula para el subtotal que será:

Subtotal precio *N_autos Inicio Lea N_autos

Mientras N_autos ≠ 0 haga

Lea Tipo

Si Tipo = 1

entonces

Precio 25

sino

Si Tipo = 2 entonces Precio 30 sino Si Tipo = 3 entonces Precio 35 sino

Precio 40 Fin-si

Fin-si Fin-si

Subtotal Precio * N_autos

Si N_auto ≥ 2

entonces Desc Subtotal * 0.07

sino Desc 0 Fin-si Total Subtotal - Desc

escriba Total

lea N_autos Fin-Mientras

Final

Page 158: Universidad Tecnologica Centroamericana

______________________________________________________________________ 144

EJERCICIOS 4.6

4.7 DIAGRAMACION DE FLUJO DE ALGORITMOS ESTRUCTURADOS

Los algoritmos escritos en el seudocódigo se representan en diagramas de flujo por medio

de b.e. que se resumen de la siguiente manera:

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 T + R

sino T T + 2 * R

fin si

i i + 1

escriba i, “TOTAL”, T

lea M

fin mientras datos: 16, 14, 4, 10, 3, 2, 11

final

2.- Realizar la seudocodificación del Ejemplo 3.12, pág.104, (Aumentos por

categoría) 3.- Apéndice A, Ejercicio II incisos del 25 al 29.

4.-- Apéndice A, Ejercicios III.

5.--Apéndice A, Ejercicios del 47 al 51.

6.- Apéndice A, Ejercicios del 52 al 55.

Page 159: Universidad Tecnologica Centroamericana

______________________________________________________________________ 145

Lectura

Escritura

B. e. Atómicos Asignación

Nulo

Bloques Estructurados B.e. Concatenación

B. e. Compuestos Decisión

Repetición

que se han representado de la siguiente manera: b.e. atómicos

b.e. compuestos (estructurados): Concatenación, decisión y repetición.

Estos se ilustraron previamente en las secciones 4.4, 4.5 y 4.6, de manera informal, en este

capítulo se tratarán con más profundidad, a continuación se muestran la representación de

la concatenación:

De igual manera existen gráficos para representar los demás b.e. compuestos, los cuales se

muestran de manera comparativa en los gráficos siguientes.

lea L

Lectura Escritura

escriba L

V E

Asignación Nulo

nulo

B1 B2

Page 160: Universidad Tecnologica Centroamericana

______________________________________________________________________ 146

Ejemplo 4.12 Dibujar el diagrama de flujo del algoritmo del Ejemplo 4.7, pág.138, (Repetición centinela, Kilometraje) inicio

lea Km

mientras Km ≠ 0 haga

si Km < 100

entonces

Pago 200 + 0.5 * Km

sino

Pago 215 + 0.35 * Km

fin si

escriba Pago

lea Km

fin mientras

final

Final

B1

B2

B3

Inicio Inicio

B1

BB2

Final

B4

Inicio

B1

Final

B2

B3 B4

B5

C V F

C V

F

Concatenación Decisión Repetición

Page 161: Universidad Tecnologica Centroamericana

______________________________________________________________________ 147

Resolución del Ejemplo 4.12: DIAGRAMA DE FLUJO

V

V

F

F

Se muestran con diferentes cuadros punteados la identificación de las distintas

estructuras del diagrama.

lea Km

Pago 200 + 0.5 *Km

Escriba.pago lea Km

Inicio

Km ≠ 0 Km <100

Pago 215 +0.35* Km

Final

lea Km

Final

Pago 200 + 0.5 Km

Esc.pago lea KmKm ≠ 0 Km <100

Pago 215 +0 .35 Km

Inicio

V

V

F

F

Page 162: Universidad Tecnologica Centroamericana

______________________________________________________________________ 148

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).

2.- Dibujar el diagrama de flujo de los algoritmos de los Ejemplos del Capítulo 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, pág 144

Inicio

B1 B2 C1

B3 B4

B6

C3

B8

B7

Final

C2 B5

V

V

V F

F

F

Page 163: Universidad Tecnologica Centroamericana

______________________________________________________________________ 149

4.8.- RELACION ENTRE DESGLOSES, ALGORITMOS Y DIAGRAMAS

Se ha estudiado que un algoritmo es un conjunto finito de instrucciones con ciertas

características. 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 técnico

como el seudocódigo Nolae. Aún más, se puede utilizar un seudocódigo menos exigente

que esté entre el lenguaje natural y el seudocódigo Nolae. También se ha visto que la

estructura del algoritmo se puede representar gráficamente por medio de diagramas de

flujo. Todas estas formas constituyen medios diferentes para representar un algoritmo dado.

A continuación se presenta un resumen de la utilidad, ventajas y desventajas de cada una de

estas formas.

Desglose El desglose permite desarrollar la lógica del algoritmo de manera descendente. Permite ir

“descubriendo” la estructuración del algoritmo de lo general a lo particular. Hasta llegar a

las instrucciones específicas (b.e. atómicos). Tiene la facilidad de que se puede usar el

lenguaje natural, por lo cual es posible la expresión de acuerdo a la manera personal de

pensamiento.

Por otra parte, tiene la desventaja de que no siempre es preciso y que su traducción a un

lenguaje de programación no es inmediata. Aunque para efectos didácticos se han

desarrollado desgloses para ejercicios sencillos, en la práctica, para el programador

experimentado o al estudiante avanzado de programación, el desarrollo de desgloses no es

necesario en problemas de poca complejidad. También es de notar que el flujo de las

instrucciones no es tan evidente y su seguimiento requiere de cierto esfuerzo y alguna

experiencia o ejercitación previa.

Seudocódigo El seudocódigo es preciso ya que cada palabra tiene un significado específico y sólo uno.

Además, cada instrucción o estructura tiene una y sólo una representación; por lo que

constituye una manera más exacta y detallada del tipo de algoritmos de interés en

Page 164: Universidad Tecnologica Centroamericana

______________________________________________________________________ 150

computación. El seudocódigo define rigurosamente un algoritmo sin el tecnicismo extremo

de las sintaxis de los lenguajes de programación. Otra ventaja considerable de los

seudocódigos es que están escritos con palabras del idioma natural, que aunque restringidas

a un significado muy específico, permiten recordarlo fácilmente. Esto es particularmente

válido en el ámbito del idioma español, ya que la gran mayoría de los lenguajes de

programación usan términos tomados de la lengua inglesa. El seudocódigo se asemeja

mucho al código de un lenguaje de programación, por lo que su traducción a éste es casi

directa; siendo independiente del lenguaje de programación que se haya escogido (sin

embargo, esta traducción es un tanto laboriosa en lenguajes no estructurados.). También, el

algoritmo en un seudocódigo se presta a una revisión completa y detallada de su lógica 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 resúmenes como en el caso del desglose que puede

desarrollarse a distintos niveles. En el caso de programas muy largos o que su utilización no

es muy práctica. Al ser independiente de los lenguajes de programación y construir una

base para cualquiera de ellos, no siempre involucra todas las instrucciones específicas y/o

especiales de los lenguajes de programación.

Diagramas de flujo Como todas las representaciones gráficas, permite una visualización más completa de la

estructuración del algoritmo. El flujo de ejecución del algoritmo está indicado con claridad

por medio de las flechas y las bifurcaciones están inequívocamente representadas por

medio de los rombos de las condiciones, por lo que es de fácil seguimiento. Para muchos es

el medio que mejor muestra la “lógica” del algoritmo, y que efectivamente, es el caso de

bifurcaciones “ hacia atrás”, como en la repetición que el flujo es evidente. Por lo tanto

para el que se inicia en la programación resulta más comprensible que los desgloses o

seudocódigos. Su traducción a un lenguaje de programación no es difícil, especialmente si

para los bloques atómicos se utilizan la terminología de un seudocódigo o bien se utilizan

otros símbolos específicos en vez de los rectángulos (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,

Page 165: Universidad Tecnologica Centroamericana

______________________________________________________________________ 151

equivalentes al primero o segundo desglose del algoritmo. Los diagramas de flujos son muy

útiles en la enseñanza, ya que muestran con claridad, como se ha mencionado

anteriormente, la lógica de un algoritmo o porción del mismo. Son útiles para la

introducción 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 práctico a un nivel profundo de detalle. Tampoco resulta práctico para el diseño

descendente, que es la modalidad de desarrollo de algoritmos en este curso. Para su diseño

especifico, aún en algoritmos sencillos, la técnica del diagrama de flujo como desarrollo de

la lógica de un programa, presume que el diseñador 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 lógica” para

los programas y que se han iniciado con los diagramas de flujo, éste constituye la forma

ideal de desarrollar programas. Pero la instrucción que sigue a cada instrucción, o en el

peor de los casos, las instrucciones que da inicio a un algoritmo, no siempre es evidente

para el común de los mortales que se está introduciendo al campo de la programación.

Didácticamente, el diagrama de flujo mal utilizado, puede abrir camino a una mala

estructuración de un algoritmo y a fomentar malos hábitos de programación.

Específicamente cuando se trazan flechas sin mucho cuidado o se dejan flujos incompletos.

Puede inducir al uso indiscriminado de “goto’s”, (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 mayoría de los

lenguajes, resultan en “programas espagüeti”

4.9.- CENTINELAS, CONTADORES Y ACUMULADORES 4.9.1 Centinelas

Aunque no ha sido mencionado por su nombre ya se ha utilizado este concepto en el

Ejemplo 3.9 (pág.83) de la sección 3.4.3 y luego se utilizó también en la sección 4.6

Ejemplo 4.7 (pág.138), su algoritmo se muestra a continuación:

Básicamente un centinela (llamado también bandera) es una variable cuyo valor

representa un estado de una situación específica.

Page 166: Universidad Tecnologica Centroamericana

______________________________________________________________________ 152

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 200 + 0.5 * Km sino

Pago 215 + 0.35 * Km 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 situación específica es “ya no hay

más datos válidos que procesar” otra aplicación se puede ver en los Ejemplos 4.10

(pág.142) con la variable Numero de autos, toma un valor centinela de 0 y en el Ejemplo

3.12 (pág. 104)en donde la variable categoría 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 rápida se pueda determinar que tiene valores

no posibles

Normalmente, muchos programas se diseñan para que desde un principio no acepten datos

incorrectos, de tal manera que si un dato es inválido, no se permite su ingreso o subsecuente

almacenamiento. En relación 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 (pág. 104)en el que dados la categoría (1, 2, 3) y el sueldo de un se

calcula el aumento y el nuevo sueldo del trabajador. Para seleccionar la variable centinela

Page 167: Universidad Tecnologica Centroamericana

______________________________________________________________________ 153

puede pensarse que Cero para el “sueldo” puede ser una buena opción, también para la

“categoría” 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

generación de secuencias de números (sucesiones), vale decir que las BANDERAS

también se utilizan para denotar un cambio de estado, por ejemplo en búsquedas, se

acostumbra inicializar la Bandera en un valor y si determinada condición establecida se

cumple en al menos un caso, se cambia de valor la bandera; bastará entonces preguntar en

una decisión 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 situación de interés,

en estos casos se utilizará un contador.

Se realizarán 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

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 mayoría de las veces) a medida que se cuenta lo que

se desea.

Page 168: Universidad Tecnologica Centroamericana

______________________________________________________________________ 154

Prueba de escritorio:

Memoria:

Ejemplo 4.15 (Contadores, Votación entre 2 candidatos.) Realizar el escrutinio de una elección entre dos candidatos (ADAN y BETO) por un

número impar de votantes, considerando que todos los votos son válidos y que no hay votos

en blanco, lo votos estarán 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

Gana ADAN (Varios)

• S Un mensaje o E Voto Gana BETO

• Asumiendo que se tienen todas las papeletas de la votación de la siguiente manera

• Se tiene un proceso repetitivo controlado por centinela, cuya condición de

repetición es Voto ≠ 9.

• Se necesita un contador de votos para cada uno de los candidatos,

CA será el contador de votos de ADAN y

CB será el contador de votos de BETO

N Se puede observar que se inicializó la variable N en

0

1

2

3

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.

1 Voto de ADAN 1

2 Voto de BETO 2

1

1

2

9 Marca de fin de datos, ya no hay mas votos

Page 169: Universidad Tecnologica Centroamericana

______________________________________________________________________ 155

Ambos deben inicializarse en cero ya que antes de comenzar con el conteo ningún

candidato tiene votos, posteriormente según 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 pág.153) así:

CA CA + 1 ó

CB CB + 1, se requerirá entonces de una

• Una decisión para incrementar el voto a quien corresponda (en un ciclo de Retición)

• Una decisión fuera del ciclo repetitivo comparando los contadores y publicando al

ganador:

DICCIONARIO DE VARIABLES

Identificador Descripción .

CA Contador de votos de ADAN

CB Contador de votos de BETO

Voto Voto contenido en la boleta

RESUMEN DEL ANALISIS

SALIDA: (Un mensaje) “Gana ADAN” ó “Gana BETO”

ENTRADA (Varios números) 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.

Si voto = 1 (V) … incrementar 1 voto a ADAN (voto =2 ) (F)… incrementar 1 voto a BETO

Si CA >CB (V) …publicar Gana ADAN (F) …publicar Gana BETO

Page 170: Universidad Tecnologica Centroamericana

______________________________________________________________________ 156

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 asignación

respectiva.

Page 171: Universidad Tecnologica Centroamericana

______________________________________________________________________ 157

Seudocódigo Nolae Inicio

CA 0 -- Inicializar un contador (1) CB 0 (2)

lea Voto

mientras Voto ≠ 9 haga

si Voto = 1 entonces CA CA +1 -- Incrementar un voto (3) sino CB CB +1 (4) fin si lea Voto

fin mientras

si CA > CB entonces escriba “Gana ADAN” sino escriba “Gana BETO” fin si (5)

final

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

Memoria Salida

CA CB Voto

0

1

2

3

0

1

2

1

2

1

1

2

9

Gana ADAN

Page 172: Universidad Tecnologica Centroamericana

______________________________________________________________________ 158

Considerando el último inciso de la observación anterior, si en el ejemplo que nos ocupa si

se quisiera publicar cuantos votantes participaron, se deberán agregar las siguientes Líneas:

Votantes CA + CB Línea (6)

Escriba “Total de votantes: “, votantes Línea (7)

Ejemplo 4.16 (Conteo de clientes con 20% y 10% de descuento, hace referencia al Ejemplo 4.4, pág.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 más 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.

Además 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

Observación 4.9.2 Los contadores tienen en general tres momentos:

1) Inicialización en general en cero y antes de un Ciclo Repetitivo, ejemplo CA 0

2) Incremento generalmente en 1 en un Ciclo Repetitivo: CA CA +1

Note que se escribe la MISMA VARIABLE a AMBOS LADOS de la asignación

respectiva, esta asignación se colocará estratégicamente en el flujo del programa

según 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

Page 173: Universidad Tecnologica Centroamericana

______________________________________________________________________ 159

El algoritmo respectivo se muestra en el Ejemplo 4.4 ,pág. 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 análisis, se procederá

a diseñar el algoritmo solicitado.

DICCIONARIO DE VARIABLES

Identificador Descripción TIPO de dato

Val_Venta Valor de la venta sin isv (Real en Lps.)

Descuento Valor del descuento (Real en Lps.)

Subtotal Subtotal,Nuevo valor de venta con descuento (Real en Lps.)

Isv Valor del Isv (Real en Lps.)

C_20 Contador de clientes con 20% descuento (Entero)

C_10 contador de clientes con 10% descuento (Entero)

N_Clientes Clientes totales atendidos (Entero)

Este ejemplo ya se abordó previamente, las modificaciones a incorporar consistirán en

adicionar dos contadoras C_20 y C_10, para su implementación se considerarán los tres

momentos de los contadores mencionados en la Observación 4.9.2

Para determinar los clientes totales atendidos N_Clientes, existen dos alternativas:

• Utilizar un contador con su respectivo incremento: N_Clientes N_Clientes + 1 ó

• Calcularlo sumando C_20 y C_10, así: N_Clientes C_20 + C_10

• ESTRATEGIA

S (Varios)

Total

-----------------+--------------- Asignación Característica C_20, Clientes con 20% de descuento: C_20 C_20 + 1

S C_10, Clientes con 10% de descuento: C_10 C_10 + 1

N_Clientes Total de clientes atendidos N_clientes C_20 + C_10

Page 174: Universidad Tecnologica Centroamericana

______________________________________________________________________ 160

E (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 números únicos correspondientes a los reportes solicitados

RESUMEN DEL ANALISIS

SALIDA : (Varios números) Total

1 por ciclo y además

(3 números y sus mensajes) C_20, C_10 , N_clientes

ENTRADA (Varios números) Val_venta

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

A continuación el respectivo algoritmo, considerando todo lo detallado en la Estrategia y

Resumen del Análisis previos.

Page 175: Universidad Tecnologica Centroamericana

______________________________________________________________________ 161

Algoritmo

Inicio

C_20 0 (1)

C_10 0 (2)

……….. (3)

Lea Val_venta

Mientras Val_venta ≠ 0 haga

Si Val_venta > 200 (4)

Entonces

Deduccion Val_venta * 0.20

C_20 C_20 + 1 (5)

Sino

Deduccion Val_venta * 0.10

C_10 C_10 + 1 (6)

Fin si

Subtotal Val_venta - deduccion

Isv subtotal *0.12

Total Subtotal + isv

Escriba “Total a pagar Lps. “, total

………. (7)

Lea Val_venta

Fin mientras

N_clientes C_20 + C_10 ………. (8)

Escriba “Clientes con 20% de descuento: “; C_20 (9)

Escriba “Clientes con 10% de descuento: “; C_10 (10)

Escriba “Total de clientes atendidos: “; N_clientes (11)

Final

Comentarios de la líneas numeradas del (1) al (11): Líneas (1) y (2) Se inicializan los contadores antes de entrar al Ciclo Repetitivo.

Page 176: Universidad Tecnologica Centroamericana

______________________________________________________________________ 162

Líneas (4,5, 6) Evaluando la condición 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 Línea (5)

Si dicha condición 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 Línea (6)

Líneas (3, 7) Si el total de clientes se hubiera calculado utilizando el contador N_clientes,

se necesitaría inicializarlo en la Línea 3, posteriormente se requerirían incrementos

de 1, así la línea 7 sería: N_Clientes N_Clientes +1

Línea (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 0 en la Línea (3) incrementándolo en el proceso repetitivo

N_clientes N_clientes +1 en la Línea (7)

En consecuencia se tendría que omitir la Línea (8).

Líneas (9, 10, 11) Se imprimen las estadísticas o reportes con sus respectivos mensajes 4.9.3 Acumuladores Otra necesidad que frecuentemente se encuentra en los problemas de programación, y

especialmente en aquellos de aplicación comercial, es la de encontrar totales o subtotales de

varias cantidades. Es decir, encontrar la suma de varios números. 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 práctica cuando se suman varios

números.

Las características de estos acumuladores serán análogas a las mostradas en la

Observación 4.9.2, estas se muestran en la siguiente observación:

Page 177: Universidad Tecnologica Centroamericana

______________________________________________________________________ 163

Ejemplo 4.17 (Ingreso total, Conteo de Boletos de Tegucigalpa y San Pedro Sula) En el Ejemplo 4.8, pág.139-140, (Viajes Tegucigalpa, San Pedro Sula, boletos de primera

clase y clase económica) se quiere determinar cuantos boletos de primera clase y de clase

económica se vendieron y cual fue el Ingreso total del día.

ESTRATEGIA

(Varios) (Varios)

• S Pago E Nbol

Cod

------------------+--------------------------- Asignación Característica

Total Boletos de primera clase C_primera C_primera C_primera + nbol

S Total Boletos de primera clase C_econo C_econo C_econo + nbol

Ingresos totales T_ing T_ing 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

Observación 4.9.3 Los Acumuladores tienen en general tres momentos:

1) Inicialización en general en cero y antes de un Ciclo Repetitivo, ejemplo

Acum 0

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

Acum Acum +X

Note que se escribe la MISMA VARIABLE a AMBOS LADOS en la

asignación respectiva.

Esta se colocará estratégicamente en el flujo del programa correspondiente.

3) Al finalizar el Ciclo repetitivo:

Se pueden hacer otros cálculos con los contadores, manipularlos, imprimirlos

como datos estadísticos, reportes, etc..

Page 178: Universidad Tecnologica Centroamericana

______________________________________________________________________ 164

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 ubicación con fines didácticos)

Identificador Descripción Tipo de dato Cod Código del tipo de tarifa Entero Nbol Número de boletos Entero Pago Total a pagar Real C_primera contador de boletos de primera clase Entero C_econo contador de boletos de clase económica Entero T_ing Ingresos totales de la empresa Real El lector deberá completar los espacios en blanco en las líneas numeradas del siguiente

algoritmo propuesto, posteriormente deberá verificar si sus respuestas son correctas en la

siguiente página:

Inicio ………….… (1)

…………… (2)

……………. (3)

Lea Nbol Mientras Nbol ≠ 0 haga

Lea Cod

Si Cod = 1 entonces Pago 200 * Nbol …………… (4)

sino

Pago 110 * Nbol

……………. (5)

Fin-si escriba “Total a a pagar: Lps. ”, Pago ………………… (6)

Lea Nbol Fin-Mientras …………....... (7)

…………… (8)

……………. (9) Escriba “Fin del Programa ”

Final

Llene los espacios en blanco

inicializando cada uno de los

contadores y acumuladores,

colocando sus incrementos en

las líneas correspondientes,

finalizando con los reportes

solicitados, en la siguiente

página puede comparar sus

respuestas:

Page 179: Universidad Tecnologica Centroamericana

______________________________________________________________________ 165

Inicio O b s e r v a c i o n e s

C_primera 0 (1) Tipo de dato entero (pueden ir en la misma línea)

C_econo 0 (2) No se escribe punto decimal “0”

T_ing 0.0 (3) Tipo real, en su inicialización se utilizará punto decimal “0.0”

Lea Nbol

Mientras Nbol ≠ 0 haga

Lea Cod

Si Cod = 1

entonces

Pago 200 * Nbol

C_primera C_primera + nbol (4)

sino

Pago 110 * Nbol

C_econo C_econo + nbol (5)

Fin-si

escriba “Total a pagar: Lps. ”, Pago

T_ing T_ing + pago (6)

Lea Nbol

Fin-Mientras

Escriba “Boletos de primera clase vendidos: “, C_primera (7)

Escriba “Boletos de clase economica: “, C_econo (8)

Escriba “Ingresos Totales Lps.”, T_ing (9)

Escriba “Fin del Programa ”

Final

Algunas Líneas de este algoritmo requieren comentarios especiales:

Líneas (1,2) Para ahorrar espacio, en Nolae se acostumbra colocar en un mismo

renglón la inicialización de contadores del mismo tipo numérico, en este caso tipo

entero, así:

C_primera 0, C_econo 0 (1)

Línea (3) Inicialmente no se ha recaudad nada, así que se inicializa T_ing en cero.

Page 180: Universidad Tecnologica Centroamericana

______________________________________________________________________ 166

Por razones didácticas, las inicializaciones que correspondan a distintos tipos de

datos se escribirán agrupadas en diferente renglón, las inicializaciones previas

corresponden a datos enteros pero T_ing es un dato real. T_ing admite números

decimales y su inicialización se indica con punto decimal “0.0”.

Líneas (4) y (5) Se incrementan los contadores respectivos en Nbol (no en 1) pues cada

cliente compra Nbol etos.

Línea (6) Se Acumula el pago por cada cliente que recién se ha calculado.

Líneas (7, 8, 9) Se imprime el reporte estadístico 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, “ números mayores que 50” final

Conteste las siguientes preguntas: ¿Cuál es el último valor de i? ¿Qué hace este algoritmo?

La repetición (mientras) se puede controlar con condiciones diversas, no solamente con centinelas

Page 181: Universidad Tecnologica Centroamericana

______________________________________________________________________ 167

2.- Realizar la P.E. de los siguientes algoritmos 2.1) inicio

c 0

mientras c <3 haga

escriba “Hola”

c c + 1

fin mientras

escriba “Se repitió 3 veces” final 2.2)

inicio i 1

mientras i < 3 haga

escriba “Hola”

i i + 1

fin mientras

escriba “Se repitió 3 veces”

final ¿ Cuál es el último valor de i ? ________ ¿Por qué?____________________

4.9.4 Repetición 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 condición de

la repetición no incluye al 3 (i < 3). El segundo algoritmo inicializa el contador i en 1 a

pesar de que aún no se ha realizado ningún ciclo y su condición de repetición si incluye a 3

(i < 3). El lector pudo comprobar que ambos algoritmos producen la misma salida, y

controlan la repetición con la ayuda de un contador.

Después de realizar las pruebas de escritorio,

2.1) y 2.2) Conteste las siguientes preguntas:

¿Qué semejanzas tienen las salidas y que

diferencias encuentra en las inicializaciones de los

contadores y en las condiciones de repetición?.

Page 182: Universidad Tecnologica Centroamericana

______________________________________________________________________ 168

¿Cuál algoritmo será mejor para estos fines? En este libro se utilizará el algoritmo 2.2), esta

decisión, está influenciada por la conveniencia de poder introducir mas adelante el

BLOQUE PARA (sección 5.3.1).

Por el momento el algoritmo 2.2) se utilizará para realizar lo que se llama Repetición

controlada por contador, que tiene la siguiente estructura:

Si se desea repetir el Rango N- veces en donde el valor de N es leído, se tendría: 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:

i 1 REPETICION CONTROLADA POR CONTADOR

mientras i < 3 haga

Rango

i i + 1

fin mientras Leer el la siguiente página la Observación 4.9.4.1

Page 183: Universidad Tecnologica Centroamericana

______________________________________________________________________ 169

PRUEBA DE ESCRITORIO

Dato: 4

Memoria Salida

N I

4

1

2

3

4

5

A continuación se presentan varios ejemplos para ilustrar esta nueva manera de controlar

una repetición:

Ejemplo 4.18 (Repetición controlada por contador, leer y sumar N números) Diseñar un algoritmo que lea N números y que imprima su suma

Observación 4.9.4.1 Las líneas marcadas con una , son las 3 características de una repetición controlada por Contador: (i)

Inicialización del contador i (en general) en 1, i 1

En la línea del mientras se compara i < N veces Note que el rango se realizará n - veces

Al final del rango se incremente i en 1, i i+1 Vale decir que aunque por error se omitiera esta incremento, de todas maneras el programa regresaría a evaluar la condición de repetición, y al no modificar el valor del contador C se entraría a un ciclo de repetición o “Loop” infinito, ¿Cuándo pararía?

Esta es la vez numero 1

Esta es la vez numero 2

Esta es la vez numero 3

Esta es la vez numero 4

Observación 4.9.4.2 La REPETICION CONTROLADA POR CONTADOR se

utilizará cuando se conoce el número de veces en que se realizará el Rango, ya sea

porque sea una constante dada o porque sea posible leer este número como dato(N).

Page 184: Universidad Tecnologica Centroamericana

______________________________________________________________________ 170

ESTRATEGIA

N (un número)

S Suma E X, El número en un ciclo

(1 número) (N+1 número) Observación 4.9.4.3

• Se utilizará una repetición controlada por contador, pues se sabe cuantas veces se

deberá realizar el Proceso de leer un número y acumular sus suma (N veces).

Observación 4.9.4.2

• Para calcular el promedio se requerirá, acumular la suma de todos los números que

se irán leyendo.

1.- EJEMPLO DE ESCRITORIO (y explicaciones adicionales)

Este concepto no está aislado de lo que se hace en la vida práctica cuando se suman varios

números. Por ejemplo:

Deteminar la suma de : 3 5 2 7 4

El lector habrá encontrado que el resultado es 21. Muy posiblemente comenzó sumándole

el 5 al primer 3 (lo cuál 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 más

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 difícil reconocer que cada “instante”

corresponde a un ciclo de un proceso repetitivo en donde se suma un nuevo valor al

subtotal acumulado hasta entonces:

Observación 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 número de veces que se realizará el

ciclo y N números que se van a sumar. En este ejercicio, se suman N=5 Números,

así los datos son : N + 1 = 5 + 1 = 6 números.

Page 185: Universidad Tecnologica Centroamericana

______________________________________________________________________ 171

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 efectúe N veces y además un

acumulador aditivo para ir sumando los números leídos, llamados X.

De nuevo, una manera práctica de fijar ideas es realizando la P.E. del algoritmo del ejemplo

correspondiente. Como se sabe que se sumarán N (cinco) números, se utilizará un contador

para controlar la repetición. Inicio Suma 0 Lea N --Se lee cuantos números se van a sumar.

i 1

mientras i < N haga

lea X

Suma Suma + X

i i + 1

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 Salida

Suma N i X

0 3 8 10 17 21

5 1 2 3 4 5 6

3 5 2 7 4

La suma de los numeros es: 21

Page 186: Universidad Tecnologica Centroamericana

______________________________________________________________________ 172

Ejemplo 4.19 (Repetición controlada por contador, acumuladores, descuentos, promedios) Modificar el Ejemplo 4.16 (pág.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 (pág 158), se planteará lo

que corresponde a las modificaciones planteadas, comenzando por determinar las Salidas y

las Entradas.

N (1 número)

S (Varios) E Val_Venta (N números) Total

La entrada son:N + 1 números, leer la Observación 4.9.4.3 (pág.170)

Surgen nuevas Salidas con valores únicos, como se indica a continuación:

----------------------- + ------------------------- ASIGNACION CARACTERISTICA

C_20, Clientes con 20% de descuento, C_20 C_20 + 1

C_10, Clientes con 10% de descuento, C_10 C_10 + 1

Ingresos_20 Ingresos_20 Ingresos_20+total

S (1)V_prom_20 V_prom_20 Ingresos_20/C_20

Cálculo que requiere haber acumulado

previamente los Ingresos_20

Ingresos_10 Ingresos_10 Ingresos_10+total

V_prom_20 Idem 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

Page 187: Universidad Tecnologica Centroamericana

______________________________________________________________________ 173

Inicio

C_20 0, C_10 0 (1)

Ingreso_20 0.0, Ingreso_10 0.0 (2)

Lea N_clientes (3)

I 1 (4)

Mientras i < N_clientes (5)

Lea Val_venta (6)

Si Val_venta > 200 (7)

Entonces

Deduccion Val_venta * 20 (8)

Total Val_venta – deduccion (9)

C_20 C_20 + 1 (10)

Ingreso_20 Ingreso_20 + Total (11)

Sino

Deduccion Val_venta * 10 (12)

Total Val_venta- deducción (13)

C_10 C_10 + 1 (14)

Ingreso_10 Ingreso_10 + Total (15)

Fin si

Escriba “Total a pagar Lps. ”,total (16)

I I + 1 (17)

Fin mientras (18)

V_prom_20 ingresos_20 / C_20 ………. (19)

V_prom_10 ingresos_10 / C_10 ………. (20)

Escriba “Clientes con 20% de descuento: ”; C_20 (21)

Escriba “Clientes con 10% de descuento: ”; C_10 (22)

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

Page 188: Universidad Tecnologica Centroamericana

______________________________________________________________________ 174

Comentarios para algunas líneas del algoritmo:

Línea (1) Inicialización de los contadores de clientes, (Valores enteros “0”).

Línea (2) Inicialización de los acumuladores de ingresos (Valores reales con decimales “0.0”).

Líneas (4, 5, 17) Repetición controlada por contador.

Línea (6) En el Rango están todas las lecturas de Val_venta, diferente de cuando se usó

centinela en el Ejemplo 4.16, en donde se requería una lectura inicial antes de entrar

a la repetición, y posteriormente otra lectura al final del Rango

Líneas (9, 13) A diferencia del Ejemplo 4.16 que calculaba el Total después de la decisión,

ya que se necesita acumular los ingresos por categoría, es necesario totalizar en el

Ramal correspondiente.

Líneas (10 y 11, 14 y 15) Se incrementan los contadores y acumuladores correspondientes

Línea (16) Se imprime el total a cobrar al cliente en forma concatenada a la decisión

preliminar ya que a todos los clientes sin distinción se les va a cobrar, no es

necesario escribir la misma línea en cada uno de los ramales de la decisión.

Líneas (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 cálculo, las

ventas promedio no son acumuladores ni contadores.

Líneas (21 al 24) Se imprimen los reportes solicitados utilizando rótulos amistosos que

facilitarán la comprensión 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

A continuación se presenta otro tipo de acumulador llamado Acumulador Multiplicativo

Observación 4.9.4.4. En secciones y capítulos subsiguientes, se estudiarán otras

particularidades en aplicaciones Comerciales”, en donde se utilizarán: contadores

acumuladores, otros bloques como el Bloque Caso; el Bloque Para, el Repita_Hasta.

Page 189: Universidad Tecnologica Centroamericana

______________________________________________________________________ 175

Ejemplo 4.20 (Repetición controlada por contador, Productorio de N números)

Diseñar un algoritmo en el que dados N números se calcule e imprima el producto de todos

ellos (productorio de N números). Posteriormente realizar la prueba de escritorio con los

siguientes datos:

Datos : 5, 3, 5, 2, 7, 4

Solución:

La Estrategia es igual que la empleada en el Ejemplo 4.18, con las diferencias existentes

entre la adición 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

Observación 4.9.4.5 Existe el Acumulador Multiplicativo, que igualmente tiene 3

Momentos:

• Inicialización antes de un ciclo repetitivo: P 1

• Incremento generalmente en un ciclo repetitivo: P P * num

• Impresión final: escriba P.

Este posteriormente servirá para calcular Productorios (acumulación del producto de

varios números), potencias, factoriales, etc., en el Capítulo 5 se presentaran más

Ejemplos ilustrativos.

Page 190: Universidad Tecnologica Centroamericana

______________________________________________________________________ 176

El algoritmo final es:

Inicio Producto 1

Lea N

I 1

Mientras i < N haga

Lea X

Producto Producto * X

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 Salida

Producto N i X

1 3 15 30

210 840

5 1 2 3 4 5 6

3 5 2 7 4

El producto de los numeros es: 840

Observación 4.9.4.6

* En general los contadores y acumuladores aditivos, se inicializan en CERO que

es el elemento neutro de la adición, en cambio los acumuladores multiplicativos en

general se inicializan en UNO que es el elemento neutro de la multiplicación, ya

que todo número multiplicado por uno (1) vuelve a dar el mismo número.

* Los contadores son un caso especial de los acumuladores, así

i. Todo contador es un acumulador pero.

ii. NO todo acumulador es contador.

Page 191: Universidad Tecnologica Centroamericana

______________________________________________________________________ 177

EJERCICIOS 4.9.4. En cada caso diseñe 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 más. 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

cuántas facturas se les favoreció con el descuento.

2.- Ampliar el algoritmo del problema anterior para calcular el ingreso total de la

tienda.

3- 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.- Ampliar el algoritmo anterior para N estudiantes. 5.- Calcular la suma de los cuadrados de los primeros 10 números enteros positivos 6.- Dados N números distintos de cero contar cuantos son positivos y cuantos negativos. 7.- Se tienen 12 ecuaciones de segundo grado. Determinar cuántas tienen soluciones no

reales.

8.- Construir la tabla de equivalencia de temperaturas en grados centígrados a grados

Fahrenheit, para los valores en C de la siguiente tabla:

C F

0 1 2 3 4 5 6 7

9.- Modificar el algoritmo del problema anterior para:

a) Valores en C de: 0, 10, 20, 30,…70

b) Valores en C de: -15, -10, -5, 0, 5,…,40 Del Apéndice B realizar los ejercicios del 10 al 18:

10. Ejercicio I incisos 1 al 3

Page 192: Universidad Tecnologica Centroamericana

______________________________________________________________________ 178

11. Ejercicio I incisos 4 y 5

12. Ejercicio I inciso 6

13. Ejercicio III incisos 12 a)

14. Ejercicio III incisos 12 b)

15. Ejercicio III incisos 12 c)

16. Ejercicio VI incisos 24 y 25

17. Ejercicio VI incisos 26 y 27 hasta aquí del Apéndice B.

18. Imprimir los números del 1 al 100 sin proporcionar ninguna entrada. 19. Leer varios números hasta encontrar uno que sea mayor de 100. 20. Leer varios números e ir calculando su suma, hasta que ésta sobrepase a 200. 21.- Calcular la nota media de N estudiantes. 22 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 números, encontrar el mayor de ellos.

En el Apéndice E, encontrará el algoritmo (Ejemplo E.3, pág. 313) para encontrar

el mayor de 4 números y la posición que ocupa éste en la lista de números.

24. Se leen 25 números, encontrar cual es el menor de los números leídos y la posición

que ocupa en la lista de números (la observación del ejercicio 24).

25. 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 aritmética 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, compraría 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 comprobación con la cajera, se introducirá por cada factura la cantidad de

diskettes vendidos. Calcular el ingreso total (no hay impuesto de venta).

27. Del Apéndice B, Ejercicio IV inciso 19 (pág. 293)

Page 193: Universidad Tecnologica Centroamericana

___________________________________________________________________ 179

CAPITULO 5 ESTRUCTURAS DERIVADAS 5.1 ASOCIATIVIDAD DE LA CONCATENACION

Se ha estudiado que la concatenación se forma a partir de dos b.e. según lo muestra el

siguiente diagrama.

Si se aplica el concepto estrictamente, sólo se podría concatenar dos b.e. y nada más. De tal

manera que si se necesita una secuencia de tres o más bloques se tendría que ir

concatenando de par en par de la siguiente manera:

Concatenando 1 con 2 y resulta A.

Luego, concatenando A con 3 y se obtiene un b.e. llamado B. Que en detalle sería:

B1 B2

1 2 3 A

3 A

3 A B

Page 194: Universidad Tecnologica Centroamericana

___________________________________________________________________ 180

La anterior no es la única forma de concatenar estos bloques, por ejemplo, se puede

concatenar 2 con 3 y obtener C:

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

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 razón se dice que la concatenación

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:

3A

B

1 2

3 C

1 2

3C

1 2

D

1 2 3

Page 195: Universidad Tecnologica Centroamericana

___________________________________________________________________ 181

Que es la forma en que se han estado presentando los algoritmos anteriormente, esto es,

concatenando 3 o más bloques según 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

concatenación de 3 b.e.), sino de una forma simplificada de sucesivas concatenaciones.

También, únicamente por comodidad y simplicidad en el lenguaje, se habla de la

concatenación de 3 o más b.e., que es lo que en el capítulo 4 se expuso como una extensión

de la concatenación.

Para concluir, se debe hacer notar que el propósito de esta sección ha sido el de formalizar

la “extensión” de la concatenación y proporcionar un vistazo del formalismo matemático de

cómo pueden ser tratados los conceptos de la programación estructurada.

5.2 VARIANTES Y DERIVADAS DE LA DECISION

5.2.1 La decisión abreviada

En determinadas ocasiones la rama falsa de una decisión es el bloque nulo, es decir no se

efectúa ninguna instrucción en dicho ramal En Nolae esta decisión se escribiría: Bajo el entendido de que si la rama falsa no se presenta, debe asumirse únicamente que

corresponde al bloque nulo. La decisión en este caso se denominará “abreviada”. Debe

observarse que no se trata de una nueva estructura, sino de un caso particular de la

estructura básica de la decisión, que por comodidad se expresa de manera más sencilla.

La representación de diagrama de flujo es:

Si C Si C Entonces entonces B1 ó B1 Sino fin si Nulo Fin si

Page 196: Universidad Tecnologica Centroamericana

___________________________________________________________________ 182

El diagrama anterior realmente equivale a:

Ejemplo 5.1 (Decisión abreviada, segmento Premio, Apéndice A No.42, pág.285)

Si el grupo de personas que van a una cafetería 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 seudocodificación del algoritmo se podría simplificar omitiendo la rama falsa y

simplemente se escribirá:

V F

B1 nulo

C

V F

B1 B2

CC

Page 197: Universidad Tecnologica Centroamericana

___________________________________________________________________ 183

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 decisión dentro de otra decisión, 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 números de la sección 3.5 (ejemplo de árbol de decisiones). El

nombre se debe a una analogía con la forma en que los pájaros construyen sus nidos, ciertos

patrones circulares hechos de ramitas dentro de otros más grandes. El seudocódigo de un

árbol de decisiones con varias decisiones involucra decisiones anidadas. Algunos lenguajes

de programación disponen de instrucciones que simplifican la notación de este tipo de

decisiones. A continuación, se retoma el Ejemplo 3.11 (pág.98)de la sección 3.5:

Ejemplo 5.2. (Nolae, Árbol de decisiones, el mayor de 3 números) V a, “es mayor” a > c V F c, “es mayor” a > b F V “b mayor” a>c

Y el desglose correspondiente es: 1.- LECTURA DE DATOS

1.1 Leer a

1.1 Leer b

1.1 Leer c

V b, “es mayor” F b > c F c,”es mayor”

Page 198: Universidad Tecnologica Centroamericana

___________________________________________________________________ 184

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 seudocódigo correspondiente tiene la siguiente forma: 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

Page 199: Universidad Tecnologica Centroamericana

___________________________________________________________________ 185

Es importante poder realizar el seguimiento de algoritmo al efectuar una P.E. Para ello se

debe ubicar los puntos de salida de cada decisión. Obsérvese que en este algoritmo sólo

existe una concatenación y es la de la lectura con la decisión mayor.

Otra forma de seudocodificar es subrayando las palabras claves y colocar los bloques de

cada ramal un renglón mas abajo, como se muestra a continuación:

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 continuación se presentan Diagramas que ilustran este algoritmo.

Page 200: Universidad Tecnologica Centroamericana

___________________________________________________________________ 186

Decisión.

En un ejemplo como el anterior, un diagrama de flujo es más claro para seguir el algoritmo.

La anterior es la mejor forma de dibujar el diagrama, ya que muestra claramente cuales son

los b.e. (en este caso de decisión) que se subordinan unos dentro de otros y los puntos de

salida son fácilmente identificables.

Otra solución al mismo problema la proporciona el siguiente algoritmo:

Lea a,b,c,

“a mayor”

a>b

a>c

b>c

a>c

“c mayor” “b mayor” “b mayor” “c mayor”

F F

V V V

F

Lea a,b,c, a>b

V

F

a>c

a>c

“c mayor”

“a mayor” V

F

“b mayor”

b>c

V

F“c mayor”

“b mayor”

F

V

Page 201: Universidad Tecnologica Centroamericana

___________________________________________________________________ 187

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 estructuración son diferentes ya que aquí las decisiones (que

son abreviadas) NO están anidadas, sino que concatenadas. Esto significa que después de

realizar la primera decisión, ya sea que la condición 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 después 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 números son diferentes).

Page 202: Universidad Tecnologica Centroamericana

___________________________________________________________________ 188

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

5.2.3 BLOQUE CASO

En algunas situaciones tenemos una porción 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 atómicos o compuestos).

Lea a,b,c,

“a mayor”

a > b y

a > c

b > a y

b > c “b mayor”

V

V

V

F

F

F

inicio

c > a y

c > b

“c mayor”

finfin

Page 203: Universidad Tecnologica Centroamericana

___________________________________________________________________ 189

Esta estructura compuesta aparece muchas veces, por lo que se ha decidido simplificar su

representación denotándola así:

Caso i

i=1 :B1

i=2 :B2

i=3 :B3

sino :B4

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 evalúan mas condiciones

y se va al final del bloque caso (a fin-caso).

Una forma alterna, más similar a algunos lenguajes de programación, sería:

Cada uno de los valores contra los cuales se compara i, no tienen porque estar aislados o en

algún orden específico. Los valores de comparación y los bloques B que se ejecutan de

acuerdo al caso, corresponden más bien a la naturaleza del p.o.p.. Por ejemplo,

Caso k

1, 2, 3 : B1

4, 5 : B2

6, 8, 9 : B3

fin-caso

A diferencia de las estructuras básicas, las derivadas no tienen una representación única en

diagramas de flujo o en diagrama de bloque. A continuación se presentan algunas de ellas.

Caso i

1: B1

2: B2 BLOQUE CASO, variante de la Decisión

3: B3

Sino: B4

fin-caso

Page 204: Universidad Tecnologica Centroamericana

___________________________________________________________________ 190

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.- Perfectas condiciones, como nuevo

2.- Buenas condiciones

3.- Completo, pero con desgaste natural

4.- Completo, maltratado o rayado

5.- Malas condiciones

B1 B2 B3 B4

i=2 i=3 i=1 sino

B2

B3

B4

2

3

1

sino

i

i

B1

Page 205: Universidad Tecnologica Centroamericana

___________________________________________________________________ 191

Se proporciona al computador los códigos de estado de cada libro y se desea un reporte con

la siguiente información:

REPORTE DE ESTADO DE LIBROS DEVUELTOS Estado Cantidad de libros % 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 estén 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 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).

C1 Contador de libros en el estado 1 C2 Contador de libros en el estado 2 C3 Contador de libros en el estado 3 C4 Contador de libros en el estado 4 C5 Contador de libros en el estado 5 C1 Porcentaje de libros en el estado 1 C2 Porcentaje de libros en el estado 2 C3 Porcentaje de libros en el estado 3 C4 Porcentaje de libros en el estado 4 C5 Porcentaje de libros en el estado 5 TT Total de libros TP Total de porcentaje (se espera que sea 100 o muy cercano a 100)

RESUMEN DEL ANALISIS SALIDA: [Ver diseño de reporte]

Page 206: Universidad Tecnologica Centroamericana

___________________________________________________________________ 192

ENTRADA: (Varios números) por cada libro su código 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 Inicialización de contadores

1.2 Lectura del primer dato 2.- Conteo Mientras no EOF. Haga lo siguiente:

2.1 Incrementar el contador correspondiente, según 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 Impresión 3.1 Calcular Promedios y Gran Totales. 3.2 Imprimir encabezados 3.3 Imprimir resultados de detalle por cada estado. 3.4 Imprimir líneas de totales

ALGORITMO

Inicio C1 0; C2 0; C3 0; C4 0; C5 0 Lea E Mientras E ≠ 0 haga

Caso E 1: C1 C1 + 1

2: C2 C2 + 1 3: C3 C3 + 1 4: C4 C4 + 1 5: C5 C5 + 1

fin caso

lea E

fin mientras

Page 207: Universidad Tecnologica Centroamericana

___________________________________________________________________ 193

TT C1+ C2 + C3 + C4 + C5

P1 C1/TT * 100 ; P2 ← C2/TT * 100

P3 C3/TT * 100 ; P4 ← C4/TT * 100

P5 C5/TT * 100

TP 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

Obsérvese que como las instrucciones de escritura de los encabezados son obvias, no se

escribirán en detalle y se sobreentenderá que corresponde a todas las líneas laterales del

encabezado del reporte. Sin olvidar que el seudocódigo tiende a simplificar la descripción

del algoritmo. En el lenguaje de programación tendríamos que escribir las líneas

respectivas a:

escriba “ REPORTE DEL ESTADO DE LIBROS DEVUELTOS”

escriba “ Estado Cantidad de libros % de libros”

escriba “____________________________________________”

A continuación se presenta un ejemplo en donde se combina el uso del Bloque Caso,

acumuladores, contadores y la repetición controlada por contador.

Ejemplo 5.4 (Bloque Caso, repetición controlada por contador, contadores, acumuladores, Categorías)

Dados la categoría y el sueldo de N empleados, calcule el aumento correspondiente teniendo

en cuenta la siguiente tabla. Imprima la categoría y nuevo sueldo de cada empleado.

CATEGORIA AUMENTO %

1 15

2 10

3 8

Page 208: Universidad Tecnologica Centroamericana

___________________________________________________________________ 194

Al final se desea un reporte en donde se indique:

• Total de empleados en cada categoría

• Total pagado en categoría

• Total pagado en Planilla

Este ejemplo se desarrolló con un centinela en el Capitulo 3, utilizando una repetición

controlada por centinela, se modificará para controlarla por contador sabiendo que son N

empleados, así que se harán las modificaciones pertinentes al desglose del Ejemplo 3.12

(pág.104).Algunas partes del Análisis se cambiarán de orden por motivos pedagógicos:

DICCIONARIO DE VARIABLES

Identificador Descripción__________ Categoria Categoria Sueldo Sueldo Inicial Aumento Aumento Nuevo_S Nuevo sueldo N_empleados Número 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 sueldo *0.15 sino Si categoria = 2 entonces aumento sueldo * 0.10 sino aumento sueldo *0.08 Fin-si

Fin-si

Nuevo_s Sueldo + aumento

Escriba Categoria

Escriba Nuevo_s

I i +1 Fin-Mientras

Final

Page 209: Universidad Tecnologica Centroamericana

___________________________________________________________________ 195

Utilizando el Bloque Caso se tiene:

Inicio Lea N I 1

Mientras i < N haga Lea categoria

Lea sueldo

Caso categoria

1: aumento sueldo * 0.15

2: aumento sueldo * 0.10

Sino: aumento sueldo *0.08

Fin caso

Nuevo_s Sueldo + aumento

Escriba categoria

Escriba Nuevo_s

I i + 1

Fin-mientras

Final

A continuación el diccionario de variables modificado para incorporar los reportes:

NUEVO DICCIONARIO DE VARIABLES

Identificador Descripción

Categoria Categoria

Sueldo Sueldo Inicial

Aumento Aumento

Nuevo_S Nuevo sueldo

N Número de empleados

E1 Empleados de la categoría 1

E2 Empleados de la categoría 2

E3 Empleados de la categoría 3

S1 Total pagado a los empleados de la categoría 1

S2 Total pagado a los empleados de la categoría 2

Page 210: Universidad Tecnologica Centroamericana

___________________________________________________________________ 196

S3 Total pagado a los empleados de la categoría 3

Planilla Total pagado en Planilla. La Estrategia sufrirá modificaciones, pues ahora se solicitan reportes estadísticos que

presentarán valores únicos

Estrategia

N (1 número)

Salidas Categoria (N números) Entradas Categoria (N números)

Nuevo_s (N números) Sueldo (N números)

Total de salidas: 2 * N números Total de entradas: 2*N +1 números

--------------+------------------- Asignaciones sugeridas

C1, C2, C3, C4 Empleados de cada categoría C1 C1 + 1

S S1, S2, S3 Total pagado en cada categoría S1 S1 + Nuevo_s

Planilla Planilla S1 + S2 + S3

Para acumular los Nuevos sueldos pagados en cada categoría 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, según lo solicitado, contar y acumular por categoría.

ALGORITMO

Inicio E1 0, E2 0, E3 0

S1 0.0, S2 0.0, S3 0.0

Page 211: Universidad Tecnologica Centroamericana

___________________________________________________________________ 197

Lea N

I 1

Mientras i < N haga

Lea categoria

Lea sueldo

Caso categoria

1: aumento sueldo * 0.15

Nuevo_s Sueldo + aumento

E1 E1 + 1

S1 S1 + Nuevo_s

2: aumento sueldo * 0.10

Nuevo_s Sueldo + aumento

E2 E2 + 1

S2 S2 + Nuevo_s

Sino: aumento sueldo *0.08

Nuevo_s Sueldo + aumento

E3 E3 + 1

S3 S3 + Nuevo_s Fin caso

Escriba categoria

Escriba Nuevo_s

I i + 1

Fin-mientras

Planilla S1 + S2+S3

Escriba “Empleados de la categoría 1: “, E1

Escriba “Empleados de la categoría 2: “, E3

Escriba “Empleados de la categoría 3: “, E3

Escriba “Total pagado a empleados de la categoría 1: Lps. “, S1

Escriba “Total pagado a empleados de la categoría 2: Lps. “, S2

Escriba “Total pagado a empleados de la categoría 3: Lps. “, S3

Escriba “Planilla Total Lps.: “, Planilla

Final

Page 212: Universidad Tecnologica Centroamericana

___________________________________________________________________ 198

Ejemplo 5.5 (Lavado de autos, Bloque caso, contadores y acumuladores) Retomando el Ejemplo de una Agencia de Lavado de Autos (Ejemplo 3.13, pág.108), cuyo

seucódigo original se muestra en primera instancia en el Ejemplo 4.10, (pág.142) se usará

el Bloque Caso y se adicionarán estadísticas que incluyan: cantidad de clientes e ingresos

por tipo de servicio, los cambios se adicionarán paulatinamente.

Utilizando el BLOQUE CASO se tiene el siguiente Algoritmo:

Inicio Lea N_autos

Mientras N_autos ≠ 0 haga

Lea Tipo

Caso tipo

1: Subtotal 25 * N_autos

2: Subtotal - 30 * N_autos

3: Subtotal 35 * N_autos

Sino: Subtotal 40 * N_autos

Fin caso

si N_auto ≥ 2 entonces Desc Subtotal * 0.07 sino Desc 0 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

mostrarán las asignaciones sugeridas.

Identificador Descripción

Tipo Tipo de servicio

N_autos Número de autos

Subtotal Subtotal

Page 213: Universidad Tecnologica Centroamericana

___________________________________________________________________ 199

Desc Descuento

Total Total a pagar

C1 Clientes atendidos con el servicio tipo 1

C2 Clientes atendidos con el servicio tipo 2

C3 Clientes atendidos con el servicio tipo 3

C4 Clientes atendidos con el servicio tipo 4

Ing1 Ingresos por el servicio tipo 1

Ing2 Ingresos por el servicio tipo 2

Ing3 Ingresos por el servicio tipo 3

Ing4 Ingresos por el servicio tipo 4 Asignaciones sugeridas

C1,C2,C3,C4 ………Clientes de cada Tipo, C1 C1+1

S Ing1, Ing2, Ing,3, Ing.4 Ingresos de cada Tipo Ing1 Ing1 + Total

Ing2 Ing2 + Total Para acumular los ingresos por tipo “Ing1 Ing1 + Total” en el BLOQUE CASO, se

requiere haber calculado el total como: “total subtotal + descuento”, en vista de que

resulta engorroso introducir la decisión mostrada en cada opción del Bloque Caso:

si N_auto ≥ 2 entonces Desc Subtotal * 0.07 sino Desc 0 Fin-si

Se puede simplificar el ejercicio asignando solamente los porcentajes de descuento,

previo al Bloque caso:

si N_auto ≥ 2

entonces porcentaje_desc 0.07 sino porcentaje_desc 0.0 fin-si

El algoritmo final es:

Page 214: Universidad Tecnologica Centroamericana

___________________________________________________________________ 200

Inicio

C1 0, C2 0, C3 0, C4 0

Ing1 0.0, Ing2 0.0, Ing3 0.0, Ing4 0.0

Lea N_autos

Mientras N_autos ≠ 0 haga

Lea tipo

si N_auto ≥ 2 entonces porcentaje_desc 0.07 sino porcentaje_desc 0.0 Fin-si

Caso tipo

1: Subtotal ← 25 * N_autos

Descuento subtotal * porcentaje_desc

Total subtotal - descuento

C1 C1 +1

Ing1 Ing1 + Total

2: Subtotal ← 30 * N_autos

Descuento subtotal * porcentaje_desc

Total subtotal - descuento

C2 C2 +1

Ing2 Ing2 + Total

3: Subtotal ← 35 * N_autos

Descuento subtotal * porcentaje_desc

Total subtotal - descuento

C3 C3 +1

Ing3 Ing3 + Total

sino: Subtotal ← 40 * N_autos

Descuento subtotal * porcentaje_desc

Total subtotal - descuento

C4 C4 +1

Ing4 Ing4 + Total

Fin caso

Escriba Total

Lea N_autos

Fin-mientras

Page 215: Universidad Tecnologica Centroamericana

___________________________________________________________________ 201

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 análisis, desglose y algoritmo

1.- Se tienen 4 planillas en una elección para junta directiva estudiantil. Los

300 votos se introducen al computador codificados. Se desea obtener los

resultados de la votación.

2.- Un banco ofrece 6 tasas de interés anual distinto según el tipo de préstamo

que se solicita (codificados del 1 al 6). Se desea calcular el interés total

que se obtendrá para veinte clientes que solicitan distintos montos en

diferentes plazos (Asumir interés simple).

3.- Aparte del sueldo base, una compañía de venta de computadoras ofrece un

porcentaje como comisión a sus representantes de venta. Se alimentan las

facturas con los códigos de los vendedores y los valores de la venta.

Calcular el pago total de cada vendedor, y el valor total de las comisiones.

Del Apéndice B los siguientes ejercicios:

4. Ejercicios II inciso 11.

5. Ejercicios No.7 y 8.

6. Ejercicio No. 9.

7. Ejercicio No. 10.

Page 216: Universidad Tecnologica Centroamericana

___________________________________________________________________ 202

5.3.- VARIANTES Y DERIVADAS DE LA REPETICION

5.3.1 Bloque Para

En el Capítulo 4 sección 4.9 se estudió la repetición 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 continuación:

En seudocódigo, el Bloque Para resume varias de las líneas del seudocódigo anterior:

Lea Valor_final

C Valor_inicial

Para I Valor_inicial, Valor_final haga

B1 BLOQUE PARA

Fin-Para

El efecto del ciclo de repetición Para es repetir el bloque de instrucciones B1 (RANGO) un

número 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) automáticamente y se vuelve a repetir todas las instrucciones del

bloque B1. La repetición se termina en el momento que la variable de control llega a tener

un valor mayor que el Valor_ final.

Page 217: Universidad Tecnologica Centroamericana

___________________________________________________________________ 203

Valor_inicial y Valor_final pueden ser variables o constantes.

A continuación se presentan varias aplicaciones del Bloque Para. Se utilizará ejemplos del

Capítulo 4, que fueron ya desarrollados utilizando la Repetición controlada por Contador,

se incluirán también ejemplos en donde se generan secuencias numéricas 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 números) Diseñar un algoritmo que lea N números y que imprima su suma (utilice el bloque Para). En el Ejemplo 4.18, (pág.171) se obtuvo el siguiente algoritmo: Inicio

Suma 0 (A1) Lea N (A2)

i 1 (A3)

mientras i < N haga (A4)

lea X (A5)

Suma Suma + X (A6)

I I + 1 (A7)

fin mientras (A8)

escriba “ La suma de los números es : “, Suma

final

Utilizando el Bloque Para, el algoritmo solicitado es:

Inicio

Suma 0 (B1) Lea N (B2)

Para i 1, N haga (B3)

lea X (B4)

Suma Suma + X (B5)

fin para (B6)

escriba “ La suma de los números es : “, Suma

final

Page 218: Universidad Tecnologica Centroamericana

___________________________________________________________________ 204

Observe que:

Línea (A3) Desaparece pues con el Bloque Para, ya no es necesario la línea previa de

inicialización de I en 1, I 1, ésta queda absorbida en la Línea (B3).

Línea (A4) Queda modificada por la Línea (B3).

Línea (A7) La última línea del rango desaparece, ya no necesario escribir el incremento de I

en uno, en el Bloque Para este incremento es tácito, 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 más 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

atenderán 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

repetición controlada por contador, fácilmente se puede codificar utilizando el Bloque Para.

Observación 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

Page 219: Universidad Tecnologica Centroamericana

___________________________________________________________________ 205

inicio C_20 0, C_10 0 (1)

Ingreso_20 0.0, Ingreso_10 0.0 (2)

Lea N (3)

Para 1 1, N haga (4)

Lea Val_venta (5)

Si Val_venta > 200 (6)

Entonces

Deduccion Val_venta * 20 (7)

Total Val_venta – deduccion (8)

C_20 C_20 + 1 (9)

Ingreso_20 Ingreso_20 + Total (10)

Sino

Deduccion Val_venta * 10 (11)

Total Val_venta- deducción (12)

C_10 C_10 + 1 (13)

Ingreso_10 Ingreso_10 + Total (14)

Fin si

Escriba “Total a pagar Lps. “,total (15)

Fin para (16)

Escriba “Clientes con 20% de descuento: “, C_20 (19)

Escriba “Clientes con 10% de descuento: “, C_10 (20)

Escriba “Ventas con 20% de descuento: “, Ingreso_20 (21)

Escriba “Ventas con 10% de descuento: “, Ingreso_10 (22)

Fina

Comentarios sobre algunas líneas del algoritmo anterior: Línea (1) Inicialización de los contadores de clientes, (Valores enteros “0” )

Línea (2)Inicialización de los acumuladores de ingresos, (Valores reales o decimales “0.0” )

Línea (3)Se lee el Numero N de clientes, que será el Valor_final del Bloque Para.

Líneas (4, 16) Repetición utilizando un BLOQUE PARA con un Valor_final o máximo de

N (clientes).

Page 220: Universidad Tecnologica Centroamericana

___________________________________________________________________ 206

Línea (5) En el Rango del Bloque Para se realizan todas las lecturas de Val_venta, esto es

diferente de cuando se usa repetición controlada por un centinela, (ver Ejemplo

4.16, pág. 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 repetición.

Líneas (7, 8) A diferencia del Ejemplo 4.16 , (pág. 158)que calculaba el total después de la

decisión, en vista de que se necesita acumular los ingresos por categoría, es

necesario totalizar en el Ramal correspondiente.

Líneas (9, 10; 13,14) Se incrementan los contadores y acumuladores correspondientes.

Línea (15) Se imprime el total a cobrar al cliente en forma concatenada a la decisión

preliminar ya que a todos los clientes sin distinción se les va a cobrar, por lo tanto

no es necesario escribir la misma línea en cada uno de los ramales de la decisión.

Líneas (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 cálculo, las

ventas promedio no son acumuladores ni contadores.

Líneas (19 al 22) Se imprimen los reportes solicitados utilizando rótulos amistosos que

facilitarán la comprensión de los mismos.

Se deja al lector realizar la prueba de escritorio respectiva utilizando los siguientes datos

Datos: 4, 250, 100, 300, 80

A continuación se presenta un ejemplo que utiliza el Bloque Caso (sección 5.2.3),

Bloque para, contadores y acumuladores.

Ejemplo 5.8 (Bloque Para, Bloque Caso, contadores, acumuladores, Categorías) 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 0, E2 0, E3 0

S1 0.0, S2 0.0, S3 0.0

Lea N

Para i 1, N haga

Lea categoria

Lea sueldo

Page 221: Universidad Tecnologica Centroamericana

___________________________________________________________________ 207

Caso categoria

1: aumento sueldo * 0.15

Nuevo_s Sueldo + aumento

E1 E1 + 1

S1 S1 + Nuevo_s

2: aumento sueldo * 0.10

Nuevo_s Sueldo + aumento

E2 E2 + 1

S2 S2 + Nuevo_s

Sino: aumento sueldo *0.08

Nuevo_s Sueldo + aumento

E3 E3 + 1

S3 S3 + Nuevo_s

Fin caso

Escriba categoria

Escriba Nuevo_s

Fin-para

Planilla S1 + S2+S3

--La impresión del reporte es igual . . .

EJERCICIOS 5.3.1.1 En cada problema desarrollar un breve análisis, desglose y algoritmo

1.- Imprima N veces el mensaje “Hola mundo”.

2.- Genere la Tabla de multiplicación del 5.

3.- Genere la Tabla de multiplicación del número N (se debe leer N).

4.- Genere todas las tablas de multiplicación rotulando debidamente cada una

de ellas

Del Apéndice B los siguientes ejercicios:

5. Ejercicio No. 25.

6. Ejercicio No. 26.

7. Ejercicio No. 27.

Page 222: Universidad Tecnologica Centroamericana

___________________________________________________________________ 208

5.3.1.2 Aplicaciones del Bloque Para, Sucesiones A continuación realizaremos ejemplos de aplicación de los conceptos de: contadores,

acumuladores aditivos y multiplicativos, etc. generando:

Sucesiones de números, que son secuencias de números que siguen cierto patrón.

Ejemplo 5.9 (Bloque Para, Sucesión, números pares, inicialización en cero)

Sin datos de entrada, generar la siguiente sucesión

2, 4, 6, 8, 20 términos (los números pares son positivos)

ESTRATEGIA

Entrada NO hay, los números Salida (20 números)

Se generan internamente X

• Proceso repetitivo controlado por el Bloque Para, se realizará 20 veces.

• Podemos observar que los números se generan si vamos sumamos 2 a cada uno.

2, 4, 6, 8,

2 2 2 Esto sugiere un acumulador aditivo con incrementos de 2, así:

X X + 2

ALGORITMO

Inicio

X 0 (1)

Para i 1, 20 haga (2)

X x + 2 (3)

Escriba X (4)

Fin para (5)

Final

Comentarios sobre este algoritmo:

Líneas (2 y 5) Controlarán que el RANGO se realice 20 veces.

Línea (1) Sabiendo que los números se generarán en incrementos de 2, y que la expresión

Page 223: Universidad Tecnologica Centroamericana

___________________________________________________________________ 209

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

primer 2, los demás números, no presentan particularidades.

Línea (3) La primera vez que se ingresa al ciclo, se genera el primer número de la sucesión: 2 Línea (4) Después de general el número de interés, ya está listo para imprimirse.

PRUEBA DE ESCRITORIO Para propósitos de simplificación modificaremos la Línea (2)

Para i 1, 4 haga (2) -- Solamente 4 Números.

Datos: No hay Memoria Salida

X i

0

2

4

6

8

1

2

3

4

5

A continuación se presenta otra manera de resolver este problema, iniciando el valor de la

variable X directamente en 2.

Ejemplo 5.10 (Bloque Para, Sucesión, números pares, inicialización en 2) Sin datos de entrada, generar la siguiente sucesión

2, 4, 6, 8, 20 términos

Modificación del Ejemplo 5.9 Inicio

X 2 (1)

Para i 1, 20 haga (2)

Escriba X (3)

X x + 2 (4)

Fin para (5)

Final

2 4 6 8

Page 224: Universidad Tecnologica Centroamericana

___________________________________________________________________ 210

Comentarios sobre el algoritmo anterior:

Línea (1) La modificación planteada será inicializar X en el primer valor de la sucesión: 2

Línea (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 instrucción

X x + 2 se obtendría el número 4 y no se habría impreso el 2 inicial deseado.

Línea (4) En el primer ciclo, después de imprimir el valor vigente de X, se genera el

siguiente número que será impreso en el siguiente ciclo.

El Rango se efectuará siempre 20 veces, así que la instrucción Escriba X incluida en éste

nos garantiza que se que se imprimirán los mismos 20 números.

Se recomienda al lector el análisis de las Líneas (3,4) de los algoritmos

correspondientes a este ejemplo y al del anterior (Ejemplo 5.9), observará que éstas

están intercambiadas.

PRUEBA DE ESCRITORIO

Para propósitos de simplificación modificaremos la Línea (2) I

Para i 1, 4 haga (2) --Solamente 4 números

Datos: No hay Memoria Salida

X i

2

4

6

8

10

1

2

3

4

5

Note que se generó un número mas … el 10 pero no se imprimó púes el contador i controló

o detuvo la repetición.

Ejemplo 5.11 (Bloque Para, Potencias de 3) Generar la siguiente sucesión

3, 9, 27 , … N términos

2 4 6 8

Page 225: Universidad Tecnologica Centroamericana

___________________________________________________________________ 211

ESTRATEGIA

N

Entrada (La cantidad de números Salida N números

que se desear imprimir )

• Proceso repetitivo que se realizará N veces, se utilizará el Bloque Para.

• Observando la secuencia de números el próximo sería 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, 9, 27, 81, …. N términos

1 *3=3

… *3=9 … *3=27 … *3=81 La asignación para el acumulador sería pot pot * 3, con todas estas consideraciones se

procederá a escribir el algoritmo: ALGORITMO Inicio

Lea N

pot 1

Para i 1, N haga

pot pot * 3

Escriba pot

Fin para

final

Se deja al lector la realización de la Prueba de Escritorio respectiva con Dato: 4

Page 226: Universidad Tecnologica Centroamericana

___________________________________________________________________ 212

Ejemplo 5.12 (Bloque Para, potencias de 3, signos alternos) Generar la siguiente sucesión

3, − 9, 27 , −81 … N términos

ESTRATEGIA

N

Entrada (La cantidad de números Salida signo_pot (N números)

que se desear imprimir )

• Son aplicables las consideraciones del ejemplo anterior, la modificación introducida son

los signos alternos.

• Se conserva la magnitud de los números generados pero se introducirá la variable signo

mediante una Prueba de Escritorio.

Prueba de escritorio Memoria

Signo −1

Signo − signo

Signo − signo

Signo −signo

La sucesión empieza con 3 positivo así que en base a la Observación 4.9.11 se inicializará

la variable Signo en -1

ALGORITMO Inicio

Lea N

Signo

-1

1

-1

1

Observación 5.3.1.2.1. Cada vez que se ejecuta

signo − signo, se va alternando el signo de negativo a positivo o viceversa,

según se inicialice con -1 o +1.

Page 227: Universidad Tecnologica Centroamericana

___________________________________________________________________ 213

Signo − 1

pot 1

Para i 1, N haga

Signo −signo

pot pot * 3

signo_pot signo * pot

Escriba signo_pot

Fin para

final

PRUEBA DE ESCRITORIO Datos: 4 Memoria Salida

N Signo pot I signo_pot

4 -1

1

-1

1

−1

1

3

9

27

81

1

2

3

4

5

3

− 9

27

− 81

5.3.1.3 Aplicaciones del Bloque Para, Series finitas Otra aplicación de acumuladores y contadores son las SERIES.

Ejemplo 5.13. (Bloque Para, Serie finita, suma de pares) Calcular el valor de la siguiente serie: 2 + 4 +6 +8 + …50 términos Revisar los Ejemplos 5.9 (pág 208) y 5.10 (pág.209)

Observación 5.3.1.2.2: Se conservará

el signo positivo de las potencias de 3,

para alternar el signo dichas potencias,

se deberán multiplicar por la variable

Signo, y se creará una nueva variable

signo_pot.

3 − 9 27 − 81

Las series finitas, son el resultado de sumar números que siguen un determinado patrón

o secuencia (o sea la suma de los elementos de una sucesión). Sin pretender poner

mucho rigor matemático, se dirá que en éstas el resultado es un número.

Page 228: Universidad Tecnologica Centroamericana

___________________________________________________________________ 214

Para tener mas claridad se puede replantear el ejercicio, así: Calcular el valor de la Suma:

Suma = 2 + 4 +6 +8 + … 50 términos:

ESTRATEGIA

Entrada NO hay, los números Salida Suma

Se generan internamente (1 Número)

• 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 es un acumulador aditivo:

Suma suma + X, que a su vez tendrá que inicializarse en Cero.

ALGORITMO

Inicio

Suma 0 (1)

X 2 (2)

Para i 1, 50 haga (3)

Suma Suma + X (4)

X X+ 2 (5)

Fin para (6)

Escriba “El valor de la serie es: “, suma (7) Final

Se generan términos que se incrementarán en 2 los cuales a su vez se irán sumando

y acumulando en el acumulador Suma.

El algoritmo merece otros cometarios adicionales:

Línea (1) Inicialización del acumulador Suma en cero.

Línea (2) Inicialización de los términos a sumar que a su vez se incrementarán

internamente de dos en dos.

Línea (3) Bloque Para que inicia en 1 y realiza el Rango (líneas 4 y 5)50 veces.

Page 229: Universidad Tecnologica Centroamericana

___________________________________________________________________ 215

Línea (4) Incremento del acumulador suma en el valor del término generado X.

Línea (5) Se genera el nuevo término el cual se acumulará hasta en el siguiente ciclo,

esto implica que el último término generado no se utilizará.

Línea (7) Al finalizar el Bloque para o ciclo repetitivo, se imprime una sola vez (púes

es un solo número), el valor final de la Suma.

Ejemplo 5.14 (Bloque Para, Sucesión, serie, fracciones signos alternos)

Sin datos de entrada, diseñar algoritmos para lo solicitado a continuación:

5.14.a) La sucesión −1/2, 2/5, −3/8, 4/11, …30 términos (solo indicar los cocientes)

5.14.b) La serie S = −1/2 + 2/5 −3/8 + 4/11 - 30 términos (calcular la suma indicada)

Desarrollo del ejemplo 5.14.a)

• El numerador de las fracciones podría 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 daría 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 sucesión 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

1 Estos ejemplos son triviales y en general requerirían solamente imprimir el resultado de los números generados, pero con el propósito de desarrollar la lógica del alumno se detallan las variantes presentadas.

Observación 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 números 1, 2, 3, 4, 5….lo cual no es de extrañar 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 número N!, etc.

Page 230: Universidad Tecnologica Centroamericana

___________________________________________________________________ 216

ALGORITMO

Inicio

denominador 2 (1)

signo 1 (2)

Para i 1, 30 haga (3)

signo −signo (4)

signo_i signo * i (5)

escriba signo_i, “ / “, denominador (6)

denominador denominador + 3 (7)

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 líneas enumeradas del algoritmo anterior.

PRUEBA DE ESCRITORIO

para tres términos Para i 1, 3 haga (3)

Memoria Salida

Denominador Signo I signo_i

2

5

8

11

1

-1

1

-1

1

2

3

4

- 1

2

-3

Ejemplo 5.14.b) (S = −1/2 + 2/5 −3/8 +…)

NOLAE

Inicio Serie 0 (1)

denominador 2 (2)

signo 1 (3)

-1 / 2 2 / 5 -3 / 8

Page 231: Universidad Tecnologica Centroamericana

___________________________________________________________________ 217

Para i 1, 30 haga (4)

signo −signo (5)

signo_i signo * i (6)

cociente signo_i / denominador (7)

serie serie + cociente (8)

denominador denominador + 3 (9)

Fin para

Escriba “Serie = ”, serie (10)

Final

Comentarios al algoritmo:

• Línea (1) Serie es un acumulador aditivo que se inicializa en cero.

• La generación de los numeradores con su signo y sus denominadores se analizó en el

ejercicio anterior inciso 5.14.a, (pág. 216)

• En la sucesión del inciso a) se escribieron los términos solamente indicando el cociente

ver Línea (6) que lee escriba signo_i, “ / “, denominador (6)

Pero al tratarse ahora de la serie correspondiente, en donde efectivamente se suman

los términos el cociente deberá efectuarse como se indica en la Línea (7).

• Línea (8) Serie se incrementa en el cociente generado previamente Línea (7)

PRUEBA DE ESCRITORIO para tres términos Para i 1, 3 haga (4) Memoria Salida

Serie denominador Signo i signo_i cociente

0

-0.5

-0.1

-0.475

2

5

8

1

-1

1

-1

1

2

3

4

- 1

2

-3

- 0.5

0.4

-0.375

Ejemplo 5.15 (Bloque Para, Serie y Sucesión incrementos alternos) Generar la siguiente sucesión de números 0, 1, 5, 6, 10, 11, 15, 16….25 términos

Serie = -0.475

Page 232: Universidad Tecnologica Centroamericana

___________________________________________________________________ 218

Se puede observar que los incrementos varían comienza con 1, después 4 y sigue en

forma alterna:

0, 1 , 5, 6, 10, 11, 15,…

1 4 1 4 1 4 ESTRATEGIA Para resolverá esta nueva variante, se utilizará una BANDERA (mencionadas, al inicio de

la Sección 4.9 del capítulo 4), estas son útiles para indicar cambios de estado, sus valores

estarán cambiando de valores convenientemente de -1 a 1. y esto servirá en una

decisión en particular como un interruptor para cambiar de:

Ramal Verdadero (con un incremento de 1) a

Ramal Falso (con un incremento de 4) ALGORITMO Inicio Bandera 1 (1) Num 0 (2) Para i 1, 25 haga (3) Escriba Num (4) Si Bandera = 1 (5) Entonces Num Num + 1 (6) Bandera -1 (7) Sino Num Num + 4 (8) Bandera 1 (9) Fin si Fin para Final Comentarios al algoritmo: Línea (1) Se inicializa la Bandera en un valor arbitrario igual a 1 Línea (2) Se inicializa el valor de Num en cero que es el primer valor de la sucesión

Línea (4) Impresión del número en turno de la sucesión

Línea (5) Se verifica mediante una decisión el valor de la bandera si es 1 hace el ramal (V)

Línea (6) Generación del siguiente término con un incremento den 1 y

Page 233: Universidad Tecnologica Centroamericana

___________________________________________________________________ 219

Línea (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 Línea (8) y

en la Línea (9) se cambiará el valor de la bandera a 1 para volver a

incrementar en uno.

A continuación se muestra la prueba de escritorio PRUEBA DE ESCRITORIO para 5 términos Para i 1, 5 haga (3) Memoria Salida

Bandera num i

1

--1

1

-1

1

0

1

5

6

10

11

1

2

3

4

5

6

Queda al lector realizar el algoritmo de la respectiva Serie.

Otra aplicación de acumulador multiplicativo es el cálculo del factorial de un número N, la

notación usada es N!, a continuación se brinda un Marco Teórico.

El Factorial de un número entero N > 0 se denota como N! se define por:

1 si N=0 o si N=1

N! = N * (N-1) * (N-2) * (N-3) * … *1 si N > 2

Ejemplo 5.16 (Factorial, Bloque Para) Para N = 4, Calcular 4! ESTRATEGIA Por definición significa lo siguiente:

4! = 4 * 3 * 2 * 1 , o reescribiéndolo convenientemente es igual a

Leer la Observación 5.3.1.3, en la pág.215)

0 1 5 6 10

Page 234: Universidad Tecnologica Centroamericana

___________________________________________________________________ 220

4! = 1 * 2 * 3 * 4 = 24 Reconoce el lector ¿Quién progresa en esa forma?

1*1=1

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 repetición se acumula su producto con los Indices generados

convenientemente 1, 2, 3, 4. Cuando el índice generado sobrepasa el límite superior

4 o Valor_final, el ciclo termina su ejecución.

• Se acumulan los productos de los Indices que se van generando. Podemos utilizar el

bloque para tal fin y además para controlar el ciclo repetitivo que deberá realizarse 4

veces.

NOLAE

Inicio

Factorial 1 (1)

Para i 1, 4 haga (3)

Factorial factorial *i (4)

Fin para

escriba “el factorial de 4 es . “, factorial (7) Final

Se deja al lector realizar la prueba de escritorio respectiva. EJERCICIOS 5.3.1.2

Para los siguientes ejercicios elabore el algoritmo correspondiente:

1. Del Apéndice C los incisos 4, 5.

2. Del Apéndice C los incisos 6, y 7.

3. Generar la sucesión 3, 5, 10, 12, 15, …. 20 términos

Page 235: Universidad Tecnologica Centroamericana

___________________________________________________________________ 221

4. Generar la sucesión 1/5, 2/10, 3/15,…….8/40

5. Ejercicios del Apéndice B inciso 21 (sucesiones)

6. Ejercicios del Apéndice B, inciso 22 (series)

7. Calcular la suma de las potencias de 2

8. Generar la sucesión 2, 4, 6, 8, 10… 35 términos, utilizando el Bloque para y

operando con el índice de éste, es decir sin utilizar un acumulador

9. Leer varios números hasta encontrar uno que sea mayor de 100. (Ver el

EJERCICIO 4.6. inciso.1 (pág. 144), EJERCICIO 4.9.3. inciso 1 (pág.208), en

donde la condición de repetición es una comparación)

10- Leer varios números 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 repetición:

Mientras C haga

B

fin mientras

En este caso primero se evalúa la condición C para ejecutar el bloque B. Sin embargo, no

siempre es deseable que se evalúe C primero antes de ejecutar B, y el siguiente esquema

aparece a menudo:

Que dibujando en diagrama de flujo sería:

B

Mientras no C haga REPITA HASTA

B

Fin mientras

Page 236: Universidad Tecnologica Centroamericana

___________________________________________________________________ 222

Figura 5.3.2.1

La representación anterior se puede simplificar de la siguiente manera:

Figura 5.3.2.2

A la estructura anterior se le llamará el Bloque “Repita”. En si no constituye una nueva

estructura básica, sino mas bien derivada de la repetición.

Observe, que como b.e. se representan las reglas de una entrada y una salida.

B

B V

F

┐C

B

C B F

V

Page 237: Universidad Tecnologica Centroamericana

___________________________________________________________________ 223

Figura 5.3.2.3

En el “Repita-hasta”, se inicia con la ejecución de B, y luego se evalúa la condición C, si es

Falsa (a diferencia de la repetición) 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 seudocódigo, se representa de la siguiente manera: Ejemplo 5.17 (Repita-hasta, Suma) Se desea un programa en el cual se sumen varios números 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 números S es un acumulador, que se inicializa en Cero.

B

C

V

F

Repita En donde C es una condición de repetición y

B B es un bloque estructurado que constituye el

Hasta que C Rango

Page 238: Universidad Tecnologica Centroamericana

___________________________________________________________________ 224

• Considerando que al iniciar no se tiene una condición “Centinela” se utilizará el

Repita hasta que la condición S > 200 sea (V)erdadera

El Algoritmo resultante es: Inicio S 0 (1)

Repita (2)

Lea Num (3)

S s + Num (4)

Hasta que S > 200 (5)

Escriba “La suma es: ”, S (6)

Final A continuación se muestra la prueba de escritorio paso a paso con los datos dados:

Datos: 100, 50, 65

Memoria: Salida:

S Num

0

100

100

Línea (1): Inicializa S en cero, y en la

Línea (2): NO existe una condición que limite la primera entrada al ciclo de repetición

Línea (3): Se lee número 100

Línea (4): y se acumula en S, no como resultado 100.

Línea (5): Evaluando la condición es 100 >200 como resulta Falsa, se continua con

La repetición y se vuelve a realizar el Rango de ésta.

Page 239: Universidad Tecnologica Centroamericana

___________________________________________________________________ 225

Datos: 100, 50, 65 Memoria: Salida:

S Num

0

100

150

100

50

Línea (3): Se lee el número 50.

Línea (4) y se acumula en S, dando como resultado 150.

Línea (5) Se evalúa la condición 150 >200, como resulta Falsa, se continua con la

repetición y se vuelve a realizar el Rango de ésta.

Datos: 100, 50, 65, 10 Memoria: Salida:

S Num

0

100

150

210

100

50

65

Línea (3): Se lee el número 65

Línea (4): y se acumula en S, da como resultado 210.

Línea (5): Se evalúa la condición 210 >200, como resulta Verdadera, ya no se continua

con la Repetición, ya que ésta se hace Hasta que efectivamente S >200.

Como se cumplió que 210 > 200, no se continua Repitiendo el Rango.

La suma es: 210

Page 240: Universidad Tecnologica Centroamericana

___________________________________________________________________ 226

Ejemplo 5.18 (Repita-hasta, Kilometraje)

Elaborar el seudocódigo del Ejemplo 4.7, pág. 138, (alquiler de vehículos, cobro por

Kilometraje) utilizando el Bloque Repita-Hasta, se leerá el primer Kilometraje antes de

entrar al Bloque, considerando que el primer valor leído 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 repetición controlada por centinela ver figura

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 repetición:

Una es la negación de la otra:

Km ≠ 0 Km = 0

• Ambas poseen lectura previa al bloque de repetición y al final del Rango

• En la repetición controlada por centinela, se tiene una lectura previa a la repetición, de

otra manera, no se tendría un valor inicial para evaluar la condición Km ≠ 0, además si

este es cero se entra al ciclo y no se realiza ni una vez.

Repetición controlada por centinela Bloque Repita-Hasta

lea Km

mientras Km ≠ 0 haga

si Km < 100

entonces

Pago 200 + 0.5 *Km

sino

Pago 215 + 0.35 *Km

fin si

escriba Pago

lea Km

fin mientras

lea Km

Repita

si Km < 100

entonces

Pago 200 + 0.5 * Km

sino

Pago 215 + 0.35 * Km

fin si

escriba Pago

lea Km

Hasta que Km=0

Page 241: Universidad Tecnologica Centroamericana

___________________________________________________________________ 227

• En el caso del bloque Repita-hasta, no es necesario tener una lectura previa (ni que se

cumpla alguna condición) para entrar a la repetición, si se dejase la lectura del

Kilometraje (Km.) al inicio del Rango ésta pudiera ser Cero.

La siguiente porción de algoritmo es incorrecta, porque (si Km = 0) se continuaría

procesando información para un valor no válido, se hace necesario la suposición de que

el primer valor leído no puede ser igual a cero.

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.

Repita Lea Km

si Km < 100

entonces

Pago 200 + 0.5 * Km

sino

Pago 215 + 0.35 * Km

fin si

Hasta- que Km ≠ 0

:

etc.

Observación 5.3.2. En el Apéndice E (Ejemplo E.4, pág. 314) se encuentra otra

variante de la repetición, siempre se utiliza el mientras, pero la repetición está

controlada por la RESPUESTA DEL USUARIO, se hace una pregunta sobre si se

desea seguir o no procesando información, 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.

Page 242: Universidad Tecnologica Centroamericana

___________________________________________________________________ 228

EJERCICIOS 5.3.2

1. Elaborar un algoritmo en Nolae del Ejemplo 3.10, pág.92, o Ejemplo 4.8, pág 140.

(Boletos Tegucigalpa, SPS) utilizando el Repita-Hasta.

2. Ejercicios del Apéndice C incisos del 1 al 3 (pág.299).

3. Se deberá hacer un programa para un supermercado que pregunte para cada cliente:

el precio del artículo, la cantidad de artículos del mismo tipo que lleva. Además

deberá permitir que se le indique cuando terminan los artículos 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 también

controle el corte de las cajas, por lo que debe ofrecer como salidas el total de ventas

del día, 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 número de artículos 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 diseñe 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 día.

• Monto de la venta promedio por cliente.

NOTA: Para los Ejercicios 3 y 4 (Apéndice E, ejemplo E.4, pág. 314) se deberá utilizar la

repetición controlada por RESPUESTA DEL USUARIO, en el ejercicio 4 se deberá

utilizar un Bloque Caso con variables tipo carácter para las tarifas.

Page 243: Universidad Tecnologica Centroamericana

______________________________________________________________________ 229

CAPITULO 6 SUBALGORITMOS, ARREGLOS Y ELEMENTOS DE ESTRUCTURAS DE DATOS 6.1 Subalgoritmos

Para desarrollar un estilo que facilite la mantenibilidad (fácil mantenimiento), la legibilidad

(fácil lectura), la modularidad (agrupada por tareas afines) de programas más complejos, es

altamente recomendable que se utilicen los subalgoritmos. Además 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 líneas de código que de otra manera se estarían repitiendo

innecesariamente. En general cuando se determine que hay líneas de código que se están utilizando con

frecuencia para realizar una tarea específica, será conveniente agruparlas y asignarles un

nombre en particular (preferiblemente que haga alusión a la tarea principal que realiza.) y

se invocarán cuando sea necesario. Este tema será introducido por medio de ejemplos sencillos para enfatizar la diferencia

entre su definición y su uso o invocación. Los subalgorimos se ejecutan cuando son

llamados o INVOCADOS, así como cuando una persona responde cuando se le llama por

su nombre. En el capítulo 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 continuación:

Ejemplo 6.1 (Promedio de un estudiante, Introducción a los subalgoritmos) Diseñar el algoritmo para un programa en el cual, dados el número de cuenta y las 3

calificaciones de un alumno, calcule e imprima su promedio simple y el mensaje Aprobo ó

Reprobo según sea el caso.

Un subalgoritmo es un algoritmo que necesita ser llamado o invocado por otro

algoritmo para su ejecución.

Page 244: Universidad Tecnologica Centroamericana

______________________________________________________________________ 230

Estrategia: Promedio Cuenta

Salida mensaje Aprobo ó Entrada nota1

Reprobo nota2

nota3

• Después de calcular el promedio, se necesita una decisión

El algoritmo resultante es: Inicio lea cuenta (1) lea nota1 (2)

lea nota2 (3)

lea nota3 (4)

Promedio (nota1+ nota2 + nota3)/3 (5)

si promedio > 60 (6)

entonces (7)

Mensaje “Aprobo” (8)

sino (9)

Mensaje “Reprobo” (10)

fin si (11)

escriba promedio (12)

escriba mensaje (13) Final Algoritmo 6.1

Se puede observar que:

En que las Líneas del 1 al 4 se realiza la … LECTURA DE DATOS

Las líneas del 5 al 11se realizan los … CALCULOS Y CLASIFICACION

Finalmente en las líneas 11 y 12 se hace la … IMPRESIÓN DE RESULTADOS

Si promedio > 60 (V) el alumno Aprueba

(F) Sino Reprueba

Page 245: Universidad Tecnologica Centroamericana

______________________________________________________________________ 231

Las líneas que se han agrupado y asociado a los distintos titulares, se podrán ubicar, de tal

manera, que se divide el Programa propuesto en 3 subalgoritmos y se les nombra de manera

particular con un “Nombre”, a continuación la DEFINICION (o líneas de código) de los

subalgoritmos de interés.

Ejemplo 6.2 (Subalgoritmos, Promedio de un estudiante)

Inicio (Lectura) -- Se coloca el nombre entre paréntesis. Línea (0) lea cuenta (1)

lea nota1 (2)

lea nota2 (3)

lea nota3 (4)

Final

En la Línea (0) se puede observar que, al lado de la palabra Inicio se coloca entre paréntesis el nombre del subalgoritmo. Inicio ( Calculos_y_clasificacion) Promedio (nota1+ nota2 + nota3)/3 (5)

si promedio > 60 (6) entonces (7) Mensaje “Aprobo ” (8)

sino (9) Mensaje “Reprobo” (10)

Fin si (11) Final

Inicio (Impresion) escriba promedio (12) escriba mensaje (13) Final

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 ejecución normalmente.

A continuación se muestra el Programa Principal en el cual se ejemplificará como se realiza

la INVOCACION de los subalgoritmos anteriores.

Page 246: Universidad Tecnologica Centroamericana

______________________________________________________________________ 232

Inicio (Principal)

Lectura --en la invocación basta colocar el nombre del subalgoritmo Calculos_y_Clasificacion Impresión

Final Algoritmo 6.2 En el ejemplo desarrollado se ilustra el orden en la ubicación física de los subalgoritmos y

del algoritmo principal, es decir, primero se colocarán 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 instrucción concatenada con ella, que es el llamado o INVOCACION al

subagoritmo Calculos_y_clasificacion y así sucesivamente, hasta terminar.

La ejecución 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

principio:

Además, los nombre asignados a los subalgoritmos deben seguir las mismas reglas para los

identificadores estudiadas en el Capítulo 2. Ejemplo 6.3 (Subalgoritmos, Promedio de N alumnos) Modificar el Ejemplo 6.2 (pág 231), para N alumnos Solución: Los subalgoritmos LECTURA, CALCULOS_Y_CLASIFICACION e IMPRESIÓN,

Toda DEFINICION de un subalgoritmo debe estar colocada antes del algoritmo (u

otro subalgoritmo) que lo va a llamar o INVOCAR.

Page 247: Universidad Tecnologica Centroamericana

______________________________________________________________________ 233

siguen siendo válidos, solamente se requiere utilizar un Bloque Para pues bastará leer el

Número 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 (pág. 231) para que calcule e imprima número de

Aprobados, número de Reprobados, y la nota promedio de todo el curso.

2.- Del Apéndice C, hacer los ejercicios 10 al 13 (pág. 299,300). 3.- 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 admisión con

una nota de 70% o más, diseñar 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 elaboración de un censo poblacional de N municipios, se le ha asignado un

código numérico a cada municipio, se ha registrado, con la mayor aproximación

posible, el número de habitantes que tienen y la extensión territorial de cada uno de

ellos (medidas en hectáreas). Diseñar un programa en (el lenguaje que su profesor le

indique) que clasifique los municipios por categorías según el número de habitantes

que posea, ver tabla adjunta:

Page 248: Universidad Tecnologica Centroamericana

______________________________________________________________________ 234

El programa deberá, imprimir el código del municipio, número de habitantes,

hectáreas y el mensaje de la clasificación correspondiente (Nota: todos los

municipios deberán quedar clasificados).

Además se debe generar un reporte con la siguiente información:

• Número de municipios en cada una de las categorías.

• Población Total en cada una de las categorías.

• Código del municipio ubicado en la mayor cantidad de Hectáreas de terreno y la

categoría de este.

• Código del municipio con la menor cantidad de Hectáreas de terreno y su categoría.

6.2 MENUS, UNA APLICACIÓN DE LOS SUBALGORITMOS Otra aplicación de los subalgoritmos son los MENUS

Se introduce el uso de éstos con el ejemplo de una calculadora:

Ejemplo 6.4 (Menús, Calculadora) Se desea un programa que, de manera repetitiva, sume o reste dos números, según se le

indique. Para ello, presentara un <<Menú>> de opciones hasta que se selecciones la opción

de terminar el programa.

RANGO habitantes CATEGORIA / MUNICIPIO

Menor de 1,000 INCIPIENTE

De 1,000 a 5,000 EN DESARROLLO

De 5,001 a 10,000 FLORECIENTE

Mas de 10, 001 MADURO

Un MENU es un conjunto de opciones (generalmente numeradas) que se presentan al

usuario para su selección, cada opción conlleva a la ejecución de una tarea específica.

Page 249: Universidad Tecnologica Centroamericana

______________________________________________________________________ 235

DESARROLLO DE UN BREVE ANALISIS Se presentará el siguiente menú.

Figura 6.2.1

Si la opción escogida es 1, se solicitarán los números que se van a sumar y se escribe el

resultado, como se indica en el siguiente diseño de pantalla.

Figura 6.2.2

Y, de manera similar, para el caso de la resta. DESGLOSE

1. Proceso repetitivo de presentación del menú Repetir

1.1 Presentación del menú

1.2 Selección del caso 1 ó 2, para efectuar operaciones hasta que la opción sea 3.

El desglose anterior lleva a la necesidad de utilizar el Bloque Repita-hasta

Proporcione los números que se van a sumar: X =__ Y =__ La suma es :_____ Teclee <<Enter>> para continuar

MENU

1. Sumar dos números 2. Restar dos números 3. Terminar el programa

Teclee el número de su opción: __

Page 250: Universidad Tecnologica Centroamericana

______________________________________________________________________ 236

2do. Desglose

1.2 Según sea el caso para la opción:

1.2.1 (Opción = 1) Solicitar los números, sumarlos e imprimirlos

1.2.2 (Opción = 2) Solicitar los números, restarlos e imprimirlos

Como se puede observar se utilizará bloque caso pues la opciones son números enteros

Se comienza diseñando la pantalla principal que estará presentando el MENU de opciones

cuyo diseño 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) (1)

Limpia_Pantalla (2)

escriba “MENU”

escriba “1.- Sumar dos números”

escriba “2.- Restar dos números”

escriba “3.- Terminar el programa”

escriba “Teclee el numero de su opción”

Lea OPCION

Final

El procedimiento “Limpia_Pantalla” de la Línea (2), existe en los lenguajes de

programación 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

página nueva)

Posteriormente se hará el procedimiento Suma, de acuerdo al diseño mostrado en la Figura

6.2.2 (pág. 235), en el cual los mensajes son asociados a la escritura y los valores de X e y

deberán leerse.

Inicio (Suma)

Limpia_Pantalla

escriba “Proporcione los números que se van a sumar”

Page 251: Universidad Tecnologica Centroamericana

______________________________________________________________________ 237

escriba “X = ”

lea X

escriba “Y = ”

lea Y

S X + Y

escriba “La suma es : ”, S

escriba “Teclee <<Enter>> para continuar ” --Efecto de una lea Pausa

Final El último lea (sin parámetro) sirve para que la computadora ESPERE la pulsación de la

tecla ENTER para continuar con el programa.

Ahora se continuará con el procedimiento Resta, que resulta similar al de Suma

Inicio (Resta )

Limpia_Pantalla escriba “Proporcione los números 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

opción sea “3. Terminar”, se recurrirá al Bloque “Repita hasta”, entonces el algoritmo

principal se escribe así:

Page 252: Universidad Tecnologica Centroamericana

______________________________________________________________________ 238

Pensando en una Prueba de escritorio, se puede observar que se exhibirá primero el Menu

principal (Figura 6.2.1. pág.235) con la ejecución del procedimiento Pantalla_Menu, al

ingresar la opción (por ejemplo) 1 se continua con el Bloque Caso y se llama o INVOCA al

procedimiento Suma, en este (Figura 6.2.2. pág.235 ) se piden los dos números 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 erróneamente presiona el número “5”. El sino lo

lleva a un bloque nulo, (lo cual no implica que ira a la opción “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 deberán seguir todas las reglas de identificadores

indicadas en el. Capítulo 2, y están como opciones del Bloque Caso.

Inicio (Principal)

Repita

Pantalla_Menu

Caso OPCION

1: Suma

2: Resta ESQUEMA GENERAL DE UN MENU ITERATIVO

Sino: nulo

fin caso

hasta que OPCION = 3

Final

Page 253: Universidad Tecnologica Centroamericana

______________________________________________________________________ 239

Opciones presentadas en el

procedimiento, Pantalla_ Menu

Invocación a los procedimientos

En el Bloque Caso

Put(“1.-Sumar dos números”)

Put(“2.-Restar dos números”)

Caso opcion 1: Suma 2: Resta

Ejemplo 6.5 (Menús, Agencia Turismo Islas)

Una agencia de viajes va a proporcionar tres paquetes turísticos, con un costo base para dos

personas y un costo adicional por persona extra, según se muestra en la siguiente tabla.

PAQUETE DESTINO PRECIO DOS PERSONAS PRECIO PERSONA EXTRA

1 Islas Bahía 2,500.00 1,000.00

2 México 4,800.00 2,500.00

3 Madrid 15,000.00 9,000.00 El precio incluye transporte aéreo, hotel y desayuno por cuatro días y tres noches. Cada uno

de los paquetes tiene opciones adicionales que se pagan por aparte por cada persona.

1. Islas de la Bahía

a. Clases de esquí acuático 300.00 por persona

b. Visitas a delfines 80.00 por persona

2. México

a. Visitas a las pirámides 60.00 por persona

b. Presentación Ballet Folklórico 50.00 por persona

c. Visita a Garibaldi 200.00 por persona

3. Madrid

a. Visita a Valencia 270.00 por persona

Page 254: Universidad Tecnologica Centroamericana

______________________________________________________________________ 240

Con el propósito de atender los clientes se desea un programa de consulta para calcular

costos totales según el paquete y las opciones escogidas. Por lo cual, el programa deberá

presentar una pantalla así:

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 opción para los cálculos de los costos, (si ninguna

persona escoge o desea una opción, el numero de personas NO será 0). Al final de la

consulta, la pantalla quedará así:

MENU

1. Islas de la Bahía 2. Ciudad de México 3. Madrid España 4. Salir del programa

¿Cuál es su opción: ? _____

PAQUETE : ISLAS DE LA BAHIA

Cantidad de personas extra ___________________ Cantidad de personas a esquí acuático __________ Cantidad de personas visita a delfines _________ Costo del Viaje : Costo base para 2 personas Lps. _________ Subtotal _________ Impuesto _________ Gran Total Lps. _________ Teclee <<Enter>> para continuar

Page 255: Universidad Tecnologica Centroamericana

______________________________________________________________________ 241

DESARROLLO

Nuevamente se diseñarán subalgoritmos.

Se puede observar que un desglose general para el programa de consulta es el siguiente:

1. Repetir sucesivamente lo siguiente :

1.1 Mostrar el menú en la pantalla

1.2 Atender la consulta del cliente según sea el caso :

1.2.1 (opción = 1) Consulta para Islas

1.2.2 (opción = 2) Consulta para México

1.2.3 (opción = 3) Consulta para Madrid

Hasta que se escoja la opción = 4 para salir del programa. La codificación de este desglose general será el algoritmo principal, el cual invoca a los

subalgoritmos utilizados

Se considerarán los siguientes subalgoritmos. NOMBRE PROPOSITO Pantalla_Menu Presentar el menú en la pantalla

Islas Consulta para el paquete Islas

México Consulta para el paquete México

Madrid Consulta para el paquete Madrid

DICCIONARIO DE VARIABLES

Opcion Opción del Menú principal

CE Cantidad de personas extra

Pesq Cantidad de personas que tomarán clase de esquí acuático

Pdelf Cantidad de personas visita a delfines

Costo_ce Costo por persona extra

Costo_Pesq Costo por las clases de esquí acuático

Costo_Pdef Costo por la visita a delfines

Costo Subtotal

Impto Impuesto sobre ventas (12%)

Total Total a pagar por que paquete

Page 256: Universidad Tecnologica Centroamericana

______________________________________________________________________ 242

Inicio (Pantalla_Menu)

Limpia_Pantalla

escriba “ MENU ”

escriba “ ______ ”

escriba

escriba “ 1.- Islas de la Bahía ”

escriba “ 2.- Ciudad de México”

escriba “ 3.- Madrid, España”

escriba

escriba “ 4.- Salir del Programa”

escriba “ ¿Cuál es su opción : ?”

lea OPCION

Final

Inicio (Islas)

Limpia_Pantalla

escriba “ Paquete: Islas de la Bahía”

escriba

escriba “Cantidad de personas extras”

lea Ce

costo_Ce Ce * 1500.00

escriba “Cantidad de personas esquí acuático”

lea Pesq

costo_pesq pesq * 300

escriba “Cantidad de personas visita a delfines”

lea Pdelf

costo_pdelf Pdelf * 80

Costo 2500 + costo_ce+ costo_pesq + costo_pdelf

impto costo * 0.12

Total costo + impto

escriba “Costo base para 2 personas Lps. 2,500.00”

escriba “Sub. total ”, costo

escriba “Impuesto ”, impto

Page 257: Universidad Tecnologica Centroamericana

______________________________________________________________________ 243

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 cálculos

intermedios, se deberán separar los cálculos según convenga

Inicio (Islas)

Limpia_Pantalla escriba “Paquete: Islas de la Bahía” escriba costo 2500

escriba “Cantidad de personas extras: ”

lea Ce Costo costo + Ce * 1500.00 -- Acumula

escriba “Cantidad de personas a esquí acuático: ”

lea Pesq

costo costo + pesq * 300 -- acumula

escriba “Cantidad de personas visita a delfines”

lea Pdelf

costo costo + Pdelf * 80 -- acumula

impto costo * 0.10 -- Usa otra variable pues impto se imprimirá

Total costo + impto

escriba “Costo base para 2 personas Lps. 2,500.00” -- es un literal

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 México y Madrid.

El algoritmo principal es:

Page 258: Universidad Tecnologica Centroamericana

______________________________________________________________________ 244

Inicio Repita Pantalla_Menu

Caso OPCION

1: Islas 2: México 3: Madrid Sino: nulo

fin caso

hasta que OPCION = 4 Final Ejemplo 6.6 (Menús, 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 serán:

a) Preguntar Numero de personas y que el programa determine si hay personas

extras

b) Preguntar si habrá personas que irán a visitar a los delfines

Si la respuesta es Si Teclear ‘S’o ‘s’ si es NO teclear ‘N’o ‘n’

En el caso de responder que ‘s’ preguntar el número de personas que irá y hacer los

cálculos respetivos.

2) Incluir la opción 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 Bahía 2.- Ciudad de México 3.- Madrid España 4.- Reporte de Paquetes vendidos y los Ingresos generados 5.-Salir del programa

¿Cuál es su opción: ? _____

Page 259: Universidad Tecnologica Centroamericana

______________________________________________________________________ 245

Solución: Ya que se cuenta con el algoritmo básico 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 necesitarán

DICCIONARIO DE VARIABLES

Opcion Opción del Menú principal : : Total Total a pagar por que paquete

Nuevas variables Asignación

P_islas Paquetes vendidos para Islas de la Bahia P_islas P_islas +1

P_mex Paquetes vendidos para México P_mex mex +1

P_madrid Paquetes vendidos para Madrid P_madrid P_madrid +1

Ing_islas Ingresos por la venta de paquetes a las Islas Ing_islas Ing_islas+Total

Ing_mex Ingresos por la venta de paquetes a México Ing_mex Ing_mex+Total

Ing_madrid Ingresos por la venta de paquetes a Madrid Ing_madrid Ing_madrid+Total

Ing._Total Ingreso total de la Agencia de turismo Ing_Total Ing_islas+ …

Ing_mex+ Ing_madrid

En primera instancia el subalgoritmo Pantalla_Menu se modificará al surgir una nueva

opción que es Reporte

Inicio (Pantalla_Menu)

Limpia_Pantalla

escriba “ MENU ” escriba “ ______ “

escriba “ 1. Islas de la Bahía ”

escriba “ 2. Ciudad de México”

escriba “ 3. Madrid, España”

escriba “ 4. Reporte de Paquetes vendidos y los Ingresos generados” escriba escriba “ 5. Salir del Programa ” escriba escriba “ ¿Cuál es su opción : ?”

lea OPCION

Final Algoritmo 6.6a

Page 260: Universidad Tecnologica Centroamericana

______________________________________________________________________ 246

A pesar de que primero se colocan los subalgoritmos y posteriormente el principal, por

fines didácticos se empezará a desarrollar este último, para visualizar mejor la lógica total

del programa, así como también las inicializaciones necesarias

Inicio

P_islas 0, P_mex 0, P_madrid 0 (1)

Ing_islas 0.0, Ing_mex 0.0, Ing_madrid 0.0 (2)

Repita (3)

Pantalla_Menu (4)

Caso OPCION (5)

1: Islas (6)

2: México (7)

3: Madrid (8)

4: Reporte (9)

Sino: nulo (10) fin caso (11) hasta que OPCION = 5 (12) Final (13)

Algoritmo 6.6b Comentarios por Línea:

Línea (1): Inicialización de los contadores de paquetes vendidos, estos se deben colocar

antes de entrar a la repetición (¿Por qué?)

Línea (2): Inicialización de los acumuladores de ingresos, como ya hemos dicho antes,

estos serán de tipo real o float, así que colocaremos punto decimal 0.0

Línea (9): Se agregó la invocación al subalgoritmo REPORTE

Línea (12): 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.

Inicio (Islas)

Limpia_Pantalla escriba “ Paquete: Islas de la Bahía”

Page 261: Universidad Tecnologica Centroamericana

______________________________________________________________________ 247

escriba costo 2500 -- Costo por 2 personas

escriba “Cantidad de 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í acuático S/N? ”

lea Resp

si Resp = ‘S’ o Resp= ‘s’ -- Cubre la posibilidad de mayúsculas y minúsculas

entonces

lea Pesq

costo costo + pesq * 300 -- Acumula

fin si -- si no van a esquí el costo sigue igual no se incrementa

impto costo * 0.10 -- Usa otra variable pues impto se imprimirá

Total costo + impto

escriba “Costo base para 2 personas Lps. 2,500.00”

escriba “Subtotal “, costo

escriba “Impuesto “, impto Línea (22)

escriba “ GRAN TOTAL “, Total Línea (23)

P_islas P_islas + 1 --Se cuenta el paquete

Ing_islas Ing_islas + total --Acumula esta venta

escriba “Teclee <<Enter>> para continuar”

lea Final Subalgoritmo 6.6.c Algunas de las líneas agregadas están 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 modificarán los subalgoritmos Mexico o Madrid y para terminar se

detallará el subalgoritmo REPORTE

Page 262: Universidad Tecnologica Centroamericana

______________________________________________________________________ 248

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 (Menús, Agencia Turismo Islas, reporte al final) Modificar el Ejemplo anterior 6.6 mostrando ahora el REPORTE al final del día Solución 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 0, P_madrid 0 (1)

Ing_islas 0.0, Ing_mex 0.0, Ing_madrid 0.0 (2)

Repita (3)

Pantalla_Menu (4)

Caso OPCION (5)

1: Islas (6)

2: México (7)

Page 263: Universidad Tecnologica Centroamericana

______________________________________________________________________ 249

3: Madrid (8)

Sino: nulo (9)

fin caso (10)

hasta que OPCION = 4 (11)

Reporte (12)

Final (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 opción de pagar al contado o al crédito 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 total + total*0.06 -- acumulamos en la misma variable

Fin si --para imprimirla en Islas Final

Algoritmo 6.7b

Este Subalgoritmo sería invocado entre las Líneas (22) y (23) del algoritmo 6.6c (pág.247) : :

escriba “Sub. total “, costo

escriba “Impuesto “, impto Línea (22)

Forma_de_pago -- Invocación del subalgoritmo

escriba “ GRAN TOTAL “, Total Línea (23)

P_islas P_islas + 1 --Contamos el paquete

Ing_islas Ing_islas + total --Acumulamos esta venta

escriba “Teclee <<Enter>> para continuar”

lea

Final (islas) Algoritmo (parte) 6.7c

Page 264: Universidad Tecnologica Centroamericana

______________________________________________________________________ 250

Este subalgoritmo “”Forma_de_pago” deberá colocarse antes del que lo invoca o sea Islas. Se asignarán ejercicios adicionales para esta sección, hasta después de haber obtenido

familiaridad con una útil herramienta llamada Diagrama Jerárquico de Procedimientos, que

se presenta a continuación:

6.3. DIAGRAMA JERARQUICO DE PROCEDIMIENTOS (DJP) Cuando se van a utilizar subalgoritmos o procedimientos, el hecho de colocarlos en

determinado orden puede crear confusión, se hace útil entonces emplear un…

Los Diagramas Jerárquicos no se deben confundir con los Diagramas de Flujo, se ilustrará

su uso, aplicándolos a los ejemplos realizados con anterioridad.

Ejemplo 6.8 (DJP, Menús, calculadora) Elaborar el Diagrama Jerárquico de Procedimientos (DJP) del Ejemplo 6.2.1 (Calculadora)

Principal

Pantalla_Menu Sumar Restar

Observación 6.3.1 El Diagrama Jerárquico de procedimiento ilustra los

subalgoritmos utilizados y la relación (jerarquíca) de invocación por el programa o

subalgoritmo principal o por otros subalgoritmos, además es una gran ayuda para

colocarlos físicamente en el orden correcto, es decir:. de abajo hacia arriba y de

izquierda a derecha

Diagrama Jerárquico procedimientos (DJP), este consiste en colocar los nombres de los

procedimientos (en rectángulos) en la jerarquía de su invocación (mediante líneas

rectas), lo cual da una idea del orden físico en que irán colocados éstos en el algoritmo

o programa principal.

Page 265: Universidad Tecnologica Centroamericana

______________________________________________________________________ 251

Se puede observar que el programa principal invoca a estos tres subalgoritmos, y aunque lo

haga de manera repetitiva, solamente se dibujarán una vez.

El orden físico en que se coloca los subalgoritmos será de abajo hacia arriba y de izquierda

a derecha, en la forma en que están apuntando las flechas

• Subalgoritmo Pantalla_menu

• Subalgoritmo Sumar

• Subalgoritmo Restar

• Algoritmo o procedimiento Principal

Además un principio general es que el subalgoritmo llamado debe estar colocado arriba del

que lo invoca.

Ejemplo 6.9 (DJP, Menús, Agencia Turismo Islas) Elaborar el Diagrama Jerárquico de Procedimientos (DJP) del Ejemplo 6.6 (Agencia de

turismo)

La idea de las invocaciones la tenemos en el algoritmo 6.6b (pág. 246)el Principal

Luego el orden es:

• Subalgoritmo Pantalla_Menu

• Subalgoritmo Islas

• Subalgoritmo Mexico

• Subalgoritmo Madrid

• Subalgoritmo Reporte

• Algoritmo principal o programa principal

Principal

Pantalla_Menu Islas Madrid Mexico Reportes

Page 266: Universidad Tecnologica Centroamericana

______________________________________________________________________ 252

Ejemplo 6.10 (DJP, Menús, Agencia Turismo Islas, Reporte, Forma_pago) Elaborar el Diagrama Jerárquico 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

Luego el orden es:

• Subalgoritmo Forma_de_pago

• Subalgoritmo Pantalla_Menu

• Subalgoritmo Islas

• Subalgoritmo Mexico

• Subalgoritmo Madrid

• Subalgoritmo Reporte

• Algoritmo principal o programa principal

Observación: el subalgoritmo Forma_de_pago, solamente se coloca una vez, a pesar de que

es invocado o llamado 3 veces, además observa que debe ir antes de los subalgoritmos que

lo llaman.

Ejemplo 6.11 (DJP, Menús, Agencia Turismo Biosfera, mas subalgoritmos) La Agencia de turismo “Los Viajeros”, realiza excursiones turísticas, desea un seudocódigo

para determinar cuanto tiene que pagar cada cliente. Las excursiones que se ofrecen son las

siguientes:

Principal

Pantalla_Menu Islas Madrid Mexico Reportes

Forma_de_pago Forma_de_pago Forma_de_pago

Page 267: Universidad Tecnologica Centroamericana

______________________________________________________________________ 253

Todas las excursiones incluyen transporte y hospedaje.

En caso que el grupo incluya más de 3 personas, el precio por excursión 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 seudocódigo deberá calcular el ingreso según el tipo de excursión, ingreso total de

la empresa.

Nota: Diseñar el DJP a utilizar

Solución

Se dará una solución parcial a este ejercicio, el algoritmo principal tendrá la misma forma

Típica 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. Además nos auxiliaremos del

DJP

TIPO DESCRIPCION Precio X Grupo de 3 personas

1 ISLAS DE LA BAHIA L. 5000.00

2 RUINAS DE COPAN L. 7000.00

3 BIOSFERA DEL RIO PLATANO L. 6000.00

Principal

P_M Bahia Bios Copan

P_extra Comida Comida Comida P_extra P_extra

Page 268: Universidad Tecnologica Centroamericana

______________________________________________________________________ 254

Se puede ver que, cada Paquete turístico está llamando a los mismos dos subalgoritmos

P_extra y Comida, estos deben diseñarse 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 7000 --Costo por 3 personas

P_extra -- Invoca dos subalgoritmos

Comida

escriba “Total a pagar Lps” , Costo

Ing_copan Ing_copan + costo --Acumula esta venta

escriba “Teclee <<Enter>> para continuar”

lea

Final

Similarmente para el subalgoritmo Bahia

Inicio (Bahia)

Limpia_Pantalla

costo 5000 -- Costo por 3 personas

P_extra -- Invoca dos subalgoritmos

Comida

escriba “Total a pagar Lps” , Costo

Ing_bahia Ing_bahia + costo --Acumula esta venta

escriba “Teclee <<Enter>> para continuar”

lea

Final

Queda al lector el diseño 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

Page 269: Universidad Tecnologica Centroamericana

______________________________________________________________________ 255

Inicio (P_ext)

Escriba “Ingrese el numero de personas en la excursión”

Lea N_per

Si N_per >3

Entonces

Caso OPCION

1, 2 : Costo costo + (N_per-3) * 1000

3 : costo costo + (N_per-3) * 1400

Sino nulo

Fin caso

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 : Costo costo + Per_comi * dias * 100

2 : costo costo + Per_comi * dias * 150

Sino nulo Fin caso

Fin si Final Otra manera de hacerlo sería ir calculando costos por rubro para después sumar todos

estos en el algoritmo del paquete respectivo ejemplo:

Page 270: Universidad Tecnologica Centroamericana

______________________________________________________________________ 256

Inicio (P_ext)

Escriba “Ingrese el numero de personas en la excursión”

Lea N_per

Si N_per >3

Entonces

Caso opcion

1, 2 : Precio_Ext 1000

3 : Precio_Ext 1400

Sino nulo

Fin caso

Costo_Ext (N_per-3) * Precio_Ext

Sino Costo_Ext 0

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 Per_comi * dias * precio_comida

Sino Costo_comida 0

Fin si Final En el paquete turístico respectivo se calcula el costo así:

Page 271: Universidad Tecnologica Centroamericana

______________________________________________________________________ 257

Costo 5000 + Costo_Ext + Costo_comida ó

Costo 7000 + Costo_Ext + Costo_comida etc.

Por otro lado el subalgoritmo REPORTE es semejante al diseñado en el Ejemplo 6.6

mostrado en el Algoritmo 6.6d (pág. 248). Para finalizar se muestra el algoritmo principal:

Inicio Ing_bahia 0.0, Ing_copan 0.0, Ing_bios 0.0 (1)

Repita (2) Pantalla_Menu (3)

Caso OPCION (4) 1: Bahia (5) 2: Copan (6) 3: Bios (7) Sino: nulo (8) fin caso (9) hasta que OPCION = 4 (10)

Reporte (11) Final (12)

Recapitulando y considerando el DJP diseñado 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.- Diseñar el DJQ del Algoritmo 6.1.1.b

2.- Diseñar el DJP de los Ejercicios 6.1 inciso 2 y 3, pág.233.

3.- Ejercicios selectos del Apéndice C, incisos del 14 al 16, pág.300.

4.- Ejercicios selectos del Apéndice C, incisos del 17 al 20, pág.300-302.

5.- Ejercicios selectos del Apéndice C, incisos del 21 al 23, pág. 302-304.

Page 272: Universidad Tecnologica Centroamericana

______________________________________________________________________ 258

6.4 Arreglos Unidimensionados

Como se estudiará más 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

más 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 colección de casillas de memoria, en las cuales el orden de los elementos es

importante:

Para distinguir las distintas posiciones del arreglo se “indexan”, es decir, a la variable X se

le coloca un Índice o número entero entre paréntesis

X(1) X(2) X(3) X(4)

Arreglo X

Observación 6.4a Las aplicaciones de los arreglos son diversas, una de éstas se

estudiarán más adelante, en el Ejemplo 6.16 (pág. 268) y es cuando una lista de valores

leídos Z son procesados, y posteriormente se necesitan para otra aplicación. 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 conservarán en casillas de memoria

diferentes los distintos valores leídos, pudiéndose utilizar éstos nuevamente.

Un arreglo es un conjunto de variables con el mismo nombre y el mismo tipo de dato.

También un arreglo es una estructura conveniente para almacenar elementos datos

continuos, homogéneos y ordenados; continuos porque físicamente uno está próximo al

otro, homogéneos pues los datos son del mismo tupo y ordenados porque se accesa cada

dato a través de un índice.

Page 273: Universidad Tecnologica Centroamericana

______________________________________________________________________ 259

Se pueden realizar las distintas operaciones, esto se puede confirmar haciendo la

siguiente…

Prueba de escritorio X (1) 10 I 2

X(i) 2 * X(1)

X(i+1) X(1) + X(2)

X(4) 5 * X(i – 1)

Lea X(3) Dato 6

Escriba X(I +1)

Memoria: Salida

O en forma equivalente para el arreglo X X(1) 10

X(2) 20

X(3) 30 6

X(4) 50

Haciendo una analogía 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

Número índice, que corresponde al de un apartamento, así Riz (4) corresponderá el

apartamento 4. Si se tratara de las contribuciones de 3 socios, contribución (2), es la

contribución del segundo socio.

X(1) X(2) X(3) X(4) I 10

20 30

6 50 2

6

Observación 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

Page 274: Universidad Tecnologica Centroamericana

______________________________________________________________________ 260

EJERCICIOS 6.4 Dado el siguiente arreglo B: Memoria

B(1) B(2) B(3) B(4) B(5) B(6)

8

10 -3 2 4 0

Hacer la prueba de escritorio de cada uno de los siguientes incisos: a.) escriba B(6) b) I 25

X B(5) X B (i-23) escriba X escriba X

c) X 3 d) I 1

Y 8 Y B(i) B(Y-3) x + y B(y-4) 3 escriba B(3) escriba B(3) escriba B(5)

6.4.1 Operaciones con Arreglos Para la lectura de 3 elementos del arreglo X (arreglo de longitud 3), inicialmente podríamos

pensar en el siguiente algoritmo

Inicio

Lea X(1)

Lea X(2)

Lea X(3)

Final

… pero si el arreglo tiene muchos elemento este método no resulta práctico, 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 Capítulo 4 se vio que la secuencia típica del

índice general es: 1, 2, 3, 4, 5 . A continuación se ilustrará con un ejemplo, como se

combinan los Arreglos con el Bloque Para.

Page 275: Universidad Tecnologica Centroamericana

______________________________________________________________________ 261

Ejemplo 6.12 (Arreglos, Leer un arreglo de longitud N)

Diseñar un algoritmo para leer el arreglo A de longitud N

Solución:

ESTRATEGIA

(N+1, números)

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: Salida NO hay

Arreglo X

Vale decir que se pueden usar variantes para la representación en la Memoria de los

elementos de un Arreglo como ser:

N i X(1) X(2) X(3) X(4) X(5) 4 8

-4 0 7 5 1 2 3 4 5 6

Page 276: Universidad Tecnologica Centroamericana

______________________________________________________________________ 262

a)

b) O en forma equivalente para el arreglo X X

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, d) Y finalmente solo el Nombre y los índices escribiendo Variable e índices X

X(1) 4 1 4

X(2) 8 2 8

X(3) -4 3 -4

X(4) 0 4 0

X(5) 7 5 7

Ejemplo 6.13 (Arreglos, manipulación, lectura, cálculos, escritura) Diseñar 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 Solución

ESTRATEGIA (4 números) (5 números)

Entrada Arreglo A Salida Arreglo A

Prom

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

Page 277: Universidad Tecnologica Centroamericana

______________________________________________________________________ 263

• 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 Programación, así introduciremos mensajes amistosos en lectura e

impresión de los elementos del arreglo, entonces diseñaremos la impresión de los

letreros:

• A( 1 ) =___ lectura ó A( 1 ) = 10 escritura

Observe que lo que está en Negrillas son literales, lo demás son variables

Inicio

S 0

Para i 1, 4 haga

escriba “A( ” Al usuario se le pedirá la información así: escriba i A( 1 ) =__ se teclee el valor(lea)

escriba “ ) = ” lea A(i)

S s + A(i)

Fin para

Prom S / 4

Escriba “El arreglo leido es: ”

Para i 1, 4 haga

escriba “A( ” El usuario mirará la información así: escriba i A( 1 ) = 10 se escribe el valor

escriba “ ) = ”

escriba A(i)

fin para

escriba “El promedio de los elementos es: ”

escriba Prom

Final

Page 278: Universidad Tecnologica Centroamericana

______________________________________________________________________ 264

A continuación se muestra la prueba de escritorio de este algoritmo con una salvedad: en

las salidas no escribiremos los rótulos amistoso diseñados previamente, pues da lugar a

confusión

PRUEBA DE ESCRITORIO

Datos: 5, 4 , 7, -4,

Memoria: Salida

Arreglo X

Ejemplo 6.14 (Arreglos, elemento mayor y su posición)

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 apéndice E, Ejemplo elemento mayor de una lista de números)

ESTRATEGIA (N + 1 números) (2 números)

Entrada N (longitud) Salida Mayor_sueldo

Arreglo Sueldo codigo

Suponiendo que el Arreglo es de longitud 4 se tiene lo siguiente:

Sueldo

1 6000

2 9000

3 10000

4 7000

X(1) 5

X(2) 4

X(3) 7

X(4) - 5

S i Prom 0

5

9

17

12

1 1

2 2

3 3

4 4

5 5

3 El promedio de los elementos es: 3

Se puede ver que el mayor sueldo es 10000 y

corresponde al empleado con índice o código 3, se

continuará con la estrategia para obtener esta respuesta

con un algoritmo apropiado:

Page 279: Universidad Tecnologica Centroamericana

______________________________________________________________________ 265

• Se lee todo el arreglo, como un hábito, si están en memoria los elementos, se

pueden hacer varias y diversas operaciones. En una programación modular es

preferible tener separadas las operaciones, para poder después reutilizar dichos

“módulos”

• 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 posición de este.

Inicio

Lea N

Para i 1, N haga

escriba “Sueldo empleado ” Al usuario se le pedirá la información así: escriba i Sueldo empleado 1 = ___

escriba “ = ” lea sueldo(i)

Fin para

Mayor_sueldo sueldo(1)

Codigo 1

Para i 2, N haga -- Se comparará del segundo elemento en adelante

Si Sueldo (i) > Mayor_sueldo

Entonces

Mayor_sueldo Sueldo(i)

Codigo i Fin si fin para

escriba “El Mayor sueldo es: Lps ”

escriba Mayor_sueldo

escriba “de el empleado con codigo : ”

escriba Codigo

Final

Page 280: Universidad Tecnologica Centroamericana

______________________________________________________________________ 266

PRUEBA DE ESCRITORIO Datos: 4, 6000, 9000, 10000, 7000

Memoria Salida Sueldo

N Mayor_sueldo codigo i 1 6000

2 9000

3 10000

4 6000

9000

10000

1

2

3

1 2 2 3 3 4 4 5 5

4 7000

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 estén, los elementos de estos que posean el mismo índice están

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. Diseñar 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 también el total de la planilla

ESTRATEGIA (2*N + 1 números)

N (longitud) (N +1 números)

Entrada Arreglo PQ Salida Arreglo MENSUAL

Arreglo SQ 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

El Mayor sueldo es Lps 10000 de el empleado con codigo: 3

Page 281: Universidad Tecnologica Centroamericana

______________________________________________________________________ 267

PQ SQ MENSUAL

1 3000 1 1000 1 4000

2 4000 + 2 2000 = 2 6000

3 5000 3 3000 3 8000 Planilla: 18000 Para calcular MENSUAL(1) PQ(1) + SQ(1) 4000 = 3000 + 1000

MENSUAL(2) PQ(2) + SQ(2) 6000 = 4000 + 2000

MENSUAL(3) PQ(3) + SQ(3) 8000 = 5000 + 3000

Observa que en cada fórmula el índice es el mismo, así generalizando la fórmula 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 simultáneamente sus

dos quincenas, en este ejemplo, se usará esta última.

Inicio

Lea N

Planilla 0.0

Para i 1, N haga

escriba “Empleado ” Para el Empleado 1 se leerán las 2 quincenas

escriba i Empleado 2

lea PQ(i) _

lea SQ(i) _

MENSUAL(i) PQ(i) + SQ(i)

Planilla Planilla + mensual (I)

Fin para

3000+1000=4000

Page 282: Universidad Tecnologica Centroamericana

______________________________________________________________________ 268

Escriba “Empleado Mensualidad”

Para i 1,n haga

Escriba i, “ ”, Mensual (i)

Fin para

Escriba “Planilla Lps. ”

Escriba planilla

Final

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 SQ MENSUAL N Planilla I

1 1 1

2 2 2

3 3 3

Salida

El lector deberá encontrar el empleado que obtuvo el menor sueldo y cual es su

Número de empleado (que coincide con el índice), ver Ejemplo 6.14

Ejemplo 6.16 (Arreglos Paralelos. Porcentajes de aportación) Una sociedad anónima tiene m socios. Cada socio ha hecho una aportación de C lempiras.

¿Cuál es el porcentaje de participación de cada socio, PORC?

Empleado Mensualidad

Page 283: Universidad Tecnologica Centroamericana

______________________________________________________________________ 269

ESTRATEGIA

(M + 1 números) (M números)

Entrada N (No. De Socios) Salida Arreglo Porc

Arreglo C (no necesariamente como arreglo)

• Para calcular el porcentaje de aportación 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 Porc

1 400 1

2 1000 2

3 600 3

Total: 2000 Los Porcentajes de aportación son:

Porc(1) (400 / 2000) * 100=20 % ó Porc (1) C(1) / total *100

Porc(2) (1000/ 2000) * 100=50 % Porc (2) C(2) / total *100

Porc(3) (600 / 2000) * 100=30 % Porc (3) C(3) / total *100

Observa que para cada aportante el índice de Porc es el mismo que el de C, entonces la

fórmula del i-ésimo término será entonces: Porc(i) C(i) / total *100

inicio

Total 0 lea M para i 1, M haga

lea C (i) Total Total + C (i) fin para

Page 284: Universidad Tecnologica Centroamericana

______________________________________________________________________ 270

escriba “Socio Porcentaje de aportación”

para j 1, m haga

Porc (j) 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 Porc i Total j

1 400 1

2 1000 2

3 600 3

Salida

En ocasiones el índice de los elementos de un arreglo puede ser un contador, a continuación

un ejemplo para ilustrar estos casos.

Ejemplo 6.17 (Arreglos, Contadores como índices de un Arreglo) Se dan a leer un arreglo E de números enteros positivos de longitud 5, se desea formar el

arreglo PAR con los números pares que contenga éste.

ESTRATEGIA (5 números) Salida Arreglo PAR Entrada Arreglo E

Socio Porcentaje de aportacion

Page 285: Universidad Tecnologica Centroamericana

______________________________________________________________________ 271

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.

E PAR 1 3 1 4

2 4 2 6

3 6 3 10

4 7

5 10

• Como se indicó en la Observación 6.4.2 se utilizará la instrucción rem

Si E(i) rem 2 = 0 el número será par y lo contaremos como tal, nuestra variable CP será

el contador de números 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 0

Para i 1, 5 haga

si E(i) rem 2 = 0

entonces

Cp Cp +1

Par(cp) E(i)

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

Observación 6.4.2: Un número es par cuando al dividirlo entre 2 el residuo es cero, si trabajamos en aritmética entera, todos los lenguajes de programación 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 división es exacta el residuo es 0, por tanto es par.

Page 286: Universidad Tecnologica Centroamericana

______________________________________________________________________ 272

PRUEBA DE ESCRITORIO

Datos 3, 4, 6, 7, 10

Memoria: Salida:

6.4.3 Arreglos y subalgoritmos En varias ocasiones se pueden utilizar subalgoritmos en operaciones que requieren el uso

de arreglos, a continuación 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, pág.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. Diseñar 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 también el total de la planilla

Solución: El lector debe revisar detalladamente el desarrollo del EJEMPLO 6.15, solamente se harán

modificaciones que consistirán en dividir el programa en subalgoritmos.

• Los subalgoritmos a utilizar serán los siguientes:

a) LECTURA Paralela de los elementos i-ésimos de los dos arreglos PQ y SQ.

b) MENSUALIDADES_PLANILLA: Cálculo de la mensualidad de cada empleado y

acumulación de ésta para totalizar la planilla.

c) REPORTE: Impresión de la mensualidad de cada empleado y de la planilla.

E PAR 1 3 1 4 Cp i k

2 4 2 6

3 6 3 10

4 7

5 10

Page 287: Universidad Tecnologica Centroamericana

______________________________________________________________________ 273

• Como es conocido el Número 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 desarrollarán siguiendo la misma lógica mostrada en el Ejemplo 15. Inicio (Lectura)

escriba “Empleado ”

escriba i

lea PQ(i)

lea SQ(i) final

Inicio (Mensualidad_planilla)

MENSUAL(i) PQ(i) + SQ(i)

Planilla Planilla + mensual (I)

Final Inicio(Reporte)

Escriba “Empleado Mensualidad”

Para i 1,n haga

Escriba i, “ ”,Mensual (i)

Fin para

Escriba “Planilla Lps. ”

Escriba planilla

Final Inicio (Principal)

Lea N

Planilla 0.0

Para i 1, N haga

LECTURA

MENSUALIDAD_PLANILLA

Fin para REPORTE final

Page 288: Universidad Tecnologica Centroamericana

______________________________________________________________________ 274

Ejemplo 6.19 (Arreglos paralelos, Subalgoritmos completos, Pagos quincenales, planilla) Variante de los Ejemplos 6.15 (pág.267) y 6.18(pág.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. Diseñar 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 también el total de la planilla.

• Además 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 específica completa, y

que sea un subalgoritmo completo es decir que procese a los N empleados.

Solución:

• Se le solicita al lector el estudio detallado de los ejemplos anteriormente citados.

• Se aplicarán algunas variantes, aprovechando el hecho de que los datos leídos de las

quincenas quedan almacenados en la memoria para posteriores aplicaciones. .Los subalgoritmos a utilizar serán los siguientes:

a) LECTURA: Paralela de dos arreglos PQ y SQ.

b) MENSUALIDADES_PLANILLA: Cálculo e impresión de todas las mensualidades y de

la planilla.

c) MAYOR: Determinación 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 continuación se presenta la definición de cada uno de los subalgoritmos a utilizar:

Page 289: Universidad Tecnologica Centroamericana

______________________________________________________________________ 275

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 Mensualidad”

Para i 1,n haga

MENSUAL(i) PQ(i) + SQ(i)

Planilla Planilla + mensual (I)

Escriba i, “ ”,Mensual (i)

Fin para

Escriba “Planilla Lps. ”

Escriba planilla

Final

Inicio (Mayor)

Mayor mensual(1)

Posición 1

Para i 2, N haga

Si mensual(i) > mayor

Entonces Mayor x(i) Posición i

Finsi

Fin para

Escriba“El mayor sueldo es “, mayor

Escriba“y correponde al empleado No. : “, posicion

final

En el Ejemplo 6.14 (pág 265)

se utiliza y explica este

algoritmo.

Page 290: Universidad Tecnologica Centroamericana

______________________________________________________________________ 276

Se deber recordar que después de definir cada subalgoritmo, se escribe el programa

principal (ya previamente diseñado), desde el cual se realizarán las invocaciones

respectivas.

Ejemplo 6.20 (Arreglos paralelos, Menus, Pagos quincenales, planilla) Variante de los Ejemplos 6.15 (pág. 267-268) y 6.19 (pág.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. Diseñar 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 también el total de la planilla.

Además 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ú.

Figura Solución:

Se le solicita al lector el estudio detallado de los ejemplos anteriormente citados Ejemplo

6.15 (pág. 267-268) y 6.19 (pág.274-275), en el Ejemplo 6.19 (pág.274-275), ya se

diseñaron los subalgoritmos a utilizar, así que solamente se enlistarán.

Menu Principal

1. Mensualidades y planilla 2. Mayor sueldo y a quien corresponde 3. Terminar el programa

Teclee el número de su opción: __

Page 291: Universidad Tecnologica Centroamericana

______________________________________________________________________ 277

a) LECTURA Paralela de dos arreglos PQ y SQ.

b) MENSUALIDADES_PLANILLA: Cálculo e impresión de todas las

mensualidades y de la planilla.

c) MAYOR: Determinación del mayor sueldo y del

empleado a quien corresponde

Siempre con fines didácticos y de acuerdo a lo mostrado en la sección 6.2 de este libro, se

plantea el siguiente algoritmo:

Inicio (Principal)

LECTURA

Repita

Pantalla_Menu

Caso opcion

1: MENSUALIDADES_PLANILLA:

2: 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

Page 292: Universidad Tecnologica Centroamericana

______________________________________________________________________ 278

Este ejemplo tiene limitaciones, las lecturas se tienen que realizar antes de proceder a otras

opciones, además no es posible escoger la opción 2 sin antes .haber ejecutado la opción 1,

aun así se escogió este ejemplo con fines didácticos y considerando que se pueden realizar

validaciones del mismo.

EJERCICIOS 6.5 1.- Diseñar un algoritmo para la siguiente situación:

En la ferretería “Clavo de oro” cuentan con 10 artículos estrella de los cuales se

desea saber su inventario en Lps y el inventario total de la ferretería, para ello se

cuenta con la siguiente información:

COD Arreglo de codigos de los productos

UNIDADES Arreglo de Unidades por producto

PRECIO_U Arreglo de los precios unitarios por producto

INV_PROD Se deberá crear un arreglo de inventario por producto Lps

INVENTARIO Inventario total, este es un número

2.- Se tiene un arreglo de tamaño N cuyos elementos son ceros y unos. Elabore el

seudocódigo para que coloque los “ceros” primero, y los “unos” después.

3.- Ejercicios sobre Arreglos en el Apéndice D (pág.305-306) de este libro, incluyendo

el ejercicio No.16 pues se requieren subalgoritmos con Menús.

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 académica (promedio mayor o igual que 90).

NOTA: Utilice menús y arreglos.

Page 293: Universidad Tecnologica Centroamericana

__________________________________________________________________

279

APENDICE A I. Escribir el Análisis 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 números, que imprima la suma, el producto, la diferencia y el cociente de ambos números.

2. Escriba un programa que acepte como entrada el radio de un círculo e imprima su diámetro,

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 = 22 )12()12( yyxx −+−

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 deducción de l RAP-FOSOVI consistente en el 1.5% del salario bruto, la deducción 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 fórmula para su volumen es:

Volumen = ba 2

34π

Hacer un programa que acepte como entrada el valor de a y b y que calcule el volumen.

6. Un estudio empírico ha mostrado que la relación entre volumen y presión para vapor sobrecalentado es: Presión = 4.11000 −v donde v es el volumen. Hacer un programa para calcular la presión.

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 artículo vendido y la cantidad de dinero entregada por el cliente,

calcule e imprima el cambio que debe entregársele al mismo.

9. 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.

10. 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.

11. Se emplean varios métodos para depreciar bienes de capital, uno de ellos es el método de

Balance Disminuido. El valor del artículo al final del año (n) es: Valor = nrvo )1( − donde vo es el valor inicial , r es la tasa de depreciación y n el año.

Haga un programa para calcular dicho valor ingresando vo, n y r.

12. Una persona desea determinar cuanto tiene que gastar en un viaje de cierta cantidad de kilómetros, considerando que su vehículo gasta un número dado de kilómetros/galón. El precio

Page 294: Universidad Tecnologica Centroamericana

__________________________________________________________________

280

de la gasolina es de L. 45.00. Se leerá el número de kilómetros a recorrer y el número de kilómetros que recorre el vehículo por galón. Nota: verificar que las “unidades” de sus fórmulas sean congruentes.

13. La oficina de admisiones de un instituto tecnológico, desea calcular cuanto tiene que pagar

un estudiante anualmente si el precio de la matrícula 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.

14. 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.

ESTRUCTURAS DE DECISION

15. La densidad de una sustancia esta dada por la fórmula 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.

16. 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.

17. 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 expresión “NO APROBADO” en caso contrario.

18. Determinar e imprimir si un número es positivo, negativo o cero. 19. Calcular el precio del billete ida y vuelta en ferrocarril, conociendo la distancia del viaje de ida

y el tiempo de estancia. Se sabe además que si el número de días de estancia es superior a 7 días y la distancia total (ida y vuelta) es superior a 800 Km., el billete tiene una reducción del 30%. El precio por kilómetro es de L. 0.17. El costo por día de estancia es de Lps 900.00

20. 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 razón de 1.5 veces la hora ordinaria.

21. Dados los valores de p, q, determine si los mismos satisfacen la siguiente expresión: p³ + q³ - 2 * p² < 680 ESTRUCTURAS DE REPETICION 22. Elaborar el desglose repetitivo para los ejercicios de la primera sección de estructuras secuenciales indicados: a) 4 b) 8 c) 9 d) 10 Utilizar centinelas apropiados. 23. Elaborar el desglose repetitivo para los ejercicios de la sección de estructuras de decisión

indicados: a) 16 b) 17 c) 20 Utilizar centinelas apropiados.

Page 295: Universidad Tecnologica Centroamericana

__________________________________________________________________

281

24. Se desea elaborar un programa para calcular la nota final de cada uno de los estudiantes matriculados en un curso de programación I. Durante el curso se dan tres exámenes ponderados a 15, 20 y 25, un acumulativo que consta de tres partes: un trabajo de investigación 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.

II A continuación se presenta la seudocodificación para algunos problemas de esta guía con el

objetivo de ilustrar el estilo adoptado en clase, además se solicita realizar la prueba escritorio con los datos indicados:

25. Seudo código para problema 2 de estructuras secuenciales

Inicio lea n1

lea n2 datos1: 3, 5

suma←n1+n2 datos2: -1, 10

resta←n1-n2

mult←n1*n2

escriba suma

escriba resta

escriba mult

final

26. Seudo código para problema 16 de Estructuras de Decisión

Inicio Lea sueldo

Lea nombre datos1: 800, Jose

Si sueldo <1000 datos2: 2000, Pedro

entonces aumento←sueldo * 0.15 Sino aumento←sueldo * 0.12 Fin si

Nvo_sueldo←sueldo + aumento

escriba Nombre

escriba Nvo_sueldo

final

27. Se presenta el seudocódigo para problema 23 que es el ejercicio 16 hecho repetitivo de Estructuras de Repetición y se le solicita que realice la prueba de escritorio con los siguientes datos:

Las decisiones contienen: si entonces sino fin si

Page 296: Universidad Tecnologica Centroamericana

__________________________________________________________________

282

Inicio DATOS:800, Jose, 2000, Pedro , 3500, Marcos, 0, 5000, Juan

lea sueldo mientras sueldo ≠ 0 haga

lea nombre

si sueldo < 1000 entonces aumento←sueldo*0.15 sino aumento←sueldo*0.12 fin-si Nvo_sueldo←sueldo + aumento

escriba Nombre

escriba Nvo_sueldo

lea sueldo

fin-mientras 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

fin mientras escriba “Fin de dia”

final

La estructura de repetición contiene mientras C haga fin mientras al final

La solución está al final de este Apéndice

Page 297: Universidad Tecnologica Centroamericana

__________________________________________________________________

283

29. Prueba de escritorio con los siguientes DATOS: 1,3,6,2,2,1,1,4,0,9

Inicio 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 lea NUM fin mientras escriba “Fin de Programa” final III. Elaborar los algoritmos de los ejercicios :

30.- a) 34, 7, 10 b) 15, 17, 20 c) 23, 24 IV. Para los siguientes ejercicios: Elabore un Plan de análisis resumido (Resumen del análisis

completo) , el pseudocódigo 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 centésimas. Por otra parte, la distancia que recorren, se expresa en metros. Calcule la velocidad de los participantes, en Kilómetros por hora.

32. El número de sonidos emitidos por un grillo en un minuto (N), es una función de la temperatura. Como resultado de esto, es posible determinar el nivel de la temperatura haciendo uso de un grillito como termómetro. La Fórmula para la función es: T = N / 4 + 40

Dado N calcule la temperatura aproximada.

La solución está al final de este Apéndice

Page 298: Universidad Tecnologica Centroamericana

__________________________________________________________________

284

33. Una empresa desea calcular la comisión 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.

34. Una empresa desea obtener el 40% de ganancia sobre el costo en la venta de sus productos.

Dado el costo unitario y el número 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.

35. En una agencia de alquiler de automóviles, al proporcionarle al computador el número de días

que fue alquilado el automóvil y él numero de kilómetros recorridos; calcular el total a pagar por el cliente si por cada kilómetro se pagan L. 0.75, L. 400.00 por cada día, 10% de impuesto y además se paga L. 800.00 por seguro.

ESTRUCTURAS DE DECISION:

36. Dados la categoría y el sueldo de un trabajador, calcule el aumento correspondiente teniendo en cuenta la siguiente tabla. Imprima la categoría del trabajador y su nuevo sueldo.

CATEGORIA AUMENTO

1 15%

2 10

3 8

4 7 37. Un grupo de personas dedicadas al negocio de lavado de automóviles, necesita un programa

para que determine cuanto tiene que pagar cada cliente de acuerdo a la siguiente tabla de servicios:

TIPO DE SERVICIO PRECIO

1. – LAVADO EXTERIOR Lps. 25.00

2. - LAVADO INTERIOR Lps. 30.00

3. - LAVADO EXTERIOR E INTERIOR Lps. 35.00

4. - LAVADO DE MOTOR Lps. 40.00 Además de los servicios, se ofrece un descuento del 7% si se llevan dos o más automóviles. Se proporcionara al computador, el Tipo de servicio y No. de automóviles, calcular el total a pagar por el cliente.

38. Una distribuidora de artículos vende al por mayor y tiene tres tipos de tarifas:

• TARIFA A:Si se compran de 1 a 99 artículos, el precio de cada uno es de L. 150.00 • TARIFA B:Si se compran de 100 a 499 artículos, el precio de cada uno es de L. 145.00 • TARIFA C: Si son 500 o mas artículos, el precio de cada uno es de L. 140.00

Se lee el número de artículos (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.

Page 299: Universidad Tecnologica Centroamericana

__________________________________________________________________

285

39. Se leerá el sueldo por hora y horas trabajadas por semana por un empleado, y se necesita conocer la cuota de la deducción y salario neto. La deducción es calculada de acuerdo al salario bruto mensual. Si el salario bruto es menor de L. 600.00 no existe deducción. Si el salario bruto mensual esta entre L. 600.00 y L. 1000.00 la deducción es fija de L. 25.00; Sin embargo, si el salario es mayor a los L. 1000.00 la deducción es de un 7.5% del salario.

40. En una tienda efectúan un descuento a los clientes dependiendo del monto de la compra. El

descuento se efectúa con base al siguiente criterio: • 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. 41. Calcular el valor de la función F de acuerdo a las siguientes condiciones:

f= 10 + el doble de x/360 si x <= 100 f= 25*x/3 + triple de x si 100 < x <= 350 f=x + 3*x+100 si x > 350

42. En una cafetería se venden básicamente 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. Además se ofrece una jarra de refresco gratis si el grupo es de mas de tres personas. Si se proporciona el código de la comida (1, 2 o 3) y el número de personas en el grupo, determinar el total a pagar por el grupo, e imprimir el mensaje "Jarra Gratis" cuando sea necesario.

43. Una tienda que se dedica a la venta de electrodomésticos realiza la mayoría de las ventas al

crédito. Debido a la tardanza con que sus clientes realizan los pagos, la tienda ha decidido cobrar un 2% de interés diario por mora por 5 días o menos de retraso, y 5% diario por mas de 5 días. Si se proporciona al computador el monto del préstamo y los días de retraso calcular el cargo por mora.

44. En un cierto país el impuesto que se debe pagar por los artículos 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%. Diseñe un programa que lea el costo básico de un artículo y calcule su precio total. Precio total =precio básico + impuesto

45. Un contador necesita un programa para que le calcule el gasto por depreciación anual de ierto

equipo de acuerdo a la siguiente tabla de depreciación:

TIPO DE EQUIPO DEPRECIACION

1 4 Años

2 5 Años

3 7 Años

4 10 Años

Page 300: Universidad Tecnologica Centroamericana

__________________________________________________________________

286

La depreciación anual se calcularía dividiendo el valor del equipo entre los años que este se deprecia según la tabla anterior. Se proporcionará al computador el valor del equipo, calcular la depreciación anual.

NOTA: En los ejercicios en donde hay clasificaciones, se recomienda utilizar Arboles de decisión con Decisiones Anidadas ya que en el caso de clasificar variables discretas (valores como 1, 2, 3, etc.) facilita la introducción 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 programación I. Durante el curso se dan tres exámenes ponderados a 15, 20 y 25, un acumulativo que consta de tres partes: un trabajo de investigación 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 : Aumento 15%

• Si el sueldo está comprendido entre L. 1000.00 y L. 2,500.00 inclusive : Aumento 10%

• Si el sueldo es mayor a L. 2500.00 : Aumento 8%

Se debe imprimir el nombre y el nuevo sueldo del trabajador.

48. Hacer repetitivos los ejercicios: a) 32 b) 33 c) 34 d) 37 e) 40 f) 42

49. En un parque de juegos infantiles la entrada para niños mayores de 10 años es de L. 8.00 y

L. 5.00 para menores de 10. Si el grupo incluye 2 o más niños, 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 núero de niños que entran, la edad en caso que sea solamente uno y el número de adultos, determinar el total a pagar por el grupo.

50. La Compañía de luz “Del Centro” desea imprimir los recibos de cobro de los cuentahabientes, en el último período. Por cada cliente se ingresa su nombre, dirección, registro inicial y registro final. El cobro se efectúa en base a la siguiente tabla:

51. Construya un programa que dados como datos el modelo de un vehículo 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:

CONSUMO TARIFA

140 KVH o menos Lps.. 3.20

Los siguientes 170 KVH Lps. 0.15 por KVH

Exceso sobre 310 KVH Lps.0.10 por KVH

Page 301: Universidad Tecnologica Centroamericana

__________________________________________________________________

287

52. En la Universidad se necesita obtener una lista de los alumnos candidatos a la

facultad de Economía, Administración, Contabilidad e Ingeniería en Computación. Las condiciones para ser seleccionado como presunto candidato para entrar a la facultad, varían según la carrera y se presentan a continuación:

Condiciones para facultad de Economía Semestre >= 5 y promedio >= 8.5

Condiciones para facultad de Administración Semestre>= 6 y promedio >=8.8 Condiciones para facultad de Contabilidad Semestre >= 6 y promedio >=8.5 Condiciones para facultad de Computación Semestre >= 6 y promedio >=8.8

Para cada uno de los estudiantes de la universidad, se ingresa su número 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 compañía que se dedica al envío de paquetes, cobra L. 1.80 mas una cantidad basada

en el paquete de acuerdo a la siguiente tabla:

PESO EN LIBRAS PRECIO POR LIBRA

25 O MENOS L. 0.15

45 O MENOS L. 0.25

MAS DE 45 L. 0.35 Hay un cargo adicional de L. 2.00 si el volumen del paquete excede los 15 pies cúbicos. 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 fábrica de automóviles tiene varios empleados trabajando en dos turnos: mañana(0) y tarde(1). Considerando al número de horas semanales trabajadas, se desea calcular el sueldo semanal devengado por cada empleado si se sabe que todos trabajan 5 días a la semana y bajo las siguientes tarifas

• L. 60.00 por hora: turno de la mañana • L. 80.00 por hora: turno de la tarde Además si se pasan de 40 horas semanales, las horas se consideran extraordinarias y se paga a razón de: • 2 veces la hora ordinaria para el turno de la mañana • 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 números enteros no negativos, calcular el mayor y el menor de ellos.

MODELO DESCUENTO

Cutlass 8%

Cavalier 5%

Chevy 6%

Century 9%

Page 302: Universidad Tecnologica Centroamericana

__________________________________________________________________

288

SOLUCION DE PROBLEMAS SELECTOS

No. 28

Memoria: TIPO DIAS RECARGO ADICIONAL TOTAL

1 3 2

-99

10 1 5

100 20 75

15 0

11.25

115 20

86.25

Salida:

No. 29

Memoria Salida:

NUM TIPO SUBTOTAL TOTAL 1 6 2 1 0

3 2 1 4

0 15 60 10 20

1 21 62 11

El total a pagar es 115

El total a pagar es 20

El total a pagar es 86.25

Fin del dia

Es Clase C 1 1 Es Clase B 6 21 Es Clase A 2 62 Es Clase D 1 11

Por razones de legibilidad, no se tacharon valores en la Memoria. Solamente quedarían sin tachar, es decir como valores vigentes las últimas filas de cada casilla que están en negrillas

Page 303: Universidad Tecnologica Centroamericana

__________________________________________________________________

289

APENDICE B I. Elaborar un resumen de análisis y algoritmo en NOLAE para cada uno de los

siguientes ejercicios: 1. Realizar el escrutinio de una elección entre dos candidatos por un número impar de

votantes, con todos los votos válidos. Publicar el candidato ganador y cuantos votos obtuvo cada uno de ellos. Código del candidato A= 0, código del candidato B=1. Marca de fin de datos = 9.

2. En la compañía “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.

3. Se desea elaborar un programa para calcular la nota final para cada uno de los estudiantes matriculados en la clase de Programación I. Durante el curso se dan tres exámenes teóricos ponderados en 15%, 20% y 25% , y los acumulativos prácticos respectivos incluyen : trabajos de investigación, 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 además las siguientes estadísticas: • 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 números reales.

4. Se desea elaborar un programa para calcular la nota final para cada uno de los N estudiantes matriculados en la clase de Programación I. Durante el curso se dan tres exámenes teóricos ponderados en 15%, 20% y 25% , y los acumulativos prácticos respectivos incluyen: trabajos de investigación, tareas y proyectos ponderados en : 10%, 15% y 15%. Para aprobar la asignatura se debe aprobar separadamente la teoría de la práctica es decir, se debe sacar una nota mayor o igual a 36% en los exámenes 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.

Además se solicita la siguiente información: ● 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.

Page 304: Universidad Tecnologica Centroamericana

__________________________________________________________________

290

5. Dados la categoría y el sueldo de varios empleados, calcule el aumento correspondiente teniendo en cuenta la siguiente tabla. Imprima la categoría y el nuevo sueldo de cada empleado.

CATEGORIA AUMENTO %

1 15

2 10

3 8

4 7 Al final se desea un reporte en donde se indique:

• El total a pagar en aumentos de sueldo para cada categoría • Total de empleados en cada categoría • El sueldo promedio por categoría • Total pagado

6. Los dueños de el Carwash "CARRO LIMPIO", necesitan un programa que determine cuanto tiene que pagar cada cliente de acuerdo a la siguiente tabla de servicios:

Además si se llevan dos o más automóviles. se ofrece un descuento del 7% para todos los tipos de servicio. Se proporcionará al computador, el Tipo de servicio y No. de automóviles, calcular el total a pagar por el cliente. Al final indique:

• Total de automóviles 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 día • Total de clientes con descuento.

7. Una distribuidora de artículos "yy" vende al por mayor y tiene diferentes precios según

los volúmenes de compra: • Si se compran de 1 a 99 artículos, el precio de cada uno es de Lps. 150.00 • Si se compran de 100 a 499 artículos, el precio de cada uno es de Lps. 145.00 • Si son 500 o mas artículos, el precio de cada uno es de Lps. 140.00 Se lee el número de artículos 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 diseñe un reporte que Muestre: • La cantidad de artículos vendidos en cada rango. • Total de clientes atendidos. • Ingreso total de la distribuidora al final del día.

TIPO DE SERVICIO PRECIO

1. – LAVADO EXTERIOR Lps. 30.00

2. – LAVADO INTERIOR Lps. 40.00

3.- LAVADO EXTERIOR E

INTERIOR

Lps. 50.00

4. – LAVADO DE MOTOR Lps. 60.00

Page 305: Universidad Tecnologica Centroamericana

__________________________________________________________________

291

• Monto de la venta promedio por cliente.

8. 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 número de artículos 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 diseñe 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 día • Monto de la venta promedio por cliente

9. Un negocio de estacionamiento vehicular ha clasificado los espacios o lotes para

estacionar, de la siguiente manera:

Tipo de Espacio Precio de Pago / hora Precio de Pago/día

1. Fijo bajo Techo Lps. 20.00 Lps. 100.00

2. Fijo sin Techo Lps. 15.00 Lps. 75.00

3. Movible (detrás de otro vehículo) Lps. 10.00 No Hay Diseñe un Algoritmo que haga lo siguiente: 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 día.

b) Calcule e imprima el pago de cada cliente por concepto de estacionamiento. c) Además, al final del día se requiere la siguiente información:

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 día. 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 PRECIO/GALON

Diesel (D) Lps. 25.00

Regular (R) Lps. 35.00

Suprema (S) Lps. 40.00

Especial (E) Lps. 45.00

Page 306: Universidad Tecnologica Centroamericana

__________________________________________________________________

292

Además, si el cliente así lo desea, se da el servicio de lavado del automóvil 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 automóvil es

gratis. Si el consumo de combustible es menor de Lps. 200.00 el costo del lavado es el

normal. Pero la compra en combustible esta entre Lps. 200.00 y Lps. 400.00 inclusive, el

cliente recibe una rebaja en el costo del lavado equivalente al 20 % sobre el exceso a los Lps. 200.00.

Diseñe un algoritmo para un programa que haga lo siguiente:

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. Además 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 automóvil si el cliente lo pidió y el valor total a pagar (suma de ambos costos).

c) Imprima los valores anteriormente calculados.

d) Además, que al final del día brinde la siguiente información:

d.1) El total del ingreso diario del negocio por concepto de venta de combustible, servicio de lavado y el ingreso total.

d.2) También, calcule e imprima el consumo promedio de combustible por cliente.

II. 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 código" lea código Mientras código ≠ 0 haga

escriba "Ingrese numero de personas" lea nper

escriba ”Ingrese tipo de cliente (N/E) :” lea cliente

c_per c_per + nper Caso código 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

Page 307: Universidad Tecnologica Centroamericana

__________________________________________________________________

293

2: total nper*35 ing_2 ing_2 + total

3: total nper*60 ing_3 ing_3 + total

sino : Nulo fin caso

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 solución de este ejercicio está al final de este Apéndice III. Codificar en un lenguaje de programación, los ejercicios del Apéndice 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. Elaborar un resumen de análisis, además un Programa en un Lenguaje de programación para cada uno de los siguientes ejercicios:

13.- Calcular la nota media de N estudiantes 14. 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. Diseñar 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. Además deberá calcular: las comisiones y el sueldo promedio de estos

15. Imprimir los números del 1 al 100 sin proporcionar ninguna entrada. 16. Determinar el mayor de 20 números. 17. Determinar el menor de n números. 18. Elaborar un programa para calcular el factorial de un número entero positivo.

Ej. Factorial de 6, 6! = 1 * 2 * 3 * 4 * 5 * 6 = 720 a. Dado un número entero positivo, determinar el número de docenas contenidas en

él.. Ejemplos: 32 2 docenas 48 4 docenas

19. Dado un número entero positivo, determinar el número de dígitos que tiene e imprimir dígitos de derecha a izquierda o sea las unidades, decenas, centenas etc..

Ejemplos: 164 4 6 1 3 dígitos 23458 8 5 4 3 2 5 dígitos

Page 308: Universidad Tecnologica Centroamericana

__________________________________________________________________

294

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.

21. Elaborar un programa que imprima las siguientes sucesiones:

a) 1, 4, 7, 10, 13, … (50 términos) b) -6, -3, 0, 3, 6, 9,… ( n términos) c) 1, 5, 8, 12, 15, 19, … (25 términos) d) 1/2, -1/4, 1/8, -1/16, … (50 términos) e) 1!, 2!, 3!, 4!, 5!, … ( n términos) f) 3 / 2! , 9 / 3!, 27 / 4!,... (60 términos) g) 0, 1, 1, 2, 3, 5, 8, 13 (80 términos) h) 2/4, 3/9, 4/16… (20 términos)

22. Calcule el valor de S:

a) S = 2 + 4 + 8 + 16 + … ( n términos) b) S = -2 /1 + 4/2 – 6/4 + 8/7 – 10/11 + 12/ 16,... (10 términos) c) S= 2 + 5*3 + 8*4 + 11*5 + 14*6 + ... (n términos) d) S =1! + 2! + 3! + 4! + 5!, … (50 términos)

V. Realizar la prueba de escritorio del siguiente programa en Ada 95

23. 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;

Page 309: Universidad Tecnologica Centroamericana

__________________________________________________________________

295

New_line; Put("La suma total es : "); Put(Sum,0,2,0);new_line;

End Serie;

Nota: la solución de este ejercicio está al final de este Apéndice

VI. Elaborar un resumen de análisis y un Programa en un lenguaje de Programación para cada uno de los siguientes ejercicios:

24. Dada una lista de 200 números enteros positivos entre 1 y 100, encuentre la suma. 25. Una agencia de alquiler de autos desea un programa que le sirva de apoyo al empleado

encargado de atención al cliente. Para el uso del cliente, la empresa cuenta con la siguiente flota de autos:

TIPO DESCRIPCION COSTO Lps. CANTIDAD

1 4 x 4 400.00 5

2 Turismo pequeño 200.00 10

3 Turismo grande 300.00 6

4 Busito 600.00 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 número de veces que se ha alquilado cada tipo de auto.

26. En una cafetería se venden básicamente 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. Además se ofrece una jarra de refresco gratis si el grupo es de mas de tres personas. Si se proporciona el código de la comida (1, 2 o 3) y el número 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 día: El número de personas atendidas, el ingreso por cada tipo de comida, el total de Jarras Gratis dadas a los clientes y el Ingreso total del día

27. En una tienda de equipo de cómputo, “EXCALIBUR S de RL”, se utiliza una computadora

para emitir la facturación a los clientes. A la computadora se le da entrada al nombre del cliente, el código del artículo y la cantidad de artículos que lleva y el precio unitario de cada artículo. Emita la factura incluyendo: Nombre del cliente, precio del artículo, subtotal, impuesto sobre ventas y total a pagar (emita una hipótesis). Para completar el problema anterior, se desea saber el ingreso total del día, así como el Total de impuesto sobre ventas del día.

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 número de pies tablares.

La fórmula es la siguiente: Pies ( Grueso * Ancho * Largo ) / 12

Page 310: Universidad Tecnologica Centroamericana

__________________________________________________________________

296

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 estadísticas: • El monto a pagar de cada cliente • El total de pies tablares que lleva cada cliente • El ingreso total al final del día • El total de pies tablares vendidos al final del día • El total de pies tablares vendidos al final del día de madera de 1" de grueso

29. Se deberá hacer un programa para un supermercado que pregunte para cada cliente: el

precio del artículo, la cantidad de artículos del mismo tipo que lleva y si al artículo se le aplica el impuesto o no. Además deberá permitir que se le indique cuando terminan los artículos 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 también controle el corte de las cajas, por lo que debe ofrecer como salidas el total de ventas del día, y el total de ingresos por impuestos.

VII. Realizar la Prueba de escritorio del siguiente programa, en el cual se encuentran 2

WHILE dentro de otro WHILE 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 solución de este ejercicio está al final de este Apéndice 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,

Page 311: Universidad Tecnologica Centroamericana

__________________________________________________________________

297

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 Ejercicio V Memoria:

N C NUM DEN SUM 10 1

2 3 4 5 6 7 8 9 10

2 4 6 8

10 12 14 16 18 20

1 5

11 19 29 41 55 71 89

109

0.0 0.80 1.35 1.77 2.11 2.40 2.66 2.88 3.09 3.27 3.44

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

Page 312: Universidad Tecnologica Centroamericana

__________________________________________________________________

298

Salida en Pantalla Ejercicio VII Memoria: Salida en Pantalla: CON_A CON_B A B N

3 2 1 0 4 3 2 1 0 5 4 3 2 1 0 6 5 4 3 2 1 0

3 2 1 0 4 3 2 1 0 5 4 3 2 1 0 6 5 4 3 2 1 0

3 4 5 6 7

3 4 5 6 7

0 1 2 3 4

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

aaabbb aaaabbbb aaaaabbbbb aaaaaabbbbbb

Page 313: Universidad Tecnologica Centroamericana

__________________________________________________________________

299

APENDICE C I. VARIANTES DE LA REPETICION Utilizando las diferentes estructuras de programación repetitivas, elaborar los Algoritmos y Programas en Ada 95 (u otro lenguaje de programación) para los ejercicios que a continuación se describen. Ciclo Repita-Hasta 1.- Leer varios números y acumularlos hasta que el total de la suma de los mismos sea mayor a

200, se deberá imprimir la cantidad de números que se leyeron. 2.- Calcular e imprimir el producto de 2 números introducidos por teclado, esta operación se

hará para varios números en forma repetitiva hasta que el usuario decida salirse (Ciclo controlado por respuesta de usuario). Además se deberá imprimir cuantas multiplicaciones se efectuaron y cual fue el producto de la ultima.

3.- Imprimir los primeros 100 términos de la serie Fibonachi

0,1,1,2,3,5,8,13,21….. Ciclo Para 4.- Escriba la suma de los primeros N números enteros pares 5.- Escriba la suma de los primeros N números enteros impares 6.- Escriba la suma que contenga N términos de la siguiente sucesión

S = 1-3/4+5/7-7/10+9/13-11/16…..hasta N términos. 7.- Imprimir los primeros 100 términos de la serie Fibonachi , en la cual a partir de un 0 y un 1

se genera el siguiente número sumando los dos anteriores.

0,1,1,2,3,5,8,13,21….. Ciclo Mientras-Haga 8.- Se lee una secuencia de números positivos para hacer lo siguiente:

a) Calcular el número con mayor valor en la secuencia b) Calcular el número con menor valor en la secuencia c) Calcular el promedio de la secuencia

9.- Imprimir los primeros 100 términos de la serie Fibonachi , en la cual a partir de un 0 y un 1

se genera el siguiente número 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 interés I compuesto

anualmente, entonces después de "N" años, el monto presente de la cuenta esta dada por: A = P(l+i)n

a. Escriba un subprograma para calcular "A". b. Escriba un programa que llame al subprograma del inciso "a" para calcular el interés

total recibido por una persona que deposita "P" dólares en la cuenta.

Page 314: Universidad Tecnologica Centroamericana

__________________________________________________________________

300

11. Se desea un programa que lea una serie de enteros de entrada. Para cada uno deberá imprimir un mensaje que señale si el número es par o no. Utilice un subprograma para determinar sí el número es par o no.

12.- Se desea un programa que utilice un subprograma para ordenar los elementos de un arreglo.

(en orden ascendente ó descendente). 13.- En cierto país el impuesto que se debe pagar por los artículos 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. Elabore un subprograma que calcule el impuesto para un artículo dado. b. Elabore un programa de dado el costo básico llame el subprograma del inciso a para

calcular el imprimir el precio total. 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 sólidos. 1. Una esfera 2. Un cono 3. Una pirámide 4. Un cilindro

El programa deberá utilizar un menú de opciones y un subprograma para una de las opciones.

15.- Dada la categoría y el sueldo de un trabajador se desea calcular el aumento correspondiente

teniendo en cuenta la siguiente tabla.

a) Elabore un subprograma PLUS que calcule el aumento para un trabajador. b) Construya un programa que utilice el subprograma PLUS para calcular el nuevo

sueldo. 16. Elabore un programa que simule una calculadora de bolsillo con las operaciones básicas. 1. Sumar (enteros positivos y cero o enteros negativos) 2. Restar 3. Multiplicar 4. Dividir 5. Raíz 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 pseudocódigo para que muestre un menú de opciones para procesar conversiones

según sea requerido por el usuario. Las conversiones que se pueden realizar son las siguientes:

CATEGORIA AUMENTO 1 15 2 10 3 8 4 7

Page 315: Universidad Tecnologica Centroamericana

__________________________________________________________________

301

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 conversión tuviera un costo de L. 0.40, excepto la tercera conversión que tiene un costo de L. 0.50, determinar cuanto ganaría el programador por el alquilar de su programa.

18. Una empresa que se dedica a realizar excursiones turísticas, desea un pseudocódigo para

determinar cuanto tiene que pagar cada cliente. Las excursiones que se ofrecen son las siguientes:

TIPO DESCRIPICION PRECIO X GRUPO DE TRES PERSONAS

1 ISLAS DE LA BAHIA L. 5000.00

2 RUINAS DE COPAN L. 7000.00

3 BIOSFERA DEL RIO PLATANO L. 6000.00 Todas las excursiones incluyen transporte y hospedaje. En caso que el grupo incluya más de 3 personas, el precio por excursión 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 Río Plátano 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 pseudocódigo deberá calcular el ingreso según el tipo de excursión, ingreso total de la

empresa y el número de personas que tomar el curso de primeros auxilios. 19.- Una tienda de alquiler de videos ha clasificado sus películas de la siguiente manera.

CATEGORIA DESCRIPCION ALQUILER POR DIA

1 DRAMA L. 8.00

2 TERROR L.10.00

3 ACCION L. 9.00 Si la persona ha sido cliente por más de 2 años, se le rebaja L.0.50 por cada día adicional al

primero.

Page 316: Universidad Tecnologica Centroamericana

__________________________________________________________________

302

Las películas de DRAMA y ACCION, son las que contienen más estrenos; si la película alquilaba es estreno el alquiler se incrementa en L. 1.50 por día.

Para las películas ACCION se ofrece un descuento de un 10% siempre y cuando las película

sea rentada un día viernes, sábado o domingo. Elaborar Pseudocódigo, utilizando menús y subrutinas, para que calcule el total a pagar por el

cliente, además se necesita determinar cuantas películas 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 DESCRIPCION ALQUILER POR SEMANA

1 DEPTO. 2 CUARTOS L. 1500.00

2 DEPTO. 3 CUARTOS L. 1800.00

3 CASA 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 turístico del L. 120.00

Elaborar Pseudocódigo, utilizando menús 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 automóviles, ofrece a sus clientes básicamente tres tipos de carros.

TIPO DESCRIPCION ALQUILER BASE

1 TURISMO

L. 1000.00

2 MINI-VAN L. 1500.00

3 TURISMO STATION WAGON 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 día adicional a la primera semana. La agencia también 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.

Page 317: Universidad Tecnologica Centroamericana

__________________________________________________________________

303

El cliente puede optar por realizar el pago con tarjeta de crédito o al contado, en caso que se utilice la tarjeta de crédito 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 pseudocódigo, utilizando menús y subrutinas, para que calcule el total a pagar por el cliente y además el número de autos que se rentaron de cada tipo e ingreso total de la agencia.

22. Una empresa dedicada a la producción de software ofrece a sus clientes aplicaciones

comerciales clasificado de la siguiente manera:

TIPO DESCRIPCION COSTO

1 CONTABILIDAD BASICA L. 1000.00

2 CONTABILIDAD DE COSTOS L. 1500.00

3 CONTABILIDAD AVANZADA L. 2000.00 Las aplicaciones comerciales se venden por número de licencia según el número 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 pseudocódigo, utilizando menús y subrutinas, para que calcule el total a pagar por

el cliente y además el número de licencias que se vendieron de cada tipo e ingreso total de la empresa.

23. Como parte de una campaña motivacional, una empresa ha iniciado un plan de

incentivos económicos 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 bonificación para aquellos empleados con antigüedad mayor a 5 años

c) Una bonificación 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 Incremento sobre sueldo actual. Bonificación por antigüedad A.- Producción 20% L. 0.00

B.-.Administración 25% L.500.00

C.- Ventas 18% 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 seudocódigo utilizando los conceptos

Page 318: Universidad Tecnologica Centroamericana

__________________________________________________________________

304

de subprogramas y menús para que calcule e imprima el aumento otorgado y el nuevo sueldo para cada uno de los empleados, Además como apoyo a la administración se requiere un reporte con los siguientes datos:

a) Total pagado por la empresa por concepto de incrementos por tipo de departamento

b) Total pagado por la empresa por concepto de incrementos por antigüedad

c) Total empleados que cumplieron las metas

d)- Total empleados para cada categoría.

Page 319: Universidad Tecnologica Centroamericana

__________________________________________________________________

305

APENDICE D ARREGLOS 1. Se desea un programa que permita ingresar 100 número en dos arreglos, los primeros 50 en el

arreglo llamado A y los segundos 50 en el arreglo llamado B. Una vez ingresados los números, 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 números deberán ser guardados en el arreglo ORIGINAL. Debe crear un

programa que forme el arreglo INVERTIDO con los mismos números en el arreglo ORIGINAL, pero en sentido inverso.

Ej. INVERTIDO[1] ORIGINAL[30] 3. Se desea guardar una lista de 20 números en un arreglo llamado NOSOTROS. Determinar

cuantos números 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 tamaño n. 5. Se tiene un arreglo de tamaño n cuyos elementos son ceros y unos. Elabore el seudocódigo

para que coloque los ceros primero seguido de los unos. 6. Cuatro arreglos, cada uno de longitud 40, deberán ser formados a partir de 160 números

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 números deberán ser guardados intercaladas en dos arreglos, UNOS y OTROS.

Un arreglo, AQUELLOS, tendra el resultado de la multiplicación de los anteriores de la siguiente manera:

• Primer elemento de UNOS por el último elemento de OTROS • Segundo elemento de UNOS por el penúltimo elemento de OTROS 9. Elaborar un seudocódigo para que guarde en cada celda de un arreglo de tamaño 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 almacén tiene 10 departamentos. Las ventas de cada almacén están almacenadas en 4 arreglos de longitud 10 cada uno. Determine el total de las ventas por departamento, por almacén y de toda la tienda.

11. Una cafetería de gran tamaño ofrece a sus clientes 200 productos totalmente distintos. Como

entrada de datos a la computadora se proporcionará la factura que contiene el código de la comida (1–200) y el precio de venta. Determinar cuantas comidas se vendieron de cada tipo, el ingreso total de la cafetería correspondiente a ese día. Suponer que cada factura corresponde a un cliente.

12. En una ferretería, “FECOSA”, se utiliza una computadora para emitir la facturación a los

Page 320: Universidad Tecnologica Centroamericana

__________________________________________________________________

306

clientes. A la computadora se le da entrada al nombre del cliente, el código del artículo y la cantidad de artículos que lleva. El precio del artículo se obtiene de ubicar el código del artículo en el arreglo PRECIO. El código del artículo corresponde al número del elemento dentro del arreglo. Emita la factura incluyendo precio total del artículo, subtotal, impuesto sobre ventas y total general.

TIP: Para indicar el fin de los artículos se utilizará 0 como código.

13. La Escuela Agrícola “Centro Lenca” nos ha solicitado un programa para controlar la

producción de leche de sus vacas. Se sugiere un arreglo VACA de 30 elementos, donde en cada celda se almacenará el número de litros de leche que produce una vaca. Se desea conocer cual fue el día de mayor producción, cual fue el día de menor producción y cual fue el promedio de producción.

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 producción 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. 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 académica (promedio mayor o igual que 90).

NOTA: Optativo usar menús

17. Modifique el problema 5 de tal forma que el subprograma LECTUDATOS garantice que cada promedio este entre 0 y 100 inclusive.

Page 321: Universidad Tecnologica Centroamericana

__________________________________________________________________

307

APENDICE E VARIANTES EN LA RESOLUCION DE ALGUNOS EJEMPLOS Y ALGUNOS EJERCICIOS CLASICOS En el presente texto, se hace referencia a este Apéndice que presenta ejercicios varios, que son

variantes de los ya desarrollados, o cuya temática no fue abordada en el mismo, pero que se

considera que son convenientes para el lector, por su aplicación en cursos avanzados.

E.1 - Ejemplo 3.12b(Aumentos por categoría, decisiones anidadas, árboles de decisión, repetición)

Ejercicio del Apéndice A, No.36

Dados la categoría y el sueldo de un trabajador, calcule el aumento correspondiente teniendo en cuenta la siguiente tabla. Imprima la categoría del trabajador y su nuevo sueldo.

Categoría Aumento

1 15%

2 10% 3 8%

ESTRATEGIA (Varios) (Varios) Salidas Categoría Entradas Categoría Nuevo_s Sueldo Se necesitará utilizar:

• Decisiones anidadas: ya que el aumento varia según la categoría, se deben hacer

clasificaciones según esta (categoría), para ello, utilizaremos un árbol de decisiones

V Aumento del 15 %

Aumento del 10%

Categoria=1 V

F Categoria = 2

F

Aumento del 8%

• Proceso repetitivo controlado por centinela (categoria o sueldo), escogiendo la categoría

con un valor no posible = 99 (no es 1, 2 o 3)

Condición de repetición Categoria ≠ 99

Page 322: Universidad Tecnologica Centroamericana

__________________________________________________________________

308

Antes de comenzar el ejemplo de escritorio, observe las fórmulas del Ejemplo 3.12 y podrá notar

que la única diferenta en las fórmulas del aumento es solamente el porcentaje, lo demás es igual, así

que se dejará los ramales de las decisiones anidadas lo más simplificadas posible, asignando

solamente el porcentaje propiamente dicho.

1. EJEMPLO DE ESCRITORIO Caso I Caso II Categoría = 2 Categoría = 1

Sueldo = 2,000 Sueldo = 3,000

Porcentaje = 0.10 porcentaje =0.15

Aumento =2,000 * 10 =200 Aumento =3,000 * 0.15 =450

Nuevo_S =2,000 +200 =2,200 Nuevo_S =3,000 +450 =3,450

2. DICCIONARIO DE VARIABLES

2. DICCIONARIO DE VARIABLES

Identificador Descripción Categoria Categoría

Sueldo Sueldo Inicial

Porcentaje Porcentaje de aumento

Aumento Aumento

Nuevo_S Nuevo sueldo

3. FORMULAS Aumento = Sueldo * porcentaje (F-1)

Nuevo_S = Sueldo + Aumento (F-2)

Obsérvece que de las 3 fórmulas que se tenían con el método anterior ahora quedan reducidas a 1

4.RESUMEN DEL ANALISIS

SALIDA: (Varios números) Categoria, Nuevo_s

2 en cada ciclo

ENTRADA: (Varios números) Categoria, Sueldo

2 en cada ciclo

Observación :Note que se asigna el porcentaje de aumento para cada Categoría, así las

fórmulas se reducirán a una: Aumento sueldo * porcentaje

Aumento = Sueldo * 0.15 (Fórmula-1) Aumento = Sueldo * 0.10 (Fórmula-2) Aumento = Sueldo * 0.08 (Fórmula-3)

Estas son las fórmulas convencionales:

Page 323: Universidad Tecnologica Centroamericana

__________________________________________________________________

309

PROCESO: Proceso repetitivo controlado por centinela (Categoría ≠ 99) , en el cual,

para cada empleado se lee la categoría 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 Categoría 2. Proceso

2.1 Mientras Categoría ≠ 99 haga lo siguiente repetidamente

2.1.1 Leer Sueldo

2.1.2 Ver Si Categoría = 1

2.1.2.1V) Asignar 0.15 a porcentaje

2.1.2.2 (F) Ver Si Categoría = 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 (Fórmula-1)

2.1.3 Calcular Nuevo_S (Fórmula-2)

2.1.4 Imprimir “Categoría : ”, Categoria

2.1.5 Imprimir “Nuevo sueldo : ”, Nuevo_S

2.1.6 Leer Categoría 6. PRUEBA DE ESCRITORIO Datos: 2, 2000, 1, 3000, 99 Memoria Salida:

categoría Sueldo porcentaje Aumento Nuevo_S

2

1

99

2,000

3,000

0.10

0.15

200

450

2,200

3,450

categoría 2 Nuevo sueldo 2,200 categoría 1 Nuevo sueldo 3,450

Page 324: Universidad Tecnologica Centroamericana

__________________________________________________________________

310

E.2-Ejemplo 3.13b (Lavado de autos, árbol de decisión ,repetitivo, Apéndice A No. 37) Un grupo de personas dedicadas al negocio de lavado de automóviles, necesita un programa para

que determine cuanto tiene que pagar cada cliente de acuerdo a la siguiente tabla de servicio:

Tipo de Servicio _Precio___

1. Lavado Exterior Lps. 25.00

2. Lavado Interior Lps. 30.00

3. Lavado Exterior e Interior Lps. 35.00

4. Lavado de Motor Lps. 40.00

Además de los servicios, se ofrece un descuento del 7% si se llevan dos o más automóviles. Se proporcionara al computador, el tipo de servicio y el No. de automóviles, calcular el total a pagar por cliente. ESTRATEGIA: ( Varios) Entrada Tipo Salida (Varios)

N_autos Pagos

Se debe tomar en cuenta lo siguiente: • Decisiones anidadas, como los precios varían según el tipo de servicio seleccionado, se deberá

clasificar según 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 fórmulas convencionales solamente

difieren en el precio del servicio brindado, en las decisiones anidadas solamente se asignarán

los valores respectivos, reduciendo así el número de fórmulas:

Precio 25

V

Tipo=1 V Precio 30

F Tipo=2 Precio 35

F V

Tipo =3

F Precio 40

Page 325: Universidad Tecnologica Centroamericana

__________________________________________________________________

311

• Como se mencionó anteriormente, 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 según el N_autos .calcular un

descuento.

si N_autos ≥ 2 (V) se aplicará un descuento del 7 % o del

(F ) 0 % en caso contrario

• Repetición, seleccionando como variable centinela (Valor ficticio de fin de datos) N_autos igual

a cero, condición de la repetición: N_autos ≠ 0

1. EJEMPLO DE ESCRITORIO

Caso I Caso II Caso III

N_autos = 3 N_autos = 1 N_autos = 0

Tipo = 4 Tipo = 2

Subtotal = 3 * 40 = 120 Subtotal = 1 * 30 = 30

Desc = 0.07 * 120 = 8.4 Total = 30

Total = 120 – 8.4 = 111.6

2. DICCIONARIO DE VARIABLES Identificador Descripción

Tipo Tipo de servicio

N_autos Número de autos

Precio Precio de cada uno de los servicios

Subtotal Subtotal

Desc Descuento

Total Total a pagar

3. FORMULAS Subtotal =N_autos * precio (F-1)

Desc = 0.07 * Subtotal (F-2)

Total = Subtotal - Desc (F-3)

Ver Capítulo IV Ejemplo 4.11 simplificaciones al respecto.

Nota que de las 4 fórmulas que se tenían con el método anterior ahora quedan reducidas a 1

Subtotal = N_autos * 25 (F-1) Subtotal = N_autos * 30 (F-2) Subtotal = N_autos * 35 (F-3) Subtotal = N_autos * 40 (F-4)

Fórmulas convencionales

Page 326: Universidad Tecnologica Centroamericana

__________________________________________________________________

312

4. RESUMEN DEL ANALISIS SALIDA: (Varios números) Total

1 en cada ciclo ENTRADA: (Varios números) 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 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 (Clasificación e impresión)

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

Page 327: Universidad Tecnologica Centroamericana

__________________________________________________________________

313

Memoria:

N_autos Tipo Precio Subtotal Desc Total 3 1 0

4

2

40

30

120

30

8.4

111.60

30

Salida En la sección 3.5 se determino el mayor de 3 números utilizando un Arbol de Decisiones, si se trata

de mas de 3 números las comparaciones son difíciles de manejar, se presenta a continuación un

algoritmo para…

Ejemplo E.3 Determinar el mayor de una lista de 4 Números y su posición en la lista. Algoritmo Inicio C o m e n t a r i o s Lea X

Mayor X Se asume que el primer número leído es el mayor

Posición 1 por tanto está en la primera posición

Para i 2, N haga Desde el siguiente número en adelante

Lea X

Si X > mayor Compara si hay otro mayor que el supuesto mayor

Entonces

Mayor X de ser así, ese es el nuevo número mayor

Pos i y también se guarda su posición.

Fin si

Fin para

Escriba “El numero mayor es: “

Escriba mayor

Escriba “su posición en la lista de numeros es: “

Escriba posición

Fina

Total a Pagar:Lps.111.60 Total a Pagar:Lps.30 Muchas Gracias

Page 328: Universidad Tecnologica Centroamericana

__________________________________________________________________

314

Se deja la prueba de escritorio al lector con los siguientes datos: PRUEBA DE ESCRITORIO Datos: 4, 6, 8, 3 Memoria: Salida:

X Mayor posicion I

En este libro se han presentado diferentes maneras de realizar una repetición, por ejemplo: • La controlada por un centinela • Controlada por un contador • El Bloque Para • Controlada por una condición varia (por ejemplo x >200)

A continuación se presenta la controlada POR RESPUESTA DEL USUARIO Ejemplo E.4 Diseñar un algoritmo en el cual, de manera repetitiva, se de cómo entrada el monto de la venta de cada cliente y se le cobre considerando el 12 % de impuesto. Solulción: 1. ESTRATEGIA (Varios) (Varios) Salidas pago Entradas Venta Respuesta (‘N’ ó ‘n’ • 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 carácter para la Respuesta Algoritmo inicio Respuesta ‘S’ -- se inicializa con ‘S’para 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

Page 329: Universidad Tecnologica Centroamericana

__________________________________________________________________

315

EXAMEN CORTO No.1

1.- Dadas las siguientes expresiones, coloque en el espacio en blanco la(s) palabra(s) según aplique la clasificación: Proposición, Proposición Abierta o Ninguna.(12% ) a) Y*(2) +3*X=4 PROPOSICION ABIERTA

b) Este examen esta difícil NINGUNA

c) Programación I no es requisito para ____________ PROPOSICION ABIERTA

d) La mejor Universidad de Honduras es UNITEC NINGUNA

2.- Según las reglas para los identificadores de Variables, indique cual de los siguientes nombres están 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 válida la respuesta. (12%) Si/No Nombre correcto a.- 200Saldo NO Saldo200

b.- Total_pago SI __________________

c.- (mayor’r) NO Mayor_r

d.- Impuesto/ventas NO 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%)

c) Determinar el valor de verdad de ~ p v (r ˆ s) utilizando el método directo (triángulo 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 s(10, -10) : 10 = -10 + 20 r(-10) : (-10) * (-10) = 100

0 = 20 10 = 10 100 = 100 (F) (V) (V)

p r s ~ p r ˆ s ~ p v (r ˆ s) V V V F V V V V F F F F V F V F F F V F F F F F F V V V V V F V F V F V F F V V F V F F F V F V

Page 330: Universidad Tecnologica Centroamericana

__________________________________________________________________

316

~ p v ( r ˆ s )

~ F v ( V ˆ V)

V v V

V 4.- Encuentre el valor de verdad de las condiciones mostradas a continuación, realice

primero las asignaciones y reasignaciones dadas. Utilice el método del triángulo invertido:

4.1.- pago 567 4.2.- bono pago * 0.10 4.3.- total pago + bono 4.4.- bono 45 4.5.- total pago + bono (5%)

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%)

Page 331: Universidad Tecnologica Centroamericana

__________________________________________________________________

317

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 cálculos aritméticos y puede evaluar la

veracidad o falsedad de algunas proposiciones y efectuar operaciones lógicas

2.________________Acción de ejecutar las instrucciones a lápiz, simulando un

computador.

3. _______________Término 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 ejecución del programa

II Para el siguiente desglose haga lo siguiente:

FORMULAS TOTAL VAL * NUM * 2 (F1) TOTAL 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 según F1 2.1.3.2 (F) Calcular TOTAL según 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 fórmulas y datos, realice una prueba de escritorio

para el desglose anterior (20%)

Page 332: Universidad Tecnologica Centroamericana

__________________________________________________________________

318

III. Una empresa dedicada a la fabricación 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 continuación:

Código Descripción Precio (Lps.) 1 Puerta de Pino 600.00 2 Puerta de Cedro 800.00 3 Puerta de Caoba 1300.00

Los códigos de los tipos de puertas son los que se muestran en la tabla. Dicha empresa tiene la siguiente promoción: si el cliente compra 3 puertas o más se otorga un descuento del 20% en el tipo 1 y un 30% en el tipo 2 y 3. Se le pide preparar un análisis 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 código del revelado y el número de rollos a revelar. Se asume que cada cliente solicita revelados del mismo tipo. • Ejemplo de escritorio (5 %) • Diccionario de variables (5 %) • Formulas (5 %) • Resumen del análisis (5 %) • Programa en NOLAE (20 %) (Nota: Usar centinela) (Total 40 %)

Page 333: Universidad Tecnologica Centroamericana

__________________________________________________________________

319

EXAMEN PARCIAL II

Ejercicio #1 (20%)

Responda las siguientes preguntas, muestre su procedimiento cuando sea necesario: 1. ¿Cuáles son los dos tipos de cláusulas (no librerías) 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 sólo pueden almacenar un símbolo

especial, un dígito o una letra. Ejercicio # 2 (30%).

Escriba el seudocódigo de un programa que calcule e imprima el valor de S:

S = 2/3 + 4/6 + 6/9 + 8/12 + ,... (51 términos) Ejercicio # 3 (50%)

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 información que se tiene la provee el Ingeniero de Planta, y se muestra en las siguientes tablas:

Descripción camiseta Yardas Tela /camiseta 1.- Camiseta para dama Tipo Alfa 1.5 2.- Camiseta juvenil Tipo Orion 2.0 3.- Camiseta para caballero Tipo Omega 1.5

Tipo Alfa 0.5

Tipo de Tela Precio por Yarda Alfa Lps 40

Orion Lps 30 Omega 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. Además al final del día se desea la siguiente información:

• 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

Page 334: Universidad Tecnologica Centroamericana

__________________________________________________________________

320

EXAMEN PARCIAL III

EJERCICIO 1 Usando procedimientos; escriba un programa en Ada para determinar si 20 solicitantes pueden optar a un préstamo en una entidad bancaria. Inicialmente se leen los datos para cada solicitante: valor del préstamo, ingreso mensual y valor de otras propiedades. El préstamo será otorgado a los solicitantes con ingreso mensual mayor de Lps. 10,000.00 y que obtengan más 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 préstamo 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 préstamo y total de puntos obtenidos. (IMPRESIÓN) Ejercicio 2 Usando subrutinas y menús hacer un programa en Ada-95 para calcular lo que cada cliente debe pagar por alquiler de teléfono, los precios por minuto y la empresa se describen a continuación: EMPRESA Valor por minuto

1. TELHABLA Lps. 6.00 2. LORATEL Lps. 5.50 3. PERITEL Lps. 3.00

El programa debe solicitar información 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. Además preparar un reporte que muestre lo siguiente:

1. Total de ingresos 2. Total de minutos pagados en LORATEL 3. Total de clientes atendidos

Page 335: Universidad Tecnologica Centroamericana

__________________________________________________________________

321

APENDICE F PRACTICA DE LABORATORIO LENGUAJE DE PROGRAMACION ADA95 INSTRUCCIONES: La presente guía de laboratorio está elaborada para ayudarte en la clase de Programación I, debes seguir las instrucciones descritas. Si tienes alguna duda consulta con tu maestro o tutor. F.1 PRIMER PROGRAMA (concatenación)

Para comenzar a trabajar, debe arrancar su computadora y entrar a Windows Estando en la ventana principal, activa el menú inicio y ubíquese 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 continuación.

(click FILE escoger New) -------------------------------------------DIGITE EL SIGUIENTE PROGRAMA----------------------------

-- NOMBRE : PROMEDIO -- Este programa mediante la asignación, 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;

Page 336: Universidad Tecnologica Centroamericana

__________________________________________________________________

322

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 corrección 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 asignación. 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 instrucción Get(Nota1) por lo siguiente:

Put(“Introduzca la nota 1: “); Get(Nota1); skip_line; -- colocar skip_line después de cada lectura

-- numérica y de tipo caracter. OBS:Después de hacer una modificación a un programa en ADA siempre se deberán “salvar” los

cambios antes de volver a compilar y correr su programa.

F.2

SEGUNDO PROGRAMA (concatenación)

Instrucciones: Compile y corra el programa dado a continuación. Salvelo con el nombre Suma. -------------------------------------------------------------------- -- NOMBRE: SUMA -- -- Este programa calcula la suma de dos números enteros -- los cuales son leídos desde el teclado ------------------------------------------------------------------------------ with Ada.Text_IO, Ada.Integer_Text_IO;

Page 337: Universidad Tecnologica Centroamericana

__________________________________________________________________

323

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; Observación: 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, haciéndolo amistoso. Insertar la siguiente línea : Put(“Teclee un numero: “) antes de Get(x): Insertar Put(Teclee otro numero: “); antes de Get(y); F.3 TERCER PROGRAMA (decisión) Edite y compile el siguiente programa. Sálvelo con el nombre Venta -- NOMBRE: VENTA -- -- Este programa lee la venta de un artículo, 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; --1 use Ada.Text_IO, Ada.float_Text_IO; --2 procedure Venta is --3 Val_venta, Descuento, Nuevo_val, isv, Total : float; --4 Begin --5 Put("Ingrese el valor de la venta: "); --6 Get(Val_venta);skip_line; --7 If val_Venta > 200.00 --8

then --9 Descuento:=Val_Venta*0.2; --10

else --11 Descuento:=Val_Venta*0.1; --12

end if; --13

Page 338: Universidad Tecnologica Centroamericana

__________________________________________________________________

324

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 línea 18 presenta en el Put algunos “PARAMETROS” que significan lo siguiente:

Item : Variable o constante a imprimir Fore : Número de espacios reservados para posicionar los dígitos

ubicados antes del punto decimal y ajustados hacia la derecha. Aft : Número de dígitos ubicados después del punto decimal Exp : Determina la representación exponencial del número.

Si Exp =>0, el número se escribe sin parte exponencial. De lo contrario los números lucen como 1.23E+01, y no son fácilmente legibles.

F.4 CUARTO PROGRAMA (Repetición) 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, además 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 : Float;

Recaudado : Float; --* Ver llamada al final de la pagina begin

Recaudado:=0.0; --para números reales colocar siempre decimales, * --Ver llamada al final del ejercicio…

Put("INGRESE EL KILOMETRAJE: "); Get(Km);Skip_line;

Page 339: Universidad Tecnologica Centroamericana

__________________________________________________________________

325

While Km /=0.0 loop if Km < 100.0 -- Variable float al compararse con una Constante numérica

--a esta se le agrega punto decimal then

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; Observación: 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 sección de declaración de variables de la siguiente manera:

Recaudado : Float:=0.0; Así, la línea de inicialización de la variable (en el cuerpo del programa) Recaudado:=0.0; ya no es necesaria.

Page 340: Universidad Tecnologica Centroamericana

__________________________________________________________________

326

APENDICE G

LISTADO DE LOS EJEMPLOS UTILIZADOS EN LOS CAPITULOS 3 AL 6

Page 341: Universidad Tecnologica Centroamericana

__________________________________________________________________

327

APENDICE G

LISTADO DE LOS EJEMPLOS UTILIZADOS EN LOS CAPITULOS 3 AL 6

CAPITULO 3 Página 3.3 ELEMENTOS EN EL ANÁLISIS DE UN P.O.P. PARTE I 43 Ejemplo 3.1 (Resumen del Análisis, calificaciones) 48 Ejemplo 3.2 (Promedio final de un estudiante) 50 Ejemplo 3.3 (Pendiente e intercepto) 56 3.4 DESGLOSES Y PRUEBAS DE ESCRITORIO 59 3.4.1 DESGLOSES EN SECUENCIA 60 Ejemplo 3.4 (Secuencia, Sueldo neto) 60 Ejemplo 3.5 (Repaso, Secuencia, Venta de dos artículos) 68 3.4.2 DESGLOSE CON INSTRUCCIONES EN DECISION 72 Ejemplo 3.6 (Decisión Venta con descuentos,) 72 Ejemplo 3.7 (Decisión, Boletos Tegucigalpa, San Pedro Sula SPS,) 77 Ejemplo 3.8 (Decisión anidada, Clasificar un número en negativo, cero y positivo.) 81 3.4.3 DESGLOSE CON INSTRUCCIONES EN REPETICION 83 Ejemplo 3.9 (Repetición centinela, Kilometraje) 83 Ejemplo 3.10 (Repetición centinela, Boletos Tegucigalpa, SPS.) 92 3.5 ELEMENTOS EN EL ANALISIS DE UN P.O.P PARTE II 98 3.5.1 DIAGRAMA DE ARBOL DE DECISIONES 98 Ejemplo 3.11 (Arbol de decisiones, Mayor de 3 números,) 98 3.5.2. REPETICION CON DECISIONES ANIDADAS 104 Ejemplo 3.12 (Arbol de decisiones, Repetición centinela, Aumentos por categoría,) 104

Ejercicio del Apéndice A, No.36 Ejemplo 3.13 (Arbol de decisiones, Repetición centinela, Lavado de autos, 108

Apéndice A No. 37) Ejemplo 3.14 (Arbol de decisiones, decisión anidada, variable real, rangos, CI,) 113 CAPITULO 4 119 4.2.1 BLOQUES ESTRUCTURADOS ATOMICOS E

INTRODUCCION A LA NOTACION DE DIAGRAMA DE FLUJO 121 Ejemplo 4.1 (Diagrama de Flujo, Concatenación, Planilla de sueldos) 123 4.4.- ALGORITMOS SEUDOCODIFICADOS CON CONCATENACION 126 Ejemplo 4.2(Nolae, Concatenación, Leer dos números, imprimir suma) 128 Ejemplo 4.3 (NOlae , Decisión, Venta de dos artículos) 129 4.5.- ALGORITMO SEUDOCODIFICADOS CON DECISION 131 Ejemplo 4.4 (Nolae, Decisión, Venta con descuento) 133

Page 342: Universidad Tecnologica Centroamericana

__________________________________________________________________

328

Ejemplo 4.5 (NOlae, Decisión, Boletos Tegucigalpa, SPS) 134 Ejemplo 4.6 (Nolae, Decisiones anidadas, Número negativo, cero positivo) 135 4.6 ALGORITMOS SEUCODODIFICADOS CON REPETICION 136 Ejemplo 4.7 (Nolae, Repetición centinela, Kilometraje) 138 Ejemplo 4.8 (Nolae, Repetición centinela, Boletos Tegucigalpa, SPS) 139 Ejemplo 4.9 (Nolae, Repetición centinela, CI) en mención Ej 3.8 140 Ejemplo 4.10 (Nolae, Decisiones anidadas, Repetición centinela, Lavado de Autos) 142 Ejemplo 4.11 (Nolae, Decisiones anidadas, Repetición centinela, Lavado de Autos,

variante) 143 4.7 DIAGRAMACION DE FLUJO DE ALGORITMOS ESTRUCTURADOS 144 Ejemplo 4.12 (Diagrama de flujo del algoritmo del Ejemplo 4.7

(Repetición centinela,Km.) 146 4.9. - CENTINELAS, CONTADORES Y ACUMULADORES 151 4.9.1 Centinelas 151 Ejemplo 4.13 (Centinela, NOlae, Kilometraje) 152 4.9.2 Contadores 153 Ejemplo 4.14 (Contador) 153 Ejemplo 4.15 (Contadores, Votación entre 2 candidatos.) 154 Ejemplo 4.16 (Conteo de clientes con 20% y 10% de descuento,

referencia al Ejemplo 4.4) 158 4.9.3 Acumuladores 162 Ejemplo 4.17 (Ingreso total, Conteo de Boletos de Tegucigalpa y San Pedro Sula) 163 4.9.4 Repetición controlada por contador 167 Ejemplo 4.18 (Repetición controlada por contador, leer y sumar N números) 169 Ejemplo 4.19 (Repetición controlada por contador, acumuladores,descuentos,

promedios) 172 Ejemplo 4.20 (Repetición controlada por contador, Productorio de N números) 175 CAPITULO 5 ESTRUCTURAS DERIVADAS 179 5.1 ASOCIATIVIDAD DE LA CONCATENACION 179 5.2 VARIANTES Y DERIVADAS DE LA DECISION 181 5.2.1 La decisión abreviada 181 Ejemplo 5.1 (Decisión abreviada, segmento Premio, Apéndice A No.42) 182 5.2.2 Las decisiones anidadas y las decisiones concatenadas 183 Ejemplo 5.2 (Nolae, Arbol de decisiones, el mayor de 3 números) 183 5.2.3 BLOQUE CASO 188 Ejemplo 5.3 (Bloque Caso, Biblioteca.) 190 Ejemplo 5.4 (Bloque Caso, Categorías, repetición controlada por contador, contadores, 193 acumuladores) Ejemplo 5.5 (Lavado de autos, Bloque caso, contadores y acumuladores) 198

Page 343: Universidad Tecnologica Centroamericana

__________________________________________________________________

329

5.3.- VARIANTES Y DERIVADAS DE LA REPETICION 202 5.3.1 Bloque Para 202 5.3.1.1 Bloque Para y su uso con contadores y acumuladores 203 Ejemplo 5.6 (Bloque Para, leer y sumar N números) 203 Ejemplo 5.7 (Bloque Para, contadores, acumuladores, descuentos, ingresos totales) 204 Ejemplo 5.8 (Bloque Para, Bloque Caso, , contadores, acumuladores, Categorías) 206 5.3.1.2 Aplicaciones del Bloque Para, Sucesiones 208 Ejemplo 5.9 (Bloque Para, Sucesión , números pares, inicialización en cero) 208 Ejemplo 5.10 (Bloque Para, Sucesión, números pares, inicialización en 2) 209 Ejemplo 5.11 (Bloque Para, Potencias de 3,) 210 Ejemplo 5.12 (Bloque Para, potencias de 3, signos alternos, ) 212 5.3.1.3 Aplicaciones del Bloque para, Series 213 Ejemplo 5.13 (Bloque Para Serie, suma de pares) 213 Ejemplo 5.14 (Bloque Para, Sucesión, serie, fracciones signos alternos) 215 Ejemplo 5.15 (Bloque Para Serie y Sucesión incrementos alternos) 217 Ejemplo 5.16 (Bloque Para, Factorial) 219 Ejemplo 5.3.2 Bloque “Repita-hasta” 221 Ejemplo 5.17 (Repita-hasta, Suma) 223 Ejemplo 5.18 (Repita-hasta, Kilometraje) 226 CAPITULO 6 229 SUBALGORITMOS, ARREGLOS Y ELEMENTOS DE ESTRUCTURAS DE DATOS 6.1 Subalgoritmos 229 Ejemplo 6.1 (Introducción a los subalgoritmos, Promedio de un estudiante) 229 Ejemplo 6.2 (Subalgoritmos, Promedio de un estudiante) 231 Ejemplo 6.3(Subalgoritmos Promedio de N alumnos) 232 6.2 MENUS, UNA APLICACIÓN DE LOS SUBALGORITMOS 234 Ejemplo 6.4 (Menús, Calculadora) 234 Ejemplo 6.5 (Menús, Agencia Turismo, Islas) 239 Ejemplo 6.6 (Menús, Agencia Turismo, Islas, preguntas en preferencias, contadores,

acumuladores, reportes) 244 Ejemplo 6.7 (Menús, Agencia Turismo Islas, reporte al final) 248 6.3. DIAGRAMA JERARQUICO DE PROCEDIMIENTOS (DJP) 250 Ejemplo 6.8(DJP, Menús, calculadora) 250 Ejemplo 6.9 (DJP, Menús, Agencia Turismo, Islas) 251 Ejemplo 6.10 (DJP, Menús, Agencia Turismo, reporte) 252 Ejemplo 6.11(DJP, Menús, Agencia Turismo, Biosfera, mas subalgoritmos) 252 6.4 Arreglos Unidimensionados 258 6.4.1 Operaciones con Arreglos 260 Ejemplo 6.12 (Arreglos, Leer un arreglo de longitud N) 261 Ejemplo 6.13 (Arreglos, manipulación, lectura, cálculos, escritura) 262 Ejemplo 6.14 (Arreglos, elemento mayor y su posición) 264

Page 344: Universidad Tecnologica Centroamericana

__________________________________________________________________

330

6.4.2 Arreglos Paralelos 266 Ejemplo 6.15 (Arreglos paralelos, Pagos quincenales, planilla) 266 Ejemplo 6.16 (Arreglos Paralelos, Porcentajes de aportación) 268 Ejemplo 6.17 (Arreglos, Contadores como índices de un Arreglo) 270 6.4.3 Arreglos y subalgoritmos 272 Ejemplo 6.18 (Arreglos paralelos, Subalgoritmos i-ésimos, Pagos quincenales,

planilla) 272 Ejemplo 6.19 (Arreglos paralelos, Subalgoritmos completos, Pagos quincenales,

planilla) Variante de los Ejemplos 6.15 y 6.18 274 Ejemplo 6.20 (Arreglos paralelos, Menús, Pagos quincenales, planilla) Variante de los Ejemplos 6.15 y 6.19 276

Page 345: Universidad Tecnologica Centroamericana

__________________________________________________________________

331

BIBLIOGRAFÍA

1.- “Fundamentos de Ada 95”. Autor Eraldo Ventura Panchamé. Co-autora Ing. Rosbinda

Pacheco Banegas, año 2002, UNITEC.

2. “Fundamentos de Programación”, Autor Luis Joyanes A., Luis Rodríguez, Matilde

Fernández a.. Editorial Mc Graw Hill, Segunda Edición, Año 2003

3. Referencia. Metodología de la Programación. Autor Luis J. Aguilar. Editorial McGraw

Hill 1era. Edición.

4. Referencia. “Ada 95 The craft of object oriented programming”. Autor John English

University of Brighton, Editorial Prentice Hall, Edición version 1.0. Año 1997 .

5. “Turbo Pascal con aplicaciones 4.0-6.0.”, México: Grupo Editorial Iberoamérica,

segunda edición , 1992.