ALGORITMOS

DEFINICIÓN

Consiste en aplicar adecuadamente una serie de pasos detallados que aseguran una solución correcta. Por lo general, cada algoritmo es específico de un dominio del conocimiento.

Mientras mas detalles podamos ver, nuestro programa sera mas preciso, te muestro dos ejemplos prácticos, situaciones comunes que hemos hecho probablemente todos.

EJEMPLO 1 


Un procedimiento que realizamos varias veces al día consiste en lavarnos los dientes. Veamos la forma de expresar este procedimiento como un Algoritmo:  

1. Tomar la crema dental  
2. Destapar la crema dental 
3. Tomar el cepillo de dientes 
4. Aplicar crema dental al cepillo 
5. Tapar la crema dental 
6. Abrir la llave del lavamanos 
7. Remojar el cepillo con la crema dental 
8. Cerrar la llave del lavamanos 
9. Frotar los dientes con el cepillo 
10. Abrir la llave del lavamanos 
11. Enjuagarse la boca 
12. Enjuagar el cepillo 
13. Cerrar la llave del lavamanos 
14.  Secarse la cara y las manos con una toalla


EJEMPLO 2

El ejemplo de cambiar una bombilla (foco) fundida es uno de los más utilizados por su sencillez para mostrar los pasos de un Algoritmo: 

1. Ubicar una escalera debajo de la bombilla fundida 
2. Tomar una bombilla nueva 
3. Subir por la escalera 
4. Girar la bombilla fundida hacia la izquierda hasta soltarla 
5. Enroscar la bombilla nueva en el plafón hasta apretarla 
6. Bajar de la escalera 
7. Fin 

Estos 2 ejercicios pueden ser aun mas precisos, has la prueba desde tu punto de vista y mejoralo.

Caracteristicas

un Algoritmo debe ser:  

•  Realizable: El proceso algorítmico debe terminar después de una cantidad finita de pasos. Se dice que un algoritmo es inaplicable cuando se ejecuta  con un conjunto de datos iniciales y el proceso resulta infinito o durante la ejecución se encuentra con un obstáculo insuperable sin arrojar un resultado. 

•  Comprensible: Debe ser claro lo que hace, de forma que quien ejecute los pasos (ser humano o máquina) sepa qué, cómo y cuándo hacerlo. Debe existir un procedimiento que determine el proceso de ejecución.  

•  Preciso: El orden de ejecución de las instrucciones debe estar perfectamente indicado. Cuando se ejecuta varias veces, con los mismos datos iniciales, el resultado debe ser el mismo siempre. La precisión implica determinismo.

Pasos para realizar un algoritmo


1. COMPRENDER EL PROBLEMA.

•  Leer el problema varias veces
•  Establecer los datos del problema
•  Aclarar lo que se va a resolver (¿Cuál es la pregunta?)
•  Precisar el resultado que se desea lograr
•  Determinar la incógnita del problema
•  Organizar la información
•  Agrupar los datos en categorías
•  Trazar una figura o diagrama. 

2. HACER EL PLAN.

•  Escoger y decidir las operaciones a efectuar. 
•  Eliminar los datos inútiles. 
•  Descomponer el problema en otros más pequeños. 

3. EJECUTAR EL PLAN (Resolver).

•  Ejecutar en detalle cada operación. 
•  Simplificar antes de calcular. 
•  Realizar un dibujo o diagrama 

4. ANALIZAR LA SOLUCIÓN (Revisar).

•  Dar una respuesta completa 
•  Hallar el mismo resultado de otra manera. 
•  Verificar por apreciación que la respuesta es adecuada.





Sentencias

Una sentencia es cada uno de los pasos que componen un algoritmo. Hay que distinguir entre:
  1. sentencias simples: son una única instrucción;
  2. sentencias de control: están conformadas por varias otras sentencias, que a su vez pueden ser simples o compuestas.
Las sentencias simples son realizadas secuencialmente, una después de la otra. Más abajo veremos los dos tipos de sentencias de control: los condicionales y los ciclos.

Expresiones y variables

Una expresión es una combinación de valores y operaciones que son evaluados durante la ejecución del algoritmo para obtener un resultado.
Por ejemplo, 2 + 3 es una expresión aritmética que, al ser evaluada, siempre entrega el valor 5 como resultado. En esta expresión, 2 y 3 son valores literales y + es el operador de adición.
En el algoritmo para resolver la ecuación cuadrática aparece la expresión   4ac, cuyo resultado depende de cuáles son los valores de ab y c al momento de la evaluación. A diferencia de los valores literales, ab y c son variables. Una variable es un nombre que es asociado a un valor, para poder usarlo de manera independiente al valor específico que representa.
Las diferentes partes de una expresión también son expresiones por sí solas. En el ejemplo, b4ac y 4 son expresiones.

Asignaciones

Cuando una expresión es evaluada, generalmente es necesario asociar el resultado a una variable para poder referirse a él en sentencias posteriores. 
La acción de guardar un valor y ponerle un nombre se representa como una sentencia simple llamada asignación,
Una asignación se representa así:
variable = expresión
La asignación debe interpretarse así:
  1. primero la expresión a la derecha del signo = es evaluada, utilizando los valores que tienen las variables ab y c en ese momento;
  2. una vez obtenido el resultado, el valor de la variable a la izquierda del signo = es reemplazado por ese resultado.
Bajo esta interpretación, es perfectamente posible una asignación como ésta:
i = i + 1
Primero la expresión i + 1 es evaluada, entregando como resultado el sucesor del valor actual de i. A continuación, la variable i toma el nuevo valor. Por ejemplo, si itiene el valor 15, después de la asignación tendrá el valor 16.
Esto no significa que 15 = 16. Una asignación no es una igualdad matemática o una ecuación.

Condicionales

A veces un algoritmo debe ejecutar sentencias diferentes dependiendo de si una condición se cumple o no. Es lo que hacemos en el paso 3 del ejemplo: decidimos que la ecuación no tiene soluciones solamente cuando se cumple que Δ < 0. Esto se llama un condicional.
Un condicional es una sentencia compuesta.
La condición que determina qué ejecutar es una expresión, cuyo valor debe ser verdadero o falso.

Ciclos

Un ciclo ocurre cuando un algoritmo ejecuta una serie de instrucciones varias veces.
Como un algoritmo no puede quedarse pegado, un ciclo debe tener además una condición de término.
Cada ejecución de un ciclo se llama iteración.
El ejemplo de la ecuación cuadrática no tiene ciclos.

Entrada

Cuando un algoritmo necesita recibir un dato, lo hace mediante una sentencia de entrada, que se encarga de poner el valor en la variable correspondiente.
Por ahora, para referirnos a la sentencia de entrada lo haremos simplemente como:
Leer variable
Durante la ejecución, esto significa que el dato es entregado por alguien y queda guardado en la variable.
En el ejemplo, la entrada ocurre en el paso 1, y puede ser representada así:
Leer a
Leer b
Leer c

Salida

Una vez que el algoritmo ha resuelto el problema para el que fue diseñado, debe entregar sus resultados como un mensaje. Por ahora, lo representaremos así:
Escribir mensaje
Si el mensaje es un texto literal, va entre comillas. Si es una variable, va sólo el nombre de la variable.
En el ejemplo, cuando no existen soluciones, la salida puede ser representada así:
Escribir 'No hay soluciones'
Cuando existe una única solución, se puede incluirla en el mensaje:
Escribir 'La solución única es ', x
Las notaciones que hemos introducido son útiles para describir un algoritmo de manera estructurada.
Cuando usamos esta notación de manera informal, se denomina pseudocódigo. En este caso, es posible tomarse ciertas libertades que hacen que el algoritmo más fácil de entender.

EJERCICIOS

1. A un trabajador le pagan segun sus horas y una tarifa de pago por
horas. si la cantidad de horas trabajadas es mayor a 40 horas. la
   tarifa se incrementa en un 50% para las horas extras. calcular el
   salario del trabajador dadas las horas trabajadas y la tarifa.

   variables: horas_trabajadas,tarifa,horas_extras,salario,tarifa_e
      inicio
        leer: horas_trabajadas,tarifa
              si: horas_trabajadas <= 40 entonces
                  salario <-- horas_trabajadas * tarifa
              si_no
                  tarifa_extra <-- tarifa + 0.50 * tarifa
                  horas_extras <-- horas_trabajadas - 40
                  salario <-- horas_extras * tarifa_extra + 40 *
                  tarifa
              fin_si
              imprimir: salario.
       fin

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.

   variables: sueldo,sueldo_neto,descuento
      inicio
        leer: sueldo
              si: sueldo <= 1000 entonces
                  descuento <-- sueldo * 0.1
              si_no
                 si: sueldo <= 2000 entonces
                     descuento <-- (sueldo - 1000) * 0.05 + 1000 * 0.1
                 si_no
                     descuento <-- (sueldo - 2000) * 0.03 + 1000 * 0.1
                 fin_si
                 imprimir: descuento.
       fin

3. Dado un monto calcular el descuento considerando que por encima de
   100 el descuento es el 10% y por debajo de 100 el descuento es el
   2%.

   variables: monto,descuento
      inicio
        leer: monto
              si: monto > 100 entonces
                  descuento <-- monto * 10 / 100
              si_no
                  descuento <-- monto * 2 / 100
              fin_si
              imprimir: monto, descuento
       fin

4. Dado un tiempo en segundos, calcular los segundos restantes que le
   correspondan para convertirse exactamente en minutos.

   variables: tiempo_seg,minutos,segundos
      inicio
        leer: tiempo_seg
              si minutos  <-- tiempo_seg div 60 entonces
                  segundos <-- tiempo_seg mod 60
       fin_si
              imprimir: minutos,segundos.
       fin 

5. Dado un tiempo en minutos, calcular los dias, horas y minutos que
   le corresponden.

   variables: tiempo,dias,horas,minutos
      inicio
        leer: tiempo
              si: dias <-- tiempo div 1440
                   x <-- tiempo mod 1440
                  horas <-- x div 60
                  minutos <-- x mod 60
                  imprimir: dias,minutos,horas
       fin_si
       fin     



6. Calcular mediante un algoritmo repetitivo la suma de los  N primeros números naturales.

     Inicio 
        Leer : N
              X<--1
              S<--0
              Mientras x<=N hacer
                   S<--s+1
                   X<--x+1
              Fin _ mientras
              Imprimir: s
     Fin


7. Modificar el ejercicio 1 para obtener la suma de los salarios de todos los trabajadores.

     Inicio
        Leer: N
             X<--1
             S<--0
             Mientras x<=N hacer
         Leer:h, t
         S<--h*t
              Imprimir s
              S<--s+s
              X<--x+1
             Fin _ mientras
             Imprimir: s
     Fin

8. Dada las horas trabajadas de una persona la tarifa de pago. 
   Calcular su salario e imprimirla.

     Inicio
       leer: h, t
            S<--h * t
            Imprimir: s
     fin

    (Para dos personas)

    inicio
      leer: h, t
           S<--h * t
           Imprimir s
      Leer: h, t
           S<--h * t
           Imprimir: s
    Fin

9. 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.

   Inicio
   Leer: N
        X<--1
        Cd<--0
 NA <-0
 acum_desap <-0
 acum_ap  <- 0
 acum <- 0
        Mientras x<=N hacer
          Leer: not
            Si: not < 10.5 entonces
               CD<--cd+1
               acum_desap <- acum_desap + not
            Sino
  NA <- NA + 1
                acum_ap <- acum_ap + not
            fin _ si
     acum <- acum + not
            x<--x+1
        Fin _ mientras
 prom_ap <- acum_ap /NA
  prom_desap <- acum_desap/CD
 prom <- acum / N
        Imprimir: prom, prom_ap, prom_desap, NA, CD
    Fin


10. Dado un numero determinar la suma de sus dígitos.

    Inicio
      Leer: n
            S<--0
            Mientras n<>0 hacer
               R<--n mod 10
               S<--s + r
               N<--n div 10
            Fin _ mientras
            Imprimir: s
    Fin

11.Se trata de escribir el algoritmo que permita emitir la factura 
   correspondiente a una compra de un articulo determinado, del que 
   se adquieren una o varias unidades. El IVA es del 15% y si el precio    
   bruto ( precio venta mas IVA) es mayor de 50.00 pesetas se debe 
   realizar un descuento del 5%.

    Variables: precio, numeros de articulos(Nart), precio venta(Pv), descuento(d)
 Inicio 
  Leer precio, Nart
  Pv= Precio * Nart
  IVA= Pv * 0.15
  Pb= Pv + IVA
  Si Pb >= 50 entonces
   d= (Pb * 5)/100
  Sino
   d= 0
  Finsi
  Pl= Pb - d
  Escribir Pv, IVA, Pb,d, Pl
 Fin

12. Realizar un algoritmo que permita pedir 
    50 números naturales y determine e imprima cuantos son 
    pares, impares, positivos y negativos.

 variables:par(p), impares(im), positivos(pos), negativos(n) 
    Inicio
     p= 2
    in= 0
  pos.= 0
     n= 0
      Para  x= 1 hasta 50
           Leer n
  Si n mod 2= 0 entonces
                p= p + 1
  Sino
        in= in + 1
  Finsi
  Si n > 0 entonces
     Pos= pos + 1
  Sino
      n=  n + 1
  Finsi
      Fin_para
 Escribir p, in, pos, n
    Fin

13. Desarrollar un algoritmo para calcular e 
    imprimir el factorial de un número.

 variables: factorial(f). numero(n)
      Inicio
         f= 1
         Para x= 1 hasta n
    f = f * x
         Fin_para
         Escribir f
      Fin

14. Calcular la media de 100 números e imprimir su resultado.

 variables: suma(s), media
    Inicio
  s= 0
  x= 1
      Mientras x<= 100 hacer
 Leer n
  s = s + n
  x = x + 1
      Finmientras
  media = s /100
         Escribir media
    Fin
 
15. Calcular y visualizar la suma y el producto de los 
    números pares comprendidos entre 20 y 400 ambos  inclusive.

 variables: suma(s), producto(p)
       Inicio
                s = 0
                p = 1
                x = 20
          Mientras x<= 400 hacer
          s = s +1
         p = p *x
         x = x +1
          Finmientras
         Escribir s, p
       Fin
16.-Hacer un programa que al ingresar un número 
    de Amstrong nos escriba si es o no es un número de     
    amstrong, y si no es que indique que vuelva a intentar. 

 Variables número, número original, digito 

 INICIO
      LEER NÚMERO
          Numeró original
          Suma   0
          Mientras  NUMERO < > 0 hacer
              dijito <- digito  mod 10
              Suma <-  suma + dijito ^ 3
              Numero  <-  numero mod 10
            Si suma = Número _ original Entonces
               Escribir "es un numero de amstrong"
            Sino
               Escribir "no es un numero de amstrong, intente otra vez"
            Finsi
         Fin

17.-Hacer un programa que registre el nº de créditos de un alumno.
    *El número máximo de crédito es 25
    *Imprimir número de crédito y total de crédito.

    Variables crédito, numero_de_crédito
 Inicio
     total_de_crédito <- 0
        Leer crédito
          Si total_de_crédito + crédito  < = 25 entonces
              Total_de_crédito  <-   total_de_crédito + crédito
              Numero_de_crédito  <-  número_de_cedito + 1
          Fin si
          Imprimir Numero_de_crédito, crédito
         Fin
     
18.-Hacer un programa para escribir la primera vocal leída del teclado.
    *Se supone que se leen, uno a uno, carácter desde el teclado

 Variables vocal
        Carácter  J
        Inicio
         sw = 1
         Mientras sw = 1 hacer
           Leer J
           si (J= "a") o (J = "e")  o (J = "i") o (J = "o") o (J ="u")
               Escribir "LA PRIMERA VOCAL INGRESADA FUE",J
   sw <- 0 
    fin_si
          Fin_mientras       
        Fin
19.-Hacer un programa que no determine un numero 
    tiene o no parte fraccionaria.

 Variables  parte_fracciomaria
        Real   n
        Inicio
            Escribir "ingresa numero"
            Leer n
           Si n = trunc(n) entonces     // trunc es una funcion 
     // que elimina los decimales de un numero

               Escribir "numero no tiene parte fraccionaria"
             Sino
           Escribir" numero con parte fraccionaria"
           fin si
        Fin 
ENLACE DE INTERES
http://www.eduteka.org/pdfdir/AlgoritmosProgramacion.pdf
Archivo pdf con la informacion completa de esta entrada.

 
Design by Free Wordpress Themes | Bloggerized by Lasantha - Premium Blogger Templates