Partage
  • Partager sur Facebook
  • Partager sur Twitter

Boucle for en C et Swift

Sujet résolu
    15 juin 2019 à 2:24:21

    Bonjour,

    Je viens de lire des commandes de Swift. Ils ont oublié le for de C.

    Quand on y pense, le for est un accommodement du while. On a:

    for(initialisation; condition; incrémentation) {

     ...

    }

    Ce qui pourrait être équivalent à:

    initialisation;

    while(condition) {

     ...

     incrémentation;

    }

    Le for de Swift est plus simple:

    for variable in range {

     ...

    }

    C'est le cas le plus fréquent.

    • Partager sur Facebook
    • Partager sur Twitter

    Le Tout est souvent plus grand que la somme de ses parties.

      15 juin 2019 à 11:03:02

      Il est plus simple pour ceux qui ont appris ce type de for, par exemple en faisant du Python. Moi qui ai débuté avec de vieux langages, je trouve que le plus simple est le « for i = a to b » du Fortran (ou du Basic, ou du Pascal). J'imagine que ceux qui ont débuté en Cobol trouvent plus simple le « perform n times » (et c'est vrai que c'est encore plus simple − et encore moins riche), et je ne parle pas de ceux qui ont débuté avec l'assembleur.

      (Une autre difficulté du « for variable in range », en tout cas en Python - je ne connais pas le langage Swift −, c'est qu'il parcourt la liste du début compris à la fin non comprise. Par exemple « for i in range(10,50) » va de 10 à 49. Je déteste ça ! Je sais, c'est juste une habitude à prendre, mais je préfère « for i = a to b » : on voit immédiatement où la boucle commence et où elle finit.)

      -
      Edité par robun 15 juin 2019 à 11:08:18

      • Partager sur Facebook
      • Partager sur Twitter
        15 juin 2019 à 13:53:32

        En Swift, la limite supérieure est incluse, par exemple:

        for i in 1...1000

        va inclure 1000, mais:

        for i in 1..<1000

        ne va pas l'inclure.

        Tu n'as pas le choix d'incrémenter de _1_.

        En Fortran, on a:

        do 10 i=3,27,4

        et ça marche.

        • Partager sur Facebook
        • Partager sur Twitter

        Le Tout est souvent plus grand que la somme de ses parties.

          15 juin 2019 à 15:41:14

          Ah, ben j'aime bien la syntaxe du Swift ! (Pas bête le < devant la deuxième borne ! Là c'est clair.)

          -
          Edité par robun 15 juin 2019 à 15:41:42

          • Partager sur Facebook
          • Partager sur Twitter
            15 juin 2019 à 16:27:31

            Petit commentaire pour les assembler (ceux que j'ai connu). Tu as toute la latitude de faire ce que tu veux.

            Tu peux faire quelque chose du genre:

            LD R1,var1

            LD R2,var2

            R3 = R2-R1   ou

            R3 = R1-R2

            et tu teste:

            PL R3,adresse

            Tu as le choix des tests PL,NG, ZR, NZ.

            Pour les petites machines qui n'ont pas de registres multiples, on peut avoir:

            LOAD var1

            SUB var2

            JMP NG,adresse

            Tu peux interchanger les adresses des variables et changer le test.

            • Partager sur Facebook
            • Partager sur Twitter

            Le Tout est souvent plus grand que la somme de ses parties.

              17 juin 2019 à 20:57:16

              Les deux for n'ont pas grand chose à voir, à part le nom

              • Celui de C est une structure de contrôle générale qui combine une initialisation, un test et une progression
              • L'autre est le parcours d'un intervalle, comme on le faisait en Fortran ou Basic ou Pascal etc.

              Il y a d'autres formes en c++ / java, pour parcourir un tableau ou un iterable. On appelle ça foreach (même si ça s'écrit for) ou range based for loop.

              Il n' y a donc pas à "preferer",  pas plus qu'on ne peut préférer les floats aux strings. Ca ne sert pas a la meme chose.

              -
              Edité par michelbillaud 17 juin 2019 à 21:00:03

              • Partager sur Facebook
              • Partager sur Twitter
                18 juin 2019 à 0:45:30

                Quand j'ai posté ce sujet, j'avais lu que Swift était inspiré de C. C'est en grande partie vrai.

                J'étais seulement surpris que le for de Swift soit seulement un cas particulier du for de C.

                Je me suis demandé si après tout, le for de C n'était pas vraiment nécessaire (mais "for"t utile).

                Pour ce qui est du nom, j'ai déjà travaillé avec un Pascal français où le "for" s'appelait "pour". On aurait pu écrire "vas_y" pour dire la mème chose.

                • Partager sur Facebook
                • Partager sur Twitter

                Le Tout est souvent plus grand que la somme de ses parties.

                Boucle for en C et Swift

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown