definición y análisis de un problema
TRANSCRIPT
Definición y análisis de un problema.
Joaquin Lara Sierra
@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.
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:
Planteamiento
Problema Principal Cálculo del área del rectángulo
Subproblema Refinamiento (Solución del problema).
Entrada de Datos:Altura y Base del
rectángulo
Salida de Datos:Salida de la base,
Altura y área
Proceso de Datos
Calcular el área
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.
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
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.
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. ¿?
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:
Bifurcación
Bifurcación incondicional
Bifurcación condicional
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:
● 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
Otros elementos
● Bucles● Contadores● Acumuladores● Interruptores● Estructuras
– Secuenciales
– Selectivas
– Repetitivas
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.
Ejemplo: Números caprichosos
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.
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
EjercicioSe 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
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
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.
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.
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.
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.
GraciasAhora te toca a tí