vuoi
o PayPal
tutte le volte che vuoi
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.
risultato dell’espressione relazionale logica è:
Il - vero se A e B sono uguali
- falso se A e B sono diversi
Operazioni applicabili al tipo carattere
Sul tipo carattere è definito un ordinamento.
Operatori relazionali
Uguale A = = B
Diverso A ! = B
Maggiore A > B
Minore A < B
Maggiore o uguale A > = B
Minore o uguale A < = B
Operazioni applicabili al tipo booleano
La congiunzione AND &&
La disgiunzione OR ||
La negazione NOT !
Operatori di incremento e di decremento (operatori unari, con un solo operando)
i = i + 1 i + + Notazione postfissa
i = i + 1 + + i Notazione prefissa
i = i - 1 i - - Notazione postfissa
–
i = i 1 - - i Notazione prefissa
Operatori di assegnazione composta
A = A <op> B diventa A <op> = B
Programmazione strutturata
Istruzione di selezione IF THEN
Permette di decidere quale azione eseguire tra varie alternative.
Viene valutata una condizione espressa da un’espressione logica.
dell’insieme booleano:
Il risultato della valutazione è un valore
- se è vero, si entra nel costrutto (THEN)
- se è falso, non vengono eseguite le istruzioni del blocco
Istruzione di selezione IF THEN ELSE
Fornisce un’azione alternativa se la condizione dell’if non è vera.
valutata una condizione espressa da un’espressione logica.
Viene
Il risultato della valutazione è un valore dell’insieme booleano:
- se è vero, si eseguono determinate istruzioni (THEN)
- se è falso, vengono eseguite altre istruzioni (ELSE)
Nesting degli IF THEN ELSE
La parte THEN e la parte ELSE possono a loro volta contenere delle istruzioni di selezione.
Struttura di selezione a più vie SWITCH CASE
Consente di implementare una selezione a più vie.
Il costrutto valuta la condizione intera passata a SWITCH.
Poi, rimanda lo svolgimento del programma al
blocco in cui il parametro di CASE ha lo stesso
valore di quello dell’istruzione SWITCH.
Se il blocco termina con break; allora il programma
esce dallo SWITCH, altrimenti vengono eseguiti anche
i blocchi seguenti fino ad un break o fino alla fine.
Il break forza l’uscita dal costrutto: consente di
interrompere il flusso di esecuzione all’interno
del costrutto per far tornare il flusso di esecuzione
al livello superiore.
Se nessun blocco corrisponde ad un valore uguale
a quello dell’istruzione dello SWITCH,
viene eseguito il blocco in default.
Ciclo a conteggio FOR
Il ciclo FOR opera con una iterazione della sequenza che continua per un numero di volte predeterminato.
inizializzazione c è il contatore che deve essere inizializzato
(deve essere specificato il numero di cicli che deve essere fatto):
si conta dal valore iniziale vi al valore finale vf.
condizione Il FOR è un ciclo a condizione iniziale.
Si controlla di non avere già eseguito il numero di iterazioni
richieste (si controlla che il contatore non sia già maggiore del
valore finale; se lo è, si esce dal costrutto altrimenti la sequenza
viene ripetuta). Quindi, la sequenza del blocco viene eseguita
solo se il valore del contatore è minore del valore finale.
variazioni dopo aver eseguito la sequenza, il contatore viene
modificato (viene incrementato o decrementato) e, a seconda
della condizione, se rispettata, la sequenza viene ripetuta.
Ciclo a condizione iniziale WHILE
Il ciclo WHILE esegue un blocco di istruzioni fin quando la condizione risulta vera.
Inizialmente, viene valutata la condizione R:
- se risulta falsa, la sequenza S non viene eseguita
- se risulta vera, la sequenza S viene eseguita
Al termine dell’esecuzione del blocco, si rivaluta la condizione.
Non si sa a priori quante iterazioni verranno fatte.
Ciclo a condizione finale DO WHILE Il ciclo DO WHILE esegue un blocco di istruzioni
almeno una volta per poi valutare la condizione.
Viene prima eseguita la sequenza.
Sicuramente la sequenza viene eseguita almeno una volta.
Dopo aver eseguito la sequenza, si controlla la condizione:
- se risulta falsa, la sequenza S non viene eseguita
- se risulta vera, la sequenza S viene nuovamente eseguita
Fare un programma con tipi strutturati
Array
Operazioni
Dichiarazione di array
<tipo> nome_array [dimensione] per VETTORE
<tipo> nome_array [dimensione][dimensione] per MATRICE
Ci sono tante coppie di parentesi quadre quante sono le dimensioni.
Inizializzazione di array
<tipo> nome_array [dimensione] = {…, …} = {…, …}
<tipo> nome_array [dimensione][dimensione]
(gli elementi della matrice si inseriscono riga dopo riga)
Per le operazioni sugli elementi degli array si utilizzano gli indici.
Si hanno tanti indici quante sono le dimensioni dell’array (i per i vettori, i e j per le matrici).
Gli indici indicano la posizione dell’elemento nell’array perché la funzione d’accesso è per posizione.
Gli operatori di flusso di ingresso e di uscita possono essere utilizzati solo sui singoli elementi.
Ingresso
cin >> vettore[i]
cin >> matrice[i][j]
Uscita
cout << vettore[i]
cout << matrice[i][j]
Scansione di array Vettore
Matrice
Stringhe
La stringa è una sequenza di caratteri dotata di tappo (termina con il carattere speciale \0).
#include <…>
Usare le librerie attraverso il comando 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
- strlen (stringa): restituisce la lunghezza della stringa escluso il terminatore
tra parentesi si inserisce la stringa di cui si vuole conoscere la dimensione
- 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
cin.ignore() dice di ignorare il contenuto del bus di tastiera in cui sono stati memorizzati gli invii che sono
stati dati quando è stato inserito il numero intero
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)
parametri è per indirizzo (si lavora nell’area di memoria del chiamante)
Si mette & se lo scambio dei
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
#include “…”
Usare le file.h attraverso il comando e using namespace std;
Chiamare il sottoprogramma
il sottoprogramma con un’istruzione semplice.
Si chiama
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 #include <…>
Usare le librerie attraverso il comando 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 del file”)
variabilefile.open (“nome 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 open(“nomefile”, ios::app)
Per evitare che il contenuto di un file venga cancellato, si usa
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
Scansione di una lista
- Risolvere un problema di matematica
- Riassumere un testo
- Tradurre una frase
- E molto altro ancora...
Per termini, condizioni e privacy, visita la relativa pagina.