Vous êtes sur la page 1sur 33

Algoritmo

Computacional
Nelson Batista
Verificacion y depuracion de los
programas
Este grupo esta compuesto por
Lorena Vizcaino
16-SISM-1-085
Daniela Geronimo
16-SISM-1-074
Joany Geronimo
16-SISM -1-71
Luisa Smith Diaz Cabral
16-sist-1-049
Jose Luis
16-SISM-1-096
Y empezamos asi:
La verificación y depuración
La verificación y depuración

La verificación y compilación de un programa es el


proceso de ejecución del programa con una amplia
variedad de datos de entrada, llama datos de test o
prueba, que determinaran si el programa tiene errores
(bugs). La depuración es el proceso de encontrar los
errores del programa y corregir o eliminar dichos
errores.
Concepto Basico
Entre los errores con los que nos
podemos encontrar están:
Errores de compilación: se producen normalmente por un
uso incorrecto de las reglas del lenguaje de programación y
suelen ser errores de sintaxis.
Errores de ejecución: estos errores se producen por
instrucciones que la computadora puede comprender pero no
ejecutar.
Errores lógicos: se producen en la lógica del programa y a la
fuente del error suele ser el diseño del algoritmo.
Asociación de la verificación y
depuración

• Estos se asocian en lo que son los diagramas de flujo y los


pseudocódigos para saber si estos son correctos.
Semántica axiomática
Semántica axiomática
• es un enfoque basado en la lógica matemática para demostrar la
correctitud de un algoritmo. Está estrechamente relacionado con la
lógica de Hoare.

• La lógica de Hoare es un sistema formal desarrollado por C.A.R. Hoare —


que proporciona a una serie de reglas de inferencia para razonar sobre la
corrección de programas con la lógica matemática.

La semántica axiomática define el significado de un comando dentro de
un programa, mediante la descripción de su efecto el estado del
programa.

• Las semánticas axiomáticas no hacen distinción entre un significado de
una frase y las fórmulas lógicas que la describen, su significado es
exactamente lo que se puede probar de ella en alguna lógica.
• Se utiliza para demostrar la corrección de los programas,
para demostrar que un programa hace los que dice la
especificación. Cada sentencia del programa está
precedida y seguida por una expresión lógica que
especifica restricciones sobre el contenido de las
variables del programa, antes y después de la ejecución
de la sentencia.
Utilizaremos la Lógica de Predicados. Un predicado es
una relación entre objetos a la que siempre es posible
asignar uno de los valores del conjunto {Falso,Verdadero}
en función de los objetos involucrados.
Diseño Recursivo
Diseño De Algoritmos Recursivos
• Las definiciones recursivas pueden resultar
sorprendentes a primera vista. Incluso puede dar lugar a
funciones que nunca terminen (inútiles como algoritmos),
Sin embargo, usadas juiciosamente son un instrumento
potentísimo de diseño de algoritmos.
• En primer lugar, hay que identificar el proceso repetitivo
por realizar. En segundo lugar, hay que considerar que
una función recursiva solo es útil si su evaluación termina.
Clasificación
Según el número de llamadas
recursivas realizadas, se distinguen
tres clases:
Recursividad lineal

• El cuerpo de la función contiene una llamada recursiva.


Son las funciones recursivas. Son las funciones recursivas
más sencillas. Todas las funciones especificadas en este
capítulo son recursivas lineales.
• Un caso importante de recursividad lineal aparece cuando
la expresión más externa del caso recursivo de la función
es la misma llamada recursiva. Esta clase de recursividad
se llama recursividad de cola.
Recursividad no lineal.

• El cuerpo de la función contiene varias llamadas


recursivas. Lo más frecuente que contenga dos llamadas
recursivas, en cuyo caso se habla de recursividad binaria.
Recursividad mutua

• Es un caso curioso de recursión, una función no contienen


ninguna llamada recursiva, pero durante la evaluación de
su aplicación surgen llamadas recursivas. Aunque a
primera vista parezca imposible obtenérsete
comportamiento, la recursividad puede conseguirse
indirectamente si hay dos funciones que se llaman entre
si.
Otra clasificación basada en
el formato de los parámetros
de las llamadas recursivas
Recursividad estructural: Las sucesivas llamadas
recursivas sobre un dato se hacen siguiendo la
estructura recursiva del mismo. En el caso de los
elementos enteros, una recursión estructurar
significa que el valor se vaya decrementando en uno.
• Recursión bien fundada: Aunque hablando con
propiedad, cualquier recursividad está bien
fundada, suele utilizarse este término para aquellas
recursividades que no son estructurales. Un ejemplo
de función recursiva bien es invertir Entero, donde
el parámetro entero se divide entre diez.
• La primera clasificación dada es útil para decidir si es
conveniente usar una definición recursiva o iterativa en
los algoritmos imperativos.
• La segunda clasificación es útil para decidir el principio de
inducción necesaria para verificar el algoritmo.
Diseño De Algoritmos
Iterativos
Diseño de algoritmo iterativos

• Cada clase de bucle resulta útil en situaciones diferentes.


El bucle FOR se utiliza cuando se conoce el número de
iteraciones que se quiere realizar. El bucle WHILE es
usado en las otras situaciones en que no se conoce el
número de iteraciones. El bucle LOOP es útil cuando
puede haber varias condiciones de salida del bucle,
situadas en diferentes partes del cuerpo, o cuando la
condición de salida no está al comienzo del bucle.
• El diseño de un algoritmo iterativo se hace sobre una
base distinta de la de uno recursivo. En los algoritmos
imperativos se tiene disponible toda la información del
problema en las variables. Por esta razón, es útil partir
los datos del problema en dos:
• La parte que representa el problema aun no resuelto.
• La parte que representa el problema ya resuelto; es
decir, el resultado ya calculado.
Una vez que se han distinguido estas dos
partes, el bucle se construye a partir de tres
decisiones hechas sobre dicha partición:
• Fijar la situación inicial. El problema a resolver se encuentra
en los parámetros de entrada o de entrada/salida; si estos
datos quieren modificarse durante el algoritmo, deben
copiarse en variables auxiliares. También hay que dar un valor
inicial a las variables que representan la solución vacía.
• Formar el cuerpo del bucle. Para ello puede usarse un
razonamiento parecido al recursivo. Se supone, por
generalidad, que la iteración se encuentra en un estado
intermedio. Debe entonces determinarse que hacer en una
iteración para avanzar en la resolución del problema.
Bucle For

• bucle: FOR oh Para:Es una estructura iterativa que es controlada por una
variable (llamada variable índice o variable de control), la cual
seincrementa o decrementa hasta llegar a un valor límite o valor final que
representa la condición de parada. En el lenguajepseudoformal, la
condición de parada no es una expresión lógica sino un valor que indica el
final del ciclo.
Bucle While

• bucle:loop oh repetir: La estructura repetir ejecuta un bloque de instrucciones


hasta que se cumpla la condición de parada, es decir, hasta que lacondición sea
verdadera. Este bloque de instrucciones se realiza al menos una (1) vez, ya que
la condición se verifica alfinal, lo cual permite entrar al ciclo al menos una vez.
Bucle

• bucle while oh mientra:Es una estructura iterativa la cual ejecuta un conjunto de


instrucciones Mientras (expresión) se cumpla una condicióndeterminada, en el
momento en que la condición se convierte en falsa el ciclo termina. Dentro del
bloque de instruccionesse modifican términos de la expresión condicional, lo cual
permite controlar la duración de la iteración.
Bucle Do Loop

• Repite las instrucciones que haya


entre Do y Loop mientras la
condición sea cierta o hasta que la
condición resulte ser cierta.
Preguntas
 ¿Cual es el objetivo de la verificación de y la depuración de los programas.?
 ¿Que relación tiene estos con los pseudocódigos?
 ¿Qué es semántica axiomática?
 ¿Que es la lógica Hoare?
 ¿Que son los diseños de algoritmo recursivo?
 ¿Cual es la clasificación de los diseños recursivos?
 ¿De ejemplo de los tipos de diseños recursivos?
 ¿Habla sobre los algoritmos iterativos?
 ¿Qué es un Bucle?
 ¿Cuales son los tipos de Bucle y define los mas usados?

Vous aimerez peut-être aussi