Mostrando entradas con la etiqueta Algoritmos. Mostrar todas las entradas
Mostrando entradas con la etiqueta Algoritmos. Mostrar todas las entradas

miércoles, 7 de diciembre de 2011

Algoritmos-funciones

Diseñar una función que permita determinar
la suma de los n primeros números enteros
ingresados.

funcion fsuma(n:entero):entero
   i=0 
   sn=0 
   para i=1,n
       sn=sn+i   
   fin de para       
   retornar sn
fin de funcion

Algoritmo 
1.-inicio
2.-n1=0,sn1=0
3.-leer n1
4.-sn1=fsuma(n1)
5.-escribir sn1
6.-fin

Diseñar una función que permita determinar
el factorial de un número ingresado.

rfuncion ffactorial(n:entero):entero
   i=0
   f=1
   mientras i< n
      i=i+1
      f=f*i
   fin de mientras   
   retornar f
fin de funcion

Algoritmo
1.-inicio
2.-factorial=0,n1=0
3.-leer n1
4.-factorial=ffactorial(n1)
5.-escribir factorial
6.-fin
Diseñar las funciones que permita determinar
el promedio y la condición
(aprobado ó desaprobado) de un alumno, 
mediante tres notas ingresadas.

funcion fpromedio(ant1:real,ant2:real,ant3:real):real
   p:real
   p=(ant1+ant2+ant3)/3
   return p      
fin de funcion

funcion fcondicion(ap:real):cadena
   m:cadena
   si  ap>=10.5 entonces
       m='Aprobado'
   sino  
       m='Desaprobado'
   fin de si
  return m
fin de funcion

Algoritmo
1.- inicio
2.- p=0.0,c='',nt1=0.0,nt2=0.0,nt3=0.0
3.-leer nt1,nt2,nt3
4.-p=fpromedio(nt1,nt2,nt3) 
    c=fcondicion(p) 
5.-escribir p,c
6.-fin
Crear una función que lea un número entero entre 1 y 10, y nos muestre por pantalla el
número en letra.

**Funcion
funcion fmensaje(n:entero):cadena
       segun sea 
  caso 1: m='A'
  caso 2: m='B'
         caso 3: m='C'   
  caso 4: m='D'
  caso 5: m='E'
  caso 6: m='F'
  caso 7: m='G'
  caso 8: m='H'
  caso 9: m='I'
  caso 10: m='J'
         otro caso:
   m='Numero fuera del rango 1-10!!!!!!!'
      fin de segun 
      retornar(m) 
fin de funcion

**Analisis de datos
E:n1(numero)
S:letra(numero en letra)

**Algoritmo
1.-inicio
2.-n1=0,letra=''
3.-leer n1
4.-letra=fmensaje(n1)
5.-escribir letra
6.-fin

**Prueba de escritorio
n1=5
letra='E'

Algoritmos-while

Diseñar un algoritmo que permita 
determinar el factorial de un determinado número.

**Analisis de datos
E:num(num)
S:f(factorial de num)

**Algoritmo
1.-Inicio
2.-num=0,f=0
3.-leer num
4.-i=0
   f=1
   mientras i< num
        i=i+1
 fac=fac*i
   fin_mientras
6.-Escribir fac
7.-Fin

**Prueba de escritorio
num=6
f=720

Dado una cantidad determinar la suma de sus dígitos.

**Analisis de datos
E:n(número)
S:sd(suma de dígitos)

**Algoritmo
1.-inicio
2.-n=0,r=0,sd=0
3.-leer n
4.-mientras n!=0
 r=n-(entero(n/10)*10)
     sd=sd+r
     n=entero(n/10)
   fin de mientras
5.-escribir sd
6.-fin

**Prueba de escritorio
n=356
sd=14
Diseñar un algoritmo que permita determinar
la total a pagar de una compra, ingresando 
producto,precio y cantidad.El algoritmo 
preguntara al usuario si desea seguir 
comprando.
   
Analisis de datos
 E:p,pc,c
 S:tp(total a pagar)

Algoritmo
 1.-inicio
 2.-p='',pc=0.0,c=0,op='',tp=0.0
 3.-mientras op!='no'
        leer p,pc,c,op
        tp=tp+(pc*c) 
    fin de mientras 
4.-escribir tp
5.-fin 
 Calcular la suma de n numeros ingresados hasta ingresar -1.

**Analisis de datos
E:n(número)
S:sd(suma de dígitos)

**Algoritmo
1.-inicio
2.-n=0,sum=0
3.-mientras n!=-1
     leer n
     sum=sum+n
   fin mientras
   
4.-escribir sum
6.-fin

**Prueba de escritorio
n=1,2,3,4,5,6,7,8,9,10,-1
sd=55

Algoritmos-for

Diseñar un algoritmo que permita visualizar la suma
de los n primero números enteros.

Analisis de datos
E:n(número)
S:sn(suma de números)

Algoritmo
1.-inicio
2.-n=0,sn=0,i=0 
3.-leer n
4.-para i=1,n
        sn=sn+i  
    fin de para
5.-escribir sn
6.-fin

PE
n=10
sn=55

Diseñar un algoritmo que permita visualizar la suma
de los número pares y la cantidad de los número impares
de los n primeros números.

Analsis de datos
E:n(números)
S:sp(suma de pares),ci(cantidad impares)

Algoritmo
1.-inicio
2.-sp=0,ci=0,r=0,i=0,n=0
3.-leer n
4.-para i=1,n
     r=residuo(i/2)    
     si r=0 entonces  
        sp=sp+i  
     sino   
        ci=ci+1  
     fin de si    
  fin de para
5.-escribir sp,ci
6.-fin

Prueba de Escritorio
n=10
sp=30
ci=5

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.
 
**Analisis de datos
E:n(numero de notas),nota(nota)
S:n_d(notas desaprobadas),n_a(notas aprobadas),
  p(promedio de notas),p_na(promedio notas aprobadas)
  p_nd(promedio notas desaprobadas)
  

**Algoritmo
1.-Inicio
2.-n=0,nota=0.0,n_a=0,n_d=0,p=0.0,p_na=0.0,p_nd=0.0,
   sum=0,sum1=0,acum=0,acum1=0,sum2=0
3.-leer n
4.-para i=1,n
      leer nota
   sum=0
   acum=0
   si nota>=10.5 entonces
       sum=sum+nota
       acum=acum+1
   sino
       sum1=sum1+nota
       acum1=acum1+1
   fin si
      sum2=sum2+nota
   fin de para
   p=sum2/n
   n_a=acum
   n_d=acum1
   p_na=sum/acum
   p_nd= sum1/acum1  
5.-escribir p,n_a,n_d,p_na,p_nd
6.-Fin

**Prueba de escritorio
n=4
nota(1)=14.5
nota(2)=18.5
nota(3)=4.5
nota(4)=9
p=11.625
n_a=2
n_d=2
p_na=16.5
p_nd= 6.75

Diseñar un algoritmo que permita
visualizar el sueldo promedio, el sueldo mayor y menor de n 
trabajadores ingresados. 

**Analisis de datos
  E:n(cantidad de trabajadores),s(sueldo)
  S:s_p(sueldo promedio),s_m(mayor sueldo),s_m(menor sueldo)
   
**Algoritmo
  1.-Inicio
  2.-n=0,sueldo=0.0,s_p=0.0,sum=0,s_m=0.0,s_mn=0.0,i=0
  3.-s_mn=999999
     leer n
     sum=0
     para i=1,n
        leer sueldo
 sum=sum+sueldo
 s_m=0
   
 if s_m<=sueldo
    s_m=sueldo
 fin si
   
 if sueldo<=s_mn
           s_mn=sueldo
        fin si    
   
    fin de para
    s_p=sum/n
 4.-escribir s_p,s_m ,s_mn  
 5.-Fin  
   
  **Prueba de Escritorio
  n=5
  sueldo(1)=200
  sueldo(2)=256
  sueldo(3)=403.5
  sueldo(4)=500
  sueldo(5)=135.5
  sum=1495
  s_p=299
  s_m=500
  s_mn=135.5

martes, 6 de diciembre de 2011

Algoritmo-Switch

Diseñar un algoritmo que permita visualizar
la etapa de vida de una persona mediante su edad,
teniendo en cuenta el siguiente rango.

0 a  4--->infancia
5 a 10--->niñez
11 a 14--->pubertad
15 a 19--->adolescencia
20 a 25--->juventud
25 a mas  adultez

Analisis de datos
E:edad
S:ev(etapa de vida)

Algoritmo
1.-inicio
2.-edad=0,ev=''
3.-leer edad
4.-según sea edad
      caso 0..4
           ev='Infancia'
      caso 5..10
           ev='niñez'
      caso 11..14
           ev='Pubertad'
      caso 15..19
           ev='Adolecencia'
      caso 20..25
           ev='Juventud'
      otro caso
           ev='Adultez'
   fin de según
5.-escribir ev
6.-fin

  **Prueba de escritorio
edad=13
ev='Pubertad'

Diseñar un algoritmo que permita visualizar 
el nombre del mes y la estación del año mediante un número
ingresado.

Analisis de datos
E:n(número)
S:m(nombre del mes),e(estación)

Algoritmo
1.-inicio
2.-n=0,m='',e=''
3.-leer n
4.-según sea n
      caso 1:m='Enero'
      caso 2:m='Febrero'
      caso 3:m='Marzo'
      caso 4:m='Abril'
      caso 5:m='Mayo'
      caso 6:m='Junio'
      caso 7:m='Julio'
      caso 8:m='Agosto'
      caso 9:m='Septiembre'
      caso 10:m='Octubre'
      caso 11:m='Noviembre'
      caso 12:m='Diciembre'
   fin de según  
   según sea n
        caso 1,2,3
             e='Verano'
        caso 4,5,6
             e='Otoño'
        caso 7,8,9
             e='Invierno'
        caso 10,11,12
             e='Primavera'   
   fin de según 
5.-escribir m,e
6.-fin

  **Prueba de escritorio
n=5     m='Mayo'    e='Otoño'
En una tienda de accesorios para computadoras, el precio 
de venta unitario de los diskett es el mismo para cualquier
marca,sin embargo el descuento varía de acuerdo a la marca y se 
establece en la siguiente tabla.
Determinar el importe a pagar por la cantidad de diskett
es comprados de una sola marca, considerando que no se 
paga impuestos.
Mostrar importe bruto, descuento e importe a pagar.
   Marca     Dscto(%)
    M         10 //Maxell
    N         15 //NCR
    S         20 //Sentinel
    B         25 //Burroughs
    G         30 //Golgstar

   **Analisis de datos
   E:p(precio unitario diskett),cant(cantidad de diskkettes),m(marca)
   S:im_b(importe bruto),d(descuento),im_p(importe a pagar)
     
   **Algoritmo
   1.-Inicio
   2.-p=0.0,im_b=0.0,d=0.0,im_p=0.0,cant=0,m=''
   3.-leer p,cant,m
   4.-im_b=p*cant 
      segun sea m
           caso 'M':
      d=(10/100)*im_b
           caso 'N':
      d=(15/100)*im_b    
    caso 'S':
      d=(20/100)*im_b    
    caso 'B':
      d=(25/100)*im_b    
    caso 'G':
      d=(30/100)*im_b    
       fin de segun
     im_p=im_b-d

    5.-Escribir im_b,d,im_p
    6.-Fin
 
   **Prueba de escritorio
   P=4.50     cant=6   m=S
   im_b=27    d=5.4    im_p=21.6

Desarrolle un algoritmo que permita convertir calificaciones numéricas, según la siguiente tabla:
A = 19 y 20, B =16, 17 y 18, C = 13, 14 y 15, D = 10, 11 y 12,
E = 1 hasta el 9. Se asume que la nota está comprendida
entre 1 y 20.
    Por ejemplo:
    Puntaje =15
    Nota=”C”
    
 **Analisis de datos
   E:n(nota)
   S:not(A,B,C,D o E segun corresponda)
   
   **Algoritmo
   1.-Inicio 
   2.-n=0,not=''
   3.-leer n
   4.-segun sea n
          caso 1..9
        not='E'
   caso 10...12
        not='D'
   caso 13..15
        not='C'
   caso 16..18
        not='B'
   caso 19..20
        not='A'
   otro caso
        not='La nota es entre 1 y 20'
    fin de segun
    5.-escribir not
    6.-Fin 
 
   **Prueba de Escritorio
   n=15
   not='C'
   
Diseñar un algoritmo que permita determinar
el importe a pagar por un alumno de un instituto cuya cuota 
tiene un porcentaje de descuento que se establece en la 
siguiente tabla y está en función al colegio de procedencia
del alumno; asimismo los importe están exonerados de impuestos.
 
       INSTITUTOS
    Colegio    A   B   C
    Nacional  50  40  30
   Particular 25  20  15
   
   **Analisis de datos
   E:cuo(cuota),m(Colegio),colegio(Particular o nacional)
   S:im_p(importe a pagar)
   
   
   **Algoritmo
   1.-Inicio
   2.-cuo=0.0,m='',colegio='',im_p=0.0,d=0.0
   3.-leer cuo,m
   4.-segun sea m
        caso 'A':
  leer colegio
                si colegio='N' entonces
                    d=cuo*(50/100)
                sino
      d=cuo*(25/100)
                fin de si  
 caso 'B':
  leer colegio
                si colegio='N' entonces
                    d=cuo*(40/100)
                sino
      d=cuo*(20/100)
                fin de si  
         caso 'C':
         leer colegio
                si colegio='N' entonces
                    d=cuo*(30/100)
                sino
    d=cuo*(15/100)
                fin de si
 fin de segun
 im_p=cuo-d
 5.-Escribir im_p
 6.-Fin
 
   **Prueba de escritorio
   cuo=650         m=A
   colegio='P'     d=162.5
   im_p=487.5

Algoritmos-if

Diseñar un algoritmo que permita determinar la edad de un alumno mediante su año de nacimiento y el año actual, Emitiendo un mensaje si es mayor de edad.Analisis de datos
E:ac(año actual),an(año de nacimiento)
S:edad,m(mensaje)

Algoritmo
1.-inicio
2.-ac=0,an=0,edad=0,m=''
3.-leer ac,an
4.-edad=ac-an
   si edad>=18 entonces
      m='Mayor de edad'
   sino
      m='Menor de edad'    
   fin de si
5.-escribir edad,m
6.-fin

PE
ac=2011
an=1979
edad=32
m='Mayor de edad'

Diseñar un algoritmo que  permita determinar el promedio 
notas de un alumno y su condición (aprobado o desaprobado)
mediante tres notas ingresadas, Teniendo en cuenta el 
puntaje aprobatorio debe ser mayor igual a 10,5.

*Analisis de datos
E:nt1,nt2,nt3
S:p(promedio),c(condición del alumno)

Algoritmo
1.-inicio
2.-nt1=0.0,nt2=0.0,nt3=0.0,p=0.0,c=''
3.-leer nt1,nt2,nt3
4.-p=(nt1+nt2+nt3)/3
   si p>=10.5 entonces
      c='Aprobado'
   sino
      c='Desaprobado'    
   fin de si
4.-escribir p,c
5.-fin

PE
nt1=12  nt2=14  nt3=16  p=14  c='Aprobado'

Diseñar un algoritmo que permita determinar el número mayor
y menor de dos números ingresados.

E:n1,n2
S:nmy(número mayor),nmn(número menor)

1.-inicio
2.-leer n1,n2
3.-si n1>n2 entonces
      nmy=n1
      nmn=n2
   sino
  
    nmy=n2
      nmn=n1
   fin de si
4.-escribir nmy,nmn
5.-fin 

Diseñar un algoritmo que permita determinar el promedio
 de un alumno mediante sus tres notas y su estado mediante
 las siguientes condiciones.

*  promedio<10.5     =>'Pesimo'
*  promedio>=10.5-16 =>'Regular'
*  promedio>16-20   =>'Excelente'

Analisis de datos
E:nt1,nt2,nt3
S:p(promedio),e(estado)

Algoritmo
1.-inicio
2.-nt1=0.0,nt2=0.0,nt3=0.0,p=0.0,e=''
3.-leer nt1,nt2,nt3
4.-p=(nt1+nt2+nt3)/3
   si p<10.5 entonces
      e='Pesimo'
   sino si p>=10.5 y p<=16 entonces
      e='Regular'
   sino si p>16 y p<=20 entonces
      e='Excelente'
   fin de si
5.-escribir p,e
6.-fin
PE
nt1=12  nt2=14   nt3=16
p=14  e='Regular'

miércoles, 16 de noviembre de 2011

Algoritmos

Para tratar de entender desde cero empezaremos por algoritmos .
Qué es ?
- Un algoritmo es un grupo de instrucciones que definen la secuencia de operaciones a realizar para resolver una clase de problema.
-Secuencia ordenada de pasos que nos sirve para resolver un problema

Características :
+Tiene que ser preciso.
+Tiene que estar bien definido.
+Tiene que ser finito.

Estos pueden ser expresados de muchas maneras, incluyendo al lenguaje natural, pseudocódigo, diagramas de flujo y lenguajes de programación.

Es decir INSTRUCCIONES QUE DEFINEN LA SECUENCIA DE OPERACIONES A REALIZAR PARA RESOLVER UNA CLASE DE PROBLEMA eso si EN UNA SECUENCIA ORDENADA DE PASOS! claro recordemos como nuestros profes nos decian ..A ver dime el algoritmo para venir a esta clase  y la clásica ..me levante, me bañe, me cambie, tome mi desayuno..tome un bus,etc  y eso era! No omitir nada y que todo sea secuencial y detalladamente Correcto!.

Para siempre tener claro lo que tendremos que que hacer antes de pasar a programar en cualquier lenguaje de programacion(python,java,visual,c++,etc) realizaremos Analisis de datos  ,Algoritmo y Prueba de escritorio.

Comenzaremos con ejercicios simples que sólo tendremos que usar operaciones basicas luego seguiremos con aquellos que necesiten los diferentes tipos de estructura for,if,while,do-while,etc.

Algoritmos 1

Diseñar un algoritmo que permita convertir
 una cantidad de dolares a una cantidad soles,
teniendo en cuenta el tipo de cambio
 del dolar.

/+/+Analisis de datos/+/+
E:cd(cantidad dolares),tc(tipo de cambio)   
S:cs(cantidad soles)

/+/+Algoritmo/+/+
1.-inicio
2.-cd=0.0,tc=0.0,cs=0.0
3.-leer cd,tc
4.-cs=cd*tc
5.-escribir cs
6.-fin

/+/+Prueba de Escritorio/+/+
cd=375
tc=2.75
cs=1031.25

Diseñar un algoritmo que permita realizar
las operaciones aritmeticas basicas como:
suma,resta,mult,división,residuo,potencia,
raiz cuadrada, mediante dos números 
ingresados.

+/+/Analisis de datos+/+/
E:n1,n2
S:s(suma),r(resta),m(mult),d(div),
rs(residuo),p(potencia),rc(raiz cuadrada)

+/+/Algoritmo+/+/
1.-inicio
2.n1=0,n2=0,s=0,r=0,m=0,d=0.0,rs=0,p=0,rc=0.0 
3.-leer n1,n2
4.-s=n1+n2
   r=n1-n2
   m=n1*n2
   d=n1/n2
   rs=residuo(n1/n2)  
   p=potencia(n1,n2)   
   rc=raiz(n1)        
5.-escribir s,r,m,d,rs,p,rc
6.-fin 
 
+/+/Prueba de Escritorio+/+/
n1=4   s=6  , r=2  , m=8 , d=2
n2=2   rs=0 , p=16 ,rc=2


Diseñar un algoritmo que permita distribuir una cantidad
ingresada en soles y Visualice la cantidad de billetes de
cada denominación de billetes de 200,100,50,20,10 y 5.

/+/Analisis de datos/+/
Entrada(E):cs(cantidad en soles)
Salida(S):b200(billetes 200),b100(billetes 100),
          b50(billetes 50),b20(billetes de 20),
          b10(billetes de 10),m5(monedas de 5)

/+/+Algoritmo/+/
1.-inicio
2.-cs=0,b200=0,b100=0,b50=0,b20=0,b10=0,m5=0,r=0
3.-leer cs
4.-b200=entero(cs/200)            
   r=residuo(cs/200)          
   b100=entero(r/100)
   r=residuo(r/100) 
   b50=entero(r/50)
   r=residuo(r/50) 
   b20=entero(r/20)
   r=residuo(r/20)
   b10=entero(r/10)
   r=residuo(r/10)
   m5=entero(r/5)
5.-escribir b200,b100,b50,b20,b10,m5
6.-Fin

/+/+ Prueba de escritorio/+/
cs=385
b200=1   b100=1   b50=1
b20=1    b10=1    m5=1

Diseñar un algoritmo que permita determinar el sueldo neto de un empleado, al cual se le realiza un descuento del 13%(por planilla) de su sueldo bruto que se calcula en base a las horas trabajadas y su tarifa por hora trabajada. 
Visualizar sueldo bruto,descuento y sueldo neto a pagar.

/+/+Analisis de datos/+/+
E:hr(hora trabajada),th(tarifa por hora)
S:sb(sueldo bruto)d(descuento),sn(sueldo neto)

/+/+Algoritmo/+/+
1.-inicio
2.-hr=0,th=0,sb=0.0,d=0.0,sn=0.0
3.-leer hr,th
4.-sb=ht * th
   d=sb * 0.13
   sn=sb - d
5.-escribir sb,d,sn
6.-fin

/+/+Prueba de Escritorio/+/+
ht=160
th=20
sb=3600
d=468
sn=3.132