2. @joaquinls
Definición y análisis de un
problema. by Joaquin Lara
Sierra is licensed under a
Creative Commons
Reconocimiento-NoComercial
2.5 Colombia License.
3. Diseño del algoritmo.
La solución de un problema a veces puede ser
complejo es decir puede requerir muchos pasos, en
este caso dividimos el problema en subproblemas y
de esta forma es mas fácil de resolver.
Por ejemplo: Recordemos el problema del calculo
del área de un rectángulo Teniendo en cuenta que
el área es base por altura del rectángulo
Subdividimos el problema en tres partes:
4. Planteamiento
Problema Principal Cálculo del área del
rectángulo
Subproblema Refinamiento (Solución del
problema).
Proceso de
Entrada de Datos: Salida de Datos:
Datos
Altura y Base del Salida de la base,
Calcular el
rectángulo Altura y área
área
5. Este método es el denominado diseño descendente
(Top-down-design). Identifica las tareas mas
importantes a ser ejecutada para resolver el
problema y disponerlas en el orden que serán
ejecutadas.
Esta descripción paso a paso sirve como una
primera descripción al algoritmo y proporciona
una primera lista secuencial de actividades a
ejecutar.
6. Por consiguiente todo algoritmo debe cumplir las
características de ser preciso, definido y finito. En
este caso los pasos del algoritmo seria:
● 1. Leer altura, base
● 2. Calcular área= base * altura
● 3. Mostrar el área del rectángulo
7. Codificación del programa
Ya sabemos que las partes constitutiva de un programa son
entradas, salidas y el algoritmo de resolución.
Entradas de datos son operaciones de lectura/ escritura.
Las salidas operación de impresión.
El proceso de diseño del algoritmo o posteriormente
codificación del programa consiste en definir las acciones o
instrucciones que debe resolver el problema.
8. Tipos de Instrucciones
TIPO PSEUDOCÓDIGO
Instrucciones de inicio/fin Inicio/Fin
Instrucciones de asignación a<- 7
Instrucciones de lectura leer
Instrucciones de escritura escribir o imprimir
Instrucciones de bifurcación. ¿?
9. Programación lineal o no lineal
Lineal. Es un programa donde las instrucciones
se ejecutaran secuencialmente sin bifurcaciones,
sin decisiones, ni comparaciones.
No lineal. La secuencia del programa se
interrumpe mediante instrucciones de
bifurcación.
Las bifurcaciones pueden ser hacia delante o
hacia atrás en un programa. Es decir:
13. Elementos básicos de un programa
En programación siempre se debe separar la
diferencia entre el diseño del algoritmo y su
implementación en un lenguaje especifico.
Por ello se debe distinguir claramente los
conceptos de programación y como utilizarlos.
Los elementos básicos constructivos de un
programa o algoritmo son:
14. ● Palabras reservadas. (inicio, fin, si-entonces).
● Indentificadores.(nombre del algoritmo, de las
variables, procedimientos etc.)
● Caracteres especiales. (coma, punto y coma)
● Constantes
● Variables
● Expresiones
● Instrucciones
15. Otros elementos
● Bucles
● Contadores
● Acumuladores
● Interruptores
● Estructuras
– Secuenciales
– Selectivas
– Repetitivas
16. Bucles e interaciones
Un bucle o lazo (ciclo) es un segmento de un
algoritmo o programa, cuyas instrucciones se
repiten un número determinado de veces mientras
se cumple una determinada condición (existe o es
verdadera la condición).
Se debe establecer un mecanismo para terminar las
tareas repetitivas. Este mecanismo es una
condición que puede ser verdadera o falsa y que se
comprueba una vez cada paso o iteración del
bucle.
18. Bucles anidados
En un algoritmo pueden existir varios bucles. Los
bucles pueden ser anidados o independientes.
Los bucles anidados cuando existen están de tal
modo que unos son interiores a otros. Los bucles
no pueden cruzar ya que en este caso se producirá
un funcionamiento anómalo y los resultados de
su ejecución serán impredecibles.
19. Contadores
Los procesos repetitivos son la base del uso de las
computadoras. En estos procesos se necesitan
normalmente contar los sucesos o acciones internas del
bucle como pueden ser los elemento de un fichero, el
número de interacciones a realizar por bucles etc.
Una forma de controlar un bucle es mediante un
contador.
Un contador es una variable cuyo valor se incrementa
o decrementa en una cantidad fija en cada iteración.
Ejemplo: contador = contador + 1
20. Ejercicio
Se quiere diseñar el algoritmo de un programa
que muestre por pantalla los primeros diez
números naturales:
algoritmo Numeros_del_1_al_10
Variables: entero contador
inicio
contador ← 1 /* Inicialización del contador */
mientras ( contador <= 10 ) /* Condición */
escribir( contador ) /* Salida */
contador ← contador + 1 /* Incremento */
fin_mientras
fin
21.
22. Acumulador
Un acumulador o totalizadores una variable cuya
misión es almacenar cantidades variables
resultantes de sumas sucesivas.
Realiza la misma función que un contador con la
diferencia de que el incremento o decremento de
cada suma es variable en un lugar constante como
en el caso del contador.
Se representa por la instrucción S<-S+N donde N
es una variable y no una constante
23. Ejemplo
Ejemplo 1. El encargado de una obra recibe un
suministro de camiones con hormigón. El control
del volumen recibido lo lleva a través de una tabla
donde apunta hora de llegada, volumen servido
por el camión que llega y volumen acumulado a
lo largo del día.
24. Solución
Hora Volumen servido m3 Acumulado m3
10:15 7 7
10:45 5 12
11:08 6 18
11:37 5 23
11:59 7 30
La fórmula que utiliza es:
Acumulado = Volumen servido actual + Acumulado anterior.
A las 11:45 le llaman y le preguntan: ¿Cuánto hormigón hemos recibido
hasta el momento? La respuesta es 23 metros cúbicos.
25. Estructura de decisión o selección
Cuando el programador desea especificar dos o
mas caminos alternativos en un algoritmo (o
programa) se deben utilizar estructuras de
decisión o selección.
Una instrucción de decisión o selección evaluá
una condición y en función del resultado de
esta condición se bifurcara a un determinado
punto.
26. Interruptores
Un interruptor o conmutador (switch). A veces
se les denomina centinela, bandera o flag. es
un campo de memoria que puede tomar dos
valores a lo largo de la ejecución del programa
y que permite comunicar información de una
parte a otra del mismo.
los interruptores suelen tomar dos valores
diferentes: 1 y 0, verdadero y falso, si o no.