Algoritmos y Diagramas de Flujo

Definición de algoritmo



"Un algoritmo se define como un método que se realiza paso a paso para solucionar un problema que termina en un número finito de pasos".

Las características fundamentales que debe cumplir todo algoritmo son :

Debe ser preciso. e indicar el orden de realización de cada paso.
Debe ser definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez.
Debe ser finito. Si se sigue un algoritmo, se debe terminar en algún momento ; o sea debe tener un número finito de pasos.

La definición de un algoritmo debe describir tres partes : Entrada, Proceso y Salida.


Algoritmos Cotidianos

Se refiere a todos aquéllos algoritmos que nos ayudan a resolver problemas diarios, y que los hacemos casi sin darnos cuenta de que estamos siguiendo una metodología para resolverlos.

Algunos ejemplos son :

bolazul.gif (334 bytes) Diseñar un algoritmo para cambiar una llanta a un coche.

  1. Inicio.
  2. Traer gato.
  3. Aflojar tornillos de las llantas.
  4. Levantar el coche con el gato.
  5. Sacar los tornillos de las llantas.
  6. Quitar la llanta.
  7. Poner la llanta de repuesto.
  8. Poner los tornillos.
  9. Bajar el gato
  10. Apretar los tornillos.
  11. Fin

bolazul.gif (334 bytes) Un cliente ejecuta un pedido a una fábrica. La fábrica examina en su banco de datos la ficha del cliente, si el cliente es solvente entonces la empresa acepta el pedido, en caso contrario rechazar el pedido.

Pasos del algoritmo :

Inicio

Leer el pedido

Examinar ficha del cliente

Si el cliente es solvente aceptar pedido, en caso contrario rechazar pedido

Fin

bolazul.gif (334 bytes) Determinar el mayor de tres números enteros.

Pasos del algoritmo :

1.- Comparar el primero y el segundo entero, deduciendo cuál es el mayor.

2.- Comparar el mayor anterior con el tercero y deducir cuál es el mayor. Este será el resultado.

Los pasos anteriores se pueden descomponer en otros pasos más simples en los que se denomina refinamiento del algoritmo.

1.- Obtener el primer número (entrada), denominado NUM1

2.- Obtener el segundo número (entrada), denominado NUM2

3.- Compara NUM1 con NUM2 y seleccionar el mayor ; si los dos enteros son iguales, seleccionar NUM1. Llamar a este número MAYOR.

4.- Obtener el tercer número (entrada), y se denomina NUM3.

5.- Compara MAYOR con NUM3 y seleccionar el mayor ; si los dos enteros son iguales, seleccionar el MAYOR. Denominar a este número MAYOR.

6.- Presentar el valor MAYOR (salida).

7.- Fin


"Técnicas para la Formulación de Algorítmos"

moteado.gif (2795 bytes)

  • Lenguaje Natural
  • Diagramas de Flujo
  • Seudo Còdigo

Ejercicios de Algoritmos

  • Diseñar los algortimos que resuelvan los siguientes problemas:
  1. Cocer un huevo
  2. Preparar café
  3. Ir al cine
  4. Cambiar un bonbillo quemado del techo
  5. Preparar una torta

Diagramas de Flujo

Se basan en la utilización de diversos símbolos para representar operaciones específicas. Se les llama diagramas de flujo porque los símbolos utilizados se conectan por medio de flechas para indicar la secuencia de operación.

La simbología utilizada para la elaboración de diagramas de flujo es variable y debe ajustarse a un patrón definido previamente.

SIMBOLOGIA UTILIZADA EN LOS DIAGRAMAS DE FLUJO

Símbolo Función

Simbolos1.gif (11204 bytes)

simbolos2.gif (5451 bytes)

Ejemplo:

Calcular el salario neto de un trabajador en función del número de horas trabajadas, precio de la hora de trabajo y considerando unos descuentos fijos al salario bruto en concepto de impuestos (20 por 100).

DiagFlujo.gif (3532 bytes)

Ejemplo:

Realizar un diagrama de flujo que permita mostrar en pantalla un mensaje de mayoría o minoría de edad según sea el caso para un nombre específico.

dflujo.gif (5170 bytes)



"Estructuras Algorítmicas"

moteado.gif (2795 bytes)

Secuenciales

Condicionales









Estructura Secuencial



Es aquélla 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í suscesivamente hasta el fin del proceso. La estructura secuencial tiene una entrada y una salida. Su representación gráfica es la siguiente:

ESTRUCTURA SECUENCIAL

EstSecuencial.gif (1532 bytes)

....

PSEUDOCODIGO DE UNA ESTRUCTURA SECUENCIAL

Inicio

:

:

acciones

:

:

fin

bola2.gif (995 bytes) Ejemplo:

Calcular el salario neto de un trabajador en función del número de horas trabajadas, precio de la hora de trabajo y considerando unos descuentos fijos al sueldo bruto en concepto de impuestos (20 por 100).

Pseudocódigo

Inicio

{cálculo salario neto}

leer nombre, horas, precio_hora

salario_bruto Asignacion.gif (857 bytes)horas * precio

impuestos Asignacion.gif (857 bytes) 0.20 * salario_bruto

salario_neto Asignacion.gif (857 bytes) salario_bruto_impuestos

escribir nombre, salario_bruto, salario_neto_bruto, salario_neto

Fin

Diagrama de flujo

DiagFlujo.gif (3525 bytes)

Condicionales



La especificación formal de algoritmos tiene realmente utilidad cuando el algoritmo requiere una descripción más complicada que una lista sencilla de instrucciones. Este es el caso cuando existen un número de posibles alternativas resultantes de la evaluación de una determinada condición.

Las estructuras selectivas se utilizan para tomar decisiones lógicas; de ahí que se suelan denominar también estructuras de decisión o alternativas.

En las estructuras selectivas se evalúa una condición y en función del resultado la misma se realiza una opción u otra. Las condiciones se especifícan usando expresiones lógicas. La representación de una estructura selectiva se hace con palabras en pseudocódigo (if, then, else o bien en español si, entonces, sino), con una figura geométrica en forma de romba o bien con un triángulo en el interior de una caja rectangular.

Las estructuras selectivas o alternativas pueden ser:

  • Simples
  • Múltiples

Alternativa Simple (si-entonces/if-then)

La estructura alternativa simple si-entonces (en inglés if-then o bien IF-THEN ) ejecuta una determinada acción cuando se cumple una determinada condición. La selección si-entonces evalúa la condición y . . .

bolroja.gif (334 bytes) Si la condición es verdadera, entonces ejecuta la acción S1 (o acciones caso de ser S1 una acción compuesta y constar de varias acciones).

bolroja.gif (334 bytes) Si la condición es falsa, entonces no hacer nada.

A continuación se muestra la gráfica de la estructura condicional simple.

condsim.gif (2329 bytes)

Pseudocódigo en español

Si Entonces

Fin_si

Pseudocódigo en inglés

If then

end_if

Alternativas Múltiples (según_sea, caso de / case)

Cuando existen más de dos elecciones (alternativas) posibles, es cuando se presenta el caso de alternativas múltiples. Si el número de alternativas es grande puede plantear serios problemas de escritura del algoritmo y naturalmente de legibilidad.

La estrucura de decisión múltiple evaluará una expresión que podrá tomar n valores distintos 1,2,3,4,..n . Según que elija uno de estos valores en la condición, se realizaráa una de las n acciones, o lo que es igual, el flujo del algoritmo seguirá un determinado camino entre los n posibles.

La representación gráfica se muestra a continuación:

Diagrama de Flujo

AlterMultiple.gif (3276 bytes)

Pseudocódigo

En inglés la estructura de decisión múltiple se representa

Case expresión of

[e1]: acción S1

[e2]: acción S2

:

[en]: acción Sn

else

acción Sx

end_case

Ejemplo:

Se desea diseñar un algoritmo que escriba los nombres de los días de la semana en función del valor de una variable DIA introducida por teclado.

Los días de la semana son 7; por consiguiente, el rango de valores de DIA será 1..7, y caso de que DIA tome un valor fuera de este rango se deberá producir un mensaje de error advirtiendo la situación anómala.

Inicio

Leer DIA

Según_sea DIA hacer

1: escribir('Lunes')

2: escribir('Martes')

3: escribir('Miércoles')

4: escribir('Jueves')

5: escribir('Viernes')

6: escribir('Sabado')

7: escribir('Domingo')

else

escribir('Error')

fin_según

fin

Estructuras Repetitivas

Las estructuras que repiten una secuencia de instrucciones un número determinado de veces se denominan Bucles y se denomina Iteración al hecho de repetir la ejecución de una secuencia de acciones. Entre las estructuras repetitivas se encuentran:

Mientras (while)

Repetir (repeat)

Desde (for)

1.- Estructura Mientras (while)

La estructura repetitiva while, es aquélla en que el cuerpo del bucle se repite mientras se cumple una determinada condición, su representación gráfica es:

while.gif (2331 bytes)

Pseudocódigo en español Pseudocódigo en inglés

Mientras condición hacer while condición do

Acción S1

Acción S2 :

: End_while

acción Sn

Fin_mientras

Diagrama N-S

whileNassi.gif (1694 bytes)

Ejemplo:

Contar los números enteros positivos introducidos por teclado. Se consideran dos variables enteras NUMERO y CONTADOR (contará el número de enteros positivos). Se supone que se leen números positivos y se detiene el bucle cuando se lee un número negativo o cero.

Pseudocódigo

Inicio

contadorAsignacion.gif (857 bytes) 0

Leer (numero)

Mientras numero > 0 hacer

contadorAsignacion.gif (857 bytes) contador+1

Leer (numero)

Fin_Mientras

Escribir('El número de enteros positivos es : ', contador)

Fin

Diagrama de Flujo

WhileEjem1DF.gif (4893 bytes)

Estructura Repetir (repeat)

Esta estructura se ejecuta hasta que se cumpla una condición determinada que se comprueba hasta el final del bucle. Se ejecuta al menos una vez.

El bucle repetir-Hasta_que se repite mientras el valor de la expresión booleana de la condicin sea falsa, justo la opuesta de la sentencia mientras.

Pseudocódigo en Español Pseudocódigo en Inglés

Repetir Repeat

: :

Hasta que <condición> Until <condición>

Diagrama de Flujo de Repetir

repeatdf.gif (2375 bytes)

Estructura Desde/Para (for)



En muchas ocasiones se conoce de antemano el número de veces que se desean ejecutar las acciones de un bucle. En estos casos en el que el número de iteraciones es fija, se debe usar la estructura desde o para.

La estructura Desde ejecuta las acciones del cuerpo del bucle un número específico de veces y de modo automático controla el número de iteraciones o pasos a través del cuerpo del bucle.

Pseudocódigo en Español Pseudocódigo en Inglés

Desde variable(v)= vi Hasta vf hacer For variable (v)= vi To vf Do

:

Fin_desde

Donde:

v: Variable índice

vi, vf: Valores inicial y final de la variable

Diagrama de Flujo de la estructura Desde/Para

fordf.gif (4885 bytes)



Ejercicios:





  1. Escribir un algoritmo que lea un número y escriba su cuadrado.

  2. Determine el área y volumen de un cilindro cuyas dimensiones radio y altura se leen desde el teclado.

  3. Calcular el perímetro y la superficie de un rectángulo dadas la base y la altura.

  4. Realizar un algoritmo que sume dos números.

  5. Calcular la superficie de un circulo.

  6. Calcular el perímetro y la superficie de un rectángulo dadas la base y la altura del mismo.

  7. Determinar la hipotenusa de un triangulo rectángulo conocidas las longitudes de los catetos.

  8. Diseñar un algoritmo que realice la siguiente conversión: Una temperatura dada en grados Celsius a grados Fahrenheit. NOTA: La formula de conversión es Fª = (9/5)*C+32.

  9. Escriba un algoritmo que lea del teclado un número entero y que compruebe si es

    menor que 5. Si no lo es, debe volver a leer un número, repitiendo la operación hasta que el usuario escriba un valor correcto. Finalmente debe escribir por pantalla el valor leído.

  10. Modifique el algoritmo del problema 9 para que, en vez de comprobar que el número es

    menor que 5, compruebe que se encuentre en el rango (5,15).

  11. Modifique el algoritmo del problema 10 para que cuente las veces que ha leído un

    número del teclado y escriba el resultado por pantalla.

  12. Modifique el algoritmo del problema 11 para que se realicen 10 lecturas del teclado

    como máximo.



Ejercicios Complementarios 1





  1. Escribir un algoritmo que calcule el factorial de un numero

  2. Diseñar un algoritmo que resuelva la ecuación de segundo grado

  3. Leer una serie de números enteros e ir sumando hasta que se ingrese el numero 0, mostrar el resultado de la suma y la cantidad de números leídos.

  4. Leer una serie de números enteros y decir cuantos son pares e impares, se deja de leer cuando se ingresa el numero -99.

  5. Sumar los números pares del dos al 20 e imprimir su valor

  6. Sumar los números impares del 1 al 21 e imprimir su valor

  7. Determinar la cantidad total a pagar por una llamada telefónica, teniendo en cuenta lo siguiente: a) Toda llamada que dure menos de 5 minutos tiene un costo de 10 Bs. b) Cada minuto adicional a partir de los tres primeros es un paso de contador y cuesta 5 Bs.

  8. Realizar un algoritmo que calcule el producto de los n primeros números naturales.

Ejercicios de Evaluacion (SECCION 702)

1) Hacer un algortimo que permita escoger en un conjunto de N numeros naturales:

*Cuales son menores que 15.·

*Cuales son mayores de 50.·

*Cuales estan comprendidos entre 25 y 50.

2) A un trabajador le descuentan de su sueldo el 10% si su sueldo es menor o igual a 1000. por encima de 1000 y hasta 2000 el 5% del adicional, y por encima de 2000 el 3% del adicional. calcular el descuento y sueldo neto que recibe el trabajador dado su sueldo.

3) Dado N notas de un estudiante calcular:

a) Cuantas notas tiene desaprobados.

b) Cuantos aprobados.

c) El promedio de notas.

d) El promedio de notas aprobadas y desaprobadas.

4) Calcular y visualizar la suma y el producto de los números pares comprendidos entre 2 y 0 ambos inclusive.



SEUDOCODIGO

Favor descargar e intalar el siguiente programa para trabajar con seudocodigo.

http://pseint.sourceforge.net/


2 comentarios:

  1. man necesito un diagra de flujo ke sume los numeros dentro de un rango Ejem:
    la suma de los numeros entre 3 y 8
    3+4+5+6+7+8=Suma entre rango
    como le hago T_T

    ResponderEliminar
  2. way necesito ayuda pr ejemplo:
    los empleados de una fábrica trabajan en dos turnos, diurno y nocturno. se desea calcular el jornal diario de acuerdo con los siguientes puntos:
    *la tarifa de las horas diurnas es de 500 pesos
    *la tarifa de las horas nocturnas es de 800 pesos
    *caso de ser domingo, la tarifa se incrementa en 200 pesos el turno diurno y 300 pesos el turno nocturno.

    ResponderEliminar

Seguidores

Datos personales

Mi foto
Cel: 0412-3920418 mail: adolfoale@yahoo.es