0% ont trouvé ce document utile (0 vote)
29 vues12 pages

Algorithme Python Part1

python
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)
29 vues12 pages

Algorithme Python Part1

python
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

18/10/2023

Pourquoi un cours d’
"Algorithme" ?
Algorithme $ Langage Python  Le mot algorithme provient du nom du mathématicien musulman Al-
Khawarizmi (783-850 ) qui a développé entre autre des méthodes pour
résoudre des équations algébriques
 Objectif : obtenir de la «machine» qu’elle effectue un travail à notre
place
 Problème : expliquer à la «machine» comment elle doit s'y prendre
 Mais ... Comment le lui dire ?
... Comment le lui apprendre ?
... Comment s'assurer qu'elle fait ce travail

Pr: ZEBBARA Khalid Filière: GTI 2023-2024


aussi bien que nous ? Mieux que nous?

18/10/2023 2

Objectif de cet enseignement L'algorithmique, vous la pratiquez tous les


jours et depuis longtemps...
 résoudre des problèmes «comme» une machine
 savoir expliciter son raisonnement
 savoir formaliser son raisonnement Farine, œufs, chocolat, etc.... Forêt noire
recette
 concevoir (et écrire) des algorithmes :
menthe, thé, eau, sucre thé chaud
séquence d’instructions qui décrit comment résoudre instructions
un problème particulier
Un algorithme, traduit dans un langage compréhensible par l’ordinateur
(ou langage de programmation, ici le Python ), donne un programme,
qui peut ensuite être exécuté, pour effectuer le traitement souhaité.

18/10/2023 3 18/10/2023 4

Quelles sont les étapes pour écrire un


programme informatique ?

Il y a trois étapes principales :


1. analyser le problème posé.
2. écrire un algorithme ne dépendant pas d'un langage.
3. traduire l'algorithme dans un langage de
programmation ( par exemple Python ).

18/10/2023 5 18/10/2023 6

1
18/10/2023

QCM 1 : Choisir la bonne réponse


Résolution informatique d’un problème :
Est-ce qu'on peut réaliser un algorithme sans
La résolution informatique d'un tel problème comporte les étapes suivantes :
utiliser un ordinateur ?
Etape 1 : Analyse du problème :
o Description des données connues et des résultats cherchés.
o Identifier les relations entre les données.
o Décrire les traitements à effectuer.

Données d’entrés Données de sortie Traitement


Qu’est ce que j’ai? Qu’est ce que je veut ? Comment faire?
Dans cette étape, on dispose d'un processus informatique de résolution appelé algorithme.
Etape 2 : traduction de l’algorithme :
Cette étape consiste à traduire de l’algorithme dans un langage compréhensible par l’ordinateur,
appelé langage de programmation.
1. Vrai
Etape 3 : Exécution: 2. Faux
L’exécution du programme par l’ordinateur.

18/10/2023 7 18/10/2023 8

QCM 1 : Choisir la bonne réponse QCM 2 : Choisir la bonne réponse


Est-ce qu'on peut réaliser un algorithme sans Nous pouvons montrer la séquence des étapes
utiliser un ordinateur ? d’un algorithme dans un diagramme structurel
appelé organigramme?

1. Vrai 1. Vrai
2. Faux 2. Faux

18/10/2023 9 18/10/2023 10

QCM 2 : Choisir la bonne réponse QCM 3 : Choisir la bonne réponse


Nous pouvons montrer la séquence des étapes
d’un algorithme dans un diagramme structurel Quels sont les principaux composants pour
appelé organigramme? résoudre informatiquement un problème ?

1. Vrai 1. Programme, algorithme, résultats


2. Faux 2. Algorithme, programme, résultats.

18/10/2023 11 18/10/2023 12

2
18/10/2023

QCM 3 : Choisir la bonne réponse QCM 4 : Choisir la bonne réponse


Lorsqu’un algorithme est écrit sous la forme
Quels sont les principaux composants pour d’un langage de programmation, il devient un
résoudre informatiquement un problème ? _________?

1. Programme, algorithme, résultats 1. Pseudo-code


2. Algorithme, programme, résultats. 2. Programme

18/10/2023 13 18/10/2023 14

QCM 4 : Choisir la bonne réponse QCM 5 : Choisir la bonne réponse


Lorsqu’un algorithme est écrit sous la forme
Tout algorithme est un programme informatique
d’un langage de programmation, il devient un
_________?

1. Pseudo-code 1. Vrai
2. Programme 2. Faux

18/10/2023 15 18/10/2023 16

QCM 5 : Choisir la bonne réponse QCM 6 : Choisir la bonne réponse

Tout algorithme est un programme informatique Lorsque vous écrivez un algorithme, l’ordre des
instructions est très important.

1. Vrai 1. Vrai
2. Faux 2. Faux

18/10/2023 17 18/10/2023 18

3
18/10/2023

QCM 6 : Choisir la bonne réponse QCM 7 : Choisir la bonne réponse

Lorsque vous écrivez un algorithme, l’ordre des


instructions est très important. Les algorithmes peuvent être représentés:

1. Comme pseudo-codes
1. Vrai 2. Sous forme d’organigrammes
2. Faux 3. En tant que programmes
4. Toutes les réponses sont vrais

18/10/2023 19 18/10/2023 20

QCM 7 : Choisir la bonne réponse QCM 8 : Choisir la bonne réponse

Les algorithmes peuvent être représentés: Quand peut-on utiliser des algorithmes?

1. Comme pseudo-codes 1. Seulement avec des ordinateurs


2. Sous forme d’organigrammes 2. Seulement lors de la programmation
3. En tant que programmes 3. Seulement quand on veut mettre en forme notre
organigramme
4. Toutes les réponses sont vrais
4. À tout moment pour concevoir des solutions aux
problèmes
18/10/2023 21 18/10/2023 22

QCM 8 : Choisir la bonne réponse QCM 9 : Choisir la bonne réponse

Les langages de programmation donnent des


Quand peut-on utiliser des algorithmes? instructions à l’ordinateur?

1. Seulement avec des ordinateurs


2. Seulement lors de la programmation 1. Vrai
3. Seulement quand on veut mettre en forme notre 2. Faux
organigramme
4. À tout moment pour concevoir des solutions aux
problèmes
18/10/2023 23 18/10/2023 24

4
18/10/2023

QCM 9 : Choisir la bonne réponse QCM 10 : Choisir la bonne réponse

Les langages de programmation donnent des Que faut-il considérer lors de la conception d’un
instructions à l’ordinateur? algorithme?

1. Si le matériel est correctement utilisé


1. Vrai 2. Si le logiciel est correctement utilisé
2. Faux 3. S’il y a plus d’une façon de résoudre le problème
4. Toutes les réponses sont vrais

18/10/2023 25 18/10/2023 26

QCM 10 : Choisir la bonne réponse

Que faut-il considérer lors de la conception d’un


algorithme?

Les instructions de base

1. Si le matériel est correctement utilisé


2. Si le logiciel est correctement utilisé
3. S’il y a plus d’une façon de résoudre le problème
4. Toutes les réponses sont vrais

18/10/2023 28
18/10/2023 27

Un premier algorithme Les trois étapes d’un algorithme


Algorithme ElèveAuCarré
 Préparation du traitement
{Cet algorithme calcule le carré du nombre que lui fournit l'utilisateur}
- données nécessaires à la résolution du problème
variables unNombre, sonCarré: entiers {déclarations: réservation d'espace-mémoire}
 Traitement
début
afficher("Quel nombre voulez-vous élever au carré?") {préparation du traitement} - résolution pas à pas, après décomposition en sous-
saisir(unNombre) problèmes si nécessaire
sonCarré ← unNombre × unNombre {traitement : calcul du carré}
 Édition des résultats
afficher("Le carré de ", unNombre) - impression à l’écran, dans un fichier, etc.
afficher("c'est ", sonCarré) {présentation du résultat}

fin
18/10/2023 29 18/10/2023 30

5
18/10/2023

Déclarer une variable Saisir une donnée

variable <liste d’identificateurs> : type saisir(<liste de noms de variables>)


 Fonction :
 Fonction :
Instruction permettant de réserver de l’espace mémoire
Instruction permettant de placer en mémoire les
pour stocker des données (dépend du type de ces informations fournies par l'utilisateur.
données : entiers, réels, caractères, etc.)
 Exemples :  Exemples :
variables val, unNombre : entiers
saisir(unNombre)
nom, prénom : chaînes de caractères saisir(nom, prénom)
18/10/2023 31 saisir(val)
18/10/2023 32

Afficher une donnée, un résultat Déclarer une constante


afficher(<liste de noms de variables, de constante (<identificateur> : type) ← <expression>
constantes ou d ’expressions>)
 Fonction :
 Fonction :
instruction permettant de réserver de l’espace mémoire pour
Instruction permettant de visualiser les informations placées stocker des données dont la valeur est fixée pour tout
en mémoire. l’algorithme
 Exemples :  Exemples :
afficher(unNombre, "est différent de 0") constantes (MAX : entier) ← 100
afficher("La somme de", unNombre, "et" , val , "est", unNombre + val)
(DOUBLEMAX : entier) ← MAX × 2

18/10/2023 33 18/10/2023 34

Saisies et affichages : exemples Affecter une valeur à une variable


Algorithme PrixHT {Saisit un prix HT et affiche le prix TTC correspondant} <identificateur> ← <expression> ou
constantes (TVA : réel) ← 20.6
<constante> ou <identificateur>
(Titre : chaîne) ← ‘’le résultat de calcule HT" {déclarations}
variables prixHT, prixTTC : réels
 Fonction :
début
afficher("Donnez-moi le prix hors taxe :")
{préparation du traitement} Instruction permettant d’attribuer à la variable identifiée par
saisir(prixHT) l'élément placé à gauche du symbole ← la valeur de
{calcul du prix TTC} l'élément placé à droite de ce symbole.
prixTTC ← prixHT * (1+TVA/100)
 Exemples :
{présentation du résultat}
prenom ← "Ali"
afficher(Titre)
val ← 50
afficher(prixHT, " dirhams H.T. devient ", prixTTC, " dirhams T.T.C.")
val ← val × 2
Fin
18/10/2023 35 18/10/2023 36

6
18/10/2023

Simulation d'un algorithme Ce qu’il fallait faire ...


Algorithme CaFaitQuoi?  Déclarer une variable supplémentaire
{Cet algorithme .........................................}
{déclarations} variables valA, valB, valTemp : entiers
variables valA, valB : réels
début  Utiliser cette variable pour stocker provisoirement une des
{préparation du
afficher("Donnez-moi deux valeurs :") traitement} valeurs
saisir (valA, valB) saisir(valA, valB)
afficher("Vous m'avez donné ", valA, " et ", valB)
valTemp ← valA
valA ← valB {traitement mystère}
valB ← valA valA ← valB
{présentation du résultat}
afficher("Maintenant , mes données sont : ", valA, " et ", valB) valB ← valTemp
Fin

18/10/2023 37 18/10/2023 38

Traitement à faire si ... L’instruction conditionnelle


Algorithme NegOuPos {Cet algorithme saisit une valeur entière et indique si cette
Est Positive ou Négative } si <expression logique>
variable val : entier alors instructions
début [sinon instructions]
afficher("Donnez-moi un entier : ") fsi
{ saisie de la valeur entière}
saisir(val)
si val < 0
{ comparaison avec le seuil} Si l’expression logique (la condition) prend la valeur
alors afficher ("Valeur Saisie est Négative !" ) vrai, le premier bloc d’instructions est exécuté; si elle
sinon afficher ("Valeur Saisie est Positive !") prend la valeur faux, le second bloc est exécuté (s’il
fsi est présent, sinon, rien).
fin

18/10/2023 39 18/10/2023 40

Une autre écriture Quand la condition se complique :


les conditionnelles emboîtées
Algorithme SimpleOuDouble {Cet algorithme saisit une valeur entière et affiche
son double si cette donnée est inférieure à un Problème : afficher "Reçu avec mention" si une note est
seuil donné}
supérieure ou égale à 12, "Passable" si elle est
constante (SEUIL : entier) ← 10
supérieure à 10 et inférieure à 12, et "Insuffisant" dans
variable val : entier
tous les autres cas.
début
{ saisie de la valeur entière}
afficher("Donnez-moi un entier : ") si note ≥ 12
saisir(val) {comparaison avec le seuil } alors afficher( "Reçu avec mention" )
si val < SEUIL sinon si note ≥ 10
alors val ← val × 2
alors afficher( "Passable" )
fsi
sinon afficher( "Insuffisant" )
fsi
afficher("Voici la valeur finale : ", val)
fsi
fin
18/10/2023 41 18/10/2023 42

7
18/10/2023

La sélection sur choix multiples L’instruction selon : exemple


Selon abréviation
"M" : afficher( " Monsieur " )
"Mme" : afficher( " Madame " )
selon <identificateur> "Mlle" : afficher( " Mademoiselle " )
(liste de) valeur(s) : instructions Autres : afficher( " Monsieur, Madame " )

(liste de) valeur(s) : instructions Comparer :

… si abréviation = "M"
alors afficher( "Monsieur" )
... sinon si abréviation = "Mme"
alors afficher("Madame")
[autres : instructions] sinon si abréviation = "Mlle"
alors afficher( "Mademoiselle" )
sinon afficher( "Monsieur,Madame " )
fsi
fsi
S’il y a plus de deux choix possibles, l’instruction selon
permet une facilité d’écriture. fsi

18/10/2023 43 18/10/2023 44

Quand il faut répéter un La boucle « pour »


traitement ...
Algorithme FaitLeTotal
{Cet algorithme fait la somme des nbVal données qu'il saisit} pour <var> ← valInit à valfin [par <pas>] faire
Variables nbVal, cpt : entiers
valeur, totalValeurs : réels
début
{initialisation du traitement} traitement {suite d’instructions}
afficher("Combien de valeurs voulez-vous saisir ?")
saisir(nbVal)
fpour
totalValeurs ← 0 {initialisation du total à 0 avant cumul}

pour cpt ← 1 à nbVal faire {traitement qui se répète nbVal fois}


afficher("Donnez une valeur :")
saisir(valeur)  Fonction:
totalValeurs ← totalValeurs + valeur {cumul}
fpour
répéter une suite d’instructions un certain nombre de
{édition des résultats}
fois
afficher("Le total des ", nbVal, "valeurs est " , totalValeurs)
fin
18/10/2023 45 18/10/2023 46

Les champs de la boucle pour Sémantique de la boucle pour


 Implicitement, l’instruction pour:
- initialise une variable de boucle (le compteur)
- incrémente cette variable à chaque 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 Interdit !
fpour

18/10/2023 47 18/10/2023 48

8
18/10/2023

Quand le nombre d'itérations La boucle « tant que ... faire »


n’est pas connu...
Algorithme FaitLeTotal amorçage {initialisation de la (des) variable(s) de condition}
{Cet algorithme fait la somme des données qu’il saisit, arrêt à la lecture de -1}
Constante (STOP : entier) ← -1 tant que <expression logique (vraie)> faire
Variables val, totalValeurs : entiers traitement {suite d’instructions}
début Relance {ré-affectation de la (des) variable(s) de condition}
totalValeurs ← 0
afficher("Donnez une valeur, " , STOP, " pour finir.") ftq
saisir(val) {amorçage}
Tant que val ≠ STOP faire  Fonction:
totalValeurs ← totalValeurs + val {traitement}
afficher("Donnez une autre valeur, " , STOP, " pour finir.") répéter une suite d’instructions tant qu’une condition
saisir(val) {relance}
Ftq est remplie
afficher("La somme des valeurs saisies est " , totalValeurs)  remarque : si la condition est fausse dès le départ,
fin
le traitement n’est jamais exécuté
18/10/2023 49 18/10/2023 50

Sémantique de la boucle tant que Comparaison boucles pour


et tant que
amorçage: initialisation condition d'exécution traitement à exécuter si
de la variable de condition du traitement la condition est vérifiée
pour cpt ← 1 à nbVal faire
afficher("Donnez une valeur :")
saisir(valeur)
saisir(val) totalValeurs ← totalValeurs + valeur {cumul}
tant que val ≠ STOP faire fpour
totalValeurs ← totalValeurs + val
afficher("Donnez une autre valeur, " , STOP, " pour finir. " )
...équivaut à :
saisir(val)
relance: ré-affectation
de la variable de condition
ftq cpt ← 0
tant que cpt < nbVal faire
afficher("La somme des valeurs saisies est " , totalValeurs) afficher("Donnez une valeur :")
saisir(valeur)
affichage totalValeurs ← totalValeurs + valeur {cumul}
résultats cpt ← cpt + 1 {compte le nombre de valeurs traitées}
ftq
18/10/2023 51 18/10/2023 52

Comparaison boucles pour Choisir pour... Choisir tant que...


et tant que (suite)
Implicitement, l’instruction pour :
- initialise un compteur  Si le nombre d’itérations est connu à l’avance, choisir
la boucle pour
- incrémente le compteur à chaque pas
- vérifie que le compteur ne dépasse pas la borne supérieure  Si la boucle doit s'arrêter quand survient un
événement , choisir la boucle tant que
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}

18/10/2023 53 18/10/2023 54

9
18/10/2023

La boucle répéter : un exemple La boucle « répéter ...tant que »

Algorithme ValPos
{Cet algorithme a besoin d’une valeur positive} répéter
variables valeur : entier (ré)affectation de la (des) variable(s) de condition
début Traitement {suite d’instructions}
répéter tant que <expression logique (vraie)>
afficher("Donnez une valeur positive non nulle : ")
saisir(valeur)
tant que valeur ≤ 0
 Fonction:
afficher("La valeur positive non nulle que vous avez saisie est")
afficher( valeur ) exécuter une suite d’instructions au moins une fois et la
... répéter tant qu’une condition est remplie
{traitement de la valeur saisie}
fin  Remarque: le traitement dans l’exemple précédent se
limite à la ré-affectation de la variable de condition
18/10/2023 55 18/10/2023 56

Comparaison boucles Comparaison boucles


répéter et tant que répéter et tant que (suite)
 boucle tant que
répéter
afficher("Donnez une valeur positive :") - condition vérifiée avant chaque exécution du traitement
saisir(valeur) - le traitement peut donc ne pas être exécuté
tant que (valeur < 0 )
- de plus : la condition porte surtout sur la saisie de nouvelles variables
...équivaut à : (relance)
 boucle répéter tant que
afficher("Donnez une valeur positive :")
- condition vérifiée après chaque exécution du traitement
saisir(valeur)
tant que (valeur < 0 ) faire - le traitement est exécuté au moins une fois
afficher("Donnez une valeur positive :") - de plus : la condition porte surtout sur le résultat du traitement
saisir(valeur)
 Remarque : la boucle répéter est typique pour les saisies avec
ftq vérification (contrôle de la saisie).

18/10/2023 57 18/10/2023 58

Choisir pour... tant que...


répéter... Remarque
Boucle
tant que  fsi, ftq et fpour peuvent être omis si le corps se limite
non à une seule instruction
Traitement
exécuté au moins
une fois ?
non oui
Boucle
 Exemples:
répéter
Nombre
d’itérations
si val > 0 alors afficher(" fini! ")
connu ?
pour i ← 1 à MAX faire afficher(i × val)
oui
Boucle
pour

18/10/2023 59 18/10/2023 60

10
18/10/2023

Le problème d’une boucle : il faut


en sortir! De l'énoncé à la boucle
tant que A faire B
répéter B tant que A afficher le carré des saisir(val)
valeurs saisies tant tant que val ≠ 0 faire
qu’on ne saisit pas 0 afficher(val × val)
• Quelque chose dans la suite d’instructions B doit amener A à saisir(val)
prendre la valeur Faux. ftq
→ la suite d’instructions B doit modifier au moins une variable
de l’expression logique A
saisir(val)
saisir des données et somme ← val
→ (mauvais) exemple : Val1 ← 2 ; val2 ← 3
tant que val1 < 100 faire s'arrêter dès que leur tant que somme ≤ 500 faire
Val2 ← val2 × val1 somme dépasse saisir(val)
ftq 500 somme ← somme + val
ftq
• C’est l’expression logique A (et elle seule!) qui en prenant la
valeur Faux provoque l’arrêt de la boucle.
18/10/2023 61 18/10/2023 62

Exemple d’un mauvais choix de


De l'énoncé à la boucle
boucle
Algorithme Somme
saisir des données et somme ← 0 {Cet algorithme fait la somme d’une suite de nombres tant que
s'arrêter dès que leur répéter cette somme ne dépasse un seuil donné}
somme dépasse 500 saisir(val) Constante (SEUIL : entier) ← 1000
somme ← somme + val Variables val, somme : entiers
tant que somme ≤ 500
début
somme ← 0
saisir des données tant répéter
afficher( "Entrez un nombre")
que leur somme ne
dépasse un seuil donné
? saisir(val)
somme ← somme + val
tant que somme ≤ SEUIL
afficher( "La somme atteinte est" , somme - val)
fin
18/10/2023 63 18/10/2023 64

Version corrigée Quand utiliser la boucle tant que?


Algorithme Somme
{Cet algorithme fait la somme d’une suite de nombres tant que  Structure itérative "universelle"
cette somme ne dépasse un seuil donné} n'importe quel contrôle d'itération peut se traduire par le "tant que "
Constante (SEUIL : entier) ← 1000
Variables val, somme : entiers  Structure itérative irremplaçable dès que la condition d'itération
devient complexe
Début
 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.

Fin
18/10/2023 65 18/10/2023 66

11
18/10/2023

Exemple Conclusion: Quelques leçons à


retenir
Constantes (STOP : entier) ← -1
(MAX : entier) ← 5  Le moule d'un algorithme
Variables NbVal , val : entiers Algorithme AuNomEvocateur
{Cet algorithme fait..............en utilisant telle et telle donnée.........}
début Constantes
NbVal ← 0 {compte les saisies traitées} Variables
saisir(val) {saisie de la 1ère donnée} Début
tant que val ≠ STOP et nbVal < MAX faire {préparation du traitement : saisies,....}
nbVal ← nbVal + 1 {traitements, si itération, la décrire }
… {traitement de la valeur saisie} {présentation des résultats: affichages,... }
saisir(val) {relance} Fin
ftq
afficher(val, nbVal) {valeurs en sortie de boucle} • 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
Attention :
La valeur d’arrêt n’est jamais traitée (et donc, jamais comptabilisée)

18/10/2023 67 18/10/2023 68

12

Vous aimerez peut-être aussi