Algorithmique
Algorithmique
l’Algorithmique
Introduction
• Qu’est-ce qu’un algorithme ?
Un algorithme est une suite logique d’instructions permettant de résoudre
un problème (ou de répondre à un besoin).
- Résoudre le problème :
C’est trouver les structures de données adaptées ainsi que l’enchaînement
des actions à réaliser pour passer des données aux résultats.
• Comment exécuter un algorithme sur un ordinateur ?
Il faut traduire cet algorithme à l’aide d’un langage de programmation connu
par l’ordinateur.
Enoncé d’un problème
Analyse, compréhension
Pseudo code
Résolution
Algorithme
Langage de
Codification programmation
(code)
Programme
Interprétation
Définition 2
Un algorithme est une suite d'actions ordonnées en séquence qui portent
sur les objets d'un univers fini.
Règles de mise en forme d’un algorithme
Nom de l’algorithme
Début
*commentaires*
Instruction 1
*commentaires*
Instruction 2
Fin
Les objets utilisés dans un algorithme
Les différents objets
• Les variables
Une variable est un objet contenant une valeur appelée à être modifiée au
cours de l'algorithme.
• Les constantes
Une constante est un objet dont la valeur ne change pas au cours de
l'algorithme.
Nom de l’algorithme
Déclaration des variables et constantes
Début
*commentaires*
Instructions1
Instructions 2
Fin
• Exemple
:
Algo Prix_du_pain
Variables
Nom : chaîne de caractères
Nb : Entier
Prx, Mtt, Rem : Réel
Constantes
Txrem=0,1
Début
*commentaires*
Instruction1
Instruction2
Fin
Instructions élémentaires
• Affectation
L'opération consiste à affecter une valeur à une variable. Elle est
Notation :
Saisir nom variable ou
Lire nom variable
Exemple précédent :
Lire Nom
(saisir sur le clavier des caractères qui représenteront la valeur de la variable nom)
• Instruction de sortie
Permet d'afficher à l'écran du "texte", le contenu d'un objet (variable ou
constante) voir le résultat d'une expression.
Notation :
Afficher nom variable ou Afficher « texte » ou
Ecrire nom variable
Exemple :
Ecrire « Saisir un nom », Nom
• Expressions
Des opérations sur les objets - variables, constantes ou encore littéraux
(valeurs numériques ou alphanumériques) - peuvent être réalisées à l'aide
d'opérateurs arithmétiques ou logiques pour former des expressions.
Les principaux opérateurs arithmétiques (à partir des variables
déclarées ci-dessus)
-Une expression est un ensemble de valeurs reliées par des opérateurs, et
équivalent à une seule valeur
Exemple :
4+2, 5*6, 4<9, A>6, C+B,…
< Inférieur à
> Supérieur à
<> Différent de
Les opérateurs logiques
Opérateur Description
Logique
ET l’un et l’autre
OU l’un ou l’autre
NON Inverse la valeur
• Exemple
• Etape1 : on veut calculer la surface d’un cercle
• Etape 2 :
• Résultat: La surface du cercle (Surf)
• Données: Le rayon (R), 3,14 (Pi)
• Traitement: Surf = Pi * R*R
• Etape 3 : Ecriture d’un algorithme
• La structure alternative
Notation :
SI condition
Alors action1
Sinon action2
FIN SI
SI condition
Alors action
FIN SI
Exemple :
Algo : prix_du_pain
Variables
Nom : chaîne de caractères
Nb : Entier
Prx, Mtt, Rem : Réel
Constantes
Tx1 = 0,1
Début
*calcul d'une remise client*
Ecrire" Prix ?"
Lire Prx
Ecrire"Nombre ?"
Lire Nb
Mtt ← Prx * Nb
Si Mtt > 1000
Alors Rem ← Mtt * Tx1
Fin si
Ecrire "Montant de la remise :", Rem
Fin
• La structure de choix
Notation
Selon expression Faire
Valeur 1 : action1
Valeur 2 : action2
…
Valeur n : action n
Sinon : action par défaut
Fin selon
Les structures itératives
• La structure Tant que… Fin Tant que
Permet la répétition d'une (ou plusieurs) action(s) tant qu'une condition est
satisfaite.
Notation :
Teste si la condition est
Tant que condition Faire vérifiée . Si c'est le cas il y a
exécution des actions.
action 1
Quand la condition est
action 2 vérifiée l'algorithme se
poursuit après la boucle
Jusqu’à Condition (structure).
Exemple :
Algo : prix_du_pain
Variables
--------------------
Rep : chaîne de caractères
Constantes
-------------------
Début
(* remarque : une facture sera obligatoirement éditée *)
Répéter
Ecrire" Prix ?"
Lire Prx
Ecrire "Nombre ?"
Lire Nb
Mtt ← Prx * Nb
Si Mtt > 2000
Alors Rem ← Mtt * Tx1
Sinon Rem ← Mtt * Tx2
Fin si
Mtt ← Mtt – Rem
Ecrire « Voulez-vous une autre facture ? (oui/non) "
Lire Rep
Jusqu’à Rep = « non »
Fin
La structure répétitive
• La structure Pour … allant de … à … faire Fin Pour
Permet de répéter un nombre déterminé de fois une (ou plusieurs) action(s).
Notation :
Exemple :
……………..
Début
Ecrire "voulez-vous calculer une facture ?(oui/non)"
Lire Rep
Nb←0
Mtttot←0
Tant que Rep= "oui" Faire
Ecrire " Prix ?"
Lire Prx
Ecrire "Nombre ?"
Lire Nb
Mtt ← Prx * Nb
Nb ← Nb+1
Mtttot ← Mtttot + Mtt
Ecrire "Autre facture ? (oui/non) "
Lire Rep
Fin Tant que
Ecrire « montant total des »,Nb, « factures : » ,Mtttot
Fin
ALGORITHMIQUE
Les tableaux
28
Exemple introductif
• Supposons qu'on veut conserver les notes d'une classe de 10 étudiants
pour extraire quelques informations. Par exemple : calcul du nombre
d'étudiants ayant une note supérieure à 10
• Le seul moyen dont nous disposons actuellement consiste à déclarer 10
variables, par exemple N1, …, N10. Après 10 instructions lire, on doit écrire
10 instructions Si pour faire le calcul
nbre ← 0
Si (N1 >10) alors nbre ←nbre+1 FinSi
….
Si (N10>10) alors nbre ←nbre+1 FinSi
c'est lourd à écrire
• Heureusement, les langages de programmation offrent la possibilité de
rassembler toutes ces variables dans une seule structure de donnée
appelée tableau
29
indice Tableaux
element 0 1 2 3 4 5 6 7 8 9
notes 15 8 11 6,5 19 5 13 17 18 7
notes 15 8 11 6,5 19 5 13 17 18 7
31
indice Tableaux : exemples (1)
element 0 1 2 3 4 5 6 7 8 9
notes 15 8 11 6,5 19 5 13 17 18 7
T 15 8 11 6,5 19 5 13 17 18 7
33
Tableaux à deux dimensions
0 1 2 3 4 5 6 7 8 9
0
1 3 2 3 5 9 11 8 0 1
1 3 5 8 1 4 9 34 8 2 7
2 4 5 6 7 8 9 4 3 25 5
3 7 4 3 7 5 7 8 5 9 3
4 8 5 33 4 1 2 5 4 6 12
35
Exemples : lecture d'une matrice
36
Exemples : affichage d'une matrice
37
Exemples : somme de deux matrices
38
Tableaux : 2 problèmes classiques
39
Recherche séquentielle
41
Recherche dichotomique : algorithme
• Si la valeur cherché est 20 alors les indices inf, sup et milieu vont évoluer
comme suit :
inf 0 5 5 6
sup 8 8 5 5
milieu 4 6 5
• Si la valeur cherché est 10 alors les indices inf, sup et milieu vont évoluer
comme suit :
inf 0 0 2
sup 8 3 3
milieu 4 1 2
43
Méthodes de tri
Définition :
Un algorithme de tri est, en informatique ou en
mathématiques, un algorithme qui permet d'organiser
une collection d'objets selon un ordre déterminé
(croissant ou décroissant). Les objets à trier font donc
partie d'un ensemble muni d'une relation d'ordre. Les
ordres les plus utilisés sont l’ordre numérique et l'ordre
lexicographique.
Source : Wikipédia
Il existe plusieurs algorithmes connus pour trier les éléments
d’un tableau :
Le tri par sélection
Le tri à bulle
Le tri par insertion
Le tri rapide
…
I- Tri par sélection :
Principe :
– Recherche du plus petit élt du tableau et échange
avec le premier élt
– Recherche du plus petit élt du tableau entre les
positions 2 et n-1 et échange avec le second élt
– ...
– Recherche du plus petit élt entre les positions n-2
et n-1 et échange avec l'élt en position n-2
Tri par sélection
• Principe : à l'étape i, on sélectionne le plus petit élément parmi les
(n - i +1) éléments du tableau les plus à droite. On l'échange ensuite avec
l'élément i du tableau
• Exemple : 9 4 1 7 3
– Étape 1: on cherche le plus petit parmi les 5 éléments du tableau. On
l’identifie en troisième position, et on l’échange alors avec l’élément 1 :
1 4 9 7 3
– Étape 2: on cherche le plus petit élément, mais cette fois à partir du
deuxième élément. On le trouve en dernière position, on l'échange avec
le deuxième:
1 3 9 7 4
– Étape 3:
1 3 4 7 9
47
Tri par sélection : algorithme
• Supposons que le tableau est noté T et sa taille N
temp ← T[indice_ppe]
T[indice_ppe] ← T[i]
T[i] ← temp
FinPour
48
Exercice :
Ecrire la fonction triSelection(ls) qui permet de trier
les éléments de la liste ls en utilisant la méthode
de tri par sélection.
Tri par sélection : Python
def triSelection (ls):
for i in range(0,len(ls)-1) :
indice = i
for j in range(i+1,len(ls)) :
if ls[j] < ls[indice] :
indice = j
if indice != i :
val=ls[indice]
ls[indice] = ls[i]
ls[i] = val
return ls
II- Tri à bulles :
Principe :
Comparaison 2 à 2 des éléments adjacents
et échange s'ils ne sont pas ordonnés. Le
programme s'arrête lorsqu'on parcours la
liste sans faire d'échange
Comme les bulles, les plus grands éléments
remontent en fin de liste
Exercice :
Ecrire la fonction triBulles(ls) qui permet de trier
les éléments de la liste ls en utilisant la méthode
de tri à bulles
II- Tri à bulles :
def triBulles (ls):
echange= True
while echange==True :
echange=False
for i in range(0,len(ls)-1) :
if(ls[i]>ls[i+1]):
val=ls[i]
ls[i]=ls[i+1]
ls[i+1]=val
echange=True
III- Tri par insertion :
Principe :
• La liste étant trié jusqu'à l'élt i-1,
• insérer l'élément i à sa place parmi
les i premiers éléments
Exercice :
Ecrire la fonction tri_Insertion(ls) qui permet de
trier les éléments de la liste ls en utilisant la
méthode de tri par insertion.
III- Tri par insertion :
• Supposons que le tableau est noté T et sa taille N
58
Les enregistrements
Le type tableau nous a permis de définir une
structure composée de plusieurs éléments, cette
structure nous permettrait de réunir les éléments
de même type. Mais si nous voulons regrouper les
informations n'ayant pas nécessairement le même
type au sein d'une même structure, par exemple:
les informations concernant un étudiant. Une
nouvelle structure appelée enregistrement est plus
adaptée pour représenter ce type d'information.
Les enregistrements
Un enregistrement est un objet composé statique et
hétérogène c'est-à-dire qui renferme plusieurs
informations qui peuvent être de type différent.
Un enregistrement est défini par un ensemble de
données ou élément encore appelé champ.
Les champs sont les données élémentaires ou
composées et peuvent être de type différent.
Déclaration d’un type enregistrement
type nom_type=enregistrement
champ1 : type1
champ2 : type2
........
champn : type;
fin enregistrement Exemple: Déclarons un type étudiant :
Type Etudiant=enregistrement
matricule: chaîne
nom : chaîne
prénom : chaîne
sexe : caractère
age : entier
note : réel
fin enregistrement
Déclaration d'un enregistrement à partir d'un type
structuré
Type Etudiant=enregistrement
matricule: chaîne
nom : chaîne
prénom : chaîne
Syntaxe: Variable Nom_Variable: nom_type sexe : caractèree
age : entier
Exemple: Variable e1, e2 : Etudiant note : réel
fin enregistrement
En général on manipule un enregistrement champ par champ. On accède à un
champ de l'enregistrement en indiquant le nom de l'enregistrement suivi du nom du
champ. Les deux sont séparés par un point.
Exemple: e1.matricule e1.nom e1.prénom e1.sexe e1.age e1.note
e1.matricule ← '05S001‘
e1.nom ← 'toto' ou bien par lecture
e1.prénom ← 'Paul' lire(etud1.matricule)
e1.sexe ← 'M' lire(etud1.nom)
e1.age ← 19
e1.note ← 12.75
Application aux tableaux
d’enregistrements
Nous voulons constituer une base de données des enseignants. Chaque
enseignant est caractérisé par:
Le code.
Le nom.
Le prénom.
Le grade.
Le sexe.
Les enseignants seront stockés dans un tableaux
Donner une déclaration du type enseignant.
Ecrire une procédure sui permet de créer un tableau de n enseignant.
Ecrire une procédure qui prend en paramètre le tableau d'enseignants et le
matricule d'un enseignant et qui recherche et test si un enseignant existe ou pas.
Ecrire une procédure qui affiche la liste des enseignants féminins
Application
1. Donnons la déclaration du type enseignant
type enseignant=enregistrement
code : chaîne
nom : chaîne
prénom : chaîne
grade : chaîne
sexe : caractère
fin enregistrement
Tableau v[1..100] : enseignant
2.Ecrivons une procédure qui permet de remplir un tableau V de n enseignants.
67
Fonctions et procédures
• Certains problèmes conduisent à des programmes longs, difficiles à
écrire et à comprendre. On les découpe en des parties appelées
sous-programmes ou modules
• Les fonctions et les procédures sont des modules (groupe d'instructions)
indépendants désignés par un nom. Elles ont plusieurs intérêts :
– permettent de "factoriser" les programmes, càd de mettre en commun
les parties qui se répètent
– permettent une structuration et une meilleure lisibilité des programmes
68
Fonctions
• Le rôle d'une fonction en programmation est similaire à celui d'une
fonction en mathématique : elle retourne un résultat à partir des
valeurs des paramètres
• Une fonction s'écrit en dehors du programme principal sous la forme :
Fin Procédure
• Remarque : une procédure peut ne pas avoir de paramètres
72
Appel d'une procédure
• L'appel d'une procédure, se fait dans le programme principale ou dans une
autre procédure par une instruction indiquant le nom de la procédure :
Procédure exemple_proc (…)
…
FinProcédure
Algorithme exepmleAppelProcédure
Début
exemple_proc (…)
…
Fin
• Remarque : contrairement à l'appel d'une fonction, on ne peut pas affecter la
procédure appelée ou l'utiliser dans une expression. L'appel d'une
procédure est une instruction autonome
73
Paramètres d'une procédure
• Les paramètres servent à échanger des données entre le programme
principale (ou la procédure appelante) et la procédure appelée
74
Transmission des paramètres
Il existe deux modes de transmission de paramètres dans les langages de
programmation :
• La transmission par valeur : les valeurs des paramètres effectifs sont
affectées aux paramètres formels correspondants au moment de l'appel de la
procédure. Dans ce mode le paramètre effectif ne subit aucune modification
• La transmission par adresse (ou par référence) : les adresses des
paramètres effectifs sont transmises à la procédure appelée. Dans ce mode,
le paramètre effectif subit les mêmes modifications que le paramètre formel
lors de l'exécution de la procédure
– Remarque : le paramètre effectif doit être une variable (et non une
valeur) lorsqu'il s'agit d'une transmission par adresse
Algorithme Test_incrementer1
variables n, m : entier
Début
n←3
m←3 résultat :
incrementer1(n, m)
écrire (" n= ", n, " et m= ", m) n=3 et m=4
Fin
Remarque : l'instruction x ← x+1 n'a pas de sens avec un passage par valeur
76
Transmission par valeur, par adresse : exemples
77
Variables locales et globales (1)
• On peut manipuler 2 types de variables dans un module (procédure ou
fonction) : des variables locales et des variables globales. Elles se
distinguent par ce qu'on appelle leur portée (leur "champ de définition", leur
"durée de vie")
• La portée est le périmètre dans lequel un nom (de variable, fonction…) est
connu (visible) et utilisable.
• Une variable globale (déclarée dans le programme principale) est connue par
l'ensemble des fonctions (ou procédures) et le programme principale. Elle est
définie durant toute l’application et peut être utilisée et modifiée par les
différents fonctions (ou procédures) du programme
78
Variables locales et globales (2)
• La manière de distinguer la déclaration des variables locales et globales
diffère selon le langage
• Conseil : Il faut utiliser autant que possible des variables locales plutôt que
des variables globales. Ceci permet d'économiser la mémoire et d'assurer
l'indépendance de la procédure ou de la fonction
79
Fonctions et procédures en Python (1)
• En Python, il n'y a pas de distinction entre les notions de fonction et
procédure. Les deux se déclarent de la même façon comme suit :
def identificateur (paramètres) :
l1
global g1
instructions
résultat
81
Fonction Python : remarques
> carre(1,2) #5
> a=carre(3,3) # a = 18
82
Fonctions Python : exemples (1)
83
Fonctions Python : exemples (2)
84
Récursivité
• Une fonction peut s'appeler lui-même: on dit que c'est une fonction
récursive
• Tout fonction récursive doit posséder un cas limite (cas trivial) qui
arrête la récursivité
• Exemple : Calcul du factorielle
Fonction fact (n : entier ) : entier
Si (n=0) alors
retourne (1)
Sinon
retourne (n*fact(n-1))
Finsi
Fin Fonction
85
Fonctions récursives : exercice
• Ecrivez une fonction récursive (puis itérative) qui calcule le terme n
de la suite de Fibonacci définie par : U(0)=0, U(1)=1
U(n)=U(n-1)+U(n-
2)
• Traduction en Python
def binaire(n):
if n !=0:
binaire(n//2)
print(n%2, end="")
88
Manipulation des fichiers
(Python)
89
Fichier - collection d’informations stockées sur une mémoire
de
masse (non volatile, capacité plus importante que la mémoire vive)
La catégorisation n’est pas toujours très tranchée, un fichier XML par ex.
est un fichier texte (manipulable avec un éditeur de texte) mais qui obéit
à une organisation structurée
9
Fichiers textes
Les fichiers textes sont ceux contenant ... du texte.
Ils sont utilisés dans de très nombreux contexte dont voici quelques uns :
fichiers textes bruts (plain text)
fichiers source de programmes
fichiers HTML, CSS
fichiers CSV (format tableur textuel)
La structure que partagent tous ces formats de fichiers textes est celle de
ligne. Une ligne est une chaîne de caractères terminée par un marqueur de
fin de ligne. Ce marqueur de fin de ligne peut différer d’un système
d’exploitation à l’autre. Dans les systèmes de type Unix (GNU-Linux et Mac
OSX par exemple), ce marqueur est par défaut constitué d’un caractère
ASCII de code 10 (0x0A) appelé LINE FEED. Dans les divers systèmes MS-
Windows, ce marqueur de fin de ligne est constitué de deux caractères ASCII
de code 13 (0x0D) appelé CARRIAGE RETURN (\r) et 10 (0x0A) ou (\n)
dans cet ordre.
Le principal outil informatique pour lire/produire un fichier texte est un éditeur
de texte.
Fichiers binaires
On déclare binaire tout fichier qui n’est pas un fichier
texte.
fichiers exécutables résultant de la compilation
d’un fichier texte source
fichiers archives (formats ZIP, TGZ, ...)
fichiers images (formats PNG, JPG, GIF, TIFF, ...)
fichiers sons (formats WAV, OGG, FLAC,
MP3, ...)
fichiers videos (formats AVI, MPEG, ...)
Contrairement aux fichiers textes pour lesquels la
structure de ligne est une structure commune, il n’y a pas
de structure commune à tous les fichiers binaires. Les
outils informatiques pour lire/produire les fichiers binaires
dépendent évidemment du format de ces fichiers.
1- Ouverture d’un fichier existant
Avant de pouvoir lire les informations contenues dans un fichier, ou de pouvoir écrire des
informations dans un fichier, il est nécessaire d’ouvrir un canal de communication entre le
programme et le fichier.
f=open("c:\\test\\file.txt")
a=f.readline()
while a:
print(a)
a=f.readline()
f.close()
3- Création des fichiers
Pour créer un nouveau fichier en Python, on utilise la méthode
open(), avec l'un les paramètres suivants:
"w" - Write - créera un fichier si le fichier spécifié n'existe pas
et si le fichier existe, il sera écrasé
"x" - ce mode d'ouverture, crée un fichier s'il n'existe pas et
renvoie une erreur si le fichier existe. Donc ce mode est plus
prudent que le mode w.
"a" - Append - créera un fichier si le fichier spécifié n'existe
pas
'' r+ '' - ouverture en mode lecture et écriture. Si le fichier
n'existe pas, une erreur est renvoyée.
Exemple. Création d'un fichier nommé "myFile.txt":
f = open ("myFile.txt", "x") # renvoie une erreur si le fichier existe,
Exemple: ouvrir un fichier et
y ajouter du contenu:
# ouverture avec conservation du contenu existant
f = open ("myFile.txt", "a")
f.write ("Voici un contenu qui va s'ajouter au fichier sans
écraser le contenu!")
f.close () # fermeture du fichier :
# ouvrir et lire le fichier après l’ajout:
f = open ("myFile.txt", "r")
print (f.read())
Exemple: ouvrir le fichier "myFile.txt"
avec écrasement du contenu existant:
Remarque
Pour manipuler from_what le fichier doit être ouvert en mode
binaire
Accès séquentiel, non
structuré
Exemple de manipulations sur:
FICHIER TEXTE
1
Lecture en bloc avec read() megane
clio
# -*- coding: utf -*- Fichier texte à lire : twingo
safrane
#ouverture en lecture « voiture.txt » laguna
f = open("voitures.txt","r") vel satis
#fermeture
f.close()
#ouverture en lecture
f = open("voitures.txt","r")
#lecture
lst = f.readlines()
Le contenu du fichier est stocké
#affichage dans une liste, une ligne= un
print("** contenu de lst **")
print(lst) élément. Le caractère \n est
print("** fin contenu **")
maintenu. Il n’est pas présent
#information sur lst sur la dernière ligne de notre
print("type de s : ",type(lst))
print("longueur de s : ",
fichier exemple.
len(lst))
#fermeture
f.close()
107
Lecture ligne par ligne avec readline (sans « s »)
# -*- coding: utf -*-
#ouverture en lecture
• readline() lit la ligne courante et
f = open("voitures.txt","r") place le curseur sur la ligne suivante.
#lecture ligne itérativement
•la fonction renvoie la chaîne vide
while True: lorsque nous arrivons à la fin du
s = f.readline()
if (s != ""): fichier (Remarque : s’il y a une ligne
print(s) blanche entre 2 véhicules,
else:
brea readline() renvoie le caractère « \n
k;
», ce n’est pas une chaîne vide).
#ferme
ture
f.close()
109
Ecriture d’un fichier texte avec write()
# -*- coding: utf -*- • open() permet d’ouvrir un fichier en écriture avec
l’option « w ». La fonction renvoie un objet de type
#ouverture en écriture fichier référencée par f
f = open("moto.txt","w")
• avec « w », le fichier est écrasé s’il existe déjà
#écriture • write() permet d’écrire la chaîne de caractères
f.write("honda")
f.write("yamaha")
f.write("ducati")
#fermeture
f.close() R.R. – Université Lyon 2
110
Ecriture d’un fichier texte avec
writelines()
writelines() permet d’écrire
directement le contenu d’une liste.
Nous devons quand même
# -*- coding: utf -*- insérer le caractère « \n » pour
que le saut de ligne soit effectif
#ouverture en écriture
f = open("moto.txt","w") dans le fichier.
#liste
lst = ["honda\n","yamaha\n","ducati"]
#écriture
f.writelines(lst)
#fermeture
f.close()
11
Ajout dans un fichier texte
#fermeture
f.close()
113
voitures.txt
binaire (1/2) megane
clio
Python peut traiter un fichier en mode binaire, il peut lire octet par octet, ou twingo
par blocs d’octets. safrane
laguna
#ouverture en lecture vel satis
f = open("voitures.txt","rb") #lire
un octet • option « rb » pour open() pour lecture et mode
a = f.read(1) binaire
print(a) • read() prend un paramètre : nb. d‘octets à lire
#type de a → array de beyts • decode() permet de transformer le tableau d’octets en
print(type(a)) chaîne de caractères, « utf-8 » est le mode d’encodage
#transformer en chaîne de • après un read(), le curseur de fichier se place sur
caractères l’octet suivant, on peut connaître la position du curseur
s = a.decode("utf-8") avec tell() [début du fichier = indice 0]
print(s)
print(type(s))
b pour indiquer
#lire une 2nde fois a =
qu’il s’agit d’un
f.read(1)
tableau de bytes
print(a)
#pos. du curseur
print("position : ",f.tell())
11
Accès en mode binaire (2/2)
voitures.txt
#positionner le curseur megane
clio
f.seek(0,0) twingo
#lire un bloc d'octets safrane
laguna
a = f.read(6) vel satis
print(a)
print("longueur = • seek() permet de positionner le curseur, le 1er
",len(a)) paramètre est la position, le 2nd est la référence : 0 à
#aller à l'octet n°5 #à partir du début du fichier, 2 à partir de la fin, 1 à partir
partir du début de la position courante
f.seek(5,0) • noter le seek(-1,2) avec un indice négatif, comme
a = f.read(1) pour
print(a) les listes ou les tuples