Algoritmos secuenciales, condicionales y repetitivo como métodos de solución de problemas en ing

Page 1

Advance

01/DIC/2017

LOS ALGORITMOS SECUENCIALES, CONDICIONALES, Y REPETITIVOS COMO MÉTODOS DE SOLUCIÓN DE PROBLEMAS EN LA INGENIERÍA

01

edition


Algoritmo: En matemáticas, lógica, ciencias de la computación y disciplinas relacionadas, un algoritmo (del griego y latín, dixit algorithmus y este a su vez del matemático persa Al-Juarismi) es un conjunto prescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite llevar a cabo una actividad mediante pasos sucesivos que no generen dudas a quien deba hacer dicha actividad. Dados un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solución. Los algoritmos son el objeto de estudio de la algoritmia.

Tipos de algoritmos según su función: -Algoritmo de ordenamiento -Algoritmo de búsqueda -Técnicas de diseño de algoritmos

Algoritmos voraces (greedy): seleccionan los elementos más prometedores del conjunto de candidatos hasta encontrar una solución. En la mayoría de los casos la solución no es óptima. Algoritmos paralelos: permiten la división de un problema en


Algoritmos determinísticos: el comportamiento del algoritmo es lineal: cada paso del algoritmo tiene únicamente un paso sucesor y otro antecesor. Algoritmos no determinísticos: el comportamiento del algoritmo tiene forma de árbol y a cada paso del algoritmo puede bifurcarse a cualquier número de pasos inmediatamente posteriores, además todas las ramas se ejecutan simultáneamente. Metaheurísticas: encuentran Divide y vencerás: soluciones aproximadas (no dividen el problema en óptimas) a problemas basándose en subconjuntos disjuntos un conocimiento anterior (a veces obteniendo una solución llamado experiencia) de los mismos. de cada uno de ellos Programación dinámica: intenta para después unirlas, resolver problemas disminuyendo su logrando así la solución alcoste computacional aumentando problema completo. el coste espacial.


Algoritmos 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. Ejemplo: INPUT x INPUT y auxiliar= x Esta secuencia de instrucciones permuta los valores de x e y, con ayuda de una variable auxiliar, intermedia. 1º Se guarda una copia del valor de x en auxiliar. 2º Se guarda el valor de y en x, perdiendo su valor anterior, pero se mantiene una copia del contenido en auxiliar. 3º Se copia a y el valor de auxiliar, que es el valor inicial de x.


Componentes Asignación La asignación consiste, en el paso de valores o resultados a una zona de la memoria. Dicha zona será reconocida con el nombre de la variable que recibe el valor. La asignación se puede clasificar de la siguiente forma: • Simples: Consiste en pasar un valor constate a una variable (a=15) • Contador: Consiste en usarla como un verificador del número de veces que se realiza un proceso (a=a+1) • Acumulador: Consiste en usarla como un sumador en un proceso (a=a+b) • De trabajo: Donde puede recibir el resultado de una operación matemática que involucre muchas variables (a=c+b*2/4).


Lectura La lectura consiste en recibir desde un dispositivo de entrada (p.ej. el teclado) un valor. Esta operación se representa en un pseudocodigo como sigue: Leer a, b Donde “a” y “b” son las variables que recibirán los valores Escritura Consiste en mandar por un dispositivo de salida (p.ej. monitor o impresora) un resultado o mensaje. Este proceso se representa en un pseudocodigo como sigue: Escribe “El resultado es:”, R Donde “El resultado es:” es un mensaje que se desea aparezca y R es una variable que contiene un valor.


Algoritmos condicionales: Las estructuras condicionales comparan una variable contra otro(s)valor (es), para que en base al resultado de esta comparación, se siga un curso de acción dentro del programa. Cabe mencionar que la comparación se puede hacer contra otra variable o contra una constante, según se necesite. Existen tres tipos básicos, las simples, las dobles y las múltiples.


Simples: Las estructuras condicionales simples se les conocen como �Tomas de decisión�. Estas tomas de decisión tienen la siguiente forma: Pseudocódigo: Diagrama de flujo:

Dobles: Las estructuras condicionales dobles permiten elegir entre dos opciones o alternativas posibles en función del cumplimiento o no de una determinada condición. Se representa de la siguiente forma: Pseudocódigo:

Diagrama de flujo:


Donde: Si:Indica el comando de comparación Condición : Indica la condición a evaluar Entonces : Precede a las acciones a realizar cuando se cumple la condición Instrucción(es):Son las acciones a realizar cuando se cumple o no la condición si no :Precede a las acciones a realizar cuando no se cumple la condición Dependiendo de si la comparación es cierta o falsa, se pueden realizar una o más acciones. Múltiples: Las estructuras de comparación múltiples, son tomas de decisión especializadas que permiten comparar una variable contra distintos posibles resultados, ejecutando para cada caso una serie de instrucciones especificas. La forma común es la siguiente: Pseudocódigo: Diagrama de flujo:


Múltiples: Las estructuras de comparación múltiples, son tomas de decisión especializadas que permiten comparar una variable contra distintos posibles resultados, ejecutando para cada caso una serie de instrucciones especificas. La forma común es la siguiente: Pseudocódigo:

Diagrama de flujo:


Múltiples (En caso de): Las estructuras de comparación múltiples, es una toma de decisión especializada que permiten evaluar una variable con distintos posibles resultados, ejecutando para cada caso una serie de instrucciones especificas. La forma es la siguiente: Pseudocódigo:

Diagrama de flujo:


Veamos algunos ejemplos donde se aplique todo lo anterior: Realizar un algoritmo en donde se pide la edad del usuario; si es mayor de edad debe aparecer un mensaje indicรกndolo. Expresarlo en Pseudocรณdigo y Diagrama de flujos. Pseudocรณdigo: Diagrama de flujo:


Algoritmos repetitivos: Estructura de repetición. Los algoritmos vistos hasta el momento han consistido en simples secuencias de instrucciones; sin embargo, existen tareas más complejas que no pueden ser resueltas empleando un esquema tan sencillo, en ocasiones es necesario repetir una misma acción un número determinado de veces o evaluar una expresión y realizar acciones diferentes en base al resultado de dicha evaluación. Para resolver estas situaciones existen las denominadas estructuras de control que poseen las siguientes características: • Una estructura de control tiene un único punto de entrada y un único punto de salida. • Una estructura de control se compone de sentencias o de otras estructuras de control.


Tales características permiten desarrollar de forma muy flexible todo tipo de algoritmos aun cuando sólo existen tres tipos fundamentales de estructuras de control: • Secuencial. • Alternativa. • Repetitiva. A lo largo de esta lección se presentarán las distintas estructuras de control, la forma de representarlas en la notación algorítmica y las correspondientes sentencias FORTRAN para poder utilizarlas en nuestros programas. Estructura repetitiva. La estructura repetitiva o iterativa permite, como su propio nombre indica, repetir una acción (o grupo de acciones); dicha repetición puede llevarse a cabo un número prefijado de veces o depender de la evaluación de una expresión lógica. Existen tres tipos de estructuras r e p e t i t i v a s : desde-hasta, mientras y repetir-hasta.


REPETIR MIENTRAS. En la solución de algunos problemas es necesario ejecutar repetidas veces una instrucción o un conjunto de instrucciones. El número de repeticiones se conoce con anterioridad, mientras que en otras depende de cálculos o estados de variables que se dan dentro de la solución del problema. Para solucionar este tipo de problemas se utiliza un tipo de estructuras a las que se conocen como estructuras de repetición, bucles o ciclos. Un ciclo consiste en un grupo de acciones que se ejecutan repetidas veces dependiendo del cumplimiento de una condición. Ciclo Mientras.- Este ciclo consiste en un conjunto de instrucciones que se repiten mientras se cumpla una condición. De igual manera que en los condicionales, la condición es evaluada y retorna un valor lógico, que puede ser verdadero o falso. En el caso del ciclo mientras las instrucciones contenidas en la estructura de repetición se ejecutarán solamente si al evaluar la condición se genera un valor verdadero; es decir, si la condición se cumple; en caso contrario, se ejecutará la instrucción que aparece después de Fin mientras.


REPETIR...HASTA. Una variante de la sentencia mientras, es la sentencia repetir. Una de las características de la sentencia mientras es que la condición lógica se evalúa al principio de cada iteración. En particular, si la condición es falsa cuando la sentencia comienza, entonces el bucle no se ejecuta nunca. La sentencia repetir-hasta especifica un bucle condicional que se repite hasta que la condición se hace verdadera. Después de cada iteración el cuerpo del bucle evalúa la condición. Si la condición es verdadera, el bucle se termina y se sale de él, ejecutándose la siguiente sentencia. Si la condición es falsa el bucle se repite. El pseudocódigo es el siguiente: Repetir. Sentencias. Hasta (expresión lógica).

REPETIR DESDE. La estructura repetitiva desde (for) es aquella en que el número de iteraciones (repeticiones) del bucle se conoce de antemano y por ello no se precisa poner ninguna condición de salida para detener el bucle. En su lugar, un contador cuenta el número de iteraciones fijadas y se termina cuando llega al valor final.


Estos ficheros son el input y el output para indicar entrada desde el teclado y salida al terminal. Las palabras Program, Begin, End, Input, y Output, y otras que veremos mรกs adelante, son identicadores que permiten al compilador pascal. {1} Program nombre; (* Este es un ejemplo de la estructura de la parte declarativa de un programa pascal *) {2} Uses (nombre unidades;) . . . {3} Const (nombre constante = valor;) . . . {4} Type (nombre tipo = def tipo;) . . . {5} Var (nombre variable: tipo dato;) . . . {6} Begin


Ejercicios propuestos : . Se desea conocer los datos estadísticos de una asignatura, por lo tanto, necesitamos un algoritmo que lea el número de reprobados, aprobados, excelentes y sobresalientes de una asignatura, y nos devuelva: a. El porcentaje de estudiantes que han aprobado la asignatura. b. El porcentaje de reprobados, aprobados, excelentes y sobresalientes dela asignatura. 2. El costo de un automóvil nuevo para un comprador es la suma total del costo del vehículo, del porcentaje de la ganancia del vendedor y de los impuestos locales o estatales aplicables (sobre el precio de venta). Suponer una ganancia del vendedor del 15% en todas las unidades y un impuesto del 12% y diseñar un algoritmo para leer el coste total del automóvil e imprimir el coste para el consumidor. 3. Leer 10 calificaciones de un grupo de alumnos. Calcule y escriba el porcentaje de reprobados. Tomando en cuenta que la calificación mínima aprobatoria es de 9.5 PTOS. 4. Desarrollar un algoritmo que permita leer dos valores, e indicar si el resultado de dividir la suma de los dos números entre la resta de los mismos es exacta, caso contrario imprimir no es exacta.


Pascal Es un lenguaje relativamente moderno, desarrollado por Niklaus Wirth y su grupo de Zurich en 1971. Se trata de un lenguaje, esto quiere decir que se puede emplear para construir todo tipo de aplicaciones. El hecho de que tenga una estructuración muy marcada permite que los programas sean fáciles de leer e interpretar, y facilita la escritura de programas del modo que hoy en día se estima correcto. El turbo pascal, de la compaña Borland (Scotts Valley, California) es un dialecto del pascal que incluye además de las instrucciones del pascal estándar una serie de instrucciones que permiten desarrollar aplicaciones específicas para ordenadores IBM PC o IBM PS y compatibles. Un programa pascal es un conjunto de instrucciones que siguen la sintaxis y la estructura del pascal. La estructura genérica es: Program nombre (ficheros); ... Declaraciones ... Begin ... Sentencias ... End.


5. A un trabajador le pagan según sus horas trabajadas y la tarifa está a un valor determinado por hora. Si la cantidad de horas trabajadas es mayor a 40 horas, la tarifa por hora se incrementa en un 25% para las horas extras. Calcular el salario del trabajador dadas las horas trabajadas y la tarifa de horas extras. Prof. Luis E. Aponte /PROGRAMACIÓN/2017-I 6. Una compañía de seguros tiene contratados a n vendedores. Cada uno hace tres ventas a la semana. Su política de pagos es que un vendedor recibe un sueldo base, y un 10% extra por comisiones de sus ventas. El gerente de su compañía desea saber cuánto dinero obtendrá en la semana cada vendedor por concepto de comisiones por las tres ventas realizadas, y cuanto tomando en cuenta su sueldo base y sus comisiones. 7. Realizar un algoritmo que permita pedir 50 números naturales y determine e imprima cuantos son pares, impares, positivos y negativos. 8. Se desea saber cuánto tendrá que pagar una persona por la compra de un artículo en base a las siguientes condiciones. Si compra menos de 5 del mismo artículo se le hará


1) Escribir Sin Saltar "Ingrese el valor de alumnos aprobados:"; Leer alumnos_aprobados; Escribir Sin Saltar "Ingrese el valor de alumnos notables:"; Leer alumnos_notables; Escribir Sin Saltar "Ingrese el valor de alumnos sobresalientes:"; Leer alumnos_sobresalientes; Escribir Sin Saltar "Ingrese el valor de alumnos suspendidos:"; Leer alumnos_suspendidos; total <alumnos_suspendidos+alumnos_aprobados+alumnos_notables+alumnos _sobresalientes; porcentaje_de_acreditados <100*(alumnos_aprobados+alumnos_notables+alumnos_sobresalientes)/t otal; porcentaje_de_suspendidos <- 100*alumnos_suspendidos/total; porcentaje_de_aprobados <- 100*alumnos_aprobados/total; porcentaje_de_notables <- 100*alumnos_notables/total; porcentaje_de_sobresalientes <- 100*alumnos_sobresalientes/total; Escribir "Valor de porcentaje de acreditados:", porcentaje_de_acreditados; Escribir "Valor de porcentaje de aprobados:", porcentaje_de_aprobados; Escribir "Valor de porcentaje de notables:", porcentaje_de_notables; Escribir "Valor de porcentaje de sobresalientes:", porcentaje_de_sobresalientes; Escribir "Valor de porcentaje de suspendidos:", porcentaje_de_suspendidos; Escribir "Valor de total: ", total;


2) Definir coste_total,costo_comprador,ganancia,impuestos como real; Escribir “Introduzca el coste total de vehiculo:” Leer coste_total; ganancia <- coste_total * 0.12 impuestos <- coste_total * 0.06 coste_comprador <- coste_total + ganancia + impuestos Escribir “El coste del vehiculo para el comprador es de “,coste_compreador, “ euros.”

3) Definir reprobados como entero; Definir nota como real; reprobados <- 0; PARA i <- 0 HASTA 10 Con Paso 1 Hacer Escribir “Nota alumno: “,i+1; Leer nota; SI nota < 9.4 Entonces reprobados+1; FinSi FinPara Escribir “Porcentaje alumnos reprobados:”, ((reprobados*10)/100)

4) Definir valor1, valor2, suma, resta como real; suma,resta <- 0; Escribir “Ingrese el primer valor”; LEER valor1; Escribir “Ingrese el segundo valor”; LEER valor2; suma <- valor1+valor2; resta <- valor1+valor2; SI suma % resta = 0 Entonces Escribir “Es exacta”; SI NO Escribir “No es exacta”; FinSi


5) Definir horas_trabajadas, tarifa, horas_extras, salario, tarifa_extra como entero; LEER horas_trabajadas; LEER tarifa; SI horas_trabajadas <= 40 Entonces salario <- horas_trabajadas * traifa; SI NO tarifa_extra <- tarifa + 0.20 * tarifa; horas_extras <- horas_trabajadas – 40; salario <- horas_extras * tarifa_extra + 40 * tarifa; FinSi Escribir salario;


6) entero nven,contador real sbase, comv1, comv2, comv3,stot, v1,v2,v3,tcom,tven incio nven <- 0 contador <- 0 Escriba “Cual es el numero de vendedores” Leer nven Llamar nueva_linea Escriba “Cual es el sueldo base de los empleados” Lea sbase mientras contador<nven haga Escriba “Ingrese el valor de la primera venta” Leer v1 llamar nueva_linea Escriba “Ingrese el valor de la segunda venta” Leer v2 llamar nueva_linea Escriba “Ingrese el valor de la tercera venta” Leer v3 Llamar nueva_linea comv1 <- v1*0.10 comv2 <- v2*0.10 comv3 <- v3*0.10 stot <- v1+v2+v3+comv1+comv2+comv3+sbase tcom <- comv1+comv2+comv3 tven <- v1+v2+v3+tcom Escriba “El sueldo total de este empleado es”,stot Llamar nueva_linea Escriba “El valor total por comisiones es de “,tcom Llamar nueva_linea Escriba “El valor total de comisiones y ventas es de “,tven Contador <- contador+1 Llamar nueva_linea fin_mientras fin


7) Enteros par, impar, pos, neg INICIO par <- 0 impar <- 0 pos <- 0 neg <- 0 PARA x <- 1 HASTA 50 HACER LEER n SI n % 2 = 0 ENTONCES par <- par +1 SINO impar <- impar +1 FINSI SI n > 0 ENTONCES pos <- pos +1 SINO neg <- neg +1 FINSI FINPARA ESCRIBIR par,impar,pos,neg FIN


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.