27
COURS D’ALGORITHME & STRUCTURES DE DONNÉES (ASD I) 2014/2015 ALGORITHME & STRUCTURES DE DONNÉES I INSTITUT DES HAUTES ETUDES DE SOUSSE CHAPITRE I: INTRODUCTION À LA PROGRAMMATION & LES INSTRUCTIONS SIMPLES

Algorithme & structures de données Chap I

Embed Size (px)

DESCRIPTION

Support de cours algorithme & structures de données I Chapitre 1: Introduction à la programmation & les instructions simples

Citation preview

Page 1: Algorithme & structures de données Chap I

COURS D’ALGORITHME &

STRUCTURES DE DONNÉES (ASD I)

2014/2015 ALGORITHME & STRUCTURES DE DONNÉES I

INSTITUT DES HAUTES ETUDES DE SOUSSE

CHAPITRE I: INTRODUCTION À LA

PROGRAMMATION & LES

INSTRUCTIONS SIMPLES

Page 2: Algorithme & structures de données Chap I

Plan du Cours

2014/2015 ALGORITHME & STRUCTURES DE DONNÉES I

I. Notion de programme

II. Interprétation et compilation

III. Démarche de programmation

IV. Notion de variable

V. Notion de constante

VI. Notion de type

VII. Les expressions

VIII. L’instruction d’affectation

IX. L’instruction d’écriture

X. L’instruction de lecture

XI. Structure générale d’un algorithme

Exercices d’application1

Page 3: Algorithme & structures de données Chap I

I. Notion de programme

2014/2015 ALGORITHME & STRUCTURES DE DONNÉES I

Le mot programmation recouvre l’ensemble des activités quifont passer d’un problème à un programme.

Un programme est un texte constitué d’un ensemble dedirectives, appelées instructions, qui spécifient :

les opérations élémentaires à exécuter

la façon dont elles s’enchaînent.

Supposons qu’un enseignant dispose d’un ordinateur et d’unprogramme de calcul de la moyenne des étudiants. Pours’exécuter, ce programme nécessite qu’on lui fournisse pourchaque étudiant, les notes de contrôle continu, de T.P et del’examen final : ce sont les données. En retour, le programmeva fournir la moyenne cherchée : c’est le résultat.

2

Page 4: Algorithme & structures de données Chap I

I. Notion de programme

2014/2015 ALGORITHME & STRUCTURES DE DONNÉES I

De la même manière, un programme de paie nécessite desinformations données : noms des employés, grades, numérosde sécurité sociale, situations familiales, nombre d’heuressupplémentaires, etc. Les résultats seront imprimés sur lesdifférents bulletins de paie : identification de l’employé, salairebrut, retenue sécurité sociale, etc.

3

Page 5: Algorithme & structures de données Chap I

II. Interprétation & compilation

2014/2015 ALGORITHME & STRUCTURES DE DONNÉES I

L’ordinateur ne sait exécuter qu’un nombre limité d’opérationsélémentaires dictées par des instructions de programme et codées enbinaire (langage machine). Obligatoirement, les premiers programmesétaient écrits en binaire. C’était une tâche difficile et exposée aux erreurscar il fallait aligner des séquences de bits dont la signification n’est pasévidente.

Par la suite, pour faciliter le travail, les programmes ont été écrits endésignant les opérations par des codes mnémoniques faciles à retenir. Pourpouvoir utiliser effectivement tous ces symboles, il fallait trouver le moyende les convertir en langage machine ; ce fut réalisé par un programmeappelé assembleur. Le langage d’assemblage est toujours utilisé, car c’estle seul langage qui permet d’exploiter au maximum les ressources de lamachine.

4

Page 6: Algorithme & structures de données Chap I

II. Interprétation & compilation

2014/2015 ALGORITHME & STRUCTURES DE DONNÉES I

L’écriture de programmes en langage d’assemblage reste unetâche fastidieuse. De plus, ces programmes présentent unproblème de portabilité étant donné qu’ils restent dépendantsde la machine sur laquelle ils ont été développés. L’apparitiondes langages évolués, tels que Fortran et Pascal, a apportéune solution à ces problèmes. Les programmes écrits enlangage évolué doivent également être convertis en langagemachine pour être exécutés. Cette conversion peut s’effectuerde deux façons : par compilation ou par interprétation.

La compilation consiste à traduire dans un premier tempsl’ensemble du programme en langage machine. Dans undeuxième temps, le programme est exécuté.

L’interprétation consiste à traduire chaque instruction duprogramme en langage machine avant de l’exécuter .

5

Page 7: Algorithme & structures de données Chap I

II. Interprétation & compilation

2014/2015 ALGORITHME & STRUCTURES DE DONNÉES I

6

Page 8: Algorithme & structures de données Chap I

III.Démarche de programmation

2014/2015 ALGORITHME & STRUCTURES DE DONNÉES I

La démarche de programmation se déroule en deux phases :

1) Dans un premier temps, on identifie les données duproblème, les résultats recherchés et par quel moyen onpeut obtenir ces résultats à partir des données. C’est l’étaped’analyse du problème qui aboutit à un procédé derésolution appelé algorithme. Une approche modulaireconsiste à décomposer le problème initial en sous-problèmes plus simples à résoudre appelés modules. Parexemple, un programme de gestion de scolarité comporteraun module inscription, un module examen, un modulediplôme, etc.

7

Page 9: Algorithme & structures de données Chap I

2) Dans un deuxième temps, on traduit dans le langage deprogrammation choisi le résultat de la phase précédente. Sil’analyse a été menée convenablement, cette opération seréduit à une simple transcription systématique del’algorithme selon la grammaire du langage.

Lors de l’exécution, soit des erreurs syntaxiques sontsignalées, ce qui entraîne des retours au programme et descorrections en général simples à effectuer, soit des erreurssémantiques plus difficiles à déceler. Dans ce dernier cas, leprogramme produit des résultats qui ne correspondent pas àceux escomptés : les retours vers l’analyse (l’algorithme) sontalors inévitables.

8

2014/2015 ALGORITHME & STRUCTURES DE DONNÉES I

III.Démarche de programmation

Page 10: Algorithme & structures de données Chap I

IV.Notion de variables

Malgré une apparente diversité, la plupart des langages sont basés sur la même technique fondamentale à savoir la « manipulation de valeurs contenues dans des variables ».

En programmation, une variable est un identificateur qui sert à repérer un emplacement donné de la mémoire centrale. Cette notion nous permet de manipuler des valeurs sans nous préoccuper de l’emplacement qu’elles occupent effectivement en mémoire.

Notons enfin que certains langages comme C, C++ et Java font la différence entre lettres minuscules et majuscules alors que d’autres comme Turbo Pascal n’en font aucune distinction. 9

2014/2015 ALGORITHME & STRUCTURES DE DONNÉES I

Page 11: Algorithme & structures de données Chap I

V. Notion de constante

2014/2015 ALGORITHME & STRUCTURES DE DONNÉES I

Contrairement aux variables, les constantes sont desdonnées dont la valeur reste fixe durant l’exécution duprogramme.

Exemples : Pi = 3.14 g = 9.80 etc.

10

Page 12: Algorithme & structures de données Chap I

VI.Notion de type

A chaque variable utilisée dans le programme, il fautassocier un type qui permet de définir :

l’ensemble des valeurs que peut prendre la variable

l’ensemble des opérations qu’on peut appliquer sur la variable.

La syntaxe de l’action de déclaration est la suivante

Variable 1, Variable 2, … : Type

Les principaux types utilisés en algorithmique sont : le type entier

le type réel

le type caractère

le type chaîne de caractères

le type logique ou booléen.11

2014/2015 ALGORITHME & STRUCTURES DE DONNÉES I

Page 13: Algorithme & structures de données Chap I

1. Le type entier

Une variable est dite entière si elle prend ses valeurs dansZ (ensemble des entiers relatifs) et qu’elle peut supporterles opérations suivantes :

Exemples :

13 div 5 = 2

13 mod 5 = 312

2014/2015 ALGORITHME & STRUCTURES DE DONNÉES I

Page 14: Algorithme & structures de données Chap I

2. Le type réel ou décimal

Il existe plusieurs types de réels représentant chacun unensemble particulier de valeurs prises dans R (ensemble desnombres réels). Ici encore, cette distinction se justifie par lemode de stockage des informations dans le langage deprogrammation.

Il existe deux formes de représentation des réels :

la forme usuelle avec le point comme symbole décimal.

Exemples : -3.2467 2 12.7 +36.49

la notation scientifique selon le format aEb

13

2014/2015 ALGORITHME & STRUCTURES DE DONNÉES I

Page 15: Algorithme & structures de données Chap I

3. Le type caractère

Un caractère peut appartenir au domaine des chiffres de ”0” à”9”, des lettres (minuscules et majuscules) et des caractèresspéciaux (”*”, ”/”, ”{”, ”$”, ”#”, ”%” …). Un caractère seratoujours noté entre des guillemets. Le caractère espace (blanc)sera noté ” ”.

Les opérateurs définis sur les données de type caractère sont :

La comparaison entre les caractères se fait selon leur codesASCII. 14

2014/2015 ALGORITHME & STRUCTURES DE DONNÉES I

Page 16: Algorithme & structures de données Chap I

4. Le type logique ou booléen

Une variable logique ne peut prendre que les valeurs ”Vrai” ou”Faux”. Elle intervient dans l’évaluation d’une condition.

Les principales opérations définies sur les variables de typelogique sont : la négation (NON), l’intersection (ET) et l’union(OU).

L’application de ces opérateurs se fait conformément à la tablede vérité suivante :

15

2014/2015 ALGORITHME & STRUCTURES DE DONNÉES I

Page 17: Algorithme & structures de données Chap I

VII.Expressions arithmétiques

Exemple : x * 53.4 / (2 + pi)

L’ordre selon lequel se déroule chaque opération de calculest important.

Afin d’éviter les ambiguïtés dans l’écriture, on se sert desparenthèses et des relations de priorité entre lesopérateurs arithmétiques :

16

2014/2015 ALGORITHME & STRUCTURES DE DONNÉES I

Page 18: Algorithme & structures de données Chap I

Ce sont des combinaisons entre des variables et desconstantes à l’aide d’opérateurs relationnels (=, <, <=, >, >=, #)et/ou des combinaisons entre des variables et des constanteslogiques à l’aide d’opérateurs logiques (NON , ET, OU, …).

Ici encore, on utilise les parenthèses et l’ordre de prioritéentre les différents opérateurs pour résoudre les problèmes deconflits.

17

2014/2015 ALGORITHME & STRUCTURES DE DONNÉES I

VII.Expressions logiques

Page 19: Algorithme & structures de données Chap I

VIII.L’instruction d’affectation

Le rôle de cette instruction consiste à placer une valeur dansune variable. Sa syntaxe générale est de la forme :

Variable Expression

Ainsi, l’instruction : A 6 signifie « mettre la valeur 6 dans lacase mémoire identifiée par A ».

Alors que l’instruction : B (A + 4) Mod 3 range dans B lavaleur 1 (A toujours égale à 6).

Remarque

La valeur ou le résultat de l’expression à droite du signed’affectation doit être de même type ou de type compatibleavec celui de la variable à gauche.

18

2014/2015 ALGORITHME & STRUCTURES DE DONNÉES I

Page 20: Algorithme & structures de données Chap I

Exemple 1:

Quelles seront les valeurs des variables A, B et C aprèsl’exécution des instructions suivantes :

A5

B 3

C A + B

A2

C B – A

Trace d’exécution:

19

2014/2015 ALGORITHME & STRUCTURES DE DONNÉES I

Page 21: Algorithme & structures de données Chap I

Exemple 2:

Quelles seront les valeurs des variables A et B après l’exécutiondes instructions suivantes :

A 5 ; B 7

A A + B

B A - B

A A – B

Trace d’exécution:

Cette séquence d’instructions permet de permuter les valeurs de A et B. Une deuxième façon de permuter A et B consiste à utiliser une variable intermédiaire X :

X A

A B

B X2014/2015 ALGORITHME & STRUCTURES DE DONNÉES I

20

Page 22: Algorithme & structures de données Chap I

Exercice

Soient 3 variables A, B et C. Ecrire une séquenced’instructions permettant de faire une permutationcirculaire de sorte que la valeur de A passe dans B, cellede B dans C et celle de C dans A. On utilisera une seulevariable supplémentaire.

2014/2015 ALGORITHME & STRUCTURES DE DONNÉES I

21

Page 23: Algorithme & structures de données Chap I

IX.L’instruction de lecture

Pour qu’un programme présente un intérêt pratique, il devrapouvoir nous communiquer un certain nombre d’informations(résultats) par l’intermédiaire d’un périphérique de sortie commel’écran ou l’imprimante. C’est le rôle de l’instruction d’écriture.

La forme générale de cette instruction est :

Ecrire(expression1, expression2, ...)

Exemple: Qu’obtient-on à l’écran après l’exécution des instructionssuivantes :

x 4

Ville ”Tunis”

Ecrire(x)

Ecrire(x*x)

Ecrire(”Ville”)

Ecrire(”Ville = ”,Ville) 22

2014/2015 ALGORITHME & STRUCTURES DE DONNÉES I

Page 24: Algorithme & structures de données Chap I

X. L’instruction d’écriture

Dans certains cas, nous pourrons être amenés à transmettredes informations (données) à notre programme parl’intermédiaire d’un périphérique d’entrée comme le clavier.Cela sera réalisé par l’instruction de lecture.

La forme générale de cette instruction est :

Lire(Variable1, Variable2, ...)

Ainsi, l’instruction : Lire(A)

signifie « lire une valeur à partir du périphérique d’entrée, quiest le clavier par défaut, et la ranger dans la variable identifiéepar A » 23

2014/2015 ALGORITHME & STRUCTURES DE DONNÉES I

Page 25: Algorithme & structures de données Chap I

XI.Structure général d’un algorithme

Les nouveaux types doivent être déclarésdans la partie «Types».

Toute variable utilisée dans l’algorithmedoit être préalablement déclarée.

Les instructions placées entre «Début» et«Fin» forment le corps principal del’algorithme.

Seules les parties « Entête » et «Corps »de l’algorithme sont obligatoires.

L’indentation qui consiste à insérer destabulations avant les objets déclarés etles instructions offre une meilleurelisibilité de l’algorithme et le rend, parconséquent, plus facile à comprendre età corriger. 24

2014/2015 ALGORITHME & STRUCTURES DE DONNÉES I

Page 26: Algorithme & structures de données Chap I

Exercices d’applications

Exercice 1: Donner toutes les raisons pour lesquelles l’algorithme suivant

est incorrect :

Algoritme Incorrectx, y : Entierz : Réel

Débutz x + 2y zx*2 3 + zy 5y + 3

Fin.25

2014/2015 ALGORITHME & STRUCTURES DE DONNÉES I

Page 27: Algorithme & structures de données Chap I

Exercices d’applications

Exercice 2:

Ecrire un algorithme qui lit deux entiers au clavier et quiaffiche ensuite leur somme et leur produit.

Exercice 3:

Ecrire un algorithme qui lit le rayon d’un cercle et quiaffiche ensuite son périmètre et sa surface.

Exercice 4:

Ecrire un algorithme qui calcule et affiche la résistanced’un composant électrique en utilisant la loi d’Ohm :

26

2014/2015 ALGORITHME & STRUCTURES DE DONNÉES I