12
Castf ffig, 0perator[ nnatemat§e $ e cCIrnmentm I Istruzioni in sequenza e cormnrenti La prirr,a caratteristica di un pro gramnTa C (e dei linsuagii chiamati { imperativi }) è quella di eseguire un,istiuzio- ne di seguito all'altra, nello stcsso iclc.ntico orcline cr»r cui il progranrnratore lc ha scritre. Questo schema operativo, che prende nome di csecuzio- rrc .seclucrrzialc, è descritto éraficamente dallo schema a blocchi della |igura a lato. La freccia indica il tlrrsso di esecuzione, cioè la sequenza con cui le istruzioni vengono eseguite. ,j',r'-,1 Uno specifico linguaggio di programmazione implemen- ,u., ta un modo di pensare; il processo di computazione pren- .. de anche il nome di paradigma di computazione. Il C rientra tra i linsua_ÉÉi con paradigma imperativo. In C l'inizio e la fine di una secl,crz:r di istruziolri (blocco o corpo) vengono indicati me- diante parentesi sraffe { }: corpo = { dichiarazioni_variabiti lista_istruzioni}. .( ll Iinguaggio imperativo :cnsiste nell'esecuzione se- :uenziale di istruzioni che es- senzialmente realizzano modi- j che del valore dei dati in me- roria; si pensa il programma :cme sequenza di comandi s:ruzioni). D 393

liceoalberti.itliceoalberti.it/SpazioW/scarica/cap8_lez4.pdf · Created Date: 11/15/2016 5:36:48 PM

  • Upload
    vonhan

  • View
    221

  • Download
    0

Embed Size (px)

Citation preview

Page 1: liceoalberti.itliceoalberti.it/SpazioW/scarica/cap8_lez4.pdf · Created Date: 11/15/2016 5:36:48 PM

Castf ffig,0perator[nnatemat§e $

e cCIrnmentm

I Istruzioni in sequenza e cormnrentiLa prirr,a caratteristica di un pro gramnTa C (e dei linsuagiichiamati { imperativi }) è quella di eseguire un,istiuzio-ne di seguito all'altra, nello stcsso iclc.ntico orcline cr»r cuiil progranrnratore lc ha scritre.

Questo schema operativo, che prende iÌ nome di csecuzio-rrc .seclucrrzialc, è descritto éraficamente dallo schema ablocchi della |igura a lato.

La freccia indica il tlrrsso di esecuzione, cioè la sequenzacon cui le istruzioni vengono eseguite.

,j',r'-,1 Uno specifico linguaggio di programmazione implemen-,u., ta un modo di pensare; il processo di computazione pren-.. de anche il nome di paradigma di computazione.

Il C rientra tra i linsua_ÉÉi con paradigma imperativo.

In C l'inizio e la fine di una secl,crz:r di istruziolri (blocco o corpo) vengono indicati me-diante parentesi sraffe { }:

corpo = { dichiarazioni_variabiti lista_istruzioni}.

.( ll Iinguaggio imperativo:cnsiste nell'esecuzione se-:uenziale di istruzioni che es-senzialmente realizzano modi-j che del valore dei dati in me-

roria; si pensa il programma:cme sequenza di comandis:ruzioni). D

393

Page 2: liceoalberti.itliceoalberti.it/SpazioW/scarica/cap8_lez4.pdf · Created Date: 11/15/2016 5:36:48 PM

{ È importante commenta,re un programma anche soloper se stessi, dato che con ilpassare del tempo facìlmen-te ci sì dimenticherà di comequesto è stato scritto. >

Oltre alle dichiarazioni delle variabili e alla lista delle istruzio-ni, nel pro§ramma è possibile inserire delle righe con la spie-§azione delle istruzioni stesse, in modo da renderlo facilmen-te comprensibile per poter agevolare i programmatori che infuturo dovranno magari eseguire rettifiche e lntesrazioni delcodice: tali rilhe prendono il nome di .( commenti ).

In C i oonrnlerÌti possono essere scritti in due modalità:) // questa è una riga di commento singola) /* questa è una riga di cornmento

che può andare su più righe*/

Il primo tipo cli commcnto è introdotto da / / e indica al compilatore di ignorare tutti icàratteri scritti da quel punto fino alla fine della risa.Il seconclo tipo di commento è introdotto da /* e indica al compilatore di ignorare tuttoquello che è scritto da quel punto fino alla chiusura del commento */, che può anche an-dare a capo ed essere formato da più rishe.

ln un programma, icommenti {anno parte della documentazione ìnterna e sono molto im-portanti: chi sviluppa software generalmente deve intervenire nei programmi che ha scritto inun secondo tempo per apporre modìfiche e/o integrazioni oppure per riutilizzare parte di unprogramma per un nuovo progetto.E moltì difficile ricordare nel tempo ogni codice scritto ed è quindi importante inserire dei com-menti che, nel futuro, possono aìutare a comprendere i nostri stessi programmi.

.. . ' : Prosr«tnnur "telepatico"Realizziamo il prosramma del sioco: "Ti indovino il numero pensato".Il calcolatore chiede all'utente di pensare un numero e §1i dice di effettuare mentalmentealcune operazioni matematiche: al termine indovina il risultato finale, cioè il numero chesta pensando il giocatore.

La sequenza di istruzioni da ese§uire è la seguente:Il pensa un numero;EI raddoppialo;El a&iiungi -L2 a tale numero;?l calcola la metà del risultato;EI sottrai il numero pensato dal totale calcolato;Gl ti indovino ora il totale: è u§uale a 6!

Nella codifica (riportata alla pagina seguente) eseguiamo la lettura del numero pensatodal giocatore nella variabile numPensato, e indlchiamo quindi al giocatore ln sequenzaIe operazioni che deve eseguire mediante la scrittura a video con l'istruzione printf( ).

Contemporaneamente al giocatore, facciamo ese§uire §li stessi calcoli al calcolatore in mo-do da verificarne la correttezza, ttilizzando la -variabile numcalcolato per mem orizzarnesia i risultati intermedi sia quello finale.

394

teli

,

4

561

9

10:.1I2

1q1S

1l1E

1!2t23

2a

?4

IIntneNeottder

Ve,

toIdi

Page 3: liceoalberti.itliceoalberti.it/SpazioW/scarica/cap8_lez4.pdf · Created Date: 11/15/2016 5:36:48 PM

td.pètia..

r2

{

61

9101t!2131{

16

1e

202t

23

25

#iàc.Iude <sldio. à>nain (){

OuesÈo pxogràn@a verifica fe operaziooiche vengono -fètte e.seguire èd un giocatorene] trucco de-l ,rr&ero te.lepaÈico

iat tlumPensaÈo ! Drnncalcolato;// Leqgi un nurneropri.ltf (nlntroduci iI nuDcro èhèscanf ({$dn, ÉnumPensator,// seqni le ope.azioai

hài p€n3ato :");// opetèzione di irprrà de7 naIl.ero

printt (rora "addotpia]'o.

. .'r) ;n\imcalcolaco = ( nì§rPe.saÈo r 2 );prinÈf ("\Ds@a aI risult.to 12 ... ,'r,au&Calcolalo = (nuIllcalcolaEo {12 };p.inrf (n\ndtvtdi il .isEltato pcr 2 ...");numcalcolaco = (numcalcoLat,o / 2 );pri.nrf ( "\naottrai àl risultato il aEero cbe àvevi p€n3ato,.i),ir:tncalcolalo = (numcalcolato - oumPensato ):/,/ Coùùnica i.t rì.su-ltatopli.cf (n\nln osmi c.so il nuEc.o fiuale e\' 6 !"),prinÈf (I\aII lràIor€ ottcnuio dèi cèlcoLi è\! td", numcalcolaco).:

I La divisione tra numeri interiIntroduciamo ora una particolarità del lin§ua§liio C che ci permette di ese§uire l'operazio-ne di divisione tra numeri interi producendo come risultato un numero intero.Nel lin§ua§gio C, se viene eseEuita una divisione tra due numeri interi, come risultato siottiene solo la parte intera del quoziente, mentre si ha il troncamento dell'eventuale partedecimale.

Vediamo alcuni esempi dove possiamo eonfrontare il risultato ottenuto utilizzandol'opera-tore di divisione / tra due numeri reali (float) con quello ottenuto nel caso in cui numeridi partenza siano di tipo int.

{ È facile verificare che il rÈsultato è sempre uguale allametà del numero che {acciamoaggiungere al giocatore con lasomma eseguita nell'istruzione16. >

5/2=2,59/2=4,5

10/3=3,333 10/3-315/4=3,7s 15/4=3

20/6=3,333100/9=11,11 100/9=11

1000/33=30,30 1000 .r 33 = 30

395

Page 4: liceoalberti.itliceoalberti.it/SpazioW/scarica/cap8_lez4.pdf · Created Date: 11/15/2016 5:36:48 PM

:.rr, rr l)dt'dsione t,.( interiEffettuiamo la divisione tra due numeri interi salvando ilintera e successivamente in una variabile reale.

risultato prima in una variabile

divisioncl,c 12E

il:l":l

lil1sI

tlraL

ilVedunl

12

3F

.l

;l_- |

12 I

." I

.. I

.= I

,-" I

,., L

+::c: ':ce <ii.d:a.:r>na:. ( )

(

int .-il|.e:o:, :,ìre:c2 , ::iri.e:o3:float ::'ir.E:oq iì ./ Legg L i i: u:;neriprr.Èf (,'\nlhtroduci it dividendo :',):sca.-f (trtdn, t.-.,:r,e:o:) :p:r.Èf('rlntroduci i1 divisore :',) isca::f ( làd", &::rr.e:r2 ) :./1 As---c-.jr. r. .a-i.aiia.'Jr.e:c3=:.,rrr,e:o:/a .i]T.e:c2,.a..xr,e: o, =::.:n-.e: a: /: Jrre: c 2 i// Cctnntaé I ristii !È Erp:1::rf (,,\hRisultato ne.LLap.:1Èf (,'\nRi,snlÈato nella

,i.,.' risùi!ètc ì':=Ììe 1,?riè.biìe iii:era/'./ risui!aÈc l:ei.iè 'r'arìaÌriìe rsèie

lra.ria.bile inteaa : $dr,. :tu1ì1e:o3);Ira.riabii.e r€ale l16.2f',, :...jÌr.e:È€ ) )

ll

SaPr

venl

Se mandiamo in esecuzione il pro-gramma e inseriamo rispettivamente10 e 3 come dividendo e divisore, ot-teniamo il se§uente output: >

Come possiamo notare, il risultato contenuto nelle due variabili è identico: in entrambi icasi, infatti, è stata troncata la parte decimale.

Il rcsto della divisiono tru nurneri interiUn secondo operatore specifico per i numeri interi è l'operatore di modulo (E).L?operatore B è di notevole utilità pratica in quanto fornisce il resto della clivisione tra nu-mcri interi. Vediamo alcuni esempi di esecuzione:

ffi f"fo, si può usare l'operatore di modulo B sui tipi in virgola mobile (fIoat e double).

nun

(

\

tra

EaE

cot

Povatcin

2*2=4+1:52*4=8+1=9

12 / 5:2 5*2=10+2=1215"/"4=3 15 / 4 = 3 4*3=12+3=15

6*3=18+2=)O9*2=18+5=23

396

Page 5: liceoalberti.itliceoalberti.it/SpazioW/scarica/cap8_lez4.pdf · Created Date: 11/15/2016 5:36:48 PM

(iysr."Cilrc r: rrevrrSapendo che le §alline della nonna mediamente producono 5 uor.a alla settimana e che le uova|engono vendute in conlèzioni di 12 (dozzina), quante uova avan z.àto ogni mese alla nonna?

2E-ttlil:l.:l,t I

»lrrlro I

rslrel,7

I

Naturalmente non si può applicare il programma al caso reale, dato che è impensabìle "accu-mulare" la uova per un mese prima di impacchettarle per la vendita! Andrebbe modificata la

' frequenza con la quale vìene effettuato l'impacchettamento leggendola da input.

Vedremo in seÉJrito come questo operatore ci tornerà utile per individuare semplicemente se

un numero intero è pari o dispari: basterà controllare il risultato della dir.isione per due delnumero e, in caso di numero pari risulterà esserc uguale a 0, altrimenti sarà uÉLlale a 1.

.:r.lrd:-.i:d:1.r1'ar"oi

i.t i:!: 1, ::rti.n:r,_:, :j.r::rìi, ir_.rr::,:.ir.:-i:t,:i:irr..,, i::r.::,

!:rt1.EJr : .li

,-,-ifr'("I.trotlu<i i1 numero deUe gall-ine : ")ii.i.,' ("Xd", 8t.llii(,),p i,,i;('Introdlci i1 p.ezzo alla dorzina : "),:..1i. (,,%d,., 8pr!::.),

:.Lr r; = irnLli,rt r i:iri,:r: + r,r r:!::t.i,r::r,: = ( :..-:,)..i / :t )tiìi, _:.- = i: ..::.: + ,1,:::r,ìii

t-:'ìi'("\nln un mese si producono Xd uova', it,: ;),p-j.i' ("\nItr un oese 3i inca5sano Xd eu.o", :, )::::)j

nrKiÈ- t !\---l );l.li/ll +{}{l!{.{-r:

{ ll casting, in informatica,consiste nell'attribuzione del ti-po di dati piar adatto a una datavariabile per una determinatacircostanza implementativa. )

. Utilizzare gli operatori matematici

. lnserire commenti

- APRI lL FILE nrocuic .c

S§ Scrivi un programma che legge tre numeri interi nelle variabili num1, num2 e num3..É1§ Successivamente {ai eseguire la divisione e il calcolo de resto in tutte le possibili combìna-

zioni, e visualizza in modo ordìnato e formattato i risultati sullo schermo.ff Confronta la tua soluzione con quella rìportata nel file cilvls:r-.rilel ,:.

ffi Scrivi la soluzione utilizzando le funzioni i cin ( ) e cout ( ) del linguaggio C++.# Confronta la tua soluzione con quella riportata nel fiie clivi:ìo'-iScl.cpa.

ffi {,ltsrtiriHEsiste la possibilità di convertire una variabile da un tipoin un altro: per esempio, è possibile trasiormare una varia-bile int in una variabile float: questo tipo di operazioneprende il nome di { casting }.Esistono due tipi di ciìsriÌìi - la prorrozione il LltoÌr1iìticir ela cocrcizione - che illustriamo di se§uito.

Page 6: liceoalberti.itliceoalberti.it/SpazioW/scarica/cap8_lez4.pdf · Created Date: 11/15/2016 5:36:48 PM

) La promozione automatica si verifica quando si passa da una variabile ,,inferiore,,, cioèpiù piccola in termini di occup azione di spazio di memoria, a una più srande, e non com-porta alcuna perdita di dati.

paÉ

1zl

456789

LO

11L2lì14l5t5L7L61920

IMarinsrdiv:l'ot

// Promozione da int a fToatint numl;float num2;numl = 3;nun2 = numli //promozione senza perdita iti datiprintf ("8d 8f", nunl, num2 ) ;

// Coerciziooefloat nunl iint nulll2 inunl = 3 ,21;nun2 = nunl;

Output delcodice

@

La coercizione si verifica qualdo si passa da una variabile "superiore", cioè più srandein termini di occupazione di spazio di memoria, a una più piccola, e generalmente com-porta una perdita di dati.

da fTot ad inx

OLtput del codice

@printf( "tf td",

//coercizione con pe lita ili itatinuml, nun2 ) ;

Deterrninaxìone ilella parte ìntera e dechnale di un numeroApplichiamo adesso l'operazione di casting per separare la parte intera dalla parte decima-le del risultato di una divisione.I-ialgoritmo è il se§uente:

E leg§i due numeri interi;E esegui la divisione tra interi;E converti i numeri interi in reali;E esegui la divisione tra reali;E sottrai al risultato reale la parte intera ottenendo la sola parte decimale;Él visralizza i risultati sullo schermo.

IIn(l+)-

Nelsor

Nor)v)v

Qu)+)-

CASTING ESPLICITO

ll casting appena illustrato prende anche il nome dicasting implicito, in quanto viene eseguito dìretta-mente dall'istruzione di assegnazione.È preferibile effettuare invece il casting esplicito, indi-cando tra parentesi il tipo di variabile di destinazionenella quale vogliamo convertire la variabile di parten-za, come nei due esempi proposti a lato.

// Castins dd .f,.lodt dd jnl

float reaì.È,reale = 2?.16,lrruÌìer,r = (int)res\e, // và1e 27

// La: itnea

leale r lfloat)ùùetoì //va7e Z3.oo

398

Page 7: liceoalberti.itliceoalberti.it/SpazioW/scarica/cap8_lez4.pdf · Created Date: 11/15/2016 5:36:48 PM

pòÈelnterò.c

:L

2Elìl.ttl5l6l

II,litl12 I

13 I

14 I

rs I

16 I

17 I1s I

1sl20L

ffiilr-:1n,: I uai e iiiii:a.:r 'r iìrn( ) i

intfìoat . j. .

)

L:-irt'("\nlntroduci il dividendo r") j:.i;rr' ("ld ', &|1,t. .1;,i.-i,rl'("Introduci i1 divisore : ")j,: ( i'rì: ( -!d. &r]r-"-.'.i)i

-.r 'r(eBUo it r dltin6 : ,

,,,.. ,] - ,,, , .;' .. :. intl '-.':.. i-. . ../ .. -:

r,-1nt'("\nRisultato divisione tra reali :-.Ì6.2f , :irr=--:ì);r-irl' ("\nPa|te inter.n dellir divisione : igd", ,r rì-r )j!-i,rii ("\nparte decinale della divisione :16.?f", rì iì,i-jrr i.]l..-_-).i

L'istruzione 13 ha eseguito il casting in modo implicito, mentre l'istruzione'j4lo ha effettuatoin modo esplicìto: anche se il risultato è lo stesso, è bene abituarsi a effettuare sempre il ca-sting in modo esplicito, per favorire ia leggibilità del codice e le eventuali operazioni ài testinge debuggÌng del programma.

Mandando in esecllziole il programma einserendo, comc nell'esempio 9, 10 comedividendo e 3 come divisore, si ottienel'output della schermata a lato: I

ffi d)pcratori unariln C esistono due operatori unari spcciali:E ++ irrcrcnrcrr[o di uno (.anttoincrement);I - rlccrclrcrrto di Llno (autodecrement).

Non ci sono difficoltà nell'utilizzo di questi operatori :utihzzandoli su sinsole r.ariabili, cioè:F var++ equivale alla scrittura var=var+1;E var-- cquivale alla scrittura var=var-1;

(Jueste operazioni possono anche essere scritte nella seguente forma:i ++var equivale alla scrittura var=var+1;D --var equivale alla scrittura var=var-1.

Nella prima scrittura gli opcrìrori sono l)ostlissi (var++ s var--), mentre nella sccondasono I\r'Lli.\i ( . var c-var).

399

Page 8: liceoalberti.itliceoalberti.it/SpazioW/scarica/cap8_lez4.pdf · Created Date: 11/15/2016 5:36:48 PM

La dillerenza tra prelisso e postiisso è importante nelle espressioni con due variabili: nellanotazione prefissa prima viene incrementata (o decreme ntata) la variabile e poi valutatal'espressione, mentre nella reotazione postfissa prima viene valutata l'espressione e poiincrementata (o decrementata) la variabile.

Notazione prefissa: la variabile viene modificata prima di utilizzarla.Notazione postfissa: la variabile vìene modificata dopo averla utilizzata.

Perciò, dato:

intx,y=2;Ex= (++y) -li //prefissagx= (y++) -li //postfissa

Nella prima espressione x vale 2 mentre nella seconda espressione x vale 1.La variabile y, invece, vale comunque 3.

Quello che segue è un esempio completo con l'output relativo.

Preincrentento e postìncr.entenk)

+inc ì0de irtdiÒ.h)rdin( )

{int va.1 = !o, vat2 = 1e, va.l, !ar4i

++và.2 iprintf ("\nPostincremento ld e p.eincrenento Xd"! va.l, !a..2)jva.1- - j- -va.2tprintf ("\nPostdÉcremento Xd e predec.e'nento Xd", va.r, !a.2)j

%d

1

23F4lslelzl-tsl

ra I

tlplrrlr+lrslrsltzL

p. i nt.f ( "\n\n" ) iva.i=(++var1)'ljv..a = ( var:++) lip.int{ ( "\nPreincremento vè11p.intf ( "\nPostin.remento vaÌ-2

e sottrazione Xd", vàr'1, !a.:t)ie sottrazione Xd"J vdr:', !a14)j

I-ioutput è il seguente:

ln generale l'istruzione come "++x" risulta più efficìente di un'espressione del tipo"x=x+1".

E§ltlo,ststqO Colcolo dello sommo dl irozioni

i

400

Page 9: liceoalberti.itliceoalberti.it/SpazioW/scarica/cap8_lez4.pdf · Created Date: 11/15/2016 5:36:48 PM
Page 10: liceoalberti.itliceoalberti.it/SpazioW/scarica/cap8_lez4.pdf · Created Date: 11/15/2016 5:36:48 PM

O t. ni.porta multipla1 ll commento su di una riga viene effettuato

mediante:

a. ll all'iniziob. // all'inìzio e // alia fìnec. /* all'inizÌo

d. /* all'inizio e */ alla fine

2 ll commento su più di una riga viene effettuatomediante:

a. ll all'iniziob. /l all'inizio e l/ alla linec. /* all'iniziod. /* all'inizio e */ alla fine

3 lloperatore / si può utilizzare tra due variabili:a. dello stesso tipob. reali

c. Ìntered. numeriche

4 lloperatore 7o si può utilizzare tra due variabili:

a. dello stesso tipob. rea i

c. intered. numerÌche

5 lndica quali operazioni sono prefìsse:a.x= (++y) _1,b.x= (y++) _1;c.x=2-(++I)id.x=x+(y++)iòr=rr+lrv.

6lndica il risultato del seguente segmento dìcodice.int a,b,cia=3 ib=6;

a.0b.0.5c. 1

d.27 lndica il risultato del seguente segmento di codice.

int a, b;float ci

b=6 ì

a.

b.c.

d.

a.

b.

c.

d.

errore1

1.0

1.5

130vÉ

viva

't40va

va

va

S lndica il risultato dèl seguente segmentocodice.int a, b, c;a=19;b=5,c=aBb ia. erroreb.4c.3d. 1

9 lndica le operazioni errate.

a. ++va11

b. varl ++c. varl +1

d. 1++varl

1OOual è il valore finale di varl e var2?

varl=10;

\tar2 = 2+l++\tarL) - 1;a. varl=11 var2=10D. Va|= l l ua =llc. varl = 9 var2=12d. varl = 9 var2=13

11Qual è il valore finale di varl e var2?

varl=l-0;var2=L0 ìvar2=10*(varl__)_1;a. var'l= 9 va2= 97

b. varl = 9 vaZ= 98c. varl = 9 va2= 99d. varl = 9 var2=100

12Qual è il valore finale divarl e var2?

var 1= 10 ;var2=10 ivar2 = 2r.(++var1) - 2*(--varl);a. varl =11 var2=22b. varl =11 var2=-2c. varl =10 var2= 0d. varl =10 var2=20

di

1Cr2 ll

I

3Cr4Cr5 lc

6[r7lt8Ur9La10L

Page 11: liceoalberti.itliceoalberti.it/SpazioW/scarica/cap8_lez4.pdf · Created Date: 11/15/2016 5:36:48 PM

13Qual è il valore finale di var'l e var2?

varl=10 i'r'ar2=Io ivar2 = 2* (++var1,+21 - 2t 1--var7-2\ ia. varl=10 var2=10

b. varl =10 vat2=12c. varl=12 var2=20

d. varl=12 var2=18

14Oual è il valore finale di varl e var2?

varl=10;var2=10 i!ar2 = 2* (var7+)+ var2- 2*1--var1);

15Oual è il valore finale di varl e varZ?

varl=10;var2=10 ivar2 =var2* l2t (++varl ) _ 2* ( l_varl__) ) ;

a. varl = 8

b. varl = 9

c. varl =10d. va = I I

var2=10

\ar2=10var2=12

var2=12

var2=220

var2=240vat2=400var2=420

a. varl =9b. varl =9c. varl =.]0d. var'l=10

@ z. v"ro o falso

1 Con linguaggio imperativo si intende un linguaggio dove l'esecuzione delle istruzionì è sequenziale.

2 ll paradigma a oggetti è uno dei possibili paradigmi di programmazione.

3 Con Ia notazione // si indica cheil commentoèsu due righe.

4 Con la notazione /* inizia un commento che può andare su più rìghe.

5 lcommenti in un programma sono obbligatori.

6 lJoperatore / effettua la divisione tra numeri interi dando un risultato intero.

7 lJoperatore % 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 promozione siverifica quando si passa da una variabile "superiore" a una più piccola.

10 La coercizìone generalmente comporta una perdita di dati.

00oo00{!6CIo00000eoCIOB

'..-;,ù&i;il. . .,!

Page 12: liceoalberti.itliceoalberti.it/SpazioW/scarica/cap8_lez4.pdf · Created Date: 11/15/2016 5:36:48 PM

2

3

4

Scrivi un programma che legge in input un valore corrispondente a un numero di secondi e lo trasformain ore, minuti e secondi.

Scrivi un programma che, leggendo due ore nelformato hh,mm, calcoli il tempo trascorso tra di esse.

Scrivi un programma che visualizzi il resto della divisione tra due numeri interi.

Scriviun programma che legge due numerireali, ne somma le parti intere e quelle decimali, visualizzandosullo schermo i risultati parziali e quindi il risultato totale-

Scrivi un programma che legge in ingresso tre voti di una materia scolastica e ne calcola la media, siaprecisa che arrotondata al numero intero.

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.

Scrivi un programma che legge in ingresso due numeri, ne effettua la moltiplicazione, quindi visualizzaa schermo il numero di centinaia, decine e di unità presenti nel risultato.

Scrivi un programma che visualizzi l'inversa di una frazione data.

Traccia per la soluzione) Leggi a, b.

) Calcola numtnv e denrnv: indica con numrnv e denrnv rispettivamente il numeratore e ildenominatore della frazione inversa che si ottengono nel seguente modo:

abla frazione 6con b+0 ha come inversa lafrazione; con a+0

I Scrivi il risultato sullo schermo.

Scrivi un programma che calcola il prodotto di due frazioni.

Traccia per la soluzioneI Leggi a, b, a, d.

) Calcola nulProd e denProd: indica con nullProd e denProd rispettivamente il numeratore e ildenominatore della frazione inversa che si ottengono nel seguente modo:acacb^ d : bd cono+u,o*u

) Scrivi il risultato sullo schermo.

Scrivi un programma che calcola il quoziente di due frazioni.

Traccia per la soluzione) Leggi a, b, c, d.

) Calcola nulguoz e denQuoz: indica con nu[Quoz e denQuoz rispettivamente il numeratore e ildenominatore della frazione inversa che si ottengono nel seguente modo:

acadE-:A=Tacon b*O, c+O, d+0

) Scrivi il risultato sullo schermo.

'ii3ii:

b.*:5J6T