ALGORITMOS (Repaso)

¿QUÉ ES ALGORITMO?
La palabra algoritmo se deriva de la traducción al latín de la palabra árabe alkhowarizmi, nombre de un matemático y astrónomo árabe que escribió un tratado sobre manipulación de números y ecuaciones en el siglo IX.
Un algoritmo es una serie de pasos organizados que describe el proceso que se debe seguir, para dar solución a un problema específico.

¿TIPOS DE ALGORITMOS…?

Existen dos tipos y son llamados así por su naturaleza:
• Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras.
• Cuantitativos: Son aquellos en los que se utilizan cálculos numéricos para definir los pasos del proceso.

Lenguajes Algorítmicos

Un Lenguaje algorítmico es una serie de símbolos y reglas que se utilizan para describir de manera explícita un proceso.

Tipos de Lenguajes Algorítmicos
• Gráficos: Es la representación gráfica de las operaciones que realiza un algoritmo (diagrama de flujo).


• No Gráficos: Representa en forma descriptiva las operaciones que debe realizar un algoritmo (pseudocodigo).

INICIO
Edad: Entero
ESCRIBA “cual es tu edad?”
Lea Edad
SI Edad >=18 entonces
ESCRIBA “Eres mayor de Edad”
FINSI
ESCRIBA “fin del algoritmo”
FIN
Características de los algoritmos

El científico de computación Donald Knuth ofreció una lista de cinco propiedades, que son ampliamente aceptadas como requisitos para un algoritmo:
Carácter finito. "Un algoritmo siempre debe terminar después de un número finito de pasos".
Precisión. "Cada paso de un algoritmo debe estar precisamente definido; las operaciones a llevar a cabo deben ser especificadas de manera rigurosa y no ambigua para cada caso".
Entrada. "Un algoritmo tiene cero o más entradas: cantidades que le son dadas antes de que el algoritmo comience, o dinámicamente mientras el algoritmo corre. Estas entradas son tomadas de conjuntos específicos de objetos".
Salida. "Un algoritmo tiene una o más salidas: cantidades que tienen una relación específica con las entradas".
Eficacia. "También se espera que un algoritmo sea eficaz, en el sentido de que todas las operaciones a realizar en un algoritmo deben ser suficientemente básicas como para que en principio puedan ser hechas de manera exacta y en un tiempo finito por un hombre usando lápiz y papel".
Knuth admite que, aunque su descripción pueda ser intuitivamente clara, carece de rigor formal, puesto que no está exactamente claro qué significa "precisamente definido", "de manera rigurosa y no ambigua", o "suficientemente básicas", y así sucesivamente

Las características de un buen algoritmo son:
Debe tener un punto particular de inicio.
Debe ser definido, no debe permitir dobles interpretaciones.
Debe ser general, es decir, soportar la mayoría de las variantes que se puedan presentar en la definición del problema.
Debe ser finito en tamaño y tiempo de ejecución.

ESTRUCTURAS DE CONTROL
Las estructuras de control determinan la secuencia en que deben ejecutarse las instrucciones de un algoritmo.
Existen tres Estructuras de control básicas ó primitivas y combinándolas se puede escribir cualquier algoritmo. Estas estructuras primitivas son: la secuencia, la bifurcación condicional y el ciclo.
Las estructuras de control de un lenguaje de programación se refieren a el orden en que las instrucciones de un algoritmo se ejecutarán. El orden de ejecución de las sentencias o instrucciones determinán el flujo de control.
Estas estructuras de control son por consiguiente fundamentales en los lenguajes de programación y en los diseños de algoritmos especialmente los pseudocódigos.
Las tres estructuras de control básico son:
• secuencia
• selección
• repetición
La programación estructurada hace los programas mas faciles de escribir, verificar, leer y mantener, útiliza un número limitado de estructuras de control que minimizan la complejidad de los problemas.
En mayo de 1996, Bôhm y Jacopin demostrarón que un programa propio puede ser escrito útilizando solamente tres tipos de estructuras de control: secuenciales, selectivas y repetitivas.
Por lo regular en un programa los enunciados son ejecutados uno después del otro, en el ordén en que aparecen escritos. Esto se conoce como ejecución secuencial. Sin embargo, existen enunciados que le permiten al programador especificar que el enunciado siguiente a ejecutar pueda ser otro diferente al que sigue en secuencia. Esto se conoce como transferencia de control.
Todos los programas pueden ser escritos en términos de solo tres estructuras de control, a saber, la estructura de secuencia, la estructura de selección y la estructura de repetición o bucle.
La estructura de selección Si..entonces (if)
Dado que las expresiones lógicas toman el valor verdadero y falso, se necesita una sentencia de control para la toma de decisiones, cuando se desea ejecutar una acción si una expresión es verdadera o falsa.
Para ello útilizaremos la sentencia de selección if (si), el enunciado en pseudocódigo es el siguiente:
si (exp. lógica simple o compuesta)
acciones a ejecutar
fin_si
Cuando la expresión lógica contenida por los parentesis es verdadera, se ejecutan las instrucciones dentro de la estructura de selección, cuando es falsa, el programa ignora la estructura y se sigue ejecutando la instrucción siguiente a la estructura de control.
La estructura de Selección si/sino (if/else)
La estructura de selección Si ejecuta una acción indicada solo cuando la condición es verdadera, de lo contrario la acción es pasada por alto. La estructura de selección si/sino (en algunos textos de programación puede aparecer como si/de_lo_contrario) permite que el programador especifique la ejecución de una acción distinta cuando la condición es falsa. Por ejemplo, el enunciado en seudocódigo:
Si (nota >= 60) entonces
escribir ("Aprobado")
sino (de lo contrario)
escribir ("No Aprobado")
fin_si
Imprime "Aprobado", si la calificación del alumno es mayor o igual a 60, e imprime "No aprobado" si la calificación es menor que 60. En cualquiera de los casos, después de haber impreso alguno de los mensajes, el programa ejecutará el enunciado siguiente al si.

Las computadoras están especialmente diseñadas para ejecutar tareas repetidamente. Las estructuras de control repetitivas son aquellas en las que una sentencia o grupos de sentencias se repiten muchas veces.
Una estructura de control que permite la repetición de una serie determinada de sentencias se denomina bucle (lazo o ciclo). El cuerpo del bucle contiene las sentencias que se repiten.
La acción o acciones que se repiten en un bucle se denomina el cuerpo del bucle, y cada repetición del cuerpo del bucle se denomina iteración.
Sentencia Mientras..hacer (while)
La estructura repetitiva mientras es aquella en la que el número de iteraciones no se conoce por anticipado y el cuerpo del bucle se repite mientras se cumple una determinada condición. Por esta razón a estos bucles se les denomina bucles condicionales.
La sintaxis es la siguiente:
Mientras (condicion) hacer
sentencias
fin_mientras
Cuando la sentencia mientras se ejecuta, el primer paso es la evaluación de la expresión lógica. Si se evalúa a falso, ninguna acción se realiza y el programa prosigue en la siguiente sentencia después del bucle. Si la expresión lógica se evalúa a verdadera, entonces se ejecuta las sentencias contenidas dentro del cuerpo del bucle y se evalúa de nuevo la expresión. Este proceso se repite mientras que la expresión lógica sea verdadera.
Después de cada iteración, la expresión lógica se evalúa y se verifica de nuevo, y si es verdadera, el bucle se repite de nuevo; si cambia de verdadera a falsa, la sentencia mientras finaliza y el programa prosigue en la siguiente sentencia del programa.
Calcular la suma de una lista de números enteros ingresados por el usuario.
Algoritmo Sumar
Variables
contador, num, sum, N: enteros
Inicio
Escribir ("Este programa suma numeros")
Escribir ("Cuantos numeros desea sumar")
Leer (N)
Escribir ("Ingrese los numeros:")
contador <-- data-blogger-escaped-0="" data-blogger-escaped-contador="" data-blogger-escaped-mientras="" data-blogger-escaped-suma="">