Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
)RUQLUH OD FRQRVFHQ]D GL EDVH VXOOD VWUXWWXUD H OH FDUDWWHULVWLFKH GL XWLOL]]R GHL FDOFRODWRUL HOHWWURQLFL 3UHVHQWDUH L PHWRGL SHU OD VROX]LRQH GL FODVVL GL SUREOHPL DOJRULWPL HG L FRQFHWWL EDVH GHL OLQJXDJJL GL SURJUDPPD]LRQH WLSL GL GDWR H VWUXWWXUH GL FRQWUROOR 0HWWHUH D GLVSRVL]LRQH XQ OLQJXDJJLR GL SURJUDPPD]LRQH LO & SHU OD WUDGX]LRQH GHJOL DOJRULWPL GL ULVROX]LRQH LQ SURJUDPPL SHU XQ HODERUDWRUH 'HVFULYHUH DOFXQL PHWRGL GL FDOFROR QXPHULFR SHU OD VROX]LRQH GL SUREOHPL WLSLFL GHOOLQJHJQHULD H IRUQLUH JOL DOJRULWPL & FKH OL UHDOL]]DQR
&2562 ', )21'$0(17, ', ,1)250$7,&$ ,QJ 0HFFDQLFD $2 $QQR $FFDGHPLFR
INTRODUZIONE 1
INTRODUZIONE 2
,O OLQJXDJJLR & ,O OLQJXDJJLR & $OIDEHWR H VLQWDVVL GHO & 7LSL GL GDWR VFDODUL H VWUXWWXUDWL (VSUHVVLRQL 'LFKLDUD]LRQH GL FRVWDQWL YDULDELOL H ORUR WLSR ,VWUX]LRQL GL DVVHJQDPHQWR H GL LQJUHVVRXVFLWD ,VWUX]LRQL FRPSRVWH FRQGL]LRQDOL H FLFOL /LVWUX]LRQH GL VDOWR LQFRQGL]LRQDWR )XQ]LRQL H SURFHGXUH 7HFQLFKH GL SDVVDJJLR GHL SDUDPHWUL 5HJROH GL YLVLELOLWDC H WHPSR GL YLWD ,O PRGHOOR UXQWLPH GHO & /LEUHULH VWDQGDUG *HVWLRQH GHL ILOH 0RGXODULWDC LQ & 6WUXWWXUH GDWL 7HFQLFKH SHU OD UDSSUHVHQWD]LRQH H OD JHVWLRQH GL VWUXWWXUH GDWL OLVWH DOEHUL WDEHOOH 5DSSUHVHQW]LRQH FROOHJDWD GHO WLSR GL GDWR DVWUDWWR OLVWD HG DOEHUR ELQDULR
INTRODUZIONE 3
INTRODUZIONE 4
&DOFROR 1XPHULFR 0HWRGL GLUHWWL HG LWHUDWLYL SUHFLVLRQH &DOFROR GHJOL ]HUL GL XQD IXQ]LRQH PHWRGR GHOOD ELVH]LRQH GHOOH FRUGH GHOOH VHFDQWL H GHOOH WDQJHQWL 0HWRGL GLUHWWL SHU OD ULVROX]LRQH GL VLVWHPL GL HTXD]LRQL OLQHDUL PHWRGR GL *DXVV *DXVV -RUGDQ GHFRPSRVL]LRQH /8 FDOFROR GHOOD PDWULFH LQYHUVD 0HWRGL LWHUDWLYL SHU OD ULVROX]LRQH GL VLVWHPL GL HTXD]LRQL OLQHDUL PHWRGR GL -DFREL H *DXVV6HLGHO ,QWHUSROD]LRQH GL )XQ]LRQL PHGLDQWH SROLQRPL PHWRGL GL /DJUDQJH H GL 1HZWRQ ,QWHJUD]LRQH GL )XQ]LRQL PHWRGR GHL UHWWDQJROL GL %H]RXW H GL 6LPSVRQ 0HWRGL SHU OD 6ROX]LRQH GL (TXD]LRQL 'LIIHUHQ]LDOL PHWRGL GL (XOHUR GL 5XQJH .XWWD GL (XOHUR PRGLILFDWR 6ROX]LRQH GL 6LVWHPL GL (TXD]LRQL GLIIHUHQ]LDOL ,O OLQJXDJJLR )RUWUDQ $QDOLVL GHOOH FDUDWWHULVWLFKH GHO OLQJXDJJLR )RUWUDQ DWWUDYHUVR FRQIURQWL FRQ LO OLQJXDJJLR & $QDOLVL GL DOFXQL DOJRULWPL )RUWUDQ
3DJLQD :::
$OOLQGLUL]]R LQWHUQHW
KWWSZZZOLDGHLVXQLERLW&RXUVHV)RQG0HFF
VRQR GLVSRQLELOL LO SURJUDPPD PDWHULDOH GLGDWWLFR LQWHJUDWLYR LO VRIWZDUH JUDWXLWR SHU OR VYLOXSSR GHL SURJUDPPL L WHVWL GL HVDPH DOFXQL HVHUFL]L VYROWL HG DOWUH LQIRUPD]LRQL XWLOL SHU JOL VWXGHQWL GHO FRUVR *OL VWXGHQWL SRVVRQR FRQVXOWDUH OD SDJLQD GDO ODERUDWRULR GHO &HQWUR GL &DOFROR GRYH VL VYROJRQR OH HVHUFLWD]LRQL RSSXUH GLUHWWDPHQWH GD FDVD VH FROOHJDWL DG ,QWHUQHW
INTRODUZIONE 5
INTRODUZIONE 6
7HVWL FRQVLJOLDWL
'LVSHQVH GHO &RUVR IRWRFRSLH GHL OXFLGL PRVWUDWL D OH]LRQH &HUL ' 0DQGULROL / 6EDWWHOOD ,QIRUPDWLFD LVWLWX]LRQL /LQJXDJJLR GL 5LIHULPHQWR $16, & 0F*UDZ+LOO
/LQJXDJJLR &
2UDULR GHOOH (VHUFLWD]LRQL LQ /DERUDWRULR VDOD WHUPLQDOL GHO FHQWUR GL FDOFROR /XQHGL 0DUWHGu (VDPH 3URYD VFULWWD H SURYD RUDOH
$.HOOH\ ,3RKO & 'LGDWWLFD H 3URJUDPPD]LRQH $GGLVRQ :HVOH\ $%HOOLQL $ *XLGL *XLGD DO /LQJXDJJLR & 0F *UDZ +LOO .HUQLJKDQ 5LWFKLH ,O /LQJXDJJLR & -DFNVRQ
&DOFROR 1XPHULFR
GL
&DOFROR
1XPHULFR
$OORUDOH HC REEOLJDWRULR SUHVHQWDUH XQD HVHUFLWD]LRQH VXOOH VWUXWWXUH GDWL VYROWD DXWRQRPDPHQWH
2UDULR ULFHYLPHQWR *LRYHGLC FR '(,6 7HO
: 3UHVV 6 7HXNROVN\ : 9HWWHUOLQJ % )ODQQHU\ 1XPHULFDO 5HFLSHV LQ & 6HFRQG (GLWLRQ &DPEULGJH 8QLYHUVLW\ 3UHVV
(VHUFL]L
$ &LDPSROLQL ( /DPPD (VHUFL]L GL SURJUDPPD]LRQH /LQJXDJJLR & 3URJHWWR /HRQDUGR (VFXODSLR
FONDAMENTI DI INFORMATICA (ING. MECCANICA)
INTRODUZIONE 7
INTRODUZIONE 8
,QIRUPDWLFD
(VLLVWRQR YDULLH GHILLQLL]LLRQLL (V VWRQR YDU H GHI Q ] RQ 6FLHQ]D GHL FDOFRODWRUL HOHWWURQLFL &RPSXWHU 6FLHQFH 6FLHQ]D GHOOLQIRUPD]LRQH 'HILLQLL]LLRQH SURSRVWD 'HI Q ] RQH SURSRVWD 6FLHQ]D GHOOD UDSSUHVHQWD]LRQH H GHOOHODERUD]LRQH GHOOLQIRUPD]LRQH &DOOFROODWRUH (OOHWWURQLLFR &D FR DWRUH ( HWWURQ FR HC XQR VWUXPHQWR SHU OD UDSSUHVHQWD]LRQH H OHODERUD]LRQH GHOOH LQIRUPD]LRQL )DQQR SDUWH GHOOOO,QIRUPDWLLFD )DQQR SDUWH GH ,QIRUPDW FD PHWRGL SHU OD UDSSUHVHQWD]LRQH GHOOH LQIRUPD]LRQL PHWRGL SHU OD UDSSUHVHQWD]LRQH GL SURFHGLPHQWL ULVROXWLYL OLQJXDJJL GL SURJUDPPD]LRQH DUFKLWHWWXUD GHL FDOFRODWRUL VLVWHPL RSHUDWLYL HWF
DATI
Calcolatore Elettronico
RISULTATI
FONDAMENTI DI INFORMATICA
INTRODUZIONE
FONDAMENTI DI INFORMATICA
INTRODUZIONE
, 3UREOHPL GD ULVROYHUH
, SUREOOHPLL FKH VLLDPR LLQWWHUHVVDWWLL D ULLVROOYHUH FRQ , SURE HP FKH V DPR Q HUHVVD D U VR YHUH FRQ OO
HOODERUDWWRUH VRQR GL QDWXUD PROWR YDULD H DERUD RUH (VHPSL 'DWL GXH QXPHUL WURYDUH LO PDJJLRUH 'DWR XQ HOHQFR GL QRPL H UHODWLYL QXPHUL GL WHOHIRQR WURYDUH LO QXPHUR GL WHOHIRQR GL XQD GHWHUPLQDWD SHUVRQD 3UREOHPD GHO /XSR GHOOD &DSUD H GHO &DYROR 'DWL D H E ULVROYHUH O
HTXD]LRQH D[E 6WDELOLUH VH XQD SDUROD YLHQH DOIDEHWLFDPHQWH SULPD GL XQ
DOWUD 6RPPD GL GXH QXPHUL LQWHUL 6FULYHUH WXWWL JOL Q SHU FXL O
HTXD]LRQH ;Q <Q = Q KD VROX]LRQL LQWHUH SUREOHPD GL )HUPDW 2UGLQDUH XQD OLVWD GL HOHPHQWL &DOFRODUH LO PDVVLPR FRPXQ GLYLVRUH IUD GXH QXPHUL GDWL &DOFRODUH LO PDVVLPR LQ XQ LQVLHPH + /D GHVFUL]LRQH GHO SUREOHPD QRQ IRUQLVFH LQ JHQHUH XQ PHWRGR SHU FDOFRODUH LO ULVXOWDWR
5LVROX]LRQH GL 3UREOHPL
$IILQFKHC XQ SUREOHPD VLD ULVROYLELOH LQ JHQHUDOH HC QHFHVVDULR FKH OD VXD GHILQL]LRQH VLD FKLDUD H FRPSOHWD 1RQ WXWWL L SUREOHPL VRQR ULVROYLELOL DWWUDYHUVR O
XVR GHO FDOFRODWRUH ,Q SDUWLFRODUH HVLVWRQR FODVVL GL SUREOHPL SHU OH TXDOL OD VROX]LRQH DXWRPDWLFD QRQ HC SURSRQLELOH $G HVHPSLR VH LO SUREOHPD SUHVHQWD LQILQLWH VROX]LRQL SHU DOFXQL GHL SUREOHPL QRQ HC VWDWR WURYDWR XQ PHWRGR ULVROXWLYR SHU DOFXQL SUREOHPL H
VWDWR GLPRVWUDWR FKH QRQ HVLVWH XQ PHWRGR ULVROXWLYR DXWRPDWL]]DELOH 1RL FL FRQFHQWUHUHPR VXL SUREOHPL FKH UDJLRQHYROPHQWH DPPHWWRQR XQ PHWRGR ULVROXWLYR IXQ]LRQL FDOFRODELOL 8QR GHJOL RELHWWLYL GHO &RUVR HC SUHVHQWDUH OH WHFQRORJLH H OH PHWRGRORJLH GL SURJUDPPD]LRQH 7HFQRORJLH VWUXPHQWL SHU OD UHDOL]]D]LRQH GL SURJUDPPL 0HWRGRORJLH PHWRGL SHU O
XWLOL]]R LQ PRGR FRUUHWWR HG HIILFDFH GHOOH WHFQRORJLH GL SURJUDPPD]LRQH
FONDAMENTI DI INFORMATICA
INTRODUZIONE
10
FONDAMENTI DI INFORMATICA
INTRODUZIONE
11
5LVROX]LRQH GL XQ SUREOHPD
&RQ TXHVWR WHUPLQH VL LQGLFD LO SURFHVVR FKH GDWR XQ SUREOHPD H LQGLYLGXDWR XQ PHWRGR ULVROXWLYR WUDVIRUPD L GDWL LQL]LDOL QHL FRUULVSRQGHQWL ULVXOWDWL ILQDOL $IILQFKHC OD ULVROX]LRQH GL XQ SUREOHPD SRVVD HVVHUH UHDOL]]DWD DWWUDYHUVR OXVR GHO FDOFRODWRUH WDOH SURFHVVR GHYH SRWHU HVVHUH GHILQLWR FRPH VHTXHQ]D GL D]LRQL HOHPHQWDUL
$/*25,702
/DOJRULWPR HC O
LQVLHPH RUGLQDWR GHOOH D]LRQL FKH ULVROYH XQ GDWR SUREOHPD ODOJRULWPR GHVFULYH LO PHWRGR ULVROXWLYR DWWUDYHUVR XQ LQVLHPH RUGLQDWR GL D]LRQL O
HVHFX]LRQH GHOOH D]LRQL VHFRQGR O
RUGLQH VSHFLILFDWR GDOO
DOJRULWPR D SDUWLUH GDL GDWL GL LQJUHVVR FRQVHQWH GL RWWHQHUH L ULVXOWDWL UHODWLYL DOOD VROX]LRQH GHO SUREOHPD
Metodo Risolutivo (algoritmo)
DATI
Esecutore
RISULTATI
+ 6L ID ULIHULPHQWR DG XQ HVHFXWRUH FRQ TXHVWR WHUPLQH VL LQWHQGH XQD PDFFKLQD DVWUDWWD QRQ QHFHVVDULDPHQWH XQ FDOFRODWRUH LQ JUDGR GL HVHJXLUH OH D]LRQL VSHFLILFDWH GDO PHWRGR ULVROXWLYR
FONDAMENTI DI INFORMATICA
INTRODUZIONE
12
FONDAMENTI DI INFORMATICA
INTRODUZIONE
13
$OJRULWPR
$OWUH SURSULHWDC GHVLGHUDELOL JHQHUDOLWDC WHUPLQD]LRQH GHWHUPLQLVPR HIILFLHQ]D 8Q DOJRULWPR SXRC HVVHUH YLVWR FRPH LO SURFHGLPHQWR GL FDOFROR GL XQD IXQ]LRQH FKH PDSSD XQR R SLXC YDORUL GL XQ GRPLQLR $ LQSXW GHOODOJRULWPR LQ XQ YDORUH GHO FRGRPLQLR % RXWSXW GHOODOJRULWPR
Dati (input) x
Algoritmo
FONDAMENTI DI INFORMATICA
INTRODUZIONE
14
FONDAMENTI DI INFORMATICA
INTRODUZIONE
15
$OJRULWPR XQ SR GL VWRULD
,O WHUPLQH DOJRULWPR GHULYD GDO QRPH GHO PDWHPDWLFR DUDER $O.KRZDU]LPL GHO ,; VHFROR GF FKH SHU SULPR VXJJHULC XQ PHWRGR SHU VRPPDUH GXH QXPHUL UDSSUHVHQWDWL QHO VLVWHPD QXPHULFR +LQGX H FRQWULEXLC DOOD IRQGD]LRQH GHOODOJHEUD 1HO PHGLRHYR LO WHUPLQH DOJRULVPXV VHUYLC DG LQGLFDUH LO FRPSOHVVR GL RSHUD]LRQL QHO FDOFROR QXPHULFR FRQ QXPHUL DUDEL $WWXDOPHQWH FRQ LO WHPLQH DOJRULWPR VL LQGLFD OD VHTXHQ]D ILQLWD GL SDVVL HIIHWWXDELOL GD XQD PDFFKLQD SHU ULVROYHUH XQD FODVVH GL SUREOHPL LQ WHPSR ILQLWR
$OJRULWPL H 3URJUDPPL
2JQL HODERUDWRUH H
XQD PDFFKLQD LQ JUDGR GL HVHJXLUH D]LRQL HOHPHQWDUL VX RJJHWWL GHWWL GDWL /
HVHFX]LRQH GHOOH D]LRQL H
ULFKLHVWD DOO
HODERUDWRUH WUDPLWH FRPDQGL HOHPHQWDUL FKLDPDWL LVWUX]LRQL /H LVWUX]LRQL VRQR HVSUHVVH DWWUDYHUVR XQ RSSRUWXQR IRUPDOLVPR LO OLQJXDJJLR GL SURJUDPPD]LRQH (V SUM A,B read(x) scanf("%d",&Y) /D IRUPXOD]LRQH WHVWXDOH GL XQ DOJRULWPR LQ XQ OLQJXDJJLR FRPSUHQVLELOH DG XQ HODERUDWRUH HC GHWWD SURJUDPPD main() {int A, B; printf(Immettere i dati (A,B): ); scanf(%d %d, &A, &B); printf(Risultato: A+B=%d\n, A+B); }
FONDAMENTI DI INFORMATICA
INTRODUZIONE
16
FONDAMENTI DI INFORMATICA
INTRODUZIONE
17
$OJRULWPL H 3URJUDPPL
'DWR XQ SUREOHPD OD VXD VROX]LRQH SXRC HVVHUH RWWHQXWD PHGLDQWH OXVR GHO FDOFRODWRUH FRPSLHQGR L VHJXHQWL SDVVL LQGLYLGXD]LRQH GL XQ SURFHGLPHQWR ULVROXWLYR VFRPSRVL]LRQH GHO SURFHGLPHQWR LQ LQVLHPH RUGLQDWR GL D]LRQL ! $/*25,702 UDSSUHVHQWD]LRQH GHL GDWL H GHOO
DOJRULWPR DWWUDYHUVR XQ IRUPDOLVPR FRPSUHQVLELOH SHU OHODERUDWRUH OLQJXDJJLR GL SURJUDPPD]LRQH ! 352*5$00$
problema algoritmo programma
6ROOX]LLRQH GHOOOO
HTXD]LLRQH D[ E 6R X] RQH GH HTXD] RQH D[ E OHJJL L YDORUL GL D H E FDOFROD E GLYLGL TXHOOR FKH KDL RWWHQXWR SHU D H FKLDPD [ LO ULVXOWDWR VWDPSD [
metodo risolutivo
linguaggio di programmazione
,O SURFHGLPHQWR H
FRPSOHVVR H QRQ H
XQLYRFR
FONDAMENTI DI INFORMATICA
INTRODUZIONE
18
FONDAMENTI DI INFORMATICA
INTRODUZIONE
19
6WDELLOOLLUH VH XQD SDUROOD 3 YLLHQH DOOIDEHWLLFDPHQWH SULLPD GLL 6WDE UH VH XQD SDUR D 3 Y HQH D IDEHW FDPHQWH SU PD G XQD SDUROOD 4 XQD SDUR D 4 OHJJL 34 ULSHWL TXDQWR VHJXH VH SULPD OHWWHUD GL 3 SULPD OHWWHUD 4 DOORUD VFULYL YHUR DOWULPHQWL VH SULPD OHWWHUD 3 ! 4 DOORUD VFULYL IDOVR DOWULPHQWL OH OHWWHUH VRQR WRJOL GD 3 H 4 OD SULPD OHWWHUD fino a quando hai trovato le prime lettere diverse.
$OJRULWPL HTXLYDOHQWL
'XH DOJRULWPL VL GLFRQR HTXLYDOHQWL TXDQGR KDQQR OR VWHVVR GRPLQLR GL LQJUHVVR KDQQR OR VWHVVR GRPLQLR GL XVFLWD LQ FRUULVSRQGHQ]D GHJOL VWHVVL YDORUL QHO GRPLQLR GL LQJUHVVR SURGXFRQR JOL VWHVVL YDORUL QHO GRPLQLR GL XVFLWD 'XH DOJRULWPL HTXLYDOHQWL IRUQLVFRQR OR VWHVVR ULVXOWDWR SRVVRQR DYHUH GLIIHUHQWH HIILFLHQ]D SRVVRQR HVVHUH SURIRQGDPHQWH GLYHUVL
&DOOFROOR GHOO PDVVLLPR GLL XQ LLQVLLHPH &D FR R GH PDVV PR G XQ QV HPH 6FHJOL XQ HOHPHQWR FRPH PDVVLPR SURYYLVRULR PD[ 3HU RJQL HOHPHQWR L GHOO
LQVLHPH VH L!PD[ HOHJJL L FRPH QXRYR PDVVLPR SURYYLVRULR PD[ ,O ULVXOWDWR H
PD[
FONDAMENTI DI INFORMATICA
INTRODUZIONE
20
FONDAMENTI DI INFORMATICA
INTRODUZIONE
21
XQ GLDJUDPPD GL IOXVVR GHVFULYH OH D]LRQL GD HVHJXLUH HG LO ORUR RUGLQH GL HVHFX]LRQH RJQL D]LRQH HOHPHQWDUH FRUULVSRQGH DG XQ VLPEROR JUDILFR EORFFR GLYHUVR VRQR FRQYHQ]LRQL QRQ XQLYHUVDOL RJQL EORFFR KD XQ UDPR LQ LQJUHVVR HG XQR R SLXC UDPL LQ XVFLWD FROOHJDQGR WUD ORUR L YDUL EORFFKL DWWUDYHUVR L UDPL VL RWWLHQH XQ GLDJUDPPD GL IOXVVR XQ GLDJUDPPD GL IOXVVR DSSDUH TXLQGL FRPH XQ LQVLHPH GL EORFFKL GL IRUPH GLYHUVH FKH FRQWHQJRQR OH LVWUX]LRQL GD HVHJXLUH FROOHJDWL IUD ORUR GD OLQHH RULHQWDWH FKH VSHFLILFDQR OD VHTXHQ]D LQ FXL L EORFFKL GHYRQR HVVHUH HVHJXLWL IOXVVR GHO FRQWUROOR GL HVHFX]LRQH
$OJRULWPR )LQFKH
P HC GLYHUVR GD Q HVHJXL OH VHJXHQWL D]LRQL VH P!Q VRVWLWXLVFL D P LO YDORUH PQ DOWULPHQWL VRVWLWXLVFL D Q LO YDORUH QP ,O PDVVLPR FRPXQ GLYLVRUH H
Q *OL DOJRULWPL D H E VRQR HTXLYDOHQWL
FONDAMENTI DI INFORMATICA
INTRODUZIONE
22
FONDAMENTI DI INFORMATICA
INTRODUZIONE
23
'LDJUDPPL GL )OXVVR
start
'LDJUDPPL GL )OXVVR
/
LQVLHPH GHL GDWL GL LQJUHVVR H GHL ULVXOWDWL YHQJRQR UDSSUHVHQWDWL DWWUDYHUVR GHL QRPL VLPEROLFL GHWWL YDULDELOL DG HVHPSLR $ 3XRC HVVHUH LQROWUH QHFHVVDULR LQWURGXUUH GHOOH YDULDELOL WHPSRUDQHH DG HVHPSLR L QHFHVVDULH DOOD ULVROX]LRQH GHO SUREOHPD WDOL YDULDELOL YHQJRQR DQFK
HVVH UDSSUHVHQWDWH GD QRPL VLPEROLFL
I diagrammi di flusso hanno notevoli limiti per la soluzione di problemi di una certa complessita.
FONDAMENTI DI INFORMATICA
INTRODUZIONE
24
FONDAMENTI DI INFORMATICA
INTRODUZIONE
25
'LDJUDPPL GL )OXVVR
9DOORULL 9D RU 1XPHULFL LQWHUL H UHDOL /RJLFL 9HUR H )DOVR $OIDQXPHULFLVWULQJKH $$$$ &&RORPER *UDQGH]]H *UDQGH]]H &RVWDQWL 4XDQWLWDC QRWH D SULRUL LO FXL YDORUH QRQ FDPELD GXUDQWH O
HVHFX]LRQH 9DULDELOL 5DSSUHVHQWDWH GD XQ QRPH VLPEROLFR FXL HC DVVHJQDWR XQ YDORUH FKH SXRC FDPELDUH GXUDQWH O
HVHFX]LRQH GHOO
DOJRULWPR
(VSUHVVLLRQLL (VSUHVV RQ 6HTXHQ]H GL YDULDELOL H FRVWDQWL FRPELQDWH IUD ORUR PHGLDQWH RSHUDWRUL DG HV RSHUDWRUL DULWPHWLFL
DG HVHPSLR V U
$ 1HOOD YDOXWD]LRQH GL XQD HVSUHVVLRQH VL VRVWLWXLVFH DG RJQL YDULDELOH LO VXR YDORUH DWWXDOH H VL HVHJXRQR OH RSHUD]LRQL VHFRQGR XQ RUGLQH SUHVWDELOLWR GD UHJROH GL SUHFHGHQ]D SRVVRQR FRPSDULUH SDUHQWHVL $ WXWWH OH YDULDELOL FKH FRPSDLRQR QHOO
HVSUHVVLRQH GHYH HVVHUH VWDWR DVVRFLDWR XQ YDORUH SULPD GHOOD YDOXWD]LRQH GHOO
HVSUHVVLRQH (VSUHVVLRQL UHOD]LRQDOL H ORJLFKH GDQQR FRPH ULVXOWDWR YHUR R IDOVR ! , ,
FONDAMENTI DI INFORMATICA
INTRODUZIONE
26
FONDAMENTI DI INFORMATICA
INTRODUZIONE
27
INIZIO
A,B,C
FINE
+ /HJJL L WUH YDORUL GDWL LQ LQJUHVVR HG DVVHJQDOL ULVSHWWLYDPHQWH DOOH YDULDELOL $ % H &
FONDAMENTI DI INFORMATICA
INTRODUZIONE
28
FONDAMENTI DI INFORMATICA
INTRODUZIONE
29
$VVHJQDPHQWR
6L FDOFROD LO YDORUH GHOOHVSUHVVLRQH D GHVWUD GHO VLPEROR H OR VL DVVHJQD DOOD YDULDELOH LQGLFDWD D VLQLVWUD GHO VLPEROR FRQ HYHQWXDOH SHUGLWD GHO YDORUH SUHFHGHQWH GL 9
X,Y,Z
V:=E
; < = VRQR HVSUHVVLRQL + &DOFROD L YDORUL GHOOH HVSUHVVLRQL ; < H = H WUDVPHWWLOL LQ XVFLWD 1% , YDORUL GL ; < = QRQ YHQJRQR DOWHUDWL GDOOHVHFX]LRQH GHO EORFFR
9 HC LO QRPH GL XQD YDULDELOH ( HC XQD HVSUHVVLRQH + &DOFROD LO YDORUH GHOOHVSUHVVLRQH ( H DVVHJQDOR DOOD YDULDELOH 9
FONDAMENTI DI INFORMATICA
INTRODUZIONE
30
FONDAMENTI DI INFORMATICA
INTRODUZIONE
31
(VHPSLR VHTXHQ]D
(VHFX]LLRQH (VHFX] RQH 6L YDOXWD OD FRQGL]LRQH VSHFLILFDWD DOOLQWHUQR GHO EORFFR VH HC YHULILFDWD VL SURVHJXH FRQ OD OLQHD GL IOXVVR FRQWUDVVHJQDWD GD 6, DOWULPHQWL VH QRQ HC YHULILFDWD VL SURVHJXH SHU LO UDPR HWLFKHWWDWR FRQ 12 ( HC XQ
HVSUHVVLRQH UHOD]LRQDOH R ORJLFD ULWRUQD YDORUH YHUR RSSXUH IDOVR
A,B
C:=A+B
SI C
NO
+ &DOFROD LO YDORUH GHOOHVSUHVVLRQH ( VH HC YHUR SURVHJXL SHU LO UDPR 6, DOWULPHQWL SURVHJXL SHU LO UDPR 12
FINE
FONDAMENTI DI INFORMATICA
INTRODUZIONE
32
FONDAMENTI DI INFORMATICA
INTRODUZIONE
33
$OWHUQDWLYD
(VSULPH OD VFHOWD WUD GXH SRVVLELOL D]LRQL R VHTXHQ]H GL D]LRQL PXWXDPHQWH HVFOXVLYH
,WHUD]LRQH R 5LSHWL]LRQH
Esprime la ripetizione di una sequenza di istruzioni. 1HO FDVR SLXC JHQHUDOH HC FRVWLWXLWD GD
INIZIO
,QL]LDOL]]D]LRQH DVVHJQD]LRQH GHL YDORUL LQL]LDOL DOOH YDULDELOL FDUDWWHULVWLFKH GHO FLFOR YLHQH HVHJXLWD XQD VROD YROWD &RUSR HVHFX]LRQH GHOOH LVWUX]LRQL IRQGDPHQWDOL GHO FLFOR FKH GHYRQR HVVHUH HVHJXLWH LQ PRGR ULSHWLWLYR
NO
LEGGI: A,B
SI
A<B
C:=A
C:=B
STAMPA: C
FINE
FONDAMENTI DI INFORMATICA
INTRODUZIONE
34
FONDAMENTI DI INFORMATICA
INTRODUZIONE
35
,WHUD]LRQH
(VHPSLR $OJRULWPR FKH FDOFROD LO SURGRWWR FRPH VHTXHQ]D GL VRPPH VL VXSSRQH <! ;
INIZIO
INIZIO
X,Y,Z variabili
LEGGI: N
READ: X,Y
lettura
Z:=0
assegnamento
I:=1
Inizializzazione
SI
X=0 NO X:=X-1
condizione
SI I>N NO STAMPA: I
Controllo
Corpo
Z:=Z+Y
I:=I+1
Modifica
WRITE: Z
stampa
FINE
FINE
FONDAMENTI DI INFORMATICA
INTRODUZIONE
36
FONDAMENTI DI INFORMATICA
INTRODUZIONE
37
Bus di sistema
Software
Firmware
Hardware
Unita di elaborazione
Memoria centrale
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
$UFKLWHWWXUD GL XQ HODERUDWRUH
/D &38 FRQWLHQH L GLVSRVLWLYL HOHWWURQLFL LQ JUDGR GL DFTXLVLUH LQWHUSUHWDUH HG HVHJXLUH OH LVWUX]LRQL GL RJQL SURJUDPPD WUDVIRUPDQGR L GDWL /H LVWUX]LRQL YHQJRQR HVHJXLWH LQ VHTXHQ]D 'DWL HG LVWUX]LRQL YHQJRQR WUDVIHULWL GD H YHUVR OD PHPRULD FHQWUDOH /D PHPRULD FHQWUDOH FRQWLHQH VLD OH LVWUX]LRQL FKH L GDWL LQIRUPD]LRQL QHFHVVDULH SHU HVHJXLUH XQ SURJUDPPD +D GLPHQVLRQL OLPLWDWH HG HC YRODWLOH FLRHC OH LQIRUPD]LRQL PHPRUL]]DWH YHQJRQR SHUVH DOOR VSHJQLPHQWR GHO FRPSXWHU /H SHULIHULFKH FRQVHQWRQR XQR VFDPELR GL LQIRUPD]LRQL IUD O
HODERUDWRUH H O
HVWHUQR LQJUHVVRXVFLWD PHPRULD VHFRQGDULD ,Q SDUWLFRODUH OD PHPRULD VHFRQGDULD R PHPRULD GL PDVVD YLHQH XWLOL]]DWD SHU PHPRUL]]DUH JUDQGL TXDQWLWD
GL LQIRUPD]LRQL LQ PRGR SHUVLVWHQWH +D GLPHQVLRQL HOHYDWH PD ODFFHVVR H
PHQR UDSLGR ULVSHWWR DOOD PHPRULD FHQWUDOH ,O EXV GL VLVWHPD FROOHJD TXHVWL HOHPHQWL IXQ]LRQDOL )RUQLVFH LO VXSSRUWR ILVLFR SHU OD WUDVPLVVLRQH GHL GDWL WUD L YDUL HOHPHQWL
PC IR RINT
A B
ALU
PSW
RI
RD
clock
CU
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
8QLWD
$ULWPHWLFRORJLFD $/8
5HDOL]]D OH RSHUD]LRQL DULWPHWLFKH H ORJLFKH QHFHVVDULH SHU OHVHFX]LRQH GHOOH LVWUX]LRQL $G HVHPSLLR $G HVHPS R $/8 D GXH RSHUDQGL FRQWHQXWL QHL UHJLVWUL $ H % LQ JUDGR GL HVHJXLUH OH RSHUD]LRQL DULWPHWLFKH VRPPD VRWWUD]LRQH SURGRWWR GLYLVLRQH , GXH RSHUDQGL YHQJRQR FDULFDWL QHL UHJLVWUL $ H % /D $/8 YLHQH DWWLYDWD LQ IXQ]LRQH GD XQ FRGLFH RSHUDWLYR LQYLDWR GDOOD &8 FKH VSHFLILFD LO WLSR GL RSHUD]LRQH 1HO UHJLVWUR $ YLHQH FDULFDWR LO ULVXOWDWR GHOO
RSHUD]LRQH HVHJXLWD GDOOD $/8 ,O UHJLVWUR 36: ULSRUWD VXL VXRL ELW LQGLFD]LRQL VXO ULVXOWDWR GHOO
RSHUD]LRQH ULSRUWR RYHUIORZ HWF
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
0HPRULD FHQWUDOH
&RQWLHQH GDWL HG LVWUX]LRQL UHODWLYL DO SURJUDPPD LQ HVHFX]LRQH (C GL GLPHQVLRQH OLPLWDWD (C XQ SDVVDJJLR REEOLJDWR SHU GDWL H LVWUX]LRQL OD &38 SXRC VFDPELDUH GLUHWWDPHQWH LQIRUPD]LRQL VROWDQWR FRQ OD PHPRULD FHQWUDOH (CYRODWLOH HG LQ JHQHUDOH GL GLPHQVLRQL ULGRWWH 6WUXWWXUD GHOOOOD PHPRULLD FHQWUDOOH 6WUXWWXUD GH D PHPRU D FHQWUD H (C XQD VHTXHQ]D GL FHOOH GL PHPRULD FLDVFXQD FRQWHQHQWH XQD VHTXHQ]D GL ELW FKLDPDWD SDUROD ZRUG GL GLPHQVLRQH SUHILVVDWD 2JQL SDUROD HC FDUDWWHUL]]DWD GD XQ LQGLUL]]R FKH OD LQGLYLGXD XQLYRFDPHQWH
0 1 2 3
0HPRULD &HQWUDOH
/D GLPHQVLRQH GHOOD SDUROD FDPELD D VHFRQGD GHO WLSR GL FDOFRODWRUH ELW /D PHPRULD FHQWUDOH HC FDUDWWHUL]]DWD GD XQD &DSDFLWj FKH HVSULPH OD PDVVLPD TXDQWLWj GL ELW PHPRUL]]DELOL 9LHQH JHQHUDOPHQWH PLVXUDWD LQ E\WH E\WH ELW /D &38 SXz VHOH]LRQDUH XQD SDUWLFRODUH FHOOD GL PHPRULD PHGLDQWH O LQGLUL]]R FRQWHQXWR QHO UHJLVWUR LQGLUL]]L 5,
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
,QGLUL]]DPHQWR
6H LO UHJLVWUR LQGLUL]]L 5, HC OXQJR 1 ELW VL SRVVRQR LQGLUL]]DUH 1 FHOOH GL PHPRULD FRQ LQGLUL]]R GD D 1 $G HVHPSLR FRQ 1 VL LQGLUL]]DQR SDUROH
0 1 RI read RD (N bit)
write
N-1 2
,QGLUL]]DWD XQD FHOOD DWWUDYHUVR 5, VL SRVVRQR HVHJXLUH RSHUD]LRQL GL OHWWXUD H GL VFULWWXUD GD H YHUVR LO UHJLVWUR GDWL 5' 2SHUD]LRQH GL OHWWXUD 7UDVIHULVFH LO FRQWHQXWR GHOOD FHOOD GL PHPRULD LQGLUL]]DWD GDO 5HJLVWUR ,QGLUL]]L QHO 5HJLVWUR 'DWL 2SHUD]LRQH GL VFULWWXUD 7UDVIHULVFH LO FRQWHQXWR GHO 5HJLVWUR 'DWL QHOOD FHOOD GL PHPRULD LQGLUL]]DWD GDO 5HJLVWUR ,QGLUL]]L /H RSHUD]LRQL YHQJRQR FRRUGLQDWH GDOOD &RQWURO 8QLW &8
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
%XV GL VLVWHPD
,QWHUFRQQHWWH OD &38 OD PHPRULH H OH LQWHUIDFFH YHUVR GLVSRVLWLYL SHULIHULFL ,2 PHPRULD GL PDVVD HWF &ROOHJD GXH XQLWDC IXQ]LRQDOL DOOD YROWD XQD WUDVPHWWH H ODOWUD ULFHYH ,O WUDVIHULPHQWR DYYLHQH VRWWR LO FRQWUROOR GHOOD &38 &RQWURO 8QLW
CPU Bus
Memoria centrale
Int. periferiche
6X TXHVWR VXSSRUWR VSHVVR FRVWLWXLWR GD SL OLQHH YLDJJLDQR GDWL LQGLUL]]L H FRPDQGL 6L GLVWLQJXRQR VSHVVR WDOL OLQHH LQ EXV GDWL GDWD EXV EXV LQGLUL]]L DGGUHVV EXV EXV FRPDQGL FRPPDQG EXV
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
%XV GL 6LVWHPD
%XV GDWL ELGLUH]LRQDOH 6HUYH SHU WUDVPHWWHUH GDWL GDOOD PHPRULD DO UHJLVWUR GDWL R YLFHYHUVD %XV LQGLUL]]L XQLGLUH]LRQDOH 6HUYH SHU WUDVPHWWHUH LO FRQWHQXWR GHO UHJLVWUR LQGLUL]]L DOOD PHPRULD 9LHQH VHOH]LRQDWD XQD VSHFLILFD FHOOD SHU VXFFHVVLYH RSHUD]LRQL GL OHWWXUD R VFULWWXUD %XV FRPDQGL XQLGLUH]LRQDOH $G HVHPSLR FRPDQGR GL OHWWXUD R VFULWWXUD YHUVR OD PHPRULD FRPDQGR GL VWDPSD YHUVR XQD SHULIHULFD LQWHUIDFFLD 6H OD GLPHQVLRQH QXPHUR GL ELW GHO EXV GDWL q XJXDOH DOOD GLPHQVLRQH GHOOD SDUROD VL SXz WUDVIHULUH LQ SDUDOOHOR XQ LQWHUR GDWR $OWULPHQWL RFFRUURQR SL WUDVIHULPHQWL
,QWHUIDFFH GL ,QJUHVVR8VFLWD
&RQVHQWRQR LO FROOHJDPHQWR GHOOHODERUDWRUH FRQ OH YDULH SHULIHULFKH GLVFKL WHUPLQDOL VWDPSDQWL 6RQR GLYHUVH D VHFRQGD GHO WLSR GL SHULIHULFD VLD KDUGZDUH FKH VRIWZDUH 3HULLIHULLFKH 3HU IHU FKH 7DVWLHUD HC XQ GLVSRVLWLYR GL LQJUHVVR LQSXW FKH FRQVHQWH DO FDOFRODWRUH GL DFTXLVLUH GDWL GDOOXWHQWH , GDWL YHQJRQR LPPHVVL FRPH VHTXHQ]H GL FDUDWWHUL XQR SHU RJQL WDVWR SUHPXWR 0RXVH HC XQ GLVSRVLWLYR GL LQJUHVVR FKH SXRC HVVHUH XWLOL]]DWR FRPH LQWHJUD]LRQH R SHUVLQR LQ VRVWLWX]LRQH GHOOD WDVWLHUD 9LGHR HC XQ GLVSRVLWLYR GL XVFLWD FKH FRQVHQWH OD YLVXDOL]]D]LRQH GL GDWL H ULVXOWDWL GHOOHODERUD]LRQH (C FDUDWWHUL]]DWR GD YDUL SDUDPHWUL WUD FXL QXPHUR GL FRORUL UDSSUHVHQWDELOL GLPHQVLRQL GHOOR VFKHUPR LQ SROOLFL ULVROX]LRQH QXPHUR GL SXQWL SHU SROOLFH TXDGUDWR FDSDFLWDC JUDILFD
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
6WDPSDQWL GLVSRVLWLYL GL XVFLWD FKH SURGXFRQR OD YLVXDOL]]D]LRQH VX FDUWD R DOWUL VXSSRUWL VLPLOL GL GDWL H ULVXOWDWL GHOOHODERUD]LRQH 6RQR FDUDWWHUL]]DWH GD YHORFLWj GL VWDPSD E\WH FDUDWWHUH R SDJLQH DO VHFRQGR ULVROX]LRQH QXPHUR GL SXQWL SHU SROOLFH TXDGUDWR FDSDFLWj JUDILFD UXPRURVLWj VHW GL FDUDWWHUL R IRQW VWDPSDELOL 9DULH WHFQRORJLH GLVSRQLELOL DG DJKL D PDUJKHULWD D JHWWR GLQFKLRVWUR ODVHU D WUDVIHULPHQWR WHUPLFR 7HUPLQDOL KDQQR XQD WDVWLHUD HG XQ YLGHR 3RVVRQR HVVHUH DOIDQXPHULFL R JUDILFL $QFKH OD PHPRULD VHFRQGDULD R GL PDVVD q YLVWD FRPH GLVSRVLWLYR SHULIHULFR
VHF
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
1DVWUL PDJQHWLFL
6RQR IHWWXFFH GL PDWHULDOH PDJQHWL]]DELOH DUURWRODWH VX VXSSRUWL FLUFRODUL R LQ FDVVHWWH 6XOOD IHWWXFFLD VRQR WUDFFLDWH GHOOH SLVWH RUL]]RQWDOL SDUDOOHOH 'L VROLWR SLVWH SDUDOOHOH GL FXL FRUULVSRQGRQR DG XQ E\WH H OD QRQD q LO ELW GL SDULWj
Nastro
1 2 3 4 5 6 7 8 bit parita
byte
,O SDUDPHWUR SL LPSRUWDQWH q OD GHQVLWj PLVXUDWD LQ ELW SHU SROOLFH ESL ELW SHU LQFK , GDWL VX QDVWUR VRQR RUJDQL]]DWL LQ ]RQH FRQWLJXH GHWWH UHJLVWUD]LRQL UHFRUG 7XWWH OH HODERUD]LRQL VRQR VHTXHQ]LDOL OHQWH]]D GHOOH RSHUD]LRQL GL OHWWXUDVFULWWXUD VX XQ SUHFLVR UHFRUG 2UPDL VYROJRQR VROR XQD IXQ]LRQH GL FRSLD GL ULVHUYD EDFNXS
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
'LVFKL PDJQHWLFL
,QJUHVVR R XVFLLWD GD R YHUVR VXSHUIILLFLLHWWUDFFLLDVHWWWWRUH! ,QJUHVVR R XVF WD GD R YHUVR VXSHU F H UDFF D VH RUH! VSRVWDPHQWR GHOOD WHVWLQD VHHN YHUVR OD WUDFFLD ULFKLHVWD DWWHVD DIILQFKp LO VHWWRUH DUULYL VRWWR OD WHVWLQD WUDVIHULPHQWR GHL GDWL LQ R GD PHPRULD FHQWUDOH VROLWDPHQWH HVHJXLWR GD XQ SURFHVVRUH GHGLFDWR 'LUHFW 0HPRU\ $FFHVV '0$
traccia 200
Settore
8Q GLVFR HC FRVWLWXLWR GD XQ FHUWR QXPHUR GL SLDWWL GL PDWHULDOH PDJQHWL]]DELOH FRQ GXH VXSHUILFL FKH UXRWDQR DWWRUQR DG XQ SHUQR FHQWUDOH &LDVFXQD VXSHUILFLH KD XQD VHULH GL FHUFKL FRQFHQWULFL R WUDFFH H YLHQH VXGGLYLVD LQ VSLFFKL GL XJXDO JUDQGH]]D FKLDPDWL VHWWRUL 7XWWH OH WUDFFH HTXLGLVWDQWL GDO FHQWUR IRUPDQR XQ FLOLQGUR /D WHVWLQD VL VSRVWD ORQJLWXGLQDOPHQWH OXQJR OH WUDFFH , GDWL VRQR VFULWWL RFFXSDQGR SRVL]LRQL VXFFHVVLYH OXQJR OH WUDFFH &RUULVSRQGRQR DG XQR VWDWR GL SRODUL]]D]LRQH SRVLWLYD R QHJDWLYD GHO PDWHULDOH PDJQHWL]]DELOH FKH FRVWLWXLVFH L GLVFKL 2JQL EORFFR GL LQJUHVVRXVFLWD q VHOH]LRQDELOH PHGLDQWH OD WHUQD VXSHUILFLH WUDFFLD VHWWRUH! LQGLUL]]R
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
6RQR GLVFKHWWL SRUWDWLOL FKH YHQJRQR XWLOL]]DWL SHU WUDVIHULUH LQIRUPD]LRQL ILOH WUD FRPSXWHU GLYHUVL &RVWLWXLWL GD XQ XQLFR GLVFR FRQ GXH VXSHUILFL YDUL WLSL LQ EDVH DO GLDPHWUR H SROOLFL , GLVFKL YHQJRQR IRUPDWWDWL GDO 6LVWHPD 2SHUDWLYR FKH OL VXGGLYLGH LQ WUDFFH H VHWWRUL H QH GHWHUPLQD OD GHQVLWj H OD FDSDFLWj 7LSLFDPHQWH 0E\WH
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
3HUVRQDO &RPSXWHU
3HUVRQDO &RPSXWHU
,%0FRPSDWLELOL KDQQR SURFHVVRUL GHOOD IDPLJOLD ,QWHO [ 8086 80286 80386 80486 80586 (pentium)
prestazioni
0HPRULD GL PDVVD JHQHUDOPHQWH FRPSRVWD GD GLVFR ULJLGR KDUG GLVN ILVVR GLVFKHWWL IORSS\ GLVN H &' HVWUDLELOL /
LQIRUPD]LRQH QHOOD PHPRULD GL PDVVD H
RUJDQL]]DWD LQ DUFKLYL R ILOH FDUDWWHUL]]DWL GD XQ QRPH 9DULH FODVVL GL 3& LQ EDVH DO WLSR GL SURFHVVRUH ,QWHO 0DFLQWRVK HWF
OH SUHVWD]LRQL VRQR LQIOXHQ]DWH DQFKH GD DOWUL SDUDPHWUL IUHTXHQ]D GHO FORFN GLPHQVLRQH 5$0 YHORFLWDC GHO %86 XQLWDC GL PLVXUD GHOOH SUHVWD]LRQL 0,36 PLJOLDLD GL LVWUX]LRQL SHU VHFRQGR
0IORSV PLJOLDLD GL RSHUD]LRQL IORDWLQJ SRLQW SHU VHFRQGR , 3HUVRQDO &RPSXWHU KDQQR VWUXWWXUD VHPSOLFH FRVWR ULGRWWR PD SUHVWD]LRQL OLPLWDWH
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
5HWLL OORFDOOLL 5HW RFD FROOHJDQR HODERUDWRUL ILVLFDPHQWH YLFLQL QHOOR VWHVVR XIILFLR R VWDELOLPHQWR /RELHWWLYR HC OD FRQGLYLVLRQH GL ULVRUVH
Stampante
Stampante
Pc
Workstation
Workstation
PC
Workstation
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
5HWLL JHRJUDILLFKH 5HW JHRJUDI FKH &ROOHJDQR HODERUDWRUL GLVWULEXLWL VX JHRJUDILFD GL GLPHQVLRQL HVWHVH LQWHUFRQWLQHQWDOL $G HVHPSLR ,QWHUQHW
Rete geografica
XQDUHD DQFKH
+DUGZDUH6RIWZDUH
&38 PHPRULD FHQWUDOH H GLVSRVLWLYL VRQR UHDOL]]DWL FRQ WHFQRORJLD GLJLWDOH 'DWL HG RSHUD]LRQL YHQJRQR FRGLILFDWL PHGLDQWH VHTXHQ]H GL ELW
printer
Host
Host
terminali remoti
PC mini Host
Rete locale
Linea telefonica
(YROX]LRQH H FRPSOHVVLWD
VLD GHOO
KDUGZDUH FKH GHO VRIWZDUH SURWRFROOL GL FROOHJDPHQWR
/XWLOL]]R GHOOD VROD VWUXWWXUD ILVLFD KDUGZDUH GHOOHODERUDWRUH LPSRUUHEEH DOOXWHQWH GL HVSULPHUH L SURSUL FRPDQGL DWWUDYHUVR VHTXHQ]H GL ELW OLQJXDJJLR PDFFKLQD 3HU TXHVWR PRWLYR RJQL HODERUDWRUH HC FRUUHGDWR GD XQ LQVLHPH GL SURJUDPPL FKH HOHYDQR LO OLYHOOR GL LQWHUD]LRQH XWHQWHPDFFKLQD DYYLFLQDQGR LO OLQJXDJJLR GL LQWHUD]LRQH DO OLQJXDJJLR QDWXUDOH LO VRIWZDUH
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
6RIWZDUH
(
XQ LQVLHPH GL SURJUDPPL 3HU VHPSOLFLWj VL SXz SHQVDUH DG XQD RUJDQL]]D]LRQH D VWUDWL FLDVFXQR FRQ IXQ]LRQDOLWj GL OLYHOOR SL DOWR ULVSHWWR D TXHOOL VRWWRVWDQWL PDFFKLQD YLUWXDOH
6LVWHPD 2SHUDWLYR
,QVLHPH GL SURJUDPPL FKH UHQGRQR O
HODERUDWRUH RSHUDWLYR HG XVDELOH ,O 6LVWHPD 2SHUDWLYR RSHUD GLUHWWDPHQWH DO GL VRSUD GL KDUGZDUH H ILUPZDUH /H IXQ]LRQL PHVVH D GLVSRVL]LRQH GLSHQGRQR GDOOD FRPSOHVVLWj GHO VLVWHPD GL HODERUD]LRQH *HVWLVFH OH ULVRUVH GLVSRQLELOL ,QWHUSUHWD HG HVHJXH FRPDQGL HOHPHQWDUL 6WDPSD OHJJH YLVXDOL]]D VX YLGHR *HVWLVFH OD PHPRULD FHQWUDOH HG 2UJDQL]]D H JHVWLVFH OD PHPRULD GL PDVVD *HVWLVFH XQ VLVWHPD PXOWLXWHQWH HWF ,Q SUDWLFD O
XWHQWH YHGH OD PDFFKLQD VROR DWWUDYHUVR LO 6LVWHPD 2SHUDWLYR $WWUDYHUVR LO 62 LO OLYHOOR GL LQWHUD]LRQH XWHQWH HODERUDWRUH YLHQH HOHYDWR VHQ]D 62 VHTXHQ]H GL ELW SHU HVSULPHUH LVWUX]LRQL H GDWL FRQ 62 SDUROH FKLDYH FRPDQGL SURJUDPPL GDWL LQWHUL UHDOL FDUDWWHUL HWF
Programmi Applicativi Ambiente di programmazione Sistema Operativo Firmware Hardware Software di Comunicazione
} Software di Base
)LUPZDUH FRQILQH IUD KDUGZDUH H VRIWZDUH XQR VWUDWR GL PLFURSURJUDPPL VFULWWL VX PHPRULH SHUPDQHQWL GDL FRVWUXWWRUL FKH DJLVFRQR GLUHWWDPHQWH DO GL VRSUD GHOOR VWUDWR KDUGZDUH
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
6LVWHPD 2SHUDWLYR
,O 62 WUDGXFH OH ULFKLHVWH GHOOXWHQWH LQ RSSRUWXQH VHTXHQ]H GL LPSXOVL GD VRWWRSRUUH DOOD PDFFKLQD ILVLFD
"esegui prog_1" S.O. 0011...101... Hardware
6LVWHPD 2SHUDWLYR
4XDOVLDVL RSHUD]LRQH GL DFFHVVR D ULVRUVH GHOOD PDFFKLQD LPSOLFLWDPHQWH ULFKLHVWD GDO FRPDQGR GL XWHQWH YLHQH HVSOLFLWDWD GDO 62 DG HVHPSLR DFFHVVR D PHPRULD FHQWUDOH VHFRQGDULD RSSXUH ,2 YHUVR YLGHR WDVWLHUD HWF 8WHQWH 8WHQWH H VHJX SURJB HVHJXLL SURJB 62 62 LQSXW GD WDVWLHUD ULFHUFD FRGLFH GL SURJB LQ PHP VHFRQGDULD FDULFD LQ PHP FHQWUDOH FRGLFH H GDWL HODERUD]LRQH! RXWSXW VX YLGHR
e viceversa:
U VX WDWR ULLVXOOWDWR
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
6RIWZDUH GL FRPXQLFD]LRQH
(C O
LQVLHPH GHL SURJUDPPL FKH VL RFFXSDQR GL VXSSRUWDUH OD FRPXQLFD]LRQH WUD PDFFKLQH FROOHJDWH LQ UHWH /D FRPXQLFD]LRQH DYYLHQH XWLOL]]DQGR SURWRFROOL FKH JDUDQWLVFRQR XQ FRUUHWWR VFDPELR GHL GDWL H PHVVDJJL (VHPSLLR (VHPS R UHWH LQWHUQHW SURWRFROOR 7&3,3 WHOQHW DSHUWXUD GL XQD VHVVLRQH UHPRWD IWS WUDVIHULPHQWR GL ILOH PDLO SRVWD HOHWWURQLFD
,Q EDVH DOO QXPHUR GLL SURJUDPPLL LLQ HVHFX]LLRQH ,Q EDVH D QXPHUR G SURJUDPP Q HVHFX] RQH 0RQRSURJUDPPDWR LO VLVWHPD SXRC JHVWLUH O
HVHFX]LRQH GL DO SLXC XQ SURJUDPPD DOOD YROWD 0XOWLSURJUDPPDWR LO VLVWHPD RSHUDWLYR HC LQ JUDGR GL SRUWDUH DYDQWL O
HVHFX]LRQH FRQWHPSRUDQHD GL SLXC SURJUDPPL PDQWHQHQGR XQD VROD &38
+QHO FDVR GL PXOWLSURJUDPPD]LRQH LO 62 GHYH JHVWLUH OXQLWj GL HODERUD]LRQH &38 VXGGLYLGHQGROD WUD L YDUL SURJUDPPL
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
3URJUDPPL DSSOLFDWLYL
5LVROYRQR SUREOHPL VSHFLILFL GHJOL XWHQWL ZRUG SURFHVVRU HODERUD]LRQH GL WHVWL IRJOL HOHWWURQLFL VSUHDGVKHHW JHVWLRQH GL WDEHOOH H JUDILFL GDWD EDVH JHVWLRQH GL DUFKLYL 6RQR VFULWWL LQ OLQJXDJJL GL SURJUDPPD]LRQH GL DOWR OLYHOOR (VVHQGR GL DOWR OLYHOOR ULVHQWRQR LQ PLVXUD ULGRWWD R QXOOD GHOOH FDUDWWHULVWLFKH GHOO
DUFKLWHWWXUD GHOO
DPELHQWH VRWWRVWDQWH SRUWDELOLWj
$PELHQWH GL SURJUDPPD]LRQH
(C O
LQVLHPH GHL SURJUDPPL FKH FRQVHQWRQR OD VFULWWXUD OD YHULILFD H O
HVHFX]LRQH GL QXRYL SURJUDPPL IDVL GL VYLOXSSR 6YLLOOXSSR GLL XQ 3URJUDPPD 6Y XSSR G XQ 3URJUDPPD $IILQFKHC XQ SURJUDPPD VFULWWR LQ XQ TXDOVLDVL OLQJXDJJLR GL SURJUDPPD]LRQH DG HV LO & VLD FRPSUHQVLELOH H TXLQGL HVHJXLELOH GD XQ FDOFRODWRUH H
QHFHVVDULD XQ
D]LRQH GL WUDGX]LRQH GDO OLQJXDJJLR RULJLQDULR DO OLQJXDJJLR PDFFKLQD 4XHVWD RSHUD]LRQH YLHQH QRUPDOPHQWH VYROWD GD VSHFLDOL SURJUDPPL GHWWL WUDGXWWRUL 3URJUDPPD PDLQ ^ LQW $ $ $ LI 7UDGX]LRQH
, WUDGXWWRUL SURYYHGRQR D FRQYHUWLUH LO FRGLFH GL SURJUDPPL VFULWWL LQ XQ SDUWLFRODUH OLQJXDJJLR GL SURJUDPPD]LRQH SURJUDPPL VRUJHQWL QHOOD FRUULVSRQGHQWH UDSSUHVHQWD]LRQH LQ OLQJXDJJLR PDFFKLQD SURJUDPPL HVHJXLELOL
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
6YLOXSSR GL 3URJUDPPL
Programma Sorgente: main(){.. Programma eseguibile: 001010111... Esecuzione
'XH FDWHJRULLH GLL WUDGXWWRULL 'XH FDWHJRU H G WUDGXWWRU L &RPSLODWRUL DFFHWWDQR LQ LQJUHVVR O
LQWHUR SURJUDPPD H SURGXFRQR LQ XVFLWD OD UDSSUHVHQWD]LRQH GHOO
LQWHUR SURJUDPPD LQ OLQJXDJJLR PDFFKLQD JOL ,QWHUSUHWL WUDGXFRQR HG HVHJXRQR GLUHWWDPHQWH FLDVFXQD LVWUX]LRQH GHO SURJUDPPD VRUJHQWH LVWUX]LRQH SHU LVWUX]LRQH 4XLLQGLL 4X QG &RPSLODWRUH SHU RJQL SURJUDPPD GD WUDGXUUH OR VFKHPD YLHQH SHUFRUVR XQD YROWD VROD SULPD GHOO
HVHFX]LRQH ,QWHUSUHWH OR VFKHPD YLHQH DWWUDYHUVDWR WDQWH YROWH TXDQWH VRQR OH LVWUX]LRQL FKH FRPSRQJRQR LO SURJUDPPD DG RJQL DWWLYD]LRQH GHOO
LQWHUSUHWH VX XQD SDUWLFRODUH LVWUX]LRQH VHJXH O
HVHFX]LRQH GHOO
LVWUX]LRQH VWHVVD + O
HVHFX]LRQH GL XQ SURJUDPPD FRPSLODWR HC SLXC YHORFH GHOO
HVHFX]LRQH GL XQ SURJUDPPD PHGLDQWH LQWHUSUHWH
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
GHEXJJLQJ $QDOLVL GHO FRUUHWWR IXQ]LRQDPHQWR GHO SURJUDPPD 3XRC HVVHUH DJHYROPHQWH HVHJXLWD PHGLDQWH VSHFLDOL SURJUDPPL GHWWL GHEXJJHU 0HGLDQWH XQ GHEXJJHU HC SRVVLELOH HIIHWWXDUH O
HVHFX]LRQH FRQWUROODWD GHO SURJUDPPD $G HVHPSLR HVHFX]LRQH GL XQD LVWUX]LRQH SHU YROWD YLVXDOL]]D]LRQH GHL YDORUL GL YDULDELOL SXQWL GL DUUHVWR EUHDNSRLQW + ULOHYD]LRQH GL HUURUL QRQ ULVFRQWUDELOL LQ IDVH GL FRPSLOD]LRQH HUURUL D WHPSR GL HVHFX]LRQH HVHFX]LRQH 4XDQGR LO SURJUDPPD HC VWDWR RSSRUWXQDPHQWH YHULILFDWR SXRC HVVHUH LQILQH HVHJXLWR SHU OD ULVROX]LRQH GHO SUREOHPD GL SDUWHQ]D
)DVL GL 6YLOXSSR
Problema metodo risolutivo Algoritmo diagramma di flusso Editing programma sorgente Compilazione errori a t. di compilazione
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
5DSSUHVHQWD]LRQH GHOO
LQIRUPD]LRQH LQ XQ FDOFRODWRUH
,QIRUPD]LLRQLL ,QIRUPD] RQ WHVWL QXPHUL LQWHUL H UHDOL LPPDJLQL VXRQL HWF &RPH YLLHQH UDSSUHVHQWDWD OO
LLQIRUPD]LLRQH LLQ XQ FDOOFROODWRUH &RPH Y HQH UDSSUHVHQWDWD QIRUPD] RQH Q XQ FD FR DWRUH " " XVR GL WHFQRORJLD GLJLWDOH DOOLQWHUQR GHOOD &38 OH LQIRUPD]LRQL YHQJRQR UDSSUHVHQWDWH GD SRVVLELOL YDORUL GL WHQVLRQH HOHWWULFD ^9KLJK 9ORZ` ,Q JHQHUDOH D VHFRQGD GHO WLSR GL GLVSRVLWLYR FRQVLGHUDWR L YDORUL ]HUR HG XQR VRQR UDSSUHVHQWDWL GD XQD WHQVLRQH HOHWWULFD DOWD EDVVD GD XQ GLIIHUHQWH VWDWR GL SRODUL]]D]LRQH PDJQHWLFD SRVLWLYD QHJDWLYD GD OXFH H EXLR HWF 8QLWD
GL LQIRUPD]LRQH QHO FDOFRODWRUH ELW 2JQL LQIRUPD]LRQH YLHQH WUDVIRUPDWD QHO FDOFRODWRUH LQ XQD VHTXHQ]D GL ELW IRUPD %,1$5,$ FLRH
LQ XQD VHTXHQ]D GL H
, VLLVWHPLL GLL QXPHUD]LLRQH SRVLL]LLRQDOOH VRQR FDUDWWHULL]]DWLL , V VWHP G QXPHUD] RQH SRV ] RQD H VRQR FDUDWWHU ]]DW GD XQD EDVH E H XQ DOOIDEHWR a GD XQD EDVH E H XQ D IDEHWR a $OIDEHWR a) H OLQVLHPH GHOOH FLIUH GLVSRQLELOL SHU HVSULPHUH L QXPHUL $G RJQL FLIUD FRUULVSRQGH XQ YDORUH FRPSUHVR WUD H E $G HVHPSLR QHOOD QXPHUD]LRQH GHFLPDOH ODOIDEHWR HC a=^` %DVH E HC LO QXPHUR GHJOL HOHPHQWL FKH FRPSRQJRQR ODOIDEHWR $G HVHPSLR QHO FDVR GHFLPDOH E
1XPHUD]LRQH LQ EDVH S
a = ^S` E S XQ QXPHUR JHQHULFR 1 LQ EDVH S H
UDSSUHVHQWDWR GD XQD VHTXHQ]D GL FLIUH DQDQDD GRYH DL a, "L Q DQ H
OD FLIUD SLX
VLJQLILFDWLYD PHQWUH D H
OD PHQR VLJQLILFDWLYD
(6(03,
&RQYHUVLLRQH GLL XQ QXPHUR GD EDVH E D EDVH GHFLLPDOOH &RQYHUV RQH G XQ QXPHUR GD EDVH E D EDVH GHF PD H &RGLILFD GHFLPDOH E 1 &RGLILFD ELQDULD E a=^`
6LD DQDQDD OD FRGLILFD GL XQ QXPHUR QDWXUDOH 1 LQ EDVH S DOORUD LO YDORUH GL 1 LQ EDVH GHFLPDOH HC GDWR GDOOD IRUPXOD 1S DQ SQDQ SQDSD DL S L
1 (VHPSLR 1 (VHPSLR &RGLILFD HVDGHFLPDOH E a=^$%&'()` 1 %) %) &RGLILFD RWWDOH E a=^`
Q
&RQYHUVLLRQH GLL XQ QXPHUR QDWXUDOOH LLQ EDVH LLQ EDVH QRQ &RQYHUV RQH G XQ QXPHUR QDWXUD H Q EDVH Q EDVH QRQ GHFLLPDOOH GHF PD H /D IRUPXOD 1S DQ SQDQ SQDSD
,Q SUDWLFD LO SURFHGLPHQWR GD VHJXLUH HC 6LD 1 LO QXPHUR 6L GLYLGH 1 SHU OD QXRYD EDVH S VLD 4 LO TXR]LHQWH HG 5 LO UHVWR 6L FRQYHUWH 5 QHOOD FRUULVSRQGHQWH FLIUD GHOOD QXRYD EDVH S 6L DJJLXQJH OD FLIUD FRVL
RWWHQXWD D VLQLVWUD GHOOH FLIUH RWWHQXWH LQ SUHFHGHQ]D 6H 4 ILQH $OWULPHQWL SRQL 1 4 H WRUQD DO SDVVR
VL SXR
ULVFULYHUH FRPH 1S D S D S S DQ DQ S
$SSOLFKLDPR OD GLYLVLRQH LQWHUD SHU S VXO ULVXOWDWR 4 GHOOD GLYLVLRQH SUHFHGHQWH 4 GLY S D S S DQ DQ S 4 4 PRG S D >UHVWR GHOOD GLYLVLRQH LQWHUD@
5LSHWLDPR LO SURFHGLPHQWR VX 4 4 HWF SHU RWWHQHUH OH FLIUH ULPDQHQWL D D DQ
&RQYHUVLRQH ELQDULD
6L YXROH FRQYHUWLUH XQ QXPHUR 1LQ EDVH QHOOD FRUULVSRQGHQWH UDSSUHVHQWD]LRQH LQ EDVH $SSOLFDQGR LO SURFHGLPHQWR YLVWR ELVRJQD HIIHWWXDUH VXFFHVVLYH GLYLVLRQL SHU ,O ULVXOWDWR H
OD VHTXHQ]D GL H RWWHQXWL FRVLGHUDQGR L UHVWL GHOOH GLYLVLRQL GDOOD PHQR VLJQLILFDWLYD DOOD SLX
VLJQLILFDWLYD (VHPSLLR &RQYHUWWLLUH LLQ IRUPD ELLQDULLD 1 (VHPS R &RQYHU UH Q IRUPD E QDU D 1 'LYLVLRQH TXLQGL 4XR]LHQWH 5HVWR DL
(VHPSLLR &RQYHUWWLLUH LLQ IRUPD ELLQDULLD 1 (VHPS R &RQYHU UH Q IRUPD E QDU D 1 'LYLVLRQH TXLQGL 4XR]LHQWH 5HVWR DL
&RQYHUVLRQH LQ EDVH S
(VHPSLLR &RQYHUWWLLUH LLQ IRUPD RWWWWDOOH 1 (VHPS R &RQYHU UH Q IRUPD R D H 1 'LYLVLRQH TXLQGL 4XR]LHQWH 5HVWR DL
(VHPSLLR &RQYHUWWLLUH LLQ IRUPD HVDGHFLLPDOOH 1 (VHPS R &RQYHU UH Q IRUPD HVDGHF PD H 1 'LYLVLRQH TXLQGL 4XR]LHQWH & 5HVWR DL &
7DEHOOD 5LDVVXQWLYD
6LVWHPD GL QXPHUD]LRQH BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB 'HFLPDOH%LQDULR 2WWDOH (VDGHFLPDOH BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB $ % & ' ( ) BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
&RQYHUVLLRQLL GD IRUPD ELLQDULLD D RWWDOOH HG HVDGHFLLPDOOH &RQYHUV RQ GD IRUPD E QDU D D RWWD H HG HVDGHF PD H /H UDSSUHVHQWD]LRQL RWWDOL HG HVDGHFLPDOL VRQR LQWHUHVVDQWL SHU OD IDFLOLWD
GL FRQYHUVLRQH GDOOD EDVH GXH H YLFHYHUVD 2VVHUYLDPR FKH /D FRQYHUVLRQH GD EDVH D EDVH VL RWWLHQH VFRPSRQHQGR LO QXPHUR ELQDULR LQ WULSOH GL FLIUH ELQDULH SDUWHQGR GDOOD PHQR VLJQLILFDWLYD H SHU RJQL WULSOD ULFDYDQGR OD FRUULVSRQGHQWH FLIUD RWWDOH TXLQGL /D FRQYHUVLRQH GD EDVH D EDVH VL RWWLHQH VFRPSRQHQGR LO QXPHUR ELQDULR LQ TXDGUXSOH GL FLIUH ELQDULH SDUWHQGR GDOOD PHQR VLJQLILFDWLYD H SHU RJQL TXDGUXSOD ULFDYDQGR OD FRUULVSRQGHQWH FLIUD RWWDOH & TXLQGL &
6RPPD GLL GXH QXPHULL ELLQDULL QDWXUDOOLL 6RPPD G GXH QXPHU E QDU QDWXUD 9LHQH HVHJXLWD LQFRORQQDQGR L QXPHUL H VRPPDQGR WUD ORUR L ELW LQFRORQQDWL SDUWHQGR GDL PHQR VLJQLILFDWLYL LQ RUGLQH GL SHVR FUHVFHQWH 3HU OD VRPPD GL GXH QXPHUL SRVLWLYL GL OXQJKH]]D . SRVVRQR HVVHUH QHFHVVDUL . SRVWL 6H VRQR GLVSRQLELOL VROR . FLIUH VL JHQHUD XQ HUURUH GL RYHUIORZ R WUDERFFR (VHPSLLR (VHPS R 6RWWUD]LLRQH GLL QXPHULL ELLQDULL QDWXUDOOLL 6RWWUD] RQH G QXPHU E QDU QDWXUD 9LHQH HVHJXLWD LQFRORQQDQGR L QXPHUL H VRWWUDHQGR WUD ORUR L ELW LQFRORQQDWL SDUWHQGR GDL PHQR VLJQLILFDWLYL LQ RUGLQH GL SHVR FUHVFHQWH +S VL VXSSRQH FKH VL JHQHUL VHPSUH XQ QXPHUR SRVLWLYR
0ROOWLLSOOLLFD]LLRQH GLL QXPHULL ELLQDULL QDWXUDOOLL 0R W S FD] RQH G QXPHU E QDU QDWXUD 6L XWLOL]]D OD VWHVVD WHFQLFD XVDWD DQFKH SHU L QXPHUL LQ EDVH VRPPD H VFRUULPHQWR $ % $%
'LLYLLVLLRQH GLL QXPHULL ELLQDULL QDWXUDOOLL ' Y V RQH G QXPHU E QDU QDWXUD 6L XVD OD WHFQLFD XVDWD DQFKH SHU L QXPHUL LQ EDVH GLIIHUHQ]D H VFRUULPHQWR $ % &DOFRODUH $% _ _
(6(5&,=, (6(5&,=, (IIHWWXDUH OH VHJXHQWL RSHUD]LRQL DULWPHWLFKH WUD QXPHUL ELQDUL QDWXUDOL LSRWL]]DQGR GL ODYRUDUH FRQ XQ HODERUDWRUH FRQ OXQJKH]]D GL SDUROD ZRUG SDUL D XQ E\WH 'LIIHUHQ]D $% $ %
0ROWLSOLFD]LRQH $% $ % & 5LVXOWDWR
3UHVWLWR '
5LVXOWDWR$ %
6RPPD $% $ % $ ) 5LVXOWDWR$ %
5LVXOWDWR
)21'$0(17, ', ,1)250$7,&$
5$335(6(17$=,21( '(, 180(5,
1XPHUL 5HODWLYL
&RQVLGHULDPR OLQVLHPH GHL QXPHUL UHODWLYL LQWHUL = ^ } 9RJOLDPR UDSSUHVHQWDUH JOL HOHPHQWL GL TXHVWR LQVLHPH LQ IRUPD ELQDULD $YHQGR VHPSUH XQ QXPHUR OLPLWDWR GL ELW SRVVLDPR XWLOL]]DUQH XQR SHU OD UDSSUHVHQWD]LRQH GHO VHJQR R 5DSSUHVHQWD]LLRQH FRQ PRGXOOR H VHJQR 5DSSUHVHQWD] RQH FRQ PRGX R H VHJQR ,O SULPR ELW GL XQ QXPHUR LQWHUR YLHQH XWLOL]]DWR FRPH ELW GL VHJQR SRVLWLYR QHJDWLYR *OL DOWUL ELW LQGLFDQR LO PRGXOR YDORUH DVVROXWR GHO QXPHUR $G HVHPSLLR $G HVHPS R SDUROH GL ELW SDUROH D ELW
$EELDPR GXH UDSSUHVHQWD]LRQL GLYHUVH SHU OR ]HUR $G HVHPSLLR $G HVHPS R P ! SRVVR UDSSUHVHQWDUH 9DORUH 'HFLPDOH QXPHUL
9DORUH %LQDULR
5DSSUHVHQWD]LRQH LQ &RPSOHPHQWR
3HU VHPSOLILFDUH OH RSHUD]LRQL VX LQWHUL FRQ VHJQR VL DGRWWD XQD UDSSUHVHQWD]LRQH GHL QXPHUL QHJDWLYL LQ FRPSOHPHQWR &RPSOOHPHQWR DOOOOD EDVH &RPS HPHQWR D D EDVH GDWR XQ QXPHUR ; LQ EDVH E GL Q FLIUH LO FRPSOHPHQWR DOOD EDVH HC GHILQLWR FRPH EQ ; (VHPSLL (VHPS Q E ; ,O FRPSOHPHQWR D GL HC Q E ; ,O FRPSOHPHQWR D GL ; HC ;
&RPSOOHPHQWR DOOOOD EDVH &RPS HPHQWR D D EDVH GDWR XQ QXPHUR ; LQ EDVH E GL Q FLIUH LO FRPSOHPHQWR DOOD EDVH HC GHILQLWR FRPH EQ; (VHPSLLR (VHPS R Q E ; ,O FRPSOHPHQWR D GL ; HC Q ;
2VVHUYLDPR FKH LO ULVXOWDWR HC OD VHTXHQ]D GL FLIUH FKH VL RWWLHQH FRPSOHPHQWDQGR D RJQL VLQJROR ELW 5LLDVVXPHQGR 5 DVVXPHQGR 6XSSRQLDPR GL YROHU UDSSUHVHQWDUH XQ QXPHUR ; WUDPLWH Q FLIUH ELQDULH OD UDSSUHVHQWD]LRQH LQ FRPSOHPHQWR D VL RWWLHQH VRWWUDHQGR ; GD Q OD UDSSUHVHQWD]LRQH LQ FRPSOHPHQWR D VL RWWLHQH VRWWUDHQGR ; GD Q
,Q SUDWLFD LO SULQFLSLR HC FKH OD VRPPD GHO QXPHUR SLXC LO VXR FRPSOHPHQWR GLD XQD VWULQJD GL Q FLIUH D ]HUR
,Q 3UDWLLFD ,Q 3UDW FD ,O FRPSOHPHQWR D GL XQ QXPHUR ELQDULR ; UDSSUHVHQWDWR FRPH LQWHUR SRVLWLYR VL RWWLHQH FRPSOHPHQWDQGR WXWWL L ELW FLRH
VFDPELDQGR FRQ H YLFHYHUVD ,O FRPSOHPHQWR D VL RWWLHQH SULPD FDOFRODQGR LO FRPSOHPHQWR D H SRL VRPPDQGRYL ,QIDWWL VL SXRC VFULYHUH O
RSHUD]LRQH FRPH Q ; FRPH Q ;
5DSSUHVHQWD]LRQH LQ &RPSOHPHQWR
(VHPSLLR Q (VHPS R Q ,QWHUR 0RGXOR 6HJQR PRGXOR &RPSO D &RPSO D
5DSSUHVHQWD]LRQH LQ FRPSOHPHQWR D , QXPHUL SRVLWLYL VRQR UDSSUHVHQWDWL GDO ORUR PRGXOR HG KDQQR LO ELW SLXC VLJQLILFDWLYR D ]HUR , QXPHUL QHJDWLYL VL RWWHQJRQR FRPSOHPHQWDQGR D L FRUULVSRQGHQWL PRGXOL VHJQR FRPSUHVR 3HUWDQWR KDQQR LO SULPR ELW VHPSUH D 5DSSUHVHQWD]LRQH LQ FRPSOHPHQWR D , QXPHUL SRVLWLYL VRQR UDSSUHVHQWDWL GDO ORUR PRGXOR HG KDQQR LO ELW SLXC VLJQLILFDWLYR D ]HUR , QXPHUL QHJDWLYL VL RWWHQJRQR FRPSOHPHQWDQGR D L FRUULVSRQGHQWL PRGXOL VHJQR FRPSUHVR 3HUWDQWR KDQQR LO ELW GHO VHJQR VHPSUH D ,Q TXHVWR FDVR VL KD XQD VROD UDSSUHVHQWD]LRQH GHOOR ]HUR 6X ELW VL SRVVRQR UDSSUHVHQWDUH L QXPHUL GD D ,O QXPHUR SLXC SLFFROR UDSSUHVHQWDELOH QRQ KD LO FRUULVSHWWLYR SRVLWLYR SHU UDSSUHVHQWDUH RFFRUUHUHEEHUR ELW
(VHUFLL]LL (VHUF ] 6L UDSSUHVHQWLQR L VHJXHQWL QXPHUL LQ FRPSOHPHQWR D DYHQGR ELW D GLVSRVL]LRQH 0RGXOR &RPSOD &RPSOD
,QWHUSUHWDUH OD VHTXHQ]D GL ELW FRPH D QXPHUR QDWXUDOH E QXPHUR UHODWLYR LQ PRGXOR H VHJQR F QXPHUR UHODWLYR LQ FRPSOHPHQWR D GXH D ,QWHUSUHWDQGR OD VHTXHQ]D FRPH QXPHUR QDWXUDOH &
E ,QWHUSUHWDQGR OD VHTXHQ]D FRPH QXPHUR UHODWLYR LQ PRGXOR H VHJQR &
F ,QWHUSUHWDQGR OD VHTXHQ]D FRPH QXPHUR UHODWLYR LQ FRPSOHPHQWR D GXH ULFDYLDPR LO FRPSOHPHQWR D FRPSOHPHQWLDPR L ELW (%+
(VHUFLL]LLR (VHUF ] R (IIHWWXDUH OH VHJXHQWL RSHUD]LRQL VXSSRQHQGR GL RSHUDUH FRQ XQD UDSSUHVHQWD]LRQH GHL QXPHUL VX XQ E\WH H LQ FRPSOHPHQWR D GXH 6ROOX]LLRQH 6R X] RQH
29(5)/2:
FLRHC LQ FRPSOHPHQWR D
29(5)/2:
6L SXRC YHULILFDUH RYHUIORZ VROR TXDQGR JOL RSHUDQGL KDQQR OR VWHVVR VHJQR ORSHUD]LRQH SURGXFH XQ QXPHUR GL VHJQR RSSRVWR 6RWWUD]LLRQH WUD QXPHULL UHOODWLLYLL 6RWWUD] RQH WUD QXPHU UH DW Y 6H L QXPHUL VRQR UDSSUHVHQWDWL LQ FRPSOHPHQWR D O
RSHUD]LRQH GL VRWWUD]LRQH VL HIIHWWXD PHGLDQWH VRPPD YDQWDJJLR GHOOD UDSSUHVHQWD]LRQH LQ FRPSOHPHQWR D
, YDORUL LQGLFDWL ULVXOWDQR FRVu UDSSUHVHQWDWL 'D FXL
5$335(6(17$=,21( '(, 180(5,
0ROOWLLSOOLLFD]LLRQH H GLLYLLVLLRQH WUD QXPHULL UHOODWLLYLL 0R W S FD] RQH H G Y V RQH WUD QXPHU UH DW Y 8WLOL]]DUH L QXPHUL LQ YDORUH DVVROXWR HG XWLOL]]DUH OH RSHUD]LRQL YLVWH VXL QXPHUL QDWXUDOL VRPPDGLIIHUHQ]D H VFRUULPHQWR ,O VHJQR VL GHWHUPLQD LQ EDVH DO VHJQR GHJOL RSHUDQGL /
DSSOLFD]LRQH GHOOH RSHUD]LRQL GLUHWWDPHQWH VXL QXPHUL LQ FRPSOHPHQWR H
LQ JHQHUDOH VFRUUHWWD ,QIDWWL
29(5)/2:
29(5)/2:
, YDORUL LQGLFDWL ULVXOWDQR FRVu UDSSUHVHQWDWL FRQ ELW LQ FRPSOHPHQWR D ,O ULVXOWDWR GHO FDOFROR QRQ q UDSSUHVHQWDELOH VX VROL ELW 6XSSRUUHPR GLVSRQLELOH DOOR VFRSR XQD SDUROD GL XQ E\WH FKH VX XQ E\WH q LQWHUSUHWDELOH FRPH QXPHUR SRVLWLYR GL YDORUH
2SHUD]LRQH GL VKLIW
6KLLIW YHUVR VLLQLLVWUD 6K IW YHUVR V Q VWUD 'DOOD UDSSUHVHQWD]LRQH GHL QXPHUL GLVFHQGH LPPHGLDWDPHQWH FKH OR VFRUULPHQWR YHUVR VLQLVWUD GL WXWWH OH FLIUH GHO QXPHUR GL XQD SRVL]LRQH FRQ O
LQVHULPHQWR GL XQR ]HUR QHOOD SRVL]LRQH GL GHVWUD HTXLYDOH D PROWLSOLFDUH LO QXPHUR SHU OD EDVH /R VFRUULPHQWR GL N SRVL]LRQL YHUVR VLQLVWUD HTXLYDOH D PROWLSOLFDUH LO QXPHUR SHU EN 6KLLIW YHUVR GHVWUD 6K IW YHUVR GHVWUD /R VFRUULPHQWR VKLIW YHUVR GHVWUD GL WXWWH OH FLIUH GHO QXPHUR GL XQD SRVL]LRQH FRQ O
LQVHULPHQWR GL XQR ]HUR QHOOD SRVL]LRQH GL VLQLVWUD HTXLYDOH D GLYLGHUH LO QXPHUR SHU OD EDVH FLRHC D PROWLSOLFDUH LO QXPHUR SHU E /R VFRUULPHQWR GL N SRVL]LRQL YHUVR GHVWUD HTXLYDOH D PROWLSOLFDUH LO QXPHUR SHU EN
1XPHUL )UD]LRQDUL
6RQR QXPHUL UHDOL FRPSUHVL IUD ]HUR H 5DSSUHVHQWD]LLRQH GHLL QXPHULL IUD]LLRQDULL 5DSSUHVHQWD] RQH GH QXPHU IUD] RQDU 6LD a=^S` E S 'DWR XQ QXPHUR IUD]LRQDULR 1 OD VXD UDSSUHVHQWD]LRQH LQ EDVH S HC GDWD GD XQD VHTXHQ]D GL FLIUH D D D DQ GRYH DL a , " L Q ,O YDORUH GL 1 HC GDWR GDOOD IRUPXOD 1S D SD SDQSQ
Q
DL SL
$G HVHPSLLR $G HVHPS R %DVH GHFLPDOH S 1 103. %LQDULR S 1
,O ULVXOWDWR HC XQ QXPHUR UHDOH ! 3DUWH LQWHUD 1S S D 3DUWH IUD]LRQDULD 1S S D S DQ SQ
0
$SSOLFKLDPR DQFRUD OD PROWLSOLFD]LRQH SHU S VXOOD SDUWH IUD]LRQDULD 0 RWWHQXWD QHOOD GLYLVLRQH SUHFHGHQWH 3DUWH LQWHUD 0 S D 3DUWH IUD]LRQDULD 0 S D S DQ SQ 0 5LSHWLDPR LO SURFHGLPHQWR VX 0 0 HWF SHU RWWHQHUH OH FLIUH ULPDQHQWL D D DQ
,Q SUDWLFD LO SURFHGLPHQWR GD VHJXLUH HC 6LD 1 LO QXPHUR IUD]LRQDULR 6L PROWLSOLFD 1 SHU OD QXRYD EDVH VLD , OD SDUWH LQWHUD H 0 OD SDUWH IUD]LRQDULD 6L FRQYHUWH , QHOOD FRUULVSRQGHQWH FLIUD GHOOD QXRYD EDVH 6L DJJLXQJH OD FLIUD FRVL
RWWHQXWD D GHVWUD GHOOH FLIUH RWWHQXWH LQ SUHFHGHQ]D OD SULPD FLIUD LPPHGLDWDPHQWH D GHVWUD GHOOD YLUJROD 6H ) RSSXUH VL VRQR RWWHQXWH OH FLIUH ULFKLHVWH ILQH $OWULPHQWL SRQL 1 ) H WRUQD DO SDVVR
1
3DUWH ,QWHUD DL
3DUWH )UD]LRQDULD
TXLQGL
&RQYHUWLUH LQ EDVH
0ROWLSOLFD]LRQH
3DUWH )UD]LRQDULD
TXLQGL
TXLQGL
SHULRGLFR
3DUWH )UD]LRQDULD
4XLQGL XQR VWHVVR QXPHUR SXRC DYHUH XQ QXPHUR ILQLWR GL FLIUH LQ XQD EDVH HG XQ QXPHUR LQILQLWR LQ XQ
DOWUD 4XLQGL QHOOD UDSSUHVHQWD]LRQH LQWHUQD VL SXRC LQWURGXUUH XQ HUURUH GL WURQFDPHQWR
(
TXLQGL
(
$G HVHPSLLR $G HVHPS R ULVHUYDQGR ELW SHU OD SDUWH LQWHUD H SHU TXHOOD IUD]LRQDULD /D SUHFLVLRQH HC YDULDELOH H SXRC HVVHUH VFDUVD SHU QXPHUL GL YDORUH SURVVLPR DOOR ]HUR
5DSSUHVHQWD]LLRQH GHLL UHDOOLL LLQ YLLUJROOD ILLVVD 5DSSUHVHQWD] RQH GH UHD Q Y UJR D I VVD 8Q QXPHUR SUHILVVDWR GL FLIUH YLHQH GHGLFDWR DOOD SDUWH LQWHUD HG D TXHOOD IUD]LRQDULD UDSSUHVHQWD]LRQH LQ YLUJROD ILVVD 4XLQGL 6L FDOFROD OD UDSSUHVHQWD]LRQH GHOOD SDUWH LQWHUD QHOOD EDVH GDWD FRQ OD IRUPXOD 1S DQ SQDQ SQDSD
6L FDOFROD OD UDSSUHVHQWD]LRQH GHOOD SDUWH IUD]LRQDULD QHOOD EDVH GDWD WHQHQGR FRQWR GHO QXPHUR GL FLIUH GLVSRQLELOL FRQ OD IRUPXOD 1S D SD SDQSQ
U VL UDSSUHVHQWD FRQ P H Q &RQYHUVLRQH LQ ELQDULR YLUJROD PRELOH S E U P Q
P
GRYH E H
XQ QXPHUR LQWHUR FKH LQGLFD XQD EDVH XWLOL]]DWD SHU OD QRWD]LRQH HVSRQHQ]LDOH LQ JHQHUDOH VH S HC OD EDVH GHO VLVWHPD GL QXPHUD]LRQH S E
5DSSUHVHQWD]LLRQH ELLQDULLD LLQ YLLUJROOD PRELLOOH 5DSSUHVHQWD] RQH E QDU D Q Y UJR D PRE H 3HU RJQL QXPHUR UHDOH YHQJRQR XWLOL]]DWL Q ELW
segno esponente n n-1 n-2 l mantissa (cifre a destra della virgola) 1
segno numero
$G HVHPSLLR $G HVHPS R 6XSSRQLDPR GL DYHUH D GLVSRVL]LRQH ELW GL FXL ELW SHU LO VHJQR GHOOD PDQWLVVD ELW SHU LO VHJQR GHOO
HVSRQHQWH ELW SHU LO YDORUH DVVROXWR GHOO
HVSRQHQWH ELW SHU OD PDQWLVVD 5DSSUHVHQWD]LRQH LQ YLUJROD PRELOH GL U U HVSRQHQWH PDQWLVVD _ _ _ 5DSSUHVHQWD]LRQH LQ YLUJROD PRELOH GL U U HVSRQHQWH PDQWLVVD _ _ _
HVSRQHQWWH (VHPS R FRPS HPHQ R D SHU HVSRQHQ H ELW ELW VHJQR PDQWLVVD ELW YDORUH GHOO
HVSRQHQWH LQ FRPSO D ELW PDQWLVVD
U
_ _
(6(5&,=,2 (6(5&,=,2 5DSSUHVHQWDUH VX ELW GL FXL GL HVSRQHQWH LQ FRPSOHPHQWR D GXH XQR SHU LO VHJQR H GL PDQWLVVD L VHJXHQWL YDORUL
6ROOX]LLRQH 6R X] RQH D U 3DUWH LQWHUD 3DUWH IUD]LRQDULD DOJRULWPR GHOOH PROWLSOLFD]LRQL VXFFHVVLYH 6L KD ) ) ) , , ,
) , ) , ) , ) , ) , UDSSUHVHQWD]LRQH DSSURVVLPDWD SHUFKHC VL RWWLHQH XQ QXPHUR SHULRGLFR 1RUPDOL]]DQGR PDQWLVVD HVSRQHQWH HVSRQHQWH VHJQR PDQWLVVD _ _
,O YDORUH ULFKLHVWR q GXQTXH SDUWH,QWHUD!SDUWH)UD]LRQDULD! 1RQ q QHFHVVDULD DOFXQD QRUPDOL]]D]LRQH 5DSSUHVHQWD]LRQH ILQDOH GL HVSRQHQWH VHJQR PDQWLVVD _ _
6L QRWL FKH OD PDQWLVVD YLHQH WURQFDWD DO QXPHUR GLVSRQLELOH GL ELW VROR GRSR DYHU QRUPDOL]]DWR &
HC GL XQ HUURUH GL WURQFDPHQWR LO QXPHUR UHDOPHQWH UDSSUHVHQWDWR QRQ q PD
3UHFLLVLLRQH QHOOOOD UDSSUHVHQWD]LLRQH GHLL QXPHULL UHDOOLL 3UHF V RQH QH D UDSSUHVHQWD] RQH GH QXPHU UHD GHOOH 6L SXR LQ JHQHUDOH RVVHUYDUH FKH 4XDQWR PDJJLRUH HC LO QXPHUR GL ELW ULVHUYDWL DOOD PDQWLVVD WDQWR PDJJLRUH H LO QXPHUR GL FLIUH VLJQLILFDWLYH FKH SRVVRQR HVVHUH PHPRUL]]DWH SUHFLVLRQH 4XDQWR PDJJLRUH HC LO QXPHUR GL ELW ULVHUYDWL DOO HVSRQHQWH WDQWR PDJJLRUH HC ORUGLQH GL JUDQGH]]D GHOOD FLIUD FKH SXR HVVHUH UDSSUHVHQWDWD 3UHFLLVLLRQH 3UHF V RQH HC GDWD GDO QXPHUR GL FLIUH LQ EDVH UDSSUHVHQWDELOL FRQ OD PDQWLVVD $G HVHPSLLR $G HVHPS R 6H OD PDQWLVVD H
UDSSUHVHQWDWD GD ELW OD SUHFLVLRQH H
GL FLIUH PD[ YDORUH UDSSUHVHQWDELOH GDOOD PDQWLVVD FLUFD /H FLIUH PHQR VLJQLILFDWLYH GHOOD PDQWLVVD FKH QRQ SRVVRQR HVVHUH UDSSUHVHQWDWH QHO QXPHUR GL ELW D GLVSRVL]LRQH YHQJRQR HOLPLQDWH PHGLDQWH WURQFDPHQWR RG DUURWRQGDPHQWR
9DOXWLDPR O
HUURUH LO QXPHUR UHDOPHQWH UDSSUHVHQWDWR YDOH
7URQFDPHQWR H DUURWRQGDPHQWR 7URQFDPHQWR H DUURWRQGDPHQWR (VHPSLLR (VHPS R U FRQ ELW SHU OD PDQWLVVD ELW SHU O
HVSRQHQWH
5DSSUHVHQWD]LRQH FRQ WURQFDPHQWR FRQ DUURWRQGDPHQWR (VHPSLLR (VHPS R U FRQ SHULRGLFR ELW SHU OD PDQWLVVD ELW SHU O
HVSRQHQWH
$G HVHPSLLR $G HVHPS R 6XSSRQLDPR GL ODYRUDUH LQ EDVH FRQ ELW SHU OD PDQWLVVD QRUPDOL]]DWD ULSRUWDQGR WXWWR DOO
HVSRQHQWH PDJJLRUH VL SHUGRQR OH XOWLPH FLIUH GHO VHFRQGR DGGHQGR FLRHC OD TXDQWLWDC
(UURUH GLL FDQFHOOOOD]LLRQH (UURUH G FDQFH D] RQH 6L PDQLIHVWD QHO VRWWUDUUH QXPHUL PROWR VLPLOL IUD ORUR $G HVHPSLLR $G HVHPS R 6XSSRQLDPR GL ODYRUDUH LQ EDVH FRQ ELW SHU OD PDQWLVVD QRUPDOL]]DWD 6L FRQVLGHUL OD VHJXHQWH HVSUHVVLRQH &KH SURGXFH LO YDORUH 1HO FDOFRODWRUH YLHQH YDOXWDWD ; ; ; ; 1RUPDOL]]DQGR ; ; "" /
HODERUDWRUH LQWURGXFH DO SRVWR GL "" SURGXFHQGR /H XOWLPH GXH FLIUH QRQ KDQQR SHURC VLJQLILFDWR LO QXPHUR HC DIIHWWR GD HUURUH 4XHVWL HUURUL IDQQR VLC FKH OD VRPPD QRQ JRGD VHPSUH GHOOD SURSULHWDC DVVRFLDWLYD
(VHPSLLR (VHPS R $ % & 9DOXWLDPR $ %& %& HUURUH GL LQFRORQQDPHQWR $ 1RUPDOL]]D]LRQH HUURUH GL FDQFHOOD]LRQH 9DOXWLDPR $ %& $% % $ 1RUPDOL]]D]LRQH HUURUH GL FDQFHOOD]LRQH &
)21'$0(17, ', ,1)250$7,&$
5$335(6(17$=,21( '(, 180(5,
(6(5&,=,2 (IIHWWXDUH OD VRPPD FRQ QXPHUL UDSSUHVHQWDWL LQ IORDWLQJ SRLQW VX ELW GL FXL GL HVSRQHQWH LQ FRPSOHPHQWR D GXH XQR SHU LO VHJQR H GL PDQWLVVD YHULILFDQGR L ULVXOWDWL RWWHQXWL 6ROX]LRQH
(6(5&,=,2 (IIHWWXDUH OD VHJXHQWH PROWLSOLFD]LRQH IUD QXPHUL UDSSUHVHQWDWL LQ IORDWLQJ SRLQW VX ELW GL FXL GL HVSRQHQWH LQ FRPSOHPHQWR D GXH XQR SHU LO VHJQR H GL PDQWLVVD YHULILFDQGR LO ULVXOWDWR RWWHQXWR 6ROX]LRQH 6L KD
$OOLQHDQGR L QXPHUL LQ PRGR FKH DEELDQR LGHQWLFR HVSRQHQWH 9DORUH DWWHVR SHU LO ULVXOWDWR
3HU PROWLSOLFDUH L GXH YDORUL q VXIILFLHQWH PROWLSOLFDUH OH PDQWLVVH H VRPPDUH JOL HVSRQHQWL 3RLFKp SHUz LO SURGRWWR GL GXH QXPHUL GL ELW ULFKLHGH LQ JHQHUDOH ELW SHU HVVHUH HVDWWDPHQWH UDSSUHVHQWDWR PHQWUH DQFKH OD PDQWLVVD ULVXOWDQWH GRYUj HVVHUH UDSSUHVHQWDWD LQ ELW HYLGHQWHPHQWH L SL VLJQLILFDWLYL O
RSHUD]LRQH SRWUj GDUH OXRJR DG DSSURVVLPD]LRQL
,VRODQGR L ELW SL VLJQLILFDWLYL VL KD 5 5LVXOWDWR WHRULFR
9HQJRQR LQVHULWL LQ XQ E\WH SHU FXL ELW YLHQH QRUPDOPHQWH LJQRUDWR ,Q WUDVPLVVLRQH IXQ]LRQD FRPH ELW GL SDULWD
SHU LQGLYLGXDUH HUURUL ,O YDORUH R GHO ELW GL SDULWDC HC VFHOWR LQ PRGR FKH OD VHTXHQ]D GL VLD SDUL $G HVHPSLR ! ! ,O FRGLFH $6&,, HVWHVR XWLOL]]D LQYHFH ELW FDUDWWHUL
5DSSUHVHQWD]LRQL %LQDULH
5LLDVVXPHQGR 5 DVVXPHQGR FRPH LQWHUR FRQ Q ELW E\WHV
$OWUL FRGLFL DG HVHPSLR VRQR (%&',& ([WHQGHG %LQDU\ &RGHG 'HFLPDO ,QWHUFKDQJH &RGH ELW SHU HODERUDWRUL ,%0 HWF
)21'$0(17, ', ,1)250$7,&$
5$335(6(17$=,21( '(, 180(5,
SL[HO LPPDJLQH D GXH FRORUL ELDQFR H QHUR 6HUYH XQ VROR ELW SHU FRGLILFDUH OD WRQDOLWDC GL FRORUH SHU FLDVFXQ SL[HO ,Q WRWDOH ELW E\WH
/LQJXDJJL GL 3URJUDPPD]LRQH
(C XQD QRWD]LRQH FRQ FXL HC SRVVLELOH GHVFULYHUH JOL DOJRULWPL 3URJUDPPD 3URJUDPPD HC OD UDSSUHVHQWD]LRQH GL XQ DOJRULWPR LQ XQ SDUWLFRODUH OLQJXDJJLR GL SURJUDPPD]LRQH ,Q JHQHUDOH RJQL OLQJXDJJLR GL SURJUDPPD]LRQH GLVSRQH GL XQ LQVLHPH GL SDUROH FKLDYH NH\ZRUGV DWWUDYHUVR OH TXDOL HC SRVVLELOH HVSULPHUH LO IOXVVR GL D]LRQL GHVFULWWR GDOO
DOJRULWPR 2JQL OLQJXDJJLR HC FDUDWWHUL]]DWR GD XQD VLQWDVVL H GD XQD VHPDQWLFD VLQWDVVL H
O
LQVLHPH GL UHJROH IRUPDOL SHU OD FRPSRVL]LRQH GL SURJUDPPL QHO OLQJXDJJLR VFHOWR /H UHJROH VLQWDWWLFKH GHWWDQR OH PRGDOLWDC GL FRPELQD]LRQH WUD OH SDUROH FKLDYH GHO OLQJXDJJLR SHU FRVWUXLUH FRUUHWWDPHQWH LVWUX]LRQL IUDVL VHPDQWLFD HC O
LQVLHPH GHL VLJQLILFDWL GD DWWULEXLUH DOOH IUDVL VLQWDWWLFDPHQWH FRUUHWWH FRVWUXLWH QHO OLQJXDJJLR VFHOWR
/LQJXDJJL GL SURJUDPPD]LRQH
0DFFKLQD GL 7XULQJ 'LDJUDPPL GL IOXVVR 9RQ 1HXPDQQ /LQJXDJJL PDFFKLQD HG $66(0%/(5 )2575$1 %DFNXV ,%0 &2%2/ $3/ /,63 0F&DUWK\ $/*2/ EORFFR VWDFN 3/, 6,08/$ WLSR GL GDWR DVWUDWWR FODVVH 3$6&$/ :LUWK 02'8/$ :LUWK 352/2* .RZDOVNL &ROPHUDXHU 6(7/ 60$//7$/. RJJHWWL & & FRQ RJJHWWL
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
,O OLQJXDJJLR PDFFKLQD
'HVFULYLDPR XQ VHPSOLFH OLQJXDJJLR PDFFKLQD SHU OD SURJUDPPD]LRQH GL XQD PDFFKLQD GL YRQ 1HXPDQQ + ,O OLQJXDJJLR PDFFKLQD HC GLUHWWDPHQWH GDOO
HODERUDWRUH VHQ]D QHVVXQD WUDGX]LRQH ,VWUX]LLRQLL ,VWUX] RQ 6L GLYLGRQR LQ GXH SDUWL XQ FRGLFH RSHUDWLYR HG HYHQWXDOPHQWH XQR R SLX RSHUDQGL ,O FRGLFH RSHUDWLYR VSHFLILFD ORSHUD]LRQH GD FRPSLHUH JOL RSHUDQGL LQGLYLGXDQR OH FHOOH GL PHPRULD D FXL VL ULIHULVFRQR OH RSHUD]LRQL 3HU VHPSOLFLWDC FRQVLGHULDPR LVWUX]LRQL DG XQ VROR RSHUDQGR + LVWUX]LRQL HG RSHUDQGL UHODWLYL DO SURJUDPPD LQ HVHFX]LRQH VRQR FDULFDWL LQ PHPRULD H TXLQGL VRQR PHPRUL]]DWL LQ IRUPD ELQDULD HVHJXLELOH
,VWUX]LRQL IRUPDWR
op_code operando
n s
m IR
Q QXPHUR GL ELW GHGLFDWL DO FRGLFH RSHUDWLYR P QXPHUR GL ELW GHGLFDWL DOOLQGLUL]]DPHQWR GHJOL RSHUDQGL + ,QVLHPH GL LVWUX]LRQL GHO OLQJXDJJLR DO SLXC Q LVWUX]LRQL GLYHUVH FLDVFXQD KD XQ GLYHUVR RSBFRGH + 0HPRULD LQGLUL]]DELOH DO SLXC P FHOOH GL PHPRULD GLYHUVH 8OOWHULLRUH LLSRWHVLL VHPSOOLLILLFDWLLYD 8 WHU RUH SRWHV VHPS I FDW YD 6XSSRQLDPR FKH RJQL LVWUX]LRQH RFFXSL HVDWWDPHQWH XQD FHOOD GL PHPRULD
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
3ULQFLSDOL
FDULFDPHQWR GL XQD FHOOD GL PHPRULD LQ XQ RSSRUWXQR UHJLVWUR DXVLOLDULR FRQVLGHULDPR VROR L UHJLVWUL $ H % /2$'$ /2$'% /2$'$ ,1' /2$'$ ,1'
op(IR) -> RI read(MEMORIA,RI) -> RD RD -> A + RS,5 VHOH]LRQD ORSHUDQGR GHOOLVWUX]LRQH FRQWHQXWD LQ ,5 6725( FDULFD LO FRQWHQXWR GL XQ UHJLVWUR LQ XQD FHOOD GL PHPRULD FRQVLGHULDPR VROR L UHJLVWUL $ H % 6725($ 6725(% 6725($ ,1' 6725($ ,1'
A -> RD op(IR) -> RI write(MEMORIA,RI,RD) + ZULWH WUDVIHULVFH LO FRQWHQXWR GHO UHJLVWUR 5' LQ PHPRULD FHQWUDOH LQGLUL]]R 5,
FONDAMENTI DI INFORMATICA LINGUAGGI DI PROGRAMMAZIONE 210
5($'
,VWUX]LLRQLL GLL VDOOWR ,VWUX] RQ G VD WR 0RGLILFDQR OHVHFX]LRQH VHTXHQ]LDOH GHO SURJUDPPD OD SURVVLPD LVWUX]LRQH GD HVHJXLUH QRQ HC TXHOOD LPPHGLDWDPHQWH VXFFHVVLYD QHO SURJUDPPD PD TXHOOD LQGLYLGXDWD GDOOLQGLUL]]R VSHFLILFDWR -803 ,1' 6DOWR LQFRQGL]LRQDWR OD SURVVLPD LVWUX]LRQH GD HVHJXLUH HC DOOLQGLUL]]R ,1'
(VHFX]LLRQH GLL 5($' ,1' (VHFX] RQH G 5($' ,1' VXSSRQLDPR FKH 5'3 VLD XQ UHJLVWUR GDWL GHOOD SHULIHULFD FRQVLGHUDWD RDP -> RD {Int. periferica -> CPU} op(IR) -> RI write(MEMORIA,RI,RD)
(VHFX]LLRQH GLL -803 ,1' (VHFX] RQH G -803 ,1' OP(IR) -> PC -803= , 6DOWR FRQGL]LRQDWR HIIHWWXD LO VDOWR DG , VROR VH LO FRQWHQXWR GL $ HC ]HUR XWLOL]]D LO UHJLVWUR 36: SHU HVHJXLUH LO WHVW
:5,7( VFULWWXUD VX XQD SHULIHULFD (VHFX]LLRQH GLL :5,7( ,1' (VHFX] RQH G :5,7( ,1' op(IR) -> RI read(MEMORIA,RI)->RD RD -> RDP ,VWUX]LRQL DULWPHWLFKH $'' ',) 08/ ',9 *OL RSHUDQGL VRQR LQ $ H % LO ULVXOWDWR HC WUDVIHULWR QHO UHJLVWUR $ ',9 UHVWR LQ %
123
ID WUDVFRUUHUH XQ FLFOR VHQ]D VYROJHUH DOFXQD RSHUD]LRQH DWWHVD WHUPLQD OHVHFX]LRQH GHO SURJUDPPD
+$/7
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
6HW GLL ,VWUX]LLRQLL GLL XQ HOODERUDWRUH 6HW G ,VWUX] RQ G XQ H DERUDWRUH HC OLQVLHPH GHOOH LVWUX]LRQL FKH OD PDFFKLQD HC LQ JUDGR GL HVHJXLUH GLUHWWDPHQWH ,Q TXHVWR FDVR ,Q TXHVWR FDVR LVWUX]LRQL 9$; GHOOD 'LJLWDO ! VRQR VXIILFLHQWL ELW ! RSBFRGH LVWUX]LRQH /2$'$ /2$'% 6725($ 6725(% 5($' :5,7( $'' ',) 08/ ',9 -803 -803= 123 +$/7 5HFHQWHPHQWH VRQR VWDWH SURSRVWH PDFFKLQH 5,6& 5HGXFHG ,QVWUXFWLRQ 6HW &RPSXWHU GD XQ ULGRWWR VHW GL LVWUX]LRQL FRQ IRUPDWL UHJRODUL ! 3UHVWD]LRQL PLJOLRUL ULVSHWWR D PDFFKLQH FRQ PROWH LVWUX]LRQL
FONDAMENTI DI INFORMATICA LINGUAGGI DI PROGRAMMAZIONE 213
/LQJXDJJLR 0DFFKLQD
3URJUDPPD 3URJUDPPD &RQVLVWH LQ GXH SDUWL LVWUX]LRQL H GDWL /D SDUWH LVWUX]LRQL SUHFHGH OD SDUWH GDWL (VHPSLR PROWLSOLFD]LRQH VX GDWL LQWHUL 3HU VHPSOLFLWD IDFFLDPR SDUWLUH LO SURJUDPPD GDOOD SULPD FHOOD GL PHPRULD 0 READ 8 1 READ 9 2 LOADA 8 3 LOADB 9 4 MUL 5 STOREA 8 6 WRITE 8 7 HALT 8 DATO INTERO 9 DATO INTERO
{16 bit}
LQ FRGLFH PDFFKLQD FHOOH GL PHPRULD GD ELW P Q 4XLQGL SRVVLDPR UDSSUHVHQWDUH QXPHUL QDWXUDOL FRPSUHVL IUD H RSSXUH QXPHUL LQWHUL FRPSUHVL IUD H
FONDAMENTI DI INFORMATICA
5DSSUHVHQWD]LLRQH ELLQDULLD 5DSSUHVHQWD] RQH E QDU D
,QGLUL]]DPHQWR
1RQ VHPSUH LO FDPSR RSHUDQGR GL XQD LVWUX]LRQH UDSSUHVHQWD OLQGLUL]]R GHO GDWR VX FXL RSHUDUH (VLVWRQR YDULH SRVVLELOLWDC LQGLUL]]DPHQWR LPPHGLDWR LQGLUL]]DPHQWR GLUHWWR LQGLUL]]DPHQWR LQGLUHWWR LQGLUL]]DPHQWR FRQ UHJLVWUR LQGLFH
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
,QGLUL]]DPHQWR GLUHWWR ,O FDPSR RSHUDQGR FRQWLHQH OLQGLUL]]R DVVROXWR GL XQD FHOOD GL PHPRULD LQ FXL HC PDQWHQXWR LO YDORUH GL XQ GDWR HC OD PRGDOLWDC YLVWD ILQR DG RUD 3HU LO UHFXSHUR GHOORSHUDQGR HC ULFKLHVWR XQ DFFHVVR DOOD PHPRULD 3XRC HVVHUH RQHURVR VH OD PHPRULD HC PROWR JUDQGH R VH HC QHFHVVDULR ULORFDUH LO SURJUDPPD HG L GDWL
op_code
,QGLLULL]]DPHQWR LLQGLLUHWWR ,QG U ]]DPHQWR QG UHWWR /LQGLUL]]R GHOORSHUDQGR HC FRQWHQXWR QHOOD SDUROD GL PHPRULD LQGLUL]]DWD GDO FDPSR RSHUDQGR + (C ULFKLHVWR XQ GRSSLR DFFHVVR DOOD PHPRULD SHU UHFXSHUDUH ORSHUDQGR + 6L SRVVRQR XVDUH SLXC ELW SHU UDSSUHVHQWDUH OLQGLUL]]R GHOORSHUDQGR
op_code
n
n m
q (<=m)
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
,QGLLULL]]DPHQWR PHGLLDQWH UHJLLVWUR LLQGLLFH ,QG U ]]DPHQWR PHG DQWH UHJ VWUR QG FH /LQGLUL]]R GHOORSHUDQGR VL RWWLHQH VRPPDQGR DOJHEULFDPHQWH LO FRQWHQXWR GHO FDPSR RSHUDQGR GHOOLVWUX]LRQH H TXHOOR GL XQ SDUWLFRODUH UHJLVWUR GHOOD &38 GHWWR UHJLVWUR LQGLFH + 5LFKLHGH XQ XQLFR DFFHVVR DOOD PHPRULD SHU UHFXSHUDUH ORSHUDQGR HG XQD RSHUD]LRQH GL VRPPD (C SDUWLFRODUPHQWH HIILFLHQWH VH VL GHYH DFFHGHUH DG XQ FHUWR QXPHUR GL RSHUDQGL PHPRUL]]DWL LQ FHOOH GL PHPRULD FRQVHFXWLYH DG HVHPSLR YHWWRUL LQ &
I
,O OLQJXDJJLR $66(0%/(5
( GLIILFLOH OHJJHUH H FDSLUH XQ SURJUDPPD VFULWWR LQ IRUPD ELQDULD
op_code
/LLQJXDJJLL DVVHPEOODWRULL $VVHPEOOHU / QJXDJJ DVVHPE DWRU $VVHPE HU /H LVWUX]LRQL FRUULVSRQGRQR XQLYRFDPHQWH D TXHOOH PDFFKLQD PD YHQJRQR HVSUHVVH WUDPLWH QRPL VLPEROLFL SDUROH FKLDYH , ULIHULPHQWL DOOH FHOOH GL PHPRULD VRQR IDWWL PHGLDQWH QRPL VLPEROLFL LGHQWLILFDWRUL ,GHQWLILFDWRUL FKH UDSSUHVHQWDQR GDWL FRVWDQWL R YDULDELOL RSSXUH LVWUX]LRQL HWLFKHWWH + ,O SURJUDPPD SULPD GL HVVHUH HVHJXLWR GHYH HVVHUH WUDGRWWR LQ OLQJXDJJLR PDFFKLQD DVVHPEODWRUH
FONDAMENTI DI INFORMATICA LINGUAGGI DI PROGRAMMAZIONE 220
FONDAMENTI DI INFORMATICA
(VHPSLLR SURJUDPPD $VVHPEOOHU (VHPS R SURJUDPPD $VVHPE HU READ X READ Y LOADA X LOADB Y MUL STOREA X WRITE X HALT X INT Y INT
(VHPSLLR (VHPS R 3URJUDPPD $VVHPEOHU FKH FDOFROD LO SURGRWWR FRPH VHTXHQ]D GL VRPPH <! ; ! 5($' ; 5($' < /2$'$ =(52 6725($= /2$'$ ; -803= ),1( /2$'% 812 ',) 6725($; /2$'$ < /2$'% = 680 6725($ = -803 7(67 :5,7( = +$/7 ,17 ,17 ,17
7(67
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
/LLQJXDJJLLR 0DFFKLLQD HG $VVHPEOOHU / QJXDJJ R 0DFFK QD HG $VVHPE HU QHFHVVLWDC GL FRQRVFHUH GHWWDJOLDWDPHQWH OH FDUDWWHULVWLFKH GHOOD PDFFKLQD UHJLVWUL GLPHQVLRQL GDWL VHW GL LVWUX]LRQL VHPSOLFL DOJRULWPL LPSOLFDQR OD VSHFLILFD GL PROWH LVWUX]LRQL /LLQJXDJJLL GLL $OOWR /LLYHOOOOR / QJXDJJ G $ WR / YH R ,O SURJUDPPDWRUH SXRC DVWUDUUH GDL GHWWDJOL OHJDWL DOODUFKLWHWWXUD HG HVSULPHUH L SURSUL DOJRULWPL LQ PRGR VLPEROLFR + 6RQR LQGLSHQGHQWL GDOOD PDFFKLQD DVWUD]LRQH (VHFX]LLRQH (VHFX] RQH 6RQR WUDGRWWL LQ VHTXHQ]H GL LVWUX]LRQL GL EDVVR OLYHOOR GLUHWWDPHQWH HVHJXLWH GDO SURFHVVRUH DWWUDYHUVR LQWHUSUHWD]LRQH DG HV %$6,& FRPSLOD]LRQH DG HV & )2575$1 3DVFDO
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
*UDPPDWLFKH
/D VLQWDVVL GL XQ OLQJXDJJLR SXRC HVVHUH GHVFULWWD LQ PRGR LQIRUPDOH DG HVHPSLR D SDUROH RSSXUH LQ PRGR IRUPDOH *UDPPDWLLFD IRUPDOOH *UDPPDW FD IRUPD H HC XQD QRWD]LRQH PDWHPDWLFD FKH FRQVHQWH GL HVSULPHUH LQ PRGR ULJRURVR OD VLQWDVVL GHL OLQJXDJJL GL SURJUDPPD]LRQH 'HI *UDPPDWLLFD %1) %DFNXV1DXU )RUP 'HI *UDPPDW FD %1) %DFNXV 1DXU )RUP 8QD JUDPPDWLFD %1) HC XQ LQVLHPH GL HOHPHQWL XQ DOIDEHWR WHUPLQDOH 9 XQ DOIDEHWR QRQ WHUPLQDOH 1 XQ LQVLHPH ILQLWR GL UHJROH SURGX]LRQL 3 GHO WLSR ; $ GRYH ; 1 HG $ HC XQD VHTXHQ]D GL VLPEROL a VWULQJKH a 1 9 XQ DVVLRPD R VLPEROR LQL]LDOH 6 (VHPSLLR (VHPS R QDWXUDOH! _ FLIUDQRQQXOOD! ^FLIUD!` FLIUDQRQQXOOD! _______ FLIUD! _FLIUDQRQQXOOD!
%1)
8QD %1) GHILQLVFH XQ OLQJXDJJLR VXOODOIDEHWR WHUPLQDOH PHGLDQWH XQ PHFFDQLVPR GL GHULYD]LRQH R ULVFULWWXUD 'HI 'HI 'DWD XQD JUDPPDWLFD * H GXH VWULQJKH b g HOHPHQWL GL 19
VL GLFH FKH g GHULYD GLUHWWDPHQWH GD b b g VH OH VWULQJKH VL SRVVRQR GHFRPSRUUH LQ b h$d g had HG HVLVWH OD SURGX]LRQH $ a 6L GLFH FKH g GHULYD GD b VH b=b0 b1 b2 ... bn = g 'HI 'HI 'DWD XQD JUDPPDWLFD * VL GLFH OLQJXDJJLR JHQHUDWR GD * /* OLQVLHPH GHOOH IUDVL GL 9 GHULYDELOL DSSOLFDQGR OH SURGX]LRQL D SDUWLUH GDO VLPEROR LQL]LDOH 6 /H IUDVL GL XQ OLQJXDJJLR GL SURJUDPPD]LRQH YHQJRQR GHWWH SURJUDPPL GL WDOH OLQJXDJJLR
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
,Q XQD JUDPPDWLFD %1) SRVVRQR HVLVWHUH SLXC UHJROH FRQ OD VWHVVD SDUWH VLQLVWUD ; $ ; $ ; $1 (TXLYDOH D VFULYHUH ; $_$__$1 VRQR WXWWH DOWHUQDWLYH
%1) HVHPSL
9 ^LO JDWWR WRSR VDVVR PDQJLD EHYH` 1 ^ IUDVH! VRJJHWWR! YHUER! FRPSORJJHWWR! DUWLFROR! QRPH!` 6 IUDVH! 3 SURGX]LRQL IUDVH! VRJJHWWR!YHUER!FRPSORJJHWWR! VRJJHWWR! DUWLFROR!QRPH! DUWLFROR! LO QRPH! JDWWR_WRSR_VDVVR_ YHUER! PDQJLD _ EHYH FRPSORJJHWWR! DUWLFROR!QRPH! $OEHUR VLQWDWWLFR HVSULPH LO SURFHVVR GL GHULYD]LRQH GL XQD IUDVH PHGLDQWH XQD JUDPPDWLFD LO JDWWR PDQJLD LO WRSR
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
$ SDUWLUH GDOOR VFRSR GHOOD JUDPPDWLFD VL ULVFULYH VHPSUH LO QRQWHUPLQDOH SLXC D VLQLVWUD IUDVH! ! VRJJHWWR!YHUER!FRPSORJJHWWR! ! DUWLFROR!QRPH!YHUER!FRPSORJJHWWR! ! LO QRPH!YHUER!FRPSORJJHWWR! ! LO JDWWR YHUER!FRPSORJJHWWR! ! LO JDWWR PDQJLD FRPSORJJHWWR! ! LO JDWWR PDQJLD DUWLFROR!QRPH! ! LO JDWWR PDQJLD LO QRPH! ! LO JDWWR PDQJLD LO WRSR
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
(%1) HVHPSLR 9 ^` 1 ^QDWXUDOH!FLIUD! FLIUDQRQQXOOD!` 6 QDWXUDOH! 3 HC FRVWLWXLWR GDOOH SURGX]LRQL QDWXUDOH! FLIUD!_FLIUDQRQQXOOD! ^FLIUD!` FLIUD! _ FLIUDQRQQXOOD! FLIUDQRQQXOOD! ________
3HU UDJJUXSSDUH FDWHJRULH VLQWDWWLFKH ; D _ E ' _ F HTXLYDOH D ; D ' _ E ' _ F
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
(%1) HVHPSL
1XPHUL LQWHUL GL OXQJKH]]D TXDOVLDVL FRQ R VHQ]D VHJQR QRQ VL SHUPHWWRQR QXPHUL FRQ SLXC GL XQD FLIUD VH TXHOOD SLXC D VLQLVWUD HC HV
(VHPSLLR (VHPS R $OEHUR VLQWDWWLFR SHU OD JHQHUD]LRQH GHO QXPHUR XVDQGR OD JUDPPDWLFD (%1)
9 ^`8^` 1 ^LQWHUR! LQWHURVHQ]DVHJQR! FLIUD! FLIUDQRQQXOOD!` 6 3 LQWHUR! >_@ LQWHURVHQ]DVHJQR! LQWHURVHQ]DVHJQR! _ FLIUDQRQQXOOD! ^FLIUD!` FLIUD! FLIUDQRQQXOOD!_ FLIUDQRQQXOOD! ________ ,GHQWLILFDWRUH LGHQWLILFDWRUH! OHWWHUD! ^ OHWWHUD! _ FLIUD!` OHWWHUD! $ _ % _ _ = FLIUD! _________ LQWHUR!
<cifra> <cifra>
4 <cifra-non-nulla>
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
<intero>::= + <intero-senza-segno>::=
<intero-senza-segno>
<cifra-non-nulla> <cifra>
<identificatore>::=
VHPDQWLFD RSHUD]LRQDOH D]LRQL VHPDQWLFD GHQRWD]LRQDOH IXQ]LRQL PDWHPDWLFKH VHPDQWLFD DVVLRPDWLFD IRUPXOH ORJLFKH %HQHILFL SHU LO SURJUDPPDWRUH FRPSUHQVLRQH GHL FRVWUXWWL SURYH IRUPDOL GL FRUUHWWH]]D OLPSOHPHQWDWRUH FRVWUX]LRQH GHO WUDGXWWRUH FRUUHWWR SURJHWWLVWD GL OLQJXDJJL VWUXPHQWL IRUPDOL GL SURJHWWR
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
,O
8Q SURJUDPPD HC OD UDSSUHVHQWD]LRQH GL XQ DOJRULWPR LQ XQ SDUWLFRODUH OLQJXDJJLR GL SURJUDPPD]LRQH /D SURJUDPPD]LRQH HC EDVDWD VXO FRQFHWWR GL DVWUD]LRQH /
DVWUD]LRQH HC LO SURFHVVR FRQ FXL VL GHVFULYH XQ IHQRPHQR DWWUDYHUVR XQ VRWWRLQVLHPH GHOOH VXH SURSULHWDC + 2JQL SURJUDPPD HC XQD DVWUD]LRQH GHOOD SUREOHPD GD ULVROYHUH VL FRVWUXLVFH XQ PRGHOOR DVWUDWWR GHO SUREOHPD FRQFHQWUDQGRVL VROWDQWR VXOOH SURSULHWDC LPSRUWDQWL DL ILQL GHOOD ULVROX]LRQH H WUDVFXUDQGR HYHQWXDOL DOWUH FDUDWWHULVWLFKH FRQVLGHUDWH LUULOHYDQWL
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
,O OLQJXDJJLR &
3URJHWWDWR QHO GD ' 0 5LWFKLH SUHVVR L ODERUDWRUL $7 7 %HOO SHU SRWHU ULVFULYHUH LQ XQ OLQJXDJJLR GL DOWR OLYHOOR LO FRGLFH GHO VLVWHPD RSHUDWLYR 81,; 'HILQL]LRQH IRUPDOH QHO %: .HUQLJKDP H ' 0 5LWFKLH 1HO HC VWDWR GHILQLWR XQR VWDQGDUG $16, & GD SDUWH GHOO
$PHULFDQ 1DWLRQDO 6WDQGDUGV ,QVWLWXWH &DUDWWHULLVWLLFKH SULLQFLLSDOOLL &DUDWWHU VW FKH SU QF SD (OHYDWR SRWHUH HVSUHVVLYR 7LSL GL GDWR SULPLWLYL H WLSL GL GDWR GHILQLELOL GDOOXWHQWH 6WUXWWXUH GL FRQWUROOR SURJUDPPD]LRQH VWUXWWXUDWD IXQ]LRQL H SURFHGXUH &DUDWWHULVWLFKH GL EDVVR OLYHOOR JHVWLRQH GHOOH PHPRULD DFFHVVR DOOD UDSSUHVHQWD]LRQH 6WLOH GL SURJUDPPD]LRQH FKH LQFRUDJJLD OR VYLOXSSR GL SURJUDPPL SHU SDVVL GL UDIILQDPHQWR VXFFHVVLYL VYLOXSSR WRSGRZQ 6LQWDVVL GHILQLWD IRUPDOPHQWH
/H SDUROH FKLDYH VRQR SDUROH ULVHUYDWH FLRHC QRQ SRVVRQR HVVHUH XWLOL]]DWH FRPH LGHQWLILFDWRUL DG HVHPSLR GL YDULDELOL
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
&RPPHQWLL &RPPHQW 6RQR VHTXHQ]H GL FDUDWWHUL LJQRUDWH GDO FRPSLODWRUH 9DQQR UDFFKLXVH WUD /* questo e un commento dellautore */ , FRPPHQWL YHQJRQR JHQHUDOPHQWH XVDWL SHU LQWURGXUUH QRWH HVSOLFDWLYH QHO FRGLFH GL XQ SURJUDPPD
&RVWDQWL
1XPHULL LLQWHULL 1XPHU QWHU 5DSSUHVHQWDQR QXPHUL UHODWLYL TXLQGL FRQ VHJQR E\WH EDVH GHFLPDOH EDVH RWWDOH EDVH HVDGHFLPDOH [)) 1XPHULL UHDOOLL 1XPHU UHD 9DULH QRWD]LRQL 6XIILVVL ( O / X 8 I ) RWWWWDOOH R D H ( LQWHULORQJ XQVLJQHG UHDOL IORDWLQJ [ 2;HVDGHFLLPDOOH [ 2;HVDGHF PD H E\WH / [
3UHILLVVLL 3UHI VV
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
&DUDWWHULL &DUDWWHU ,QVLHPH GHL FDUDWWHUL GLVSRQLELOL HC GLSHQGHQWH GDOOD LPSOHPHQWD]LRQH ,Q JHQHUH $6&,, HVWHVR FDUDWWHUL 6L LQGLFDQR WUD VLQJROL DSLFL
D
&DUDWWHULL VSHFLLDOOLL &DUDWWHU VSHF D QHZOLQH WDE EDFNVSDFH IRUP IHHG FDUULDJH UHWXUQ FRGLILFD RWWDOH ?Q ?W ?E ?I ?U ?222 2 FLIUD RWWDOH ? q OD FRGLILFD GHO FDUDWWHUH
$
6WULLQJKH 6WU QJKH 6RQR VHTXHQ]H GL FDUDWWHUL WUD GRSSL DSLFL D DDD
VWULQJD QXOOD
(VHPSLLR SULLQWI HC OOLLVWUX]LLRQH SHU OOD VWDPSD (VHPS R SU QWI HC VWUX] RQH SHU D VWDPSD printf("Prima riga\nSeconda riga\n"); printf("\\\"/"); (IIHWWR RWWHQXWR (IIHWWR RWWHQXWR Prima riga Seconda riga \"/
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
,GHQWLILFDWRUL
8Q LGHQWLILFDWRUH HC XQ QRPH FKH GHQRWD XQ RJJHWWR XVDWR QHO SURJUDPPD DG HVHPSLR YDULDELOL FRVWDQWL WLSL SURFHGXUH H IXQ]LRQL 'HYH LQL]LDUH FRQ XQD OHWWHUD R FRQ LO FDUDWWHUH B DOOD TXDOH SRVVRQR VHJXLUH OHWWHUH H FLIUH LQ QXPHUR TXDOXQTXH LGHQWLILFDWRUH! OHWWHUD!^OHWWHUD!_FLIUD!` GLVWLQ]LRQH WUD PDLXVFROH H PLQXVFROH OLQJXDJJLR FDVH VHQVLWLYH $G (VHPSLLR $G (VHPS R 6RQR LGHQWLILFDWRUL YDOLGL $OID EHWD *DPPD *DPPD 1RQ VRQR LGHQWLILFDWRUL YDOLGL ; LQW 5HJROOD *HQHUDOOH 5HJR D *HQHUD H + SULPD GL HVVHUH XVDWR XQ LGHQWLILFDWRUH GHYH HVVHUH JLDC VWDWR GHILQLWR LQ XQD SDUWH GL WHVWR SUHFHGHQWH
+ LO PDLQ! HC FRVWLWXLWR GD GXH SDUWL 8QD SDUWH GL GLFKLDUD]LRQL YDULDELOL WLSL FRVWDQWL HWLFKHWWH HWF LQ FXL YHQJRQR GHVFULWWL H GHILQLWL JOL RJJHWWL FKH YHQJRQR XWLOL]]DWL GDO PDLQ 8QD SDUWH LVWUX]LRQL FKH GHVFULYH ODOJRULWPR ULVROXWLYR XWLOL]]DWR PHGLDQWH LVWUX]LRQL GHO OLQJXDJJLR )RUPDOOPHQWH )RUPD PHQWH LO PDLQ HC XQD IXQ]LRQH FKH QRQ UHVWLWXLVFH DOFXQ YDORUH
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
(VHPSLLR (VHPS R /*programma che, letti due numeri terminale, ne stampa la somma*/ #include <stdio.h> main() { int X,Y; /* p. dichiarativa */ a
9DULDELOL
8QD YDULDELOH UDSSUHVHQWD XQ GDWR FKH SXRC FDPELDUH LO SURSULR YDORUH GXUDQWH OHVHFX]LRQH GHO SURJUDPPD ,Q JHQHUDOOH ,Q JHQHUD H ,Q RJQL OLQJXDJJLR GL DOWR OLYHOOR XQD YDULDELOH HC FDUDWWHUL]]DWD GD XQ QRPH LGHQWLILFDWRUH H TXDWWUR DWWULEXWL EDVH FDPSR GD]LRQH VFRSH HC OLQVLHPH GL LVWUX]LRQL GHO SURJUDPPD LQ FXL OD YDULDELOH HC QRWD SXRC HVVHUH PDQLSRODWD & 3DVFDO GHWHUPLQDELOH VWDWLFDPHQWH /,63 GLQDPLFDPHQWH WHPSR GL YLWD R GXUDWD R HVWHQVLRQH HC OLQWHUYDOOR GL WHPSR LQ FXL XQDUHD GL PHPRULD HC OHJDWD DOOD YDULDELOH )RU75$1 DOORFD]LRQH VWDWLFD & 3DVFDO DOORFD]LRQH GLQDPLFD YDORUH HC UDSSUHVHQWDWR VHFRQGR OD FRGLILFD DGRWWDWD QHOODUHD GL PHPRULD OHJDWD DOOD YDULDELOH WLSR GHILQLVFH O
LQVLHPH GHL YDORUL FKH OD YDULDELOH SXRC DVVXPHUH H GHJOL RSHUDWRUL DSSOLFDELOL
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
9DULDELOL LQ &
2JQL YDULDELOH SHU SRWHU HVVHUH XWLOL]]DWD GDOOH LVWUX]LRQL GHO SURJUDPPD GHYH HVVHUH SUHYHQWLYDPHQWH GHILQLWD 'HILLQLL]LLRQH GLL 9DULLDELLOOLL 'HI Q ] RQH G 9DU DE /D GHILQL]LRQH GL YDULDELOH DVVRFLD DG XQ LGHQWLILFDWRUH QRPH GHOOD YDULDELOH XQ WLSR
GHIYDULDELOL! LGHQWLILFDWRUHWLSR! LGHQWLILFDWRUHYDULDELOH! ^ LGHQWLILFDWRUHYDULDELOH! `
(IIHWWR GHOOOOD GHILLQLL]LLRQH GLL YDULLDELLOOH (IIHWWR GH D GHI Q ] RQH G YDU DE H + /D GHILQL]LRQH GL XQD YDULDELOH SURYRFD FRPH HIIHWWR O
DOORFD]LRQH LQ PHPRULD GHOOD YDULDELOH VSHFLILFDWD DOORFD]LRQH DXWRPDWLFD + 2JQL LVWUX]LRQH VXFFHVVLYD DOOD GHILQL]LRQH GL XQD YDULDELOH $ SRWUDC XWLOL]]DUH $
9DULDELOL $ % 680 LQWHUH 9DULDE URRW 5RRW UHDOL LQWHUH 9DULDELOH & FDUDWWHUH
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
,VWUX]LRQH GL $VVHJQDPHQWR
,O FRQFHWWR GL YDULDELOH QHO OLQJXDJJLR & UDSSUHVHQWD XQDVWUD]LRQH GHOOD FHOOD GL PHPRULD /
LVWUX]LRQH GL DVVHJQDPHQWR TXLQGL HC O
DVWUD]LRQH GHOO
RSHUD]LRQH GL VFULWWXUD QHOOD FHOOD FKH OD YDULDELOH UDSSUHVHQWD $VVHJQDPHQWR $VVHJQDPHQWR LGHQWLILFDWRUHYDULDELOH! (VHPSLL (VHPS main() { int a; /* definizione di a */ ... a=100; /*assegnamento ad a del valore 100 */ } #include <stdio.h> main() { float X, Y; scanf("%f",&X); /* lettura */ /* assegnamento del risultato espr. aritmetica: */ Y = 2*3.14*X; printf("%f",Y); /* stampa */ } di una HVSUHVVLRQH!
&RVWDQWL
8QD FRVWDQWH UDSSUHVHQWD XQ GDWR FKH QRQ SXRC FDPELDUH GL YDORUH QHO FRUVR GHOOHVHFX]LRQH /D GLFKLDUD]LRQH GL XQD FRVWDQWH DVVRFLD DG XQ LGHQWLILFDWRUH QRPH GHOOD FRVWDQWH XQ YDORUH HVSUHVVR HYHQWXDOPHQWH PHGLDQWH DOWUD FRVWDQWH
GLFKFRVWDQWH! FRQVW WLSR! LGHQWLILFDWRUHFRVWDQWH! FRVWDQWH! FRVWDQWH! _ LGHQWLILFDWRUHFRVWDQWH! _ _QXPHURVHQ]DVHJQR! _ DOWUHFRVWDQWL!
SLJUHFR
+ $QFKH LQ TXHVWR FDVR SULPD GL HVVHUH XVDWR XQ LGHQWLILFDWRUH GHYH HVVHUH JLDC VWDWR GHILQLWR DG HV e SHU GHILQLUH menoe 9DQWDJJLL GHULLYDQWLL GDOOOOXVR GLL FRVWDQWLL 9DQWDJJ GHU YDQW GD XVR G FRVWDQW /HJJLELOLWDC H PRGLILFDELOLWDC GHL SURJUDPPL
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
(VHPSLLR (VHPS R #include <stdio.h> main() { /* programma che, letto un numero a terminale stampa il valore della circonferenza del cerchio con quel raggio */ const float pigreco = 3.1415926; float X, Y; scanf("%f",&X); /*legge X */ Y = 2*pigreco*X; printf("%f",Y); /* stampa Y */ }
7LSR GL GDWR
8Q WLSR GL GDWR 7 HC GHILQLWR FRPH 8Q LQVLHPH GL YDORUL ' GRPLQLR 8Q LQVLHPH GL IXQ]LRQL RSHUD]LRQL IIQ GHILQLWH VXO GRPLQLR ' ,Q SUDWLLFD ,Q SUDW FD 8Q WLSR 7 HC GHILQLWR GDOOLQVLHPH GL YDORUL FKH OH YDULDELOL GL WLSR 7 SRVVRQR DVVXPHUH GDOOLQVLHPH GL RSHUD]LRQL FKH SRVVRQR HVVHUH DSSOLFDWH DG RSHUDQGL GHO WLSR 7 (VHPSLLR (VHPS R &RQVLGHULDPR L QXPHUL QDWXUDOL 7LSRBQDWXUDOL 1 HC LO GRPLQLR ^
! HWF ` HC OLQVLHPH GL RSHUD]LRQL >1 ^
! HWF `@
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
,O FRQFHWWR GL 7LSR
8Q OLQJXDJJLR GL SURJUDPPPD]LRQH HC WLSDWR VH SUHYHGH FRVWUXWWL VSHFLILFL SHU DWWULEXLUH WLSL DL GDWL XWLOL]]DWL QHL SURJUDPPL 6H XQ OOLLQJXDJJLLR HC WLLSDWR 6H XQ QJXDJJ R HC W SDWR + 2JQL GDWR YDULDELOH R FRVWDQWH GHO SURJUDPPD GHYH DSSDUWHQHUH DG XQR HG XQ VROR WLSR + 2JQL RSHUDWRUH ULFKLHGH RSHUDQGL GL WLSR VSHFLILFR H SURGXFH ULVXOWDWL GL WLSR VSHFLILFR 9DQWDJJLL 9DQWDJJ + $VWUD]LRQH/XWHQWH HVSULPH H PDQLSROD L GDWL DG XQ OLYHOOR GL DVWUD]LRQH SLXC DOWR GHOOD ORUR RUJDQL]]D]LRQH ILVLFD 0DJJLRU SRUWDELOLWDC + 3URWH]LRQH ,O OLQJXDJJLR SURWHJJH OXWHQWH GD FRPELQD]LRQL HUUDWH GL GDWL HG RSHUDWRUL FRQWUROOR VWDWLFR VXOOXVR GL YDULDELOL HWF LQ IDVH GL FRPSLOD]LRQH + 3RUWDELOLWDC OLQGLSHQGHQ]D GDOODUFKLWHWWXUD UHQGH SRVVLELOH OD FRPSLOD]LRQH GHOOR VWHVVR SURJUDPPD VX PDFFKLQH SURIRQGDPHQWH GLYHUVH
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
7LSL SULPLWLYL
,O & SUHYHGH TXDWWUR WLSL SULPLWLYL
WLSL GL GDWR
FKDU FDUDWWHUL LQW LQWHUL IORDW UHDOL GRXEOH UHDOL LQ GRSSLD SUHFLVLRQH
VFDODUL
strutturati
+ (C SRVVLELOH DSSOLFDUH DL WLSL SULPLWLYL GHL TXDQWLILFDWRUL H GHL TXDOLILFDWRUL 4XDQWLLILLFDWRULL 4XDQW I FDWRU
GHILQLWL GDOO
XWHQWH
GHILQLWL GDOO
XWHQWH HQXP
SXQWDWRUL
, TXDQWLILFDWRUL ORQJ H VKRUW LQIOXLVFRQR VXOOR VSD]LR LQ PHPRULD ULFKLHVWR SHU ODOORFD]LRQH GHO GDWR VKRUW DSSOLFDELOH DO WLSR LQW ORQJ DSSOLFDELOH DL WLSL LQW H GRXEOH (VHPSLR int X; /* se X e su 16 bit..*/ long int Y;/*..Y e su 32 bit */ 4XDOOLLILLFDWRULL 4XD I FDWRU , TXDOLILFDWRUL FRQGL]LRQDQR LO GRPLQLR GHL GDWL VLJQHG DSSOLFDELOH DL WLSR LQW H FKDU XQVLJQHG DSSOLFDELOH DL WLSR LQW H FKDU int A; /*A in[-2e15,2e15-1] */ unsigned int B; /*B in[0,2e16-1]*/
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
,O WLSR int
'RPLLQLLR 'RP Q R ,O GRPLQLR DVVRFLDWR DO WLSR LQW UDSSUHVHQWD OLQVLHPH GHL QXPHUL LQWHUL FLRHC = LQVLHPH GHL QXPHUL UHODWLYL RJQL YDULDELOH GL WLSR LQW HC TXLQGL O
DVWUD]LRQH GL XQ LQWHUR (VHPSLR GHILQL]LRQH GL XQD YDULDELOH LQWHUD int A; /* A e un dato intero */ + 3RLFKHC VL KD VHPSUH D GLVSRVL]LRQH XQ QXPHUR ILQLWR GL ELW SHU OD UDSSUHVHQWD]LRQH GHL QXPHUL LQWHUL LO GRPLQLR UDSSUHVHQWDELOH HC GL HVWHQVLRQH ILQLWD $G HVHPSLLR $G HVHPS R VH LO QXPHUR Q GL ELW D GLVSRVL]LRQH SHU OD UDSSUHVHQWD]LRQH GL XQ LQWHUR HC DOORUD LO GRPLQLR UDSSUHVHQWDELOH HC FRPSRVWR GL Q YDORUL
8VR GHLL TXDQWLLILLFDWRULL VKRUWOORQJ 8VR GH TXDQW I FDWRU VKRUW RQJ $XPHQWDQRGLPLQXLVFRQR LO QXPHUR GL ELW D GLVSRVL]LRQH SHU OD UDSSUHVHQWD]LRQH GL XQ LQWHUR
VSD]LRVKRUW LQW VSD]LRLQW VSD]LRORQJ LQW
8VR GHLL TXDOOLLILLFDWRULL 8VR GH TXD I FDWRU VLJQHG YLHQH XVDWR XQ ELW SHU UDSSUHVHQWDUH LO VHJQR 4XLQGL OLQWHUYDOOR UDSSUHVHQWDELOH HC >Q Q@ XQVLJQHG YHQJRQR UDSSUHVHQWDWL YDORUL D SULRUL SRVLWLYL ,QWHUYDOOR UDSSUHVHQWDELOH > Q @ > Q @
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
,O WLSR LQW
2SHUDWRULL 2SHUDWRU $O WLSR LQW H WLSL RWWHQXWL GD TXHVWR PHGLDQWH TXDOLILFD]LRQHTXDQWLILFD]LRQH VRQR DSSOLFDELOL L VHJXHQWL RSHUDWRUL 2SHUDWRULL DULLWPHWLLFLL 2SHUDWRU DU WPHW F IRUQLVFRQR ULVXOWDWR LQWHUR
VRPPD VRWWUD]LRQH GLYLVLRQH LQWHUD SURGRWWR
2SHUDWRULL UHOOD]LLRQDOOLL 2SHUDWRU UH D] RQD VL DSSOLFDQR DG RSHUDQGL LQWHUL H SURGXFRQR ULVXOWDWL ERROHDQL FLRHC LO FXL YDORUH SXRC DVVXPHUH VROWDQWR XQR GHL GXH YDORUL ^YHUR IDOVR` XJXDJOLDQ]D GLVXJXDJOLDQ]D ! ! IDOVR YHUR PLQRUH PDJJLRUH PLQRUH R XJXDOH PDJJLRUH R XJXDOH ! YHUR
RSHUDWRUH PRGXOR UHVWR GHOOD GLYLVLRQH LQWHUD LQFUHPHQWR H GHFUHPHQWR ULFKLHGRQR XQ VROR RSHUDQGR XQD YDULDELOH H SRVVRQR HVVHUH SRVWILVVL D R SUHILVVL D Y HVSUHVVLRQL
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
%RROHDQL
6RQR GDWL LO FXL GRPLQLR HC GL GXH VROL YDORUL YDORUL ORJLFL ^YHUR IDOVR` + LQ & QRQ HVLVWH XQ WLSR SULPLWLYR SHU UDSSUHVHQWDUH GDWL ERROHDQL &RPH YHQJRQR UDSSUHVHQWDWLL LL ULLVXOOWDWLL GLL HVSUHVVLLRQLL &RPH YHQJRQR UDSSUHVHQWDW U VX WDW G HVSUHVV RQ UHOOD]LLRQDOOLL " UH D] RQD " ,O & SUHYHGH FKH L YDORUL ORJLFL UHVWLWXLWL GD HVSUHVVLRQL UHOD]LRQDOL YHQJDQR UDSSUHVHQWDWL DWWUDYHUVR JOL LQWHUL ^` VHFRQGR OD FRQYHQ]LRQH HTXLYDOH D IDOVR HTXLYDOH D YHUR $G HVHPSLLR $G HVHPS R O
HVSUHVVLRQH $ % UHVWLWXLVFH
2SHUDWRULL OORJLLFLL 2SHUDWRU RJ F VL DSSOLFDQR DG RSHUDQGL GL WLSR LQW H SURGXFRQR ULVXOWDWL ERROHDQL FLRHC LQWHUL DSSDUWHQHQWL DOO
LQVLHPH ^` LO YDORUH FRUULVSRQGH D IDOVR LO YDORUH FRUULVSRQGH D YHUR ,Q SDUWLFRODUH OLQVLHPH GHJOL RSHUDWRUL ORJLFL HC RSHUDWRUH $1' ORJLFR __ RSHUDWRUH 25 ORJLFR RSHUDWRUH GL QHJD]LRQH 127 'HILLQLL]LLRQH GHJOOLL RSHUDWRULL OORJLLFLL 'HI Q ] RQH GHJ RSHUDWRU RJ F D IDOVR IDOVR YHUR YHUR E IDOVR YHUR IDOVR YHUR D E IDOVR IDOVR IDOVR YHUR D__E IDOVR YHUR YHUR YHUR D YHUR YHUR IDOVR IDOVR
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
2SHUDWRULL /RJLLFLL LLQ & 2SHUDWRU /RJ F Q & ,Q & JOOLL RSHUDQGLL GLL RSHUDWRULL OORJLLFLL VRQR GLL WLLSR LLQW ,Q & J RSHUDQG G RSHUDWRU RJ F VRQR G W SR QW VH LO YDORUH GL XQ RSHUDQGR HC GLYHUVR GD ]HUR YLHQH LQWHUSUHWDWR FRPH YHUR VH LO YDORUH GL XQ RSHUDQGR HC XJXDOH D ]HUR YLHQH LQWHUSUHWDWR FRPH IDOVR 'HILLQLL]LLRQH GHJOOLL RSHUDWRULL OORJLLFLL LLQ & 'HI Q ] RQH GHJ RSHUDWRU RJ F Q & D E D E D__E D
(VHPSLL VXJOOLL RSHUDWRULL WUD LLQWHULL (VHPS VXJ RSHUDWRU WUD QWHU ! __ __
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
7LSL IORDWGRXEOH
2SHUDWRULL 2SHUDWRU 2SHUDWRULL DULLWPHWLLFLL 2SHUDWRU DU WPHW F
VL DSSOLFDQR D RSHUDQGL SURGXFRQR ULVXOWDWL UHDOL UHDOL H
2SHUDWRULL UHOOD]LLRQDOOLL 2SHUDWRU UH D] RQD KDQQR OR VWHVVR VLJQLILFDWR YLVWR QHO FDVR GHJOL LQWHUL XJXDOH GLYHUVR ! ! 2YHUOORDGLLQJ 2YHU RDG QJ ,O & FRPH 3DVFDO )RUWUDQ H PROWL DOWUL OLQJXDJJL RSHUD]LRQL SULPLWLYH DVVRFLDWH D WLSL GLYHUVL SRVVRQR HVVHUH GHQRWDWH FRQ OR VWHVVR VLPEROR DG HVHPSLR OH RSHUD]LRQL DULWPHWLFKH VX UHDOL RG LQWHUL PLQRUH PDJJLRUH HWF
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
,O WLSR FKDU
&DUDWWHUH &DUDWWHUH RJQL VLPEROR JUDILFR UDSSUHVHQWDELOH DOO
LQWHUQR GHO VLVWHPD $G HVHPSLR OH OHWWHUH GHOO
DOIDEHWR PDLXVFROH PLQXVFROH OH FLIUH GHFLPDOL
L VHJQL GL SXQWHJJLDWXUD
HWF DOWUL VLPEROL GL YDULR WLSR
#
HWF L FDUDWWHUL GL FRQWUROOR EHOO OI II HWF 'RPLLQLLR GHOO WLLSR FKDU 'RP Q R GH W SR FKDU ; <HSVLORQ (C OLQVLHPH GHL FDUDWWHUL GLVSRQLELOL VXO VLVWHPD GL HODERUD]LRQH VHW GL FDUDWWHUL 7DEHOOOOD GHLL &RGLLFLL 7DEH D GH &RG F 'L VROLWR VL ID ULIHULPHQWR DG XQD WDEHOOD GHL FRGLFL DG HVHPSLR $6&,, ,Q RJQL WDEHOOD GHL FRGLFL DG RJQL FDUDWWHUH YLHQH DVVRFLDWR XQ LQWHUR FKH OR LGHQWLILFD XQLYRFDPHQWH LO FRGLFH ,O GRPLQLR DVVRFLDWR DO WLSR FKDU HC RUGLQDWR ORUGLQH GLSHQGH GDO FRGLFH DVVRFLDWR DL YDUL FDUDWWHUL
+ $ FDXVD GHOOD UDSSUHVHQWD]LRQH ILQLWD FL SRVVRQR HVVHUH HUURUL GL FRQYHUVLRQH $G HVHPSLR L WHVW GL XJXDJOLDQ]D WUD YDORUL UHDOL LQ WHRULD XJXDOL SRWUHEEHUR QRQ HVVHUH YHULILFDWL [ \ \ [
0HJOLR XWLOL]]DUH XQ PDUJLQH DFFHWWDELOH GL HUURUH ; < ; <HSVLORQ GRYH DG HVHPSLR FRQVW IORDW HSVLORQ
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
7DEHOOOOD $6&,, 7DEH D $6&,, 'L VROLWR YHQJRQR XVDWL ELW ! YDORUL SRVVLELOL
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _18/ __ _62+ __ _67; __ _ (7;__ _ (27__ _ (14__ _$&. __ _ %(/__ _ %6 __ _ +7 __ _ /) __ _ 97 __ _ )) __ _ &5 __ _ 62 __ _ 6, __ _ '/(__ _ '&__ _ '&__ _ '&__ _ '&__ _ 1$N__ _ 6<1__ _ (7%__ _ &DQ __ _ (0 __ _ 68%__ _ (6&__ _ )6 __ _ *6 __ _ 56 __ _ 86 __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _
__ _ __ _ __ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _! _" _# _$ _% _& _' _( _) _* _+ _, __. _/ _0 _1 _2 _3 _4 _5 _6 __ _ 7 __ _ 8 __ _ 9 __ _ : __ _ ; __ _ < __ _ = __ _ > __ _ ? __ _ @ __ _ A __ _ B __ _ C __ _ D __ _ E __ _ F __ _ G __ _ H __ _ I __ _ J __ _ K __ _ L __ _ M __ _ N __ _ O __ _ P __ _ Q __ _ R __ _ S __ _ T __ _ U __ _ V __ _ W __ _ X __ _ Y __ _ Z __ _ [ __ _ \ __ _ ] __ _ ^ __ _ _ __ _ ` __ _ a __ _ __ _ b __ _ c __ _ d __ _ e __ _ f __ _ g __ _ h __ _ i __ _ j __ _ k __ _ l __ _ m __ _ n __ _ o __ _ p __ _ q __ _ r __ _ s __ _ t __ _ u __ _ v __ _ w __ _ x __ _ y __ _ z __ _ { __ _ | __ _ } __ _ ~ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
,O WLSR FKDU
,O GRPLQLR DVVRFLDWR DO WLSR FKDU HC RUGLQDWR ORUGLQH GLSHQGH GDO FRGLFH DVVRFLDWR DL YDUL FDUDWWHUL QHOOD WDEHOOD GL ULIHULPHQWR 'HILLQLL]LLRQH GLL YDULLDELLOOLL GLL WLLSR FKDU HVHPSLLR 'HI Q ] RQH G YDU DE G W SR FKDU HVHPS R char C1, C2; &RVWDQWLL GLL WLLSR FKDU &RVWDQW G W SR FKDU 2JQL YDORUH GL WLSR FKDU YLHQH VSHFLILFDWR WUD VLQJROL DSLFL $G HVHPSLLR $G HVHPS R D E $ 5DSSUHVHQWD]LLRQH GHLL FDUDWWHULL LLQ & 5DSSUHVHQWD] RQH GH FDUDWWHU Q & ,O OLQJXDJJLR & UDSSUHVHQWD L GDWL GL WLSR FKDU FRPH GHJOL LQWHUL RJQL FDUDWWHUH YLHQH UDSSUHVHQWDWR GDO VXR FRGLFH FLRHC OLQWHUR FKH OR LQGLFD QHOOD WDEHOOD $6&,,
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
(VHPSLL (VHPS
$
&
LQIDWWL HC YHUR
&
FRGLFH FRGLFH
$
D
FRGLFH$ HC GLYHUVR GD ]HUR
$
2SHUDWRULL UHOOD]LLRQDOOLL 2SHUDWRU UH D] RQD
! !
8VR GHL TXDOLILFDWRUL HC SRVVLELOH FRPH SHU JOL LQWHUL DSSOLFDUH L TXDOLILFDWRUL VLJQHG XQVLJQHG D YDULDELOL GL WLSR FKDU signed char C; unsigned char K;
$G HVHPSLLR $G HVHPS R FKDU [\ [ \ VH H VROR VH FRGLFH[ FRGLFH\ D!E IDOVR SHUFKHC FRGLFHD FRGLFHE
2SHUDWRULL DULLWPHWLLFLL 2SHUDWRU DU WPHW F VRQR JOL VWHVVL YLVWL SHU JOL LQWHUL 2SHUDWRULL OORJLLFLL 2SHUDWRU RJ F VRQR JOL VWHVVL YLVWL SHU JOL LQWHUL
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
$OORUD SXRC HVVHUH XWLOL]]DWR DQFKH FRPH 2S ' ' ' 2S ' ' '
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
$G HVHPSLR
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
,SRWHVL SDVVR
&RQYHUVLLRQH HVSOOLLFLLWD &RQYHUV RQH HVS F WD ,Q & VL SXRC IRU]DUH OD FRQYHUVLRQH GL XQ GDWR LQ XQ WLSR VSHFLILFDWR PHGLDQWH ORSHUDWRUH GL FDVW LO GDWR! YLHQH FRQYHUWLWR HVSOLFLWDPHQWH QHO QXRYR WLSR! int A, B; float C; C=A/(float)B; YLHQH HVHJXLWD OD GLYLVLRQH WUD UHDOL
QXRYR WLSR! GDWR!
(VHPSLR HVSUHVVLRQH FRPSRVWD int x; char y; double r; (x+y) / r (C QHFHVVDULR FRQRVFHUH + 3ULRULWDC GHJOL RSHUDWRUL GHILQLWD GDOOR VWDQGDUG + 2UGLQH GL YDOXWD]LRQH GHJOL RSHUDQGL OR VWDQGDUG QRQ OR LQGLFD
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
7LLSLL QRQ HQXPHUDELLOOLL )OORDWWLLQJ 7\SHV 7 S QRQ HQXPHUDE ) RD QJ 7\SHV &RQFHWWXDOPHQWH LO GRPLQLR 5 HC XQ LQVLHPH GHQVR GDWL GXH HOHPHQWL [ HG [ GHO GRPLQLR GLVWDQ]LDWL WUD ORUR GL XQ e SLFFROR D SLDFHUH HVLVWH VHPSUH XQLQILQLWDC GL YDORUL GL 5 FRQWHQXWL QHOOLQWHUYDOOR >[ [@ 7LLSLL QRQ HQXPHUDELLOOLL LLQ & 7 S QRQ HQXPHUDE Q & IORDW GRXEOH ^,QWHJUDOO 7\SHV )OORDWLLQJ 7\SHV` ^,QWHJUD 7\SHV ) RDW QJ 7\SHV` /
LQVLHPH GL TXHVWH GXH FDWHJRULH FRVWLWXLVFH L WLSL DULWPHWLFL
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
,VWUX]LRQL FODVVLILFD]LRQH
,Q & OH LVWUX]LRQL SRVVRQR HVVHUH FODVVLILFDWH LQ GXH FDWHJRULH LVWUX]LRQL VHPSOLFL LVWUX]LRQL VWUXWWXUDWH VL HVSULPRQR PHGLDQWH FRPSRVL]LRQH GL DOWUH LVWUX]LRQL VHPSOLFL HR VWUXWWXUDWH
LVWUX]LRQL
STRUTTURATE:
5HJROD VLQWDWWLFD JHQHUDOH ,Q & RJQL LVWUX]LRQH HC WHUPLQDWD GD XQ SXQWR H YLUJROD >ID HFFH]LRQH OLVWUX]LRQH FRPSRVWD@
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
$VVHJQDPHQWR
(C O
LVWUX]LRQH FRQ FXL VL PRGLILFD LO YDORUH GL XQD YDULDELOH 6LQWDVVL
LVWUX]LRQHDVVHJQDPHQWR! LGHQWLILFDWRUHYDULDELOH! HVSUHVVLRQH!
(VHPSLR main() { /*definizioni variabili: */ int X,Y; unsigned int Z; float SUM; /* segue parte istruzioni */ X=27; Y=343; Z = X + Y -300; X = Z / 10 + 23; Y = (X + Z) / 10 * 10; /* qui X=30, Y=100, Z=70 */ X = X + 70; Y = Y % 10; Z = Z + X -70; SUM = Z * 10; /* X=100, Y=0, Z=100 , SUM=1000.0*/ }
$G HVHPSLLR $G HVHPS R int A, B; A=20; B=A*5; /* B=100 */ &RPSDWLLELLOOLLWDC GLL WLLSR HG DVVHJQDPHQWR &RPSDW E WDC G W SR HG DVVHJQDPHQWR ,Q XQ DVVHJQDPHQWR O
LGHQWLILFDWRUH GL YDULDELOH H OHVSUHVVLRQH GHYRQR HVVHUH GHOOR VWHVVR WLSR HYHQWXDOPHQWH FRQYHUVLRQH LPSOLFLWD (VHPSLLR (VHPS R int x; char y=a; /*codice(a)=97*/ double r; x=y; /* char -> int: x=97*/ x=y+x; /*x=194*/ r=y+1.33; /* char -> int -> double*/ x=r; /* troncamento: x=98*/
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
$VVHJQDPHQWR
,Q & VRQR GLVSRQLELOL RSHUDWRUL FKH UHDOL]]DQR SDUWLFRODUL IRUPH GL DVVHJQDPHQWR 2SHUDWRULL GLL LLQFUHPHQWR H GHFUHPHQWR 2SHUDWRU G QFUHPHQWR H GHFUHPHQWR 'HWHUPLQDQR OLQFUHPHQWRGHFUHPHQWR GHO YDORUH GHOOD YDULDELOH D FXL VRQR DSSOLFDWL 5HVWLWXLVFRQR FRPH ULVXOWDWR LO YDORUH LQFUHPHQWDWRGHFUHPHQWDWR GHOOD YDULDELOH D FXL VRQR DSSOLFDWL int A=10; A++; /*equivale a: A=A+1; */ A--; /*equivale a: A=A-1; */ 'LLIIHUHQ]D WUD QRWD]LLRQH SUHILLVVD H SRVWILLVVD ' IIHUHQ]D WUD QRWD] RQH SUHI VVD H SRVWI VVD 1RWD]LRQH 3UHILVVD DG HVHPSLR $ VLJQLILFD FKH O
LQFUHPHQWR YLHQH IDWWR SULPD GHOO
LPSLHJR GHO YDORUH GL $ QHOOD HVSUHVVLRQH 1RWD]LRQH 3RVWILVVD DG HVHPSLR $ VLJQLILFD FKH O
LQFUHPHQWR YLHQH HIIHWWXDWR GRSR O
LPSLHJR GHO YDORUH GL $ QHOOD HVSUHVVLRQH
const int valore=122; int K, M; K=valore+100; /* K=122;lespressione produce il risultato 222 */ M=(K=K/2)+1; /* K=111, M=112*/
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
$G HVHPSLLR $G HVHPS R int A=10, B; char C=a; B=++A; B=A++; C++; int k = i = j = /*A e B valgono 11 */ /* A=12, B=11 */ /* C vale b */
2SHUDWRUH GLL DVVHJQDPHQWR DEEUHYLLDWWR 2SHUDWRUH G DVVHJQDPHQWR DEEUHY D R (C XQ PRGR VLQWHWLFR SHU PRGLILFDUH LO YDORUH GL XQD YDULDELOH 6LD v XQD YDULDELOH RS XQRSHUDWRUH DG HVHPSLR HWF HG e XQD HVSUHVVLRQH Y RS H q TXDVL HTXLYDOHQWH D Y Y RS H
j = i + k++; /*equivale a: j=i+k; k=k+1;*/ + ,Q & ORUGLQH GL YDOXWD]LRQH GHJOL RSHUDQGL QRQ H LQGLFDWR GDOOR VWDQGDUG VL SRVVRQR VFULYHUH HVSUHVVLRQL LO FXL YDORUH HC GLIILFLOH GD SUHGLUH
/H GXH IRUPH VRQR TXDVL HTXLYDOHQWL SHUFKq LQ Y RS H Y YLHQH YDOXWDWR XQD VROD YROWD PHQWUH LQ Y Y RS H Y YLHQH YDOXWDWR GXH YROWH
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
GHOOH SDUHQWHVL
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
5HJROOH GLL 3UHFHGHQ]D H $VVRFLLDWLLYLLWDC GHJOOLL 2SHUDWRULL & LLQ 5HJR H G 3UHFHGHQ]D H $VVRF DW Y WDC GHJ 2SHUDWRU & Q RUGLLQH GLL SULLRULLWWDC GHFUHVFHQWWH RUG QH G SU RU DC GHFUHVFHQ H (VHPSLL (VHPS
3UHFHGHQ]D H $VVRFLDWLYLWDC
;$ HTXLYDOH D
HTXLYDOH D ; $
2SHUDWRUH () [] -> ! ~ ++ -- & sizeof * / % + << < <= == & ^ | && || ?: =+ =- =* =/ , >> > != >=
$VVRFLDWLYLWDC GD VLQLVWUD D GHVWUD GD GHVWUD D VLQLVWUD GD VLQLVWUD D GHVWUD GD VLQLVWUD D GHVWUD GD VLQLVWUD D GHVWUD GD VLQLVWUD D GHVWUD GD GHVWUD D VLQLVWUD GD VLQLVWUD D GHVWUD GD VLQLVWUD D GHVWUD GD VLQLVWUD D GHVWUD GD VLQLVWUD D GHVWUD GD VLQLVWUD D GHVWUD GD GHVWUD D VLQLVWUD GD GHVWUD D VLQLVWUD GD VLQLVWUD D GHVWUD
9DOOXWD]LLRQH D FRUWR FLLUFXLLWR VKRUWWFXWW 9D XWD] RQH D FRUWR F UFX WR VKRU FX QHOOD YDOXWD]LRQH GL XQD HVSUHVVLRQH & VH XQ ULVXOWDWR LQWHUPHGLR GHWHUPLQD D SULRUL LO ULVXOWDWR ILQDOH GHOOD HVSUHVVLRQH LO UHVWR GHOO
HVSUHVVLRQH QRQ YLHQH YDOXWDWR $G HVHPSLLR HVSUHVVLLRQLL OORJLLFKH $G HVHPS R HVSUHVV RQ RJ FKH +S 9DOOXWWD]LLRQH GHJOOLL RSHUDQGLL GD VLLQ D GHVWWUD +S 9D X D] RQH GHJ RSHUDQG GD V Q D GHV UD ! IDOVR ; < YHUR VROR SULPR RSHUDQGR
+ %LVRJQHUHEEH HYLWDUH GL VFULYHUH HVSUHVVLRQL FKH GLSHQGRQR GDO PHWRGR GL YDOXWD]LRQH XVDWR VFDUVD SRUWDELOLWDC DG HV LQ SUHVHQ]D GL IXQ]LRQL FRQ HIIHWWL FROODWHUDOL
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
(VHUFL]L 6LD 9 $ % 'HWHUPLQDUH LO YDORUH GHOOH VHJXHQWL HVSUHVVLRQL ORJLFKH $ __ $! % $ $ % $ 9 $! % $! 9 $! % $ 9 $! % __ $ 9 6ROOX]LLRQLL +S YDOOXWWD]LLRQH GHJOOLL RSHUDQGLL VQ!G[ 6R X] RQ +S YD X D] RQH GHJ RSHUDQG VQ!G[ $ __ $! YHUR ^$ VKRUW FXW` % $ IDOVR ^% ` $ % $ 9 IDOVR ^$!9` $! % $! 9 IDOVR ^$%` $ % $ 9 YHUR $! % __ $ 9 YHUR
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
,QSXW2XWSXW
,O & YHGH OH LQIRUPD]LRQL OHWWHVFULWWH GDYHUVR L GLVSRVLWLYL VWDQGDUG GL ,2 FRPH ILOH VHTXHQ]LDOL FLRHC VHTXHQ]H GL FDUDWWHUL , ILOH VWDQGDUG GL LQSXWRXWSXW SRVVRQR FRQWHQHUH GHL FDUDWWHUL GL FRQWUROOR (QG 2I )LOH (2) LQGLFD OD ILQH GHO ILOH (QG 2I /LQH LQGLFD OD ILQH GL XQD OLQHD
a 7
3.7
b 57 *
c 6
testina lettura
fine linea
)XQ]LLRQLL GLL OOLLEUHULLD SHU )XQ] RQ G EUHU D SHU ,QSXW2XWSXW D FDUDWWHUL ,QSXW2XWSXW D VWULQJKH GL FDUDWWHUL ,QSXW2XWSXW FRQ IRUPDWR
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
VFDQI
RJQL GLUHWWLYD GL IRUPDWR SUHYHGH GHL VHSDUDWRUL VSHFLILFL
7LSR GL GDWR ,QWHUR &DUDWWHUH 6WULQJD 'LUHWWLYH GL IRUPDWR G [ X HWF F V 6HSDUDWRUL 6SD]LR (2) 1HVVXQR 6SD]LR (2) (2/ (2/
1RWD EHQH 1RWD EHQH + 6H OD VWULQJD GL IRUPDWR FRQWLHQH 1 GLUHWWLYH q QHFHVVDULR FKH OH YDULDELOL VSHFLILFDWH QHOOD VHTXHQ]D VLDQR HVDWWDPHQWH 1 + *OL LGHQWLILFDWRUL GHOOH YDULDELOL D FXL DVVHJQDUH L YDORUL VRQR VHPSUH SUHFHGXWL GDO VLPEROR >,QIDWWL OH YDULDELOL GHYRQR HVVHUH VSHFLILFDWH DWWUDYHUVR LO ORUR LQGLUL]]R RSHUDWRUH Y SXQWDWRUL H IXQ]LRQL@ + /D VWULQJDBIRUPDWR! SXRC FRQWHQHUH GHL FDUDWWHUL TXDOVLDVL FKH YHQJRQR VFDUWDWL GXUDQWH OD OHWWXUD FKH UDSSUHVHQWDQR VHSDUDWRUL DJJLXQWLYL ULVSHWWR D TXHOOL VWDQGDUG $G HVHPSLLR $G HVHPS R scanf(%d:%d:%d, &A, &B, &C);
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
! ULFKLHGH FKH L WUH GDWL GD OHJJHUH YHQJDQR LPPHVVL VHSDUDWL GDO FDUDWWHUH
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
SULQWI
1RWD EHQH 1RWD EHQH /D VWULQJD GL IRUPDWR GHOOD SULQWI SXRC FRQWHQHUH VHTXHQ]H FRVWDQWL GL FDUDWWHUL GD YLVXDOL]]DUH q SRVVLELOH LQVHULUH QHOOD VWULQJD GL IRUPDWR DQFKH FDUDWWHUL GL FRQWUROOR QHZOLQH WDE EDFNVSDFH IRUP IHHG FDUULDJH UHWXUQ ?Q ?W ?E ?I ?U
,QSXW2XWSXW
6H DOOLQWHUQR GL XQ SURJUDPPD & VL YRJOLRQR XVDUH OH IXQ]LRQL GHOOD OLEUHULD VWGLR q QHFHVVDULR LQVHULUH DOOLQL]LR GHO ILOH VRUJHQWH OD OLQHD LQFOXGH VWGLRK! + LQFOXGH HC XQD GLUHWWLYD SHU LO SUHSURFHVVRUH & QHOOD IDVH SUHFHGHQWH DOOD FRPSLOD]LRQH GHO SURJUDPPD RJQL GLUHWWLYD YLHQH HVHJXLWD SURYRFDQGR GHOOH PRGLILFKH WHVWXDOL DO SURJUDPPD VRUJHQWH 1HO FDVR GL #include <stdio.h> OD GLUHWWLYD VWHVVD YLHQH VRVWLWXLWD FRQ LO FRQWHQXWR GHO ILOH VWGLRK! (VHPSLLR (VHPS R #include <stdio.h> main() { int k;
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
SULQWIVFDQI
(VHPSLLR (VHPS R scanf("%c%c%c%d%f", &c1,&c2,&c3,&i,&x); 6H LQ LQJUHVVR YHQJRQR GDWL ABC 3 7.345 OH YDULDELOL DVVXPRQR L VHJXHQWL YDORUL FKDU F
$
FKDU F
%
FKDU F
&
LQW L IORDW [
(VHPSLLR VWWDPSD GHOOOOD FRGLLILLFD GHFLLPDOOH RWWWWDOOH H (VHPS R V DPSD GH D FRG I FD GHF PD H R D H H HVDGHFLLPDOOH GLL XQ FDUDWWWWHUH GDWWR GD LLQSXWW HVDGHF PD H G XQ FDUD HUH GD R GD QSX
#include <stdio.h> main() { int a; printf("Dai un carattere e ottieni il valore \ decimale, ottale e hex "); scanf("%c",&a); printf("\n%c vale %d in decimale, %o in ottale \ e %x in hex.\n",a, a, a, a); }
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
/ (VHUFLL]LLR / (VHUF ] R &DOFROR GHOORUDULR SUHYLVWR GL DUULYR 6FULYHUH XQ SURJUDPPD FKH OHJJD WUH LQWHUL SRVLWLYL GD WHUPLQDOH UDSSUHVHQWDQWL ORUDULR GL SDUWHQ]D RUH PLQXWL VHFRQGL GL XQ YHWWRUH DHUHR OHJJD XQ WHU]R LQWHUR SRVLWLYR UDSSUHVHQWDQWH LO WHPSR GL YROR LQ VHFRQGL H FDOFROL TXLQGL ORUDULR GL DUULYR $SSURFFLLR WRSGRZQ $SSURFF R WRSGRZQ 1HO FDVR GL XQ SUREOHPD FRPSOHVVR SXRC HVVHUH XWLOH DGRWWDUH XQD PHWRGRORJLD WRSGRZQ 6L DSSOLFD LO SULQFLSLR GL VFRPSRVL]LRQH GLYLGHQGR XQ SUREOHPD LQ VRWWRSUREOHPL H VIUXWWDQGR OLSRWHVL GL FRQRVFHUH OH ORUR VROX]LRQL SHU ULVROYHUH LO SUREOHPD GL SDUWHQ]D D GDWR XQ SUREOHPD 3 ULFDYDUQH XQD VROX]LRQH DWWUDYHUVR OD VXD VFRPSRVL]LRQH LQ VRWWRSUREOHPL SLXC VHPSOLFL E HVHJXLUH D E SHU RJQL VRWWRSUREOHPD LQGLYLGXDWR FKH QRQ VLD ULVROYLELOH DWWUDYHUVR O
HVHFX]LRQH GL XQ VRWWRSUREOHPD HOHPHQWDUH /D VROX]LRQH ILQDOH VL RWWLHQH GRSR XQD VHTXHQ]D ILQLWD GL SDVVL GL UDIILQDPHQWR UHODWLYL DL VRWWRSUREOHPL YLD YLD RWWHQXWL ILQR DG RWWHQHUH VRWWRSUREOHPL HOHPHQWDUL
3ULPD VSHFLILFD PDLQ ^ GLFKLDUD]LRQH GDWL OHJJL L GDWL GL LQJUHVVR FDOFROD ORUDULR GL DUULYR VWDPSD ORUDULR GL DUULYR
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
&RGLILFD &RPH GDWL RFFRUURQR WUH YDULDELOL LQWHUH SHU ORUDULR GL SDUWHQ]D HG XQD YDULDELOH LQWHUD SHU L VHFRQGL GL YROR /*definizione dati */
long unsigned TempoDiVolo; int Ore, Minuti, Secondi
/*leggi i dati di ingresso*/: /*leggi lorario di partenza*/ printf("%s\n","Orario di partenza (hh,mm,ss)?"); scanf("%ld%ld%ld\n", &Ore, &Minuti, &Secondi); /*leggi il tempo di volo*/ printf("%s\n","Tempo di volo (in sec.)?"); scanf("%ld\n", &TempoDiVolo); /*calcola lorario di arrivo*/: Secondi = Secondi + TempoDiVolo; Minuti = Minuti + Secondi / 60; Secondi = Secondi % 60; Ore = Ore + Minuti / 60; Minuti = Minuti % 60; Ore = Ore % 24; /*stampa lorario di arrivo*/: printf("%s\n","Arrivo previsto alle (hh,mm,ss):"); printf("%ld%c%ld%c%ld\n",Ore,:,Minuti,:, Secondi);
alle
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
'LFKLDUD]LRQL H 'HILQL]LRQL
1HOOD SDUWL GLFKLDUDWLYH GL XQ SURJUDPPD & SRVVLDPR LQFRQWUDUH GHILQL]LRQL GL YDULDELOH R GL IXQ]LRQH GLFKLDUD]LRQL GL WLSR R GL IXQ]LRQH 'HILLQLL]LLRQH 'HI Q ] RQH 'HVFULYH OH SURSULHWDC GHOORJJHWWR GHILQLWR H QH GHWHUPLQD OHVLVWHQ]D $G HVHPSLR GHILQL]LRQH GL XQD YDULDELOH int V; /* la variabile intera V viene creata (allocata in memoria) */ 'LLFKLLDUD]LLRQH ' FK DUD] RQH 'HVFULYH VROWDQWR GHOOH SURSULHWDC GL RJJHWWL FKH YHUUDQQR HYHQWXDOPHQWH FUHDWL PHGLDQWH GHILQL]LRQH $G HVHPSLR GLFKLDUD]LRQH GL XQ WLSR QRQ SULPLWLYR
'LFKLDUD]LRQH GL WLSR
/D GLFKLDUD]LRQH GL WLSR VHUYH SHU LQWURGXUUH WLSL QRQ SULPLWLYL $VVRFLD DG XQ WLSR GL GDWR QRQ SULPLWLYR XQ LGHQWLILFDWRUH VFHOWR DUELWUDULDPHQWH GDO SURJUDPPDWRUH $XPHQWD OD OHJJLELOLWDC H PRGLILFDELOLWDC GHO SURJUDPPD ,Q & SHU GLFKLDUDUH XQ QXRYR WLSR VL XWLOL]]D OD SDUROD FKLDYH W\SHGHI
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
7LSR HQXPHUDWR
8Q WLSR HQXPHUDWR YLHQH VSHFLILFDWR DWWUDYHUVR OHVSOLFLWD]LRQH GL XQ HOHQFR GL YDORUL FKH UDSSUHVHQWD LO VXR GRPLQLR 6LLQWDVVLL 6 QWDVV W\SHGHI HQXP ^D D D DQ` (QXP7\SH 8QD YROWD GLFKLDUDWR XQ WLSR HQXPHUDWR SXRC HVVHUH XWLOL]]DWR SHU GHILQLUH YDULDELOL $G HVHPSLLR $G HVHPS R
typedef enum{nord,sud,est,ovest} direzione; direzione D=nord;
7LSR ULGHILQLWR
8Q QXRYR LGHQWLILFDWRUH GL WLSR YLHQH DVVRFLDWR DG XQ WLSR JLDC HVLVWHQWH SULPLWLYR R QRQ 6LLQWDVVLL 6 QWDVV W\SHGHI (VHPSLLR (VHPS R typedef int MioIntero; MioIntero X,Y,Z; int W; 7LSR(VLVWHQWH 1XRYR7LSR
3URSULLHWDC 3URSU HWDC 'DWL GL WLSR HQXPHUDWR VRQR HQXPHUDELOL LO GRPLQLR HC VWUHWWDPHQWH RUGLQDWR LQ EDVH DOORUGLQH WHVWXDOH FRQ FXL VL LQGLFDQR JOL HOHPHQWL GHO GRPLQLR QHOOD GLFKLDUD]LRQH $G HVHPSLLR $G HVHPS R
typedef enum{nord,sud,est,ovest} direzione; + QRUG SUHFHGH VXG
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
(VHPSLLR (VHPS R typedef enum{lu,ma,me,g,v,s,d}Giorno; /*lu=0, ma=1, me=2,..d=6*/ typedef enum{cuori,picche,quadri, fiori} Carta; /*cuori=0, picche=1,*/ Carta C1, C2, C3, C4, C5; Giorno G; G=lu; G=0 G=ma G=1 ... C1=cuori 0 ... + /
XWLOL]]R GL WLSL RWWHQXWL SHU HQXPHUD]LRQH UHQGH SLXC OHJJLELOH LO FRGLFH + 8Q LGHQWLILFDWRUH GL XQ YDORUH VFDODUH GHILQLWR GDOOXWHQWH DG HV O GHYH FRPSDULUH QHOOD GHILQL]LRQH GL XQ VROR WLSR HQXPHUDWR W\SHGHI HQXP^OX PD PH J Y V G` *LRUQR W\SHGHI HQXP^OXPDPH` 3ULPL*LRUQL
VFRUUHWWR
&RQYHQ]LLRQH GHIDXOOW &RQYHQ] RQH GHIDX W ,O SULPR HOHPHQWR GHO GRPLQLR YLHQH UDSSUHVHQWDWR FRQ LO YDORUH LO VHFRQGR FRQ HWF
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
+ 1RQ F
HC FRQWUROOR VXJOL HVWUHPL GHOO
LQWHUYDOOR GL LQWHUL XWLOL]]DWR
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
7LSL HQXPHUDWL
(VHPSLLR (VHPS R 9RJOLDPR UHDOL]]DUH LO WLSR ERROHDQ ' ^IDOVR YHUR`
6HFRQGD VROOX]LLRQH 6HFRQGD VR X] RQH 8VR GHO WLSR HQXPHUDWR typedef enum {false, true} Boolean; Boolean flag1,flag2; flag1 = true; if (flag1) .../* flag vale 1 */ flag2 = -37 /* !!! */ if (flag2).../*funziona lo stesso!*/
(C XQ WLSR SUHGHILQLWR LQ DOWUL OLQJXDJJL GL SURJUDPPD]LRQH DG HVHPSLR LQ 3DVFDO 1RQ HC SUHYLVWR LQ & GRYH SHURC LO YDORUH ]HUR LQGLFD )$/62 RJQL YDORUH GLYHUVR GD LQGLFD 9(52 3ULLPD VROOX]LLRQH 3U PD VR X] RQH 3HU GHILQLUH OH GXH FRVWDQWL ERROHDQH GHILQH )$/6( GHILQH 758(
+ GHILQH HC XQD GLUHWWLYD GHO SUHSURFHVVRUH & SURYRFD XQD VRVWLWX]LRQH QHO WHVWR GRYH FHC )$/6( ! GRYH FHC 758( ! QRQ VL DOORFD VSD]LR LQ PHPRULD
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
(TXLLYDOOHQ]D QRPLLQDOOH (TX YD HQ]D QRP QD H GXH GDWL VRQR FRQVLGHUDWL GL WLSR HTXLYDOHQWH VROR OLGHQWLILFDWRUH GL WLSR FKH FRPSDUH QHOOD ORUR GHILQL]LRQH HC OR VWHVVR $G HVHPSLR typedef int typedef int MioIntero NuovoIntero MioIntero; NuovoIntero; A; B;
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
3URJUDPPD]LRQH 6WUXWWXUDWD
+ $EROL]LRQH GL VDOWL LQFRQGL]LRQDWL JRWR QHO IOXVVR GL FRQWUROOR 9DQWDJJLL 9DQWDJJ OHJJLELOLWDC VXSSRUWR D PHWRGRORJLD GL SURJHWWR WRSGRZQ VROX]LRQH GL SUREOHPL FRPSOHVVL DWWUDYHUVR VFRPSRVL]LRQH LQ VRWWR SUREOHPL D ORUR YROWD VFRPSRQLELOL LQ VRWWR SUREOHPL HWF /D VROX]LRQH VL RWWLHQH FRPSRQHQGR OH VROX]LRQL GHL VRWWRSUREOHPL DWWUDYHUVR FRQFDWHQD]LRQH DOWHUQDWLYD H ULSHWL]LRQH VXSSRUWR D PHWRGRORJLD ERWWRPXS OD VROX]LRQH GL SUREOHPL DYYLHQH DJJUHJDQGR FRPSRQHQWL JLDC GLVSRQLELOL PHGLDQWH FRQFDWHQD]LRQH DOWHUQDWLYD H ULSHWL]LRQH SURJUDPPD]LRQH SHU FRPSRQHQWL IDFLOLWDC GL YHULILFD H PDQXWHQ]LRQH
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
8Q OOLLQJXDJJLLR FRPSRVWR GDOOOOH LLVWUX]LLRQLL 8Q QJXDJJ R FRPSRVWR GD H VWUX] RQ OHWWXUD VFULWWXUD VFDQI SULQWI DVVHJQDPHQWR LVWUX]LRQH FRPSRVWD ^` LVWUX]LRQH FRQGL]LRQDOHLIHOVH LVWUX]LRQH GL LWHUD]LRQH ZKLOH HC XQ OLQJXDJJLR FRPSOHWR LQ JUDGR GL HVSULPHUH WXWWH OH IXQ]LRQL FDOFRODELOL
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
,VWUX]LRQH FRPSRVWD ^ `
'HWHUPLQD OHVHFX]LRQH LVWUX]LRQL FRPSRQHQWL 6LLQWDVVLL 6 QWDVV
^ ` 'LFKLDUD]LRQL H 'HILQL]LRQL! 6HTXHQ]D GL ,VWUX]LRQL!
,VWUX]LRQH &RPSRVWD
GHOOH 'LLFKLLDUD]LLRQLL H GHILLQLL]LLRQLL ' FK DUD] RQ H GHI Q ] RQ (C SRVVLELOH GHILQLUH YDULDELOL FKH KDQQR YLVLELOLWj H WHPSR GL YLWD OLPLWDWR DO EORFFR VWHVVR $G HVHPSLR { int A; A=100; printf(Valore di A: %d\n, A); } )RUPDOPHQWH LO FRUSR GHO PDLQ HC FRVWLWXLWR GD XQ
LVWUX]LRQH FRPSRVWD main() { int A; A=100; printf(Valore di A: %d\n, A); }
QHOORUGLQH
WHVWXDOH
I1
I2
I3
In
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
,VWUX]LRQH &RPSRVWD
(VHPSLLR (VHPS R /*programma che letti due numeri a terminale ne stampa la somma*/ #include <stdio.h> main() { int X,Y; scanf("%d%d",&X,&Y); printf("%d",X+Y); }
,VWUX]LRQL GL DOWHUQDWLYD
,VWUX]LLRQH LLI ,VWUX] RQH I VHOH]LRQD OHVHFX]LRQH GL XQD VROD WUD OH LVWUX]LRQL FRPSRQHQWL LQ EDVH DO ULVXOWDWR GL XQHVSUHVVLRQH ORJLFD GHWWD VHOHWWRUH LI HVSUHVVLRQH! LVWUX]LRQH! >HOVH LVWUX]LRQH!@ VH LO ULVXOWDWR GL HVSUHVVLRQH! q YHUR FLRHC GLYHUVR GD ]HUR YLHQH HVHJXLWD LVWUX]LRQH! DOWULPHQWL YLHQH HVHJXLWD LVWUX]LRQH!
(!=0) (==0)
espressione
Istruzione1
Istruzione2
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
,VWUX]LRQH LI
(VHPSLLR (VHPS R #include <stdio.h> main() { int A, B; scanf(%d%d, &A, &B); if (B==0) printf (B vale zero!\n); else printf(Quoziente: %d\n, A/B); }
,VWUX]LRQH LI
LI HVSUHVVLRQH! LVWUX]LRQH! HOVH LVWUX]LRQH!
+ LVWUX]LRQH! HG LVWUX]LRQH! SRVVRQR HVVHUH GL WLSR
(VHPSLLR (VHPS R /D SDUWH HOVH GHOOLVWUX]LRQH LI q RS]LRQDOH #include <stdio.h> main() { int A, B; scanf(%d%d, &A, &B); if (B==0) return; /*termina lesecuzione del main*/ printf(Quoziente: %d\n, A/B); } ,QGHQWWD]LLRQH ,QGHQ D] RQH OLQGHQW GHOOH OLQHH GHO WHVWR GHO SURJUDPPD ULVSHWWD ODQQLGDPHQWR GHOOH YDULH LVWUX]LRQL VL DXPHQWD OD OHJJLELOLWDC GHO SURJUDPPD PRGLILFD SLXC IDFLOH int Eta; if (Eta >=6) { if (Eta <=14) printf("%s","scolare"); } else { printf("%s","Non scolare"); printf("%d",Eta); };
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
2SSXUH 2SSXUH int Eta; if ((Eta >=6) && (Eta <=14)) printf("%s","scolare"); else { printf("%s","Non scolare"); printf("%d",Eta); }; (VHPSLLR (VHPS R
LI HVHPSL
3URJUDPPD FKH OHJJH GXH QXPHUL H GHWHUPLQD TXDO HC LO PDJJLRUH /* determina il maggiore tra due numeri file c2.c */ #include <stdio.h> main() { int primo,secondo; scanf("%d%d",&primo,&secondo); if (primo>secondo) printf("%d",primo); else printf("%d",secondo); }
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
(VHPSLLR (VHPS R /* Programma che calcola le radici unequazione di secondo grado*/ #include <stdio.h> #include <math.h> /*lib. matematica*/ main() { float a,b,c; float d,x1,x2; scanf("%f%f%f",&a,&b,&c); if ((b*b) < (4*a*c)) printf("%s","radici complesse"); else { d=sqrt(b*b-4*a*c); x1=(-b+d)/(2*a); x2=(-b-d)/(2*a); printf("%f%f",x1,x2); }; } di
(VHPSLR LI 5LVROYHUH XQ VLVWHPD OLQHDUH GL GXH HTXD]LRQL LQ GXH LQFRJQLWH D[ E\ D[ E\ [ \ F F
FEFE DE DE ;1 ' DF DF DE DE <1 ' #include <stdio.h> main() { float A1,B1,C1,A2,B2,C2,XN,YN,D; float X,Y; scanf("%f%f%f%\n",&A1,&B1,&C1); scanf("%f%f%f%\n",&A2,&B2,&C2); XN = (C1*B2 - C2*B1); D = (A1*B2 - A2*B1); YN = (A1*C2 - A2*C1); if (D == 0) {if (XN == 0) printf("sist. indeterm.\n"); else printf("Nessuna soluz.\n"); } else {X= XN/D; Y= YN/D; printf("%f%f\n",X,Y); } }
6ROOX]LLRQH 6R X] RQH
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
,I DQQLGDWL
LI HVSUHVVLRQH! LVWUX]LRQH! HOVH LVWUX]LRQH! LVWUX]LRQH! HG LVWUX]LRQH! SRVVRQR HVVHUH DQFRUD LVWUX]LRQL LI + 6L SRVVRQR DYHUH SLXC LVWUX]LRQL LI DQQLGDWH LI H! LI H! L! HOVH L!
(==0) (!=0)
/HOVH VL ULIHULVFH VHPSUH DOOLI SL LQWHUQR VH QRQ VSHFLILFDWR DOWULPHQWL if (n > 0) if (a > b) n = a; /*n > 0 && a > b */ else n = b; /* n > 0 && a <= b */ + 6H VL YXROH ULIHULUH O
HOVH DOO
LI SLXC HVWHUQR VL XVDQR OH JUDIIH if (n > 0) { if (a > b) n = a; }/*n>0 && a>b */ else n = b; /* n <= 0 */
e1
(==0)
(!=0)
e2 i2 i1
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
,I DQQLGDWL
/ (VHUFLL]LLR / (VHUF ] R 'DWL WUH QXPHUL LQWHUL SRVLWLYL FKH UDSSUHVHQWDQR L WUH ODWL GL XQ WULDQJROR VL VWDPSL LO WLSR GHO WULDQJROR HTXLODWHUR LVRVFHOH R VFDOHQR 3ULPD VSHFLILFD PDLQ ^
GLFKLDUD]LRQH GDWL
OHJJL OH OXQJKH]]H GHL ODWL
VH WULDQJROR VWDPSDQH LO WLSR
&RGLLILLFD &RG I FD &RPH GDWL RFFRUURQR WUH YDULDELOL LQWHUH SHU UDSSUHVHQWDUH OH OXQJKH]]H GHL VHJPHQWL /*dichiarazione dati */ unsigned int primo,secondo,terzo; /* leggi le lunghezze dei segmenti */ scanf("%d%d%d",&primo,&secondo,&terzo); /*se triangolo, stampane il tipo */ if (primo + secondo>terzo) if (primo==secondo)/*det.il tipo */ {if (secondo==terzo) printf("equilatero"); else printf("isoscele");} else {if (secondo==terzo) printf("isoscele"); else {if (primo==terzo) printf("isoscele"); else printf("scaleno");} }
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
(VHPSLLR LLI DQQLLGDWLL (VHPS R I DQQ GDW 6WDPSD GL XQD YDULDELOH GL WLSR HQXPHUDWR typedef enum{cuori,picche,quadri, fiori}seme; main() { seme S; < assegnamento di un valore a S> if (S==cuori) printf("%s","cuori"); else if (S==picche) printf("%s","picche"); else if (S==quadri) printf("%s","quadri"); else if (S==fiori) printf("%s","fiori"); }
,VWUX]LRQH 6ZLWFK
&RQVHQWH GL VHOH]LRQDUH OHVHFX]LRQH GL XQD R SLXC WUD JOL 1 EORFFKL GL LVWUX]LRQL FRPSRQHQWL LQ EDVH DO YDORUH GL XQD HVSUHVVLRQH 6LLQWDVVLL 6 QWDVV VZLWFK (VSUHVVLRQH,QWHJUDO7\SH! ^ FDVH FRVWDQWH! EORFFR! >EUHDN@ FDVH FRVWDQWH! EORFFR! >EUHDN@ FDVH FRVWDQWH1! EORFFR1! >EUHDN@ >GHIDXOW EORFFR'L'HIDXOW!@ ` /HVSUHVVLRQH HC GHWWD VHOHWWRUH 'HYH UHVWLWXLUH XQ YDORUH GL WLSR ,QWHJUDO7\SH HQXPHUDELOH 2JQL FRVWDQWH DVVRFLDWD D XQD HWLFKHWWD FDVH GHYH HVVHUH GHOOR VWHVVR WLSR GHO VHOHWWRUH 8Q YDORUH SXRC FRPSDULUH DO SLXC LQ XQHWLFKHWWD
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
,VWUX]LRQH 6ZLWFK
6LLJQLLILLFDWR 6 JQ I FDWR 6H O
HVSUHVVLRQH UHVWLWXLVFH XQ YDORUH XJXDOH DG XQD GHOOH FRVWDQWL LQGLFDWH SHU HVHPSLR FRVWDQWH! VL HVHJXH LO EORFFR! H WXWWL L EORFFKL GHL UDPL VXFFHVVLYL + , EORFFKL QRQ VRQR PXWXDPHQWH HVFOXVLYL SRVVLELOLWj GL HVHJXLUH LQ VHTXHQ]D SL EORFFKL GL LVWUX]LRQL 3H RWWHQHUH OOD PXWXD HVFOOXVLLRQH WUD LL EOORFFKLL 3H RWWHQHUH D PXWXD HVF XV RQH WUD E RFFK + 1HFHVVLWj GL IRU]DUH O
XVFLWD PHGLDQWH O
LVWUX]LRQH EUHDN FKH SURYRFD O
XVFLWD IRU]DWD GDOOR VZLWFK (VHPSLLR (VHPS R int X; switch (X%2) { case 0: printf(X e` pari); break; case 1:printf(X e` dispari); break; }
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
(VHPSLLR FDOOFROOR GHOOOOD GXUDWWD GLL XQ PHVH (VHPS R FD FR R GH D GXUD D G XQ PHVH D VROOX]LLRQH D VR X] RQH #define GENNAIO 1 #define FEBBRAIO 2 #define MARZO 3 ... #define NOVEMBRE 11 #define DICEMBRE 12 ... int mese, anno, giorni; ... switch (mese) { case GENNAIO: giorni = 31; break; case FEBBRAIO: if (<anno bisestile>) giorni = 29; else giorni = 28; break; case MARZO: giorni = 31; break; case APRILE: giorni = 30; break; case MAGGIO: giorni = 31; break; case GIUGNO: giorni = 30; break; case LUGLIO: giorni = 31; break; case AGOSTO: giorni = 31; break; case SETTEMBRE: giorni = 30; break; case OTTOBRE: giorni = 31; break; case NOVEMBRE: giorni = 31; break; case DICEMBRE: giorni = 31; } ...
D VROOX]LLRQH D VR X] RQH switch (mese) { case FEBBRAIO: if (<bisestile>) giorni = 29; else giorni = 28; break; case APRILE: giorni = 30; break; case GIUGNO: giorni = 30; break; case SETTEMBRE: giorni = 30; break; case NOVEMBRE: giorni = 30; break; default: giorni = 31; } D VROX]LRQH switch (mese) { case FEBBRAIO: if (<bisestile>) giorni = 29; else giorni = 28; break; case APRILE: case GIUGNO: case SETTEMBRE: case NOVEMBRE: giorni = 30; break; default: giorni = 31; }
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
LQ
(==0)
Espressione
(!=0)
Istruzione
6LLJQLLILLFDWR 6 JQ I FDWR /HVSUHVVLRQH FRQGL]LRQH GL ULSHWL]LRQH YLHQH YDOXWDWD DOOLQL]LR GL RJQL FLFOR /LVWUX]LRQH! YLHQH HVHJXLWD ILQFKHC LO YDORUH GHOOHVSUHVVLRQH! ULPDQH YHUR GLYHUVR GD ]HUR 6L HVFH GDO FLFOR TXDQGR OHVSUHVVLRQH UHVWLWXLVFH XQ YDORUH IDOVR ORJLFR 6H LQL]LDOPHQWH HVSUHVVLRQH! KD YDORUH ]HUR LO FRUSR GHO FLFOR QRQ YLHQH PDL HVHJXLWR
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
(VHPSLLR VRPPD GHLL SULLPLL GLLHFLL LLQWWHULL (VHPS R VRPPD GH SU P G HF Q HU #include <stdio.h> main() { int somma, j; somma=0; j = 1; while (j <= 10) {somma = somma + j; j++; } printf(Risultato: %d\n, somma); } (VHPSLLR VFDUWWR GHLL EOODQN LLQ OOHWWWWXUD (VHPS R VFDU R GH E DQN Q H XUD char car= ; while (Car== ) { scanf("%c",&Car); }
0 (VHUFLL]LLR 0 (VHUF ] R 6FULYHUH XQ SURJUDPPD FKH FDOFROL OD PHGLD GHJOL 1 YRWL ULSRUWDWL GD XQR VWXGHQWH /* Media di n voti */ #include <stdio.h> main() { int voto,N,i; float media, sum; printf(Quanti sono i voti ?); scanf("%d",&N); sum=0; /* ripeti ...*/ printf(Dammi un voto:); scanf("%d",&voto); sum=sum+voto; /* ... per N volte */ media=sum/N; printf("Risultato: %f",media); }
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
(VHUFLL]LLR FRQWLLQXD (VHUF ] R FRQW QXD /* Media di n voti*/ #include <stdio.h> main() { int voto,N,i; float sum, media; printf(Quanti sono i voti ?); scanf("%d",&N); sum=0; i=1; while (i <= N) { /* corpo ciclo while */ printf(Dammi il voto n.%d:,sum); scanf("%d",&voto); sum=sum+voto; i=i+1; } media=sum/N; printf("Risultato: %f",media); }
/ (VHUFLL]LLR / (VHUF ] R 3URJUDPPD FKH FDOFROD LO SURGRWWR ;
< FRPH VHTXHQ]D GL VRPPH VL VXSSRQH <! ; !
INIZIO
READ: X,Y
Z:=0
SI
X=0 NO X:=X-1
ciclo
Z:=Z+Y
WRITE: Z
FINE
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
&RGLLILLFD &RG I FD /* moltiplicazione come sequenza di somme */ #include <stdio.h> main() { int X,Y,Z; printf(Dammi i fattori:); scanf("%d%d",&X,&Y); Z=0; while (X!=0) { /* corpo ciclo while */ Z=Z+Y; X=X-1; } printf("%d",Z); }
&LFOL ,QQHVWDWL
ZKLOH HVSUHVVLRQH! LVWUX]LRQH!
LVWUX]LRQH! SXRC HVVHUH XQD TXDOXQTXH VLQJROD LVWUX]LRQH VHPSOLFH R VWUXWWXUDWD HYHQWXDOPHQWH DQFKH XQD LVWUX]LRQH ZKLOH FLFOL LQQHVWDWL
/ (VHUFLL]LLR / (VHUF ] R 6L OHJJD XQ QXPHUR QDWXUDOH 1 6WDPSDUH XQD YROWD LO QXPHUR GXH YROWH LO QXPHUR 1 YROWH LO QXPHUR 1 'RPLQLR GL LQJUHVVR 1 'RPLQLR GL XVFLWD
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
#include <stdio.h> main() { int N,I,J; printf(dammi N:); scanf("%d",&N); I=1; while (I<=N) { /* corpo ciclo esterno */ printf(Prossimo valore:); printf("%d",I); J=1; while (J<I) { /* corpo ciclo interno */ printf("%d",I); J=J+1; } I=I+1; } }
LEGGI: N
I:=1
SI
I>N NO J:=1
STAMPA: I
J:=J+1
NO J>I SI I := I + 1
FINE
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
/ (VHUFL]LR 6WDELOLUH VH XQ QXPHUR QDWXUDOH 1 HC SULPR 8Q QXPHUR QDWXUDOH 1 HC SULPR VH QRQ HC GLYLVLELOH SHU DOFXQ QXPHUR LQWHUR PLQRUH GL HVVR 1RWD QRQ HC QHFHVVDULR HVHJXLUH WXWWH OH GLYLVLRQL GL 1 SHU Q PD EDVWD HVHJXLUH OH GLYLVLRQL SHU L QDWXUDOL PLQRUL R XJXDOL DOOD UDGLFH TXDGUDWD GL 1 /* Numero primo */ #include <stdio.h> #include <math.h> main() { typedef enum {false,true} boolean; int N, I; float N1; boolean primo; scanf("%d",&N); N1=sqrt(N); I=2;primo=true; while ((I<=N1) && (primo==true)) {if (((N / I) * I) == N) {primo=false;} else I=I+1; } if (primo==true) printf("numero primo"); else printf("numero non primo"); }
/ (VHUFLL]LLR / (VHUF ] R &DOFROR GHO IDWWRULDOH GL XQ QXPHUR LQWHUR QRQ QHJDWLYR 1 IDWWRULDOH IDWWRULDOH1 1 1 IDWWRULDOH1 1 /* Calcolo del fattoriale */ #include <stdio.h> #include <math.h> main() { int N, F, I; printf(Dammi N:); scanf("%d",&N); F=1; I=2; while (I <= N) { F=F*I; I=I+1; } printf("%s%d","Fattoriale: ",F); }
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
(VHPSLLR (VHPS R 'LYLVLRQH WUD QXPHUL LQWHUL SRVLWLYL DWWUDYHUVR VRPPD H VRWWUD]LRQH /* divisione tra interi positivi */ #include <stdio.h> main() { unsigned int X,Y,Quoz,Resto; scanf("%d%d",&X,&Y); Resto=X; Quoz=0; while (Resto >= Y) { Quoz=Quoz+1; Resto=Resto-Y; } printf("%d%s%d%s%d%s%d", X," diviso ", Y, " = ", Quoz, " resto ", Resto); }
,VWUX]LLRQH GR ,VWUX] RQH GR FRQVHQWH GL ULSHWHUH OLVWUX]LRQH HVHJXHQGR LO FRQWUROOR D ILQH LWHUD]LRQH 6LLQWDVVLL 6 QWDVV GR LVWUX]LRQH! ZKLOH HVSUHVVLRQH! /D FRQGL]LRQH GL ULSHWL]LRQH YLHQH YHULILFDWD DOOD ILQH GL RJQL FLFOR
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
3ULPD GHOOHVHFX]LRQH GHO FLFOR LO YDORUH GL &DU HC LQGHWHUPLQDWR &RQ LLOO ZKLLOOH &RQ ZK H &DU
ZKLOH &DU
...
Sn
VFDQI
F
&DU
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
(VHPSLLR ZKLLOOHIRU (VHPS R ZK H IRU somma = 0; /* while */ j = 1; while (j <= n) { somma=somma+j; j++; } FRQ LLOO IRU FRQ IRU somma = 0; /* for */ for(j=1;j<=n;j++) somma = somma + j;
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
)RU )RU
IRUHVSUHVVLRQH! HVSUHVVLRQH! HVSUHVVLRQH! LVWUX]LRQH!
(VHPSLLR IDWWRULLDOOH FRQ LLVWWUX]LLRQH IRU (VHPS R IDWWRU D H FRQ V UX] RQH IRU
2JQXQD GHOOH HVSUHVVLRQL SXz HVVHUH RPHVVD LO SXQWR H YLUJROD GHYH ULPDQHUH 6H PDQFD HVSUHVVLRQH VL KD XQ FLFOR LQILQLWR
/* Calcolo del fattoriale */ #include <stdio.h> #include <math.h> main() { int N, F, I; printf(Dammi N:); scanf("%d",&N); F=1; I=2; for (I=2,F=1;I<=N;I++) F=F*I; printf("%s%d","Fattoriale: ",F); }
&RVD HVHJXRQR L VHJXHQWL IRU " IRU L L Q L SULQWI IRU ^ ` G L
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
,VWUX]LLRQLL SHU LLOO WUDVIHULLPHQWR GHOO FRQWUROOOOR ,VWUX] RQ SHU WUDVIHU PHQWR GH FRQWUR R ,VWUX]LRQH EUHDN /
LVWUX]LRQH EUHDN SURYRFD O
XVFLWD LPPHGLDWD GDO FLFOR R GD XQ
LVWUX]LRQH VZLWFK LQ FXL q UDFFKLXVD
(VHPSLLR FRQWLLQXH (VHPS R FRQW QXH for (i = N; i > 0; i ) { /* Salta alla prossima ripetizione se N multiplo di i */ if (N % i) continue; /* Esci dal ciclo se i vale 55 */ if (i == 55) break; ... }
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
0 (VHUFLL]LL 0 (VHUF ] /HJJHUH XQD VHTXHQ]D GL QXPHUL LQWHUL D WHUPLQDOH H FDOFRODUQH OD VRPPD QHL VHJXHQWL FDVL /D OXQJKH]]D GHOOD VHTXHQ]D QRQ HC QRWD PD OXOWLPR YDORUH HC VHJXLWR GD XQ LQWHUR QHJDWLYR ZKLOH &RPH LO FDVR PD VLFXUDPHQWH OD VHTXHQ]D KD OXQJKH]]D PDJJLRUH R XJXDOH DG XQR GR /D VHTXHQ]D GL QXPHUL GD VRPPDUH HC SUHFHGXWD GD XQ QXPHUR LQWHUR FKH UDSSUHVHQWD OD OXQJKH]]D GHOOD VHTXHQ]D IRU
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
(VSUHVVLRQL FRPSOHPHQWL
2SHUDWRULL VXLL ELLW 2SHUDWRU VX E W !! _ A a VKLIW D VLQLVWUD VKLIW D GHVWUD DQG ELW D ELW RU LQFOXVLYR ELW D ELW RU HVFOXVLYR ELW D ELW FRPSOHPHQWR D N VKLIW D VLQLVWUD GL ELW HTXLYDOH D N
N!! VKLIW D GHVWUD GL ELW HTXLYDOH D N
3UHFHGHQ]D HG $VVRFLLDWLLYLLWDC GHJOOLL 2SHUDWRULL 3UHFHGHQ]D HG $VVRF DW Y WDC GHJ 2SHUDWRU /D SUHFHGHQ]D GHJOL RSHUDWRUL q VWDELOLWD GDOOD VLQWDVVL GHOOH HVSUHVVLRQL DE
F HTXLYDOH VHPSUH D D E
F /
DVVRFLDWLYLWj q DQFRUD VWDELOLWD GDOOD VLQWDVVL GHOOH HVSUHVVLRQL DEF HTXLYDOH VHPSUH D D E F
2SHUDWRUH FRQGLL]LLRQDOOH 2SHUDWRUH FRQG ] RQD H " FRQGL]LRQH " SDUWH9HUD SDUWH)DOVH OD SDUWH9HUD YLHQH YDOXWDWD VROR VH OD FRQGL]LRQH q YHULILFDWD YDORUH GLYHUVR GD OD SDUWH)DOVH YLHQH YDOXWDWD VROR VH OD FRQGL]LRQH QRQ q YHULILFDWD YDORUH XJXDOH D ]HUR [ N \ " \ ,1),1,7< D E " D E DVVHJQD LO PLQRUH
,/ /,1*8$**,2 &
,/ /,1*8$**,2 &
9HWWRUL
8Q YHWWRUH HC XQ LQVLHPH RUGLQDWR GL HOHPHQWL WXWWL GHOOR VWHVVR WLSR &DUDWWHULLVWLLFKH GHOO YHWWRUH &DUDWWHU VW FKH GH YHWWRUH
6HPSOLFL
6WUXWWXUDWL
RPRJHQHLWDC RUGLQDPHQWR RWWHQXWR PHGLDQWH GHL YDORUL LQWHUL LQGLFL FKH FRQVHQWRQR GL DFFHGHUH DG RJQL HOHPHQWR GHOOD VWUXWWXUD
1RQ3ULPLWLYL
Q
; < =
7LLSLL GLL GDWR VWUXWWXUDWLL 7 S G GDWR VWUXWWXUDW , GDWL VWUXWWXUDWL R VWUXWWXUH GL GDWL VRQR RWWHQXWL PHGLDQWH FRPSRVL]LRQH GL DOWUL GDWL GL WLSR VHPSOLFH RSSXUH VWUXWWXUDWR 7LLSLL VWUXWWXUDWLL LLQ & 7 S VWUXWWXUDW Q & YHWWRUL R DUUD\ UHFRUG VWUXFW UHFRUG YDULDQWL XQLRQ
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
374
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
375
9HWWRUL
,QGLLFLL ,QG F HC SRVVLELOH ULIHULUH XQD VLQJROD FRPSRQHQWH VSHFLILFDQGR O
LQGLFH L FRUULVSRQGHQWH 9>L@ /
LQGLFH GHYH HVVHUH GL WLSR LQWHJUDO W\SH FLRHC LQW FKDU R HQXP VH 1 HC OD GLPHQVLRQH LO GRPLQLR GHJOL LQGLFL HC >1@ $G HVHPSLLR $G HVHPS R
GRYH LGWLSR! HC OLGHQWLILFDWRUH GL WLSR GHJOL HOHPHQWL FRPSRQHQWL GLPHQVLRQH! UDSSUHVHQWD LO QXPHUR GHJOL HOHPHQWL FRPSRQHQWL HC XQD FRVWDQWH LQWHUD LGYDULDELOH! HC OLGHQWLILFDWRUH GHOOD YDULDELOH VWUXWWXUDWD FRVLC GHILQLWD
(VHPSLLR (VHPS R LQW 9>@ YHWWRUH GL GLHFL HOHPHQWL LQWHUL + /D GLPHQVLRQH QXPHUR GL HOHPHQWL GHO YHWWRUH GHYH HVVHUH XQD FRVWDQWH LQWHUD QRWD DO PRPHQWR GHOOD GLFKLDUD]LRQH LQW 1 FKDU 9 >1@ ! HC VEDJOLDWR
int A[3];
0 1 2
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
376
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
377
9HWWRUL
2SHUDWRULL 2SHUDWRU ,Q & QRQ HVLVWRQR RSHUDWRUL VSHFLILFL SHU L YHWWRUL SHU RSHUDUH VXL YHWWRUL q QHFHVVDULR RSHUDUH VLQJRODUPHQWH VXJOL HOHPHQWL FRPSRQHQWL FRHUHQWHPHQWH FRQ LO WLSR DG HVVL DVVRFLDWR + QRQ HC SRVVLELOH O
DVVHJQDPHQWR GLUHWWR WUD YHWWRUL int V[10], W[10]; V=W; /* e` scorretto! */ + 1RQ HC SRVVLELOH OHJJHUH R VFULYHUH XQ LQWHUR YHWWRUH D SDUWH FRPH YHGUHPR OH VWULQJKH RFFRUUH OHJJHUHVFULYHUH OH VXH FRPSRQHQWL DG HVHPSLR SHU OHJJHUH XQ YHWWRUH int V[100]; int i; for(i=0; i<100; i++) { printf(valore %d-simo? , i); scanf(%d, &V[i]); }
*HVWLLRQH GHJOOLL HOOHPHQWLL GLL XQ YHWWRUH *HVW RQH GHJ H HPHQW G XQ YHWWRUH /H VLQJROH FRPSRQHQWL GL XQ YHWWRUH SRVVRQR HVVHUH PDQLSRODWH FRHUHQWHPHQWH FRQ LO WLSR DG HVVH DVVRFLDWR $G HVHPSLLR LLQWW $>@ $G HVHPS R Q $>@ + DJOL HOHPHQWL GL $ HC SRVVLELOH DSSOLFDUH WXWWL JOL RSHUDWRUL GHILQLWL SHU JOL LQWHUL 4XLQGL A[i] =n%i; A[10]=A[0]+7; scanf("%d", &A[i]);
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
378
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
379
9HWWRUL
+ /
LQGLFH GHYH HVVHUH GL WLSR LQWHJUDO W\SH LQW FKDU R HQXP $G HVHPSLR #include <stdio.h> typedef enum{blu, giallo, rosso} indice; main() {indice k=blu; int A[3]; for(k=blu; k<=rosso; k++) { printf("Dammi elemento %d: ", k); scanf("%d", &A[k]); } printf("Valore %d:%d\n",blu,A[blu]); printf("Valore%d:%d\n",giallo,A[giallo]); printf("Valore %d:%d\n",rosso,A[rosso]); }
+ 9 H 9 VRQR YDULDELOL GL WLSR 9HWWRUL RJQXQR + 9 H 9 SRVVRQR HVVHUH XWLOL]]DWL FRPH YHWWRUL GL LQWHUL
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
380
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
381
9HWWRUL
5LLDVVXPHQGR 5 DVVXPHQGR 9DULLDELLOOLL GLL WLLSR YHWWRUH 9DU DE G W SR YHWWRUH WLSRFRPSRQHQWH! QRPH!>GLP!@ 9HWWRUH FRPH FRVWUXWWRUH GLL WLLSR 9HWWRUH FRPH FRVWUXWWRUH G W SR W\SHGHI WLSRFRPSRQHQWH! WLSRYHWWRUH! >GLP!@ 9LLQFROOLL 9 QFR GLP! HC XQD FRVWDQWH LQWHUD WLSRFRPSRQHQWH! H
XQ TXDOVLDVL WLSR VHPSOLFH R VWUXWWXUDWR 8VR 8VR LO YHWWRUH H
XQD VHTXHQ]D GL GLPHQVLRQH ILVVDWD GLP! GL FRPSRQHQWL GHOOR VWHVVR WLSR WLSRBFRPSRQHQWH! OD VLQJROD FRPSRQHQWH LHVLPD GL XQ YHWWRUH 9 H
LQGLYLGXDWD GDOO
LQGLFH LHVLPR VHFRQGR OD QRWD]LRQH 9>L@ + /LQWHUYDOOR GL YDULD]LRQH GHJOL LQGLFL HC >GLP!@ VXL VLQJROL HOHPHQWL HC SRVVLELOH RSHUDUH VHFRQGR OH PRGDOLWDC SUHYLVWH GDO WLSR WLSRBFRPSRQHQWH!
,QL]LDOL]]D]LRQH GL XQ YHWWRUH
0HGLLDQWH XQ FLLFOOR 0HG DQWH XQ F F R 3HU DWWULEXLUH XQ YDORUH LQL]LDOH DJOL HOHPHQWL GL XQ YHWWRUH VL SXRC DWWXDUH FRQ XQD VHTXHQ]D GL DVVHJQDPHQWL DOOH 1 FRPSRQHQWL GHO YHWWRUH $G (VHPSLLR $G (VHPS R #define N 30 typedef int vettore [N]; vettore v; int i; ... for(i=0; i<N;i++) v[i]=0; + /D GHILQH UHQGH PRGLILFDELOH LO SURJUDPPD SLXC IDFLOPHQWH
,QLL]LLDOOLL]]D]LLRQH LLQ IDVH GLL GHILLQLL]LLRQH ,Q ] D ]]D] RQH Q IDVH G GHI Q ] RQH ,Q DOWHUQDWLYD HC SRVVLELOH LQL]LDOL]]DUH XQ YHWWRUH LQ IDVH GL GHILQL]LRQH (VHPSLLR (VHPS R int v[10] = {1,2,3,4,5,6,7,8,9,10}; /* v[0] = 1; v[1]=2;...v[9]=10; */
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
382
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
383
(VHPSLLR (VHPS R 6RPPD GL GXH YHWWRUL VL UHDOL]]L XQ SURJUDPPD FKH GDWL GD VWDQGDUG LQSXW JOL HOHPHQWL GL GXH YHWWRUL $ H % HQWUDPEL GL LQWHUL FDOFROL H VWDPSL JOL HOHPHQWL GHO YHWWRUH & DQFRUD GL LQWHUL RWWHQXWR FRPH OD VRPPD GL $ H % #include <stdio.h> typedef int vettint[10]; main() { vettint A,B,C; int i; /* lettura dei dati */ for(i=0; i<10; i++) { printf(valore di A[%d] ?, i); scanf(%d, &A[i]); } for(i=0; i<10; i++) { printf(valore di B[%d] ?, i); scanf(%d, &B[i]); } /* calcolo del risultato */ for(i=0; i<10; i++) C[i]=A[i]+B[i]; /* stampa del risultato */ for(i=0; i<10; i++) printf(C[%d]=%d\n,i, C[i]); }
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
384
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
385
(VHPSLLR (VHPS R /HJJHUH GD LQSXW DOFXQL FDUDWWHUL DOIDEHWLFL PDLXVFROL VL VXSSRQJDQR DO PDVVLPR H ULVFULYHUOL LQ XVFLWD HYLWDQGR GL ULSHWHUH FDUDWWHUL JLDC VWDPSDWL 6ROOX]LLRQH 6R X] RQH ZKLOH FL VRQR FDUDWWHUL GD OHJJHUH! ^ OHJJL FDUDWWHUH! LI QRQ JLDC PHPRUL]]DWR! PHPRUL]]DOR LQ XQD VWUXWWXUD GDWL! ` ZKLOH FL VRQR HOHPHQWL GHOOD VWUXWWXUD GDWL! VWDPSD HOHPHQWR! 2FFRUUH XQD VWUXWWXUD GDWL LQ FXL PHPRUL]]DUH VHQ]D ULSHWL]LRQL JOL HOHPHQWL OHWWL LQ LQJUHVVR FKDU $>@
&RGLLILLFD &RG I FD #include <stdio.h> main() { char A[10], c; int i, j, inseriti, trovato; inseriti=0; printf("\n Dammi 10 caratteri: "); for (i=0; (i<10); i++) { scanf("%c", &c); /* verifica unicita: */ trovato=0; for(j=0;(j<inseriti)&&!trovato;j++) if (c==A[j]) trovato=1; if (!trovato) { A[inseriti]=c; inseriti++; } } printf("Inseriti %d caratteri \n", inseriti); for (i=0; i<inseriti; i++) printf(%c\n, A[i]); }
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
386
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
387
9HWWRUL PXOWLGLPHQVLRQDOL
1RQ YL VRQR YLQFROL VXO WLSR GHJOL HOHPHQWL GL XQ YHWWRUH + *OL HOHPHQWL GL XQ YHWWRUH SRVVRQR HVVHUH D ORUR YROWD GL WLSR YHWWRUH LQ TXHVWR FDVR VL SDUOD GL YHWWRUL PXOWLGLPHQVLRQDOL R PDWULFL 'HILLQLL]LLRQH GLL YHWW PXOOWLLGLLPHQVLLRQDOOLL PDWULLFLL 'HI Q ] RQH G YHWW PX W G PHQV RQD PDWU F
LGWLSR! LGYDULDEOH! >GLP@ >GLP@ >GLPQ@
$G HVHPSLLR $G HVHPS R float M[20][30]; HC XQ YHWWRUH GL HOHPHQWL RJQXQR GHL TXDOL HC XQ YHWWRUH GL HOHPHQWL RJQXQR GHL TXDOL HC XQ IORDW
0 1 ..... 0 1 . . . . 19 29
6LLJQLLILLFDWR 6 JQ I FDWR LGYDULDELOH! HC LO QRPH GL XQD YDULDELOH GL WLSR YHWWRUH GL GLP FRPSRQHQWL RJQXQD GHOOH TXDOL HC XQ YHWWRUH GL GLP FRPSRQHQWL RJQXQD GHOOH TXDOL HC XQ YHWWRUH GL RJQXQD GHOOH TXDOL HC XQ YHWWRUH GL GLPQ FRPSRQHQWL GL WLSR LGWLSR!
0
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
388
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
389
'LLFKLLDUD]LLRQH GLL WLLSLL YHWWRULL PXOOWLLGLLPHQVLLRQDOOLL ' FK DUD] RQH G W S YHWWRU PX W G PHQV RQD
W\SHGHI LGWLSR! LGWLSRYHWWRUH! >GLP@ >GLP@ >GLPQ@
,QL]LDOL]]D]LRQH GL PDWULFL
$QFKH QHO FDVR GL YHWWRUL PXOWLGLPHQVLRQDOL OLQL]LDOL]]D]LRQH VL SXRC HIIHWWXDUH LQ IDVH GL GHILQL]LRQH WHQHQGR FRQWR FKH LQ TXHVWR FDVR JOL HOHPHQWL VRQR D ORUR YROWD YHWWRUL $G HVHPSLR int matrix[4][4] ={{1,0,0,0}, {0,1,0,0}, {0,0,1,0}, {0,0,0,1}}; /D PHPRUL]]D]LRQH DYYLHQH SHU ULJKH PDWUL[
(VHPSLL (VHPS typedef float MatReali [20] [30]; MatReali Mat; /*Mat e un vettore di venti elementi, ognuno dei quali e un vettore di trenta reali; quindi, matrice di 2030 di reali*/ $OOWUR HVHPSLLR $ WUR HVHPS R typedef float VetReali[30]; typedef VetReali MatReali[20]; MatReali Mat;
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
390
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
391
(VHPSLLR OOHWWWWXUD H VWWDPSD GLL PDWWULLFLL (VHPS R H XUD H V DPSD G PD U F #include <stdio.h> #define R 10 #define C 25 typedef float matrice[R][C]; main() { matrice M; int i, j; /* lettura: */ for(i=0; i<R; i++) for(j=0; j<C; j++) { printf(M[%d][%d]? , i, j); scanf(%f, &M[i][j]); } /*stampa: */ for(i=0; i<R; i++) { for(j=0; j<C; j++) printf(%f\t, M[i][j); printf(\n); } }
0 (VHUFLL]LLR 0 (VHUF ] R 3URJUDPPD FKH HVHJXH LO SURGRWWR ULJKH FRORQQH GL PDWULFL TXDGUDWH 11 D YDORUL LQWHUL &>LM@ N 1 $>L@>N@
%>N@>M@ #include <stdio.h> #define N 2 main() { typedef int Matrici[N][N]; int Somma; int i,j,k; Matrici A,B,C; /* inizializzazione di A e B */ for (i=0; i<N; i++) for (j=0; j<N; j++) scanf("%d",&A[i][j]); for (i=0; i<N; i++) for (j=0; j<N; j++) scanf("%d",&B[i][j]); /* prodotto matriciale */ for (i=0; i<N; i++) for (j=0; j<N; j++) { Somma=0; for (k=0; k<N; k++) Somma=Somma+A[i][k]*B[k][j]; C[i][j]=Somma; } /* stampa */ for (i=0; i<N; i++) for (j=0; j<N; j++) printf("%d",C[i][j]); }
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
392
IL LINGUAGGIO C
393
0 (VHUFLL]LLR 0 (VHUF ] R 'DWL Q YDORUL LQWHUL IRUQLWL LQ RUGLQH TXDOXQTXH VWDPSDUH LQ XVFLWD O
HOHQFR GHL YDORUL GDWL LQ RUGLQH FUHVFHQWH + (C QHFHVVDULR PDQWHQHUH LQ PHPRULD WXWWL L YDORUL GDWL SHU SRWHU HIIHWWXDUH L FRQIURQWL QHFHVVDUL 8WLOL]]LDPR L YHWWRUL 2UGLLQDPHQWR GLL XQ YHWWRUH 2UG QDPHQWR G XQ YHWWRUH (VLVWRQR YDUL SURFHGLPHQWL ULVROXWLYL Y DOJRULWPL GL RUGLQDPHQWR XQR GL TXHVWL HC LO 0HWRGR GHL 0DVVLPL VXFFHVVLYL 'DWR XQ YHWWRUH LQW 9>GLP@ HOHJJL XQ HOHPHQWR FRPH PDVVLPR WHPSRUDQHR 9>PD[@ FRQIURQWD LO YDORUH GL 9>PD[@ FRQ WXWWL JOL DOWUL HOHPHQWL GHO YHWWRUH 9>L@ VH 9>L@!9>PD[@ PD[ L TXDQGR KDL ILQLWR L FRQIURQWL VH PD[ GLP VFDPELD 9>PD[@ FRQ 9>GLP@ LO PDVVLPR RWWHQXWR GDOOD VFDQVLRQH YD LQ XOWLPD SRVL]LRQH ULGXFL LO YHWWRUH GL XQ HOHPHQWR GLP GLP H VH GLP! WRUQD D
&RGLLILLFD &RG I FD 3ULPR OLYHOOR GL VSHFLILFD #include <stdio.h> #define dim 10 main() { int V[dim], i,j, max, tmp, quanti; /* lettura dei dati */ /*ordinamento */ for(i=0; i<dim; i++) {quanti=dim-i; /*ciclo di scansione del vettore i-simo (di dimensione=quanti) */ } } /*stampa del vettore V ordinato */ }
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
394
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
395
&RGLLILLFD &RG I FD #include <stdio.h> #define dim 10 main() { int V[dim], i,j, max, tmp, quanti; /* lettura dei dati */ for (i=0; i<dim; i++) { printf("valore n. %d: ",i); scanf("%d", &V[i]); } /*ordinamento */ for(i=0; i<dim; i++) {quanti=dim-i; max=quanti-1; for( j=0; j<quanti; j++) { if (V[j]>V[max]) max=j; } if (max<quanti-1) { /*scambio */ tmp=V[quanti-1]; V[quanti-1]=V[max]; V[max]=tmp; } } /*stampa */ for(i=0; i<dim; i++) printf("Valore di V[%d]=%d\n", i, V[i]); }
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C 396
?
"
"
RSSXUH
char A[10]="bologna"; /* il terminatore \0 e aggiunto automaticamente */
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
397
(VHPSLLR (VHPS R 3URJUDPPD FKH FDOFROD OD OXQJKH]]D FLRHC LO QXPHUR GL FDUDWWHUL VLJQLILFDWLYL GL XQD VWULQJD #include <stdio.h>
(VHPSLLR (VHPS R 3URJUDPPD FKH FRQFDWHQD GXH VWULQJKH GDWH #include <stdio.h> /* concatenamento di due stringhe */
/* lunghezza di una stringa */ main() { char str[81]; /* str ha al max. 80 caratteri*/ int i; printf("\nImmettere una stringa:"); scanf("%s",&str); /* %s formato stringa */ for (i=0; str[i]!=\0; i++); printf("\nLunghezza: \t %d\n",i); } 9HQJRQR DFTXLVLWL L FDUDWWHUL LQ LQJUHVVR ILQR DO SULPR FDUDWWHUH GL VSD]LDWXUD ELDQFR QHZOLQH WDEXOD]LRQH VDOWL SDJLQD + OD OXQJKH]]D GL XQD VWULQJD VL SXRC DQFKH FDOFRODUH XWLOL]]DQGR OD IXQ]LRQH VWDQGDUG GL OLEUHULD VWUOHQ SUHYLD LQFOXVLRQH GL VWULQJK
printf("\nPrima stringa: \t"); scanf("%s",&s1); printf("\nSeconda stringa: \t"); scanf("%s",&s2); for (l=0; s1[l]!=\0; l++); for (i=0; s2[i]!=\0 && i+l<79; i++) s1[i+l]=s2[i]; s1[i+l]=\0; /* fine stringa */
printf("\nStringa:\t%s\n",s1); } + LO FRQFDWHQDPHQWR GL GXH VWULQJKH VL SXRC DQFKH RWWHQHUH XWLOL]]DQGR OD IXQ]LRQH VWDQGDUG GL OLEUHULD VWUFDW SUHYLD LQFOXVLRQH GL VWULQJK
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
398
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
399
&RQIURQWR WUD VWULLQJKH &RQIURQWR WUD VWU QJKH LQW VWUFPSFKDU VWU> @ FKDU VWU> @ HVHJXH LO FRQIURQWR WUD OH GXH VWULQJKH GDWH VWU H VWU 5HVWLWXLVFH VH OH GXH VWULQJKH VRQR LGHQWLFKH XQ YDORUH QHJDWLYRDG HVHPSLR VH VWU SUHFHGH VWU LQ RUGLQH OHVVLFRJUDILFR XQ YDORUH SRVLWLYR DG HVHPSLR VH VWU SUHFHGH VWU LQ RUGLQH OHVVLFRJUDILFR
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
400
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
401
$G HVHPSLR char S1[10]="bologna"; char S2[10]="napoli"; int k; k=strcmp(S1,S2); /* k < 0 */ k=strcmp(S1,S1); /* k=0*/ k=strcmp(S2,S1); /* k>0 */ &RQFDWHQDPHQWR GLL VWULLQJKH &RQFDWHQDPHQWR G VWU QJKH VWUFDW FKDU VWU> @ FKDU VWU> @ FRQFDWHQD OH VWULQJKH GDWH VWU H VWU ,O ULVXOWDWR GHO FRQFDWHQDPHQWR HC LQ VWU $G HVHPSLR char S1[10]="reggio"; char S2[10]="emilia"; strcat(S1, S2); /*S1="reggioemilia"*/ &RSLLD GLL VWULLQJKH &RS D G VWU QJKH VWUFS\FKDU VWU> @ FKDU VWU> @ FRSLD OD VWULQJD VWU LQ VWU $G HVHPSLR char S1[10]="Giuseppe"; char S2[10]; strcpy(S1,S2); /* S1="Giuseppe"*/
,QSXW2XWSXW D FDUDWWHUL
, GLVSRVLWLYL GL LQJUHVVR HG XVFLWD VRQR YLVWL FRPH ILOH GL FDUDWWHUL ILOH WHVWR WHUPLQDWL GD XQD PDUFD VSHFLDOH GL HQGRIILOH (2) HG RUJDQL]]DWL HYHQWXDOPHQWH VX SLXC OLQHH QHZOLQH
?Q
a 7 1 3.7 b 57 * c 6
testina lettura
fine linea
(VLVWRQR IXQ]LRQL OLEUHULD VWDQGDUG SHU OHJJHUH H VFULYHUH VLQJROL FDUDWWHUL JHWFKDU UHVWLWXLVFH LO SURVVLPR FDUDWWHUH GLVSRQLELOH LQ LQJUHVVR SXWFKDU VWDPSD XQ FDUDWWHUH VX RXWSXW YDULDELOH! JHWFKDU
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
402
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
403
SXWFKDUJHWFKDU
JHWFKDU JHWFKDU LQW JHWFKDUYRLG QRQ ULFKLHGH DUJRPHQWL H UHVWLWXLVFH FRPH ULVXOWDWR LO FDUDWWHUH OHWWR FRQYHUWLWR LQ LQW R (2) LQ FDVR GL HQGRIILOH R HUURUH
(VHPSLLR (VHPS R 3URJUDPPD FKH FRSLD GD LQSXW OD WDVWLHUD VX RXWSXW LO YLGHR #include <stdio.h> main() { char c; c=getchar(); while (c != EOF) { putchar(c); c=getchar(); } } + /D IXQ]LRQH JHWFKDU FRPLQFLD D UHVWLWXLUH FDUDWWHUL VROR TXDQGR q VWDWR EDWWXWR LO WDVWR GL LQYLR LQSXW EXIIHUL]]DWR 9HUVLLRQH SLLXC VLLQWHWLLFD 9HUV RQH S XC V QWHW FD #include <stdio.h> main() { char c; while ((c = getchar()) != EOF) putchar(c); }
SXWFKDU SXWFKDU LQW SXWFKDUFKDU F ULFKLHGH XQ DUJRPHQWR LO FDUDWWHUH GD VFULYHUH H UHVWLWXLVFH FRPH ULVXOWDWR LO FDUDWWHUH VFULWWR R (2) LQ FDVR GL HUURUH
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
404
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
405
LLQSXW HC $G HVHPS R VH QSXW HC Nel mezzo del cammin di nostra vita, mi ritrovai in una selva oscura /HJJHQGR FRQ /HJJHQGR FRQ char s1[80], s2[80]; scanf("%s", &s1); /* s1 vale "Nel" */ scanf("%s", &s2); /*s2 vale "mezzo"*/ + OD VFDQI QRQ HC DGDWWD D OHJJHUH LQWHUH OLQHH FKH SRVVRQR FRQWHQHUH VSD]L ELDQFKL FDUDWWHUL GL WDEXOD]LRQH HWF
3HU TXHVWR PRWLLYR LLQ & HVLLVWRQR IXQ]LLRQLL VSHFLLILLFKH SHU 3HU TXHVWR PRW YR Q & HV VWRQR IXQ] RQ VSHF I FKH SHU IDUH ,2 GLL OOLLQHH IDUH , 2 G QHH JHWV SXWV
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
406
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
407
LLQSXW $G HVHPS R GDWR QSXW Nel mezzo del cammin di nostra vita, mi ritrovai in una selva oscura char S[80]; gets(S); 6 YDOH
"Nel mezzo del cammin di nostra vita,"
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
408
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
409
,O 5HFRUG
6L YXROH UHDOL]]DUH O
DVWUD]LRQH FDUDWWHUL]]DWD GDL VHJXHQWL DWWULEXWL 1RPH &RJQRPH 5HGGLWR $OLTXRWD FRQWULEXHQWH
&RQ JOL VWUXPHQWL YLVWL ILQRUD SHU RJQL FRQWULEXHQWH HC QHFHVVDULR LQWURGXUUH YDULDELOL FKDU1RPH>@ &RJQRPH>@ LQW 5HGGLWR $OLTXRWD VROX]LRQH VFRPRGD H QRQ DVWUDWWD OH TXDWWUR YDULDELOL VRQR LQGLSHQGHQWL WUD GL ORUR (C QHFHVVDULR XQ FRVWUXWWR FKH FRQVHQWD O
DJJUHJD]LRQH GHL DWWULEXWL QHOO
DVWUD]LRQH FRQWULEXHQWH LO UHFRUG
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
410
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
411
20( 1
&2*120(
5('',72
$/,4827$
)RUPDOOPHQWH )RUPD PHQWH ,O UHFRUG HC XQ WLSR VWUXWWXUDWR LO FXL GRPLQLR VL RWWLHQH PHGLDQWH SURGRWWR FDUWHVLDQR GDWL Q LQVLHPL $F $F $FQ LO SURGRWWR FDUWHVLDQR WUD HVVL $F $F $FQ FRQVHQWH GL GHILQLUH XQ WLSR GL GDWR VWUXWWXUDWR LO UHFRUG L FXL HOHPHQWL VRQR QSOH RUGLQDWH GRYH DFL$FL DF DF DFQ
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
412
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
413
,O WLSR VWUXFW
2SHUDWRULL 2SHUDWRU *OL XQLFL RSHUDWRUL SUHYLVWL SHU GDWL GL WLSR VWUXFW VRQR O
RSHUDWRUH GL DVVHJQDPHQWR HC SRVVLELOH ODVVHJQDPHQWR GLUHWWR WUD UHFRUG GL WLSR HTXLYDOHQWH RSHUDWRUL GL XJXDJOLDQ]D H GLVXJXDJOLDQ]D UHOD]LRQDOH
$G HVHPSLLR $G HVHPS R struct { char Nome[20]; char Cognome[20]; int Reddito; int Aliquota; }contribuente;
$FFHVVR DLL FDPSLL $FFHVVR D FDPS (C SRVVLELOH DFFHGHUH H PDQLSRODUH L VLQJROL FDPSL GL XQ UHFRUG 3HU DFFHGHUH DL FDPSL GL XQ UHFRUG LQ & VL XVD OD QRWD]LRQH SRVWILVVD LGYDULDELOH!FRPSRQHQWH! LQGLFD LO YDORUH GHO FDPSR FRPSRQHQWH! GHOOD YDULDELOH LGYDULDELOH! , VLQJROL FDPSL SRVVRQR HVVHUH PDQLSRODWL FRQ JOL RSHUDWRUL SUHYLVWL SHU LO WLSR DG HVVL DVVRFLDWR
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
414
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
415
,QL]LDOL]]D]LRQH GL UHFRUG
(C SRVVLELOH LQL]LDOL]]DUH L UHFRUG LQ IDVH GL GHILQL]LRQH $G HVHPSLLR $G HVHPS R struct { char Nome[20]; char Cognome[20]; int Reddito; int Aliquota; }p=("Mario","Rossi",17000,10);
tipodata data; unsigned int anno=1999; data.anno=anno; data.mese=1; data.giorno=6; + *OL LGHQWLILFDWRUL GL FDPSR GL XQ UHFRUG GHYRQR HVVHUH GLVWLQWL WUD ORUR PD QRQ QHFHVVDULDPHQWH GLYHUVL GD DOWUL LGHQWLILFDWRUL DG HV DQQR
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
416
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
417
, 5HFRUG LQ &
5LLDVVXPHQGR 5 DVVXPHQGR 6LQWDVVL
>W\SHGHI@ VWUXFW ^
9HWWRUL H UHFRUG
1RQ FL VRQR YLQFROL ULJXDUGR DO WLSR GHJOL HOHPHQWL GL XQ YHWWRUH VL SRVVRQR UHDOL]]DUH DQFKH YHWWRUL GL UHFRUG WDEHOOH $G HVHPSLLR $G HVHPS R typedef struct { char Nome[20]; char Cognome[20]; int Reddito; int Aliquota; } Contribuente; contribuente archivio[1000]; + archivio HC XQ YHWWRUH GL HOHPHQWL FLDVFXQR GHL TXDOL HC GL WLSR contribuente YHWWRUH GL UHFRUG VWUXWWXUD WDEHOODUH 1RPH &RJQRPH 5HGGLWR $OLTXRWD
8VR 8VR
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
418
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
419
9HWWRUL H 5HFRUG
$OOR VWHVVR PRGR VL SRVVRQR IDUH UHFRUG GL UHFRUG H UHFRUG GL YHWWRUL DG HVHPSLR typedef struct{ int giorno; int mese; int anno; }data typedef struct{ char nome[20]; char cognome[40]; data data_nasc; } persona; persona P; P.data_nasc.giorno=25; P.data_nasc.mese=3; P.data_nasc.anno=1992; 6WUXWWXUDOH
(TXLYDOHQ]D GL WLSR
9DULDELOL FRQ OD VWHVVD VWUXWWXUD LQWHUQD VRQR FRQVLGHUDWH HTXLYDOHQWL DQFKH VH QRQ KDQQR OR VWHVVR LGHQWLILFDWRUH GL WLSR 6RQR HTXLYDOHQWL VROR YDULDELOL FKH IDQQR ULIHULPHQWR DOOR VWHVVR LGHQWLILFDWRUH GL WLSR
1RPLQDOH
+ ,Q & QRQ VL VSHFLILFD TXDOH WLSR GL HTXLYDOHQ]D YHQJD DGRWWDWR HVLVWRQR UHDOL]]D]LRQL GHO OLQJXDJJLR FKH DGRWWDQR HTXLYDOHQ]D VWUXWWXUDOH DOWUH HTXLYDOHQ]D QRPLQDOH 3HU JDUDQWLUH OD SRUWDELOLWDC XVDUH VHPSUH HTXLYDOHQ]D QRPLQDOH
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
420
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
421
(TXLLYDOOHQ]D VWUXWWXUDOOH (TX YD HQ]D VWUXWWXUD H typedef struct {float x; float y; }coordinate; coordinate A, C; struct {float x; float y; }B; $ & H % KDQQR OOR VWHVVR WLLSR $ & H % KDQQR R VWHVVR W SR $ % $ & OHFLWD OHFLWD
(TXLLYDOOHQ]D QRPLLQDOOH (TX YD HQ]D QRP QD H typedef struct {float x; float y; }coordinate; coordinate A, B; struct {float x; float y; }C; $ % KDQQR OR VWHVVR WLSR & YLHQH FRQVLGHUDWR GL WLSR GLYHUVR $ % OHFLWD $ & QRQ OHFLWD
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
422
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
423
(VHUFLL]LLR (VHUF ] R 5HDOL]]DUH XQ SURJUDPPD FKH OHWWH GD LQSXW OH FRRUGLQDWH GL XQ SXQWR 3 GHO SLDQR VLD LQ JUDGR GL DSSOLFDUH D 3 DOFXQH WUDVIRUPD]LRQL JHRPHWULFKH WUDVOD]LRQH H SURLH]LRQL VXL GXH DVVL #include <stdio.h> main() { typedef struct{float x,y;}punto; punto P; unsigned int op; float Dx, Dy; /* si leggono le coordinate da input i dati e le si memorizza in P */ printf("ascissa? "); scanf("%f",&P.x); printf("ordinata? "); scanf("%f",&P.y); /* lettura delloperazione richiesta: 0: termina 1: proietta sullasse x 2: proietta sullasse y 3: trasla di Dx, Dy */ printf("%s\n","operazione(0,1,2,3)?"); scanf("%d",&op);
switch (op) {case 1: P.y= 0;break; case 2: P.x= 0; break; case 3:printf("%s","Traslazione?); scanf("%f%f",&Dx,&Dy); P.x=P.x+Dx; P.y=P.y+Dy; break; default: printf("errore!"); } printf("%s\n","nuove coordinate "); printf("%f\t%f\n",P.x,P.y); }
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
424
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
425
0 (VHUFLL]LLR 0 (VHUF ] R 6FULYHUH XQ SURJUDPPD FKH DFTXLVLVFD L GDWL UHODWLYL DJOL VWXGHQWL GL XQD FODVVH QRPH HWD YRWL UDSSUHVHQWD L YRWL GHOOR VWXGHQWH LQ PDWHULH LWDOLDQR PDWHPDWLFD LQJOHVH LO SURJUDPPD GHYH VXFFHVVLYDPHQWH FDOFRODUH H VWDPSDUH SHU RJQL VWXGHQWH OD PHGLD GHL YRWL RWWHQXWL QHOOH PDWHULH #include <stdio.h> typedef enum {ita, mat, ing}materie; typedef struct { char nome[30]; int eta; int voto[3]; } studente; main() { studente classe[20]; float m; int i; materie j; /* lettura dati */ for(i=0;i<20; i++) { scanf("%s%d", &classe[i].nome, classe[i].eta); for(j=ita; j<=ing; j++) scanf("%d", &classe[i].voto[j]); }
/* stampa delle medie */ for(i=0;i<20; i++) { for(m=0, j=ita; j<=ing; j++) m+=classe[i].voto[j]); printf("media di %s: %d\n", classe[i].nome, m); } }
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
426
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
427
8QLRQH GLVFULPLQDWD
/XQLRQH GLVFULPLQDWD R UHFRUG YDULDQWH HC XQ WLSR GL GDWR SHU LO TXDOH VRQR SRVVLELOL GHILQL]LRQL GLIIHUHQWL HG LQ DOWHUQDWLYD WUD ORUR RJQL DOWHUQDWLYD YLHQH GHWWD YDULDQWH $G HVHPSLLR $G HVHPS R XQD ILJXUD JHRPHWULFD SLDQD SXz HVVHUH UDSSUHVHQWDWD LQ PRGR GLYHUVR D VHFRQGD GHO WLSR 3HU HVHPSLR XQ WULDQJROR q UDSSUHVHQWDWR GDOOD WHUQD GHL VXRL ODWL XQ TXDGUDWR q UDSSUHVHQWDWR GDO ODWR XQ UHWWDQJROR q UDSSUHVHQWDWR GDOOD FRSSLD GHL VXRL ODWL XQD FLUFRQIHUHQ]D q UDSSUHVHQWDWD GDO VXR UDJJLR 0HGLDQWH OXQLRQH GLVFULPLQDWD VL SXz UHDOL]]DUH XQ WLSR GL GDWR GRWDWR GL TXDWWUR UDSSUHVHQWD]LRQL DOWHUQDWLYH XQD SHU LO WULDQJROR XQD SHU LO TXDGUDWR XQD SHU LO UHWWDQJROR HG XQD SHU OD FLUFRQIHUHQ]D FKH LQ JHQHUDOH UDSSUHVHQWD XQD ILJXUD JHRPHWULFD + ,Q & OXQLRQH GLVFULPLQDWD GL WLSL VWUXWWXUDWL YLHQH UHDOL]]DWD DWWUDYHUVR LO FRVWUXWWRUH GL WLSR XQLRQ
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
428
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
429
$G HVHPSLLR $G HVHPS R union{ float raggio_circ; float lati_rettangolo[2]; float lati_triangolo[3]; float lato_quadrato; }oggetto;
8QLRQ
2SHUDWRULL 2SHUDWRU *OL XQLFL RSHUDWRUL SUHYLVWL SHU OH XQLRQ ODVVHJQDPHQWR H JOL RSHUDWRUL XJXDJOLDQ]DGLVXJXDJOLDQ]D UHOD]LRQDOH $FFHVVR D UHFRUG YDULLDQWLL $FFHVVR D UHFRUG YDU DQW SHU VFHJOLHUH XQD WUD OH UDSSUHVHQWD]LRQL DOWHUQDWLYH VL XVD OD QRWD]LRQH SRVWILVVD QRPH!GHILQL]LRQHBL! LQ EDVH DOOD YDULDQWH VFHOWD WUD OH 1 SRVVLELOL DOWHUQDWLYH VL SXRC RSHUDUH VXO GDWR FRQ JOL VWUXPHQWL SUHYLVWL GDO WLSR DVVRFLDWR DG HVVR $G HVHPSLLR $G HVHPS R union{ float raggio_circ; float lati_rettangolo[2]; float lati_triangolo[3]; float lato_quadrato; }oggetto; float AREA; /*se oggetto rappresenta un rettangolo:*/ scanf("%f", &oggetto.lati_rettangolo[0]); scanf("%f", &oggetto.lati_rettangolo[1]); AREA= oggetto.lati_rettangolo[0]* oggetto.lati_rettangolo[1]; ... VRQR GL
/D YDULDELOH RJJHWWR KD TXDWWUR UDSSUHVHQWD]LRQL DOWHUQDWLYH D VHFRQGD GL TXDOH ILJXUD JHRPHWULFD VL YXROH PHPRUL]]DUH LQ RJJHWWR YHUUj VFHOWD XQD SDUWLFRODUH YDULDQWH OH YDULDQWL SUHYLVWH VL HVFOXGRQR PXWXDPHQWH PD WXWWL L FRPSRQHQWL FRQGLYLGRQR OD VWHVVD PHPRULD OHVWHQVLRQH GHOODUHD DOORFDWD SHU XQ GDWR GL WLSR XQLRQ HC SDUL DOODUHD ULFKLHVWD GDOOD VWUXWWXUD FKH RFFXSD SLXC PHPRULD QHOOHVHPSLR OR VSD]LR QHFHVVDULR SHU IORDW
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
430
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
431
5HFRUG H 8QLRQ
1RQ FL VRQR YLQFROL ULJXDUGR DO WLSR GHL FDPSL GL XQ UHFRUG q SRVVLELOH UHDOL]]DUH XQR R SL FDPSL GL XQ UHFRUG PHGLDQWH XQLRQ + ,Q TXHVWR PRGR VL SRVVRQR UHDOL]]DUH VWUXWWXUH FKH KDQQR XQD SDUWH ILVVD XQD SDUWH YDULDQWH (VHPSLLR (VHPS R 6L YXROH UHDOL]]DUH XQ WLSR GL GDWR SHU UDSSUHVHQWDUH L OLEUL JHVWLWL GD XQD ELEOLRWHFD ,Q SDUWLFRODUH SHU RJQL OLEUR VL YRJOLRQR PHPRUL]]DUH OH VHJXHQWL LQIRUPD]LRQL &RGLFH 7LWROR $XWRUH (GLWRUH $QQR ,QROWUH SHU RJQL OLEUR SXz HVVHUH QHFHVVDULR UHJLVWUDUH OD VXD FROORFD]LRQH DOO
LQWHUQR GHOOD ELEOLRWHFD VH q GLVSRQLELOH RSSXUH SXz HVVHUH QHFHVVDULR PHPRUL]]DUH L GDWL GHO FOLHQWH DO TXDOH q LPSUHVWDWR VH q LQ SUHVWLWR
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
432
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
433
+ 1RWLDPR FKH LO OLEUR q FDUDWWHUL]]DWR GD XQD SDUWH ILVVD FRGLFH DXWRUH WLWROR HWF H GD XQD SDUWH YDULDQWH FOLHQWH R FROORFD]LRQH typedef struct { char Cognome[30]; char Indirizzo[40]; char N_tel[15]; int giorno; int mese; int anno; }cliente; typedef struct { int stanza; int scaffale; }collocazione;
8QLRQ
(VHPSLLR (VHPS R ... libro L; ... /* L disponibile: */ L.V.Col.stanza=3; L.V.Col.scaffale=7; printf("%s", L.V.Cli.Cognome); /* ?? */ ... + 1RQ F
q DOFXQ FRQWUROOR VXOOD UDSSUHVHQWD]LRQH DGRWWDWD DQFKH VH / UDSSUHVHQWD XQ OLEUR GLVSRQLELOH VL SXRC DFFHGHUH DG /9&OL&RJQRPH 3UREOOHPD 3URE HPD &RPH ULFRQRVFHUH LO WLSR GL UDSSUHVHQWD]LRQH YDOLGD DG XQ FHUWR LVWDQWH SHU XQ GDWR GL WLSR XQLRQ" + 3HU IDYRULLUH XQD JHVWWLLRQH FRUUHWWWWD GHOOOOH XQLLRQ SXRC HVVHUH + 3HU IDYRU UH XQD JHV RQH FRUUH D GH H XQ RQ SXRC HVVHUH XWWLLOOH LLQWWURGXUUH XQ FDPSR DJJLLXQWWLLYR WDJ LLQ EDVH DOO FXLL X H Q URGXUUH XQ FDPSR DJJ XQ YR WDJ Q EDVH D FX YDOORUH VLL SXRC GHGXUUH LLOO WWLLSR GLL UDSSUHVHQWWD]LLRQH DGRWWWWDWWD SR G UDSSUHVHQ D] RQH DGR D D YD RUH V SXRC GHGXUUH
typedef struct { char Codice[6]; char Titolo[30]; char Autore[30]; char Editore[20]; int Anno; union { cliente Cli; collocazione Col; }V; /* p. variante */ } libro; libro L1, L2; /* L1 disponibile: */ L1.V.Col.stanza=3; L1.V.Col.scaffale=7; /* L2 in prestito: */ scanf("%s", &L2.V.Cli.Cognome); gets(L2.V.Cli.Indirizzo); ...
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
434
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
435
(VHPSLLR (VHPS R typedef struct { char Codice[6]; char Titolo[30]; char Autore[30]; char Editore[20]; int Anno; int disponibile; /* tag */ union { cliente Cli; collocazione Col; }V; /* p. variante */ } libro; libro L; ... if (L.disponibile) /* L disponibile: */ { L.V.Col.stanza=3; L.V.Col.scaffale=7; } else /* L in prestito: */ { printf("%s", L.V.Cli.Cognome); printf("%s", L.V.Cli.Indirizzo); } ... + ,Q TXHVWR PRGR VL PDQWLHQHHVSOLFLWDPHQWH OD FRQVLVWHQ]D GHOOD VWUXWWXUD GDWL
,O SXQWDWRUH
(C XQ WLSR VFDODUH FKH FRQVHQWH GL UDSSUHVHQWDUH JOL LQGLUL]]L GHOOH YDULDELOL DOORFDWH LQ PHPRULD ,O GRPLQLR GL XQD YDULDELOH GL WLSR SXQWDWRUH q XQ LQVLHPH GL LQGLUL]]L + ,O YDORUH GL XQD YDULDELOH GL WLSR SXQWDWRUH SXRC HVVHUH OLQGLUL]]R GL XQDOWUD YDULDELOH YDULDELOH SXQWDWD ,Q & L SXQWDWRUL VL GHILQLVFRQR PHGLDQWH LO FRVWUXWWRUH
'HILLQLL]LLRQH GLL XQD YDULLDELLOOH SXQWDWRUH 'HI Q ] RQH G XQD YDU DE H SXQWDWRUH 7LSR(OHPHQWR3XQWDWR!
1RPH3XQWDWRUH! GRYH 7LSR(OHPHQWR3XQWDWR! HC LO WLSR GHOOD YDULDELOH SXQWDWD 1RPH3XQWDWRUH! HC LO QRPH GHOOD YDULDELOH GL WLSR SXQWDWRUH LO VLPEROR
HC LO FRVWUXWWRUH GHO WLSR SXQWDWRUH $G HVHPSLLR $G HVHPS R int P; /*P un puntatore a intero */
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
436
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
437
,O SXQWDWRUH
2SHUDWRULL 2SHUDWRU $VVHJQDPHQWR HC SRVVLELOH O
DVVHJQDPHQWR WUD SXQWDWRUL GHOOR VWHVVR WLSR (
GLVSRQLELOH OD FRVWDQWH 18// SHU LQGLFDUH O
LQGLUL]]R QXOOR RSHUDWRUH GL GHUHIHUHQFLQJ
q XQ RSHUDWRUH XQDULR 6L DSSOLFD D XQ SXQWDWRUH H UHVWLWXLVFH LO YDORUH FRQWHQXWR QHOOD FHOOD SXQWDWD ! VHUYH SHU DFFHGHUH DOOD YDULDELOH SXQWDWD 2SHUDWRUH LQGLUL]]R VL DSSOLFD DG XQD YDULDELOH H UHVWLWXLVFH O
LQGLUL]]R GHOOD FHOOD GL PHPRULD QHOOD TXDOH HC DOORFDWD OD YDULDELOH RSHUDWRUL DULWPHWLFL YHGL YHWWRUL SXQWDWRUL 2SHUDWRUL UHOD]LRQDOL! $G HVHPSLLR $G HVHPS R int *punt1, *punt2; int A; punt1=&A; *punt1=127; punt2=punt1; punt1=NULL;
SXQW SXQW
SXQW SXQW
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
438
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
439
2SHUDWRUH ,QGLLULL]]R 2SHUDWRUH ,QG U ]]R + + + VL DSSOLFD VROR DG RJJHWWL FKH HVLVWRQR LQ PHPRULD TXLQGL JLDC GHILQLWL QRQ HC DSSOOLLFDELLOOH DG HVSUHVVLLRQLL QRQ HC DSS FDE H DG HVSUHVV RQ
2SHUDWRUH 'HUHIHUHQFLLQJ 2SHUDWRUH 'HUHIHUHQF QJ + FRQVHQWWH GLL DFFHGHUH DG XQD YDULLDELLOOH VSHFLLILLFDQGR LLOO VXR + FRQVHQ H G DFFHGHUH DG XQD YDU DE H VSHF I FDQGR VXR LLQGLLULL]]R QG U ]]R + OO
LLQGLLULL]]R UDSSUHVHQWWD XQ PRGR DOOWWHUQDWWLLYR + QG U ]]R UDSSUHVHQ D XQ PRGR D HUQD YR QRPH SHU DFFHGHUH H PDQLLSROODUH OOD YDULLDELLOOH QRPH SHU DFFHGHUH H PDQ SR DUH D YDU DE H float *p; float R, A; p=&A; /* *p un alias di A*/ R=2; *p=3.14*R; /* A modificato */ $ DOOLLDV DOO D DV D
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
440
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
441
3XQWDWRUL
1HOOD GHILQL]LRQH GL XQ SXQWDWRUH HC QHFHVVDULR LQGLFDUH LO WLSR GHOOD YDULDELOH SXQWDWD LO FRPSLODWRUH SXRC HIIHWWXDUH FRQWUROOL VWDWLFL VXOO
XVR GHL SXQWDWRUL (VHPSLLR (VHPS R W\SHGHI VWUXFW^`UHFRUG W\SHGHI VWUXFW^`UHFRUG int *p, A; record *q, X; p=&A; q=p; /*warning!*/ q=&X; *p=*q; /* errore! */ + 9LHQH VHJQDODWR GDO FRPSLODWRUH ZDUQLQJ LO WHQWDWLYR GL XWLOL]]R FRQJLXQWR GL SXQWDWRUL D WLSL GLIIHUHQWL
9DULDELOL 'LQDPLFKH
,Q & VL SRVVRQR GHILQLUH HC SRVVLELOH FODVVLILFDUH OH YDULDELOL LQ EDVH DO ORUR WHPSR GL YLWD HC SRVVLELOH LQGLYLGXDUH GXH FDWHJRULH YDULDELOL DXWRPDWLFKH YDULDELOL GLQDPLFKH 9DULLDELLOOLL DXWRPDWLLFKH 9DU DE DXWRPDW FKH /
DOORFD]LRQH H OD GHDOORFD]LRQH GL YDULDELOL DXWRPDWLFKH HC HIIHWWXDWD DXWRPDWLFDPHQWH GDO VLVWHPD VHQ]D O
LQWHUYHQWR GHO SURJUDPPDWRUH 2JQL YDULDELOH DXWRPDWLFD KD XQ QRPH DWWUDYHUVR LO TXDOH OD VL SXRC ULIHULUH ,O SURJUDPPDWRUH QRQ KD OD SRVVLELOLWDC GL LQIOXLUH VXO WHPSR GL YLWD GL YDULDELOL DXWRPDWLFKH
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
442
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
443
9DULDELOL 'LQDPLFKH
9DULLDELLOOLL GLLQDPLLFKH 9DU DE G QDP FKH /H YDULDELOL GLQDPLFKH GHYRQR HVVHUH DOORFDWH H GHDOORFDWH HVSOLFLWDPHQWH GDO SURJUDPPDWRUH /
DUHD GL PHPRULD LQ FXL YHQJRQR DOORFDWH OH YDULDELOL GLQDPLFKH VL FKLDPD KHDS /H YDULDELOL GLQDPLFKH QRQ KDQQR XQ LGHQWLILFDWRUH DVVRFLDWR DG HVVH PD SRVVRQR HVVHUH ULIHULWH VROWDQWR DWWUDYHUVR LO ORUR LQGLUL]]R PHGLDQWH L SXQWDWRUL ,O WHPSR GL YLWD GHOOH YDULDELOL GLQDPLFKH HC O
LQWHUYDOOR GL WHPSR FKH LQWHUFRUUH O
DOORFD]LRQH H OD GHDOORFD]LRQH FKH VRQR VWDELOLWH GDO SURJUDPPDWRUH + WXWWH OH YDULDELOL YLVWH ILQRUD ULHQWUDQR QHOOD FDWHJRULD GHOOH YDULDELOL DXWRPDWLFKH
9DULDELOL 'LQDPLFKH
+ ,O & SUHYHGH IXQ]LRQL VWDQGDUG GL DOORFD]LRQH GHDOORFD]LRQH SHU YDULDELOL GLQDPLFKH PDOORF IUHH 1RQ VRQR GHILQLWH D OLYHOOR GL OLQJXDJJLR GL SURJUDPPD]LRQH PD D OLYHOOR GL VLVWHPD RSHUDWLYR PHGLDQWH OD OLEUHULD VWDQGDUG VWGOLEK!
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
444
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
445
9DULDELOL 'LQDPLFKH
$OOOORFD]LLRQH GLL YDULLDELLOOLL GLLQDPLLFKH $ RFD] RQH G YDU DE G QDP FKH /D PHPRULD GLQDPLFD YLHQH DOORFDWD FRQ OD IXQ]LRQH VWDQGDUG PDOORF SXQW WLSRGDWR
PDOORF VL]HRI WLSRGDWR
punt=(tp )malloc(sizeof(int));
punt
*punt
WLSRGDWR HC LO WLSR GHOOD YDULDELOH SXQWDWD SXQW HC XQD YDULDELOH GL WLSR WLSRGDWR VL]HRI HC XQD IXQ]LRQH VWDQGDUG FKH FDOFROD LO QXPHUR GL E\WHV FKH RFFXSD LO GDWR VSHFLILFDWR FRPH DUJRPHQWR HC QHFHVVDULR FRQYHUWLUH HVSOLFLWDPHQWH LO WLSR GHO YDORUH ULWRUQDWR FDVWLQJ WLSRGDWR PDOORF
*punt=12
punt *punt 12
6LLJQLLILLFDWR 6 JQ I FDWR + /D PDOORF SURYRFD OD FUHD]LRQH GL XQD YDULDELOH GLQDPLFD QHOOKHDS H UHVWLWXLVFH FRPH YDORUH O
LQGLUL]]R GHOOD YDULDELOH FUHDWD
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
446
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
447
9DULDELOL GLQDPLFKH
'HDOOOORFD]LLRQH 'HD RFD] RQH 6L ULODVFLD OD PHPRULD DOORFDWD GLQDPLFDPHQWH FRQ IUHH SXQW GRYH SXQW HC O
LQGLUL]]R GHOOD YDULDELOH GD GHDOORFDUH
punt
(VHPSLLR (VHPS R #include <stdlib.h> main() { int *p; /*definizione del puntatore p ad intero;il contenuto di p non ancora definito */ p = (int *) malloc(sizeof (int)); /*definizione del contenuto di p: indirizzo di una cella di memoria allocata dinamicamente*/ *p = 55; /* assegnamento di un valore alla cella *p referenziata da p */ free(p); /* deallocazione della cella referenziata da p; il contenuto di p non pi definito */ }
'RSR TXHVWD RSHUD]LRQH OD FHOOD GL PHPRULD RFFXSDWD GD SXQW YLHQH GHDOORFDWD SXQW QRQ HVLVWH SLXC (VHPSLLR (VHPS R main() { char A, *p; A=Z; p=(char *)malloc(sizeof(char)); *p=A; ... <uso di *p> ... free(p); }
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
448
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
449
(VHPSLLR (VHPS R main() { int *P, *Q, x, y; x=5; y=14; P=(int *)malloc(sizeof(int)); Q=(int *)malloc(sizeof(int));
Q *Q
*P = 25; *Q = 30;
4
4 30 3
3 25 \ [
*P
*P = x; y = *Q;
y 14 x 5
\ [ 3 4
30
3 5 4
P = &y;
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
450
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
451
4 30 3 5 \ [
... } + O
XOWLPR DVVHJQDPHQWR KD FRPH HIIHWWR FROODWHUDOH OD SHUGLWD GHOO
LQGLUL]]R GL XQD YDULDELOH GLQDPLFD TXHOOD SUHFHGHQWHPHQWH UHIHUHQ]LDWD GD 3 FKH ULPDQH DOORFDWD PD QRQ p SL XWLOL]]DELOH
* P 3 0
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
452
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
453
4
Q *Q 20 P *P 20
/DUHD FKH HUD SXQWDWD GD 3 QRQ q SL UDJJLXQJLELOH PD ULPDQH DOORFDWD DO SURJUDPPD
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
454
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
455
[ Q = *DoppioPunt; 4 4 3 'RSSLRSXQW
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
456
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
457
9HWWRUL
9HWWRULL 9HWWRU
3XQWDWRUL
9HWWRUL
3XQWDWRUL
LQ & L YHWWRUL YHQJRQR DOORFDWL LQ PHPRULD LQ SDUROH FRQVHFXWLYH FLRHC SDUROH ILVLFDPHQWH DGLDFHQWL OD FXL GLPHQVLRQH GLSHQGH GDO WLSR GHJOL HOHPHQWL GHO YHWWRUH ,O QRPH GL XQD YDULDELOH GL WLSR YHWWRUH YLHQH FRQVLGHUDWR GDO & FRPH O
LQGLUL]]R GHO SULPR HOHPHQWR GHO YHWWRUH $G HVHPSLLR $G HVHPS R int V[10]; + 9 q XQD FRVWDQWH 9 HTXLYDOH D 9>@ FRPH WLSR q XQ SXQWDWRUH DG LQWHUR int *p, V[10]; p=V; /* p punta a V[0] */ V = p; /*NO! V un puntatore costante*/
,O & FRQVHQWH GL HVHJXLUH RSHUD]LRQL GL VRPPD H VRWWUD]LRQH VXL SXQWDWRUL D YHWWRUL 2SHUDWRULL DULLWPHWLLFLL VX SXQWDWRULL D YHWWRULL 2SHUDWRU DU WPHW F VX SXQWDWRU D YHWWRU 6H 9 H : VRQR SXQWDWRUL DG HOHPHQWL GL YHWWRUL HG L q XQ LQWHUR 9L UHVWLWXLVFH O
LQGLUL]]R GHOO
HOHPHQWR VSRVWDWR GL L SRVL]LRQL LQ DYDQWL ULVSHWWR D TXHOOR LQGLFDWR GD L 9:UHVWLWXLVFH O
LQWHUR FKH UDSSUHVHQWD LO QXPHUR GL HOHPHQWL FRPSUHVL WUD 9 H : $G HVHPSLLR $G HVHPS R float V[100], *p, *q; int k; p=V+7; /* p punta a V[7] */ q=V+2; /* p punta a V[5] */ k=p-q; /* k vale 5 */ ...
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
458
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
459
9HWWRUL H 3XQWDWRUL
,Q & RJQL ULIHULPHQWR DG XQ HOHPHQWR GL XQ YHWWRUH q HVSDQVR FRPH XQ SXQWDWRUH GHUHIHUHQ]LDWR 9>@ 9>@ 9>L@ 9>H[SU@ $G HVHPSLLR $G HVHPS R main () { char a[] = "0123456789";/*a e un vettore di caratteri */ int i = 5; printf("%c%c%c%c\n",a[i],a[5],i[a],5[a]); } 6WDPSD 6WDPSD + 3HU LO FRPSLODWRUH 9>L@ H L>9@ VRQR OR VWHVVR HOHPHQWR SHUFKp YLHQH VHPSUH HVHJXLWD OD FRQYHUVLRQH 9>L@ !
9L VHQ]D HVHJXLUH DOFXQ FRQWUROOR QHC VX 9 QHC VX L HTXLYDOH D HTXLYDOH D HTXLYDOH D HTXLYDOH D
9
9
9L
9 H[SU
9HWWRUL
3XQWDWRUL
+ 3HU XQ SXQWDWRUH DG XQ YHWWRUH GL FDUDWWHUL q QHFHVVDULR IRU]DUH OD SUHFHGHQ]D FRQ OH SDUHQWHVL FKDU D >@
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
460
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
461
3XQWDWRUL D VWUXWWXUH
(
SRVVLELOH XWLOL]]DUH L SXQWDWRUL SHU DFFHGHUH D YDULDELOL GL WLSR VWUXFW $G HVHPSLLR $G HVHPS R typedef struct{ int Campo_1,Campo_2; } TipoDato; TipoDato P = &S; ,O SXQWR GHOOD QRWD]LRQH SRVWILVVD KD SUHFHGHQ]D VXOO
RSHUDWRUH GL GHUHIHUHQFLQJ
SHU DFFHGHUH DOOH FRPSRQHQWL GHOOD VWUXWWXUD UHIHUHQ]LDWD GD 3 q QHFHVVDULR XWLOL]]DUH OH SDUHQWHVL WRQGH (*P).Campo_1=75; 2SHUDWRUH ! 2SHUDWRUH ! /
RSHUDWRUH ! FRQVHQWH GL DFFHGHUH DG XQ FDPSR GL XQD VWUXWWXUD UHIHUHQ]LDWD GD XQ SXQWDWRUH LQ PRGR SL VLQWHWLFR P->Campo_1=75; S, *P;
(VHPSLLR (VHPS R 6L YXROH UHDOL]]DUH XQ SURJUDPPD FKH GDWD GD LQSXW XQD VHTXHQ]D GL 1 SDUROH GL DO PDVVLPR FDUDWWHUL FLDVFXQD XQD SHU ULJD VWDPSL LQ RUHGLQH LQYHUVR OH SDUROH GDWH RJQXQD ULEDOWDWD FLRq VWDPSDQGR L FDUDWWHUL LQ RUGLQH LQYHUVR GDOO
XOWLPR DO SULPR 8WLOL]]DUH XQD VWUXWWXUD GLQDPLFD #include <stdio.h> #include <stdlib.h> typedef char parola[20]; parola w, *p; main() { parola w, *p; int i, j, N; printf("Quante parole? "); scanf("%d", &N); /* allocazione del vettore */ p=(parola *)malloc(N*sizeof(parola)); /* lettura della sequenza */ for(i=0; i<N; i++) gets(&p[i]);
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
462
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
463
)XQ]LRQL H 3URFHGXUH
Ad esempiio:: Ordiinamentto dii un iinsiieme Ad esemp o Ord namen o d un ns eme
#include <stdio.h> #define dim 10 main() {int V[dim], i,j, max, tmp, quanti; /* lettura dei dati */ for (i=0; i<dim; i++) { printf("valore n. %d: ",i); scanf("%d", &V[i]); } /*ordinamento */ for(i=0; i<dim; i++) { quanti=dim-i; max=quanti-1; for( j=0; j<quanti; j++) if (V[j]>V[max]) max=j; if (max<quanti-1) { tmp=V[quanti-1]; V[quanti-1]=V[max]; V[max]=tmp; } } /*stampa */ for(i=0; i<dim; i++) printf("Valore di V[%d]=%d\n", i, V[i]); }
VHPSOLFL
VWUXWWXUDWH
predefinite
assegnamento input output break continue goto
predefinite definite dallutente {..} VRWWRSURJUDPPL if..else.. switch.. IXQ]LRQL while.. SURFHGXUH for.. do
definite dallutente
I linguaggi di alto livello permettono di definire istruzioni non primitive per risolvere parti specifiche di un problema: i VRWWRSURJUDPPL (funzioni e procedure).
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
466
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
467
Potrebbe essere conveniente scrivere algoritmo in modo piu DVWUDWWR: #include <stdio.h> #define dim 10 main() { int V[dim]; /* lettura dei dati */ leggi(V, dim); /*ordinamento */ ordina(V, dim); /*stampa */ stampa(V,dim); }
lo
stesso
+ leggi(), ordina(), stampa() sono VRWWRSURJUDPPL: il main "chiama" leggi, ordina e stampa. Vanttaggii:: Van agg sintesi leggibilita possibilita di riutilizzo del codice
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
468
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
469
)XQ]LRQL H 3URFHGXUH
Defiiniiziione:: Def n z one Nella fase di GHILQL]LRQH di un sottoprogramma (funzione o procedura) si stabilisce: un LGHQWLILFDWRUH del sottoprogramma si esplicita il FRUSR del sottoprogramma (cioe, linsieme di istruzioni che verra eseguito ogni volta che il sotto-programma verra FKLDPDWR); si stabiliscono le PRGDOLWDC GL FRPXQLFD]LRQH tra lunita di programma che usa il sottoprogramma ed il sottoprogramma stesso (definizione dei SDUDPHWUL IRUPDOL). Uttiilliizzo dii funziionii//procedure (FKLLDPDWWD):: U zzo d funz on procedure (FK DPD D) Per chiamare un sottoprogramma (cioe, per richiedere lesecuzione del suo corpo), si utilizza lidentificatore assegnato al sottoprogramma in fase di definizione (FKLDPDWD o invocazione del sottoprogramma).
0HFFDQLVPR GL &KLDPDWD
Quando si verifica una chiamata a sottoprogramma, si possono individuare due entita: lunita di programma FKLDPDQWH; lunita di programma FKLDPDWD (il sotto-programma). Quando avviene la chiamata, lesecuzione dell'unita` di programma "chiamante" (quella, cioe`, che contiene l'invocazione) viene VRVSHVD, ed il controllo passa al sottoprogramma chiamato (che eseguira` le istruzioni contenute nel corpo). L'unita` chiamante funge da FOLHQWH dell'unita` chiamata (che svolge il ruolo di VHUYLWRUH). Modellllo Clliientte-Serviittore Mode o C en e-Serv ore
Cliente
char C, C1; proc(C);
Servitore
proc(C1); void proc(char Car); { ... return; }
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
470
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
471
3DUDPHWUL
I SDUDPHWUL costituiscono il mezzo di comunicazione tra unita chiamante ed unita chiamata. Supportano lo scambio di informazioni tra chiamante e sottoprogramma. SDUDPHWUL IRUPDOL: sono quelli specificati nella definizione del sottoprogramma. Sono in numero prefissato e ad ognuno di essi viene associato un tipo. Le istruzioni del corpo del sottoprogramma utilizzano i parametri formali. sono i valori effettivamente forniti dallunita chiamante al sottoprogramma allatto della chiamata.
3DUDPHWUL
Parametri DWWXDOL (specificati nella chiamata) e IRUPDOL (specificati nella definizione) devono corrispondersi in QXPHUR, SRVL]LRQH e WLSR. Allatto della chiamata avviene il OHJDPH GHL SDUDPHWUL, cioe ai parametri formali vengono associati i parametri attuali. &RPH DYYLHQH O
DVVRFLD]LRQH WUD SDUDPHWUL DWWXDOL H SDUDPHWUL IRUPDOL " Esistono, in generale, varie forme di legame. Ad esempio: legame per YDORUH; legame per LQGLUL]]R; Il significato delle due tecniche di legame dei parametri verra spiegato piu avanti.
SDUDPHWUL DWWXDOL:
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
472
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
473
)XQ]LRQL H 3URFHGXUH
Vanttaggii:: Van agg ULXWLOL]]R GL FRGLFH: sintetizzando in un sottoprogramma un sotto-algoritmo, si ha la possibilita di invocarlo piu volte, sia nellambito dello stesso programma, che nellambito di programmi diversi (evitando di dover replicare ogni volta lo stesso codice). migliore OHJJLELOLWDC: si ha in fatti una maggiore capacita di astrazione sviluppo WRSGRZQ: si delega a funzioni/procedure da sviluppare in una fase successiva la soluzione di sottoproblemi. testo del programma piu EUHYH: minore probabilita di errori, dimensione del codice eseguibile piu piccola.
3URFHGXUH H )XQ]LRQL
In generale, i sottoprogrammi SURFHGXUH e IXQ]LRQL: Procedura:: Procedura E` unastrazione della nozione di LVWUX]LRQH. E` unistruzione non primitiva attivabile in un qualunque punto del programma in cui puo` comparire unistruzione. Funziione:: Funz one E unastrazione del concetto di RSHUDWRUH. Si puo` attivare durante la valutazione di una qualunque espressione e UHVWLWXLVFH XQ YDORUH Ad esempiio:: Ad esemp o main() { int Ris, N=7; stampa(N);/*procedura*/ Ris=fattoriale(N)-10;/*funzione*/ }; Formalmente, in C i sottoprogrammi sono soltanto IXQ]LRQL; le procedure possono essere realizzate come funzioni che non restituiscono alcun valore (YRLG). si suddividono in
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
474
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
475
)XQ]LRQL LQ &
Procedure e funzioni si definiscono seguendo regole sintattiche simili. Defiiniiziione dii funziione:: Def n z one d funz one
GHIIXQ]LRQH! LQWHVWD]LRQH! { SDUWHGLFKLDUD]LRQL! SDUWHLVWUX]LRQL! }
Quindi, per definire una funzione, e necessario specificare una LQWHVWD]LRQH e un EORFFR {..}: Sttruttttura delllliinttesttaziione:: S ru ura de n es az one
LQWHVWD]LRQH! WLSRULV! QRPH! >OLVWDSDUIRUPDOL!@
dove: WLSRULV!: e un indentificatore che indica il tipo di risultato restituito(FRGRPLQLR). Il tipo restituito puo essere predefinito o definito dallutente. Una funzione non puo restituire valori di tipo: YHWWRUH IXQ]LRQH QRPH! e lidentificatore della funzione OLVWDSDUIRUPDOL! e` la lista dei parametri formali (GRPLQLR). Per ciascun parametro formale viene specificato il tipo ed un identificatore che e` un nome simbolico per rappresentare il parametro all'interno della funzione (nel EORFFR). I parametri sono separati mediante virgola.
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
476
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
477
Esempiio:: Esemp o int maggioredi100 (int a) /*intest. */ { /*parte dichiarazioni: */ const int C=100; /* parte istruzioni: */ if (a>C) return 1; else return 0; } Esempiio:: Esemp o #define N 100 typedef char vettore[N];
Esempiio:: Esemp o int read_int () /* intest. */ { int a scanf("%d", &a); return a; } Possono esserci SLXC LVWUX]LRQL UHWXUQ: int max (int a, int b) /*intest.*/ { if (a>b) return a; else return b; } o QHVVXQD: int print_int (int a) /* intestazione */ { printf("%d", a); } In questo caso, il sottoprogramma termina in corrispondenza del simbolo ` ed il valore restituito e LQGHILQLWR
int minimo (vettore vet) { int i, v, min;/* def. locali a minimo */ for (min=vet[0], i=1; i<N; i++) { v=vet[i]; if (v<min) min=v; } return min; } i, v, min sono YDULDELOL ORFDOL: WHPSR GL YLWD: esistono solo durante lesecuzione della funzione minimo YLVLELOLWDC: sono visibili (cioe utilizzabili) soltanto allinterno della funzione minimo.
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
478
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
479
Esempiio:: Esemp o /* funzione elevamento a potenza */ long power (int base, int n) { int i; long p=1; for (i=1;i<=n;++i) p *= base; /* p = p*base */ return p; /* ritorna il risultato */ }
)XQ]LRQL LQ &
Chiiamatta dii funziionii:: Ch ama a d funz on In generale, la chiamata di una funzione compare allinterno di una espressione secondo la sintassi: QRPHIXQ]LRQHOLVWD SDUDPHWUL DWWXDOL! Ad esempiio:: Ad esemp o main() { int z, x=2; ... z=power(x,2)+power(x,3); x=max(power(z,2), 30); printf("%d\n", x); }
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
480
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
481
Esempiio:: Esemp o void print_int(int a) { printf("%d", a); } Poiche una procedura non restituisce alcun valore, non e necessario prevedere listruzione di UHWXUQ allinterno del corpo; se si utilizza, QRQ VL GHYH VSHFLILFDUH DOFXQ DUJRPHQWR:
return;
Uso:: Uso La procedura e lastrazione del concetto di istruzione: main() { int X; scanf("%d", &X); print_int(X): }
,Q TXHVWR PRGR V UHD ]]D Q & FRQFHWWR G procedura ,Q TXHVWR PRGR VLL UHDOOLL]]D LLQ & LLOO FRQFHWWR GLL procedura
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
482
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
483
(VHPSLR
#include <stdio.h> int max (int a, int b) /*def. max*/ { if (a>b) return a; else return b; } void print_int (int a) /* def. */ { printf("%d\", a); return; } void dummy() /*def. dummy */ { printf("Ciao!\n"); } main() { int A, B; printf("Dammi A e B: "); scanf("%d %d", &A, &B); print_int(max(A,B)); dummy(); }
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
484
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
485
Se allinterno di un blocco viene utilizzata una funzione f, la definizione di f deve comparire prima del blocco che la utilizza. Esempiio:: Esemp o #include <stdio.h> int max (int a, int b) { if (a>b) return a; else return b; } int sommamax(int a1, a2, a3, a4) { return max(a1,a2)+max(a3,a4);} main() { int A, B, C,D; scanf("%d%d%d%d",&A,&B,&C,&D); printf("%d\n", sommamax(A,B,C,D)); }
'LFKLDUD]LRQH GL IXQ]LRQH
Regolla Generalle:: Rego a Genera e Prima di utilizzare una funzione e necessario che sia gia stata GHILQLWD RSSXUH GLFKLDUDWD. Funziionii C:: Funz on C GHILQL]LRQH: descrive le proprieta della funzione (tipo, nome, lista parametri formali) e la sua realizzazione (lista delle istruzioni contenute nel blocco). GLFKLDUD]LRQH SURWRWLSR: descrive le proprieta della funzione senza definirne la realizzazione (EORFFR) serve per "anticipare" le caratteristiche di una funzione definita successivamente. Diichiiaraziione dii una funziione:: D ch araz one d una funz one La GLFKLDUD]LRQH di una funzione si esprime mediante lintestazione della funzione, seguita da "":
WLSRULV! QRPH! >OLVWDSDUIRUPDOL!@
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
486
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
487
Esempiio:: Esemp o #include <stdio.h> main() { int A, B; printf("Dammi A e B: "); scanf("%d %d", &A, &B); printf("%d\n", max(A,B)); } int max (int a, int b) { if (a>b) return a; else return b; } In questo caso il compilatore segnala un HUURUH in corrispondenza della chiamata PD[$%, perche viene usato un identificatore che viene definito successivamente (dopo il main())
Solluziione:: So uz one #include <stdio.h> int max(int a, int b); main() { int A, B; printf("Dammi A e B: "); scanf("%d %d", &A, &B); printf("%d\n", max(A,B)); } int max (int a, int b) /*intestaz. */ { if (a>b) return a; else return b; }
E lle diichiiaraziionii dii priinttf,, scanf ettc.. ? E e d ch araz on d pr n f scanf e c ? sono contentue nel file stdio.h: LQFOXGH VWGLRK! provoca linserimento del contenuto del file specificato.
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
488
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
489
'LFKLDUD]LRQH GL )XQ]LRQL
Una funzione puo essere GLFKLDUDWD in punti diversi, ma e GHILQLWD una sola volta. E possibile inserire i prototipi delle funzioni utilizzate: nella parte dichiarazioni globali di un programma, nella parte dichiarazioni del PDLQ, nella parte dichiarazioni delle funzioni. Ad esempiio:: Ad esemp o main() { long power (int base, int n); int X, exp; scanf("%d%d", &X, &exp); printf("%ld", power(X,exp)); } ...
Prottocollllo da uttiilliizzare:: Pro oco o da u zzare OLVWD GLFKLDUD]LRQL GL IXQ]LRQL! PDLQ! GHILQL]LRQL GHOOH IXQ]LRQL GLFKLDUDWH!
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
490
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
491
Ad esempiio:: Ad esemp o Calcolo della radice intera di un numero intero letto a terminale. #include <stdio.h> /* dichiarazioni delle funzioni: */ int RadiceInt (int par); int Quadrato (int par); main(void) { int X; scanf("%d", &X); printf("Radice: %d\n", RadiceInt(X)); printf("Quadrato: %d\n", Quadrato(X)); } /* definizione funzioni: */ int RadiceInt (int par) { int cont = 0; while (cont*cont <= par) cont = cont + 1; return (cont-1); } int Quadrato (int par) { return (par*par); }
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
492
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
493
pa
$O PRPHQWR GHOOD FKLDPDWD viene allocata una cella di memoria associata a pf nellarea dati accessibile a P viene valutato pa, ed il suo valore viene FRSLDWR in pf
Area dati di C Area dati di P
pa
pf
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
494
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
495
Esecuziione dii P:: Esecuz one d P Il parametro formale SI viene trattato come una YDULDELOH ORFDOH al sottoprogramma P: puo essere modificato mediante assegnamento, etc.. In generale, al termine della chiamata, pf potra assumere un valore diverso da quello iniziale. $OOD ILQH GHOOHVHFX]LRQH GL 3
Area dati di C Area dati di P
pa
pf
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
496
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
497
Ad esempiio:: Ad esemp o #include <stdio.h> void P(int pf); main() { int pa=10; P(pa); printf("valore finale di pa: %d\n", pa); /* pa vale 10 */ } void P(int pf) { pf=100; printf("valore finale di pf: %d\n", pf); return; }
pa
$O PRPHQWR GHOOD FKLDPDWD viene associato allidentificatore pf la stessa cella di memoria riferita da pa:
Area dati di C
pa
pf
pf e un DOLDV di pa.
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
498
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
499
Esecuziione dii P:: Esecuz one d P Il parametro formale SI viene trattato come una YDULDELOH ORFDOH al sottoprogramma P: puo essere modificato mediante assegnamento, etc.. In generale, al termine della chiamata, pf (e quindi pa) potra assumere un valore diverso da quello iniziale. $OOD ILQH GHOOHVHFX]LRQH GL 3
Area dati di C
pa
pf
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
500
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
501
Esempiio:: Esemp o Utilizziamo la sintassi C per esemplificare il passaggio per indirizzo Il programma che segue e solo a scopo esemplificativo (in C, non ce il passaggio per indirizzo!). Funzione che scambia due variabili X, Y (di tipo integer) se X>Y e restituisce il valore minore tra i due. #include <stdio.h> void scambia (int A, int B); main() { int X=5,Y=0 ; scanf("%d %d", &X, &Y); scambia(X,Y); printf("\n%d \t %d %", X,Y); } void scambia (int A, int B) /* se fosse per indirizzo ! */ { int T; if (A>B) { T=A; A=B; B=T; return; } else return; }
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
502
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
503
Esempiio:: Esemp o #include <stdio.h> void Fun ( ? int int N; main() { N=3; Fun (N); printf("%d", N); } void Fun ( ? int { X=X+1; printf("%d", N); printf("%d", X); } X) {1} {2}
X);
{3}
Se il legame e SHU YDORUH viene stampato: {1} 3 {2} 4 {3} 3 Se il legame e SHU LQGLUL]]R : {1} 4 {2} 4 {3} 4
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
504
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C
505
)XQ]LRQL H 3URFHGXUH
$OOFXQLL (VHPSLL $ FXQ (VHPS #include <stdio.h> void h (int X, int *Y); main() {int A,B; A=0; B=0; h(A, &B); /*B e un parametro di uscita*/ printf("\n %d \t %d", A, B); } void h (int X, int *Y) { X=X+1; *Y=*Y+1; printf("\n %d \t %d", X, *Y); } 1 0 1 1 (stampa di h) (stampa di main)
(VHUFLL]LLR (VHUF ] R &DOFROR GHOOH UDGLFL GL XQD HTXD]LRQH GL VHFRQGR JUDGR $[ %[ & #include <stdio.h> #include <math.h> typedef enum {false,true} boolean; boolean radici(int A, int B, int C, float *X1, float *X2); main() { int A,B,C; float X,Y; scanf("%d%d%d%\n",&A,&B,&C); if ( radici(A,B,C,&X,&Y) ) printf("%f%f\n",X,Y); }
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
502
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
503
boolean
radici(int A, int B, int C, float *X1, float *X2) { float D; D= B*B-4*A*C; if (D<0) return 0; else { D=sqrt(D); *X1 = (-B+D)/(2*A); *X2= (-B-D)/(2*A); return 1; } }
(VHUFLL]LLR (VHUF ] R 3URJUDPPD FKH VWDPSD L QXPHUL SULPL FRPSUHVL WUD HG Q Q GDWR #include <stdio.h> #include <math.h> #define NO 0 #define YES 1
int isPrime(int n); /*dichiarazioni*/ int primes(int n); void main() { int n; do { printf("\nNumeri primi non superiori a:\t"); scanf("%d",&n); } while (n<1); printf("\nTrovati %d numeri primi.\n", primes(n)); }
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
504
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
505
int isPrime(int n) { int max,i; if (n>0 && n<4) return YES; /* 1, 2 e 3 sono primi else if (!(n%2)) return NO; /* escludi i pari > 2 */ max = sqrt( (double)n ); /* CAST:sqrt ha arg double */ for(i=3; i<=max; i+=2) if (!(n%i)) return NO; return YES; } int primes(int n) { int i,count; if (n<=0) return -1; else count=0; if (n>=1) { printf("%5d\t",1); count++; } if (n>=2) { printf("%5d\t",2); count++; } for(i=3;i<=n;i+=2) if (isPrime(i)) { printf("%5d\t",i); count++; } printf("\n"); return count; }
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI 506
(VHUFLL]LLR (VHUF ] R 6FULYHUH XQD SURFHGXUD FKH ULVROYH XQ VLVWHPD OLQHDUH GL GXH HTXD]LRQL LQ GXH LQFRJQLWH */ D[ E\ D[ E\ [ \ F F
FEFE DE DE ;1 ' DF DF DE DE <1 '
6ROOX]LLRQH 6R X] RQH #include <stdio.h> void sistema(int A1, int B1, int C1, int A2, int B2, int C2, float *X, float *Y); main() { int float
A1,B1,C1,A2,B2,C2; X,Y;
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
507
void sistema (int A1, int B1, int C1, int A2, int B2, int C2, float *X, float *Y) { int XN,YN,D; XN = (C1*B2 - C2*B1); D = (A1*B2 - A2*B1); YN = (A1*C2 - A2*C1); if (D == 0) {if (XN == 0) printf("sistema indeterminato\n"); else printf("sistema impossibile\n"); } else { printf("Determinante%d",D); *X=(float) (XN) /D; *Y=(float) (YN) /D; } }
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
508
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
509
9DULLDELLOOLL OORFDOOLL 9DU DE RFD 1HOOD SDUWH GLFKLDUDWLYD GL XQ VRWWRSURJUDPPD SURFHGXUD R IXQ]LRQH SRVVRQR HVVHUH GLFKLDUDWL FRVWDQWL WLSL YDULDELOL GHWWL ORFDOL R DXWRPDWLFKH #include <stdio.h> char saltabianchi (void); main(void) {char C; C = saltabianchi(); printf("\n%c",C); /* stampa } char saltabianchi (void) {char Car; /* Car e locale*/ do { scanf("%c", &Car);} while (Car== ); return Car; } $OOD YDULDELOH &DU VL SXRC IDU ULIHULPHQWR VROR QHO FRUSR GHOOD IXQ]LRQH VDOWDELDQFKL FDPSR GL D]LRQH ,O WHPSR GL YLWD GL &DU HC LO WHPSR GL HVHFX]LRQH GHOOD IXQ]LRQH VDOWDELDQFKL , SDUDPHWUL IRUPDOL YHQJRQR WUDWWDWL FRPH YDULDELOL ORFDOL
*/
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
511
9DULDELOL /RFDOL
4XDQGR XQD IXQ]LRQH YLHQH FKLDPDWD YLHQH FUHDWD XQD DVVRFLD]LRQH WUD O
LGHQWLILFDWRUH GL RJQL YDULDELOH ORFDOH H SDUDPHWUR IRUPDOH HG XQD FHOOD GL PHPRULD DOORFDWD DXWRPDWLFDPHQWH (VHPSLLR (VHPS R int f(char Car) { int P; main() { char C; f(C); } $OOD ILQH GHOODWWLYD]LRQH RJQL FHOOD GL PHPRULD DVVRFLDWD D YDULDELOL ORFDOL YLHQH GHDOORFDWD 6H OD SURFHGXUD YLHQH DWWLYDWD GL QXRYR YLHQH FUHDWD XQD QXRYD DVVRFLD]LRQH 1RQ FHC FRUUHOD]LRQH WUD L YDORUL FKH Car DVVXPH GXUDQWH OH YDULH DWWLYD]LRQL GHOOD IXQ]LRQH I
/* stampa C */
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
512
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
513
9DULDELOL (VWHUQH
1HOOOO
HVHPSLLR 1H HVHPS R & HC XQD YDULDELOH HVWHUQD VLD DO PDLQ FKH D VDOWDELDQFKL OD GHILQL]LRQH GL & HC YLVLELOH VLD GDOOD IXQ]LRQH PDLQ FKH GDOOD SURFHGXUD VDOWDELDQFKL (QWUDPEH TXHVWH XQLWDC SRVVRQR IDU ULIHULPHQWR DOOD YDULDELOH & (C OD VWHVVD YDULDELOH 2JQL PRGLILFD D & SURGRWWD GDOOD IXQ]LRQH YLHQH YLVWD DQFKH GDO PDLQ SRVVLELOLWDC GL HIIHWWL FROODWHUDOL
(IIHWWL FROODWHUDOL
6L FKLDPD HIIHWWR FROODWHUDOH VLGH HIIHFW SURYRFDWR GDOODWWLYD]LRQH GL XQD IXQ]LRQH OD PRGLILFD GL XQD TXDOXQTXH WUD OH YDULDELOL HVWHUQH 6L SRVVRQR DYHUH QHL VHJXHQWL FDVL SDUDPHWUL GL WLSR SXQWDWRUH DVVHJQDPHQWR D YDULDELOL HVWHUQH 6H SUHVHQWL OH IXQ]LRQL QRQ VRQR SLXC IXQ]LRQL LQ VHQVR PDWHPDWLFR (VHPSLLR (VHPS R #include <stdio.h> int B; int f (int * A); main() { B=1; printf("%d\n",2*f(&B)); /* (1) */ B=1; printf("%d\n",f(&B)+f(&B)); /* (2) */ } int f (int * A) { *A=2*(*A); return *A; } )RUQLVFH YDORUL GLYHUVL SXU HVVHQGR DWWLYDWD FRQ OR VWHVVR SDUDPHWUR DWWXDOH /LVWUX]LRQH VWDPSD PHQWUH OLVWUX]LRQH VWDPSD
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
514
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
515
(IIHWWL &ROODWHUDOL
(VHPSLLR (VHPS R int V=2; float f (int X) { V=V*X; /* origine side effect */ return (X+1) } main() { int B; B=2; printf("%f",V+f(B)); B=2;V=2; printf("%f",f(B)+V); } ,Q TXHVWR FDVR 9I; I; 9
(OOLLPLLQD]LLRQH GHJOOLL (IIHWWLL &ROOOODWHUDOOLL ( P QD] RQH GHJ (IIHWW &R DWHUD 3HU HYLWDUH HIIHWWL FROODWHUDOL LQ IXQ]LRQL RFFRUUH QRQ DYHUH SDUDPHWUL SDVVDWL SHU LQGLUL]]R QHOOH LQWHVWD]LRQL GL IXQ]LRQL QRQ LQWURGXUUH DVVHJQDPHQWL D YDULDELOL HVWHUQH QHO FRUSR GL IXQ]LRQL
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
516
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
517
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
518
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
519
(VHPSLLR (VHPS R #include <stdio.h> main(void) {int i=0; while (i<=3) { /* BLOCCO 1 */ int j=4; /* def. locale al blocco 1*/ j=j+i; i++; { /* BLOCCO 2: interno al blocco 1*/ float i=j; /*locale al blocco 2*/ printf("%f\t%d\t",i,j); } printf("%d\t\n",i); } }
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
520
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
521
(VHPSLLR (VHPS R #include <stdio.h> int X=0; void P1 (); /* superflua void P2 (); main() { X++; P2; } void P1 () { printf("\n%d",X); } void P2 () {float X; X=2.14; P1; } 6WDPSD LO YDORUH &RQ UHJROH GL YLVLELOLWDC GLQDPLFKH QRQ DGRWWDWH GDO & PD DG HVHPSLR LQ /,63 VWDPSHUHEEH LO YDORUH
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
522
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
523
6WDFN
,Q & OH DWWLYD]LRQL GHOOH IXQ]LRQL VRQR UHDOL]]DWH XWLOL]]DQGR O
DUHD GL PHPRULD VWDFN LQ FXL ULVLHGH XQD VWUXWWXUD GDWL JHVWLWD VHJXHQGR XQD GLVFLSOLQD D SLOD OR VWDFN (C XQD VWUXWWXUD GDWL VX FXL HC SRVVLELOH HVHJXLUH GXH RSHUD]LRQL LQVHULPHQWR GL XQ HOHPHQWR SXVK HVWUD]LRQH GXL XQ HOHPHQWR SRS 3ROOLLWLLFD GLL JHVWLLRQH GHOOOOR VWDFN 3R W FD G JHVW RQH GH R VWDFN O
XOWLPR HOHPHQWR LQVHULWR HC LO SULPR DG HVVHUH HVWUDWWR SROLWLFD /,)2 /DVW ,Q )LUVW 2XW
inserimento (push) estrazione (pop) top
bottom
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
524
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
525
5HFRUG GDWWLYD]LRQH
8Q UHFRUG GDWWLYD]LRQH FRQWLHQH OH LQIRUPD]LRQL UHODWLYH DG XQD VSHFLILFD FKLDPDWD GL IXQ]LRQHSURFHGXUD ,Q SDUWLLFROODUH ,Q SDUW FR DUH QRPH GHOOD IXQ]LRQH DWWLYDWD H ULIHULPHQWR DO FRGLFH SXQWR GL ULWRUQR DO FKLDPDQWH UHWXUQ DGGUHVV HC OLQGLUL]]R GHOOLVWUX]LRQH GD HVHJXLUH DO WHUPLQH GHOOD DWWLYD]LRQH ULIHULPHQWR GL FDWHQD VWDWLFD VWDWLF OLQN HC XQ ULIHULPHQWR DOODPELHQWH YLVWR VWDWLFDPHQWH GDO VRWWRSURJUDPPD YDULDELOL HVWHUQH SDUDPHWUL IRUPDOL H ORUR OHJDPH FRQ TXHOOL DWWXDOL VH SHU LQGLUL]]R YDULDELOL ORFDOL ULIHULPHQWR DO UHFRUG GL DWWLYD]LRQH SUHFHGHQWH VXOOD SLOD FDWHQD GLQDPLFD R G\QDPLF OLQN HC XQ ULIHULPHQWR DOODPELHQWH GHO FKLDPDQWH $O WHUPLQH GHOO
HVHFX]LRQH UHWXUQ LO UHFRUG GL DWWLYD]LRQH YLHQH GHDOORFDWR GDOOR VWDFN RSHUD]LRQH GL SRS
5HFRUG GL $WWLYD]LRQH
4XDQGR O
DWWLYD]LRQH GHOOD IXQ]LRQH WHUPLQD LVWUX]LRQH UHWXUQ R XOWLPD LVWUX]LRQH OHVHFX]LRQH SURVHJXH GDOO
LVWUX]LRQH PHPRUL]]DWD QHO UHWXUQ DGGUHVV (VHPSLLR (VHPS R #include <stdio.h> void R(int A) { printf("Valore: %d\n", A); } void Q(int A) { R(A); } void P() { int a=10; Q(a); return; } main() { P(); }
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
526
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
527
5HFRUG GL $WWLYD]LRQH
&DWHQD 'LLQDPLLFD &DWHQD ' QDP FD
Whvhivyvyphyv vhyTP vsphrhhvph vshrhqhvtyi9G vshypqvpr Q pqvprhv
/D FDWHQD GLQDPLFD UDSSUHVHQWD OD VWRULD GHOOH DWWLYD]LRQL GHOOH XQLWDC GL SURJUDPPD $WWLYD]LRQL 62 ! PDLQ ! 3 ! 4 ! 5
&DWHQD VWDWLLFD &DWHQD VWDW FD /D FDWHQD VWDWLFD LQGLFD GRYH FHUFDUH LQ TXDOH DUHD L ULIHULPHQWL SHU OH YDULDELOL QRQ ORFDOL YDULDELOL HVWHUQH ,Q & OH IXQ]LRQL QRQ SRVVRQR FRQWHQHUH GHILQL]LRQL GL DOWUH IXQ]LRQL OD FDWHQD VWDWLFD ID VHPSUH ULIHULPHQWR DOO
DUHD GDWL JOREDOH FRQWHQHQWH DG HVHPSLR OH YDULDELOL HVWHUQH
rpqqvR
pqvprqvR
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
528
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
529
(VHPSLLR (VHPS R #include <stdio.h> void prova(int *a, int b, int n); main() { int c[3], d; c[0] = 100; c[1] = 15; c[2] = 20; d = 0; printf("Prima: %d,%d,%d,%d\n", c[0],c[1],c[2],d); prova(c,d,3); printf("Dopo: %d,%d,%d,%d\n", c[0],c[1],c[2],d); } void { int for b = } prova(int *a, int b, int n) i; (i = 1; i < n; i++) a[i] = b; a[0];
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
530
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
531
(VHPSLLR (VHPS R #include <stdio.h> int A; int f() { static int cont=0; cont++; return cont; } main() { printf("%d\n", f()); printf("%d\n", f()); } O D YDULDELOH static int cont SHUVLVWH WUD XQD DWWLYD]LRQH GL I H OD VXFFHVVLYD OD SULPD SULQWI VWDPSD OD VHFRQGD SULQWI VWDPSD
(VHPSLLR (VHPS R ,Q & HC SRVVLELOH GLVWULEXLUH LO FRGLFH VRUJHQWH GL XQ SURJUDPPD VX SLXC ILOH )LOH $$$F H[WHUQ YRLG IXQ LQW QFDOO IXQ ^ QFDOO ` )LOH %%%F H[WHUQ IXQ YRLG IXQ H[WHUQ LQW QFDOO YRLG IXQ ^ IXQ QFDOO `
OD YDULDELOH QFDOO H OH IXQ]LRQL IXQ H IXQ VRQR YLVLELOL HG XWLOL]]DELOL LQ HQWUDPEL L ILOH
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
532
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
533
$OORFD]LRQH
&OODVVH GLL PHPRULL]]D]LLRQH H[WHUQ & DVVH G PHPRU ]]D] RQH H[WHUQ DSSOLFDELOH D YDULDELOL H IXQ]LRQL GHIDXOW SHU YDULDELOL JOREDOL H IXQ]LRQL YLVLELOLWj JOREDOH YLVLELOH RYXQTXH GDO SXQWR GL GHILQL]LRQH R GLFKLDUD]LRQH LQ SRL YLVLELOH DQFKH DO GL IXRUL GHO ILOH FKH QH FRQWLHQH OD GHILQL]LRQH SHUPDQHQWH HVLVWH GDOO
LQL]LR GHOO
HVHFX]LRQH GHO SURJUDPPD VLQR DOOD VXD ILQH DOORFD]LRQH VX '$7$ 6(*0(17 SHU OH YDULDELOL VX &2'( 6(*0(17 IXQ]LRQL
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
534
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
535
&OODVVH GLL 0HPRULL]]D]LLRQH VWDWLLF & DVVH G 0HPRU ]]D] RQH VWDW F DSSOLFDELOH D YDULDELOL VWDWLFD GHILQL]LRQH JOREDOH R ORFDOH QRQ DOWHUD OD YLVLELOLWj JOREDOH QHO FDVR GL GHILQL]LRQH JOREDOH YLVLELOH RYXQTXH GDO SXQWR GL GHILQL]LRQH LQ SRL PD VROR DOO
LQWHUQR GHO ILOH FKH OD FRQWLHQH ORFDOH QHO FDVR GL GHILQL]LRQH ORFDOH YLVLELOH VROR DOO
LQWHUQR GHO EORFFR R GHOOD IXQ]LRQH LQ FXL q VWDWD GHILQLWD GDO SXQWR GL GHILQL]LRQH LQ SRL SHUPDQHQWH WHPSR GL YLWD SDUL DO WHPSR GL HVHFX]LRQH GHO SURJUDPPD DOORFD]LRQH VX '$7$ 6(*0(17 &RGH 6HJPHQW
5LLDVVXPHQGR 5 DVVXPHQGR
'DWD 6HJPHQW YDULDELOL H[WHUQ JOREDOL PXOWLILOH YDULDELOL VWDWLF JOREDOL VLQJOHILOH H ORFDOL
(VLVWH XQXOWHULRUH FODVVH GL PHPRUL]]D]LRQH UHJLVWHU FKH VH SRVVLELOH DOORFD YDULDELOL VX UHJLVWUL PDFFKLQD
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
536
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
537
/D ULFRUVLRQH
8QD IXQ]LRQH PDWHPDWLFD HC GHILQLWD ULFRUVLYDPHQWH TXDQGR QHOOD VXD GHILQL]LRQH FRPSDUH XQ ULIHULPHQWR D VH VWHVVD (VHPSLLR (VHPS R )XQ]LRQH IDWWRULDOH VX LQWHUL QRQ QHJDWLYL IQ Q
,QGX]LLRQH PDWHPDWLLFD ,QGX] RQH PDWHPDW FD LPPDJLQDQGR GL DYHUH [N FRVWUXLVFL [N ,QGXWWLYDPHQWH LO FDOFROR GHO IDWWRULDOH GL XQ QXPHUR Q YLHQH ULFRQGRWWR DO FDOFROR GHO IDWWRULDOH GL Q LQ FDOFROR GHO IDWWRULDOH GL Q D TXHOOR GL Q HWF ILQR D UDJJLXQJHUH XQ FDVR EDVH IDWWRULDOH GL D ULVXOWDWR QRWR 0HWRGR SDUWLFRODUPHQWH XWLOH SHU DOFXQL SUREOHPL LQWULQVHFDPHQWH ULFRUVLYL R FKH ODYRUDQR VX VWUXWWXUH GDWL ULFRUVLYH OLVWH DOEHUL
HC GHILQLWD ULFRUVLYDPHQWH FRPH VHJXH IQ IQ Q IQ VH Q VH Q! FDVR EDVH FDVR JHQHULFR
8VDQGR LO PHWRGR LQGXWWLYR VL VSHFLILFD FRPH WDOH IXQ]LRQH VL FRPSRUWD QHO FDVR EDVH H QHO FDVR JHQHULFR
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
538
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
539
(VHPSLL GLL SUREOOHPLL ULLFRUVLLYLL (VHPS G SURE HP U FRUV Y 6RPPD GHL SULPL Q QXPHUL QDWXUDOL VRPPDQ QVRPPDQ VH Q DOWULPHQWL
3URJUDPPD]LRQH ULFRUVLYD
0ROWL OLQJXDJJL GL SURJUDPPD]LRQH RIIURQR OD SRVVLELOLWDC GL GHILQLUH IXQ]LRQLSURFHGXUH ULFRUVLYH (VHPSLLR (VHPS R &DOFROR GHO IDWWRULDOH GL XQ QXPHUR LQ & #include <stdio.h> int fattoriale(unsigned int n); main(void) {int n; printf("\nIntrodurre N:\t"); scanf("%d",&n); printf("\nFattoriale di %d:\t%d\n", n, fattoriale(n)); } int fattoriale(unsigned int n) { if (n==0) return 1; else return n*fattoriale(n-1); } 1RQ WXWWL L OLQJXDJJL GL DOWR OLYHOOR VXSSRUWDQR SURFHGXUH ULFRUVLYH DG HVHPSLR LO )2575$1 QRQ FRQVHQWH GL VFULYHUH VRWWRSURJUDPPL ULFRUVLYL
*HQHUDUH OQHVLPR QXPHUR GL )LERQDFFL ILEQ ILEQILEQ VH Q VH Q DOWULPHQWL
&DOFROR GHO PLQLPR GL XQD VHTXHQ]D GL HOHPHQWL >D D D @ >D_> D D @@ PLQ>D@ ! D PLQ>DD@ ! D VH DD DOWULPHQWL D PLQ>D_=@ ! PLQ>DPLQ=@ VYLOXSSDQGR PLQ>D_=@ VL RWWLHQH PLQ>DPLQ>D PLQ>D@@@
&DOFROR GHOOD OXQJKH]]D GL XQD VHTXHQ]D OXQJ>@ OXQJ>D_=@ ! ! OXQJ=
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
540
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
541
int fib(unsigned int n) { if (n==0) return 0; else if (n==1) return 1; else return fib(n-1)+fib(n-2); /* ricorsione non lineare*/ } (C XQ HVHPSLR GL ULFRUVLRQH QRQ OLQHDUH SLXC FKLDPDWH ULFRUVLYH QHO FRUSR GHOOD IXQ]LRQH SHU GHWHUPLQDUH LO YDORUH UHVWLWXLWR GDOOD IXQ]LRQH
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
542
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
543
(VHUFLL]LLR (VHUF ] R 3LOD GL DWWLYD]LRQL SHU OD FKLDPDWD main() { ... printf("Fattoriale di 2:%d\n", fattoriale(2)); } $OOLQ]LR GHOO
HVHFX]LRQH
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
544
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
545
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
546
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
547
$O WHUPLQH GHOOD SULPD DWWLYD]LRQH GL IDWWRULDOH YLHQH UHVWLWXLWR DO PDLQ LO YDORUH H TXHVWR VWDPSD LO ULVXOWDWR
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
548
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
549
5LFRUVLRQH HG LWHUD]LRQH
/D ULFRUVLRQH HC VHPSUH UHDOL]]DELOH PHGLDQWH LWHUD]LRQH $G HVHPSLLR $G HVHPS R 5HDOL]]D]LRQH LWHUDWLYD GHO IDWWRULDOH #include <stdio.h> int fatt_it(unsigned int n); main(void) { int n; printf("\nIntrodurre N:\t"); scanf("%d",&n); printf("\nFattoriale di %d:\t%d\n", n, fatt_it(n)); } int fatt_it(unsigned int n) { int naux, f; f = 1; for (naux=1; naux<=n; naux++) f *= naux; return f; }
5LFRUVLRQH H ,WHUD]LRQH
4XDQGR FRQYLLHQH XWLLOOLL]]DUH OOD ULLFRUVLLRQH" 4XDQGR FRQY HQH XW ]]DUH D U FRUV RQH" 6ROX]LRQL ULFRUVLYH VRQR VSHVVR SLXC YLFLQH DOOD GHILQL]LRQH PDWHPDWLFD GL FHUWH IXQ]LRQL 9HUVLRQL LWHUDWLYH VRQR JHQHUDOPHQWH SLXC HIILFLHQWL GL XQD VROX]LRQH ULFRUVLYD VLD LQ WHUPLQL GL PHPRULD FKH GL WHPSR GL HVHFX]LRQH
(VHUFLL]LL (VHUF ] 6FULYHUH OD YHUVLRQH LWHUDWLYD GHOOD SURFHGXUD SHU LO FDOFROR GHOOQHVLPR QXPHUR GL )LERQDFFL 6FULYHUH XQD SURFHGXUD 3ULQW5HY FKH OHJJH LQ LQJUHVVR XQD VHTXHQ]D GL FDUDWWHUL WHUPLQDWD GD
H VWDPSD OD VHTXHQ]D DO FRQWUDULR 520$ $025 'HILQLUQH XQD YHUVLRQH ULFRUVLYD VHQ]D XWLOL]]DUH LO WLSR VWULQJD
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
550
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
551
6ROOX]LLRQLL 6R X] RQ QHVLPR QXPHUR GL )LERQDFFL YHUVLRQH LWHUDWLYD int fib_it(unsigned int n) { unsigned int i,x=1,y=0,z; for(i=1;i<=n;i++) { z = x; x += y; y=z;} return x; } 3ULQW5HY YHUVLRQH ULFRUVLYD #include <stdio.h> #include <string.h> void print_rev(char car); main(void) { printf("\nIntrodurre una sequenza terminata da .:\t"); print_rev(getchar()); } void print_rev(char car); { if (car != .) { print_rev(getchar()); putchar(car);} else return; } 1HOOD YHUVLRQH ULFRUVLYD RJQL UHFRUG GL DWWLYD]LRQH QHOOR VWDFN PHPRUL]]D XQ VLQJROR FDUDWWHUH OHWWR SXVK LQ IDVH GL SRS L FDUDWWHUL YHQJRQR VWDPSDWL QHOOD VHTXHQ]D LQYHUVD 3HU VFULYHUQH XQD YHUVLRQH LWHUDWLYD HC QHFHVVDULR PHPRUL]]DUH LQ XQD VWUXWWXUD GDWL YHWWRUH OD VWULQJD
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI 552
3ULQW5HY YHUVLRQH LWHUDWLYD FRQ VWULQJD DO PD[ FDUDWWHUL #include <stdio.h> #include <string.h> #define MAXLEN 30 void print_rev_it(char word[]) { int i; for (i=strlen(word)-1; i>=0; i--) putchar(word[i]); return; } main() { char parola[MAXLEN]; printf("\nIntrodurre una parola:\t"); scanf("%s",&parola); print_rev_it(parola); }
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
553
3ULQW5HY YHUVLRQH ULFRUVLYD FRQ VWULQJD #include <stdio.h> #include <string.h> #define MAXLEN 30 void print_rev(char word[], int i) { if (strlen(word)-i>1) print_rev(word,i+1); putchar(word[i]); return; } main() { int n; char parola[MAXLEN]; printf("\nIntrodurre una parola:\t"); scanf("%s",&parola); print_rev(parola,0); }
5LFRUVLRQH 7DLO
4XDQGR OD FKLDPDWD ULFRUVLYD GL XQD IXQ]LRQHSURFHGXUD ) HC OXOWLPD LVWUX]LRQH GHO FRGLFH GL ) VL GLFH FKH ) HC WDLO ULFRUVLYD $G HVHPSLLR $G HVHPS R #include <stdio.h> int f (int x, int y); main() {int n,m; printf("\nIntrodurre due numeri:\t"); scanf("%d%d",&n,&m); printf("Somma di %d e %d:\t %d", n,m,f(n,m)); } int f (int x, int y) { if (x==0) return y; else if (x>0) return f(x-1,y+1); else return f(x+1,y-1); } LQ SUDWLFD I VRPPD [ DG \
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
554
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
555
5LFRUVLRQH 7DLO
/D FRPSXWD]LRQH FKH VL RULJLQD WUDPLWH O
LQYRFD]LRQH GL XQD IXQ]LRQH WDLOULFRUVLYD FRUULVSRQGH DG XQ SURFHVVR FRPSXWD]LRQDOH LWHUDWLYR 8Q SURFHVVR FRPSXWD]LRQDOH HC ULFRUVLYR TXDQGR HC FDUDWWHUL]]DWR GD XQD FDWHQD GL RSHUD]LRQL SRVWLFLSDWH LO FXL ULVXOWDWR HC GLVSRQLELOH VROR GRSR FKH O
XOWLPR DQHOOR GHOOD FDWHQD VL HC FRQFOXVR ,Q XQ SURFHVVR FRPSXWD]LRQDOH LWHUDWLYR DG RJQL SDVVR HC GLVSRQLELOH XQD IUD]LRQH GHO ULVXOWDWR 1HOOOO
I ! I ! I ! UHWXUQ ,O ULVXOWDWR QRQ YLHQH ULHODERUDWR GDOOH DWWLYD]LRQL LQWHUPHGLH PD SDVVDWR VHPSOLFHPHQWH GD FLDVFXQD DO FKLDPDQWH ,O FRPSLODWRUH SHU RWWLPL]]DUH O
RFFXSD]LRQH GHOOR VWDFN SRWUHEEH XWLOL]]DUH LO PHGHVLPR UHFRUG GL DWWLYD]LRQH SHU WXWWH OH DWWLYD]LRQL VXFFHVVLYH GHOOD IXQ]LRQH WDLO ULFRUVLYD &RQVHQWH GL RWWLPL]]DUH OR VSD]LR GL PHPRULD DOORFDWR VXOOR VWDFN
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
556
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
557
(VHPSLLR (VHPS R 9HUVLRQH WDLOULFRUVLYD GHO IDWWRULDOH 9HUVLRQH ULFRUVLYD int fattoriale(unsigned int n) { if (n==0) return 1; else if (n==1) return 1 else return n*fattoriale(n-1); /* ricorsione */ } 9HUVLRQH WDLOULFRUVLYD int fattoriale(unsigned int n) { return fatt_tail(1,n,1);} int fatt_tail(unsigned int i, unsigned int n, long int f) { if (i<=n) return fatt_tail(++i,n,f*i); else return f; }
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
558
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
559
void ordina(int *V, int N) {int j, max, tmp; if (N==1) return; else { for( max=N-1,j=0; j<N; j++) if (V[j]>V[max]) max=j; if (max<N-1) { /*scambio */ tmp=V[N-1]; V[N-1]=V[max]; V[max]=tmp; } } ordina(V, N-1); /*scansione sottovettore */ }
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
560
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
561
XVR GHLL SDUDPHWULL 9 QFR R QH XVR GH SDUDPHWU QRQ HC SRVVLELOH SDVVDUH D IXQ]LRQL H SURFHGXUH SDUDPHWUL GL WLSR IXQ]LRQH 9LLQFROOR VXOO ULLVXOOWDWR 9 QFR R VX U VX WDWR OH IXQ]LRQL QRQ SRVVRQR ULWRUQDUH IXQ]LRQL FRPH ULVXOWDWR (VHPSLLR (VHPS R
3XQWDWRUH D )XQ]LRQH
double (* f) (double par); 3ULLRULLWDC ULLVSHWWR D
3U RU WDC U VSHWWR D
I SXQWD DOOD IXQ]LRQH FRQ XQ SDUDPHWUR GL LQJUHVVR GRXEOH H UHVWLWXLVFH XQ GRXEOH ,O & FRQVLGHUD O
LGHQWLILFDWRUH GL XQD IXQ]LRQH FRPH XQ SXQWDWRUH DO VXR FRGLFH
PD
HC SRVVLELOH SDVVDUH D IXQ]LRQL SDUDPHWUL GL WLSR SXQWDWRUH D IXQ]LRQH HC SRVVLELOH RWWHQHUH FRPH ULVXOWDWR GL XQD IXQ]LRQH XQ SXQWDWRUH D IXQ]LRQH 3XQWDWRUH D IXQ]LLRQH 3XQWDWRUH D IXQ] RQH WLSRBI!
QRPH)!OLVWDBSDUBIRUPDOL! GRYH QRPH)! HC O
LGHQWLILFDWRUH GHO SXQWDWRUH D IXQ]LRQH WLSRBI! HC LO WLSR GL GDWR UHVWLWXLWR GDOOD IXQ]LRQH SXQWDWD OLVWDBSDUBIRUPDOL! HC OD OLVWD GHL SDUDPHWUL IRUPDOL GHOOD IXQ]LRQH SXQWDWD
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
562
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
563
$OFXQL (VHPSL
'HILLQLL]LLRQHGLLFKLLDUD]LLRQH GLL IXQ]LLRQLL 'HI Q ] RQH G FK DUD] RQH G IXQ] RQ double fun (double x);
WLSRA!yvhhshyvA!
hyvhshyvA
OD IXQ]LRQH ) KD LO SXQWDWRUH D IXQ]LRQH ) FRPH SDUDPHWUR IRUPDOH 1HO FRUSR GL ) HC SRVVLELOH FKLDPDUH OD IXQ]LRQH SXQWDWD GD ) PHGLDQWH GHUHIHUHQFLQJ
tipo1 F1(tipo2 (*F2)(lista-par-formali-F2), altri-par-formali-F1) { tipo2 k; ... k=*F2(...); /*chiamata mediante dereferencing*/ }
double sommaquadratif (double (* f)(double par), int m, int n) {...} 8VR GHOO SDUDPHWUR 8VR GH SDUDPHWUR somma = somma + (* f)(k) * (* f)(k); ,QYRFD]LLRQH ,QYRFD] RQH sommaquadratif (fun, 1, 10000);
8Q SDUDPHWUR IRUPDOH IXQ]LRQH HC VSHFLILFDWR LQGLFDQGR XQ QRPH SXQWDWRUH OD OLVWD GHL SDUDPHWUL IRUPDOL HG LO WLSR GL ULVXOWDWR ,O SDUDPHWUR DWWXDOH FRQ FXL VL LQYRFD ) GHYH HVVHUH XQ LGHQWLILFDWRUH GL IXQ]LRQH FRQ OD VWHVVD GHVFUL]LRQH GHL SDUDPHWUL H OR VWHVVR WLSR GL ULVXOWDWR GL )
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
564
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
565
(VHPSLLR (VHPS R #include <math.h> double fun(double x) /*reciproco */ { return 1.0 / x;} double sommaquadratif (double (* f)(double par), int m, int n) {int k; double somma; somma = 0; for (k=m; k <= n; k++) somma = somma + (*f)(k)*(*f)(k); return somma; } double sommacubif (double (*f) (double par), int m, int n) { int k; double cubo; cubo= 0; for (k=m; k <= n; k++) cubo=cubo+(*f)(k)*(*f)(k)*(*f)(k); return cubo; } main () {int a, b, c, i; printf (" Inversi %.7f\n", sommaquadratif (fun,1, 10000)); printf (" Seni %.7f\n", sommaquadratif (sin, 2, 13)); printf (" Inversi %.7f\n", sommacubif (fun, 1, 10000)); printf (" Seni %.7f\n", sommacubif (sin, 2, 13)); }
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI 566
(VHUFLL]LLR (VHUF ] R 6FULYHUH XQ SURJUDPPD & FKH UDSSUHVHQWD XQD IXQ]LRQH 6LJPD 6LJPD GDWL LQ LQJUHVVR XQ SDUDPHWUR IXQ]LRQH ) D YDORUH LQWHUR H GXH HVWUHPL LQWHUL ,QIHULRUH 6XSHULRUH FDOFROD OD VRPPDWRULD
S S S S S
v2DsrvrTrvrAv
L
L
L
L LQIVXS
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
567
6ROOX]LLRQH 6R X] RQH #include <stdio.h> int sommatoria (int (* f)(int par, int N), int inf, int sup, int n) {int k; double somma; somma = 0; for (k=inf; k <= sup; k++) somma = somma + (*f)(k, n); return somma; } int power(int base, int exp) { int i, pow=1; for(i=1; i<=exp; i++) pow*=base; return pow; } main () { int INF,SUP,N, RIS; printf("Inserire INF e SUP:"); scanf("%d%d", &INF, &SUP); printf("Esponente?"); scanf("%d", &N); RIS=sommatoria(power,INF,SUP,N); printf("\nRisultato: %d", RIS); }
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
568
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
569
(VHPSLR #include <stdio.h> typedef int fprot1 (int a, int b); typedef fprot1 *funptr; int selecta (int a, int b) { return a + b; } int selectb (int a, int b) { return a - b; } int selectc (int a, int b) { return a * b; } funptr select2 (int a) { switch (a) { case 1: return selecta; break; case 2: return selectb; break; case 3: return selectc; break; default: return selecta; } } main() { int x, y, scelta; funptr F; scanf("%d%dScelta:%d",&x,&y,&scelta); F=select2(scelta); printf("Risultato:%d\n",(*F)(x,y)); }
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
570
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
571
$G HVHPSLLR VH OO
HVHFX]LLRQH HC GHWHUPLLQDWD GD XQ FRPDQGR $G HVHPS R VH HVHFX] RQH HC GHWHUP QDWD GD XQ FRPDQGR GHOO WLLSR GH W SR
t ht ht! htI
, SDUDPHWUL IRUPDOL GL PDLQ GLIIHUHQWHPHQWH GDOOH DOWUH IXQ]LRQL VRQR VHPSUH GXH DUJF DUJY LLQW DUJF QW DUJF HC XQ SDUDPHWUR GL WLSR LQWHUR 5DSSUHVHQWD LO QXPHUR GHJOL DUJRPHQWL HIIHWWLYDPHQWH SDVVDWL DO SURJUDPPD QHOOD OLQHH GL FRPDQGR FRQ FXL VL LQYRFD OD VXD HVHFX]LRQH $QFKH LO QRPH VWHVVR GHO SURJUDPPD QHOO
HVHPSLR SURJ HC FRQVLGHUDWR XQ DUJRPHQWR TXLQGL DUJF YDOH VHPSUH DOPHQR FKDU
DUJY FKDU
DUJY YHWWRUH GL VWULQJKH FLDVFXQD GHOOH TXDOL FRQWLHQH XQ GLYHUVR DUJRPHQWR *OL DUJRPHQWL VRQR PHPRUL]]DWL QHO YHWWRUH QHOO
RUGLQH FRQ FXL VRQR GDWL GDOO
XWHQWH 3HU FRQYHQ]LRQH DUJY>@ FRQWLHQH LO QRPH GHO SURJUDPPD VWHVVR FLRHC LO QRPH GHO ILOH HVHJXLELOH
$OORUD DUJF YDOH 1 DUJY ULVXOWD DUJY>@ DUJY>@ DUJY>@ DUJY>1@
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
572
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
573
(VHPSLLR (VHPS R 3URJUDPPD FKH VWDPSD L VXRL DUJRPHQWL #include <stdio.h> /* programma esempio.exe */ main(int argc, char *argv[]) { int i; for(i=0; i<argc; i++) printf("%s%s",argv[i], (i<argc-1)?"\t":"\n"); return 0; } ,QYRFD]LLRQH ,QYRFD] RQH HVHPSLR D E F ]HWD 6WDPSD 6WDPSD HVHPSLR D B B E F ]HWD
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
574
FONDAMENTI DI INFORMATICA
IL LINGUAGGIO C - FUNZIONI
575
, )LOH
,O ILOH HC O
XQLWDC ORJLFD GL PHPRUL]]D]LRQH GHL GDWL VX PHPRULD GL PDVVD &RQVHQWH XQD PHPRUL]]D]LRQH SHUVLVWHQWH GHL GDWL QRQ OLPLWDWD GDOOH GLPHQVLRQL GHOOD PHPRULD FHQWUDOH *HQHUDOPHQWH XQ ILOH HC XQD VHTXHQ]D GL FRPSRQHQWL RPRJHQHH UHFRUG ORJLFL , ILOH VRQR JHVWLWL GDO 6LVWHPD 2SHUDWLYR 3HU RJQL YHUVLRQH & HVLVWRQR IXQ]LRQL SHU LO WUDWWDPHQWR GHL ILOH 6WDQGDUG /LEUDU\ FKH WHQJRQR FRQWR GHOOH IXQ]LRQDOLWDC GHO 62 RVSLWH ,Q & LL ILLOOH YHQJRQR GLLVWLLQWLL LLQ GXH FDWHJRULLH ,Q & I H YHQJRQR G VW QW Q GXH FDWHJRU H ILOH GL WHVWR WUDWWDWL FRPH VHTXHQ]H GL FDUDWWHUL RUJDQL]]DWL LQ OLQHH FLDVFXQD WHUPLQDWD GD
?Q
)LOH GL WHVWR
6RQR ILOH GL FDUDWWHUL RUJDQL]]DWL LQ OLQHH 2JQL OLQHD HC WHUPLQDWD GD XQD PDUFD GL ILQH OLQHD QHZOLQH FDUDWWHUH
?Q
Egregio Sig. Rossi, con la presente le rendo noto di aver provveduto ...
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
3HU DFFHGHUH DG XQ ILOH GD XQ SURJUDPPD & HC QHFHVVDULR SUHGLVSRUUH XQD YDULDELOH FKH OR UDSSUHVHQWL SXQWDWRUH D ILOH 3XQWDWRUH D ILLOOH 3XQWDWRUH D I H HC XQD YDULDELOH FKH YLHQH XWLOL]]DWD SHU ULIHULUH XQ ILOH QHOOH RSHUD]LRQL GL DFFHVVR OHWWXUD H VFULWWXUD ,PSOLFLWDPHQWH HVVD LQGLFD LO ILOH O
HOHPHQWR FRUUHQWH DOO
LQWHUQR GHOOD VHTXHQ]D $G HVHPSLLR $G HVHPS R FILE *fp;
LO WLSR ),/( HC XQ WLSR QRQ SULPLWLYR GLFKLDUDWR QHO ILOH VWGLRK
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
$SHUWXUD GL XQ )LOH
),/(
IRSHQFKDU
QDPH FKDU
PRGH
$SHUWXUD LQ OHWWXUD
IS IRSHQ ILOHQDPH U
dove: QDPH HC XQ DUUD\ GL FDUDWWHUL FKH UDSSUHVHQWD LO QRPH DVVROXWR R UHODWLYR GHO ILOH QHO ILOH V\VWHP PRGH HVSULPH OD PRGDOLWDC GL DFFHVVR VFHOWD U LQ OHWWXUD UHDG Z LQ VFULWWXUD ZULWH D VFULWWXUD DJJLXQWD LQ IRQGR DSSHQG E D ILDQFR DG XQD GHOOH SUHFHGHQWL LQGLFD FKH LO ILOH HC ELQDULR W D ILDQFR DG XQD GHOOH SUHFHGHQWL LQGLFD FKH LO ILOH HCGL WHVWR 6H HVHJXLWD FRQ VXFFHVVR O
RSHUD]LRQH GL DSHUWXUD ULWRUQD FRPH ULVXOWDWR XQ SXQWDWRUH DO ILOH DSHUWR 6H LQYHFH O
DSHUWXUD IDOOLVFH DG HVHPSLR SHUFKHC LO ILOH QRQ HVLVWH IRSHQ UHVWLWXLVFH LO YDORUH 18//
fp
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
$SHUWXUD LQ VFULWWXUD
IS IRSHQ ILOHQDPH Z
fp
fp ,O SXQWDWRUH DO ILOH VL SRVL]LRQD VXOOHOHPHQWR VXFFHVVLYR DOOXOWLPR VLJQLILFDWLYR GHO ILOH VH LO ILOH HVLVWHYD JLDC LO VXR FRQWHQXWR QRQ YLHQH SHUVR
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
$G HVHPSLLR $G HVHPS R File *fp; fp=fopen("c:\anna\dati", "r"); <uso del file> IS UDSSUHVHQWD GDOO
DSHUWXUD LQ SRL LO ULIHULPHQWR GD XWLOL]]DUH QHOOH RSHUD]LRQL GL DFFHVVR D F?DQQD?GDWL (VVR LQGLYLGXD LQ SDUWLFRODUH LO ILOH OHOHPHQWR FRUUHQWH DOOLQWHUQR GHO ILOH
&KLXVXUD GL XQ )LOH
$O WHUPLQH GL XQD VHVVLRQH GL DFFHVVR DO ILOH HVVR GHYH HVVHUH FKLXVR /
RSHUD]LRQH GL FKLXVXUD VL UHDOL]]D FRQ OD IXQ]LRQH IFORVH LQW IFORVH ),/(
IS GRYH IS UDSSUHVHQWD LO SXQWDWRUH DO ILOH GD FKLXGHUH IFOORVH ULLWRUQD FRPH ULLVXOOWDWR XQ LLQWHUR IF RVH U WRUQD FRPH U VX WDWR XQ QWHUR 6H O
RSHUD]LRQH GL FKLXVXUD HC HVHJXLWD FRUUHWWDPHQWH UHVWLWXLVFH LO YDORUH VH OD FKLXVXUD QRQ HC DQGDWD D EXRQ ILQH ULWRUQD OD FRVWDQWH (2)
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
(VHPSLLR (VHPS R #include <stdio.h> main() { FILE *fp; fp = fopen("prova.dat", "w") <scrittura di prova.dat> fclose(fp); return 0; }
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
)XQ]LRQH IHRI
'XUDQWH OD IDVH GL DFFHVVR DG XQ ILOH HC SRVVLELOH YHULILFDUH OD SUHVHQ]D GHOOD PDUFD GL ILQH ILOH FRQ OD IXQ]LRQH GL OLEUHULD LQW IHRI),/(
IS IHRIIS FRQWUROOD VH HC VWDWD UDJJLXQWD OD ILQH GHO ILOH IS QHOOD RSHUD]LRQH GL OHWWXUD R VFULWWXUD SUHFHGHQWH 5HVWLWXLVFH LO YDORUH IDOVR ORJLFR VH QRQ HC VWDWD UDJJLXQWD OD ILQH GHO ILOH DOWULPHQWL XQ YDORUH GLYHUVR GD ]HUR YHUR ORJLFR
3HU ILLOOH ELLQDULL VLL XWLLOOLL]]DQR IXQ]LLRQLL GLL 3HU I H E QDU V XW ]]DQR IXQ] RQ G /HWWXUDVFULWWXUD GL EORFFKL
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
6FULLWWXUD FRQ IRUPDWR 6FU WWXUD FRQ IRUPDWR 6L XVD OD IXQ]LRQH ISULQWI LQW ISULQWI ),/(
IS VWULQJDFRQWUROOR HOHPHQWL GRYH IS HC LO SXQWDWRUH DO ILOH VWULQJDFRQWUROOR LQGLFD LO IRUPDWR GHL GDWL GD VFULYHUH HOHPHQWL HC OD OLVWD GHL YDORUL HVSUHVVLRQL GD VFULYHUH (VHPSLLR (VHPS R FILE *fp; float C=0.27; fp=fopen("risultati.txt", "w"); fscanf(fp,"Risultato: %f", c*3.14); ... fclose(fp); 5HVWLWXLVFH LO QXPHUR GL HOHPHQWL VFULWWL RSSXUH XQ YDORUH QHJDWLYR LQ FDVR GL HUURUH SULLQWIVFDQI H ISULLQWIIVFDQI SU QWI VFDQI H ISU QWI IVFDQI 1RWLDPR FKH
SULQWI VWULQJDFRQWUROOR HOHPHQWL VFDQI VWULQJDFRQWUROOR LQGHOHPHQWL
HTXLYDOJRQR D
ISULQWI VWRXW VWULQJDFRQWUROOR HOHPHQWL IVFDQI VWGLQ VWULQJDFRQWUROOR LQGHOHPHQWL
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
(VHPSLLR (VHPS R 9LVXDOL]]D]LRQH GHO FRQWHQXWR GL XQ ILOH GL WHVWR #include <stdio.h> main() { char buf[80] FILE *fp; fp=fopen("testo.txt", "r"); fscanf(fp,"%s",buf); while(!feof(fp)) { printf("%s", buf); fscanf(fp,"%s",buf); } fclose(fp); } RSSXUH #include <stdio.h> main() { char buf[80] FILE *fp; fp=fopen("testo.txt", "r"); while (fscanf(fp,"%s",buf)>0) printf("%s", buf); fclose(fp); }
/HWWXUDVFULWWXUD GL FDUDWWHUL
)XQ]LRQL VLPLOL D JHWFKDU H SXWFKDU PD FRQ XQ SDUDPHWUR DJJLXQWLYR UDSSUHVHQWDQWH LO SXQWDWRUH DO ILOH GL WHVWR VXO TXDOH VL YXROH OHJJHUH R VFULYHUH LQW LQW LQW LQW JHWF ),/(
IS SXWF LQW F ),/(
IS IJHWF ),/(
IS ISXWF LQW F ),/(
IS
,Q FDVR GL HVHFX]LRQH FRUUHWWD UHVWLWXLVFRQR LO FDUDWWHUH OHWWR R VFULWWR FRPH LQWHUR DOWULPHQWL (2)
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
(VHPSLLR (VHPS R 3URJUDPPD FKH FRQFDWHQD L ILOH GDWL FRPH DUJRPHQWR LQ XQ XQLFR ILOH VWGRXW #include <stdio.h> main(int argc, char **argv) { FILE *fp; void filecopy(FILE *, FILE *); if (argc==1) filecopy(stdin, stdout); else while (--argc>0) if ((fp=fopen(*++argv, "r"))==NULL) { printf("\nImpossibile aprire il file %s\n", *argv); exit(1); } else {filecopy(fp, stdout); fclose(fp); } return 0; } void filecopy(FILE *inputFile, FILE *outputFile) {int c; while((c=getc(inputFile))!=EOF) putc(c, outputFile); }
1RWH VXOOOO
HVHPSLLR 1RWH VX HVHPS R VH QRQ FL VRQR DUJRPHQWL DUJF LO SURJUDPPD FRSLD OR VWDQGDUG LQSXW QHOOR VWDQGDUG RXWSXW OD IXQ]LRQH filecopy HIIHWWXD OD FRSLD GHO ILOH FDUDWWHUH SHU FDUDWWHUH VH XQR GHL ILOH LQGLFDWL FRPH DUJRPHQWR QRQ HVLVWH OD IXQ]LRQH fopen IDOOLVFH UHVWLWXHQGR LO YDORUH 18// ,Q TXHVWR FDVR LO SURJUDPPD WHUPLQD exit UHVWLWXHQGR LO YDORUH H VWDPSDQGR XQ PHVVDJJLR GL HUURUH VDUHEEH PHJOLR VFULYHUH L PHVVDJJL GL HUURUH VXOOR VWDQGDUG HUURU ULGLUH]LRQH printf(stderr,"\nImpossibile aprire il file %s\n", *argv); 3HU QRQ SHUGHUH GDWL OD IXQ]LRQH DXWRPDWLFDPHQWH RJQL ILOH DSHUWR exit FKLXGH
LO FLFOR while((c=getc(inputFile))!=EOF) putc(c, outputFile); SRWHYD HVVHUH VFULWWR DQFKH FRPH c=getc(inputFile); while(!feof(inputFile)) { putc(c,outputFile); c=getc(inputFile); }
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
/HWWXUDVFULWWXUD GL VWULQJKH
)XQ]LRQL VLPLOL D JHWV H SXWV FKDU
IJHWV FKDU
V LQW Q ),/(
IS 7UDVIHULVFH QHOOD VWULQJD V L FDUDWWHUL OHWWL GDO ILOH SXQWDWR GD IS ILQR D TXDQGR KD OHWWR Q FDUDWWHUL RSSXUH KD LQFRQWUDWR XQ QHZOLQH RSSXUH OD ILQH GHO ILOH /D IJHWV PDQWLHQH LO QHZOLQH QHOOD VWULQJD V 5HVWLWXLVFH OD VWULQJD OHWWD LQ FDVR GL FRUUHWWD WHUPLQD]LRQH
?
LQ FDVR GL HUURUH R ILQH GHO ILOH LQW
ISXWV FKDU
V ),/(
IS
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
(VHPSLLR (VHPS R 3URJUDPPD FKH VFULYH XQD VHTXHQ]D GL UHFRUG GDWL GD LQSXW LQ XQ ILOH ELQDULR #include<stdio.h> typedef struct{ char nome[20]; char cognome[20]; int reddito; }persona; main() { FILE *fp; persona p; int fine=0; fp=fopen("archivio.dat","wb"); do { printf("Dati persona?"); scanf("%s%s%d%d",&p.nome, &p.cognome,&p.reddito); fwrite(&p,sizeof(persona),1,fp); printf("Fine (si=1,no=0)?"); scanf("%d", &fine); }while(!fine); fclose(fp); }
(VHPSLLR (VHPS R 3URJUDPPD FKH OHJJH H VWDPSD LO FRQWHQXWR GL XQ ILOH ELQDULR #include<stdio.h> typedef struct{ char nome[20]; char cognome[20]; int reddito; }persona; main() { FILE *fp; persona p; fp=fopen("archivio.dat","rb"); fread(&p, sizeof(persona),1, fp); while (!feof(fp)) { printf("%s%s%d",p.nome,p.cognome, p.reddito); fread(&p,sizeof(persona),1,fp); } fclose(fp); }
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
(VHPSLLR (VHPS R 3URJUDPPD FKH ULFHYH FRPH DUJRPHQWR LO QRPH GL XQ ILOH H VFULYH LQ TXHVWR ILOH XQ YHWWRUH GL LQWHUL #include <stdio.h> main(int argc, char **argv) {FILE *file; void stop(char *); int i,n,tab[]={3, 6, -12, 5, -76, 3, 32, 12, 65, 1, 0, -9}; if (argc==2) if ((file=fopen(argv[1],"wb"))==NULL) stop("Impossibile aprire file duscita\n"); else stop("Manca il nome del file di uscita\n"); n = sizeof(tab)/sizeof(tab[0]); fwrite(tab, sizeof(tab[0]), n, file); fclose(file); exit(0); } void stop(char *msg) { fprintf(stderr,msg); exit(1); }
(VHPSLLR (VHPS R 3URJUDPPD FKH ULFHYH FRPH DUJRPHQWR LO QRPH GL XQ ILOH GL LQWHUL H PHPRUL]]D LO FRQWHQXWR GL TXHVWR ILOH LQ XQ YHWWRUH GL LQWHUL GL DO SLXC HOHPHQWL #include <stdio.h> #define MAX 40 main(int argc, char **argv) {FILE *file; void stop(char *); int i, n, tab[MAX]; if (argc==2) {if ((file=fopen(argv[1], "rb"))==NULL) stop("Impossibile aprire file dingresso\n"); } else stop("Manca il nome del file dingresso\n"); n=fread(tab, sizeof(tab[0]), MAX, file); fclose(file); for(i=0;i<n;i++) printf("%d%c", tab[i], (i==n-1) ? \n : \t); exit(0); } void stop(char *msg) { fprintf(stderr,msg); exit(1); }
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
(VHPSLLR (VHPS R )LOH GL UHFRUG #include <stdio.h> #include <ctype.h> #define DIM 5 typedef struct { char nome[15], cognome[15], via[10]; int eta;} Persona; Persona P[DIM]; main(int argc, char **argv) { int crea_vettore(Persona V[], int dim); int i, n; FILE *file; if (argc==2) {n=crea_vettore(P,DIM); if ((file=fopen(argv[1], "wb"))==NULL) printf("Impossibile aprire file\n"); else { fwrite(P,sizeof(Persona),n,file); fclose(file); } } else printf("Manca qualche parametro\n"); }
int crea_vettore(Persona P[], int dim) {int i=0, n=0; char s[80]; while (!feof(stdin) && i<dim) { scanf("%s\n",P[i].nome); scanf("%s\n",P[i].cognome); scanf("%s\n",P[i].via); scanf("%d",&(P[i].eta));gets(s); i++; n++; printf("%s\n%s\n%s\n%d\n",P[i].nome, P[i].cognome,P[i].via,P[i].eta); } }
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
3RVLL]LLRQH FRUUHQWH QHOO ILLOOH 3RV ] RQH FRUUHQWH QH I H /D IXQ]LRQH IWHOO UHVWLWXLVFH OD SRVL]LRQH GHO E\WH VXO TXDOH VL HC SRVL]LRQDWL QHO ILOH DO PRPHQWR GHOOD FKLDPDWD GHOOD IXQ]LRQH UHVWLWXLVFH LQ FDVR GL HUURUH ORQJ IWHOO ),/( I ,O YDORUH UHVWLWXLWR GD IWHOO SXRC HVVHUH XWLOL]]DWR LQ XQD FKLDPDWD DG IVHHN
2ULLJLLQH GHOOOOR VSRVWDPHQWR 2U J QH GH R VSRVWDPHQWR 6((.B6(7 6((.B&85 6((.B(1' LQL]LR ILOH SRVL]LRQH DWWXDOH QHO ILOH ILQH ILOH
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA
(VHPSLLR (VHPS R 3URJUDPPD FKH VRVWLWXLVFH WXWWH OH PLQXVFROH LQ PDLXVFROH LQ XQ ILOH WHVWR GDWR FRPH XQLFR DUJRPHQWR #include <stdio.h> #include <ctype.h> main(int argc, char **argv) { FILE *file; void stop(char *); int ch; if (argc==2) {if ((file=fopen(argv[1], "r+"))==NULL) stop("Impossibile aprire file dingresso\n"); } else stop("Manca qualche parametro\n"); while((ch=getc(file))!=EOF) if(islower(ch)) {fseek(file, ftell(file)-1, SEEK_SET); putc(toupper(ch), file); fseek(file, 0, SEEK_CUR); } fclose(file); exit(0); } void stop(char *msg) {fprintf(stderr,msg); exit(1); }
1RWH VXOOOO
HVHPSLLR 1RWH VX HVHPS R ,O ILOH HC DSHUWR FRQ PRGDOLWDC U DJJLRUQDPHQWR PD SRVL]LRQH DOO
LQ]LR GHO ILOH ,O SURJUDPPD OHJJH DG XQR DG XQR L FDUDWWHUL GHO ILOH H TXDQGR WURYD XQD OHWWHUD PLQXVFROD IXQ]LRQH LVORZHU GHOOD OLEUHULD FW\SH UHWURFHGH FRQ IVHHN GL XQD SRVL]LRQH H OD VRVWLWXLVFH FRQ OD FRUUVLSRQGHQWH PDLXVFROD IXQ]LRQH WRXSSHU /
XWLOL]]R GHOOD IXQ]LRQH IVHHN HC XWLOL]]DWD SHU ULSRVL]LRQDUVL VXO FDUDWWHUH DSSHQD OHWWR VH TXHVWR HC XQD OHWWHUD PLQXVFROD IVHHNILOH IWHOOILOH 6((.B6(7 (C LQROWUH REEOLJDWRULD SHU SRWHU DOWHUQDUH VFULWWXUH H OHWWXUH VX ILOH IVHHNILOH 6((.B&85 /
DSHUWXUD GL XQ ILOH LQ PRGR GL DJJLRUQDPHQWR DEELQDWR DG XQR TXDOXQTXH WUD U Z D ULFKLHGH HVSOLFLWDPHQWH FKH GRSR XQD VHTXHQ]D GL OHWWXUH SULPD GL LQL]LDUH TXDOXQTXH VFULWWXUD YHQJD XVDWD XQD GHOOH IXQ]LRQL GL SRVL]LRQDPHQWR VX ILOH H DQDORJDPHQWH SHU VFULWWXUH VHJXLWH GD OHWWXUH
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA