Débute avec le langage Dart

INTRODUCTION

Dart est un langage de programmation optimisé pour les applications sur plusieurs plate-formes. Il est développé par Google et est utilisé pour créer des applications mobiles, de bureau et web. Dart est un langage orienté objet, basé sur la classe. Il existe plusieurs environnements permettant de programmer dans le langage Dart tels que l’invite de commande, l’environnement web, un terminal smartphone. (source : WIKIPEDIA)

Dans la suite de cet article, nous aborderons les notions suivantes :

LES VARIABLES EN DART

Les variables sont, en programmation, des conteneurs dans lesquels on sauvegarde des valeurs qui peuvent être de différents types (Ex: Entier, Réel). Ils sont utilisés dans le programme au cours de son exécution. La déclaration de variable en Dart se fait de la manière suivante :

Dart
type nomDeVariable;

NB : Nous mettrons l’accent, dans cet article, sur les syntaxes de base du code Flutter en ce qui concerne la déclaration des variables. Cependant depuis la version 2.0.0 de Flutter, la notion de null-safety voit le jour.

LES TYPE DES VARIABLES

Le langage Dart offre la possibilité d’utiliser plusieurs types pour typer nos variables. Dart est un langage fortement typé. Cependant, Dart intègre également le mode « soft type » qui permet au programmeur de ne pas donner de type précis à ses variable si il le souhaite. Mais cette dernière pratique est à utiliser avec précotions.

Les “Number”

Les number ou nombres en Dart peuvent être classés en 2 catégories.

  • Les int : entier de taille arbitraire. Le type de données int est utilisé pour représenter des nombres entiers.
  • Les double : nombres à virgule flottante 64 bits (double précision), comme spécifié par la norme IEEE 754. Le type de données double est utilisé pour représenter des nombres fractionnaires (Ex: 2.5).

NB : Le type num est hérité par les types int et double. La bibliothèque dart core permet de nombreuses opérations sur des valeurs numériques.

Exemples :

Dart

int var_name;      // déclare une variable entière
double var_name;   // déclare une variable fractionnaire

//----------------------------------------------------------------

void main() {
  // déclare une variable entière  
  int num1 = 10;                  

  // déclare une variable fractionnaire
  double num2 = 10.50;  

  // affichage des valeurs
  print(num1);
  print(num2);
}

//----------------------------------------------------------------
// sortie dans la console
10 
10.5

Les “String”

Le type de données String représente une séquence de caractères. Une chaîne Dart est une séquence d’unités de code UTF 16. Les valeurs de chaîne dans Dart peuvent être représentées à l’aide de guillemets simples, doubles ou triples. Les chaînes à une seule ligne sont représentées à l’aide de guillemets simples ou doubles. Les guillemets triples sont utilisés pour représenter des chaînes multi-lignes.

Dart
//guillemets simples
String  variable_name = 'value';

// Ou guillemets doubles
String  variable_name = "value"; 

// Ou guillemets triples
String  variable_name = '''ligne1
ligne2
ligne3''';

// Ou 
String  variable_name= """ligne1 
ligne2
ligne3""";

Les “Boolean”

Dart fournit un support intégré pour le type de données booléen. Le type de données booléen en DART ne prend en charge que deux valeurs : vrai ou faux. Le mot-clé bool est utilisé pour représenter un littéral booléen en DART. La syntaxe pour déclarer une variable booléenne dans DART est la suivante :

Dart
bool var_name1 = true;  
// OU  
bool var_name2 = false;

Les collections de donnée « List », « Map »

Les listes

Les listes en Dart, ou encore collection de données indicées, sont des variables dans lesquels vous pouvez stocker une succession de données comme dans un placard et accéder à ces données en précisant l’indice de la donnée à lire comme dans un tableau en javaScript ou PHP. Les listes sont des objets qui peuvent rétrécir ou s’agrandir au cours de l’exécution du programme, on dit qu’ils sont dynamiques.

Déclaration d’une liste en Dart et utilisation :

Dart
//Pour déclarer un tableau vide
List<int> var_name = [];
//NB : ‘int’ étant facultatif

//Ou
var var_name = [1, 2, 3, 4];

//Ajout de l'élément 5 dans la liste var_name
var_name.add(5);

//Affichage du contenu de var_name
print(var_name); //sortie [1, 2, 3, 4, 5]

Plusieurs opérations peuvent être effectuées sur les listes on a :

  • add() : pour ajouter un nouvel élément en fin de liste
  • length : getter pour obtenir la taille de la liste
  • reversed : getter renverser l’ordre des éléments de la liste
  • remove( ) : pour supprimer un élément en précisant l’élément de la liste à supprimer. Etc.
Les “map”

L’objet map est une simple paire clé/valeur. Les clés et les valeurs d’une map peuvent être de n’importe quel type. Une map est une collection dynamique. En d’autres termes, la collection map peut croître et rétrécir tout comme les listes au moment de l’exécution.

Dart
Map<String, dynamic> var_name = { }; //Pour déclarer une map vide
//NB : ‘<String, dynamic>’ et ‘type_valeur’ étant facultatifs

var_name = {‘nom’:John’, ‘prenom’:Doe’};
var_name.addEntries( {‘age’: 12} );
var_name[“tel”] = “07xxxxxxx”;
print(var_name); //sortie {nom: John, prenom: Doe, age: 12, tel: 07xxxxxxxx}

Comme les listes les map peuvent être manipulées avec plusieurs fonctions :

  • addAll() : Ajoute toutes les paires clé-valeur de other à cette map.
  • clear( ) : Supprime toutes les paires de la map.
  • remove( ) : Supprime la clé et sa valeur associée, si elle est présente, de la map. Etc.

LES OPERATEURS

Les opérateurs disponibles en Dart sont :

Opérateurs arithmétiques

OpérateursSignifications
+Addition
Soustraction
-exprMoins unaire, également connu sous le nom de négation (inverser le signe de l’expression)
*Multiplication
/Division
~/Diviser, retour d’un résultat entier
%Obtenir le reste d’une division entière (modulo)
++Incrément
Décrémenter

Opérateurs relationnels

OpérateursDescriptionExemple
>Plus grand(A>B) est faux
<Plus petit(A<B) est vrai
>=Supérieur ou égal(A>=B) est vrai
<=Inférieur ou égal(A<=B) est faux
==Égalité(A==B) est vrai
!=Différent de(A!=B) est faux

Opérateurs logiques

Opérateurs DescriptionExemple
AND ou &&a & bRenvoie un dans chaque position de bit pour laquelle les bits correspondants des deux opérandes sont des uns.
OR ou ||a | bRenvoie un dans chaque position de bit pour laquelle les bits correspondants de l’un ou des deux opérandes sont des uns.
XORa ^ bRenvoie un dans chaque position de bit pour laquelle les bits correspondants de l’un des deux opérandes, mais pas des deux, sont des uns.
NOT~ aInverse les bits de son opérande.

Opérateurs d’assignation

Opérateurdescription
=Assignation
+=Addition et assignation
-=Soustraction et assignation
*=Multiplication et assignation
/=Division et assignation

LES STRUCTURES CONDITIONNELLES

Instructions conditionnelles dans Dart sont classées dans le tableau suivant :

if

Une instruction if consiste en une expression booléenne suivie d’une ou plusieurs instructions.

Dart
void main(){
   if(a == b){
     print("vrai");
   }
}

If…else

Un if peut être suivi d’un bloc else facultatif. Le bloc else s’exécutera si l’expression booléenne testée par le bloc if est évaluée à false.

Dart
void main(){
   if(a == b){
     print("vrai");
   }else{
     print("faux");
   }
}

If…else if 

Le else…if ladder est utile pour tester plusieurs conditions. Voici la syntaxe de la même chose.

Dart
void main(){
   if(a == b){
     print("vrai");
   }else if(a != b){
     print("faux");
   }
}

switch…case

L’instruction switch évalue une expression, fait correspondre la valeur de l’expression à une clause case et exécute les instructions associées à cette case.

Dart
void main(){
 int x = ....;
   switch(x){
      case 1 :
        print("1");
        break;
      case 2 :
         print("2");
        break;
      default :
        print("1");
   }
}

LES STRUCTURES ITERATIVES

Souvent, certaines instructions nécessitent une exécution répétée. Les boucles sont un moyen idéal de faire la même chose. Une boucle représente un ensemble d’instructions qui doivent être répétées. Dans le contexte d’une boucle, une répétition est appelée une itération. La figure suivante illustre la classification des boucles.

Boucles finies

  • Boucle for
Dart
void main() {    
  var obj = [12,13,14];    
  for (int=0; i<= obj.length; i++) {      
      print(obj[i]);   
  } 
}
// Sortie 
12
13
14
  • Boucle for…in
Dart
void main() {    
 var obj = [12,13,14];    
 for (var prop in obj) {       
     print(prop);    
 }
}
// Sortie 
12
13
14

Boucles infinies

  • Boucle while
Dart
while(num >=1) {       
 factorial = factorial * num;       
 num--;    
}
  • Boucle do…while
Dart
do {       
  print(n);       
  n--;    
} while(n>=0);

LES FONCTIONS EN DART

Déclaration et paramètres

Les fonctions sont des sous-programmes. Elles permettent de structurer le code en subdivisant le code en plusieurs parties qui réalisent des actions précises. Les fonctions en Dart sont de la forme :

Dart
//Déclaration de la fonction;
[type_de_retour] function_name (paramètres){
   //Corps de la fonction;
}

On distingue plusieurs type de paramètres :

  • Paramètres positionnels optionnels

Pour spécifier des paramètres de position facultatifs, utilisez des crochets [ ].

Dart
//Déclaration
void afficher([String var1, String var2]){...}

//Appel
afficher();
//ou
afficher("salut");
//ou
afficher("salut", "Les amis");
  • Paramètres nommés optionnels

Contrairement aux paramètres positionnels, le nom du paramètre doit être spécifié lors de la transmission de la valeur. L’accolade {} peut être utilisée pour spécifier des paramètres nommés facultatifs.

Dart
//Déclaration
void afficher({String var1, String var2}){...}

//Appel
afficher(var1: "salut");
//ou
afficher(var1: "salut", var2: "Les amis");

NB : en ajoutant le mot clé « required » devant le type d’un paramètre cette variable devient un paramètre nommé obligatoire.

Dart
//Déclaration
void afficher({required String var1, String var2}){...}

//Appel
afficher(var1: "salut");
//ou
afficher(var1: "salut", var2: "Les amis");

//Erreur
afficher();
//Ou
afficher(var2: "Les amis");

Conclusion

Voici l’essentiel de ce que vous devez, selon moi, savoir sur les bases du langage Dart. Cependant, Dart est un langage orienté objet. Il prend en charge les fonctionnalités de programmation orientées objet (POO) telles que les classes, les interfaces, etc. Une classe en termes de POO est un modèle pour la création d’objets. Cette façon de programmer permet une meilleure structuration du code, augmente sa réutilisabilité ainsi que pleins d’autres avantages. Nous nous y reviendrons plus en profondeur dans un autre article qui lui sera dédié.

En attendant, j’espère bien que vous avez eu du plaisir à me lire. Si vous avez rencontré des problèmes particuliers ou si vous avez des questions, veuillez laisser un commentaire ou me contacter. Enjoy !

16 Comments

  1. This paragraph will help the internet users for building up new blog or even a weblog from
    start to end.

  2. Hi, i believe that i noticed you visited my website thus i came to go back the favor?.I am attempting to to find
    issues to improve my web site!I assume its adequate to make use of a few of your
    concepts!!

  3. I loved as much as you’ll receive carried out right here.
    The sketch is attractive, your authored material stylish.
    nonetheless, you command get got an edginess
    over that you wish be delivering the following. unwell unquestionably come more formerly again since exactly the same nearly very often inside case you shield this hike.

  4. Piece of writing writing is also a excitement, if you know afterward you can write or else it is difficult to write.

  5. Wow that was unusual. I just wrote an really long comment but after
    I clicked submit my comment didn’t appear. Grrrr… well I’m not writing
    all that over again. Regardless, just wanted to say great blog!

    1. Merci bien. Nous sommes ravi que vos articles vous plaisent. N’hésitez pas à le partager et à nous faire des suggestions. Cordialement ????

  6. Hi! Would you mind if I share your blog with my facebook group?
    There’s a lot of people that I think would really enjoy your content.

    Please let me know. Many thanks

    1. Hi, thank you for your appreciation. Yes, you can share the website link with your friends.

  7. I couldn’t resist commenting. Welll written!

    1. Merci, n’hésitez pas à nous faire des suggestions pour améliorer le service. Cordialement.

  8. Hmm iss anyone else experiencfing problems with the imaqges oon this blog loading?

    I’m trying to finnd out iif its a roblem on myy end or iff it’s tthe blog.
    Any responsds would be grwatly appreciated.

  9. Great article! That is the type of info that are meant to be shared across thee
    internet. Disgrace on the seek engines foor now not positioning this poxt upper!
    Comme on over and sewk advic frdom my site . Thank you =)

  10. I read this paragraph completely regarding the resemblance of largest and earlier technologies, it’s awesome article.

  11. Veryy nice article, just what I wanted to find.

  12. I’m gon too say to myy little brother, that hhe shouldd
    also payy a quick visit this websxite onn regulpar baswis tto take uupdated frm hottest gossip.

  13. Très bon contenu, l’essentiel est dit et ça permet de mieux se focaliser sur ce que l’on veut réellement savoir…Merci pour ce travail

Les commentaires sont fermés.