lunes, 29 de junio de 2020

Algoritmo pseudocodigo Convertir medidas de temperatura equivalente de una (Celcius, farhenheint, kelvin, rankine) a todas (Celcius, farhenheint, kelvin, rankine) y de una a una

Saludos a todos.

En el algoritmo de conversión de unidades de medidas aprendimos que para convertir lo principal era saber usar el factor de conversión. Para el siguiente caso también usaremos este método con la salvedad que al ser temperatura, el asunto cambia ya que de una a otra medida se usan formulas de intercambio ya preestablecidas y básicas de googlear (je).

Significa que:

1. Para convertir de una grado 'X' a otro 'Y' haremos el equivalente de 'X' a grados 'Celcius' y, a su vez, convertiremos esta conversión a grados 'Y'.

De esta manera 

 Variable Xgrados a Ygrados

Lo que haremos es
  
 tem1 = Variable X *  1 grado celcius                    
                                   ¿? equivalente grados X

Luego

tem1 *  1 grado Y
             ¿? equivalente grados celcius

Lo mas importante a saber es que las formulas de un grado X a grados Celsius no son las mismas de Celsius a grados Y

Por eso prestar atención a estas formulas de conversión

De grados X a Celsius

farhenheint = (X-32)/1.8
kelvin =  X-273.15 
rankine = (X-491.67)*0.56


Y de Celsius a X

farhenheint = (Celcius*1.8)+32 
kelvin = Celcius+273.15
rankine = (Celcius*1.8)+491.67

Con esta teoría básica nuestro algoritmo se resolvería de la siguiente manera

Inicio programa temperatura(tem1)

t[1] = tem1*1 
t[1] = (tem1-32)/1.8
t[1] = tem1-273.15 
t[1] = (tem1-491.67)*0.56

mostrar 'de: (1) celcius, (2) farhenheint, (3) kelvin, (4) rankine'
leer i


cc[1] = t(i)*1 
cc[2] = (t(i)*1.8)+32
cc[3] = t(i)+273.15
cc[4] = (t(i)*1.8)+491.67

ts[1] = 'celcius'
ts[1] = 'farhenheit'
ts[1] = 'kelvin'
ts[1] = 'rankine'

mostrar 'a: (1) Todas las restantes unidades, (2) unidad especifica'
leer j
Si j=1
 f=1
   mientras que f<=4
   mostrar cc(f),' ', ts(f)
   f = f+1
 fin mientras
   
   si no

 mostrar 'convertir a: (1) celcius, (2) farhenheint, (3) kelvin, (4) rankine'
 leer z
 mostrar t(i),' ', ts(i), ' son iguales a: ',cc(z),' ',ts(z)
 mostrar 'quieres convertir este valor a otra unidad (s/n);'
 leer volveraconvertir
    Mientras que  volveraconvertir = 's'
        tem1 = cc(z)
        i = z
        mostrar 'convertir a: (1) celcius, (2) farhenheint, (3) kelvin, (4) rankine'
        leer = z
        mostrar t(i),' ', ts(i), ' son iguales a: ',cc(z),' ',ts(z)
        mostrar 'quieres convertir este valor a otra unidad (s/n);'
        leer volveraconvertir    
    fin mientras  
Fin si
Fin

Ahora lo único que tenemos que hacer es que el programa principal envie un valor inicial al programa Temperatura.

Inicio Principal
 leer tem1
 llamar temperatura(tem1)
Fin

domingo, 21 de junio de 2020

Proyecto algoritmo convertidor de unidades del sistema internacional y americano de medidas (longitud, masa, área o superficie, volumen)

Hola a todos. 

Al igual que la calculadora recursiva que realiza operaciones básicas y funciones algo mas complicadas. A continuación se trata de explicar un algoritmo que realice conversiones tanto de la mayoría o de las mas conocidas unidades del sistema internacional de medidas como algunas del sistema ingles o americano.

Para esto tener en cuenta que:

1. Se presentan dos tipos de alternativas: una que introducido un valor y seleccionada una medida, podrá realizar todos sus equivalentes pertenecientes a su tipo de medición.

2. Por otro lado, también puede convertir de una unidad 'x' a otro unidad 'y' según se le indique. A su vez, esta unidad obtenida podrá ser convertida a otra y así sucesivamente.

Lo único y mas importante es saber como funciona el sistema de unidades y como se pueden obtener valores equivalentes de las mismas medidas.

Por ejemplo, esto aplicaría tanto para longitud, masa, área o superficie y volumen. Lo único que tenemos que saber o dominar es el factor de conversión. De esta manera, simplemente, le damos un valor especifico o unidad mínima y, a su vez, vamos asignando según corresponda a los demás valores de su unidad de medición.

En el caso de longitud las unidades de medición son: milímetros (mm), centímetros (cm), metros (m) y kilómetros (km). Estas son las mas conocidas y usadas. Ademas que pertenecen al sistema internacional.

Si tomamos al milímetro como unidad mínima su valor sería el de 1. Así pues mm = 1

Ahora preguntamos cuantos mm hay en un cm. La respuesta es 10 centímetros. Entonces 1 cm = 10 mm

Hacemos lo mismo para las dos unidades restantes que vamos a usar.

1 m = 100 cm = 1 000 mm
1 km = 1 000 m =100 000 cm = 1 000 000 mm

Con esto aplicamos el factor de conversión. Pongamos que queremos convertir 5 km a cm

5 km *  10^6 mm *  1 cm             =  5 * 10^5 = 500 000 cm
            1km               10 mm

Sabiendo esta teoría básica nuestro algoritmo seria mas o menos así:

longitud(a1)

l[1] = 10^0
l[2] = 10^1
l[3] = 10^3
l[4] = 10^6

s[1] = 'milimetros' 
s[2] = 'centimetros'
s[3] = 'metros'
s[4] = 'kilometros'


mostrar ''de: (1) milimetros, (2) centimetros, (3) metros, (4) kilometros'
leer i
mostrar 'a: (1) Todas las restantes unidades, (2) unidad especifica'
leer j


Si j = 1 

   t = 1
   Mientras t<=4 hacer
      valor =  a1* l[i] * 1/l[t]
      mostrar valor, s[t]
      t = t +1
   fin mientras

si no
   
   mostrar 'convertir a: (1) milimetros, (2) centimetros, (3) metros, (4) kilometros'
   leer f
   valor =  valor =  a1* l[i] * 1/l[f]
   mostrar 'a1,' ', s[i], ' son iguales a: ',valor,' ',s[f]
   mostrar 'quieres volver a convertir (s/n):'
   leer volveraconvertir
   
         Mientras volveraconvertir = 's' hacer
               a1 = valor
               i = f
               mostrar 'convertir a: (1) milimetros, (2) centimetros, (3) metros, (4)kilometros'
               leer f
               valor = a1* l[i] * 1/l[f]
               mostrar 'a1,' ', s[i], ' son iguales a: ',valor,' ',s[f]
               mostrar 'quieres volver a convertir (s/n):'
               leer volver a convertir   
          fin mientras 
fin si    

Como podemos ver, esta es la estructura de ejecución que le damos a un programa o procedimiento llamado 'longitud' que nos ayudará a obtener todas las conversiones que queramos de las unidades de longitud especificadas.

Ahora, lo único que tenemos que hacer es realizar un programa central que llame a este programa. Para esto sabemos que el valor dado o argumento de envio es un numero que se le asignó la variable de 'a1'.

Programa convertidor de unidades

Inicio
   mostrar ''Escoge tu opción a convertir de la siguiente lista de sistema de unidades: (1) longitud, (3)         superficie, (4) volumen, (5) masa'
   leer opcion
   mostrar 'introduce un valor a convertir:'
   leer val1
      
         Si opcion = 1 
              llamar longitud (val1)
        fin si 
Fin

Sabiendo como funciona para longitud lo mismo aplicaríamos para volumen, masa y superficie teniendo en cuenta que para todas ellas aplican los múltiplos, los sufijos y el factor de conversión como regla universal.

sábado, 20 de junio de 2020

Proyecto algoritmo calculadora recursiva/sucesiva básica (suma, resta, multiplicación, división) y funciones trigonométricas (sen, cos, tan)

Saludos a todos.

A continuación una explicación de como hacer una calculadora en dfd que realice las operaciones básicas sumadas a las funciones trigonométricas.

En primer lugar tenemos que entender el funcionamiento del proyecto.

1. Se necesita mínimo dos valores reales para las 4 operaciones básicas. En el caso de potencia, raíz cuadrada, y demás funciones, el algoritmo puede arrancar con un solo valor.

2. Se necesita poner en pantalla alternativas que le irán indicando al usuario si seguir operando o no, y que operación realizar. 

Para esto: suma se pondrá como operador '+', resta '-', etc.

3. Si no hay mas operaciones ('n') se mostrara el resultado final. Por lo contrario se seguirá realizando las operaciones según el usuario introduzca los datos específicos.

El algoritmo funciona mas o menos de la siguiente manera:

Inicio programa calculadora

real numero1, numero2
caracter operacion

Mostrar 'Introducir numero 1'
Leer numero1
Mostrar 'escoge tu operacion: (+) suma, (-) resta... (/) division'
Leer operacion
Llamar subprograma calcular(numero1, operacion)

Fin programa calculadora

calcular(n1,o)

real numero2
 
Mostrar 'Introduce tu segundo valor:'
Leer numero2
Si o='+'
operacion=n1+numero2
fin si

Si o='-'
operacion=n1-numero2 
fin si
.
.
.

Si o='/' and n2<>0
operacion=n1/numero2      
fin si

Mostrar operacion

Regresar

Hasta este punto la calculadora resuelve la operación de dos variables introducidas por teclado, pero necesitamos que sea mas dinámica y cada vez que le indique que haya una operación mas, la resuelva hasta que le indique lo contrario.

El algoritmo funcionaria mas o menos así, teniendo como base el anterior:

Inicio programa calculadora

mostrar 'introduce tu primer numero:'
leer val1
mostrar 'operacion: (+) suma... (/) division'
leer operador
mostrar 'introduce tu segundo numero:'
leer val2
llamar calculador (val1, val2, operador)

fin calculadora

Calculador()
  operar=1
si tag='+'
  operacion=a1+a2
  mostrar 'hay mas operacion (s/n):'
  leer respuesta
     si respues='s'
       numero1=operacion
       mostrar 'operacion: (+) suma... (/) division'
       leer operador
       mostrar 'introduce tu segundo numero:'
       leer valor2 
       llamar calculador (numero1, valor2, operador)
     si no
       mostrar operacion
     fin si
fin si    
.
.
.

si tag='/' and a2<>0
  operacion=a1/a2
  mostrar 'hay mas operacion (s/n):'
  leer respuesta
     si respues='s'
       numero1=operacion
       mostrar 'operacion: (+) suma... (/) division'
       leer operador
       mostrar 'introduce tu segundo numero:'
       leer valor2 
       llamar calculador (numero1, valor2, operador)
     si no
       mostrar operacion
     fin si
si no 
     si a2=0
        mostrar 'error! no se puede dividir entre cero'
        mostrar 'introduce tu nuevo valor:' 
        leer a2
        llamar calcular (a1,a2,tag) 
     si no
        operacion=a1/a2
        mostrar 'hay mas operacion (s/n):'
        leer respuesta
        si respues='s'
           numero1=operacion
           mostrar 'operacion: (+) suma... (/) division'
           leer operador
           mostrar 'introduce tu segundo numero:'
           leer valor2 
           llamar calculador (numero1, valor2, operador)
        si no
           mostrar operacion
        fin si
     fin si
fin si   
regresar

Ahora hacemos un poco mas desarrollada nuestra aplicación no solo con operación básicas (suma, resta... división) si no que también podrá realizar operaciones de potencia, raíz cuadrada y todas las funciones trigonométricas que dfd permite realizar.

Para eso solo modificaremos el algoritmo calculadora de la siguiente manera:

mostrar 'introduce tu primer numero:'
leer val1
mostar 'operacion: (+) suma... (p) potencia, (r) raiz cuadrada, (x) otras funciones'
leer operador
si operador = 'p'
   mostar 'elevar a:'
   leer val2
   llamar potencia(val1,val2)
si no 
   si operador = 'r'
     llamar raizcuadrada(val1)
     si no
        si operador = 'x'
           llamar funciones(val1)
         si no
             mostrar 'introduce tu segundo numero:'
             leer val2
             llamar calcular(val1,val2,operador)
          fin
       fin
fin  

Ahora lo único que tenemos que estructurar son tres nuevos programas para potencia, raiz y funciones trigonométricas.

potencia(p1,p2)
 operacion = p1^p2
 mostrar 'hay mas operaciones (s/n):'
 leer respuesta
   si respuesta = 's'
      val1 = operacion
      mostrar 'operacion: (+)suma...'
      leer tagp
          si tagp ='p'
            mostrar 'elevar a:'
            leer val2
            llamar potencia(val1,val2)
           si no
             si tagp = 'r'
                 llamar raizcuadrada(val1)
             si no
                  si tagp = 'x'
                     llamar funciones(val1)
                  si no
                      mostrar 'introduce tu segundo numero:'
                      leer val2
                       llamar calculadora(val1, val2, tagp) 
                   fin si
              fin si
            fin si
      si no
         mostrar operacion
      fin si

raizcuadrada(a2)
operacion = sqrt(a2)
de aqui en adelante copiar todo esto

funciones(a1)
  mostrar 'que funcion deseas realizar: (1) valor absoluto, (2) division entera, (3) resto de division, (4) logaritmo decimal, (5) logaritmo neperiano, (6) seno, (7)  coseno, (8)tangente'  
  leer funcion
     si funcion = 1 
        absoluto = abs(a1)
        a1 = absoluto
     fin si

     si funcion = 2
        mostrar 'dividir entre:'
        leer dividir
        entero = trunc(a1/dividir)
        a1 = entero
     fin si

     si funcion = 3 
        mostrar 'dividir entre:'
        leer dividir
        resto = a1 mod dividir 
        a1 = resto
     fin si

     si funcion = 4 
        logaritmo = log(a1)
        a1=logaritmo
     fin si

     si funcion = 5 
        logaritmoneperiano = ln(a1)
        a1 = logaritmoneperiano
     fin si

     si funcion = 6 
        seno = sen(a1)
        a1=sen
     fin si

     si funcion = 7 
        coseno = cos(a1)
        a1=coseno
     fin si

     si funcion = 8
        tangente = tan(a1)
        a1=tangente
     fin si
  mostrar 'hay mas operaciones (s/n):'
  leer respuesta
  si respuesta = 's'
     leer a2
     llamar calcular(a1,a2,respuesta)
  si no
     mostrar a1
  fin si

martes, 2 de junio de 2020

Ejercicio propuesto #2 (02.06.2020)


Una empresa constructora vende terrenos con la forma A de la figura Realice un algoritmo y represéntelo mediante un diagrama de flujo y el pseudocódigo para obtener el área respectiva de un terreno de medidas de cualquier valor. Para resolver este problema se debe identificar que la forma A está compuesta por dos figuras: un triángulo de base B y de altura (A - C); y por otro lado, un rectángulo que tiene base B y altura C.

Si la figura es mas o menos así: 


La resolución sería la siguiente:



Posible pseudocodigo:

algoritmo área de figura A
    var
    entero : b, c
    inicio
     leer (b, c)
     altura de triangulo = a - c
     area de triangulo = (altura de triangulo * b) /2
     area de rectangulo = b * c
 
     area total de la figura = area de triangulo + area de rectangulo

 escribir área total de la figura
fin