Université Bordeaux 1
Licence Semestre 2   Initiation à l'algorithmique
Dernière mise à jour effectuée le 2 Juillet 2007

Codage et structures de contrôle


  1. Définitions
  2. Définition 2.1. Un type abstrait est un triplet composé :
    • d'un nom,
    • d'un ensemble de valeurs,
    • d'un ensemble d'opérations définies sur ces valeurs.
    Les types abstrait de bases de l'algorithmique sont :
    entier,caractères,booléen,réél
    que l'on écrit respectivement en EXALGO
    entier,car,booléen,réél

    Définition 2.2. Une variable est un triplet composé
    • d'un type (déjà défini),
    • d'un nom (a priori toute chaîne alphanumérique),
    • d'une valeur.
    On écrit en EXALGO
        var NomDeVariable: Type;
    
    Type est à prendre pour l'instant dans l'ensemble {entier,car,booléen,réél}
    Définition 2.3. Les Expressions sont constituées à l'aide de variables déjà déclarées, de valeurs, de parenthèses et d'opérateurs du (des)type(s) des variables concernées.
    Définition 2.4. L'affectation est l'instruction qui permet de stocker une valeur dans une variable.
    On écrit
        NomDeVariable=ExressionDuTypeDeLaVariable;
    
    Toute variable doit être déclarée et recevoir une valeur initiale.

  3. Types de base
  4. Booléens

    Une variable de type booléen prend comme valeur VRAI ou FAUX. Les opérations usuelles sont ET, OU et NON qui sont données dans les tables qui suivent.



    Entiers

    Une variable de type entier peut prendre comme valeur l'ensemble des nombres entiers signés. Les opérations associées sont les opérations usuelles +,-,*,/.

    Rééls

    Une variable de type réél peut prendre comme valeur l'ensemble des nombres réels. Les opérations associées sont les opérations usuelles +,-,*,/.

    Caractères

    Une variable de type car peut prendre comme valeur l'ensemble des caractères imprimables. On notera les valeurs entre guillemets. On considère souvent que les caractères sont ordonnés dans l'ordre alphabétique.

    Attention

    Les valeurs
    • "1" qui est un caractère,
    • 1 qui est un entier,
    • 1. qui est un réel
    sont différentes et ne seront pas codés de la même manière dans la mémoire de la machine.

    Comparaison

    Les opérateurs <, ≤, ==, !=, >, ≥ permettent de comparer les valeurs de type entier, réel et caractère. Le résultat de cette comparaison est une valeur booléenne.

  5. Structures de contrôle
  6. Il y a trois structures principale de contrôle qui permettent de construire des algorithmes
    • Bloc d'instruction
              début
                  instruction1
                  instruction2
                  .............
              fin
      
    • Alternative
      • Alternative simple (traduction Python):
            si ExpressionBooléenne alors
                BlocInstruction1
            sinon
                BlocInstruction2
            finsi;
        
      • Alternative multiple (traduction Python):
             selon que
               cas  cas1 : BlocInstruction1
               cas  cas2 : BlocInstruction2
                  .............
               autrement :  BlocInstruction
             finselonque
        
    • Répétition
      L'instruction exit permet d'arrêter la répétition.
      • le bloc d'instruction peut ne pas être éxécuté (traduction Python):
            tant queExpressionBooléenne faire 
                BlocInstruction
            fintantque;
        
      • le bloc d'instruction peut ne pas être exécuté et il y a une variable indicatrice (traduction Python):
            pour VariableIndicatrice  
              allant de  ValeurInitiale à ValeurFinale 
              par pas de ValeurPas faire
                  BlocInstruction
            finpour;
        
      • le bloc d'instruction est exécuté au moins une fois (ne se traduit pas directement en Python)
            répéter
                BlocInstruction
            jusqu'à ExpressionBooléenne finrépéter;
        

  7. Fonctions
  8. Une fonction est une section d'algorithme qui a un objectif bien défini et un nom. En général, elle communique avec l'extérieur par le biais de paramètres typés. Elle possède des variables locales qui ne sont pas visibles à l'extérieur de la fonction. Ces variables peuvent être des fonctions. Une fonction retourne une valeur par l'instruction simple retourne(Expression). L'expression peut être
    • vide, tout s'est bien passé mais il n'y a pas de résultat à retourner : retourne()
    • sans résultat, il est impossible de retourner un résultat suite à un cas de figure de l'instance : retourne(NUL)

    Syntaxe

    • Ecriture de la fonction
        fonction NomDeFonction (ListeParamètres):TypeRésultat;
          //déclarations des variables ou fonctions locales autres que les paramètres 
          début
            // partie instruction qui contient l'appel à retourne
          fin
        finFonction
      
    • liste des paramètres
      Les paramètres sont passés
      • par référence ref, on écrit
        ref ListeVariable:NomDeType
        la fonction travaille directement dans la variable passée en paramètre,
      • par valeur val, on écrit
        val ListeVariable:NomDeType
        la fonction travaille sur une copie de la variable passée en paramètre.

    Le type du résultat est vide si la fonction ne renvoie pas de résultat.

    Utilisation

    Une fonction s'utilise en écrivant
    NomDeFonction(ListeInstanceParamètres)
    • dans le calcul d'une expression si la fonction retourne une valeur,
    • comme une instruction simple si elle ne retourne pas de valeur.

    Exemple

    fonction exemple(val n:entier;ref m: entier):vide;
      début
        n=5;
        m=7;
      fin
    finFonction
    
    Supposons que l'on ait la séquence suivante :
    var p,q:entier;
    début
      p=1;
      q=2;
      exemple(p,q);
    fin
    
    Après éxécution p contiendra 1 et q contiendra 7 (Animation ici).