No es un bug, es una característica no documentada

martes, 14 de octubre de 2014

Programación. Resolución de problemas (III)

20:25 Posted by Inazio , No comments
Tipo real

Ejemplos de código

Algoritmo longitudCircunferencia
{Lee del teclado el radio de una circunferencia y escribe por pantalla su longitud}
constantes
            pi=3.1416;
variables
            radio:real
principio
            escribirCadena(pantalla,’Escribe radio de circunferencia’);
            leerReal(teclado,radio);
            escribirCadena(pantalla,’La longitud de circunferencia es:’);
            escribirReal(pantalla,2*pi*radio);
fin

Algoritmo ecuacionSegundoGrado
{Resuelve ecuación de segundo ax2+bx+c=0 y escribe resultado por pantalla}
variables
            a,b,c:real;
            discriminante:real;
            termino1,termino2:real;
principio
            escribirCadena(‘Vamos a resolver ecuación de segundo grado’);
            escribirCadena(‘Introduce a:’);
            leerReal(teclado,a);
            escribirCadena(‘Introduce b);
            leerReal(teclado,b);
            escribirCadena(‘Introduce c);
            leerReal(teclado,c);

            discriminante:=b*b-4.0*a*c; /*Discriminante es el contenido de la raíz para resolver */
            termino1:=-b/(2.0*a);
            termino2:=sqrt(abs(discriminante))/(2.0*a);

            si discriminant>=0
            entonces /*las dos raíces son iguales*/
                        escribirCadena(pantalla,’Primera raíz’);
                        escribirReal(pantalla,termino1+termino2);
                        acabarLinea(pantalla);

                        escribirCadena(pantalla,’Segunda raíz’);
                        escribirReal(pantalla,termino1-termino2);
                        acabarLinea(pantalla);

            si no /*Las dos raíces son complejas conjugadas*/
                        escribirCadena(pantalla,’Primera raíz, parte real’);
                        escribirReal(pantalla,termino1);
                        escribirCadena(pantalla,’Parte imaginaria’);
                        escribirReal(pantalla,termino2);
                        acabarLinea(pantalla);

                        escribirCadena(pantalla,’Segunda raíz, parte real’);
                        escribirReal(pantalla,termino1);
                        escribirCadena(pantalla,’Parte imaginaria’);
                        escribirReal(pantalla,-termino2);
                        acabarLinea(pantalla);
            fsi
fin

/* De la raíz cuadrada de i à -1, si el discriminante es negativo, se obtendrá un número complejo.
Raíz compleja conjugada. Parte real à Parte imaginaria E
Si el discriminante es positivo, se suma. Si es negativo, se mostraría 3±2i por ejemplo*/

Algoritmo elevar
{Imprimir por pantalla el valor de xn}
variables
            resultado,x:real;
            indice,n:entero;
principio
            escribirCadena(pantalla,’Introduce el valor de x’);
            leerReal(teclado,x);
            escribirCadena(pantalla,’Introduce el valor de n’);
            leerEntero(teclado,n);
            resultado:=1.0 /*Resultado=x0*/
            indice:=1;

            mientras que indice<=absn hacer
                        resultado:=resultado*x;
                        indice:=indice+1;
            fmq

            /* resultado=x(absn)*/
            Si n<0 entonces
                        Resultado=1.0/resultado
            fsi
            escribirCadena(pantalla,’El resultado es:’);
            escribirReal(pantalla,resultado);
fin

Algoritmo calcularValorE
/* Calcula el valor del número E sabiendo que ex=1+x1 | +22n | + … e imprime por pantalla el valor calculado. Se suman para x=1.0 todos aquellos términos de la serie cuyo valor sea mayor que la constante cotaError */
constante
            cotaError:=1.0E-5;
variables
            valorDeE:real;
            termino:real;
            indice:entero;
principio
            termino:=1.0 /* Valor del primer término de la serie */
            valorDeE:=termino;
            indice:=0;
            mientras que termino<cotaError hacer
                        indice:=indice+1;
                        termino:=termino/indice;
                        valorDeE:=valorDeE+termino;
            fmq
            escribirReal(pantalla,valorDeE);
fin

0 comentarios:

Publicar un comentario