Obiettivi dell'esercitazione:
Il programma deve utilizzare una funzione che:
Utilizzate la funzione in un programma che legge i due valori e stampa la potenza.
Dopo aver compilato ed eseguito il programma, avviate l'esecuzione passo-passo, immettendo, ad esempio, i valori 4 e 3 rispettivamente per la base e per l'esponente (eventualmente ispezionate le variabili di interesse).
Durante l'esecuzione passo-passo, visualizzate la pila delle attivazioni tramite il comando Stack del menù Debug: nella finestra di debugging verrà mostrata la pila delle attivazioni nello stato corrente del programma che consente di seguire le chiamate delle funzioni. Le informazioni contenute nella pila sono aggiornate ogni volta che viene eseguita una nuova istruzione nell'esecuzione passo passo. Ad ogni invocazione della funzione potenza viene aggiunto un nuovo record alla pila che contiene
Nella cartella fondeln, create la cartella driveint. Copiate il file driveint.c dalla cartella condivisa alla cartella driveint appena creata ed aprite il file all'interno di LCC-Win32. Il file contiene un programma che implementa un menù per verificare il risultato dell'esecuzione di alcune funzioni su interi.
Nel programma mancano le definizioni di alcune funzioni: si richiede di completarlo. In particolare, le funzioni da aggiungere devono implementare le operazioni aritmetiche di somma, prodotto ed esponenziazione tra interi nonnegativi, senza utilizzare gli operatori del C "+" e "-" sugli interi, ma utilizzando solo l'istruzione di assegnazione, il confronto tra due variabili di tipo intero e gli operatori di incremento e decremento.Le funzioni vanno realizzate in modo ricorsivo, utilizzando le seguenti definizioni induttive:
somma | prodotto | esponenziazione |
somma(x,y) = x se y = 0 |
prod(x,y) = 0 se y = 0 |
esponente(x,y) = 1 se y = 0 |
somma(x,y) = 1 + (somma(x, y-1)) se y > 0 |
prod(x,y) = somma(x, prod(x, y-1)) se y > 0 |
esponente(x,y) = prod(x, esponente(x, y-1)) se y > 0 |