Lezione 6 Introduzione al C++ - Mauro Piccolo

Pagina creata da Andrea Parisi
 
CONTINUA A LEGGERE
Lezione 6 Introduzione al C++ - Mauro Piccolo
Lezione 6
Introduzione al C++

     Mauro Piccolo
   piccolo@di.unito.it
Linguaggi di programmazione
●   Un linguaggio formale disegnato per descrivere la
    computazione
●   Linguaggi ad alto livello
    ●   C, C++, Pascal, Java, …
●   Linguaggi a basso livello
    ●   Assembly, linguaggio macchina
●   Tradurre un programma
    ●   Interpretazione
    ●   Compliazione
Interprete
Compilatore
Il C++ e' un linguaggio compilato
Cos'e' un programma?
●   Un programma e' una sequenza di istruzioni
●   Tipologia di istruzioni
    ●   Input
    ●   Output
    ●   Matematiche
    ●   Test
    ●   Ripetizioni (cicli)
Debugging
●   Errori in compilazione
    ●   Il programma e' stato scritto in modo
        sintatticamente scorretto
●   Errori in esecuzione
    ●   Errore che appare al momento dell'esecuzione del
        programma
●   Errori logici e semantici
    ●   Il programma non fa quello che si vuole
Il nostro primo programma
Il nostro primo programma
                          Include la libreria iostream,
                           ovvero la libreria standard
                                per gestire l'I/O

                          La libreria iostream e' situata
                      nello spazio dei nomi std (standard)

                         E' una funzione che racchiude
                           le istruzioni del programma.
                         Le parentesi tonde () stanno a
                         significare che la funzione non
                                   ha argomenti

           Stampa la stringa Hello World!!
                    su schermo
Se questo programma
e' scritto in un file
pippo.cpp

Allora con
g++ pippo.cpp

Il programma viene compilato
Nel codice oggetto
a.exe     (o a.out)

che viene eseguito con il comando
./a.exe
Possiamo fare di piu'

       Ha come effetto
Possiamo togliere un invio

       stampano entrambi
Commenti al codice
●   I commenti sono una parte di codice sorgente che il compilatre
    ignora
    ●   Una riga di commento inizia con //

                                             Produce

●   E' buona norma commentare il codice per renderlo piu' leggibile
Valori
●   Valori
    ●   Stringhe (ad esempio “Hello World!!”)
    ●   Numeri (ad esempio 17)

    ●   Caratteri (come 'a' oppure 'b' oppure '}')

●   Che differenza c'e' tra “5”, '5' e 5?
Tipi di dato
●   Un tipo e' una coppia
    ●   Insieme di valori
    ●   Operazioni definite su questi valori
●   A cosa servono i tipi
    ●   danno un'indicazione su come interpretare
        sequenze di bit
Il tipo intero
●   Keyword: int
●   Valori: 0,2,­5...
●   Operazioni:
    ●   Aritmetiche
        + (somma) – (sottrazione)
        * (moltiplicazione) / (divisione intera) % (resto)
    ●   Confronto
        == (uguale) != (diverso) = (maggiore uguale) > (maggiore)
●   Rappresentazione interna: complemento a 2 a 4 byte
Esempio

 Stampa
Altri tipi di dato predefiniti
●   I reali
●   I caratteri
●   I booleani
●   Il tipo vuoto (void)

●   il tipo stringa di caratteri alla C
I reali
●   Il C++ utilizza 2 tipi di valori reali
    ●   Il double e il float
    ●   Entrambi usano una rappresentazione a virgola mobile
         –   Il double occupa 8 byte mentre il float occupa 4 byte
    ●   Valori
         –   12.5 e 12.5e2 (12.5 * 102) sono double
         –   12.5f e' float
    ●   Operazioni
         –   Aritmetiche e di confronto
         –   Le stesse di int (O NO???)
Overloading (sovraccaricamento)
Sono operazioni diverse anche se sono utilizzati gli stessi
simboli

5 + 2 → + del tipo int
5.2 + 2.4 → + del tipo double

Questo fenomeno si chiama overloading

Il compilatore usa l'operatore giusto a seconda del tipo degli
operandi
Il tipo booleano
●   Keyword: bool
●   Valori: true, false
●   Operazioni
    ●   Logiche
        –   && (and) || (or) ! (not) …
●   In C++ i booleani sono rappresentati internamente come
    interi
    ●   false e' rappresentato da 0
    ●   true e' rappresentato da 1 oppure qualunque valore diverso
        da 0
Esempi

                   Produce
Produce
I caratteri
●   Keyword: char
●   Valori: 'a', '2', ',' , '\n' (invio), '\t' (tabulazione),...
●   Rappresentazione: codifica ASCII estesa (2 byte)
●   Operazioni
    ●   Le “stesse” di int
Esempio

                    Confrontate le
                    codifiche
                    ASCII dei vari
Produce             caratteri con i
                    numeri in
                    output
Il tipo vuoto (void)
●   Non ha valori
●   Non ha operazioni
●   Serve a rappresentare l'assenza di valori (al
    momento giusto lo useremo)
Variabili
●   Una locazione con un nome, che contiene un
    valore
●   Dichiarazioni di variabili

●   Assegnamento
Diagramma di stato
Variabili
●   Ogni variabile ha un l­valore ed un r­valore
●   L­valore: l'indirizzo di memoria RAM in cui e'
    memorizzata la variabile
●   R­valore: il dato memorizzato nella variabile
    ovvero il contenuto della cella di memoria RAM
    il cui indirizzo e' dato dall'l­valore della variabile.
●   Ricordatevi di queste nozioni: ci torneranno utili!
Stampare variabili in output

       Stampano entrambi
Altri esempi

Produce             Produce
Conversioni
●   Che succede se tento di assegnare ad una
    variabile di tipo reale un valore o una variabile
    di tipo intero?
    ●   Di solito il C++ consente le conversioni che non
        causano perdita di informazione
●   Nell'altro verso, verrebbe segnalato un errore in
    compilazione
Cast
●   Se si vuole forzare comunque la conversione, si
    utilizza l'operatore di cast

●   Il cast effettua un troncamento
    ●   Il valore di x sara' 5
Input e Output

Vediamo l'esecuzione
Esercizi
●   Scrivere un programma che dati due numeri
    interi in input, stampa il loro prodotto
●   Scrivere un programma che dato un carattere,
    stampa il carattere immediatamente precedente
    al carattere dato nella codifica ASCII
●   Scrivere un programma che dati due numeri
    reali, stampa la somma dei due numeri
Allo scopo di scrivere programmi utili, e' spesso
  necessario cambiare il comportamento del
    programma a seconda del verificarsi di
            determinate condizioni
Istruzioni condizionali
if(exp­bool){            if(exp­bool){
     C1                       C1
}else{                   }
     C2
}
L'istruzione if
●   Condizione
    ●   L'espressione tra parentesi
    ●   Se e' vera, il blocco tra parentesi viene eseguito
L'istruzione if – then – else
●   Condizione
    ●   L'espressione tra parentesi
    ●   Se e' vera, viene eseguito il primo blocco
    ●   Se e' falsa, viene eseguito il secondo blocco
Esempio
Puoi anche leggere