C++ - tipi di dato, operatori aritmetici, espressioni
Struttura di un programma -> è costituito di funzioni
int main()
Blocco di istruzioni
return 0;
main è la più importante perché esegue tutto, anche le altre funzioni che lo invoca
- Ha un nome: Main
- Ha dei parametri input nessuno() è vuoto
- Tipo di ritorno: return 0 cioè dà un risultato intero e questo sarebbe int
Se dà 0 allora tutto ok sennò c'è un problema
int è un tipo di dato
- Corpo
blocco: sequenza di istruzioni chiusi tra { }, possono essere annidati
- Commenti: in C/C++ si scrive tra due limitatori /* ... */
C++ // commento su una riga
Ogni volta che vai a capo ti sposti a destra ma per una questione per capire meglio. Puoi scrivere anche su una riga
Tipi
Tipi base:
- Interi con segno + - int insieme Z
- Booleani bool insieme {true, false}
- Carattere char 'a,b,c, ,;,:,*' bisogna mettere l'apice ('')
- Numeri con la virgola float, double
- Puntatori
- Stringhe sequenze di caratteri
Per rappresentare le stringhe dei tipi servono i bit
- 1 bit
- n bit 2m
- 1 bit 0/1
- 2 bit 00/01/10/11
- 3 bit 8
- 4 bit 16
così:
Per rappresentare un booleano (vero, falso) serve un bit
C++ - tipi di dato, operatori aritmetici, espressioni
Struttura di un programma -> è costituito di funzioni
int main()
Blocco di istruzioni
{......
return 0;
}
main è la più importante perché esegue tutto, anche le altre funzioni che li invoca
- Ha un nome: Main
- Ha dei parametri: input nessuno() è vuoto
- Tipo di ritorno: return 0 cioè dà un risultato intero e questo sarebbe int
Se dà 0 allora tutto ok sennò c'è un problema
int è un tipo di dato
- Corpo
blocco: sequenza di istruzioni chiusi tra { }, possono essere annidati
- Commenti: in C/C++ si scrive tra due limitatori /* ... */
C++ // commento su una riga
- Ogni volta che vai a capo ti sposti a destra ma per una questione per capire meglio. Puoi scrivere anche su una riga
- Tipi.
Tipi base:
- Interi con segno +- int insieme Z
- Booleani bool insieme {true, false}
- Caratteri char 'a, b, c, ;, :, ?, * bisogna mettere l'apice (')
- Numeri con la virgola float, double
- Puntatori
- Stringhe sequenze di caratteri "..."
Per rappresentare le stringhe dei tipi servono i bit
- 1 bit 0/1
- 2 bit 00/01/10/11
- 3 bit 8
- 4 bit 16
- ... così:
Per rappresentare un booleano (vero, falso) serve un bit
Operazioni su booleani
== uguaglianza a==b
vale vero se A e B hanno stesso valore
vale falso se A e B non hanno stesso valore
! (not) !b
vale vero se B è falso
Falso se B è vero
&& (and) a&&b vero se e solo se sia a che b sono veri
|| (or) a||b vera se almeno uno tra a e b è vero
!= diverso a!=b vera se e solo se a!=b
Variabile
Dichiarazione di variabile dice al programma che:
- Da ora in poi esiste una variabile di un certo tipo con un certo nome
es. int i
float soldi che ho in tasca identificatori
tipi
Nella memoria si crea scatole
32bit i
float soldi che ho in tasca
32bit
Dichiarazione con indicazione
es. int i =10; // da qui in poi esiste una vari di tipo intero che si chiama i e il cui valore iniziale è 10
Istruzioni
Assegnazione
Assegnazione
costituita da 3 elementi
<variabile> = <espressione>; // specifica di sintassi
es u = 17;
Semantica: si valuta l'espressione
il risultato viene assegnato alla variabile
es.
int main(){ int u, j, ris;
i = 10; j = 45;
ris = j/i;
return 0;}
int 10
int 45
int 4 ris
Output con cout
cout serve per mostrare una parola o un numero
es. cout << ... << ... << ...;
cout << 3 << ' ' << 5 << '\n';
cout << "a, " << u << endl;
Costanti
Costanti
se un dato non deve cambiare nel corso del programma
Si mette const nomeTipo identificatore = valore;
es. const string NAME = "Andrea";
i nomi degli identificatori si scrivono con la maiuscola
Variabili
Variabili
Può cambiare durante il programma
int alpha;
float rate;
int uu variabile
u = 10
Operazioni di input/output
- Lettura dei dati: standard input
- Stampare valori di output
Per usarli serve una libreria:
#include <iostream>
Esistono due tipi di comunicazione:
- Output cout → cout << "ciao mondo!" << endl;
- Input cin → cout << "ciao mondo!" << endl;
endl: identificatore che indica il fine
Scelte condizionali
Scelte condizionali
if (...)
se ... allora ...
if (...)
else
switch (...) { }
di solito si usa per fare menu
#include <iostream>
#include <string>
using namespace std;
int main() {
char a, b;
cout << "Inserisci a" << endl;
cin >> a;
cout << "Inserisci b" << endl;
cin >> b;
if (a == b)
cout << "Uguali" << endl;
else
cout << "Diversi" << endl;
return 0;}
Sort, ordinamento di sequenze
- Sort
- Ricerca: ricerca un elemento e ti dice dove sia
- Inserimento di un elemento: se il mio array è pieno fino ad un certo punto e voglio inserire un mezzo, devo spostare gli elementi a destra e ci sarà uno spazio vuoto
- Eliminazione di un elemento in mezzo
Sort
A [2 17 8 4 92 1 -7 18 14 82 -21 0]
1. ordino a due a due fino a quando sono ordinati
2|2|4|8|5|-1|-7|11|9|44|82|-21|9|23|1
questo è apposto
ripeto l'ordine a due a due
ma fermandomi suo prima
così poi il penultimo è apposto.
Questo lo fai fino al 2o perché così anche il primo è apposto
Swap
Swap:
trovo il valore minore (-24)
e poi uso temporanea (temp)
temp = a a=2
a = b
b = temp
in array
temp = A[i]
A[i] = A[j]
A[j] = temp
Stringhe
Concatenare
Stringhe
Concatenare
string nome = "Mario"
string cognome = "Rossi"
string Completo = nome + cognome
cout << nomeCompleto
Così uscirebbe MarioRossi attaccato
allora:
string Completo = nome + " " + cognome
Lunghezza di una stringa
Quanti caratteri ha una stringa?
string var = "sasso";
cout << "La stringa ha una lunghezza di :" << var.size();
Output: la stringa ha una lunghezza di 5
Accedere ad un solo carattere
Accedere ad un solo carattere
string saluto = "ciao"
cout << saluto[0];
Output = C
questo mostra il 1o carattere
In input
In input
string nome;
cout << "Inserisci il tuo nome:";
getline(cin, nome);
cout << "Il tuo nome è:" << nome;
getline serve per far scrivere due parole e non mettere il cin, scrivere 2 parole perché?
Se non ci fosse il separatore spazio tra Andrea e Fresi non capirebbe
Type casting
Type casting
static_cast<tipo>(variabile)
serve per convertire da un tipo all'altro:
- Se metto:
int x = 65
static_cast<char>(x)
allora a schermo uscirà "A" perché preleva la tabella ASCII
oppure da stringa a:
- Intero: stoi cioè string to int:
string x = "65"
cout << stoi(x)
allora a schermo ci sarà 65 come numero
Da stringa a double e mi fa vedere le virgole:
string x = "65"
cout << fixed << stod(x) + 5
a schermo ci sarà 70.00000
Fixed serve per mostrare le cifre dopo la virgola anche se sono zeri
stod string to double
+5 per far vedere che si può mettere un operatore"
Output il nome di tipo di dato
int x = 65
float y = 3.99
cout << typeid(y).name()
a schermo uscirà: