You are on page 1of 46

Algorithmique et

structure de données
Algorithmes opérant par boucles imbriquées

Anicet Ebou
ediman.ebou@inphb.ci

INP-HB - Cours d’informatique - Semestre 1 - Prépa BCPST 1


Notre Agenda

01 02
Tableaux à deux Manipulations
dimensions élémentaires

03 04
Opérations sur Algorithmes de
une matrice recherche

Cours d’informatique - Semestre 1 - Prépa BCPST 2


01
Objectifs

Cours d’informatique - Semestre 1 - Prépa BCPST 3


Objectifs

Amener l’apprenant à:

● Connaître le format de déclaration des tableaux à deux dimensions


et leur nécessité;
● Savoir programmer les manipulations élémentaires sur un tableau
à deux dimensions;
● Connaître et savoir programmer les algorithmes de recherche sur
les tableaux à deux dimensions.

Cours d’informatique - Semestre 1 - Prépa BCPST 4


02
Tableaux à deux dimensions

Cours d’informatique - Semestre 1 - Prépa BCPST 5


Préambule motivant

Écrire un algorithme qui enregistre 10 notes entières et leurs coefficients


et qui calcule la moyenne de ces 10 notes.

?
Cours d’informatique - Semestre 3 - Prépa BCPST 6
Format des tableaux à deux dimensions

Cours d’informatique - Semestre 3 - Prépa BCPST 7


Format des tableaux à deux dimensions

● Un tableau est une structure de données de dimension 2.


● i peut être considéré comme les abscisses, j comme les ordonnées.
● Une telle structure contient m × n éléments.
● Les autres noms des tableaux de dimension 2 sont : matrice, matrix…

Cours d’informatique - Semestre 3 - Prépa BCPST 8


Format des tableaux à deux dimensions

● Avec un tableau à deux dimensions, on peut ainsi modéliser les pixels


d’un écran, mais surtout les matrices.
● Un tableau de longueur m contenant des tableaux de longueur n
contenant à leur tour des tableaux de longueur p est une structure à
trois dimensions contenant m×n×p éléments.

Cours d’informatique - Semestre 3 - Prépa BCPST 9


Syntaxe de déclaration en pseudo-code

Var:

nom : TABLEAU [iMinL..iMaxL] DE TABLEAU [iMinC..iMaxC ] DE Type

● nom = nom de la matrice


● iMinL et iMaxL = indice min et max du vecteur « Père »
● iMinC et iMaxC = indice min et max du vecteur « Fils »
● Le nombre d’éléments N = (iMaxL-iMinL+1)*(iMalC-iMinC+1)

Cours d’informatique - Semestre 3 - Prépa BCPST 10


Syntaxe de déclaration en Python

# Matrice i x j

tab = [[0] * i, [0] * j]

# Matrice i x j avec la bibliothèque NumPy

import numpy as np

tab = np.zeros((j, i))

Cours d’informatique - Semestre 3 - Prépa BCPST 11


Bibliothèque NumPy

● NumPy est une bibliothèque Python utilisée pour travailler avec des
tableaux.
● Elle dispose également de fonctions permettant de travailler dans le
domaine de l'algèbre linéaire, de la transformée de Fourier et des
matrices.
● NumPy a été créé en 2005 par Travis Oliphant. Il s'agit d'un projet open
source utilisable librement. NumPy est l'acronyme de Numerical Python.

Cours d’informatique - Semestre 3 - Prépa BCPST 12


Bibliothèque NumPy

● En Python, nous avons des listes qui servent de tableaux, mais elles sont
lentes à traiter.
● NumPy vise à fournir un objet tableau qui est jusqu'à 50 fois plus rapide
que les listes traditionnelles de Python.

Cours d’informatique - Semestre 3 - Prépa BCPST 13


03
Manipulations élémentaires

Cours d’informatique - Semestre 1 - Prépa BCPST 14


Indexation d’une matrice
Entrer une valeur par indexation

Pseudo-code Python

tab[i][j] ← valeur tab[i][j] = valeur

Lire(tab[i][j]) tab[i][j] = int(input())

Cours d’informatique - Semestre 3 - Prépa BCPST 15


Indexation d’une matrice
Extraire/lire une valeur par indexation

Pseudo-code Python

valeur ← tab[i][j] valeur = tab[i][j]

Ecrire(tab[i][j]) print(tab[i][j])

Cours d’informatique - Semestre 3 - Prépa BCPST 16


Bibliothèque NumPy: création d’un tableau

# Chargement du module

import numpy as np

liste = [1 ,2 ,3 ,4 ,5]

tab = np.array(liste) # crée un tableau à partir de la liste

type(tab) # numpy.ndarray

tab.dtype # int64: type des éléments du tableau

matrice = np.array([[1 ,0 ,0], [0 ,1 ,0]]) # matrice de taille 2 x 3

tab = np.array([1 , ’a’, 2]) # erreur: des types différents

Cours d’informatique - Semestre 3 - Prépa BCPST 17


Bibliothèque NumPy: commandes arange et linspace
La commande arange fonctionne comme la commande range mais pour créer
un tableau. La commande linspace renvoie des nombres uniformément
espacés sur un intervalle spécifié.

tab = np.array(range(100))

tab = np.arange(100) # même résultat

tab = np.arange(-5, 6)

tab = np.arange(-5, 6.4,.2) # arange accepte des arguments non entier

tab = np.linspace(-5, 6, 100) #le 3e argument est le nombre de points

Cours d’informatique - Semestre 3 - Prépa BCPST 18


Bibliothèque NumPy: passage des tableaux aux listes
matrice.tolist() # crée une liste à partir du tableau

type(matrice) # renvoie numpy.ndarray car matrice n’est pas modifiée

matrice = matrice.tolist() # remplace le tableau par une liste .

matrice = array(matrice) # revient au tableau

Cours d’informatique - Semestre 3 - Prépa BCPST 19


Bibliothèque NumPy: attributs d’un tableau

matrice.dtype # type des éléments du tableau

matrice.shape # dimension sous la forme d’un tuple

matrice.shape[0] # nombre de lignes d’une matrice

matrice.shape[1] # nombre de colonnes d’une matrice

matrice.size # nombre total de coefficients

matrice.ndim # nombre de dimensions du tableau (2 pour matrice)

Cours d’informatique - Semestre 3 - Prépa BCPST 20


Bibliothèque NumPy: lecture-écriture

tab = np.arange(10)

matrice = np.array([[10 * j + i for i in range(10)] for j in range(8)])

tab[4] # élément d’indice 4 dans le tableau

matrice[4] # tableau de la ligne d’indice 4

matrice[4, :] # idem

matrice[4, 3] # élément d’indices 4,3

matrice[5:, 5:] # bloc inférieur droit

matrice[:: -1] # inverse l’ordre des lignes

Cours d’informatique - Semestre 3 - Prépa BCPST 21


Bibliothèque NumPy: lecture-écriture

lst = [[10 * j + i for i in range(10)] for j in range(8)]

lst[5][2] # dans le tableau lst[5], je demande l’élément 2

matrice = np.array(lst)

matrice[5, 2] # je demande le coefficient de coordonnées 5,2

matrice[5][2] # Numpy est gentil: fonctionne aussi

tab[4] = 20 # modifie l’élément d’indice 4

tab[4] = ’a’ # erreur, pas le bon type

tab[4] = 19.5 # remplace par int(19.5) = 19

Cours d’informatique - Semestre 3 - Prépa BCPST 22


Bibliothèque NumPy: lecture-écriture
matrice[5 ,7] = 12

matrice[:5 ,:5] = 0 # remplace le bloc 5 x 5 en haut à gauche par des 0

matrice[:2 ,1] = [-1, -2] # remplace les 2 premières coordonnées de la col 1

matrice[:2 ,1] = [1 ,2 ,3] # erreur, mauvaise dimension

Cours d’informatique - Semestre 3 - Prépa BCPST 23


Bibliothèque NumPy: gestion mémoire des tableaux

Il faut faire attention aux effets de gestion de la mémoire dans Python.

Contrairement aux listes, lorsque vous utilisez le slicing, Python ne recopie


pas la partie du tableau concernée, mais fait pointer une nouvelle variable
vers un extrait du même tableau.

Si vous modifiez le contenu de cette nouvelle variable, cela modifiera aussi le


tableau initial.

La méthode copy() permet de faire une copie complète du tableau.

Cours d’informatique - Semestre 3 - Prépa BCPST 24


Bibliothèque NumPy: gestion mémoire des tableaux

liste = [0 ,1 ,2 ,3 ,4]

liste2 = liste

liste2 is liste # True: même objet mémoire

liste3 = liste[:]

liste3 is liste # False: nouvel objet mémoire

liste4 = liste.copy()

liste4 is liste # False: nouvel objet mémoire

Cours d’informatique - Semestre 3 - Prépa BCPST 25


Bibliothèque NumPy: gestion mémoire des tableaux

tab2 = tab

tab2 is tab # True : même objet mémoire

tab3 = tab[:]

tab3 is tab # False : même objet mémoire

tab4 = tab.copy()

tab4 is tab

Cours d’informatique - Semestre 3 - Prépa BCPST 26


Bibliothèque NumPy: création des tableaux usuels

Ils sont construits par la fonction zeros(taille) où taille est un tuple qui
contient les dimensions.

Par défaut, les éléments du tableau sont de type float (modifiable avec un
argument optionnel).

np.zeros(10) # tableau à une dimension de taille 10 rempli de 0

np.zeros((3, 5)) # taille 3 x 5 ne pas oublier les doubles parenthèses

np.zeros((3, 5), int) # de type entier

Cours d’informatique - Semestre 3 - Prépa BCPST 27


Bibliothèque NumPy: création des tableaux usuels

np.ones(10) # tableau à une dimension de taille 10 rempli de 1

np.ones((3, 5)) # taille 3 x5 rempli de 1

5 * np.ones((3, 5)) # taille 3 x5 rempli de 5

np.ones ((3, 5), int ) # de type entier

# matrice identité

np.eye(4) # identité de taille 4 x 4

np.eye(4, dtype = int) # identité de taille 4 x 4, de type int

np.eye(4, k = 1) # surdiagonale avec des 1

np.eye(4, k = -1) # sousdiagonale avec des 1

Cours d’informatique - Semestre 3 - Prépa BCPST 28


Bibliothèque NumPy: création des tableaux usuels
# matrices diagonales

np.diag([1 ,1 ,1]) # identité de taille 3 x3

np.diag([1 ,2 ,3 ,4]) # taille 4 x 4 avec 1, 2, 3, 4 en diagonale

np.diag([1 ,2 ,3], k =1) # taille 4 x 4, surdiagonale avec 1, 2, 3

np.diag([1 ,2 ,3], k = -1) # sousdiagonale

# matrice triangulaire inférieure

np.tri (3)

Cours d’informatique - Semestre 3 - Prépa BCPST 29


Parcours d’une matrice
Le principe est de boucler sur les indices des lignes m et ensuite sur les
indices des colonnes n.

POUR i ← 0 à m FAIRE

POUR j ← 0 à n FAIRE

ECRIRE(“Entrer l’élément “, i, j)

LIRE(t[i][j])

FINPOUR

Cours d’informatique - Semestre 3 - Prépa BCPST 30


Parcours d’une matrice
Le principe est de boucler sur les indices des lignes m et ensuite sur les
indices des colonnes n.

for i in range(m):

for j in range(n):

print(“Entrez l’élément [“ + str(i) + “][” + str(j) + “]”)

tab[i][j] = input()

Cours d’informatique - Semestre 3 - Prépa BCPST 31


Parcours d’une matrice
Le principe est de boucler sur les indices des lignes m et ensuite sur les
indices des colonnes n.

for i in tab:

for j in i:

j = input()

Cours d’informatique - Semestre 3 - Prépa BCPST 32


Travaux Pratiques

Écrire un algorithme qui enregistre 10 notes entières et leurs coefficients


et qui calcule la moyenne de ces 10 notes.

Cours d’informatique - Semestre 1 - Prépa BCPST 33


03
Opérations sur une matrice

Cours d’informatique - Semestre 1 - Prépa BCPST 34


Calcul de la somme d’une matrice: pseudo-code

somme <- 0

FOR i <- 0 à m FAIRE

FOR j <- 0 à n FAIRE

somme <- somme + tab[i][j]

ECRIRE(“La somme est: “, somme)

Cours d’informatique - Semestre 3 - Prépa BCPST 35


Calcul de la somme d’une matrice: Python

somme = 0

for i in range(m):

for j in range(n):

somme = somme + tab[i][j] # ou encore: somme += tab[i][j]

print(“La somme est: “, somme)

Cours d’informatique - Semestre 3 - Prépa BCPST 36


Calcul de la somme d’une matrice: Python avec NumPy

import numpy as np

somme = np.sum(tab)

print(“La somme est: ”, somme)

# Somme suivant les axes

som1 = np.sum(tab, axis=1) # abscisse

som2 = np.sum(tab, axis=0) # ordonnée

Cours d’informatique - Semestre 3 - Prépa BCPST 37


Calcul du produit d’une matrice: pseudo-code

produit <- 0

FOR i <- 0 à m FAIRE

FOR j <- 0 à n FAIRE

produit <- produit * tab[i][j]

ECRIRE(“Le produit est: “, produit)

Cours d’informatique - Semestre 3 - Prépa BCPST 38


Calcul du produit d’une matrice: Python

produit = 0

for i in range(m):

for j in range(n):

produit = produit * tab[i][j] # ou : produit *= tab[i][j]

print(“Le produit est: “, produit)

Cours d’informatique - Semestre 3 - Prépa BCPST 39


Calcul du produit d’une matrice: Python avec NumPy
import numpy as np

# Produit de la matrice

produit = np.prod(tab)

print(“Le produit est: ”, produit)

# Produit suivant les axes

prod1 = np.prod(tab, axis=1) # abscisse

prod2 = np.prod(tab, axis=0) # ordonnée

Cours d’informatique - Semestre 3 - Prépa BCPST 40


Calcul de la transposée d’une matrice: pseudo-code

FOR i <- 0 à n FAIRE

FOR j <- 0 à m FAIRE

tp_tab[i][j] <- tab[j][i]

ECRIRE(“La transposée est: “, tp_tab)

Cours d’informatique - Semestre 3 - Prépa BCPST 41


Calcul de la transposée d’une matrice: Python

transpose = [[0] * n, [0] * m]

for i in range(n):

for j in range(m):

transpose[i][j] = tab[j][i]

print(“La transposée est: “, transpose)

Cours d’informatique - Semestre 3 - Prépa BCPST 42


Calcul du produit d’une matrice: Python avec NumPy
import numpy as np

transpose = np.transpose(tab)

print(“La transposée est: ”, transpose)

Cours d’informatique - Semestre 3 - Prépa BCPST 43


04
Algorithmes de recherche

Cours d’informatique - Semestre 1 - Prépa BCPST 44


Recherche d’un mot dans un texte

texte = input(“Entrez le texte: ”)

mot = input(“Entrez le mot à rechercher: ”)

est_dans_texte = False
for i in range(len(texte) - len(mot) + 1):

if texte[i:i+len(mot)] == mot:

est_dans_texte = True

Cours d’informatique - Semestre 3 - Prépa BCPST 45


Merci
Vous avez des préoccupations?
ediman.ebou@inphb.ci

46

You might also like