Cours 3 SI
Cours 3 SI
Cours 3 SI
Leçon 1
Les structures de données Et les structures simples
Abassi rim
2021 - 2022
1
1. L’algorithmique et la programmation
1.1 - L’algorithme
Un algorithme est une suite finie (enchainement , liste) ordonné (et logique)
d’opérations (d'instructions / actions) permettant de résoudre un problème.
Autrement dit :
L’algorithme est la solution d’un problème informatique dans un langage naturel. Cette
solution n’est pas compréhensible par l’ordinateur. Pour cela elle doit être traduite en
un langage de programmation, ce qui donne un programme.
Si condition Alors
Lire Traitement1
Ecrire Sinon
Traitement 2
Finsi
Pour Compteur de Début à Fin (Pas) Faire
Traitement
Fin Pour
Tant que condition(s) Faire
Traitement
... Fin Tant que
Entier
Réel
Booléen
Caractère
Chaine
Tableau
1.2 - La programmation
la programmation, appelée aussi codage, est l'ensemble des activités qui permettent
l'écriture des programmes informatiques en utilisant un langage de programmation.
Exemples de langage de programmation : Pascal, C++, Python
2
2. Les opérations élémentaires simples
Opération En algorithmique
Entrée Lire(objet)
Sortie Ecrire("Message",Objet, Expression)
Affectation Objet Expression
- En Python, on n’a pas besoin de faire une déclaration des variables avant de les
utiliser, le type d’une variable est déduit suivant la valeur qu’elle reçoit. il est parfois
nécessaire de modifier en cours de route le type d’une variable. Pour déclarer une
variable, rien de plus simple, il suffit de lui donner un nom et de lui affecter une
valeur. Par exemple, je déclare la variable x et je lui affecte le nombre entier 13 x
= 13
- Exemples de déclarations
x = int() #déclaration d’une variable de type entier
y = float() #déclaration d’une variable de type réel
z = bool() #déclaration d’une variable de type booléen
- Le langage Python est sensible à la casse, c’est à dire que x est différente de X.
- Le symbole # est utilisé pour un commentaire en Python
Pour agir sur les variables, on peut utiliser des opérateurs qui dépendent du type de
variables.
3
Opérateurs arithmétiques
Opérateurs de comparaison
Opérateurs logiques
Opération Opérateur
Négation Non
Conjonction Et
Disjonction Ou
Disjonction exclusive Ouex
4
3.3- Types de variables en Python
3.3.1 Les nombres
Algorithmique Rôle
Arrondi (x) Retourne l’entier le plus proche de la valeur de x.
RacineCarré (x) Retourne la racine carrée d’un nombre x positif.
Aléa (vi, vf) Retourne un entier aléatoire (au hasard) de l’intervalle [vi, vf].
Ent (x) Retourne la partie entière de x.
Exemple :
>>> s = 'Anis ELBAHI'
>>> print(s[0]) Ce bloc affiche le caractère A
Une chaîne de caractères est un objet immuable, c'est-à-dire ses caractères ne peuvent
pas être modifiés par une affectation et sa longueur est fixe.
Algorithmique Rôle
Long (ch) Retourne le nombre de caractères de la chaîne ch.
Retourne la première position de la chaîne ch1 dans la chaîne
Pos (ch1, ch2)
ch2.
Retourne la conversion d’un nombre x en une chaîne de
Convch (x)
caractères.
Retourne Vrai si la chaîne ch est convertible en une valeur
Estnum (ch)
numérique, elle retourne Faux sinon.
Retourne la conversion d’une chaîne ch en une valeur
Valeur (ch)
numérique, si c’est possible.
Retourne une partie de la chaîne ch à partir de la position d
Sous_chaine (ch, d, f)
jusqu’à la position f (f exclue).
Efface des caractères de la chaîne ch à partir de la position d
Effacer (ch, d, f)
jusqu’à la position f (f exclue).
Majus (ch) Convertit la chaîne ch en majuscules.
Les fonctions sur les caractères et les chaines
6
Traduction en Python
En algorithmique En Python
Types numériques
Racinecarré (a) sqrt(a)
ent(a) trunc (a)
Arrondi(a) round(a,b)
Aléa(a,b) randint(a,b)
Type caractère
ord ( c ) ord ( c )
chr ( x ) chr ( x )
Type chaine de caractères
Long ( ch ) len ( ch )
Pos ( ch1 , ch2 ) ch2.find ( ch1 )
Convch ( x ) str ( d )
Estnum ( ch ) ch.isdigit() ou ch.isnumeric()
Valeur ( ch ) int ( ch ) ou float ( ch )
Sous-chaine ( ch , d , f ) ch [ d : f ]
Effacer ( ch , d ,f ) ch = ch [ : d ] + ch [ f : ]
Majus ( ch ) ch.upper ( )
Leçon 2
Les structures de contrôles conditionnelles
8
Les structures conditionnelles
Une structure de contrôle conditionnelle peut être utilisée si on est obligé à tester une
condition pour exécuter un traitement.
Pour certains cas, on associe à chaque traitement une condition particulière, si la
condition est vrai le traitement sera exécutée et dans le cas contraire le traitement sera
ignoré.
Indentation
En Python, c’est l’indentation (les espaces en début de chaque ligne) qui détermine les
blocs d’instructions (structures conditionnelles, boucles, etc.).
9
NB : On pourrait utiliser la structure de contrôle conditionnelle à choix multiples
Selon <Expression>
Valeur1, Valeur2, … : instruction(s)
Valeur3 : instruction(s)
……………………………………………..
[Sinon
TraitementN]
Fin Selon
pseudocodes
Python Algorithme
if condition : Si condition alors
instruction (s) instruction (s)
finsi
if condition : si condition alors
instruction (s)1 instruction (s)1
else : sinon
instruction (s)2 instruction (s)2
finsi
if condition1 : si condition1 alors
instruction (s)1 instruction (s)1
elif condition2 : sinon si condition2 alors
instruction (s)2 instruction (s)2
else : sinon :
instruction (s)3 instruction (s)3
finsi
10
3ème * Sciences Informatiques
Leçon 3
Les structures de contrôles itératives
11
Les structures itératives
Répeter
a. La structure de contrôle itérative complète
La boucle pour ... faire est utilisée lorsqu’on souhaite répéter un bloc
d’instructions un nombre déterminé de fois.
Pour Compteur de Début à Fin [Pas = valeur_pas] Faire
Traitement
Fin Pour
NB : La valeur du pas de la structure itérative complète peut être positive ou négative.
Par défaut, elle est égale à 1.
compteur : variable compteur
Début : valeur initiale
Fin : valeur finale
Le nombre de répétition est connu
La boucle s’arrête si le compteur atteint la valeur finale
Traduction en Python
for compteur in range(début, fin, p) :
Exemple1
for i in range(2) :
print(i)
le programme affiche :
1
12
Exemple2
for i in range(1,10,2) :
print(i)
le programme affiche :
Traitement
Fin Tant que
• Deuxième formulation
Répéter
Traitement
Jusqu'à condition
Traduction en Python
Les boucles
Syntaxe Python Rôle
While condition : Exécuter en boucle la (ou les) instructions tant que
instruction (s) la condition est vérifiée
For variable in range (n) : Exécuter en boucle la (ou les) instructions pour
instruction (s) une variable allant de 0 à n-1
For variable in range (n,m) : Exécuter en boucle la (ou les) instructions pour
instruction (s) une variable allant de n à m-1
For variable in range (n,m,k) : Exécuter en boucle la (ou les) instructions pour
instruction (s) une variable allant de n à m-1 avec un pas égal à k
13
3ème * Sciences Informatiques
Leçon 4
Les tableaux
14
I. Introduction
Déclaration1
Tableau de
Déclaration des objets (TDO)
Objet Type / Nature
Déclaration2
Tableau de création des nouveaux types (TDNT)
Nouveau type
Nom_type = Tableau de N Type _élément
Tableau de
Déclaration des objets (TDO)
Objet Type / Nature
15
b-Les tableaux à deux dimension
L'accès à une case de ce tableau s'effectue par conséquent grâce à deux indices
Déclaration1
Tableau de
Déclaration des objets (TDO)
Objet Type / Nature
Tableau de N lignes * M colonnes
Nom_tableau
Type _élément
Déclaration2
16
Tableau de
Déclaration des objets (TDO)
Objet Type / Nature
17
Leçon 5
Les sous programmes
I. Introduction
1-Analyse modulaire
Sprg1 Sprg11
Programme
principal
Sprg n Sprg1n
Présenter des solutions claires en évitant la redondance des codes dans un programme
Simplifier la résolution du problème initial en supposant que les différents modules prévus
sont déjà implémentés
Se concentrer sur la résolution d'un sous problème à la fois.
Détecter facilement les parties à consulter ou à modifier.
Une fonction est un sous-programme qui retourne un seul résultat de type simple (entier, réel,
booléen, caractère ou chaine de caractères).
Début
Instruction 1
Instruction 2
…
Instruction n
Retourner Resultat_calculé
Fin
Paramètres formels :
Définition de la fonction Les objets nécessaires pour
19 que la fonction puisse faire
sa tâche (son travail).
def nom_fonction (parameters):
Instructions_1
L’entête de la fonction Instructions_2
…
Le corps de la fonction Instructions_3 Les valeurs retournées par
return valeurs la fonction
Remarques
1- Pour exécuter une fonction, il faut l’appeler.
2- Toutes les instructions qui suivent l’instruction return constitue un code mort c'est-à-dire
non exécutable par la fonction.
3- Une fonction peut ne pas avoir de paramètres au moment de la définition, dans ce cas il
ne faut pas oublier les deux parenthèses ().
4- Une fonction peut renvoyer une ou plusieurs valeurs de types différents dans la même
instruction return.
Remarques
Il faut respecter le nombre, l'ordre et les types des paramètres effectifs par rapport aux
paramètres formels. Leurs noms peuvent être différents.
Au moment de l'appel, les paramètres formels seront remplacés par les paramètres
effectifs lors de l'exécution du sous-programme
Une procédure est un sous-programme (ensembles d'instructions) qui peut produire Zéro ou
plusieurs résultats. Dans une procédure, il faut ajouter le symbôle @ avant chaque objet
résultat.
20
Procédure nom-Procédure (liste des paramètres formels : type de chaque paramètre)
Début
Instruction 1
Instruction 2
…
Instruction n
Fin
En algorithme
Nom-procédure (paramètres effectifs)
Mode de passage
21
Jusqu’à (b1>=a1)
Fin
Leçon 6
22
Les méthodes de tri et de recherche
Un algorithme de tri est une suite finie d’instructions servant à réordonner une
séquence d’éléments suivant un critère fixé à priori.
Il existe plusieurs méthodes de tri, on cite par exemple :
• La méthode de tri par sélection
• La méthode de tri à bulles
Remarque : Dans tout ce qui suit, on suppose que l'on trie des nombres entiers par
ordre croissant et que ceux-ci se trouvent dans un tableau T.
23
ainsi de suite jusqu'au moment où on n'a plus qu'une suite composée d'un seul
élément T[N-1].
o Exemple n=6
T
17 5 8 12 5 13
0 1 2 3 4 5
i=0, posmin=0
17 5 8 12 5 13
0 1 2 3 4 5
Chercher posmin (1..5)
Posmin=1
T[0] ≠ T[1] Permutation
5 17 8 12 5 13
0 1 2 3 4 5
i=1, posmin=1
5 17 8 12 5 13
0 1 2 3 4 5
Chercher posmin (2..5)
Posmin=4
5 5 8 12 17 13
T[1] ≠ T[4] Permuter
0 1 2 3 4 5
i=2, posmin=2
5 5 8 12 17 13
0 1 2 3 4 5
Chercher posmin (3..5)
Posmin=2
T[2] = T[2] Pas de Permutation
i=3, posmin=3
5 5 8 12 17 13
0 1 2 3 4 5
Chercher posmin (4..5)
Posmin=3
T[3] =T[3] Pas de Permutation
5 5 8 12 17 13
0 1 2 3 4 5
i=4, posmin=4
5 5 8 12 17 13
0 1 2 3 4 5
24
Chercher posmin (5) posmin=5
T[4] ≠ T[5] Permutation
5 5 8 12 13 17
0 1 2 3 4 5
2. Tri à bulles
o Principe :
o Exemple n=6
Etape1 T
17 5 8 12 5 13
0 1 2 3 4 5
I=0,Permuter=faux
25
17 5 8 12 5 13
0 1 2 3 4 5
T[0] > T[1] donc Permutation et Permuter=vrai
5 17 8 12 5 13
0 1 2 3 4 5
i=1,Permuter=vrai
T[1] > T[2] donc Permutation et Permuter=vrai
5 8 17 12 5 13
0 1 2 3 4 5
i=2,Permuter=vrai
T[2] > T[3] donc Permutation et Permuter=vrai
5 8 12 17 5 13
0 1 2 3 4 5
i=3,Permuter=vrai
T[3] > T[4] donc Permutation et Permuter=vrai
5 8 12 5 17 13
0 1 2 3 4 5
i=4,Permuter=vrai
T[4] > T[5] donc Permutation et Permuter=vrai
5 8 12 5 13 17
0 1 2 3 4 5
Remarque : Après le premier parcours, le plus grand élément étant à sa
position définitive, il n'a plus à être traité.
Etape2
i=0,Permuter=faux
T[0] < T[1] donc pas de Permutation
5 8 12 5 13 17
0 1 2 3 4 5
i=1,Permuter=faux
T[1] < T[2] donc pas de Permutation
5 8 12 5 13 17
0 1 2 3 4 5
i=2,Permuter=faux
T[2] > T[3] donc Permutation ,permuter=vrai
5 8 5 12 13 17
0 1 2 3 4 5
i=3,Permuter=vrai
T[3] < T[4] donc pas de Permutation
5 8 5 12 13 17
0 1 2 3 4 5
i=4,Permuter=vrai
26
T[4] < T[5] donc pas de Permutation
5 8 5 12 13 17
0 1 2 3 4 5
Etape3
i=0,Permuter=faux
T[0] < T[1] donc Pas de Permutation
5 8 5 12 13 17
0 1 2 3 4 5
i=1,Permuter=faux
T[1] > T[2] donc Permutation ,permuter=vrai
5 5 8 12 13 17
0 1 2 3 4 5
i=2,Permuter=vrai
T[2] < T[3] donc Pas de Permutation
i=3,Permuter=vrai
T[3] < T[4] donc Pas de Permutation
i=4,Permuter=vrai
T[4] < T[5] donc Pas de Permutation
Etape4
i=0,Permuter=faux
T[0] = T[1] donc Pas de Permutation
5 5 8 12 13 17
0 1 2 3 4 5
i=1,2 ,3,4 Permuter=faux on sort avec un tableau trié
o Principe
La méthode de recherche séquentielle d’un élément dans un ensemble consiste à
parcourir l’ensemble élément par élément en les comparant avec l’élément à
chercher jusqu’à trouver ce dernier ou achever l’ensemble.
28
Fonction recherche_sequentielle (x : entier ; n : entier ; t : tab) : booléen
Fonction
Début recherche_dichotomique ( x :entier ;n :entier;t:tab :tab ) :booléen
Debuttrouve faux
i
trouve 0 faux
d 0répéter
fn-1 si t[i] = x alors
répéter trouve vrai
milieu(d+f) div 2
sinon
Sii x= i+1
t[milieu] alors
finsi trouve vrai
Sinon (trouve=vrai)
jusqu'à si x < t[milieu]oualors
(i=n)
f
retourner trouve milieu -1
Fin Sinon
d milieu +1
TDOL Finsi
jusqu’à (trouve) O ou (f<d) T/N
Retourner trouve trouve Booléen
Fin i Entier
i0 O T/N
répéter trouve Booléen
trouve t[i] = x i Entier
i i+1
jusqu'à (trouve=vrai) ou (i=n)
retourner trouve
Fin
Activité3 29
30
0
30