M09 TECHNIQUES DE PROGRAMMATION STRUCTUREE PARTIE1

19
COMPLEXE DE FORMATION HAY ENNAHDA RABAT MODULE 09 : TECHNIQUES DE PROGRAMMATION STRUCTUREE TDI 1 GB 2007/2008 TECHNIQUES DE DEVELOPPEMENT INFORMATIQUE PAR Mr AZZI ANALYSE d'un problème en vue de sa résolution informatique. 1. On effectue une analyse descendante. Décomposition en modules : On découpe le problème en modules de difficulté moindre( si nécessaire ). Et l'on assemble les modules à la fin. 2. Description de l'enchaînement des actions ( algorithme ) : • Il faut réfléchir à la façon de résoudre le problème. • Décrire l'enchaînement des actions en utilisant une écriture algorithmique ou à l'aide d'un organigramme.

Transcript of M09 TECHNIQUES DE PROGRAMMATION STRUCTUREE PARTIE1

Page 1: M09 TECHNIQUES DE PROGRAMMATION STRUCTUREE  PARTIE1

1

COMPLEXE DE FORMATION HAY ENNAHDA RABAT

MODULE 09 : TECHNIQUES DE PROGRAMMATION STRUCTUREE

TDI 1 GB2007/2008

TECHNIQUES DE DEVELOPPEMENT INFORMATIQUE PAR Mr AZZI

ANALYSE d'un problème en vue de sa résolution

informatique.

1. On effectue une analyse descendante. Décomposition en modules :

• On découpe le problème en modules de

difficulté moindre( si nécessaire ).

• Et l'on assemble les modules àla fin.

2. Description de l'enchaînement des actions ( algorithme ) :

• Il faut réfléchir à la façon de résoudre le problème.

• Décrire l'enchaînement des actions en utilisant une écriture algorithmique ou à l'aide d'un organigramme.

Page 2: M09 TECHNIQUES DE PROGRAMMATION STRUCTUREE  PARTIE1

2

3. Faire une liste des données, avec leurs caractéristiques.

N.B. On regroupe sous le nom de DONNEES ( ou VARIABLES ) :

les données, au sens strict : ENTREES.

• les résultats : SORTIES.

• les variables intermédiaires : variables INTERNES.

Une donnée est caractérisée par son nom, son type, son usage, sa valeur.

. Le nom : ( ou identificateur ) c'est le mnémonique qui permet de

désigner une donnée.- En général, il doit commencer

par une lettre.- le nombre de caractères est

limité.- Certains mots sont réservés, et

aussi certains caractères.N.B. Il est bon de choisir un nom qui

indique à quoi va servir la variable ( ex : cumul, position, ... )

Le type : variable numérique ( entier signé, non signé, booléen, réel,...)variable caractère, ou

chaîne de caractères, variables indicées ( vecteurs, tableaux

d'entiers, ...)

Page 3: M09 TECHNIQUES DE PROGRAMMATION STRUCTUREE  PARTIE1

3

l' usage : entrée, sortie, entrée/sortie, interne.Avec un commentaire sur l'utilisation de la variable.

Exemple d'algorithme.

On désire acquérir 10 nombres au clavier, calculer la moyenne de ces nombres, et afficher le résultat à l'écran.

ORGANIGRAMME• Ecriture algorithmique :• Début

somme <-- 0pour k=1 à 10 avec un pas de 1, faire lire x ( au clavier ) somme <-- somme + xfin pourmoyenne <-- somme / 10écrire moyenne ( écran )

Fin

Page 4: M09 TECHNIQUES DE PROGRAMMATION STRUCTUREE  PARTIE1

4

• Remarques ( 1 ) :• Les mots clefs sont, en principe, soulignés

( début, fin, pour, finpour, si, alors, sinon, finsi,lire, écrire, faire, appel, répéter, jusqu'à,tant que, fin tant que, selon, ....).<-- est le symbole d'affectation.somme <-- somme + x veut dire : additionner le

contenude la variable somme et de la variable x, le

résultat est rangé dans la variable somme.

Il n'y a pas de règles strictes, le principal, c'est d'être

clair.

• Remarques ( 2 ) :• Cette analyse est indispensable dès que l'on

veut écrire un programme complexe. Elle doit être faite avant l'écriture du

programme.

L'algorithme est indépendant du langage que l'on va utiliser pour écrire ensuite le programme. ( en principe ! )

L'écriture algorithmique est bien indiquée pour les programmes qui seront écrits dans un langage évolué : Basic, Pascal, C, ...

( la traduction de l' algorithme vers le langage est immédiate ).

L'organigramme est préférable lorsque l'on programme en langage de bas niveau ( langage machine, Assembleur ).

C’EST QUOI UN ALGORITHMEAvez-vous déjà ouvert un livre de recettes de cuisine ? Avez vous déjà déchiffré un mode d’emploi d’un appareil? Si oui, sans le savoir,vous avez déjà exécuté

des algorithmes.Avez-vous déjà indiqué un chemin à quelqu’un ? Avez vous fait chercher un objet à quelqu’un par téléphone ?

Si oui, vous avez déjà fabriqué – et fait exécuter – des algorithmes.

DEFINITION:

Un algorithme, c’est une suite d’instructions, qui une fois exécutée correctement, conduit à un

résultat donné.Le terme algorithme est issu du nom du mathématicien arabe ALKHAWARIZMI(820 après JC).

Page 5: M09 TECHNIQUES DE PROGRAMMATION STRUCTUREE  PARTIE1

5

FONCTIONNEMENT Pour fonctionner, un algorithme doit donc

contenir uniquement des instructions compréhensibles par celui qui devra l’exécuter.

C’EST UN POINT DELICAT POUR LES REDACTEURS DES MODES D’EMPLOI.

HEUREUSEMENT, EN INFORMATIQUE LES CHOSES AUXQUELLES ON DOIT DONNER

LES INSTRUCTIONS SONT LES ORDINATEURS QUI ONT LE MEME DEGRE

D’ASSIMILATION.

COMMENT MAITRISER LE LANGAGE

ALGORITHMIQUE?DEUX QUALITES SONT REQUISES:

Page 6: M09 TECHNIQUES DE PROGRAMMATION STRUCTUREE  PARTIE1

6

1) Il faut avoir une certaine intuition, car aucune recette ne permet de savoir a priori quelles instructions permettront d’obtenir le résultat voulu.

2) Il faut être méthodique et rigoureux. En effet, chaque fois qu’on écrit une série d’instructionsqu’on croit justes, il faut

systématiquement se mettre mentalement à la place de la machine qui va les exécuter, arméd'un papier et d'un crayon, afin de

vérifier si le résultat obtenu est bien celui que l’on voulait.

cet apprentissage est long, et demande des heures de travail patient. Aussi, dans un premier temps, évitez de sauter les étapes : la vérification

méthodique, pas à pas, de chacun de vos algorithmes représente plus de la

moitié du travail à accomplir

Enfin, les ordinateurs, ne sont fondamentalement capables de comprendre que quatre catégories d'ordres (d'instructions). Ces quatre familles d'instructions sont :

l’affectation de variables

la lecture / écriture

les tests

les boucles

Page 7: M09 TECHNIQUES DE PROGRAMMATION STRUCTUREE  PARTIE1

7

CONVENTIONS DE REDACTION D’UN ALGORITHME

2 MODELES DE REPRESENTATION

1°une représentation graphique, avec des carrés, des losanges, etc. qu’on appelait des organigrammes. Aujourd’hui, cette représentation est quasiment abandonnée.

1) Une représentation graphique, avec des carrés, des losanges, etc. qu’on appelait des organigrammes. Aujourd’hui, cette représentation est quasiment abandonnée.

2) Une série de conventions appelée « pseudo-code », qui ressemble à un langage de programmation authentique.

C’est un langage humain, aucune machine n’est censée le reconnaître. C’est pourquoi on admettra des différences de syntaxe.

Page 8: M09 TECHNIQUES DE PROGRAMMATION STRUCTUREE  PARTIE1

8

les étapes de travail et les outils conceptuels à utiliser lors d’un processus de programmation descendante.

Phase finale : le programme s’exécute sans erreurExécution.

Mise au point du programme sur des valeurs tests ou à partir de programmes spécialisés.

Tests et mise au point.

Transfert des écritures algorithmiques en langage de Programmation.

Traduction

Utilisation pratique des outils d’une méthode de programmation, ici la prog. structurée.

Description

C’est l’aboutissement de l’analyse, esprit logique et rationnel.

Mise en forme de l’algorithme

Papier, Crayon, Intelligence, Habitude.Détermination des données d’entrées et les résultats de sorties.

Analyse

Matériel et moyens techniques à disposition.ETAPES PRATIQUES

Partie 1Les Variables

On utilise une variable dés qu’on a besoin de stocker une information au cours d’un programme.Physiquement, sur l’ordinateur il y a un emplacement mémoire repérée par une adresse binaire. Ce qui revient à créer une boîte (espace mémoire) et lui attaché une étiquette(adresse).

1. Déclaration des variables

Page 9: M09 TECHNIQUES DE PROGRAMMATION STRUCTUREE  PARTIE1

9

La première chose à faire tout au début de l’algorithme, avant de pouvoir utiliser des variables, c’estde faire la déclaration des variables.Lorsqu’on déclare une variable, on lui attribue un nom et on lui réserve un emplacement mémoire. La taille de cet emplacement mémoire dépend du type de variable. C’est pour cette raison qu’on doit préciser lors de la déclaration le type du variable.

La syntaxe d’une déclaration de variable est la suivante:

VARIABLE nom : TYPEOU

VARIABLES nom1, nom2,… : TYPE

1.1 Types numériques classiques :

1,79x10308 à -4,94x10-324 pour les valeurs négatives4,94x10-324 à 1,79x10308 pour les valeurs positives

Réel double

-3,40x1038 à -1,40x1045 pour les valeurs négatives1,40x10-45 à 3,40x1038 pour les valeurs positives

Réel simple

-2 147 483 648 à 2 147 483 647Entier long

-32 768 à 32 767Entier simple

0 à 255Byte (octet)

PlageType Numérique Quelqu’un peut se demander pourquoi pas déclarer toutes les variables en réel double?Un bon algorithme ne se contente pas de « marcher » ; il marche en évitant de gaspiller les ressources de la machine. Sur certains programmes de grande taille, l’abus de variables surdimensionnées peut entraîner des ralentissements notables àl’exécution, voire un plantage pur et simple de l’ordinateur.

Page 10: M09 TECHNIQUES DE PROGRAMMATION STRUCTUREE  PARTIE1

10

En pseudo-code, une déclaration de variables aura la forme suivante :

Variable g en Numériqueou encoreVariables PrixHT, TauxTVA, PrixTTC en Numérique

1.2 Types alphanumériquesDans une variable de ce type, on stocke des caractères, qu’il s’agisse de lettres, de signes de ponctuation, d’espaces, ou même de chiffres.

ATTENTION: En pseudo-code, une chaîne de caractères est toujours notée entre guillemets.

1.3 Autres types numériquesCertains langages autorisent d’autres types numériques, notamment :le type monétaire (avec strictement deux chiffres après la virgule) le type date (jour/mois/année).

1.4 Type booléenLe dernier type de variables est le type booléen : on y stocke uniquement les valeurs logiques VRAI et FAUX (ou 0 et 1).

Page 11: M09 TECHNIQUES DE PROGRAMMATION STRUCTUREE  PARTIE1

11

2. L’instruction d’affectation:2.1 syntaxe:Après avoir créer une variable on peut faire une et une seule chose:C’est qu’on puisse l’affecter, c’est-à-dire lui attribuer une valeur. C à d , on peut remplir la boîte.

En pseudo-code, l'instruction d'affectation se note avec le signe

Exemples d’affectation:

A 10; on attribue à la variable A la valeur 10.

A B ;on attribue à la variable A la valeur B.

A 10+B; la somme 10+B est attribuée à A.

2.2 ordre des instructions:L’ordre de succession des instructions affecte le résultat généré par un algorithme.Exemple1:Variable A en NumériqueDébutA ← 34A ← 12Fin

Exemple 2Variable A en NumériqueDébutA ← 12A ← 34Fin

Page 12: M09 TECHNIQUES DE PROGRAMMATION STRUCTUREE  PARTIE1

12

Partie 2Lecture et Ecriture

1.IntroductionSoit l’algorithme suivant:

D’une part, ce programme nous donne le carréde 12. C’est bon. Mais si l’on veut le carré d’un autre nombre que 12, il faut réécrire le programme. Casse tête!!!

Variable A en NumériqueDébutA ← 12^2Fin

D’autre part, le résultat est calculé par la machine. Mais elle le garde pour elle, l’utilisateur qui fait exécuter ce programme, lui, ne saura jamais quel est le carré de 12.

De là vient l’utilité des instructions qui permettent àl’utilisateur de dialoguer avec la machine.

Page 13: M09 TECHNIQUES DE PROGRAMMATION STRUCTUREE  PARTIE1

13

Dans un sens, ces instructions permettent àl’utilisateur de rentrer des valeurs au clavier pour qu’elles soient utilisées par le programme.

Cette opération est la lecture.

Dans l’autre sens, d’autres instructions permettent au programme de communiquer des valeurs à l’utilisateur en les affichant àl’écran.

Cette opération est l’écriture.

2. Les instructions de lecture et d’écriturePour que l’utilisateur entre la(nouvelle)valeur de A, on mettra :

Dès que le programme rencontre une instruction Lire, l’exécution s’interrompt, attendant la frappe d’une valeur au clavier.Dès lors, aussitôt que la touche Entrée a étéfrappée, l’exécution reprend.

Lire A

Dans le sens inverse, pour écrire quelque chose à l’écran, c’est aussi simple que :

Avant de Lire une variable, il est très fortement conseillé d’écrire des libellés à l’écran,afin de prévenir l’utilisateur de ce qu’il doit frapper.

Ecrire A

Page 14: M09 TECHNIQUES DE PROGRAMMATION STRUCTUREE  PARTIE1

14

Ecrire "Entrez votre nom : " Lire Nom

EXEMPLE:

Partie 3Expressions et opérateurs

Expressions et opérateurs

• Une expression peut être une valeur, une variable ou une opération constituée de variables reliées par des opérateurs

exemples: 1, b, a*2, a+ 3*bexemples: 1, b, a*2, a+ 3*b--c, c, ……

• L'évaluation de l'expression fournit une valeur unique qui est le résultat de l'opération

• Les opérateurs dépendent du type de l'opération, ils peuvent être :– des opérateurs arithmétiques: +, -, *, /, % (modulo), ^ (puissance)– des opérateurs logiques: NON, OU, ET– des opérateurs relationnels: =, , <, >, <=, >=– des opérateurs sur les chaînes: & (concaténation)

• Une expression est évaluée de gauche à droite mais en tenant compte de priorités

Priorité des opérateurs• Pour les opérateurs arithmétiques donnés ci-dessus, l'ordre de

priorité est le suivant (du plus prioritaire au moins prioritaire) :

– ^ : (élévation à la puissance)– * , / (multiplication, division)– % (modulo) on désigne par modulo l'opération de calcul du reste de la

division euclidienne. Si a est un entier quelconque et n un entier strictement positif, on écrira a mod n pour représenter le reste dans {0, …, n−1} de la division de a par n. Par exemple, 26 mod 12 = 2.

– + , - (addition, soustraction)

exemple: exemple: 2 + 3 * 7 vaut 2323

• En cas de besoin (ou de doute), on utilise les parenthèses pour indiquer les opérations à effectuer en priorité exemple: exemple:

((2 + 3) * 7 vaut 335

Page 15: M09 TECHNIQUES DE PROGRAMMATION STRUCTUREE  PARTIE1

15

Partie 4Les Fonctions

Prédéfinies

» Structure générale des fonctions Une fonction est donc constituée de trois

parties : » le nom proprement dit de la fonction.

Exemple:SIN(sinus).» deux parenthèses, une ouvrante, une

fermante. Ces parenthèses sont toujours obligatoires, même lorsqu'on n'écrit rien à l'intérieur.

» une liste de valeurs, indispensables àla bonne exécution de la fonction. Ces valeurs s’appellent des arguments, ou des paramètres. Certaines fonctions exigent un seul argument, d’autres deux, etc. et d’autres encore aucun.

2. Les fonctions de texte Une catégorie privilégiée de fonctions est celle qui nous permet de manipuler des chaînes de caractères.

Page 16: M09 TECHNIQUES DE PROGRAMMATION STRUCTUREE  PARTIE1

16

Tous les langages presque, proposent peu ou prou les fonctions suivantes, même si le nom et la syntaxe peuvent varier d’un langage à l’autre :

•Len(chaîne) : renvoie le nombre de caractères d’une chaîne•Mid(chaîne,n1,n2) : renvoie un extrait de la chaîne, commençant au caractère n1 et faisant n2 caractères de long.Ce sont les deux seules fonctions de chaînes réellement indispensables. Mais il y a d’autres:•Left(chaîne,n) : renvoie les n caractères les plus àgauche dans chaîne.•Right(chaîne,n) : renvoie les n caractères les plus àdroite dans chaîne•Trouve(chaîne1,chaîne2) : renvoie un nombre correspondant à la position de chaîne2 dans chaîne1. Si chaîne2 n’est pas comprise dans chaîne1, la fonction renvoie zéro.

Exemples :

Len("Bonjour, ça va ?") vaut 16Len("") vaut 0Mid("Zorro is back", 4, 7) vaut "ro is b"Mid("Zorro is back", 12, 1) vaut "c"Left("Et pourtant…", 8) vaut "Et pourt"Right("Et pourtant…", 4) vaut "t…"Trouve("Un pur bonheur", "pur") vaut 4Trouve("Un pur bonheur", "techno") vaut 0

Il existe aussi dans tous les langages une fonction qui renvoie le caractère correspondant à un code Ascii donné (fonction Asc), et (fonction Chr) :

Asc("N") vaut 78Chr(63) vaut "?"

Page 17: M09 TECHNIQUES DE PROGRAMMATION STRUCTUREE  PARTIE1

17

Partie 5Les tests

1.INTRODUCTIONSoit l’algorithmique du touriste égaré : « Allez tout droit jusqu’au prochain carrefour, puis prenez à droite et ensuite la deuxième à gauche, et vous y êtes ».Mais en cas de doute, cela pourrait devenir : « Allez tout droit jusqu’au prochain carrefour et là regardez à droite. Si la rue est autorisée à la circulation, alors prenez la et ensuite c’est la deuxième à gauche. Mais si en revanche elle est en sens interdit, alors continuez jusqu’à la prochaine à droite, prenez celle-là, et ensuite la première à droite ». Cela suppose que l’interlocuteur (le touriste) sache analyser la condition que nous avons fixée à son comportement (« la rue est-elle en sens interdit ? »)

Mais les ordinateurs possèdent cette aptitude, sans laquelle d’ailleurs nous aurions bien du mal à les programmer.

Nous allons donc pouvoir donner des séries d’instructions à effectuer selon que la situation se présente d’une manière ou d’une autre.

Cette structure logique répond au nom de test. On parle aussi de structure alternative.

2. Structure d’un testIl n’y a que deux formes possibles pour un test ; la

première est la plus simple, la seconde la plus complexe.1.structure simple

2.structure complexe

Si booléen AlorsInstructions

Finsi

Si booléen AlorsInstructions 1

SinonInstructions 2

Finsi

Page 18: M09 TECHNIQUES DE PROGRAMMATION STRUCTUREE  PARTIE1

18

ExplicationUn booléen est une expression dont la valeur est VRAI ou FAUX.

Deux cas de figures se présentent:• une variable (ou une expression) de type booléen• une condition

1. Variable booléen:Dans la forme simple, arrivé à la première ligne (Si… Alors) la machine examine la valeur du booléen. Si ce booléen a pour valeur VRAI, elle exécute la série d’instructions.En revanche, dans le cas où le booléen est faux,

l'ordinateur saute directement aux instructions situées après le FinSi.

2. Condition:Une condition est une comparaison

Cette définition est essentielle ! Elle signifie qu’une condition est composée de trois éléments :

• une valeur• un opérateur de comparaison• une autre valeurLes valeurs peuvent être a priori de n’importe quel type

(numériques, caractères…). Mais si l’on veut que la comparaison ait un sens, il faut que les deux valeurs de la comparaison soient du même type !

Les opérateurs de comparaison sont :•égal à…•différent de…•strictement plus petit que…•strictement plus grand que…•plus petit ou égal à…•plus grand ou égal à…NB: la comparaison concerne aussi les caractères:

“t” < “w” VRAI“Maman” > “Papa“ FAUX“maman” > “Papa” VRAI (vérifier)

3. Conditions composéesCertains problèmes exigent parfois de formuler

des conditions qui ne peuvent pas être exprimées sous la forme simple. Soit le cas « X est compris entre 5 et 8 ». En fait cette phrase a deux conditions. Car elle revient à dire que « X est supérieur à 5ETX est inférieur à 8 ». Il y a donc bien là deux conditions, reliées par ce qu’on appelle un opérateur logique(ET).Il existe opérateurs logiques : ET, OU,NON et XOR.

Page 19: M09 TECHNIQUES DE PROGRAMMATION STRUCTUREE  PARTIE1

19

Ces opérateurs logiques peuvent être regroupés dans des tables de vérité (C1 et C2 représentent deux conditions, et on envisage à chaque fois les quatre cas possibles)

FAUXFAUXC2 FAUXFAUXVRAIC2 VRAIC1 FAUXC1 VRAIC1 ET C2

FAUXVRAIC2 FAUXVRAIVRAIC2 VRAIC1 FAUXC1 VRAIC1 OU C2

VRAIC1 FAUXFAUXC1 VRAI

NON C1

4.Tests imbriquésEXEMPLE 1:Variable Temp en EntierDébutEcrire "Entrez la température de l’eau :"Lire TempSi Temp =< 0 AlorsEcrire "C’est de la glace"

FinSiSi Temp > 0 Et Temp < 100 AlorsEcrire "C’est du liquide"

FinsiSi Temp > 100 AlorsEcrire "C’est de la vapeur"

FinsiFin

On test la même valeur 3 fois. C’est lourd!!!

EXEMPLE 2:Variable Temp en EntierDébutEcrire "Entrez la température de l’eau :"Lire TempSi Temp =< 0 Alors

Ecrire "C’est de la glace"Sinon

Si Temp < 100 AlorsEcrire "C’est du liquide"

SinonEcrire "C’est de la vapeur"

FinsiFinsiFin

Nous avons fait des économies : au lieu de devoir taper trois conditions, dont une composée, nous n’avons plus que deux conditions simples. Mais aussi, et surtout, nous avons fait des économies sur le temps d’exécution de l’ordinateur. Si la température est inférieure à zéro, celui-ci écrit dorénavant « C’est de la glace » et passe directement à la fin, sans être ralenti par l’examen d’autres possibilités (qui sont forcément fausses).Cette deuxième version n’est donc pas seulement plus simple à écrire et plus lisible, elle est également plus performante à l’exécution.Les structures de tests imbriqués sont donc un outil indispensable à la simplification et à l’optimisation des algorithmes.