Está en la página 1de 54

Algoritmos

Unidad II
Karen Andrea Jom López
Introducción

• Diariamente nos enfrentamos a problemas y como tal, estos exigen una


solución “ingeniosa”.
• No siempre la solución que generamos es la “óptima”.
• La manera de responder a una necesidad difiere de una persona a otra.
• Se hace necesaria una forma estándar de pensamiento que norme las
acciones que realizaremos.
Introducción

• Las mejores soluciones no son las más complejas; sino aquellas que son
funcionalmente ingeniosas.
• Para obtener soluciones ingeniosas debemos hallar la manera correcta de
llevar a cabo la misma y de forma repetitiva.
• Cuando hallamos la forma correcta de ejecutar una solución y la podemos
describir formalmente, de esta forma desarrollamos un Algoritmo.
Un algoritmo es un conjunto finito de
instrucciones o pasos que sirven para ejecutar
una tarea o resolver un problema.

Un conjunto de reglas bien definidas para la


solución de un problema en un número finito
de pasos.

Definición
Procedimiento lógico-matemático, aplicado
para resolver un problema.

Conjunto de instrucciones concretas y


detalladas mediante el cual se consigue una
acción determinada.
Definición

• De lo anterior deducimos que un algoritmo tiene las siguientes


características:
• Es Finito
• Es secuencial
• Es determinístico (que se consideran entradas y salidas)
En la programación

Establecer una secuencia de acciones que:

Puedan ser ejecutadas por el procesador

Realicen una determinada tarea

2. Fases:

• Resolución del problema propuesto (algoritmo)


• Adaptación del algoritmo al computador: codificar el algoritmo en un lenguaje de
programación.
Conceptos básicos

1. Acción: Etapa en la realización de un trabajo


2. Acción primitiva: Acción que el procesador puede ejecutar sin necesidad
de información adicional
3. Algoritmo: Secuencia ordenada de acciones primitivas que realizan un
trabajo o una tarea.
Ir al trabajo
• Levantarse
• Darse una ducha
Ejemplo • Vestirse
• Desayunar
• Tomar el bus, subirse al
carro
Ejemplo
Ejemplo
• Determinación de las primitivas de las que
Aspectos a partimos
• Lenguaje simbólico a utilizar para desarrollar
considerar para el algoritmo
escribir un • Representación de los datos
algoritmo • Establecer datos de entrada
• Establecer datos de salida
• Establecer las relaciones entre los datos de
entrada y los de salida
• Ser finito: El algoritmo debe acabar tras un número

Condiciones •
finito de pasos
Estar bien definido: Todas las ejecuciones del
que debe algoritmo con los mismos datos de entrada deben
devolver los mismos datos de salida.
cumplir un
algoritmo • Nota:
• Los algoritmos no son directamente interpretados
por una computadora, estos deben ser traducidos a
un lenguaje de programación
Lenguajes
algorítmicos
Los algoritmos pueden describirse
utilizando diversos lenguajes. Cada uno
de estos lenguajes permiten describir
Definición los pasos con mayor o menor detalle.
Lenguajes de
algoritmos La clasificación de los lenguajes para
algoritmos puede enunciarse de la
siguiente manera :
Lenguaje Natural

• Es aquél que describe en español, para nuestro caso, los pasos a seguir
utilizando un vocabulario cotidiano. Se le conoce como lenguaje
jerga cuando se utilizan términos especializados de una determinada
ciencia,
• Un ejemplo de algoritmo con Lenguaje Natural sería «Cómo ver una
película en Netflix«:
• INICIO
• Encender la televisión
• Abrir Netflix

Ejemplo • Buscar una película interesante


• Si la portada llama mi atención
• Leer la reseña
• Comprobar la valoración de otros usuarios
• Ver el trailer
• Si me parece bien, comenzar a verla
• Sino, volver al paso 4 de búsqueda
• Ajustar el volumen
• Disfrutar la película
• FIN
Lenguaje Diagrama de flujo

• Es aquél que se vale de diversos símbolos para representar las ideas o


acciones a desarrollar. Es útil para organizar las acciones o pasos de un
algoritmo pero requiere de etapas posteriores para implementarse en un
sistema de cómputo.
Ejemplo
Lenguaje natural de programación

• Son aquéllos que están orientados a la solución de problemas que se


definen de una manera precisa. Generalmente son aplicados para la
elaboración de fórmulas o métodos científicos.
• El lenguaje natural tiene las siguientes características :
1. Evita la ambigüedad (algo confuso que se puede interpretar de varias
maneras).
2. Son precisos y bien definidos.
3. Utilizan términos familiares al sentido común.
4. Elimina instrucciones innecesarias.
Private Sub Form1_Load(sender As
Object, e As EventArgs) Handles
MyBase.Load MsgBox("Hola
Mundo") End Sub
Ejemplo
Lenguaje de Programación de Algoritmos.

• Es aquél que se utiliza para introducir en la computadora un algoritmo


específico. Se les conoce también como Lenguaje de Programación.
Metodologías para la
solución de problemas
por medio de
computadoras
7 pasos importantes

1) DEFINICIÓN DEL 2) ANÁLISIS DEL 3) DISEÑO DEL 4) CODIFICACIÓN 5) PRUEBA Y


PROBLEMA PROBLEMA ALGORITMO DEPURACIÓN

6) 7)
DOCUMENTACIÓN MANTENIMIENTO
Definición del problema

• Esta fase está dada por el enunciado del problema, el cual requiere una
definición clara y precisa. Es importante que se conozca lo que se desea
que realice la computadora; mientras esto no se conozca del todo no tiene
mucho caso continuar con la siguiente etapa.
• Una vez que se ha comprendido lo que se desea de
la computadora, es necesario definir: Los datos de
entrada. Cuál es la información que se desea
Análisis del producir (salida) Los métodos y fórmulas que se
necesitan para procesar los datos. Una
problema recomendación muy practica es el que nos
pongamos en el lugar de la computadora y
analicemos que es lo que necesitamos que nos
ordenen y en que secuencia para producir los
resultados esperados.
Diseño del algoritmo

Las características de un buen algoritmo son:

1) Debe tener un punto particular


de inicio.

3) Debe ser general, es decir,


soportar la mayoría de las
2) Debe ser definido, no debe 4) Debe ser finito en tamaño y
variantes que se puedan
permitir dobles interpretaciones. tiempo de ejecución.
presentar en la definición del
problema.
• La codificación es la operación de
escribir la solución del problema
(de acuerdo a la lógica del diagrama
de flujo o pseudocódigo), en una
serie de instrucciones detalladas,
en un código reconocible por la
Codificación computadora, la serie
instrucciones detalladas se le
de

conoce como código fuente, el cual


se escribe en un lenguaje de
programación o lenguaje de alto
nivel.
Prueba y Depuración

Los errores humanos dentro de la programación de computadoras son muchos y


aumentan considerablemente con la complejidad del problema. El proceso de identificar
y eliminar errores, para dar paso a una solución sin errores se le llama depuración.

La depuración o prueba resulta una tarea tan creativa como el mismo desarrollo de la
solución, por ello se debe considerar con el mismo interés y entusiasmo.
Documentación
Es la guía o comunicación escrita es sus variadas formas, ya sea en enunciados, procedimientos, dibujos o
diagramas. A menudo un programa escrito por una persona, es usado por otra. Por ello la documentación
sirve para ayudar a comprender o usar un programa o para facilitar futuras modificaciones (mantenimiento).

1. Documentación Interna (Código


fuente)

2. Documentación Externa
(Algoritmo, diccionario de datos)

3. Manual de usuario
• Se lleva a cabo después de
terminado el programa, cuando se
detecta que es necesario hacer
algún cambio, ajuste o
Mantenimiento complementación al programa
para que siga trabajando de
manera correcta. Para poder
realizar este trabajo se requiere
que el programa este
correctamente documentado.
Entidades primitivas
para el Desarrollo
de algoritmos
Los Datos

• Los datos son números, letras o símbolos que describen objetos,


condiciones o situaciones.
• Desde el punto de vista de la computación, los datos se representan como
pulsaciones o pulsos electrónicos a través de la combinación de circuitos
(denominados señal digital).
Tipos de
Datos
Tipos de datos simples

• Datos numéricos
Permiten representar valores escalares de forma numérica, esto incluye a los
números enteros y los reales. Este tipo de datos permiten realizar
operaciones aritméticas.

Ejemplo:
4, 5, 7, 97
2.33, 4.59, 5.0
Tipos de datos simples

• Lógicos o boleanos

Es aquel dato que sólo puede tomar uno de dos valores (verdadero o falso)
ya que representan el resultado de una comparación entre otros datos
(numéricos o alfanuméricos).

Ejemplo:
3>4, a=b, saldo=valor
Tipos de datos simples

• Datos Alfanuméricos (string):


Es una secuencia de caracteres alfanuméricos que permiten representar
valores identificables de forma descriptiva, esto incluye nombres de
personas, direcciones, etc. Este tipo de datos se representan encerrados en
comillas.
• Ejemplos:
“ león “, “Pabl03”
Tipos de operadores y
operandos
• Son los elementos que relacionan de forma
diferente, los valores de una o más variables
y/o constantes. Permiten manipular valores.
• Tipos de operadores
Operadores
1. Aritméticos
2. Relacionales
3. Lógicos
Operadores aritméticos

• Permiten la realización de operaciones matemáticas con los valores.


• Ejemplo:
• 12+5 = 17
Todas las expresiones entre paréntesis se evalúan primero. El paréntesis
mas interno se evalúa primero.

Prioridad de
los Dentro de la misma expresión los operadores se evalúan en el siguiente

operadores
orden:
*, /, mod multiplicación,
^ Exponenciación +, - suma y resta
división, modulo.

aritméticos
Los operadores en una misma expresión con igual nivel de prioridad se
evalúan de izquierda a derecha.
Se utilizan para establecer una relación entre dos
valores.

Compara estos valores entre si y esta comparación


produce un resultado Verdadero o falso.

Operadores Comparan valores del mismo tipo


Relacionales
Tienen el mismo nivel de prioridad en su
evaluación.

Tienen menor prioridad que los aritméticos


Ejemplos
Ejemplos
Operadores
Lógicos
• Se utilizan para establecer
relaciones entre valores
lógicos (verdadero = true,
Falso = false)
• Pueden ser resultado de una
expresión relacional.
Expresiones

• Son combinaciones de constantes, variables, símbolos de


operación, paréntesis y nombres de funciones especiales.
• Una expresión consta de operadores y operandos
• Ejemplo:
• a +(b+3)/c, (10-(2+4)), (a<b) and (b<c)
Técnicas de diseño
Top Down

• También conocida como de arriba-abajo y consiste en establecer


una serie de niveles de mayor a menor complejidad (arriba-
abajo) que den solución al problema. Consiste en efectuar una
relación entre las etapas de la estructuración de forma que una
etapa jerárquica y su inmediato inferior se relacionen mediante
entradas y salidas de información.
Este diseño consiste en una serie de descomposiciones
sucesivas del problema inicial, que recibe el
refinamiento progresivo del repertorio de instrucciones
que van a formar parte del programa.

Top Down La utilización de la técnica de diseño Top-Down tiene


los siguientes objetivos básicos:
•  Simplificación del problema y de los
subprogramas de cada descomposición.
• Las diferentes partes del problema pueden ser
programadas de modo independiente e incluso
por diferentes personas.
• El programa final queda estructurado en forma
de bloque o módulos lo que hace más sencilla su
lectura y mantenimiento.
Bottom Up

El diseño ascendente se refiere a la identificación de aquellos procesos que necesitan


computarizarse con forme vayan apareciendo, su análisis como sistema y su codificación, o bien, la
adquisición de paquetes de software para satisfacer el problema inmediato.

Los problemas de integración entre los subsistemas son sumamente costosos y muchos de ellos no
se solucionan hasta que la programación alcanza la fecha límite para la integración total del
sistema. En esta fecha, ya se cuenta con muy poco tiempo, presupuesto o paciencia de los
usuarios, como para corregir aquellas delicadas interfaces, que en un principio, se ignoran.
Divide y Vencerás
• Tanto el ordenamiento por mezcla como el ordenamiento rápido
emplean un paradigma algorítmico común que se basa en la
recursividad. Este paradigma, divide y vencerás, separa un problema
en subproblemas que se parecen al problema original, de manera
recursiva resuelve los subproblemas y, por último, combina las
soluciones de los subproblemas para resolver el problema original. 
• Tres partes importantes:
• Divide el problema en un número de
subproblemas que son instancias más
pequeñas del mismo problema.
• Vence los subproblemas al resolverlos de
manera recursiva. Si son los suficientemente
Divide y pequeños, resuelve los subproblemas como
casos base.
Vencerás • Combina las soluciones de los subproblemas en
la solución para el problema original.

También podría gustarte