0% ont trouvé ce document utile (0 vote)
21 vues63 pages

Introduction

Transféré par

Houda Ait Oumghar
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
21 vues63 pages

Introduction

Transféré par

Houda Ait Oumghar
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

ALGORITHMIQUE

ET PROGRAMMATION
INFORMATIQUE

1 ère année Cycle Master


DPEIC
2023/2024

Pr. SARA RETAL

1
OBJECTIF DU COURS

1 NOTION DE BASE EN ALGORITHMIQUE


2 DÉCLARATION DES DONNÉES
3 LECTURE ÉCRITURE DE DONNÉES
4 EXEMPLE D’ÉNONCÉ D’UN PROBLÈME : phase d’analyse
5 STRUCTURE ALTERNATIVE
6 STRUCTURE RÉPÉTITIVE

2
NOTION DE BASE EN
ALGORITHMIQUE

3
CONCEPTS IMPORTANTS EN
INFORMATIQUE

• Algorithme : mot dérivé du nom du mathématicien al_Khwarizmi qui a vécu au 9ème siécle, était
membre d’un académie des sciences à Bagdad .

• Un algorithme prend des données en entrée, exprime un traitement particulier et fournit des
données en sortie.

• Programme : série d’instructions pouvant s’exécuter en séquence, ou en parallèle (parallélisme


matériel) qui réalise (implémente) un algorithme

4
CONCEPTS IMPORTANTS EN
INFORMATIQUE

5
CONCEPTS IMPORTANTS EN
INFORMATIQUE

6
POURQUOI UN COURS D’ "ALGO" ?

•Pour obtenir de la «machine» qu’elle effectue un travail à notre place.

•Problème: expliquer à la «machine» comment elle doit s'y prendre.

• Besoins :
• savoir expliciter son raisonnement
• savoir formaliser son raisonnement
• concevoir (et écrire) des algorithmes: séquence d’instructions qui décrit comment résoudre un
problème particulier

7
ALGORITHME

• Savoir expliquer comment faire un travail sans la moindre ambiguïté

• Langage simple : des instructions (pas élémentaires)

• Suite finie d'actions à entreprendre en respectant une chronologie imposée

• L’écriture algorithmique : un travail de programmation à visée universelle

• Un algorithme ne dépend pas du langage dans lequel il est implanté, ni de la machine qui exécutera le
programme correspondant.

8
EXEMPLE D’ALGORITHMES

• Recette de cuisine
• Notice de montage de meuble en kit

• Mathématiques : problème 3n+1: élémentaire mais


redoutable
si n est pair, on le divise par 2 ;
si n est impair, on le multiplie par 3 et on ajoute 1.
Est-il vrai que l’on finira tôt ou tard par tomber sur 1 ?
9
EXEMPLE DE LANGAGE ALGORITHMIQUE

10
ETAPES D’UN ALGORITHME

• Préparation du traitement
• données nécessaires à la résolution du problème

• Traitement
• résolution pas à pas,
• après décomposition en sous-problèmes si nécessaire

• Edition des résultats


• impression à l’écran,
• dans un fichier, etc.

11
LANGAGE ALGORITHMIQUE

Algorithme NomAlgorithme Algorithme Bonjour


{ ceci est un commentaire} {il dit juste bonjour mais … en anglais !
Début Début
... Actions afficher('Hello world !!!')
Fin Fin

• Il faut avoir une écriture rigoureuse


• Il faut avoir une écriture soignée : respecter l’indentation
• Il est nécessaire de commenter les algorithmes
• Il existe plusieurs solutions algorithmiques à un problème posé
• Il faut rechercher l’efficacité de ce que l’on écrit
12
DÉCLARATION DES DONNÉES

13
DÉCLARATION DES DONNÉES

Variable <nom de donnée>: type

Instruction permettant de réserver de l’espace mémoire pour stocker des données


Dépendant du type des données : entiers, réels, caractères, etc.)

• Exemples :

• Variables val, unNombre: entiers


nom, prénom : chaînes de caractères

14
DÉCLARATION DES DONNÉES

15
DÉCLARATION DES DONNÉES

Constante <nom de donnée>: type <– valeur ou expression

Instruction permettant de réserver de l’espace mémoire pour stocker une constante dont la valeur
ne varie pas.

• Exemples :

• Constante MAX : entier <– 10


DEUXFOISMAX : entier <- MAX x 2

16
DÉCLARATION DES DONNÉES

17
DÉCLARATION DES DONNÉES

18
DÉCLARATION DES DONNÉES

19
LECTURE ÉCRITURE DE DONNÉES

20
LECTURE ÉCRITURE DE DONNÉES

Saisir<nom de donnée, …>


Afficher<nom de donnée, …>

Fonction : Instructions permettant


• de placer en mémoire les informations fournies par l'utilisateur.
• De visualiser des données placées en mémoire

• Exemples:
Saisir(unNombre)
Afficher (« le nom est « , nom, »et le prénom est » , prénom )
Saisir(val)

21
EXEMPLE D’ÉNONCÉ D’UN PROBLÈME :
PHASE D’ANALYSE

22
PHASE D’ANALYSE

• Consiste à extraire de l’énoncé du problème des éléments de modélisation

• Technique : Distinguer en soulignant de différentes couleurs quelles sont

• Quel est le but du programme (traitement à réaliser)


• Données en entrée du problème
• Où vont se situer les résultats en sortie

23
EXEMPLE D’ÉNONCÉ D’UN PROBLÈME

• On souhaite calculer et afficher , à partir d’un prix hors taxe saisi, la TVA ainsi que le prix
TTC

• Le montant TTC dépend de :


• Du prix HT
• Du taux de TVA de 20,6

24
EXEMPLE D’ÉNONCÉ D’UN PROBLÈME

• On souhaite calculer et afficher , à partir d’un prix hors taxe saisi, la TVA ainsi
que le prix TTC

• Le montant TTC dépend de :


• Du prix HT
• Du taux de TVA de 20,6

Traitement à réaliser

25
EXEMPLE D’ÉNONCÉ D’UN PROBLÈME

On souhaite calculer et afficher , à partir d’un prix hors taxe saisi, la TVA
ainsi que le prix TTC

• Le montant TTC dépend de :


• Du prix HT
• Du taux de TVA de 20,6

Données en entrée

26
EXEMPLE D’ÉNONCÉ D’UN PROBLÈME

• On souhaite calculer et afficher , à partir d’un prix hors taxe saisi, la TVA ainsi que le prix
TTC

• Le montant TTC dépend de :


• Du prix HT
• Du taux de TVA de 20,6

Données en sortie

27
INSTRUCTIONS SÉQUENTIELLES
RÉSULTAT D’UN ALGORITHME

Constante (SEUIL : réel)  13.25


Variables valA, valB: réels
compteur : entier
mot , tom : chaînes
valA 0.56
valBvalA
valAvalA×(10.5 + SEUIL)
compteur 1
compteur  compteur + 10
mot  " Bonjour "
tom  "Au revoir ! "

Quelles sont les différentes valeurs des variables ?


29
EXERCICE

30
SIMULATION D’UN ALGORITHME

Algorithme CaDoitEchanger?
{Cet algorithme .........................................}
Variables valA, valB: réels {déclarations}
Début {préparation du traitement}
Afficher ("Donnez-moi deux valeurs :")
Saisir (valA, valB)
Afficher ("Vous m'avez donné ", valA, " et ", valB)
{traitement mystère}
valAvalB
valBvalA {présentation du résultat}
Afficher("Maintenant , mes données sont : ", valA, " et ", valB)
Fin
Que fait cet algorithme ? Pas ce qui est prévu ! 31
EXERCICE

32
CE QU’IL MANQUE

• Déclarer une variable supplémentaire

Variables valA, valB, valTemp: entiers

• Utiliser cette variable pour stocker provisoirement une des valeurs

Saisir(valA, valB)
valTempvalA
valAvalB
valBvalTemp

33
EXERCICE

34
EXERCICE

35
STRUCTURE ALTERNATIVE

36
STRUCTURE ALTERNATIVE
« SI … ALORS … SINON … FSI » (1)

• Exemple :
Algorithme SimpleOuDouble
{Cet algorithme saisit une valeur entière et affiche son double si
cette donnée est inférieure à un seuil donné.)
constante (SEUIL : entier) 10
Variable val : entier
début
Afficher("Donnez-moi un entier : ") { saisie de la valeur entière}
Saisir(val)
si val < SEUIL { comparaison avec le seuil}
alors Afficher ("Voici son double :" , val ×2)
sinon Afficher ("Voici la valeur inchangée :" , val)
fsi 37

fin
STRUCTURE ALTERNATIVE
« SI … ALORS … SINON … FSI » (2)

• Ou instruction conditionnelle

si <expression logique>
alors instructions
[sinon instructions]
Fsi

• Si l’expression logique (la condition) prend la valeur


vrai, le premier bloc d’instructions est exécuté;

• si elle prend la valeur faux, le second bloc est


exécuté (s’il est présent, sinon, rien).
38
STRUCTURE ALTERNATIVE
« SI … ALORS … SINON … FSI » (3)

• Autre écriture de l’exemple :


Algorithme SimpleOuDouble
{Cet algorithme saisit une valeur entière et affiche son double si cette
donnée est inférieure à un seuil donné.)
constante (SEUIL : entier) 10
Variable val : entier
début
Afficher("Donnez-moi un entier : ") { saisie de la valeur entière}
Saisir(val)
si val < SEUIL { comparaison avec le seuil}
alors val  val ×2
fsi
Afficher ("Voici la valeur val :" , val) 39

fin
STRUCTURES ALTERNATIVES
IMBRIQUÉES

• Problème: afficher :
• "Reçu avec mention Assez Bien " si une note est supérieure ou
égale à 12,
• " Reçu mention Passable" si elle est supérieure à 10 et
inférieure à 12, et
• "Insuffisant" dans tous les autres cas.

si note f12
alors afficher( "Reçu avec mention AB" )
sinon si note f10
alors afficher( « Reçu mention Passable" )
sinon afficher("Insuffisant" )
fsi 40
fsi
SELECTION CHOIX MULTIPLES
« SELON » (1)

selon <identificateur>
(liste de) valeur(s) : instructions
(liste de) valeur(s) : instructions

[autres: instructions]

• S’il y a plus de deux choix possibles, l’instruction


selon permet une facilité d’écriture

41
SÉLECTION CHOIX MULTIPLES
« SELON » (2)

selon abréviation
"M" : afficher( " Monsieur " )
"Mme" :afficher( " Madame " )
"Mlle" : afficher( " Mademoiselle " )
autres :afficher( " Monsieur, Madame " )

Équivalent avec instruction Conditionnelle


si abréviation = "M "
alors afficher( "Monsieur" )
sinon si abréviation = « Mlle »
alors afficher("Mademoiselle")
sinon si abréviation = "Mme"
alors afficher( "Madame" )
sinon afficher( "Monsieur,Madame " )
fsi 42

fsi
fsi
SÉLECTION CHOIX MULTIPLES
EXEMPLE (3) AVEC INVERSION DES TESTS

selon abréviation
"M" : afficher( " Monsieur " )
"Mme" :afficher( " Madame " )
"Mlle" : afficher( " Mademoiselle " )
autres :afficher( " Monsieur, Madame " )

Équivalent avec instruction Conditionnelle


si abréviation = "Mme "
alors afficher( « Madame" )
sinon si abréviation = « Mlle »
alors afficher("Mademoiselle")
sinon si abréviation = "M"
alors afficher( "Monsieur" )
sinon afficher( "Monsieur,Madame " )
43
fsi
fsi
fsi
SÉLECTION CHOIX MULTIPLES
EXEMPLE (4) AVEC SI … ALORS … FSI SÉQUENTIELS

selon abréviation
"M" : afficher( " Monsieur " )
"Mme" :afficher( " Madame " )
"Mlle" : afficher( " Mademoiselle " )
autres :afficher( " Monsieur, Madame " )

Équivalent avec instruction Conditionnelle


si abréviation = "Mme "
alors afficher( « Madame" )
fsi
si abréviation = « Mlle »
alors afficher("Mademoiselle")
fsi
si abréviation = "M"
alors afficher( "Monsieur" )
sinon afficher( "Monsieur,Madame " ) 44
fsi
RÉFLEXION

Calculez le nombre d’instructions nécessaires pour évaluer l’exécution dans le cas de 24 étudiants et 2
étudiantes célibataires.

Traiter les 3 cas de exemple 2, 3 et 4.

45
STRUCTURE RÉPÉTITIVE

46
RÉPÉTITION D’UN TRAITEMENT
BOUCLE « POUR »

• Exemple

Algorithme FaitLeTotal
{Cet algorithme fait la somme des nbVal données qu'il saisit}
variables nbVal, cpt : entiers
valeur, totalValeurs: réels
début
{initialisation du traitement}
afficher("Combien de valeurs voulez-vous saisir ?")
saisir(nbVal)
{initialisation du total à 0 avant cumul}
totalValeurs0
{traitement qui se répète nbVal fois}
pour cpt  1à nbVal faire
afficher("Donnez une valeur :")
saisir(valeur)
totalValeurs  totalValeurs+ valeur {cumul}
fpour
{édition des résultats} 47
afficher("Le total des ", nbVal, "valeurs est " , totalValeurs)
fin
BOUCLE « POUR »

Valeur initiale Valeur finale


Valeur à ajouter à <var> à
chaque passage dans la boucle
pour <var>  valInit à valfin [par <pas>] faire
traitement {suite d’instructions}
fpour

• Fonction: répéter une suite d’instructions un certain


nombre de fois
• Pour utilisée quand le nombre d’itération est connu

48
SÉMANTIQUE BOUCLE « POUR »

• l’instruction pour:
• initialise une variable de boucle (le compteur)
• incrémente cette variable de la valeur de « pas »
• vérifie que cette variable ne dépasse pas la borne supérieure

• Attention :
• -le traitement ne doit pas modifier la variable de boucle

Pour cpt  1 à MAX faire


si (…) alors
cpt  MAX
fpour 49
RÉPÉTITION D’UN TRAITEMENT
À NOMBRE ITÉRATIONS INCONNU « TANT QUE … FAIRE »
• Exemple

Algorithme FaitLeTotal
{Cet algorithme fait la somme des nbVal données qu'il saisit, arrêt à
la lecture de -1 }
constante (STOP : entier) -1
variables val, totalValeurs: entiers
début
totalValeurs0
afficher("Donnez une valeur,", STOP, " pour finir.") {amorçage}
saisir(val)
tant que val  hSTOP faire
totalValeurstotalValeurs+ val {traitement}
afficher("Donnez une autre valeur,", STOP, " pour finir.")
saisir(val) {relance}
ftq
afficher("La somme des valeurs saisies est", totalValeurs) 50
fin
BOUCLE « TANT QUE … FAIRE »

Initialisation de la (des)
variable(s) de condition

amorçage
tant que <expression logique (vraie)> faire
traitement
relance suite d’instructions à
Ftq exécuter si condition vraie

ré-affectation de la (des)
variable(s) de condition

• Fonction: répéter une suite d’instructions un certain nombre de fois


51
BOUCLE « TANT QUE … FAIRE »

• Structure itérative "universelle“

• n'importe quel contrôle d'itération peut se traduire par le "tant que “

• Structure itérative irremplaçable dès que la condition d'iteration devient


complexe

52
BOUCLE « TANT QUE … FAIRE »

• Exemple:

• saisir des valeurs, les traiter, et s’arrêter à la saisie de la valeur d’arrêt –1 ou après avoir saisi 5
données.
Constantes (STOP : entier) -1
(MAX : entier) 5
Variables nbVal, val : entiers
Début
nbVal0 {compte les saisies traitées}
saisir(val) {saisie de la 1ère donnée}
tant que val  hSTOP et nbVal< MAX faire
nbValnbVal+ 1…{traitement de la valeur saisie}
saisir(val) {relance}
Ftq
afficher(val, nbVal) {valeurs en sortie de boucle}
Fin
53

• Remarque : La valeur d’arrêt n’est jamais traitée (et donc, jamais comptabilisée)
BOUCLE « TANT QUE … FAIRE »
• Interpréter l'arrêt des itérations
……

nbVal0 {compte les saisies traitées}


saisir(val) {saisie de la 1ère donnée}
tant que val  hSTOP et nbVal< MAX faire
nbValnbVal+ 1…{traitement de la valeur saisie}
saisir(val) {relance}
Ftq
si val = STOP
alors {la dernière valeur testée était la valeur d’arrêt}
afficher(«Sortie de boucle car saisie de la valeur d’arrêt »)
{toutes les données significatives ont été traitées.}
sinon {il y avait plus de 5 valeurs à tester}
afficher(«Sortie de boucle car nombre maximum de valeurs à traiter atteint ») fsi
54
COMPARAISON BOUCLES
« POUR » ET « TANT QUE » (1)

pour cpt 1à nbVal faire


afficher("Donnez une valeur :")
saisir(valeur)
totalValeurstotalValeurs+ valeur {cumul}
fpour
• Est équivalent à
cpt 0
tant que cpt <nbVal faire
afficher("Donnez une valeur :")
saisir(valeur)
totalValeurstotalValeurs+ valeur {cumul}
cpt  cpt + 1 {compte le nombre de valeurs traitées}
ftq
55
COMPARAISON BOUCLES
« POUR » ET « TANT QUE » (2)

• Implicitement, l’instruction pour:


• initialise un compteur
• incrémente le compteur à chaque pas
• vérifie que le compteur ne dépasse pas la borne Supérieure

• Explicitement, l’instruction tant que doit


• initialiser un compteur {amorçage}
• incrémenter le compteur à chaque pas {relance}
• vérifier que le compteur ne dépasse pas la borne supérieure {test de boucle}

56
QUAND CHOISIR
« POUR » OU « TANT QUE » ?

• Nombre d’itération connu à l’avance : POUR


• Parcours de tableaux
• Test sur un nombre donné de valeurs

• Boucle s’arrête sur événement particulier :


TANTQUE
• Itération avec arrêt décidé par saisie utilisateur

57
MAIS ON N’A PAS FINI D’ITÉRER !

• Boucle « répéter … tant que » : exemple

Algorithme Essai
{Cet algorithme a besoin d’une valeur positive paire}
Variables valeur : entier
Début
Répéter
afficher("Donnez une valeur positive non nulle : ")
saisir(valeur)
tant que valeur i0
afficher("La valeur positive non nulle que vous avez saisie est ")
afficher( valeur )…{traitement de la valeur saisie}
fin
58
BOUCLE « RÉPÉTER …TANT QUE »

Répéter
(ré)affectation de la (des) variable(s) de condition
traitement
Tant que <expression logique (vraie)>

• Fonction: exécuter une suite d’instructions au moins une fois et la répéter tant qu’une condition
est remplie
• Remarque: le traitement dans l’exemple précédent se limite à la ré-affectation de la variable de
condition (saisir(valeur))

59
COMPARAISON
«RÉPÉTER» ET «TANT QUE»

Répéter
afficher("Donnez une valeur positive paire :")
saisir(valeur)
tant que(valeur < 0 ou(valeur % 2)  0)

• Équivaut à
afficher("Donnez une valeur positive paire :")
saisir(valeur)
tant que(valeur < 0 ou(valeur % 2)  0) faire
afficher("Donnez une valeur positive paire:")
saisir(valeur)
ftq
60
COMPARAISON
«RÉPÉTER» ET «TANT QUE»

• boucle tant que


• condition vérifiée avant chaque exécution du traitement
• le traitement peut donc ne pas être exécuté
• de plus : la condition porte surtout sur la saisie de nouvelles variables (relance)

• boucle répéter … tant que


• condition vérifiée après chaque exécution du traitement
=>le traitement est exécuté au moins une fois
• de plus: la condition porte surtout sur le résultat du traitement

• Remarque: la boucle répéter est typique pour les saisies avec vérification

61
DE L’ÉNONCÉ À LA BOUCLE

Saisir des données et s'arrêter dès que leur somme dépasse 500

62
DE L’ÉNONCÉ À LA BOUCLE

• saisir des données et s'arrêter dès que leur somme


dépasse 500

somme 0
répéter
saisir(val)
somme somme + val
tant que somme ≤ 500

63
DE L’ÉNONCÉ À LA BOUCLE

• saisir des données et s'arrêter dès que leur somme


dépasse 500

saisir(val)
somme val
tant que somme ≤ 500 faire
saisir(val)
somme somme + val
ftq

64

Vous aimerez peut-être aussi