Está en la página 1de 16

ALGORITMOS

Introducción, Seudocódigo, Estructura Secuencial, Estructura Selectiva y


Estructura Iterativa.

____________________________________________________
Introducción
Formular y resolver problemas constituye una actividad esencial de la vida del ser humano.
No se trata de almacenar en memoria problemas y sus correspondientes soluciones, sino de
desarrollar una capacidad para hacer frente con éxito a situaciones nuevas o desconocidas
en la vida del hombre. Ante situaciones nuevas, el que no sabe buscar soluciones se sentirá
confuso y angustiado y entonces no buscará una estrategia, dará una primera solución para
poner punto final a su agonía. El que sabe buscar soluciones, selecciona la estrategia que le
parece más cercana a la requerida y hace una hábil adaptación que se ajusta a la nueva
demanda.

Los grandes problemas se pueden subdividir en problemas más simples para solucionarlos,
utilizando la filosofía de "dividir para conquistar". Se parte del principio de que es más
fácil solucionar varios problemas simples (subproblemas) como parte de un todo que seguir
una idea de "todo o nada".
_______________________________________________________________
Desarrollar la capacidad de formular y resolver problemas nos prepara para enfrentar
situaciones desconocidas.
_______________________________________________________________
Se puede afirmar que todo problema consta de las siguientes partes: Datos, Operaciones y
Objetivo (solución)

Una metodología para análisis de problemas incluye las siguientes etapas:

1. Definición y análisis del problema

2. Diseño de la solución (Algoritmo)

3. Verificación de la solución

Especificación de un Problema

Partimos del hecho de que un programador no puede resolver un problema que no


entiende. Por esta razón, la primera etapa en todo proceso de desarrollo de software
consiste en tratar de entender el problema que tiene el cliente, y expresar toda la
información que él suministre, de manera que cualquier otra persona del equipo de
desarrollo pueda entender sin dificultad lo que espera el cliente de la solución. Esta etapa se
denomina análisis y la salida de esta etapa la denominamos la especificación del problema.

Esto se aplica también a cualquier disciplina, a otras áreas que comparten problemáticas
similares. Por ejemplo, considere el caso de un ingeniero civil que se enfrenta al problema
de construir una carretera. Lo primero que él debe hacer es tratar de entender y especificar
el problema que le plantean. Para eso debe tratar de identificar al menos tres aspectos del
problema: <1> los requerimientos del usuario (punto de origen y punto destino de la
carretera, número de carriles que debe tener, tipo de tráfico), <2> El mundo en el que debe
resolverse el problema (tipo de terreno, temperatura), y <3> las restricciones y condiciones
que plantea el cliente (presupuesto máximo, que los pendientes no sobrepasen el 5%). Sería
una pérdida de tiempo y de recursos para el ingeniero civil, intentar construir la carretera si
no
ha entendido y definido claramente los tres puntos antes mencionados. Y más que tiempo y
recursos, habrá perdido algo muy importante en una profesión de servicio como es la
ingeniería, que es la confianza del cliente.

En general, todos los problemas se pueden dividir en estos tres aspectos. En el caso de la
programación de computadores, un requerimiento funcional hace referencia a un servicio
que el programa debe proveer al usuario. Si usted va a escribir un programa para una
empresa, no le es suficiente entender la funcionalidad que éste debe tener, sino que debe
entender también algunas cosas de la estructura y funcionamiento de la empresa. Si hay un
requerimiento funcional de calcular el salario de un empleado, la descripción del problema
debe incluir las normas de la empresa para calcular un salario.

_______________________________________________________________
En el campo de las Ciencias de la Computación, la solución de problemas se describe
mediante el diseño de procedimientos llamados Algoritmos, los cuales posteriormente se
implementan como programas en el computador (utilizando lenguajes de programación
como C++, Java, PHP, Perl, Ruby, Delphi, Visual FoxPro...)
_______________________________________________________________

El algoritmo es un conjunto de pasos o acciones que nos permiten alcanzar un resultado o


resolver un problema en términos de:
1. Las acciones a ejecutarse, y
2. El orden en el cual se deben ejecutar esas acciones.

La solución del problema a través de éste conjunto de pasos o acciones ordenadas, se logra
con un algoritmo, el cual se divide en tres secciones (bloques):

1. ENTRADA (datos de entrada)

2. PROCESO (operaciones)

3. SALIDA (resultados)
Los algoritmos se pueden clasificar en computacionales y no computacionales.
Es importante aclarar que el computador es un medio y no es el fin en la solución de
problemas. En otras palabras, no es el computador el que soluciona los problemas, somos
nosotros quienes lo hacemos y de alguna manera le contamos cómo es el asunto para que
él, con su velocidad y exactitud, trabaje con muchísimos datos.

En algoritmia, la Lógica para solución de problemas se puede representar mediante las


siguientes herramientas de programación:
<> Algoritmo
<> Diagrama de flujo (DFD)
<> Seudocódigo

Conceptos básicos de Programación

a) Identificadores
b) Declaración de Variables\Constantes
c) Tipos de Datos
- Numéricos
: Entero
: Real
- Alfanuméricos
: Caracter
: Cadena
- Lógicos o Booleanos
d) Operadores
- Aritméticos
- Relacionales
- Lógicos
e) Instrucción de Asignación
f) Instrucciones de Entrada\Salida
g) Estructuras de Control de Flujo (Secuencial, Selectiva, Iterativa).

Ejercicios

Escribir un algoritmo para cada uno de los siguientes casos:

1) Llamar a un amigo(a) desde un teléfono celular público


2) Determinar cuántas letras "e" hay en un texto dado
3) Calcular la edad promedio entre las edades de sus tres mejores amiga(o)s
4) Determinar el número más pequeño de tres números diferentes
5) Usted va a comprar un artículo en la tienda del barrio; según el costo del producto y la
cantidad de dinero que usted paga, calcule el cambio (o las 'devueltas') que el tendero debe
entregarle (Asuma que el pago es mayor al precio del artículo).

Ejemplo de CLASE y ALGORITMO


ANÁLISIS DEL PROBLEMA Nr. 5

Datos de entrada
cospro: Costo del producto
pago : Pago realizado por el cliente

Datos de salida
camb : Valor devuelto al cliente

_________________________________________________________________________
_______

La siguiente es la forma de representar gráficamente una Clase: Un rectángulo dividido en


tres secciones.

Nombre de la
Clase
Datos o

Atributos
Operaciones o

Métodos

Compra_Tienda
cospro

pago

camb
leer( )

calcular_camb( )

mostrar( )

_________________________________________________________________________
_______

SOLUCIÓN ALGORÍTMICA
Algoritmo Compra_Tienda
INICIO
1. Crear el objeto Cambio
2. Leer cospro y pago
3. Hacer la operación (camb = pago - cospro)
4. Mostrar camb
FIN

____________________________________________________
Seudocódigo

El seudocódigo es un lenguaje artificial e informal para codificar los algoritmos. Esta


versión es la más parecida a un programa de computador. (El color azul corresponde a
todos los símbolos y palabras reservadas de nuestro lenguaje informal de programación).

clase Compra_Tienda {

privado:
cospro, pago, camb : real

publico:
Cambio( ) { cospro= pago=camb=0 }
leer( ) { leer (cospro, pago) }
calcular_camb( ) { camb = pago - cospro }
mostrar( ) { mostrar (camb) }

INICIO
1. Compra_Tienda Cambio
2. Cambio.leer( )
3. Cambio.calcular_camb( )
4. Cambio.mostrar( )
FIN

Descargar, analizar los siguientes algoritmos y codificarlos con orientación a Objetos:

Area de un rectángulo
Area de un círculo
Velocidad de un carro
Después de presentar la solución de problemas a través del algoritmo y su correspondiente
Diagrama de Flujo, ahora se modelará la solución de un problema hasta escribir el
programa en el lenguaje denominado seudocódigo.

* Un cliente compró una camioneta en ColombiAutos. El vendedor le ofreció un descuento


del 3% y también calculó el porcentaje del IVA. Determinar e imprimir el valor neto
pagado por el cliente.

Lo primero, hacer un buen análisis del problema y especificarlo a través de un MODELO


DE DATOS:
Nombre del dato Identificador Tipo Var\Const Entra\Sale Restricciones
Valor del vehículo vlr_veh R V E >0
Porcentaje del IVA por_iva E V E >0
Porcentaje del descto. por_des R C E = .03
Valor neto a pagar vlr_net R V S

Segundo, describir los pasos lógicos de la solución en un algoritmo:

Algoritmo Vehiculo
INICIO
Conocer el valor del vehículo
Conocer el porcentaje del IVA y del descuento
Calcular el iva (valor del vehículo x porcentaje del IVA)
Calcular el descuento (valor del vehículo x 0.03)
Calcular el valor neto a pagar (valor vehículo + iva - descuento)
Mostrar el valor neto a pagar
FIN

_________
INICIO
_________

______________
Leer
vlr_veh, por_iva
______________

___________________________________________
vlr_net = vlr_veh + (vlr_veh * por_iva - vlr_veh * 0.03)
___________________________________________

______________
imprimir
vlr_net
______________

_________
FIN
_________

A continuación, una solución del problema en lenguaje SEUDOCÓDIGO.

Programa Venta_vehiculo
// Un primer programa escrito en seudocódigo
// Autor : Usted
// Fecha : 09/09/2006

Var // declaración de variables


vlr_veh, vlr_net : Real
por_iva : Entero
Const // declaración de constantes
por_des = 0.03

INICIO
escribir("ColombiAutos Ltda.")
//ENTRADA
escribir("Valor del vehículo : $")
leer(vlr_veh)
escribir("Porcentaje del IVA ?")
leer(por_iva)
//PROCESO
vlr_net = vlr_veh + (vlr_veh * (por_iva/100) - vlr_veh * por_des)
//SALIDA
escribir("Valor pagado por el cliente -> $", vlr_net)
FIN // fin del programa

Diseñar la clase y escribir el anterior seudocódigo con orientación a Objetos:

____________________________________________________
Estructura Secuencial

Como lo sugiere su nombre, en una estructura secuencial las instrucciones se ejecutan en el


mismo orden en que están escritas. Una secuencia de instrucciones son pasos sucesivos,
uno seguido de otro.
Descargar, analizar los siguientes algoritmos y codificarlos con orientación a Objetos:

Costo de un vidrio
Costo total de balones
Ladrillos para una pared

• Escribir un Seudocódigo para solucionar c/u de los siguientes problemas simples de


computación:

* Giovanni compró un terreno en Argentina. La extensión del terreno está especificada en


Acres. Leer la extensión del campo en Acres y calcular e imprimir su extensión en
Hectáreas. (1 Acre = 4047 metros cuadrados. 1 Hectárea = 10000 metros cuadrados).

Algoritmo Terreno
// Otro ejemplo en lenguaje de seudocódigo
// Autor : Otra vez Usted
// Fecha : 14/10/2003
Var // declaración de variables
ext_acres, ext_hecta : Real
Const // declaración de constantes
Acre1 = 4047
Hect1 = 10000
Inicio
escribir ("Digite la extensión del terreno en Acres : ")
leer(ext_acres) // entrada de datos
ext_hecta = (ext_acres * Acre1) / Hect1 // Proceso
escribir ("Extensión del terreno en hectáreas = ", ext_hecta)
// salida de datos
Fin

// A continuación, la solución en seudocódigo orientado a objetos:

clase Terreno {

privado:
ext_acres, ext_hecta : real

publico:
Terreno( ) { ext_acres= ext_hecta=0 }
leer( ) { mostrar ("Digite la extensión del terreno en Acres : ")

leer (ext_acres) }
calcular_ext_hecta( ) { ext_hecta = (ext_acres * 4047) / 10000 }
mostrar( ) { mostrar ("Extensión del terreno en hectáreas = ", ext_hecta) }
}

INICIO
1. Terreno Lote
2. Lote.leer( )
3. Lote.calcular_ext_hecta( )
4. Lote.mostrar( )
FIN

_________________________________________________

1. Calcular e imprimir el área de un trapecio.


2. Solucionar el problema que tienen en una bomba de gasolina 'TERPEL'. Los
surtidores de la gasolinera registran el combustible en galones, pero el precio de la
gasolina está fijado en litros. Calcular e imprimir el valor que se le debe cobrar al
cliente. (1 galón tiene 3.785 litros).
3. Las tarifas de un transporte intermunicipal se incrementaron en un 10%. Diseñar un
seudocódigo para calcular e imprimir el valor actual de un pasaje a Chaparral-
Tolima.
4. Si un poste de alumbrado público, de 14 m de altura, proyecta una sombra de 7 m,
¿cuál será la sombra proyectada por una persona?
5. En N días 5 programadores desarrollan una aplicación. ¿En cuántos días podrían
desarrollar el mismo software 8 programadores?
6. Un buque de la Armada, de N marineros, tiene víveres para 2 meses. Si queremos
que los víveres duren 10 días más, ¿cuántos marineros habría que dejar en la base
naval?
7. Calcular e imprimir el número de segundos que hay en un determinado número de
dias.
8. Leer por teclado el radio y la altura de un cilindro y calcular e imprimir el área y su
volumen.
9. Desde un globo se deja caer un objeto. Diseñe un seudocódigo para calcular e
imprimir su distancia y velocidad al cabo de un tiempo t.
10. Leer la cédula, nombre, sexo, horas trabajadas y valor de la hora de un trabajador y
deducir e imprimir su salario neto aplicando una bonificación del 5% y un aporte
del 7% a la EPS.
11. Convertir una cantidad de pulgadas a centímetros. Imprimir los dos valores.
12. Leer por teclado tres números enteros y calcular e imprimir: a) Su producto, b)
Resta, c) División cociente del primero por el segundo, d) División residuo del
primero por el tercero, e) raíz cuadrada del segundo y f) la media aritmética de los
tres números.
13. Leer la longitud de los catetos de un triángulo rectángulo y determinar e imprimir su
hipotenusa.
14. Don David es el dueño de una Casa de Cambio y necesita un programa que permita
leer por teclado una cantidad expresada en dólares y convertir e imprimir esa
cantidad en pesos colombianos.
15. En una copa de ron hay 8 onzas. Convertir una cantidad de onzas en copas e
imprimir los dos valores.
16. Un comerciante compra CD's a N pe$os. ¿A qué precio debe venderlos para ganar
el 20% del costo?
17. Leer por teclado las tres notas de un alumno de Lógica Computacional y calcular e
imprimir su definitiva correspondiente al primer 60%. Los porcentajes de las notas
son 15, 20 y 25, respectivamente.
18. Laura Lucía debe pagar un interés del 4% mensual por los N millones de pesos que
le prestó la "Corporación SINFONDOS". Escriba un seudocódigo para determinar e
imprimir el valor mensual de interés que ella debe pagar.

____________________________________________________
Estructura Selectiva

Las estructuras lógicas selectivas se encuentran en la solución algorítmica de casi todo tipo
de problemas. Las utilizamos cuando en el desarrollo de la solución de un problema
debemos tomar una decisión, para establecer un proceso o señalar un camino alternativo a
seguir.

En un diagrama de flujo, la toma de decisión se expresa con un rombo y se basa en la


evaluación de una o más condiciones que nos señalarán como alternativa o consecuencia, la
rama o el camino a seguir.

Hay situaciones en las que la toma de decisiones se realiza en forma de cascada. Es decir,
se toma una decisión, se marca la rama correspondiente a seguir, se vuelve a tomar otra
decisión y así sucesivamente. Para solucionar el problema debemos aplicar prácticamente
un árbol de decisión.

Las estructuras algorítmicas selectivas que se utilizan para la toma de decisiones lógicas se
pueden clasificar así:

- Estructura selectiva simple (SI ENTONCES)


- Estructura selectiva doble (SI ENTONCES / SINO)
- Estructura selectiva múltiple (SI MÚLTIPLE: SI / SINO / SI...)
- Estructura selectiva múltiple abreviada (EN CASO DE)

Todas estas estructuras se pueden combinar.

Descargar, analizar los siguientes algoritmos y codificarlos con orientación a Objetos:

Número mayor
Lanzamiento de moneda
Conversión de días

• Codificar los siguientes algoritmos computacionales aplicando estructuras


SELECTIVAS o CONDICIONALES:

Escriba un programa (seudocódigo) que lea la edad de una persona y determine si puede
votar o no en las próximas elecciones.

Algoritmo Votacion

Var edad : Entero

Inicio

escribir("Por favor, digite su edad => ")

leer(edad)

si (edad >= 18) // condicional

escribir("Puedes votar en las próximas elecciones...")

sino

escribir("Eres menor de edad... y no puedes votar!!!")

fsi // fin del condicional

escribir("Hasta pronto!")

Fin

// A continuación, la solución en seudocódigo orientado a objetos:

clase Edad_voto {
privado:
edad : entero

publico:
Edad_voto( ) { edad=0 }
leer( ) { mostrar ("Por favor, digite su edad : ")

leer (edad) }
mostrar( ) {

si (edad >= 18)

mostrar("Puedes votar en las próximas elecciones...")

sino

mostrar("Eres menor de edad... y no puedes votar!!!")

fsi

INICIO
1. Edad_voto Edavot
2. Edavot.leer( )
3. Edavot.mostrar( )
FIN

_________________________________________________

2. Calcular el valor del peaje a pagar por un vehículo en la vía Ibagué - Alvarado. Los
automóviles pagan un valor de $3500; los camiones pagan $5000; los buses pagan
$4000 más un porcentaje del 1% por cada pasajero. El tiquete de cobro del peaje a
generar debe contener: Nombre del tipo de vehículo, Nro. de pasajeros y valor del
peaje.
3. Dados dos números enteros, determinar si un número es divisor del otro.
4. Un taxista trabaja en la empresa "PengüiTAXI" en la cual le asignan 3 rutas: Ruta A
con un valor de $3000, Ruta B con valor $5000 y Ruta C con valor $7000.
Además, debe cobrar un recargo de $500 si está trabajando entre las 20:00 y las
05:00. Si es festivo, hay un recargo de $100. ¿Cuánto debe pagar un usuario que
tome el servicio?
5. Determinar e imprimir si un número entero X es positivo, negativo o cero.
6. Calcular las raíces reales, de ser posible, de una ecuación de segundo grado: (ax² +
bx + c = 0)
7. Determinar si un año es bisiesto. Un año es bisiesto si es múltiplo de 4 (por ejemplo,
1984). Los años múltiplos de 100 no son bisiestos, salvo si ellos son también
múltiplos de 400 (2000 es bisiesto, 1800 no lo es).
8. Determinar e imprimir si un número entero X es par, impar o nulo.
9. Examinar el valor de una variable real llamada HORA y visualizar distintos
mensajes a diferentes horas del día: a) "Buenos dias", b) "Buenas tardes", c)
"Buenas noches".
10. Examinar el valor de una variable real llamada TEMP y visualizar uno de los
siguientes mensajes: a) "Hielo", si el valor de TEMP es menor que 0, b) "Agua", si
el valor de TEMP se encuentra entre 0 y 100, c) "Vapor", si el valor de TEMP es
mayor que 100.
11. Hallar la solución de una ecuación de la forma: ax + b = 0.
12. Calcular e imprimir el área de un círculo, rectángulo o triángulo. Utilice una
escalera si-sino-si.
13. Leer los tres lados de una figura y determinar si es un triángulo. En caso afirmativo,
calcular e imprimir el área según sus lados.
14. Leer por teclado tres números diferentes y determinar cuál es el número mayor.
15. El costo de las llamadas internacionales depende de la zona geográfica en la que se
encuentre el país destino, y del número de minutos hablados. En la siguiente tabla se
presenta el costo por minuto en cada zona, a la cual se le ha asociado un código o
clave.

CLAVE ZONA PRECIO


12 América del Norte 2
14 América Central 2.2
18 América del Sur 4.6
19 Europa 3.7
23 Asia 6
25 Africa 6
27 Oceanía 5

Escriba un seudocódigo para calcular e imprimir el costo total de una llamada.

____________________________________________________
Estructura Iterativa
En los algoritmos es muy común encontrar operaciones que se deben ejecutar un número
repetido de veces. Aunque las instrucciones son las mismas, los datos sobre los que se
opera varían. El conjunto de instrucciones que se ejecuta reiteradamente se llama ciclo o
bucle.

Todo ciclo debe terminar de ejecutarse luego de un número finito de veces, por lo que en
cada iteración se requiere evaluar las condiciones necesarias para decidir si debe seguir
ejecutándose o debe detenerse. En todo ciclo, siempre debe existir una condición de parada
o fin de ciclo.

Por lo general, los lenguajes de programación contienen las siguientes estructuras


algorítmicas repetitivas:

- Estructura repetitiva mientras (while)


- Estructura repetitiva hacer mientras (do while)
- Estructura repetitiva para (for)

Todas estas estructuras también se pueden combinar.

Descargar, analizar los siguientes algoritmos y codificarlos con orientación a Objetos:

Alumnos admitidos (ciclo Mientras)


Alumnos admitidos (ciclo Para)
Suma de números positivos
Suma de edades
Suma de sueldos
Compra de productos
Cuántas mujeres y hombres

• Codificar los siguientes problemas de computación en Lenguaje Seudocódigo,


utilizando estructuras ITERATIVAS o REPETITIVAS:

Escriba un programa (seudocódigo) para leer la estatura de los N jugadores del Deportes
Tolima y determinar e imprimir cuál es la estatura promedio del equipo.

Algoritmo Promedio

Var

estat, sume, prome : Real

n, conte : Entero

Inicio
sume = 0

escribir("¿Cuántos jugadores tiene el equipo? => ")

leer(n)

escribir("Digite la estatura de los ", n, " futbolistas: ")

conte = 1

mientras (conte < = n) hacer // ciclo

leer(estat)

sume = sume + estat

conte = conte + 1

fmientras // fin del ciclo

prome = sume / n

escribir("La estatura promedio del equipo es: ", prome)

Fin

_________________________________________________

1. Calcular e imprimir los valores que toma la ecuación Y = X² + 4X + 3 cuando X va


de 1 a 7.
2. Leer por teclado N números enteros y calcular e imprimir la media de los números
pares y la media de los impares. Utilizar un ciclo Mientras.
3. Leer el valor de N pensiones. Si el valor de la pensión es superior a 4 salarios
mínimos, se debe calcular el IVA correspondiente. Determinar y visualizar el valor
total del impuesto a las pensiones.
4. Leer por teclado 27 números enteros y determinar e imprimir cuántos números son
primos.
5. Construir un ciclo indeterminado para calcular e imprimir el tiempo de conducción
dada la distancia y la velocidad media.
6. Generar e imprimir las tablas de multiplicar.
7. Leer por teclado 24 números reales que representan las temperaturas tomadas en
Ibagué en un período de 24 horas. Imprimir la temperatura promedio y las
temperaturas más alta y más baja del día.
8. Adriana Marcela es la propietaria del almacén de artículos deportivos
"SportPengüin" y necesita un programa para determinar cuántos balones de fútbol-5
y cuántos uniformes y guayos para niños (calzado ≤ 30) se vendieron al final del
mes. Implementar un ciclo indeterminado e imprimir también el valor general de
venta$.
9. La empresa "TOLModels" desea seleccionar para un evento local a un grupo de
personas que cumplan los siguientes requisitos: Mujeres con edad igual o superior a
17 años e inferior a 20 años, con un peso menor a 55 kg y estatura entre 1.70 y 1.75
m. Hombres con edad entre los 18 y 21 años y con estatura superior a 1.75 m. a)
Cuántas mujeres fueron seleccionadas, b) Porcentaje de hombres seleccionados,
c) Estatura promedio de todos los aspirantes, y d) Peso de la mujer más joven
seleccionada.
10. Una aplicación interesante de las computadoras, es dibujar gráficos de barra (a
veces llamados "histogramas"). Escriba un programa que lea 10 números (cada uno
de ellos entre 1 y 30). Para cada uno de los números leídos, su programa deberá
imprimir una línea, conteniendo dicho número en asteriscos adyacentes. Por
ejemplo, si se lee por teclado el número 8, el programa deberá imprimir ********.

También podría gustarte