C++: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m Corretto la formattazione
Riga 23:
 
== Storia ==
 
[[File:BjarneStroustrup.jpg|miniatura|[[Bjarne Stroustrup]], autore del linguaggio.]]
[[Bjarne Stroustrup]] iniziò a lavorare al linguaggio nel [[1979]]. L'idea di creare un nuovo linguaggio ebbe origine nelle sue esperienze di programmazione durante la realizzazione della tesi di laurea. Stroustrup trovò che il [[Simula]] avesse caratteristiche utili per lo sviluppo di grossi progetti software, ma il linguaggio era troppo lento per l'utilizzo pratico, mentre il [[BCPL]] risultava veloce ma troppo a basso livello per lo sviluppo di grosse applicazioni. Quando Stroustrup cominciò a lavorare ai laboratori Bell, gli fu affidato il compito di analizzare il [[kernel]] di [[Unix]] in ambito di [[elaborazione distribuita]]. Ricordandosi del lavoro della tesi, decise di aggiungere al linguaggio C alcune delle caratteristiche di Simula. Fu scelto il C perché era un linguaggio per uso generico [[Portabilità|portabile]] e veloce. Oltre al C ed al Simula, si ispirò a linguaggi come l'[[ALGOL 68]], [[linguaggio Ada|Ada]], il [[linguaggio CLU|CLU]] ed il [[ML programming language|linguaggio ML]]. Inizialmente, le funzionalità di [[classe (informatica)|classe]], [[ereditarietà (informatica)|classe derivata]], [[strong typing|controllo rigoroso dei tipi]] e argomento di default furono aggiunte al C con [[Cfront]]. La prima versione commerciale fu distribuita nell'ottobre del [[1985]].<ref>{{Cita web|url=http://public.research.att.com/~bs/bs_faq.html#invention|titolo=Stroustrup: FAQ|accesso=22 aprile 2006|urlarchivio=https://web.archive.org/web/20120716211550/http://public.research.att.com/~bs/bs_faq.html#invention|dataarchivio=16 luglio 2012|urlmorto=sì}}</ref>
Riga 38 ⟶ 37:
 
=== Genesi del nome ===
 
La [[Alfabeto fonetico internazionale|pronuncia]] di C++ è [ˌsiː plʌs ˈplʌs] (in inglese). Il nome fu suggerito da [[Rick Mascitti]] alla metà del [[1983]], quando il linguaggio veniva usato per la prima volta al di fuori dei centri di ricerca. Precedentemente il linguaggio si chiamava "C with classes" (C con classi). Il nome è un gioco di parole con un costrutto del C (dove il doppio segno più è l'operatore di autoincremento, che incrementa di una unità il valore di una variabile) insieme con la comune convenzione di aggiungere un segno più per indicare una versione potenziata. Secondo Stroustrup: ''«++ è l'operatore di incremento del C [...] il nome esprime la natura evoluzionaria dei cambiamenti dal C»''. Impiegando il [[gioco di parole]] si evita anche il problema che "C+" è già stato usato per un linguaggio senza alcun nesso col C++ (senza menzionare che è comunemente associato con una valutazione poco più che sufficiente in una performance accademica).
 
Riga 45 ⟶ 43:
== Descrizione ==
=== Libreria standard ===
 
Lo [[Norma tecnica|standard]] del C++ del [[1998]] consiste di due parti: il nucleo del linguaggio e la [[Libreria standard del C|libreria standard]]; quest'ultima include la maggior parte della [[Standard Template Library]] (STL) . Esistono molte librerie per il C++ che non fanno parte dello standard ed è possibile, usando il linking esterno, utilizzare anche le librerie scritte per il linguaggio C. La STL era in origine una libreria di terze parti, sviluppata da [[Hewlett-Packard|HP]] e in seguito da [[Silicon Graphics]], prima che venisse incorporata nel C++ standard. Lo standard non si riferisce a essa come alla "STL", poiché è semplicemente parte della libreria completa, ma molti continuano a usare il termine per distinguerla dal resto della libreria (come flussi di I/O, internazionalizzazione, funzioni diagnostiche, ecc.).
 
Riga 51 ⟶ 48:
 
=== Compilatori ===
 
Alcuni [[compilatori]] per C++ sono: [[GNU Compiler Collection|GCC]] (multipiattaforma), [[Clang]] (disponibile per molte piattaforme diverse), [[MinGW]] ([[porting]] di GCC per Windows), [[DJGPP]] e [[TerzC++Compile]]r. Oltre a questi ci sono i compilatori commerciali come [[VisualC++]], [[C++ Builder]] (inizialmente realizzato dalla [[Borland]]). Su sistema operativo [[macOS]], è possibile utilizzare il programma [[Xcode]].
 
Riga 59 ⟶ 55:
 
== Programmi di esempio (derivati da C) ==
 
=== [[Hello world!]] ===
Esempio del programma ''[[hello world]]'' che utilizza la [[libreria standard C++]] (non l'STL), il flusso di output ''cout'' per mostrare un messaggio e termina, restituendo ("return") un valore alla funzione chiamante, in questo caso il sistema operativo che ha lanciato il programma.
Riga 81 ⟶ 76:
 
=== Differenza di decimali ===
 
Semplice programma che chiede all'utente di inserire due decimali, ne fa la differenza e ne visualizza il risultato.
 
Riga 118 ⟶ 112:
 
=== Numero maggiore ===
 
Il programma chiede all'utente più numeri e mostra il maggiore fra quelli inseriti (interrompendo l'esecuzione quando viene inserito un numero negativo o nullo). Oltre all'''int'', il c++ utilizza anche il ''float'' per dichiarare variabili sia intere sia non intere.
<syntaxhighlight lang="cpp">
Riga 168 ⟶ 161:
 
=== Area di un rettangolo ===
 
Il calcolo dell'area di una figura piana come il rettangolo è qui sottoesposto:
<syntaxhighlight lang="cpp">
Riga 190 ⟶ 182:
 
=== Definizione di Classe ===
 
<syntaxhighlight lang="cpp">
#include <iostream>
Riga 259 ⟶ 250:
 
=== Ciclo for ===
 
<syntaxhighlight lang="cpp">
#include <iostream>
Riga 289 ⟶ 279:
 
== Il controllo dell'input ==
 
Un costrutto che si trova spesso nella programmazione in C++ è:
<syntaxhighlight lang="cpp">
Riga 297 ⟶ 286:
} while (condizione);
</syntaxhighlight>
 
utilizzato per ripetere l'esecuzione di una parte del programma dipendente da una specifica condizione, enunciata nel while.
 
Riga 395 ⟶ 385:
 
== Note ==
<references />
 
<references />
== Bibliografia ==
* {{Cita libro|autore = [[Bjarne Stroustrup]]|titolo = The C++ Programming Language|editore = Addison-Wesley|lingua = inglese|ISBN = 978-0-201-70073-2}}
 
* {{Cita libro|nome = Bjarne|cognome = Stroustrup|titolo = C++. Linguaggio, libreria standard, principi di programmazione|editore = Pearson|ISBN = 978-88-6518-448-6|autore=|anno=2015|p=1279}}
* {{Cita libro
* {{Cita libro|titolo = Programmazione ad oggetti e linguaggio C++|editore = Atlas|ISBN = 978-88-268-1195-6|autore=Agostino Lorenzi, Marco Ambrosini, Sara Foresti|anno=2004|p=384}}
| autore = [[Bjarne Stroustrup]]
* {{Cita libro|titolo = C++. Fondamenti di programmazione|editore = Apogeo|ISBN = 978-88-387-8571-9|autore=Harvey M. Deitel, Paul J. Deitel|anno=2014|p=768}}
| titolo = The C++ Programming Language
|* {{Cita libro|titolo = Introduzione alla programmazione ed elementi di strutture dati con il linguaggio C++|editore = Franco Angeli Editore|ISBN = 978-88-464-6202-2|autore=Andrea Domenici, Graziano Frosini|anno=2013|p=480}}
| editore = Addison-Wesley
| lingua = inglese
| ISBN = 978-0-201-70073-2
}}
 
* {{Cita libro
| nome = Bjarne
| cognome = Stroustrup
| titolo = C++. Linguaggio, libreria standard, principi di programmazione
| editore = Pearson
| ISBN = 978-88-6518-448-6
| autore=|anno=2015|p=1279}}
 
* {{Cita libro
| titolo = Programmazione ad oggetti e linguaggio C++
| editore = Atlas
| ISBN = 978-88-268-1195-6
| autore=Agostino Lorenzi, Marco Ambrosini, Sara Foresti|anno=2004|p=384}}
 
* {{Cita libro
| titolo = C++. Fondamenti di programmazione
| editore = Apogeo
| ISBN = 978-88-387-8571-9
| autore=Harvey M. Deitel, Paul J. Deitel|anno=2014|p=768}}
 
* {{Cita libro
| titolo = Introduzione alla programmazione ed elementi di strutture dati con il linguaggio C++
| editore = Franco Angeli Editore
| ISBN = 978-88-464-6202-2
| autore=Andrea Domenici, Graziano Frosini|anno=2013|p=480}}
 
== Voci correlate ==
 
* [[C++11]]
* [[Crypto++]]
* [[Include guard]]
* [[Most vexing parse]]
* [[Regola del tre (C++)]]
Riga 445 ⟶ 405:
 
== Collegamenti esterni ==
 
* {{Collegamenti esterni}}
* {{cita web|http://www.open-std.org/jtc1/sc22/wg21/|Pagine del comitato per la standardizzazione: JTC1/SC22/WG21 - C++|lingua=en}}