Está en la página 1de 3

Algoritmo:

Conjunto de instrucciones a realizar para obtener un resultado deseado en un


tiempo finito.

Estructura de Control:
Estructuras que permiten modificar el flujo de ejecucion de las instrucciones
de un programa.
Tipos:
Secuencia: Sucesion de operaciones en orden.
Iteracion: Se ejecuta un bloque de acciones 0, 1 o mas veces dependiendo la
evaluacion de la condicion.
Decision: Toma decisiones en funcion de datos del problema.

Dato:
Representacion de un objeto del mundo real mediante la cual podemos modelizar
aspectos del problema que se quiere resolver con un programa.
Puede ser variable o constante.

Estructura de Datos:
Es un conjunto de variables relacionadas entre si y que se puede operar como
un todo bajo un nombre unico.
Tipos:
Registro: Alocacion estatica, lineal, acceso directo, heterogenea.
Arreglo: Alocacion estatica, lineal, acceso directo, homogenea.
Lista: Alocacion dinamica, lineal, acceso secuencial, homogenea.
Arbol: Alocacion dinamica, no lineal, acceso secuencial, homogenea.

Dinamica: Cuando la cantidad de elementos varia durante la ejecucion.


Estatica: La cantidad es fija.

Homogenea: Los datos que la componen son del mismo tipo.


Heterogenea: Los datos pueden ser de distintos tipos.

Lineal: Esta formada por 0, 1 o mas elementos en posiciones contiguas donde a cada
elemento le sigue y le precede solamente 1.
No lineal: Para un elemento pueden existir 0, 1 o mas elementos que lo suceden y/o
preceden.

Acceso secuencial: Para acceder a un elemento debo respetar un orden.


Acceso directo: Puedo acceder a un elemento directamente.

Modularizacion:
Dividir el problema en partes funcionalmente independientes, que encapsulan
operaciones y datos.
Ventajas:
Mayor productividad, usabilidad, facilidad de mantenimiento, facilidad
de crecimiento, legibilidad.
No todo procedimiento puede ser transformado en funcion ya que las funciones solo
pueden devolver un valor.
Toda funcion puede ser transformada en procedimiento porque se puede reemplazar el
valor de retorno con un parametro por referencia.

Parametro por valor:


El modulo recibe un valor proveniente de otro modulo o del programa
principal.
Puede realizar operaciones y/o calculos pero no producira ningun cambio fuera
del modulo.
Parametro por referencia:
El modulo recibe el nombre de una variable conocida en otros modulos.
Puede operar con ella y su valor dentro del modulo y las modificaciones que
se produzcan se reflejan en el resto de modulos que usen la variable.

Correcion de programas:
El grado en que una aplicacion satisface las especificaciones y consigue los
objetivos encomendados por el cliente.
Un programa es correcto si se realiza de acuerdo a sus especificaciones.

Técnicas para corrección de programas:


Testing: Proveer evidencias convincentes que el programa hace el trabajo
esperado.
Diseñar un plan de pruebas:
Decidir cuales aspectos deben ser testeados y encontrar datos de
prueba para c/u.
Determinar el resultado que se espera que el programa produzca
para cada caso de prueba.
Poner atencion en los casos limite.
Diseñar casos de prueba sobre la base de lo que hace el programa.
Una vez que se tiene el plan de pruebas:
Se analizan los casos de prueba.
Si hay errores se corrigen.
Estos dos pasos se repiten hasta que no haya errores.
Debugging: Descubrir y reparar errores.
Los errores pueden provenir de dos fuentes:
El diseño del programa no es el adecuado.
El programa no está escrito correctamente.
Walkthrough: Recorrer un programa frente a una audiencia.
La lectura de un programa a alguna otra persona provee un buen medio
para detectar errores.
Verificación: Controlar que se cumplan las pre y post condiciones del mismo.

Una vez que se obtiene un algoritmo y se decide que es correcto, es importante


determinar la eficiencia del mismo.
Eficiencia de programas:
Se define como la metrica de calidad de los algoritmos, asociada con una
utilizacion optima de los recursos, principalmente el tiempo y memoria.
Estudia el tiempo que tarda un algoritmo en ejecutarse y la memoria que
requiere.
Un programa puede tener varias soluciones correctas, sin embargo el tiempo y
memoria de cada una pueden ser muy diferentes.
La eficiencia se relaciona con:
Datos de entrada (tamaño y cantidad).
Calidad del código generado por el compilador.
Naturaleza y rapidez en la ejecución de las instrucciones.
El tiempo del algoritmo base.
Eficiencia = Tiempo/Memoria.
Tiempo:
Puede calcularse de dos maneras:
Analisis Empirico: Es necesario realizar el programa y medir el tiempo
consumido.
Analisis Teorico: Se analizan algunas instrucciones del programa y se
estima un tiempo de ejecucion.
Tiempo = T(n) = ....
Se deben considerar las instrucciones elementales del algoritmo.
Una operación elemental utiliza un tiempo constante para su
ejecución, independientemente del tipo de dato con el que trabaje.
Se considera que cada operación elemental se ejecuta en una
unidad de tiempo.
Una operación elemental es una asignación, una comparación o una
operación aritmética simple.
Cada instruccion elemental tiene un tiempo constante 1.
Tiempo de ejecución del “peor” caso. En estos casos, se obtiene
una cota superior del tiempo de ejecución para cualquier entrada.

Tiempo de un If:
max(inst1,inst2).
Tiempo de un IfElse:
max(if,else).
Tiempo de un For:
N*max(inst1,inst2).
Tiempo de un While:
N*(comparacion + instrucciones)+1.

Memoria:
Char 1 byte.
Integer 4 bytes.
Real 8 bytes.
Boolean 1 byte.
String Cantidad de caracteres + 1.
Registro La suma de todo lo que ocupa c/campo.
Subrango 4 bytes.
Puntero 4 bytes.
Vector (dim. Fisica)*(tamaño de dato almacenado en bytes).

También podría gustarte