Tema 2
ALGORITMOS
Objetivo:
El estudiante debe contextualizar y comprender el desarrollo de
software y comenzar asimilar el aspecto algorítmico.
El desarrollo de la informática y en cierto modo de la programación hace que los paradigmas cambien
permanentemente. Este aspecto lleva a repensar el mundo de la construcción del software, en ese
sentido es importante asimilar las ideas fundamentales de la programación de computadoras.
2.1. PROBLEMA, ALGORITMO Y PROGRAMA
Las computadoras son instrumentos importantes para resolver problemas, en cierto sentido se puede
decir un esquema de solución enfatizada con bastante aceptación, parte de la trilogía: PROBLEMA,
ALGORITMO y PROGRAMA.
PROBLEMA ALGORITMO PROGRAMA
2.1.1. Problema
El carácter etimológico de la palabra explica lo que es un problema:
Proballein “Algo lanzado hacia delante”
Algo más sencillo, es un asunto o conjunto de cuestiones que se plantean para ser resueltos. Para
resolver adecuadamente un problema, el primer paso es entender y comprender.
Idea Expresar en un modelo formal Ej. Leng. matemático
2.1.2 Algoritmo
Conjunto finito y no ambiguo de etapas expresadas en un cierto orden, que para unas
condiciones iniciales, permiten resolver el problema en tiempo finito[5].
Se puede decir que también es una manera de resolver un problema. O dicho de otra manera:
Conjunto finito de reglas que crean una serie de operaciones para resolver un tipo específico de
problema.
Se suele expresar en una notación informal (no rigurosa) Ej. Pseudocódigo, diagrama de flujo.
Propiedades de un algoritmo:
Algoritmo debe ser preciso e indicar el orden de realización de cada paso
Debe estar definido
Proporciona un resultado
Algoritmo debe ser finito
Debe ser correcto
Es completo
2.1.3 Programa
Algoritmo se debe describir como una solución al problema mediante el uso de una construcción
formal de un algoritmo que se ejecuta en un computador. Se puede definir como la especificación de un
algoritmo. O simplemente un conjunto de sentencias o instrucciones.
2.2. Esquema Macro De Programación
Actualmente se puede representar la idea anterior de forma generalizada: PROBLEMA, SOLUCION
COMPUTACIONAL, PROYECTO SOFTWARE, APLICACIÓN SOFTWARE.
2.2.1 Solución Computacional
Una solución computacional a nivel software consiste de dos elementos importantes como son el modelo
y el algoritmo. Un modelo representa los aspectos trascendentales de esa realidad, y el algoritmo
representa los cálculos u operaciones que se deben asociar a esa estructura.
a) Modelo
Un modelo es la representación simplificada de la realidad. Habitualmente se necesita obtener modelos
para poder comprender mejor esa realidad de por si compleja. En la construcción de algo interesa resaltar
los aspectos clave, y un modelo ayuda a ello.
La percepción de esa realidad se la hace en el marco del paradigma orientado a objetos, a través de
clases, interacciones, realizaciones, etc.
2.2.2 Proyecto Software.
Una solución computacional se debe especificar en algo concreto y en ese sentido los distintos archivos
(algunos de ellos programas otros archivos de recursos) representan el proyecto software que
eventualmente puede ser entendido por el computador y luego puede convertirse en un producto usable
como es una aplicación software.
2.2.3 Aplicación Software
Es el resultado de transformar los elementos de un proyecto software a algo comprensible por el
computador, esto es los programas se compilan, los recursos se traducen, las clases se compilan, etc.
2.3 Diseño de algoritmos, un primer acercamiento
¿ Como hacerlo ?
Existen esquemas o métodos para el diseño de algoritmos, tales como el divide y vencerás, método
voraz, programación dinámica, etc. Sin embargo como un paso inicial se debe pensar tan solamente
como una forma de resolver un problema.
Antes de resolver problemas concretos se dará una idea básica de lo que se puede entender un
algoritmo. Por ejemplo como se hace para hablar por teléfono con otra persona. Una serie de pasos.
1. Descolgar el auricular
2. Marcar el número
3. Conversar
4. Colgar el auricular
Otro ejemplo: Trasladarse de un lugar a otro en un micro.
1. Esperar el micro
2. Señalar para subir
3. Subir al micro
4. Pagar pasaje
5. Sentarse
6. Bajar del micro
En fin se pueden describir de esta manera todas las actividades que uno realiza todos los días. Pero
atención hay algunos detalles que hacen más interesante describir de esta manera las actividades.
Un siguiente nivel: INSTRUCCIONES CONDICIONALES
Profundizando un poco más, el caso conversar por teléfono, que ocurre si no hay tono, el marcado no
tiene sentido. Vemos que podemos hablar de pasos que algunas veces se pueden dar otras veces no (se
suele denominar situación condicional). Con esta consideración, la secuencia de pasos (algoritmo) será:
1. Descolgar el auricular
2. Si ( existe tono )
2.1 Marcar el número
2.2 Conversar
3. Colgar el auricular
Note que los pasos 2.1 y 2.2, se dan solo si se cumple la condición de (existe tono)
Siguiente Nivel: INSTRUCCIONES REPETITIVAS
Algo más interesante, para nosotros en el paso 2.2. Conversar se remplaza por dos pasos escuchar y
hablar.
2.2 Conversar Hablar: Alo, está Ana
Escuchar: Si, soy yo
Hablar: Hiciste la tarea de cálculo
Escuchar: No, me falta
….
Hablar
Escuchar
1. Descolgar el auricular
2. Si ( existe tono )
2.1 Marcar el número
2.2 Mientras (exista tema de conversación)
2.2.1 Hablar
2.2.2 Escuchar
3. Colgar el auricular
Vea que los pasos hablar y escuchar se realizan muchas veces (se repiten) aunque las palabras que se
hablan o escuchan no son las mismas, pero podríamos decir que son los mismos pasos. A esto se suele
denominar situación de repetición. Pregunta, hasta cuando se darán los pasos escuchar y hablar.
Correcto hasta que exista tema de conversación (nuevamente una condición).
Esta última descripción se parece bastante a las representaciones de algoritmos que se va a construir.
Ejercicios
Haga lo mismo con otras actividades: Ir al cine, almorzar, pasar una clase, pagar la factura de luz
eléctrica, ir a un evento deportivo, ir a un festival.
2.4 Notación
Existen muchas formas de representar los algoritmos, podemos mencionar el lenguaje natural, con el cual
hemos expresado anteriormente. Otras notaciones son Psudocodigo(Lenguaje Estructurado),
Ordinogramas(Diagrama de Flujo), Diagramas de Chapin (Nassi-Schneiderman), Diagramas Jackson,
Diagramas Warnier, etc.
En la representación usaremos tan solamente Lenguaje Estructurado y Diagramas de Flujo (FlujoGramas-
Ordinogramas).
2.5 Componentes de un algoritmo
Para que un algoritmo pueda ser legible este debe estar especificado formalmente, esto nos lleva a
pensar que se debe conocer cuáles son los elementos con los cuales escribimos un algoritmo
IDENTIFICADORES
La mejor manera de describir un identificador es como un contenedor o recipiente, donde se tiene o
contiene algún valor.
Denotan valores de manera simbólica, generalmente se suele denotar como identificadores
(identifican algo). El nombre que se coloca es arbitrario. Ej. area, x, es_una_variable, Contador,
EsUnaVariable.
Hay dos tipos:
Identificadores Constantes: Mantienen un único valor a lo largo del algoritmo
Identificadores Variables: Pueden, tener distintos valores a lo largo del algoritmo
EXPRESIONES
Una expresión es una relación de identificadores que pueden ser variables o constantes más operadores
aritméticos, relacionales o lógicos.
Operadores aritméticos:
+ Suma
- Resta
* Multiplicación
/ División
% Módulo
Operadores relacionales
> Mayor
< Menor
= Igual
<> Distinto
<= Menor o igual
>= Mayor o igual
Operadores Lógicos
OR Disyunción
AND Conjunción
NOT Negación
Las expresiones que involucran operadores relacionales y lógicos se denominan expresiones lógicas y su
evaluación da como resultado Falso o Verdadero (Si,No).
Tablas de verdad de los operadores lógicos:
A B A or B A B A and B A Not A
si si si si si si si no
si no si si no no no si
no si si no si no
no no no no no no
Ej.
1) x+y-(a*b) Expresión aritmética
2) a>0 Expresión relacional
3) a>b OR x=y Expresión lógica
Si x=2, y=3,a=2,b=4
1) 2+3-(2*3) da -3
2) 2>0 da Verdadero (Si)
3) 2>3 OR 2=4 da Falso (No)
ASIGNACIÓN
Es colocar un valor en una variable
Variable Expresión
Ej.
x3+2
a x se da un valor de 5.
area alto*ancho
a area se da la multiplicación de alto por acho ( si alto =2 y ancho=4, el area=8)
x x*y
a x se da el valor que x tenia anteriormente por y.
Representación:
Lenguaje Estructurado(LE):
n. x y*y+2
Diagrama de Flujo(DF):
x y*y+2
Asignaciones especiales:
Acumulador
Es una suma acumulada
aa+x
Contador
ii+1
ENTRADAS
Permiten introducir valores y mostrar
Lenguaje Estructurado(LE):
LEER <Variable>
Ej. LEER x,y (se necesita dos valores uno para x y otro para y)
La representación en Diagrama de Flujo(DF):
LEER
b,h
b,h
SALIDAS
Permite mostrar datos
Lenguaje Estructurado(LE):
MOSTRAR <Variable> | <mensaje>
Ej. MOSTRAR area
MOSTRAR ‘Saludo’ MOSTRAR ‘resultado=’,area
Para mostrar:
MOSTRAR
area
area
ESTRUCTURAS DE CONTROL
El orden de los pasos.
Lenguaje Estructurado(LE):
De arriba hacia abajo
Diagrama de Flujo(DF):
Se usa una línea dirigida
Conectores
Diagrama de Flujo(DF):
En la misma página:
A otra página:
Todo algoritmo comienza y termina, para ello se usa dos palabras como son INICIO, FIN.
En Lenguaje Estructurado(LE):
INICIO
.....
.....
FIN
En diagrama de flujo(DF):
INICIO
.......
FIN
Existen 3 tipos de estructuras de control (control de flujo):
SECUENCIALES
CONDICIONALES
REPETITIVAS
CONSTRUCCION DE ALGORITMOS
PROBLEMA ALGORITMO PROGRAMA
1-. Descripción del 1-. Elegir la notación 1-. Elegir el
problema(Representación de algoritmo Lenguaje de
gráfica/Ejemplo concreto) Programación
2-. Identificar Variables 2-. Usar el patrón 2-. Traducir
algorítmico paso a paso
[Link] “Formulas” i-. Leer Entradas
ii-. Formulas
iii-. Mostrar Salidas
4-. Clasificar Variables * En el paso ii)
siempre es importante
considerar el orden
lógico de las fórmulas
Ej. Realizar un algoritmo para calcular el área de un triángulo conocido su base y su altura.
PROBLEMA
1-. Descripción del Problema
2-. Identificación de Variables
a Área del triángulo
b Base del triángulo
h Altura del triángulo
3-. Fórmulas
b*h
A
2
4-. Clasificación
Entradas: b,h
Salidas: a
ALGORITMO
Notación Diagrama de Flujo(DF)
INICIO
b,h
ab*h/2
FIN
Ej. Realizar un algoritmo para calcular el área y el perímetro de un círculo, conocido su
diámetro.
PROBLEMA
1-. Descripción del Problema
d d d
2-. Identificación de Variables
a Área del círculo
p Perímetro
d Diámetro
r Radio
3-. Fórmulas
a .r 2
p 2 .r
r d /2
4-. Clasificación
Entradas: d
Salidas: a,p
ALGORITMO
Notación Diagrama de Flujo (DF)
INICIO
rd/2
a3.1415*r*r
p2*3.1415*r
a,p
FIN
Ej. Realizar un algoritmo para calcular el área que cubre a un cilindro conocido el diámetro de
su base y su altura.
PROBLEMA
1-. Descripción del Problema
2-. Identificación de Variables
a Área que cubre al cilindro
ac Area circular
ar Area rectangular
d Diámetro
r Radio
h Altura
l Largo del rectangulo
3-. Fórmulas
a 2ac ar
ac .r 2
ar l.h
l 2 .r
r d /2
4-. Clasificación
Entradas: d,h
Salidas: a
ALGORITMO
Notación Diagrama de Flujo (DF)
INICIO
d,h
rd/2
ac3.1415*r*r
l2*3.1415*r
arl*h
a2*ac+ar
FIN
Ej. Realizar un algoritmo para el volumen de un cuerpo en forma de capsula, conocido la altura
del cuerpo y el diámetro del cuerpo que coincide con el de las semiesferas, que están arriba y
abajo.
PROBLEMA
1-. Descripción del Problema
2-. Identificación de Variables
v Volumen total
vc Volumen del cuerpo(cilindro)
vs Volumen de la semiesfera
d Diámetro
r Radio
h Altura del cuerpo
3-. Fórmulas
v vc 2vs
vc .r 2 .h
2
vs .r 3
3
r d /2
4-. Clasificación
Entradas: d,h
Salidas: v
ALGORITMO
Notación Diagrama de Flujo (DF)
INICIO
d,h
rd/2
vc3.1415*r*r*h
vs2*3.1415*r*r*r/3
vvc+[Link]
FIN