Divisibilita'. Codifica in Pascal di un programma

Materie:Appunti
Categoria:Informatica

Voto:

1 (2)
Download:93
Data:03.04.2001
Numero di pagine:3
Formato di file:.doc (Microsoft Word)
Download   Anteprima
divisibilita-codifica-pascal-programma_1.zip (Dimensione: 4.16 Kb)
trucheck.it_divisibilita-codifica-in-pascal-di-un-programma.doc     25.5 Kb
readme.txt     59 Bytes


Testo

Esercitazione quarta
Questa esercitazione presenta la codifica in Pascal di un programma che permette di stabilire se una coppia di valori sia divisibile . Per raggiungere questo obbiettivo si è usato lo schema della ricorsione primitiva, a partire dalle funzioni primitive Zero, Identità e Successore, al fine di costruire altre funzioni ricorsive che alla fine permettessero di calcolare la divisibilità o meno dei numeri immessi .
Programma Divisibilità ricorsiva ( IV )
Program Divisibilità ;
uses crt ;
Function zero ( x : real ) : real ; { funzione base zero}
begin
zero := 0 ;
end ; { zero }
Function id ( x : real ) : real ; { funzione base identità}
begin
id := x ;
end ; { id }
Function Succ ( x : real ) : real ; { funzione base successore}
begin
Succ := x+1;
end ; { succ }
Function pred ( x : real ) : real ; { funzione predecessore }
var o: real ;
begin
o := Zero ( o ) ;
if x = zero ( x ) then pred := zero ( pred )
else begin
while id ( x ) < > succ ( o ) do o := succ ( o ) ;
pred := o ;
end ;
end ; { pred }
Function Somma ( x : real ; y : real ) : real ; { funzione somma }
begin
if y = zero ( y ) then somma := Id ( x ) { caso base }
else somma := succ ( somma ( x, pred ( y ) ) ) ; { chiamata ricorsiva }
end ; { Somma }
Function Diff ( x : real ; y : real ) : real ; { funzione differenza }
begin
if y = zero ( y ) then diff := Id ( x ) { caso base }
else diff := pred ( diff ( x, pred ( y ) ) ) ; { chiamata ricorsiva }
end ; { Diff }
Function Prod ( x : real ; y : real ) : real ; { funzione prodotto }
var c : real ;
begin
if ( ( x = zero ( x ) ) or y = zero ( y ) ) then prod :=zero ( x ) { caso base }
else prod := somma ( prod ( x, pred ( y ) ), x ) { chiamata ricorsiva }
end ; { Prod }
Function abs ( x :real ; y :real ) : real ; { funzione valore assoluto }
Begin
Abs :=somma ( diff ( x, y ), diff ( y, x ) ) ;
end ; { abs }
Function segn ( x :real ) : real ; { funzione segnatura }
begin
if x =0 then segn :=0
else segn :=1;
end ; { segn }
Function csegn ( x :real ) : real ; { funzione controsegnatura }
begin
if x =0 then csegn :=1
else csegn :=0 ;
end ; { csegn }
Function resto ( x, y :integer ) :integer ; { funzione resto }
{funzione di resto}
begin
if y =0 then resto := Zero ( x ) { caso base }
else resto := prod ( succ ( resto ( x, pred ( y ) ) ), ( segn ( abs ( x, succ ( resto ( x, pred ( y ) ) ) ) ) ) ) ;
{ chiamata ricorsiva }
end;
{main}
var a, b, z : real ;
begin
clrscr ;
writeln ( 'Inserire i valori dei quali si vuol verificare la divisibilità ' ) ;
readln ( a, b ) ; { lettura dei valori }
z := resto ( a, b) ; { chiamata alla funzione resto }
if z = zero ( z ) then writeln ( 'Sono divisibili ' )
else writeln ( 'Non sono divisibili' );
readln ;
end .
Esempi pratici
Inserire i valori dei quali si vuole verificare la divisibilità :
Input : 2
Input : 5
Output : Non sono divisibili
Inserire i valori dei quali si vuole verificare la divisibilità :
Input : 3
Input : 6
Output : Sono divisibili
Inserire i valori dei quali si vuole verificare la divisibilità :
Input : 4
Input : 16
Output : Sono divisibili
Inserire i valori dei quali si vuole verificare la divisibilità :
Input : 5
Input : 15
Output : Sono divisibili
Inserire i valori dei quali si vuole verificare la divisibilità :
Input : 3
Input : 17
Output : Non sono divisibili
Inserire i valori dei quali si vuole verificare la divisibilità :
Input : 16
Input : 80
Output : Sono divisibili

Esempio