Sei sulla pagina 1di 21

Laboratorio II I modulo

Lezione 1
Introduzione a C++
Sorgente ed eseguibile
necessario avere ben presente la distinzione tra:
Codice Sorgente: versione leggibile dagli esseri umani
Codice Eseguibile: versione che il PC pu leggere ed eseguire

Il compito di trasformare il primo nel secondo assolto dal


compilatore, nel nostro caso c++ (o g++)
Come scriviamo il Codice Sorgente?
Editor di testo (Gedit, Emacs, Kate, Vim...)
Come lo compiliamo?
c++ -o <nome eseguibile> <nome_sorgente>

2
Il mio primo programma C++
Commenti ignorati dal compilatore, molto Inclusione di header (libreria): molte funzioni di
utili per il programmatore. Altro metodo, cui avremo bisogno sono contenute in librerie
usare //, ma vale solo per una riga! messe a disposizione dal compilatore

Dichiarazione della funzione principale,


obbligatoria. Ogni programma inizia
chiamando main. Preceduto da
dichiarazione del tipo di valore ritornato
(int in questo caso)

std::cout chiamata a cout


(console output) contenuta nelle librerie
standard std

<< operatore di output

This... stringa di testo

Termina il programma e ritorna il valore 0 (intero) al ; tutte le istruzioni terminate dal


processo che ha invocato il programma stesso punto e virgola
(tipicamente il sistema operativo)
3
Compiliamolo e eseguiamolo
Compiliamo ed avviamo da terminale, cos:

Compilazione: avviene con il comando c++ (o


g++). Il parametro -o specifica il nome del file
eseguibile che deve essere creato dal processo
di compilazione.

Una volta compilato il programma pu essere


eseguito richiamando il nome dell'eseguibile
preceduto da ./

4
Un programma pi completo...
Provate il seguente programma:

Operatore di input >>


Funzione endl

5
Ordine!
SINTASSI: insieme di sane abitudini, oltre alla scrittura corretta
del codice.

Ad esempio:
indentare il codice
commentare il codice (per se stessi e per gli altri)
scegliere un modo coerente di scrivere il codice (parentesi graffe
a capo o non a capo, spaziature...)
scegliere nomi lunghi ed esplicativi per le variabili

6
Le variabili
Quantit di interesse si gestiscono come variabili
Diversi oggetti sono gestiti da
diversi tipi (int, float, char...)
Una variabile l'istanza di un
tipo (num1 una istanza di int)
Le normali operazioni che ci si
aspetta sono definite sui tipi
Si possono creare vettori di un
tipo di variabili, chiamati array
La lista degli oggetti di un array
occupa una zona contigua della
memoria
La dimensione di un array una
costante

7
I tipi delle variabili

8
Gli operatori
Avete a disposizione diversi operatori definiti in c++:
operatori aritmetici: +, -, *, /, %
operatori di incremento e decremento: ++, --
operatori logici e relazionali: >, >=, <, <=, ==, !=, &&, ||, !

Fate sempre attenzione alla precedenza tra operatori...

Pialta !
Pialta ++ -- > >= < <=
/*% == !=
Pi bassa +- &&
Pi bassa ||
Se avete dubbi... fate uso delle parentesi nelle espressioni
matematiche!

9
Suggerimenti e esercizi
Attenzione: durante le operazioni matematiche necessario
prestare attenzione alla conversione tra tipi delle espressioni
aritmetiche:
in una operazione tra tipi diversi, tutti gli operandi vengono
convertiti al tipo pi grande prima di compiere l'operazione.
Potete utilizzare, se necessario, un cast tra tipi. La sintassi
generica : (tipo) espressione.

Ad esempio, se abbiamo int x = 1:


x / 2 restituir un tipo int come risultato (=0)
(float) x / 2 restituir un tipo float come risultato (=0.5)

10
Strutture di controllo: for

Il ciclo viene impostato in tre parti:


definendo index, che esiste soltanto nello scope del ciclo;
stabilendo la condizione di uscita (il ciclo viene eseguito fintanto che questa
condizion vera, ovvero index < numArg);
dettando l'istruzione di incremento della variabile di controllo.

11
Strutture di controllo: while

Le istruzioni nello scope vengono eseguite finch index < numArg.


La variabile index esiste anche al di fuori del ciclo
Attenzione!
la variabile di controllo va inizializzata prima dell'inizio del ciclo
la variabile di controllo va incrementate all'interno del ciclo

12
Strutture di controllo: if

Se l'espressione di controllo vera, viene eseguita la sequenza


di istruzioni nel primo scope (le parentesi {})
Altrimenti viene eseguita la sequenza dopo else
La presenza di else non obbligatoria!

13
Strutture di controllo: switch

La variabile valore
gi definita
Per ogni possibile
valore c' un'istruzione
da eseguire
Il default viene eseguito se nessuno dei casi precedenti vero
Attenzione:
L'istruzione break necessaria per terminare subito lo switch
14
Operazioni matematiche
Operatori matematici non presenti nelle librerie standard sono
forniti dalle librerie matematiche

necessario includere la libreria cmath per avere a


disposizione le funzioni necessarie
Le funzioni matematiche sono chiamate nel programma

15
Le funzioni
Serie circoscritte di istruzioni possono essere isolate in funzioni
La funzione si definisce prima
del programma principale
(main)
Pu avere diversi oggetti come
input ed (al pi) un solo
oggetto output
All'interno del programma
principale viene chiamata
secondo il prototipo dichiarato

16
Divisione in diversi file
Per evitare di avere programmi troppo lunghi e per semplificare la
vita al compilatore, di solito le funzioni sono impacchettate in
librerie
esempio04.h

Contiene le definizioni di variabili e funzioni


(i prototipi).
Le istruzioni #ifndef, #define, #endif
servono per evitare di duplicare le
definizioni se il file viene usato pi volte.
esempio04.cc

Contiene l'implementazione delle funzioni.


Conosce il prototipo da esempio04.h
attraverso l'istruzione #include (che incolla
il contenuto di esempio04.h dove
chiamata).
17
Uso nel programma principale
Nel programma principale, le funzioni definite nelle librerie sono
utilizzate senza bisogno di implementarle

La grammatica nota dall'inclusione di esempio06.h

L'implementazione viene linkata automaticamente dal c++, che viene


chiamato cos:

18
Le stringhe in C e C++
Le parole sono gestite da vettori di lettere in C
La dimensione della stringa deve
essere scelta con cautela
La funzione sprintf permette di
cambiare il contenuto della stringa
(comprese altre variabili)

In C++ esiste un tipo dedicato, std::string


Per questo necessario includere la libreria:
Non necessario scegliere la
dimensione della stringa
Si possono aggiungere contenuti
alla stringa con l'operatore +

19
Esercizi
Esercizio 1: scrivete un programma che, letti due numeri interi
da terminale, restituisca il loro rapporto.
Esercizio 2: Scrivere un programma che scrive a terminale la
radice quadrata di 2, il cubo di 2 il seno di pigreco/4.
Esercizio 3: Scrivere un programma che chieda all'utente di
inserire un intero a scelta tra 1 e 2, e restituisca a terminale il
valore inserito, o un messaggio di errore in caso di inserimento di
altri interi.
Esercizio 4: Scrivere un programma che, dato un array di n interi
casuali, lo ordini dal pi piccolo al pi grande (suggerimento:
create un array specificando voi alcuni numeri a caso per testare
che l'ordinamento funzioni).

20
Esercizi
Esercizio 5: Scrivere una funzione che calcoli il fattoriale di un
numero intero non negativo.
Esercizio 6: Scrivere la funzione fattoriale in modo ricorsivo, cio
facendo in modo che la funzione che calcola il fattoriale chiami se
stessa.
Esercizio 7: Scrivere un programma che richieda all'utente di
inserire il proprio nome, lo memorizzi in una variabile stringa e
quindi usi questa variabile per salutare l'utente con un messaggio
Ciao, NOME!.
Esercizio 8: Scrivere un programma che, data una stringa,
restituisca un conteggio delle lettere in essa presenti (si consiglia di
usare un array con 26 posizioni, una per ogni lettera dell'alfabeto,
inizializzato tutto a zeri scorrere la stringa e incrementare il
contatore della lettera corrispondente).
21

Potrebbero piacerti anche