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 }