• Aucun résultat trouvé

I NTRODUCTIONÀL ’ ALGORITHMIQUE

N/A
N/A
Protected

Academic year: 2021

Partager "I NTRODUCTIONÀL ’ ALGORITHMIQUE"

Copied!
6
0
0

Texte intégral

(1)

I NTRODUCTION À L ALGORITHMIQUE

Algorithme de dichotomie Algorithme de Newton

Objectifs

A la fin de la séquence d’enseignement les élèves doivent :

• comprendre un algorithme et expliquer ce qu’il fait

• modifier un algorithme existant pour obtenir un résultat différent

• concevoir un algorithme répondant à un problème précisément posé

• expliquer le fonctionnement d’un algorithme

• écrire des instructions conditionnelles avec alternatives, éventuellement imbriquées

Table des matières

1 Introduction 2

1.1 Structure de l’informatique . . . . 2

1.2 Poser proprement le problème . . . . 2

1.2.1 Exemple 1 : permutation de deux voitures . . . . 2

1.2.2 Exemple 2 : résolution d’une équation . . . . 3

1.3 Première approche méthodologique . . . . 3

2 Pseudo-langage algorithmique 3 2.1 Données et constantes . . . . 3

2.2 Variables . . . . 4

2.3 Opérateurs . . . . 4

2.4 Expressions . . . . 4

2.5 Instructions . . . . 4

2.5.1 Groupe d’instructions simples . . . . 4

2.5.2 Instructions conditionnelles . . . . 5

2.5.3 Instructions répétitives . . . . 5

2.6 Fonctions . . . . 6

3 Principes de bonne programmation 6

(2)

1 Introduction

1.1 Structure de l’informatique

L’informatique est structurée par quatre concepts :

l’algorithme : méthode opérationnelle permettant de résoudre un problème,

la machine : système physique doté de fonctionnalités,

le langage : moyen de communication entre l’informaticien et la machine,

l’information : données symboliques susceptibles d’être traitées par une machine.

On se propose ici d’acquérir une méthodologie permettant de mettre sur le papier la résolution d’un problème bien posé.

Pour cela, nous utiliserons un ensemble d’instructions dont l’application permet de résoudre le problème en un nombre fini d’opérations.

1.2 Poser proprement le problème

1.2.1 Exemple 1 : permutation de deux voitures

PROBLÈME:permuter deux voitures sur un parking de trois places numérotées P1, P2 et P3, sans gêner la circulation. La voiture A est sur l’emplacement P2, la voiture B est sur l’emplacement P3.

Avant permutation Après permutation

Un premier algorithme naïf peut être le suivant : 1. déplacer la voiture B de l’emplacement P3à P1 2. déplacer la voiture A de l’emplacement P2à P3

3. déplacer la voiture B de l’emplacement P1à P2

Plusieurs imprévus peuvent se présenter :

• l’emplacement P1 est-il initialement libre ?

les voitures A et B sont-elles en état de marche ?

• y-a-t-il de la circulation pendant l’échange des em- placements ?

l’emplacement P3est-il pris pendant l’échange ? Cela est dû à un problème en partie mal posé. Précisons

Données :

Parking de trois emplacements, numérotés P1, P2et P3. Deux voitures en état de marche : A sur P3, et B sur P2.

Hypothèses générales : Un seul conducteur réalise la permutation.

Celui-ci a son permis de conduire et les clés des deux voitures.

Lorsqu’une voiture est en mouvement, aucune autre voiture ne vient sur le parking.

Une éventuelle autre voiture ne reste qu’un temps fini sur un emplacement.

Résultats : La voiture B est sur l’emplacement P2.

(3)

2. PSEUDO-LANGAGE ALGORITHMIQUE 3/6

L’algorithme est alors le suivant :

1. aller au volant de la voiture B (emplacement P3) 2. répéter attendre jusqu’à emplacement P1libre 3. déplacer la voiture B de l’emplacement P3à P1 4. aller au volant de la voiture A (emplacement P2) 5. répéter attendre jusqu’à emplacement P3libre

6. déplacer la voiture A de l’emplacement P2à P3

7. aller au volant de la voiture B (emplacement P1) 8. répéter attendre jusqu’à emplacement P2libre 9. déplacer la voiture B de l’emplacement P1à P2 1.2.2 Exemple 2 : résolution d’une équation

PROBLÈME:résoudre l’équation a.x=b.

L’algorithme peut être le suivant :

1 si a<>0 alors

2 la solution est x=b/a

3 sinon

4 Il n’y a pas de solution

Là encore, l’énoncé du problème n’est pas satisfaisant :

quels sont les domaines de définition de x, a, b ?

• les variables sont elles réelles, complexes, des vecteurs, des ma- trices ?

• qui est l’inconnue ?

Reformulons le problème : Soient a∈Ret b∈Rdonnés. Trouver x tel que a.x=b.

L’algorithme est alors le suivant : Données : (a,b)∈R×R Résultat : x=b/a

1 x=b/a Sorties : x

1.3 Première approche méthodologique Un bon algorithme doit :

• être clair

• fournir un résultat satisfaisant

• être adapté au public visé

Pour cela, il est nécessaire de :

• poser correctement le problème

• rechercher une méthode de résolution

• écrire l’algorithme par raffinements successifs

2 Pseudo-langage algorithmique

Afin d’uniformiser l’écriture des algorithmes, un pseudo-langage (non normalisé) contenant l’indispensable est utilisé : des données, des variables, des opérateurs, des expressions, des instructions et des fonctions.

2.1 Données et constantes

Unedonnéeest une valeur extérieure introduite dans l’algorithme. Uneconstanteest une valeur non modifiable (π, . . . ).

(4)

2.2 Variables

Une variable est un objet dont la valeur est modifiable.

Elle possède :

1. un identificateur : nom (suffisamment explicite)

2. un type : simple (booléen, entier, réel, caractère) ou structuré (chaîne de caractères, liste, tuple, dictionnaire, . . . ), 3. une valeur

4. une référence : indique l’adresse de stockage dans la zone mémoire.

2.3 Opérateurs

Chaque type de donnée admet un jeu d’opérateurs adapté.

• Opérateurs arithmétiques

Nom Symbole

addition +

soustraction -

produit *

division /

division entière div ou //

modulo mod ou %

exposant ˆ ou **

• Opérateurs relationnels

Nom Symbole

identique ==

différent <>

inférieur <

supérieur >

inférieur ou égal <=

supérieur ou égal >=

• Opérateurs logiques

négation non,∼,¬

ou ou, |,∨

et et, &,∧

opération d’affectation ← Concaténation de liste + 2.4 Expressions

Une expression est un groupe d’opérandes(nombres, constantes, variables,. . . ) liées par desopérateurs. Elles sont évaluées pour donner un résultat.

EXEMPLE:expression numérique : b/a et expression booléenne : a,0 (vrai ou faux).

2.5 Instructions

Une instruction est exécutée. Elle peut contenir une ou plusieurs expressions.

Il existe des instructions simples comme l’affectation: xb/a ou l’appel de fonction : print("x=",x).

Mais il y a aussi des instructions structurées : groupe d’instructions, structures conditionnelles et structures itératives (ré- pétitives).

2.5.1 Groupe d’instructions simples

(5)

2. PSEUDO-LANGAGE ALGORITHMIQUE 5/6

Données : a, un réel non nul et b : un réel Résultat : x

1 xb/a

Sorties : Affiche("x = ",x)

Algorithme 1: Résolution de l’équation du 1er degré a.x=b

2.5.2 Instructions conditionnelles

Données : n, un entier

Résultat : r, un booléen vrai si n est pair, faux si n est impair

1 si n%2==0 alors

2 r←vrai

3 sinon

4 r←faux

Sorties : r

Algorithme 2: Pair ou impair ?

2.5.3 Instructions répétitives

2.5.3.1 Boucle Tant que : le nombre d’itérations n’est pas obligatoirement connu.

Données : n, un nombre entier compris entre 1 et 10, généré aléatoirement

1 i←0

2 k←0

3 tant que i,n faire

4 iEntrer("Donner un nombre entier compris entre 1 et 10 : ") // demande faite à l’utilisateur

5 kk+1

Sorties : Afficher("Gagné en ",k," coups !")

Algorithme 3: Devinette

2.5.3.2 Boucle For : le nombre d’itérations est forcément connu à l’avance.

Données : n, un entier

Résultat : S , la somme des n premiers entiers

1 S ←0

2 pour i=1 à n faire

3 SS +i

Sorties : S

Algorithme 4: Somme des n premiers entiers

(6)

2.6 Fonctions Les fonctions permettent :

• d’automatiser des tâches répétitives

• d’ajouter de la clarté à un algorithme

• d’utiliser des portions de code dans un autre algorithme

Le pseudo-langage algorithmique possède comme tout langage informatique des fonctions primitives d’entrée/sortie telles que Entrer, Afficher, mais aussi des fonctions primitives mathématiques (cos, racine, . . . ). Il est aussi possible d’écrire ses propres fonctions.

Pour cela, il faut tout d’abord répondre à ces deux questions :

• quelles sont les données ?

• quel doit-être le résultat ?

Il faudra ensuite commenter l’algorithme : usage de la fonction, . . .

3 Principes de bonne programmation

Tous les algorithmes vus précédemment sont assez courts. D’autres peuvent être bien plus longs.

Dans l’industrie, il arrive que des équipes produisent des codes de millions de lignes, dont certains mettent en jeux des vies humaines (aéronautique, nucléaire, . . . ).

Toute la difficulté réside alors dans l’écriture de programmes sûrs. On constate que lorsqu’un algorithme est simple, le risque d’erreur est moindre. C’est sur ce principe essentiel que se basent les bonnes méthodes.

Ainsi, tout problème compliqué doit être découpé en sous-problèmes simples

Chaque module ou sous-programme est alors testé et validé séparément.

Tous les modules doivent aussi être largement documentés.

Bibliographie

Ce cours a été écrit à partir de celui de P. Beynet.

Références

Documents relatifs

Lorsqu'on veut utiliser des fonctions graphiques, commencer par : import du package graphique import matplotlib. pyplot as

GARANTIE LIMITÉE DE 5 ANS 1.Meubles South ShoreMC garantit à l'acheteur original, pour une période de 5 ans à partir de la date d'achat, toutes les composantes des meubles contre

This warranty does not cover, and Graco shall not be liable for general wear and tear, or any malfunction, damage or wear caused by faulty installation, misapplication,

Check devices, correct condition and type Control R (+R).. The parameters should be entered during the first pass only. Parameters are typed following the command

(b) Écrire une fonction finAnnee(j,m) prenant en entrée un numéro de jour j et de mois m et retournant une variable de type booléen indiquant s’il s’agit du dernier jour

On peut définir des variables de type booléen (comme pour n’importe quel autre type) mais on le fait rarement en pratique.

Attention - Ceci est conçu pour une utilisation par ou sous la surveillance d’adultes. Les adultes doivent revoir les directives de sécurité avec les enfants pour éviter tout

Drawer bottom must enter into the groove located on panel X Le fond de tiroir doit entrer dans la rainure se trouvant sur le panneau X. 12 Fasten the panel Y to both panels V