You are on page 1of 42

1

DISEO DE ALGORITMOS EN LA PROGRAMACIN DE


COMPUTADORAS

1. Introduccin
2. La programacin de computadoras
3. Algoritmos
4. Elementos bsicos en el diseo de algoritmos
5. Estructuras bsicas de control lgico
6. Programacin estructurada
7. Bibliografa

Introduccin

El eminente matemtico Donald E. Knuth, expresa en su famosa obra: El arte de


programar computadoras, lo siguiente:El proceso de preparar programas para una
computadora digital tiene un atractivo especial, no slo porque puede ser
recompensado econmica y cientficamente, sino tambin porque puede ser una
experiencia esttica como la poesa y la msica.; este trabajo tiene como objetivo
presentar las tcnicas bsicas de programacin para los que se inician en esta arte.
Tradicionalmente la mayora de los cursos de programacin para principiantes se
centran en la enseanza de un lenguaje de programacin, dejando en segundo plano
la enseanza de la lgica de la programacin; actuando de esta forma el estudiante
es llevado e a razonar en funcin de un lenguaje de programacin especfico y no en
la forma lgica en que deba resolverse un problema utilizando la computadora. Es por
esta razn que en este texto se inicia con el anlisis de problemas que pueden
programarse para que la computadora los resuelva y se posterga la enseanza del
lenguaje hasta que el estudiante haya adquirido solvencia en el razonamiento lgico,
la ventaja de este enfoque radica en que una vez determinada la secuencia de
instrucciones que llevan a la resolucin de un problema, es decir, una vez que se ha
diseado el algoritmo, estas instrucciones fcilmente pueden codificarse en cualquier
lenguaje de programacin. No obstante, se utiliza en la medida de lo posible la
notacin utilizada en los lenguajes de programacin, para facilitar las pruebas de los
algoritmos en la computadora
2

La programacin de computadoras

Programar una computadora consiste en escribir las instrucciones para que la


computadora realice una tarea; se suele decir que la computadora resuelve
problemas, pero lo correcto es decir que la computadora ejecuta las instrucciones que
resuelven el problema, en este sentido la tarea consiste en ejecutar las instrucciones.
Al conjunto de instrucciones especficas para que la computadora realice la tarea se le
llama programa.
La computadora, normalmente viene preparada para ser utilizada, es decir viene con
todos los programas necesarios para realizar las tareas que se desean realizar con
ella, por ejemplo, un conjunto de programas para que con la ayuda de la computadora
se pueda llevar la contabilidad de una empresa; un editor de texto para escribir un
libro, o un programa para jugar a las cartas con la computadora, etc. Estos
programas fueron desarrollados por personas, denominadas programadores de
computadoras. Los programadores de computadoras deben adquirir la habilidad de
poder escribir instrucciones para una maquina que simplemente las ejecuta como un
autmata, sin ninguna actividad pensante, pero que al ejecutar las instrucciones
realiza la tarea para la cual fue programada.
Para ilustrar la forma en que se ejecuta un programa almacenado en la computadora
se presenta el modelo conceptual de computadora conocido como la Mquina de Von
Newman, este modelo fue diseado por el matemtico hngaro John Von Newman.
Este modelo es la base de la arquitectura de la mayora de las computadoras actuales.

Conceptualmente, la computadora esta integrada por cuatro componentes que


interactan entre s, estas son la memoria, el procesador, la unidad de control y la
unidad de entrada/salida.
La memoria es el dispositivo donde se almacena el programa, y se le denomina la
memoria principal, adems del programa en ella tambin se almacena los datos.
El procesador es el dispositivo que ejecuta las instrucciones, todo procesador es
fabricado con un conjunto bsico de instrucciones que puede ejecutar, como por
ejemplo: las operaciones aritmticas, comparaciones, decidir entre ejecutar o no una
instruccin de acuerdo al resultado de una condicin, tomar datos de la memoria o
colocar datos en la memoria, etc. Este conjunto de instrucciones puede variar de
acuerdo al fabricante.
La unidad de control recupera una a una las instrucciones del programa almacenado
en la memoria y las transfiere al procesador a fin de que ste realice la operacin
3

especificada, adems de las instrucciones se le proporcionan los datos, conocidos


como datos de entrada, stos se procesan de acuerdo a las instrucciones indicadas,
obteniendo los resultados, que se conocen como datos de salida.
El programa y los datos son transferidos a la memoria principal a travs de un
dispositivo de entrada, como por ejemplo el teclado, y el resultado del proceso se
muestra a travs de un dispositivo de salida, como por ejemplo impresos, utilizando
una impresora, desplegados en la pantalla del monitor o estos resultados pueden
almacenarse en otros dispositivos de memoria, denominados memoria secundaria,
tales como un disco duro, un disquete o una memoria porttil.
El programa debe estar escrito o codificado en un lenguaje especial, denominado
lenguaje de programacin, algunos ejemplos de lenguajes de programacin son:
PASCAL, C, FORTRAN, DELPHI, Visual Basic, etc.

Algoritmos
Los algoritmos son el fundamento de la programacin de computadoras, para que la
computadora pueda ejecutar una tarea es necesario que primero se disee el
algoritmo correspondiente, es decir, especificar las operaciones necesarias para
transformar los datos de entrada en datos de salida. Una vez diseado y probado el
algoritmo, se trasforma en el programa correspondiente. El programa esta compuesto
por el algoritmo, la especificacin de los datos y las instrucciones que permiten la
comunicacin entre los usuarios del programa y la mquina.

Definicin de algoritmo: Un algoritmo es un conjunto finito de instrucciones cuyo fin


es realizar una tarea; este conjunto finito de instrucciones debe tambin ser preciso y
determinstico.

1. Preciso: el algoritmo debe ejecutar la tarea para el cual fue diseado.


2. Determinstico: significa que el resultado debe depender estrictamente de los
datos suministrados, siempre que el algoritmo se ejecute con un mismo conjunto
de datos de entrada, el resultado debe ser siempre el mismo.
Son ejemplos de algoritmos los mtodos utilizados en aritmtica para sumar, restar,
multiplicar y dividir cantidades; la aplicacin de la frmula cuadrtica para encontrar las
races de un polinomio de segundo grado En todos ellos se cumplen las tres
caractersticas anteriores.
Un algoritmo eficiente y confiable es el producto de un anlisis exhaustivo del
problema, para determinar la mejor alternativa de solucin.

Elementos bsicos en el diseo de algoritmos

A. HERRAMIENTAS PARA EL DISEO DE ALGORITMOS

Las dos herramientas ms utilizadas para disear algoritmos son el


Pseudocdigo y el Diagrama de flujo.

1. Pseudocdigo
Es un lenguaje simplificado para describir un algoritmo utilizando una mezcla de
frases en lenguaje comn, y palabras claves que indican el inicio y el fin del
algoritmo y las instrucciones especficas a realizar.
4

Por ejemplo, el siguiente pseudocdigo corresponde al algoritmo para calcular el


rea del rectngulo: el algoritmo calcula el rea (a) de un rectngulo cualquiera,
si se le suministra la longitud de de la base (b) y la longitud de la altura (h).

Las palabras subrayadas se llaman palabras reservadas, se deben utilizar


sangras que facilitan la lectura del algoritmo Las instrucciones en pseudocdigo
son fciles de codificar en un lenguaje de programacin.

2. Diagrama de flujo

El diagrama de flujo es la representacin grfica de un algoritmo; para ello se


utiliza un conjunto de smbolos estndares mundialmente utilizados y
desarrollados por organizaciones tales como ANSI (American National Institute)
e ISO (International Standard Organization para la elaboracin de diagramas de
flujo;
En el diagrama cada smbolo representa una accin en concreto; y cada
instruccin del algoritmo se visualiza dentro del smbolo adecuado. Los
smbolos se conectan con flechas para indicar el orden en que se ejecutan las
instrucciones.
Por ejemplo, el siguiente diagrama de flujo corresponde al algoritmo para
calcular el rea del rectngulo

El ovalo rotulado con la palabra Inicio indica el comienzo del algoritmo, el


paralelogramo es el smbolo de entrada de datos e indica que se lee el valor de
la base (b) y el valor de la altura (h), el rectngulo es el smbolo de proceso e
indica que se realiza un proceso sobre los datos de entrada para calcular el rea
(a) multiplicando la base por la altura, (utilizaremos el * como operador de
multiplicacin), el siguiente es el smbolo de salida y representa un documento e
indica que se muestra el valor del rea obtenido, en cualquier dispositivo de
salida, finalmente el ovalo rotulado con la palabra Fin indica que se ha llegado al
fin del algoritmo.
Los smbolos que se utilizaran para dibujar los diagramas de flujo son los
siguientes:
5

Reglas para la construccin de diagramas de flujo

1. Todo diagrama de flujo debe tener un inicio y un fin.


2. Las lneas de flujo nunca deben cruzarse, para evitarlo deben utilizarse el
smbolo conector.
3. Las lneas de flujo deben terminar siempre en un smbolo.
4. No puede llegar ms de una lnea de flujo a un smbolo.
5. Todos los smbolos en un diagrama deben estar conectados mediante una
lnea de flujo; todo smbolo debe tener una lnea de flujo entrando y otra
saliendo salvo el smbolo que indica inicio o fin del diagrama.
6. Como regla general el flujo del proceso debe mostrarse de izquierda a derecha
y de arriba abajo.
Se recomienda mantener uniforme el tamao de los smbolos, por lo que el texto
que se escribe dentro no debe ser muy extenso, recurdese que el propio
smbolo indica la operacin a realizar. La forma en que se capturan los datos de
entrada o se muestran los datos de salida se detallarn al codificar el algoritmo
en el lenguaje de programacin. Esto mismo se recomienda para la
representacin del algoritmo en pseudocdigo.
6

B. DECLARACION DE LOS DATOS

Como ya se dijo los datos a procesar y los datos resultantes del proceso se
almacenan en la memoria principal de la computadora, tambin conocida como
memoria RAM (Random Access Memory), y tambin se destinan localidades de
memoria cuando se necesita almacenar resultados de clculos intermedios. Para
poder localizar los datos en la memoria se les asignan nombres; que en el
ambiente de la programacin se conocen como identificadores de datos.
Nombraremos los datos siguiendo las reglas para definir identificadores
especificadas en la mayora de los lenguajes de programacin:

a.- Se utilizan secuencias de caracteres formadas por caracteres alfabticos y


los dgitos decimales.
b.- El primer elemento de la secuencia debe ser un carcter alfabtico.
c.- No se utilizan signos de acentuacin
d.- No se utilizan espacios, si se necesita separador debe utilizarse el carcter
de subrayado (_) o guin bajo.
e.- No se permite el uso de las palabras reservadas o palabras claves

Se recomiendan nombres cortos y nemotcnicos (su propio nombre indica lo que


representan).

Por ejemplo:

1) Son identificadores vlidos los siguientes:


longitud, altura, dato1, dato2, Coeficiente_a, numero_menor, EDAD
2) No son identificadores vlidos los siguientes:
C , porque el carcter no es un carcter permitido
1_dato, porque comienza con un dgito
numero menor, porque tiene un espacio en blanco como separador
leer, escribir e inicio, porque son palabras reservadas

C. INSTRUCCIONES

Un algoritmo normalmente incluye una gran cantidad de instrucciones, tambin


llamadas sentencias; inicialmente se presentan las instrucciones de asignacin,
lectura y escritura; definiendo cada una de ellas y mostrando su representacin en
pseudocdigo, su correspondiente smbolo en el diagrama de flujo y ejemplos.

Instruccin de asignacin

Esta instruccin asigna valor a un identificador, cuando se ejecuta una instruccin


de asignacin se almacena el valor asignado en la localidad de memoria reservada
para el identificador, este identificador tambin se conoce con el nombre de
variable y se caracteriza porque puede tomar diferentes valores durante la
ejecucin del algoritmo.

El formato de la instruccin de asignacin es el siguiente:


7

Donde variable es un identificador vlido y expresin puede estar formada por un


valor, por un conjunto de valores y operadores o por una funcin En el espacio de
memoria asignado a la variable se almacena el valor resultante de la expresin.
Una asignacin tiene tres partes, la variable, el signo de asignacin = y la
expresin cuyo valor se asigna a la variable. La variable siempre va a la izquierda
del smbolo =, mientras que la expresin siempre estar a la derecha.

Instruccin Leer

Se define la instruccin Leer para indicar que se debe enviar informacin desde un
dispositivo de entrada de datos, como el teclado, hacia la memoria En la memoria
los datos sern ubicados a travs de su nombre o identificador asignado.

El formato de esta instruccin es el siguiente:

Los smbolos < > no se incluyen en la codificacin, lo que indican es que el


programador debe definir lo que se le pide, en este caso una lista de variables.
8

Instruccin Escribir

Se define la instruccin Escribir para indicar que se va a enviar informacin desde


la memoria hacia un dispositivo de salida de datos, como la impresora o la pantalla
del monitor.
El formato de esta instruccin es el siguiente:

Una constante puede ser un nmero cualquiera o una secuencia de caracteres, por
ejemplo, el numero 15 o la secuencia Error. Si la constante es una secuencia de
caracteres se escribir entre apstrofos, para indicar que lo que se escribe es la
secuencia. Por ejemplo
Escribir Error
Escribir 3.1416

Generalmente dentro del smbolo solo se podrn escribir listas cortas, dado que el
espacio es limitado y el tamao de los smbolos en un diagrama de flujo debe ser
uniforme; para solventar este inconveniente deben utilizarse varios smbolos de
salida. En el caso de formulas muy largas, se puede hacer referencia a su numero
dentro del smbolo.

D. METODOLOGIA A SEGUIR EN EL DISEO DE ALGORITMOS

El procedimiento a seguir para disear algoritmos se presenta a continuacin:

Entender el problema

Para determinar la secuencia de instrucciones que deben constituir el algoritmo, es


importante entender el problema que se pretende resolver, para asegurarse que
entiende el problema el programador debe resolverlo con papel, lpiz grafito y
borrador procurando hacer varios ejercicios de aplicacin, generalmente se
encuentran diferentes formas de resolver el problema, por lo que se debe
seleccionar la mejor alternativa de solucin.

Declaracin de datos

Una vez seleccionada la mejor alternativa debe hacerse la declaracin de datos,


para ello los datos se clasificarn de la siguiente manera:
1. Datos de Entrada: Los datos que se suministran
2. Datos de Salida: los datos o resultados que se esperan
9

3. Datos de trabajo: estos son posiciones de memoria donde se almacenaran


resultados de clculos intermedios, necesarios para obtener los datos de
salida
Se debe asignar nombre a los datos de acuerdo a las reglas para formar
identificadores. Al hacer la declaracin de los datos tambin debe especificarse el
tipo de dato que va a almacenarse en la posicin de memoria especificada, los
tipos de datos son: numrico, un carcter, una cadena de caracteres o un valor
lgico (verdadero o falso)

Especificar las formulas a utilizar

Las frmulas deben escribirse utilizando los nombres asignados a los datos.

Diseo del algoritmo.

Se debe representar la alternativa de solucin seleccionada mediante un algoritmo,


el cual puede desarrollarse utilizando el pseudocdigo o el diagrama de flujo a
preferencia del programador; luego se verifica si el algoritmo cumple con las
caractersticas de un algoritmo. Esta verificacin se conoce como prueba de
escritorio.

Prueba de escritorio: Se debe ejecutar el algoritmo con diferentes datos de


entrada para verificar si se obtienen los datos de salida esperados, en caso
contrario se procede a hacer las modificaciones necesarias al algoritmo. Se
recomienda verificar los resultados obtenidos en los ejercicios realizados en la
etapa de anlisis del problema. Los datos de prueba deben escogerse de modo a
someter al algoritmo a todas las posibles situaciones que puedan darse.
El diseo del algoritmo esta listo si la prueba de escritorio muestra que ste
satisface las caractersticas de un algoritmo; si la prueba no es satisfactoria se
revisa el pseudocdigo o el diagrama de flujo y se procede de esta manera hasta
obtener los resultados esperados. La siguientes etapas son la codificacin del
algoritmo en el lenguaje de programacin seleccionado y su prueba en la
computadora.

A continuacin utilizamos esta metodologa en el diseo de un algoritmo:


Problema 1: Disear un algoritmo para convertir una temperatura dada en grados
Fahrenheit a la correspondiente temperatura en grados Centgrados.

Entender el problema

El agua se congela a 0 Centgrados y hierve a 100 Centgrados. El agua se


congela a 32 Fahrenheit y hierve a 212 Fahrenheit. Lo que indica una diferencia
de 180. Por lo tanto cada grado en la escala Fahrenheit es igual a 100/180 o 5/9
grados en la escala Celsius.
Para convertir grados Fahrenheit a grados Celsius se resta 32 a los grados
Fahrenheit y el resultado se multiplica por 5/9
10

Se selecciona esta alternativa de solucin y se procede con el siguiente paso.

Declaracin de los datos

Prueba de escritorio

En el primer caso 98.6 Fahrenheit equivalen a 37 Centgrados.

Cualquier tarea que se pretenda resolver utilizando la computadora debe expresarse


como un algoritmo. Para disear algoritmos que sean entendibles y fciles de
modificar por las personas interesadas, se utiliza un conjunto de estructuras o
11

construcciones lgicas restringidas, que son la secuencial, la de decisin y la iterativa.


La estructura secuencial se utiliza cuando las instrucciones del algoritmo deben
ejecutase en la secuencia en que se presentan, de la primera a la ltima; La estructura
de decisin se utiliza cuando existen situaciones en que se debe escoger entre
ejecutar una instruccin u otra, dependiendo del cumplimiento de una condicin y la
estructura iterativa se utiliza cuando es necesario repetir varias veces una instruccin
o un conjunto de instrucciones para que la tarea sea ejecutada.
En la siguiente seccin se estudiaran cada una de estas construcciones lgicas,
tambin conocidas como estructuras bsicas de control lgico

Estructuras bsicas de control lgico

E. ESTRUCTURA SECUENCIAL

Se trata de la construccin donde las instrucciones se deben ejecutar una despus


de la otra, en el mismo orden en que aparecen en el algoritmo, sin dejar de ejecutar
ninguna de ellas.
Problema 2: Disee un algoritmo para calcular el rea de un crculo cualquiera y la
longitud de su circunferencia.

Entender el problema

Ejercicio 1: Consideremos un crculo de 6 centmetros de radio

rea del circulo = 3.1416 * 6*6= 113.0976


Longitud de la circunferencia = 2*3.1415 * 6 = 37.6992

Declaracin de los datos:

Dato de entrada r: radio del crculo, numrico


Datos de salida a: rea del crculo, numrico
l: Longitud de la circunferencia, numrico
12

Prueba de escritorio

Problemas propuestos

1) Calcular el porcentaje de hombres y mujeres que hay en un grupo de personas.


2) Calcular el salario que recibe por mes un empleado que trabaja por horas,
retenindole el 7 por ciento por concepto de seguro de trabajo.
3) Dado el precio de un artculo y la cantidad de artculos comprados, calcular el
total a pagar considerando que se paga el 12% por concepto de impuesto sobre
ventas (ISV).
4) Calcular la nota final de un estudiante del curso de computacin I, para ello se
debe tomar en cuenta lo siguiente: que se realizaron cuatro exmenes valorados
en 80% cada uno y cuatro prcticas de laboratorio valoradas en 20 puntos cada
una.
5) Dados dos puntos en el plano cartesiano, calcular la longitud del segmento
determinado por ellos.
13

F. ESTRUCTURA DE DECISIN

Es una situacin tpica en la resolucin de problemas, que se tenga que decidir


entre realizar una instruccin u otra dependiendo del cumplimiento de una
condicin; por ejemplo: Para calcular c=b/a primero hay que verificar que a sea
diferente de cero, ya que la operacin se puede realizar nicamente si a es
diferente de cero Para representar esta situacin en el algoritmo se utiliza la
estructura condicional tambin conocida como estructura de decisin. Esta
estructura se construye de modo a que se ejecuten o se omitan algunas
instrucciones dependiendo del cumplimiento de una condicin; el resultado de
evaluar la condicin puede tomar un valor lgico verdadero o falso (V F).
La condicin puede ser una expresin relacional (por ejemplo a>o) o una
expresin lgica (por ejemplo a>b y b>c), que se construyen utilizando operadores
relacionales (>, <, , , =, ) y operadores lgicos (y, o, negacin)
Existen tres tipos de decisin: decisin simple, la decisin doble y la decisin
mltiple

1. Decisin simple

Una decisin es simple, cuando slo se tiene un curso de accin para el caso que
el resultado de evaluar la condicin sea verdadero; es decir que si la condicin es
verdadera se debe de ejecutar la instruccin o el conjunto de instrucciones que se
indique, y si la condicin es falsa se omite la ejecucin de dicha instruccin o
conjunto de instrucciones.
El formato general de esta estructura es la siguiente:
14

Ejemplo: Observe el siguiente segmento de pseudocdigo y su diagrama de flujo

Problema 1. Dado el precio de un artculo y la cantidad de artculos comprados,


calcular el total a pagar, considerando que para compras superiores a 500 lempiras
se dar un descuento del 10% y que el comprador debe pagar el 12% por concepto
de impuesto sobre ventas (ISV)

Entender el problema

Ejercicio 1: Se compra una docena de camisas a 130 lempiras cada una.


El valor de la compra es 12 *130=1560, como la compra es superior a 500
lempiras, tiene derecho al descuento. El 10% es igual a 1560*0.10= 156 lempiras,
el valor de la compra queda en 1560-156=1404 lempiras. El impuesto sobre ventas
es igual a 1404*0.12=168.48 y por tanto el total a pagar es igual a
1404+168.48=1572.48

Ejercicio 2: Suponga que se compran 3 camisetas a 100 lempiras cada una.


El valor de la compra es 3*100=300 lempiras, como la compra es inferior a 500
lempiras no se tiene derecho al descuento, el impuesto a pagar es de 36 lempiras y
el total a pagar es 336 lempiras.
15

Prueba de escritorio

2. Decisin doble

Una decisin es doble cuando se tiene un curso de accin para el caso que el
resultado de evaluar la condicin sea verdadero y otro para cuando sea falso.
El formato general de esta estructura es la siguiente:
16

Ejemplo: Observe el siguiente segmento de pseudocdigo:

El diagrama correspondiente al ejemplo anterior es el siguiente:


17

Entender el problema

Declaracin de los datos:

Datos de entrada x1, y1, x2 y y2 las coordenadas de los dos puntos, numricos
Datos de salida m la pendiente, numrica
18

b el intercepto con el eje , numrico y


msg: Pendiente no definida, secuencia de caracteres

Prueba de escritorio

Problema 2. Determinar cual es el mayor de tres nmeros enteros.

Entender el problema
Dados tres nmeros a, b y c para determinar el mayor de los tres se debe comparar
su magnitud, para auxiliarse se construye el siguiente esquema
19

Declaracin de los datos:

Dato de entrada a, b y c tres nmeros


Datos de salida
mayor : el numero mayor

Pseudocdigo y Diagrama de flujo


20

Prueba de escritorio

Como podemos observar, en el problema anterior se presenta el caso en que es


necesario verificar varias condiciones para encontrar el nmero mayor, este tipo de
construcciones se conoce como Decisiones anidadas. Las decisiones anidadas
pueden construirse utilizando decisiones simples o dobles de acuerdo a la
naturaleza del problema.

3. Decisin mltiple

Es una extensin de la decisin doble, en que se debe seleccionar entre varios


valores que puede tomar una variable, esto se prueba por decisiones sucesivas
hasta que ocurre una condicin verdadera o hasta que se termina de verificar todos
los posibles valores, luego se ejecutan las instrucciones correspondientes a la
situacin dada.
21

Problema 1. Se desea efectuar operaciones aritmticas de acuerdo al operador


indicado, el operador puede ser de suma, resta, divisin o multiplicacin, o sea el
operador puede tomar cuatro valores.

Declaracin de los datos:

Datos de entrada op1: primer operando, numrico


op2: segundo operando, numrico
op: operador, carcter

Dato de salida r: resultado de la operacin, numrico


Frmulas:

Pseudocdigo
22

Instruccin CASO

La decisin mltiple tambin se puede representar en pseudocdigo utilizando una


estructura incluida en la mayora de los lenguajes de programacin; la estructura
CASO, en la que se determina el valor de una variable llamada selectora y la que
se compara con un valor constante que determina el curso de accin entre varias
posibilidades.
El formato general de esta estructura es la siguiente:
23

La instruccin Sino es opcional:

Si ninguna constante coincide con el contenido de la variable selectora se contina


ejecutando la instruccin que esta despus de la palabra reservada Fin caso
El pseudocdigo correspondiente al problema anterior es el siguiente:
24

Diagrama de flujo
25

Problema 2.

En una empresa le aumentarn el salario a los empleados de acuerdo a la escala


salarial en que se encuentren: 5%, 10% y 15% a los empleados en las escalas 1, 2
y 3 respectivamente y 20% para cualquier otra escala. Disee el algoritmo para
calcular el nuevo salario del empleado de acuerdo a su escala salarial.
26

Entender el problema

Ejercicio 1. Juan Pablo Morales, esta en la escala 3 y tiene un salario actual de


12,000 lempiras. De acuerdo a la escala salarial le corresponde el 15% de
aumento, el aumento es igual a 1800 lempiras y el nuevo salario es de 13,800
lempiras.

Ejercicio 2. Carlos Santos esta en la escala 1 y tiene un salario actual de 5,000


lempiras. De acuerdo a la escala salarial le corresponde el 5% de aumento, el
aumento es igual a 250 lempiras y el nuevo salario es de 5250 lempiras.
Ejercicio 3. Mara Castro esta en la escala 4 y tiene un salario actual de 3,000
lempiras. De acuerdo a la escala salarial le corresponde el 20% de aumento, el
aumento es igual a 600 lempiras y el nuevo salario es de 3600 lempiras.

Declaracin de los datos:

Datos de entrada sa: salario actual


es: escala salarial
Datos de trabajo va: valor del aumento
Pa: porcentaje de aumento
Datos de salida ns: nuevo salario
Tipo: todos numricos

Frmulas: va=sa*pa
ns=sa+va
27

N de Sa es pa va ns
caso
1 12000 3 0.15 180 13800
28

0
2 5000 1 0.05 250 5250
3 3000 4 0.20 600 3600

SALIDA
13,800.00
5,250.00
3,600.00

Utilizando Caso

Problemas propuestos

1)Dada la suma de n nmeros, calcular la media aritmtica


2)Un profesor incentivar a los alumnos que obtengan promedio final mayor que 98%,
asignndoles una nota final de 100%. Si se realizaron tres exmenes valorados en
80% y un acumulativo valorado en 20% , calcule la nota final obtenida por un
alumno
3)Dados tres nmeros positivos a, b y c que denotan las longitudes de tres
segmentos, determinar si con ellos se forma un tringulo. Segn un teorema de
Geometra se deben cumplir las tres desigualdades siguientes: a+b>c, a+c>b y
b+c>a. Si se cumplen las tres condiciones calcular el semipermetro y el rea del
tringulo por la frmula de Hern:
29

4)En un grupo se requiere clasificar a los alumnos de la siguiente manera: si el alumno


tiene nota final mayor a 90 debe clasificarse como sobresaliente; si tiene nota mayor
de 80 hasta 90 como excelente; si la nota es mayor de 70 hasta 80 como muy
bueno, mayor de 59 hasta 70 como bueno y si la nota es menor como reprobado.
Dada la nota final indicar el nivel obtenido por el alumno.
5)Dada una fecha en el formato dd/mm/aaaa, verificar si esta correcta. Ejemplo si se
ingresa 12 3 2009, corresponder al 12 de marzo del 2009 y esta correcta, pero si se
ingresa 32 1 2009, hay error en el da.
6)Calcular el valor a pagar por la compra de medicinas en una farmacia, sabiendo que
el adulto mayor (personas con edad mayor o igual a 60 aos) tiene por ley, derecho
al 20 por ciento de descuento en las farmacias. Adems esta farmacia tiene la
poltica de otorgar un descuento del 15 por ciento si se trata de un infante menor de
10 aos y del 10 por ciento en cualquier otro caso. Esta poltica de descuento se
aplica nicamente a la venta de medicinas.
7)En Hotel Playa Dorada, se ha establecido la siguiente tarifa diaria para la temporada
de verano: habitacin sencilla 350 lempiras, habitacin doble 600 lempiras, el de una
habitacin sencilla de lujo 1000 lempiras y el de una doble de lujo 2500 lempiras. Si
la estada es de tres das o ms se da un descuento del 10 porciento y se tiene
derecho al desayuno. Calcular el total a pagar por un cliente que se hospeda en
dicho hotel, y considere el impuesto sobre ventas que actualmente es del 12
porciento.

G. ESTRUCTURAS ITERATIVAS

Cuando en la ejecucin de la tarea es necesario que se ejecute varias veces el


mismo grupo o bloque de instrucciones, se utiliza la estructura iterativa, tambin
llamada repetitiva, En algunos casos el nmero de veces que se repetir el grupo
de instrucciones se conoce con anterioridad mientras que en otros casos depende
de resultados de clculos o del valor que tome una variable durante la ejecucin del
algoritmo.
Esta estructura tambin se conoce como ciclo y el grupo o bloque de instrucciones
que debe repetirse se denomina cuerpo del ciclo. Se definen dos tipos de
estructuras repetitivas: el ciclo repita y el ciclo mientras
30

1. Ciclo Repita

En esta construccin lgica, primero se ejecuta el bloque de instrucciones (I) y


luego se evala la condicin (C), si el resultado es falso, se ejecuta de nuevo el
cuerpo del ciclo, se contina de esta manera hasta que el resultado de evaluar la
condicin (C) sea verdadero.

En la representacin en pseudocdigo, cuando al ejecutarse el algoritmo se


encuentra la palabra reservada Repita, se indica que se ejecuta el cuerpo del ciclo;
al encontrarse la palabra reservada Hasta se evala la condicin, que puede tomar
un valor lgico verdadero o falso. Si el resultado es falso, se ejecuta nuevamente el
cuerpo del ciclo y si es verdadero termina la repeticin y se ejecuta la instruccin
que est despus de la palabra reservada Hasta.

En el diagrama de flujo se utiliza el smbolo de subproceso para indicar al cuerpo


del ciclo y la repeticin se indica con un flujo de retorno al cuerpo del ciclo..

Es importante tener en cuenta que en el cuerpo del ciclo debe incluirse la


instruccin que haga eventualmente verdadera la condicin de salida, para que el
ciclo no se torne infinito.

Adems obsrvese que el cuerpo del ciclo se ejecuta al menos una vez, ya que la
condicin se verifica al terminar de ejecutar el cuerpo del ciclo.
Ejemplo 1:
31

Problema 1: El algoritmo de la multiplicacin de dos nmeros enteros p y q

Entender el problema

La solucin de este problema es simple, se suma p veces el valor de q o q veces el


valor de p.
Ejercicio: si p=12 y q=3, se suma 3 veces el valor 12 y se obtiene 36 de forma
alternativa se suma 12 veces el valor 3 y se obtiene el valor 36.

Declaracin de los datos

Datos de entrada: p el primer factor


q el segundo factor
Dato de salida: r el resultado de la multiplicacin
Dato de trabajo: c el contador
Tipo: todos numricos
32

Pseudocdigo y diagrama de flujo

Prueba de escritorio

Problema 2. Tabular una funcin lineal cualquiera en n puntos, comenzando en un


valor inicial y con incrementos de la unidad. Por ejemplos: si y=2x+1, tabulando la
funcin en 5 puntos comenzando en x=-2, se obtiene:

x y
-2 -3
-1 -1
0 1
1 3
2 5

El ejemplo es similar al problema 1 presentado en el tema de la decisin doble


33

Declaracin de los datos:


Datos de entrada: x1, y1, x2 y y2 las coordenadas de los dos puntos
x: el valor inicial a tabular
n: el nmero de puntos a tabular; numricos
Datos de trabajo: m la pendiente
b el punto de interseccin con el eje y; numricos

Datos de Salida: ms: Pendiente no definida


y: el valor de la funcin en el punto x (numrico)
Formulas:

Pseudocdigo

Prueba de escritorio
34

Diagrama de flujo

Problema 3. Mostrar los nmeros del 1 al 10


35

Entender el problema

Se inicializa una variable con el valor uno, se escribe el contenido de la variable y


se le suma el valor uno, se repite la operacin hasta que el valor de la variable sea
mayor que diez.

Declaracin de los datos:

Dato de trabajo: num. el nmero actual


Datos de salida: num.

Pseudocdigo y diagrama de flujo

Prueba de escritorio
36

2. Ciclo Mientras

En esta construccin lgica primero se evala la condicin (C) y si esta resulta


verdadera se ejecuta el bloque de instrucciones (I), y mientras la condicin siga
siendo verdadera se ejecuta repetidamente del cuerpo del ciclo.

Cuando al ejecutarse un algoritmo se encuentra la palabra reservada Mientras, se


evala la condicin (c), que puede tomar un valor lgico verdadero o falso. Si el
resultado es verdadero, se ejecuta el cuerpo del ciclo (I); al encontrarse la palabra
reservada Fin mientras se verifica nuevamente la condicin, si el resultado es
verdadero se ejecuta nuevamente el cuerpo del ciclo y si es falsa termina la
repeticin y se ejecuta la instruccin que est despus de la palabra reservada Fin
mientras.

En el diagrama de flujo se utiliza el smbolo de subproceso para indicar al cuerpo


del ciclo y la repeticin se indica con un flujo de retorno al smbolo de decisin para
indicar que se evala de nuevo la condicin.

Es importante tener en cuenta que en el cuerpo del ciclo debe incluirse la


instruccin que haga eventualmente falsa la condicin para que el ciclo no se torne
infinito.

Adems obsrvese que puede suceder que el cuerpo del ciclo nunca se ejecute, ya
que para ejecutarlo el resultado de evaluar la condicin debe ser verdadero. El ciclo
mientras no debe utilizarse cuando necesariamente se deba ejecutar por lo menos
una vez el cuerpo del ciclo, ya que esto obliga a forzar la condicin de entrada al
mismo, en este caso se debe utilizar el ciclo repita.

Problema 1: El algoritmo para obtener el cociente y el residuo al dividir dos


nmeros enteros positivos.
37

Entender el problema

Dados dos nmeros enteros p y q, p, q0 encontrar c y r nmeros enteros tal que


p=qc+r
Ejercicio 1: sean p=20 y q=7, entonces se inicializan c=0 y r=20 y se le resta a r el
valor de q tantas veces como sea posible y se lleva la cuenta de las veces que se
resta en la variable c, procediendo de esta manera se obtiene c=2 y r=6
Ejercicio 2: sean p=7 y q=20, no se puede efectuar la resta por tanto c=0 y r=20
Declaracin de los datos
Datos de entrada: d el dividendo
q el divisor
Datos de salida: c el cociente
r el resto ms: Error divisin por cero
Tipo: todos numricos

Pseudocdigo y diagrama de flujo


38

Prueba de escritorio

Problema 2. Leer una cantidad de nmeros, calcular el promedio e indicar cual es


el mayor y cual es el menor.

Entender el problema

Para solucionar este problema lo primero que hay que plantearse es cmo se sabr
cuando terminar la lectura de los nmeros. Podemos utilizar dos estrategias: la
primera consiste en preguntar la cantidad de nmeros a promediar y guardar dicho
valor en una variable que se utilizar para establecer la condicin de parada; la
segunda consiste en preguntar despus de cada lectura y proceso si se debe leer
otro nmero, la respuesta indicar si se continua o no con la lectura. Utilizaremos la
primera estrategia.

Declaracin de los datos

Datos de entrada: cantidad: la cantidad de nmeros


numero: un nmero
Dato de trabajo: suma: para llevar la suma de los nmeros
contador: para contar los nmeros ledos
Datos de salida: promedio: el promedio de los nmeros
menor: nmero menor
mayor: nmero mayor
Formulas:

Contador=contador +1
Suma=suma+numero
Promedio=suma/cantidad

Pseudocdigo y diagrama de flujo


39

Prueba de escritorio

SALIDA
30
5
14
40

Diagrama de flujo
41

Problemas propuestos
42

Problemas propuestos

Programacin estructurada

El teorema fundamental de la programacin estructurada, establece que cualquier


tarea puede ser resuelta diseando algoritmos donde nicamente se utilicen los tres
tipos de estructuras de control: secuencia, decisin e iteracin.
Concluimos este trabajo sealando que para disear algoritmos eficientes y confiables
no solo se requiere de metodologas de diseo, sino tambin desarrollar el
pensamiento lgico y esto solo se logra mediante trabajo exhaustivo en la resolucin
de problemas, intentando poner a prueba las propias ideas. La computadora es el
instrumento apropiado para ello, puesto que nunca ni se niega a ejecutar las
instrucciones que se le dan, ni a repetir una y otra vez la misma tarea.

Bibliografa
[1] Knuth. D.E. El Arte de Programar Ordenadores. Algoritmos Fundamentales.
Volumen I. Editorial Reverte, S.A. 1980
[2] M. Morris Mano. Lgica Digital y Diseo de Computadores. Prentice Hall
Hispanoamericana, S. A. 1982
[3] Seymour Lipschutz, Estructuras de datos, McGraw-Hill, 1987
[4] Wirth Niklaus, Programao Sistemtica. Editora Campus Ltda. Brasil