Está en la página 1de 48

Algoritmos y Estructura de Datos I

TEMA 3 – RESOLUCIÓN DE PROBLEMAS.


ALGORITMOS
Resolución de problemas
Para resolver problemas los programas operan con datos.
Los datos representan objetos del mundo real que permiten
modelar aspectos de un problema que se desea resolver.
Dos cuestiones importantes:
◦ Definir el conjunto de instrucciones cuya ejecución
ordenada conduce a la solución.
◦ Elegir la representación adecuada de los datos del
problema.
Ejemplos
 Obtener el promedio de edades de los alumnos.

 Prender una cafetera si son las 7 de la mañana.

 Calcular la trayectoria de un transbordador espacial.

 Realizar pronósticos del clima.


Resolución de problemas

Cuál es el rol o función de los especialistas en


Informática en la resolución de problemas?
Resolución de problemas
La potencialidad de la computadora está en función de la
capacidad de programación de soluciones adecuadas a cada
problema particular
La función esencial del especialista informático es explotar la
potencialidad de las computadoras (velocidad, exactitud,
confiabilidad) para resolver problemas del mundo real.
Resolución de problemas
Para lograr esto debe
◦ Analizar el problema,
◦ Ser capaz de sintetizar sus aspectos esenciales (abstracción)
y
◦ poder especificar la solución que se desea.
◦ Expresar la solución en forma de programa, operando los
datos del mundo real mediante una representación válida
en una computadora.
Resolución de problemas
Resolución de problema = programa
Programa = Datos + instrucciones
Ciclo de vida del software - etapas
No se
requiere
computadora
• Se obtienen los
Análisis
REQUERIMIENTOS

• Diseño de la solución
Diseño
(Algoritmo)

Codificación,
• Se obtiene un
compilación,
programa
ejecución,
ejecutable
verificación

Mantenimiento
(Evolución)
Análisis del problema
Obtener especificaciones o
requerimientos!!
Responder a las preguntas:
 ¿Qué entradas se requieren?
 ¿Qué información se desea?
 ¿Qué método produce la información
requerida?
Análisis del problema
Ejemplo:
Dado el radio de una circunferencia, se desea obtener su
longitud y el área del círculo que determina.
Entrada: ………………………………….
Salida: ……………………………………..
El método o cálculo: …………………………

 Longitud = 2 * 3,1416 * radio


 Área = 3,1416 * radio * radio
Diseño del algoritmo

Se especifica la SOLUCIÓN

Métodos  estrategia divide y vencerás.

Diseño descendente (top-down) o diseño modular, se


divide el problema en subproblemas menos complejos.

Técnicas: diagramas de flujo y pseudocódigo.


Codificación
Escribir la solución en un lenguaje de programación.
Lenguajes : Reglas y sintaxis
Objetivo: Escribir programas sencillos y claros
Ejemplo de programa Pascal
var
i :integer;
n :integer;
suma :integer;
begin
clrScr; {Limpia la pantalla}
write ('Ingresa n : '); {Visualiza información en pantalla}
ReadLn(n);{Leer un dato del teclado}
For i := 1 to n do
begin
suma := suma + i
end;
writeLn ('Suma: ', suma); {Visualiza información en pantalla}
readkey; {Espera la pulsación de una tecla}
clrScr
end
Ejemplo de programa en C
#include <stdio.h>
int main(){
int ve_canti;
float ve_precio;
float va_total;
va_total = 0.0;

printf("ingrese la cantidad del producto: \n");


scanf("%d", &ve_canti);

printf("ingrese el precio del producto: \n");


scanf("%f", &ve_precio);

va_total = ve_canti * ve_precio;


printf("Total: $ %4.2f\n", va_total);

return 0;
}
Resultado de la ejecución:
Compilación y ejecución
Compilación traducción del programa fuente a lenguaje de
máquina.
◦ Se detectan errores de sintaxis.

◦ Se repite hasta que no se presenten más errores

◦ Se genera un programa objeto y luego el programa ejecutable.

El archivo que contiene el programa ejecutable


generalmente tiene extensión.exe
Se puede ejecutar el programa
haciendo doble clic sobre su nombre
Verificación y depuración
Verificación es comprobar que un programa es correcto (que
cumplan con sus especificaciones)
◦ Se requieren datos de prueba.
◦ Considerar: valores normales, extremos, erróneos y casos especiales.

Depuración es encontrar los errores y corregirlos.


◦ 3 tipos de errores:
◦ de compilación.
◦ de ejecución.
◦ lógicos.
Documentación y
mantenimiento
Descripción de todo el proceso de desarrollo.
Importancia: Programas pobremente documentados son
difíciles de leer, más difíciles de depurar y casi imposibles
de mantener y modificar.
La documentación puede ser: interna o externa.
 Mantenimiento =
DESARROLLO EVOLUTIVO

 Mantenimiento = 80% del


esfuerzo de áreas de Sistemas
Lo difícil de la programación (humor)
Algoritmos

La noción del algoritmo es fundamental en la Computación!


La resolución de un problema exige el diseño previo de un
algoritmo que resuelva dicho problema.
El programador es antes que nada una persona que resuelve
problemas.
Una metodología de programación es una metodología para
resolver problemas mediante programas.
El eje es el concepto de ALGORITMO.
Algoritmos
Un algoritmo es un método para resolver problemas.
Es un conjunto finito de reglas que dan una secuencia de
operaciones para resolver un problema específico.
Niklaus Wirth, creador de Pascal, sostiene que sólo se puede
llegar a realizar un buen programa con el diseño de un
algoritmo y una correcta estructura de datos.

Programa = Algoritmo + estructura de datos


Ejemplo de algoritmo
Método Complemento a 2
Primer paso: Se complementa el número positivo en todos sus bits, incluido el
bit de signo, es decir, se realiza el "complemento a 1".
Número 10: 00001010
Número -10: 11110101
Segundo paso: Al resultado obtenido en el primer paso se le suma 1.
Número -10: 11110101
+ 1
11110110
Tercer paso: Despreciar el ultimo acarreo si existe
Ejemplo de algoritmo
Pasos para la resolución de un problema
1. Diseño del algoritmo: describe la secuencia ordenada de
pasos — sin ambigüedades — que conducen a la solución de
un problema dado.
2. Expresar el algoritmo como un programa en un lenguaje de
programación adecuado (Codificación o implementación).
3. Ejecución y validación del programa por la computadora.

Diseño del Programa de


Problema
algoritmo computadora
Importancia de los algoritmos
Cualquier programa requiere el diseño previo de un
algoritmo, de modo que sin algoritmo no puede existir un
programa.
Los algoritmos son independientes tanto del lenguaje de
programación como de la computadora.
El algoritmo se puede expresar en distintos lenguajes de
programación o ejecutarse en una computadora distinta; el
algoritmo será siempre el mismo.
Importancia de los algoritmos
En la ciencia de la computación y en la
programación, los algoritmos son más importantes
que los lenguajes de programación o las
computadoras.
El diseño de la mayoría de los algoritmos requiere
creatividad y conocimientos profundos de las
técnicas de la programación.
Características de los algoritmos

Precisión: Repetitividad: Finitud:


• Debe indicar el • Debe poder • Debe terminar
orden de repetirse tantas en algún
realización de veces como se momento
cada acción, de quiera,
forma clara y sin alcanzándose
ambigüedades siempre los
mismos
resultados.
Calidad de los algoritmos
Validez. El algoritmo construido hace exactamente
lo que se pretende hacer.
Eficiencia. El algoritmo debe dar una solución en un
tiempo razonable.
Optimización. Encontrar el mejor diseño de
algoritmo para resolver el problema. Es
conveniente tener un algoritmo sencillo más que
uno complejo.
Tres partes fundamentales
El algoritmo describe una transformación de los datos
de entrada para obtener los datos de salida a través de
un procesamiento de la información
Ejemplos

Ejemplo 1: Algoritmo de carga de crédito para el teléfono:


Entrada: código de la tarjeta
Proceso: procedimiento de carga
Salida: crédito disponible
Ejemplo 2
Calcular la media de tres números:
Los pasos del algoritmo son:
1.Ingresar tres números
2.Sumar los tres números
3.Dividir el resultado obtenido por 3
4.Mostrar el cociente obtenido
Entrada: los números.
Proceso: suma de todos los números y división del resultado por
tres.
Salida: media de los tres números ingresados.
Algoritmos famosos

Cubo de
Rubik
Métodos de representación de
algoritmos
Se debe utilizar algún método que permita independizar el
algoritmo de los lenguajes de programación.
Los métodos usuales para representar un algoritmo son:
◦ Diagrama de flujo
◦ Lenguaje de especificación de algoritmo: seudocódigo
◦ Lenguaje natural: español, inglés, …
◦ Fórmulas matemáticas
Diagramas de flujo
Un diagrama de flujo (flowchart) es una
de las técnicas de representación de
algoritmos más antiguas y a la vez más
utilizada.
Es un método de representación gráfica
que utiliza un conjunto de símbolos.
Cada paso del algoritmo se visualiza
dentro del símbolo adecuado.
y el orden en que se realizan los pasos se
representa por medio de flechas que
indican el flujo lógico del algoritmo.
Símbolos del Diagrama de Flujo

Inicio/Fin de proceso Datos almacenados

Proceso Salida impresa

Ingreso o salida de
Entrada manual
datos

Decisión Conector
Ejemplo de diagramas de flujo
Elementos de los diagramas
Variables: Representan a los datos que se procesan.
Constantes: Valores que no cambian
Secuencia: Las flechas indican la secuencia de ejecución de las
instrucciones.
Acumulador: Variable que almacena totales móviles.
Contador: Variable que se incrementa en un valor constante.
Se utiliza para registrar el número de veces que se presenta
un evento.
Iteración o bucle: Conjunto de instrucciones que se procesa
repetidamente hasta que se cumpla la condición de salida.
Ventajas y limitaciones
Ventajas:
 Rápida comprensión de las relaciones.
 Comunicación: es más visual,
 "una imagen dice más que mil palabras".
 Documentación.

Limitaciones:
 Los diagramas complejos y detallados pueden
ser muy laboriosos de realizar y de consultar.
 No existen normas que indiquen el nivel de
detalles que debe incluirse en un diagrama.
Inicio

suma = 2

Ejemplo:
número = 4

suma = suma + número

Suma de los números pares


comprendidos entre 2 y 100.
número = número + 2
SI

número <=100

NO

suma

Fin
Pseudocódigo
Es un lenguaje de especificación (descripción) de algoritmos,
que facilita el paso a la codificación o traducción a un
lenguaje de programación.

Se considera un primer borrador


del programa
Un pseudocódigo no puede ser
ejecutado por una computadora
directamente (aunque existen
algunas herramientas).
Pseudocódigo Ventajas
El programador puede concentrarse en la lógica sin
preocuparse por las reglas de un lenguaje de programación
específico.
Puede ser traducido fácilmente a cualquier lenguaje
Permite la descripción de:
◦ Instrucciones de entrada/salida.
◦ Instrucciones de proceso.
◦ Sentencias de control del flujo de ejecución.
◦ Acciones compuestas (subprogramas).
Características
 Describe datos, tipos de datos, variables, expresiones,
archivos y cualquier otro objeto.

 Utiliza palabras reservadas en inglés - similares a sus


homónimas en los lenguajes de programación. Ejemplo: if-
then-else

 Exige indentación (sangría en el margen izquierdo).


Pseudocódigo Ejemplo
ALGORITMO Calcula-salario
VARIABLES
REAL: horas, precio_hora, salario_bruto, impuesto, salario_neto
STRING: nombre[30]
// cálculo del salario neto
INICIO
LEER nombre, horas, precio_hora
salario_bruto = horas * precio_hora
impuesto = 0,25 * salario_bruto
salario_neto = salario_neto – impuesto
ESCRIBIR nombre, salario_bruto, impuesto, salario_neto
FIN
Pseudocódigo
El algoritmo empieza con la palabra INICIO y finaliza con la
FIN (START, END en inglés).
La línea precedida por // se denomina comentario. Es un
tipo de documentación interna.
En esta materia se utilizará, como convención propia,
escribir las palabras reservadas en mayúsculas y los
términos en español, y además en inglés.
Formato de seudocodigo
Un algoritmo consta de dos componentes: una cabecera de
programa y un bloque de algoritmo.
 La cabecera comienza con la palabra ALGORITMO, seguida del nombre del
programa.
 El bloque algoritmo consta de dos secciones: las acciones de declaraciones
y las acciones ejecutables.
 Las declaraciones declaran las variables o constantes que tengan nombres.
 Las acciones ejecutables son las acciones que el algoritmo convertido en
programa debe ejecutar.
Escritura de Algoritmos

Cabecera
ALGORITMO Nombre

Sección de declaración
Bloque de
algoritmo
Sección de acciones
Escritura de Algoritmos
ALGORITMO Calculo_Promedio
VAR
tipo-1: lista de variables-1
tipo-2: lista de variables-2
………………………………………….
tipo-n: lista de variables-n
cada lista de variables separadas por coma indica nombre y tipo y cada tipo es uno de los
tipos básicos (entero, real, char, boolean).
VAR
ENTERO: Numero_Empleado
REAL: horas
REAL: impuesto
Tema 3: Secuencia de conceptos

Resolución de
problemas
CICLO DE
VIDA

ETAPAS
Características

Algoritmo

Técnicas de
representación
de algoritmos

Características
Diagramas Seudocodigo
de flujo
ntación de
Este tema introduce a la programación de computadoras:

1- Primero se describen las etapas en la resolución de


problemas (ciclo de vida). Formato
2- Luego se describe el concepto de algoritmo que se
relaciona con la etapa de diseño, en la cual se especifica
la SOLUCION al problema en cuestión.
3- Se explican luego las técnicas de representación de
algoritmos más conocidas.
4- Se describe en particular la técnica de seudocódigo, Ejercitación de Resolución de
indicando el formato. Algoritmos mediante
5- A partir de aquí comienza la ejercitación de resolver Seudocodigo
problemas especificando la solución en seudocódigo.
Algoritmo de éxito

También podría gustarte