Auron

The quieter you become, the more you hear


    Il Linguaggio Di Programmazione C++

    Condividi

    Ospite
    Ospite

    Il Linguaggio Di Programmazione C++

    Messaggio  Ospite il Ven Mag 15, 2009 3:42 pm

    Ecco una breve introduzione al C++ :

    Il C++ è, come noto, uno dei più diffusi linguaggi di programmazione fra gli innumerevoli oggi disponibili. Esistono ormai anche linguaggi a più alto livello (con linguaggio ad alto livello si intende un linguaggio di programmazione più lontano dal codice macchina e più vicino, per quanto lo possa essere un linguaggio di programmazione per computer, al linguaggio umano) rispetto al C++, e quindi perchè un utente dovrebbe, per necessità o per diletto, rivolgersi proprio al C++? I motivi possono essere molti, ma è chiaro che si tratta soprattutto di una questione di esigenze e di gusti; ad ogni modo il C++ presenta i seguenti indubbi vantaggi:

    •E' uno standard tra i più diffusi: questo vuol dire che sono già disponibili una quantità notevole di librerie, codice già pronto, driver di periferiche, bibliografia, compilatori, ecc...
    •E' uno dei più flessibili: con il C++ si può scrivere praticamente qualsiasi software, dal sistema operativo (auguri...) alla piccola applicazione che in 10 righe di codice toglie un sacco di lavoro quotidiano al sig. Mario Rossi.
    •Deriva dal C e quindi è perfettamente in grado di compilare il codice C, cosa che significa una ulteriore estensione della compatibilità anche con codice vecchio che non deve essere riscritto.
    •Essendo uno dei linguaggi più conosciuti e usati dai programmatori, ha dei compilatori molto affidabili e i programmi che ne risultano sono stabili (sempre che siano scritti correttamente) e veloci in esecuzione su tutte le piattaforme.
    •E' un buon compromesso fra semplicità di scrittura del codice, potenza e flessibilità.

    Ospite
    Ospite

    Il Primo Passo

    Messaggio  Ospite il Ven Mag 15, 2009 3:43 pm

    Cominciamo ora a vedere come si scrive un programma in C++. E cominciamo ovviamente con il programma che non fa assolutamente nulla, che è sempre il primo che ogni corso di programmazione che presenta. Il codice è questo:

    main()
    {
    return(0);
    }
    Questo programma, se compilato ed eseguito non fa assolutamente nulla, ma vediamone la sintassi: main() indica il punto in cui inizia la parte principale del programma. Un programma C++ deve sempre contenere un main, al quale possono aggiungersi un numero qualsivoglia di funzioni che svolgono parti specifiche del codice. Le parentesi tonde contengono i parametri di input per il programma, e in questo caso sono vuote. Le parentesi graffe invece contengono il testo del codice, ovvero tutto quello che effettivamente il programma farà quando viene eseguito.
    return è il comando che stabilisce cosa debba essere l'output della funzione in esame (in C++ il main non è per nulla diverso da una qualsiasi funzione, se non per il fatto che viene eseguito per primo e che i suoi input e output passano al sistema operativo). In questo caso il comando restituisce al sistema operativo il valore 0, ovvero segnala una esecuzione corretta del programma. Non e' veramente necessario in un caso come questo mettere il comando return nel main perché, per come è stata usata la sintassi, non è atteso nessun output dal programma.
    Lo stesso programma poteva essere scritto in un modo leggermente differente:

    void main(){}
    La parola chiave void indica che il programma deve restituire un valore vuoto, e quindi in questo caso non c'è bisogno di specificare il comando return. Alcuni compilatori C++ accettano anche la sintassi senza void né return. Void può essere inserito anche tra le parentesi tonde per indicare che main ha come parametro di ingresso una variabile nulla.
    Una cosa importante da segnalare nella sintassi e che il punto e virgola che appare alla fine dell'unico comando presente: quel segno di punteggiatura indica al compilatore che è stato completato il comando; è quindi essenziale e va messo alla fine di tutte le righe di comando.

    Ospite
    Ospite

    Qualcosa di più complicato

    Messaggio  Ospite il Ven Mag 15, 2009 3:46 pm

    Dopo il primo programma vuoto si vuole passare a qualcosa di più utilizzabile, per esempio un programma che scrive una riga di testo a video. E qui le cose già si complicano: tutti i linguaggi di programmazione hanno dei comandi che implementano l'ingresso da tastiera e l'output a video, solo che nel C++ (come nel C) questi non sono fra i comandi base!
    Questa scelta, apparentemente paradossale, ha la sua ragione nella fondamentale modularità e flessibilità di questo linguaggio. E' vero che molti programmi devono prendere input da utente, fare delle operazioni e mostrare dei risultati, ma è altrettanto vero che non tutti lo devono fare: ci sono programmi che devono funzionare completamente in background, senza che l'utente della macchina neanche se ne accorga (ad esempio componenti del sistema operativo, driver di periferiche, virus(!) e molti altri). Per questi programmi sarebbe un assurdo caricare in fase di compilazione moduli che non andranno mai ad utilizzare, rendendoli semplicemente più pesanti. Sembra una sciocchezza, ma è uno dei segreti della potenza del C++.

    Bisogna perciò includere nel programma, prima del main, una stringa che carichi il file header che gestisce i flussi di input/output. Questo file è semplicemente una libreria C++ che contiene le definizioni dei comandi necessari che poi saranno usati nel programma. L'istruzione che serve è:

    #include <iostream.h>
    Le parentesi circonflesse attorno al nome del file della libreria indicano al compilatore che essa è collocata nella cartella di default degli header, nota al compilatore, mentre, se si fosse incluso il nome tra virgolette (es: #include "mylib.h") avrebbe indicato che il file è nella stessa cartella del file sorgente del programma che si sta scrivendo.
    Bisogna però dire che nei compilatori più recenti si può anche dimenticare di inserire alcune fra le librerie più comuni, perché se vengono inseriti comandi relativi a tali librerie il compilatore stesso provvederà a includerle: ciò non toglie che sia buona norma includerle manualmente, anche per migliorare la portabilità del codice.

    Vediamo ora il programma completo:

    #include <iostream.h>

    void main()
    {
    cout < "Ciao a tutti" << endl;
    }
    Il comando cout genera gli output a video ed è molto flessibile perché non si limita a visualizzare stringhe come nel caso mostrato (la stringa è ovviamente quella compresa fra le virgolette), ma anche qualsiasi altro tipo di dato, dagli interi ai numeri a virgola mobile, fino anche ai tipi di dato definiti dall'utente (in questo caso si applica una tecnica chiamata overloading degli operatori, che verrà spiegata in futuro dato che è una tecnica di programmazione piuttosto avanzata), e combinazioni degli stessi. Ad esempio il comando

    cout << "Il raggio della Terra ''e di " << 6378.14 << " km" << endl;
    concatena le due stringhe inserendoci in mezzo il valore numerico (convertito anch'esso in stringa, ma di questo l'utente non ha traccia) e stampa a video la scritta: Il raggio della terra è di 6378.14 km
    L'accento, come si vede, è un carattere speciale, e va preceduto dalla barra \: altri esempi di caratteri speciali sono la tabulazione (\t) e la riga a capo (\n). endl è una costante che serve a sostituire la riga a capo: è perfettamente equivalente inserire nella stringa un \n.

    Una volta mostrato come si genera un output a video, vediamo anche come si può acquisire un dato dalla tastiera. Per far questo, sempre usando la libreria <iostream.h>, esiste il comando duale di cout, cin. Vediamone subito l'uso attraverso un esempio:

    #include <iostream.h>

    void main()
    {
    int dato;
    cout << "Inserire un numero intero: ";
    cin >> dato;
    cout << "Il valore che hai immesso ''e: " << dato;
    }
    Come si vede, cin utilizza l'operatore >> anziché <<; questi sono operatori usati per indicare il flusso di dati, come si vedrà più avanti. Una volta inserito il dato, cin provvede automaticamente al ritorno a capo del cursore; non ha perciò senso usare i caratteri speciali come si fa con cout.


    Ultima modifica di Ivan_The_Gamer il Ven Mag 15, 2009 3:47 pm, modificato 1 volta

    Ospite
    Ospite

    I Commenti

    Messaggio  Ospite il Ven Mag 15, 2009 3:46 pm

    In C++ esiste ovviamente la possibilità di inserire righe di commento, che permettono di aggiungere note di spiegazione del codice utili sia per chi debba leggere un sorgente scritto da altri, sia per chi scrive il codice ed ha bisogno di andarlo a riprendere e modificare a distanza di tempo. E' molto utile anche in fase di debugging del programma, perché permette di eliminare temporaneamente aclune righe senza doverle cancellare, se possono tornare utili. In C++ ci sono due modi per scrivere commenti:

    •Commento di una sola linea: si fa inserendo una doppia barra //; in questo modo tutto ciò che segue le barre su quella stessa linea di codice viene ignorato dal compilatore.
    •Commento su più linee: permette di far ignorare al compilatore tutto ciò che sta fra il simbolo di inizio commento /* e il simbolo di fine commento */.
    Ricordo soltanto che i commenti non appesantiscono il codice eseguibile perché non vengono proprio compilati e che è buona norma di qualsiasi programmatore scrivere del codice ben commentato.

    Ospite
    Ospite

    Le Parole Più Utilizate

    Messaggio  Ospite il Ven Mag 15, 2009 3:47 pm

    C++, Le parole dedicate del linguaggio sono:
    asm auto break case catch
    char class const continue default
    delete do double else enum
    extern float for friend goto
    if inlineint long new operator
    private protected public register return
    short signed sizeof static struct
    switch template this throw try
    typedef union unsigned virtual void
    volatile wchar_t while

    Ospite
    Ospite

    Re: Il Linguaggio Di Programmazione C++

    Messaggio  Ospite il Ven Mag 15, 2009 3:48 pm

    La dichiarazione di una variabile si fa inserendo una riga con il tipo seguito dal nome che le viene assegnato; un esempio si è già visto precentemente, nel programma di acquisizione da tastiera. Le variabili generalmente vengono dichiarate prima all'inizio del programma e possono essere dichiarate anche fuori dal main (in questo caso sono variabili globali.

    Vediamo ora quali sono i tipi di dato fondamentali implementati in C++:

    •bool
    •int
    •char
    •wchar_t
    •float
    •double
    •emun
    •void
    Il tipo bool indica una variabile di tipo booleano, di quelle che rappresentano i valori logici nelle tabelle di verità e può assumere soltanto i valori true (vero) oppure false (falso). Alle variabili booleane possono essere applicati soltanto operatori logici AND (indicato nel codice con il simbolo &&), OR (||) oppure NOT (!).

    Il tipo int, come si è visto, genera una variabile di tipo numero intero. Questo tipo di variabili occupano in memoria un numero di bit pari alla dimensione dei registri della macchina su cui si sta operando. Questo rende il codice compilato dipendente dalla macchina, ma anche molto efficiente sulla piattaforma su cui lo si usa. Ad ogni modo la sintassi del codice rimane la stessa su tutte le piattaforme, e questo garantisce la portabilità (è sufficiente ricompilare il codice per tutte le macchine).

    Il tipo char serve per rappresentare i caratteri: si tratta in realtà ancora di numeri interi a cui il compilatore assegna una corrispondenza con i caratteri. Per questo sono possibili, per quanto prive di senso, anche operazioni matematiche sui caratteri. I singoli caratteri, al contrario delle stringhe, si indicano fra apici semplici, anzichè doppi. Ad esempio per creare un carattere e assegnargli la lettera a il listato è:

    char lettera;
    lettera = 'a';
    E' molto utile far notare che le variabili possono essere inizializzate anche nella stessa linea di comando della dichiarazione. Ad esempio il codice appena scritto è equivalente a:

    char lettera = 'a';
    Per quanto riguarda i caratteri, bisogna notare che esiste anche una altro tipo di dato chiamato wchar_t, che permette di rapprensentare i caratteri Unicode estesi che non sono rappresentabili da char.

    I tipi float e double rappresentano i numeri in virgola mobile, ovvero i numeri reali, nei limiti della capacità di memoria dei registri di memoria di un computer. In genere un float occupa in memoria 4 byte, mentre un double 8, mentre l'effettiva estensione della gamma numerica varia a seconda della dimensione della parola di memoria sulla macchina. In ogni caso si può vedere la dimensione di un tipo di dato in memoria usando il comando sizeof() e facendolo visualizzare con un cout.

    Il tipo enum crea un tipo di dato i cui elementi sono associati a delle etichette create dal programmatore; l'esempio classico sono i giorni della settimana: si possono associare a dei numeri interi, ma può essere comodo creare un tipo di dato che li definisce direttamente. In questo caso si usa enum, con la seguente sintassi, in cui viene fatto anche un esempio di assegnamento:

    emun {lun, mar, mer, gio, ven, sab, dom} giorno;
    giorno oggi;
    oggi = mar;
    Ovviamente le ultime due righe potevano essere accorpate, come visto. Anche i valori di enum vengono associati come i char a dei valori interi, e questi possono essere anche specificati in fase di definizione:

    enum {primo = 1, secondo = 2, terzo = 3} podio;
    Per ultimo il tipo void, che, come si è detto, indica un tipo di dato che rappresenta l'insieme vuoto, che è infatti l'insieme dei valori che può assumere una variabile di questo tipo.

    Ospite
    Ospite

    Re: Il Linguaggio Di Programmazione C++

    Messaggio  Ospite il Ven Mag 15, 2009 3:49 pm

    Le operazioni matematiche si applicano normalmente ai tipi int, float e double, ma possono essere applicati, per quanto paia inutile, anche ai char, in quanto, come accennato, essi sono in corrispondenza biunivoca con degli interi.

    + Addizione

    - Sottrazione

    * Moltiplicazione

    / Divisione con quoziente decimale
    (il risultato è sempre float o double)

    % Resto della divisione fra interi
    (questo funziona ovviamente solo per gli int)
    Oltre agli operatori classici nel C++ esistono anche degli operatori particolari che permettono di eseguire più rapidamente alcune operazioni come l'incremento di uno di un contatore; L'esempio classico è proprio quello del contatore:

    #include <iostream.h>

    void main()
    {
    int i = 5;
    cout << i++;
    }
    Questo programma mostrerà a video il numero 6; infatti l'operatore ++ serve ad aumentare di 1 il valore della variabile int a cui viene applicato. L'istruzione i++ è del tutto equivalente a i + 1. Essa esiste per due motivi:

    •permette di ottimizzare il codice: anche questa sembra una finezza inutile, ma in programmi molto complessi e pesanti risparmiare frazioni di microsecondo per ogni incremento di un contatore può significare differenze sensibili.
    •da un significato al nome C++! Infatti questo nome deriva proprio dal C, aggiungendovi il doppio + per indicarne l'evoluzione.
    Analogamente a questo, esistono una serie di altri operatori, indicati in tabella, che eseguono coppie di operazioni.

    Operatore Uso Equivalente
    ++ x++; x = x + 1;
    -- x--; x = x - 1;
    += x+=y; x = x + y;
    -= x-=y; x = x - y;
    *= x*=y; x = x * y;
    /= x/=y; x = x / y;

    Ospite
    Ospite

    Re: Il Linguaggio Di Programmazione C++

    Messaggio  Ospite il Ven Mag 15, 2009 3:49 pm

    Sugli operatori logici e su quelli che verificano le relazioni fra più variabili c'è talmente poco da dire che penso sia sufficiente la tabella. L'unica nota riguarda l'uguaglianza, che si distingue dall'operazione di assegnamento, come avviene ormai nella maggior parte dei linguaggi. Il risultato di tutti questi operatori è sempre un dato di tipo bool.

    < MINORE
    <= MINORE O UGUALE
    > MAGGIORE
    >= MAGGIORE O UGUALE
    != DIVERSO
    == UGUALE

    && congiunzione AND
    || disgiunzione OR
    ! negazione NOT

    Ospite
    Ospite

    Re: Il Linguaggio Di Programmazione C++

    Messaggio  Ospite il Ven Mag 15, 2009 3:50 pm

    Per ora mi fermo qui con la guida... riprenderò settimana prossima.

    Ciao
    avatar
    BloodBlade
    Moderatore

    Numero di messaggi : 170
    Reputazione : 70
    Data d'iscrizione : 09.05.09
    Età : 25
    Località : Hellview

    Re: Il Linguaggio Di Programmazione C++

    Messaggio  BloodBlade il Lun Mag 18, 2009 6:14 pm

    la tua illuminante guida entrerá negli annali del forum, complimenti

    Ospite
    Ospite

    Re: Il Linguaggio Di Programmazione C++

    Messaggio  Ospite il Lun Mag 18, 2009 6:16 pm

    Grazie Blood Blade

    Ospite
    Ospite

    Re: Il Linguaggio Di Programmazione C++

    Messaggio  Ospite il Lun Mag 18, 2009 6:17 pm

    Comunque è molto interessante anche la guida che stà facendo l'Admin andetala a guardare mi raccomando... Cool
    avatar
    Marke94
    Hunter

    Numero di messaggi : 64
    Reputazione : 2
    Data d'iscrizione : 13.05.09
    Età : 23
    Località : Gallarate

    Re: Il Linguaggio Di Programmazione C++

    Messaggio  Marke94 il Lun Mag 18, 2009 6:19 pm

    un po' lungherrima...

    Ospite
    Ospite

    Re: Il Linguaggio Di Programmazione C++

    Messaggio  Ospite il Lun Mag 18, 2009 8:31 pm

    Marke è una piccola parte di guida questa i manuali normali sono di 400 pagine e non esagero è la verità. In questi post io metto le basi essenziali della programmazione.
    avatar
    Shainer
    Hunter

    Numero di messaggi : 73
    Reputazione : 70
    Data d'iscrizione : 23.05.09

    Re: Il Linguaggio Di Programmazione C++

    Messaggio  Shainer il Sab Mag 23, 2009 3:41 pm

    L'ho letta anche se conosco già il C++, ma credo sia troppo difficile per i newbies, dipende da che cosa ne pensa DK!
    avatar
    Ivan_The_Gamer
    Moderatore

    Numero di messaggi : 20
    Reputazione : 7
    Data d'iscrizione : 20.05.09

    Re: Il Linguaggio Di Programmazione C++

    Messaggio  Ivan_The_Gamer il Sab Mag 23, 2009 7:43 pm

    Hai ragione è troppo complessa metterò delle immagini per semplificare la guida (che devo ancora finire).

    Contenuto sponsorizzato

    Re: Il Linguaggio Di Programmazione C++

    Messaggio  Contenuto sponsorizzato


      La data/ora di oggi è Lun Nov 19, 2018 9:09 am