Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto...
-
Upload
ersilia-bucci -
Category
Documents
-
view
217 -
download
0
Transcript of Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto...
![Page 1: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/1.jpg)
Program. Mod A - Cap. 1 prof. Burattini
1
![Page 2: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/2.jpg)
Program. Mod A - Cap. 1 prof. Burattini
2
ALCUNE INFORMAZIONI PRELIMINARI
Docente: Ernesto Burattini e-mail: [email protected]
Durata del corso: dal 26/09/2006 al 22/12/2006
RICEVIMENTO STUDENTI GIOVEDI’ ORE 8.30-10.30 (Dip. Fisica 2M16)
![Page 3: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/3.jpg)
Program. Mod A - Cap. 1 prof. Burattini
3
Libro di testo consigliato: G. Criscuolo, F. Tramontano – Introduzione alla programmazione. Algoritmi iterativi in C++.Ed. Manna
Altri libri di testo : Deitel H.M., Deitel P.J. – C++ Fondamenti di programmazione, ed. Apogeo
Tucker A.B., Bernat A.P., Bradley W.J., Cupper R.D., Scragg G.W. – Fundamentals of computing I, McGraw-Hill
![Page 4: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/4.jpg)
Program. Mod A - Cap. 1 prof. Burattini
4
SVOLGIMENTO DEL CORSO
LEZIONI
ESAME SCRITTO
ESAME ORALE
LABORATORIODI
PROGRAMMAZIONE
PRENOTAZIONE ESAMI OBBLIGATORIA
![Page 5: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/5.jpg)
Program. Mod A - Cap. 1 prof. Burattini
5
EVENTUALI CAMBI DI GRUPPO VANNO
FATTI SECONDO LA NORMATIVA
ILLUSTRATA SUL SITO DELLA FACOLTA’
www.scienzeinfo.unina.it
![Page 6: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/6.jpg)
Program. Mod A - Cap. 1 prof. Burattini
6
Ultima osservazione
E’ obbligatorio scrivere in
ITALIANO
![Page 7: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/7.jpg)
Program. Mod A - Cap. 1 prof. Burattini
7
Programmazione MOD.A gruppo G3
Questi appunti sono solo di supporto ai libri di testo e non li sostituiscono in alcun modo.
La maggior parte degli esempi sono tratti dal libro di testo
Gli appunti e informazioni varie sono reperibili sul sito
http://people.na.infn.it/~ernb/programmazione mod.a-C++
Inviare esercizi svolti, osservazioni, note o problemi all’indirizzo
NON RISPONDO A MESSAGGI ANONIMI!!!
![Page 8: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/8.jpg)
Program. Mod A - Cap. 1 prof. Burattini
8
PROGRAMMA DEL CORSO
• Introduzione al C++
• Introduzione alla programmazione
• Procedure e funzioni
• Le strutture di controllo
• Introduzione agli stream
• Gli array a una o più dimensioni
Testi:……………………………………………………...
![Page 9: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/9.jpg)
Program. Mod A - Cap. 1 prof. Burattini
9
![Page 10: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/10.jpg)
Program. Mod A - Cap. 1 prof. Burattini
10
![Page 11: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/11.jpg)
Program. Mod A - Cap. 1 prof. Burattini
11
BREVE STORIA
• ABACO 500 a.C.
x1x10x100x10000 ...
x 5
x1
![Page 12: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/12.jpg)
Program. Mod A - Cap. 1 prof. Burattini
12
Istruzioni per l’uso
A partire da destraPer ogni colonna
- stabilisci il fattore di colonna(1 per la prima, 10 per la seconda, etc.)
- moltiplica la somma degli anelli del lato superiore accanto alla sbarra per 5
- somma al numero ottenuto al passo precedente il numero di anelli della parte inferiore accanto alla sbarra
(1*5+4)*1 = 9
(1*5+3)*10 = 80
(0*5+1)*100 = 100
(0*5+3)*10000 = 30000(0*5+2)*100000 = 200000
(1*5+2)*1000000 = 7000000
(0*5+0)*1000 = 0
TOTALE = 7230189
- moltiplica la somma precedente per il fattore di colonna
- fai la somma dei risultati ottenuti precedentemente
![Page 13: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/13.jpg)
Program. Mod A - Cap. 1 prof. Burattini
13
Alcune buone letture
Ettore Picutti - Sul numero e la sua storia - Feltrinelli Universale Economica
Simon Singh - L’ultimo teorema di Fermat
Denis Guedj - Il teorema del pappagallo
Hans M. Enzensberger - Il mago dei numeri
![Page 14: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/14.jpg)
Program. Mod A - Cap. 1 prof. Burattini
14
Pascal (1623-1662)
![Page 15: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/15.jpg)
Program. Mod A - Cap. 1 prof. Burattini
15
Pascalina (1642)
Realizzata da Blaise Pascal a 19 anni per aiutare il padre contabile.
![Page 16: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/16.jpg)
Program. Mod A - Cap. 1 prof. Burattini
16
![Page 17: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/17.jpg)
Program. Mod A - Cap. 1 prof. Burattini
17
• LEIBNIZ (1676-1716) Macchina Aritmetica• VAUCANSON (1709-1782) Anatra meccanica• VON KEMPLEN (1734-1804) Giocatore di scacchi
• GEORGE BOOLE (1815-1864) Algebra Booleana
![Page 18: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/18.jpg)
Program. Mod A - Cap. 1 prof. Burattini
18
CHARLES BABBAGE (1792-1871)
![Page 19: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/19.jpg)
Program. Mod A - Cap. 1 prof. Burattini
19
SISTEMI LOGICI E FORMALIZZAZIONE DEL
RAGIONAMENTO
• FREGE - 1879
• WHITEAD & RUSSEL - 1925-27
• CHURCH - 1936
• TURING - 1950
![Page 20: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/20.jpg)
Program. Mod A - Cap. 1 prof. Burattini
20
CALCOLATORE
dal latino classico calculus = sassolino
dal latino medievale calculare = spostare sassi
COMPUTER
dal latino medievale computare = tagliare
ALGORITMO
Da Abu Ja’far Mohammed ibn Mûsâ al-KhowârizmîPadre di Ja’far, Mohammed, figlio di Moses, nato a Khowârizmî
Autore del libro: Kitab al jabr w’al-mukabala Regole di sostituzione e riduzione
![Page 21: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/21.jpg)
Program. Mod A - Cap. 1 prof. Burattini
21
![Page 22: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/22.jpg)
Program. Mod A - Cap. 1 prof. Burattini
22
![Page 23: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/23.jpg)
Program. Mod A - Cap. 1 prof. Burattini
23
INPUT OUTPUT
Memoria secondaria
Memoria principale
Unità logico
aritmetica
Unità di
controllo
istruzionidati
CPU
![Page 24: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/24.jpg)
Program. Mod A - Cap. 1 prof. Burattini
24
CPU
MICROFONORAM
HD
FD
CD-ROM
SCHEDA AUDIO SCHEDA
VIDEO
SCANNER
MONITOR
TASTIERA
MOUSE
SCHEDA VIDEO PER CATTURARE
IMMAGINI
TELECAMERA
STAMPANTE
HD ESTERNO
PORTA MIDI
TASTIERA MIDI
ALTOPARLANTI
![Page 25: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/25.jpg)
Program. Mod A - Cap. 1 prof. Burattini
25
PER MEMORIZZARE LA PAROLA PASCAL NELLA MEMORIA PRINCIPALE E’ NECESSARIO TRASFORMARE OGNI CARATTERE IN SEQUENZE DI 0 E 1 E METTERE OGNUNO DI ESSO IN UN INDIRIZZO DI MEMORIA.
INDIRIZZO CARATTEREBINARIO CODICE
14322 P0011011111110010 01010000
14324 S 011100110011011111110100
14323 A 011000010011011111110011
0110001114325 C0011011111110101
0110000114326 A0011011111110110
14327 L 011011000011011111110111
Codice ASCII
![Page 26: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/26.jpg)
Program. Mod A - Cap. 1 prof. Burattini
26
0 1
BIT
0 0 0 10 1 0 1
BYTE
![Page 27: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/27.jpg)
Program. Mod A - Cap. 1 prof. Burattini
27
CODICE ASCII(American Standard Code for Information Interchange)
![Page 28: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/28.jpg)
Program. Mod A - Cap. 1 prof. Burattini
28
Un generico numero N in base p è rappresentato da una sequenza
di cifre
an , an -1,……………, a1 , a0
dove ciascun ai rappresenta un numero compreso fra 0 e p-1, an è
la cifra più significativa e a0 la meno significativa.
LA RAPPRESENTAZIONE DEI NUMERI
![Page 29: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/29.jpg)
Program. Mod A - Cap. 1 prof. Burattini
29
n
i
ii
oo
nn
nnp papapapapaN
0
11
11 ...............
01210 107108105587
SISTEMA DECIMALE
![Page 30: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/30.jpg)
Program. Mod A - Cap. 1 prof. Burattini
30
SISTEMA BINARIO
n
i
ii
oo
nn
nnp papapapapaN
0
11
11 ...............
01031104
10
1010)12832(
021121220321420521
2
43
43
101011
![Page 31: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/31.jpg)
Program. Mod A - Cap. 1 prof. Burattini
31
CONVERSIONE DECIMALE BINARIO
43 : 2 = 21 con resto di 121 : 2 = 10 con resto di 110 : 2 = 5 con resto di 0 5 : 2 = 2 con resto di 1 2 : 2 = 1 con resto di 0 1 : 2 = 0 con resto di 1
43 = 101011
![Page 32: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/32.jpg)
Program. Mod A - Cap. 1 prof. Burattini
32
SOFTWARE
HARDWARE
Sistema Operativo
Compilatore
Utilities - file system,editor, …….
Programmiapplicativi
Linguaggi diprogrammazione
![Page 33: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/33.jpg)
Program. Mod A - Cap. 1 prof. Burattini
33
HARD DISK
La directory
I file
C:DATI.TXT
![Page 34: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/34.jpg)
Program. Mod A - Cap. 1 prof. Burattini
34
PROGRAMMA
Una sequenza di istruzioni che il calcolatore esegue per produrre i risultati richiesti per la soluzione di un dato problema.
![Page 35: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/35.jpg)
Program. Mod A - Cap. 1 prof. Burattini
35
LINGUAGGIO DI PROGRAMMAZIONE
Un insieme di simboli, parole, regole usate per istruire il calcolatore.
Linguaggio macchina: il reale linguaggio attraverso il quale il calcolatore esegue le istruzioni di un programma.
Linguaggio Assembler: un linguaggio che usa specifiche istruzioniper indicare al calcolatore le operazioni da eseguire le azioni daintraprendere, è dipendente dal calcolatore usato.
Linguaggio di alto livello: un linguaggio che possiede istruzioni e regole vicine ai linguaggi naturali ed è indipendente dal calcolatoreusato.
![Page 36: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/36.jpg)
Program. Mod A - Cap. 1 prof. Burattini
36
PROGRAMMA SORGENTE
Programma scritto in un linguaggio di alto livello
PROGRAMMA OGGETTO
Risultato della compilazione di un programma sorgente
![Page 37: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/37.jpg)
Program. Mod A - Cap. 1 prof. Burattini
37
Problema
Programma
Algoritmo di risoluzione
CICLO DI VITA DI UN PROGRAMMA
![Page 38: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/38.jpg)
Program. Mod A - Cap. 1 prof. Burattini
38
Problema: disegnare poligoni in un piano.X e Y sono numeri interi relativi.Supponiamo la penna sia alzata Istruzioni:
INPUT X,Yabbassa la pennaruota verso destra di y gradivai avanti di x quadrettivai indietro di x quadretti
L’insieme delle istruzioni necessarie per disegnare il quadrato di lato 10 in figura è detto algoritmo.
Se pensiamo che il braccio che porta la penna sia localizzato in modo che la penna sia in A e che sia alzata, possiamo assegnare il seguente algoritmo:
1. INPUT lato2. abbassa la penna3. vai avanti di lato quadretti4. ruota verso destra di 90 gradi5. vai avanti di lato quadretti6. ruota verso destra di 90 gradi7. vai avanti di lato quadretti8. ruota verso destra di 90 gradi9. vai avanti di lato quadretti10. ruota verso destra di 90 gradi
![Page 39: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/39.jpg)
Program. Mod A - Cap. 1 prof. Burattini
39
A
A
ruota verso destra di 90 gradivai avanti di 10 quadretti vai avanti di 10 quadretti
ruota verso destra di 90 gradivai avanti di 10 quadretti
ruota verso destra di 90 gradi vai avanti di 10 quadretti
vai avanti di 10 quadretti
abbassa la penna
INPUT lato abbassa la pennavai avanti di 10 quadrettiruota verso destra di 90 gradivai avanti di 10 quadrettiruota verso destra di 90 gradivai avanti di 10 quadrettiruota verso destra di 90 gradivai avanti di 10 quadrettiruota verso destra di 90 gradi
![Page 40: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/40.jpg)
Program. Mod A - Cap. 1 prof. Burattini
40
UN PO’ DI STORIA
Il C++ è l'evoluzione naturale del C, il quale a sua volta discende da due linguaggi, il BCPL e il B. Il BCPL fu sviluppato nel 1967 da Martin Richards per scrivere sistemi operativi e compilatori. II linguaggio C si sviluppò dal B grazie a Dennis Ritchie, presso i Bell Laboratories. Il C fu noto inizialmente come linguaggio di sviluppo per sistemi operativi. Oggi la maggior parte dei sistemi operativi sono scritti in C e/o in C++. Il C è oggi disponibile sulla maggior parte dei computer ed è indipendente dall'hardware.
Nel 1990 si è giunti ad una definizione di standard per il C nota come ANSI/ISO 9899:1990.
![Page 41: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/41.jpg)
Program. Mod A - Cap. 1 prof. Burattini
41
Esegue alcune direttive prima della compilazione ad esempio l’inclusione nel programma di file esterni
![Page 42: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/42.jpg)
Program. Mod A - Cap. 1 prof. Burattini
42
Il compilatore GNU C++ e Dev-CppGNU C++ è un dialetto del linguaggio ad alto livello C++ funzionante
sotto i sistemi operativi Windows e Linux. Un suo ambiente di sviluppo è il Dev-Cpp, disponibile gratuitamente, e funzionante sotto il sistema operativo Windows. Il linguaggio GNU C++ ha una parte di istruzioni in comune agli altri dialetti del C++ in commercio, perché sviluppato secondo le direttive ANSI (American National Standards Institute) .
Per ottenere gratuitamente il Dev-Cpp è sufficiente andare sul sito www.bloodshed.net
scaricare l’ultima versione in formato exe, lanciarlo scegliendo la lingua e lasciando il resto inalterato.
![Page 44: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/44.jpg)
Program. Mod A - Cap. 1 prof. Burattini
44
Struttura di un programma
Regole semantiche: insieme di regole che permettono di dare un significato alle istruzioni di un linguaggio di programmazione.
Processo: una o più istruzioni codificate in un dato linguaggio chepermettono al calcolatore di fornire il risultato richiesto.
Oggetto: una o più locazioni di memoria dove vengono memorizzatii valori a cui si farà riferimento nel corso del programma.
![Page 45: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/45.jpg)
Program. Mod A - Cap. 1 prof. Burattini
45
// usato per introdurre commenti su un solo rigoEs. // calcola la circonferenza del cerchio
Per i commenti su più linee, è necessario utilizzare il simbolo /* all’inizio del commento e */ alla fine
Es. /* questo è un commentosu più linee*/
ELEMENTI DI UN PROGRAMMA C++
Direttive al preprocessore e al compilatore
Intestazione del programma
main(){Blocco di istruzioni}
![Page 46: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/46.jpg)
Program. Mod A - Cap. 1 prof. Burattini
46
Direttive al preprocessore e al compilatore
#include <nome file header> avverte il preprocessore di includere un file header
#include <iostream> associa la libreria che gestisce l’input e l’output dei tipi standard verso file o verso opportuni dispositivi di ingresso e uscita come stampante, schermo, tastiera.
#include <cstdlib> associa un file che permette l’uso di alcuni comandi del sistema operativo (in questo caso MSDOS) di cui è un esempio l’istruzione finale :
system(“pause”)che lascia il sistema in attesa che si prema un tasto per continuare
![Page 47: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/47.jpg)
Program. Mod A - Cap. 1 prof. Burattini
47
using namespace std utilizza gli identificatori della libreria standard (es. cin e cout) senza ulteriori specifiche.
Il namespace è una direttiva d’uso ed è un meccanismo fornito dal C++ per raggruppare dati e funzioni nello spazio dei nomi.
Senza using namespace std il compilatore non riconosce i nomi cin e cout; per farli riconoscere si può anche utilizzare il nome completo che utilizza il namespace std ed il risolutore del campo d’azione :: (due punti doppi)std::cin std::cout. (dichiarazioni di uso)
In sostanza la direttiva d’uso sta per
“quando s’intende usare la libreria standard, si deve poter riferirsi ad un qualsiasi processo o oggetto di tale libreria digitandone il nome (cout) e non il nome completo (std::cout)”.
![Page 48: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/48.jpg)
Program. Mod A - Cap. 1 prof. Burattini
48
Intestazione del programma
main(){
Blocco di istruzioni necessarie alla soluzione del problema anche detta istruzione composta
}
Rappresenta il processo principale del programma
identazione
![Page 49: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/49.jpg)
Program. Mod A - Cap. 1 prof. Burattini
49
//Calcola la circonferenza
#include <iostream>#include <cstdlib>using namespace std; int main () { const float pi=3.1415; float circonf,raggio;
cout << "Inserisci Raggio="; cin >> raggio; circonf=2*pi*raggio;
cout << "circonferenza =" <<circonf<<endl; system("pause");}
// consentono di scrivere i commenti include i file iostream gestisce le istruzioni di I/O cstdlib gestisce funzioni del sistema: la pausa.namespace indica lo spazio dei nomi utilizzabili, std=standardIl programma inizia con int main () { parentesi apertaDichiarazioni di variabili: le variabili del pro-gramma, raggio e circonf sono numeri reali; pi è una costanteScrive su video ciò che appare tra “ ..” e NON va a capo.Attende che si inserisca un dato (il raggio).Istruzione di assegnazione: tutto ciò che appare a destra del simbolo = viene calcolato ed inserito nella variabile a sinistraScrive su video ciò che appare tra virgolette ed il valore contenuto nella variabile circonf; con endl va a capoAttende che si prema un tasto qualsiasi.FINE del programma : } parentesi graffa chiusa
![Page 50: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/50.jpg)
Program. Mod A - Cap. 1 prof. Burattini
50
![Page 51: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/51.jpg)
Program. Mod A - Cap. 1 prof. Burattini
51
int
![Page 52: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/52.jpg)
Program. Mod A - Cap. 1 prof. Burattini
52
PAROLE RISERVATE
IDENTIFICATORI
COSTANTI
ESPRESSIONI
OPERATORI
SIMBOLI SPECIALI
COMPONENTI DI UN PROGRAMMA C++
![Page 53: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/53.jpg)
Program. Mod A - Cap. 1 prof. Burattini
53
PAROLE RISERVATE
Termini che non possono essere adoperati dal programmatore solocome previsto dal linguaggio.
Esempi:
main : indica che il testo che segue rappresenta il codicesorgente del programma.
const : sono associate ad oggetti del programma.
float: sono associate ad oggetti del programma. PAROLE RISERVATE IDENTIFICATORICOSTANTIESPRESSIONIOPERATORISIMBOLI SPECIALI
N.B. LE PAROLE RISERVATE sono messe in GRASSETTO IN Dec-Cpp.
![Page 54: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/54.jpg)
Program. Mod A - Cap. 1 prof. Burattini
54
IDENTIFICATORI
Rappresentano il nome di un oggetto o di un processo.
Standard o riservatiesempio
cin per rappresentare il file standard di input (tastiera,..) cout per rappresentare il file standard di output (monitor,..)
Non standard esempio
pi è definito nel nostro esempio come costanteraggio è definito nel nostro esempio come variabile
PAROLE RISERVATEIDENTIFICATORICOSTANTIESPRESSIONISIMBOLI SPECIALI
![Page 55: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/55.jpg)
Program. Mod A - Cap. 1 prof. Burattini
55
OGGETTI STANDARD
Costanti con nome : un valore costante a cui si puòfar riferimento attraverso il suo identificatore e non può variare nel corso del programma.
Esempioconst float pi=3.1415;
COSTANTI (const)
PAROLE RISERVATEIDENTIFICATORICOSTANTIESPRESSIONISIMBOLI SPECIALI
![Page 56: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/56.jpg)
Program. Mod A - Cap. 1 prof. Burattini
56
un oggetto che può assumere diversi valori nel corso dell’elaborazione.
VARIABILE
Esempiocirconf, raggio
TIPO
insieme dei valori che una variabile può assumere e contemporanea-mente l’insieme delle operazioni che si possono effettuare su variabili di quel tipo.
PAROLE RISERVATEIDENTIFICATORICOSTANTIESPRESSIONISIMBOLI SPECIALI
![Page 57: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/57.jpg)
Program. Mod A - Cap. 1 prof. Burattini
57
TIPI STANDARD
int ------- numeri interi ----------------- 435
float --- numeri reali semplice precisione----- 3.1416
double --- numeri reali doppia precisione------- 7.1416934523
char ------- caratteri ----------------- a
boolean ----- valori vero o falso ------------ veroPAROLE RISERVATEIDENTIFICATORICOSTANTIESPRESSIONISIMBOLI SPECIALI
![Page 58: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/58.jpg)
Program. Mod A - Cap. 1 prof. Burattini
58
I tipi interi con segno supportati dal C++ standard sono1) char 2) short int (o short) 3) int 4) long int (o long)Si ha la possibilità di rappresentare solo i numeri positivi (unsigned) o
sia i positivi che i negativi (signed).Può apparire strano vedere il tipo char nella lista degli interi, ma i
caratteri sono rappresentati come interi compresi tra -128 e 127 o tra 0 e 255; la scelta del tipo segnato o non segnato dipende dal compilatore. L’istruzione cin>>ch dove ch è una variabile di tipo char, accetta un carattere ASCII in ingresso, ma il carattere è memorizzato come un intero nel computer.
il tipo char occupa un solo byte;il tipo short occupa almeno due byte;il tipo int occupa almeno tanti byte quanti ne occorrono per memo-
rizzare il tipo short;il tipo long occupa almeno quattro byte e non meno di quanti ne
occorrono per memorizzare il tipo int.
![Page 59: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/59.jpg)
Program. Mod A - Cap. 1 prof. Burattini
59
I tipi reali supportati dal C++ standard sono1) float 2) double 3) long double il tipo float occupa quattro byte;il tipo double occupa almeno otto byte e non meno del tipo float;il tipo long double occupa almeno otto byte e non meno di quanti ne occorrono per
memorizzare il tipo double.
La funzione sizeof applicata ad un tipo restituisce la sua lunghezza in byte.
Il file da includere <limits.h> (o <climits>) contiene tutti i valori minimi e massimi degli interi: per esempio il minimo valore intero è contenuto in INT_MIN, il massimo in INT_MAX.
Il file header <cfloat> contiene i limiti dei tipi float, double e long double.Costante Descrizione
FLT_MIN Minimo valore float
FLT_MAX Massimo valore float
DBL_MIN Minimo valore double
DBL_MAX Massimo valore double
LDBL_MIN Minimo valore Long double
LDBL_MAX Massimo valore Long double
![Page 60: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/60.jpg)
Program. Mod A - Cap. 1 prof. Burattini
60
PAROLE RISERVATEIDENTIFICATORICOSTANTIESPRESSIONISIMBOLI SPECIALI
COSTANTI
Sono le occorrenze di valori costanti in un programma. Possono essere nominate ad
Esempioconst float pi=3.1415
oppure anonime, per le quali cioè non è stato dichiarato un nome.
Esempio
cout << “Inserisci raggio”
![Page 61: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/61.jpg)
Program. Mod A - Cap. 1 prof. Burattini
61
ESPRESSIONI
PAROLE RISERVATEIDENTIFICATORILETTERALIESPRESSIONISIMBOLI SPECIALI
Rappresentano il valore che si ottiene applicando opportune operazioni ben definite ad uno o più operandi che possono essere costanti o variabili. In una espressione le operazioni vengono indicate con particolari simboli detti operatori.
Sono unari gli operatori che agiscono su un solo operando, binari quelli che agiscono su due operandi. aritmetici (+ , - , * , /)
logici (or , and , not)
![Page 62: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/62.jpg)
Program. Mod A - Cap. 1 prof. Burattini
62
Operazione Simbolo algebrico
Simbolo in C++
Espressione algebrica
Espressione in C++
Addizione + + a+b a+b
Sottrazione - - a-b a-b
Moltiplicazione x * ab a*b
Divisione : / a:b a/b
Modulo mod % a mod b a%b
![Page 63: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/63.jpg)
Program. Mod A - Cap. 1 prof. Burattini
63
SIMBOLI SPECIALI
PAROLE RISERVATEIDENTIFICATORILETTERALIESPRESSIONISIMBOLI SPECIALI
Uno o anche due caratteri consecutivi che sono usati per scopi particolari come ad esempio
il punto e virgola (;) che serve ad indicare la fine di una istruzione,
le parentesi graffe ({ })che indicano inizio e fine di una istruzione composta,
la virgola (,) che è usata come separatore.
![Page 64: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/64.jpg)
Program. Mod A - Cap. 1 prof. Burattini
64
DICHIARAZIONI
Dichiarazione di costanteHa la seguente sintassi:
const type identificatore = valoredove const è una parola riservata, segue type che è il nome del tipo assegnato alla costante, il nome della costante, il simbolo = e il valore assegnatole. Le prime due parole possono anche essere invertite tra loro.
const float pi=3.1415Dichiarazione di variabile Occorre far precedere al nome della variabile il nome del suo tipo.Si possono dichiarare contemporaneamente più variabili dello stesso tipo separandole con una virgola. Ad esempio:
float r1,r2,media;E’ possibile assegnare un valore iniziale ad una variabile usando l’operatore di assegnazione . Ad esempio:
int i,j=1,somma;
![Page 65: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/65.jpg)
Program. Mod A - Cap. 1 prof. Burattini
65
REGOLAE’ sempre consigliabile dichiarare tutte le costanti e le variabili nella parte iniziale del programma (o della function che le utilizza).
In questo modo chi legge il programma sa dove reperire le informazioni sul tipo delle variabili e delle costanti.
![Page 66: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/66.jpg)
Program. Mod A - Cap. 1 prof. Burattini
66
Le variabili hanno un nome (l’identificatore), un tipo (tipi base: interi, reali, caratteri, booleani) una dimensione (che dipende dal tipo), un valore che varia nel corso del programma un indirizzo nella memoria del computer in cui si trova il suo valore .Il tipo int occupa 2 byte Il tipo float prevede 4 byte, Il tipo double ha invece una dimensione di 8 byte. Il tipo boolean 1 byteIl tipo char occupa un 1 byte I caratteri sono rappresentati attribuendo loro un codice numerico (codice ASCII), ad esempio il codice attribuito alla lettera A è 65. All’interno di un programma una costante di tipo carattere deve essere sempre racchiusa tra due apici, ad esempio:
‘r’, ‘^’, ‘@’.L’indirizzo può essere conosciuto inserendo l’operatore & (detto operatore di indirizzo) davanti alla variabile; esempio:
&raggio.
![Page 67: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/67.jpg)
Program. Mod A - Cap. 1 prof. Burattini
67
Se le costanti e le variabili sono tutte dello stesso tipo allora anche il valore dell’espressione sarà dello stesso tipo. Se tutte le grandezze presenti nell’espressione sono di tipo numerico, anche se diversi, sarà il compilatore ad effettuare tutte le opportune conversioni di tipo. Ad esempio se le variabili n, f, d sono rispettivamente di tipo int, float e double allora nell’espressione (n+f)*d, n è convertito a float, successivamente la somma n+f è convertita a double per poter effettuare la moltiplicazione con d (conversione implicita).
Nel C++ sono permesse anche espressioni del tipo n+car +b dove n è un intero, car un carattere e b una variabile booleana. Se ad esempio n vale 4, car è la lettera A e b vale true, il valore dell’espressione sarà 4+65+1=70. L’uso di espressioni contenenti variabili numeriche e non numeriche non è in genere consigliabile e può dare luogo in un programma ad errori che sono difficili da individuare.
![Page 68: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/68.jpg)
Program. Mod A - Cap. 1 prof. Burattini
68
REGOLA Non adoperare espressioni in cui sono presenti variabili di tipo diverso.
![Page 69: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/69.jpg)
Program. Mod A - Cap. 1 prof. Burattini
69
Espressione booleana semplice: è rappresentata da un confronto tra i valori di due espressioni. La forma sintattica di una espressione booleana semplice è la seguente:
espressione1 op espressione2dove op è un operatore relazionale.
L’espressione booleana assume il valore true (vero) se il valore di espressione1 è nella relazione op con il valore di espressione2 .
Nell’esempio si suppone che le variabili assumono i seguenti valori:a=3 ; b=5 ; c1=’E’ ; c2=’G’ ;
< Minore di a<b 3<5 Vero
<= Minore o uguale di a+3<=b 6<=5 Falso
== Uguale a c1==c2 ‘E’==’G’ Falso
!= Diverso da c1!=c2 ‘E’!=’G’ Vero
>= Maggiore o uguale di ‘a’>=c1 ‘a’>=’E’ Vero
> Maggiore di a>b+2 3>7 Falso
Operatore relazionale
![Page 70: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/70.jpg)
Program. Mod A - Cap. 1 prof. Burattini
70
Esercizi
Valutare le seguenti espressioni in C++
38/12 + 38%12
(15*11)/(3*11)
15*11/11*3
(23-5)/3/6
36/6%6
![Page 71: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/71.jpg)
Program. Mod A - Cap. 1 prof. Burattini
71
Le istruzioni di I/O standard: cin, cout, printf
La forma generale di una istruzione per la lettura da tastiera di n variabili x1 x2 …xn è la seguente:
cin>>x1>>x2>>…>>xn ;
allorchè il cursore lampeggia per effetto di questa istruzione l’utente dovrà immettere uno dopo l’altro il valore delle corrispondenti variabili, ognuno separato dall’altro da almeno uno spazio vuoto (blank) e premere il tasto Invio.
I caratteri immessi sono inviati in un buffer di ingresso che rappresenta l’area di memoria dell’oggetto cin (canale di input).
![Page 72: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/72.jpg)
Program. Mod A - Cap. 1 prof. Burattini
72
L’ operatore di estrazione >> provvede ad estrarli nel modo seguente:
Per ogni variabile x che si deve leggere:
Ignora eventuali blank, e/o caratteri di tab iniziali e newline (che indicheremo rispettivamente con ъ, \t,\n) mano a mano che li preleva.
Preleva tutti i caratteri successivi che formano una sequenza lecita per il tipo di variabile corrispondente.
Si arresta al primo carattere non lecito.
La sequenza di caratteri letti è codificata nella corrispondente sequenza di zeri e di uno (che dipende dal tipo della variabile) e quest’ultima è inserita nell’indirizzo di memoria corrispondente alla variabile.
![Page 73: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/73.jpg)
Program. Mod A - Cap. 1 prof. Burattini
73
ESEMPIOSupponiamo che base e altezza siano due variabili di tipo float. Eseguendo l’istruzione
cin >> base>>altezza;il computer estrae un valore corretto dai caratteri digitati da tastiera finché non incontra il primo carattere spazio: tale valore verrà associato alla variabile base.
Ad esempio, se si digita
15.2 ъ12.2[INVIO]
il computer provvederà a porre 15.2 nell’indirizzo di memoria relativa alla variabile base e 12.2 in quello relativo alla variabile altezza.
![Page 74: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/74.jpg)
Program. Mod A - Cap. 1 prof. Burattini
74
REGOLA Far precedere ogni istruzione di lettura da un opportuno messaggio
che fornisca informazioni sull’input che ci si aspetta.
![Page 75: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/75.jpg)
Program. Mod A - Cap. 1 prof. Burattini
75
La forma generale di una istruzione di lettura tramite cout (canale di output) è la seguente:
cout<<espr1<<espr2<<…<<esprn;dove espr1,espr2,…,esprn sono espressioni che all’atto dell’esecuzione dell’istruzione sono valutate e poi inviate al dispositivo standard di uscita, il monitor del personal computer, tramite l’operatore di inserzione <<.Tutti i dati di output si scrivono sulla stessa linea, l’uno di seguito all’altro. Ad esempio l’istruzione:
cout<<”Area= ”<<area;ordina di inviare il contenuto dei dati che appaiono a destra (il valore letterale “Area= ” ed il contenuto della variabile area) sul monitor.
Per portare il cursore sulla riga successiva si può:1) includere il carattere speciale di fine riga \n, in una stringa costante, come “Salve mondo! \n”2) inserire l’identificatore speciale, endl.
![Page 76: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/76.jpg)
Program. Mod A - Cap. 1 prof. Burattini
76
ESEMPIOPer far comparire sul monitor i valori delle variabili base, altezza su due linee separate si possono utilizzare le seguenti istruzioni:
cout << “Base triangolo: “ << base << endl;cout << “Altezza triangolo: “ << altezza << endl;
Si noti che le variabili base e altezza rappresentano in queste istruzioni il loro valore (right value) mentre nell’istruzione:
cin>>base>>altezzarappresentano il loro indirizzo (left value).
Le seguenti istruzioni: cout << “Salve! \n”;cout << “Come va? \n”;genereranno il seguente output: Salve!
Come va?
![Page 77: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/77.jpg)
Program. Mod A - Cap. 1 prof. Burattini
77
REGOLA
E’ opportuno che al termine di una istruzione di stampa il cursore sia situato all’inizio della linea successiva
![Page 78: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/78.jpg)
Program. Mod A - Cap. 1 prof. Burattini
78
Sequenza di escape Descrizione
\n Carattere di fine linea (è inserito premendo il tasto Invio)
\t Posiziona il cursore del video sulla tabulazione successiva (tasto TAB)
\a Emette un beep
\r Posiziona il cursore all’inizio della linea corrente
\b Il cursore ritorna indietro di un carattere (tasto Backspace)
\\ Stampa la barra inversa
\” Stampa le doppie virgolette
![Page 79: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/79.jpg)
Program. Mod A - Cap. 1 prof. Burattini
79
Sequenza di escape
Le sequenze di escape sono utili anche per scrivere sul monitor dei caratteri particolari quali la stessa barra inversa (\) o le doppie virgolette (“). Per esempio, per far scrivere sul monitor la frase seguente,
Stampiamo questi due simboli \ e “contenente la barra inversa e le doppie virgolette dobbiamo assegnare la seguente istruzione
cout<<”Stampiamo questi due simboli \\ e \””
Ricordiamo che le costanti stringa devono essere racchiuse tra doppi apici mentre le costanti carattere tra apici semplici.
![Page 80: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/80.jpg)
Program. Mod A - Cap. 1 prof. Burattini
80
Per l’output formattato abbiamo due metodi fondamentali di cout cout.width(ampiezza); cout.precision(cifre);
dove ampiezza e cifre sono due interi che rappresentano, •l’ampiezza totale messa a disposizione della variabile •il numero massimo di cifre che possono essere visualizzate.Queste istruzioni devono precedere ogni ordine di stampa sul monitor, cioè ogni
variabile che deve essere stampata deve essere preceduta dal rispettivo ordine di formattazione. Per esempio, se
A=12.342 e B=1234.657le istruzioni cout.width(10); cout.precision(8); cout<<A<<endl; cout<<B<<endl;stamperanno sul video
12.342 1234.657
per cui solo il valore di A sarà stampato con un’ampiezza totale di 10 caratteri e con una precisione di 8 cifre complessive (a partire da destra); il valore di B sarà stampato con la formattazione standard (le cifre sono scritte a partire da sinistra).
eser1.3
![Page 81: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/81.jpg)
Program. Mod A - Cap. 1 prof. Burattini
81
L’istruzione printf(), ha una forma diversa che meglio si presta ad un output formattato. L’istruzione corrispondente alla seguente
cout << "Area ="<<area<<endl;utilizzando printf è
printf(“Area =%10.2f\n”,area);dove il valore letterale “Area =” rimane invariato, la stringa di formattazione, inizia con il simbolo %, è data da
%10.2f/ndove% è il simbolo di inizio formattazione10 indica l’ampiezza di campo, 2 il numero di decimalif indica che si deve scrivere un numero decimale\n è l’ordine di andare a capo. eser1.3b
![Page 82: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/82.jpg)
Program. Mod A - Cap. 1 prof. Burattini
82
Per esempio, con questa formattazione,
printf(“Area =%10.2f\n”,area);
I valori di area 62.847 e 128.54 verrebbero scritti in questo modo
62.85 arrotondato per eccesso alla seconda cifra decimale 128.54
L’istruzione printf possiede diverse modalità di formattazione; nella tabella successiva ne riportiamo le più significative (il carattere ъ rimpiazza lo spazio vuoto).
![Page 83: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/83.jpg)
Program. Mod A - Cap. 1 prof. Burattini
83
Formattazione in printf
Carattere Tipo argomento da convertire Esempio Stampa
d, i int diventa intero decimale con segno
printf(“%8d”, 4532) ъъъъ4532
u int diventa intero decimale senza segno
printf(“%8d”, -532) ъъъъъ-532
X, x int diventa intero esadecimale senza segno
printf(“%5X”, 255) ъъъFF
s char stampa una stringa printf(“%10.5”, “ciao”)10 è l’ampiezza di campo5 l’ampiezza massima della stringa
ъъъъъъciao
f double diventa reale printf(“%8f”, -5.32) ъъъъ-5.32
![Page 84: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/84.jpg)
Program. Mod A - Cap. 1 prof. Burattini
84
Osserviamo checout.width cout.precision
possono utilizzare anche delle variabili mentre
printf
può servirsi soltanto di numeri per formattare un dato;se il numero di cifre n richiamate in cout.precision(n) è inferiore al numero di cifre significative, allora il valore viene espresso in notazione esponenziale; per esempio, se n=3 e si deve stampare 123456 il computer mostrerà a video 1.23 e05;
cout possiede molte altre istruzioni che consentono una gestione completa della formattazione a scapito della semplicità;
printf consente una formattazione semplice ed efficace, anche se non molto ricca;
![Page 85: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/85.jpg)
Program. Mod A - Cap. 1 prof. Burattini
85
ESEMPIO
#include <iostream>#include <cstdlib>#include <math.h>using namespace std;int main() { double a=sqrt(5), b=12345678; int conta=6; cout.width(20); cout.precision(conta); cout<<a<<” “<<b<<endl; printf(“a=%3.8f b=%12f\n”,a,b); } system("pause"); }
![Page 86: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/86.jpg)
Program. Mod A - Cap. 1 prof. Burattini
86
![Page 87: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/87.jpg)
Program. Mod A - Cap. 1 prof. Burattini
87
![Page 88: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/88.jpg)
Program. Mod A - Cap. 1 prof. Burattini
88
In C++ non esiste il concetto di tastiera, disco, monitor, stampante; questi dispositivi sono raggruppati secondo due tipologie:
dispositivi di input;dispositivi di output;In generale avremo
dispositivo di input >>x1>>…>>xn;che va inteso come:i valori estratti dal dispositivo di input sono immessi come valore
nelle variabili che seguono l’operatore >>mentre
dispositivo di output << espr1<<…<<esprnva letto come: i valori delle singole espressioni sono inseriti successivamente nel
dispositivo di output.
![Page 89: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/89.jpg)
Program. Mod A - Cap. 1 prof. Burattini
89
Ad esempio se si intende inviare dei dati sulla stampante occorre scrivere la seguente dichiarazione di tipo :
ofstream stampante(“prn”);
ed adoperare stampante al posto di cout. Ad esempio:
stampante<<”Area= ”<<area;
Occorre però includere il file <fstream> in cui il tipo ofstream è definito
![Page 90: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/90.jpg)
Program. Mod A - Cap. 1 prof. Burattini
90
![Page 91: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/91.jpg)
Program. Mod A - Cap. 1 prof. Burattini
91
Esempi di algoritmi
Determinare il passaggio dalla numerazione decimale alla binaria. Prendiamo in considerazione il numero 25 e dividiamolo per 2 più volte: ogni volta il quoziente viene sempre diviso per 2 finché l’ultimo quoziente è minore del divisore e diverso da zero (e quindi 1).
Il numero in base 2 cercato è uguale all’ultimo quoziente seguito da tutti i resti presi in ordine inverso (le cifre evidenziate in neretto):
25 : 2 1 12 : 2
0 6 : 2 0 3 : 2 1 1 11001
![Page 92: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/92.jpg)
Program. Mod A - Cap. 1 prof. Burattini
92
ALGORITMO PER IL MASSIMO COMUN DIVISORE(MCD)
Si trovi il MCD tra i numeri 93217
e1843
•Si cercano i fattori primi del primo numero•Si cercano i fattori primi del secondo numero•Si cercano i fattori primi comuni a entrambi i numeri
![Page 93: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/93.jpg)
Program. Mod A - Cap. 1 prof. Burattini
93
RicercaFattoriPrimi
NUMERI PRIMI 93217
n° PASSI
2 46608,5 13 31072,33 25 18643,4 37 13316,71 4
11 8474,273 513 7170,538 617 5483,353 719 4906,158 823 4052,913 929 3214,379 10 3007 97
31 3007 11 31 97 1 31 3,129032 137 2,621622 241 2,365854 343 2,255814 447 2,06383 553 1,830189 659 1,644068 761 1,590164 867 1,447761 971 1,366197 1073 1,328767 1179 1,227848 1283 1,168675 1389 1,089888 14
TOTALE OPERAZIONI 27 97 1 15
93217=31 x 31 x 97
![Page 94: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/94.jpg)
Program. Mod A - Cap. 1 prof. Burattini
94
NUMERI PRIMI 1843
n° PASSI
2 921,5 13 614,333 25 368,6 37 263,286 4
11 167,545 513 141,769 617 108,412 719 97 8 97
19 5,1053 123 4,2174 229 3,3448 331 3,129 437 2,6216 541 2,3659 643 2,2558 747 2,0638 853 1,8302 959 1,6441 1061 1,5902 1167 1,4478 1271 1,3662 1373 1,3288 1479 1,2278 1583 1,1687 1689 1,0899 1797 1 18
TOTALE OPERAZIONI 26
RicercaFattoriPrimi
1843=19 x 97
![Page 95: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/95.jpg)
Program. Mod A - Cap. 1 prof. Burattini
95
Massimo Comune Divisore
Fattori Primi di 93217 = 31*31*97
Fattori Primi di 1843 = 19*97
Il MCD tra 93217 e 1843 è
Numero di passi totale = 27+26 = 53
![Page 96: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/96.jpg)
Program. Mod A - Cap. 1 prof. Burattini
96
NR
RR’ R’
M
MCD=R’
ALGORITMO DI EUCLIDE
![Page 97: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/97.jpg)
Program. Mod A - Cap. 1 prof. Burattini
97
ALGORITMO DI EUCLIDE PER IL MASSIMO COMUN DIVISORE
(300 A.C.)
Siano m ed n due numeri naturali e supponiamo sia m>n
•1 Si divide m per n
•2 Se il resto è zero allora n è il MCD tra m e n.
•3 Se il resto è diverso da zero torna al primo passo scambiando m con n e n con r (cioè dividi n per r)
![Page 98: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/98.jpg)
Program. Mod A - Cap. 1 prof. Burattini
98
ESEMPIO
MCD tra 93217 e 1843
m n m/n r N° passi93217 1843 50 1067 1
1843 1067 1 776 21067 776 1 291 3
776 291 2 194 4291 194 1 97 5194 97 2 0 6
![Page 99: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/99.jpg)
Program. Mod A - Cap. 1 prof. Burattini
99
Insieme di regole che, eseguite in un ordine
prestabilito permettono di risolvere un dato
problema (se la soluzione esiste) o di comunicare
l’assenza di soluzione (se questa non esiste), in un
numero finito di passi.
ALGORITMO
![Page 100: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/100.jpg)
Program. Mod A - Cap. 1 prof. Burattini
100
PROPRIETA’ DI UN ALGORITMO
• Finitezza - Un algoritmo deve sempre terminare dopo un numero finito di passi
• Precisione - Ogni passo dell’algoritmo deve essere definito con precisione e non in maniera ambigua
• Input - Un algoritmo può avere molti input come non averne nessuno
• Output - Un algoritmo deve produrre almeno un dato
• Eseguibilità - Ogni istruzione deve essere sufficientemente semplice da poter essere eseguita da una persona usando penna e carta in un tempo finito.
![Page 101: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/101.jpg)
Program. Mod A - Cap. 1 prof. Burattini
101
•1 Si divide m per n
•2 Se il resto è zero allora n è il MCD tra m e n.
•3 Se il resto è diverso da zero torna al primo passo scambiando m con n e n con r (cioè dividi n per r)
RAPPRESENTAZIONE DI UN ALGORITMOpseudo-codice
•1 [Cerca il resto] Dividi m per n e sia r il resto
•2 [Il resto è uguale a zero?] Se r=0 allora n è la risposta. Fine
•3 [Scambia] Poni m n, n r ; torna al passo 1.
![Page 102: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/102.jpg)
Program. Mod A - Cap. 1 prof. Burattini
102
Cerca il resto ScambiaIl resto è uguale a zero?
Si
Fine
No
Input
DIAGRAMMA DI FLUSSO
![Page 103: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/103.jpg)
Program. Mod A - Cap. 1 prof. Burattini
103
Esercizi
Scrivere in pseudo codice i due algoritmi per trasformare numeri decimali in numeri binari.
Scrivere in pseudo codice l’algoritmo per effettuare l’addizione con l’abaco.
Scrivere in pseudo codice un algoritmo che genera tutte le possibili combinazioni di 0 e1 per N variabili.
![Page 104: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/104.jpg)
Program. Mod A - Cap. 1 prof. Burattini
104
Soluzione esercizi Cap. 1
Conversione Decimale/Binario metodo successive divisioni.
DichiarazioniSia N il numero intero decimale da trasformare in binarioSia Q il quoziente intero di N per 2Sia R il resto della divisioneSia B la stringa che rappresenta il numero binario essa viene riempita da destra
verso sinistra (inizialmente è vuota)
[Controllo Fine Procedura] Se N=1 allora aggiungi 1 a sinistra di B e fermati.
[Costruisci B]
[Dividi] Poni in Q N/2 e in R N - Q*2
[Aggiorna B] Aggiungi a sinistra di B il valore di R : B R+B
[Scambia] N Q . Ripeti il processo
[Controllo Iniziale] Se N=0 allora aggiungi 0 a sinistra di B e fermati.
![Page 105: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/105.jpg)
Program. Mod A - Cap. 1 prof. Burattini
105
Soluzione esercizi Cap. 1
Conversione Decimale/Binario metodo potenze di 2.
DICHIARAZIONISia N il numero intero decimale da trasformare in binarioSia P la potenza a cui due deve essere elevato affinchè meglio approssimi per difetto NSia D la differenza tra N e 2P
Sia B una stringa di K zeri, con K sufficientemente grande
[Controllo Fine Procedure] Se N=0 allora fermati.
[Costruisci B]
[Calcola P] Poni in P la parte intera del log2(N)
[Aggiorna B] Contando da destra sostituisci lo 0 di B con 1 nella posizione P+1
[Calcola D] D N - 2P
[Scambia] N D. Ripeti il processo
![Page 106: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/106.jpg)
Program. Mod A - Cap. 1 prof. Burattini
106
281 +
76
942
![Page 107: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/107.jpg)
Program. Mod A - Cap. 1 prof. Burattini
107
Soluzione esercizi Cap. 1 Addizione usando un abacoDICHIARAZIONISupponiamo che l’abaco abbia k aste.Sia N il primo addendo e M il secondo addendo. Rappresentiamo N=nk….n3n2n1 , M=mh….m3m2m1
Sia Q il quoziente di una cifra di N o M per 5Sia R il resto della divisione precedente
[Dividi] Dividi n1 per 5. Sia Q n1/5 e R n1 - Q*5
[Sposta la palline] Prendi Q palline della parte superiore e prendi R palline della parte inferiore e spostale al centro.
[Ripeti i passi precedenti ] Ripeti i passi precedenti per la seconda e terza, … la k-ma asta.
[Rappresentazione di N]
[Somma M]
[Dividi] Dividi la cifra corrente di m1 per 5. Sia Q m1/5 e R m1 - Q*5
[Aggiungi] Aggiungi Q palline alla parte superiore. Se il numero totale di palline è uguale a due riporta le palline il alto e sposta al centro una pallina della parte inferiore della prima asta a sinistra.
[Ripeti i passi precedenti ] Ripeti i passi precedenti per la seconda, terza, …, h-ma asta.
![Page 108: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/108.jpg)
Program. Mod A - Cap. 1 prof. Burattini
108
Generazione di tutte le possibili combinazioni di 1 e 0 per N variabili
DICHIARAZIONISia N il numero di variabiliSia C un numero intero posto inizialmente a 0.
[Controlla Fine Elaborazione] Se C = 2N - 1 allora finisci.
[Converti in binario] Chiama la procedura DECBIN(C) per convertire C in binario
[Mostra] Scrivi C
[Incrementa il contatore] Poni C C + 1
[Ricomincia] Ritorna al passo iniziale.
![Page 109: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/109.jpg)
Program. Mod A - Cap. 1 prof. Burattini
109
HDEditor Crea i programma e memorizza su HD
Preprocessor HD Esegui il codiceHDCompiler Crea il codice oggetto e
memorizza su HDHDLinker
Collega il codice oggetto con le librerie, crea a.out e memorizza su HD
HD
LoaderCarica nella memoria primaria il programma
CPULa CPU esegue sequenzialmente le istruzioni memorizzando nella memoria primaria i dati ottenuti
![Page 110: Program. Mod A - Cap. 1 prof. Burattini 1. 2 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattinie-mail: ernb@na.infn.it Durata del corso: dal 26/09/2006.](https://reader036.fdocument.pub/reader036/viewer/2022062404/5542eb57497959361e8c160e/html5/thumbnails/110.jpg)
Program. Mod A - Cap. 1 prof. Burattini
110