Divisibilita'. Codifica in Pascal di un programma: In questa tesina per l'esame di Fondamenti di Informatica viene presentata la divisibilita' di due numeri mediante la ricorsione primitiva. Il programma e' codificato in pascal ed e' stato testato (formato word pg 4) ( formato doc)

VOTO: 0 Appunto inviato da airjeff79

Esercitazione terza 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 v Continua »

vedi tutti gli appunti di informatica »
Carica un appunto Home Appunti