Programmare
Programmare
Istruzione di input
cin >> variabile
Istruzione di output
cout << espressione
Se l’espressione è una frase, essa si inserisce tra i doppi apici: cout << “espressione”;
Se l’espressione è una variabile, essa si inserisce singolarmente: cout << espressione;
ATTENZIONE!
A = B ASSEGNAZIONE
Si assegna ad A il valore di B: nel valore di A viene copiato il valore di B.
A = = B OPERATORE RELAZIONALE DI CONFRONTO
Non si modifica né A né B: si confrontano i due valori.
Il risultato dell’espressione relazionale logica è:
- vero se A e B sono uguali
- falso se A e B sono diversi
Vettore
Matrice
Stringhe
La stringa è una sequenza di caratteri dotata di tappo (termina con il carattere speciale \0).
Usare le librerie attraverso il comando #include <…> e using namespace std;
- cstring (libreria che fornisce le funzioni per lavorare sulle stringhe)
In libreria si hanno a disposizione gli operatori di ingresso e di uscita del tipo strutturato della stringa.
L’operatore di flusso può lavorare sulla stringa ma ha due limiti fondamentali:
- considera il blank (spazio) come fine della stringa
- non può controllare se la dimensione della stringa immessa supera il limite massimo consentito
Quindi si utilizza la funzione di libreria cin.getline (stringa, dimensione massima) che:
- consente di inserire una stringa contenente il blank (spazio)
- consente di controllare l’ingresso limitandolo al numero massimo di caratteri possibile
se vengono introdotti più caratteri di quelli possibili, la stringa viene interrotta
Operazioni
- strcmp (stringa, stringa): confronta due stringhe
viene fatto il confronto in maniera lessicografica
- strcpy (stringa che si vuole modificare, stringa che viene copiata): copia due stringhe
la stringa di sinistra contiene la copia (destinazione), la stringa di destra viene copiata (origine)
questa funzione non controlla se la stringa riesce a contenere la copia
- strcat (stringa concatenata, stringa che viene unita): concatena due stringhe
tra parentesi vengono inserite le due stringhe che devono essere concatenate
la stringa concatenata viene copiata nella stringa di sinistra
questa funzione non controlla se la stringa riesce a contenere la stringa concatenata
Record
I record sono implementati mediante il costrutto STRUCT.
Gli elementi del record si chiamano campi; ogni campo deve essere univocamente identificato con un nome.
La funzione d’accesso è per nome e richiede due operandi:
- a sinistra del punto, deve esserci il nome del record di cui si vuole richiamare il campo
- a destra del punto, deve esserci il nome del campo a cui si vuole accedere
Sottoprogrammi
Per gestire un problema complesso, bisogna ridurne la complessità dividendolo in problemi.
Bisogna prima capire quali problemi dipendono da altri per risolverli nel giusto ordine.
1
Dichiarazione della funzione: prototipo nel file di libreria (file.h)
- il tipo del valore ritornato
- nome della funzione
- il numero e il tipo dei parametri formali (i nomi non sono necessari)
Si mette & se lo scambio dei parametri è per indirizzo (si lavora nell’area di memoria del chiamante)
Si può usare const che trasforma una variabile in una costante in modo che non venga modificata
2
Implementazione della funzione nel sottoprogramma (file.cpp)
- INTESTAZIONE (INTERFACCIA)
- Tipo del risultato (funzioni) o void se non c’è risultato (procedure)
- Nome della funzione
- Lista parametri formali (informazioni generali) o void se non ci sono parametri
- BLOCCO
- Delimitato da parentesi graffe {}
- Dichiarazione di variabili e istruzioni che devono essere eseguite
- return (<espressione>) solo se la funzione ritorna un risultato (non serve nel caso di void)
3
I sottoprogrammi sono sezioni di codice che vengono eseguiti dopo essere stati chiamati.
Il sottoprogramma può essere chiamato sia dal programma principale sia da un altro sottoprogramma.
Istruzione di chiamata al sottoprogramma
Usare le file.h attraverso il comando #include “…” e using namespace std;
Chiamare il sottoprogramma
Si chiama il sottoprogramma con un’istruzione semplice.
Una chiamata di funzione è costituita dal nome della funzione e dalla lista dei parametri effettivi
(informazioni specifiche al programma che si sta eseguendo separate da virgola).
File
FILE DI TIPO TESTO
1
Definizione di variabili
Usare le librerie attraverso il comando #include <…> e using namespace std;
- fstream (libreria che fornisce le funzioni per lavorare sui file)
ifstream in_file per file in lettura (input file)
ofstream out_file per file in scrittura (output file)
2
Apertura dei file
variabilefile.open (“nome del file”) apre di default un file testo in lettura o in scrittura
La funzione open invocata su uno stream di tipo:
- ifstream, fallisce se il file specificato non esiste
- ofstream
- crea il file specificato se il file non esiste
- cancella il contenuto del file se è già esistente
Per evitare che il contenuto di un file venga cancellato, si usa open(“nomefile”, ios::app)
Questa istruzione consente di scrivere appendendo il nuovo contenuto a quello già esistente
3
Un file può essere letto o scritto come uno stream tramite gli operatori << e >>
Lettura
in_file>>x;
Scrittura
out_file<<x;
4
Chiusura dei file
file.close ()
5
Controllo fine file
!file.eof()
Schemi algoritmici
Acquisizione di una lista
Scompattamento di un array
eliminazione di un elemento fornito dall’utente con sottoprogramma che
- fa una ricerca incerta per trovare la posizione dell’elemento
- se trova l’elemento, sfruttando la posizione dell’elemento, lo elimina dal vettore
Inversione
Concatenamento
Bubblesort
Acquisizione di una lista con informazione tappo