InicioApuntes Y MonografiasEjercicios resueltos en pseudologico, y traducidos en pascal

Ejercicios resueltos en pseudologico, y traducidos en pascal

Bienvenidos a mi primer POST!!

A continuacion voy a compartir ejercicios de resolucion de algoritmos, que aprendi hasta ahora, aplicando distintos metodos, y conceptos de la materia. ( Introduccion a la algoritmica y la programacion)

Antes que nada me gustaría aclarar, que los ejercicios fueron resueltos por mi, por lo tanto pido disculpas por algún error que pueda haber cometido!!
También contarles que hay ciertas convenciones que no pude seguir por problemas con la pc. Por ejemplo el tema de identar.
Cada ejercicio esta compuesto de tres partes, una es el análisis, el cual nos va a ayudar a resolver el problema del algoritmo, el diseño del mismo y su traducción a Pascal.


QUE LO DISFRUTEN!!


EJERCICIO 1

Desarrollar un algoritmo que calcule el volumen de aire que contiene una pelota, perfectamente esférica:

ANALISIS

DE(datos de entrada): Radio de la esfera
DS(datos de salida): Volumen de la esfera
Debo saber que: Volumen= 4/3 * PI * radio^3

DISEÑO

Algoritmo Vesfera
Léxico
Radio, volumen : R
Inicio
Escribir ("ingrese el valor del radio de la esfera" )
Leer (Radio)
Volumen ← 4/3 * π * radio^3
Escribir ("El volumen de la esfera es", Volumen)
Fin

PASCAL

Program Ejuno;
Var Radio, Volumen, Con , con2 : Real;
Begin
Con := 3.14;
Con2:= 3/4;
Writeln ('Ingrese el valor del radio de la esfera');
Readln (Radio);
Volumen := Radio*Radio*Radio*con*con2;
Writeln ('El volumen de la esfera es', Volumen);
End.


EJERCICIO 2

Desarrollar un algoritmo que convierta un numero de segundos en su equivalente en minutos y segundos. Por ejemplo dado 1300 segundos el algoritmo deberá calcular 21 minutos 40 segundos..

ANALISIS

DE: Segundos transcurridos
DS: Su equivalente en Min-Seg
Debo saber que: El DIV me devuelve el valor entero de la división, y el MOD su resto.

DISEÑO

Algoritmo
Léxico
seg, seg2, min : Z
Inicio
Escribir ("Ingrese segundos" )
Leer (seg)
min ← seg div 60
seg ← seg mod 60
Escribir (" Los minutos y segundos equivalentes son " min "y" seg)
Fin

PASCAL

Program Minseg;
Uses crt;
Var
seg, seg2, min : Integer;
Begin
Clrscr;
Writeln ('Ingrese segundos');
Readln (seg);
min:= seg div 60;
seg2:= seg mod 60;
Writeln ('El equivalente en minutos y segundos es ', min, ' minutos ',seg2,' segundos');
End.


EJERCICIO 3

Desarrollar un algoritmo que encuentre el máximo entre 3 números:
FORMULA máximo entre dos números---> Máximo = ((a+b)+abs (a-b))/2

ANALISIS

DE: Tres números reales
DS: 1 Numero real
Debo saber que: Máximo = ((a+b)+abs (a-b))/2

DISEÑO

Algoritmo Maximo;
Léxico
a,b,c,max,maximo : R
Inicio
Escribir (“Ingrese tres números”)
Leer (a,b,c)
max ← ((a+b)+abs(a-b))/2
maximo ← ((max + c) + abs (a-b))/2
Escribir (“El máximo es”, maximo)
Fin

PASCAL

Program Maximi;
var
a,b,c,max,maximo : Real;
begin
Writeln ('Ingrese tres numeros');
Readln (a);
Readln (b);
Readln (c);
max:=((a+b)+abs(a-b))/2;
maximo:= ((max + c) + abs (max - c))/2;
Writeln ('El maximo es', maximo:10:2);
End.

EJERCICIO 4

Desarrollar un algoritmo que detecte si un numero dado es positivo o negativo.

ANALISIS

DE: un numero real
DS: Un mensaje afirmativo si el numero es negativo

DISEÑO

Algoritmo Negativo
Lexico
a : R
Inicio
Escribir(“Ingrese un numero”)
Leer (a)
Si a >= 0 entonces
Escribir (“El numero es negativo”)
Sino
Escribir (“Es positivo”)
Fin

PASCAL

Program Negative;
Uses crt;
Var
a:real;
Begin
clrscr;
Writeln ('Ingrese un numero');
Readln (a);
If a<=0 then
Writeln ('El numero es negativo')
else
Writeln ('POSITIVO');
End.

EJERCICIO 5

Elaborar un algoritmo que lea dos números desde el teclado y si el primero es mayor que el segundo, intercambie sus valores.

ANÁLISIS

DE:dos números reales
DS:dos números reales
Debo saber que: En este caso debemos intercambiar los valores SIN utilizar ningun tipo de variable auxiliar.

DISEÑO

Algoritmo Intercambiar
Léxico
a,b : R
Inicio
Escribir (“Ingrese dos numero”)
Leer (a,b)
Si a>b entonces
a ← a+b
b ← a-b
a ← a-b
Escribir (“Los números ingresados intercambiados son”,a “y”, b)
Fin

PASCAL

program Intercambiar;
Uses crt;
Var
a,b : Real;
Begin
clrscr;
Writeln ('Ingrese dos numeros');
Readln (a);
Readln (b);
If a>b then
a := a+b;
b := a-b;
a := a-b;
Writeln ('Los valores intercambiados son ', a:10:2 , ' y ', b:10:2);
End.


EJERCICIO 6

Desarrollar un algoritmo que detecte si se han introducido tres numeros en orden creciente.

ANALISIS
DE: tres numeros reales
DS: Un mensaje afirmativo si los numeros fueron ingresados en forma creciente.

DISEÑO

Algoritmo creciente
Léxico
a,b,c : R
Inicio
Escribir (“Ingrese tres números”)
Leer (a,b,c)
Si a < b < c entonces
Escribir (“Los números fueron ingresados en orden creciente”)
sino
Escribir (“No”)
Fin

PASCAL

program creciente;
Uses crt;
var
a,b,c : Real;
begin
clrscr;
Writeln ('Ingrese tres numeros');
Readln (a);
Readln (b);
Readln (c);
If (a < b) and (b< c) then
Writeln ('Los numeros fueron ingresados en orden creciente')
else
Writeln ('No');
End.

EJERCICIO 7

Desarrollar un algoritmo que lea desde el teclado el importe bruto de una factura y determine el importe neto según los siguientes criterios:
-Importe bruto menor a 20.000 → Sin descuento
-Importe bruto mayor a 20.000 → 15% de descuento

ANALISIS
DE: un numero real
DS: un numero real
Debo saber que:
-Importe bruto menor a 20.000 → Sin descuento
-Importe bruto mayor a 20.000 → 15% de descuento


DISEÑO

Algoritmo Importe
Léxico
importe:R
Inicio
Escribir (“Ingrese el importe bruto”)
Leer (importe);
Si importe > 20.000 entonces
importe ← importe + (importe * 0,15)
Escribir (“El importe mas el descuento es”, importe)
sino
importe ← importe
Escribir (“No hay descuento el importe es”, importe)
Fin


PASCAL

Program Impor;
Uses crt;
var
importe:Real;
Begin
clrscr;
Writeln ('Ingrese el importe bruto');
Readln (importe);
If importe >= 20000 then
importe := importe - (importe * 0.15);
Writeln ('El importe mas el descuento es', importe:10:2);
If importe < 20000 then
Writeln ('El importe sin descuento es', importe:10:2);
End.



EJERCICIO 8
Desarrollar un algoritmo que una vez leída una Fecha en formato dd/mm/aaaa, indique cual sera la fecha un día después.

ANALISIS

DE: 3 variables correspondientes a dd mm y aaaa
DS: 3 variables, correspondientes a dd mm y aaaa pero un dia despues

PASCAL

Program gdosEjentr;

Var

Mes31, Mes30, Mes28, Mes12, aniobisiesto : Boolean;

dia, mes, anio : integer;

Begin

{Pre-Condicion: Dia > 0, mes > 0, anio > 0}

Writeln ('Ingrese el dia mes y año en formato dd / mm / aaaa');

Readln (dia);

Readln (mes);

Readln (anio);

Mes31 := (mes= 01) or (mes= 03) or (mes= 05) or (mes= 07) or(mes= 08) or(mes= 10);

Mes30 := (mes=04) or (mes=06) or (mes=09) or (mes=11);

Mes28 := (mes=02);

Mes12 := (mes=12);

Aniobisiesto := ((anio mod 4 =0) and (anio mod 100 <> 0)) or (anio mod 400=0);

If (dia < 31) and (mes31) then

Begin

dia := dia+1;

Writeln ('La fecha un dia despues es', dia,',', mes,',', anio)

End

else begin

If ( dia < 30) and (mes30) then

Begin

dia := dia+01;

Writeln ('La fecha un dia despues es', dia,',', mes,',', anio)

End

else begin

If (dia < 28) and (mes28) then

Begin

dia := dia+1;

Writeln ('La fecha un dia despues es', dia,',', mes,',', anio)

End

else begin

If (dia =31) and (mes31) then

Begin

dia := 01;

mes := mes +1;

Writeln ('La fecha un dia despues es', dia,',', mes,',', anio)

End

else begin

If (dia = 30) and (mes30) then

Begin

dia := 01;

mes := mes +1;

Writeln ('La fecha un dia despues es', dia,',', mes,',', anio)

End

else begin

If (dia = 28) and (mes28) and (Aniobisiesto) then

Begin

dia:= dia +1;

Writeln ('La fecha un dia despues es', dia,',', mes,',', anio)

End

else begin

If (dia = 31) and ( mes12) then

Begin

dia:= 01;

mes:= 01;

anio:= anio +1;

Writeln ('La fecha un dia despues es', dia,',', mes,',', anio)

End

else begin

If (dia < 31) and (mes12) then

Begin

dia:= dia +1;

Writeln ('La fecha un dia despues es', dia,',', mes,',', anio)

End

else begin

If (dia = 28) and (mes28) then

Begin

dia := 01;

mes := mes +1;

Writeln ('La fecha un dia despues es', dia,',', mes,',', anio)

End

else begin

If (dia = 29) and (mes28) and (Aniobisiesto) then

Begin

dia := 01;

mes := mes +1;

Writeln ('La fecha un dia despues es', dia,',', mes,',', anio)

End

Else begin

Writeln ('La fecha ingresada no es valida, ingrese otra');

End;



End;

End;

End;

End;

End;

End;

End;

End;

End;

{Post-Condicion : Si (dia < 31) ^ (mes31) entonces dia, mes, anio: Resultado0

Si (dia < 30) ^ (mes30) entonces dia, mes, anio: Resultado1

Si (dia < 28) ^ (mes28) entonces dia, mes, anio: Resultado2

Si (dia = 31) ^ (mes31) entonces dia, mes, anio: Resultado3

Si (dia = 30) ^ (mes30) entonces dia, mes, anio: Resultado4

Si (dia = 28) ^ (mes28) ^ (aniobisiesto) entonces dia, mes, anio: Resultado5

Si (dia = 31) ^ (mes12) entonces dia, mes, anio: Resultado6

Si (dia < 31) ^ (mes12) entonces dia, mes, anio: Resultado7

Si (dia = 28) ^ (mes28) entonces dia, mes, anio: Resultado8

Si (dia = 29) ^ (mes28) ^ (Aniobisiesto) entonces dia, mes, anio: Resultado9

Sino La fecha ingresada es invalida}

End.

EJERCICIO 9

Desarrollar una función que permita encontrar el máximo y otra el mínimo entre 4 números reales

DISEÑO

Funcion Máximo (dato a,b,c,d : R ) → R
Lexico local
max,maxi:R
Inicio
max:= ((a+b)+abs(a-b))/2
maxi:=((max+c)+abs(max-c))/2
← ((maxi+d)+abs(maxi-d))/2
Fin

Función Mínimo (dato a,b,c,d :R) → R
Inicio
Si a<b<c<d entonces
← a
sino
si b<a<c<d entonces
← b
sino
si c<a<b<d entonces
← c
sino
si d<a<b<c entonces
← d
Fin

PASCAL
Esta es la funcion, ATENCIóN ESTE CASO ESTA TRADUCIDA SOLAMENTE LA FUNCION POR LO QUE FALTA UNA PARTE; QUE SERIA EL DISEÑO DE EL ALGORIMO QUE VA A TENER LA FUNCION DENTRO DEL LEXICO O VAR. DE ESTA FORMA NO LES VA A COMPILAR..

Function Maximo (a,b,c,d :Real): Real;
var max, maxi :R;
Begin
max:= ((a+b)+abs(a-b))/2;
maxi:=((max+c)+abs(max-c))/2;
Maximo := ((maxi+d)+abs(maxi-d))/2;
End.

Funcion MINIMO:

Function Minimo (a,b,c,d :Real):Real;
Begin
If a<b<c<d then
Minimo:= a;
If b<a<c<d then
Minimo:= b;
If c<a<b<d then
Minimo:= c;
If d<a<c<b then
Minimo:= d;
End.


EJERCICIO 10

Desarrollar un algoritmo que permita visualizar los numeros pares entre 1 y 25

DISEÑO
Algoritmo Paresentre
Lexico
Inicio
repetir
Si i mod 2 =0 entonces
Escribir (i)
i ← i+1;
Hasta (i=25)
Fin

PASCAL

Program Paresentre;

Var i: integer;

Begin

i:=1;

Repeat

If (i mod 2) = 0 then

begin

Writeln (i);

End;

i := i+1;



Until (i=25);

End.

EJERCICIO 10

Desarrollar un algoritmo que CALCULE EL MCM Y MCD de dos numeros:

PASCAL

Program MCMMCD;

Uses crt;

Var

a,b,a2,b2,MCM :real;

Begin

clrscr;

Repeat

Writeln ('Ingrese dos numeros');

Readln (a);

Readln (b);

until (a>0) and (b>0);

a2:=a; {Almaceno las variables para no perder el valor inicial,

esto es para calcular el mcm}

b2:=b;

repeat

If a>b then

Begin

a:=a-b;

b:=b;

end;

If a<b then

Begin

a:=a+b;

b:=a-b;

a:=a-b;

end;

Until (a=b);

Writeln ('El MCD entre los numeros es ', a:10:1);

MCM:=a2*b2/a; {El calculo del MCM se puede realizar haciendo

el producto de a * b y dividiendolo por el mcd}

Writeln ('El MCM entre los numeros es ', MCM:10:1);

End.


MI PROXIMO POST, EN MUY POCO TIEMPO SERA, COMO INSTALAR PLACA WIFI EN UBUNTU!!

SALUDOS Y COMENTEEEEN!!
Datos archivados del Taringa! original
107puntos
12,115visitas
16comentarios
Actividad nueva en Posteamelo
0puntos
0visitas
0comentarios
Dar puntos:

Posts Relacionados

Dejá tu comentario

0/2000
16 Comentarios archivados
Del Taringa! original
8@852isaac5/16/2013+0-0
Gracias brother..........!!!!! gracias a vos y a una compañera por encontrar el resultado logramos pasar el examen!!!!!!!!
s@stargatespawn6/14/2011+1-0
llegaste locon felicidades!!!!!!!!!!!!!!!!!!
d@dsadasdas6/14/2011+0-0
Gracias a todos los q dejaron puntos, ya soy Nfu!! xD
d@dsadasdas6/14/2011+0-0
dijo:

Mañana si no sos nfu te doy los 5 que te faltan, acordate de mandarme mp.. abrazo



Dale loco gracias
p@pereza776/14/2011+0-0
Mañana si no sos nfu te doy los 5 que te faltan, acordate de mandarme mp.. abrazo
F@FeDeX1006/14/2011+1-0
no entiendo nda:s
d@dsadasdas6/14/2011+0-0
dijo:

Me hizo recordar mis tiempos de escuela, cuando hacia los mejores codigos de la clase...
Lo malo es que ya no recuerdo nada... pero la experiencia adquirida me hizo mas facil aprender a programar en html y otros formatos.
Recomendado, y si mañana no te llegan los otros 6 puntos te los doy...




Buenisimo amigo, gracias por la ayuda
j@jorgewindk6/14/2011+0-0
Me hizo recordar mis tiempos de escuela, cuando hacia los mejores codigos de la clase...
Lo malo es que ya no recuerdo nada... pero la experiencia adquirida me hizo mas facil aprender a programar en html y otros formatos.
Recomendado, y si mañana no te llegan los otros 6 puntos te los doy...
d@dsadasdas6/13/2011+0-0
dijo:

Hablare con un amigo que te los puntos que te faltan! saludos




Gracias vieja!!!!
M@Memories_Studios6/13/2011+0-0
Hablare con un amigo que te los puntos que te faltan! saludos
s@stargatespawn5/29/2011+0-0
+10
d@dsadasdas5/26/2011+0-0
dijo:

program MCM_DCM;(*Dado 2 numeros naturales da como resultado el maximo comun divisor y el minimo comun multiplo entre ambos*)
uses crt;
var
num1,num2:integer;(*variable dato*)

function ValidezDatos(var x,y:integer):boolean;(*toma el valor de verdad de si los datos son validos, es decir si son naturales=enteros positivos*)
begin
ValidezDatos:=(x>0)and(y>0);
end;

c@chulengue5/26/2011+0-0
program MCM_DCM;(*Dado 2 numeros naturales da como resultado el maximo comun divisor y el minimo comun multiplo entre ambos*)
uses crt;
var
num1,num2:integer;(*variable dato*)

function ValidezDatos(var x,y:integer):boolean;(*toma el valor de verdad de si los datos son validos, es decir si son naturales=enteros positivos*)
begin
ValidezDatos:=(x>0)and(y>0);
end;

procedure CargarDatos(var x,y:integer);(*Carga los datos y evalua los…
g@gordoStock5/25/2011+1-0
d@dsadasdas5/24/2011+0-0
dijo:

Si a >= 0 entonces Escribir (“El numero es negativo”) Sino Escribir (“Es positivo”) Fin


Bueh, linda nota te debes haber sacado


Seria al reves, mil disculpas
d@diegoturqo5/24/2011+0-0

Si a >= 0 entonces Escribir (“El numero es negativo”) Sino Escribir (“Es positivo”) Fin


Bueh, linda nota te debes haber sacado

Autor del Post

d
dsadasdas🇦🇷
Usuario
Puntos0
Posts2
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.