QUE ES UN ALGORITMO? Conjunto ordenado y finito de operaciones que permite hallar la solución de un problema. Método y notación en las distintas fórmulas del cálculo. El algoritmo constituye un método para resolver un problema mediante una secuencia de pasos a seguir.
DISEÑO DE UN ALGORITMO Fases para el diseño de un algoritmo: -Algoritmo narrado -Algoritmo detallado - Diagrama de flujo o pseudocódigo Diseño de un algoritmo Algoritmo detallado Diagrama de flujo o pseudocódigo. Algoritmo narrado
EJEMPLO DE UN ALGORITMO NARRADO Ejemplo : Algoritmo para cambiar un foco fundido INICIO Situar escalera bajo el foco quemado. Elegir un foco de reemplazo (de la misma potencia que el anterior). Subir por la escalera hasta alcanzar el foco. Girar el foco contra las manecillas del reloj hasta que esté suelto. Ubicar el foco nuevo en el mismo lugar que el anterior. Enroscar en el sentido de las manecillas del reloj hasta que quede apretado. Bajar de la escalera. FIN
ALGORITMO DETALLADO ALGORITMO DETALLADO: Es un lenguaje mas limitado , con reglas de sintaxis y semánticas definidas , esto quiere decir que consiste en crear programas con instrucciones agrupadas en un estricto orden secuencial.
DIAGRAMA DE FLUJO - Es la representación gráfica del algoritmo o proceso. Se utiliza en disciplinas como programación, economía, procesos industriales y psicología cognitiva . SIMBOLO NOMBRE ACCION TERMINAL Representa el inicio o el fin del diagrama de flujo. ENTRADA Y SALIDA Representa los datos de entrada y salida. Decisión Representa las comparaciones de dos o mas valores , tiene dos salidas de información falso o verdadero. PROCESO Indica todas las acciones o cálculos que se ejecutaran con los datos de entrada u otros obtenidos . LINEAS DE FLUJO DE INFORMACIÓN Indican el sentido de la información obtenida y su uso posterior en algún proceso. CONECTOR Este símbolo permite identificar la continuación de la información si el diagrama es muy extenso.
EJEMPLO DE UN DIAGRAMA DE FLUJO Calcula el área de un triangulo en diagrama de flujo. Result=(BASE*ALTURA)/2 Escribir "Resultado = a Result. LEER BASE LEER ALTURA INICIO Fin En pseudocódigo. Inicio Result <-a*b/2 Introduce la base Leer a Introduce la altura Leer b “El área de un triangulo es”, R esult .
PSEUDOCÓDIGO E l pseudocódigo es una descripción informal de alto nivel de un algoritmo informático de programación, compacto e informal, que utiliza las convenciones estructurales de un lenguaje de programación. 1.- Ejemplo de pseudocódigo y en diagrama de flujo. Proceso Promedio Inicio Escribir "Ingrese la cantidad de datos:" Leer n acum <-0 Para i<-1 Hasta n Hacer Escribir "Ingrese el dato ",i,":" Leer dato acum <- acum+dato FinPara prom <- acum /n Escribir "El promedio es: ", prom FinProceso INICIO "Ingrese la cantidad de datos" N Acum <-0 FIN "Ingrese el dato ",i,; dato Acum<-acum+dato prom<-acum+dato "El promedio es ",prom
ESTRUCTURAS SECUENCIALES La estructura secuencial es aquella en la que una acción (instrucción) sigue a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente y así sucesivamente hasta el fin del proceso . En Pseudocódigo una Estructura Secuencial se representa de la siguiente forma: PSEUDOCODIGO :Nombre Variables. Nombre : Tipo de dato. Constantes Nombre = Valor INICIO acción accion1 accion2 acción N FIN INICIO accion 1 accion 2 accion N FINAL
EJEMPLO DE UNA ESTRUCTURA SECUENCIAL. Ejemplo 1: Escriba un algoritmo que pregunte por dos números y muestre como resultado la suma de estos. Use Pseudocódigo y diagrama de flujos. PSEUDOCÓDIGO SUMAR Variables: Num1,Num2,Suma : Entero INICIO Escribir ('introduzca dos números') leer (Num1, Num2) Suma=Num1 + Num2 escribir ('La suma es:' , Suma) FIN INICIO num1,num2,Suma:ENTERO "Diga dos numeros" Num1,Num2 Suma<- Num1+Num2 "La suma es ;", Suma FIN
ESTRUCTURAS DE DECISIÓN ESTRUCTURAS DE DECISIÓN: Estas permiten seleccionar la próxima sentencia a ejecutarse sobre la base de una decisión (expresión lógica o variable lógica). Los tipos de estructuras de decisión que podemos encontrar son: ● Simples ● Dobles ● Múltiples ESTRUCTURAS DE DECISION SIMPLE _SI: La estructura de selección simple permite ejecutar una acción o un grupo de acciones sólo si se cumple una determinada condición. Si la condición es verdadera se ejecuta la acción acciona ; en caso contrario, no se hace nada. Pseudocódigo (acción simple)SI( condición ) acciona Pseudocódigo (acción compuesta) SI( condición ){ acciona1 acciona2 . . . Accionan. Por ejemplo, si se desea cambiar el signo de un número únicamente en caso que sea negativo, podemos escribir: SI( numero < 0 ) numero = -1 * numero Condición No Proposición Si
SELECCIÓN DOBLE SI -SINO La estructura de selección doble permite seleccionar una ruta de dos rutas posibles en base a la verdad o falsedad de una condición. Si la condición es verdadera, se ejecuta la acción A; en caso contrario, se ejecuta la acción B . Pseudocódigo (acción simple)SI( condición ) acciona SINO accionb Pseudocódigo (acción compuesta)SI( condición ){ acciona1 acciona2 . . . accionan SINO{ accionb1 accionb2 . . . Accionbn . Por ejemplo : la siguiente estructura de selección doble determina si una persona es mayor o menor de edad: SI( edad >= 18 ) estado = "Mayor de edad" SINO estado = "Menor de edad" Si No A ccionb Condición Accion a
ESTRUCTURA DE DECISIÓN MÚLTIPLE SEGUN La estructura de selección múltiple SEGUN permite elegir una ruta de entre varias rutas posibles, en base al valor de una variable que actúa como selector . La estructura compara el valor del selector con las constantes c1, c2, ..., en orden descendente. En el momento en que se encuentre una coincidencia, se ejecuta la acción correspondiente a dicha constante y se abandona la estructura . Pseudocódigo SEGUN ( selector ){V CASO c1 : accion1 CASO c2 : accion2 CASO c3 : accion3 . . . CASO cn : accionn DEFECTO : acciondefecto Por ejemplo , la siguiente estructura de selección múltiple determina el nombre de la estación del año conociendo el número de la estación (1 para Primavera, 2 para Verano, 3 para Otoño y 4 para Invierno) : SEGUN ( numeroEstacion ) { CASO 1 : nombreEstacion = "Primavera" CASO 2 : nombreEstacion = "Verano" CASO 3 : nombreEstacion = "Otoño" DEFECTO : nombreEstacion = "Invierno" selector==c1 selector==c2 selector==cn acciondecto accion1 break accion2 break accion 3 break F F F V V V
ESTRUCTURAS DE REPETICIÓN Permiten la ejecución de una lista o secuencia de instrucciones (bloque de instrucciones) en varias ocasiones. El número de veces que el bloque de instrucciones se ejecutará se puede especificar de manera explícita, o a través de una condición lógica que indica cuándo se ejecuta de nuevo y cuándo no. A cada ejecución del bloque de instrucciones se le conoce como una iteración . Existen tres tipos principales de sentencias de repetición: - Ciclo mientras - Ciclo haga-mientras - Ciclo para
CICLO MIENTRAS El ciclo mientras permite ejecutar un bloque de instrucciones mientras que una expresión lógica dada se cumpla, es decir, mientras su evaluación dé como resultado verdadero. La expresión lógica se denomina condición y siempre se evalúa antes de ejecutar el bloque de instrucciones. Si la condición no se cumple, el bloque no se ejecuta. Si la condición se cumple, el bloque se ejecuta, después de lo cual la instrucción vuelve a empezar, es decir, la condición se vuelve a evaluar. En el caso en que la condición evalúe la primera vez como falsa, el bloque de instrucciones no será ejecutado, lo cual quiere decir que el número de repeticiones o iteraciones de este bloque será cero. Si la condición siempre evalúa a verdadero, la instrucción se ejecutará indefinidamente , es decir, un número infinito de veces . En Pseudocódigo: mientras <condición> hacer <bloque instrucciones> fin _mientras Donde , <condición> es la expresión lógica que se evalúa para determinar la ejecución o no del bloque de instrucciones, y <bloque instrucciones> es el conjunto de instrucciones que se ejecuta si la condición evalúa a Verdadero. CONDICION BLOQUE f v ENTRADA
EJEMPLO DE CICLO MIENTRAS EJEMPLO : Separa un numero entero en sus dígitos Proceso Dígitos Escribir "Ingrese un numero entero positivo:" Leer n // Primero, Contar Cuantos Dígitos cont <- 0 aux <- n Mientras aux >0 hacer // mientras no sea cero cont <- cont + 1 // contar cuantos dígitos aux <- trunc ( aux /10) // dividir por 10 y despreciar los de Fin Mientras Escribir "El numero tiene ", cont ," dígitos" // luego, mostrarlos uno por uno aux <-n Para i<-1 hasta cont Hacer pot <- 10^( cont -i) // por cuanto hay que dividir para obtener el primer digito digito <- trunc ( aux / pot ) // obtener el digito aux <- aux - digito* pot // quitar ese digito al numero Escribir "El digito ",i," es ",digito Fin Para Fin Proceso Proceso Digitos "Ingrese un numero entero positivo" n cont<-0 aux <- n aux>0 cont <- cont + 1 aux <- trunc(aux/10) "El numero tiene " , cont , "digitos" aux<-n pot<-10*(cont-i) digito<-trunc(aux/pot) aux<-aux-digito*pot "El digito",i,"es , digito Fin proceso
CICLO PARA El ciclo Para ejecuta un bloque de instrucciones un número determinado de veces. Este número de veces está controlado por una variable contadora (de tipo entero) que toma valores desde un límite inferior hasta un límite superior. En cada ciclo después de ejecutar el bloque de instrucciones, la variable contadora es incrementada en 1 automáticamente y en el momento en que la variable sobrepasa el límite superior, el ciclo termina. para variable valor_inicia l hasta valor_final [incremento valor_incremento ] hacer bloque_de_instrucciones fin_para En una instrucción repetitiva Para , siempre se utiliza una variable a la que se le debe asignar un valor_inicial . Inicio para contador 1 hasta 10 incremento 1 hacer Escribir (contador) fin_para Fin VarControl <- Val_inicial VarControl <=Val_final Sentencias VarControl<-VarControl+1 No SI
EJEMPLO DE CICLO PARA // Calcula el promedio de una lista de N datos Proceso Promedio: Escribir "Ingrese la cantidad de datos:" Leer n acum <-0 Para i<-1 Hasta n Hacer Escribir "Ingrese el dato ",i,":" Leer dato acum <- acum+dato FinPara prom <- acum /n Escribir "El promedio es: ", prom FinProceso Proceso Promedio " Ingrese la cantidad de datos ! n acum<-0 ingrese el dato , i dato acum<-acum+dato prom<-acum/n "El promedio es ",prom Fin proceso
BIBLIOGRAFIA Paginas Web: http:// es.wikipedia.org/wiki/Algoritmo Wikipedia Definiciones. http://www.cs.buap.mx/~andrex / pagina del profesor José Andrés vesques flores http:// informaticaingqmi.blogspot.mx/2010/11/estructuras-de-decision-simples-y.html blog de la Ing. María Piña. http:// www.fceqyn.unam.edu.ar/infoiq/temas/Algoritmia/Algoritmia/cap03.htm ejercicios propuestos por David Espinoza Sandoval