jueves, 4 de octubre de 2007

TALLER ALGORITMOS

Elabore un documento para entrega con el desarrollo de la siguiente temática:

1. presente la clasificación de los lenguajes de programación 2. Enuncie las etapas del ciclo de vida del software 3. Sobre la algoritmia responda: a. que es un algoritmo b. Que preguntas se deben responder para definir con precisión un problema c. Que condiciones debe cumplir un algoritmo? d. Cuales son los elementos de un algoritmo e. Cuales son los métodos de representación de algoritmos f. Cuales son las técnicas utilizadas g. enuncie algunos términos utilizados en diagramación

Realice diagramas de flujo para expresar la solución de los problemas que se presentan a Continuación.

Conceptos: Algoritmo - Secuencia - Símbolos - Variables (Nombres Nemotécnicos, Referencia dirección de memoria, Variables de ingreso (lectura) y de cálculo, Respetar nombres) - Constantes -Expresiones - Asignación de un resultado a una variable - Impresión de literales - Prueba de escritorio

1. Se ingresa por teclado el radio de una circunferencia, y se desea mostrar en pantalla el área y la longitud de la misma. 2. Se ingresa por teclado la base y la altura de un triángulo y se desea obtener como resultado su superficie. Mostrar en pantalla. 3. Se ingresa por teclado el tiempo de duración (en minutos) de un llamado telefónico, y se desea imprimir un ticket con el costo del mismo. El minuto cuesta $ 0,23. 4. Obtener las raíces de la ecuación cuadrática (a+ bx + c = 0). Los datos son: a, b, c. 5. Leer un número negativo y mostrarlo en pantalla, junto con su cuadrado y la cuarta parte del mismo.

1. Clasificación de los lenguajes de programación:

Lenguaje 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, Fue el primer lenguaje utilizado en la programación de Computadoras, pero dejó de utilizarse por su dificultad y complicación, que además reducen la posibilidad de cometer errores.

Lenguaje ensamblador

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.

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.

· También se clasifican por generaciones:

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.

LENGUAJES DE DESARROLLO DE LA WWW (WORD WIDE WEB)

Lenguaje de marcación de hipertexto (HTML). Se utiliza para crear documentos para la

Web. La estructura de una página Web utiliza atributos y etiquetas. Las etiquetas

Proporcionan vínculos a otra parte del documento o a otro documento. Permiten también insertar imágenes y otros elementos multimedia. En realidad, por la simplicidad del HTML no se lo considera un lenguaje de programación (no tiene sentencias de bifurcación). Otras herramientas de desarrollo para la Web son: Dreamweaver, Flash, Director, todos de la empresa Macromedia.

Lenguajes de secuencias de comandos

Existen distintos lenguajes de secuencia de comandos para la Web. Estos lenguajes tienen la capacidad de crear páginas Web dinámicas. Las páginas dinámicas pueden cambiar de acuerdo con la información que proporcionan al usuario. En los sitios de venta de productos, un lenguaje de secuencia de comandos lee una base de datos para desplegar los productos. Entre estas herramientas se encuentran:

- JavaScript:

- Páginas de Active Server (ASP):

ASP.NET.

- Preprocesador de hipertexto (PHP

2. Etapas de ciclo de software

· Análisis: Consiste en el estudio detallado del problema con el fin de obtener unas especificaciones para la solución del problema.

· Diseño del programa: Consiste en la realización de una solución o algoritmo del problema planteado. Esta solución se diseña utilizando seudocódigo o diagramas de flujo.

· Desarrollo: También conocido como codificación, se relaciona con la escritura y las pruebas del código fuente.

· Implementación: El software se instala y queda a disposición de los usuarios para la realización de todo tipo de pruebas.

· Mantenimiento. Esto incluye la corrección de errores menores que no fueron detectados en la etapa de implementación. Esta es la fase más larga del ciclo de vida de desarrollo de software y puede durar muchos años.

3. a). Un algoritmo es un conjunto ordenado y finito de operaciones que nos permiten encontrar solución a un problema.

b) ¿QUE ME DAN? ---- Entrada

¿COMO LO HAGO? ------ proceso

¿QUE ME PIDEN?-------- salida

c) Ser finito, es decir terminar siempre tras un número finito de pasos. Si el algoritmo

Nunca termina, no obtendremos ninguna solución.

Estar definido. Para ello debe estar compuesto por un conjunto ordenado de

Acciones, especificadas en cada caso rigurosamente y sin ambigüedad.

d) Elementos de un algoritmo:

1. Datos, tipos de datos y operaciones primitivas

2. Variables, constantes y expresiones


1. NUMERICO:

· ENTEROS: -48, 15, 0,4.

· REALES: En parte decimal o fraccionario.

· OPERADORES ARITMETICOS

+ , - , * , / , **, ¬ , DIV, MOD


CARÁCTER: Un solo carácter o cadena de caracteres (conjunto de caracteres). Se denotan entre ‘ o “. LOGICOS: Sus valores son verdaderos o falsos, se simboliza con los dígitos binarios 1 y 0, también ON y OFF en interruptores.

OPERADORES RELACIONALES = , < , >, <> , <= , >=

OPERADORES LÓGICOS Y, O y No


2. VARIABLES: Todo valor que cambie dentro de la ejecución de un programa.

CONSTANTES: Todo valor que permanece inalterable durante la ejecución del programa. EXPRESIONES: Una expresión es la combinación de variables y constantes a través de símbolos de operación denominados operadores.

e) Método informal: Un lenguaje natural.

Método formal: Un lenguaje de programación, lenguaje de maquina.

f) 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.

Seudocódigo: Es un lenguaje específico de descripción de algoritmos, intermedio

Entre el lenguaje natural y el lenguaje de programación. Podría decirse que se trata

De un lenguaje natural limitado y sin ambigüedad.

g) 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.

Iteración o loop:

Es un conjunto de instrucciones que se procesa repetidamente hasta que se cumpla la condición de salida.

Realizar diagramas de flujo:

1. AREA Y LONGITUD DE UNA CIRCUNFERENCIA



Terminador: inicio


· Terminador: finPantalla: “el área es” área    “La longitud es” longi

Área = * longi= *rad

QUE ME DAN: el radio

· Entrada manual: radCOMO LO HAGO: Área = *

Longitud= *rad

· QUE ME PIDEN: área y longitud















2. AREA DE UN TRIANGULO



Entrada manual: base


· QUE ME DAN: la base y la altura

· Entrada manual: altuCOMO LO HAGO:

· QUE ME PIDEN: área

3. EL COSTO DE UNA LLAMADA TELEFONICA



Terminador: Inicio


· QUE ME DAN: tiempo (minutos)

Costo por minuto $0.23

Entrada manual:    Tiemp

· COMO LO HAGO: tiemp*0.23

· QUE ME PIDEN: costo total de la llamada




4. Terminador: InicioOBTENER LAS RAÍCES DE LA ECUACIÓN CUADRÁTICA




· Datos:        aQUE ME DAN: los datos a, b, c

· Datos:       bDatos:       c

Pantalla: “la raíz 1 es”  rai1  “la raíz 2 es”  rai2Terminador:      FinCOMO LO HAGO:

· QUE ME PIDEN: las raíces de la ecuación

5. Terminador:    inicioCUADRADO Y CUARTA PARTE DE UN NUMERO




· Datos: Num negatQUE ME DAN: numero negativo (num negat)

· COMO LO HAGO:

=

=




· Terminador: finPantalla: “su cuadrado es” 〖num〗^2 “la cuarta parte es” cuart partQUE ME PIDEN: el cuadrado y la cuarta parte del numero




















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.