jueves, 13 de septiembre de 2007

informe sobre la guia "FUNDAMENTOS DE ALGORITMOS''

MÉTODOS DE REPRESENTACIÓN DE ALGORITMOS

· Método informal, ejemplo, el lenguaje natural. De esta forma Describiríamos un algoritmo como si contáramos a otra persona los pasos que debe Seguir para resolver un problema dado. La ventaja es que el lenguaje natural es Entendido por todos, la desventaja es que esta descripción puede no ser tan precisa.

· Método formal: La solución de un problema, dirigida a su ejecución por parte de una Computadora, requiere el uso de una notación que sea entendida por ella, es decir, un lenguaje de programación. Pero durante la fase de diseño del algoritmo, la Utilización de un lenguaje así no es aconsejable debido a su rigidez Las técnicas son:

1. Diagrama de flujo u organigrama: Es un método de representación gráfica que Utiliza un conjunto de símbolos, de forma que cada paso del algoritmo se visualiza dentro del símbolo adecuado y el orden en que se realizan los pasos se representa por medio de flechas que indican el flujo lógico del algoritmo.

Un diagrama de flujo es la representación gráfica de las instrucciones que debe llevar a cabo una computadora para resolver un problema concreto y el orden en que deben realizarse. Los símbolos utilizados han sido normalizados por el Instituto Norteamericano de Normalización (ANSI)

2. Seudocódigo: Es un lenguaje específico de descripción de algoritmos, intermedio entre el lenguaje natural y el lenguaje de programación. su uso hace que el paso de un algoritmo a un programa sea relativamente fácil. podría decirse que se trata de un lenguaje natural limitado y sin ambigüedad. Diremos que una notación es un seudocódigo si mediante ella podemos describir la

solución de un problema en forma de algoritmo dirigido a la computadora, utilizando

palabras y frases del lenguaje natural sujetas a unas determinadas reglas.

Todo seudocódigo debe posibilitar la descripción de:

· Instrucciones de entrada/salida.

· Instrucciones de proceso.

· Sentencias de control del flujo de ejecución.

· Acciones compuestas, que hay que refinar posteriormente.

Así mismo, tendrá la posibilidad de describir datos, tipos de datos, variables, expresiones, archivos y cualquier otro objeto que sea manipulado por el programa.

Ejemplo de seudocódigo en el cual se evalúa el valor de una variable que representa la nota obtenida en un examen, si es menor que 6 escribe Insuficiente , de lo contrario, escribe

Aprobado.

SI nota <>

ENTONCES escribir "INSUFICIENTE"

SINO escribir "APROBADO"

FINSI

TÉRMINOS UTILIZADOS EN DIAGRAMACIÓN

· Acumulador:

Un acumulador es una variable, definida por el programador, que hace referencia a una dirección de memoria que almacenará un "total móvil" de valores individuales según van estando disponibles durante el proceso. Esta dirección o posición de memoria debe ser inicializada en cero.

· Contador:

Es una variable que se incrementa en un valor constante y se utiliza para registrar el

número de veces que se presenta un evento. Ejemplo: para contar los alumnos procesados, se incrementa en 1 por cada lectura de datos de alumnos.

· Iteración o loop:

Es un conjunto de instrucciones que se procesa repetidamente hasta que se cumpla la

condición de salida. En el ejemplo, las instrucciones de contar alumnos y acumular notas se realizan tantas veces como alumnos se procesen.

Ventajas de los diagramas:

1) Rápida comprensión de las relaciones.

2) Análisis efectivo: Puede dividirse en secciones detalladas para su estudio.

3) Comunicación: es más visual, "una imagen dice más que mil palabras".

4) Documentación.

5) Codificación eficiente.

Limitaciones:

1) Los diagramas complejos y detallados pueden ser muy laboriosos de realizar y de

consultar.

2) No existen normas que indiquen el nivel de detalles que deben incluirse en un diagrama.

Codificación de programas

El término código se refiere a las declaraciones escritas en cualquier lenguaje de

programación, por ejemplo, en Java, Visual Basic ó Pascal. Las computadoras operan en binario, por lo tanto, las instrucciones de un programa también estarán en binario. El lenguaje de programación se utiliza para escribir las instrucciones a la computadora que luego serán traducidas al código de máquina.

Metodologías de Programación

Cuando un programador escribe un programa primero realiza un diseño de la solución,

mediante un diagrama de flujo o un seudocódigo. Luego debe escribir las instrucciones en un lenguaje de programación, para ello puede seguir algunas de las metodologías más comunes, como son la “programación estructurada” o la “programación orientada a objetos”. Existen otros métodos o “paradigmas”, pero estos dos son los más utilizados:

1. Programación estructurada

Esta metodología de programación surgió en los años 70. El nombre se refiere a la práctica de crear programas utilizando módulos pequeños que son fáciles de leer y entender. Las prácticas de la programación estructurada se pueden utilizar con cualquier lenguaje de programación.

Existen tres estructuras de control:

- Estructura secuencial:

Define el flujo de control predeterminado de un programa. Ejecuta líneas de código en el orden en que fueron escritas.

- Estructuras de selección:

Utilizan construcciones de un flujo de programa especial llamadas declaraciones condicionales. Una declaración condicional es una prueba que determinará lo que hará a continuación el programa. Cuando el programa toma una decisión utilizando una declaración condicional, el flujo del programa frecuentemente se dirige en una de dos direcciones distintas.

- Estructuras de repetición estructuras de ciclo):

Están basadas en construcciones llamadas bucles. Un bucle es un fragmento de código que se repite una y otra vez hasta que se cumpla la condición de salida del bucle.

2. Programación orientada a objetos

Los conceptos de la programación orientada a objetos, como por ejemplo, objetos y clases, pueden parecer abstractos al principio, sin embargo muchos programadores afirman que la orientación a objetos es una forma natural de pensar. Debido a que la POO ofrece una manera intuitiva de modelar el mundo, las ventajas se traducen en programas más sencillos, una programación más rápida y reducción de las tareas de mantenimiento.

LENGUAJES DE PROGRAMACION

Un lenguaje de programación es una notación para escribir programas, permiten la

comunicación con el hardware y dar así las órdenes adecuadas para la realización de un determinado proceso. Un lenguaje está definido por una gramática o conjunto de reglas que se aplican a un alfabeto constituido por el conjunto de símbolos utilizados.

La mayoría de los lenguajes de programación comparten una característica:

cada lenguaje de programación requiere que el programador siga un conjunto de reglas muy estrictas. En general, los lenguajes de programación requieren que los desarrolladores:

· Proporcionen información en un orden y estructura específicos

· Utilicen símbolos especiales

· Utilicen puntuaciones (en algunos casos)

Estas reglas se conocen como la sintaxis del lenguaje de programación y pueden variar de un lenguaje a otro.

· Ejemplo de código en el lenguaje C:

If (d > 15)

{

Do

{

d--;

} while (d > 1);

}

CLASIFICACIÓN DE LOS LENGUAJES DE PROGRAMACIÓN

Los lenguajes de programación se agrupan normalmente de acuerdo a su historia evolutiva, en tres categorías o niveles.

Lenguaje de bajo nivel o de máquina

El lenguaje máquina es el único que entiende directamente la computadora. Utiliza el

alfabeto binario, que consta de los dos únicos símbolos 0 y 1, denominados bits .Fue el primer lenguaje utilizado en la programación de computadoras, pero dejó de utilizarse por su dificultad y complicación, siendo sustituido por otros lenguajes más fáciles de aprender y utilizar, que además reducen la posibilidad de cometer errores.

Ejemplo:

Instrucciones en lenguaje máquina y sus equivalentes en sistema hexadecimal.

0000 0001 1010 0001 01 Al

1000 1001 1001 1010 89 9A

0011 1010 1001 1100 3A 9C

Lenguaje intermedio o ensamblador

El lenguaje ensamblador es el primer intento de sustituir el lenguaje máquina por otro más fácil de usar por las personas. En este lenguaje cada instrucción equivale a una instrucción en lenguaje máquina, utilizando para su escritura palabras mnemotécnicas en lugar de cadenas de bits.

Ejemplo:

Este lenguaje presenta la mayoría de los inconvenientes del lenguaje máquina:

INICIO: ADD B, 1

MOV A, B

CMP A, E

JE FIN

JMP INICIO

FIN: END

· Cada modelo de computadora tiene un lenguaje ensamblador propio diferente de los demás, por lo cual un programa sólo puede utilizarse en la máquina para la que se programó.

· El programador tiene que conocer perfectamente el hardware del equipo, ya que maneja directamente las posiciones de memoria, registros del procesador y demás elementos físicos.

· Todas las instrucciones son elementales, es decir, en el programa se deben describir con el máximo detalle todas las operaciones que se han de efectuar en la máquina para la realización de cualquier proceso.

· Por otro lado, tanto el lenguaje máquina como el ensamblador tienen la ventaja de mínima ocupación de memoria y mínimo tiempo de ejecución en comparación con el resultado de la compilación del programa equivalente escrito en otros lenguajes.

Lenguajes de alto nivel

Los lenguajes de alto nivel, también denominados lenguajes evolucionados, fueron

diseñados para que la programación sea más sencilla. Se llaman de alto nivel porque la

sintaxis requerida es más parecida al idioma humano que al de la máquina. Además,

persiguen otros objetivos, entre otros:

1. Lograr independencia de la máquina, pudiendo utilizar un mismo programa en diferentes equipos con la única condición de disponer de un programa traductor o compilador que permita obtener el programa ejecutable en lenguaje binario de la máquina que se trate.

2. Aproximarse al lenguaje natural, para que el programa se pueda escribir y leer de una forma más sencilla.

3. Incluir rutinas de uso frecuente, como las de entrada/salida, funciones matemáticas,

manejo de tablas, etc., que figuran en una especie de librería del lenguaje, de manera

que se puedan utilizar siempre que se quiera sin necesidad de programarlas cada vez.


GENERACIONES DE LENGUAJES DE PROGRAMACIÓN

Los lenguajes de programación son discutidos con frecuencia, en término de generaciones.

Las últimas generaciones incluyen lenguajes que son más fáciles de usar y más poderosos.

Atendiendo a esta clasificación, los lenguajes de máquina o de bajo nivel, corresponden a la primera generación y los ensambladores a la segunda generación. Los lenguajes de alto nivel comenzaron con la tercera generación:

Lenguajes de tercera generación (3GL):

Los lenguajes de tercera generación hacen que sea más fácil escribir programas y permiten que los programadores compartan el desarrollo.

Algunos lenguajes de tercera generación y sus características son:

C, C++, Java, ActiveX:

Lenguajes de cuarta generación (4GL):

Los lenguajes de cuarta generación son más fáciles de usar que los de tercera generación.

Puede presentarse como entorno de texto o entorno visual. En un entorno de texto, el programador utiliza palabras del idioma inglés para generar el código, normalmente una sola declaración de un lenguaje 4GL puede realizar las mismas tareas que varias líneas de un lenguaje 3GL.

4GL, permiten que el programador trabaje en un entorno de desarrollo integrado o IDE (por sus siglas en inglés). Los IDE ofrecen todas las herramientas necesarias para desarrollar aplicaciones. Visual Studio de Microsoft y Java Studio de Sun, son dos IDE profesionales.

Entre los lenguajes de cuarta generación se incluyen:

- .NET, Entornos de autoría.

Lenguajes de quinta generación:

Los expertos no están de acuerdo en la definición de esta generación, algunos consideran que los entornos de autoría más avanzados caerían en esta categoría. Otros consideran que un 5GL debería utilizar técnicas de inteligencia artificial.

PARADIGMAS DE PROGRAMACIÓN

Un paradigma de programación es una colección de modelos conceptuales que modelan el proceso de diseño y determinan la estructura de un programa.

Esa estructura conceptual de modelos está pensada de forma que esos modelos determinan la forma correcta de los programas y controlan el modo en que se formulan las soluciones.

Cuando un lenguaje refleja bien un paradigma particular, se dice que soporta el paradigma.

Tipos de paradigmas

Se agrupan en tres categorías de acuerdo con la solución que aportan para resolver el

problema:

1. Lenguajes imperativos o procedurales: Utilizan instrucciones como unidad de

trabajo de los programas (COBOL, PASCAL, C, ADA). La mayoría de los lenguajes son

de este tipo.

2. Lenguajes funcionales o lógicos: Basados en la definición de funciones o

relaciones. LISP, PROLOG.

3. Lenguajes orientados a objetos. Los programas se descomponen en objetos que

implementan parte del sistema encapsulando los datos que almacenan su estado junto

con los métodos que se utilizan para acceder a ellos.(Lenguajes SMALLTALK, C++, Java).

GLOSARIO

· Mnemotécnicas: métodos para fijar los conocimientos en la memoria.





informe clase 7 de septiembre

INFORME CLASE DEL 7 DE SEPTIEMBRE

RESOLUCION A PROBLEMAS

Para dar solución a un problema debemos tener en cuenta:

· ANALISIS

· DISEÑO DEL ALGORITMO

· CODIFICACIÓN

· EJECUCIÓN – EVALUACION

ALGORITMO

Es un conjunto ordenado y finito de operaciones que nos permite encontrar solución a un problema.

Los algoritmos reciben una entrada y la transforman en una salida “EFECTO CAJA NEGRA”. Para ser un algoritmo debe ser DEFINIDO, FINITO, Y EFICIENTE. Por eficiente se entiende que las instrucciones encuentran la solución en el mejor tiempo posible; y finito implica que tiene un determinado número de pasos, es decir, que termina. Y definido, que si sigue proceso más de una vez se llega al mismo resultado.

Ej: Algoritmo de una torta

Pasos

1. Libro de recetas

2. Conocer la lista de ingredientes

3. .

4. .

Respuesta algoritmo

ANALISIS

Que me piden Salidas

Como lo hago Proceso

Que me dan Entradas

VERIFICAR Datos de entrada Datos procesos (atom)

Ej Necesitamos un programa que nos permita calcular el valor de un préstamo. (Costo)

Que me piden el costo del préstamo

Como lo hago el valor y la tasa de interés

Que me dan valor multiplicarlo con la tasa de interés.