You are on page 1of 17

Lenguaje de Programacin 1

Algoritmos, Estructuras y Programas


Bibliografa: Estructura de Datos. Algoritmos, abstraccin y objetos. Aguilar y Martnez. McGraw Hill 1998. Captulos 1 y 2.

Diego Pinto dppintoroa@gmail.com

Tipos de Datos
Un Tipo de Dato es un conjunto de valores y operaciones asociadas
Proporcionados por los Lenguajes (C, C++, Pascal, etc) para clasificar diversas clases de datos. Ayudan en: Prevencin y deteccin de errores Comprensin y Organizacin de las ideas acerca de los datos Identificacin y descripcin de las propiedades nicas de ciertos datos.
Ej: 6+5+Aire: Error, se suman tipos disimiles.
23/09/2013 Lenguaje de Programacin 1 2

Tipos de datos Primitivos


Son los mas simples, ATOMICOS No se construyen desde otros. No son descomponibles Ej: Entero, flotante, real, carcter, lgico. Tipo Entero:
Valores: 4, 3, 2, 1, 0, 1, 2, 3, 4 Operaciones: *, +, , /, ++, .

Sus formas de representacin interna varan de Sistema a Sistema.


23/09/2013 Lenguaje de Programacin 1 3

Tipos Compuestos y Agregados


Los TIPOS COMPUESTOS se pueden descomponer en Sub-campos.
Ej: Nmero de Telfono: CodPais, CodArea, NumeroLocal.

Los TIPOS AGREGADOS son colecciones de datos del mismo tipo.


Tipos agregados bsicos: Arreglos, Cadenas y registros.

23/09/2013

Lenguaje de Programacin 1

La Necesidad de las Estructuras de Datos


Una Estructura de datos es una Organizacin o Agregacin de datos Compuestos y Atmicos
Se crean en tiempo de diseo Se pueden anidar entre ellas. Requieren espacio en memoria para almacenarlas

Objetivo: resolver problemas eficientemente.

Eficiente: resuelve el problema dentro de las restricciones de recursos. Costo: cantidad de recursos que la solucin consume.

23/09/2013

Lenguaje de Programacin 1

Seleccin de una Estructura


1. Anlisis de los Objetivos y Determinacin de las Restricciones. 2. Determinar las Operaciones Bsicas y sus restricciones 3. Seleccionar/Disear una estructura de datos. 4. Implementar la solucin.

23/09/2013

Lenguaje de Programacin 1

Abstraccin y TADs
El TAD es una Abstraccin de la Realidad. La Abstraccin es la supresin de detalles irrelevantes mientras se enfatiza los significativos.
Las ciencias de las computacin es la Ciencia de la Abstraccin

El TAD define el tipo de dato a utilizar y sus operaciones en trminos de Entrada/Salida.


Encapsula: oculta dentro de si los detalles de la Implementacin. Operaciones significativas para manejar los datos del TAD
C/operacin pueden ser una o mas funciones.

Ayuda a los programadores a realizar Software confiable y reutilizable.


Tipo Abstracto de Datos - TAD
23/09/2013 Lenguaje de Programacin 1 7

Partes de un TAD
Especificacin: Describe que hace el TAD, independiente de cmo lo hace.
Sintaxis: define los formatos de las operaciones y el tipo de resultados, su nombre, sus parmetros. Semntica: define para cada operacin cual es su posible salida.

Implementacin
Representacin: especifica como se almacena el TAD en memoria Algoritmo: especifican los pasos dentro de cada operacin del TAD
23/09/2013 Lenguaje de Programacin 1 8

Algoritmos y Programas
Algoritmo: conjunto de instrucciones ordenadas, que resuelven un problema especifico.
No son nicos, por lo que pueden tener diferente Eficiencia. Se los escribe en Seudo cdigo.
Es una representacin identada, en un idioma base. No puede ser ejecutado por una computadora.

Un buen algoritmo debe tener las propiedades de:


Exactitud y Correccin. Especificar claramente sus entradas y c/instruccin sin ambigedad. Etapas bien definidas y finitas. Descripcin de resultado o efecto. Fcil de entender, codificar y depurar. Eficiente uso del computador.

Programas: Es la representacin concreta de un Algoritmo (su traduccin) codificado en un lenguaje de programacin.


Debe ser Verificable y Eficiente
23/09/2013 Lenguaje de Programacin 1 9

Verificacin
Es la evaluacin de la solucin y su potencial uso como herramienta.
Un Algoritmo es Correcto: si se obtiene la respuesta para la cual fue creado.

Es una prueba Formal de la exactitud de los resultados obtenidos: Prueba de Escritorio


1. Comienza con la Hiptesis de que las Precondiciones se cumplen antes de empezar la ejecucin. 2. Termina con una PostCondicin o condiciones que deben cumplir la Salida.

23/09/2013

Lenguaje de Programacin 1

10

Eficiencia
La Eficiencia nos da el Anlisis de Algoritmos:
Dimensin Temporal: Medida del tiempo empleado. Dimensin Espacial: medida de los recursos invertidos.

Encontrar Algoritmos eficientes puede definir si Existe o no una Solucin al Problema. Al Anlisis de Algoritmos se centra en el estudio de los Bucles, del cual en ltima instancia, dependern las instrucciones a ser ejecutadas.
No se puede realizar un anlisis del nmero de Instrucciones pues son dependientes de las tecnologas (RISK, CISC).

Eficiencia = F(n)
siendo n la cantidad de elementos a ser procesados
23/09/2013 Lenguaje de Programacin 1 11

Eficiencia (Ordenes de Magnitud)


Bucles Lineales:
E = F(n)= n
i=0 Mientras i<n Cdigo i++ Fin M i=1 Mientras i<n Cdigo i*=2 Fin M

Bucles logartmicos: avance i*=a


E = F(n)= Log2 n E = F(n)= Loga n

Bucles Anidados: para y bucles de n iteraciones c/u


E = F(n)= n1*n2*..ny= ny

Recursividad: se invoca K veces a si mismo con un lote inicial n


E = F(n)= kn

23/09/2013

Lenguaje de Programacin 1

12

Medicin de la Eficiencia
Una buena estimacin de la Eficiencia debe ser independiente de aspectos de implementacin (la plataforma y el Lenguaje con que se codificar) pero debe reflejar sus diferencias. Usamos el Orden de Magnitud de la Eficiencia del Tiempo y de los Recursos. Se lo complementa con la Tasa de crecimiento del programa para evaluar su comportamiento a Futuro.
23/09/2013 Lenguaje de Programacin 1 13

Medicin de la Eficiencia
Cmo comparar la Eficiencia Real de 2 Algoritmos?
Programndolos, implementndolos y midiendo para el mismo Lote de Prueba: el tiempo de ejecucin y los recursos utilizados. Suele ser caro, y una vez realizado no suele ser sencillo volver atrs y corregir.

23/09/2013

Lenguaje de Programacin 1

14

Anlisis de Rendimiento
Mediante la complejidad en el Tiempo y en el Espacio
Complejidad en el Tiempo: cantidad de tiempo necesario para la ejecucin Complejidad en el Espacio: cantidad de memoria necesaria para la ejecucin

Tiempo de Ejecucin: depender del programa y de su entrada (carga de trabajo).


El tiempo medio suele ser mas realista. Para usarlo todos los tipos de entradas son equi-probables. El Tiempo Mximo depende de la Carga Mxima: y no siempre se puede establecer con claridad o es estadsticamente variable.
Lenguaje de Programacin 1

23/09/2013

15

Tiempo de Ejecucin
El tiempo total para una Funcin se puede determinar por el tiempo requerido para cada instruccin, multiplicadas por las veces que se ejecutan.
i=0 Mientras i<n
i++

t1 t2
t3

Fin M

t4

T(n)= t1+n*t2+n*t3+t4= n(t1+t2)+t3+t4 Eficiencia F(n)=n


23/09/2013 Lenguaje de Programacin 1 16

Complejidad espacial
Cantidad de memoria para alcanzar la solucin.
Depender del lenguaje elegido.

En el ejemplo las variables i, n variables positivas y enteras.


En lenguaje C, siendo Char, usa 1 bytes c/u
M=2bytes

En Lenguaje Pascal, usando Char o Integer, usar 2bytes cada Uno.


M=4bytes.

El Algoritmo implementado en Lenguaje C tiene menor complejidad Espacial.


23/09/2013 Lenguaje de Programacin 1

i=0 Mientras i<n Cdigo i++ Fin M


17

You might also like