You are on page 1of 11

IREM Clermont-Ferrand Journe dinformation sur les nouveaux programmes de Seconde

Anne 2009-2010 Malika More

Initiation lalgorithmique
... et la programmation

Contenu de latelier
Des algorithmes ( destination des tres humains) - Outils : Papier/Crayon ... parce-que cest le cur du sujet Et des programmes ( destination des ordinateurs) - Outil : AlgoBox ... parce-que lun ne va pas sans lautre En insistant sur les faits suivants : les programmes informatiques ne sont l que pour voir fonctionner les algorithmes la matrise dun langage de programmation nest pas lobjectif vis dans les classes ni dans cet atelier ... mais un objectif secondaire de cet atelier est une initiation la programmation propos des exemples et des exercices : jai essay den varier la nature et les domaines pour donner des ides de choses faire en classe, en suivant les recommandations ocielles. analyser le fonctionnement ou le but dun algorithme existant (trace, algorithme mystre, cherchez lerreur) modier un algorithme existant pour obtenir un rsultat prcis crer un algorithme en rponse un problme pos Document ressources duscol Concernant laprs-stage : Ne pas hsiter me contacter (malika.more@iut.u-clermont1.fr) en cas de dicults ou de questions De nombreux documents et informations sont disponibles partir de la rubrique volutions au lyce du portail des IREM : http ://www.univ-irem.fr/

Installation du logiciel
Site ociel dAlgoBox http ://www.xm1math.net/algobox/ Libre gratuit et multiplateforme crit par un professeur de mathmatiques de lyce pour lalgoritmique au lyce

Table des matires


1 Introduction 2 Les 2.1 2.2 2.3 2.4 bases Entres/Sorties . . . . . Variables, aectations et Structure alternative . . Structures rptitives . . 3 4 4 5 6 7 10 10 11 11

. . . . . . . . . . manipulation des . . . . . . . . . . . . . . . . . . . .

. . . . . donnes . . . . . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

3 Pour aller plus loin 3.1 Documentation des algorithmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Listes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 Exercices supplmentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Introduction

Vous connaissez dj tous les exemples que nous verrons aujourdhui et tous ceux que vous serez amens enseigner au lyce. Il ny a pas de contenu nouveau, il sagit seulement dun changement de prsentation pour mettre en vidence la nature algorithmique des mthodes utilises. Exemple. Voici (encore) une version de lalgorithme dEuclide : dbut Lire le nombre a Lire le nombre b Donner r la valeur a mod b rpter jusqu r = 0 Donner a la valeur b Donner b la valeur r Donner r la valeur a mod b n Acher b n Algorithme 1 : Euclide Un algoritme est en gnral dcomposable en trois parties : Un pr-traitement : entre des donnes au clavier, initialisation des valeurs, . . . (il faut bien commencer) Un traitement : calculs, manipulation des donnes, . . . (cest le cur de lalgorithme) Un post-traitement : achage des rsultats sur lcran, criture dans un chier, . . . (sans cela les rsultats seraient perdus) Dans lexemple, les 3 premires lignes constituent le pr-traitement, les 5 lignes suivantes le traitement proprement dit et la dernire ligne est le post-traitement. Exemple. (suite) Voici un programme AlgoBox qui implmente lalgorithme dEuclide : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 VARIABLES a EST_DU_TYPE NOMBRE b EST_DU_TYPE NOMBRE r EST_DU_TYPE NOMBRE DEBUT_ALGORITHME LIRE a LIRE b r PREND_LA_VALEUR a%b TANT_QUE (r!=0) FAIRE DEBUT_TANT_QUE a PREND_LA_VALEUR b b PREND_LA_VALEUR r r PREND_LA_VALEUR a%b FIN_TANT_QUE AFFICHER "le pgcd est " AFFICHER b FIN_ALGORITHME

Raisons du choix dAlgoBox pour cet atelier : Investissement de dpart assez faible pour pouvoir commencer programmer

Linterface graphique limite les risques derreurs de syntaxe Langage ddi lalgorithmique au lyce Mais en contrepartie : Le langage est assez limit Linterface est sommaire Moralit : Aucun langage de programmation nest parfait pour tout, mais ils sont tous utilisables pour (presque) tout. Exemple. Voici un algorithme trs simple, dans lequel on remarque que la structure en trois partie est implicite : dbut Lire le nombre a Acher "Limage de" a "est" 2a2 5a + 3 n Algorithme 2 : Valeur dune fonction (1) On peut rcrire lalgorithme pour la faire apparatre : dbut Lire le nombre a Donner b la valeur 2a2 5a + 3 Acher "Limage de" a "est" b n Algorithme 3 : Valeur dune fonction (2) On crit un programme en AlgoBox qui ralise ce calcul.

Les bases

Comme dans les exemples prcdents, nos algorithmes seront crits en "pseudo-code", cest--dire sous une forme (relativement) standardise et laide dun certain nombre de mots-cls (relativement) standardiss. Ceci permettra la fois de faire apparatre les structures communes et de faciliter la programmation ventuelle en se rapprochant de la syntaxe dun langage de programmation. Toutefois, il faut garder lesprit que le choix exact de cette forme et de ces mots-cls est en grande partie arbitraire, et peut donc lgitimement varier.

2.1

Entres/Sorties

On na besoin aujourdhui que de deux instructions, mais rien nempcherait den inclure dautres si le besoin sen faisait sentir. Pour obtenir une donne entre au clavier : Lire la valeur de a

Pour acher un message et/ou un rsultat lcran :

Acher "Le rsultat est :" b

2.2

Variables, aectations et manipulation des donnes

Variables et aectations. Pour mmoriser les donnes initiales, ou les rsultats intermdiaires des calculs, on utilise des "variables". Du point de vue de lordinateur, une variable est une zone de mmoire au contenu de laquelle on accde via un identicateur. Du point de vue algorithmique, une variable a un nom xe et une valeur qui peut changer au cours de lexcution de lalgorithme. La nature et le rle des variables en informatique et en mathmatique sont donc dirents, bien quon utilise le mme mot. Pour aecter une valeur une variable : Donner a la valeur 12

Important : Quand on aecte une nouvelle valeur une variable, la valeur prcdente disparat et nest plus accessible. Remarque : Linstruction "Lire la valeur de a" non seulement lit une valeur tape au clavier, mais aussi aecte cette valeur la variable a. Exercice 1. (le jeu du bonneteau) Quel est le rsultat ach par lalgorithme ci-dessous : dbut Donner a la valeur 1 Donner b la valeur 2 Donner c la valeur 3 Donner c la valeur a Donner a la valeur b Donner b la valeur c Acher b n Algorithme 4 : Bonneteau Manipulation des donnes. Les instructions de manipulation des donnes (par exemple calcul) sont probablement les moins standardises qui soient. En eet, elles dpendent fortement de la nature des donnes, et de la faons dont celles-ci sont organises. On restera donc assez ous ce sujet, et on verra au fur et mesure de quoi on aura besoin et ce dont il sera raisonnable de se doter. Exemple. Voici un algorithme qui eectue quelques calculs simples sur une donne numrique : dbut Lire le nombre a Donner b la valeur a2 Donner b la valuer 2b Donner b la valeur b 5a Donner b la valeur b + 3 Acher b n Algorithme 5 : Calculs Exercice 2. (o lon suit la "trace" de lalgorithme) Excuter lAlgorithme 5 en prenant a = 6.

Exercice 3. (o lon ne sembte pas avec les instructions) Pour convertir des degrs Fahrenheit en degrs Celsius, on a la formule suivante : C 0.55556 (F 32). crire un algorithme qui convertit une temprrature entre au clavier des degrs Fahrenheit en degrs Celsius, et ache une valeur approche 101 prs du rsultat.

Exercice 4. (un meilleur algorithme ?) 1. crire un algorithme qui lit deux nombres a et b entrs au clavier et calcule a2 + 2ab + b2 . 2. crire un autre algorithme qui donne le mme rsultat.

2.3

Structure alternative

Le plus souvent, un algorithme ne contient pas seulement des instructions de manipulation des donnes xcuter les une aprs les autres, mais aussi des instructions dites de contrle ou de structure (conditions et boucles), qui ont un eet sur lexcution des autres instructions. Le premier type de telles instruction est celle permettant une excution conditionnelle. Pour excuter des instructions seulement dans le cas o une condition est ralise : si condition alors instructions eectuer si la condition est ralise n Pour excuter certaines instructions dans le cas o une condition est ralise et dautres dans le cas o elle ne lest pas : si condition alors instructions eectuer si la condition est ralise sinon instructions eectuer si la condition nest pas ralise n

Exemple. Lalgorithme ci-dessous a pour but de lire deux nombres au clavier, puis de les acher dans lordre croissant. dbut Lire le nombre a Lire le nombre b si a<b alors Acher a Acher b sinon Acher b Acher a n n Algorithme 6 : Maximum de deux 6

Important : La condition doit pouvoir tre value vrai ou faux. Il sagit donc dune expression logique, plus ou moins complique. Exercice 5. (modier lexemple prcdent) crire un algorithme qui lit trois valeurs au clavier et ache le maximum des trois. Exercice 6. Soit une quation de droite 3x + 4y + 1 = 0. crire un algorithme qui lit au clavier les coordonnes dun point et tudie lappartenance du point la droite.

2.4

Structures rptitives

Il sagit de rpter un bloc dinstructions plusieurs fois de suite. Dinnombrables variantes sont possibles. Les deux familles principales consistent : rpter un bloc dinstructions un nombre de fois donn, rpter un bloc dinstructions jusqu ce quune condition soit vrie (ou tant quune condition est vrie). Toutes les version sont lgitimes quand on crit un algorithme sur papier. Dans chaque langage de programmation certaines versions sont implmentes et pas dautres, cest pourquoi la connaissance a priori du langage dans lequel on entend programmer les algorithmes peut (mais non doit) orienter le choix pour lcriture des algorithmes. Dans notre cas, jai choisi de coller la syntaxe AlgoBox.

Pour rpter un bloc dinstructions un nombre de fois donn : pour i de 1 10 faire instructions eectuer n la variable i est un compteur elle augmente automatiquement de 1 chaque tour pour . . . de . . . . . . faire Exemple. Calcul de 10 ! dbut Donner res la valeur 1 pour i de 1 10 faire Donner res la valeur res i n Acher res n Algorithme 7 : Factorielle "Pour"

Remarque On peut (ou pas) utiliser la variable i dans la boucle, mais il est prfrable de ne pas changer sa valeur. Pour rpter un bloc dinstructions tant quune condition est vrie : tant que condition faire instructions eectuer n Le test de la condition est eectu avant dentrer dans la boucle. Par consquent, si la condition nest pas vrie avant lentre dans la boucle, on ny entre pas, les instructions lintrieur de la boucle ne sont pas eectues, et on passe linstruction suivant la boucle. 7

Exemple. Un autre calcul de 10 ! dbut Donner res la valeur 1 Donner i la valeur 1 tant que i 10 faire Donner res la valeur res i Donner i la valeur i + 1 n Acher res n Algorithme 8 : Factorielle "Tant que" Important : Dun point de vue algorithmique, dans tous les cas, il est important de bien rchir lentre et la sortie de la boucle.

Exercice 7. (cherchez lerreur) Lalgorithme ci-dessous calcule 10 ! dbut Donner res la valeur 1 Donner i la valeur 1 tant que i 10 faire Donner res la valeur res i n Acher res n Algorithme 9 : Factorielle fausse (1) Exercice 8. (cherchez lerreur) Lalgorithme ci-dessous calcule 10 ! dbut Donner res la valeur 1 tant que i 10 faire Donner res la valeur res i Donner i la valeur i + 1 n Acher res n Algorithme 10 : Factorielle fausse (2) Exercice 9. (cherchez lerreur) Lalgorithme ci-dessous calcule 10 ! dbut Donner res la valeur 1 Donner i la valeur 1 tant que i 10 faire Donner i la valeur 1 Donner res la valeur res i Donner i la valeur i + 1 n Acher res n Algorithme 11 : Factorielle fausse (3)

Exercice 10. (cherchez lerreur) Lalgorithme ci-dessous calcule 10 ! dbut Donner res la valeur 1 Donner i la valeur 11 tant que i 10 faire Donner res la valeur res i Donner i la valeur i + 1 n Acher res n Algorithme 12 : Factorielle fausse (4) Exercice 11. (Algorithme mystre) Que fait lalgorithme ci-dessous ?
dbut Donner a la valeur 0 Donner b la valeur 10 Donner N la valeur 50 Donner pas la valeur (b a)/N Donner x la valeur a Donner max la valeur 2x2 5x + 3 pour i de 1 N faire Donner x la valeur x + pas Donner y la valeur 2x2 5x + 3 si max < y alors Donner max la valeur y n n Acher max n

Algorithme 13 : Inconnu

Exercice 12. (Algorithme mystre) Que fait lalgorithme ci-dessous ? dbut Lire la valeur de N Donner i la valeur 0 Donner n la valeur 1 tant que n N faire Donner n la valeur 2 n Donner i la valeur i + 1 n Acher i 1 n Algorithme 14 : Autre Inconnu

Exercice 13. (o lon voit que le diable est dans les dtails) Que se passe-t-il si on choisit N = 0 ? Comment rparer le problme ? Exercice 14. crire un algorithme qui dtermine si un nombre lu au clavier est premier.

3
3.1

Pour aller plus loin


Documentation des algorithmes

Quelques habitudes de rigueur permettent de se simplier la vie quand les algorithmes deviennent longs et/ou nombreux : Dcrire prcisment lobjectif de lalgorithme crire des commentaires dcrivant le droulement de lalgorithme Choisir des noms de variables explicites Acher des messages lcran pour dire lutilisateur du programme ce quil doit faire Exemple. Voici une version commente de lalgorithme dEuclide : dbut Acher "Entrez le nombre a" Lire le nombre a % a et b sont les nombres Acher "Entrez le nombre b" % dont on calcule le pgcd Lire le nombre b Donner r la valeur a mod b % r est le reste rpter jusqu r = 0 Donner a la valeur b % le pgcd de a est de b est Donner b la valeur r % gal au pgcd de b et du reste Donner r la valeur a mod b % et on recommence n Acher "Le pgcd est" b % le dernier reste non nul est le pgcd n Algorithme 15 : Euclide comment

% % % % % % %

Exercice 15. (algorithme mystre) 1. Que fait lalgorithme 15 ? 2. Commenter cet algorithme. dbut Donner nb la valeur 1000 Donner somme la valeur 0 rpter nb fois Donner tir la valeur 1 Donner d une valeur entire alatoire entre 1 et 6 rpter jusqu d = 6 Donner tir la valeur tir + 1 Donner d une valeur entire alatoire entre 1 et 6 n Donner somme la valeur somme + tir n Acher somme/nb n Algorithme 16 : inconnu

10

3.2

Listes

On utilise des listes ou des tableaux pour manipuler des variables indices. Les instructions associes permettent dajouter ou de supprimer des lments, de connaitre la longueur dune liste, etc. Selon les langages de programmation, la gestion des listes et des tableaux est trs variable. Exemple. Voici un algorithme qui dtermine si un triangle dont les coordonnes des sommets M1 , M2 et M3 sont entres au clavier est isocle en M1 . dbut Donner i la valeur 1 rpter 3 fois Lire la valeur de abs[i] % liste des abscisses % Lire la valeur de ord[i] % liste des ordonnes % Donner i la valeur i + 1 n 2 2 Donner M 1M 2 la valeur (abs[2] abs[1]) + (ord[2] ord[1]) 2 2 Donner M 1M 3 la valeur (abs[3] abs[1]) + (ord[3] ord[1]) si M 1M 2 = M 1M 3 alors Acher "Cest un triangle isocle en M1 " sinon Acher "Ce nest pas un triangle isocle en M1 " n n Algorithme 17 : Triangle isocle Exercice 16. (fonctionnalits graphiques) crire un algorithme qui dessine un triangle lcran. Programmer cet algorithme avec AlgoBox Exercice 17. (au hasard) crire un algorithme qui remplit une liste de 10 nombres entiers entre 0 et 9 au hasard, puis calcule la somme des lments de la liste.

3.3

Exercices supplmentaires

Exercice 18. (encore une boucle) crire un algorithme qui recherche une solution approche de lquation x2 + x 1 sur lintervalle [0; 2] par dichotomie, avec une prcision de 103 . Exercice 19. (les chanes de caractres) Le code de Csar consiste crypter un message en remplaant chaque lettre par celle qui se trouve 3 rangs droite dans lalphabet (et bien sr "x", "y" et "z" deviennent respectivement "a", "b" et "c"). Par exemple "exemple" devient "hahpsoh". crire un algorithme qui crypte un mot entr au clavier en utilisant le code de Csar. Exercice 20. (un peu de tout) crire un algorithme de machine voter : on fait voter des lecteurs tant quil y en a entre un candidat A et un candidat B. la n, on ache le nom du vainqueur (sil y en a un). Lalgorithme doit tre able 100% et ne doit pas permettre derreur de saisie.

11

You might also like