SlideShare a Scribd company logo
IFMP


Prima lezione sul C++
Il percorso di un programma C++

• Editor: scrittura del codice C++
• Preprocessore: sostituisce parte del
  codice C++ con altro codice C++
• Compiler: genera del codice assembly a
  partire da codice C++
• Assembler: genera codice oggetto a
  partire da codice assembly
• (Linker: unisce staticamente codici
  oggetto tra di loro)
• Loader: (unisce dinamicamente codici
  oggetto tra di loro ed) esegue la funzione
  main()
Il preprocessore
• Commenti: Iniziano con // oppure sono racchiusi tra /*
  e */; contengono testo in umanese, utile solo agli
  sviluppatori. Vengono eliminati dal preprocessore e
  non ne rimane traccia nel programma.
• #include<file>, #include "file" : includono all'interno
  del codice il codice contenuto in un altro file.
  P.es.: #include <iostream> inserisce nel codice le
  "strutture" C++ necessarie a leggere l'input e scrivere
  l'output, che si trovano nel file iostream.
• Macro: sono "variabili del preprocessore"; non fanno
  parte del codice C++ e vengono sostituite dal codice
  C++ che esse rappresentano. Non le tratteremo se
  non di sfuggita.
Le variabili

• Contenitori per numeri o "oggetti".
• Hanno un nome (p.es.: a, ciao, _e43)
• Hanno un tipo (p.es.: int, const double,
  char)
• Hanno un indirizzo (p.es.: 0x15A34D19)
• Hanno un contenuto, o valore (p.es.: 3,
  5.1241, 'd')
Le espressioni


• Hanno un tipo, esattamente come
  una variabile
• Hanno un valore, esattamente come
  una variabile
• Possono avere un indirizzo
• Non hanno un nome
rvalue, lvalue
• Tutto ciò che ha un valore (ossia: ogni espressione,
  cioè tutto) può trovarsi a destra di un segno di uguale
  (p.es.: int a = 2+3, dove 2+3 ha un valore)
• Tutto ciò che ha un indirizzo può trovarsi a sinistra di
  un segno di uguale (p.es.: int a = 2+3, dove int a ha
  un indirizzo)
• Ciò che non ha un indirizzo non può trovarsi a sinistra
  di un segno di uguale (p.es.: 2+3 = a: non si può
  assegnare un valore a 2+3, poiché 2+3 non ha un
  indirizzo; non si saprebbe dove mettere tale valore).



                 lvalue: ha un indirizzo
                  rvalue: ha un valore
Gli operatori
• Uniscono i vari pezzi di codice, costituendo
  la parte primitiva dell'interzione tra valori
  e tra variabili
• Hanno una precedenza ben definita (p.es.:
  2+2*2 fa 6, non 8, poiché il * ha
  precedenza sul +)
• Le precedenze possono essere modificate
  tramite parentesi tonde (p.es.: (2+2)*2 =
  8, non 6)
• Altri operatori: >>, <<, ==, <=, *, &, ::, ., ->

More Related Content

Similar to Lezione 3

Lezione 16 (2 aprile 2012)
Lezione 16 (2 aprile 2012)Lezione 16 (2 aprile 2012)
Lezione 16 (2 aprile 2012)STELITANO
 
Ruby in 25 minuti
Ruby in 25 minutiRuby in 25 minuti
Ruby in 25 minuti
Marcello Missiroli
 
Corso c++
Corso c++Corso c++
Corso c++
Antonio Furone
 
Linguaggio R, principi e concetti
Linguaggio R, principi e concettiLinguaggio R, principi e concetti
Linguaggio R, principi e concetti
Vincenzo De Maio
 
Pycrashcourse
PycrashcoursePycrashcourse
Pycrashcourse
rik0
 
Introduzione a JavaScript
Introduzione a JavaScriptIntroduzione a JavaScript
Introduzione a JavaScript
Giovanni Buffa
 
Stringhe java
Stringhe javaStringhe java
Stringhe java
Maria de Masi
 
Inferno Limbo Italian
Inferno Limbo ItalianInferno Limbo Italian
Inferno Limbo Italian
Alberto Minetti
 
Diversamente Javascript: si.. può.. fare! (di Mirko Ravaioli)
Diversamente Javascript: si.. può.. fare! (di Mirko Ravaioli)Diversamente Javascript: si.. può.. fare! (di Mirko Ravaioli)
Diversamente Javascript: si.. può.. fare! (di Mirko Ravaioli)
From The Front
 
Puntatori e Riferimenti
Puntatori e RiferimentiPuntatori e Riferimenti
Puntatori e Riferimenti
Ilio Catallo
 
Esercitazione 1 (27 febbraio 2012)
Esercitazione 1 (27 febbraio 2012)Esercitazione 1 (27 febbraio 2012)
Esercitazione 1 (27 febbraio 2012)STELITANO
 
Lezione 15 (2 aprile 2012)
Lezione 15 (2 aprile 2012)Lezione 15 (2 aprile 2012)
Lezione 15 (2 aprile 2012)STELITANO
 
Lezione 10 (21 marzo 2012)2
Lezione 10 (21 marzo 2012)2Lezione 10 (21 marzo 2012)2
Lezione 10 (21 marzo 2012)2STELITANO
 
LINQ, Entities Framework & ORMs
LINQ, Entities Framework & ORMsLINQ, Entities Framework & ORMs
LINQ, Entities Framework & ORMs
JUG Genova
 

Similar to Lezione 3 (16)

Lezione 16 (2 aprile 2012)
Lezione 16 (2 aprile 2012)Lezione 16 (2 aprile 2012)
Lezione 16 (2 aprile 2012)
 
Ruby in 25 minuti
Ruby in 25 minutiRuby in 25 minuti
Ruby in 25 minuti
 
Corso c++
Corso c++Corso c++
Corso c++
 
Linguaggio R, principi e concetti
Linguaggio R, principi e concettiLinguaggio R, principi e concetti
Linguaggio R, principi e concetti
 
Pycrashcourse
PycrashcoursePycrashcourse
Pycrashcourse
 
Template
TemplateTemplate
Template
 
Introduzione a JavaScript
Introduzione a JavaScriptIntroduzione a JavaScript
Introduzione a JavaScript
 
Stringhe java
Stringhe javaStringhe java
Stringhe java
 
05 1 intro-struttura
05 1 intro-struttura05 1 intro-struttura
05 1 intro-struttura
 
Inferno Limbo Italian
Inferno Limbo ItalianInferno Limbo Italian
Inferno Limbo Italian
 
Diversamente Javascript: si.. può.. fare! (di Mirko Ravaioli)
Diversamente Javascript: si.. può.. fare! (di Mirko Ravaioli)Diversamente Javascript: si.. può.. fare! (di Mirko Ravaioli)
Diversamente Javascript: si.. può.. fare! (di Mirko Ravaioli)
 
Puntatori e Riferimenti
Puntatori e RiferimentiPuntatori e Riferimenti
Puntatori e Riferimenti
 
Esercitazione 1 (27 febbraio 2012)
Esercitazione 1 (27 febbraio 2012)Esercitazione 1 (27 febbraio 2012)
Esercitazione 1 (27 febbraio 2012)
 
Lezione 15 (2 aprile 2012)
Lezione 15 (2 aprile 2012)Lezione 15 (2 aprile 2012)
Lezione 15 (2 aprile 2012)
 
Lezione 10 (21 marzo 2012)2
Lezione 10 (21 marzo 2012)2Lezione 10 (21 marzo 2012)2
Lezione 10 (21 marzo 2012)2
 
LINQ, Entities Framework & ORMs
LINQ, Entities Framework & ORMsLINQ, Entities Framework & ORMs
LINQ, Entities Framework & ORMs
 

Lezione 3

  • 2. Il percorso di un programma C++ • Editor: scrittura del codice C++ • Preprocessore: sostituisce parte del codice C++ con altro codice C++ • Compiler: genera del codice assembly a partire da codice C++ • Assembler: genera codice oggetto a partire da codice assembly • (Linker: unisce staticamente codici oggetto tra di loro) • Loader: (unisce dinamicamente codici oggetto tra di loro ed) esegue la funzione main()
  • 3. Il preprocessore • Commenti: Iniziano con // oppure sono racchiusi tra /* e */; contengono testo in umanese, utile solo agli sviluppatori. Vengono eliminati dal preprocessore e non ne rimane traccia nel programma. • #include<file>, #include "file" : includono all'interno del codice il codice contenuto in un altro file. P.es.: #include <iostream> inserisce nel codice le "strutture" C++ necessarie a leggere l'input e scrivere l'output, che si trovano nel file iostream. • Macro: sono "variabili del preprocessore"; non fanno parte del codice C++ e vengono sostituite dal codice C++ che esse rappresentano. Non le tratteremo se non di sfuggita.
  • 4. Le variabili • Contenitori per numeri o "oggetti". • Hanno un nome (p.es.: a, ciao, _e43) • Hanno un tipo (p.es.: int, const double, char) • Hanno un indirizzo (p.es.: 0x15A34D19) • Hanno un contenuto, o valore (p.es.: 3, 5.1241, 'd')
  • 5. Le espressioni • Hanno un tipo, esattamente come una variabile • Hanno un valore, esattamente come una variabile • Possono avere un indirizzo • Non hanno un nome
  • 6. rvalue, lvalue • Tutto ciò che ha un valore (ossia: ogni espressione, cioè tutto) può trovarsi a destra di un segno di uguale (p.es.: int a = 2+3, dove 2+3 ha un valore) • Tutto ciò che ha un indirizzo può trovarsi a sinistra di un segno di uguale (p.es.: int a = 2+3, dove int a ha un indirizzo) • Ciò che non ha un indirizzo non può trovarsi a sinistra di un segno di uguale (p.es.: 2+3 = a: non si può assegnare un valore a 2+3, poiché 2+3 non ha un indirizzo; non si saprebbe dove mettere tale valore). lvalue: ha un indirizzo rvalue: ha un valore
  • 7. Gli operatori • Uniscono i vari pezzi di codice, costituendo la parte primitiva dell'interzione tra valori e tra variabili • Hanno una precedenza ben definita (p.es.: 2+2*2 fa 6, non 8, poiché il * ha precedenza sul +) • Le precedenze possono essere modificate tramite parentesi tonde (p.es.: (2+2)*2 = 8, non 6) • Altri operatori: >>, <<, ==, <=, *, &, ::, ., ->