Dans un lycée, un code d’accès à la photocopieuse est attribué à chaque professeur. Ce code est un nombre à quatre chiffres choisis dans la liste {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, chaque chiffre pouvant être répété à l’intérieur d’un même code. Ce code permet aussi de définir un identifiant pour l’accès au réseau informatique. L’identifiant est constitué du code à quatre chiffres suivi d’une clé calculée à l’aide de l’algorithme suivant :

    Entrée : N est le code à quatre chiffres.

    Initialisation : Affecter à P la valeur de N ;

          Affecter à S la valeur 0 ;

          Affecter à K la valeur 1.

    Traitement : Tant que K ≤ 4 :

            Affecter à U le chiffre des unités de P ;

            Affecter à K la valeur K + 1 ;

            Affecter à S la valeur S + K  U ;

            Affecter à P la valeur (P – U)/10 ;

          Fin Tant que

          Affecter à R le reste dans la division euclidienne de S par 7 ;

          Affecter à C la valeur 7 – R.

    Sortie « la clé » : Afficher C.

Faire fonctionner l’algorithme avec N = 2 282 et vérifier que la clé qui lui correspond est 3.

Un professeur s’identifie sur le réseau informatique en entrant le code 4 732 suivi de la clé 7. L’accès au réseau lui est refusé. Le professeur est sûr des trois derniers chiffres du code et de la clé, l’erreur porte sur le premier chiffre du code. Quel est ce premier chiffre ?

 

Un exemple de sujet 2012 au bac S

On considère l’algorithme suivant, où Ent(A/N) désigne la partie entière de A/N.

    A et N sont des entiers naturels

    Saisir A

    N prend la valeur 1

    Tant que N A

      Si A/N - Ent(A/N)= 0 alors Afficher N et A/N

      Fin si

        N prend la valeur N + 1

    Fin Tant que.

Quels résultats affiche cet algorithme pour A = 12 ?

Que donne cet algorithme dans le cas général ?

 

Compétance à travailler

–Comprendre et analyser un algorithme préexistant ;

–Modifier un algorithme pour obtenir un résultat particulier ;

–Analyser la situation : identifier les données d’entrée, de sortie, le traitement...;

–Mettre au point une solution algorithmique : comment écrire un algorithme en « langage courant » en respectant un code, identifier les boucles, les tests, des opérations d’écriture, d’affichage... ;

–Valider la solution algorithmique par des traces d’exécution et des jeux d’essais simples ;

–Adapter l’algorithme aux contraintes du langage de programmation : identifier si nécessaire la nature des variables... ;

–Valider un programme simple.

 

Evaluation

 square11_purple.gif L’évaluation des pratiques en Algorithmique peut s’organiser autour d’une évaluation par compétences qui ne conduira pas nécessairement à une note spécifique chiffrée.

 square11_purple.gif Les activités menées dans le cadre de la pratique de l’algorithmique peuvent servir de support d’évaluation des compétences liées, d’une part, aux trois modalités fondamentales de l’activité en algorithmique qui sont :

analyser le fonctionnement ou le but d’un algorithme existant ;

modifier un algorithme existant pour obtenir un résultat précis ;

créer un algorithme en réponse à une problème donné.

 

 

 les elements de base d'un algorithme simple

 les elements de base d'un algorithme simple

Les trois étapes :

    square11_purple.gif La préparation du traitement

    square11_purple.gif Le traitement

    square11_purple.gif La sortie des résultats

 

 Les instructions

Un exemple progressif

Un joueur lance deux dés et fait la somme des points obtenus. S’il obtient 8, il gagne 10€, sinon il perd 1€.

Variante : le joueur rejoue 10 fois (et cumule ses gains et pertes).

Autre variante : le joueur rejoue jusqu’à avoir un gain cumulé de 5€ .

 

 Instructions pour traiter les données

L’affectation de données dans des variables

square11_purple.gif  La lecture (ou entrée) des données

square11_purple.gif  L’écriture (ou sortie) des données

square11_purple.gif  Les séquences d’instructions

square11_purple.gif  Instructions (ou structures) de contrôle

 

 Les structures de controle

    square30_pink.gif  La structure « alternative »

    square30_pink.gif  Les structures répétitives

 

 Les structures alternatives

    square30_pink.gif  Si condition alors

          Traitement 1

        Sinon

          Traitement 2

      Fin Si

    square30_pink.gif  Si condition alors

          Traitement 1

    Fin Si

 

Les structures répétiives

square11_purple.gif Programmation d’un calcul itératif, avec un nombre d’itérations donné:

C’est la boucle « Pour I variant de … à … »

    square30_pink.gif  Pour I variant de I0 à N

            Traitement

            Fin Pour

 

 square11_purple.gif Programmation d’un calcul itératif avec fin de boucle conditionnelle

        Tant que {condition C }

          Faire {instructions}

        Fin Tant que

OU

        Répète

          Traitement

        Jusqu’à {condition C }

 

 Algorithme cas 1

    Variables

        a, b, coup sont des entiers naturels

        gain est un entier

         

    Initialisation

        a prend une valeur aléatoire entière entre 1 et 6

        b prend une valeur aléatoire entière entre 1 et 6

    Traitement

        Si a + b = 8

          │Alors gain = gain + 10

          │Sinon gain = gain -1

        Fin Si

    Sortie

        Afficher gain

 

  Algorithme cas 2

    Variables

        a, b, coup sont des entiers naturels

        gain est un entier

        i est un compteur de boucle

    Initialisation

        a prend une valeur aléatoire entière entre 1 et 6

        b prend une valeur aléatoire entière entre 1 et 6

        gain prend la valeur 0

    Traitement

        Pour i allant de 1 à 10

          Si a + b = 8

            │Alors gain = gain + 10

            │Sinon gain = gain -1

          Fin Si

        Fin Pour

    Sortie

        Afficher gain

 

 Algorithme cas 3

    Variables

        a, b, coup sont des entiers naturels

        gain est un entier

    Initialisation

        a prend une valeur aléatoire entière entre 1 et 6

        b prend une valeur aléatoire entière entre 1 et 6

        gain prend la valeur 0

        coup prend la valeur 0

    Traitement

        Tant que gain ± 5

        Pour i allant de 1 à 10

        coup prend la valeur coup + 1

          Si a + b = 8

            │Alors gain = gain + 10

            │Sinon gain = gain -1

          Fin Si

        Fin Tant que

    Sortie

        Afficher coup

 

 Documentation des algorithmes

Quelques habitudes de rigueur permettent de se simplifier la vie quand les algorithmes deviennent longs et/ou nombreux :
  • Décrire précisément l’objectif de l’algorithme
  • Écrire des commentaires décrivant le déroulement de l’algorithme
  • Choisir des noms de variables explicites
  • Afficher des messages à l’écran pour dire à l’utilisateur du programme ce qu’il doit faire
  •  

    Cours algorithme classe I

    Cours algorithme classe II

    Cours algorithme classe III

    Cours algorithme classe IV

    Cours algorithme classe S