Il vero e proprio percorso comincia da qui dopo aver visto la potenzialità del framework Flutter.
Comincio con le definizioni classiche.
Ambiente di sviluppo: dartpad.dev
I Esempio – stampa a video “Hello Word”
void main() {
print("Hello word");
}
Si nota subito che se si sbaglia a digitare il codice subito interviene l’interprete on line, non serve compilare!
Non si deve includere alcuna libreria per scrivere in output.
II esempio – costrutto if then else
void main() {
int numero = 5;
if (numero > 0) {
print("Il numero è positivo");
} else {
print("Il numero è zero o negativo");
}
}
non esiste la parola then come in altri linguaggi
III esempio – costrutto while
void main() {
int numero = 1;
while (numero <= 5) {
print('Numero: $numero');
numero++;
}
print('Fine ciclo');
}
IV esempio costrutto for
void main() {
// Ciclo for che conta da 1 a 5
for (int i = 1; <= 5; i++) {
print('Numero: $i');
}
}
V esempio gestione vettore e matrici molto simile a Python
void main() {
// Creazione di un "vettore" (lista) di interi
List<int> numeri = [10, 20, 30, 40];
// Aggiungere un elemento
numeri.add(50);
// Accedere a un elemento (indice parte da 0)
print(numeri[0]); // 10
// Modificare un elemento
numeri[1] = 25;
// Ciclo for per stampare tutti gli elementi
for (int n in numeri) {
print(n);
}
// Lunghezza del vettore
print("Lunghezza: ${numeri.length}");
}
void main() {
// Definisco una matrice 3x3
List<List<int>> matrice = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
// Accedere a un elemento: riga 1, colonna 2 (indice da 0)
print(matrice[1][2]); // 6
// Modificare un elemento
matrice[0][0] = 10;
// Stampare tutta la matrice
for (var riga in matrice) {
print(riga);
}
}
VI esempio casting
Di fatto come in Java ma anche in Python ogni input è considerato string, successivamente con l’operazione di casting si arriva a definire il tipo di dato:
// Definizione della funzione
void saluta(String nome) {
print('Ciao, $nome!');
}
void main() {
// Chiamata della funzione
saluta('Francesco');
}
void main() {
String numeroStringa = "123";
int numeroIntero = int.parse(numeroStringa);
print(numeroIntero); // 123
print(numeroIntero.runtimeType); // int
}
void main() {
// Numero decimale (con la virgola)
double numeroDecimale = 3.14159;
print('Numero decimale: $numeroDecimale');
// Numero esponenziale (notazione scientifica)
double numeroEsponenziale = 1.23e4; // equivalente a 1.23 * 10^4 = 12300
print('Numero esponenziale: $numeroEsponenziale');
// Altro esempio di $esponenziale negativo
double piccoloNumero = 5.67e-3; // 5.67 * 10^-3 = 0.00567
print('Piccolo numero: piccoloNumero');
}
Come ultimo passo si noti il concetto di funzione.
// Definizione della funzione
void saluta(String nome) {
print('Ciao, $nome!');
}
void main() {
// Chiamata della funzione
saluta('Francesco');
}
Per chi è abituato a programmi compilati si nota che la definizione di funzione si ha prima del main() se si usa la piattaforma on line.
Ecco un altro esempio di funzione da cui poi definisco i vari tipi di funzione:
int somma(int a,int b) {
int c;
c= a + b;
return (c);
}
void main() {
int x = 3;
int y = 4;
int z = somma(x,y);
print("La somma risulta $z");
}
si possono definire anche le funzioni dopo il main() quando si usa dart all’interno del Visual Studio Code esattamente come le funzioni prototipo in C++.
L’uso di $z solo quando vi è una stringa al cui si mette la variabile con il numero.
I tipi di dato in dart sono i seguenti:
int, double, num che contiene dia gli int che i double, string e bool
Tipi complessi:
list, set, map.
Esempi di variabile globale:
// Variabile globale
int counter = 0;
void increment() {
counter++;
}
void main() {
print(counter); // 0
increment();
print(counter); // 1
}