algoritthme_10_11

25
1 Chap I. Algorithme Comment résoudre un problème donné en Informatique ? Par une suite de règles et de techniques de calcul nécessaire à la solution du problème dans une durée limité. Algorithme est une suite finie et non-ambiguë d’opérations permettant de donner la réponse à un problème. 1) Rappel Un ordinateur est une machine qui dispose : D’un Microprocesseur pour traiter les données Et d’une Mémoire pour stocker ces données Architecture des ordinateurs microprocesseu Mémoire Bus d’adresses Bus de données Bus de commande Read/Write Unité de Traitement U. A. L. Unité de Commande Registre Registre A Bus D Bus de 1111 0000 0001 0010 0011 0100 Case Adress 1011 0101 0101 1001 2) Introduction Calculer 5 + 4 = ? (9) Calculer 5 + 8 = ? (13) Calculer 576 + 847 = ? Méthode 1 5 1 76 + 847 =1423 2. 1) Notion de base de l’algorithme Toutes données qui n’est pas stocker dans la mémoire ne peut pas être traiter Exemple On désire additionner 5 + 8 = 13 Il faut stocker le 5 dans un Mot mémoire Il faut stocker le 8 dans un autre Mot mémoire Réaliser l’addition des deux Mots (5+8)

Upload: meryem-amajoud

Post on 25-Jun-2015

136 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Algoritthme_10_11

1

Chap I.

Algorithme

Comment résoudre un problème donné en Informatique ? Par une suite de règles et de techniques de calcul nécessaire à la solution du problème

dans une durée limité.

Algorithme est une suite finie et non-ambiguë d’opérations permettant de donner la réponse à un problème. 1) Rappel Un ordinateur est une machine qui dispose :

D’un Microprocesseur pour traiter les données Et d’une Mémoire pour stocker ces données

Architecture des ordinateurs

microprocesseu

Mémoire

Bus d’adresses

Bus de données

Programme

Données

Bus de commande

Read/Write

Unité de Traitement

U. A. L.

Unité de Commande

Registre

Registre

A Bus

D Bus de

1111

0000

0001

0010

0011

0100

Case

Adress

1011 0101

0101 1001

Mot mémoire (donnée

ou instr

2) Introduction Calculer 5 + 4 = ? (9) Calculer 5 + 8 = ? (13) Calculer 576 + 847 = ? Méthode 15176 + 847 =1423 2. 1) Notion de base de l’algorithme Toutes données qui n’est pas stocker dans la mémoire ne peut pas être traiter Exemple On désire additionner 5 + 8 = 13 Il faut stocker le 5 dans un Mot mémoire Il faut stocker le 8 dans un autre Mot mémoire Réaliser l’addition des deux Mots (5+8)

Page 2: Algoritthme_10_11

2

Stocker le résultat de l’addition 13 dans un Mot mémoire Chaque Mot mémoire doit porter un nom une variable Pour stocker une valeur (ex: 5 ) dans un Mot mémoire : 1) Réserver une adresse sur la mémoire (via une variable ex : a ) 2) Attribuer à l’adresse mémoire (à la variable a ) la valeur (5 ) Pour attribuer une valeur (ex: 5 ) au Mot mémoire (la variable : a ) il y’ a deux façon de faire : i) Soit par affectation directe a 5 (mettre 5 dans a) ii) Soit via une saisie sur le clavier : lire(a) où saisir(a) Comment additionner 5 + 8 = 13 Première Méthode : Via l’affectation 1) Réservation des variables Var a, b, c : réel

Réserve 3 Mots mémoire dont les noms sont :a, b, c qui sont tous des réelles

2) Affectation des valeurs aux variables

a 5 b 8

On affecte à : a la valeur 5 b la valeur 8

3) Additionner les valeurs

c a + b

Additionner (5+8) et mettre dans c

4) Afficher le résultat

écrire(c )

Affiche le résultat à l’écran

Deuxième Méthode : Via la saisie des données au clavier 1) Réservation des variables Var a, b, c : réel

Réserve 3 Mots mémoire dont les noms sont :a, b, c qui sont tous des réelles

2) Saisir les valeurs au clavier

saisir(a) saisir(b)

Saisir (a, b) à partir du clavier

3) Additionner les valeurs

c a + b

Additionner (5+8) et mettre dans c

4) Afficher le résultat

écrire(c )

Affiche le résultat à l’écran

2. 2) Exemple de résolution d’un Problème informatique 2. 2. 1) Problème : Résoudre l’équation d’ordre 1 aX + b = c Résultat : Qu’est ce qu’on veut ? X = (c-b)/a

Page 3: Algoritthme_10_11

3

i) Qu’est ce qu’ on doit donner à la machine ? (les entrées : les grandeurs connues) ? a, b, c : Préciser leurs types (entiers, réelles, …)

ii) Qu’est ce qu’on doit récupérer ? (sorties : les grandeurs inconnues) X : Préciser sa nature (entier, réelle , …)

iii) Qu’elle est l’enchaînement des opérations à réaliser ? Les relations entre les grandeurs connues et les grandeurs inconnues

iv) Préciser l’ordre d’enchaînement ? des relations i) Entrées (Les grandeurs connues) a, b, c (Réels) ii) Sorties (Les grandeurs inconnues) X (Réel) iii) l’enchaînement des opérations à réaliser

Si a = 0 alors écrire (pas de solution réel) FinSi Sinon X (c – b)/a écrire (x) FinSinon a) Algorithme de résolution Algo prem_ordre Var a, b, c :Réel X : Réel Dédut Lire(a, b, c) Si a = 0 alors écrire (pas de solution réel) FinSi Sinon X (c – b)/a écrire (x) FinSinon FIN b) La traduction en Pascal Program prem_ordre; Var a, b, c :Real; X : Real; begin read(a, b, c); if (a = 0) then begin write (‘pas de solution réel’); end else begin X := (c – b)/a; write (X); end; End.

Page 4: Algoritthme_10_11

4

c) La traduction en C #include <stdio.h> void main (void){ float a, b, c ; float x; scanf(“%f”, &a); scanf(“%f”, &b); scanf(“%f”, &c); if (a == 0) printf(“pas de solution réel”); else { x = (c – b)/a; printf(“%f”, x); } } 2.2.2) Exercice

Résoudre l’équation de second degré aX2 + bX + c = 0

Solution : 2a4acbbX

2a4acbbX

2

2

2

1

−−−=

−+−=

La résolution de ce système consistera : i) Qu’est ce qu’on doit donner à la machine (d'entrées : les grandeurs connues) ? ii) Qu’est ce qu’on doit Récupérer ? iii) Qu’elle est l’enchaînement des opérations à réaliser ? iv) Préciser l’ordre d’enchaînement Réponse i) Entrées (Les grandeurs connues) a, b, c (Réels) ii) Sorties (Les grandeurs inconnues) X1, X2 (Réels) iii) L’enchaînement des opérations à réaliser Si (a = 0) alors Si (b = 0) alors Afficher (‘pas de solution réel’) Sinon X2 - c/b Afficher(X2) FinSi Sinon delta = b*b – 4 *a *c delta est donc un variable intermédiaire Si (delta >=0) alors X1 (- b + sqrt(delta))/(2*a) X2 (- b - sqrt(delta))/(2*a) Afficher(X1,X2) Sinon Afficher (‘pas de solution réel’) FinSi FinSinon

Page 5: Algoritthme_10_11

5

a) L’algorithme correspondant sera :

Algo trinome

Var

a, b, c, X1, X2, delta : reels

debut

Afficher(‘donner trois reel a, b, c’)

Lire(a,b,c)

Si (a = 0) alors Si (b = 0) alors Afficher (‘pas de solution réel’) Sinon X2 - c/b Afficher(X2) FinSi Sinon delta b*b – 4 *a *c Si (delta >=0) alors X1 (- b + sqrt(delta))/(2*a) X2 (- b - sqrt(delta))/(2*a) Afficher(X1,X2) Sinon Afficher (‘pas de solution réel’) FinSi FinSinon Fin Algo

b) En langage C cet algorithme s’écrit :

#include <stdio.h> //la bibliothèque qui gère les Entrées et les Sortie

#include <math.h> //la bibliothèque mathématique

void main(void) { // l'entrée à l'exécutable

float a, b, c, X1, X2, delta; // a, b, c, X1, X2, delta : reels

printf("donner trois reel a, b, c \n" ); // Afficher('donner trois reel a, b, c')

scanf("%f%f%f",&a,&b,&c); // Lire(a,b,c)

if(a==0) //Si (a = 0) alors

if(b==0) //Si (b = 0) alors

printf("pas de solution reel \n") ; //Afficher ('pas de solution réel')

else{ //Sinon

X2= -c/b; //X2 - c/b

printf("%f\n",X2) ; //Afficher(X2)

}

Page 6: Algoritthme_10_11

6

else{

delta=b*b-4*a*c;

if (delta >=0){

X1 = (- b + sqrt(delta))/(2*a);

X2 = (- b - sqrt(delta))/(2*a);

printf("%f %f\n",X1,X2) ; //Afficher(X1,X2)

}

else

printf("pas de solution reel \n") ;

}

}

c) En Pascal il s’écrit :

Program trinome ;

Var

a, b, c, X1, X2, delta :real;

begin

writeln(‘donner trois reel a, b, c’);

read(a,b,c);

if(a=0) then

if(b=0) then

writeln(‘pas de solution reel’) ;

else

begin

X2 := -c/b;

writeln(‘X2’);

end

else

begin

delta:=b*b-4*a*c;

if (delta >=0) then

begin

X1 := (- b + sqrt(delta))/(2*a);

X2 := (- b - sqrt(delta))/(2*a);

writeln(X1,X2) ;

Page 7: Algoritthme_10_11

7

end

else

writeln(‘pas de solution reel’) ;

end ;

end.

3) Définition et représentation

Un algorithme est une suite d'opérations élémentaires dans un ordre bien défini.

Dans la pratique la résolution informatique d'un problème donné comporte

plusieurs étapes préliminaires à l'exécution du programme :

i) Etude du projet (Problème)

Identification : - Les variables d'entrées (Les grandeurs connues)

- Les variables de sorties (Les grandeurs à connaître)

- Les relations entres Les grandeurs : déterminer un modèle

ii) Réalisation du modèle :

- déterminer un enchaînement d'opérations produisant Les grandeurs

recherchées à partir des grandeurs connues

- établir un schéma de résolution.

iii) Phase de spécification

Exprimer le schéma de résolution d'une manière précise et complète en terme

Informatique :

- description des traitements (produire des algorithmes)

- description de donnes

iv) Phase de traduction :

Traduire les Algorithmes et les descriptions de donnes dans un langages de

programmation.

Résumé :

Problème (flou) ----[Analyse]---> Modèle ----[Spécification]---> Algorithme ---

[Traduction]---> Programme ---[Exécution]---> Résultats.

3. 1) Une méthode d'Analyse de Problèmes

i). Déterminer le problème à résoudre:

(a) quelles sont les entrées et quelle est leur nature ?

(b) quelles sont les sorties pour chaque cas des entrées ?

ii). Déterminer la méthode:

Page 8: Algoritthme_10_11

8

(a) comment modéliser les données (d'entrée, sortie, intermédiaires) ?

(b) quelles sont les sous-tâches ?

(c) exprimer sous-forme d'algorithme la manière d'obtenir le résultat final à

partir des résultats des sous-tâches.

(d) détailler les sous-tâches.

iii). Correction, complétude et lisibilité

(a) A-t-on bien prévu tous les cas des entrées et sorties ?

(b) Obtient-on dans chaque cas ce que l'on voulait calculer ?

(c) Avons nous introduit suffisamment d'abstraction dans l'algorithme ?

(d) Notre algorithme est-il compréhensible par quelqu'un d'autre ?

3.2) Exemple 1:

Enoncé du problème:

Calculer la somme des carrés de deux nombre entiers donnés x2 + y2 Analyse:

i). Déterminer le problème à résoudre:

(a) les entrées et leur nature : deux nombres entiers x, y

(b) les sorties pour chaque cas des entrées : un entier z tel que z= x2 + y2

ii). Déterminer la méthode:

(a) modélisation des données: x, y, z modélisés par des entiers.

(b) les sous tâches : calculer x2, y2

(c) l'algorithme

1. calculer a = x2

2. calculer b = y2

3. calculer z = a + b

4. le résultat final est z

(d) L'algorithme est-il assez détaillé ?.

Détail des sous calculs :

x2 = x*x, y2 = y*y

Données + algorithme:

• Données:

entrées: x ,y nombres entiers

sortie: z nombre entier.

• Algorithme:

1. calculer a = x*x

2. calculer b = y*x

Page 9: Algoritthme_10_11

9

3. calculer z = a + b

4. le résultat final est z

a) L’algorithme correspondant :

Algo somme

Var

x, y, z entiers

a, b entier

debut

afficher(‘donner deux entiers x, y’)

lire(x,y)

a x*x

b y*y

z a+b

afficher(‘le resultat est z =’, z)

fin algo

b) Un codage possible en Pascal c) Un codage possible en C

program somme_carre1; #include <stdio.h>

Var void main(void){

x, y, a, b, z: integer; int x, y, a,b,z ;

begin printf("donner deux entiers \n") ;

writeln(‘donner deux entiers’) ; scanf("%d%d",&x,&y) ;

read(x,y); a=x*x;

a:= x*x; b=y*y;

b:= y*y; z=a+b;

z:= a+b; printf("Le resultat final est z= %d\n",z) ;

write (‘Le resultat final est z = ‘, z); }

end.

3.3) Structure de programme Algorithmique

Algo nom de l'Algo

Constantes

.....

Defintion de type

..........

Var

Page 10: Algoritthme_10_11

10

.....

DEBUT

.....

Corps de l’algorithme

..........

FINAlgo

4) Eléments de langages algorithmique

4.1) Affectation

Elle consiste à donner une valeur à une variable. Cette valeur peut être une

simple valeur (2) ou une expression (2*sin(60/180*3.1415)).

La valeur et la variable sont toute les deux de même type.

Syntaxe :

Nom_variable Expression

Nom_variable valeur

Nom_variable Nom_variable

Exemple

Var

A : Réel

nom_etudian : chaine de caractère

nbr_etudiant : Réel

Début

A 5

A 3*A+2

nbr_etudiant A

nom_etudian "Hajjar"

Fin

L'affectation ne détruit pas la source.

Exemple

a, b entiers

a 7

b 5

b a

Dans b on va retrouver 7 et a gardera 7

Important :

Page 11: Algoritthme_10_11

11

Pour l’ordinateur chaque variable est une case mémoire caractérisée par une

adresse unique à l’intérieur de la mémoire (RAM), pour changer son contenu, ou pour

lui attribuer une valeur, on doit impérativement passer par l’affectation.

4.2) Les opérations d'entrées/sorties

Ces deux actions expriment la communication entre l'utilisateur et l'algorithme.

L’entrée : elle permet à l’utilisateur de fournir des donnée à l’algorithme

(comment introduire les valeurs qu’on doit affecter aux variables).

La sortie : elle va permettre à l’utilisateur d’afficher les résultats sur l’écran ou

dans un fichier (comment afficher le résultat des calculs).

a) Entrée

Elle est réalisée à l’aide d’une fonction « Lire ou Saisir », elle est utilisée pour

saisir des valeurs au clavier ou à partir d’un fichier.

Syntaxe : (comment on peut l’utiliser)

Lire(liste des variables séparées par des virgules)

Exemple :

nom_etudian : chaîne de caractère

nbr_etudiant :réel

a, b, c réel

Lire(nom_etudian) : Cela affichera une boite de dialogue dans laquelle on saisira le nom de l’étudiant qui sera affecté à la variable nom_etudian. lire (nbr_etudiant) : Cela affichera une boite de dialogue dans laquelle on saisira

le nombre d’étudiant qui sera affecté à la variable nbr_etudiant.

lire(a,b,c) : Cela affichera une boite de dialogue dans laquelle on saisira les

nombres réels a, b, c qui seront affecté respectivement aux variables a, b, c.

b) La sortie

Elle est réalisée à l’aide de la fonction « Ecrire ou Afficher », elle est utilisée

pour afficher les résultats à l’écran ou dans un fichier.

Syntaxe : (comment on peut l’utiliser)

ecrire(liste des variables séparées par des virgules)

Exemple

Exemple

Var

note : réel

a,b, c réel

Début

Page 12: Algoritthme_10_11

12

lire(note)

ecrire(" la note est " , note)

a 5

b 7

c 5

ecrire(a,b,c)

Fin

4.3) Les données élémentaires (Les objets manipulés dans un algorithme)

a)Variables et constantes

Dans un Algorithme on peut distinguer

- les objets d'entrées : données fournies à l'algorithme

- les objets de sorties : résultats produit par l'algorithme

- les objets internes : données de manoeuvre de l'algorithme

Dans un algorithme il y a deux sortes d’objets :

a-1) variables : leurs valeurs peuvent changer à n’importe quel moment dans

l’algorithme via l’affectation.

Exemple :

Var

a, b : Réel

nom_etudian chaîne de caractères

nom_etudian, est une variable.

nom_etudian "Hajjar"

nom_etudian "Sanaa"

nom_etudian "Hammid"

a 5

b 7

a b*3+1

a-1) constantes : leurs valeurs ne change jamais dans l’algorithme, c’est un paramètre.

Exemple :

Const

TVA = 0.20

TVA est une constante qui caractérise le taux de TVA. elle sera unique dans tout

l’algorithme.

TVA 0,07 Non pas possible

Page 13: Algoritthme_10_11

13

Pour définir un objet (une donnée élémentaire : variable ou constante) on doit

préciser :

Le nom de la variable.

Ce nom doit avoir sens et un type qui va caractérisé la variable

b) le nom et le sens des objets (données)

Le nom est composé d'une chaîne de caractère alphanumérique (contenant des

lettres et des chiffres), dont le premier caractère est alphabétique (une lettre), sans

accent ni caractères spéciaux.

Ce nom doit être significatif, simple, parlant, efficace.

Exemple :

nom_etudiant, nbr_etudiant, tauxtva.

c) Type de données

Caractérise les valeurs que peut prendre cet objet et les actions autorisées sur

l'objet.

On distingue :

c - 1) types simples (standards) prédéfinies :

i) Entier : leurs valeurs, est un sous ensemble fini de Z exemple (-20, -2, 125, 32767)

ii) Réel : les valeurs des variables, est un sous ensemble fini des décimaux relatifs

exemple (23.57, 3.14, 1.0e-6).

Les opérations possibles sur les entiers et les réels sont :

La multiplication (noté *), l’addition (noté +), la soustraction (noté -), la

division (noté /), plus les opérations de comparaisons inférieur (noté<), inférieur ou

égale (noté<=), supérieur (noté >), supérieur (noté>=), égale (noté =), différent (noté

≠).

iii) Caractère : elle prend ses valeurs dans l'ensemble des codes de représentation des

caractères normalisés (codes ASCII).

Les opérations possibles sur les caractères sont :

Inférieur (noté<), inférieur ou égale (noté<=), supérieur (noté >), supérieur

(noté>=), égale (noté =), différent (noté ≠).

iv) Booleen : deux valeurs (vrai (1) /faux (0))

Les opérations possibles sur les booléens sont :

Non (noté not), et (noté and), ou (noté or).

c - 2) types Structurées

Page 14: Algoritthme_10_11

14

i) Chaîne de caractère : au lieu d'un seul caractère l'objet peut contenir un ensemble de

caractères exemple "mohamed", "bonjour tout le monde".

ii) Enuméré

Exemple

couleur (noire (0), blanc (1), rouge (2)).

iii) Tableau :

Est un ensemble de variables de même type aux quelles on peut

appliquer le même traitement l'ensemble de ces variables (exemple : lire, écrire,

additionner, multiplier,...,).

iii - 1) Tableau à une dimension

Déclaration

nom_tableau[n] : Type n est le nombre d'éléments du tableau.

L'accès à un élément de tableau se fait par :

nom_tableau[i] 13.5 i est le numéro de l'élément et 13.5 sa valeur.

Exemple :

Supposons que l'on désire conserver les notes de 63 étudiants d'une classe :

l'utilisation de 63 variables séparées est vraiment onéreux, la solution est d'utiliser un

tableau, cela consiste :

- Attribuer un seul nom à l'ensemble des 63 variables (exemple note), suivit

entre crochet de nombre des variables (dimension) (exemple : note[63])

- Chaque variable sera repérer par le nom de tableau suivit entre crochet d'un

numéro (indice) compris entre 1 et 63.

note[63] reel note est un tableau de 63 éléments tous des réels

Vocabulaire

- note[i] désigne un élément du tableau note, donc une valeur

- i entre crochet se nome indice il prend les valeurs 1 à 63

Important

Chaque élément du tableau est assimilable à une variable, donc on peut les utiliser exactement comme n'importe quelle variable (affectation, condition,...) à condition que la valeur de l'indice ne dépasse pas la taille du tableau iii - 2) Tableau à deux dimensions

Déclaration

nom_tableau[n,m] : Type n x m est le nombre d'éléments du tableau

n étant le nombre de lignes et m le nombre de colonnes.

L'accès à un élément de tableau ce fait par :

Page 15: Algoritthme_10_11

15

nom_tableau[i,j] i est le numéro de la ligne j est le numéro de colonne.

Exemple

Pour garder les notes des 6 modules pour les 22 étudiants on a recoure à un

tableaux

note[22,6] : reel un tableau de 22 x 6 éléments tous des réels (22 est le

nombre d'étudiants et 6 le nombre de module (pour une année donnée)).

note[10,4] 13.5.

La note obtenu par l'étudiant n°10 au module n°4 sera note[10,4]

5) Les structures algorithmiques

5.1) Enchainement séquentiel

La fin d'une instruction déclenche l'exécution de la suivante :

Debut -------> [Instruction1] -------> [Instruction2] -------> [Instruction3] -------> Fin.

Exemple :

Calculer la somme des carrés de deux entiers :

L’algorithme correspondant :

Algo somme

Var

x, y, z entiers

a, b entier

debut

afficher(‘donner deux entiers x, y’)

lire(x,y)

a x*x

b y*y

z a+b

afficher(‘le resultat est z =’, z)

fin algo

D’abord il faut lire x et y ; ensuite calculer a ; après b ; ensuite z, et finalement afficher

le résultat.

5.2) Enchaînement conditionnel (Si):

a) Alternative simple

Syntaxe :

Si (condition) Alors

<Bloc d'instructions>

Page 16: Algoritthme_10_11

16

<Bloc d'instructions> = ensemble d'actions enchaînées séquentiellement.

L'exécution commence par la première et fini par la dernière.

Organigramme:

conditionvraie

oui non

Bloc d'

instructions

suite du programme Exemple :

Calculer la racine d’un réel positif Admission pour un module

Algo Racine_reel

Var

x, racin : Reel

Debut

lire(x)

Si (x >= 0) alors

racin x

ecrire(racin)

Finsi

Fin

Algo Valide_Module

Var

note : Reel

Debut

lire(note)

Si (note >= 10) alors

ecrire("Admis")

Finsi

Fin

Page 17: Algoritthme_10_11

17

oui non

racin x ecrire(racin)

suite du program m e

x>= 0

oui non

ecrire("A dm is")

suite du program m e

note>= 0

b) Alternative complète

Syntaxe :

Si (condition) Alors

<Bloc d'instuctions1>

Sinon

<Bloc d'instuctions2>

Organigramme:

condition

vraie

bloc d' Instructions1

bloc d' Instructions2

oui non

suite du programme

Exemple

Recherche le maximum de deux réels

Var

a, b, max : Reel

Page 18: Algoritthme_10_11

18

Debut

Si (a > b) Alors

maxi a

Sinon

Maxi b

FinSi

Afficher(maxi)

Fin

c) Choix multiples (Selon)

Syntaxe :

Selon (expression)

valeur_1 : <Bloc d'instuctions1>

valeur_2 : <Bloc d'instuctions2>

.

.

.

valeur_p : <Bloc d'instuctionsp>

Sinon <Bloc d'instuctions> // Facultaif

FinSelon

Expression = (entier ou caractère).

Exemple : Algo jourdelasemaine Var n :entier Jour chaîne de caractères Selon (n) 1 : jour "Lundi" ecrire(jour) 2 : jour "Mardi" ecrire(jour) 3 : jour "Mercredi" ecrire(jour) 4 : jour "Jeudi" ecrire(jour) 5 : jour "Vendredi" ecrire(jour) 6 : jour "Samedi" ecrire(jour) 7 : jour "dimanche" ecrire(jour) Sinon ecrire("Pas de jour correspondant") FinSelon 5.3) Les structures itératives

a) La boubcle TANTQUE ...

Syntaxe :

Tantque (condition) faire

<Bloc d'instuctions>

maxi a maxi b

oui non

Afficher(maxi)

a > b

Page 19: Algoritthme_10_11

19

FinTQ

Organigramme:

condition vraie

oui non

bloc d'

instructions

suite du programme

Cette structure permet d'évaluer la condition avant d'entrer dans la boucle.

Exemple calculer la somme des N premiers entiers

Somme_entier

Var

nbr_ent, i, som : Entier

Debut

lire(nbr_ent)

i 1

som 0

Tantque (i <= nbr_ent) faire

debut

som som + i

i i+1

FinTQ

ecrire(som)

Fin

b) La boucle Repeter ...Jusqu'a

Syntaxe :

Repeter

<Bloc d'instuctions>

jusqu'a (condition)

Organigramme:

i <= nbr_ent oui non

som som + i

i i + 1

Page 20: Algoritthme_10_11

20

bloc d'

instructions

condition vraie non

suite du programme

oui

Exemple calculer le produit des N premiers entiers

produit_entier

Var

nbr_ent, i, pr : Entier

Debut

lire(nbr_ent)

i 1

pr 1

Repeter

debut

pr pr * i

i i+1

Jusqu'a (i > nbr_ent)

ecrire(prt)

Fin

c) La boucle Pour ... Faire

Syntaxe :

Pour compteur début, fin, pas Faire

<Bloc d'instuctions>

FinPour

Organigramme:

non

afficher(pr)

oui

pr - pr * i

i i + 1

i > nbr_ent

Page 21: Algoritthme_10_11

21

bloc d'instructions

oui

suite du programme

initialisation

condition de continuité vraie

non

modification

Exemple calculer de factorielle d'un N entier

factorielle

Var

nbr_ent, i, facto : Entier

Debut

lire(nbr_ent)

facto 1

pour i 1, nbr_ent, pas=1 faire

facto facto * i

finPour

ecrire(facto)

Fin

6) Les procédures et les fonctions

Elles permettent d'éclaircir un algorithme en le transformant en plusieurs petits algorithmes plutôt que d'avoir tous le programme en un seul bloc. Utilisation : Exemple : Dans une application commerciale, on pourra calculer le montant d'une facture plusieurs fois. Comment savoir si on doit utiliser une procédure ou une fonction: - La procédure ne renvoie pas de valeur

i 1

facto facto * i

i i + 1

oui

i < nbr_ent

afficher(facto)

non

Page 22: Algoritthme_10_11

22

- La fonction renvoie une valeur (1 seule) Ecrire un programme pour additionner et soustraire deux nombres, respectivement. -Utilisant les procédures et les fonctions, - Ecrire un sous programme (procédure) "Addition" pour additionner les deux nombres -Ecrire un sous programme (fonction) "Soustraction" Alggo sous_addition VARIABLES //Variables globales qui seront utilisées à la fois par l'algo //principal et par les procédures et fonctions Nombre1 : réel Nombre2 : réel Reponse : entier Resultat : réel DEBUT REPETER Afficher (" Choisir l'opération ") Afficher ("1. Addition") Afficher ("2. Soustraction") Afficher ("3. Quitter") Afficher ("Veuillez sélectionner une opération.") Saisir (Reponse) SI Reponse = 1 ALORS Addition () //Appel de la procédure Addition SINON SI Reponse = 2 ALORS Resultat <--- Soustraction //Appel de la fonction Soustraction FINSI JUSQU'A Reponse = 3 FIN PROCEDURE Addition () DEBUT Afficher ("Saisir le 1er nombre ") Saisir (Nombre1) Afficher ("Saisir le 2ème nombre ") Saisir (Nombre2) Resultat = Nombre1 + Nombre2 Afficher ("Le résultat de cette addition est", Resultat) FIN FONCTION Soustraction () : réel DEBUT AFFICHER ("Saisir le 1er nombre ") ENTRER (Nombre1) Afficher ("Saisir le 2ème nombre ") Saisir (Nombre2) Resultat = Nombre1 - Nombre2 Retourner Resultat FIN

Page 23: Algoritthme_10_11

23

Exercices Opérations d'entrées/sorties Exercice 1 On veut que l'ordinateur affiche à l'écran la question : "Quel est ton prénom". Que l'utilisateur saisisse au clavier son prénom, et que le programme se termine par l'affichage à l'écran de : "Bonjour" suivi du prénom. Exercice 2 Écrire le programme qui calcule le carré d'une valeur réelle saisie au clavier, et affiche le résultat. Exercice 3 Écrire le programme qui saisit un prix unitaire, une quantité et qui calcule le prix total. La structure alternative Exercice 4 Dans le programme d'une facture, il nous faut effectuer une remise de 10% lorsque son montant HT dépasse 5000 DH. Faire saisir le montant de la facture et dire s'il y aura une remise ou non. Afficher le montant de la facture La structure itérative Exercice 5 Pour cet exercice, utilisez l'instruction REPETER ... JUSQU'A On veut saisir la note d'un étudiant à un contrôle. Cette note doit obligatoirement être comprise entre 0 et 20 sinon, on doit effectuer à nouveau la saisie. Exercice 6 Pour cet exercice, utilisez l'instruction REPETER ... JUSQU'A On veut saisir les notes d'une matière pour chaque étudiant d'une classe. Si l'utilisateur saisi une note supérieur à 20, on stoppe la saisie. On souhaite ensuite afficher le nombre de notes qui sont supérieur à 10. Pour cela, il faut avoir recours à une variable compteur de type entier, qui va compter le nombre de fois que l'on passe dans la boucle. Comment ? Tout simplement en initialisant le compteur à 0 et en ajoutant 1 à chaque passage. Voila qui devrait vous aider. Exercice 7 Pour cette exercice, utilisez l'instruction TANTQUE .. FINTQ On veut saisir les notes d'une matière pour chaque étudiant d'une classe. Si l'utilisateur saisi une note supérieur à 20, on stoppe la saisie. On souhaite ensuite afficher le nombre de notes comprises entre 8 et 12. Pour ces 2 exercices, utilisez l'instruction POUR ... FINPOUR Exercice 8 On veut calculer et afficher la moyenne de 30 notes saisies au clavier par l'utilisateur. Exercice 9 Même exercice que le précédent sauf qu'il faut vérifier que les notes saisies sont bien comprises entre 0 et 20. Les tableaux à une dimension Exercice 10 Écrire le programme qui affecte les voyelles de l'alphabet dans un tableau et qui affiche à l'écran les valeurs contenues dans ce tableau Exercice 11 Que fait l'algorithme suivant ? Renommer les variables bidon1 et bidon2 avec des noms de variables plus significatifs. Variables

Page 24: Algoritthme_10_11

24

Tableau Bidon1 [10] : Entier Tableau Bidon2 [10] : Entier i : entier Début POUR i <--- 1 à 10 pas = 1 FAIRE Afficher ("Saisir une valeur entière :") Saisir (Bidon1[i]) Bidon2 [i] Bidon1 [i]*Bidon1 [i] FINPOUR POUR i <--- 1 à 10 pas = 1 FAIRE Afficher ("Valeur de la ", i, "ième position de bidon2 :", Bidon2 [i]) FINPOUR FIN Exercice 12 Terminer l'algorithme ci-dessous de manière à ce qu'il calcul la moyenne des notes saisies via un tableau Note contenant 20 réels. Variables Tableau Note [20] : Réel i : entier Début POUR i <--- 1 à 20 pas = 1 FAIRE Afficher ("Saisir la ", i, "ième note :") Saisir (Note [i]) FINPOUR Fin Exercice 13 Compléter l'algo précédent de façon à déterminer la meilleure et la plus mauvaise note Exercice 14 Que fait l'algo suivant ? Compléter le de façon à calculer et afficher la moyenne des notes du trimestre pour chaque étudiant de la classe Variables Tableau Note [20,5] : Réel i, j : Entier Début POUR i <--- 1 à 20 pas =1 FAIRE POUR j <--- 1 à 5 pas= 1 FAIRE Afficher ("Saisir la note de la ligne ",i, " et de la colonne ",j) Saisir (Note [i,j]) FINPOUR FINPOUR Fin Exercice 15 Compléter l'algo précédent par le calcul et l'affichage de la moyenne générale de la classe pour ce trimestre.

Page 25: Algoritthme_10_11

25

Problèmes I) La suite Un définie par :

U0 = 1.0 é Un = 12 (

AUn-1

+ Un-1 ) A : réel positif et Un réelle,

Converge vers la racine carrée de A (lim(n——>+∞) (Un) = A ) Ecrire un algorithme pour calculer la racine carrée d’un nombre réel donné avec une précision de 10-6 .

Donner l'organigramme correspondant II) Soit la suite définie par : U0 =1 ; Un+1 = (n+1) Un

Ecrire un algorithme pour calculer la factorielle d'un entier donnée. Donner l'organigramme correspondant.

III) Soit la série définie par :

Sn = ∑−

=

n

i i

i

1

)1(

Ecrire un algorithme pour calculer Sn ? Donner l'organigramme correspondant. IV) Ecrire un Algorithme pour calculer la valeur de (π = 3.1415...) avec une précision de 10-6 près en utilisant la série numérique suivante :

2π = ∑

+∞

= +0 )12....(5.3.1!

k kk

Sachant que cette série peut s’écrire :

u0 = 1.0 2π = u0 + ∑

+∞

= +1 )12(k kk uk-1

Utiliser les deux structures de contrôle TantQue … faire et repeter ...jusqu’a. V) Soit le développement de la fonction Exp(x) :

ex = ∑i=0

n xii! du terme général Ui(x) =

xii! = Ui-1(x) *

xi (avec n——>+∞)

x est une variable réelle à lire à l'écran Donner un algorithme permettant de calculer ex à 10-4 près. Donner

l'organigramme correspondant.