Casting, operatori matematici e commento del codice

Documenti analoghi
Anno 1. Divisione fra polinomi

IL PRIMO PROGRAMMA IN C

Come ragiona il computer. Problemi e algoritmi

Primo modulo: Aritmetica

= < < < < < Matematica 1

Anno 1. Frazioni algebriche: definizione e operazioni fondamentali

RAPPRESENTAZIONE GLI ALGORITMI NOTAZIONE PER LA RAPPRESENTAZIONE DI UN ALGORITMO

CORSO ZERO DI MATEMATICA

La tabella dell addizione Completa la tabella e poi rispondi alle domande.

Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione

ESERCIZI IN PIÙ I NUMERI COMPLESSI

Programmazione in Java (I modulo)

Lezioni di Informarica. Prof. Giovanni Occhipinti

Sviluppo di programmi. E ora, finalmente. Si comincia! 1. Analizzare il problema. 2. Progettare una soluzione (1) E necessario capire:

MONOMI. Donatella Candelo 13/11/2004 1

PROGRAMMAZIONE: Le strutture di controllo

MATEMATICA EQUAZIONI FRATTE, DI SECONDO GRADO O SUPERIORE GSCATULLO

LEZIONE DI MATEMATICA SISTEMI DI NUMERAZIONE. (Prof. Daniele Baldissin)

3. Indicare cosa sta a significare la figura geometrica del rombo in un diagramma a blocchi

CONVERSIONE DA DECIMALE A BINARIO

La tabella dell addizione Completa la tabella e poi rispondi alle domande.

Unità F1. Obiettivi. Il linguaggio C. Il linguaggio C++ Linguaggio C. Pseudolinguaggio. Primi programmi

RADICALI QUADRATICI E NON Applicazione geometrica 1 (lato di un quadrato)

DEFINIZIONE. L unità frazionaria 1n (con n 0) rappresenta una sola delle n parti uguali in cui è stato diviso l intero.

Esercizi Programmazione I

1.4 PRODOTTI NOTEVOLI

Aritmetica dei Calcolatori Elettronici

Insiemistica. Capitolo 1. Prerequisiti. Obiettivi. Gli insiemi numerici di base Divisibilità e fattorizzazione nei numeri interi

Sviluppo di programmi

Corso di Informatica di Base

io e la mia calcolatrice

Cosa c è alla base? Un esempio

Algebra di Boole X Y Z V. Algebra di Boole

Strutture di Controllo

Algebra. I numeri relativi

Sistemi di numerazione

CURRICOLO DI ISTITUTO

Fortran in pillole : prima parte

PROGRAMMA DI MATEMATICA CONTENUTI.

Sistemi di numerazione

Algebra di Boole Algebra di Boole

Algoritmi e basi del C Struttura di un programma

Moltiplicazione. Divisione. Multipli e divisori

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt);

ESERCIZI SVOLTI SUL CALCOLO INTEGRALE

Il Sistema di numerazione decimale

Variabili e Istruzioni

Corso di Matematica per la Chimica. Dott.ssa Maria Carmela De Bonis a.a

Informatica Generale 1 - Esercitazioni Flowgraph, algebra di Boole e calcolo binario

MATEMATICA DI BASE 1

Gli insiemi numerici. Operazioni e loro proprietà

PROBLEMI ALGORITMI E PROGRAMMAZIONE

Ampliamento di N: le frazioni

1 Multipli di un numero

EXCEL: FORMATTAZIONE E FORMULE

Caratteristiche di un linguaggio ad alto livello

Sistemi Web per il turismo - lezione 3 -

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione dei numeri relativi

1.5 DIVISIONE TRA DUE POLINOMI

LABORATORIO Costruzione di un ipertesto. Studio delle varie specie di numeri dai numeri naturali ai numeri reali

IL CALCOLO LETTERALE. La «traduzione» del linguaggio comune in linguaggio matematico

Lezione 10. L arte della programmazione

Il linguaggio di programmazione Python

BREVE RIEPILOGO SULLE FRAZIONI

Rappresentazione dell Informazione

ESERCIZIARIO DI MATEMATICA

modificato da andynaz Cambiamenti di base Tecniche Informatiche di Base

Elementi sulle diseguaglianze tra numeri relativi

Curricolo verticale MATEMATICA

Funzioni, Stack e Visibilità delle Variabili in C

1 L estrazione di radice

Primi passi col linguaggio C

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

1 Definizione di sistema lineare omogeneo.

Un ripasso di aritmetica: Conversione dalla base 10 alla base 2

ESTRAZIONE DI RADICE

Linguaggio C Espressioni e operatori

1 Esercizi in pseudocodice

( ) ( ) 2 + 3( a + b) = ( ) + b( x 1) = ( ) ( ) b( x + y) = ( ) x 2 ( a + b) y 2 + ( a + b) = ( ) + ( a b) = ( ) a( 4x + 7) = ( ) + 3a( 2 5y) =

UDA MATEMATICA. Progettazione per unità di apprendimento. Percorso di istruzione di primo livello primo periodo didattica PROF:...

Parte Seconda. Prova di selezione culturale

Transcript:

Casting, operatori matematici e commento del codice In questa lezione impareremo... a commentare un programma a utilizzare gli operatori / e % sui numeri interi a effettuare il casting tra variabili di tipo diverso LEZIONE 4 Istruzioni in sequenza e commenti Il linguaggio imperativo consiste nell esecuzione sequenziale di istruzioni che essenzialmente realizzano modifiche del valore dei dati in memoria; si pensa il programma come sequenza di comandi (istruzioni). La prima caratteristica di un programma C (e dei linguaggi chiamati imperativi ) è quella di eseguire un istruzione di seguito all altra, nello stesso identico ordine con cui il programmatore le ha scritte. Questo schema operativo, che prende il nome di esecuzione sequenziale, è descritto graficamente dallo schema a blocchi della figura a lato. La freccia indica il flusso di esecuzione, cioè la sequenza con cui le istruzioni vengono eseguite. Uno specifico linguaggio di programmazione implementa un modo di pensare: il processo di computazione prende anche il nome di paradigma di computazione. Il C rientra tra i linguaggi con paradigma imperativo. In C l inizio e la fine di una sequenza di istruzioni (blocco o corpo) vengono indicati mediante parentesi graffe { }: corpo = { dichiarazioni_variabili lista_istruzioni}. 1

UdA 7 Il linguaggio C È importante commentare un programma anche solo per se stessi, dato che con il passare del tempo facilmente ci si dimenticherà di come questo è stato scritto. Oltre alle dichiarazioni delle variabili e alla lista delle istruzioni, nel programma è possibile inserire delle righe con la spiegazione delle istruzioni stesse, in modo da renderlo facilmente comprensibile per poter agevolare i programmatori che in futuro dovranno magari eseguire rettifiche e integrazioni del codice: tali righe prendono il nome di commenti. In C i commenti possono essere scritti in due modalità: // questa è una riga di commento singola /* questa è una riga di commento che può andare su più righe*/ Il primo tipo di commento è introdotto da // e indica al compilatore di ignorare tutti i caratteri scritti da quel punto fino alla fine della riga. Il secondo tipo di commento è introdotto da /* e indica al compilatore di ignorare tutto quello che è scritto da quel punto fino alla chiusura del commento */, che può anche andare a capo ed essere formato da più righe. In un programma, i commenti fanno parte della documentazione interna e sono molto importanti: chi sviluppa software generalmente deve intervenire nei programmi che ha scritto in un secondo tempo per apporre modifiche e/o integrazioni oppure per riutilizzare parte di un programma per un nuovo progetto. È molti difficile ricordare nel tempo ogni codice scritto ed è quindi importante inserire dei commenti che, nel futuro, possono aiutare a comprendere i nostri stessi programmi. ESEMPIO Programma telepatico Realizziamo il programma del gioco: Ti indovino il numero pensato. Il calcolatore chiede all utente di pensare un numero e gli dice di effettuare mentalmente alcune operazioni matematiche: al termine indovina il risultato finale, cioè il numero che sta pensando il giocatore. La sequenza di istruzioni da eseguire è la seguente: pensa un numero; raddoppialo; aggiungi 12 a tale numero; calcola la metà del risultato; sottrai il numero pensato dal totale calcolato; ti indovino ora il totale: è uguale a 6! Nella codifica (riportata alla pagina seguente) eseguiamo la lettura del numero pensato dal giocatore nella variabile numpensato, e indichiamo quindi al giocatore in sequenza le operazioni che deve eseguire mediante la scrittura a video con l istruzione printf(). Contemporaneamente al giocatore, facciamo eseguire gli stessi calcoli al calcolatore in modo da verificarne la correttezza, utilizzando la variabile numcalcolato per memorizzarne sia i risultati intermedi sia quello finale. 2

Casting, operatori matematici e commento del codice Lezione 4 È facile verificare che il risultato è sempre uguale alla metà del numero che facciamo aggiungere al giocatore con la somma eseguita nell istruzione 16. La divisione tra numeri interi Introduciamo ora una particolarità del linguaggio C che ci permette di eseguire l operazione di divisione tra numeri interi producendo come risultato un numero intero. Nel linguaggio C, se viene eseguita una divisione tra due numeri interi, come risultato si ottiene solo la parte intera del quoziente, mentre si ha il troncamento dell eventuale parte decimale. Vediamo alcuni esempi dove possiamo confrontare il risultato ottenuto utilizzando l operatore di divisione / tra due numeri reali (float) con quello ottenuto nel caso in cui numeri di partenza siano di tipo int. Divisione tra due numeri reali float num1,num2 Divisione tra due numeri interi int num1,num2 5 / 2 = 2,5 5 / 2 = 2 9 / 2 = 4,5 9 / 2 = 4 10 / 3 = 3,333 10 / 3 = 3 15 / 4 = 3,75 15 / 4 = 3 20 / 6 = 3,333 20 / 6 = 3 100 / 9 = 11,11 100 / 9 = 11 1000 / 33 = 30,30 1000 / 33 = 30 3

UdA 7 Il linguaggio C ESEMPIO Divisione tra interi Effettuiamo la divisione tra due numeri interi salvando il risultato prima in una variabile intera e successivamente in una variabile reale. Se mandiamo in esecuzione il programma e inseriamo rispettivamente 10 e 3 come dividendo e divisore, otteniamo il seguente output: Come possiamo notare, il risultato contenuto nelle due variabili è identico: in entrambi i casi, infatti, è stata troncata la parte decimale. Il resto della divisione tra numeri interi Un secondo operatore specifico per i numeri interi è l operatore di modulo (%). L operatore % è di notevole utilità pratica in quanto fornisce il resto della divisione tra numeri interi. Vediamo alcuni esempi di esecuzione: Resto della divisione tra interi int num1,num2,num3 Divisione tra interi Verifica dei risultati 5 % 2 = 1 5 / 2 = 2 2 * 2 = 4 + 1 = 5 9 % 2 = 1 9 / 2 = 4 2 * 4 = 8 + 1 = 9 12 % 5 = 2 12 / 5 = 2 5 * 2 = 10 + 2 = 12 15 % 4 = 3 15 / 4 = 3 4 * 3 = 12 + 3 = 15 20 % 6 = 2 20 / 6 = 3 6 * 3 = 18 + 2 = 20 23 % 9 = 5 23 / 9 = 3 9 * 2 = 18 + 5 = 23 Non si può usare l operatore di modulo % sui tipi in virgola mobile (float e double). 4

Casting, operatori matematici e commento del codice Lezione 4 ESEMPIO La conta Un gruppo di bambini sta giocando e deve effettuare la conta per selezionare il capitano : scrivi un programma che li possa aiutare. Vedremo in seguito come questo operatore ci tornerà utile per individuare semplicemente se un numero intero è pari o dispari: basterà controllare il risultato della divisione per due del numero e, in caso di numero pari risulterà essere uguale a 0, altrimenti sarà uguale a 1. Prova adesso! Utilizzare gli operatori matematici Inserire commenti APRI IL FILE modulo Scrivi un programma che legge tre numeri interi nelle variabili num1, num2 e num3. Successivamente fai eseguire la divisione e il calcolo del resto in tutte le possibili combinazioni, e visualizza in modo ordinato e formattato i risultati sullo schermo. Confronta la tua soluzione con quella riportata nel file mosulosol. Casting Il casting, in informatica, consiste nell attribuzione del tipo di dati più adatto a una data variabile per una determinata circostanza implementativa. Esiste la possibilità di convertire una variabile da un tipo in un altro: per esempio, è possibile trasformare una variabile int in una variabile float: questo tipo di operazione prende il nome di casting. Esistono due tipi di casting la promozione automatica e la coercizione che illustriamo di seguito. 5

UdA 7 Il linguaggio C La promozione automatica si verifica quando si passa da una variabile inferiore, cioè più piccola in termini di occupazione di spazio di memoria, a una più grande, e non comporta alcuna perdita di dati. Output del codice La coercizione si verifica quando si passa da una variabile superiore, cioè più grande in termini di occupazione di spazio di memoria, a una più piccola, e generalmente comporta una perdita di dati. Output del codice Zoom su... CASTING ESPLICITO Il casting appena illustrato prende anche il nome di casting implicito, in quanto viene eseguito direttamente dall istruzione di assegnazione. È preferibile effettuare invece il casting esplicito, indicando tra parentesi il tipo di variabile di destinazione nella quale vogliamo convertire la variabile di partenza, come nei due esempi proposti a lato. ESEMPIO Determinazione della parte intera e decimale di un numero Applichiamo adesso l operazione di casting per separare la parte intera dalla parte decimale del risultato di una divisione. L algoritmo è il seguente: leggi due numeri interi; esegui la divisione tra interi; converti i numeri interi in reali; esegui la divisione tra reali; sottrai al risultato reale la parte intera ottenendo la sola parte decimale; visualizza i risultati sullo schermo. 6

Casting, operatori matematici e commento del codice Lezione 4 L istruzione 14 ha eseguito il casting in modo implicito, mentre l istruzione 15 lo ha effettuato in modo esplicito: anche se il risultato è lo stesso, è bene abituarsi a effettuare sempre il casting in modo esplicito, per favorire la leggibilità del codice e le eventuali operazioni di testing e debugging del programma. Mandando in esecuzione il programma e inserendo, come nell esempio 9, 10 come dividendo e 3 come divisore, si ottiene l output della schermata a lato: Operatori unari In C esistono due operatori unari speciali: ++ incremento di uno (autoincrement); decremento di uno (autodecrement). Non ci sono difficoltà nell utilizzo di questi operatori utilizzandoli su singole variabili, cioè: var++ equivale alla scrittura var=var+1; var-- equivale alla scrittura var=var-1; Queste operazioni possono anche essere scritte nella seguente forma: ++var equivale alla scrittura var=var+1; --var equivale alla scrittura var=var-1. Nella prima scrittura gli operatori sono postfissi (var++ e var--), mentre nella seconda sono prefissi (++var e var). 7

UdA 7 Il linguaggio C La differenza tra prefisso e postfisso è importante nelle espressioni con due variabili: nella notazione prefissa prima viene incrementata (o decrementata) la variabile e poi valutata l espressione, mentre nella notazione postfissa prima viene valutata l espressione e poi incrementata (o decrementata) la variabile. Notazione prefissa: la variabile viene modificata prima di utilizzarla. Notazione postfissa: la variabile viene modificata dopo averla utilizzata. Perciò, dato: int x, y = 2; x = (++y) 1; //prefissa x = (y++) 1; //postfissa Nella prima espressione x vale 2 mentre nella seconda espressione x vale 1. La variabile y, invece, vale comunque 2. Quello che segue è un esempio completo con l output relativo. ESEMPIO Preincremento e postincremento L output è il seguente: In generale l istruzione come ++x risulta più efficiente di un espressione del tipo x = x + 1. 8

Casting, operatori matematici e commento del codice Lezione 4 Calcolo della somma di frazioni Una frazione viene di solito rappresentata con: a b con b 0 dove: a è il numeratore; b è il denominatore. Il denominatore b di una frazione deve essere diverso da zero, altrimenti non sono soddisfatte le condizioni di esistenza della frazione. Noi non possiamo verificare se viene inserito un valore uguale a 0 (sarà argomento della prossima unità di apprendimento) e quindi ipotizziamo che l utente inserisca sempre valori accettabili per il denominatore. ESEMPIO Calcolo della somma di frazioni La somma di due frazioni viene scritta nella forma: a + c ad + bc = b d bd con b 0, d 0 dove entrambi i denominatori delle singole frazioni devono essere diversi da 0. Per calcolare l addizione di due frazioni dobbiamo: conoscere i dati (dati di input) che sono: il numeratore della prima frazione, che indicheremo con a; il denominatore della prima frazione, che indicheremo con b; il numeratore della seconda frazione, che indicheremo con c; il denominatore della seconda frazione, che indicheremo con d; conoscere la regola; saper eseguire la regola; comunicare il risultato. Scriviamo dapprima a parole la sequenza delle istruzioni che devono essere codificate in C: leggi i quattro numeri a, b, c, d; calcola numsomma e densomma (indichiamo con numsomma e densomma rispettivamente il numeratore e il denominatore della frazione Somma); scrivi il risultato sullo schermo. La scrittura della sequenza delle istruzioni come quella appena scritta in un linguaggio di alto livello si rende necessaria quando i programmi aumentano di dimensione. Dalla prossima unità di apprendimento, con l introduzione di nuove istruzioni crescerà la complessità dei problemi e non sarà più possibile scrivere direttamente il codice in linguaggio di programmazione: introdurremo una tecnica di affinamenti successivi chiamata metodo top-down che da parte da un codice scritto in lingua italiana per arrivare, gradualmente, alla codifica in linguaggio C. Effettuiamo ora la codifica: 9

UdA 7 Il linguaggio C Una possibile esecuzione, digitando rispettivamente 2/3 e 4/5, dà l output a lato: È consigliabile migliorare l output sullo schermo, per esempio descrivendo sinteticamente che cosa fa il programma e migliorando l output finale, come nell esercizio che segue. Prova adesso! Effettuare l input dei dati Formattare l output APRI IL FILE frazioni Modifica il programma in modo da ottenere l output riportato a lato. Confronta la tua soluzione con quella riportata nel file frazionisol. 10

Casting, operatori matematici e commento del codice Lezione 4 ABBIAMO IMPARATO CHE... I linguaggi chiamati imperativi (come il C) eseguono un istruzione di seguito all altra, nello stesso identico ordine con cui il programmatore le ha scritte. È importante commentare un programma, dato che con il passare del tempo facilmente ci si dimenticherà di come questo è stato scritto. In C i commenti possono essere scritti in due modalità: // questa è una riga di commento singola /* questa è una riga di commento che può andare su più righe*/ Nel linguaggio C, se viene eseguita una divisione tra due numeri interi utilizzando l operatore di divisione /, come risultato si ottiene solo la parte intera del quoziente, mentre si ha il troncamento dell eventuale parte decimale. L operatore modulo % fornisce il resto della divisione tra numeri interi. Con il termine casting si intende l attribuzione del tipo di dati più adatto a una data variabile per una determinata circostanza implementativa: esistono due tipi di casting la promozione automatica la coercizione La promozione automatica si verifica quando si passa da una variabile inferiore, cioè più piccola in termini di occupazione di spazio di memoria, a una più grande, e non comporta alcuna perdita di dati. La coercizione si verifica quando si passa da una variabile superiore, cioè più grande in termini di occupazione di spazio di memoria, a una più piccola, e generalmente comporta una perdita di dati. In C esistono due operatori unari speciali: ++ incremento di uno (autoincrement); decremento di uno (autodecrement). Si chiamano unari perché operano su una sola variabile: possono essere scritti in modalità prefissa (++var) o postfissa (var++): notazione prefissa: la variabile viene modificata prima di utilizzarla. notazione postfissa: la variabile viene modificata dopo averla utilizzata. 11

UdA 7 Il linguaggio C Verifichiamo le conoscenze 1. Risposta multipla 1 Il commento su di una riga viene effettuato mediante: a. // all inizio b. // all inizio e // alla fine c. /* all inizio d. /* all inizio e */ alla fine 2 Il commento su più di una riga viene effettuato mediante: a. // all inizio b. // all inizio e // alla fine c. /* all inizio d. /* all inizio e */ alla fine 3 L operatore / si può utilizzare tra due variabili: a. dello stesso tipo b. reali c. intere d. numeriche 4 L operatore % si può utilizzare tra due variabili: a. dello stesso tipo b. reali c. intere d. numeriche 5 Indica il risultato del seguente segmento di codice. int a,b; float c; a=3; b=6; c=a/b; a. errore b. 0 c. 0.5 d. 1 6 Indica il risultato del seguente segmento di codice. int a,b,c; a=3; b=6; c=a/b; a. 0 b. 0.5 c. 1 d. 2 7 Indica il risultato del seguente segmento di codice. int a,b; float c; a=9; b=6; c=a/b; a. errore b. 1 c. 1.0 d. 1.5 8 Indica il risultato del seguente segmento di codice. int a,b,c; a=19; b=5; c=a%b; a. errore b. 4 c. 3 d. 1 9 Indica le operazioni errate. a. ++var1 b. var1++ c. var1+1 d. 1++var1 10Qual è il valore finale di var1 e var2? var1=10; var2=10; var2 = 2+(++var1) - 1; a. var1=11 var2=10 b. var1=11 var2=12 c. var1= 9 var2=12 d. var1= 9 var2=13 11Qual è il valore finale di var1 e var2? var1=10; var2=10; var2 = 10*(var1--) - 1; a. var1= 9 var2= 97 b. var1= 9 var2= 98 c. var1= 9 var2= 99 d. var1= 9 var2=100 12Qual è il valore finale di var1 e var2? var1=10; var2=10; var2 = 2*(++var1) - 2*(--var1); a. var1=11 var2=22 b. var1=11 var2=-2 c. var1=10 var2= 0 d. var1=10 var2=20 13Qual è il valore finale di var1 e var2? var1=10; var2=10; var2 = 2*(++var1+2) - 2*(--var1-2); a. var1=10 var2=10 b. var1=10 var2=12 12

Casting, operatori matematici e commento del codice Lezione 4 c. var1=12 var2=20 d. var1=12 var2=18 14Qual è il valore finale di var1 e var2? var1=10; var2=10; var2 = 2*(var1++)+ var2-2*(--var1); a. var1= 8 var2=10 b. var1= 9 var2=10 c. var1=10 var2=12 d. var1=11 var2=12 15Qual è il valore finale di var1 e var2? var1=10; var2=10; var2 = var2*(2*(++var1) - 2*(1-var1--)); a. var1=9 var2=220 b. var1=9 var2=240 c. var1=10 var2=400 d. var1=10 var2=420 2. Vero o falso 1 Con linguaggio imperativo si intende un linguaggio dove l esecuzione delle istruzioni è sequenziale. 2 Il paradigma a oggetti è uno dei possibili paradigmi di programmazione. 3 Con la notazione // si indica che il commento è su due righe. 4 Con la notazione /* inizia un commento che può andare su più righe. 5 I commenti in un programma sono obbligatori. 6 L operatore / effettua la divisione tra numeri interi dando un risultato intero. 7 L operatore % effettua la divisione tra numeri interi dando come risultato il resto. 8 Una variabile di tipo reale può contenere anche il risultato di divisione tra numeri interi. 9 La differenza tra prefisso e postfisso è importante nelle espressioni con due variabili. 10 Con la notazione postfissa la variabile viene modificata prima di utilizzarla. Verifichiamo le competenze 1 Scrivi un programma che legge in input un valore corrispondente a un numero di secondi e lo trasforma in ore, minuti e secondi. 2 Scrivi un programma che, leggendo due ore nel formato hh,mm, calcoli il tempo trascorso tra di esse. 3 Scrivi un programma che visualizzi il resto della divisione tra due numeri interi. 4 Scrivi un programma che legge due numeri reali, ne somma le parti intere e quelle decimali, visualizzando sullo schermo i risultati parziali e quindi il risultato totale. 5 Scrivi un programma che legge in ingresso tre voti di una materia scolastica e ne calcola la media, sia precisa che arrotondata al numero intero. 6 Scrivi un programma che legge in ingresso quattro voti di una materia scolastica e ne calcola la media, sia precisa sia arrotondata al primo numero decimale. 7 Scrivi un programma che legge in ingresso due numeri, ne effettua la moltiplicazione, quindi visualizza a schermo il numero di centinaia, decine e di unità presenti nel risultato. 13

UdA 7 Il linguaggio C 8 Scrivi un programma che visualizzi l inversa di una frazione data. Traccia per la soluzione Leggi a, b. Calcola numinv e deninv: indica con numinv e deninv rispettivamente il numeratore e il denominatore della frazione inversa che si ottengono nel seguente modo: la frazione a b con b 0 ha come inversa la frazione b a con a 0 Scrivi il risultato sullo schermo. 9 Scrivi un programma che calcola il prodotto di due frazioni. Traccia per la soluzione Leggi a, b, c, d. Calcola numprod e denprod: indica con numprod e denprod rispettivamente il numeratore e il denominatore della frazione inversa che si ottengono nel seguente modo: a c b * = ac con b 0, d 0 d bd Scrivi il risultato sullo schermo. 10 Scrivi un programma che calcola il quoziente di due frazioni. Traccia per la soluzione Leggi a, b, c, d. Calcola numquoz e denquoz: indica con numquoz e denquoz rispettivamente il numeratore e il denominatore della frazione inversa che si ottengono nel seguente modo: a : c = ad con b 0, c 0, d 0 b d bc Scrivi il risultato sullo schermo. 14