Lezione 2
Lezione 2
Ripasso Costrutti C e C++ - II

In questa seconda lezione continuiamo il ripasso dei costrutti C e C++. In particolare vedremo alcuni esempi concreti dell'utilizzo del namespace, del significato di diversi aspetti delle variabili: locali, globali e quelle definite statiche. Infine costruiremo una struttura C e proveremo ad utilizzarla per immagazzinare un vettore di numeri che ordineremo usando la funzione scambia vista nella prima lezione.

ESERCIZIO 2.0 - Utilizzo del namespace:
Costruiamo un codice in cui definiamo un namespace chiamato math in cui definiamo alcune variabili che corrispondono ai numeri da 1 a 9. Inoltre definiamo al suo interno alcune funzioni che implementano le operazioni di somma e sottrazione (tra interi). Definiamo poi un altro namespace chiamato smath in cui abbiamo variabili con gli stessi nomi del primo namespace ma inizializzate con valori diversi e nel quali sono invertite le operazioni di somma e sottrazione. Proviamo a compilare il codice senza specificare esplicitamente i namespace, con solo uno dei due namepace e con entrambi i namespace e verificare il risultato.

Brevi Richiami

Struttura del Programma

ESERCIZIO 2.1 - Variabili Statiche (da consegnare):
In questo esercizio implementiamo un semplice codice per capire il significato e l'utilizzo di variabili statiche e globali. Quando una variabile è definita static il suo valore viene preservato per successive chiamate delle stessa funzione.
Inserire nelle funzioni di scambio implementate nella lezione 1 un contatore che si incrementa ogni volta che avviene uno scambio, e stampare il numero di scambi totali realizzati fino a quel momento.
Modificare il programma principale in modo che effettui 10 scambi per ogni funzione: come cambiano i risultati se la variabile è stata definita static o meno?
Infine si può aggiungere un contatore globale che viene incrementato da tutte le possibili funzioni di scambio. Per accedere a questo contatore possiamo poi aggiungere una funzione a Scambia.h, chiamabile dal main.


Brevi Richiami

Esempio di codice


ESERCIZIO 2.2 - Selection sort (da consegnare):
È dato un file /home/comune/labTNDS_aa1112_materiale/lezione2/data.txt che contiene 1E6 valori.
Il programma riempie un array di N posizioni con i primi N valori letti dal file e ordina il vettore usando l'algoritmo selection sort.
N ed il nome del file sono passati al programma da riga di comando.
Si richiede di stampare su file l'array prima (before.dat) e dopo (after.dat) l'ordinamento.
Provare ad eseguire il codice variando N, da qualche centinaia a qualche decina di migliaia e valutarne il
tempo di esecuzione.

Brevi Richiami
Struttura del programma

La struttura Vettore

Passaggio di input da linea di comando

Tempo di esecuzione (approccio 1)

Tempo di esecuzione (approccio 2)

Back to Home Page