Sito e-learning

Glossario C++




Sfoglia il glossario usando questo indice

Caratteri speciali | 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 | TUTTI

C

C

Il C è il linguaggio di riferimento per la programmazione di software sulle piattaforme moderne. Permette di far eseguire praticamente qualsiasi cosa al computer.

Il suo difetto maggiore è la semantica che risulta difficile. Nonostante venga ancora utilizzato in alcuni ambiti, il C è strettamente legato all’hardware del computer e al linguaggio macchina.

Inoltre non permette la programmazione OOP (Object Oriented Programming) programmazione orientata agli oggetti ed anche per questo il suo utilizzo è molto difficile.

I campi di applicazione sono tuttavia vastissimi, ma difficilmente troverete un programmatore che ha applicato tutte le funzioni del C almeno una volta nella vita (forse nemmeno il suo creatore).

C#

Il C# (si pronuncia “c sharp”) è un progetto di casa Microsoft. Nasce come linguaggio per i programmi che girano su .NET Framework. La sua semantica è un misto di C, C++ e Java. Proprio grazie all’influenza di Java, il C# è più apprezzato e comprensibile.

C++

Il C++ (si pronuncia “c plus plus”) è un’evoluzione del C . Permette la OOP e ha una semantica più semplice, rispetto a quella di C. Anche se è nato come sviluppo del C, i due linguaggi hanno seguito strade diverse, non garantendo la compatibilità reciproca completa.

Solitamente i programmatori preferisco il C++ per la possibilità di creare classi, exceptions e altre cose che il C non permette. Il problema del C++ sono i compilatori. Non tutti i compilatori riescono ad apprezzare le sfumature della semantica del programma scritto, rischiando di comprometterne il funzionamento.

cstdlib

Questo header o  intestazione definisce diverse funzioni generali, tra cui gestione dinamica della memoria, generazione di numeri casuali, comunicazione con l'ambiente, aritmetica dei numeri interi, ricerca, ordinamento e conversione.

<cstdlib> è un "involucro" c++ della libreria C <stdlib.h>.

H

header

Confrontiamo header con library

L'header (intestazione) è come un numero di telefono che si può chiamare, mentre la library è come la persona reale che si può raggiungere usando il numero di telefono!

È la differenza fondamentale tra "interfaccia" e "implementazione":

  • l'interfaccia (header) dice come chiamare alcune funzionalità (senza sapere come funzionano),
  • mentre l'implementazione (library) è la funzionalità effettiva.

Un header viene generalmente utilizzato per definire un'interfaccia o un insieme di interfacce all'interno di un'applicazione. Si può pensare ad un file di intestazione come a qualcosa che mostra la funzionalità esterna di un programma omettendo i dettagli tecnici dell'implementazione.

Un header contiene i collegamenti alle libraries (le librerie contengono funzioni e metodi standard), un compilatore riconosce le funzioni standard utilizzate nel codice sorgente tramite un preprocessore, che risolve tutte le direttive  prima della compilazione effettiva del programma (le direttive sono le linee nel programma precedute dal segno # che include).

Mantenendo la stessa interfaccia, è possibile sostituire le librerie senza modificare il codice del programma chiamante!

Esempio

  • file header: MATH.H
  • library file: MATH.LIB

Nota

Il concetto è così fondamentale, perché consente una grande flessibilità: si può avere la stessa intestazione per diverse librerie a patto che la funzionalità venga chiamata esattamente allo stesso modo e ciascuna libreria può implementare la funzionalità in un modo diverso.

fonte: https://stackoverflow.com/questions/924485/whats-the-difference-between-a-header-file-and-a-library

I

include

La direttiva #include che si scrive:

#include <filename>              oppure               #include "filename"

determina l'inserimento, nel punto in cui si trova la direttiva, dell'intero contenuto del file con nome filename.

Se si usano le parentesi angolari, si intende che filename vada cercato nella directory di default del linguaggio; se invece si usano le virgolette, il file si trova nella directory del programma.

La direttiva #include viene usata quasi esclusivamente per inserire gli header-files (.h).

tratto da http://www.bo.cnr.it/corsi-di-informatica/corsoCstandard/Lezioni/14Direttive.html

iostream

La libreria STL (Standard Template Library) è la libreria standard del C++. Include tutto ciò che riguarda l'output a video e l'input da tastiera, la gestione dei file, le strutture dati di base (liste, alberi, etc.) e gli algoritmi di base (binary search, quick sort, etc.). La parola template indica che fa uso estensivo del meccanismo dei template per creare strutture dati ed algoritmi generici.

  • Output a video std::cout
  • Input da tastiera – std::cin

iostream è uno stream bidirezionale. Praticamente si comporta come un'unione di due stream: uno di input e uno di output.

L

libreria standard del C nel C++

Il C++ include le funzionalità della libreria standard del C ANSI, ma apporta numerose modifiche, come la modifica del nome degli header file da <xxx.h> a <cxxx> (i nomi nello stile C sono ancora disponibili, ma sono considerati obsoleti) oppure l'inserimento di tutti gli identificatori nello spazio dei nomi (namespace) std.

N

namespace

I namespace (in italiano spazio dei nomi) sono stati introdotti nel linguaggio C++ per evitare collisioni fra nomi. Inizialmente tutti i nomi di funzioni, variabili, classi venivano incluse in uno spazio di nomi globale. Quando vi erano due o più elementi con lo stesso nome allora si incorreva in una collisione.

Con l’introduzione dei namespace è possibile specificare a quale namespace appartiene una particolare funzione, variabile, classe.

Per specificare al compilatore che ad esempio l’identificatore cout deve essere cercato nello spazio dei nomi standard (std) anteponiamo a coutstd:: come nell'esempio che segue:

#include <iostream>
int main()
{
  std::cout <<"Hello World!";
  return 0;
}

dove:

    • std spazio dei nomi standard,
    • ::  Scope resolution operator (operatore di risoluzione dell’ambito),

Se non vogliamo qualificare esplicitamente ogni identificatore del namespace, possiamo utilizzare in alternativa la seguente espressione dopo l’inclusione della libreria iostream:

  • using namespace std;

Scrivendo

#include <iostream>
using namespace std;
int main()
{
  cout << "Hello World!";
  return EXIT_SUCCESS;
}

T

Tipi di dati

Ogni linguaggio di programmazione definisce dei formati per la rappresentazione dei dati. C++ è un linguaggio caratterizzato da tipizzazione statica: ciò significa che ad ogni variabile deve essere associato un tipo.

  • Tipi primitivi o fondamentali

I tipi primitivi o fondamentali sono quelli che consentono di rappresentare informazioni “semplici”, come ad esempio un singolo valore numerico, testo, valori booleani etc.

Ogni definizione di tipo contempla le seguenti proprietà:

    • la dimensione, espressa in numero di bit necessari per la rappresentazione di una variabile;
    • l’intervallo di valori rappresentabili;
    • la distribuzione dei valori rappresentabili;
    • nel caso dei tipi numerici, il segno.

Ad alcuni tipi, in particolare quelli numerici, possono essere applicati dei modificatori che ne alterano la dimensione ed il segno rispetto alle caratteristiche predefinite del tipo. A queste modifiche corrisponde una variazione del’intervallo dei valori rappresentabili.

    • Numeri interi

Il tipo int è usato per rappresentare numeri naturali o numeri interi relativi. È possibile alterare la dimensione e/o il segno del tipo int mediante l’uso degli appositi modificatori shortlonglong longsigned e unsigned.

    • Caratteri

Il tipo char è usato per la rappresentazione di singoli caratteri o stringhe di testo. Per il tipo char è possibile usare i modificatori di segno, ma non quelli per la dimensione, che è tradizionalmente pari a 8 bit, sufficiente per la codifica ASCII.

    • Numeri in virgola mobile

Per i numeri decimali con segno, esistono i tipi floatdouble e long double:

Gli aggettivi “singola” e “doppia” sono usati impropriamente in riferimento alla precisione, ma sono in realtà da riferire alla dimensione in bit che influenza non solo l’intervallo di valori rappresentabili, ma anche la loro distribuzione. 

    • Valori booleani

Il tipo bool è usato per rappresentare due valori: vero (true) e falso (false). 

    • Void

Il tipo void è usato per indicare un set di valori vuoto o indefinito. È un tipo incompleto, nel senso che non può essere allocato, non si possono usare reference o array di elementi void. In realtà è definibile solo come puntatore o come tipo di ritorno per funzioni che non restituiscono un risultato.

    • Dimensioni e limiti dei tipi fondamentali

Sebbene la dimensione in bit dei tipi fondamentali sia specificata dallo standard, esistono delle eccezioni o interpretazioni particolari. Nel caso di incertezze possiamo ricorrere a due strumenti che il linguaggio ci mette a disposizione:

      • l’operatore sizeof(tipo);
      • std::numeric_limits.
  • I tipi composti

I tipi composti sono quelli costituiti per aggregazione a partire da tipi fondamentali.  

Lo standard C++ incorpora non solo le caratteristiche sintattiche del linguaggio, ma anche la definizione di alcune librerie, la cui implementazione è poi demandata alle singole piattaforme.

Una di queste è la String library, che include la definizione del tipo string

    • Stringhe

Il tipo string consente di manipolare seguenze di caratteri in modo più agevole rispetto alla gestione di un array di char. Ciò è possibile grazie alla definizione di alcuni metodi che ci consentono di stabilire la dimensione della stringa, concatenare stringhe differenti, cercare e/o sostituire sequenze di caratteri.

Per l’uso della string library è necessario includere il relativo header file con la seguente istruzione nei propri sorgenti:

#include <string> 

U

using namespace std

using namespace std è una direttiva propria del C++ per dichiarare l'uso dello spazio dei nomi della libreria standard richiamata tramite #include <iostream> per mettere  a disposizione la funzione iostream