Sei sulla pagina 1di 35

CAPITULO II: HERRAMIENTAS DE DE PROGRAMACIN.

CAPITULO II: HERRAMIENTAS DE DE PROGRAMACIN. 2,1 Fases en la resolucin de problemas.


2,2 Programacin modular. 2,3 Programacin estructurada. 2,4 Concepto y caractersticas de los algoritmos. 2,5 Escritura de algoritmos. 2,6 Ejercicios.

Objetivo: Entender y disear de algoritmos.

FASES EN LA RESOLUCIN DE PROBLEMAS


Anlisis del problema. Diseo del algoritmo. Codificacin. Compilacin y ejecucin. Verificacin. Depuracin. Mantenimiento. Documentacin.

Anlisis del problema


Anlisis del Problema Resolucin de un Problema Diseo de un Algoritmo

Resolucin del problema con computadora

Para poder definir bien un problema es conveniente responder a las siguientes preguntas:
,Qu entradas se requieren? (tipo y cantidad). o Cul es la salida deseada? (tipo y cantidad). Qu mtodo produce la salida deseada?

Diseo del algoritmo


La resolucin de un problema complejo se realiza dividiendo el problema en subproblemas y a continuacin dividir estos subproblemas en otros de nivel ms bajo, hasta que pueda ser implementada una solucin en la computadora. Este mtodo se conoce tcnicamente como diseo escendente (top-down) o modular. El proceso de romper el problema en cada etapa y expresar cada paso en forma ms detallada se denomina refinamiento sucesivo. Cada subprograma es resuelto mediante un mdulo subprograma) que tiene un solo punto de entrada y un solo punto de salida.

El proceso implica la ejecucin de los siguientes pasos hasta que el programa se termina:
1. Programar un mdulo. 2. Comprobar el mdulo. 3. Si es necesario, depurar el mdulo. 4. Combinar el mdulo con los mdulos anteriores.

El proceso que convierte los resultados del anlisis del problema en un diseo modular con refinamientos sucesivos que permitan una posterior traduccin a un lenguaje se denomina diseo del algoritmo. El diseo del algoritmo es independiente del lenguaje de programacin en el que se vaya a codificar posteriormente.

Herramientas de programacin
Diagramas de flujo
Un diagrama de flujo (flowchart) es una representacin grfica de un algoritmo. Los smbolos utilizados han sido normalizados por el Instituto Norteamericano de Normalizacin (ANSI).

Pseudocdigo
El pseudocdigo es una herramienta de programacin en la que las instrucciones se escriben en palabras similares al ingls o espaol, que facilitan tanto la escritura como la lectura de programas. En esencia, el pseudocdigo se puede definir como un lenguaje de especificaciones de algoritmos.

Ejercicio. Se desea disear un algoritmo para saber si un nmero es primo o no. Un nmero es primo si slo puede dividirse por s mismo y por la unidad (es decir, no tiene ms divisores que l mismo y la unidad). Por ejemplo, 9,8,6,4, 12, 16,20, etc., no son primos, ya que son divisibles por nmeros distintos a ellos mismos y a la unidad. As, 9 es divisible por 3, 8 lo es por 2, etc. El algoritmo de resolucin del problema pasa por dividir sucesivamente el nmero por 2, 3,4 ..., etc.

1. Inicio. 2. Poner X igual a 2 (X = 2), X variable que representa a los divisores del nmero que se busca N). 3. Dividir N por X (N/X). 4. Si el resultado de N/X es entero, entonces N no es un nmero primo y bifurcar al punto 7; en caso contrario, continuar el proceso. 5. Suma 1 a X (X X + 1). Si X es igual a N, entonces N es un nmero primo; en caso contrario, bifurcar al punto 3. 7. Fin.

Por ejemplo, si N es 131, los pasos anteriores seran: 1. Inicio. 2. x = 2. 3. 131/X. Como el resultado no es entero, se contina el proceso. 5. X 2 + 1, luego X = 3. 6. Como X no es 131, se bifurca al punto 3. 3. 131/X resultado no es entero. 5. x 3 + 1, x = 4. 6. Como X no es 131 bifurca al punto 3. 3. 131/X ..., etc. 7. Fin.

Ejercicio
Se desea realizar el algoritmo que resuelva el siguiente problema: Clculo de los salarios mensuales de los empleados de una empresa, subiendo que stos se calculan en base a las horas semanales trabajadas y de acuerdo a un precio especificado por horas. Si se pasan de cuarenta horas semanales, las horas extraordinarias se pagarn a razn de 1.5 veces la hora ordinaria.

Ejercicios.
1.Desarrolle un algoritmo (pseudocdigo y flujograma)que permita leer dos valores distintos, determinar cual de los dos valores es el mayor y escribirlo. 2.Realizar un algoritmo que permita leer dos valores, determinar cual de los dos valores es el menor y escribirlo. 3. Realizar un algoritmo que sume dos nmeros.

Ejercicios:
1.- Desarrolle un algoritmo que permita leer tres valores y almacenarlos en las variables A, B y C respectivamente. El algoritmo debe imprimir cual es el mayor y cual es el menor. Constatar que los tres valores introducidos por el teclado sean valores distintos. Presente un mensaje de alerta en caso de que se detecte la introduccin de valores iguales. Preguntas: Es este algoritmo la solucin perfecta al ejercicio anterior? Razone su respuesta. b. De ser necesario qu cambios deber realizar?

4.- Desarrolle un algoritmo que permita leer tres valores y almacenarlos en las variables A, B, y C respectivamente. El algoritmo debe indicar cual es el menor. Asumiendo que los tres valores introducidos por el teclado son valores distintos. 5. Desarrolle un algoritmo que lea cuatro nmeros diferentes y a continuacin imprima el mayor de los cuatro nmeros introducidos y tambin el menor de ellos.

6.- Desarrolle un algoritmo que realice la sumatoria de los nmeros enteros comprendidos entre el 1 y el 10, es decir, 1 + 2 + 3 + . + 10. 7.- Desarrolle un algoritmo que realice la sumatoria de los nmeros enteros mltiplos de 5, comprendidos entre el 1 y el 100, es decir, 5 + 10 + 15 +. + 100. El programa deber imprimir los nmeros en cuestin y finalmente su sumatoria

8.- Determinar la hipotenusa de un tringulo rectngulo conocidas las longitudes de sus dos catetos. Desarrolle el algoritmo correspondiente. Qu falta en este algoritmo? Qu errores presenta? 9.- Desarrollar un algoritmo que calcule el rea de un cuadrado.

10. Desarrolle un algoritmo que permita determinar el rea y volumen de un cilindro dado su radio (R) y altura (H). 11. Realiza un algoritmo que le permita determinar el rea de un rectngulo. 12. Desarrolle un algoritmo que permita leer un valor cualquiera N y escriba si dicho nmero es par o impar. Complete el algoritmo con la instruccin o instrucciones necesarias.

Ejercicios
Disear un algoritmo que lea el valor correspondiente a una distancia en millas marinas y las escriba expresadas en metros. Sabiendo que 1 milla marina equivale a 1852 metros. Disear un algoritmo que escriba el porcentaje descontado en una compra, introduciendo por teclado el precio de la tarifa y el precio pagado.

Desarrolle un algoritmo que permita leer dos nmeros y ordenarlos de menor a mayor, si es el caso. Desarrolle un algoritmo que permita calcular Promedio de Notas; finaliza cuando N = 0. Desarrolle un algoritmo que permita determinar a partir de un nmero de das, ingresado por pantalla, Cuntos aos, meses, semanas y das; constituyen el nmero de das proporcionado utilizando la estructura Mientras o While.

Desarrolle un algoritmo que permita convertir calificaciones numricas, segn la siguiente tabla: A = 19 y 20, B =16, 17 y 18, C = 13, 14 y 15, D = 10, 11 y 12, E = 1 hasta el 9. Se asume que la nota est comprendida entre 1 y 20.

Cofidicacin
Codificacin es la escritura en un lenguaje de programacin de la representacin del algoritmo desarrollada en las etapas precedentes. Dado que el diseo de un algoritmo es independiente del lenguaje de programacin utilizado para su implementacin, el cdigo puede ser escrito con igual facilidad en un lenguaje o en otro.

EJemplo:
#include <stdio.h> Int x, y, suma; Void main () { printf (Ingrese x); scanf(leer x, %d, &x); printf (Ingrese y); scanf(leer y, %d, &y); suma(x+y); printf( La suma es %d,%suma)}

Compilacin y ejecucin de un programa


El programa fuente debe ser traducido a lenguaje mquina, este proceso se realiza con el compilador y el sistema operativo que se encarga prcticamente de la compilacin. Si tras la compilacin se presentan errores (errores de compilacin) en el programa fuente, es preciso volver a editar el programa, corregir los errores y compilar de nuevo.

Verificacin y depuracin de un programa


La verificacin o compilacin de un programa es el proceso de ejecucin del programa con una amplia variedad de datos de entrada, llamados datos de test o prueba, que determinarn si el programa tiene errores en (<<bug>>). La depuracin es el proceso de encontrar los errores del programa y corregir o eliminar dichos errores.

Cuando se ejecuta un programa, se pueden producir tres tipos de errores:


1. Errores de compilacin. Se producen normalmente por un uso incorrecto de las reglas del lenguaje de programacin y suelen ser errores de sintaxis. Si existe un error de sintaxis. 2. Errores de ejecucin. Se producen por instrucciones que la computadora puede comprender pero no ejecutar. Ejemplos tpicos son: divisin por cero y races cuadradas de nmeros negativos. En estos casos se detiene la ejecucin del programa y se imprime un mensaje de error. 3. Errores lgicos. Se producen en la lgica del programa y la fuente del error suele ser el diseo del algoritmo. Estos errores son los ms difciles de detectar, ya que el programa puede funcionar y no producir errores de compilacin ni de ejecucin, y slo puede advertir el error por la obtencin de

resultados incorrectos

Documentacin y mantenimiento
La importancia de la documentacin debe ser destacada por su decisiva influencia en el producto final. Programas pobremente documentados son difciles de leer, ms difciles de depurar y casi imposibles de mantener y modificar. La documentacin de un programa puede ser interna y externa. La documentacin interna es la contenida en lneas de comentarios. La documentacin externa incluye anlisis, diagramas de flujo y/o pseudocdigos, manuales de usuario con instrucciones para ejecutar el programa y para interpretar los resultados.

PROGRAMACIN MODULAR
La programacin modular es uno de los mtodos de diseo ms flexible y potentes para mejorar la productividad de un programa. En programacin modular el programa se divide en mdulos (partes independientes), cada una de las cuales ejecuta una nica actividad o tarea y se codifican independientemente de otros mdulos. Cada uno de estos mdulos se analizan, codifican y ponen a punto por separado.

PROGRAMACIN ESTRUCTURADA
El trmino programacin estructurada se refiere a un conjunto de tcnicas que han ido evolucionando desde los primeros trabajos de Edgar Dijkstra. Estas tcnicas aumentan considerablemente la productividad del programa reduciendo en elevado grado el tiempo requerido para escribir, verificar, depurar y mantener los programas. La programacin estructurada utiliza un nmero limitado de estructuras de control que minimizan la complejidad de los programas y, por consiguiente, reducen los errores; hace los programas ms fciles de escribir, verificar, leer y mantener. Los programas deben estar dotados de una estructura.

La programacin estructurada es el conjunto de tcnicas que incorporan:

recursos abstractos, diseo descendente (topdown), estructuras bsicas.

Recursos abstractos
La programacin estructurada se auxilia de los recursos abstractos en lugar de los recursos concretos de que dispone un determinado lenguaje de programacin. Descomponer un programa en trminos de recursos abstractos -segn Dijkstra- consiste en descomponer una determinada accin compleja en trminos de un nmero de acciones ms simples capaces de ejecutarlas o que constituyan instrucciones de computadoras disponibles.

Diseo descendente (topdown)


El diseo descendente (top-down) es el proceso mediante el cual un problema se descompone en una serie de niveles o pasos sucesivos de refinamiento (stepwise). La metodologa descendente consiste en efectuar una relacin entre las sucesivas etapas de estructuracin de modo que se relacionasen unas con otras mediante entradas y salidas de informacin. Es decir, se descompone el problema en etapas o estructuras jerrquicas, de forma que se puede considerar cada estructura desde dos puntos de vista: qu hace? y cmo lo hace?

Estructuras de control
Las estructuras de control de un lenguaje de programacin son mtodos de especificar el orden en que las instrucciones de un algoritmo se ejecutarn. El orden de ejecucin de las sentencias (lenguaje) o instrucciones determinan el .flujo de control. Estas estructuras de control son, por consiguiente, fundamentales en los lenguajes de programacin y en los diseos de algoritmos especialmente los pseudocdigos. Las tres estructuras de control bsico son:
a secuencia a seleccin a repeticin

Potrebbero piacerti anche