Pascal/Turbo Pascal - Problemas Pascal

 
Vista:

Problemas Pascal

Publicado por Jose Pedro (2 intervenciones) el 15/04/2012 18:30:41
Necesito hacer estos ejercicios de Pascal, que me han mandado y realmente no se por donde empezar.

1- En el siguiente programa se define un procedimiento (EsMayor) que asigna a resultado el valor
true (verdadero) si primero es mayor que segundo, sino asigna a resultado el valor false (falso). Complete la cabecera del procedimiento y la llamada al mismo pasando correctamente los
parámetros actuales.


program Maximo ;
procedure EsMayor ( . . . ; . . . ; . . . ) ;
begin
r e s u l t a d o := pr imer o > segundo
end ;
var
a , b : i nteger ;
r e s p u e s t a : boolean ;
begin
writeln ( ’Escribe un numero ’ ) ;
readln ( a ) ;
writeln ( ’Escribe otro numero ’ ) ;
readln ( b ) ;
EsMayor ( . . . , . . . , . . . ) ; { llamada a l p r o c e d imie n t o }
i f r e s p u e s t a then
writeln ( a , ’ es mayor que ’ ,b )
e l s e
writeln ( a , ’ no es mayor que ’ ,b ) ;
end.

2. En el siguiente programa se define un procedimiento (Celsius_a_Fahreneheit) que convierte los
grados Celsius (celsius) en grados Fahreneit (fahrenheit). Complete la cabecera del procedimiento y la llamada al mismo pasando correctamente los parámetros actuales.


program co nver s o r Temper a t ur a ;
procedure Cels ius _a _Fa hr enheit ( . . . ; . . . ) ;
begin
f a h r e n h e i t := ( 9 . 0 / 5 . 0 )  c e l s i u s + 3 2 . 0 ;
end ;
var
grados_c , grados_f : si ngl e ;
begin
writeln ( ’Introducir la cantidad de grados Celsius: ’ ) ;
readln ( grados_c ) ;
Cels ius _a _Fa hr enheit ( . . . , . . . ) ; { llamada a l p r o c e d imie n t o }
writeln ( ’La cantidad de grados Fahrenheit es ’ , grados_f : 8 : 2 ) ;
end .

3. En el siguiente programa se definen dos procedimientos (Modifica1 y Modifica2) que decrementan
en 7 el párametro formal n. Durante la ejecución, el usuario introduce el valor 5 cuando es pedido
por el programa. ¿ Qué valor es mostrado por pantalla la primera vez (después de la llamada a
Modifica1) ? ¿ Y la segunda vez (después de la llamada a Modifica2) ?

program s e n c i l l o ;
procedure Mo d if ic a 1 ( n : i nteger ) ;
begin
n := n 7
end ;
procedure Mo d if ic a 2 ( var n : i nteger ) ;
begin
n := n 7
end ;
var
numero : i nteger ;
begin
writeln ( ’Introduzca un numero entero: ’ ) ;
readln ( numero ) ;
Mo d if ic a 1 ( numero ) ; { llamada a Mo d if ic a 1 }
writeln ( ’Numero ahora vale: ’ , numero ) ;
Mo d if ic a 2 ( numero ) ; { llamada a Mo d if ic a 2 }
writeln ( ’Numero ahora vale: ’ , numero ) ;
end .


4. Considere el siguiente código en Pascal:
program e n t r a d a _s a lid a ;
procedure F(var x : i nteger ; y : i nteger ) ;
begin
x := x + y ;
y := x  y
end ;
procedure G(var x , y : i nteger ) ;
begin
x := x + y ;
y := x  y
end ;
procedure H( x , y : i nteger ) ;
begin
x := x + y ;
y := x  y
end ;
var
a , b : i nteger ;
begin
a := 1 ;
b := 2 ;
F( a , b ) ;
G( a , b ) ;
H( a , b ) ;
writeln ( ’a = ’ , a , ’ b = ’ ,b ) ;
end .

¿ Qué valores de a y b aparecerán en pantalla?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Problemas Pascal

Publicado por Jose Pedro (2 intervenciones) el 15/04/2012 18:36:33
5. El siguiente programa en Pascal solicita dos distancias, en kilómetros, por teclado. Convierte cada
distancia en metros, llamando a un procedimiento conversion_Km_Metros y finalmente devuelve
la suma de las dos distancias (en metros) por pantalla. Complete el código del procedimiento y
defina el tipo de variables adecuado.

program s uma Dis t a ncia s ;
procedure conversion_Km_Metros ( . . . ) ;
begin
. . . .
end ;
var
p r ime r a Dis t a n c ia , s e g u n d a Dis t a n c ia : . . . . ;
begin
writeln ( ’Introduzca una distancia (en Km): ’ ) ;
readln ( p r ime r a Dis t a n c ia ) ;
writeln ( ’Introduzca otra distancia (en Km): ’ ) ;
readln ( s e g u n d a Dis t a n c ia ) ;
conversion_Km_Metros ( p r ime r a Dis t a n c ia ) ;
conversion_Km_Metros ( s e g u n d a Dis t a n c ia ) ;
write ( ’La suma de las dos distancias (en metros) es: ’ ) ;
writeln ( p r ime r a Dis t a n c ia + s e g u n d a Dis t a n c ia : 6 : 2 )
end .

6. El siguiente programa en Pascal solicita dos fechas (en formato día mes año) por teclado, llamando
a un procedimiento IntroducirFecha. A continuación llama a un procedimiento EsFechaAnterior
que chequea si la primera fecha es anterior a la segunda. El resultado del chequeo se guarda en el
parámetro anterior. Finalmente escribe el resultado por pantalla (es decir, true o false).

program Fechas ;
type
tDia = 1 . . 3 1 ;
tMes = 1 . . 1 2 ;
procedure I n t r o d u c ir Fe c h a ( . . . ; . . . ; . . . ) ;
begin
. . . .
end ;
procedure Es Fecha Ant er io r ( . . . ; . . . ; . . . ; . . . ; . . . ; . . . ; . . . ) ;
begin
a n t e r i o r := . . .
end ;
var
f echa1_dia , f echa 2 _dia : tDia ;
fecha1_mes , fecha2_mes : tMes ;
fecha1_anno , f echa2_anno : i nteger ;
a n t e r i o r : boolean ;
begin
I n t r o d u c ir Fe c h a ( . . . , . . . , . . . ) ; { pr imer a f e c h a }
I n t r o d u c ir Fe c h a ( . . . , . . . , . . . ) ; { segunda f e c h a }
Es Fecha Ant er io r ( f echa1_dia , fecha1_mes , fecha1_anno ,
f echa2_dia , fecha2_mes , fecha2_anno , a n t e r i o r ) ;
writeln ( ’La primera fecha es anterior a la segunda ? ’ , a n t e r i o r )
end .


Complete el código de los dos procedimientos y complete las llamadas al procedimiento IntroducirFecha.




7. De acuerdo con la cabecera del siguiente procedimiento:


procedure t e s t ( cadena : stri ng ; x : double ; var n : i nteger ; var c : char ) ;


indique cuáles de las siguientes llamadas son correctas, considerando que miNumero es una variable
de tipo integer, miCaracter es una variable de tipo char, nombre es una variable de tipo string
y miValor es una variable de tipo double:

a ) t e s t ( ’hola ’ , 3 . 5 , miNumero , miCa r a ct er ) ;
b ) t e s t ( ’hola ’ , 3 . 5 , 4 , miCa r a ct er ) ;
c ) t e s t ( nombre , miValor , miNumero , ’B’ ) ;
d ) t e s t ( ’Hola ’ , miNumero , miValor , miCa r a ct er ) ;




8. El siguiente programa debería leer por teclado e imprimir por pantalla una fecha llamando a dos
procedimientos (LeerFecha e ImprimirFecha, respectivamente) pero contiene un error. Identifique
y corrija el error.

program Fecha ;
{$R+}
type
tDia = 1 . . 3 1 ;
tMes = 1 . . 1 2 ;
tAnno = 1 9 0 0 . . 2 1 0 0 ;
procedure LeerFecha (var d ia : tDia ; var mes : tMes ; var anno : tAnno ) ;
begin
write ( ’Introduzca el dia: ’ ) ;
readln ( d ia ) ;
write ( ’Introduzca el mes: ’ ) ;
readln ( mes ) ;
write ( ’Introduzca el anno: ’ ) ;
readln ( anno ) ;
end ;
procedure I mprimirFecha ( d ia : tDia ; mes : tMes ; anno : tAnno ) ;
begin
writeln ( dia , ’/’ ,mes , ’/’ , anno )
end ;
var
d ia : tDia ;
mes : tMes ;
anno : tAnno ;
begin
LeerFecha ( anno , mes , d ia ) ;
I mprimirFecha ( dia , mes , anno )
end .



9. El siguiente programa pide por teclado los coeficientes a; b; c de una ecuación de segundo grado
f(x) = ax
2+bx+c = 0 y después llama a un procedimiento para calcular las raices. El procedimiento
CalculaRaicesReales calcula las raices solo si son reales. El parámetro booleano SonComplejas
indica si las raices son reales (=false) o complejas (= true).



program EcuacionSegundoGrado ;
procedure C a lc u la R a ic e s R e a le s ( . . . . ) ;
var
d e l t a : double ;
begin
SonComplej as := true ;
d e l t a := s q r ( b ) 4a c ;
i f d e l t a > 0 then
begin
SonComplej as := f a l s e ;
d e l t a := s q r t ( d e lt a ) ;
r a i z 1 := (b + d e l t a ) / ( 2 a ) ;
r a i z 2 := (b d e l t a ) / ( 2 a ) ;
end
end ;
var
coef _a , coef_b , coef _c : double ;
s o lu c io n 1 , s o l u c i o n 2 : double ;
c o mp le j a s : boolean ;
begin
writeln ( ’Introducza los coeficientes a,b,c de la ecuacion:’ ) ;
readln ( coef _a ) ;
readln ( coef _b ) ;
readln ( coef _c ) ;
C a lc u la R a ic e s R e a le s ( . . . . ) ;
i f c o mp le j a s then
writeln ( ’Las raices son complejas ’ )
e l s e
begin
writeln ( ’Las raices son reales: ’ ) ;
writeln ( ’Solucion 1:’ , s o l u c i o n 1 : 5 : 3 ) ;
writeln ( ’Solucion 2:’ , s o l u c i o n 2 : 5 : 3 ) ;
end
end .

Complete la cabecera del procedimiento (definiendo los parámetros formales) y la llamada al mismo
(definiendo los parámetros actuales).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar