Está en la página 1de 40

ALGORITMOS

PARTE I
¿ Para qué aprender un lenguaje de
Programación?
• El objetivo de aprender un lenguaje de
programación, es poder utilizar la computadora
como una herramienta para resolver problemas,
de diversos tipos.
• Para esto, de manera general y muy simple, la
resolución de un problema se puede dividir en 3
etapas:
– Análisis del Problema.
– Diseño de un algoritmo.
– Elaboración de un programa para computadora.
Análisis del Problema

• Exige la lectura previa del problema, las veces que sean


necesarias, a fin de tener una idea general de lo que se
solicita.
• El problema debe ser definido y comprendido
claramente. Se debe definir cuales son las entradas
que se requieren y las salidas que se desean obtener.
• Luego del análisis se puede pasar a la siguiente etapa:
Diseño de un Algoritmo.
Diseño de un Algoritmo
• Un algoritmo es un método o conjunto de reglas (sin
ambigüedades) que se aplican paso a paso en forma
ordenada para solucionar un problema.
Características de un Algoritmo:
• Debe ser preciso: es decir debe indicar el orden exacto de
realización de cada etapa, evitando acciones innecesarias.
• Debe estar definido: significa que si se ejecuta un algoritmo 2
o más veces, con los mismos valores iniciales, se debe obtener
el mismo resultado todas las veces.
• Debe ser finito: esto significa que si se sigue un algoritmo, se
debe terminar en algún momento, es decir, debe tener un
número finito de pasos.
• De manera general, en un algoritmo se deben definir
claramente las siguientes partes:
– Inicialización de variables.
– Entrada de datos.
– Procesos a seguir.
– Salida de resultados.
• Otro aspecto a considerar es el método elegido para
representar los algoritmos:
– Diagramas de Flujo (convencional)
– Pseudocódigo
– Diagramas de Flujo Estructurado (Nassi‐Schneiderman o N‐S).

• El empleo de indentación (justificación o sangrado) en la


escritura de los algoritmos (Pseudocódigo) facilita su
lectura y comprensión.
INDENTACION
Inicio
Entero: b, h, a, p
Leer b, h
a=b*h
p = 2 (b + h)
Escribir "área:", a
Escribir "perímetro:", p
Fin
Elaboración de un Programa para
Computadora:
Esta fase se denomina Programación y consta de las siguientes
partes:
• Codificación: proceso de convertir un algoritmo a un
programa, escrito en un lenguaje de programación.
Requiere el uso de un programa editor que permita crear
los programas a las que se denomina Programas Fuente.
• Compilación y Ejecución: Ya escrito el programa fuente, se
debe traducir a lenguaje máquina, para obtener el
correspondiente programa objeto, que es el que ejecuta la
computadora. Si durante la traducción se detectan errores
de sintaxis, el compilador informa al usuario cuáles son y
cual es su posible ubicación.
• Depuración: Es el proceso de localizar y corregir errores.
Existen 3 posibles tipos de errores cuando se ejecuta un
programa:
– Errores de Sintaxis, Errores de Ejecución y Errores Lógicos:
• Verificación: Constatar si efectivamente hace lo que se
desea, y si no lo hace, entonces determinar las causas por
las que falta.
• Optimización: Cuando se consigue hace funcionar
correctamente un programa, el paso siguiente es
perfeccionarlo para que funcione mejor. La optimización es
una etapa de refinamiento, que puede incluir: eliminar
instrucciones innecesarias, hacer mejores presentaciones
de reportes, etc.
• Documentación: para describir lo que hace un programa,
como fue construido, para qué sirven determinadas
variables o bloques de instrucciones y como tiene que ser
utilizado
• Mantenimiento: Se denomina así al proceso de
actualización continua de un programa, con la realización
de cambios que sean considerados necesarios.
Ejemplos de algoritmos de la vida
diaria
• Pueden ser: ¿Que hago para tomar una taza
de Té?, ¿Qué debo hacer para ver una Película
ABC? , tomar un jugo de naranja, tomar un
baño, ir a la universidad, tomar desayuno,
comprar un periódico, comprar una medicina
en la Farmacia, etc.
Problema 1: Tomar una taza de té
1. Inicio
2. Dirigirse a la cocina.
3. Coger la taza.
4. Echar en la taza un poco de agua hervida.
5. Escoger la infusión (TE) que se desea tomar
6. Introducir la infusión en la taza.
7. Agregar el azúcar (la cantidad que se desee)
8. Beber el TE.
9. Fin
Problema 2: Cambiar la rueda pinchada de un
automóvil teniendo una gata mecánica en buen estado,
una rueda de reemplazo y una llave inglesa
Los pasos del algoritmo son:
1. Inicio
2. Aflojar los tornillos de la rueda pinchada con la llave
inglesa.
3. Ubicar la gata mecánica en su sitio.
4. Levantar la gata hasta que la rueda pinchada pueda girar
libremente.
5. Quitar los tornillos y la rueda pinchada.
6. Poner rueda de repuesto y los tornillos.
7. Bajar la gata hasta que se pueda liberar.
8. Sacar la gata de su sitio.
9. Apretar los tornillos con la llave inglesa.
10. Fin.
• Podríamos modificar este algoritmo, bien sea
escribiendo más líneas de detalle o uniendo
algunos pasos, y aún así funcionaría para resolver
nuestro problema. Esto quiere decir que
podemos tener algoritmos diferentes, con
diferente diseño, que resuelven el mismo
problema. ¿Cuál de ellos es más eficiente,
hablando desde el punto de vista computacional?
Es un tema que trataremos mucho más
adelante….por el momento nos debemos
concentrar en cual algoritmo es más claro, cual es
más fácil de entender.
Problema 3:
Un lector hace un pedido de un ejemplar del libro “Programación
en Java” al bibliotecario. El bibliotecario examina en su banco de
datos si hay al menos un ejemplar del mismo,
si hay el ejemplar entonces el bibliotecario acepta el pedido y
entrega al lector el libro; en caso contrario rechaza el pedido.
Los pasos del algoritmo son:
1. Inicio.
2. Leer el pedido del ejemplar.
3. Examinar el pedido del ejemplar.
4. Si hay un ejemplar
entonces
Aceptar pedido,
Entrega ejemplar al lector.
en caso contrario (sino)
Rechazar pedido.
5. Fin.
Problema 4: Tomar una taza de té
1. Inicio
2. Dirigirse a la cocina.
3. Coger la taza.
4. Echar en la taza un poco de agua hervida.
5. Si es que no hay agua caliente
entonces Hervir un poco
Servir en la taza el agua recién hervida
sino Ir a paso 6
6. Escoger la infusión que se desea tomar.
7. Introducir la infusión en la taza.
8. Agregar el azúcar (la cantidad que se desee) (supuesto: hay
azúcar)
9. Beber el Te.
11. Fin
TALLER
• Desarrollar 2 algoritmos, uno sencillo y otro más
complejo, puede ser utilizando condicionales para
solucionar los siguientes problemas:
1. Diseñar un algoritmo que responda a la pregunta:
¿Qué debo hacer para ver la película XYZ?.
2. Diseñar un algoritmo o receta para preparar un plato
o postre o bebida específica,
3. Diseñar un algoritmo o las instrucciones a seguir para
matricularse en el presente ciclo académico.
4. Diseñar un algoritmo para hacer una llamada
telefónica desde un teléfono público.
FORMAS DE DESCRIBIR UN ALGORITMO
1. LENGUAJE NATURAL
• La primera y más sencilla forma de describir un algoritmo.
• Ventaja fundamental: facilidad de comprensión, cualquier
persona (hispanoparlante, por supuesto) que lea dicho
algoritmo podría entenderlo y aplicarlo.
• Problemas que plantea describir un algoritmo de esta forma:
– El lenguaje natural no es universal
– El lenguaje natural es ambiguo y, por tanto, susceptible de
errores.
– El lenguaje natural es muy amplio, lo que para una persona
puede ser una instrucción sencilla, puede no serlo para
otra y, desde luego, no lo será para un computador.
• Otras formas están mejor delimitadas y no son ambiguas.
FORMAS DE DESCRIBIR UN ALGORITMO
2. PSEUDOCODIGO

• Une en un solo tipo de representación las


ventajas del lenguaje natural y de los
diagramas.
• Ventajas:
– Fácilmente comprensible para una persona que lo
ve por vez primera.
– Está bien delimitado.
– Elimina las ambigüedades del lenguaje natural.
– Se representa de una forma compacta.
FORMAS DE DESCRIBIR UN ALGORITMO
3. DIAGRAMA DE FLUJO

• Representaciones gráficas de algoritmos; usan


símbolos conectados con flechas para indicar la
secuencia de instrucciones y están regidos por
ISO (Organiz. de estándares internacionales)
• Ventajas
– Los símbolos son universales.
– Son menos propensos a la ambigüedad.
– Por estar basados en un número pequeño de bloques y
reglas para su empleo permiten delimitar mejor los
algoritmos.
– Se aproximan más a la forma en que trabaja el ordenador
FORMAS DE DESCRIBIR UN ALGORITMO
3. DIAGRAMA DE FLUJO
• Desventajas
– El hecho de emplear símbolos supone que una
persona que desconozca los símbolos puede tener
dificultades para comprender el algoritmo o no
entenderlo en absoluto.
– Aunque los símbolos son universales el texto que se
coloca en su interior sigue siendo lenguaje natural.
– La representación gráfica puede resultar bastante
tediosa y en el caso de algoritmos complejos
extremadamente confusa.
– Un ordenador no es capaz de utilizar una
representación visual como descripción de un
algoritmo
FORMAS DE DESCRIBIR UN ALGORITMO
4. DIAGRAMA NASSI SCHNEIDERMAN O NS

• Otra forma de representar los algoritmos


gráficamente.
• Diagrama algo similar a los diagramas de flujo
en el que se omiten las flechas y las figuras
que se usan son rectángulos contiguos para
órdenes secuenciales.

Leer b,h
FORMAS DE DESCRIBIR UN
ALGORITMO
• Durante el desarrollo del curso, emplearemos
para describir algoritmos: Pseudocódigo,
Diagrama de Flujo y Diagramas N‐S.
• Estas 3 formas permiten implementar las 3
estructuras Básicas de Control:
A. Estructura Secuencial
B. Estructura Condicional o de Decisión o Selectiva
C. Estructura Repetitiva o Iterativa
A. ESTRUCTURA SECUENCIAL
• La estructura secuencial es aquella en la que
una acción sigue a otra en secuencia. Las
operaciones se suceden de tal modo que la
salida de una es la entrada de la siguiente y así
sucesivamente hasta el fin del proceso
A. Estructura Secuencial‐EJEMPLO 1: Diseñar un
algoritmo para calcular el área y el perímetro de un
rectángulo
PASO 1: Definición del problema
Calcular área y perímetro de un rectángulo
PASO 2: Análisis del problema
Para desarrollar este problema es necesario conocer
las fórmulas para obtener tanto el área como el
perímetro de un rectángulo.
Sea b = base, h = altura, a=área y p=perímetro, las
fórmulas a utilizar son:
a = b * h y p = 2 * (b + h)
Datos de entrada: b y h (base y altura)
Datos de salida: a y p
Procesos: a = b * h y p = 2 * (b + h)
b, h a, p
a=b*h
p = 2* (b + h)
ENTRADA SALIDA
PROCESO
PASO 3: Diseño de la solución o del
Algoritmo ‐ PSEUDOCODIGO
Inicio
//Declaración de variables
Entero b, h, a, p
//Entrada de datos
Leer b, h
//Proceso de cálculo
a=b*h
p = 2 *(b + h)
//Salida de resultados
Escribir “Area:", a
Escribir “Perímetro:", p
Fin
PASO 3: Diseño de la solución o del
Algoritmo – DIAGRAMA DE FLUJO
INICIO

Entero b, h

Leer b, h

a=b*h

p=2*(b+h)

Escribir
“Area: “, a
“Perimetro: “, p

FIN
PASO 3: Diseño de la solución o del
Algoritmo – DIAGRAMA N‐S
IInicio

Entero b, h

Leer b, h

a = b*h

p = 2 *(b + h)

Escribir “Area= “, a

Escribir “Perímetro= “, p

Fin
CONCEPTOS BÁSICOS EN EL DISEÑO
DE ALGORITMOS
Variable
• Objeto cuyo valor puede ser modificado a lo largo de la
ejecución de un programa.
• Se le asigna un nombre: contador, área, suma.
Estructura secuencial:
• Formado por instrucciones que se ejecutan una
después de otra. Se tienen tres tipos de instrucciones
secuenciales:
1. La declaración de variables,
2. Asignación,
3. Instrucción Leer e instrucción Escribir.
VARIABLES

DIRECCCIONES MEMORIA VALO RES DE


v
VARIABLES

001 b
5
002 h
3 NOMBRE DE VARIABLES
SKSKSD
(IDENTIFICADORES)
003 15 a
16 p
004
Declaración de variables
• Consiste en escribir el tipo de datos y la lista
de identificadores que se tendrán de dicho
tipo, separando cada identificador por medio
de comas y : para separar el tipo de datos de
la lista de identificadores.
• Ejemplo:
Entero edad
Real estatura, peso, sueldo
Cadena nombre, dirección
Asignación
• Asignar un valor a una variable equivale a decir que se
guarda dicho valor en la posición de memoria reservado
para la variable en mención. Por lo tanto, para poder
realizar una asignación es necesario primero haber
declarado una variable.
variable = expresión ó variable expresión
• La expresión puede estar formada por un valor, por un
conjunto de valores y operadores o por una función.
• Ejemplos de asignación:
edad = 10 //A la variable edad se le asigna el valor de 10
estatura = 1.80 //A la variable estatura se le asigna el valor de 1.80
resultado = 2*3 //A la variable resultado se le asigna el valor 6
resultante de la expresión 2*3
Instrucción Leer
• Se utiliza para enviar información desde un
dispositivo de entrada de datos hacia la memoria.
En la memoria los datos son ubicados mediante
el nombre de variable utilizado como
complemento de la instrucción LEER.
• Ejemplo:
Leer a, b
Donde "a" y "b" son las variables que recibirán los
valores y que deben haberse declarado
previamente.
Instrucción Escribir
• Permite enviar datos desde la memoria hacia un
dispositivo de salida como la pantalla o la impresora.
La información que se envía puede ser constante o
también el contenido de variables.
• Ejemplo:
Escribir a, b //Se imprimen los valores de las variables a y b
Cuando se escriben más de una variable es necesario
separarlas con comas (,) y los mensajes se escriben
entre comillas dobles “”.
Escribir “Area = “, a
//Se imprime el texto Area = seguido del valor resultante de la
variable a
Contador
• Es una variable que sirve para llevar la cuenta de las
veces que se repite una operación
• Generalmente se incrementa o decrementa de uno en
uno.
• En el ejemplo, son contadores: c, i, apr, des , con
c=c+1
Acumulador
• Es una variable en la cual se va almacenando la suma
de los valores sucesivos que va tomando otra variable.
sum=sum+1
A. Estructura Secuencial‐EJEMPLO 2: Diseñe un
algoritmo para convertir una longitud dada en metros
a sus equivalentes en centímetros, pies, pulgadas y
yardas.

Consideremos que: 1 metro = 100 centímetros, 1


pulgada = 2.54 centímetros, 1 pie = 12 pulgadas, 1
yarda = 3 pies.

PASO 1: Definición del problema


Calcular una longitud dada en metros a sus
equivalentes en centímetros, pies, pulgadas y yardas
PASO 2: Análisis del problema
Para desarrollar este problema es necesario conocer las
equivalencias de las unidades de medida de longitud
planteadas.
Sean: metro = medida en metros, acent = convertir a cent,
apulg = convertir a pulg, apies = convertir a pies y ayard =
convertir a yardas
Datos de entrada: metro
Datos de salida: acent, apulg, apies, ayard
Procesos: acent = metro * 100
apulg = acent / 2.54
apies = apulg / 12
ayard = apies / 3
PASO 3: Diseño de la solución o del Algoritmo ‐
PSEUDOCODIGO
Inicio
// Declaración de variables
Real metro, acent, apies, apulg, ayard
// Entrada de datos
Leer metro
// Proceso de cálculo
acent = metro * 100
apulg = acent / 2.54
apies = apulg / 12
ayard = apies / 3
// Salida de resultados
Escribir “Centímetros : “, acent
Escribir “Pulgadas : “, apulg
Escribir “Pies : “, apies
Escribir “Yardas: “, ayard
Fin

También podría gustarte