martes, 10 de febrero de 2009

guia de examen

concepto de algoritmo
computadora
compilador
interprete
dispositivos de almacenamiento
hardware
software
lenguaje maquina
lenguaje ensamblador
lenguaje de programacion
lenguaje c
elementos de diagrama de flujo
seudocodigo
variables y constantes
diagrama n-s

viernes, 6 de febrero de 2009

algoritmo hecho en clase

realizar un algoritmo que lea la edad en meses de una persona y determine si puede votar o no puede votar (imprime puede votar o no puede votar)

1.-inicio
2.-leer n
3.-calcular años=n*12
4.-si años<216 hacer paso 5 si no paso 7
5.-imprimir si puede votar
6.-saltar paso 7
7.-imprimir no puede votar
8.-fin

jueves, 5 de febrero de 2009

Métodos Formales de verificaciones de programas.

Aserciones7
Una parte importante de uan verificación formal es la documentación de un programa atraves de asertos o afirmaciones – sentencias logicas ciertas hacerca del programa que se declaran verdaderas-. Un aserto se escribe como un comentario y describe lo que se supone sea verdadero sobre las variables del programa en ese punto.

Precondiciones y poscondiciones
Las precondiciones y poscondiciones son afirmaciones sencillas sobre condiciones al principio y al final de los modulos.

Reglas para prueba de programas
Un medio util para probar que un programa p hace lo que realmente ha de hacer es proporcional aserciones que expresen las condiciones antes y después de que p sea ejecutado. En realidad las aserciones son como sentencias o declaraciones que pueden ser o bien verdaderas o bien falsas.

Invariantes de bucles
Una invariante de bucle es una condicion que es verdadera antes y después de la ejecución de un bucle. Las invariantes de bucle se utilizan para demostrar la conexión (exactitud) de algoritmos iterativos. Utilizando invariantes se pueden detectar errores antes de comenzar la codificacion y por esa razon reducir tiempo de depuración y prueba.

miércoles, 4 de febrero de 2009

Diagrama de Nassi-Schneiderman

El diagrama n-s de Nassi-Schneiderman -tambien conocido como diagrama de chapìn- es como un diagrama de flujo en el que se omiten las flechas de unión y las cajas son contiguas. Las acciones sucesivas se describen en cajas sucesivas y, como el los diagramas de flujo, se pueden escribir diferentes acciones en una caja.

Un algoritmo se representa con un rectángulo en el que cada banda es una acción a realizar:
Diagrama de flujo

Un diagrama de flujo es un diagrama que utiliza los símbolos (cajas) están demostrados en la tabla 2.1 y que tienen los pasos de algoritmos escritos en esas cajas unidas por flechas, denominadas líneas de flujo, que indican las secuencias en que se deben ejecutar.
Pseudocódigo

Pseudocodigos: se pueden definir como un lenguaje de especificaciones de algoritmos.

El pseudocodigo que resuelve el problema 2.1 es:

Previsiones de depreciciacion
Introducir coste
Vida útil
Valor final de rescate (recuperacion)
Imprimir cabeceras
Establecer el valor inicial del año
Calcular depreciación
Mientras valor año=< vida útil hacer
Calcular depreciación acumulada
Calcular valor actual
Imprimir una línea en la tabla
Incrementar el valor del año
Fin mientras

Las palabras reservadas básicas editan representadas en negritas
Representación Grafica de Algoritmos

Para presentar un algoritmo se debe utilizar algún método que permita independizar dicho algoritmo del lenguaje de programación elegido ello permitirá que un algoritmo pueda ser codificado indistintamente a cualquier lenguaje.

Los métodos usuales para presentar un algoritmo son:
1.- diagrama de flujo
2.- diagrama n-s (nasi-schneaiderman)
3.- lenguaje de especificación de algoritmo: pseudocodigo,
4.- lenguaje español, ingles….
5.- formulas.
Escritura de Algoritmos

En el algoritmo existen diferentes aspectos a considerar. Ciertas palabras reservadas se han escrito en negritas (mientras, si, no, etc.)Estas palabras describen las estructuras del control fundamentales y procesos de toma de decisión en el algoritmo estas incluyen los conceptos importantes de selección (expresadas por si-entonces-si_no, if-then-else) y de repetición (expresadas con mientras-hacer o a veces repetir-hasta e iterar-fin_iterar, en ingles, while-do y repeat-until) que se encuentran en casi todos los algoritmos, especialmente los de procesos de datos. La capacidad de decisión permite seleccionar alternativas de acciones a seguir o bien la repeticion una y ora vez de operaciones básicas.

Concepto y características del Algoritmo

ejemplo de algoritmo





Un algoritmo es un método para resolver un problema. Algoritmo proviene de mohammed al-khowarizmi la traducción al latín al apellido en la palabra algorizmus derivo posteriormente en algoritmo.
La resolución de un problema exige el diseño de un algoritmo que resuelva el problema propuesto.

Pasos para la resolución de un problema son:
1.- diseño del algoritmo, que describe la secuencia ordenada de pasos - sin ambigüedades- que conducen a la resolución de un problema dado (análisis del problema y desarrollo del algoritmo).
2.- expresar el algoritmo del lenguaje de programación adecuado. (Fase de codificación).
3.- ejecución y validación del programa por la computadora.
Características de los algoritmos

Las características fundamentales que deben cumplir todos los algoritmos son:
1.- un algoritmo debe ser preciso
2.- un algoritmo debe estar definido
3.- un algoritmo debe ser finito

Programación Estructurada

La programación estructurada significa escribir un programa deacuerdo a las siguientes reglas:

1.- el programa tiene un programa modular
2.- los módulos son diseñados de forma descendente
3.- cada modulo de codifica utilizando las tres estructuras de control básicas: secuencia, selección y repetición.

El termino programación estructurada aumenta considerablemente la productividad del programa reduciendo en elevado grado el tiempo requerido para escribir, verificar, depurar y mantener los programas.

La programación estructurada es una serie de técnicas que incorporan:
1.- recursos abstractos
2.- diseño descendente (top down)
3.- estructuras básicas

Programación Modular


Programación Modular

La programación modular es uno de los métodos de diseño más flexible y potente para mejorar la productividad de un programa. En programación modular el programa se divida en módulos (partes independientes), cada programa contiene un modulo denominado programa principal que controla todo lo que sucede; se transfiere el control a submodulos (posteriormente se denominaran subprogramas), el proceso sucesivo de subdivisión de módulos continúan hasta que cada modulo tenga solamente una tarea especifica que ejecutar esta tarea puede ser entrada, salida, manipulación de datos, control de otros módulos o alguna combinación de estos.
Documentación (solo para sistemas robustos)
La documentación de un problema consta de las descripciones de los pasos a dar en el proceso de resolución de dicho problema.
La documentación de un programa puede ser interna y externa.

La documentación interna es la contenida en líneas de comentarios.
La documentación externa incluye análisis, diagramas de flujo y/o pseudocodigos, manuales de usuario con instrucciones para ejecutar el programa y para interpretar los resultados.
Verificación y depuración de un programa

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.

1.- 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.
2.- errores de ejecución: estos errores se producen por instrucciones que la computadora puede comprender pero no ejecutar.
3.- errores lógicos: se producen en la lógica del programa y a la fuente del error suele ser el diseño del algoritmo.

Compilación y ejecución de un programa

Una vez que el algoritmo se ha convertido en un programa fuente, es preciso introducirlo en memoria mediante el teclado y almacenarlo posteriormente en un disco. El programa fuente debe ser traducido al lenguaje maquina, si tras la compilación se presentan errores es preciso volver a editar el programa, corregir los errores y compilar de nuevo hasta que no se producen errores obteniéndose el programa objeto se debe instruir al sistema operativo para que realice la FACE de montaje o enlace (link), carga, del programa objeto con las bibliotecas del programa del compilador. El proceso de montaje produce un programa ejecutable.
Codificación de un programa

Codificación es la escritura en un lenguaje de programación de la representación del algoritmo desarrollada en etapas precedentes.
Para realizar la conversión de algoritmo en programa se debe sustituir las palabras reservadas en español por sus homónimos en ingles, y las operaciones/instrucciones indicadas en lenguaje natural expresarlas en el lenguaje de programación correspondiente.

Herramientas de programación

div align="left"Las dos herramientas mas utilizadas comúnmente para diseñar algoritmos son: diagrama de flujo y pseudocodigos.

Diagrama de flujo: es una representación grafica de un algoritmo, los símbolos utilizados se muestran en la figura 2.2

Pseudocodigos: se pueden definir como un lenguaje de especificaciones de algoritmos.

El pseudocodigo que resuelve el problema 2.1 es:

Previsiones de depreciciacion
Introducir coste
Vida útil
Valor final de rescate (recuperacion)
Imprimir cabeceras
Establecer el valor inicial del año
Calcular depreciación
Mientras valor año=<>