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
Algoritmo narrado
Diseño de un algoritmo
Algoritmo detallado
Diagrama de flujo o pseudocódigo.
EJEMPLO DE UN ALGORITMO NARRADO • Ejemplo: Algoritmo para cambiar un foco fundido INICIO 1.Situar escalera bajo el foco quemado. 2.Elegir un foco de reemplazo (de la misma potencia que el anterior). 3.Subir por la escalera hasta alcanzar el foco. 4.Girar el foco contra las manecillas del reloj hasta que estÊ suelto. 5.Ubicar el foco nuevo en el mismo lugar que el anterior. 6.Enroscar en el sentido de las manecillas del reloj hasta que quede apretado. 7.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.
INICIO
LEER BASE
LEER ALTURA
Result=(BASE*ALTURA)/2
Escribir "Resultado = a Result.
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”, Result.
PSEUDOCÓDIGO El 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. INICIO 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
"Ingrese la cantidad de datos" N Acum<-0
"Ingrese el dato ",i,;
dato
Acum<-acum+dato
prom<-acum+dato
prom<-acum/n
"El promedio es ",prom
Escribir "El promedio es: ",prom FIN
FinProceso
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
INICIO
accion 1
accion 2
Nombre = Valor INICIO acción accion1 accion2 acción N FIN
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
INICIO
num1,num2,Suma:ENTERO
Variables: Num1,Num2,Suma: Entero INICIO Escribir ('introduzca dos números') leer (Num1, Num2) Suma=Num1 + Num2 escribir ('La suma es:' , Suma) FIN •
"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
Si Proposición
Condición
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
No
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
Si
Acciona
Condición
No
Accionb
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"
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. V PseudocódigoSEGUN( selector ){V selector==c1 accion1 break CASO c1 : accion1 CASO c2 : accion2 F CASO c3 : accion3 V selector==c2 . accion2 break . . CASO cn : accionn F DEFECTO : acciondefecto V accion3 selector==cn break 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 F (1 para Primavera, 2 para Verano, 3 para Otoño y 4 para Invierno) : acciondecto SEGUN(numeroEstacion){ CASO 1 : nombreEstacion = "Primavera" CASO 2 : nombreEstacion = "Verano" CASO 3 : nombreEstacion = "Otoño" DEFECTO : nombreEstacion = "Invierno"
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.
ENTRADA
CONDICION
f
v BLOQUE
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.
EJEMPLO DE CICLO MIENTRAS EJEMPLO: Separa un numero entero en sus dígitos Proceso Dígitos Escribir "Ingrese un numero entero positivo:" Leer n
Proceso Digitos
"Ingrese un numero entero positivo" 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
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_inicial 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 1.Inicio 2.para contador 1 hasta 10 incremento 1 hacer 3.Escribir (contador) 4.fin_para 5.Fin
VarControl<-Val_inicial
SI
Sentencias
VarControl<VarControl+1
VarControl <=Val_final
No
.
EJEMPLO DE CICLO PARA // Calcula el promedio de una lista de N datos Proceso Promedio:
Proceso Promedio
"Ingrese la cantidad de datos!
Escribir "Ingrese la cantidad de datos:" Leer n
n
acum<-0
acum<-0 ingrese el dato , i
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
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