Algo & Programmation Python - Partie I
Algo & Programmation Python - Partie I
programmation en
Python
Pr. HABBAT Nassera
[email protected]
Exemple de langages :
Fortran, Cobol, Pascal, C, …
C++, Java, …
Étapes de réalisation d’un programme
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
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)
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
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
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).
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
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
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 »
=
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)
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.
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
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
• 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
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:
• 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.
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:
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)
Supprimer (numCanal)
Renommer un fichier:
• 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