Brochures">
Nothing Special   »   [go: up one dir, main page]

Libro Algoritmos

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 141

Diseo Estructurado De Algoritmos

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

OBJETIVO GENERAL
AL FINAL DEL CURSO, EL PARTICIPANTE DISEAR
ALGORITMOS MEDIANTE EJERCICIOS PRCTICOS CON
AYUDA DE LAS DIFERENTES TCNICAS ALGORTMICAS,
CON LA FINALIDAD DE FORMARSE UNA MENTALIDAD DE
PROGRAMADOR.

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

NDICE
TTULO

OBJETIVO GENERAL

NDICE

INTRODUCCIN GENERAL

CONVENCIONES USADAS EN ESTE MANUAL

I. CONCEPTOS BSICOS Y METODOLOGA PARA LA CREACIN DE


SISTEMAS COMPUTACIONALES

INTRODUCCIN
1.1 CONCEPTOS BSICOS PARA LA SOLUCIN DE PROBLEMAS POR MEDIO DE
COMPUTADORAS
1.2 METODOLOGA PARA LA SOLUCIN DE PROBLEMAS POR MEDIO DE
COMPUTADORA
CONCLUSIN

10
11

II. OPERACIONES CON LOS DATOS


INTRODUCCIN
2.1 TIPOS DE DATOS SIMPLES
2.2 TIPOS DE OPERADORES
2.3 IDENTIFICADORES
CONCLUSIN

24
25
27
29
42
47

III. TCNICAS ALGORTMICAS PARA LA SOLUCIN DE PROBLEMAS


INTRODUCCIN
3.1 PSEUDOCDIGO
3.2 DIAGRAMA DE FLUJO
3.3 DIAGRAMA ESTRUCTURADO (NASSI-SCHNEIDERMAN)
CONCLUSIN

48
49
50
55
59
61

IV. ESTRUCTURAS DE CONTROL

63

INTRODUCCIN
4.1 ESTRUCTURAS SECUNCIALES
4.2 ESTRUCTURAS CONDICIONALES
4.3 ESTRUCTURAS CCLICAS
CONCLUSIN

64
66
73
100
130

V. ARREGLOS Y ESTRUCTURAS

132

P.L.I. Carlos Augusto Flores Valerio

16
22

Diseo Estructurado De Algoritmos

INTRODUCCIN
5.1. ARREGLOS
5.2. ESTRUCTURAS
CONCLUSIN

133
134
158
167

VI. MANEJO DE MDULOS


INTRODUCCIN
6.1 MDULOS
CONCLUSIN

168
169
170
178

CONCLUSIN GENERAL

180

BIBLIOGRAFA

182

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

INTRODUCCIN GENERAL
Todos tenemos conciencia de que el xito de una empresa depende de la rapidez, calidad, control de los
recursos, exactitud y otros muchos factores.
Hace tiempo, las empresas ya sean grandes o pequeas, tenan que hacer sus procesos manualmente o
con ayuda de maquinas. Pero a raz de la aparicin de las primeras computadoras, las macroempresas
obtuvieron unas de estas y comenzaron a tener mayor ventaja sobre las dems organizaciones. Con el
paso del tiempo, se crearon computadoras ms pequeas, de menos costo, ms rpidas, lo cual ha
provocado que cualquier persona o empresa pueda adquirir una o ms de estas computadoras.
En la actualidad, muchas empresas realizan sus operaciones por medio de computadoras, por ejemplo
en las fbricas ensambladoras de autos se utilizan robots programados, los cuales se encargan de
montar y soldar las partes que forman el carro; en los supermercados, se utilizan las computadoras
junto con un programa para registrar rpidamente las compras de los clientes, adems de que les ayuda
para llevar el control de su inventario y de sus ingresos entre otras cosas; en los hospitales, se estn
utilizando pequeos robots programados, los cuales se introducen en el cuerpo del paciente para
realizar incisiones, cauterizar, saturar, etc.; este manual, fue elaborado en un editor de textos llamado
Microsoft Word, el cual es un programa de aplicacin diseado especficamente para poder crear y dar
formato a documentos de texto. En fin, podramos continuar enumerando en donde se utilizan las
computadoras y nunca terminaramos.
Sin embargo y afortunadamente, no todas las empresas cuentan con programas o sistemas para llevar el
control de sus actividades y aunque todas las compaas ya contaran con sistemas informticos, estas
necesitan quien se encargue de darles mantenimiento, lo cual nos da un amplio campo de trabajo a
nosotros que pretendemos ser programadores. El que dicho sea de paso, es un empleo muy bien
remunerado.
Este manual, tiene la finalidad de formarte una mentalidad de programador, mediante la elaboracin de
algoritmos utilizando diferentes tcnicas algortmicas. Ya que un programador es decir, la persona que
disea sistemas computacionales, antes de comenzar a interactuar con la computadora tiene que tener
una manera de pensar diferente a las dems personas para poder analizar y resolver problemas basados
en computadoras los cuales debe plasmar en papel.
Para cumplir este objetivo, el manual esta dividido en 6 temas, los cuales tienen una relacin
progresiva:
Tema 1. Conceptos Bsicos Y Metodologa Para La Creacin De Sistemas Computacionales. En este
tema se dan las bases mediante conceptos de que es un sistema computacional, un programador, etc.;
adems, se da a conocer los pasos que se deben realizar para poder implantar un sistema
computacional en una organizacin.
Tema 2. Operaciones Con Los Datos. Todo programa, requiere que se realicen clculos y operaciones
matemticas, por lo cual en este tema se ensean los diferentes tipos de datos, las operaciones que se
pueden realizar con estos y la manera en que la computadora los trata.
Tema 3. Tcnicas Algortmicas Para La Solucin De Problemas. En este tema se dan a conocer tres
tcnicas algortmicas, en las cuales los programadores se basan para posteriormente escribir los
sistemas informticos; basta decir que una de estas tres tcnicas es grfica y el la ms usada.
Tema 4. Estructuras De Control. Este tema, se puede considerar como el ms importante de todos, ya
que se aprender a escribir en papel sistemas computacionales inteligentes, es decir que estos podrn
tomar decisiones propias. Este mdulo es el ms largo de todos, ya que se ve con mucho detalle,
adems de que se plantean varios problemas a resolver.
P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

Tema 5. Arreglos Y Estructuras. Este tema nos plantea mtodos de almacenamiento de datos ms
complejos, los cuales son muy comunes en la actualidad; Al momento de llegar a este mdulo, se debe
de manejar completamente las estructuras de control cclicas.
Tema 6. Manejo de mdulos. En este tema se trata el manejo de la modulacin, lo cual es bsicamente
el dividir nuestros algoritmos en pequeas partes independientes que realizan una o ms tareas
especficas.
Recalcando lo ya anteriormente mencionado, no cualquier persona puede ser programador, esto no
quiere decir que sea muy difcil, es verdad que tiene su grado de complejidad, pero este manual esta
diseado para que le sea fcil a cualquier persona que tenga el inters, tiempo y ganas. Para
posteriormente ser programador, solo bastar buscar un lenguaje de programacin y adaptar nuestros
conocimientos a este.

CONVENCIONES USADAS EN ESTE MANUAL

Nota.

Ejemplo.
Ejercicios.
Cita Textual.
Sugerencia.
Aspecto Crtico.
Evaluacin.

Es una especificacin adicional a la informacin que se esta


planteando, con un contenido importante.
Es la resolucin de un problema paso a paso con el fin de comprender
como se realiza un procedimiento.
Son problemas prcticos a resolver, que se plantean para adquirir un
mejor desempeo y lgica de programador.
En la parte inferior de la pgina se visualizan el autor, libro, editorial y
pas del que se tom textualmente un concepto.
Es una recomendacin que se hace para tener un mejor desempeo al
momento de realizar los algoritmos.
Es un punto muy importante que se debe de tomar en cuenta para
evitar daar el equipo cuando los algoritmos se conviertan en
programas.
Indica que es momento de realizar una evaluacin para comprobar el
nivel de avance al momento. Estas se realizan solo al final de cada
tema, adems de una evaluacin diagnostica y una evaluacin final.

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

CONCEPTOS BSICOS Y METODOLOGA PARA LA CREACIN DE


SISTEMAS COMPUTACIONALES
OBJETIVO

Al finalizar el tema, el participante entender mediante la exposicin del instructor, la


lectura y su opinin, los conceptos bsicos y la metodologa para la solucin de
problemas por medio de computadoras con la finalidad de que posteriormente los
aplique en el diseo de algoritmos.

CONTENIDO
INTRODUCCIN
Conceptos bsicos para la solucin de problemas por medio de computadoras
Metodologa para la solucin de problemas por medio de computadora
CONCLUSIN

INTRODUCCIN
Tal y como se mencion en la introduccin general, se espera que este manual nos ayude a formarnos
una mentalidad y lgica de programadores, pero para lograr esto hay que tener una bases slidas, por lo
cual la importancia de este tema, el cual es muy sencillo pero no sin importancia.
Este tema esta desarrollado de una manera tan sencilla, que esperamos comprendas y te aprendas cada
uno de los conceptos que se te exponen, ya que sin estos es un poco difcil la comprensin de los temas
subsecuentes.
Para que el objetivo del tema se cumpla, se dividi en dos subtemas, en el primero se te dan los
conceptos de programador, sistema de informacin, computadora, entre otros. En el siguiente subtema,
se te dan a conocer todos los pasos que debe realizar un programador para poder implantar un sistema
computacional en una empresa.
Cuando termines con este tema, realiza la evaluacin incluida, la cual es tu punto de comparacin para
saber si continas avanzando o repasas, que de antemano estamos seguros no habr necesidad.

1.1 Conceptos Bsicos Para La Solucin De Problemas Por Medio De


Computadoras
Cuando nosotros terminemos este curso, seremos capaces de disear sistemas computacionales, en el
lenguaje de programacin que nosotros deseemos aprender. Para lo cual debemos de tener muy en claro
los siguientes conceptos.
Sistema. Un sistema es un conjunto de componentes que interactan entre s para lograr un objetivo
comn1.
Sistema Computacional o Sistema de Informacin. Es un conjunto de componentes, por el cual
los datos de una persona o departamento de una organizacin fluyen hacia otros2.
Es un sistema, debido a que el programa que se pueda disear por si mismo no realizar nada, sino que
tiene que interactuar con la computadora y los usuarios.
Programa. Es el conjunto de instrucciones escritas de algn lenguaje de programacin y que
ejecutadas secuencialmente resuelven un problema especifico3.

1 SENN, James A., Anlisis y diseo de sistemas de informacin.2da Edicin, Ed. McGraw Hill, Mxico.
2 ITEM.
3 JOYANES Aguilar Luis;"Fundamentos de Programacin, Algoritmos y Estructura de Datos",Ed McGraw Hill

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

Lenguaje de Programacin. Es cualquier lenguaje artificial que puede utilizarse para definir una
secuencia de instrucciones para su procesamiento por un ordenador o computadora4.
Los lenguajes de programacin pueden ser de 3 tipos:
Programas escritos en Lenguaje maquina. (0 y 1)
Programas escritos en Lenguaje ensamblador. (uso de abreviaturas similares al ingles)
Programas escritos en Lenguajes de alto nivel. (enunciados muy similares a los que se utilizan en ingles
para comunicarse).
Para que la computadora entienda lo que se le indica que haga, se utilizan traductores, los cuales
convierten las instrucciones en cadenas de ceros y unos (lenguaje maquina), dichos traductores se
llaman compiladores o interpretes.
Computadora. Es un dispositivo electrnico-mecnico capaz de ejecutar clculos y tomar decisiones
lgicas a velocidades de millones y a veces miles de millones de instrucciones por segundo5. Toda
computadora, tiene los siguientes elementos:
Dispositivos de Entrada: Como su nombre lo indica, sirven para introducir datos (informacin) en la
computadora para su proceso. Los ms usados son el teclado, ratn y scanner.
Dispositivos de Salida: Regresan los datos procesados que sirven de informacin al usuario. Los ms
comunes son el monitor y la impresora.
La Unidad Central de Procesamiento (CPU). Aunque generalmente al gabinete se le denomina CPU,
el CPU es el microprocesador de la computadora y es el encargado de hacer todos los clculos y
operaciones. El CPU a su vez se divide en las siguientes partes:
Unidad de Control: Coordina las actividades de la computadora y determina que operaciones se deben
realizar y en que orden; as mismo controla todo el proceso de la computadora.
Unidad Aritmtico - Lgica: Realiza operaciones aritmticas y lgicas, tales como suma, resta,
multiplicacin, divisin y comparaciones.
La Memoria. Es una parte de la computadora en donde se almacenan los datos a procesar y la
informacin resultante. Esta puede ser de dos tipos:
Memoria Primaria: Es el espacio en que se almacenan los datos a procesar o calcular en este
momento.
Memoria Secundaria: Es el espacio en el que se almacena la informacin resultante para su futura
consulta o manejo. Por ejemplo: disquetes, discos duros, unidades de almacenamiento magntico (CD).

4 NORTON Peter, Introduccin A La Computacin, Ed. Pearson, Mxico


5 DEITEL H.M. / DEITEL P.J., Como Programar en C/C++, Ed. Prentice Hall, Mxico

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

C.P.U.
UNIDAD DE
CONTROL
DISPOSITIVOS
DE ENTRADA

UNIDAD DE
ARITMTICA
Y LGICA

DISPOSITIVOS
DE SALIDA

MEMORIA
Ilustracin 1. Diagrama que representa el funcionamiento de cualquier computadora6.

Nota. La definicin, funcionamiento y partes de una computadora que se estn mencionando en


este manual son muy bsicos, ya que ahondar en este tema nos llevara todo un curso.
Programador o analista o diseador de sistemas. Es la persona encargada de crear un programa o
sistema en un lenguaje de programacin especfico.
Usuario. Es la persona que interacta con el sistema de informacin, o mejor dicho con la
computadora7.
Usuario Final Directo. Operan el sistema. Interactan directamente a travs de la computadora,
ingresando datos y recibiendo salidas.
Usuario Final Indirecto. Son aquellos que emplean los reportes y otros tipos de informacin que
genera el sistema, pero no operan el equipo.
Dicho y comprendido lo anterior, debemos de conocer el significado de la palabra ALGORITMO, ya
que el curso esta diseado para que aprendamos a realizar estos.
Algoritmo. Es la representacin en papel de una serie de pasos organizados que describe el camino
y las operaciones que se deben seguir para dar solucin a un problema especfico8.
La palabra algoritmo se deriva de la degeneracin de la palabra rabe Al Jwarizmi, la cual es el
pseudnimo de Mohammed Ben Musa, matemtico padre del lgebra y astrnomo rabe que escribi
un tratado sobre manipulacin de nmeros y ecuaciones en el siglo IX.
Existen diferentes tcnicas de representar los algoritmos:
Grficos: Es la representacin del algoritmo por medio de varios smbolos grficos, donde cada
smbolo representa una operacin distinta.
No Grficos: Es la representacin del algoritmo por medio de texto el cual es entendible por nosotros.
Hbrido: Es la representacin del algoritmo en un modo que combina los 2 mtodos anteriores.

Nota. Todo lo referente a las tcnicas algortmicas, se analizar afondo a partir del tercer tema.
Estos son solo fundamentos.

1.2 Metodologa para la solucin de problemas por medio de computadora


6 TANENBAUM Andrew,Organizacin De Computadoras, Un Enfoque Estructurado, Ed. Prentice Hall, Mxico
7 SENN, James A., Anlisis y diseo de sistemas de informacin, Ed. McGraw Hill, Mxico.
8 FERREYRA Corts Gonzalo, Informtica, Para Cursos De Bachillerato, Ed. Alfaomega, Mxico

10

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

Aunque el objetivo de este curso es solo aprender a disear algoritmos y no implantar sistemas
computacionales, en este subtema se definen brevemente todos los pasos que debe realizar un analista o
programador para colocar un sistema de informacin en una empresa, con la finalidad de que
identifique en que parte de esta proceso entra el diseo de los algoritmos.
El ciclo de vida que se debe seguir para implantar un sistema de informacin en una compaa son los
siguientes:
Investigacin Preliminar. Esta comienza cuando se recibe una solicitud para disear un sistema y
consta de tres partes:
Aclaracin De La Solicitud. En muchas ocasiones las solicitudes no estas formuladas de manera clara.
Por consiguiente, la solicitud de proyecto debe examinarse detenidamente para determinar con
precisin lo que el solicitante desea y esta debe estar claramente planteada.
Estudio De Factibilidad. El resultado ms importante en la investigacin preliminar es el determinar
si el sistema es factible; es decir que se pueda hacer o realizar. Existen tres aspectos relacionados con
el estudio de la factibilidad.
Factibilidad Tcnica. El trabajo para el proyecto, puede realizarse con el equipo actual, la tecnologa
existente de software y el personal disponible? Si se necesita nueva tecnologa, cul es la posibilidad
de desarrollarla?
Factibilidad Econmica. Al crear el sistema, los beneficios que se obtienen sern suficientes para
aceptar los costos?, los costos asociados con la decisin de NO crear el sistema son tan grandes que se
debe aceptar el proyecto?
Factibilidad Operacional. Si se desarrolla e implanta el sistema, ser utilizado?, existir cierta
resistencia al cambio por parte de los usuarios que d como resultado una disminucin de los posibles
beneficios de la aplicacin?
Aprobacin De La Solicitud. No todas las solicitudes son factibles. Pero cuando se aprueba una
solicitud se tiene que estimar su costo, el tiempo para su desarrollo e implantacin y las necesidades de
personal.
Anlisis Del Sistema. En esta actividad se tienen que comprender todas las facetas importantes de la
parte de la empresa que esta bajo estudio. Se deben estudiar los procesos de una empresa para dar
respuesta a las siguientes preguntas claves:
Qu es lo que se hace?
Cmo se hace?
Con qu frecuencia se presenta?
Qu tan grande es el volumen de transacciones o de decisiones?
Cul es el grado de eficiencia con el que se efectan las tareas?
Existe algn problema?
Si existe un problema, qu tan serio es?
Si existe un problema, cul es la causa que lo origina?
Para contestar estas preguntas, el analista debe entrevistar a varias personas (trabajadores y directivos),
as como observar y estudiar su desempeo, para reunir informacin de cmo se realizan los procesos
de la empresa.
Todo esto, mediante el uso de cuestionarios, entrevistas, estudio de manuales y reportes, muestras de
formas y documentos y la observacin en condiciones reales de trabajo.
Conforme se va reuniendo la informacin se deben ir identificando las caractersticas operacionales
tales como controles de procesamiento, tiempos de respuesta y mtodos de entrada y salida.
Diseo Lgico Del Sistema. Produce los detalles que establecen la forma en la que el sistema
cumplir con los requerimientos identificados en la fase de determinacin de requerimientos.
P.L.I. Carlos Augusto Flores Valerio

11

Diseo Estructurado De Algoritmos

Se comienza el proceso identificando los reportes y dems salidas que debe producir el sistema.
Entonces se determina con toda precisin los datos especficos para cada reporte y salida, haciendo
bosquejos en formatos de pantalla que se esperan que aparezcan cuando el sistema este terminado, ya
sea en papel o en la pantalla de la computadora.
El diseo de sistema tambin indica los datos de entrada, aquellos que sern calculados y los que deben
ser almacenados. As mismo se escriben con todo detalle los procedimientos de clculo y datos
individuales. Se tienen que seleccionar las estructuras de archivo y los dispositivos de almacenamiento.
Estos procedimientos indican como procesar los datos y producir las salidas.
Todos estos procedimientos que contienen las especificaciones son representados mediante diagramas,
tablas, smbolos especiales, etc.; Entonces a partir de estos se comienza la fase de desarrollo de
software.

Nota. El diseo de algoritmos se realiza en esta etapa, ayudado por la recoleccin de informacin
realizada en la segunda etapa.

Nota. El diseo de los algoritmos no es la nica tarea que se realiza en esta fase.
Diseo Fsico Del Sistema. En esta fase se escribe el programa y la base de datos de acuerdo a los
documentos recibidos de la actividad anterior.
El programador es responsable de elaborar la documentacin de los programas y de proporcionar una
explicacin de cmo y por que ciertos procedimientos se codifican en determinada forma. La
documentacin es esencial para probar el programa y llevar a cabo el mantenimiento una vez que la
aplicacin se encuentra instalada.
Prueba De Sistemas. Durante esta fase, el sistema se emplea de manera experimental para
asegurarse de que el software no tenga fallas, es decir que funciona de acuerdo con las especificaciones
y en la forma en que los usuarios esperan que lo haga. Se alimentan con entradas de prueba para su
procesamiento y despus se examinan los resultados. En ocasiones se permite que varios usuarios
utilicen el sistema para que se observe como trabajan y como se sienten con l.
Hay que descubrir cualquier error antes de que la organizacin implante el sistema y dependa de l. Si
es que se detecta un error, hay que revisar si este es fsico o lgico, es decir, un error fsico es que el
programa esta mal escrito, pero un error lgico implica regresar a las etapas anteriores para detectar el
origen de la falla. Esto provoca que esta sea la etapa ms ardua y difcil, ya que es muy probable que
tengamos que estar corrigiendo el programa infinidad de veces hasta que no presente problemas.
Es muy probable que esta fase sea realizada por personas ajenas a la empresa para que esta sea
objetiva.
Implantacin Y Evaluacin. La implantacin es el proceso de instalar el sistema, construir los
archivos de datos necesarios y entrenar a los usuarios.
Dependiendo del tamao de la organizacin, puede elegirse comenzar la operacin del sistema slo en
un rea de la empresa (prueba piloto) y con solo unas cuantas personas. Algunas veces se deja que los
dos sistemas (viejo y nuevo), trabajen de forma paralela con la finalidad de comparar resultados; en
otras ocasiones simplemente se deja de utilizar el viejo sistema un da y al siguiente da se comienza a
utilizar el sistema nuevo.
Estos sistemas generalmente trabajan durante muchos aos. Sin embargo las organizaciones y los
usuarios cambian con el paso del tiempo. Por consiguiente, es indudable que debe darse
mantenimiento, realizar cambios y modificaciones al software, a los archivos o a los procedimientos
del sistema. Todo esto con la finalidad de que los sistemas se mantengan al da y no se vuelvan
obsoletos. En este sentido la implantacin es un proceso de constante evolucin.

12

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

La evaluacin de un sistema se lleva a cabo para identificar puntos dbiles y fuertes de este. La
evaluacin ocurre a lo largo de cualquiera de las siguientes dimensiones:
Evaluacin Operacional. Evala la forma en que funciona el sistema, incluyendo su facilidad de uso,
tiempo de respuesta, lo adecuado de los formatos de informacin, confiabilidad global y nivel de
utilizacin.
Impacto Organizacional. Identifica y mide los beneficios de la organizacin en cuanto a costos,
ingresos, ganancias, eficiencia operacional e impacto competitivo; desde que fue implantado el sistema.
Opinin De Los Administradores. Evala las actitudes de los directivos y administradores dentro de
la organizacin as como de los usuarios finales.
Desempeo De Desarrollo. Se evala el desarrollo del sistema en criterios tales como tiempo y
esfuerzo de desarrollo, para ver si concuerdan con los presupuestos y estndares, y otros criterios de
administracin de proyectos.

P.L.I. Carlos Augusto Flores Valerio

13

Diseo Estructurado De Algoritmos

CONCLUSIN
En este tema, se vieron dos subtemas fundamentales para disear sistemas que resuelvan problemas
orientados a computadoras.
En el primer subtema, se presentaron conceptos bsicos los cuales si no son todos son los ms bsicos
para alguien que piensa dedicarse al diseo de sistemas. Algunas de las definiciones son:
Sistema De informacin. Conjunto de componentes, por el cual los datos de una persona o
departamento de una organizacin fluyen hacia otros.
Programa. Conjunto de instrucciones escritas de algn lenguaje de programacin
Lenguaje De Programacin. Lenguaje artificial que puede utilizarse para definir una secuencia de
instrucciones para su procesamiento por un ordenador o computadora
Computadora. Dispositivo electrnico-mecnico capaz de ejecutar clculos y tomar decisiones lgicas
Programador. Persona encargada de crear un programa o sistema
Algoritmo. Representacin en papel de una serie de pasos organizados que describe el camino y las
operaciones que se deben seguir para dar solucin a un problema especfico
En el segundo subtema se dieron a conocer la serie de pasos que se deben de realizar para implantar un
sistema informtico en una empresa, tambin conocidos como ciclo de vida de un sistema de
informacin:
Investigacin Preliminar. Radica en determinar que es lo que se quiere realizar.
Anlisis del sistema. Consiste en estudiar el sistema actual.
Diseo Lgico del Sistema. Fundamenta en poner en papel el nuevo sistema.
Diseo Fsico del Sistema. Gravita en disear el nuevo sistema.
Prueba Del Sistema. Consiste en probar el sistema para comprobar que no tiene errores.
Implantacin y Evaluacin del sistema. Reside en poner a trabajar el sistema en la empresa y
comprobar su funcionalidad.
Hasta este momento, con lo aprendido podemos sentirnos satisfechos, pues hemos establecido las bases
para cubrir completamente el objetivo del curso. Nos hace falta bastante camino por recorrer, por lo
cul podemos considerar que solo hemos cubierto un 5% del total.
OBJETIVO DEL CURS0
5%

95%
% Cubierto
% Faltante

14

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

P.L.I. Carlos Augusto Flores Valerio

15

Diseo Estructurado De Algoritmos

OPERACIONES CON LOS DATOS


OBJETIVO

Al terminar el tema, el participante mediante la prctica dominar las operaciones que


se realizan con los datos con la finalidad de disear algoritmos que calculan y
comparan datos.

CONTENIDO
INTRODUCCIN
Tipos De Datos Simples
Tipos De Operadores
Identificadores
CONCLUSIN

INTRODUCCIN
Como ya se ha comentado anteriormente, este curso tiene por objeto ensearnos a disear algoritmos,
los cuales en un futuro utilizaremos para escribir programas computacionales.
La importancia de este tema es tan grande debido a que todo sistema de informacin realiza clculos
con datos para entregar resultados a la empresa, por lo cual debemos saber que los datos que maneja la
empresa solamente pueden ser nmeros, letras y nmeros y una respuesta afirmativa o negativa; y los
clculos que el sistema puede realizar sobre estos datos son operaciones como suma, resta,
multiplicacin y divisin, adems de comparaciones entre dos datos para saber si uno es mayor que el
otro, si es menor, si son iguales o diferentes, y establecer un grado de satisfaccin entre dos datos en
base a las tablas de la verdad (AND, OR y NOT).
Sabiendo todo lo anterior, debemos aprender a expresar los clculos a realizar por el sistema de una
manera que la computadora pueda comprenderlos y arrojar los resultados correctos mediante una
expresin o frmula que se rige por un conjunto de reglas.
Adems de que debemos de aprender a crear los espacios temporales de almacenamiento donde se
guardarn tanto los datos como los resultados.
Para cubrir estos puntos, el tema se ha dividido en varios subtemas:
El primero es para conocer los diferentes tipos de datos que maneja una computadora.
El segundo esta dedicado a ensearnos como se redacta una expresin de tal manera que la
computadora la entienda.
El tercero esta diseado para saber como se crea y se almacena informacin en un espacio de memoria
de la computadora.
Este tema no es difcil de asimilar, pero es fundamental para lograr cumplir el objetivo general del
curso, por lo cual se te pide dedicacin.
Para ayudarte a especializarte en la creacin de expresiones y manejo de operadores, este captulo
cuenta con una buena cantidad de ejercicios lo cuales se te pide que resuelvas. Recuerda que la prctica
hace al maestro.

16

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

Tipos De Datos Simples

Cualquier sistema de informacin por pequeo o sencillo que sea tiene por objetivo procesar diferentes
valores para entregar un resultado a la persona indicada, estos valores son conocidos como datos y a los
resultados se les denomina informacin.
Dato. "Es una pequea parte de informacin que por si sola no dice nada, pero que en conjunto forma
informacin"9.
Informacin. "Es un conjunto de datos estructurados o procesados"10.
Los datos por sencillos que parezcan, siempre estn relacionados a un tipo. ver tabla 1.

TIPOS DE DATOS
Enteros
Numricos
Reales
Simples
Lgicos
Alfanumricos
Unidimensionales
Arreglos
Multidimensionales

Complejos
Estructuras
Tabla 1. Clasificacin de los datos

Datos Simples.
Datos Numricos: Permiten representar valores escalares de forma numrica, esto incluye a los
nmeros enteros y los reales. Este tipo de datos permiten realizar operaciones aritmticas comunes.
Enteros. Son los nmeros que no tienen parte decimal, pueden ser positivos negativos, por ejemplo:
10, 0, 1358, -456.
Reales. Son los nmeros que contienen una fraccin, es decir, punto decimal y estos al igual que los
enteros pueden ser positivos o negativos, por ejemplo: 12.45, 7.0, -157.0001.
Datos Lgicos: Son aquellos que solo pueden tener uno de dos valores posibles (cierto o falso) ya que
representan el resultado de una comparacin entre otros datos (numricos o alfanumricos).
Datos Alfanumricos: Es una secuencia de caracteres alfanumricos que permiten representar valores
identificables de forma descriptiva, esto incluye nombres de personas, direcciones, etc. Es posible

9 SENN, James A., Anlisis y diseo de sistemas de informacin.2da Edicin, Ed. McGraw Hill, Mxico.
10 ITEM

P.L.I. Carlos Augusto Flores Valerio

17

Diseo Estructurado De Algoritmos

representar nmeros como alfanumricos, pero estos pierden su propiedad matemtica, es decir no es
posible hacer operaciones con ellos. Este tipo de datos se representan encerrados entre comillas.

Nota. Los datos complejos se explican y analizan en el tema V.


Tipos De Operadores

Cualquier lenguaje de programacin tiene la capacidad de realizar a los datos los clculos ms
complejos mediante un conjunto de operadores y un grupo de reglas bsicas.
Debemos de aprender a utilizar los datos y operadores, pues somos nosotros quien le indicar a la
computadora los clculos a realizar a ciertos datos.
Por ejemplo, si se nos pide un sistema que saque el promedio de un alumno que tiene 5 materias, a la
maquina no le podemos decir saca el promedio del alumno debido a que es una instruccin que no
reconoce, para que despliegue el resultado le tenemos que indicar suma la calificacin de la primera
materia, la segunda, la tercera, la cuarta y la quinta, y al resultado lo divides entre cinco. Pero an as
no es tan fcil como parece pues tenemos que representar esta instruccin de una manera que la
computadora la comprenda. Para lo cual tenemos que elaborar una expresin o frmula en una sola
lnea de cdigo, utilizando operadores, operandos y unos criterios de ejecucin llamados reglas de
precedencia.
Al conjunto de todos los operadores, los podemos dividir en tres grupos:
Operadores Aritmticos
Operadores Relacinales
Operadores Lgicos.
Operadores Aritmticos. Son aquellos con los que podemos realizar operaciones como suma, resta,
multiplicacin, divisin, mdulo y asignacin.
EXPRESIN
OPERACIN
OPERADOR
ALGORTMICA
a+b
5+7
Suma
+
a+7
ab
5-7
Resta
a-7
a*b
5*7
Multiplicacin
*
a*7
a/b
10 / 2
Divisin
/
a/2
a%b
10 % 3
Mdulo
%
a%3
a=8
b=a
Asignacin
=
c=a+b
Tabla 2. Los diferentes operadores aritmticos
18

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

Los operadores aritmticos son del tipo binario, es decir; necesitamos de dos operandos, uno a la
izquierda y otro a la derecha para realizar una operacin.
Con ayuda de estos operadores podemos realizar cualquier clculo matemtico, como elevar al
cuadrado, sacar races cuadradas, calcular factoriales, etc.
El operador mdulo es un operador entero el cual siempre se debe de utilizar con nmeros enteros, y el
resultado que enva es el residuo de una divisin. Por ejemplo, en el caso de 10 % 3 el resultado es 1,
debido a que 10 / 3 es igual a 3 y nos sobra 1.
Las expresiones aritmticas se deben escribir en una lnea continua y bajo unas reglas de
precedencia de operadores. Las cuales son guas de accin que permiten calcular las expresiones en el
orden correcto11.
Se calculan primero las operaciones de multiplicacin, divisin y mdulo, los cuales tienen el mismo
nivel de precedencia, por lo cual si existen varios de estos en una expresin se comienzan a calcular de
izquierda a derecha.
Se calculan las operaciones de suma y de resta, los cuales tienen el mismo nivel de precedencia. Si la
expresin contiene varias de esta se realizan de izquierda a derecha.
Si en la expresin se encuentran parntesis, esto indica que lo que esta dentro de ellos se debe resolver
antes que cualquier cosa siguiendo las reglas de precedencia antes mencionadas, por lo cual los
parntesis son utilizados para obligar a la computadora a evaluar primero ciertas expresiones. En caso
de existir parntesis anidados se evala el par ms interno.
Por ltimo se realiza la asignacin, la cual significa que el valor de la derecha es asignado al
identificador de la izquierda.

Nota. Posteriormente, al ver los otros operadores (lgicos y relacionales), se aplican las mismas
reglas de precedencia, con la diferencia de que se aumentaron ms operadores.
Lo anterior se puede resumir en la siguiente tabla.
OPERADOR PRECEDENCIA
Mayor
()
*, / , %

Menor

+, =
Tabla 3. Precedencia de los operadores aritmticos

Ejemplo 1. Supongamos que tenemos la siguiente expresin:


EXPRESIN
ACTIVIDAD

y=2*5*5+3*5+7
OPERACIN

Realiza la multiplicacin ms a la
y=2*5*5+3*5+7
izquierda
Realiza la multiplicacin ms a la
y = 10 * 5 + 3 * 5 + 7
izquierda
Realiza la multiplicacin ms a la
y = 50 + 3 * 5 + 7
izquierda
Realiza suma ms a la izquierda
y = 50 + 15 + 7
Realiza la suma
y = 65 + 7
Tabla 4. Ejemplo 1 de precedencia de operadores aritmticos

RESULTADO
y = 10 * 5 + 3 * 5 + 7
y = 50 + 3 * 5 + 7
y = 50 + 15 + 7
y = 65 + 7
y = 72

11 SENN, James A., Anlisis y diseo de sistemas de informacin.2da Edicin, Ed. McGraw Hill, Mxico.

P.L.I. Carlos Augusto Flores Valerio

19

Diseo Estructurado De Algoritmos

Ejemplo 2. Supongamos que tenemos la siguiente frmula:


EXPRESIN
ACTIVIDAD

Z = 4 * ( ( 2 + 6 ) * ( 8 10 ) )

OPERACIN

RESULTADO

Realiza el parntesis ms interno Z = 4 * ( ( 2 + 6 ) * ( 8 10 ) )


de la izquierda
Realiza el parntesis ms interno Z = 4 * ( 8 * ( 8 10 ) )
Realiza el parntesis
Z = 4 * ( 8 * -2 )
Realiza la multiplicacin
Z = 4 * -16
Tabla 5. Ejemplo 2 de precedencia de operadores aritmticos

Z = 4 * ( 8 * ( 8 10 ) )

Z = 4 * ( 8 * -2 )
Z = 4 * -16
Z = -64

Ejercicios.
Resuelve las siguientes operaciones utilizando las reglas de precedencia, donde:
W = 5 , X = 7, Y = 3, Z = 9
A=y-z*x+w/3

A=z+w%y

A = X * ( Z Y )/ W

A = (4 * Y + Z % W ) * X

A=Z*WX+Y/Z
Expresa las siguientes formulas para que las entienda la computadora.
Calcular el permetro de un crculo.

Calcular el rea de un rectngulo

20

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

Calcular el rea de un circulo

X = Z3

Sugerencia. Al momento realizar una expresin, hay que tomar en cuenta que la divisin de 2
datos del tipo numricos enteros da como resultado un numero entero, es decir, si el resultado puede
tener fraccin esta se pierde y nunca se hace un redondeo. Por lo cual se recomienda que una divisin
se haga entre 2 nmeros o al menos 1 del tipo numrico real.
Operadores Relacinales. Los operadores relacionales se usan para determinar la relacin de la
expresin de la izquierda con la de la derecha (binarios). El resultado de esta evaluacin regresa el
valor de falso o verdadero, donde falso es igual a cero y verdadero es igual a 1.
OPERADOR
RELACIN
==
Igual
!=
Diferente
>
Mayor que
<
Menor que
>=
Mayor o igual que
<=
Menor o igual que
Tabla 6. Conjunto de operadores relacionales

NO TODOS los operadores relacionales estn al mismo nivel de precedencia entre ellos. Los
operadores <, <=, >, >=, tienen mayor precedencia que los operadores de == y !=.
En una operacin o frmula se pueden mezclar tanto operadores aritmticos como relacionales, pero
los operadores relacionales tienen menor precedencia que los operadores de suma y resta pero mayor
que el operador de asignacin.
OPERADOR
PRECEDENCIA
Mayor
()
*, / , %
+, P.L.I. Carlos Augusto Flores Valerio

21

Diseo Estructurado De Algoritmos

<, >, <=, >=


==, !=
=

Menor

Tabla 7. Precedencia de los operadores aritmticos y relacionales

Ejemplo 1. Supongamos que tenemos la siguiente frmula:


EXPRESIN
ACTIVIDAD

Z = 4 <= 2 == 6 != 8 > 10

OPERACIN

RESULTADO

Realiza la comparacin de mayor


precedencia de la izquierda.

Z = 4 <= 2 == 6 != 8 > 10

Z = 0 == 6 != 8 > 10

Realiza la comparacin de mayor


precedencia
Realiza la comparacin de mayor
precedencia de la izquierda.
Realiza la comparacin

Z = 0 == 6 != 8 > 10

Z = 0 == 6 != 0

Z = 0 == 6 != 0

Z = 0 != 0

Z = 0 != 0

Z=0

Tabla 8. Ejemplo 1 de cmo se utilizan los operadores relacionales

Ejemplo 2. Supongamos que tenemos la siguiente frmula:


EXPRESIN
ACTIVIDAD

Z = 8 == ( 9 + ( 1 != 0 ) ) > 3 * 5

OPERACIN

RESULTADO

Z = 8 == ( 9 + ( 1 != 0 ) ) > 3 * 5

Z = 8 == ( 9 + 1 ) > 3 * 5

Z = 8 == ( 9 + 1 ) > 3 * 5

Z = 8 == 10 > 3 * 5

Z = 8 == 10 > 3 * 5

Z = 8 == 10 > 15

Realiza la comparacin de mayor


precedencia

Z = 8 == 10 > 15

Z = 8 == 0

Realiza la comparacin

Z = 8 == 0

Z=0

Realiza la operacin dentro del


parntesis ms interno
Realiza la operacin dentro del
parntesis
Realiza la multiplicacin

Tabla 9. Ejemplo 2 de cmo se utilizan los operadores relacionales

Ejercicios.
Realiza las siguientes operaciones siguiendo las reglas de precedencia, donde:
W = 3, X = 5, Y = 7, Z = 9

A = X == Z

A = W >= Y

22

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

A = W == X < Y < Z

A = ( W == X ) == ( Y > Z )

A = X != ( W < Z < Y ) == 1

A = W * Y >= W * Z

A = Y + W * Z / W != Z + W Y * X

A = ( Y + W ) * Z / W == Y * X 20 / 4

A = W * Y >= W * Z == ( Y + W ) * Z > 0

A = X > Z * ( W + Y )!= W <= X


Operadores Lgicos. Los operadores Lgicos, se usan para soportar las operaciones bsicas lgicas
AND, OR y NOT de un dato verdadero y un falso, de dos verdaderos o de dos falsos, de acuerdo con
las tablas de la verdad correspondientes.
La computadora entiende que falso es igual a 0 y verdadero es cualquier valor diferente a 0. Al regresar
los valores asigna un 0 para decir que el resultado de la expresin es falso y un 1 para verdadero.
P.L.I. Carlos Augusto Flores Valerio

23

Diseo Estructurado De Algoritmos

Las tablas de la verdad AND y OR nos sirven para determinar el grado de satisfaccin de acuerdo al
valor lgico de dos datos. La tabla del operador NOT solo nos regresa el contrario o negacin del valor
lgico de un dato. Las tablas se describen a continuacin.
a
b
a AND b
0
0
0
0
No 0
0
No 0
0
0
No 0
No 0
1
Tabla 10. Tabla de la verdad del operador lgico AND
a
b
a OR b
0
0
0
0
No 0
1
No 0
0
1
No 0
No 0
1
Tabla 11. Tabla de la verdad del operador lgico OR
A
NOT
0
1
No 0
0
Tabla 12. Tabla de la verdad del operador lgico NOT
OPERADOR
OPERACION LGICA
&&
AND
||
OR
!
NOT
Tabla 13. Conjunto de Operadores lgicos
Los operadores lgicos NO estn al mismo nivel de precedencia entre ellos. El operador NOT es el de
mayor, posteriormente se encuentra el AND y por ltimo el OR.
En una operacin o frmula se pueden mezclar los operadores aritmticos, relacionales, y lgicos,
aunque resulta ms comn dividir una expresin de este tipos en dos o ms.
Esta es la tabla de precedencia de todos los operadores:
PRECEDENCI
OPERADOR
A
Mayor
()
!
*, / , %
+, <, >, <=, >=
==, !=
&&
||
24

Menor
P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

=
Tabla 14. Tabla de precedencia de todos los operadores

Ejemplo 1. Supongamos que tenemos la siguiente frmula:


EXPRESIN
ACTIVIDAD

Z = 0 || 4 || 2 && ! 8

Realiza primero la negacin


Realiza la operacin del AND
Se realiza la operacin OR ms a
la izquierda
Realiza la comparacin del OR

OPERACIN

RESULTADO

Z = 0 || 4 || 2 && ! 8

Z = 0 || 4 || 2 && 0

Z = 0 || 4 || 2 && 0

Z = 0 || 4 || 0

Z = 0 || 4 || 0

Z = 1 || 0

Z = 1 || 0

Z=1

Tabla 15. Ejemplo 2 de cmo se utilizan los operadores relacionales

Nota. Al momento de que la computadora ejecuta la expresin, cuando llega al paso 3 termina la
ejecucin, debido a que ya sabe que el resultado ser 1 y no puede cambiar.

Ejemplo 2. Supongamos que tenemos la siguiente frmula:


EXPRESIN
ACTIVIDAD
Se realiza todo lo que esta dentro
del parntesis
Dentro del parntesis se realiza
primero la negacin
Dentro del parntesis se realiza la
multiplicacin de ms a la
izquierda
Dentro del parntesis se realiza la
multiplicacin
Dentro del parntesis se realiza la
comparacin de ms a la izquierda
Dentro del parntesis se realiza la
comparacin
Dentro del parntesis se establece
el resultado lgico
Se establece el resultado lgico

Z = 1 || ( 6 * !0 > 5 && 9 < 3 * 4 )

OPERACIN

RESULTADO

Z = 1 || ( 6 * !0 > 5 && 9 < 3 * 4 )


Z = 1 || ( 6 * !0 > 5 && 9 < 3 * 4 )

Z = 1 || ( 6 * 1 > 5 && 9 < 3 * 4 )

Z = 1 || ( 6 * 1 > 5 && 9 < 3 * 4 )

Z = 1 || ( 6 > 5 && 9 < 3 * 4 )

Z = 1 || ( 6 > 5 && 9 < 3 * 4 )

Z = 1 || ( 6 > 5 && 9 < 12 )

Z = 1 || ( 6 > 5 && 9 < 12 )

Z = 1 || ( 1 && 9 < 12 )

Z = 1 || ( 1 && 9 < 12 )

Z = 1 || ( 1 && 1 )

Z = 1 || ( 1 && 1 )

Z = 1 || 1

Z = 1 || 1

Z=1

Tabla 16. Ejemplo 2 de cmo se utilizan los operadores relacionales

Ejercicios.
Realiza las siguientes operaciones siguiendo las reglas de precedencia, donde:
W = 3, X = 0, Y = 7, Z = 1
A = X && Z

A = !W || X
P.L.I. Carlos Augusto Flores Valerio

25

Diseo Estructurado De Algoritmos

A = W || X || Y && !Z || X && Z

A = W || X || Y && !(!Z || X && Z)

A = W == X && Y > Z

A = X != ( W < Z || Y ) + 1

A = W * Y >= W && Z == !(X + Y * W)

A = (Y + W) || !(Z / W && Z + W Y * X)

A = ( Y || W ) && Z / W == Y * X 20

A = W * Y >= W && Z == ( Y + W ) * Z > 0

A = X > Z * !( W + Y )!= W || X

A = W + X && Z * W > W Z && X Y

26

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

A = !( 3 + W && Z || W * X && 7 > 1 )

Identificadores

Como ya se vio anteriormente, una computadora puede manejar y manipular ciertos datos. Pero
para que la computadora los procese, los datos se pueden guardar temporalmente en una pequea parte
de la memoria de la computadora, a este espacio se le debe decir que tipo de datos puede almacenar
(enteros, reales, alfanumricos, etc.) y como queremos que se le llame para poder localizarlo
posteriormente. A este espacio de memoria con un nombre y tipo especfico, se le conoce como
identificador.
Porqu usar identificadores?
Si nosotros no creamos un identificador, el dato que deseamos guardar se almacenara en una
posicin de memoria la cual esta identificada por un nmero hexadecimal, y para recuperarla
tendramos que saber esta direccin, por lo cual es ms fcil asignarle un nombre. Adems, si nosotros
no le indicamos un tipo para los datos que se van a almacenar, la computadora no sabr como tratar a
esta informacin, recordemos que en la computadora solo estn almacenados ceros y unos.
FF00h
FF0Ch
FF01h
FF0Dh
00101110
FF02h
FF0Eh
FF03h
FF0Fh
10001111
FF04h
FF10h
Sin el uso de identificadores, tendramos que saber la
FF05h
FF11h
direccin de memoria en donde se guardo la
FF06h
FF12h
informacin.
11011101
FF07h
FF13h
FF08h
FF14h
FF09h
FF15h
11110001
FF0Ah
FF16h
FF0Bh
FF17h
Tabla 17. Cmo se almacenaran los datos si no existiesen los identificadores.

Cuando reservemos un espacio de memoria asignndole un identificador, solo se tiene dar este nombre
para acceder al dato que tiene guardado.
FF00h
Ident1

00101110

FF03h
FF04h
FF05h
Ident2

FF0Ch
FF0Dh
FF0Eh
Ident3

11011101

10001111

FF11h
FF12h
FF13h
FF14h

Con el uso de identificadores, solo se tiene que hacer


referencia al nombre de este.

FF08h
FF09h
Ident4
11110001
FF0Ah
FF0Bh
FF17h
Tabla 18. Cmo se guardan los datos usando identificadores.
P.L.I. Carlos Augusto Flores Valerio

27

Diseo Estructurado De Algoritmos

Los identificadores se dividen en dos:


Constantes. Es aquel en el cual, el dato que tiene dentro es el mismo desde que comienza el
programa hasta que termina, y bajo ninguna circunstancia ni procedimiento puede cambiar. Por
ejemplo: Pi, ya que siempre es 3.1416.
Variables. Es aquel en el cual, el dato que tiene dentro puede cambiar todas las veces necesarias por
otro en cualquier parte del programa siempre y cuando sean del tipo especificado anteriormente. Por
ejemplo: edad, ya que puede almacenar en determinado momento mi edad, en otro la tuya, etc. A su
vez, las variables se pueden clasificar por su uso en:
Variables de Trabajo: Son aquellas que reciben el resultado de una operacin matemtica compleja y
que se usan normalmente dentro de un programa, pero si es del tipo alfanumrico solo se utiliza para
almacenar informacin. Ejemplo: promedio = ( 9 + 8 + 7 ) / 3
Contadores: Se utilizan para llevar el control del nmero de ocasiones en que se realiza una operacin
o se cumple una condicin. Con los incrementos generalmente de uno en uno. Podramos utilizarlos
cuando necesitamos llevar el conteo del nmero de personas que votaron por el PAN. Son
exclusivamente del tipo entero.
Acumuladores: Forma que toma una variable y que sirve para llevar la suma acumulativa de una serie
de valores que se van leyendo o calculando progresivamente. Una variable de este tipo podramos
utilizarla para ir sumando poco a poco el monto total de nuestra compra en un supermercado.

Nota. En estas variables (de hecho en todas), solo se actualiza el valor, no se almacenan los valores
previos.
Variable indicador o de bandera: Es aquella que recibe uno de dos posibles valores. Se les conoce
tambin como BANDERAS y generalmente son del tipo boleano.

Nota. Todas las variables pueden recibir o modificar un valor anterior mediante el signo de
asignacin, para lo cual deben de estar colocadas al lado izquierdo de este.
Reglas para formar un identificador
Debe comenzar con una letra (A-Z, maysculas o minsculas)
No deben contener espacios en blanco.
Dgitos y caracteres especiales estn permitidos despus del primer carcter.
La longitud de identificadores puede ser de hasta 8 caracteres.
El nombre del identificador debe ser significativo.
Indicar su tipo (entero, real, alfanumrico, bolean).
Si se desea, se puede indicar su uso, el cual como ya sabemos solo es para las variables.
Si se desea, asignarles un valor de inicio. En los constantes es forzoso este punto.

Ejemplos.
Necesitamos un identificador para almacenar el promedio que obtuve en el semestre:
Pro_sem : entera : trabajo = 0
Necesitamos un identificador el cual contenga siempre el IVA a calcular:
IVA : real = .15
Necesitamos un identificador para llevar la relacin de cuantos goles anota Cuauhtemoc Blanco con el
Veracruz:
Goles_cua : entera : contador = 0
Necesitamos un identificador que almacene el nombre de una persona:
Nombre : alfanumrico : trabajo = Carlos Augusto

28

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

Nota. Para almacenar cadenas de caracteres hay que utilizar comillas.


Ejercicios.
I. Declara un identificador para cada uno de los siguientes casos e inicialzalos, adems especifica si
ser una variable o una constante
Direccin de una persona
Cdigo postal
Una tonelada en kilos
Peso de un producto a granel
Total de tiempo corrido en 20 vueltas a un campo
Talla de zapatos en EE.UU.
Nmero telefnico de una persona
Un kilmetro en metros
Estatura de una persona
Total de las ventas realizadas en un estadio
Punto de ebullicin
Total de artculos vendidos
La velocidad de la luz.
Promedio de un alumno del conalep
Nmero de horas trabajadas
Nmero de control de un alumno
Total de ingresos de una familia
Numero de das del ao
Nmero de cervezas por cartn

P.L.I. Carlos Augusto Flores Valerio

29

Diseo Estructurado De Algoritmos

CONCLUSIN
En este tema se abarcaron tres subtemas, en el primero que explic que un dato por si solo no dice nada
pero que en conjunto forma la informacin, se vio que existen datos simples y datos complejos, y que
los datos simples pueden ser numricos enteros, numricos reales, alfanumricos y boleanos.
En el segundo, se dieron a conocer los diferentes tipos de operadores, los cuales pueden ser aritmticos
para realizar operaciones como suma, resta, multiplicacin, divisin y mdulo; relacionales con los
cuales se puede obtener un resultado falso o verdadero al comparar dos valores; Y establecer resultados
en base a tablas de verdad con ayuda de los operadores lgicos AND, OR y NOT.
En el tercero se enseo a crear identificadores, es decir, variables o constantes en las cuales se pueden
guardar valores para posteriormente ser utilizados al realizar operaciones o ecuaciones con los
diferentes operadores.
La compresin absoluta de este tema es muy importante, ya que casi todos los sistemas de informacin
requieren hacer clculos con los datos para generar informacin importante para la toma de decisiones
dentro de una empresa. Por lo cual se recomienda que si su compresin no es absoluta se vuelva a dar
un repaso para proseguir. Debido a esto, se ha dado un gran avance para el logro del objetivo del curso,
calculado en un 15% ms.
OBJETIVO DEL CURS0
20%

80%
% Cubierto
% Faltante

30

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

III. TCNICAS ALGORTMICAS PARA LA SOLUCIN DE


PROBLEMAS
OBJETIVO

Al terminar este tema, el participante mediante la lectura y la exposicin del


instructor, comprender las diferentes tcnicas algortmicas existentes con la finalidad
de resolver problemas orientados a computadoras.

CONTENIDO
INTRODUCCIN
3.1 Pseudocdigo
3.2 Diagrama De Flujo
3.3 Diagrama Estructurado (Nassi-Schneiderman)
CONCLUSIN

INTRODUCCIN
Cuando hayamos estudiado y comprendido este tema, habremos dado el primer paso para disear
algoritmos, ya que sabremos cuales son las 3 diferentes tcnicas que existen para crearlos.
Es por lo anterior donde radica la importancia de este mdulo, debido que a partir de este momento
podremos identificarnos con que tcnica algortmica nos sentimos ms a gusto y con cual tendremos
mayor facilidad de uso.
Este tema se encuentra dividido en tres secciones, donde cada una aborda a uno de los diferentes
mtodos.
El primer subtema nos presenta a la tcnica algortmica NO grfica llamada Pseudocdigo.
El segundo subtema nos muestra a la tcnica grfica para la resolucin de problemas orientados a
computadoras llamada Diagramas De Flujo, que segn mi consideracin es la ms fcil y entendible
de las 3 tcticas.
El tercer subtema nos exhibe al mtodo hbrido llamado Diagramas Nassi-Schneiderman o
Diagramas N-S.
Este tema junto con el primero son los ms fciles de todo el curso debido a que son tericos, sin
embargo, no por eso habr que restarles importancia, por lo cual se espera que espera que lo asimiles al
100%.

3.1 Pseudocdigo
El pseudocdigo o pseudolenguaje, son una serie de instrucciones en nuestro lenguaje natural (espaol,
ingles, etc.) y expresiones que representan cada uno de los pasos que resuelven un problema especifico
(algoritmo)12.
Es la representacin narrativa de los pasos que debe seguir un algoritmo para dar solucin a un
problema determinado. El pseudocdigo utiliza palabras que indican el proceso a realizar, por todo lo
anterior es una tcnica NO GRFICA.
Se considera un primer borrador, dado que el pseudocdigo tiene que traducirse posteriormente a un
lenguaje de programacin. Cabe sealar que el pseudocdigo no puede ser ejecutado por una
computadora.
La forma en que se escribe un pseudocdigo es la siguiente:
12 DEITEL H.M. / DEITEL P.J., Como Programar en C/C++, Ed. Prentice Hall, Mxico

P.L.I. Carlos Augusto Flores Valerio

31

Diseo Estructurado De Algoritmos

Se escribe la palabra pseudocdigo seguida de dos puntos y a continuacin un nombre que describa de
manera general el problema a resolver.
En caso de haber estructuras se describen en la seccin con este nombre, si no hay se pueden omitir.
En caso de haber funciones o mdulos se describen en la seccin con este nombre, si no hay se pueden
omitir.
En caso de haber constantes se describen en la seccin con este nombre, si no hay se pueden omitir.
En caso de haber variables se describen en la seccin con este nombre, si no hay se pueden omitir.
Se colocan en orden las instrucciones y expresiones a ejecutar, las cuales deben de estar enumeradas,
donde se debe respetar lo siguiente:
La primera instruccin es la palabra inicio.
La ltima instruccin es la palabra fin.
En caso de estar dentro de una sentencia de seleccin o dentro de una estructura cclica, utilizar una
subnumeracin y una sangra.
Indicar siempre el final de la estructura de seleccin o estructura cclica antes de continuar con la
numeracin normal.
A continuacin tenemos el ejemplo de un pseudocdigo, el cual no realiza nada especfico, pero se
muestra la estructura que debe de tener.

32

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

Pseudocdigo: No hace nada

ROTULO O
ENCABEZADO

Funciones:
F1 recibe en var1 un entero

DEFINICIN DE
FUNCIONES

Estructuras:
E1 con los campos
Campo1 : entero : trabajo

DEFINICIN DE
ESTRUCTURAS

Campo2 : entero : acumulador


Constantes:
Const1 : entero = 50

DEFINICIN DE
CONSTANTES

Variables:
Var3 : entero : contador

DEFINICIN DE
VARIABLES

1. Inicio
2. Escribir dame un nmero
3. Leer var3
4. si var3 == 10 entonces
Escribir hola
si no
Escribir adios

SERIE DE PASOS Y
EXPRESIONES A REALIZAR POR
EL PROGRAMA, COMENZADO CON
LA INSTRUCCIN INICIO Y
TERMINANDO CON LA
INSTRUCCIN FIN, TODAS
ENUMERADAS Y SUBNUMERACIN
DENTRO DE UNA ESTRUCTURA
DE SELECCIN

fin si
5. escribir gracias
6. fin
Ilustracin 2. Ejemplo de cmo se debe escribir y estructurar un pseudocdigo.

En la seccin en la que se colocan los pasos y expresiones a realizar para resolver un problema
especfico utilizamos para definir una tarea o proceso determinado las siguientes palabras:
Inicio, Fin. Indica el comienzo y trmino del algoritmo.
Escribir. Muestra mensajes e informacin en el monitor.
Imprimir. Datos y mensaje que son enviados a la impresora.
Leer. Almacena un dato que es capturado desde el teclado en una variable.
P.L.I. Carlos Augusto Flores Valerio

33

Diseo Estructurado De Algoritmos

Guardar en... Indica el(los) dato(s) a guardar en una ubicacin especfica de un dispositivo de
almacenamiento secundario (disquete, disco duro, CD, etc.).
Recuperar desde... Indica la ubicacin especfica de un dispositivo de almacenamiento secundario
(disquete, disco duro, CD, etc.) desde el cual se va a leer informacin y en donde se almacenar
temporalmente esta.
Llamar a... Indica que se debe de ejecutar a la funcin o mdulo que se esta invocando.
Si ... entonces. Es una pregunta para una estructura de seleccin, donde si la respuesta es verdad se
realizan unas tareas especificas y cuando es falso se pueden realizar otras.
Si no. Indica el comienzo de las instrucciones a realizar cuando la respuesta a la pregunta si...entonces
es falsa.
Fin si. Indica el trmino de la estructura condicional si...entonces.
Casos para... / Fin casos. Indica las acciones a realizar cuando una variable puede tener uno de varios
posibles valores.
Hacer mientras... / fin mientras. Estructura cclica la cual indica un conjunto de instrucciones que se
deben de repetir mientras que la respuesta a la pregunta hacer mientras... sea verdadera.
Repetir / hasta... Estructura cclica la cual indica un conjunto de instrucciones que se deben de repetir
mientras que la respuesta a la pregunta hasta... sea falsa.
Hacer para... hasta ... / fin para. Estructura cclica la cual indica el nmero exacto de veces que un
conjunto de instrucciones que se deben de repetir.
//... Indica que es comentario, el cual solo sirve para documentar nuestra solucin puesto que no se
ejecuta ninguna instruccin.
Ventajas de utilizar un Pseudocdigo
Ocupa muy poco espacio en una hoja de papel
Permite representar en forma fcil operaciones repetitivas complejas
Es muy fcil pasar de pseudocdigo a un programa en algn lenguaje de programacin ya que solo
basta con aprender como se maneja cierta instruccin en ese lenguaje.
Si se siguen las reglas se puede observar claramente los niveles que tiene cada operacin debido a la
numeracin, subnumeracin y sangras.

3.2 Diagramas De Flujo

Un diagrama de flujo es la representacin grfica de un algoritmo13. Tambin se puede decir que es


la representacin detallada en Forma Grfica de como deben realizarse los pasos en la computadora
para producir resultados.
Esta representacin grfica se da cuando varios smbolos (que indican diferentes procesos en la
computadora), se relacionan entre si mediante lneas que indican el orden en que se deben ejecutar los
procesos.

Nota. Estos procesos son casi los mismos que se detallaron en la tcnica no grfica (pseudocdigo),
pero representados con smbolos.
Los smbolos utilizados han sido normalizados por el instituto norteamericano de normalizacin
(ANSI).
SMBOLO
NOMBRE
DESCRIPCIN
Terminador

13

34

Indica el comienzo o termino de nuestro


algoritmo, para eso se debe de identificar con la
palabra inicio fin.

FERREYRA Corts Gonzalo, Informtica, Para Cursos De Bachillerato, Ed. Alfaomega, Mxico

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

SMBOLO

Proceso

Dentro de el se coloca una expresin para que se


ejecute.

Datos

Dentro de este smbolo se declaran las


funciones, mdulos, estructuras, constantes y
variables a utilizar durante el algoritmo.

NOMBRE

DESCRIPCIN

Entrada manual

Indica que se recibe un dato desde el teclado y


dentro de este se coloca la variable en donde se
almacenar.

Pantalla

Dentro de el se coloca el mensaje y datos que


queremos aparezcan en el monitor.

Impresora o
documento

Dentro de el se coloca el mensaje y datos que


queremos mandar a la impresora.

Almacenamiento

Indica el(los) dato(s) a guardar en una ubicacin


especfica de un dispositivo de almacenamiento
secundario (disquete, disco duro, CD, etc.).

Datos almacenados

Indica la ubicacin especfica de un dispositivo


de almacenamiento secundario (disquete, disco
duro, CD, etc.) desde el cual se va a leer
informacin y en donde se almacenar
temporalmente esta.

Llamada a funcin o
mdulo

Indica que se debe de ejecutar a la funcin o


mdulo que esta escrita dentro de l.

P.L.I. Carlos Augusto Flores Valerio

35

Diseo Estructurado De Algoritmos

SMBOLO

Conector en la
misma pgina

Se utiliza para continuar la secuencia del


algoritmo en otra parte de la hoja. El conector
debe de estar en ambos lados y con el mismo
nmero.

Conector con otra


pgina

Se utiliza para continuar la secuencia del


algoritmo en otra pgina. El conector debe de
estar en ambos lados y con el mismo nmero.

NOMBRE

DESCRIPCIN

Decisin

Se utiliza para plantear una pregunta y con la


respuesta se optar por avanzar por solo uno de
los caminos posibles.

Flechas

Se usan para indicar el flujo o camino a seguir


por el programa.

Tabla 19 Conjunto de smbolos para disear diagramas de flujo.

Nota. El smbolo de decisin es utilizado para representar a las estructuras cclicas y a las
estructuras de seleccin.
Reglas para disear un buen diagrama de Flujo
Al no haber un smbolo para colocar el encabezado del diagrama, se recomienda colocarlo en la parte
superior como un comentario.
Se debe comenzar el algoritmo con el smbolo inicio, al igual que indicar el trmino con el smbolo fin.
Despus del smbolo inicio, se colocan todas las funciones, mdulos, estructuras, variables y constantes
a usar en el smbolo datos.

Nota. La descripcin de la funcin o mdulo se debe de realizar en un diagrama de flujo


independiente.
Todas las lneas que conectan a dos smbolos deben de tener una punta de flecha. Una flecha con doble
sentido es incorrecta.
Se deben se usar solamente lneas de flujo horizontal y/o vertical.
Se debe evitar el cruce de lneas utilizando los conectores.
Se deben usar conectores solo cuando sea necesario.
No deben quedar lneas de flujo sin conectar.
Se deben trazar los smbolos de manera que se puedan leer de arriba hacia abajo y de izquierda a
derecha.
Todo texto escrito dentro de un smbolo deber ser escrito claramente, evitando el uso de muchas
palabras.
Al tomar una decisin, se debe indicar el valor de los caminos posibles, generalmente son falso y
verdadero.
36

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

// Diagrama de flujo que evalua la edad


inicio
edad : entera
cuanto aos tienes:

edad

Edad < 50

Eres Viejo

V
Eres Joven

Fin
Ilustracin 3 Ejemplo de cmo debe estar diseado un diagrama de flujo

3.3 Diagramas Estructurados (Nassi-Schneiderman)


El diagrama estructurado Nassi-Scheneiderman tambin conocido como diagrama de Chapn es una
mezcla de un diagrama de flujo con el pseudocdigo. Este diagrama se denomina as en honor a sus
inventores.
Se parece al diagrama de flujo ya que de manera visual podemos identificar el camino que se sigue
para resolver un algoritmo, pero sin utilizar flechas, ya que todas las acciones se colocan en cajas
contiguas. Se parece al pseudocdigo debido a que cada accin a realizar se escribe de igual manera
pero dentro de las ya mencionadas cajas sin utilizar una numeracin la cual en ocasiones es difcil de
realizar.
Un buen diagrama N-S debe de cumplir con lo siguiente:
En la primera caja de accin se coloca el encabezado o titulo del algoritmo.
En la segunda la palabra inicio y en la ltima la instruccin fin.
En la tercera las variables, funciones (solo la declaracin), estructuras y constantes.
En caso de las estructuras de seleccin y cclicas, indicar el valor del camino posible para evitar
confusiones.
Debe quedar diseado completamente en una sola pgina; nunca se debe continuar un diagrama en otra
hoja (salvo un mdulo o funcin), ya que este es considerado como una sola accin.
Sin embargo, presenta los siguientes inconvenientes:
Difciles de entender cuando el problema se vuelve muy complejo
Difciles de actualizar y cuando se tienen que modificar, la labor se vuelve tediosa pues hay que
redibujar las cajas que los componen.
Generalmente no caben en el ancho de una hoja.
se necesitan hojas grandes para disearlos y aun as es muy probable que no sea el espacio suficiente.
Aunque cada una de las acciones a realizar se coloca dentro de una caja, las estructuras de seleccin y
cclicas tienen una pequea variacin.
P.L.I. Carlos Augusto Flores Valerio

37

Diseo Estructurado De Algoritmos

SMBOLO

NOMBRE

DESCRIPCIN

Condicin

Es una pregunta, donde si la respuesta es verdad


se realizan unas tareas especificas y cuando es
falso se pueden realizar otras.

Repetir hasta

Indica el conjunto de acciones que se deben de


repetir hasta que la respuesta a la condicin sea
verdadera.

Hacer mientras

Indica el conjunto de acciones que se deben de


realizar mientras que la respuesta a la condicin
sea verdadera.

Hacer Para

Indica el nmero exacto de veces que un


conjunto de instrucciones se deben de repetir.

Condicin
F

acciones
Condicin
Condicin
acciones

Condicin
acciones

Tabla 20 Smbolos para estructuras de Seleccin y Cclicas

A continuacin tenemos un ejemplo de cmo se debe disear un diagrama N-S:


Diagrama N-S:

Gordo o Flaco

INICIO
Variables
Peso: Real : Trabajo
Escribir cuanto pesas?
Leer Peso
Peso > 80
Falso
Escribir ESTAS FLACO

Verdadero
Escribir ESTAS GORDO

FIN
Ilustracin 4 Ejemplo de un diagrama N-S

CONCLUSIN
El presente tema, nos mostr las tres diferentes tcnicas existentes para disear algoritmos.
El primer subtema, nos ense la estructura bsica del Pseudocdigo, el cul es un lenguaje informal
para resolver problemas orientados a computadoras y el cual es del tipo Escrito o No Grfico.

38

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

El segundo subtema nos describi la estructura y los smbolos utilizados para resolver un problema
orientado a computadoras por medio de la tcnica algortmica de Diagramas de Flujo, los cuales son
del tipo grfico.
El tercer subtema, nos mostr la tcnica algortmica de los Diagramas Estructurados N-S, la cual es
considerada del tipo hbrido ya que mezcla smbolos y texto para poder representar la solucin a un
problema orientado a computadoras.
En este tema se ha dado un pequeo paso para lograr el objetivo general del curso, pero an as, es muy
importante su total asimilacin, ya que aquella persona que no comprenda correctamente la estructura
de las tres diferentes tcnicas algortmicas, difcilmente disear algoritmos eficaces para la solucin de
problemas orientados a computadoras, por lo cual se considera haber avanzado otro 5%.
OBJETIVO DEL CURS0
25%

75%
% Cubierto
% Faltante

P.L.I. Carlos Augusto Flores Valerio

39

Diseo Estructurado De Algoritmos

40

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

IV. ESTRUCTURAS DE CONTROL


OBJETIVO

Al terminar este tema, el participante mediante la elaboracin de ejercicios, manejar


las diferentes estructuras de control utilizando las tres tcnicas algortmicas con la
finalidad de resolver problemas orientados a computadoras.

CONTENIDO
INTRODUCCIN
4.1 Estructuras Secunciales
4.2 Estructuras Condicionales
4.3 Estructuras cclicas
CONCLUSIN

INTRODUCCIN
Despus de haber conocido en el tema pasado las diferentes tcnicas algortmicas, en el presente tema
las vamos a utilizar para resolver problemas enfocados a computadoras. Pero como veremos estos
podrn utilizar tres estructuras diferentes.
Estos algoritmos tendrn la cualidad de llevar un orden progresivo, tomar decisiones y si es necesario
repetir un bloque de instrucciones un determinado nmero de veces.
Por lo antes mencionado, este tema requiere de toda nuestra capacidad para comprenderlo en su
totalidad, puesto quien lo asimile se puede considerar prcticamente un programador, ya que solo
tendr que adaptar sus algoritmos a un lenguaje de programacin. Adems de que los temas siguientes
solo bastar con adaptarlos a estos conocimientos. Lamentablemente quien no se sienta seguro de lo
aprendido, tendr que repasar nuevamente el mdulo.
Este tema se encuentra dividido en tres subtemas, donde cada uno maneja su funcionamiento con las
tcnicas ya estudiadas.
El primer subtema es el ms sencillo ya que habla de las estructuras secunciales, en las cuales no hay
decisiones que tomar y tan solo basta con analizar cuales son los datos de entrada necesarios para
producir las salidas deseadas.
El segundo subtema nos gua a disear algoritmos inteligentes, es decir que toman decisiones, para lo
cual se manejan las estructuras condicionales; de las cuales existen las condicionales sencillas que son
aquellas en donde solo existen dos caminos (falso y verdadero) y las de seleccin mltiple en las que
los caminos posibles son inmensos.
En el tercer subtema, crearemos algoritmos en los cuales un bloque de instrucciones se repite
dependiendo de la respuesta de una condicin, a esto es a lo que comnmente llamaremos ciclos y
existen de manera general 3 diferentes: los que se ejecutan un nmero exacto de veces, los que se
repiten hasta que la respuesta sea verdadera y los que se ciclan mientras la respuesta sea verdadera.
En este tema nos encontramos con ejemplos para asimilar el funcionamiento de las estructura y con
decenas de ejercicios, los cuales esperamos que resuelvas ya que mediante la prctica es como se te
formar una mentalidad de programador y solo as se podr alcanzar el objetivo de este tema y el
objetivo del curso.

4.1 Estructuras Secunciales


Los algoritmos ms sencillos de realizar son los que no toman decisiones, tan solo se dedican a realizar
o ejecutar instruccin tras instruccin en el orden determinado.
P.L.I. Carlos Augusto Flores Valerio

41

Diseo Estructurado De Algoritmos

Estos algoritmos estn representados por las estructuras secunciales, en las que una accin
(instruccin) sigue a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la
entrada de la siguiente y as sucesivamente hasta el fin del proceso.
De manera general un algoritmo con una estructura secuencial se representa de la siguiente forma en
las tres diferentes tcnicas algortmicas (el siguiente ejemplo no realiza nada en especfico, solo es de
carcter ilustrativo):
// No hace nada
Inicio
Pseudocdigo: no hace nada
Variables:

Variables:

// no hace nada
Inicio
Variables:

1.
2.
3.
4.
5.

Inicio
Accin 1
Accin 2
Accin 3
Fin

Accin 1

Accin 1
Accin 2

Accin 2
Accin 3

Accin 3
Fin

Fin
Ilustracin 5 Ejemplo de cmo se disea un algoritmo secuencial.

En las estructuras secunciales, se encuentran las acciones o instrucciones de inicio y fin, escribir en
monitor, imprimir en impresora, leer desde el teclado, guardar en una ubicacin especfica,
recuperar desde una ubicacin especfica, llamar y ejecutar a una funcin o mdulo y la ejecucin de
expresiones aritmticas para obtener un resultado guardndolo en una variable. El uso de estas
acciones ya fue explicado en el tema II y III.
A continuacin vamos a realizar algunos ejemplos, resolvindolos en las tres tcnicas algortmicas,
para lo cual debemos de recordar que para disear un algoritmo, debemos de realizar tres pasos:
Analizar el problema que se nos esta planteando. En este anlisis hay que identificar cuales son los
datos de salida, es decir, los resultados que debe de arrojar nuestro algoritmo; identificar cuales son los
datos de entrada necesarios para lograr los resultados esperados, es decir, los datos que nos tiene que
dar el usuario; identificar los procesos a realizar con los datos de entrada para obtener los datos de
salida, en otras palabras las expresiones a calcular; y en caso de ser necesario identificar los datos que
permanecen constantes durante todo el proceso o algoritmo.
Disear el Algoritmo en alguna de las tres tcnicas algortmicas conocidas, pero en estos casos sern
todas.
Probar el algoritmo para evitar un posible error lgico, para lo cual se hace una corrida de escritorio,
lo cual significa dar valores ficticios a las variables y checar los resultados.

Ejemplo

Realizar un algoritmo que calcule la edad de una persona a la cual solo se le solicitar el ao en
que naci.
Paso I. Analizar el problema.
Cada uno de estos datos se debe de expresar en variables y no en frases largas.
Salidas
Entrada
Constantes
Procesos
Ao_nac
Edad
Edad = Ao_act Ao_nac
Ao_act
42

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos


Paso II. Disear El algoritmo
PS EU DO C D I GO
Pseudocdigo: Edad personal
Variables:
Edad: entera : trabajo // almacenar la edad del usuario
Ao_nac: entera : trabajo // guardar el ao en que naci
Ao_act: entera : trabajo // Contendr el ao en que estamos
Inicio
Escribir En que ao naciste? // muestra el mensaje que esta entre comillas
Leer Ao_nac // guarda el dato que es tecleado por el usuario en la variable
Escribir En que ao estamos?
Leer Ao_act
Edad = Ao_act Ao_nac // realiza una operacin y almacena el resultado en
// la variable de la izquierda de la expresin.
Escribir Tu edad actual es:, Edad // Cuando deseamos mostrar el contenido
// de una variable, esta no debe de
// estar entre comillas
Fin
// Es recomendable poner comentarios en todos nuestros algoritmos, ya que esto los // hace ms entendibles no solo para
nosotros sino para cualquier persona.
DI A GR AM A D E FL UJ O
// Diagrama de Flujo: Edad personal
Inicio
Edad : entera : trabajo
Ao_act : entera : trabajo
Ao_nac : entera : trabajo

// Declaracin de variables

en que ao naciste?
// Guarda el dato que es tecleado por el usuario
// en la variable

// Muestra el mensaje que esta entre comillas

Ao_nac
en que ao estamos?
Ao_act

Edad = Ao_act Ao_nac // realiza una operacin y almacena el resultado


// en la variable de la izquierda de la expresin.
// Cuando deseamos mostrar el
// contenido de una variable, esta no
// debe de estar entre comillas

Tu edad actual es:, Edad


fin

Diagrama N-S
// diagrama N-S : Edad Personal
Inicio
Variables:
Edad: entera : trabajo
// almacenar la edad del usuario
Ao_nac: entera : trabajo
// guardar el ao en que naci
P.L.I. Carlos Augusto Flores Valerio

43

Diseo Estructurado De Algoritmos


Ao_act: entera : trabajo
// Contendr el ao en que estamos
Escribir En que ao naciste?
// muestra el mensaje que esta entre comillas
Leer Ao_nac
// guarda el dato que es tecleado por el usuario en la variable
Escribir En que ao estamos?
Leer Ao_act
Edad = Ao_act Ao_nac
// realiza una operacin y almacena el resultado en la variable de la
// izquierda de la expresin.
Escribir Tu edad actual es:, Edad // Cuando deseamos mostrar el contenido de una variable, esta no
// debe de estar entre comillas
Fin
Paso III. Prueba Del Algoritmo.
Valores a entradas
Procesos
Ao_nac = 1977
Edad = Ao_act Ao_nac
Ao_act = 2004
Edad = 2004 - 1977
Tabla 21 Ejemplo 1 de una estructura secuencial

Resultados

Edad = 27

Nota. Con el paso del tiempo y con la prctica, no ser necesario escribir los pasos I y II, ya que
estos se pueden realizar mentalmente o en un pedazo de papel, pero no de manera formal.

Nota. Con la prctica ser posible solo declarar la variable y su tipo, sin necesidad de indicar su
uso.

Ejemplo

Supongamos que en una tortillera se necesita un sistema que calcule y le muestre


el total a pagar por cada cliente, si sabemos que cada kilo de tortilla cuesta $4.50.

Paso I. Analizar el problema.


Salidas
Entrada
Constantes
Total
Kilos
P_kilo = 4.5
Paso II. Disear El algoritmo
PS EU DO C D I GO
Pseudocdigo: total a pagar
Constantes:
P_kilo: real = 4.5
Variables:
Total : real : trabajo
Kilos : real : trabajo
Inicio
Escribir Cuantos Kilos quieres?
Leer kilos
Total = Kilos * P_kilos
Escribir el total a pagar es:, Total
Fin
DI A GR A M A D E FL UJ O

44

Procesos
Total = kilos * P_kilos

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

// Diagrama de Flujo: Total a pagar


Inicio
CONSTANTES:
P_Kilo : real = 4.5
VARIABLES:
Total : real : trabajo
Kilos : real : trabajo
Cuantos kilos quieres?
Kilos

Total = Kilos * P_kilos


El total a pagar es:, total
fin
Diagrama N-S
// diagrama N-S : total a pagar
Inicio
Constantes:
P_kilo: real = 4.5
Variables:
Total : real : trabajo
Kilos : real : trabajo
Escribir Cuantos Kilos quieres?
Leer kilos
Total = Kilos * P_kilos
Escribir el total a pagar es:, Total
Fin
Paso III. Prueba Del Algoritmo.
Valores a entradas
Procesos
Kilos = 3.5
Total = Kilos * P_kilos
Total = 3.5 * 4.5
Tabla 22 Ejemplo 2 de una estructura secuencial

Ejemplo

Total = 15.75

Suponga que un individuo desea invertir su capital en un banco y desea saber


cuanto dinero ganar despus de un ao si el banco paga a razn de 2% mensual.

Paso I. Analizar el problema.


Salidas
Entrada
Ganancia

Resultados

Capital

Constantes
Interes = 0.02
Ao = 12

Procesos
Ganancia =(Capital * Interes) * Ao

Paso II. Disear El algoritmo


PS EU DO C D I GO
P.L.I. Carlos Augusto Flores Valerio

45

Diseo Estructurado De Algoritmos


Pseudocdigo: Ganancias Anuales
Variables:
Ganancia : real : trabajo
Capital : real : trabajo
Constantes:
Interes : real = 0.02
Ao : entero = 12
Inicio
Escribir cuanto dinero piensas invertir?
Leer Capital
Ganancia = ( Capital * Interes ) * Ao
Escribir Tu ganancia ser de:, Ganancia
Fin
DI A GR AM A D E FL UJ O
// Diagrama de Flujo: Ganancias anuales
Inicio
CONSTANTES:
Interes : real = 0.02
Ao : entero = 12
VARIABLES:
Ganancia : real : trabajo
Capital : real : trabajo

Cuantos dinero piensas invertir?

Capital

Ganancia = ( Capital * Interes ) * Ao

Tu ganancia ser de:. Ganancia

fin
Diagrama N-S
// diagrama N-S : Ganancias Anuales
Inicio
Variables:
Ganancia : real : trabajo
Capital : real : trabajo
Constantes:
Interes : real = 0.02
Ao : entero = 12
Escribir cuanto dinero piensas invertir?
46

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos


Leer Capital
Ganancia = ( Capital * Interes ) * Ao
Escribir Tu ganancia ser de:, Ganancia
Fin
Paso III. Prueba Del Algoritmo.
Valores a entradas
Procesos
Capital = 10000
Ganancia = ( Capital * Interes ) * Ao
Ganancia = ( 10000 * 0.02 ) * 12
Tabla 23 Ejemplo 3 de una estructura secuencial.

Resultados

Ganancia = 2400

Ejercicios. Resuelve lo que se te pide.


I. Disea un algoritmo para cada uno de los problemas que se te plantean, utilizando las tres tcnicas
algortmicas.
Un vendedor recibe un sueldo base ms un 10% extra por comisin de sus ventas, el vendedor desea
saber cuanto dinero obtendr por concepto de comisiones por las tres ventas que realiza en el mes y el
total que recibir en el mes tomando en cuenta su sueldo base y comisiones.
Una tienda ofrece un descuento del 15% sobre el total de la compra y un cliente desea saber cuanto
deber pagar finalmente por su compra.
Un alumno desea saber cual ser su calificacin final en la materia de Algoritmos. Dicha calificacin se
compone de tres exmenes parciales.
Un maestro desea saber que porcentaje de hombres y que porcentaje de mujeres hay en un grupo de
estudiantes.
Dada una cantidad en pesos, obtener la equivalencia en dlares, asumiendo que la unidad cambiaria es
un dato desconocido.
Calcular el nuevo salario de un obrero si obtuvo un incremento del 25% sobre su salario anterior.
Calcular el rea de un crculo.
Convertir una distancia en metros a pies y pulgadas.
Elevar al cubo un nmero.
Desplegar el peso dado en kilos de una persona en gramos, libras y toneladas.

4.2 Estructuras Condicionales


Las estructuras condicionales comparan una variable contra otro(s) valor(es), para que en base al
resultado de esta comparacin, se siga un curso de accin dentro del programa.
Estas estructuras son las que nos dan la capacidad de crear sistemas inteligentes, es decir, que toman
decisiones.
Cabe mencionar que la comparacin se puede hacer contra otra variable o contra una constante, segn
se necesite. Existen dos tipos bsicos, las simples y las mltiples.
Condiciones Simples. Son aquellas en que solamente se puede
escoger uno de dos caminos posibles y al seleccionar se ejecutarn las
instrucciones que se encuentren dentro de este. Esto es similar a la
situacin que sufrimos cuando nos encontramos en la punta de una
cuchilla, solamente se puede ir por un camino ya que es imposible
cruzar por ambos a la vez.
47

P.L.I. Carlos Augusto Flores Valerio

Ilustracin 6 Condicin simple

Diseo Estructurado De Algoritmos

Condiciones Mltiples. Son aquellas en que solamente se puede


escoger uno de n caminos posibles, y al seleccionar se ejecutarn las
instrucciones que se encuentren dentro de este. Esto es similar a la
situacin que sufrimos cuando nos encontramos en un cruce de
caminos, solamente se puede ir por un camino ya que es imposible
cruzar por todos a la vez.
En este momento analizaremos a las condiciones simples con las tres
tcnicas algortmicas ya conocidas.
En pseudocdigo se utiliza la instruccin si ... entonces, donde en
lugar de los puntos suspensivos se coloca la expresin a evaluar (en
esta parte es donde nos sirven los operadores lgicos y relacionales),
donde si el resultado de esta evaluacin es verdadero se ejecutan las
instrucciones que se encuentran entre esta instruccin y las palabras si Ilustracin 7 Condicin Mltiple
no; Pero si el resultado es falso, se ejecutan las instrucciones que se
encuentran despus de las palabras si no y las palabras fin si. Por lo cual podemos decir que los
delimitadores de esta estructura son las palabra si ... entonces y fin si.
Las instrucciones que se encuentran dentro de la condicin si...entonces pueden ser estructuras
secunciales y en este caso las acciones llevan una subnumeracin secuencial, menos las palabras si
no y fin si.
Sugerencia. Colocar una sangra a las acciones internas a la condicin para tener una mejor
legibilidad de nuestro algoritmo.
Al momento de disear un algoritmo con esta estructura se puede omitir el lado falso, es decir las
instrucciones dentro del si no y el fin si; En caso de no desear hacer nada en esta parte.
Sugerencia. En caso de no desear hacer nada en el lado falso de la condicin, es recomendable
poner dentro de las palabras si no y fin si el siguiente comentario: // no hace nada
Inicio
Accin 1
Accin 2
Si Variable operador valor entonces
4.1 Accin 3
4.2 Accin 4
Si no
4.3 Accin 5
4.4 Accin 6
Fin si
Accin 7
Accin 8
Fin
Ilustracin 8 Estructura condicional simple en pseudocdigo.

En diagrama de flujo esta representada por el smbolo decisin, donde, dentro de este se coloca la
expresin a evaluar, y del smbolo salen dos flujos o flechas donde cada una debe de tener la leyenda
del camino posible (falso o verdadero), estos flujos indican el conjunto de acciones o instrucciones a
realizar dependiendo de la respuesta a la condicin. El final de la estructura se indica uniendo
nuevamente los dos flujos en uno solo, en caso de no desear realizar acciones dentro del lado falso, se
debe de sacar la forzosamente la flecha para tener una indicacin de donde termina la estructura.

48

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

Inicio
Accin 1
Accin 2

Variable operador valor


Accin 3

Accin 5

Accin 4

Accin 6
Accin 7
Accin 8
Fin

Ilustracin 9 Estructura condicional Simple en diagrama de flujo

En diagrama N-S se utiliza para representar la estructura al smbolo Condicin, donde en el triangulo
de en medio se coloca la expresin a evaluar, en los tringulos izquierdo y derecho se colocan las
leyendas verdadero y falso respectivamente y debajo de estos las cajas que contienen cada una de las
instrucciones a realizar. La estructura condicional simple termina colocando una caja con una
instruccin que abarca todo el ancho de ambos caminos.
Diagrama N-S:

No hace nada

INICIO
Accin 1
Accin 2
Variable operador

valor

Verdad
ero
Accin 3

Accin 5

Accin 4

Accin 6

Falso

Accin 7
Accin 8
FIN
Ilustracin 10 Estructura condicional Simple en diagrama N-S

A continuacin realizamos unos ejemplos de estructuras condicionales simples, utilizando las tres
tcnicas algortmicas. Pero adems veremos otros ejemplos utilizando el concepto de anidacin.
La anidacin es el proceso de colocar dentro de una estructura ya sea condicional o cclica otra
estructura condicional o cclica.

Ejemplo

Se necesita un sistema para un supermercado, el cual dar un 10% de descuento a las personas
que compren ms de $1000, al cliente se le debe de dar el total a pagar.
Paso I. Analizar el problema.
Salidas
Entrada
Constantes
Procesos
P.L.I. Carlos Augusto Flores Valerio

49

Diseo Estructurado De Algoritmos


Cuando subtotal > 1000
Descuento = Subtotal * 0.10
Total = Subtotal Descuento
Cuando Subtotal <= 1000
Total = Subtotal

Subtotal
Descuento

Total

Paso II. Disear El algoritmo


PS EU DO C D I GO
Pseudocdigo: Supermercado
Variables:
Total : real : trabajo
Subtotal : real : trabajo
Descuento : real : trabajo
Inicio
Escribir Cuanto compr el cliente?
Leer Subtotal
Si Subtotal > 1000 entonces
4.1 Descuento = Subtotal * 0.10
4.2 Total = Subtotal Descuento
si no
4.3 Total = Subtotal
fin si
Escribir el total a pagar es:, Total
Fin
DI A GR AM A D E FL UJ O
// Diagrama de flujo: Supermercado
Inicio
Variables:
Total : real : trabajo
Subtotal : real : trabajo
Descuento : real : trabajo
Cuanto compr el cliente?
Subtotal

F
Subtotal > 1000

Descuento = Subtotal * 0.10

Total = Subtotal

Total = Subtotal Descuento

total a pagar es:, Total

Fin

Diagrama N-S

50

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

// Diagrama N-S: Supermercado


Variables:
Total : real : trabajo
Subtotal : real : trabajo
Descuento : real : trabajo
Inicio
Escribir Cuanto compr el cliente?
Leer Subtotal
Subtotal > 1000
Verdadero
Descuento = Subtotal * 0.10

Falso
Total = Subtotal

Total = Subtotal Descuento


Escribir el total a pagar es:, Total
Fin
Paso III. Prueba Del Algoritmo.
Valores a entradas
Procesos
Subtotal > 1000
750. 80 > 1000 NO
Subtotal = 750.80
Total = Subtotal
Total = 750.80
Subtotal > 1000
1300 > 1000 SI
Descuento = Subtotal * 0.10
Descuento = 1300 * 0.10
Subtotal = 1300
Descuento = 130
Total = Subtotal Descuento
Total = 1300 130
Total = 1170
Tabla 24 Ejemplo 1 de una Estructura Condicional simple.

Resultados
Total = 750.80

Total = 1170

En este ejemplo, se dieron diferentes valores a subtotal para ver que es lo que pasa cuando se va por
cualquier camino.
Aspecto Crtico. En este ejemplo, reciben el descuento del 10% solo aquellos clientes que su
compra es mayor a $1000, los que compraron $1000 exactamente no reciben descuento. Por lo cual si
se quiere que esta cifra tenga descuento, en la expresin debemos de colocar el operador mayor o
igual.
Se necesita un sistema que reciba tres calificaciones parciales de un alumno y en base a estas darle
su promedio donde si el promedio es menor a 6 se le dir que esta reprobado, en caso contrario el
Ejemplo
mensaje ser aprobado
Paso I. Analizar el problema.
Salidas
Entrada
Constantes
Procesos
Prom = (cal1 + cal2 + cal3) / 3
Prom
Cal1
Cuando Prom < 6
Un mensaje (Aprobado Cal2
REPROBADO
o Reprobado)
Cal3
Cuando Prom >= 6
APROBADO
Paso II. Disear El algoritmo

P.L.I. Carlos Augusto Flores Valerio

51

Diseo Estructurado De Algoritmos


PS EU DO C D I GO
Pseudocdigo: Promedio alumno
Variables:
prom, cal1, cal2, cal3 : real : trabajo
// La declaracin de varias variables y constantes del mismo tipo se puede realizar // en el mismo rengln siempre y cuando
el nombre de cada una este separado por una // coma.
Inicio
Escribir dame calificacin de primer parcial:
leer cal1
Escribir dame calificacin de segundo parcial:
leer cal2
Escribir dame calificacin de tercer parcial:
leer cal3
prom = (cal1 + cal2 + cal3) / 3
Si prom < 6 entonces
9.1 Escribir Tu promedio es:, prom, y estas REPROBADO
Si no
9.2 Escribir Tu promedio es:, prom, y estas APROBADO
Fin si
Fin
DI A GR AM A D E FL UJ O
// Diagrama de flujo: Promedio
Inicio
Variables:
prom, cal1, cal2, cal3: real : trabajo
Dame calificacin de primer parcial
cal1
Dame calificacin de segundo parcial
cal2
1

52

// Conector a otra pgina

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

1
Dame calificacin de tercer parcial
cal3
Prom = (cal1 + cal2+ cal3) / 3
V

F
prom < 6

Tu promedio es:, prom,


estas REPROBADO

Tu promedio es:, prom,


estas APROBADO

Fin
Diagrama N-S
Diagrama N-S: Promedio alumno
Inicio
Variables:
Prom, cal1, cal2, cal3 : real : trabajo
Escribir dame calificacin de primer parcial:
Leer cal1
Escribir dame calificacin de segundo parcial:
Leer cal2
Escribir dame calificacin de tercer parcial:
Leer cal3
Prom = (cal1 + cal2 + cal3) / 3
prom < 6
Verdadero
Escribir tu promedio es:, prom, y estas
REPROBADO
Fin

Falso
Escribir tu promedio es:, prom, y estas
APROBADO

Paso III. Prueba Del Algoritmo.


Valores a entradas
Procesos
Resultados
prom = (cal1 + cal2 + cal3) / 3
prom = (8.5 + 9.2 + 6.8) / 3
cal1 = 8.5
Prom = 8.16
prom = 24.5 / 3
cal2 = 9.2
prom = 8.16
APROBADO
cal3 = 6.8
prom < 6
8.16 < 6 NO
prom = (cal1 + cal2 + cal3) / 3
prom = (4.5 + 6.2 + 5.3) / 3
cal1 = 4.5
Prom = 5.33
prom = 16 / 3
cal2 = 6.2
prom = 5.33
REPROBADO
cal3 = 5.3
prom < 6
5.33 < 6 SI
Tabla 25 Ejemplo 2 de una estructura condicional simple
Se necesita un sistema para un supermercado, en el cual si el monto de la compra del cliente es
Ejemplo
mayor de $5000 se le har un descuento del 30%, si es menor o igual a $5000 pero mayor que

P.L.I. Carlos Augusto Flores Valerio

53

Diseo Estructurado De Algoritmos


$3000 ser del 20%, si no rebasa los $3000 pero si los $1000 la rebaja efectiva es del 10% y en
caso de que no rebase los $1000 no tendr beneficio.
Paso I. Analizar el problema.
Salidas
Entrada
Constantes
Procesos
Cuando subtotal > 5000
descuento = subtotal * 0.30
total = subtotal descuento
Cuando subtotal > 3000 pero <= 5000
descuento = subtotal * 0.20
subtotal
Total
total = subtotal descuento
descuento
Cuando subtotal > 1000 pero <= 3000
descuento = subtotal * 0.10
total = subtotal descuento
Cuando subtotal <= 1000
total = subtotal
Paso II. Disear El algoritmo
PS EU DO C D I GO
Pseudocdigo: Descuentos
Variables:
total, subtotal, descuento : real : trabajo = 0
// se inicializan todas las variables con el valor de cero
Inicio
Escribir Cuanto compr el cliente?
Leer subtotal
Si subtotal > 5000 entonces // inicio de primera condicin
4.1 descuento = subtotal * 0.30
si no // lado falso de primera condicin
4.2 si subtotal > 3000 entonces // inicio de segunda condicin
4.2.1 descuento = subtotal * 0.20
si no // lado falso de segunda condicin
4.2.2 si subtotal > 1000 entonces // inicio tercera cond.
4.2.2.1 descuento = subtotal * 0.10
si no // lado falso tercera condicin
// no hace nada
fin si // fin de tercera condicin
fin si // fin de segunda condicin
fin si // fin de primera condicin
total = subtotal - descuento
Escribir el total a pagar es:, Total
Fin
DI A GR AM A D E FL UJ O

54

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

// Diagrama de flujo: Descuentos


Inicio
Variables:
total , subtotal, descuento : real : trabajo = 0
Cuanto compr el cliente?
subtotal
V

subtotal > 5000


F
V

subtotal > 3000

descuento = subtotal * 0.20


V
descuento = subtotal * 0.30

subtotal > 3000


F

descuento =subtotal * 0.10

total = subtotal descuento


total a pagar es:, total
Fin
Diagrama N-S
Pseudocdigo: Descuentos
Inicio
Variables:
total, subtotal, descuento : real : trabajo = 0
Escribir Cuanto compr el cliente?
Leer subtotal
subtotal > 5000

verdad

falso

descuento=subtotal*0.30

subtotal > 3000

descuento=subtotal*0.20

subtotal > 1000

F
descuento=subtotal*0.10

total = subtotal - descuento


Escribir el total a pagar es:, Total
Fin

Paso III. Prueba Del Algoritmo.


P.L.I. Carlos Augusto Flores Valerio

55

Diseo Estructurado De Algoritmos


Valores a entradas

Procesos
subtotal > 5000
5300 > 5000 SI
descuento = subtotal * 0.30
descuento = 5300 * 0.30
subtotal = 5300
descuento = 1590
total = subtotal descuento
total = 5300 1590
total = 3710
subtotal > 5000
4100 > 5000 NO
subtotal > 3000
4100 > 3000 SI
descuento = subtotal * 0.20
subtotal = 4100
descuento = 4100 * 0.20
descuento = 820
total = subtotal descuento
total = 4100 820
total = 3280
subtotal > 5000
1850 > 5000 NO
subtotal > 3000
1850 > 3000 NO
subtotal > 1000
1850 > 3000 SI
subtotal = 1850
descuento = subtotal * 0.10
descuento = 1850 * 0.10
descuento = 185
total = subtotal descuento
total = 1850 185
total = 1665
subtotal > 5000
700 > 5000 NO
subtotal > 3000
700 > 3000 NO
subtotal = 700
subtotal > 1000
700 > 3000 NO
total = subtotal descuento
total = 700 0
total = 700
Tabla 26 Ejemplo 3 de una estructura condicional simple anidada

Resultados

Total = 3710

Total = 3280

Total = 1665

Total = 700

En este ejemplo, se inicializaron las variables a cero, con lo cual se pudo resolver la expresin total =
subtotal descuento, ya que descuento poda tener cualquier valor, adems gracias a esto pudimos
colocar la expresin fuera de toda estructura.
Se necesita un sistema que le muestre a un alumno su calificacin en letra y su promedio, el
promedio se saca en base a 3 parciales, donde si el promedio es menor a 6 su letra es NA, si es
Ejemplo
mayor o igual a 6 y cuando mucho 8 le corresponde S, si sobrepasa el 8 pero menor o igual a 9
debe tener B, todo lo dems es una E.
Paso I. Analizar el problema.
Salidas
Entrada
Constantes
Procesos
prom = (cal1 + cal2 + cal3) / 3
Cal1
cuando prom < 6
Mensaje (NA, S, B, E) Cal2
NA
Cal3
Cuando prom >= 6 pero <= 8
S

56

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos


Cuando prom > 8 pero <= 9
B
Cuando prom > 9
E
Paso II. Disear El algoritmo
PS EU DO C D I GO
Pseudocdigo: Promedio en letra
Variables:
cal1, cal2, cal3, prom : real : trabajo
Inicio
Escribir dame calificacin de primer parcial:
leer cal1
Escribir dame calificacin de segundo parcial:
leer cal2
Escribir dame calificacin de tercer parcial:
leer cal3
prom = (cal1 + cal2 + cal3) / 3
Si prom < 6 entonces
9.1 Escribir Tu calificacin con letra es NA
Si no
9.2 Si prom <= 8 entonces
9.2.1 Escribir Tu calificacin con letra es S
Si no
9.2.2 Si prom <= 9 entonces
9.2.2.1 Escribir Tu calificacin con letra es B
Si no
9.2.2.2 Escribir Tu calificacin con letra es E
Fin si
Fin si
Fin si
Escribir ya que tu promedio es:, prom
fin
DI A GR AM A D E FL UJ O

P.L.I. Carlos Augusto Flores Valerio

57

Diseo Estructurado De Algoritmos

// Diagrama de flujo: Promedio en letra


Inicio
Variables:
cal1, cal2, cal3, prom : real : trabajo
Calificacin primer parcial?
cal1
Calificacin segundo parcial?
cal2
Calificacin tercer parcial?
cal3

prom = ( cal1 + cal2 + cal3 ) / 3


V

prom < 6
F
V

prom <= 8
F

S
V
NA

prom <= 9
F

B
E

Ya que tu promedio es: , prom

Fin
Diagrama N-S
58

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

Pseudocdigo: Promedio en letra


Inicio
Variables:
prom, cal1, cal2, cal3 : real : trabajo = 0
Escribir dame calificacin de primer parcial
Leer cal1
Escribir dame calificacin de segundo parcial
Leer cal2
Escribir dame calificacin de tercer parcial
Leer cal3
Prom = ( cal1 + cal2 + cal3 ) / 3
prom < 6
v
F
Escribir
prom <= 8
calificacin con letra es
V
NA
Escribir
calificacin con letra es S

prom <= 9
V
F
Escribir
calificacin con letra es
B

Escribir Ya que tu promedio es:, prom


Fin
Paso III. Prueba Del Algoritmo.
Valores a entradas
Procesos

cal1 = 4
cal2 = 5
cal3 = 3

cal1 = 8
cal2 = 6
cal3 = 7

cal1 = 9
cal2 = 8

prom = ( cal1 + cal2 + cal3 ) / 3


prom = ( 4 + 5 + 3 ) / 3
prom = 4
prom < 6
4 < 6 SI
calificacin con letra es NA
ya que tu promedio es: 4

prom = ( cal1 + cal2 + cal3 ) / 3


prom = ( 8 + 6 + 7 ) / 3
prom = 7
prom < 6
7 < 6 NO
prom <= 8
7 <= 8 SI
calificacin con letra es S
ya que tu promedio es: 7

prom = ( cal1 + cal2 + cal3 ) / 3


prom = ( 8 + 6 + 7 ) / 3

P.L.I. Carlos Augusto Flores Valerio

Escribir
calificacin con letra es E

Resultados

NA
prom = 4

S
prom = 7

B
59

Diseo Estructurado De Algoritmos

cal3 = 9

cal1 = 10
cal2 = 9
cal3 = 10

prom = 8.7
prom < 6
8.7 < 6 NO
prom <= 8
8.7 <= 8 NO
prom <= 9
<= 9 SI
calificacin con letra es B
ya que tu promedio es: 8.7
prom = ( cal1 + cal2 + cal3 ) / 3
prom = ( 8 + 6 + 7 ) / 3
prom = 9.7
prom < 6
9.7 < 6 NO
prom <= 8
9.7 <= 8 NO
prom <= 9
9.7 <= 9 NO
calificacin con letra es E
ya que tu promedio es: 8.7

prom = 8.7

E
prom = 9.7

Tabla 27 Ejemplo 4 de una estructura condicional simple anidada

Ejercicios. Realiza los siguientes ejercicios:


I. Escribe un algoritmo en pseudocdigo, diagrama de flujo y diagrama N-S para cada una de las
situaciones siguientes:
1. Necesitamos saber si una persona es joven o vieja basndonos en su edad. Joven es aquella
menor de 45 aos.
2. Necesitamos saber si el usuario es alto o chaparro. Chaparro es aquel que mide cuando mucho 1.65
mts.
3. Necesitamos verificar que la contrasea que escribe el usuario es igual a solrac. Dependiendo de lo
ingresado desplegar el mensaje correspondiente.
4. Que lea dos nmeros y los imprima en forma ascendente
5. Leer 2 nmeros; si son iguales que los multiplique, si el primero es mayor que el segundo que los
reste y si no, que los sume.
6. Leer tres nmeros diferentes e imprimir el nmero mayor.
7. El IMSS requiere clasificar a las personas que se jubilaran en el ao 2004. Existen tres tipos de
jubilaciones: por edad, por antigedad joven y por antigedad adulta. Las personas adscritas a la
jubilacin por edad deben tener 60 aos o mas y una antigedad en su empleo de menos de 25 aos.
Las personas adscritas a la jubilacin por antigedad joven deben tener menos de 60 aos y una
antigedad en su empleo de 25 aos o ms. Las personas adscritas a la jubilacin por antigedad adulta
deben tener 60 aos o mas y una antigedad en su empleo de 25 aos o mas.

60

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

8. Calcular la utilidad que un trabajador recibe en el reparto anual de utilidades si a este se le asigna un
porcentaje de su salario mensual que depende de su antigedad en la empresa de acuerdo con la
siguiente tabla:
Tiempo
Utilidad
Menos de 1 ao
5 % del salario
1 ao o mas y menos de 2 aos
7% del salario
2 aos o mas y menos de 5 aos
10% del salario
5 aos o mas y menos de 10 aos
15% del salario
10 aos o mas
20% del salario
9. Un obrero necesita calcular su salario semanal, el cual se obtiene de la sig. manera:
Si trabaja 40 horas o menos se le paga $16 por hora
Si trabaja ms de 40 horas se le paga $16 por cada una de las primeras 40 horas y $20 por cada hora
extra.
10. Una empresa quiere hacer una compra de varias piezas de la misma clase a una fbrica de
refacciones. La empresa, dependiendo del monto total de la compra, decidir que hacer para pagar al
fabricante.
Si el monto total de la compra excede de $500 000 la empresa tendr la capacidad de invertir de su
propio dinero un 55% del monto de la compra, pedir prestado al banco un 30% y el resto lo pagara
solicitando un crdito al fabricante.
Si el monto total de la compra no excede de $500 000 la empresa tendr capacidad de invertir de su
propio dinero un 70% y el restante 30% lo pagara solicitando crdito al fabricante.
El fabricante cobra por concepto de intereses un 20% sobre la cantidad que se le pague a crdito.
11. Determinar la cantidad de dinero que recibir un trabajador por concepto de las horas extras
trabajadas en una empresa, sabiendo que cuando las horas de trabajo exceden de 40, el resto se
consideran horas extras y que estas se pagan al doble de una hora normal cuando no exceden de 8; si
las horas extras exceden de 8 se pagan las primeras 8 al doble de lo que se pagan las horas normales y
el resto al triple.
Las estructuras condicionales mltiples se analizan a continuacin en las tres tcnicas algortmicas.
Pseudocdigo. Para representar estas estructuras, se debe de utilizar la instruccin casos para..., donde
en lugar de los puntos suspensivos se coloca la variable a evaluar. Para saber que instrucciones se van a
ejecutar cuando la variable tenga un valor especfico, se coloca una etiqueta cuando es igual a ...: por
cada uno de estos, en la cual en lugar de los puntos suspensivos hay que colocar el valor que puede
tener la variable. En caso de que se quiera realizar un conjunto de instrucciones para todos los dems
valores que no han sido tomados en cuenta, se puede utilizar la etiqueta para todos los dems
valores:. Para saber que se ha terminado la estructura, se coloca la instruccin fin casos.
Pseudocdigo: No hace nada
Variables
resp : entera : trabajo
Inicio
Escribir Escribe un nmero [1/2]
Leer resp
Casos para resp
Cuando es igual a 1:
Escribir escribiste un 1
Cuando es igual a 2:
P.L.I. Carlos Augusto Flores Valerio

61

Diseo Estructurado De Algoritmos

Escribir escribiste un 2
Para todos los dems valores:
Escribir No escribiste ni un 1 ni un 2
Fin casos
Fin
Ilustracin 11 Diseo que debe tener una estructura condicional mltiple.

Aspecto Crtico.

Los valores que puede tener una variable a evaluar en una estructura condicional
mltiple, solo pueden ser valores enteros, por lo cual se debe declarar la variable como tal.
Diagrama de flujo. Para representar un estructura de seleccin mltiple, se sigue usando el smbolo de
decisin, pero a diferencia de las estructuras de seleccin sencilla, ahora no sale una flecha por el lado
izquierdo y otra por el derecho, sale un solo camino del cual se desprenden todos los dems, y dentro
del smbolo no se coloca una expresin, solamente se coloca la variable a evaluar. Para saber que
instrucciones se van a ejecutar, en cada uno de los caminos se coloca una etiqueta con el valor, al igual
que en pseudocdigo se puede utilizar una etiqueta para todos los dems valores que no fueron
tomados en cuenta. El final de la estructura se indica uniendo todos los caminos en uno solo
nuevamente.
Inicio
Accin 1

variable

1:
Accin 2

2:
Accin 3

3:
Accin 4

4:
Accin 5

Dems valores:
Accin 6

Accin 7

Fin
Ilustracin 12 Diseo que debe de tener una estructura de seleccin mltiple.

Sugerencia. Es muy probable que al disear un diagrama de flujo que utiliza estructuras de
seleccin mltiple con varios posibles valores, no quepan todos en la misma hoja, por lo cual se deben
colocar conectores a otra hoja.
Diagrama N-S. Para representar una estructura condicional mltiple se sigue utilizando la caja de
decisin, pero esta se debe de dividir en todos los posibles valores. Al igual que en la tcnicas
algortmicas anteriores, existe un posible camino para todos los valores no tomados en cuenta. Esta
estructura ha terminado cuando todas las columnas en que se dividi se convierten en una sola.

62

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

Diagrama N-S:

No hace nada

INICIO
Accin 1
Accin 2
Variable
1
:
Accin 3

2:
Accin 4

3:
Accin 5

Otros
valores:
Accin 6

Accin 7
FIN
Ilustracin 13 Diseo de una estructura de seleccin mltiple.

A continuacin realizamos un par de ejemplos, pero antes debemos de entender que el principal uso de
estas estructuras es para el manejo de mens.

Nota. Al igual que todas las estructuras de cualquier tipo, estas se pueden anidar.
En ocasiones se querr ejecutar un mismo conjunto de instrucciones para diferentes posibles valores.
En este tipo de estructuras es posible determinar un rango de posibles valores utilizando lo siguiente:
valor_inicial...valor_final:.
Se necesita un sistema que tenga tres opciones, si se selecciona la primera se calcula el permetro
de un cuadrado, si la opcin es la dos se calcula el permetro de un triangulo equiltero, y cuando
Ejemplo
se elija la tres se calcula el permetro de un crculo, adems de que mandara un mensaje de error
en caso de presionar cualquier otro nmero.
Paso I. Analizar el problema.
Salidas
Entrada
Constantes
Procesos
Cuando opc == 1
perim = lado * 4
Cuando opc == 2
opc
perim = lado * 3
perim
lado
Cuando opc == 3
perim = lado * 3.1416
Cuando opc tenga otro valor
ERROR
Paso II. Disear El algoritmo
PS EU DO C D I GO
Pseudocdigo: men permetros
Variables:
opc : entera : trabajo
perim, lado : reales : trabajo = 0

Inicio
Escribir Menu de Permetros
Escribir 1. Cuadrado
Escribir 2. Triangulo
Escribir 3. Circulo
Escribir cual eliges?:
Leer opc
P.L.I. Carlos Augusto Flores Valerio

63

Diseo Estructurado De Algoritmos


Casos para opc
cuando es igual a 1:
Escribir dame el valor de un lado del cuadrado:
Leer lado
perim = lado * 4
cuando es igual a 2:
Escribir dame el valor de un lado del triangulo:
Leer lado
perim = lado * 3
cuando es igual a 3:
Escribir dame el valor del dimetro:
Leer lado
perim = lado * 3.1416
para todos los dems valores:
Escribir ERROR
fin casos
Escribir el resultado es:, perim
Fin
// En este programa no es necesario declarar tantas variables ya que solo se ir // por un solo camino. Esto nos ahorra al
momento de programar memoria.
DI A GR AM A D E FL UJ O

64

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

Inicio

opc:entera:trabajo
perim,lado:reales:trabajo = 0

Menu de Permetros
1. Cuadrado
2. Triangulo
3. Circulo
cual eliges?:

opc

opc

1:

2:

3:

Dame el valor
del lado del
cuadrado

Dame el valor
de un lado del
triangulo

Dame el valor
del dimetro

lado

lado

lado

perim = lado * 4

perim = lado * 3

Perim = lado * 3.1416

Dems valores:

ERROR

El resultado es:
perim

Fin
Diagrama N-S
P.L.I. Carlos Augusto Flores Valerio

65

Diseo Estructurado De Algoritmos

// diagrama N-S : Men permetros


Inicio
Variables:
opc:entera:trabajo
perim,lado:reales:trabajo = 0
Escribir Men permetros, 1. Cuadrado, 2. Triangulo, 3. Circulo, Cual eliges?:
Leer opc

opc
1:
2:
Escribir Dame el valor
Escribir Dame el valor
del lado del cuadrado
del lado del triangulo
Leer lado
Leer lado
perim = lado * 4
perim = lado * 3
Escribir El resultado es:, perim
Fin
Paso III. Prueba Del Algoritmo.
Valores a entradas
Procesos
opc = 1
opc == 1
lado = 5
1 == 1 SI
perim = lado * 4
perim = 5 * 4
perim = 20
opc = 2
opc == 1
lado = 10
2 == 1 NO
opc == 2
2 == 2 SI
perim = lado * 3
perim = 10 * 3
perim = 30
opc = 3
opc == 1
lado = 2
3 == 1 NO
opc == 2
3 == 2 NO
opc == 3
3 == 3 SI
perim = lado * 3.1416
perim = 2 * 3.1416
perim = 6.2832
opc == 1
8 == 1 NO
opc == 2
8 == 2 NO
opc == 3
8 == 3 NO

opc = 8

3:
Escribir Dame el valor
del dimetro
Leer lado
perim = lado * 3.1416

Dems valores:
Escribir ERROR

Resultados

perim = 20

perim = 30

perim = 6.2832

perim = 0

opc es otro valor SI


Tabla 28 Ejemplo 1 de una estructura de seleccin mltiple.
Un supermercado realiza una tmbola solo con aquellos clientes que realizan una compra superior
a $500, en la cual tienen que sacar de una canasta una bolita la cual tiene un nmero grabado, los
Ejemplo
premios se dan bajo la siguiente tabla:
# bolita
Premio

66

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos


1
2
3
4
5
Paso I. Analizar el problema.
Salidas
Entrada

MENSAJE

compra
n_bol

1 shampoo CAPRICE
1 paquete(3) de jabones ROSA VENUS
1 pasta de dientes COLGATE
1 bolsa de detergente MAS COLOR
1 caja de cereal ZUCARITAS
Procesos
Cuando compra > 500
Cuando n_bol == 1
1 shampoo CAPRICE
Cuando n_bol == 2
1 paquete(3) de jabones ROSA VENUS
Cuando n_bol == 3
1 pasta de dientes COLGATE
Cuando n_bol == 4
1 bolsa de detergente MAS COLOR
Cuando n_bol == 5
1 caja de cereal ZUCARITAS

Paso II. Disear El algoritmo


PS EU DO C D I GO
Pseudocdigo: Tmbola
Variables:
compra : real : trabajo
n_bol : entera : trabajo
Inicio
Escribir Total de compra:
Leer compra
si compra > 500 entonces
4.1 Escribir Nmero de bolita que sacaste:
4.2 Leer n_bol
4.3 Casos para n_bol
Cuando es igual a 1:
4.3.1 Escribir 1 shampoo CAPRICE
Cuando es igual a 2:
4.3.2 Escribir 1 paquete(3) de jabones ROSA VENUS
Cuando es igual a 3:
4.3.3 Escribir 1 pasta de dientes COLGATE
Cuando es igual a 4:
4.3.4 Escribir 1 bolsa de detergente MAS COLOR
Cuando es igual a 5:
4.3.5 Escribir 1 caja de cereal ZUCARITAS
Fin casos
si no
// no hace nada ya que no tiene derecho a sacar bolita
fin si
Fin
DI A GR AM A D E FL UJ O

P.L.I. Carlos Augusto Flores Valerio

67

Diseo Estructurado De Algoritmos

// Diagrama de flujo: Tmbola


Inicio

compra : real : trabajo


n_bol : entera :trabajo

Total de compra:

compra

Compra > 500

Nmero de bolita que sacaste::

n_bol

n_bol

1:

2:

1 shampoo
CAPRICE

3:

4:

1 pasta de
dientes
COLGATE
1 paquete(3) de
jabones ROSA
VENUS

5:
1 caja de cereal
ZUCARITAS

1 bolsa de
detergente MAS
COLOR

Fin
Diagrama N-S
68

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

// diagrama N-S : Tmbola


Inicio
Variables:
compra : real : trabajo
n_bol : entera : trabajo
Escribir Total de compra:
Leer compra
compra > 500
F

V
Escribir Nmero de bolita que sacaste:
Leer n_bol
n_bol
1:
Escribir
1 shampoo
CAPRICE

2:
Escribir
1 paquete (3)
jabones ROSA
VENUS

3:
Escribir
1 pasta de
dientes
COLGATE

4:
Escribir
1 bolsa de
detergente MAS
COLOR

5:
Escribir
1 caja de cereal
ZUCARITAS

Fin
Paso III. Prueba Del Algoritmo.
Valores a entradas
Procesos
compra > 500
compra = 350
350 > 500 NO
compra > 500
compra = 550
550 > 500 SI
n_bol = 1
n_bol == 1
1 == 1 SI
compra > 500
800 > 500 SI
compra = 800
n_bol == 1
n_bol = 2
2 == 1 NO
n_bol == 2
2 == 2 SI
compra > 500
630 > 500 SI
n_bol == 1
compra = 630
3 == 1 NO
n_bol = 3
n_bol == 2
3 == 2 NO
n_bol == 3
3 == 3 SI
compra > 500
920 > 500 SI
n_bol == 1
4 == 1 NO
compra = 920
n_bol == 2
n_bol = 4
4 == 2 NO
n_bol == 3
4 == 3 NO
n_bol == 4
4 == 4 SI
P.L.I. Carlos Augusto Flores Valerio

Resultados

-1 shampoo CAPRICE

1 paquete(3) jabones ROSA VENUS

1 pasta de dientes COLGATE

1 bolsa de detergente MAS COLOR

69

Diseo Estructurado De Algoritmos


compra > 500
501 > 500 SI
n_bol == 1
5 == 1 NO
n_bol == 2
compra = 501
5 == 2 NO
n_bol = 5
n_bol == 3
5 == 3 NO
n_bol == 4
5 == 4 NO
n_bol == 5
5 == 5 SI
compra > 500
500.01 > 500 SI
n_bol == 1
8 == 1 NO
n_bol == 2
compra = 500.01
8 == 2 NO
n_bol = 8
n_bol == 3
8 == 3 NO
n_bol == 4
8 == 4 NO
n_bol == 5
8 == 5 NO
Tabla 29 Ejemplo 2 de una estructura de seleccin mltiple.

1 caja de cereal ZUCARITAS

--

Se puede anidar cualquier estructura dentro de otra como en este ejemplo.

Ejercicios.
I. Escribe un algoritmo en las tres tcnicas manejadas para cada uno de los problemas siguientes:
1. Necesitamos visualizar un men del conalep, en el cual hay que elegir que semestre esta cursando un
alumno. Dependiendo la opcin elegida, que se despliegue un mensaje en el que se diga en que
semestre va.
2. Necesitamos un men del conalep en el que se visualicen las cuatro carreras que se imparten y
dentro de cada una de estas opciones que se visualice un men con los 6 semestres. Al seleccionarlo,
que se despliegue un mensaje de la carrera y semestre que cursa el alumno.
3. Necesitamos un men del conalep en el que se visualicen las cuatro carreras que se imparten y
dentro de cada una de estas opciones que se visualice un men con los 6 semestres, y dentro de cada
semestre hay que elegir entre el turno matutino y el vespertino. Al seleccionarlo, que se despliegue un
mensaje de la carrera, semestre y turno que cursa el alumno.
4. Necesitamos un men del conalep en el que se visualicen las cuatro carreras que se imparten; dentro
de cada una de estas opciones que se visualice un men con los 6 semestres; dentro de cada semestre
hay que elegir entre el turno matutino y el vespertino; Por ltimo hay que elegir si al alumno se le da de
alta o de baja. Al seleccionarlo, que se despliegue un mensaje de la carrera, semestre, turno y condicin
(baja o alta).
5. Un supermercado realiza una tmbola con todos los clientes, si son hombres tienen que sacar de una
canasta una bolita la cual tiene un nmero grabado y si son mujeres lo mismo pero de otra canasta, los
premios se dan bajo la siguiente tabla:
HOMBRES
70

MUJERES
P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

# bolita
1
2
3
4
5

Premio
Desodorante
SixPack de cerveza
Boxer
Rasuradora
Sudadera

# bolita
1
2
3
4
5

Premio
Locin
Bikini
Crema p/ la cara
Plancha
Barniz de uas

6. Una empresa automotriz necesita un sistema para seleccionar el tipo de carro (auto, camioneta o
vagoneta) lo cual debe de aparecer en un men, y el color (negro, blanco o rojo) en otro men. Al final
se necesita que despliegue la seleccin realizada.

Nota. Debe de anidarse una estructura de seleccin mltiple dentro de otra.


4.3 Estructuras Cclicas
Este tipo de estructuras, son las que nos permiten ejecutar varias veces un conjunto determinado de
instrucciones, a esta repeticin se le conoce con el nombre de ciclos.
De manera general existen 3 tipos de estructuras cclicas, las cuales manejaremos a continuacin, para
lo cual se explican, se desarrollan ejemplos y se resuelven ejercicios.
HACER MIENTRAS... Estructura cclica la cual indica un conjunto de instrucciones que se deben
de repetir mientras que la respuesta a la a la expresin que se coloca en lugar de los puntos suspensivos
sea verdadera. Es decir, que cuando la respuesta a la condicin sea falsa se contina con la siguiente
instruccin despus de la etiqueta fin mientras. El conjunto de instrucciones a ejecutar se encuentra
entre las instrucciones hacer mientras... y fin mientras.
Debido a su estructura es muy posible que nunca se ejecute el ciclo debido a varias circunstancias:
La variable a evaluar no tiene ningn valor almacenado.
Nunca se le pidi al usuario que almacenar un dato en la variable.
El usuario decidi no ingresar a la estructura.
Sugerencia. Se recomienda que la variable a ser evaluada sea inicializada con un valor que permita
no ingresar a la estructura para evitar lo que llamamos un ciclo infinito.
Aspecto Crtico. Siempre solicite al usuario un dato para la variable a evaluar antes de la instruccin
hacer mientras..., ya que probablemente no desea ingresar al ciclo.
Aspecto Crtico. Siempre coloque dentro de la estructura hacer mientras... las instrucciones que
permitan al usuario o al sistema almacenar un nuevo valor en la variable a evaluar para evitar un ciclo
infinito.
A continuacin vamos a esquematizar el diseo bsico de esta estructura en las tres tcnicas
algortmicas.
Pseudocdigo. En pseudocdigo se utilizan las instrucciones que hemos estado mencionando.
Pseudocdigo: ciclo hacer mientras
// Imprime HOLA tantas veces como el usuario presione s
Variables:
Resp : alfanumrica : trabajo = n
Inicio
Escribir deseas ingresar al ciclo:
Leer Resp
Hacer mientras Resp == s
Escribir hola
Escribir deseas ingresar nuevamente al ciclo:
P.L.I. Carlos Augusto Flores Valerio

71

Diseo Estructurado De Algoritmos

Leer Resp
Fin mientras
Escribir Gracias por usar este sistema
FIN
Ilustracin 14 Pseudocdigo bsico del ciclo hacer mientras...

Diagrama de Flujo. En diagrama de flujo, se utiliza el smbolo de decisin para representar a la


estructura, del cual salen dos caminos posibles: el verdadero y el falso. En la ruta del lado verdadero se
colocan todas las instrucciones que deseamos se repitan, despus de la ultima instruccin una flecha
debe de regresar y conectar justo entre el smbolo de decisin y el smbolo que se encuentra antes. Del
camino falso sale una flecha que conecta con la siguiente instruccin a ejecutar cuando se salga del
ciclo.
// Ciclo hacer mientras...
Inicio

Variables:
Resp : alfanumrica : trabajo = n
Deseas ingresar al ciclo:
Resp

Resp == s

V
Hola
Deseas ingresar
nuevamente al ciclo:

Resp

Gracias por usar este sistema

fin
Ilustracin 15 Diagrama de Flujo bsico del ciclo hacer mientras...

Diagramas N-S. Para representar esta estructura existe el smbolo especial hacer mientras..., el cual
es una sola caja con dos partes: la escuadra que parece un siete (7) pero apuntando al lado contrario, es
72

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

en donde se coloca la expresin a evaluar; la otra parte es la caja que se encuentra entre las dos paredes
de la escuadra, es donde se colocan las instrucciones a realizar cuando el ciclo se ejecute.
// Diagrama N-S: Ciclo hacer mientras...
Inicio
Variables:
Resp : alfanumrica : trabajo = n
Escribir Deseas ingresar al ciclo:
Leer Resp
Resp == s
Escribir HOLA
Escribir Deseas ingresar nuevamente al ciclo
Leer Resp
Escribir Gracias por usar este sistema
Fin
Ilustracin 16 Diagrama N-S bsico del ciclo hacer mientras...

A continuacin se presentan un par de ejercicios con las tres tcnicas algortmicas los cuales manejan
esta estructura.
Un maestro necesita un sistema para capturar las calificaciones de 3 parciales de sus alumnos,
despus recapturarlas necesita que se despliegue el promedio, cuando ya no quiera capturar ms
Ejemplo
alumnos, necesita que se despliegue el promedio general de todos los alumnos capturados.
Paso I. Analizar el problema.
Salidas
Entrada
Procesos
Cuando resp == s
par1
prom_alu = ( par1 + par2 par3 ) / 3
prom_alum
par2
acum_prom = acum_prom + prom_alu
prom_gen
par3
total_alum = total_alum + 1
resp
prom_gen = acum_prom / total_alum
Paso II. Disear El algoritmo
PS EU DO C D I GO
Pseudocdigo: calificaciones
Variables:
par1, par2, par3, prom_alum, prom_gen : reales : trabajo = 0
acum_prom : real : acumulador = 0
total_alum : entera : contador = 0
resp : alfanumrica = n
Inicio
Escribir deseas capturar calificaciones de un alumno:
Leer resp
Hacer mientras resp == s
Escribir primer parcial:
Leer par1
Escribir segundo parcial:
Leer par2
Escribir tercer parcial:
Leer par3
prom_alu = ( par1 + par2 par3 ) / 3
Escribir el promedio de este alumno es, prom_alum
acum_prom = acum_prom + prom_alu // acumula los promedios

P.L.I. Carlos Augusto Flores Valerio

73

Diseo Estructurado De Algoritmos


total_alum = total_alum + 1 // lleva el conteo del total de alumnos
Escribir deseas capturar otro alumno:
Leer resp
fin mientras
prom_gen = acum_prom / total_alum
Escribir Promedio general de los alumnos es:, prom_gen
Fin
DI A GR AM A D E FL UJ O
// D.F. : Calificaciones
Inicio

par1, par2, par3, prom_alum, prom_gen : reales : trabajo = 0


acum_prom : real : acumulador = 0
total_alum : entera : contador = 0
resp : alfanumrica = n
Deseas capturar calificaciones de un alumno:
resp

resp == s

V
primer parcial: Segundo parcial: tercer parcial:

par1, par2, par3

prom_alu = ( par1 + par2 par3 ) / 3


acum_prom = acum_prom + prom_alu
total_alum = total_alum + 1

el promedio de este alumno es, prom_alum


Deseas capturar a otro alumno:
resp

prom_gen = acum_prom / total_alum

Promedio general de los alumno es:, prom_gen

fin

Diagrama N-S
// diagrama N-S : Calificaciones

74

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos


Inicio
Variables:
par1, par2, par3, prom_alum, prom_gen : reales : trabajo = 0
acum_prom : real : acumulador = 0
total_alum : entera : contador = 0
resp : alfanumrica = n
Escribir deseas capturar calificaciones de un alumno:
Leer resp
resp == s
Escribir primer parcial:
Leer par1
Escribir segundo parcial:
Leer par2
Escribir tercer parcial:
Leer par3
prom_alu = ( par1 + par2 par3 ) / 3
Escribir el promedio de este alumno es, prom_alum
acum_prom = acum_prom + prom_alu
total_alum = total_alum + 1
Escribir deseas capturar otro alumno:
Leer resp
prom_gen = acum_prom / total_alum
Escribir Promedio general de los alumnos es:, prom_gen
Fin

Paso III. Prueba Del Algoritmo.


PRIMERA CORRIDA
resp = n
resp == s
n == s NO
prom_gen = acum_prom / total_alum
prom_gen = 0 / 0
prom_gen = 0
SEGUNDA CORRIDA
resp = s
resp == s
s == s SI
par1 = 9
par2 = 8
par3 = 10
prom_alu = ( par1 + par2 par3 ) / 3
prom_alu = ( 9 + 8 + 10 ) / 3
prom_alu = 9
acum_prom = acum_prom + prom_alu
acum_prom = 0 + 9
acum_prom = 9
total_alum = total_alum + 1
total_alum = 0 + 1
total_alum = 1

SEGUNDA CORRIDA (CONTINUACIN...)

P.L.I. Carlos Augusto Flores Valerio

75

Diseo Estructurado De Algoritmos


resp = s
resp == s
s == s SI
par1 = 7
par2 = 8
par3 = 9
prom_alu = ( par1 + par2 par3 ) / 3
prom_alu = ( 7 + 8 + 9 ) / 3
prom_alu = 8
acum_prom = acum_prom + prom_alu
acum_prom = 9 + 8
acum_prom = 17
total_alum = total_alum + 1
total_alum = 1 + 1
total_alum = 2
resp = s
resp == s
s == s SI
par1 = 10
par2 = 7
par3 = 10
prom_alu = ( par1 + par2 par3 ) / 3
prom_alu = ( 10 + 7 + 10 ) / 3
prom_alu = 9
acum_prom = acum_prom + prom_alu
acum_prom = 17 + 9
acum_prom = 26
total_alum = total_alum + 1
total_alum = 2 + 1
total_alum = 3
resp = n
resp == s
n == s NO
prom_gen = acum_prom / total_alum
prom_gen = 26 / 3

prom_gen = 8.67
Tabla 30 Ejemplo 1 de la estructura cclica Hacer mientras ...

En el ejemplo anterior se utiliza un ciclo, debido a que se necesita repetir un mismo conjunto de
instrucciones por cada alumno, adems se utiliza la estructura hacer mientras debido a que el total de
estudiantes a capturar es indefinido. Adems se utilizaron variables del tipo acumulador y contador.
Acum_prom, acumula los promedios y total_alum, lleva el conteo del nmero de alumnos.
Un supermercado dar un descuento del 10% a todos los clientes que el total de
su compra supere los $1000, adems se necesita saber a cuanto ascendieron los
Ejemplo
ingresos del da.

Paso I. Analizar el problema.


Salidas
Entrada

subtotal
ingresos

76

subtotal

Procesos

mientras haya clientes


capturar subtotal
cuando subtotal > 1000
descuento = subtotal * .10
total = subtotal descuento
en caso contrario
total = subtotal
P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

ingresos = ingresos + total


Paso II. Disear El algoritmo
PS EU DO C D I GO

pseudocdigo: supermercado
variables:
total, subtotal, descuento, ingresos : reales = 0
resp : alfanumrico = n
// si ya las sabe manejar no es necesario colocar el uso
Inicio
Escribir hay clientes en la tienda
Leer resp
Hacer mientras resp == s
Escribir cuanto compr el cliente?
Leer subtotal
Si subtotal > 1000 entonces
4.3.1 descuento = subtotal * 0.10
4.3.2 total = subtotal descuento
si no
4.3.3 total = subtotal
fin si
ingresos = ingresos + total
Escribir el total a pagar es:, total
Escribir Hay ms clientes en la tienda:
Leer resp
fin mientras
Escribir ingresos:, ingresos
Fin
DI A GR AM A D E FL UJ O

P.L.I. Carlos Augusto Flores Valerio

77

Diseo Estructurado De Algoritmos

// Diagrama de flujo: Supermercado


INICIO

total, subtotal, descuento, ingresos : reales = 0


resp : alfanumrico = n
Hay clientes:

resp

resp = s

V
Cuanto compr el cliente?

subtotal
V

F
subtotal > 1000

descuento = subtotal * 0.10


total = subtotal

total = subtotal descuento

ingresos = ingresos + total


total a pagar:,total
Hay ms clientes:

resp

ingresos:, ingresos
FIN
Diagrama N-S
78

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

// Diagrama N-S: Supermercado


Inicio
variables:
total, subtotal, descuento, ingresos : reales = 0
resp : alfanumrico = n
Escribir hay clientes en la tienda
Leer resp
resp == s
Escribir cuanto compr el cliente?
Leer subtotal
subtotal > 1000
VERDADERO
descuento = subtotal * 0.10
total = subtotal descuento
ingresos = ingresos + total
Escribir el total a pagar es:, total
Escribir Hay ms clientes en la tienda:
Leer resp
Escribir ingresos:, ingresos
FIN

FALSO
total = subtotal

Paso III. Prueba Del Algoritmo.


PRIMERA CORRIDA DE ESCRITORIO
resp = n
resp == s
n == s NO
ingresos = 0
SEGUNDA CORRIDA DE ESCRITORIO
resp = s
resp == s
s == s SI
subtotal = 1230
subtotal > 1000
1230 > 1000 SI
descuento = subtotal * .10
descuento = 1230 * .10
descuento = 123
total = subtotal descuento
total = 1230 - 123
total = 1107
ingresos = ingresos + total
ingresos = 0 + 1107
ingresos = 1107
resp = s
resp == s
s == s SI
subtotal = 800
subtotal > 1000
800 > 1000 NO
total = subtotal
total = 800
ingresos = ingresos + total
ingresos = 1107 + 800
ingresos = 1907
P.L.I. Carlos Augusto Flores Valerio

79

Diseo Estructurado De Algoritmos


resp = s
resp == s
s == s SI
subtotal = 4500
subtotal > 1000
4500 > 1000 SI
descuento = subtotal * .10
descuento = 4500 * .10
descuento = 450
total = subtotal descuento
total = 4500 - 450
total = 4050
ingresos = ingresos + total
ingresos = 1907 + 4050
ingresos = 5957
resp = s
resp == s
s == s SI
subtotal = 100
subtotal > 1000
100 > 1000 NO
total = subtotal
total = 100
ingresos = ingresos + total
ingresos = 5957 + 100
ingresos = 6057
resp = n
resp == s
n == s NO
ingresos = 6057
Tabla 31 Ejemplo 2 de estructura cclica hacer mientras

A continuacin se proponen unos cuantos ejercicios, los cuales al resolverlos reforzaran los
conocimientos adquiridos. Estos puede ser que necesiten estructuras anidadas.

Ejercicios.
I. Disea un algoritmo utilizando las tres diferentes tcnicas para cada uno de los problemas que se te
plantean.
Se necesita un sistema que lea los votos obtenidos por tres candidatos a presidente municipal en la
ciudad de Orizaba y calcule e imprima al ganador, junto con el porcentaje obtenido de votos.
Se necesita un programa para calcular el factorial de un nmero dado, que corresponda a la frmula:
N! = N*(N-1)*(N-2)* ... *(N-(N-1))
Se necesita un sistema que despliegue un men con 4 opciones, si se presiona la opcin 1, se calcular
el rea de un triangulo; si se presiona la opcin 2, se calcular el rea de un cuadrado; si se presiona la
opcin 3, se calcular el rea de un circulo; si se presiona la opcin 4, ser la nica forma de salir del
sistema.
Se necesita un sistema que pide una contrasea. Si la contrasea es igual a brete ssamo, se
terminar el programa, de otra manera se seguir solicitando la contrasea.
Se necesita que sistema que calcula permetros y reas, para lo cual aparece un men con tres opciones
(1. Permetros, 2. reas, 3. Salir) dentro de las primeras 2 opciones aparece otro men con 4 opciones
(1. Triangulo, 2. Cuadrado, 3. Circulo, 4. Regresar). Dentro del cual solo se puede volver al men
principal presionando la opcin 4.
80

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

REPETIR / HASTA... Estructura cclica la cual indica un conjunto de instrucciones que se deben
de repetir mientras que la respuesta a la condicin colocada en lugar de los puntos suspensivos sea
falsa. Es decir, que si la respuesta es verdadera se termina de ejecutar el ciclo.
A diferencia de la estructura hacer mientras..., esta estructura se ejecuta siempre al menos una vez,
debido a que las instrucciones a ejecutar se encuentran entre las etiquetas repetir y hasta ..., y la
expresin a evaluar se ejecuta despus de la ltima instruccin dentro del ciclo. An as es muy
probable que la estructura se ejecute infinidad de veces debido a las siguientes causas:
La variable a evaluar no tiene ningn valor almacenado.
Nunca se le pidi al usuario que almacenar un dato en la variable.
El usuario decidi ingresar nuevamente a la estructura.
Sugerencia. Se recomienda que la variable a ser evaluada sea inicializada con un valor que permita
romper la estructura, para evitar tener un ciclo infinito.
Aspecto Crtico. Siempre coloque dentro de la estructura repetir / hasta ... las instrucciones que
permitan al usuario o al sistema almacenar un nuevo valor en la variable a evaluar para evitar un ciclo
infinito.
A continuacin vamos a esquematizar el diseo bsico de esta estructura en las tres tcnicas
algortmicas.
Pseudocdigo. En pseudocdigo se utilizan las instrucciones que hemos estado mencionando.
Pseudocdigo: ciclo repetir hasta
// Imprime HOLA al menos una vez y todas las veces que el
// usuario presione algo diferente a n
Variables:
Resp : alfanumrica : trabajo = n
Inicio
Repetir
Escribir hola
Escribir deseas ingresar nuevamente al ciclo:
Leer Resp
Hasta Resp == n
Escribir Gracias por usar este sistema
FIN
Ilustracin 17 Pseudocdigo bsico del ciclo Repetir / Hasta...

Diagrama de Flujo. En diagrama de flujo, se utiliza el smbolo de decisin para representarla, pero el
smbolo se coloca antes de la siguiente instruccin a ejecutar despus de terminada la estructura. Del
smbolo salen los dos caminos posibles: el verdadero y el falso. La ruta del lado verdadero conecta con
la siguiente instruccin a ejecutar cuando se salga del ciclo. Del camino falso sale una flecha que
conecta justo antes de la primera de las instrucciones que deseamos se repitan y de la ltima instruccin
antes del ciclo.

P.L.I. Carlos Augusto Flores Valerio

81

Diseo Estructurado De Algoritmos

// Ciclo repetir / hasta...


INICIO

Variables:
Resp : alfanumrica : trabajo = n

Hola
Deseas ingresar nuevamente
al ciclo:

Resp

Resp == n
V
Gracias por usar este sistema

FIN
Ilustracin 18 Diagrama de flujo del ciclo Repetir / hasta ...

Diagramas N-S. Para representar esta estructura existe el smbolo especial repetir / hasta ..., el cual es
una sola caja con dos partes: la escuadra que parece una ele mayscula (L), es en donde se coloca la
expresin a evaluar; la otra parte es la caja que se encuentra entre las dos paredes de la escuadra, es
donde se colocan las instrucciones a realizar cuando el ciclo se ejecute.
// Diagrama N-S: Ciclo repetir hasta ...
Inicio
Variables:
Resp : alfanumrica : trabajo = n
Escribir HOLA
Escribir Deseas ingresar nuevamente al ciclo
Leer Resp
Resp == n
Escribir Gracias por usar este sistema
82

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

Fin
Ilustracin 19 Diagrama N-S bsico del ciclo repetir / hasta ...

Ejemplo

Se necesita un sistema que muestra el cuadrado de los nmeros que introduce el


usuario.

Paso I. Analizar el problema.


Salidas
Entrada
Procesos
nmero
cuando resp != n
num_elevado
resp
num_elevado = nmero * nmero
Paso II. Disear El algoritmo
PS EU DO C D I GO
Pseudocdigo: Cuadrados
Variables:
resp : alfanumrico == s
nmero, num_elevado : entero = 0
Inicio
Repetir
Escribir Nmero que quieres elevar al cuadrado:
Leer nmero
num_elevado = nmero * nmero
Escribir nmero, al cuadrado es:, num_elevado
Escribir Deseas calcular otro nmero:
Leer resp
Hasta resp == n
Fin
DI A GR AM A D E FL UJ O

P.L.I. Carlos Augusto Flores Valerio

83

Diseo Estructurado De Algoritmos

// diagrama de flujo: Cuadrados


INICIO
resp : alfanumrico == s
nmero, num_elevado : entero = 0

Nmero que quieres elevar al


cuadrado:

nmero

num_elevado = nmero * nmero

nmero al cuadrado es:,


num_elevado
deseas calcular otro nmero:

resp

resp == n
V
FIN
Diagrama N-S

// diagrama N-S : Cuadrados


Inicio
Variables:
resp : alfanumrico == s
nmero, num_elevado : entero = 0
Escribir Nmero que quieres elevar al cuadrado:
Leer nmero
num_elevado = nmero * nmero
Escribir nmero, al cuadrado es:, num_elevado
Escribir Deseas calcular otro nmero:
Leer resp
resp == n
Fin
Paso III. Prueba Del Algoritmo.
PRIMERA CORRIDA DE ESCRITORIO
84

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos


nmero = 5
num_elevado = nmero * nmero
num_elevado = 5 * 5
num_elevado = 25
resp = n
resp == n
n == n SI
SEGUNDA CORRIDA DE ESCRITORIO
nmero = 3
num_elevado = nmero * nmero
num_elevado = 3 * 3
num_elevado = 9
resp = s
resp == s
s == n NO
nmero = 7
num_elevado = nmero * nmero
num_elevado = 7 * 7
num_elevado = 49
resp = s
resp == s
s == n NO
nmero = 10
num_elevado = nmero * nmero
num_elevado = 10 * 10
num_elevado = 100
resp = s
resp == s
s == n NO
nmero = 8
num_elevado = nmero * nmero
num_elevado = 8 * 8
num_elevado = 64
resp = s
resp == n
n == n SI
Tabla 32 Ejemplo 1 que usa la estructura cclica Repetir Hasta...

En este ejemplo, como pudimos observar en la primera corrida de escritorio se ejecut una vez an
cuando la respuesta a la condicin fue verdadera, cosa que no ocurre con el ciclo hacer mientras...
Se necesita un sistema que calcule el salario mensual de n trabajadores, el cual se obtiene de la
siguiente forma:
Si trabaja 40 horas o menos se le paga $16 por hora
Ejemplo
Si trabaja ms de 40 horas se le paga $16 por cada una de las primeras 40 horas y $20 por cada
hora extra.
Paso I. Analizar el problema.
Salidas
Entrada
Procesos
cuando resp != n
si horas > 40
horas
salario
salario = 40 * 16 +( ( horas 40 ) * 20 )
resp
si no
salario = horas * 16
Paso II. Disear El algoritmo
PS EU DO C D I GO
Pseudocdigo: Salarios

P.L.I. Carlos Augusto Flores Valerio

85

Diseo Estructurado De Algoritmos


Variables:
Salario, horas : enteras = 0
Resp : alfanmerico = n
Inicio
repetir
Escribir Horas trabajadas:
Leer horas
si horas > 40 entonces
salario = 40 * 16 +( ( horas 40 ) * 20 )
si no
salario = horas * 16
fin si
Escribir salario:,salario
Escribir deseas calcular otro salario:
Leer resp
Hasta resp == n
Fin
Diagrama N-S
// diagrama N-S : Salarios
Inicio
variables:
salario, horas : enteras = 0
resp : alfanmerico = n
Escribir Horas trabajadas:
Leer horas
horas > 40
V
salario = 40 * 16 +( ( horas 40 ) * 20 )
Escribir salario:,salario
Escribir deseas calcular otro salario:
Leer resp
resp == n
Fin

F
salario = horas * 16

DI A GR AM A D E FL UJ O

86

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

// diagrama de flujo: Salarios


INICIO
salario, horas : enteras = 0
resp : alfanmerico = n

Horas trabajadas:
horas

horas > 40

salario = 40 * 16 + ( ( horas 40 ) * 20 )

salario = horas * 16

salario:, salario
deseas calcular otro salario:

resp

resp == n
V
FIN

Paso III. Prueba Del Algoritmo.


PRIMERA CORRIDA DE ESCRITORIO
Horas = 50
Horas > 40
50 > 40 SI
salario = 40 * 16 + ( ( horas 40 ) * 20 )
salario = 640 + ( ( 50 40 ) * 20 )
salario = 640 + ( 10 * 20 )
salario = 640 + 200
salario = 840
resp = n
resp == n
n == n SI
SEGUNDA CORRIDA DE ESCRITORIO
Horas = 30
Horas > 40
30 > 40 NO
P.L.I. Carlos Augusto Flores Valerio

87

Diseo Estructurado De Algoritmos


salario = horas * 16
salario = 30 * 16
salario = 480
resp = s
resp == n
s == n NO
Horas = 41
Horas > 40
41 > 40 SI
salario = 40 * 16 + ( ( horas 40 ) * 20 )
salario = 640 + ( ( 41 40 ) * 20 )
salario = 640 + ( 1 * 20 )
salario = 640 + 20
salario = 660
resp = n
resp == n
n == n SI
Tabla 33 Ejemplo 2 que usa la estructura cclica Repetir Hasta...

Ejercicios.
I. Disea un algoritmo utilizando las tres diferentes tcnicas para cada uno de los problemas que se te
plantean.
Se necesita un sistema que solicita dos nmeros, los cuales son un rango, de los cuales queremos que
imprima el total de la suma de todos los nmeros que se encuentran dentro de este rango
Se necesita un sistema que calcula el salario semanal de n trabajadores, el cual depende de su puesto
(licenciado, tcnico y obrero), del turno (primero, segundo y tercero) y las horas trabajadas. Donde los
del primer turno ganan $200 adicionales a su salario, los del segundo $100 y los del tercero $300; El
obrero gana $30 por hora, el tcnico $50 y el licenciado $100.
Se necesita un sistema que lea los votos obtenidos por tres candidatos a presidente municipal en la
ciudad de Orizaba y calcule e imprima al ganador, junto con el porcentaje obtenido de votos.
Se necesita un programa para calcular el factorial de un nmero , que corresponda a la frmula:
N!=N*(N-1)*(N-2)*...*(N-(N-1))
Se necesita un sistema que despliegue un men con 4 opciones, si se presiona la opcin 1, se calcular
el rea de un triangulo; si se presiona la opcin 2, se calcular el rea de un cuadrado; si se presiona la
opcin 3, se calcular el rea de un circulo; si se presiona la opcin 4, ser la nica forma de salir del
sistema.
HACER PARA... HASTA ... Estructura cclica la cual se indica el rango de valores exacto que
debe de tener una variable para que un conjunto de instrucciones se repitan. En donde el valor de inicio
de la variable se asigna en lugar de los primeros puntos suspensivos y el ltimo valor de la variable se
compara en lugar de los segundos puntos suspensivos.
Las instrucciones a ejecutar se encuentran entre las instrucciones hacer para ... hasta ... y fin para, y
estas se ejecutarn mientras la respuesta a la expresin colocada en los segundos puntos suspensivos
sea falsa, en el momento que la respuesta sea verdadera el ciclo se termina.
Aun as, el ciclo se puede ejecutar infinidad de veces debido a la falta de una instruccin que permita
incrementar o decrementar el valor de la variable a evaluar.
Tambin es posible que nunca se ejecute el ciclo debido a que la asignacin de la variable a evaluar
colocada en lugar de los primeros puntos suspensivos sea un valor que de cmo resultado verdadero a
la condicin colocada en lugar de los segundos puntos suspensivos.
88

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

Aspecto Crtico. Siempre coloque las instrucciones que permiten incrementar o decrementar el valor
de la variable a evaluar dentro de la estructura hacer para ... hasta ... para evitar un ciclo infinito.
Aspecto Crtico. Siempre en el lugar de los primeros puntos suspensivos de la estructura hacer
para ... hasta ..., asgnele un valor a la variable que de cmo resultado falso a la condicin colocada en
lugar de los segundos puntos suspensivos para que pueda ingresar al ciclo al menos una vez.
A continuacin vamos a esquematizar el diseo bsico de la estructura cclica hacer para... en las tres
tcnicas algortmicas manejadas.
Pseudocdigo. En pseudocdigo se utilizan las instrucciones que hemos estado mencionando.
Pseudocdigo: ciclo hacer para
// imprime hola 10 veces
Variables:
Cont : numrica : contador
Inicio
Hacer para Cont = 1 hasta cont > 10
Escribir hola
Cont = Cont + 1 // incrementar en 1 la variable
Fin para
Escribir Gracias por usar este sistema
FIN
Ilustracin 20 Diseo bsico del ciclo hacer para ... hasta ...

Diagrama de Flujo. En diagrama de flujo, se utiliza un smbolo especial para representarla, el cual es
un rectngulo dividido en tres partes, en la primera se realiza la asignacin del valor inicial de la
variable, en la segunda se coloca la expresin a evaluar, en la tercera se coloca la instruccin para
realizar el incremento de la variable. Del smbolo en la parte de la condicin salen los dos caminos
posibles: el verdadero y el falso. La ruta del lado verdadero conecta con la siguiente instruccin a
ejecutar cuando se salga del ciclo. Del camino falso sale una flecha que conecta con las instrucciones a
ejecutar por el ciclo y de la ltima instruccin sale una flecha que conecta nuevamente con este
smbolo en la parte del incremento. La instruccin antes del ciclo debe de conectar con el smbolo en la
parte de asignacin.

P.L.I. Carlos Augusto Flores Valerio

89

Diseo Estructurado De Algoritmos

// Ciclo hacer para ... hasta


INICIO
Variables:
Cont : numrica : contador
Cont = 1
Cont = Cont + 1

Cont > 10

F
HOLA

Gracias por usar este


sistema
FIN

Ilustracin 21 Diagrama de Flujo del ciclo hacer para ... hasta ...

Diagramas N-S. Para representar esta estructura existe el smbolo especial hacer para ... hasta ..., el
cual es una sola caja con dos partes: la parte que parece una herradura o una C, es en donde se
coloca el valor de inicio de la variable (parte izquierda de la herradura), la expresin a evaluar(parte
superior de la herradura) y la instruccin que realiza el incremento o decremento de la variable(parte
inferior de la herradura); la otra parte es la caja que se encuentra entre las tres paredes de la herradura,
es donde se colocan las instrucciones a realizar cuando el ciclo se ejecute.
// Diagrama N-S: Ciclo hacer para ... hasta ...
Inicio
Variables:
Cont : numrica : contador
Cont > 10
Cont = 1
Escribir HOLA
Cont = Cont + 1
Escribir Gracias por usar este sistema
Fin
Ilustracin 22 Diagrama N-S bsico del ciclo hacer para ... hasta ...

A continuacin se presentan un par de ejercicios con las tres tcnicas algortmicas los cuales manejan
esta estructura.
Se necesita un sistema que despliega una tabla de multiplicar de un nmero dado
Ejemplo
por el usuario.

Paso I. Analizar el problema.


Salidas
Entrada
resultado

tabla

Procesos
mientras contador <= 10
resultado = tabla * contador
contador = contador + 1

Paso II. Disear El algoritmo


PS EU DO C D I GO
Pseudocdigo: Tabla
90

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos


Variables:
tabla, contador, resultado : enteras = 0
Inicio
Escribir tabla que deseas visualizar
Leer tabla
Hacer para contador = 1 hasta contador > 10
resultado = tabla * contador
Escribir tabla, *, contador, =, resultado
contador = contador + 1
Fin para
Fin
DI A GR AM A D E FL UJ O
// Diagrama de flujo: Tabla
INICIO

Variables:
tabla, contador, resultado : enteras = 0
contador = 1
contador = contador + 1

contador > 10

F
resultado = tabla * contador
tabla,*,contador,=,resultado

FIN

Diagrama N-S
// diagrama N-S : Tabla
Inicio
Variables:
tabla, contador, resultado : enteras = 0
Escribir tabla que deseas visualizar
Leer tabla
contador > 10
resultado = tabla * contador
contador = 1
Escribir tabla, *, contador, =, resultado
contador = contador + 1
Fin
Paso III. Prueba Del Algoritmo.
NICA CORRIDA DE ESCRITORIO
tabla = 5
contador = 1

P.L.I. Carlos Augusto Flores Valerio

contador > 10
6 > 10 no

91

Diseo Estructurado De Algoritmos


contador > 10
1 > 10 no
resultado = tabla * contador
resultado = 5 * 1
resultado = 5
contador = contador + 1
contador = 1 + 1
contador = 2
contador > 10
2 > 10 no
resultado = tabla * contador
resultado = 5 * 2
resultado = 10
contador = contador + 1
contador = 2 + 1
contador = 3
contador > 10
3 > 10 no
resultado = tabla * contador
resultado = 5 * 3
resultado = 15
contador = contador + 1
contador = 3 + 1
contador = 4
contador > 10
4 > 10 no
resultado = tabla * contador
resultado = 5 * 4
resultado = 20
contador = contador + 1
contador = 4 + 1
contador = 5
contador > 10
5 > 10 no
resultado = tabla * contador
resultado = 5 * 5
resultado = 25
contador = contador + 1
contador = 5 + 1
contador = 6

resultado = tabla * contador


resultado = 5 * 6
resultado = 20
contador = contador + 1
contador = 6 + 1
contador = 7
contador > 10
7 > 10 no
resultado = tabla * contador
resultado = 5 * 7
resultado = 35
contador = contador + 1
contador = 7 + 1
contador = 8
contador > 10
8 > 10 no
resultado = tabla * contador
resultado = 5 * 8
resultado = 40
contador = contador + 1
contador = 8 + 1
contador = 9
contador > 10
9 > 10 no
resultado = tabla * contador
resultado = 5 * 9
resultado = 45
contador = contador + 1
contador = 9 + 1
contador = 10
contador > 10
10 > 10 no
resultado = tabla * contador
resultado = 5 * 10
resultado = 50
contador = contador + 1
contador = 10 + 1
contador = 11
contador > 10
11 > 10 si

Tabla 34 Ejemplo 1 de la estructura cclica hacer para... hasta...

Ejemplo

Se necesita un sistema que despliega las tablas de multiplicar del uno al tres(cada
tabla del 1 al 5).

Paso I. Analizar el problema.


Salidas
Procesos
multiplicador = 1
mientras multiplicador <= 3
multiplicando = 1
resultado
mientras multiplicando <= 5
resultado = multiplicador * multiplicando
multiplicando = multiplicando + 1
multiplicador = multiplicador + 1
Paso II. Disear El algoritmo
PS EU DO C D I GO
pseudocdigo: tablas
variables:
multiplicador, multiplicando, resultado : enteras = 0
Inicio
Hacer para multiplicador = 1 hasta multiplicador > 3
Hacer para multiplicando = 1 hasta multiplicando > 5
resultado = multiplicador * multiplicando
escribir multiplicador, *, multiplicando, =, resultado
92

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos


multiplicando = multiplicando + 1
Fin para
multiplicador = multiplicador + 1
Fin para
Fin
Diagrama N-S

// diagrama N-S : tablas


Inicio
variables:
multiplicador, multiplicando, resultado : enteras = 0
multiplicador > 3
multiplicando > 5
multiplicador = 1

resultado = multiplicador * multiplicando


escribir multiplicador, *, multiplicando, =, resultado
multiplicando = multiplicando + 1
multiplicando = 1

multiplicador = multiplicador + 1
Fin
DI A GR AM A D E FL UJ O

P.L.I. Carlos Augusto Flores Valerio

93

Diseo Estructurado De Algoritmos

// Diagrama de flujo: Tablas


INICIO

variables:
multiplicador,multiplicando,resultado:enteras=0

multiplicador = 1

multiplicador > 3
multiplicador=multiplicador + 1
F

multiplicando = 1
multiplicando > 5
multiplicando=multiplicando+1
F

resultado = multiplicador * multiplicando

multiplicador, *,
multiplicando, =,
resultado

FIN

94

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos


Paso III. Prueba Del Algoritmo.
NICA CORRIDA DE ESCRITORIO
multiplicador = 1
multiplicador > 3
1 > 3 NO
multiplicando = 1
multiplicando > 5
1 > 5 NO
resultado = multiplicador * multiplicando
resultado = 1 * 1
resultado = 1
multiplicando = multiplicando + 1
multiplicando = 1 + 1
multiplicando = 2
multiplicando > 5
2 > 5 NO
resultado = multiplicador * multiplicando
resultado = 1 * 2
resultado = 2
multiplicando = multiplicando + 1
multiplicando = 2 + 1
multiplicando = 3
multiplicando > 5
3 > 5 NO
resultado = multiplicador * multiplicando
resultado = 1 * 3
resultado = 3
multiplicando = multiplicando + 1
multiplicando = 3 + 1
multiplicando = 4
multiplicando > 5
4 > 5 NO
resultado = multiplicador * multiplicando
resultado = 1 * 4
resultado = 4
multiplicando = multiplicando + 1
multiplicando = 4 + 1
multiplicando = 5
multiplicando > 5
5 > 5 NO
resultado = multiplicador * multiplicando
resultado = 1 * 5
resultado = 5
multiplicando = multiplicando + 1
multiplicando = 5 + 1
multiplicando = 6
multiplicando > 5
6 > 5 SI
multiplicador = multiplicador + 1
multiplicador = 1 + 1
multiplicador = 2
multiplicador > 3
2 > 3 NO
multiplicando = 1
multiplicando > 5
1 > 5 NO
resultado = multiplicador * multiplicando
resultado = 2 * 1
resultado = 2
multiplicando = multiplicando + 1
multiplicando = 1 + 1
multiplicando = 2

P.L.I. Carlos Augusto Flores Valerio

95

Diseo Estructurado De Algoritmos


multiplicando > 5
2 > 5 NO
resultado = multiplicador * multiplicando
resultado = 2 * 2
resultado = 4
multiplicando = multiplicando + 1
multiplicando = 2 + 1
multiplicando = 3
multiplicando > 5
3 > 5 NO
resultado = multiplicador * multiplicando
resultado = 2 * 3
resultado = 6
multiplicando = multiplicando + 1
multiplicando = 3 + 1
multiplicando = 4
multiplicando > 5
4 > 5 NO
resultado = multiplicador * multiplicando
resultado = 2 * 4
resultado = 8
multiplicando = multiplicando + 1
multiplicando = 4 + 1
multiplicando = 5
multiplicando > 5
5 > 5 NO
resultado = multiplicador * multiplicando
resultado = 2 * 5
resultado = 10
multiplicando = multiplicando + 1
multiplicando = 5 + 1
multiplicando = 6
multiplicando > 5
6 > 5 SI
multiplicador = multiplicador + 1
multiplicador = 2 + 1
multiplicador = 3
multiplicador > 3
3 > 3 NO
multiplicando = 1
multiplicando > 5
1 > 5 NO
resultado = multiplicador * multiplicando
resultado = 3 * 1
resultado = 3
multiplicando = multiplicando + 1
multiplicando = 1 + 1
multiplicando = 2
multiplicando > 5
2 > 5 NO
resultado = multiplicador * multiplicando
resultado = 3 * 2
resultado = 6
multiplicando = multiplicando + 1
multiplicando = 2 + 1
multiplicando = 3
multiplicando > 5
3 > 5 NO
resultado = multiplicador * multiplicando
resultado = 3 * 3
resultado = 9
multiplicando = multiplicando + 1
multiplicando = 3 + 1
multiplicando = 4
multiplicando > 5
4 > 5 NO

96

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos


resultado = multiplicador * multiplicando
resultado = 3 * 4
resultado = 12
multiplicando = multiplicando + 1
multiplicando = 4 + 1
multiplicando = 5
multiplicando > 5
5 > 5 NO
resultado = multiplicador * multiplicando
resultado = 3 * 5
resultado = 15
multiplicando = multiplicando + 1
multiplicando = 5 + 1
multiplicando = 6
multiplicando > 5
6 > 5 SI
multiplicador = multiplicador + 1
multiplicador = 3 + 1
multiplicador = 4
multiplicador > 3
4 > 3 SI

Tabla 35 Ejemplo 2 de la estructura cclica Hacer Para... hasta...

Ejercicios.
I. Disea un algoritmo con la estructura Hacer para ... hasta ... utilizando las tres diferentes tcnicas
para cada uno de los problemas que se te plantean.
Calcular el promedio de un alumno que tiene 7 calificaciones en la materia de Diseo Estructurado de
Algoritmos
Calcular el promedio de 10 alumnos los cuales tienen 7 calificaciones cada uno en la materia Diseo
Estructurado de Algoritmos.
Leer 10 nmeros y obtener su cuadrado y cubo.
Leer 10 nmeros e imprimir solamente los nmeros positivos
Leer 20 nmeros e imprimir cuantos son positivos, cuantos negativos y cuantos neutros.
Leer 15 nmeros negativos y convertirlos a positivos e imprimir dichos nmeros.
Suponga que se tiene un conjunto de calificaciones de un grupo de 40 alumnos. Realizar un algoritmo
para mostrar la calificacin ms alta y la calificacin mas baja de todo el grupo.
Simular el comportamiento de un reloj digital, imprimiendo la hora, minutos y segundos de un da
desde las 0:00:00 horas hasta las 23:59:59 horas

CONCLUSIN
En este tema, se han visto tres subtemas, cada una ms importante que el anterior:
En el primero se dio a conocer las estructuras secunciales para disear algoritmos, lo cual no es otra
cosa ms que colocar las instrucciones en una forma ordenada de tal manera que una sentencia se
ejecute despus de otra. Esta estructura se aplico utilizando las tres diferentes tcnicas algortmicas.
P.L.I. Carlos Augusto Flores Valerio

97

Diseo Estructurado De Algoritmos

En el segundo subtema, se trabaj con las estructuras condicionales, las cuales nos sirven para darle
capacidad de razonamiento a nuestros sistemas gracias al manejo de los operadores relacionales, ya
que al comparar dos valores el sistema devuelve una respuesta (falso o verdadero) y con esta elegir un
camino por el cual avanzar. Al mismo tiempo utilizamos dos tipos de estructuras condicionales: las
simples, en el cual solo se puede ir por uno de dos caminos posibles, representadas por la instruccin
si ... entonces; las mltiples, representadas con la instruccin casos para ...en las que solo se puede
avanzar por una de varias rutas posibles.
En el tercer subtema, se aprendi a disear sistemas que utilizan las estructuras cclicas las cuales
permiten repetir un conjunto especfico de instrucciones. Dentro de estas encontramos tres diferentes:
la estructura hacer mientras... es la que nos brinda la posibilidad ciclar mientras la respuesta a la
comparacin hecha sea verdadera, ya que cuando esta sea falsa se romper bucle, tomando en cuenta
que es posible nunca entrar en este; La estructura repetir / hasta... es aquella que utilizamos para que al
menos una vez se ejecuten las instrucciones que se encuentran dentro del ciclo, debido a que la
comparacin se encuentra al final de la estructura y en donde si la respuesta a esta es verdadero se sale
del bucle y si es falsa las sentencias se volvern a ejecutar; la estructura hacer para ... hasta ..., es
aquella que utilizamos para ejecutar un conjunto de instrucciones un nmero exacto de veces, ya que en
base a una variable de uso contador se le asignan valores de inicio y final, y cuando se exceda se
acabar la repeticin.
Dentro de este mismo tema, se manejo el concepto de anidacin, el cual consiste en colocar una
estructura dentro de otra, respetando la regla de que para terminar una estructura externa primero se
debe concluir una interna.
En este tema, se ha logrado prcticamente el objetivo del curso, ya que con los conocimientos
adquiridos en el presente se puede considerar que hemos adquirido una mentalidad de programador, ya
que si se nos presentar cualquier problema nosotros tendremos la capacidad de poderlo resolver por
medio de un sistema de informacin computacional.
Por lo mismo, si no se esta seguro de haber asimilado al 100% el tema, se recomienda hacer todos los
repasos pertinentes ya que de otra manera no podremos resolver problemas orientados a computadoras,
pues se considera que hemos llegado al 80% del objetivo general.
OBJETIVO DEL CURS0
80%

20%
% Cubierto
% Faltante

98

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

P.L.I. Carlos Augusto Flores Valerio

99

Diseo Estructurado De Algoritmos

V. ARREGLOS Y ESTRUCTURAS
OBJETIVO

Al finalizar el tema el participante mediante la elaboracin de ejercicios, manejar los


arreglos y estructuras utilizando las tres diferentes tcnicas algortmicas con la
finalidad de almacenar informacin.

CONTENIDO
INTRODUCCIN
5.1. ARREGLOS
5.2. ESTRUCTURAS
CONCLUSIN

INTRODUCCIN
Este tema es muy sencillo de comprender, siempre y cuando se tengan bien afianzados los temas
anteriores, ya que los arreglos y las estructuras son una especie de variables un poco ms complejas.
Nosotros utilizaremos las estructuras y arreglos para almacenar datos, a diferencia de que en una
variable solo se puede almacenar un dato. Sin embargo nos daremos cuenta de que estos no son iguales,
ya que en una estructura podremos almacenar varios datos de diferentes tipos y en un arreglo se pueden
guardar varios datos pero del mismo tipo.
Este tema para su absoluta comprensin esta dividido en dos subtemas, donde en el primero se estudian
y trabaja con los arreglos y en el segundo con las estructuras. Cabe mencionar que dentro de los
arreglos estudiaremos dos tipos: los arreglos unidimensionales y los multidimensionales.

5.1 ARREGLOS
Para explicar que es un arreglo basta con decir lo mismo que dicen las empresas constructoras de casas
habitacin, si ya no hay espacio en el piso, hay mucho espacio hacia arriba, y en realidad han
ganado demasiado dinero al comenzar a construir los famosos condominios, los cuales son exactamente
iguales en cada uno de sus niveles, solo se identifican por el piso en que se encuentran.
Una variable de un tipo especfico es como una casa habitacin comn y corriente, pero si nosotros le
construimos ms pisos a nuestra variable esta se convierte en un arreglo, al cual se le puede almacenar
informacin de un mismo tipo en el piso deseado.

100

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

Posicin 4

Posicin 3

Posicin 2

Posicin
nica
Variable

Posicin 1
Arreglo de 4 posiciones

Ilustracin 23 Representacin y comparacin de una variable y un arreglo

Las operaciones que se pueden realizar sobre los arreglos son exactamente las mismas que a las
variables: declaracin, desplegar, almacenar, asignar, inicializar y comparar. Pero a diferencia de las
variables, los arreglos se pueden ordenar ya sea de manera ascendente o descendente.
La declaracin de los arreglos no desvara mucho de la declaracin de variables, con la excepcin de
que se tiene que definir el tamao del arreglo, el cual se tiene que poner entre parntesis cuadrados o
corchetes, aunque para menor confusin los declaramos en una seccin llamada arreglos.
PSEUDOCDIGO Y DIAGRAMA N-S
DIAGRAMA DE FLUJO
Arreglos:
Arreglos:
Edad : entero de [ 20 ] posiciones
Edad : entero de [ 20 ] posiciones
Parciales : real de [ 10 ] posiciones
Parciales : real de [ 10 ] posiciones
Ilustracin 24 Forma en que se declaran los arreglos

Nota. El nmero entre corchetes se llama subndice o ndice.


Al declarar un arreglo, se le pueden dar valores de inicio para cada una de sus posiciones, pera lo cual
despus de indicar el tamao de este se coloca un signo de igual y entre llaves {}, los valores de cada
posicin separados por comas.
PSEUDOCDIGO Y DIAGRAMA N-S
Arreglos:
Edad : entero de [ 5 ] posiciones = {25, 9, 18, 20, 31}
Parciales : real de [ 10 ] posiciones = {0}
// si se coloca solo un cero todas las posiciones toman este valor

DIAGRAMA DE FLUJO

P.L.I. Carlos Augusto Flores Valerio

101

Diseo Estructurado De Algoritmos


Arreglos:
Edad : entero de [ 5 ] posiciones = {25, 9, 18, 20, 31}
Parciales : real de [ 10 ] posiciones = {0}
Ilustracin 25 Forma en que se inicializan los arreglos

Para escribir lo que contiene un arreglo debemos de indicar el nombre del arreglo y la posicin entre
corchetes que deseamos visualizar.
PSEUDOCDIGO Y DIAGRAMA N-S
DIAGRAMA DE FLUJO
Lo
que
contiene
el
arreglo
edades
en
la
posicin
3
es:,
edades[3]

Escribir lo que contiene el arreglo edades en la posicin 3


es:, edades[3]
Ilustracin 26 Forma en que se despliega informacin desde un arreglo.

Para almacenar un dato en una posicin especfica de un arreglo debemos de indicar el nombre del
arreglo y la posicin entre corchetes en que deseamos guardar.
PSEUDOCDIGO Y DIAGRAMA N-S
DIAGRAMA DE FLUJO
edades[3]

Leer edades[3]
// almacena una dato en la posicin 3 // del arreglo edades
Ilustracin 27 Forma en que se almacena informacin a un arreglo.

Para asignar el resultado de una operacin en una posicin especfica de un arreglo debemos de indicar
el nombre del arreglo y la posicin entre corchetes en que deseamos colocar el resultado de la
expresin.
PSEUDOCDIGO Y DIAGRAMA N-S
DIAGRAMA DE FLUJO
edades[3] = 5 * 10
// almacena una dato en la posicin 3 // del arreglo edades

edades[3] = 5 * 10

Ilustracin 28 Forma en que se asignan datos a un arreglo

La comparacin se realiza de la misma manera en que se realizan las operaciones ya vistas: colocando
el nombre y posicin del arreglo que se quiere comparar, el operador relacional y el valor o variable
contra quien se coteja, teniendo en cuenta que podra ser otra posicin de otro arreglo. No se
ejemplifican debido a que se tendra que desarrollar la estructura condicional o cclica.
A continuacin realizamos el primer ejemplo de un algoritmo que utiliza arreglos. Dentro de este
problema utilizamos una variable contador llamada subndice, la cual es la que se encarga de apuntar a
una posicin especfica del arreglo, la cual es aumentada dentro de una estructura cclica hacer para.
Se necesita de un sistema que utiliza un arreglo de seis posiciones para almacenar los 5 parciales
de un alumno y sacar su promedio, el cual se guardar en la ltima localidad. Mostrar todas las
Ejemplo
calificaciones y el promedio.
Paso I. Analizar el problema.
Salidas
Entrada
Procesos
subndice = 1
calif[1]
mientras subndice <= 6
calif[2]
si subndice == 6
calif[3]
calif[subndice]
calif[subndice]
calif[4]
acum_calif = acum_calif + calif[subndice]
calif[5]
en caso contrario
calif[6]
calif[subindice] = acum_calif / 5
Paso II. Disear El algoritmo
PS EU DO C D I GO

102

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos


Pseudocdigo: calificaciones
Arreglos:
calif : real de [6] posiciones
Variables:
subndice : entera = 0
acum_calif : real = 0
Inicio
Hacer para subndice = 1 hasta subndice > 6
Si subndice != 6
Escribir dame calificacin de parcial , subndice, :
Leer calif[subndice]
acum_calif = acum_calif + calif[subndice]
Si no
calif[subindice] = acum_calif / 5
Fin si
subndice = subndice + 1
Fin para
Hacer para subndice = 1 hasta subndice > 6
Si subndice == 6 entonces
Escribir Promedio : , calif[subndice]
Si no
Escribir Parcial , subndice, :, calif[subndice]
Fin si
subndice = subndice + 1
Fin para
Fin
DI A GR AM A D E FL UJ O

P.L.I. Carlos Augusto Flores Valerio

103

Diseo Estructurado De Algoritmos

// Diagrama de flujo: Calificaciones


INICIO
Arreglos:
calif : real de [6] posiciones
Variables:
subndice : entera = 0
acum_calif : real = 0
subndice = 1
subndice = subndice + 1

subndice > 6

F
V

F
subndice != 6

dame calificacin de
parcial , subndice, :

calif[subindice] = acum_calif / 5

calif[subindice]
acum_calif = acum_calif + calif[subndice]

subndice = 1
subndice = subndice + 1

subndice > 6

F
V

F
subndice == 6
Parcial , subndice, :,
calif[subndice]

Promedio :,
calif[subndice]

FIN
Diagrama N-S
104

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos


// diagrama N-S : calificaciones
Inicio
Arreglos:
calif : real de [6] posiciones
Variables:
subndice : entera = 0
acum_calif : real = 0
subndice > 6

subndice =
1

subndice != 6
verdadero

falso

Escribir dame calificacin de parcial ,subndice, :


Leer calif[subndice]
acum_calif = acum_calif + calif[subndice]

calif[subndice] = acum_calif / 5

subndice = subndice + 1
subndice > 6
subndice =
1

subndice == 6
verdadero
Escribir Promedio : , calif[subndice]

Falso
Escribir Parcial , subndice, :, calif[subndice]

subndice = subndice + 1
Fin
Paso III. Prueba Del Algoritmo.
NICA CORRIDA DE ESCRITORIO
subndice = 1
subndice > 6
1 > 6 NO
subndice != 6
1 != 6 SI
calif[subndice] = 8
calif[1] = 8
acum_calif = acum_calif + calif[subndice]
acum_calif = 0 + calif[1]
acum_calif = 0 + 8
acum_calif = 8
subndice = subndice + 1
subndice = 1 + 1
subndice = 2
subndice > 6
2 > 6 NO
subndice != 6
2 != 6 SI
calif[subndice] = 6
calif[2] = 6
acum_calif = acum_calif + calif[subndice]
acum_calif = 8 + calif[2]
acum_calif = 8 + 6
acum_calif = 14
subndice = subndice + 1
subndice = 2 + 1
subndice = 3

P.L.I. Carlos Augusto Flores Valerio

105

Diseo Estructurado De Algoritmos


subndice > 6
3 > 6 NO
subndice != 6
3 != 6 SI
calif[subndice] = 10
calif[3] = 10
acum_calif = acum_calif + calif[subndice]
acum_calif = 14 + calif[3]
acum_calif = 14 + 10
acum_calif = 24
subndice = subndice + 1
subndice = 3 + 1
subndice = 4
subndice > 6
4 > 6 NO
subndice != 6
4 != 6 SI
calif[subndice] = 5
calif[4] = 5
acum_calif = acum_calif + calif[subndice]
acum_calif = 24 + calif[4]
acum_calif = 24 + 5
acum_calif = 29
subndice = subndice + 1
subndice = 4 + 1
subndice = 5
subndice > 6
5 > 6 NO
subndice != 6
5 != 6 SI
calif[subndice] = 9
calif[5] = 9
acum_calif = acum_calif + calif[subndice]
acum_calif = 29 + calif[5]
acum_calif = 29 + 9
acum_calif = 38
subndice = subndice + 1
subndice = 5 + 1
subndice = 6
subndice > 6
6 > 6 NO
subndice != 6
6 != 6 NO
calif[subndice] = acum_calif / 5
calif[6] = 38 / 5
calif[6] = 7.6
subndice = subndice + 1
subndice = 6 + 1
subndice = 7
subndice > 6
7 > 6 SI

Tabla 36 Ejemplo 1 del manejo de arreglos

A continuacin vamos a ver en el siguiente ejemplo que con un mismo subndice se puede acceder a
varios arreglos.

Ejemplo

Se necesita un sistema que utiliza 3 arreglos, en los dos primeros se colocan los promedios de dos grupos de
5 alumnos cada uno y el tercer arreglo almacenar el promedio ms alto de cada posicin. Imprimir los
promedios ms altos

Paso I. Analizar el problema.


106

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos


Salidas
prom[ndice]

Entrada

Procesos

grupo1[ndice]
grupo2[ndice]

mientras ndice <= 5


si grupo1[ndice] > grupo2[ndice]
prom[ndice] = grupo1[ndice]
en caso contrario
prom[ndice] = grupo2[ndice]

Paso II. Disear El algoritmo


PS EU DO C D I GO
pseudocdigo: calificaciones de 2 grupos
Arreglos:
grupo1, grupo2, prom : real de [5] posiciones
Variables:
ndice : entero = 0
Inicio
Hacer para ndice = 1 hasta ndice > 5
Escribir dame promedio , ndice, del primer grupo:
Leer grupo1[ndice]
Escribir dame promedio , ndice, del segundo grupo:
Leer grupo2[ndice]
Si grupo1[ndice] > grupo2[ndice] entonces
prom[indice] = grupo1[ndice]
Si no
prom[indice] = grupo2[ndice]
Fin si
ndice = ndice + 1
Fin para
Hacer para ndice = 1 hasta ndice > 5
3.1 Escribir promedio mayor, ndice, :, prom[ndice]
3.2 ndice = ndice + 1
Fin para
Fin

Diagrama N-S
// diagrama N-S : calificaciones de 2 grupos
Inicio
Arreglos:
grupo1, grupo2, prom : real de [5] posiciones
Variables:
ndice : entero = 0
ndice > 5
ndice = 1
Escribir dame promedio , ndice, del primer grupo:
Leer grupo1[ndice]
Escribir dame promedio , ndice, del segundo grupo:
Leer grupo2[ndice]
grupo1[ndice] > grupo2[ndice]
verdadero

falso

prom[ndice] = grupo1[ndice]
prom[ndice] = grupo2[ndice]
ndice = ndice + 1
ndice > 5
ndice = 1
Escribir promedio mayor, ndice, :, prom[ndice]
ndice = ndice + 1
Fin

DIAGRAMA DE FLUJO

P.L.I. Carlos Augusto Flores Valerio

107

Diseo Estructurado De Algoritmos

// Diagrama de flujo: Calificaciones 2 grupos


INICIO
Arreglos:
grupo1, grupo2, prom : real de [6] posiciones
Variables:
ndice : entera = 0
ndice = 1
ndice = ndice + 1

ndice > 5

F
dame promedio , ndice,
del primer grupo:
grupo1[indice]
dame promedio , ndice,
del segundo grupo:
grupo2[indice]

grupo1[ndice]
>
grupo2[ndice]

prom[indice] = grupo1[indice]

prom[indice] = grupo2[indice]

ndice = 1
ndice = ndice + 1

ndice > 5

F
promedio mayor, ndice, :, prom[ndice]

FIN
Paso III. Prueba Del Algoritmo.
108

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos


NICA CORRIDA DE ESCRITORIO
ndice = 1
ndice > 5
1 > 5 NO
grupo1[ndice] = 8.5
grupo1[1] = 8.5
grupo2[ndice] = 6.9
grupo2[1] = 6.9
grupo1[ndice] > grupo2[ndice]
grupo1[1] > grupo2[1]
8.5 > 6.9 SI
prom[ndice] = grupo1[ndice]
prom[1] = grupo1[1]
prom[1] = 8.5
ndice = ndice + 1
ndice = 1 + 1
ndice = 2
ndice > 5
2 > 5 NO
grupo1[ndice] = 7
grupo1[2] = 7
grupo2[ndice] = 8.7
grupo2[2] = 8.7
grupo1[ndice] > grupo2[ndice]
grupo1[2] > grupo2[2]
7 > 8.7 NO
prom[ndice] = grupo2[ndice]
prom[2] = grupo2[2]
prom[2] = 8.7
ndice = ndice + 1
ndice = 2+ 1
ndice = 3
ndice > 5
3 > 5 NO
grupo1[ndice] = 6.8
grupo1[3] = 6.8
grupo2[ndice] = 9.5
grupo2[3] = 9.5
grupo1[ndice] > grupo2[ndice]
grupo1[3] > grupo2[3]
6.8 > 9.5 NO
prom[ndice] = grupo2[ndice]
prom[3] = grupo2[3]
prom[3] = 9.5
ndice = ndice + 1
ndice = 3 + 1
ndice = 4

ndice > 5
4 > 5 NO
grupo1[ndice] = 9.7
grupo1[4] = 9.7
grupo2[ndice] = 9.3
grupo2[4] = 9.3
grupo1[ndice] > grupo2[ndice]
grupo1[4] > grupo2[4]
9.7 > 9.3 SI
prom[ndice] = grupo1[ndice]
prom[4] = grupo1[4]
prom[4] = 9.7
ndice = ndice + 1
ndice = 4 + 1
ndice = 5
ndice > 5
5 > 5 NO
grupo1[ndice] = 6
grupo1[5] = 6
grupo2[ndice] = 6
grupo2[5] = 6
grupo1[ndice] > grupo2[ndice]
grupo1[5] > grupo2[5]
6 > 6 NO
prom[ndice] = grupo2[ndice]
prom[5] = grupo2[5]
prom[5] = 6
ndice = ndice + 1
ndice = 5 + 1
ndice = 6
ndice > 5
6 > 5 SI

Tabla 37 Ejemplo 2 del manejo de arreglos

Ejercicios.
I. Realiza un algoritmo que maneja arreglos utilizando las tres diferentes tcnicas para cada uno de los
problemas que se plantean.
Un supermercado necesita un sistema en donde almacenar sus ingresos, los cuales son la sumatoria de
todas las ventas realizadas a los clientes (100 clientes).
Se necesita un sistema que utiliza 2 arreglos para almacenar 20 nmeros, en el primero se almacenan
los nmeros tal y como son capturados y en el segundo se almacenan sus inversos (5, -5).
P.L.I. Carlos Augusto Flores Valerio

109

Diseo Estructurado De Algoritmos

Necesitamos un sistema que capture 20 nmeros y despus de capturarlos que haga la revisin de estos
para indicarnos cuantos son pares y cuantos son impares.
Se necesita un sistema que almacena 20 nmeros en tres diferentes arreglos, en el primero se almacena
el nmero tal cual se tecleo, en el segundo se almacena el cuadrado de dicho nmero y en el tercero su
cubo.
Se necesita un sistema que almacena automticamente todos los nmeros primos desde el uno hasta el
mil uno; recordando que un nmero primo es aquel que solamente es divisible entre uno y si mismo.
Ordenar Arreglos (Ordenamiento Tipo Burbuja).
En varias ocasiones cuando desarrollemos un sistema, nos vamos a encontrar con la necesidad de
ordenar la informacin de una manera especfica, generalmente en manera ascendente o descendente.
Nosotros vamos a utilizar la manera ms sencilla, conocida como ordenamiento tipo burbuja. Este
mtodo es llamado as ya que los elementos del vector (arreglo) mayores tienden a irse hasta el fondo
del arreglo y los menores comienzan a flotar haca arriba del mismo, como lo hacen las burbujas de aire
en el agua.
Supongamos que hemos declarado un arreglo del tipo flotante llamado edades con 5 posiciones. Dicho
vector fue llenado con diversos datos pero queremos que sea ordenado de manera ascendente,
quedando de la siguiente manera:

1.78

1.84

Posicin 1

Posicin 2

1.54

1.61

1.61

Posicin 3

1.78

1.87

Posicin 4

1.84

1.54

Posicin 5

1.87

Arreglo desordenado

Arreglo Ordenado

Ilustracin 29 Vista de un arreglo llamado edades ordenado

Naturalmente para nosotros resulta muy fcil ejecutar este proceso mental, pero para que la
computadora realice este proceso se lleva un buen nmero de instrucciones, los cuales consisten en ir
ordenando poco a poco el arreglo. Las instrucciones son las siguientes (solo las mostramos en
pseudocdigo):
Hacer para N_pasadas = 1 hasta N_pasadas >= TAM_ARREGLO
Hacer para posicin = 1 hasta posicin == TAM_ARREGLO
Si edades[ posicin ] > edades[ posicin + 1 ] entonces
temporal = edades[ posicin ]
edades[ posicin ] = edades[ posicin + 1 ]
110

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

edades[ posicin + 1 ] = temporal


fin si
posicin = posicin + 1
Fin para
N_pasadas = N_pasadas + 1
Fin para
Tabla 38 Instrucciones para ordenar el arreglo edades

En este programa la variable N_pasadas es del tipo entero y es la que lleva el conteo de cuantas veces
se va a revisar todo el arreglo, el nmero de pasadas tiene que ser menor al tamao del arreglo el cual
esta almacenado en la variable TAM_ARREGLO, ya que cuando la variable N_pasadas ya no sea
menor que la variable TAM_ARREGLO este ya estar completamente ordenado.
La variable posicin es la que nos dir que localidad del arreglo revisar. Y el secreto de este mtodo
radica en comparar dos posiciones contiguas del arreglo (edades[posicin] contra edades[posicin +
1]), si la primera es mayor que la segunda, lo que se encuentra en edades[posicin] es guardado en la
variable temporal, entonces el valor que se encuentra en edades[posicin+1] es asignado en
edades[posicin], y por ultimo el dato que esta almacenado en la variable temporal es dado a
edades[posicin+1]. En caso de que edades[posicin] no sea mayor que edades[posicin+1], los
valores de cada elemento se dejan igual. A continuacin se realiza paso a paso el ordenamiento del
arreglo edades, en el cual se enumeran todas las comparaciones.
C1. Como el resultado de la primera comparacin es falso, el arreglo contina igual.
N_pasadas=
1
edades[1] 1.78
edades[1] 1.78
TAM_ARREGLO=
5
edades[2] 1.84
edades[2] 1.84
Posicin=
1
edades[3] 1.61
edades[3] 1.61
edades[ posicin ] > edades[ posicin + 1 ]
F
edades[4] 1.87
edades[4] 1.87
Temporal=
edades[5] 1.54
edades[5] 1.54
Edades[ posicin ] =
Edades[posicin + 1] =
C2. Como el resultado de la segunda comparacin es verdadero, los valores de estas posiciones se intercambian.
N_pasadas=
1
edades[1] 1.78
edades[1] 1.78
TAM_ARREGLO=
5
edades[2] 1.84
edades[2] 1.61

Posicin=
2
edades[3] 1.61
edades[3] 1.84
edades[ posicin ] > edades[ posicin + 1 ]
V
edades[4] 1.87
edades[4] 1.87
Temporal=
1.84
edades[5] 1.54
edades[5] 1.54
Edades[ posicin ] =
1.61
Edades[posicin + 1] =
1.84
C3. Como el resultado de la tercera comparacin es falso, el arreglo contina igual.
N_pasadas=
1
edades[1] 1.78
edades[1] 1.78
TAM_ARREGLO=
5
edades[2] 1.61
edades[2] 1.61
Posicin=
3
edades[3] 1.84
edades[3] 1.84
edades[ posicin ] > edades[ posicin + 1 ]
F
edades[4] 1.87
edades[4] 1.87
Temporal=
edades[5] 1.54
edades[5] 1.54
Edades[ posicin ] =
Edades[posicin + 1] =
C4. Como el resultado de la cuarta comparacin es verdadero, los valores de estas posiciones se intercambian.
N_pasadas=
1
edades[1] 1.78
edades[1] 1.78
TAM_ARREGLO=
5
edades[2] 1.61
edades[2] 1.61
Posicin=
4
edades[3] 1.84
edades[3] 1.84
edades[ posicin ] > edades[ posicin + 1 ]
V
edades[4] 1.87
edades[4] 1.54
Temporal=
1.87
edades[5] 1.54
edades[5] 1.87
P.L.I. Carlos Augusto Flores Valerio

111

Diseo Estructurado De Algoritmos


Edades[ posicin ] =
Edades[posicin + 1] =

1.54
1.87

Con esto hemos terminado la primera pasada, ya que al incrementar la posicin ahora vale 5 y si
realizamos otra comparacin tendra que ser lo que esta en la posicin 5 contra lo que esta en la
posicin 6 y esta no existe, por lo cual se debe de terminar el ciclo cuando el valor de posicin es igual
al tamao del arreglo (posicin == TAM_ARREGLO). Aun as el arreglo todava no se encuentra
completamente ordenado, ya que en la primera pasada solo se garantiza que valor mayor pase a la
ltima posicin del arreglo, en la siguiente pasada el siguiente dato mayor pasa a la penltima posicin,
en la siguiente el tercer valor mayor pasa a la antepenltima localidad del arreglo y as sucesivamente.
C5. Como el resultado de la quinta comparacin es verdadero, los valores de estas posiciones se intercambian.
N_pasadas=
TAM_ARREGLO=
Posicin=
edades[ posicin ] > edades[ posicin + 1 ]
Temporal=
Edades[ posicin ] =
Edades[posicin + 1] =

2
5
1
V
1.78
1.61
1.78

edades[1]
edades[2]
edades[3]
edades[4]
edades[5]

1.78
1.61
1.84
1.54
1.87

edades[1]
edades[2]
edades[3]
edades[4]
edades[5]

1.61
1.78
1.84
1.54
1.87

edades[1]
edades[2]
edades[3]
edades[4]
edades[5]

1.61
1.78
1.84
1.54
1.87

C6. Como el resultado de la sexta comparacin es falso, el arreglo contina igual.


N_pasadas=
TAM_ARREGLO=
Posicin=
edades[ posicin ] > edades[ posicin + 1 ]
Temporal=
Edades[ posicin ] =
Edades[posicin + 1] =

2
5
2
F

edades[1]
edades[2]
edades[3]
edades[4]
edades[5]

1.61
1.78
1.84
1.54
1.87

C7. Como el resultado de la sptima comparacin es verdadero, los valores de estas posiciones se intercambian.
N_pasadas=
TAM_ARREGLO=
Posicin=
edades[ posicin ] > edades[ posicin + 1 ]
Temporal=
Edades[ posicin ] =
Edades[posicin + 1] =

2
5
3
V
1.84
1.54
1.84

edades[1]
edades[2]
edades[3]
edades[4]
edades[5]

1.61
1.78
1.84
1.54
1.87

edades[1]
edades[2]
edades[3]
edades[4]
edades[5]

1.61
1.78
1.54
1.84
1.87

edades[1]
edades[2]
edades[3]
edades[4]
edades[5]

1.61
1.78
1.54
1.84
1.87

C8. Como el resultado de la octava comparacin es falso, el arreglo contina igual.


N_pasadas=
TAM_ARREGLO=
Posicin=
edades[ posicin ] > edades[ posicin + 1 ]
Temporal=
Edades[ posicin ] =
Edades[posicin + 1] =

2
5
4
F

edades[1]
edades[2]
edades[3]
edades[4]
edades[5]

1.61
1.78
1.54
1.84
1.87

Con esto terminamos la segunda pasada, pero si somos observadores notaremos que al irse colocando
con cada pasada los valores mayores al fondo del arreglo, se vuelve innecesario realizar las
evaluaciones correspondientes, esto produce exceso de tiempo.
Sugerencia. Para evitar esta perdida o exceso de tiempo se recomienda hacer una mejora al
programa, la cual consiste en que despus de cada pasada decrementar en uno la variable que contiene
el tamao del arreglo (TAM_ARREGLO).

112

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

Nota. Existe otra posible mejora, pero se menciona la final.


C9. Como el resultado de la novena comparacin es falso, el arreglo contina igual.
N_pasadas=
TAM_ARREGLO=
Posicin=
edades[ posicin ] > edades[ posicin + 1 ]
Temporal=
Edades[ posicin ] =
Edades[posicin + 1] =

3
5
1
F

edades[1]
edades[2]
edades[3]
edades[4]
edades[5]

1.61
1.78
1.54
1.84
1.87

edades[1]
edades[2]
edades[3]
edades[4]
edades[5]

1.61
1.78
1.54
1.84
1.87

C10. Como el resultado de la dcima comparacin es verdadero, los valores de estas posiciones se intercambian.
N_pasadas=
TAM_ARREGLO=
Posicin=
edades[ posicin ] > edades[ posicin + 1 ]
Temporal=
Edades[ posicin ] =
Edades[posicin + 1] =

3
5
2
V
1.78
1.54
1.78

edades[1]
edades[2]
edades[3]
edades[4]
edades[5]

1.61
1.78
1.54
1.84
1.87

edades[1]
edades[2]
edades[3]
edades[4]
edades[5]

1.61
1.54
1.78
1.84
1.87

edades[1]
edades[2]
edades[3]
edades[4]
edades[5]

1.61
1.54
1.78
1.84
1.87

edades[1]
edades[2]
edades[3]
edades[4]
edades[5]

1.61
1.54
1.78
1.84
1.87

C11. Como el resultado de la onceava comparacin es falso, el arreglo contina igual


N_pasadas=
TAM_ARREGLO=
Posicin=
edades[ posicin ] > edades[ posicin + 1 ]
Temporal=
Edades[ posicin ] =
Edades[posicin + 1] =

3
5
3
F

edades[1]
edades[2]
edades[3]
edades[4]
edades[5]

1.61
1.54
1.78
1.84
1.87

C12. Como el resultado de la doceava comparacin es falso, el arreglo contina igual.


N_pasadas=
TAM_ARREGLO=
Posicin=
edades[ posicin ] > edades[ posicin + 1 ]
Temporal=
Edades[ posicin ] =
Edades[posicin + 1] =

3
5
4
F

edades[1]
edades[2]
edades[3]
edades[4]
edades[5]

1.61
1.54
1.78
1.84
1.87

Comenzamos la cuarta pasada.


C13. Como el resultado de la treceava comparacin es verdadero, los valores de estas posiciones se intercambian
N_pasadas=
TAM_ARREGLO=
Posicin=
edades[ posicin ] > edades[ posicin + 1 ]
Temporal=
Edades[ posicin ] =
Edades[posicin + 1] =

4
5
1
V
1.61
1.54
1.61

edades[1]
edades[2]
edades[3]
edades[4]
edades[5]

1.61
1.54
1.78
1.84
1.87

edades[1]
edades[2]
edades[3]
edades[4]
edades[5]

1.54
1.61
1.78
1.84
1.87

En este momento nuestro arreglo ya se encuentra ordenado, pero como el programa no lo sabe, l
continua hasta que el valor que asume N_pasadas sea igual a TAM_ARREGLO.
Sugerencia. Para salirse antes de un arreglo ya ordenado, se recomienda utilizar una variable entera
del tipo contador que se incrementa dentro de la condicin si entonces, la cual con cada pasada es
reiniciada en cero, pero si al trmino de una pasada esta sigue en cero quiere decir que no hubo
intercambio de valores entre posiciones por lo cual el arreglo ya esta ordenado.
P.L.I. Carlos Augusto Flores Valerio

113

Diseo Estructurado De Algoritmos

Como nos podemos dar cuenta es un mtodo muy sencillo y de fcil manejo, pero es ineficaz para
cuando se tienen arreglos de grandes dimensiones, ya que se consumen grandes cantidades de tiempo
mquina. En este ejemplo al ser un arreglo de 5 posiciones se realiza 16 veces la comparacin. Si fuera
un arreglo de 10 posiciones se hubieran realizado 91 comparaciones. Para sacar el total de
comparaciones al total de posiciones se le resta 1 y el total se eleva al cuadrado. Entonces en una
empresa que probablemente utiliza arreglos de 1000 posiciones, el programa tendr que ejecutar 9992 =
998,001 comparaciones, aunque estas pueden disminuir con las mejoras ya comentadas. Por lo cual
existen mtodos de ordenacin ms eficaces y eficientes pero no se ven dentro de este curso.
Arreglos Bidimensionales (Matrices).
Hasta este momento solo se han utilizado arreglos de una sola dimensin (1 columna) y en cualquier
lenguaje de programacin se pueden crear arreglos de mltiples dimensiones, pero la ms comn es la
de dos dimensiones, la cual significa que es un arreglo conformado por varios renglones y varias
columnas.

Posicin 4

Rengln 4
Columna 1

Rengln 4
Columna 2

Rengln 4
Columna 3

Posicin 3

Rengln 3
Columna 1

Rengln 3
Columna 2

Rengln 3
Columna 3

Posicin 2

Rengln 2
Columna 1

Rengln 2
Columna 2

Rengln 2
Columna 3

Posicin
nica

Posicin 1

Rengln 1
Columna 1

Rengln 1
Columna 2

Rengln 1
Columna 3

Variable

Arreglo [4]
( 1 columna, 3 renglones)

Arreglo [3][4]
( 4 renglones, 3 columnas)

Ilustracin 30 Comparacin entre una variable, un arreglo unidimensional y un arreglo de dos dimensiones.

Para declarar una matriz, el tamao de cada una de sus dimensiones se coloca en su propio parntesis
cuadrado o corchetes.
PSEUDOCDIGO Y DIAGRAMA N-S
Arreglos:
Edad : entero de [ 3 ] renglones [4] columnas
Parciales : real de [ 5 ] renglones [8] columnas
DIAGRAMA DE FLUJO
Arreglos:
Edad : entero de [ 3 ] renglones [4] columnas
Parciales : real de [ 5 ] renglones [8] columnas
Ilustracin 31 Forma en que se declaran matrices

Al declarar una matriz, se le pueden dar valores de inicio para cada una de sus posiciones, pera lo cual
despus de indicar el tamao de este se coloca un signo de igual y entre llaves {}, los valores de cada
114

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

posicin separados por comas, recordando que el primer valor corresponde al rengln 1 columna 1, el
segundo valor a rengln 1 columna 2 y as sucesivamente.
Sugerencia. Se recomienda que al inicializar matrices, se coloquen en una misma lnea los valores
para el primer rengln del arreglo en otra los del segundo y as sucesivamente, de forma que
visualicemos la distribucin fsica de nuestra matriz.
PSEUDOCDIGO Y DIAGRAMA N-S
Arreglos:
Edad : entero de [3] renglones [4] columnas = {25, 9, 18, 20, 31
4, 13, 28, 15, 54
29, 7, 12, 11, 23}
Parciales : real de [5] renglones [8] columnas = {0}
// si se coloca solo un cero todas las posiciones toman este valor

DIAGRAMA DE FLUJO
Arreglos:
Edad : entero de [3] renglones [4] columnas = {25, 9, 18, 20, 31
4, 13, 28, 15, 54
29, 7, 12, 11, 23}
Parciales : real de [5] renglones [8] columnas = {0}

Ilustracin 32 Forma en que se inicializan matrices

Para escribir lo que contiene una matriz debemos de indicar el nombre del arreglo y la posicin del
rengln entre corchetes y columna entre corchetes que deseamos visualizar.
PSEUDOCDIGO Y DIAGRAMA N-S
DIAGRAMA DE FLUJO
Lo
que
contiene
la
matriz
edades
en
el
rengln 2 columna 3 es:,
edades[2][3]

Escribir lo que contiene la matriz edades en el rengln 2


columna 3 es:, edades[2][3]

Ilustracin 33 Forma en que se despliega informacin desde una matriz.

Para almacenar un dato en una posicin especfica de una matriz debemos de indicar el nombre del
arreglo y la posicin del rengln entre corchetes y la columna entre corchetes en que deseamos guardar
el dato dado por el usuario.
PSEUDOCDIGO Y DIAGRAMA N-S
DIAGRAMA DE FLUJO
Leer edades[2][3]
// almacena una dato en el rengln 2 // columna 3 del arreglo
edades
Ilustracin 34 Forma en que se almacena informacin a una matriz.

Edades[2][3]

Para asignar el resultado de una operacin en una posicin especfica de una matriz debemos de
indicar el nombre del arreglo y la posicin del rengln ente corchetes y columna entre corchetes en que
deseamos colocar el resultado de la expresin.
PSEUDOCDIGO Y DIAGRAMA N-S
DIAGRAMA DE FLUJO
Edades[2][3] = 5 * 10
// almacena una dato en el rengln 2 // columna 3 del arreglo
edades

Edades[2][3] = 5 * 10

Ilustracin 35 Forma en que se asignan datos a una matriz.

La comparacin se realiza de la misma manera en que se realizan las operaciones ya vistas: colocando
el nombre y posicin del rengln entre corchetes y la posicin de la columna entre corchetes de la
matriz que se quiere comparar, el operador relacional y el valor o variable contra quien se coteja,
teniendo en cuenta que podra ser otra posicin de otra matriz. No se ejemplifican debido a que se
tendra que desarrollar la estructura condicional o cclica.
P.L.I. Carlos Augusto Flores Valerio

115

Diseo Estructurado De Algoritmos

A continuacin realizamos el primer ejemplo de un algoritmo en el cual utilizamos una matriz de 5


renglones por cuatro columnas, donde los renglones hacen referencia a un nmero de alumno mediante
la variable num_alum la cual es del tipo contador al igual que la variable parcial la cual es la que se
encarga de apuntar a las columnas que a su vez indican el nmero de parcial de cada alumno, es decir
que si nos encontramos con la coordenada [3][2] estamos apuntando al parcial 2 del tercer alumno.
Cada variable es incrementada en una estructura cclica hacer para ... hasta ..., donde la que controla
el parcial esta anidada dentro de la que controla al numero de alumno.
A partir de este momento omitiremos el anlisis del sistema ya lo podemos realizar mentalmente al
igual que la prueba.

Ejemplo

Se necesita de un sistema que utiliza un arreglo de 5 renglones y cuatro columnas, para almacenar
los 3 parciales y su promedio de 5 alumnos.

Disear El algoritmo
PS EU DO C D I GO
Pseudocdigo: alumnos
Arreglos:
calificaciones : real de [5] renglones [4] columnas
Variables:
num_alum, parcial : entero = 0
acum_cal : real = 0
Inicio
Hacer para num_alum = 1 hasta num_alum > 5
acum_cal = 0
Hacer para parcial = 1 hasta parcial > 3
Escribir Calificacin del alumno ,num_alum,en parcial:, parcial
Leer calificaciones[num_alum][parcial]
acum_cal = acum_cal + calificaciones[num_alum][parcial]
parcial = parcial + 1
Fin para
calificaciones[num_alum][parcial] = acum_cal / 3
num_alum = num_alum + 1
Fin para
Fin
Diagrama N-S
// diagrama N-S : Alumnos
Inicio
Arreglos:
calificaciones : real de [5] renglones [4] columnas
Variables:
num_alum, parcial : entero = 0
acum_cal : real = 0
num_alum > 5
acum_cal = 0
parcial > 3
num_alum=1

parcial=1

Escribir Calificacin del alumno ,num_alum,en parcial:, parcial


Leer calificaciones[num_alum][parcial]
acum_cal = acum_cal + calificaciones[num_alum][parcial]

parcial = parcial + 1
calificaciones[num_alum][parcial] = acum_cal / 3
116

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

num_alum = num_alum + 1
Fin
DI A GR AM A D E FL UJ O

P.L.I. Carlos Augusto Flores Valerio

117

Diseo Estructurado De Algoritmos

// Diagrama de flujo: Alumnos


INICIO
Arreglos:
calificaciones : real de [5] renglones [4] columnas
Variables:
num_alum, parcial : entero = 0
acum_cal : real = 0
num_alum = 1

num_alum > 5

num_alum = num_alum + 1
F
acum_cal = 0

parcial = 1

parcial > 3

parcial = parcial + 1
F
Calificacin del alumno ,
num_alum,en parcial:, parcial

calificaciones[num_alum][parcial]

acum_cal = acum_cal + calificaciones[num_alum][parcial]

calificaciones[num_alum][parcial] = acum_cal / 3

FIN
Tabla 39 Ejemplo 1 de arreglos bidimensionales
Se necesita un sistema que utiliza una matriz de 10 renglones y 3 columnas. En las dos primeras
Ejemplo
columnas se colocan los promedios de los 10 alumnos de dos grupos (A y B) y en la tercera

118

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos


columna se almacenar el promedio ms alto de cada posicin.
Paso II. Disear El algoritmo
PS EU DO C D I GO
Pseudocdigo: alumnos de 2 grupos
Arreglos:
grupos : real de [10] renglones [3] columnas
Variables:
alumno : entero = 0
Inicio
Hacer para alumno = 1 hasta alumno > 10
Escribir Promedio del alumno ,alumno, del primer grupo:
Leer grupos[alumno][1]
Escribir Promedio del alumno ,alumno, del segundo grupo:
Leer grupos[alumno][2]
Si grupos[alumno][1] > grupos[alumno][2] entonces
grupos[alumno][3] = grupos[alumno][1]
Si no
grupos[alumno][3] = grupos[alumno][2]
Fin si
alumno = alumno + 1
Fin para
Fin
Diagrama N-S
// diagrama N-S : alumnos de 2 grupos
Inicio
Arreglos:
grupos : real de [10] renglones [3] columnas
Variables:
alumno : entero = 0
alumno > 10

alumno = 1

Escribir Promedio del alumno ,alumno, del primer grupo:


Leer grupos[alumno][1]
Escribir Promedio del alumno ,alumno, del segundo grupo:
Leer grupos[alumno][2]
grupos[alumno][1] > grupos[alumno][2]
verdadero
grupos[alumno][3] = grupos[alumno][1]

falso
grupos[alumno][3] = grupos[alumno][2]

alumno = alumno + 1
Fin
DI A GR AM A D E FL UJ O

P.L.I. Carlos Augusto Flores Valerio

119

Diseo Estructurado De Algoritmos

// Diagrama de flujo: Alumnos de 2 grupos


INICIO
Arreglos:
grupos : real de [10] renglones [3] columnas
Variables:
alumno : entero = 0
alumno = 1

alumno > 10

alumno = alumno + 1
F
promedio del alumno , alumno ,del
primer grupo

grupos[alumno][1]

promedio del alumno , alumno ,del


segundo grupo

grupos[alumno][2]

grupos[alumno][1]
>
grupos[alumno][2]

grupos[alumno][3] = grupos[alumno][1]

grupos[alumno][3] = grupos[alumno][1]

FIN
Tabla 40 Ejemplo 2 del manejo de arreglos

120

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

Ejercicios.
I. Realiza un algoritmo con las tres diferentes tcnicas utilizando matrices para cada uno de los
siguientes problemas.
Sistema que almacena la estatura, peso y talla de zapatos de hasta 100 personas, preguntando si se
desea almacenar los datos de otra persona.
Sistema que tiene cuatro opciones: suma, resta, multiplicacin y salir, en el cual segn la opcin que se
seleccione muestra las tablas correspondientes o sale del sistema.
Sistema que permite almacenar, consultar y modificar el nombre, direccin y telfono de hasta 10
personas.
Sistema que captura y posteriormente ordena alfabticamente los datos de 10 personas ya sea por
nombre, apellido paterno o apellido materno
Sistema que almacena los tres parciales y promedios de 10 alumnos, de las cuales necesitamos saber
cuantos sacaron de promedio menos de 6, cuantos entre 6 y 8, cuantos entre 8 y 9 y cuantos ms de 9 ;
adems que despliegue los parciales de todos aquellos que tienen promedio de 9 o ms.

5.2 ESTRUCTURAS
Este subtema en realidad es muy sencillo, ya que nosotros ya utilizamos estructuras desde los primeros
temas:
Una variable, es en realidad la estructura ms sencilla a manejar, la cual consiste en almacenar solo un
dato de un tipo especifico.
Un arreglo, es una estructura la cual almacena n datos del mismo tipo. Cuando declaramos un arreglo
del tipo entero de 3 posiciones llamado arreglo1 (arreglo1[3] : entero), en realidad estamos creando una
estructura de tres variables enteras (arreglo1[0], arreglo1[1] y arreglo1[2]).
Pues una estructura no es muy diferente a un arreglo, ya que una estructura es un conjunto n variables,
las cuales pueden ser de diferentes tipos.

Posicin 4
de tipo
entero

Variable 4 de
tipo boleano

Posicin 3
de tipo
entero
Posicin 2
de tipo
entero

Posicin
nica

Posicin 1
de tipo
entero

Edad: entera

edades [4] : enteros

Variable 3 de tipo
alfanumrico

Variable 2 de
tipo entero

Variable 1
de tipo real

Estructura

Ilustracin 36 Diferencia entre variables, arreglos y estructuras.


P.L.I. Carlos Augusto Flores Valerio

121

Diseo Estructurado De Algoritmos

Hablando en trminos de base datos, una estructura se asemeja a un registro, el cual es un conjunto de
campos relacionados entre si.
En un algoritmo antes de utilizar a una estructura para realizarle cualquier operacin, se deben de
indicar las variables que contendr la estructura y el nombre de esta. Este proceso se conoce como
definicin de la estructura y se realiza en la seccin estructuras.
PSEUDOCDIGO Y DIAGRAMA N-S
DIAGRAMA DE FLUJO
Estructuras:
Alumno con los campos:
Nombre : alfanumrico
N_control : entero
Semestre : entero
Grupo : alfanumrico
Promedio_final : real

Estructuras:
Alumno con los campos:
Nombre : alfanumrico
N_control : entero
Semestre : entero
Grupo : alfanumrico
Promedio_final : real

Ilustracin 37 Forma en que se define una estructura.

Las operaciones que se pueden realizar sobre las estructuras son exactamente las mismas que a las
variables: declaracin, desplegar, almacenar, asignar, inicializar y comparar.
La declaracin no desvara mucho de la declaracin de variables incluso se realiza en la seccin de
variables, ya que hay que colocar el nombre de la estructura y el tipo de dato, con la excepcin de que
el tipo de dato ya no es entero, real, alfanumrico o boleano, sino que debe ser el nombre de una
estructura ya definida; ya que estamos declarando una variable con un nombre especfico que debe
tener los campos que se definieron en la estructura. A esto es a lo que llamamos: declarar una
variable del tipo estructura predefinida.
PSEUDOCDIGO Y DIAGRAMA N-S
DIAGRAMA DE FLUJO
Estructuras:
Alumno con los campos:
Nombre : alfanumrico
Estructuras:
N_control : entero
Alumno con los campos:
Semestre : entero
Nombre : alfanumrico
Grupo : alfanumrico
N_control : entero
Promedio_final : real
Semestre : entero
variables:
alu1 : Alumno
alu2 : Alumno
// se estn declarando dos variables del
// tipo Alumno

Grupo : alfanumrico
Promedio_final : real
variables:
alu1 : Alumno
alu2 : Alumno

Ilustracin 38 declaracin de variables del tipo de una estructura predefinida

Al declarar una variable del tipo de una estructura predefinida, se le pueden dar valores de inicio para
cada una de sus variables internas, para lo cual despus de declararla se coloca un signo de igual y entre
llaves {}, los valores de cada campo separados por comas, los cuales se introducen en el orden en
que esta definida la estructura.
PSEUDOCDIGO Y DIAGRAMA
DIAGRAMA DE FLUJO
N-S
122

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos


Estructuras:
Alumno con los campos:
Nombre : alfanumrico
N_control : entero
Promedio_final : real
variables:
alu1 : Alumno = {Juan,96010374,8.9}
alu2 : Alumno = {Mara,0027204,7.8}

Estructuras:
Alumno con los campos:
Nombre : alfanumrico
N_control : entero
Promedio_final : real
variables:
alu1 : Alumno= {Juan,96010374,8.9}
alu2 : Alumno= {Mara,0027204,7.8}

Ilustracin 39 Inicializacin de variables del tipo estructura predefinida

Para escribir lo que contiene una variable de un tipo de estructura predefinido en un campo especfico,
debemos de indicar el nombre de la variable, colocar un punto . y el campo que deseamos visualizar.
PSEUDOCDIGO Y DIAGRAMA N-S
DIAGRAMA DE FLUJO
la variable alu1 en su campo
promedio_final tiene:,
alu1.promedio_final
Ilustracin 40 Desplegar contenido de un campo de una variable del tipo estructura.
Escribir la variable alu1 en su campo promedio_final
tiene:, alu1.promedio_final

Para almacenar algo dentro de una variable de un tipo de estructura predefinido en un campo
especfico, debemos de indicar el nombre de la variable, colocar un punto . y el campo que deseamos
visualizar.
PSEUDOCDIGO Y DIAGRAMA N-S
DIAGRAMA DE FLUJO
Leer alu1.promedio_final
// almacena un dato en el campo promedio_final de alu1

alu1.promedio_final

Ilustracin 41 Almacenar informacin en campo de una variable del tipo estructura.

Para asignar el resultado de una operacin dentro de una variable de un tipo de estructura predefinido
en un campo especfico, debemos de indicar el nombre de la variable, colocar un punto . y el campo
que deseamos visualizar.
PSEUDOCDIGO Y DIAGRAMA N-S
DIAGRAMA DE FLUJO
alu1.promedio_final = 9.5
alu1.promedio_final = 9.5
// almacena un dato en el campo promedio_final alu1
Ilustracin 42 Asignar datos en campo de una variable del tipo estructura.

A continuacin realizamos un primer ejercicio que utiliza estructuras, dentro de la definicin de la


estructura se declara un arreglo de 4 posiciones para guardar las calificaciones del alumno.
Se necesita un sistema que captura el nombre, numero de control, calificacin de primer parcial,
calificacin de segundo parcial, calificacin de tercer parcial y promedio final de 2 alumnos, el
Ejemplo
cual nos debe de decir que alumno salio con respecto a su promedio final.
Paso II. Disear El algoritmo
PS EU DO C D I GO
Pseudocdigo: Comparar alumnos
Estructuras:
alumno con los campos:
nombre : alfanumrico
num_control : entero
Arreglos:
parciales : real de [4] posiciones
// el arreglo parciales esta dentro de la estructura alumno
Variables:
alumno1 : alumno
alumno2 : alumno

P.L.I. Carlos Augusto Flores Valerio

123

Diseo Estructurado De Algoritmos


Inicio
Escribir Dame el nombre del primer alumno:
Leer alumno1.nombre
Escribir Dame el nmero de control del primer alumno:
Leer alumno1.num_control
Escribir Dame calificacin de 1er. parcial del primer alumno:
Leer alumno1.parciales[1]
Escribir Dame calificacin de 2do. parcial del primer alumno:
Leer alumno1.parciales[2]
Escribir Dame calificacin de 3er. parcial del primer alumno:
Leer alumno1.parciales[3]
alumno1.parciales[4] = (alumno1.parciales[1] + alumno1.parciales[2] + alumno1.parciales[3] ) / 3
Escribir Dame el nombre del segundo alumno:
Leer alumno2.nombre
Escribir Dame el nmero de control del segundo alumno:
Leer alumno2.num_control
Escribir Dame calificacin de 1er. parcial del segundo alumno:
Leer alumno2.parciales[1]
Escribir Dame calificacin de 2do. parcial del segundo alumno:
Leer alumno2.parciales[2]
Escribir Dame calificacin de 3er. parcial del segundo alumno:
Leer alumno2.parciales[3]
alumno2.parciales[4] = (alumno2.parciales[1] + alumno2.parciales[2] + alumno2.parciales[3] ) / 3
Si alumno1.parciales[4] > alumno2.parciales[4] entonces
Escribir alumno1.nombre, Salio mejor en promedio final que ,alumno2.nombre
Si no
Escribir alumno2.nombre, Salio mejor en promedio final que ,alumno1.nombre
Fin si
Fin
DI A GR AM A D E FL UJ O

124

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

// Diagrama de flujo : Comparar alumnos


INICIO
Estructuras:
alumno con los campos:
nombre : alfanumrico
num_control : entero
Arreglos:
parciales : real de [4] posiciones
Variables:
alumno1 : alumno
alumno2 : alumno
Dame el nombre del primer alumno:,
Dame el nmero de control del primer alumno:,
Dame calificacin de 1er. parcial del primer alumno:,
Dame calificacin de 2do. parcial del primer alumno:,
Dame calificacin de 3er. parcial del primer alumno:
alumno1.nombre
alumno1.num_control
alumno1.parcial[1]
alumno1.parcial[2]
alumno1.parcial[3]
alumno1.parciales[4] = (alumno1.parciales[1] + alumno1.parciales[2] + alumno1.parciales[3] ) / 3
Dame el nombre del segundo alumno:,
Dame el nmero de control del segundo alumno:,
Dame calificacin de 1er. parcial del segundo alumno:,
Dame calificacin de 2do. parcial del segundo alumno:,
Dame calificacin de 3er. parcial del segundo alumno:

alumno2.nombre
alumno2.num_control
alumno2.parcial[1]
alumno2.parcial[2]
alumno2.parcial[3]
alumno2.parciales[4] = (alumno2.parciales[1] + alumno2.parciales[2] + alumno2.parciales[3] ) / 3

V
alumno1.nombre, Sali mejor en
promedio final que,alumno2.nombre

alumno1.parciales[4]
>
alumno2.parciales[4]

F
Alumno2.nombre, Sali mejor en
promedio final que,alumno1.nombre

FIN

Diagrama N-S
P.L.I. Carlos Augusto Flores Valerio

125

Diseo Estructurado De Algoritmos

// diagrama N-S : Comparar alumnos


Inicio
Estructuras:
alumno con los campos:
nombre : alfanumrico
num_control : entero
Arreglos:
parciales : real de [4] posiciones
Variables:
alumno1 : alumno
alumno2 : alumno
Escribir Dame el nombre del primer alumno:
Leer alumno1.nombre
Escribir Dame el nmero de control del primer alumno:
Leer alumno1.num_control
Escribir Dame calificacin de 1er. parcial del primer alumno:
Leer alumno1.parciales[1]
Escribir Dame calificacin de 2do. parcial del primer alumno:
Leer alumno1.parciales[2]
Escribir Dame calificacin de 3er. parcial del primer alumno:
Leer alumno1.parciales[3]
alumno1.parciales[4] = (alumno1.parciales[1] + alumno1.parciales[2] + alumno1.parciales[3] ) / 3
Escribir Dame el nombre del segundo alumno:
Leer alumno2.nombre
Escribir Dame el nmero de control del segundo alumno:
Leer alumno2.num_control
Escribir Dame calificacin de 1er. parcial del segundo alumno:
Leer alumno2.parciales[1]
Escribir Dame calificacin de 2do. parcial del segundo alumno:
Leer alumno2.parciales[2]
Escribir Dame calificacin de 3er. parcial del segundo alumno:
Leer alumno2.parciales[3]
alumno2.parciales[4] = (alumno2.parciales[1] + alumno2.parciales[2] + alumno2.parciales[3] ) / 3
alumno1.parciales[4] > alumno2.parciales[4]
Verdadero
Escribir alumno1.nombre, Salio mejor en promedio
final que ,alumno2.nombre
Fin

Falso
Escribir alumno2.nombre, Salio mejor en promedio
final que ,alumno1.nombre

Tabla 41 Ejemplo 1 del manejo de estructuras

En este primer ejemplo nos damos cuenta que para introducir un dato dentro de un campo de una
estructura el cual es a su vez parte de un arreglo, se tiene que indicar en el lado del campo la posicin
en la que se debe de guardar el dato. Pero ahora veremos como introducir datos a un arreglo del tipo
estructura predefinida.

Ejemplo

Se necesita un sistema que almacena la clave, descripcin, precio de compra, precio de menudeo
y precio de mayoreo de 10 productos.
Paso II. Disear El algoritmo
PS EU DO C D I GO
Pseudocdigo: Supermercado
Estructuras:
producto con los campos:
clave : entera

126

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos


descripcin : alfanumrico
Arreglos :
precios : real, de [3] posiciones
Arreglos:
productos : producto, de [10] posiciones
Variables:
ndice : entera
Inicio
hacer para ndice = 1 hasta ndice > 10
Escribir Clave del producto , ndice, :
Leer productos[ndice].clave
Escribir Descripcin del producto , ndice, :
Leer productos[ndice].descripcin
Escribir Precio de compra del producto , ndice, :
Leer productos[ndice].precios[1]
Escribir Precio de menudeo del producto , ndice, :
Leer productos[ndice].precios[2]
Escribir Precio de mayoreo del producto , ndice, :
Leer productos[ndice].precios[3]
ndice = ndice + 1
Fin Para
Fin

Diagrama N-S
// diagrama N-S : Supermercado
Inicio
Estructuras:
producto con los campos:
clave : entera
descripcin : alfanumrico
Arreglos :
precios : real, de [3] posiciones
Arreglos:
productos : producto, de [10] posiciones
Variables:
ndice : entera
ndice > 10
Escribir Clave del producto , ndice, :
Leer productos[ndice].clave
Escribir Descripcin del producto , ndice, :
Leer productos[ndice].descripcin
Escribir Precio de compra del producto , ndice, :
ndice = 1
Leer productos[ndice].precios[1]
Escribir Precio de menudeo del producto , ndice, :
Leer productos[ndice].precios[2]
Escribir Precio de mayoreo del producto , ndice, :
Leer productos[ndice].precios[3]
ndice = ndice + 1
Fin

DI A GR AM A D E FL UJ O

P.L.I. Carlos Augusto Flores Valerio

127

Diseo Estructurado De Algoritmos

// Diagrama de flujo : Supermercado


INICIO
Estructuras:
producto con los campos:
clave : alfanumrico
descripcin : entero
Arreglos:
precios : real de [3] posiciones
Arreglos:
productos : producto de [10] posiciones
Variables:
ndice : entera

ndice = 1

ndice > 10

ndice = ndice + 1

F
Clave del producto, ndice, :
Descripcin del producto , ndice, :
Precio de compra del producto , ndice, :
Precio de menudeo del producto , ndice, :
Precio de mayoreo del producto , ndice, :

productos[ndice].clave
productos[ndice].descripcin
productos[ndice].precios[1]
productos[ndice].precios[2]
productos[ndice].precios[3]

FIN

Tabla 42 Ejemplo 2 de manejo de estructuras

Ejercicios.
I. Realiza un algoritmo que utilice estructuras mediante las tres tcnicas para cada uno de los puntos
siguientes.
Se necesita un sistema para una escuela el cual almacene el nombre, direccin, telfono, semestre,
grupo y matricula de 100 alumnos.
Se necesita un sistema para una escuela el cual permite almacenar, borrar, buscar y ordenar hasta un
mximo de 100 alumnos con los mismos datos del ejemplo anterior.

128

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

CONCLUSIN
En este tema se presentaron 2 subtemas, donde cada uno tiene una gran importancia para tener una
mejor mentalidad de programador, ya que ambos estn enfocados a un mejor almacenamiento de datos.
El primero, abord a los arreglos los cuales nos evitan la necesidad de declarar bastantes variables del
mismo tipo, ya que solo bastar con declarar una sola con varias posiciones, donde cada posicin puede
almacenar un dato del tipo del arreglo. Vimos que a cada posicin se puede acceder por medio de un
ndice, el cual debe de colocarse dentro de unos corchetes despus del nombre del arreglo. Tambin se
estudi que los arreglos pueden ser de varias dimensiones, donde los ms comunes son los de una y
dos, a los primeros se les llama vectores y a los segundos matrices.
En el segundo se estudi a las estructuras, las cuales a diferencia de los arreglo se utilizan para
almacenar datos de diferentes tipos. Vimos que las estructuras se deben de declarar antes de crear
variables de este tipo predefinido. Aprendimos que para almacenar valores dentro de una variable del
tipo estructura, debemos de indicar el nombre de la variable, colocar un punto y el nombre de la
variable interna en la que se desea guardar el dato.
Con este tema hemos cubierto casi todo nuestro curso, por lo cual si se ha logrado la comprensin hasta
este punto podemos decir que estamos a un 90% de lograr el objetivo general.
OBJETIVO DEL CURS0
90%

10%
% Cubierto
% Faltante

P.L.I. Carlos Augusto Flores Valerio

129

Diseo Estructurado De Algoritmos

130

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

VI. MANEJO DE MDULOS


OBJETIVO

Al terminar el tema el participante mediante la elaboracin de ejercicios, disear


mdulos para fragmentar sus algoritmos, con la finalidad de que estos sean ms
fciles de desarrollar.

CONTENIDO
INTRODUCCIN
6.1 Mdulos
CONCLUSIN

Introduccin
Un excelente programador se distingue de los otros cuando fragmenta sus programas en otros ms
pequeos, lo cual provoca que esto sean ms sencillos, cortos y funcionales.
En este tema se adquirirn los conocimientos para crear mdulos, las cuales como se ver, no son otra
cosa ms que pequeos programas o algoritmos que se escriben fuera del programa o algoritmo
principal. Veremos que la creacin de un mdulo lleva 2 pasos; la definicin del mdulo y la llamada
del mdulo; donde la definicin no es otra cosa ms que desarrollar los pasos a realizar cuando el
mdulo se ejecute, y la llamada del mdulo es mandar a traerlo para que se reproduzca. Adems
haremos que nuestros mdulos puedan o no recibir ciertos datos desde el algoritmo principal que le
ayuden a realizar sus tareas y que al trmino de su ejecucin devuelvan o no un dato al programa
principal.
Con este tema el cual es muy fcil se concluye este curso as que: animo falta poco.

6.1 Mdulos
La programacin modular es el proceso que consiste en dividir un gran programa en varios ms
pequeos, los cuales realizan una tarea especfica, siendo estos ms fciles de depurar y de mantener.

Ilustracin 43 Ejemplo de lo que significa modular

Un mdulo, funcin o procedimiento es un programa reutilizable, el cual realiza una tarea(s)


especfica(s).
Para manejar un mdulo hay que realizar 2 procesos:
Definicin del mdulo. Es el proceso de escribir todas las instrucciones que se van a ejecutar
cuando se haga una llamada a este, incluyendo los datos que puede recibir desde el programa principal
y el dato que puede devolver al algoritmo principal.
P.L.I. Carlos Augusto Flores Valerio

131

Diseo Estructurado De Algoritmos

Para definir una funcin en pseudocdigo y en diagramas N-S, esta se debe de realizar en la seccin
con este nombre o en otra hoja independiente, dentro de la cual se coloca el nombre de la funcin, las
variables, constantes, arreglos y estructuras que vaya a manejar, y el conjunto de instrucciones a
ejecutar comenzando con la instruccin Inicio Mdulo y terminando con la instruccin Fin Modulo.
Para definir un procedimiento en diagrama de flujo, se debe de crear un diagrama de flujo
independiente con el nombre del mdulo, en el cual se ilustran todas las instrucciones y datos a utilizar
por la funcin, donde la primera instruccin es Inicio Mdulo y la ltima Fin Mdulo.
Llamada al mdulo. Es el proceso de mandar a traer al procedimiento para que ejecute su(s)
tarea(s).
Este proceso se realiza en pseudocdigo y en diagramas N-S escribiendo la instruccin Ejecutar,
seguida del nombre del mdulo, en caso de que la funcin requiera ciertos datos desde el programa
principal estos se deben de colocar entre parntesis separados por comas, y si el procedimiento
devuelve un dato al algoritmo principal cuando termina de ejecutarse se debe de colocar una flecha ()
apuntando a la variable que recibir el dato.
En diagrama de flujo, este proceso se realiza utilizando el smbolo llamada a funcin o mdulo, el
cual es un rectngulo dividido en tres secciones: en la del centro se coloca el nombre del mdulo que se
quiere ejecutar, en la de la derecha se escriben los datos que requiere la funcin se pasen desde el
programa principal, y en el de la izquierda se coloca la variable que recibir el dato que devuelve el
procedimiento al terminar de ejecutarse.
A continuacin veremos un primer ejemplo que utiliza mdulos, en el cual veremos la propiedad
de ser reutilizable con lo cual nos damos cuenta de que nuestro algoritmo principal no es tan
extenso ya que las instrucciones que se tendran que repetir varias veces en un programa sin
funciones solo se tienen que escribir una vez dentro del procedimiento y estas se ejecutan cuantas
veces se desee.

Ejemplo

Se necesita un sistema que despliegue el cuadrado de un nmero dado por el usuario.

Paso II. Disear El algoritmo


PS EU DO C D I GO
Pseudocdigo del mdulo: CUADRADO
Variables:
nmero, resultado: enteras
// estas variables solo pueden ser utilizadas por el mdulo o funcin
Inicio mdulo
Escribir Dame un nmero
Leer nmero
resultado = nmero * nmero
Escribir Resultado :, resultado
Fin mdulo
-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o
Pseudocdigo: Cuadrado de varios nmeros
Variables: // sin variables
Inicio
Escribir primera llamada al mdulo CUADRADO
Ejecutar CUADRADO
Escribir segunda llamada al mdulo CUADRADO
Ejecutar CUADRADO
Escribir tercera llamada al mdulo CUADRADO
Ejecutar CUADRADO
Fin
DI A GR AM A D E FL UJ O

132

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos


//Diagrama de flujo del mdulo: CUADRADO
Inicio Mdulo

Variables:
nmero, resultado: enteras = 0
Dame un nmero

nmero

resultado = nmero * nmero


Resultado:,
resultado

Fin Mdulo
//Diagrama de flujo: Cuadrado de varios Nmeros
Inicio
Primera llamada al
mdulo CUADRADO

CUADRADO
Primera llamada al
mdulo CUADRADO

CUADRADO
Primera llamada al
mdulo CUADRADO

CUADRADO

Fin Mdulo
Diagrama N-S
P.L.I. Carlos Augusto Flores Valerio

133

Diseo Estructurado De Algoritmos

// diagrama N-S del mdulo: CUADRADO


Inicio Mdulo
Variables:
nmero, resultado: enteras
Escribir Dame un nmero
Leer nmero
resultado = nmero * nmero
Escribir Resultado :, resultado
Fin Mdulo
// Diagrama N-S: Cuadrado de varios nmeros
Inicio
Escribir primera llamada al mdulo CUADRADO
Ejecutar CUADRADO
Escribir segunda llamada al mdulo CUADRADO
Ejecutar CUADRADO
Escribir tercera llamada al mdulo CUADRADO
Ejecutar CUADRADO
Fin
Tabla 43 Ejemplo 1 del manejo de Mdulos o funciones
Se necesita un sistema que llame a un mdulo llamado REA el cual calcula el rea de un
rectngulo y para hacerlo debe de recibir dos datos desde el algoritmo principal, uno es la base y
otro la altura.
Paso II. Disear El algoritmo
PS EU DO C D I GO
Pseudocdigo del Mdulo: REA
Parmetros:
base : entero
altura : entero
// los datos que son recibidos cuando es efectuada la llamada se llaman parmetros
Variables:
resultado : entero
Inicio Mdulo
resultado = base * altura
Escribir rea del rectngulo :, resultado
Fin Mdulo
-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-oPseudocdigo: rea de varios rectngulos
Variables:
dato1, dato2 : enteros
resp : alfanumrico = n
Inicio
Repetir
Escribir Dame base del rectngulo:
Leer dato1
Escribir Dame altura del rectngulo:
Leer dato2
Ejecutar REA(dato1, dato2)
// Se ejecuta el mdulo rea y el valor de dato1 es asignado al parmetro base y // el valor de dato2 es asignado al parmetro
altura.

Ejemplo

134

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos


Escribir deseas calcular otra rea?:
Leer resp
Hasta resp == n
Fin
Diagrama N-S
// diagrama N-S del Mdulo: REA
Inicio Mdulo
Parmetros:
base : entero
altura : entero
Variables:
resultado : entero
resultado = base * altura
Escribir rea del rectngulo :, resultado
Fin Mdulo

// Diagrama N-S: rea de varios rectngulos


Inicio
Variables:
dato1, dato2 : enteros
resp : alfanumrico = n
Escribir Dame base del rectngulo:
Leer dato1
Escribir Dame altura del rectngulo:
Leer dato2
Ejecutar REA(dato1, dato2)
Escribir deseas calcular otra rea?:
Leer resp
resp == n
Fin
DI A GR AM A D E FL UJ O

P.L.I. Carlos Augusto Flores Valerio

135

Diseo Estructurado De Algoritmos

// Diagrama de Flujo: rea de varios rectngulos


Inicio
Variables:
dato1, dato2 : enteros
resp : alfanumrico = n

// Diagrama de Flujo del Mdulo: REA

Dame base del


rectngulo

Inicio Mdulo

dato1

PARMETROS:
base : entero
altura : entero

Dame altura del


rectngulo

Variables:
resultado : entero

dato2
Dato1
Dato2

REA

resultado = base * altura

Deseas calcular otra


rea?:

rea del rectngulo :,


resultado

resp

Fin Mdulo
F

resp == n
V
Fin
Tabla 44 Ejemplo 2 del manejo de Mdulos o Funciones
Se necesita un sistema que mande a llamar a un mdulo llamado PRECIO_NETO, el cual para
funcionar correctamente debe de recibir desde el algoritmo principal el precio y el descuento
deseado; al terminar de ejecutarse se debe regresar el nuevo precio al algoritmo principal.
Paso II. Disear El algoritmo
PS EU DO C D I GO
Pseudocdigo del mdulo: PRECIO_NETO
Parmetros:
precio : real
descuento : real
Dato a devolver:
nuevo_precio : real
Inicio Mdulo
nuevo_precio = precio (precio * descuento)
Fin Mdulo
// Al terminar de ejecutarse el mdulo se regresa el valor que tiene la variable // nuevo_precio al algoritmo principal
-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-oPseudocdigo: Tienda

Ejemplo

136

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos


Variables:
p_neto, prec, desc : reales
resp : alfanumerico = s
Inicio
Hacer mientras resp == s
Escribir Precio del producto:
Leer prec
Escribir Descuento a realizar:
Leer desc
Ejecutar PRECIO_NETO(prec, desc) p_neto
// El dato que devuelve la funcin o mdulo es asignado a la variable p_neto, la // cual puede ser utilizada dentro del
algoritmo principal
Escribir El precio neto del producto es:, p_neto
Escribir Deseas calcular otro producto?:
Leer resp
Fin mientras
Fin
Diagrama N-S
// diagrama N-S para el Mdulo : PRECIO_NETO
Inicio Mdulo
Parmetros:
precio : real
descuento : real
Dato a devolver:
nuevo_precio : real
nuevo_precio = precio (precio * descuento)
Fin Mdulo

// diagrama N-S: TIENDA


Inicio
Variables:
p_neto, prec, desc : reales
resp : alfanumerico = s
resp == s
Escribir Precio del producto:
Leer prec
Escribir Descuento a realizar:
Leer desc
Ejecutar PRECIO_NETO(prec, desc) p_neto
Escribir El precio neto del producto es:, p_neto
Escribir Deseas calcular otro producto?:
Leer resp
Fin
DI A GR AM A D E FL UJ O

P.L.I. Carlos Augusto Flores Valerio

137

Diseo Estructurado De Algoritmos

// D.F.: Tienda

Inicio
Variables:
p_neto, prec, desc : reales
resp : alfanumerico = s

// D.F. Mdulo: PRECIO_NETO


Inicio Mdulo

resp == s
PARMETROS:
precio : real
descuento : real

V
Precio del producto:

DATO A DEVOLVER:
nuevo_precio : real

prec

Descuento a realizar:
nuevo_precio = precio (precio * descuento)

desc
Fin Mdulo

p_neto

PRECIO_NETO

prec
desc

Deseas calcular otro producto:


resp

Fin
Tabla 45 Ejemplo 3 del manejo de Mdulos o Funciones

Ejercicios.
I. Escribe una funcin y programa para cada uno de los siguientes puntos, utilizando las tres diferentes
tcnicas.
Se necesita un sistema que calcule el factorial de un nmero dado por el usuario.
Se necesita un sistema que calcula el cuadrado de un nmero dado por el usuario
Funcin que acepta cuatro variables alfanumricas, las cuales son las opciones del men.
Funcin que acepta cuatro variables alfanumricas, las cuales son las opciones del men, pero adems
que adems devuelva la opcin presionada por el usuario.
Funcin que recibe dos nmeros. Si el primero es mayor que el segundo devuelve un 1, si el segundo es
mayor que el primero devuelve un -1, pero si son iguales el dato devuelto es un 0.

138

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

Funcin que recibe 3 datos numricos, con los cuales escribe la fecha en la pantalla.
Mdulo que recibe las horas trabajadas, el precio por hora trabajada y el precio de la hora extra. Con
estos calcular y devolver el salario de un trabajador, donde las primeras 40 horas se pagan normal y las
restantes se pagan como tiempo extra.
Mdulo que recibe las tres calificaciones parciales de un alumno, el cual regresa su calificacin con
letra, donde si su promedio es menor de 6 le corresponde NA, de 6 a 8 obtiene S, mayor a 8 y
cuando mucho 9 saca B y superior a 9 su calificacin es E.

CONCLUSIN
En este tema se abarc un nico subtema, el cual tiene como objetivo hacernos unos programadores
funcionales, es decir que los sistemas los dividamos en pequeos mdulos o funciones, los cuales
realizan una tarea especfica, teniendo de la capacidad de utilizarse o ejecutarse cuantas veces sea
necesario, adems de que para ejecutarse cada vez de una manera distinta les podemos enviar ciertos
datos llamados parmetros, y tambin podemos hacer que despus de ejecutarse regresen un valor de
un tipo especfico al algoritmo principal.
Con la comprensin absoluta de este tema hemos cubierto el 10% faltante para lograr el objetivo del
curso.
OBJETIVO DEL CURS0
100%
% Cubierto
% Faltante

P.L.I. Carlos Augusto Flores Valerio

139

Diseo Estructurado De Algoritmos

CONCLUSIN GENERAL
Si estas leyendo esto FELICIDADES!, Por qu?, por la simple y sencilla razn que has dado el paso
ms importante para ser un gran programador, ya que para serlo hay que pensar como ellos y t lo has
logrado. Veamos por que:
Si en este momento se te contrata como programador para instalar un sistema de informacin en una
empresa que requiere mostrar los resultados obtenidos en un dispositivo de salida; tu sabes cual es la
tarea de un programador, que es un sistema de informacin, que es un dispositivo de salida, todos los
pasos que tendras que realizar el sistema, y muchos otros conceptos que solo un diseador de sistemas
conoce. Todo esto lo aprendiste en el primer tema.
Si este sistema que se te solicita requiere que se calcule el salario neto de un trabajador deduciendo
IMSS, FOVISSTE, ISR, etc. T sabes como expresar un clculo de estos en una sola o varias
expresiones utilizando identificadores de diferentes tipos y operadores aritmticos, los cuales manejaste
a partir del segundo tema.
Si este proceso que se te esta solicitando requiere que se ejecute para 100 trabajadores y que se den
bonificaciones por puntualidad, tu sabras expresar esta solucin tanto en pseudocdigo, diagramas de
flujo y diagramas N-S, los cuales manejaste a partir del tercer mdulo, adems de que podras tomar la
decisin de a quien darle su bono debido a que aplicaste durante el curso las estructuras condicionales,
las estructuras cclicas las aplicaras para hacer que este proceso no solo se le aplique a 100
trabajadores sino a todos los que sean necesarios. Todo esto lo manejaste y aprendiste en el transcurso
del tercer y cuarto tema.
Tu podras hacer ms efectivo tu sistema si decides utilizar estructuras para almacenar los datos del
trabajador como nombre, direccin, telfono, # del IMSS, etc. Adems podras utilizar arreglos para
almacenar los datos de 100 o cuantos trabajadores sean necesarios. Esto es parte de los que se abarco
en el quinto tema.
Podras hacer que tus algoritmos estuvieran divididos en otros pequeos, los cuales probablemente se
encargaran del descuento del IMSS, del FOVISSTE, etc. Ya que tu sabes crear mdulos los cuales
manejaste en el sexto tema.
Ahora para ser un excelente programador, solo te basta aprender un lenguaje de programacin el cual
puedes asimilar en otro curso o simplemente adquiriendo un libro, recordando que la prctica hace al
maestro y que no te ser difcil ya que ahora tienes las mejores bases.
GRACIAS POR TU ESFUERZO!
ATTE.
P.L.I. Carlos Augusto Flores Valerio

140

P.L.I. Carlos Augusto Flores Valerio

Diseo Estructurado De Algoritmos

BIBLIOGRAFA
Fundamentos De Programacin, Algoritmos Y Estructura De Datos
JOYANES Aguilar Luis
Ed. McGraw Hill
Mxico
Como Programar En C/C++
DEITEL H.M. / DEITEL P.J.
Ed. Prentice Hall
Mxico
Organizacin De Computadoras, Un Enfoque Estructurado
TANENBAUM Andrew
Ed. Prentice Hall
Mxico
Anlisis Y Diseo De Sistemas De Informacin
SENN James A.
McGraw Hill
Mxico
Introduccin A La Computacin
NORTON Peter
McGraw Hill
Mxico
Fundamentos De Programacin, Libro De Problemas
JOYANES Aguilar Luis/RODRGUEZ Baena Luis/FERNNDEZ Azuela Matilde
McGraw Hill
Mxico
Informtica II
GONZLEZ Osorio Gonzalo
Compaa Editorial Nueva Imagen
Mxico
Informtica, Para Cursos De Bachillerato
FERREYRA Corts Gonzalo
Ed. Alfaomega
Mxico

P.L.I. Carlos Augusto Flores Valerio

141

También podría gustarte