0% ont trouvé ce document utile (0 vote)
223 vues128 pages

Algo & Programmation Python - Partie I

Transféré par

Bamoryba Habasse
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)
223 vues128 pages

Algo & Programmation Python - Partie I

Transféré par

Bamoryba Habasse
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
Vous êtes sur la page 1/ 128

Algorithmique et

programmation en
Python
Pr. HABBAT Nassera
[email protected]

Année universitaire: 2024-2025


Plan du module
Algorithmique Langage Python

• Introduction à l’Algorithmique • Différents types de langages de programmation


• Processus de résolution des problèmes • Présentation de l’interpréteur de commandes Python
• Structure Générale d’un Algorithme • Variables et types de données
• Constantes, Variables et Types de Base • Entrée/Sortie
• Expressions et opérateurs • Structures conditionnelles
• Instructions d’entrées-sorties • Structures répétitives
• Structures alternatives • Listes, Tuples, Dictionnaires et chaines de caractères
• Structures répétitives • Fonctions et procédures
• Manipulation des Tableaux • Modules
• Fonctions et Procédures
• Les fichiers
Introduction à
l’Algorithmique
Informatique ?
 Eléments du traitement automatique de l’ information au moyen
des ordinateurs.

 Eléments d’un système informatique :


 Applications : (Word, Excel, Jeux, Maple, etc.)
 Langages des programmation : C/C ++, Java, Fortran, etc
 Systèmes d’exploitation : ( DOS, Windows, Unix, etc
 Matériel : ( PC, Macintosh, Station SUN, etc.)
Langages informatiques
 Un langage informatique est un outil permettant de donner des ordres
(instructions) à la machine
A chaque instruction correspond une action du processeur

 Intérêt : écrire des programmes (suite consécutive d’instruction)


destinés à effectuer une tache donnée
Exemple : un programme de gestion de comptes bancaires

 Contraintes : être compréhensible par la machine


Compilateur / interpréteur
 Compiler : traduire le programme entier une fois pour toute
 Plus rapide à l’exécution
 Plus de sécurité du code source
 Il faut recompiler à chaque modification

 Interpréter : traduire au fur et à mesure les instructions du programme


à chaque exécution
Langage de programmation
 Deux types de langages :
 Langages procéduraux
 Langages orientés objets

 Exemple de langages :
 Fortran, Cobol, Pascal, C, …
 C++, Java, …
Étapes de réalisation d’un programme

 La réalisation d’un programme passe par l’écriture d’un algorithme


 D’où l’intérêt de l’algorithmique
C'est quoi un algorithme ?
Un algorithme est une suite finie, ordonnée et non-ambiguë
d'étapes/instructions destinées à résoudre un problème ou accomplir
une tâche bien précise.
Exemples:
C'est quoi un algorithme ?

Un algorithme prend des données en entrée et fournit un résultat


permettant de donner la réponse à un problème.
Algorithme : Un concept très ancien
Origine:

Le mot « algorithme » vient du nom d'un mathématicien


perse du Ixe siècle: Abu Jafar Mohammed Ibn Musa Al-
Khowarismi.

L'algorithme le plus ancien:


Algorithme d'Euclide qui permet de calculer le plus grand diviseur
commun ou PGDC de deux nombres entiers.
Algorithme d'Euclide
Algorithme d'Euclide
Algorithme vs Programme
 Un algorithme est indépendant de tous langages informatique,
 Un programme est l'implémentation d'un algorithme dans un langage
de programmation donné,
 Langage de programmation est un ensemble de règle de vocabulaire
et de grammaire compréhensible par un ordinateur.

Algorithmique Programmation
= =
Science de la conception et de Ecriture de programmes
l'analyse des algorithmes
Processus de résolution de
problèmes
Processus de résolution de problèmes
Analyse du problème
Reformulation

 Description plus explicite et plus précise du problème,


 Souvent le problème est « mal posé »,
,
Exemple: Rechercher l'indice du plus petit élément d'une suite
L = [2, 3, 5, 0, 9, 0]

 Problème => Enoncé :


 L'entrée = données du problème
 La sortie = résultats recherchés
Analyse du problème
Analyse descendante
« Décomposer tout problème en (un grand nombre de) petits problèmes élémentaires que
toute personne doit être capable de résoudre. »

 Abstraire:
--> Repousser le plus loin possible l'écriture de l'algorithme
 Décomposer:
--> Problème général => une suite de sous problèmes
 Combiner:
--> Résultats de sous problèmes => Résultat du problème initial
Analyse du problème
Analyse descendante
Problème posé
Analyse du problème
Analyse descendante
Exemple:
Conception d'algorithme
Paradigme de programmation
 Choix d'un paradigme de programmation
"[…] un style de programmation informatique qui traite de
la manière dont les solutions aux problèmes doivent être
formulées […]." (Wikipedia)
o Quelques paradigmes de programmation:
- Programmation Impérative
- Programmation Structurée
- Programmation Orienté Objet
- Programmation Déclarative
Conception d'algorithme
Paradigme de programmation
 Programmation Impérative:
"[…] un paradigme de programmation qui décrit les opérations en
séquences d'instructions exécutées par l'ordinateur pour modifier
l'état du programme." (Wikipedia)
o Cinq types d'instructions principales:
- Affectation (ou assignation)
- Séquence d'instructions
- Instruction conditionnelle
- Instruction de bouclage
- Instruction de branchement
Conception d'algorithme
Paradigme de programmation
 Programmation Structurée:
"[…] sous ensemble, ou une branche, de la
programmation impérative . » (Wikipedia)

o Le programme est décomposé en petits sous programmes appelés


procédures ou fonctions
o L'instruction de branchement est considérée nocive
o Exemples: Python, C, C++, Pascal, PHP, etc
Conception d'algorithme
Expression des algorithmes
 Un algorithme peut être spécifié de différentes manières
O En langage naturel
O Graphiquement
O En pseudo code
O…

 La seule condition est que la description soit compréhensive et précise


Implémentation
"C'est l'activité de traduire un algorithme en un programme
à l'aide d'un langage de programmation donné »

 Il existe des centaines de langages,


 Utiliser celui qui est le plus adapté à votre problème
Le langage Python dans ce cours
Structure d’un
algorithme
Structure d’un algorithme
Algorithme Nom_Algorithme En-tête de l’algorithme

Variable
Nom_Variable : Type Bloc de déclaration des
Constante
données
Nom_Constante = Valeur

Debut
-
- Bloc d’instructions
-
-
Fin
Constantes,
Variables et Types
de Base
Constante et variable
Constante et variable
Déclaration
Constante et variable
Déclaration
Moyenne Nom étudiant

FSTS
Faculté N°
Constante et variable
Notion de variable

 Dans les langages de programmation une variable sert à stocker la valeur


d’une donnée,
 Une variable désigne en fait un emplacement mémoire dont le contenu
peut changer au cours d’un programme (d’où le nom de variable),

Règles: les variables doivent être déclarées avant d’être utilisées, elle
doivent être caractérisées par:
- Un nom (Identificateur)
- Un type (entier, réel, chaine de caractère, …)
Notion de variable
Choix d’identificateur
Le choix des noms de variables est soumis à quelques règles:
 Un nom doit commencer par une lettre alphabétique
Exemples:
valide : A1 non valide : 1A
 Doit être constitué uniquement de lettres, de chiffres et du soulignement _
(Eviter les caractères de ponctuation et les espaces)
Exemples:
valides : point22, point_22 non valides : point 22, point-22, point;22
 Doit être différent des mots réservés du langage
 La longueur du nom doit être inférieure à la taille maximale spécifié par le
langage utilisé.
Types des variables
Type Désignation Exemple

ENTIER Nombre entier 42

REEL Nombre flottant (à virgule) 0,157

BOOLEEN Énumération définissant les vrai


données vrai et faux

CARACLTERE Caractère ASCII sur un octet ‘a’

CHAINE DE Chaîne de caractère ‘codage ’


CARACTERE
Constante et variable
Déclaration
Moyenne Nom étudiant

FSTS
Faculté N°
Constante et variable
Affectation
14,25 Mohamed Ali
Moyenne Nom étudiant

FSTS 1045
Faculté N°
Déclaration des variables
 Rappel : toute variable utilisé dans un programme doit avoir fait l’objet
d’une déclaration préalable,
• En pseudo code, on va adopter la forme suivante pour la déclaration de
Variables:
Variables liste d’identificateur : type
• Exemple :
Variables i, j, k : entier
x, y : réel
OK : booléen
ch1, ch2 : chaine de caractères
L’instruction d’affectation
 L’affectation consiste à attribuer une valeur à une variable (ça en fait
à remplir ou à modifier le contenu d’une zone mémoire).

 En pseudo-code, l’affectation se note avec le signe ←


var ← e : attribue la valeur de ‘e’ à la variable var
 e peut être une valeur, ou une variable ou une autre expression,
 var et e doivent être de même type ou de types compatibles,
 l’affectation ne modifie que ce qui est à gauche de la flèche.
Exemples:
valides : i ←1, j ← i, k ←i+j, x ←10.3, OK ←VRAI, ch1 ←"table", ch2
←ch1, x ←4
Non valides : i ←10.3 OK ←"table" j←x
L’instruction d’affectation
 Beaucoup de langages de programmation utilisent le signe ‘=‘ pour l’affectation ←.
Attention aux confusions :
L’affectation n’est pas commutative : A ← B est différents de B ← A
L’affectation est différentes d’une équation mathématique :
A ← A+1 a un sens en langage de programmation
A + 1 ← A n’est pas possible en langage de programmation
Certains langages donnent des valeurs par défaut aux variables déclarées.
 Pour éviter tout problème il est préférable d’initialiser les variables déclarées.
Exercices simples sur l’affectation 1
Donnez les valeurs des variables a, b , c après exécution des
instructions suivantes:
Variables a, b , c : entier
début
a ←3
b ←7
a ←b
b ←a + 5
c ←a + b
c ←b – a
fin
Exercices simples sur l’affectation 2
Donnez les valeurs des variables a, b après exécution des instructions
suivantes:
Variables a, b : entier
début
a ←1
b ←2
a ←b
b ←a
fin
Les deux dernières instructions permettent-elles d’échanger les
valeurs de a et b ?
Exercices simples sur l’affectation 3
Ecrire un algorithme permettant d’échanger les valeurs de deux
variables a et b:
Expressions
et
opérateurs
Expressions et opérateurs
 Une expression peut être une valeur, une variable ou une opération
constitué de variables reliées par des opérateurs,
Exemples : 1, b, a*2, a+3*b-c, ….
 L’évaluation d’une 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 logique : NON, ET, OU, XOR
Des opérateurs relationnels : =, ≠, <, >, <=, >=
Des opérateurs sur les chaines : & (concaténation)
Expressions et opérateurs
 Une expression est évaluée de gauche à droite mais en tenant
compte de priorités
 Pour les opérateurs arithmétique donnés ci-dessus, l’ordre de
priorités est le suivant:
 ^ : (élévation à la puissance)
 *, / (multiplication, division)
 % (modulo)
 +, - (addition, soustraction)

 En cas de besoin (ou doute), on utilise les parenthèses pour indiquer


les opérations à effectuer en priorité
Exemple : ( 2 + 3 ) * 7 vaut 35
Exercices simples sur les opérateurs
Que produit l’algorithme suivant ? Variables A, B, C en Caractères
1- Début
A ← “FST”
B ← “S”
C←A&B
Fin

2- Début
A ← “423“
B ← “12”
C←A&B
Fin
Instructions
d’entrées-
sorties
Les instructions d’entrées/sorties
Variable A en Numérique:

Début
A ← 12^2
Fin
Les instructions d’entrées/sorties
 Les instructions de lecture et d’écriture permettent à la machine de
communiquer avec l’utilisateur.
 La lecture permet d’entrer des données à partir du clavier
 En pseudo code, on note: lire var
la machine met la valeur entrée au clavier dans la zone mémoire
nommée var
 Remarque : le programme s’arrête lorsqu’il rencontre une instruction
lire et ne se poursuit qu’après la frappe d’une valeur au clavier et de la
touche Entrée.
Les instructions d’entrées/sorties
 L’écriture permet d’afficher des résultats à l’écran (ou de les écrire
dans un fichier)
 En pseudo code, on note : écrire (var)
La machine le contenu de la zone mémoire var
 Conseil : avant de lire une variable, il est fortement conseiller d’écrire
des messages à l’écran, afin de prévenir l’utilisateur de ce qu’il doit
frapper.
Exercices simples sur les entrées-sorties
Quel résultat produit le programme suivant ?
Variables val, double numériques

Début
Val1 ← 231
Val2← Val1 * 2
Ecrire Val1
Ecrire Val2
Fin
Exercices simples sur les entrées-sorties
Ecrire un algorithme qui demande un nombre entier à l’utilisateur, puis
qui calcule et affiche le double de ce nombre
Exercices simples sur les entrées-sorties
Ecrire un algorithme qui vous demande de saisir votre nom puis votre
prénom et qui affiche ensuite votre nom complet
Structures
alternatives
Structures alternatives
 Les instructions conditionnelles servent à n’exécuter une partie ou
une séquence d’instructions que si une condition est vérifiée.
 On utilisera la forme suivante: Si condition alors
instructions ou suite d’instructions 1
Sinon
instructions ou suite d’instructions 2
Finsi
 La condition peut être une condition simple ou une condition
composée de plusieurs conditions.
Exercices simples sur Structures alternatives
Ecrire un algorithme qui demande un nombre à l’utilisateur, et
l’informe ensuite si ce nombre est positif ou négatif (on laisse de côté
le cas où le nombre vaut zéro).
Conditions composées
L’informatique met à notre disposition quatre opérateurs logiques : ET, OU,
NON, et XOR.
Le ET: Pour que Condition1 ET Condition2
soit VRAI, il faut impérativement que Condition1 soit VRAI et que Condition2
soit VRAI.
Le OU: Pour que : Condition1 OU Condition2
soit VRAI, il suffit que Condition1 soit VRAIE ou que Condition2 soit VRAIE. Le
point important est que si Condition1 est VRAIE et que Condition2 est VRAIE
aussi, Condition1 OU Condition2 est VRAIE.
Conditions composées
Le XOR (ou OU exclusif): Pour que Condition1 XOR Condition2
soit VRAI, il faut que Condition1 soit VRAI, ou bien que Condition2 soit VRAI.
Mais si toutes les deux sont fausses, ou que toutes les deux sont VRAI, alors le
résultat global est considéré comme FAUX.
le NON inverse une condition : NON(Condition1)
est VRAI si Condition1 est FAUX, et il sera FAUX si Condition1 est VRAI.
Conditions composées
Table de vérité
Conditions composées

Exercice:
Ecrire un algorithme qui demande deux nombres à l’utilisateur et
l’informe ensuite si leur produit est négatif ou positif (on laisse de
côté le cas où le produit est nul). Attention toutefois : on ne doit pas
calculer le produit des deux nombres.
Tests imbriqués
Variable Temp en Entier
Début
Ecrire “Entrez la température de l’eau :” c’est un peu
Lire Temp
laborieux!!
Si Temp =< 0 Alors
Ecrire “C’est de la glace“
Finsi
Si Temp > 0 Et Temp < 100 Alors
Ecrire “C’est du liquide”
Finsi
Si Temp > 100 Alors
Ecrire “C’est de la vapeur”
Finsi
Fin
Tests imbriqués
Variable Temp en Entier
Début
Ecrire “Entrez la température de l’eau :”
Lire Temp
Si Temp =< 0 Alors
Ecrire “C’est de la glace“
Sinon
Si Temp < 100 Alors
Ecrire “C’est du liquide”
Sinon
Ecrire “C’est de la vapeur”
Finsi
Finsi
Fin
Tests imbriqués

Exercice:
Ecrire un algorithme qui demande un nombre à l’utilisateur, et
l’informe ensuite si ce nombre est positif ou négatif (on inclut cette
fois le traitement du cas où le nombre vaut zéro) en utilisant les
conditions imbriquées.
SELECTION CHOIX MULTIPLES
« SELON »
selon <identificateur>
(liste de) valeur(s) : instructions
(liste de) valeur(s) : instructions

[autres: instructions]
SELECTION CHOIX MULTIPLES
« SELON »
En utilisant Selon En utilisant Si

selon abréviation si abréviation = "M "


"M" : afficher( " Monsieur " ) alors afficher( "Monsieur" )
"Mme" :afficher( " Madame " ) sinon si abréviation = « Mlle »
"Mlle" : afficher( " Mademoiselle " ) alors afficher("Mademoiselle")
autres :afficher( " Monsieur, Madame " ) sinon si abréviation = "Mme"
alors afficher( "Madame" )
sinon afficher("Monsieur,Madame" )
fsi
fsi
fsi
RÉPÉTITION D’UN TRAITEMENT
BOUCLE « POUR »
Valeur
initiale Valeur
finale

pour <var> <- valInit à valfin [par <pas>] faire


traitement {suite d’instructions} Valeur à ajouter
fpour à
<var> à chaque
passage dans la
boucle

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


fois
RÉPÉTITION D’UN TRAITEMENT
BOUCLE « POUR »
Algorithme FaitLeTotal
variables nbVal, cpt : entiers
valeur, totalValeurs: réels
début
afficher("Combien de valeurs voulez-vous saisir ?")
lire(nbVal)
totalValeurs <- 0
pour cpt <-1 à nbVal faire
afficher("Donnez une valeur :")
lire(valeur)
totalValeurs <- totalValeurs+ valeur {cumul}
fpour
afficher("Le total des ", nbVal, "valeurs est " , totalValeurs)
fin
RÉPÉTITION D’UN TRAITEMENT
BOUCLE « TANT QUE … FAIRE»
initialisation de la
(des) variable(s) de
condition
amorçage
tant que <expression logique (vraie)> faire
traitement suite d’instructions à
exécuter si condition
relance
vraie
ftq
ré-affectation de la
(des) variable(s) de
condition
RÉPÉTITION D’UN TRAITEMENT
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) <- 10
Variables nbVal, val : entiers
Début
nbVal<-0
saisir(val)
tant que val <>STOP ET nbVal< MAX faire
nbVal <- nbVal+ 1
saisir(val)
Ftq
afficher(val, nbVal)
Fin
COMPARAISON BOUCLES
« POUR » ET « TANT QUE »
pour cpt <- 1 à nbVal faire
afficher("Donnez une valeur :")
saisir(valeur)
totalValeurs <- totalValeurs+ valeur {cumul}
fpour

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
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 : TANT QUE


• Itération avec arrêt décidé par saisie utilisateur
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,
BOUCLE « RÉPÉTER …TANT QUE »

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


Algorithme Essai {Cet algorithme a besoin d’une valeur positive}
Variables valeur : entier
Début
Répéter
afficher("Donnez une valeur positive non nulle : ")
saisir(valeur)
tant que valeur <=0
afficher("La valeur positive non nulle que vous avez saisie est ")
afficher( valeur ) {traitement de la valeur saisie}
fin
COMPARAISON BOUCLES
« REPETER» ET « TANT QUE »
Répéter
afficher("Donnez une valeur positive paire :")
saisir(valeur)
tant que(valeur <= 0 ou(valeur % 2) <>0)

=
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
COMPARAISON BOUCLES
« REPETER» 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
COMPARAISON BOUCLES
« REPETER» ET « TANT QUE »
• Exercice:
saisir des données et s'arrêter dès que leur somme dépasse 500

Algorithme 1 Algorithme 2
somme <- 0 saisir(val)
répéter somme <- val
saisir(val) tant que somme <= 500 faire
somme <- somme + val saisir(val)
tant que somme <= 500 somme <-somme + val
ftq
Manipulation
des tableaux
Introduction

Problème:
Écrire un programme qui permet de saisir les moyennes de tous les 30 étudiants inscrits
puis de déterminer combien d'entre elles sont supérieures à la moyenne de la classe.

Moy = (N1 + N2 + N3 + N4 + N5 + N6 + N7 + N8 + N9 + N10 + N11 + N12 + ... + N30 ) / 30


Notion du Tableau
Un ensemble de valeurs portant le même nom de variable et repérées par un nombre,
s’appelle un tableau, ou encore une variable indicée.
Le nombre qui, au sein d’un tableau, sert à repérer chaque valeur s’appelle l’indice.
Chaque fois que l’on doit désigner un élément du tableau, on fait figurer le nom du
tableau, suivi de l’indice de l’élément, entre parenthèses.
Notation et utilisation algorithmique du
Tableau
Un tableau doit être déclaré comme tel, en précisant le plus grand indice et le type de
valeurs qu’il contiendra. Comme nous venons de voir que les indices commencent à zéro,
conséquence imparable, si on veut 12 emplacements, le plus grand indice sera 11

Tableau Note(11) en Entier


Notation et utilisation algorithmique du
Tableau
Tableau Note(12) en Entier
Variables i, Som en Entier
Variable Moy en Réel
Pour i ← 0 à 11 faire
Ecrire “Entrez la note n°”, i
Lire Note(i)
Finpour
Som ← 0
Pour i ← 0 à 11 faire
Som = Som + Note(i)
finpour
Moy = Som / 12
Notation et utilisation algorithmique du
Tableau
La valeur d’un indice doit toujours :
 être égale au moins à 0 : Donc attention, Tab(6) est le septième élément du
tableau Tab !
 être un nombre entier. Quel que soit le langage, l’élément Tab(3,1416)
n’existe jamais.
 être inférieure ou égale au nombre d’éléments du tableau . Si le tableau
tab a été déclaré comme ayant 25 éléments
-> tab(32) déclenchera automatiquement une erreur.
Notation et utilisation algorithmique du
Tableau
Exercice:
Ecrire un algorithme qui déclare et remplisse un tableau de 7 valeurs
numériques en les mettant toutes à zéro.

Tableau tab(7) en Entier


Variables i en Entier
Pour i ← 0 à 6 faire
tab(i) <- 0;
Finpour
Notation et utilisation algorithmique du
Tableau
Algorithme TableauDynamqiue
Variables : nb en Entier // Le nombre des cases
Notes en Tableau d'Entiers // Tableau pour stocker les notes
Début
Ecrire "Combien y a-t-il de notes à saisir ?"
Lire nb ;

// Allouer un tableau Notes de taille nb


// Initialiser les éléments du tableau
Pour i de 0 à nb-1 faire
Notes[i] ← 0 // Initialiser chaque note à 0
Fin Pour
Fin
Tri d’un Tableau: le tri par selection
La technique du tri par sélection est la suivante : on met en bonne
position l’élément numéro 1, c’est-à-dire le plus petit. Puis on met en
bonne position l’élément suivant. Et ainsi de suite jusqu’au dernier. Par
exemple, si l’on part de :
Tri d’un Tableau: le tri par selection
Tri d’un Tableau: le tri par selection
Pour i ← 0 à n-2 //boucle principale : le point de départ se décale à chaque tour
posmini ← i //on considère provisoirement que t(i) est le plus petit élément
Pour j ← i + 1 à n-1 faire //on examine tous les éléments suivants
Si t(j) < t(posmini) alors
posmini ← j
Finsi
FinPour
//cet endroit, on sait maintenant où est le plus petit élément. Il ne reste plus qu'à
effectuer la permutation.
temp ← t(posmini)
t(posmini) ← t(i)
t(i) ← temp
FinPour
Tri d’un Tableau: le tri par insertion
• Le principe du tri par insertion:
 Consiste à parcourir la liste: on prend les éléments dans l’ordre.
 Ensuite, on les comparent avec les éléments précédents jusqu’à trouver la
place de l’élément qu’on considère,
il ne reste plus qu’à décaler les éléments du tableau pour insérer l’élément
considéré à sa place dans la partie déjà triée,
Tri d’un Tableau: le tri par insertion

Variables : i, j, n , echange : entier


Début
Pour i ← 1 à n - 1 faire
echange ← t(i)
j←i-1
Tant que (j >= 0 ET t(j) > echange) faire
t(j + 1) ← t(j)
j←j-1
FinTantQue
t(j + 1) ← echange
FinPour
Fin
Tri d’un Tableau: le tri par insertion
Tri d’un Tableau: le tri à bulle
• Le principe du tri à bulles (bubble sort) est de comparer deux à deux les
éléments t(i) et t(i+1) consécutifs d'un tableau et d'effecteur une
permutation si t(i) > t(i+1) .
• On continue de trier jusqu'à ce qu'il n'y ait plus de permutation.
Tri d’un Tableau: le tri à bulle
Variables : i, j : entier
estTrie: booléen
estTrie ← vrai
Tant que (estTrie = vrai ) alors
estTrie ← vrai
Pour i ← 0 à n-1 faire
Si t(i) > t(i+1) alors
temp ← t(i)
t(i) ← t(i+1)
t(i+1) ← temp
estTrie ← faux
Finsi
FinPour
FinTantQue
Recherche dans un tableau: Recherche
séquentielle
Le principe de l'algorithme de recherche
séquentielle consiste à parcourir un
tableau d'éléments dans l'ordre de ses
indices jusqu'à ce qu'un élément
recherché soit trouvé ou bien que la fin
du tableau soit atteinte et le rang
(indice) de l'élément est alors retourné.
Recherche dans un tableau: Recherche
séquentielle
Fonction RechSéq(T : Tableau d'entiers, N : entier, ValRech : entier) : entier
Variable i : entier
Début
Pour i Allant de 1 à N Faire
Si T(i) = ValRech Alors
Retourner i
FinSi
FinPour
Retourner -1
FinFonction
Recherche dans un tableau: Recherche
dichotomique
 L'algorithme de recherche dichotomique est un algorithme efficace et rapide pour la
recherche d'un élément dans un tableau trié.
 Le principe de cet algorithme consiste à diviser le tableau en deux parties et à
comparer la valeur recherchée avec l'élément situé au milieu du tableau (l'élément
médian).
 Si la valeur recherchée correspond à l'élément médian, alors l'algorithme s'arrête et
renvoie l'indice de cet élément. Sinon l'algorithme va répéter la recherche uniquement
dans la partie qui peut contenir la valeur recherchée
Recherche dans un tableau: Recherche
dichotomique
Fonction RechDich( T: tableau d'entiers, N : entier, ValRech : entier) : entier
Variables D, F, M : entier
D ← 1; F ← N
Début
TantQue D <= F Faire
M ← Ent ((D + F) / 2)
Si T(M) = ValRech Alors
Retourner M
Sinon
Si T(M) < ValRech Alors
D←M+1
Si T(D) = ValRech Alors
Retourner D
FinSi
Sinon
F←M-1
Si T(F) = ValRech Alors
Retourner F
FinSi
FinSi
FinSi
FinTantQue
Retourner -1
FinFonction
Recherche dans un tableau: Recherche
dichotomique
Le tableau ci-dessous montre le fonctionnement de cet algorithme. La valeur recherchée est 35.

•À chaque itération de la recherche dichotomique, l'algorithme réduit l'intervalle de recherche en se basant


sur la comparaison avec l'élément médian.
•La cellule grise indique l'élément médian de l'intervalle à chaque étape.
•Lors de la première itération, l'algorithme compare la valeur médiane (ici 15) à la valeur recherchée (35).
•Comme 15 < 35, la recherche continue dans la partie supérieure du tableau (indices M + 1 à F).
•À l'itération suivante, la valeur recherchée est trouvée, et l'algorithme renvoie l'indice de cet élément.
•Si la valeur n'est pas trouvée après avoir réduit l'intervalle à zéro, l'algorithme renvoie -1.
Tableaux à deux dimensions
0 1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9 10 0
11 12 13 14 15 16 17 18 19 20 1
21 22 23 24 25 26 27 28 29 30 2
31 32 33 34 35 36 37 38 39 40 3
4
5
6
7
8
91 92 93 94 55 96 97 98 99 100 9
Tableaux à deux dimensions

 Un tableau à deux dimensions se déclare ainsi :


Tableau nom_tableau(nombre_ ligne, nombre_colonne) en Type_donnée

Exemple: Tableau cases(7, 7) en Entier


 Cela veut dire : réserve moi un espace de mémoire pour 7 x 7 entiers

 Pour notre problème de dames. La case qui contient le pion est dorénavant Cases(i, j).
Et les quatre cases disponibles sont Cases(i-1, j-1), Cases(i-1, j+1), Cases(i+1, j-1) et
Cases(i+1, j+1).
Tableaux à deux dimensions

 Exemple : Initialisation d’un tableau de 7*7 avec des zéros:


Tableau Cases(7,7) : Entier;
Début
Pour i de 0 à 6 faire
Pour j de 0 à 6 faire
Cases(i,j) ← 0 // Initialisation des éléments à 0
FinPour
FinPour
Fin
Tableaux à deux dimensions
 Exercice: Quel résultat produira cet algorithme ?
Tableau X(2, 3) en Entier;
Variables i, j, val en Entier;
Début
Val ← 1;
Pour i ← 0 à 1 faire
Pour j ← 0 à 2 faire
X(i, j) ← Val;
Val ← Val + 1;
FinPour
FinPour
Pour i ← 0 à 1 faire
Pour j ← 0 à 2 faire
Ecrire X(i, j);
FinPour
FinPour
Fin
Tableaux à deux dimensions
 Exercice: Quel résultat produira cet algorithme ?
Tableau X(2, 3) en Entier;
Variables i, j, val en Entier;
Début
Val ← 1; X(0, 0) = 1 X(0, 1) = 2 X(0, 2) = 3
Pour i ← 0 à 1 faire
Pour j ← 0 à 2 faire
X(1, 0) = 4 X(1, 1) = 5 X(1, 2) = 6
X(i, j) ← Val;
Val ← Val + 1;

FinPour
FinPour
1 2 3
Pour i ← 0 à 1 faire
Pour j ← 0 à 2 faire 4 5 6
Ecrire X(i, j);
FinPour
FinPour
Fin
Les sous
algorithmes
Introduction
Pour l'écriture de nos algorithmes nous ne savons formuler que des actions
simples. Ainsi nous observons :
 des redondances de blocs d'actions ;
 une rigidité trop grande de nos algorithmes ;
 une grande difficulté pour détecter les fautes en cas d'erreur.
Solution:
-> Utilisation des sous algorithmes
Introduction
Le sous algorithme devra être totalement spécifié, donc dans la zone de
spécification de l'algorithme principal, avant d’y faire référence en fonction
des besoins.
Un sous algorithme a les mêmes composantes qu’un algorithme à savoir :
 une entête ;
 une zone de déclaration ;
 un corps.
Classification des sous algorithmes

Selon la structure de sortie, il existe deux familles de sous algorithme :


 une fonction : un sous algorithme fournissant en sortie un résultat
élémentaire (de type de base) ;
 une procédure : un sous algorithme fournissant en sortie des
résultats élémentaires ou un résultat non élémentaire.
Les fonctions
Une fonction est un sous programme qui retourne un seul résultat.
Syntaxe de déclaration d’une fonction:
FONCTION <nom_fonction> (Arg1: Type, Arg2: Type, …): <type du
résultat >
{Déclaration}
{ le corps de la fonction }
Début
Action (i)
Nom_fonction <- valeur renvoyée
Fin
Les fonctions
Exemple:
FONCTION Cube (x: Entier) : entier
Variables r : Entier
Début
r <- x^3
Cube <- r
Fin
Les fonctions

• Exercice 1:
Ecrire la fonction SommeCarre qui permet de calculer la somme des carrées de
deux réels

• Exercice 2 :
Ecrire la fonction Pair qui permet de déterminer si un nombre est pair ou non
Les fonctions
Appel d’une fonction:
FONCTION Calcul (x: Réel, y: Réel, z: Réel): Réel
Variables a: Entier Déclaration de la fonction
Début Calcul
a<- 3
Calcul<- (x+y+z)*a
Fin

Variables i,j,k,b: Réel


Début
Lire (i)
Lire (j)
Lire (k)
b<- Calcul (i,j,k) +2 Appel de la fonction Calcul
Ecrire (b)
Fin
Les fonctions
Variables locales et globales:

 La portée d’une variable est l’ensemble des sous-programmes où cette


variable est connue,
 Une variable définit au niveau du programme principale est appelée variable
globale.
->Sa portée est totale: tout sous-programme du programme principale peut
utiliser cette variable.
 Cependant, une variable définie au sein d’un sous-programme est appelée
variable locale.
->La portée d’une variable locale est uniquement le sous-programme qui la
déclare.
Remarque: lorsque le nom d’une variable locale est identique à la variable
globale, la variable globale est localement masquée.
Les fonctions
Variables locales et globales: Exemple
FONCTION Calcul (x: Réel, y: Réel, z: Réel): Réel
Variables a: Entier
Début
a<- 3
Calcul<- (x+y+z)*a
Fin

Variables i,j,k,b: Réel


Début
Lire (i)
Lire (j)
Lire (k)
b<- Calcul (i,j,k) +2
Ecrire (b)
Fin
Les fonctions
Le passage de paramètres:

 Passage par valeur: les valeurs des paramètres effectifs sont affectées aux
paramètres formels correspondants au moment de l’appel de la fonction.
Dans ce mode le paramètre effectif ne subit aucune modification.

 Passage par adresses (référence): Les adresses des paramètres effectifs sont
transmises à la fonction appelante. Dans ce mode le paramètre effectif subit
les mêmes modification que le paramètre formel lors de l’exécution de la
fonction.
Les fonctions
Le passage de paramètres:

Programme 1: par valeur Programme 2: par adresse


Fonction Calcul(a: Réel): Réel Fonction Calcul(a: Réel): Réel
Variables res: Réel Variables res: Réel
DEBUT DEBUT
res <- a *3 res <- a *3
a<- a-1 a<- a-1
Calcul <- res Calcul <- res
FIN FIN
Variable x: Réel Variable x: Réel
x<- 3 x<- 3
Ecrire Calcul(x) // 3*3 = 9 Ecrire Calcul(x) // 9
Ecrire x // 3 Ecrire x // 2
Les procédures
Une procédure est un sous programme qui ne retourne aucun résultat. Elle
admet, comme la fonction, des paramètres,
Syntaxe de déclaration d’une procédure:
PROCEDURE <nom_procedure> (Arg1: Type, Arg2: Type, …)
{Déclaration}
{ le corps de la procédure}
Début
{Instructions de la procédure}
Fin
Les procédures

• Exercice :
Ecrire une procédure « Echanger » qui permet d’échanger les valeurs de deux
variables.
Les fichiers
Les fichiers
 Toute donnée en mémoire externe est organisée sous forme de fichier(s).
 Un fichier est :
une séquence d'octets,
 repéré par un nom (dit nom externe), par exemple "montexte.txt" ou
"TP2.c",...
 enregistré sur un support physique non volatile de l'ordinateur : disque,
clé USB, carte sd,...
 Un fichier n'est pas détruit à l'arrêt de l'ordinateur.
 La taille d'un fichier n'est pas précisée à sa création.
 Chaque fichier contient des lignes appelées enregistrements.
Les fichiers
L’organisation des fichiers:

 Fichier texte :
Un fichier texte est un fichier qui stocke des données sous forme de caractères lisibles par
l'humain. Chaque caractère est codé selon un format standard (comme ASCII ou UTF-8).
Ces fichiers contiennent du texte brut, comme des lettres, des chiffres et des symboles,
séparés par des espaces ou des sauts de ligne.
Exemple : Un fichier .txt qui contient une liste de noms ou des phrases.

 Fichier binaire :
Un fichier binaire est un fichier qui stocke des données sous une forme directement
interprétable par l'ordinateur, mais pas lisible directement par l'humain. Il contient des
informations sous forme de bits (0 et 1) organisés selon un format spécifique (par exemple,
des images, des sons, des programmes compilés).
Exemple : Un fichier image .jpg ou un fichier exécutable .exe.
Les fichiers
Types d’accès:

 L’accès séquentiel: Dans ce type d’accès, les données sont lues ou écrites dans le fichier
de manière linéaire, de la première donnée à la dernière, sans possibilité de sauter
directement à une position spécifique. Ce type d'accès est particulièrement adapté
lorsque les données doivent être traitées dans un ordre précis.

 Accès direct (ou accès aléatoire): On peut accéder directement à l’enregistrement de


son choix, en précisant le numéros de cet enregistrement, Cela veut dire une gestion
fastidieuse des déplacements dans le fichier.
Les fichiers
Résumé:

Pour stocker
Organisé
Incompréhensible
selondesune
données
pour
structure
un
Pour stocker
Organisé
Généralement en lignes
des
plusinformations
et
volumineux
caractères Données
Plus
Nécessite
Souvent compact
accès
brutes
descar
outils
direct
(bits),
lesou
données
ousouvent
Caractères
Facilement
Peut
Accès être
souvent
modifié
lisibles
lisible
séquentiel
avec
avec
(texte
un
unbrut),
(ligne spécifique
humain
complexes sans (dépend
comme
un programme
des
du type
images
de
Critères humaine
Contenu
Structure
Taille
Lisibilité
Modifications
Utilisation
Exemples
Accès Fichier
avec
car
textuelles
.txt, chaque
.csv,
desTexte
.html
séparateurs
comme
caractèredesoccupe
comme
fichiersunle Fichier
illisibles
sont
programmes
.jpg,
aléatoire
codées
.exe,
Binaire
directement
pour
.mp3,
directement
spécifiques
certaines
.bin par parties
en
pour
codés
éditeur
simple
par ligne)
en
éditeur
deASCII
textedeoutexte
UTF-8 données
spécifique
(.jpg), des: image,
vidéos
pour interpréter
(.mp4),
son, des les
sautdes
espace
.txt, de de
ligne
scripts,
mémoire
des logs l'humain
binaire
l'édition
du fichier
exécutable, etc.)
données
programmes exécutables (.exe)
Les fichiers
Ouvrir un fichier:
Lors de l’ouverture du fichier il faut préciser pour quelle opération celui-ci sera utilisé:
Entrée, Sortie, Ajout. On indiquera aussi par un n° le buffer qui sera la représentation du
fichier en mémoire:

OUVRIR <NomFichier> sur numCanal : mode


Où:
NomFichier: Nom du fichier sur le disque dur. Exemples:
numCanal: Numéro de canal
mode: mode d’ouverture; il existe 3 modes: OUVRIR "data.txt" sur 4: LECTURE
LECTURE: Lire le fichier OUVRIR "data.txt" sur 4: ECRITURE
ECRITURE: Ecrire au début du fichier OUVRIR "data.txt" sur 4: AJOUT
AJOUT: Ecrire à la fin du fichier.
Les fichiers
Lecture d’un fichier:

LireFichier numCanal : nomVariable

L’instruction LireFichier récupéré dans la variable spécifiée l’enregistrement suivant dans le


fichier (« suivant », par rapport au dernier enregistrement lu); c’est en cela que le fichier est
dit séquentiel.
Exemple: Variables ch : Chaine de caractères
DEBUT
OUVRIR "data.txt" sur 4: LECTURE
LireFichier 4,ch
FIN
Les fichiers
Ecriture dans un fichier:

EcrireFichier numCanal : nomVariable

numCanal: Numéro désignat le fichier


nomVariable: nom de la variable contenant la valeur à écrire dans le fichier

Exemple: Variables ch : Chaine de caractères


DEBUT
OUVRIR "data.txt" sur 4: AJOUT
ch <- "Bonjour"
EcrireFichier 4,ch
FIN
Les fichiers
Fermeture un fichier:

Fermer (numCanal)

Une fois qu’ona terminé avec un fichier, il ne faut pas oublier de fermer ce dernier, on
livére ainsi le canal qu’il occupait (et accessoirement on pourra utiliser ce canal dans la
suite de programme pour un autre fichier ou pour le même).

Fin du fichier:

EOF (numCanal)

Comme on sait rarement à l’avance le nombre d’enregistrements dans un fichier, on utilise


alors la fonction EOF (End Of File), Cette fonction retourne Vrai si on a atteint la fin du
fichier.
Les fichiers
Supprimer un fichier:

Supprimer (numCanal)

Renommer un fichier:

Renommer (ancienNom, NouveauNom)


Les fichiers

• Exercice :
On souhaite sauvegarder et gérer des noms dans un fichier. Ainsi, écrire les
algorithmes qui permettent:
- Ecrire des noms dans un fichier
- Consulter le contenu du fichier
- Supprimer le fichier

Vous aimerez peut-être aussi