LENGUAJES DE PROGRAMACIÓN  
 
 
FreePascal

PASCAL CON FREE PASCAL

 
 

 

6.10. Respuestas a las preguntas y ejercicios.

 

anterior :: indice :: siguiente

 

1.

 

Es una rutina que devuelve un valor.

 

2.

 

Es una rutina que devuelve un valor.

 

3.

 

Las unidades son archivos que se usan para almacenar nuestras rutinas (procedimientos y funciones), variables, tipos de datos y de ese modo pueden ser usados en otros programas o unidades.

 

4.

 

La utilidad de las rutinas es evitar la repetición de código en los programas

 

5.

 

A.

6.

 

B.

7.

 

B.

8.

 

Son las variables que se pueden usar cualquier parte del programa y dentro de cualquier función o procedimiento.

9.

 

Son las variables que se crean y usan dentro de una función o procedimiento.

10.

 

Son el medio que nos permite pasar variables del programa a un procedimiento o función.

11.

 

Se usa para devolver alterados o cambiados los valores de las variables ingresados a través de los parámetros de una función o procedimiento.

12.

 

Es el espacio de memoria en donde se colocan los parámetros y variables locales de un procedimiento o función temporalmente.

13.

  A.

14.

 

Es el hecho de hacer que una función o procedimiento se ejecuten a sí mismos.

15.

 

La palabra reservada USE sirve para usar unidades dentro de un programa.

16.

 

Indique si los siguienes programas se pueden compilar.

 

No se puede compilar : A,B.

Se puede compilar : C.

 

     

17.

 

Cree los programas que se describen a continuación:

     

 

 

A)

 
Function MCD(a,b:integer):integer;
Var aux:integer;
Begin
  While a mod b <> 0 do
    Begin
      aux:=a mod b;
      a:=b;
      b:=aux
    End;
    MCD:=b;
End;
                  
Begin
  Writeln('El mcd de 45 y 80 es : ',MCD(45,80))
End.
   

B)

 

 
Function MCD(a,b:integer):integer;
Var aux:integer;
Begin
  While a mod b <> 0 do
    Begin
      aux:=a mod b;
      a:=b;
      b:=aux
    End;
    MCD:=b;
End;
     
Function MCM(a,b:integer):integer;
Begin
 MCM:=a*b div MCD(a,b)
End;
                  
Begin
  Writeln('El mcm de 45 y 80 es : ',MCM(45,80))
End. 
   

C)

 

 
Function Invertir(a:longint):longint;
Var r,p:longint;
Begin
  p:=0;
  While a>0 do
    Begin
      r:=a mod 10;
      a:= a div 10;
      p:=(p*10)+r
    End;
 Invertir:=p;
End;    
                 
Begin
  Writeln('Invertir(3471) : ',Invertir(3471))
End.
   

D)

 

 
uses math;
Function Distancia(x1,y1,x2,y2:extended):extended;
Begin
 Distancia:=sqrt(((x2-x1)**2)+((y2-y1)**2));
End;    
                 
Begin
  Writeln('Distancia(-8,-9,0,6) : ',Distancia(-8,-9,0,6):10:2)
End.  
   

E)

 

 
Procedure PolarRect(r,a:extended;Var x,y:extended);
Begin
 x:=r*cos(a);
 y:=r*sin(a)
End;

Var x,y:extended;
    radio,angulo:real;                 
Begin  
  Write('radio : ');readln(radio);
  Write('angulo en radianes : ');readln(angulo);
  PolarRect(radio,angulo,x,y);  
  Writeln('x : ',x:3:3);
  Writeln('y : ',y:3:3)
End. 
     

F)

 

 
Function Palindromo(cad:String):boolean;
Var cadaux:string = '';
    i:byte;
Begin  
  for i:= length(cad) downto 1  do  cadaux:=cadaux+cad[i];   
  if cadaux=cad then Palindromo:=true
                else Palindromo:=false  
End;    

Var cad:string;                 
Begin  
  Write('Ingrese una palabra : ');readln(cad);
  if Palindromo(cad) then Writeln('Es un palindromo')
                     else Writeln('No es un palindromo')
End.
     

G)

 

 
Function MediaA(Lista:array of int64):extended;
Var i:longint;
    S:int64;
Begin  
  S:=0;
  for i:=0 to High(Lista) do S:=S+Lista[i];
  MediaA:=S/(High(Lista)+1)
End;

Function MediaA(Lista:array of extended):extended;
Var i:longint;
    S:extended;
Begin  
  S:=0;
  for i:=0 to High(Lista) do S:=S+Lista[i];
  MediaA:=S/(High(Lista)+1)
End;    

Var Enteros:array [1..5] of int64 = (1,2,3,4,5); 
    Flotantes:array [1..5] of extended=(0.1,0.2,0.3,0.4,0.5);               
Begin  
  Writeln(MediaA(Enteros):8:3);
  Writeln(MediaA(Flotantes):8:3)
End.
     

H)

 

 
Function Mayor(Lista:array of int64):int64;
Var i:longint;
    M:int64;
Begin  
  M:=Lista[0];
  for i:=0 to High(Lista) do 
     if Lista[i]>M then M:=Lista[i];      
  Mayor:=M
End;

Function Mayor(Lista:array of extended):extended;
Var i:longint;
    M:extended;
Begin  
  M:=Lista[0];
  for i:=0 to High(Lista) do 
     if Lista[i]>M then M:=Lista[i];      
  Mayor:=M
End;    

Var Enteros:array [1..5] of int64 = (1,-2,3,-4,5); 
    Flotantes:array [1..5] of extended=(0.1,-0.2,0.3,-0.4,0.5);               
Begin  
  Writeln(Mayor(Enteros):8);
  Writeln(Mayor(Flotantes):8:3)
End.
     

I)

 
Function Menor(Lista:array of int64):int64;
Var i:longint;
    M:int64;
Begin  
  M:=Lista[0];
  for i:=0 to High(Lista) do 
     if Lista[i]<M then M:=Lista[i];      
  Menor:=M
End;

Function Menor(Lista:array of extended):extended;
Var i:longint;
    M:extended;
Begin  
  M:=Lista[0];
  for i:=0 to High(Lista) do 
     if Lista[i]<M then M:=Lista[i];      
  Menor:=M
End;    

Var Enteros:array [1..5] of int64 = (1,-2,3,-4,5); 
    Flotantes:array [1..5] of extended=(0.1,-0.2,0.3,-0.4,0.5);               
Begin  
  Writeln(Menor(Enteros):8);
  Writeln(Menor(Flotantes):8:3)
End. 

 

   

18.

 

Cree los programas que se describen a continuación (Recursividad):

 

   

 

 

A)

 
Function MCD(a,b:int64):int64;
Begin
 if (b=0) then MCD:=a
 else MCD:=MCD(b,a mod b)  
End;

Begin
  Writeln('El mcd de 45 y 80 es : ',MCD(45,80))
End.
     

B)

 
uses math;
                                                   
Function Invertir(n:int64):int64;

  Function digitos(n:int64):word;
    Var c:word;
   Begin
     c:=1;
     While (n div 10)>10 do
      Begin
        n:=n div 10;
       c+=1
      End;
    digitos:=c;  
  End;
 
  Function inv(n:int64;c:word):int64;
   Begin
     if (n<10) then inv:=n
     else inv:=(n mod 10) * (10**c) + inv(n div 10,c-1)
   End; 
 
Begin
  Invertir:=inv(n,digitos(n)); 
End;

Begin
  Writeln('El numero 43562 al reves es : ',invertir(43562))
End.
     

C)

 

 
Function Suma(Lista:array of int64):int64;
  
 Function SumN(Lista:array of int64;n:longint):int64;
 Begin
   if (n=0) then SumN:=Lista[n]
   else SumN:=SumN(Lista,n-1)+Lista[n]  
 End;

Begin
 Suma:=SumN(Lista,High(Lista));
End;

Var Lista : array [1..5] of int64 = (10,20,30,40,50);

Begin
  Writeln('La Suma es : ',Suma(Lista))
End.
     

D)

 

 
Function Multiplicar(Lista:array of int64):int64;
  
 Function MulN(Lista:array of int64;n:longint):int64;
 Begin
   if (n=0) then MulN:=Lista[n]
   else MulN:=MulN(Lista,n-1)*Lista[n]  
 End;

Begin
 Multiplicar:=MulN(Lista,High(Lista));
End;

Var Lista : array [1..5] of int64 = (10,20,30,40,50);

Begin
  Writeln('La Suma es : ',Multiplicar(Lista))
End.
     

E)

 

 
Function SumarDig(n:int64):int64;
Begin
  if (n=0) then SumarDig:=n
  else SumarDig:=SumarDig(n div 10) + (n mod 10)  
End;

Begin
  Writeln('SumarDig(14253) : ',SumarDig(14253))
End.

 

   

19.

 

Cree la siguiente Unidad :

 

 

Haga clic para descargar el archivo (Estd.zip)

     

anterior :: indice :: siguiente

 

 
 

  SUGERENCIAS