El algoritmo constituye un mtodo para resolver un problema mediante una secuencia
de pasos a seguir. Dicha secuencia puede ser expresada en forma de diagrama de flujo con el fin de seguirlo de una forma ms sencilla. Un algoritmo debe tener al menos las siguientes caractersticas: Ser preciso: esto significa que las operaciones o pasos del algoritmo deben desarrollarse en un orden estricto, ya que el desarrollo de cada paso debe obedecer a un orden lgico. Ser definido: Ya que en el rea de programacin, el algoritmo se desarrolla como paso fundamental para desarrollar un programa, es necesario tener en cuenta que el computador solo desarrollar las tareas programadas y con los datos suministrados; es decir, no puede improvisar y tampoco se inventar o adivinar el dato que necesite para realizar un proceso. Por eso, el algoritmo debe estar plenamente definido; esto es, que cuantas veces se ejecute, el resultado depende estrictamente de los datos suministrados. Si se ejecuta con un mismo conjunto de datos de entrada, el resultado ser siempre el mismo. Ser finito: esta caracterstica implica que el nmero de pasos de un algoritmo, por grande y complicado que sea el problema que soluciona, debe ser limitado. Todo algoritmo, sin importar el nmero de pasos que incluya, debe llegar a un final. Para hacer evidente esta caracterstica, en la representacin de un algoritmo siempre se incluyen los pasos inicio y fin. Presentacin formal: para que el algoritmo sea entendido por cualquier persona interesada es necesario que se exprese en alguna de las formas comnmente aceptadas; pues, si se describe de cualquier forma puede no ser muy til ya que solo lo entender quien lo dise. Las formas de presentacin de algoritmos son: el pseudocdigo, diagrama de flujo y diagramas de Nassi/Schneiderman, entre otras. Correccin: el algoritmo debe ser correcto, es decir debe satisfacer la necesidad o solucionar el problema para el cual fue diseado. Para garantizar que el algoritmo logre el objetivo, es necesario ponerlo a prueba; a esto se le llama verificacin o prueba de escritorio. La prueba de escritorio es una herramienta til para entender que hace un determinado algoritmo, o para verificar que un algoritmo cumple con la especificacin sin necesidad de ejecutarlo.
Bsicamente, una prueba de escritorio es una ejecucin a mano del algoritmo, por lo tanto se debe llevar registro de los valores que va tomando cada una de las variables involucradas en el mismo.
A continuacin se muestra un ejemplo de prueba de escritorio del siguiente algoritmo: suma :entero entrada :entero menor :entero
leer entrada menor = entrada suma = 0 mientras (entrada != 0) haga si (entrada < menor) entonces menor =entrada fin_si suma = suma + entrada leer entrada fin_mientras escribir valor Menor: escribir menor escribir Suma: escribir suma
Valor Menor Escribir menor 7 Escribir Suma: Suma: Escribir suma 26
Eficiencia: hablar de eficiencia o complejidad de un algoritmo es evaluar los recursos de cmputo que requiere para almacenar datos y para ejecutar operaciones frente al beneficio que ofrece. En cuanto menos recursos requieren ser ms eficiente el algoritmo. 2) Formas de presentacin de algoritmo Pseudocdigo: Es una forma de diagramar o representar un algoritmo para resolver un determinado problema, independiente de cualquier lenguaje de programacin en especial. En ciencias de la computacin, y anlisis numrico el pseudocdigo es una descripcin informal de alto nivel de un algoritmo informtico de programacin, compacto e informal, que utiliza las convenciones estructurales de un lenguaje de programacin verdadero, pero que est diseado para la lectura humana en lugar de la lectura mediante mquina, y con independencia de cualquier otro lenguaje de programacin. Normalmente, el pseudocdigo omite detalles que no son esenciales para la comprensin humana del algoritmo, tales como declaraciones de variables, cdigo especfico del sistema y algunas subrutinas. En la actualidad y por lo general, el pseudocdigo, como su nombre lo indica, no obedece a las reglas de sintaxis de ningn idioma en particular ni es de forma estndar sistemtica, a pesar de que cualquier escritor en particular vaya a pedir prestado las estructuras de control general, la sintaxis y el estilo, por ejemplo, de algn lenguaje de programacin convencional. Pero en caso de que se quiera ejecutar, se debe llevar a forma tipo, para que no genere mensajes de error. Las fuentes populares incluyen la sintaxis de Pascal, BASIC, C, C++, Java, Lisp, y ALGOL. Por lo general, se omiten las declaraciones de variables. A veces, las llamadas a funciones, los bloques de cdigo y el cdigo contenido dentro de un loop se remplazan por una sentencia de una lnea en lenguaje natural. Dependiendo del escritor, el pseudocdigo puede variar mucho en su estilo, yendo desde en un extremo, una imitacin casi exacta de un lenguaje de programacin real, hasta al acercarse a una descripcin en prosa de formato de pseudocdigo en el otro extremo. Este es un ejemplo de pseudocdigo (para el juego matemtico bizz buzz): Pseudocdigo estilo Fortran: programa bizzbuzz hacer i = 1 hasta 100 establecer print_number a verdadero si i es divisible por 3 escribir "Bizz" establecer print_number a falso si i es divisible por 5 escribir "Buzz" establecer print_number a falso si print_number, escribir i escribir una nueva lnea fin del hacer Pseudocdigo estilo Pascal: procedimiento bizzbuzz para i := 1 hasta 100 hacer establecer print_number a verdadero; Si i es divisible por 3 entonces escribir "Bizz"; establecer print_number a falso; Si i es divisible por 5 entonces escribir "Buzz"; establecer print_number a falso; Si print_number, escribir i; escribir una nueva lna; fin Pseudocdigo estilo C: subproceso funcion bizzbuzz para (i <- 1; i<=100; i++) { establecer print_number a verdadero; Si i es divisible por 3 escribir "Bizz"; establecer print_number a falso; Si i es divisible por 5 escribir "Buzz"; establecer print_number a falso; Si print_number, escribir i; escribir una nueva lnea; }
Ejemplo: Dadas dos variables numricas A y B, que el usuario debe teclear, se pide realizar un algoritmo que intercambie los valores de ambas variables y muestre cunto valen al final las dos variables (recuerda la asignacin). Papel: 1 2 3 4 5 6 7 8 9 10 11 Var A, B, C: numerica Inicio Escribir "Introduce el valor de A" Leer A Escribir "Introduce el valor de B" Leer B C<-A A<-B B<-C Escribir "A vale " A " y B vale " B Fin
Diagrama de flujo: Es la esquematizacin grfica de un algoritmo, el cual muestra grficamente los pasos o procesos a seguir para alcanzar la solucin de un problema. Es la representacin de la solucin utilizando figuras geomtricas como circunferencias, flechas, rectngulos, rombos, etc.
Diagrama N-S (Nassi-Shneiderman): tambin conocido como diagrama de Chapin es una tcnica de especificacin de algoritmos que combina la descripcin textual, propia del seudocdigo, con la representacin grfica del diagrama de flujo. El diagrama N-S cuenta con un conjunto limitado de smbolos para representar los pasos del algoritmo, por ello se apoya en expresiones del lenguaje natural; sin embargo, dado que el lenguaje natural es muy extenso y se presta para la ambigedad, solo se utiliza un conjunto de palabras. Son: Inicio Fin Leer Escribir Mientras Repita Hasta Para Incrementar Decrementar Hacer Funcin Entero Real Caracter Cadena Lgico Retornar
Ejemplo:
Un maestro desea saber qu porcentaje de hombres y que porcentaje de mujeres hay en un grupo de estudiantes. Definicin del problema Calcular porcentaje de hombres y mujeres en un grupo Anlisis del problema Datos a tener en cuenta: Nmero hombres Nmero mujeres Total estudiantes Porcentaje hombres Porcentaje mujeres Datos de entrada: nmero hombres, nmero mujeres Datos salida: porcentaje hombres, porcentaje mujeres Procesos: tot estudiantes = nm. hombres + nm. Mujeres Porc.hombres = nm. Hombres / tot estudiantes*100 Porc.hombres = nm. mujeres / tot estudiantes*100 Diseo de la solucin Inicio Entero: numm, numh, totest Real: porch, porcm Leer numm, numh totest = numm + numh porcm = numm / totest * 100 porch = numh / totest * 100 Escribir "porcentaje mujeres:", porcm Escribir "porcentaje hombres:", porch Fin algoritmo
Decisin Doble:
Dados dos nmeros cul es mayor? y cul es menor? Definicin del problema Identificar el mayor y menor de dos nmeros Anlisis del problema Datos de entrada: num1, num2 Datos salida: mayor, menor Proceso: comparacin Diseo de la solucin
Decisin mltiple: Muchas decisiones deben tomarse, no solo entre dos alternativas, sino de un conjunto mayor. Estos casos bien pueden solucionarse utilizando condicionales dobles anidados; sin embargo, en favor de la claridad del algoritmo y la facilidad para el programador, es mejor utilizar una estructura de decisin mltiple, la cual es fcil de llevar a un lenguaje de programacin, ya que stos incluyen alguna instruccin con este fin. La decisin mltiple determina el valor de una variable y dependiendo de ste sigue un curso de accin. Es importante tener en cuenta que solo se verifica la condicin de igualdad entre la variable y la constante. En diagrama N-S la estructura de seleccin mltiple tiene la forma:
Ejemplo: Una distribuidora de motocicletas tiene una promocin de fin de ao que consiste en los siguiente. Las motos marca HONDA tienen un descuento del 5%, las de marca Yamaha del 8% y las Suzuki el 10%, las de otras marcas el 2%
Definicin del problema:
Calcular el valor del descuento y el valor a pagar por la motocicleta.
Anlisis del problema: Porcentaje descuento = 5% para motos Honda Porcentaje descuento = 8% para motos Yamaha Porcentaje descuento = 10% para motos Suzuki Porcentaje descuento = 2% para motos otras marcas Datos de entrada: marca, valor Datos de salida: descuento, valor a pagar Proceso: Descuento = valor * porcentaje Valor neto = valor - descuento Diseo de la solucin
3) Simbologa en el desarrollo de algoritmos en diagrama de flujos:
4) Definicin de programas
Un programa de computadora o simplemente un programa, es una secuencia de instrucciones, escritas para realizar una tarea especfica con una computadora.1 Este dispositivo requiere programas para funcionar, por lo general ejecutando las instrucciones del programa en un procesador central.2 El programa tiene un formato ejecutable que la computadora puede utilizar directamente para ejecutar las instrucciones. El mismo programa en su formato de cdigo fuente legible para humanos, del cual se derivan los programas ejecutables (por ejemplo, compilados), le permite a un programador estudiar y desarrollar sus algoritmos. Una coleccin de programas de computadora y datos relacionados se conoce como software.
5) Diferencia entre programa y algoritmo
El algoritmo es el procedimiento lgico elemental, necesario para lograr un objetivo, el programa es la serie de instrucciones necesarias para hacer que un dispositivo ciberntico ejecute ese procedimiento para, en consecuencia, lograr el objetivo en cuestin y uno es consecuencia del otro, es decir, primero se elabora el algoritmo para saber cmo lograr lo que se quiere hacer y despus se codifica el programa segn el dispositivo y el lenguaje que se usen.
Para las respuestas anteriores:
Algoritmo es una secuencia de acciones lgicas necesarias para lograr un objetivo cualquiera que sea, no especficamente matemtico, un programa en general es una serie de instrucciones en determinado lenguaje necesarias para que un ordenador cumpla con una tarea, mismas que en todo caso, son la traduccin de un algoritmo al lenguaje en cuestin.
El programa es siempre programa ya sea ejecutable o cdigo, estas son solo etapas en la elaboracin del mismo, es decir en ambos casos son la traduccin del algoritmo al lenguaje de la maquina, solo que cuando es el cdigo es en la forma que es entendible para las personas y el ejecutable es en lenguaje que entiende la maquina.
6) Mostrar un ejemplo de algoritmo en diagrama de flujo y mostrar el mismo en pseudocdigo
Una ONG tiene puntos de reparto de vacunas que se pretende funcionen de la siguiente manera. Cada da, empezar con 1000 vacunas disponibles y a travs de un programa que controla las entregas avisar si el inventario baja de 200 unidades. Desarrollar pseudocdigo y diagrama de flujo
Pseudocodigo:
1. Inicio [Control de Vacunas aprenderaprogramar.com] 2. Existencias = 1000 3. Mientras Existencias >= 200 Hacer Mostrar Introduzca el nmero de unidades entregadas Pedir Entregadas Existencias = Existencias Entregadas Repetir 4. Mostrar El inventario ha bajado de 200 unidades. Debe comunicarlo 5. Fin.