Outils pour utilisateurs

Outils du site


issue158:c_c

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
issue158:c_c [2020/07/02 07:27] d52frissue158:c_c [2020/07/03 14:45] (Version actuelle) andre_domenech
Ligne 5: Ligne 5:
 Why? Functions are just code blocks you can use over and over by calling them. Clearly, they simplify life. Functions can return a value, but they do not have to. You have seen a function, the main function we have been playing with. It is good practice to write functions, then simply call them in the main function. Rule of thumb, you recognise a function by the parenthesis. Example: Println!();** Why? Functions are just code blocks you can use over and over by calling them. Clearly, they simplify life. Functions can return a value, but they do not have to. You have seen a function, the main function we have been playing with. It is good practice to write functions, then simply call them in the main function. Rule of thumb, you recognise a function by the parenthesis. Example: Println!();**
  
-OK, bandes de RUST-iques, nous revenons au développement de Rust car @Daredevil14 et Ellin se sont plaints de la direction que prenait le blog de Lucas sur Rust. Il semblerait que vous aimeriez toujours plus de rust et moins de non-sens sur la sécurité. En premier lieu, ne négligez pas la lecture du livre ci-dessus. Si vous êtes complètement débutant dans rust ou même en programmation, vous trouverez ce qu'il vous faut ici dans le FCM. Ces articles n'ont pas l'intention de remplacer le livre cité plus haut ; voyez-les plutôt comme une aide en parallèle.+OK, bandes de RUST-iques, nous revenons au développement de Rust car @Daredevil14 et Ellin se sont plaints de la direction que prenait le blog de Lucas sur Rust. Il semblerait que vous aimeriez toujours plus de rust et moins de « non-sens sur la sécurité ». En premier lieu, ne négligez pas la lecture du livre indiqué le mois dernier. Si vous êtes complètement débutant dans Rust ou même en programmation, vous trouverez ce qu'il vous faut icidans le FCM. Ces articles n'ont pas l'intention de remplacer le livre cité plus haut ; voyez-les plutôt comme une aide en parallèle.
  
 Définissez vos propres fonctions : Définissez vos propres fonctions :
  
-Pourquoi ? Les fonctions ne sont que des blocs de code que vous utiliser encore et encore en les appelant. Clairement, elles vous simplifient la vie. Les focntions peuvent vous renvoyer une valeur, mais ce n'est pas une obligation.  Vous avez vu une fonction, la fonction principale avec laquelle nous avons jouer. C'est une bonne pratique d'écrire des fonctions, puis de simplement les appeler dans la fonction principale. Astuce : vous reconnaissez une fonction à ses parenthèses. Exemple : Println!();+Pourquoi ? Les fonctions ne sont que des blocs de code que vous utilisez encore et encore en les appelant. Clairement, elles vous simplifient la vie. Les fonctions peuvent vous renvoyer une valeur, mais ce n'est pas une obligation.  Vous avez vu une fonction, la fonction principale avec laquelle nous avons joué. C'est une bonne pratique d'écrire des fonctions, puis de simplement les appeler dans la fonction principale. Astuce : vous reconnaissez une fonction à ses parenthèses. Exemple : Println!();
    
 **In C, one specifies the type of return value before the function.  **In C, one specifies the type of return value before the function. 
Ligne 34: Ligne 34:
 int main (void) int main (void)
  
-Dans Rust, une flèche est utilisée. Pour faire une flèche, saisissez juste un tiret suivi par un « plus grand que », >.+Dans Rust, une flèche est utilisée. Pour faire une flèche, saisissez juste un tiret suivi du symbole « plus grand que », ->.
  
-fn <functionname>(parameters) -> returntype {}+fn <nomdefonction>(paramètres) -> typeretourné {}
  
-Ça peut paraître un peu bizarre... Sinon, ça l'est pour moi.+Ça peut paraître un peu bizarre... Au moins, ça l'est pour moi.
  
-Pour simplifier, disons que nous voulons faire une fonction qui additionne deux chiffres et retourne le résultat. Elle pourrait ressembler à quelque chose comme ça :+Pour simplifier, disons que nous voulons faire une fonction qui additionne deux chiffres et retourne le résultat. Elle pourrait ressembler à quelque chose comme ceci :
  
 fn adder (num1: i32, num2: i32) -> i32 fn adder (num1: i32, num2: i32) -> i32
Ligne 56: Ligne 56:
 Now I actually want you to put a semicolon there and save and run it again. ** Now I actually want you to put a semicolon there and save and run it again. **
  
-Si vous avez vu qu'il n'y avait pas de de point-virgule à la fin de la déclaration, vous avez juste. Ceci trompe les plus novices. Mais il y a une règle de syntaxe. Vous voulez retourner quelque chose (une valeur est attendue), ce quelque chose venant de la DERNIÈRE ligne. (Dites-vous que le point-virgule supprime la sortie). Dans ce cas, vous ne devez pas utiliser le point-virgule à la fin de la déclaration (la « dernière ligne » est notre ligne unique).+Si vous avez vu qu'il n'y avait pas de point-virgule à la fin de la déclaration, c'est bon. Ceci trompe les plus novices. Mais il y a une règle de syntaxe. Vous voulez retourner quelque chose (une valeur est attendue), ce quelque chose venant de la DERNIÈRE ligne. (Dites-vous que le point-virgule supprime la sortie). Dans ce cas, vous ne devez pas utiliser le point-virgule à la fin de la déclaration (la « dernière ligne » est notre ligne unique).
  
 Si ce n'est pas clair ou si vous avez une meilleure façon de l'expliquer, merci de nous envoyer un mail à misc@fullcirclemagazine.org Si ce n'est pas clair ou si vous avez une meilleure façon de l'expliquer, merci de nous envoyer un mail à misc@fullcirclemagazine.org
  
-Maintenant, je veux vraiment que vous mettiez un point-virgule à cet endroit , que vous le sauvegardiez et que le lanciez à nouveau.+Maintenant, je veux en fait que vous mettiez un point-virgule à cet endroit, que vous le sauvegardiez et que vous le lanciez à nouveau.
  
 **Peruse the error output. Rust help is on the money! You will also see “rustc --explain E0308” at the end of the message. Run it and see. It is less helpful, but not a waste of your time. If you are having issues getting your head around it, there is another way. You can use the keyword “return” in front of that statement, but then you need to close it off with a semicolon. **Peruse the error output. Rust help is on the money! You will also see “rustc --explain E0308” at the end of the message. Run it and see. It is less helpful, but not a waste of your time. If you are having issues getting your head around it, there is another way. You can use the keyword “return” in front of that statement, but then you need to close it off with a semicolon.
Ligne 70: Ligne 70:
 include <stdio.h>** include <stdio.h>**
  
-Lisez attentivement l'erreur affichée. L'aide de Rust vous en donne pour votre argent ! Vous verrez aussi « rustc --explain E0308 » à la fin du message. Lancez la ommande et regardez. Elle est est moins utile, mais ce n'est pas une perte de temps. Si vous avez des problèmes en fouillant, il y a une autre manière. Vous pouvez utiliser les mot-clé « return » devant la déclaration, mais ensuite, vous devez la fermer avec un point-virgule.+Lisez attentivement l'erreur affichée. L'aide de Rust répond parfaitement ! Vous verrez aussi « rustc --explain E0308 » à la fin du message. Lancez cette commande et regardez. Elle n'est pas trop utile, mais ce n'est pas une perte de temps. Si vous avez des problèmes en essayant de comprendre, il y a une autre manière de faire. Vous pouvez utiliser le mot-clé « return » devant la déclaration, mais ensuite, vous devez la fermer avec un point-virgule.
  
 return num1 + num2; return num1 + num2;
  
-Vu dans le numéro précédent : Comment fonctionne le programme de jeu de devinette de nombre chez vous ? En C, nous utilisons des en-têtes si nous utilisaons des fonctions d'entrées/sorties (I/O).+Continuons depuis le dernier numéro : Comment fonctionne le programme de jeu de devinette de nombre chez vous ? En C, nous incluons des en-têtes si nous utilisons des fonctions d'entrées/sorties (I/O).
  
 include <stdio.h> include <stdio.h>
Ligne 82: Ligne 82:
 The crates.io website is something you should bookmark. It is filled with handy libraries, but more on that later. I would go into depth explaining crates, but the website does it so much better. See: https://doc.rust-lang.org/cargo/guide/** The crates.io website is something you should bookmark. It is filled with handy libraries, but more on that later. I would go into depth explaining crates, but the website does it so much better. See: https://doc.rust-lang.org/cargo/guide/**
  
-En Rust, nous utilisons simplement le mot-clé « use ». La documentation le décrit comme un prélude, mais, si ça peut vous aider, voyez-le comme une en-tête de fichier. https://doc.rust-lang.org/std/prelude/index.html - Je ne veux pas faire de fixation sur la terminologie, mais si vous ne connaissez pas les termes corrects, il vous devient difficile de les expliquer à quelqu'un d'autre. Appelez-le Pinky si vous voulez, tant que vous savez commentl'utiliser. Si vous avez suivi le tutoriel de Greg sur Python, vous aurez vu probablement « from tkinter import * ». Vous avez besoin d'une façon d'incorporer les bibliothèques standard et non-standard à utiliser, de sorte que vous n'avez pas à tout écrire vous-même. La chose suivante dont je veux parler est du crate "rand". L'exemple utilise le crate rand 0.5.5, bien que ça a changé depuis. Au moment où j'écris, le crate rand est en 0.7.3. Voyez https://crates.io/crates/rand+En Rust, nous utilisons simplement le mot-clé « use ». La documentation le décrit comme un prélude, mais, si ça peut vous aider, voyez-le comme une en-tête de fichier. https://doc.rust-lang.org/std/prelude/index.html - Je ne veux pas faire de fixation sur la terminologie, mais si vous ne connaissez pas les termes corrects, il vous devient difficile de les expliquer à quelqu'un d'autre. Appelez-le Pinky si vous voulez, tant que vous savez comment l'utiliser. Si vous avez suivi le tutoriel de Greg sur Python, vous aurez vu probablement « from tkinter import * ». Vous avez besoin d'une façon d'incorporer les bibliothèques standard et non-standard à utiliser, de sorte que vous n'ayez pas à tout écrire vous-même. La chose suivante dont je veux parler est le crate "rand". L'exemple utilise le crate rand 0.5.5, bien qu'il ait changé depuis. Au moment où j'écris, le crate rand est en 0.7.3. Voyez https://crates.io/crates/rand
  
-Le site Web crate.io est quelque chose surlequel vous devez mettre un signet. Il est rempli de bibliothèques pratiquesj'en reparlerai plus tard. J'aurai voulu expliquer les crates plus en détail mais le site Web le fait beaucoup mieux. Voyez : https://doc.rust-lang.org/cargo/guide/+Le site Web crate.io est quelque chose sur lequel vous devriez mettre un signet. Il est rempli de bibliothèques pratiques et j'en reparlerai plus tard. J'aurais voulu expliquer les crates plus en détailmais le site Web le fait beaucoup mieux. Voyez : https://doc.rust-lang.org/cargo/guide/
  
 **You may have heard the joke, “there is no such thing as AI; it is if-statements all the way down”. **You may have heard the joke, “there is no such thing as AI; it is if-statements all the way down”.
Ligne 92: Ligne 92:
 Branching and making decisions is another must-know, when programming. We have for-loops, while-loops and if-statements. (There is also the loop-keyword you may not have seen). If you know what a case-statement or switch is, the equivalent in rust is the match-keyword. If you have no idea, don’t worry, we will look at it now. ** Branching and making decisions is another must-know, when programming. We have for-loops, while-loops and if-statements. (There is also the loop-keyword you may not have seen). If you know what a case-statement or switch is, the equivalent in rust is the match-keyword. If you have no idea, don’t worry, we will look at it now. **
  
-Vous connaissez peut-être la blague « Il n'y a rien de tel que l' IA ; c'est plein de déclarations if »+Vous connaissez peut-être la blague « L'IA  n'existe pas ; c'est plein de déclarations if ».
  
 Toujours rien ? Je suis là toute la semaine. Toujours rien ? Je suis là toute la semaine.
  
-Les branchements et les prises de décisions sont une autre partie indispensable à connaître, quand on programme. Nous avons les boucles for, les boucles while et les déclarations if. (Il y a aussi le mot-clé loop, que vous n'avez peut-être pas encore vu). Si vous savez ce qu'est une déclaration « case » ou une commutation, le mot-clé « match » est l'équivalent en rust. Si vous n'avez aucune idée là dessus, ne vous inquiétez pas, nous allons le voir tout de suite.+Les branchements et les prises de décisions sont une autre partie indispensable à connaître, quand on programme. Nous avons les boucles for, les boucles while et les déclarations if. (Il y a aussi le mot-clé loop, que vous n'avez peut-être pas encore vu). Si vous savez ce qu'est une déclaration « case » ou une commutation, le mot-clé « match » est l'équivalent en rust. Si vous n'avez aucune idée là-dessus, ne vous inquiétez pas, nous allons le voir tout de suite.
  
 **Match is not a dating app, it is a list of possibilities, or should that be probabilities. The only thing is, that it is finite. You do not want to make cases for every possible point on an elliptic curve. Match is specific. It is useful in, say, monkey puzzles, where you need to select the right answer, say from four possible answers, and display a message for your choice. You can even check more than one condition at a time too. Bottom left is an example. **Match is not a dating app, it is a list of possibilities, or should that be probabilities. The only thing is, that it is finite. You do not want to make cases for every possible point on an elliptic curve. Match is specific. It is useful in, say, monkey puzzles, where you need to select the right answer, say from four possible answers, and display a message for your choice. You can even check more than one condition at a time too. Bottom left is an example.
Ligne 104: Ligne 104:
 You can even match against a range (ellipses). It is deprecated, but it still works. See below left.** You can even match against a range (ellipses). It is deprecated, but it still works. See below left.**
  
-Match n'est pas une appli de rencontre, c'est une liste de possibilités, ou, pourrait-on direde probabilités. La seule chose, c'est que c'est fini. Vous ne voulez pas faire des cas pour chaque point d'une courbe elliptique. Match est spécifique. Il est utile dans, disons, les Araucaria (Désespoir des singes) où vous devez sélectionner la bonne réponse, parmi, disons, quatre réponses possibles et afficher un message suivant votre choix. Vous pouvez même vérifier plus d'une condition d'un seul coup. Un exemple est montré en bas à gauche.+Match n'est pas une appli de rencontre, c'est une liste de possibilités, ou, devrait-on dire de probabilités. La seule chose, c'est que c'est fini. Vous ne voulez pas faire des cas pour chaque point d'une courbe elliptique. Match est spécifique. Il est utile dans, disons, les Araucaria (Désespoir des singes) où vous devez sélectionner la bonne réponse, parmi, disons, quatre réponses possibles et afficher un message suivant votre choix. Vous pouvez même vérifier plus d'une condition d'un seul coup. Un exemple est montré en bas à gauche.
  
 Vous pouvez avoir des conditions multiples en utilisant l'opérateur OR. Essayez avec 2 et 5. Un autre exemple, en bas à droite. Vous pouvez avoir des conditions multiples en utilisant l'opérateur OR. Essayez avec 2 et 5. Un autre exemple, en bas à droite.
  
-Vous pouvez même chercher des correspondances dans une suite (ellipses). C'est déprécié mais ça marche encore. Regardez en bas à gauche.+Vous pouvez même chercher des correspondances dans une suite (ellipses). C'est dépréciémais ça marche encore. Regardez en bas à gauche.
  
 **Most of this code is self-explanatory, except the underscore at the end. This tells rust we want to explicitly ignore all the other cases. If we don’t do this, rust will tell us about all the matches we missed. See below right. **Most of this code is self-explanatory, except the underscore at the end. This tells rust we want to explicitly ignore all the other cases. If we don’t do this, rust will tell us about all the matches we missed. See below right.
Ligne 118: Ligne 118:
 If you have any questions or comments, email us: misc@fullcirclemagazine.org** If you have any questions or comments, email us: misc@fullcirclemagazine.org**
  
-La plupart du code se comprend tout seul, sauf le trait de soulignement à la fin. Ceci dit à rust que nous voulons explicitement ignorer tous les autres cas. Si nous ne faisons pas ça, rust nous informera de toustes les correspondances que nous avons raté. Regardez en bas à droite.+La plupart du code se comprend tout seul, sauf le trait de soulignement à la fin. Cela dit à rust que nous voulons explicitement ignorer tous les autres cas. Si nous ne le faisons pas, rust nous informera de toutes les correspondances que nous avons ratées. Regardez en bas à droite.
  
-Si nous avons deux mini-inters pour définir la vitesse de transfert d'une communication série, il y a quatre possiblités et Rust les reconnait. Et il peut même nous dire quelle est celle nque nous avons oublié !+Si nous avons deux mini-inters pour définir la vitesse de transfert d'une communication série, il y a quatre possiblités et Rust les reconnaît. Et il peut même nous dire quelle est celle que nous avons oubliée !
  
-Dans le prochain article, nous pouvons regarder d'autres éléments conditionnels.+Dans le prochain article, nous pourrons regarder d'autres éléments conditionnels.
  
 Si vous avez une question ou un commentaire, envoyez-nous un mail à : misc@fullcirclemagazine.org Si vous avez une question ou un commentaire, envoyez-nous un mail à : misc@fullcirclemagazine.org
  
issue158/c_c.txt · Dernière modification : 2020/07/03 14:45 de andre_domenech