Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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?
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)}
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.
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.
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