SlideShare une entreprise Scribd logo
1  sur  18
1 Pensée computationnelle et programmation (résumé) Prof : FENNI-S
1. La forme générale d’un algorithme
ALGORITHME Nom
DEBUT
Instruction 1
Instruction 2
Instruction N
FIN
N.B.
L’écriture de l’algorithme doit obligatoirement respecter l’indentation.
2. Les types de données simples
En Algorithmique En Python
Entier int()
Réel float ()
Booléen bool ()
Caractère str ()
Chaîne de caractères str ()
3. Déclaration des objets de type simple, en algorithmique
Tableau de déclaration des objets (T.D.O.)
Objets Type/Nature
Nom_Constante Constante = Valeur de la constante
Nom_Variable Type_Variable
Exemples :
T.D.O.
Objets Type/Nature
Pi
e
Heure
Moy
Phrase
Test
C
Constante = 3.14
Constante = 2.718
Entier
Réel
Chaîne de caractères
Booléen
Caractère
N.B.
En python, une variable n’a pas besoin d’être déclarée avec un type particulier : c’est au moment où on lui
attribue une valeur qu’elle sera créée. Ainsi, son type sera défini en fonction du type de la valeur qui lui a été
attribuée. L’identificateur d’une variable est sensible à la casse.
Pensée computationnelle &
Programmation
Définition :
Un algorithme est une suite ordonnée et
finie d’instructions permettant de résoudre
un problème donné.
2 Pensée computationnelle et programmation (résumé) Prof : FENNI-S
4. Déclaration d’un tableau à une dimension
Déclaration en Algorithmique :
 1ère
méthode :
 2ème
méthode :
Tableau de déclaration des nouveaux types (T.D.N.T)
Nom_Type_Tableau = Tableau de taille et de type_éléments
Exemple : Tab = Tableau de 50 chaînes de caractères
Déclaration en Python en utilisant la bibliothèque Numpy :
Déclaration dans le cas général
from numpy import array
Nom_Tableau = array ([Type_élément( )] * N )
Ou bien
Nom_Tableau = array ([Valeur_initiale] * N )
Exemples de déclarations en python
Déclaration Explication
from numpy import array
T = array ([int( )] * 8)
Déclarer un tableau T de 8 entiers
Pour une telle déclaration, on peut prévoir le tableau suivant :
T 45 13 -7 0 84 -3 34 2
0 1 2 3 4 5 6 7
from numpy import array
T = array ([float( )] * 100)
Déclarer un tableau T de 100 réels
from numpy import array
T = array ([str] * 50)
Déclarer un tableau T de 50 chaînes de caractères
from numpy import array
T = array ([str()] * 10)
Déclarer un tableau T de 10 caractères et initialiser ses éléments
par le caractère vide.
from numpy import array
T = array ([""] * 10 , dtype = "U20")
Déclarer un tableau T de 10 éléments initialisés par une chaîne
vide. Chaque élément peut contenir 20 caractères au maximum.
N.B. :
• L’indice de la 1ère case d’un tableau est, par défaut, égal à Zéro ;
• Pour accéder à un élément d’indice « i » d’un tableau : Nom_Tableau [ i ] ;
• Tous les éléments dans un numpy.array sont de même type (entier, réel, caractère,...) ;
• La taille du tableau est constante (il n’est pas possible d’insérer ou de supprimer un élément).
Tableau de déclaration des objets (T.D.O)
Objet Type/Nature
Nom_Tableau Tableau de taille et de type_éléments
Exemple : T Tableau de 100 réels
Tableau de déclaration des objets (T.D.O)
Objet Type/Nature
Nom_Tableau Nom_Type_Tableau
Exemple : T Tab
3 Pensée computationnelle et programmation (résumé) Prof : FENNI-S
5. Les opérateurs arithmétiques
Opération
Opérateur en
algorithmique
Opérateur en
python
Exemples Type du résultat
Addition + +
6 + 4.5 = 10.5
"BA" + "C" = "BAC"
Réel
Chaîne de caractères
Soustraction - - 6 - 4 = 2 Entier
Multiplication * *
6 * 4 = 24
1.2 * 3 = 3.6
3 * "AB" = "ABABAB"
Entier
Réel
Chaîne de caractères
Division / / 6 / 4 = 1.5 Réel
Division entière DIV // 6 // 4 = 1 Entier
Reste de la
division entière
MOD % 6 % 4 = 2 Entier
6. Les opérateurs logiques
Opération
Opérateur en
algorithmique
Opérateur en
python
Exemples en Python
Négation non not
not True = False
not False = True
Conjonction et and
True and False = False
True and True = True
False and False = False
Disjonction ou or
True or False = True
False or False = False
True or True = True
7. Les opérateurs de comparaisons
Tout comme les opérateurs logiques, les opérateurs de comparaison renvoient une valeur booléenne
"Vrai" ou "Faux". Les opérateurs de comparaisons s'appliquent sur tous les types de base.
Opération
Opérateur en
algorithmique
Opérateur en
python
Exemples
en Python
Résultats
Egal = = = 6 = = 6.0 True
Différent ≠ != "a" != "A" True
Strictement supérieur > > "FAMILLE"> "FAMILY" False
Strictement inférieur < < 5 < 5 False
Inférieur ou égal ≤ <= 4 <= 6 True
Supérieur ou égal ≥ >= 3 >= 4 False
Appartient
(entier, caractère)
in
20 in range(0,10)
"b" in {"a","b","e","k"}
False
True
Remarques :
• Lors de l’évaluation d’une expression, il faut tenir compte des règles de priorité entre les opérateurs
utilisés :
En algorithmique En Python
1) les parenthèses (…) (…)
2) les opérateurs unaires - (l'opposé) ; NON - ; not
3) les opérateurs multiplicatifs * ; / ; DIV ; MOD ; ET * ; / ; // ; % ; and
4) les opérateurs additifs + ; - ; OU + ; - ; or
5) les opérateurs relationnels = ; < ; <= ; > ; >= ; ≠ ; = ; < ; <= ; > ; >= ; != ; in
• Deux opérateurs ayant la même priorité, doivent être évalués de gauche à droite.
4 Pensée computationnelle et programmation (résumé) Prof : FENNI-S
8. Les fonctions prédéfinies sur les types arithmétiques
Algorithmique Python Rôles Exemples en Python
NArrondi (x) N = round (x)
Retourne l’entier le plus proche
de x
N = round (3.5)  N=4
N = round (2.5)  N=2
N = round (2.8)  N=3
N = round (2.2)  N=2
NRacineCarré (x)
from math import*
N = sqrt (x)
Retourne la racine carrée de x
N = sqrt (25)  N=5
N = sqrt(-4)  Erreur
NAléa (vi, vf)
from random import*
N = randint (vi, vf)
Retourne un entier aléatoire de
l’intervalle [vi, vf]
N = randint (2,5)
N pourra avoir 2 ou 3 ou 4 ou 5
NEnt (x) N = int (x) Retourne la partie entière de x N = int (4.25)  N=4
NAbs (x) N = abs (x) Retourne la valeur absolue de x N = abs (-5)  N=5
9. Les fonctions prédéfinies sur les chaînes de caractères
Algorithmique Python Rôles Exemples en python
L  Long (ch) L=len (ch)
Retourne le nombre de
caractères de la chaîne ch
L = len("L'informatique")
 L = 14
P  Pos (ch1, ch2) P=ch2.find (ch1)
Retourne la première
position de la chaîne ch1
dans la chaîne ch2
ch = 'Bonjour'
x = ch.find ('o')  x = 1
y = ch.find ('no')  y = -1
ch  Convch (x) ch=str (x)
Retourne la conversion d’un
nombre x en une chaîne
ch = str (17.2)  ch = '17.2'
test  Estnum (ch)
test=ch.isdecimal ()
Ou bien
test=ch.isnumeric ()
Retourne Vrai si la chaîne ch
est convertible en une
valeur numérique, elle
retourne Faux sinon
ch = "154"
test = ch.isdecimal ()
 test = True
ch = "9ab3"
test = ch.isdecimal()
 test = False
N  Valeur (ch)
N=int(ch)
Ou bien
N=float(ch)
Retourne la conversion
d’une chaîne ch en une
valeur numérique, si c’est
possible
x = int ("12")  x = 12
y = float ("13.25")  y = 13.25
ch1  Sous_chaîne (ch, d, f) ch1=ch [d : f]
Retourne une partie de la
chaîne ch à partir de la
position d jusqu’à la position
f (f exclue)
ch = "Bonjour"
• ch1 = ch [0:3]
 ch1 = 'Bon'
• ch2 = ch [3:len(ch)]
 ch2 = 'jour'
ch  Effacer (ch, d, f) ch=ch [ : d] + ch [f : ]
Efface des caractères de la
chaîne ch à partir de la
position d jusqu’à la position
f (f exclue)
ch = "Bonjour"
• ch = ch [:1] + ch[4:]
 ch = 'Bour'
• ch = ch [:0] + ch[3:]
⇔ ch = ch [3:]  ch = 'jour'
• ch = ch [:3] + ch[len(ch):]
⇔ ch = ch [:3]  ch = 'Bon'
ch  Majus (ch) ch=ch.upper( )
Convertit la chaîne ch en
majuscule
ch = "jour"
ch = ch.upper()  ch = 'JOUR'
c = "a".upper()  c = 'A'
5 Pensée computationnelle et programmation (résumé) Prof : FENNI-S
10. Les fonctions prédéfinies sur les caractères
Algorithmique Python Rôles Exemples en python
Cod  Ord (c) Cod = ord (c) Retourne le code ASCII du caractère c Cod = ord("A") Cod= 65
Car  Chr (d) Car = chr (d) Retourne le caractère dont le code ASCII est d Car = chr(98) Car= 'b'
11. Les actions élémentaires simples
Actions En algorithmique En Python
L’action
d’affectation
Objet  Expression Objet = Expression
Exemples :
• a  2
• b  5 + a * a
• ville  "La chebba"
Exemples :
• a = 2
• b = 5 + a * a
• ville = "La chebba"
L’action
d’entrée
Lire (Objet) Objet = input()
N.B. : Par défaut, la valeur saisie est de type
chaîne de caractères.
Exemples :
• Ecrire ("saisir une chaîne"), Lire (ch)
• Ecrire ("saisir un entier"), Lire (n)
• Ecrire ("saisir un réel"), Lire (x)
Exemples :
• ch = input ("saisir une chaîne n")
• n = int (input ("saisir un entier"))
• x = float (input ("saisir un réel"))
L’action
de sortie
• Ecrire ("message", objet, expression) • print ("message", objet, expression)
Exemples :
• Ecrire ("Saisir un entier : ")
• Ecrire ("Les notes : ", n1, n2, n3)
• Ecrire ( 5 + 4 * 2 )
• Ecrire_nl()
Exemples :
• print ("Saisir un entier : ", end="")
• print (" Les notes :", n1, n2, n3, sep="n")
• print ( 5 + 4 * 2 )
• print() # ligne vide avec retour à la ligne
Remarques :
- Objet est une variable de type simple (entier, réel, booléen, caractère et chaîne de caractères).
- « print » fait un retour à la ligne automatique.
- "n" permet d’ajouter un retour à la ligne.
- Le paramètre « end="" » évite le retour à la ligne.
- Le paramètre « sep="n" » permet d'afficher les valeurs de manière séparée par une nouvelle ligne.
12. Les structures de contrôle conditionnelles
12.1La structure conditionnelle simple
Notation Algorithmique Notation en Python
Si Condition
Alors Traitement
FinSi
if Condition :
Traitement
6 Pensée computationnelle et programmation (résumé) Prof : FENNI-S
12.2La structure conditionnelle complète
Notation Algorithmique Notation en Python
Si Condition
Alors Traitement1
Sinon Traitement2
FinSi
if Condition :
Traitement1
else :
Traitement2
12.3La structure conditionnelle généralisée (Si imbriquée)
Notation Algorithmique Notation en Python
Si Condition1
Alors Traitement1
Sinon Si Condition2
Alors Traitement2
Sinon Si Condition3
Alors Traitement3
Sinon TraitementN
FinSi
if Condition1 :
Traitement1
elif Condition2 :
Traitement2
elif Condition3 :
Traitemnt3
else :
TraitementN
12.4La structure conditionnelle à choix multiples
Notation Algorithmique Notation en Python (Version ≥ 3.10)
Selon Sélecteur
Val1 : Traitement1
Val2, Val3, Val4 : Traitement2
Val5 .. Val9 : Traitement3
…
Sinon TraitementN
FinSelon
match Sélecteur :
case Val1 : Traitement1
case Val2|Val3|Val4 : Traitement2
case Sélecteur if Val5 <= Sélecteur <= Val9 : Traitemnt3
case_ : TraitementN
7 Pensée computationnelle et programmation (résumé) Prof : FENNI-S
13. Les structures de contrôle itératives
13.1 La structure de contrôle itérative complète (La boucle POUR … FAIRE …)
Syntaxe en algorithmique Syntaxe en Python
Pour Compteur de Début à Fin [Pas = valeur_pas] Faire
Traitement
Fin Pour
for Compteur in range (Début, Fin+1 [, pas]) :
Traitement
Remarques :
• Le nombre de répétitions est connu avant le
traitement et il est égal à |Fin – Début |+ 1.
• Le Pas peut être Positif ou Négatif.
• Par défaut, le Pas est égal à 1.
• Il faut éviter de modifier la valeur du compteur de la
boucle Pour au niveau du traitement.
• range (5) le compteur prendra les valeurs
suivantes : 0, 1, 2, 3, 4
• range (3, 8) le compteur prendra les
valeurs suivantes : 3, 4, 5, 6, 7
• range (8, 3, -1) le compteur prendra les
valeurs suivantes : 8, 7, 6, 5, 4
• range (0, 10, 3) le compteur prendra les
valeurs suivantes : 0, 3, 6, 9
13.2 La structure de contrôle itérative à condition d’arrêt (La boucle TANT QUE … FAIRE …)
Syntaxe en algorithmique Syntaxe en Python
Initialisation
Tant que Condition Faire
Traitement
Fin tant que
Initialisation
while Condition :
Traitement
Exemple
som  0
Tant que som < 100 Faire
Ecrire ("Donner un entier"), Lire (x)
Som  som + x
Fin tant que
Exemple
som = 0
while som < 100 :
x = int (input ('Donner un entier'))
som = som + x
Remarque : Le nombre de répétitions n’est pas connu à l’avance et le traitement peut ne pas se faire.
13.3 La structure de contrôle itérative à condition d’arrêt (REPETER … JUSQU’A …)
Syntaxe en algorithmique Syntaxe en Python
Répéter
Traitement
Jusqu’à Condition d’arrêt
Pas de correspondance. Toutefois, on peut utiliser :
valide= False
while not valide : # while valide==False :
Traitement
valide = Condition d’arrêt
Exemple
Répéter
Ecrire ("Donner un entier positif ")
Lire(x)
Jusqu’à x>0
Exemple
valide=False
while not valide :
x = int (input ('Donner un entier positif'))
valide= x>0
Remarque : Le nombre de répétitions n’est pas connu à l’avance et le traitement se fait au moins une fois.
8 Pensée computationnelle et programmation (résumé) Prof : FENNI-S
14.Les modules
14.1. Les fonctions
14.1.1. La définition d’une fonction
Une fonction est un sous-programme qui permet la résolution d’un sous-problème précis et retourne (renvoie)
un seul résultat de type simple (entier, caractère, réel, booléen, chaîne) au programme appelant.
En algorithmique En Python
FONCTION Nom_fonction (pf1:type1, …, pfn:typen) : Type_Résultat
DEBUT
Instruction 1
Instruction 2
Instruction N
Retourner Résultat
FIN
def Nom_fonction ( pf1 , … , pfn ) :
Instruction 1
Instruction 2
Instruction N
return Résultat
14.1.2. L’appel d’une fonction
En Algorithmique En Python
Objet  Nom_fonction (pe1, …, pen) Objet = Nom_fonction (pe1, …, pen)
Exemples, pour de fonctions prédéfinies
• Ch2  Majus(ch)
• Si Pos (ch1, ch2) ≠ 0 Alors ............
• y  5 * RacineCarré(x+3)
• Ecrire (Long(ch))
• Ch2 = ch.upper()
• if ch2.find(ch1) !=0 : …………………
• y = 5 * sqrt (x+3)
• print ( len(ch))
N.B.
Les paramètres effectifs (pe1,…, pen) et les paramètres formels (pf1, …, pfn) doivent s’accorder de point
de vue ordre, nombre et type.
14.2. Les procédures
14.2.1. La définition d’une procédure
Une procédure est un sous-programme qui permet la résolution d’un sous-problème précis et qui peut
transmettre de zéro à plusieurs résultats au programme appelant.
14.2.2. L’appel d’une procédure
En algorithmique En Python
Nom_procédure (pe1, …, pen) Nom_procédure (pe1, …, pen)
Exemples, pour de procédures prédéfinies
Lire (x)
Ecrire (a, b)
x = input()
print(a, b)
En algorithmique En Python
PROCEDURE Nom_procédure (pf1 : type1, …, pf2 : typen)
Début
Instruction 1
Instruction 2
Instruction N
Fin
def Nom_procédure (pf1, …, pfn) :
Instruction 1
Instruction 2
Instruction N
9 Pensée computationnelle et programmation (résumé) Prof : FENNI-S
N.B. :
 Le passage de paramètres par adresse (par référence) permet au programme appelant (PP) de
transmettre une valeur à la procédure appelée (SP) et vice versa. Dans ce cas, le paramètre formel est
précédé par le symbole « @ ». Par exemple : PROCEDURE TRAITEMENT( c : Réel ; @ a, b :Entier).
 Toute modification d'un paramètre formel dans le sous-programme appelé entraîne
(automatiquement) au moment du retour à l'appelant une modification de la valeur du paramètre
effectif correspondant.
 En python, le paramètre de type tableau est par défaut passé par référence.
 La portée des variables en python :
• Toute variable déclarée au sein d’un module a une portée locale.
• Toute variable déclarée au sein d’un module précédée par le mot clé global a une portée globale.
Par conséquent, elle ne devra pas figurer parmi les paramètres de ce module.
L’exemple ci-dessous illustre le passage par adresse en algorithmique et en Python.
En algorithmique
Déclaration de la procédure "Saisir" L’appel de la procédure "Saisir"
Procédure Saisir (@ m : Entier)
Début
Répéter
Ecrire ("Saisir un entier entre 5 et 20")
Lire (m)
Jusqu’à (5 ≤ m ≤ 20)
Fin
Saisir (n)
En Python (1ère
démarche)
Déclaration de la procédure "Saisir" L’appel de la procédure "Saisir"
def Saisir () :
global m
valide = False
while not valide :
m = int (input ("Saisir un entier entre 5 et 20"))
valide = (5 <= m <= 20)
Saisir ()
n = m
En Python (2ème
démarche)
Déclaration de la procédure "Saisir" L’appel de la procédure "Saisir"
def Saisir () :
valide = False
while not valide :
m = int (input ("Saisir un entier entre 5 et 20"))
valide = (5 <= m <= 20)
return m
n = Saisir ()
Paramètre formel
Paramètre effectif
10 Pensée computationnelle et programmation (résumé) Prof : FENNI-S
Problème : Remplir puis afficher un tableau T par N entiers (avec 5 ≤ n ≤ 10)
Exemple d’une solution modulaire
En Algorithmique En Python
# Algorithme du programme principal
ALGORITHME Exemple
DEBUT
Saisie (N)
Remplir (N, T)
Affichage (N, T)
FIN
T.D.N.T.
Type
TAB = Tableau de 10 entiers
Tableau de déclaration des objets globaux
Objet Type/nature
N Entier
T TAB
Saisie Procédure
Remplir Procédure
Affichage Procédure
# Algorithme de la procédure Saisie
PROCEDURE Saisie ( @ m : Entier )
Début
Répéter
Ecrire ("Donner un entier entre 5 et 10")
Lire (m)
Jusqu’à (5 ≤ m ≤ 10)
Fin
# Algorithme de la procédure Remplir
PROCEDURE Remplir ( m : Entier ; @ V : TAB )
Début
Pour i de 0 à m-1 Faire
Ecrire ("T[",i,"]=")
Lire (V[i])
Finpour
Fin
T.D.O. locaux
Objet Type/Nature
i Entier
# Algorithme de la procédure Affichage
PROCEDURE Remplir ( m : Entier ; V : TAB )
Début
Pour i de 0 à m-1 Faire
Ecrire (V[i])
Finpour
Fin
T.D.O. locaux
Objet Type/Nature
i Entier
from numpy import array
T = array ([int()]*10)
def Saisie () :
valide = False
while not valide :
m = int(input("Donner un entier entre 5 et 10"))
valide = (5<=m<=10)
return m
def Remplir (m, V) :
for i in range(m) :
V[i]= int(input("T["+str(i)+"]="))
def Affichage (m, V) :
for i in range(m) :
print(V[i], end=" ")
#Programme principal
N = Saisie ()
Remplir (N, T)
Affichage (N, T)
11 Pensée computationnelle et programmation (résumé) Prof : FENNI-S
Les modules usuels
Les procédures
Algorithme Python Appel
# Saisir un entier positif
Procédure Saisir (@ x : entier)
Début
Répéter
Ecrire ("Donner un entier positif ")
Lire(x)
Jusqu’à x ≥ 0
Fin
def Saisir () :
global x
valide = False
while not valide :
x = int(input ("Donner un entier positif "))
valide = (x >= 0)
algorithme
Saisir(n)
python
Saisir()
n = x
def Saisir () :
valide = False
while not valide :
x = int(input ("Donner un entier positif "))
valide = (x >= 0)
return x
algorithme
Saisir(n)
python
n = Saisir()
# Saisir une chaîne de caractères formée uniquement de lettres majuscules
Procédure Saisie (@ ch : Chaîne)
Début
Répéter
Ecrire ("Saisir une chaîne "), Lire(ch)
i← 0
verif←Vrai
Tant que (verif=Vrai) ET (i ≠long(ch)) Faire
Si non (ch[i]∈["A".."Z"])
Alors verif ← Faux
Finsi
i ← i+1
Fin Tant que
Jusqu’à verif = Vrai
Fin
TDOL
objet type/nature
i Entier
def Saisir() :
verif = False
while verif ==False :
ch=input("Saisir une chaîne")
i=0
verif=True
while (verif==True) and (i != len(ch)) :
if not ("A" <= ch[i] <= "Z") :
verif=False
i=i+1
return ch
algorithme
Saisir(ch)
python
ch=Saisir()
# Remplir un tableau T par N entiers en ordre croissant (avec 10 ≤ N ≤ 100)
Procédure remplir (@ T : tab ; n : entier)
Début
Ecrire ("T[0] : "), Lire(T[0])
Pour i de 1 à (n-1) Faire
Répéter
Ecrire ("T[", i, "] : "), Lire(T[i])
Jusqu’à T[i] > T[i-1]
Fin Pour
Fin
TDOL
objet type/nature
i Entier
from numpy import array
V = array( [int()]*100)
def remplir (T, n) :
T[0] = int(input("T[0] :"))
for i in range (1, n) :
while T[i] <= T[i-1] :
T[i] = int(input("T["+ str(i) + "] :"))
algorithme
remplir (V, n)
python
remplir(V, n)
12 Pensée computationnelle et programmation (résumé) Prof : FENNI-S
# Remplir un tableau T par N entiers de deux chiffres
Procédure remplir (@ T : tab ; n : entier)
Début
Pour i de 0 à n-1 Faire
Répéter
Ecrire ("T[ ", i, "] =" )
Lire(T[i])
Jusqu’à (10 ≤ T[i] ≤ 99)
FinPour
Fin
TDOL
objet type/nature
i Entier
from numpy import array
V = array( [int()]*100)
def remplir (T, n) :
for i in range(n) :
valide = False
while not valide :
T[i] = int (input ("T["+ str(i) + "]="))
valide = (10<=T[i] <=99)
algorithme
remplir (V, n)
python
remplir(V, n)
# Remplir un tableau T par N entiers distincts
Procédure Saisie (n : Entier ; @ T : Tab)
Début
Pour i de 0 à n-1 Faire
Répéter
Ecrire (''Saisir la case '', i), Lire (T[i])
j ← 0
Tant que T[i] ≠ T[j] Faire
j← j+1
Fin Tant que
Jusqu’à (j = i)
Fin Pour
Fin
from numpy import array
V = array( [int()]*100)
def Saisie (n, T) :
for i in range(n) :
verif = False
while not verif :
T[i] = int(input("Saisir la case"+ str(i)))
j=0
while T[i] != T[j] :
j=j+1
verif = (i==j)
algorithme
Saisie (n, V)
python
Saisie (n, V)
# Remplir un tableau T par N entiers au hasard entre [a, b]
Procédure Remplir (@ t : Tab ; n, a, b : Entier)
Début
Pour i de 0 à n-1 Faire
t[i] ← Aléa (a, b)
Fin Pour
Fin
Une lettre majuscule au hazard
t[i] ← chr (65+ Aléa(0, 25))
from numpy import array
v = array( [int()]*100)
def Remplir (t, n, a, b) :
from random import randint
for i in range(n) :
t[i] = randint (a, b)
Une lettre majuscule au hazard
t[i] = chr (65+ randint(0, 25))
algorithme
Remplir (v, n,
a, b)
python
Remplir (v, n,
a, b)
# Affichage d’un tableau T de N éléments
Procédure afficher (T: tab ; n : entier)
Début
Pour i de 0 à n-1 Faire
Ecrire (T[i])
FinPour
Fin
…………………………
from numpy import array
v = array( [int()]*100)
def afficher (T, n) : …
for i in range(n) : …
print (T[i], end=" ")
……
algorithme
afficher (v, n)
python
afficher (v, n)
13 Pensée computationnelle et programmation (résumé) Prof : FENNI-S
# Ranger les valeurs négatifs d’un tableau T à gauche et les valeurs positifs à droite
Procédure Ranger (@ t : tab ; n : entier)
Début
k ← 0
Pour i de 0 à n-1 Faire
Si t[i] < 0
Alors aux ← t[i]
t[i] ← t[k]
t[k] ← aux
k ← k +1
Fin Si
Fin Pour
Fin
TDOL
objet type/nature
i, k Entier
from numpy import array
v = array( [int()]*100)
def Ranger (t, n) :
k=0
for i in range(n) :
if t[i] < 0 :
aux = t[i]
t[i] = t[k]
t[k] = aux
k = k +1
algorithme
Ranger (v, n)
python
Ranger (v, n)
# Transférer les éléments pairs d’un tableau T, dans T1 et les impairs dans T2
Procédure Transfert (t : tab ; n : entier ; @ t1, t2 : tab ;
@ c1, c2 : entier)
Début
c1 ← 0 ; c2 ← 0
Pour i de 0 à n-1 Faire
Si t[i] mod 2 = 0
Alors c1← c1 +1
t1[c1] ←t[i]
Sinon c2← c2 +1
t2[c2] ← t[i]
Fin Si
Fin Pour
Fin TDOL
objet type/nature
i Entier
from numpy import array
v = array( [int()]*100)
v1 = array( [int()]*100)
v2 = array( [int()]*100)
def Transfert (t, n, t1, t2) :
c1=0 ; c2=0
for i in range (n) :
if t[i] % 2 == 0 :
t1[c1] = t[i]
c1 = c1 +1
else :
t2[c2] = t[i]
c2 = c2 +1
return c1, c2
algorithme
Transfert (v,
m, v1, v2, k1,
k2)
python
k1, k2 =
Transfert (v,
m, v1, v2)
# Permutation de deux variables
Procédure Permut (@ a, b : Réel)
Début
aux ← a
a ← b
b ← aux
Fin
TDOL
objet type/nature
aux Réel
def Permut(a,b) :
aux = a
a = b
b = aux
return a, b
algorithme
Permut (x, y)
python
x,y =
Permut(x,y)
# Insertion d’un élément X dans un tableau T à une position p
Procédure Insertion (@ t : tab ; n, x, p : entier)
Début
Pour i de n à (p-1) [pas=-1] Faire
t[i] ← t[i-1]
Fin Pour
t[p] ← x
Fin
from numpy import array
v = array( [int()]*100)
def Insertion (t, n, x, p) :
for i in range (n, p-1, -1) :
t[i] = t[i-1]
t[p]=x
algorithme
Insertion (v, n,
x, p)
python
Insertion (v, n,
x, p)
14 Pensée computationnelle et programmation (résumé) Prof : FENNI-S
Les fonctions
Algorithme Python Appel
# PGCD de 2 entiers (méthode de la différence)
Fonction PGCD (a, b : entier) : entier
Début
Tant que (a ≠ b) Faire
Si a > b
Alors a ← a-b
Sinon b ← b-a
FinSi
Fin Tant que
Retourner a
Fin
def PGCD (a, b ) :
while (a != b) :
if a > b :
a = a-b
else :
b = b-a
return a
algorithme
pg ← PGCD (x, y)
python
pg = PGCD (x, y)
# PGCD de 2 entiers (méthode d’Euclide)
Fonction PGCD (a, b : entier) : entier
Début
Tant que (b ≠ 0) Faire
r ← a mod b
a ← b
b ← r
Fin Tant que
Retourner a
Fin
def PGCD (a, b ) :
while (b != 0) :
r = a % b
a = b
b = r
return a
# PPCM de 2 entiers
Fonction PPCM ( a, b : entier) : entier
Début
i ← 1
Tant que ((a*i) mod b) ≠ 0 Faire
i ← i + 1
Fin Tant que
Retourner (a*i)
Fin
def PPCM (a, b ) :
i = 1
while ((a*i) % b) != 0 :
i = i + 1
return (a*i)
algorithme
pp ← PPCM (x, y)
python
pp = PPCM (x, y)
# Calcul de Xn
Fonction puissance(x, n : entier) : réel
Début
p←1
Pour i de 1 à abs(n) Faire
p←p*x
FinPour
Si n<0
Alors p ←1/ p
FinSi
Retourner p
Fin
def puissance (x, n ) :
p=1
for i in range(abs(n)) :
p = p * x
if n<0 :
p = 1/p
return p
algorithme
ps ← puissance(x, n)
python
ps = puissance(x, n)
# Factoriel d’un entier N (N! = 1*2*3*…*n)
Fonction fact (n : entier) : entier ……
Début
f ← 1
Pour i de 2 à n Faire
f ← f*i
FinPour
Retourner f
Fin
def fact (n ) :
f=1
for i in range (2, n+1) :
f = f * i
return f
algorithme
x ← fact(n)
python
x = fact(n)
15 Pensée computationnelle et programmation (résumé) Prof : FENNI-S
# Vérifier si un nombre est premier (le nombre de ses diviseurs =2)
Fonction premier (n : entier) : booléen
Début
nb ← 1
Pour i de 1 à (n div 2) Faire
Si (n mod i) = 0
Alors nb ← nb + 1
FinSi
FinPour
Retourner nb = 2
Fin
def premier (n) :
nb=1
for i in range(1, (n//2)+1) :
if n % i == 0 :
nb = nb + 1
return nb == 2
algorithme
ok ← premier(n)
python
ok = premier(n)
# Méthode2 : vérifier s’il y a un diviseur de n dans l’intervalle [2, (n div 2)]
Fonction premier (n : entier) : booléen
Début
i ← 2
verif ← Vrai
Tant que verif ET (i <= n div 2) Faire
Si (n mod i) = 0
Alors verif ← Faux
Sinon i ← i + 1
FinSi
Fin Tant que
Retourner verif
Fin
def premier(n):
i=2
verif=True
while verif and (i <= n // 2):
if (n % i == 0):
verif=False
else:
i=i+1
return verif
algorithme
ok ← premier(n)
python
ok = premier(n)
# Vérifier si un nombre est parfait ( n = somme de ses deviseurs sauf lui-même. exp : 6=1+2+3)
Fonction parfait (n : entier) : booléen
Début
s ← 0
Pour i de 1 à (n div 2) Faire
Si (n mod i) = 0
Alors s ← s + i
FinSi
FinPour
Retourner s = n
Fin
def parfait (n) :
s=0
for i in range(1, n//2+1) :
if (n%i) == 0 :
s = s + i
return s == n
algorithme
ok ← parfait(n)
python
ok = parfait(n)
# Calcul de la somme S = 1+2+3+4+…+N
Fonction Somme (n : entier) : entier
Début
S ← 0
Pour i de 1 à n Faire
S ← S + i
Fin Pour
Retourner S
Fin
def Somme(n) :
S= 0
for i in range(1, n+1) :
S = S + i
return S
algorithme
som ← Somme(n)
python
som = Somme(n)
# Calcul de la somme S = 1-2+3-4+…+(-1)n+1
N
Fonction Somme (n : entier) : entier
Début
S ← 0 ; signe←1
Pour i de 1 à n Faire
S ← S + signe*i
signe ← -1
Fin Pour
Retourner S
Fin
def Somme(n) :
S= 0 ; signe=1
for i in range(1, n+1) :
S = S + signe * i
signe= -1
return S
algorithme
som ← Somme(n)
python
som = Somme(n)
16 Pensée computationnelle et programmation (résumé) Prof : FENNI-S
# La somme de chiffres d’un entier
Fonction Som_chiff (n : entier) : entier
Début
S ← 0
Répéter
R ← n mod 10
S ← S + R
n ← n div 10
Jusqu’à (n = 0)
Retourner S
Fin
Solution 2 :
Fonction Som_chiff (n : entier) : entier
Début
C ← Convch(n)
S ← 0
Pour k de 0 à long(C)-1 Faire
S ← S + Valeur(C[k])
Finpour
Retourner S
Fin
def Som_chiff (n) :
S= 0
Valide = False
while not Valide :
R = n % 10
S = S + R
n = n // 10
Valide = (n==0)
return S
Solution 2 :
def Som_chiff (n) :
C=str(n)
S=0
for k in range (0, len(C)) :
S = S + int(C[k])
return S
algorithme
som ← Som_chiff(n)
python
som = Som_chiff(n)
# Décomposition d’un nombre en un produit de facteurs premiers ( exp : 36=2*2*3*3)
Fonction fact_premier (n : entier) : chaine
Début
ch←""
i←2
Tant que (n ≠ 1) Faire
Si n mod i = 0
Alors ch ← ch + convch(i) + "*"
n ← n div i
Sinon i ← i+1
FinSi
FinPour
Retourner Sous_chaine (ch, 0, long(ch)-1)
Fin
def fact_premier (n) :
ch = ""
i = 2
while (n != 1) :
if (n % i) == 0 :
ch = ch + str(i) + "*"
n = n // i
else :
i = i + 1
return ch[0 : len(ch)-1]
# La moyenne de n entiers dans un tableau T
Fonction Moyenne (T : tab ; n : entier) : réel
Début
Som← 0
Pour i de 0 à n-1 Faire
Som ← Som + T[i]
Fin Pour
Retourner Som/n
Fin
from numpy import array
v = array( [int()]*100)
def Moyenne(T, n) :
Som= 0
for i in range(n) :
Som = Som + T[i]
return Som/n
solution 2
def Moyenne(T) :
Som= 0
for i in T :
Som = Som + i
return Som/len(T)
algorithme
moy ←Moyenne(v, n)
python
moy = Moyenne(v, n)
solution 2
moy = Moyenne(v)
17 Pensée computationnelle et programmation (résumé) Prof : FENNI-S
# Miroir (symétrique) d’un entier
Fonction Miroir (x : entier) : entier
Début
sym ← 0
Répéter
u ← x mod 10
sym ← sym * 10 + u
x ← x div 10
Jusqu’à x=0
Retourner sym
Fin
def Miroir (x) :
sym = 0
while (x != 0) :
u = x % 10
sym = sym * 10 + u
x = x // 10
return sym
# Vérifier si une chaîne est palindrome (exp : "AZIZA")
Fonction Palindrome (ch : chaîne) : Booléen
Début
i ← 0
Répéter
verif ← ch[i] = ch[long(ch) - i -1 ]
i ← i+1
Jusqu’à (verif=faux) ou (i = long(ch) div 2)
Retourner verif
Fin
def Palindrome (ch) :
i = 0
verif = True
while verif and (i != len(ch) // 2):
verif = (ch[i] == ch[len(ch) - i -1])
i=i+1
return verif
# Vérifier si une chaîne de caractères contient uniquement des lettres
Fonction verif (ch : chaine) : booléen
Début
i ← 0
valide←Vrai
Répéter
Si non("A" ≤ Majus(ch[i]) ≤ "Z")
Alors valide←Faux
Finsi
i ← i+1
Jusqu’à (valide=Faux) ou (i = long(ch))
Retourner valide
Fin
def verif (ch ) :
valide = True
i = 0
while (valide==True) and (i!=len(ch)) :
if not ("A" <= ch[i].upper() <= "Z"):
valide=False
i = i + 1
return valide
# Recherche de la première valeur minimum dans un tableau de n réels
Fonction minimum (t : tab ; n : entier) : réel
Début
min ← t[0]
Pour i de 1 à (n-1) Faire
Si t[i] < min
Alors min ← t[i]
FinSi
FinPour
Retourner min
Fin
from numpy import array
v = array( [float()]*100)
def minimum (t, n) :
min = t[0]
for i in range (1, n) :
if t[i] < min :
min = t[i]
return min
algorithme
mini ←
minimum(v,n)
python
mini = minimum(v,n)
18 Pensée computationnelle et programmation (résumé) Prof : FENNI-S
# Recherche de la dernière position d’un élément X dans un tableau de n réels
Fonction Recherche (x : réel ; n : entier ; t : tab) : entier
Début
p ← -1 ; i ← n
Répéter
i ← i - 1
Si t[i] = x
Alors p ← i
FinSi
Jusqu’à (p ≠ -1) OU (i = 0)
Retourner p
Fin
from numpy import array
v = array( [float()]*100)
def Recherche (x, n, t) :
p = -1
i = n
valide=False
while not valide :
i = i - 1
if t[i] == x :
p = i
valide = (p != -1) or (i==0)
return p
algorithme
pos ←
Recherche(x, n, v)
python
pos =
Recherche(x, n, v)
# Fréquence d’un élément X dans un tableau de N entiers
Fonction frequence (x:entier ; t:tab ; n:entier) : entier
Début
nb ← 0
Pour i de 0 à (n-1) Faire
Si t[i] = x
Alors nb ←nb + 1
FinSi
FinPour
Retourner nb
Fin
from numpy import array
v = array( [int()]*100)
def frequence (x, t, n) :
nb = 0
for i in range(n) :
if t[i] == x :
nb = nb + 1
return nb

Contenu connexe

Tendances

Algorithme & structures de données Chap III
Algorithme & structures de données Chap IIIAlgorithme & structures de données Chap III
Algorithme & structures de données Chap IIIInes Ouaz
 
Travaux dirigés 1: algorithme & structures de données (corrigés)
Travaux dirigés 1: algorithme & structures de données (corrigés)Travaux dirigés 1: algorithme & structures de données (corrigés)
Travaux dirigés 1: algorithme & structures de données (corrigés)Ines Ouaz
 
Chapitre 4 récursivité
Chapitre 4 récursivitéChapitre 4 récursivité
Chapitre 4 récursivitéSana Aroussi
 
Serie recurrents & arithmetiques
Serie recurrents & arithmetiquesSerie recurrents & arithmetiques
Serie recurrents & arithmetiquesmohamed_SAYARI
 
Série sous programmes (bac scientifique)
Série sous programmes (bac scientifique)Série sous programmes (bac scientifique)
Série sous programmes (bac scientifique)Hichem Kemali
 
Exercices pascal fenni_2018
Exercices pascal fenni_2018Exercices pascal fenni_2018
Exercices pascal fenni_2018salah fenni
 
Fonctions chaine
Fonctions chaineFonctions chaine
Fonctions chaineAfef Ilahi
 
Formation python
Formation pythonFormation python
Formation pythonj_lipaz
 
Serie algos approximationx
Serie algos approximationxSerie algos approximationx
Serie algos approximationxmohamed_SAYARI
 
Chapitre1: Langage Python
Chapitre1: Langage PythonChapitre1: Langage Python
Chapitre1: Langage PythonAziz Darouichi
 
Chap04 les-algorithme-de-tri-et-de-recherche
Chap04 les-algorithme-de-tri-et-de-rechercheChap04 les-algorithme-de-tri-et-de-recherche
Chap04 les-algorithme-de-tri-et-de-rechercheRiadh Harizi
 
Exercices en turbo pascal sur la récursivité
Exercices en turbo pascal sur la récursivitéExercices en turbo pascal sur la récursivité
Exercices en turbo pascal sur la récursivitésalah fenni
 

Tendances (20)

Les enregistrements
Les enregistrements Les enregistrements
Les enregistrements
 
Algorithme & structures de données Chap III
Algorithme & structures de données Chap IIIAlgorithme & structures de données Chap III
Algorithme & structures de données Chap III
 
Travaux dirigés 1: algorithme & structures de données (corrigés)
Travaux dirigés 1: algorithme & structures de données (corrigés)Travaux dirigés 1: algorithme & structures de données (corrigés)
Travaux dirigés 1: algorithme & structures de données (corrigés)
 
Serie
SerieSerie
Serie
 
Serie2
Serie2Serie2
Serie2
 
Chapitre 4 récursivité
Chapitre 4 récursivitéChapitre 4 récursivité
Chapitre 4 récursivité
 
Récursivité
RécursivitéRécursivité
Récursivité
 
COURS_PYTHON_22.ppt
COURS_PYTHON_22.pptCOURS_PYTHON_22.ppt
COURS_PYTHON_22.ppt
 
01 correction-td smia-s2-info2
01 correction-td smia-s2-info201 correction-td smia-s2-info2
01 correction-td smia-s2-info2
 
Serie recurrents & arithmetiques
Serie recurrents & arithmetiquesSerie recurrents & arithmetiques
Serie recurrents & arithmetiques
 
Série sous programmes (bac scientifique)
Série sous programmes (bac scientifique)Série sous programmes (bac scientifique)
Série sous programmes (bac scientifique)
 
Exercices pascal fenni_2018
Exercices pascal fenni_2018Exercices pascal fenni_2018
Exercices pascal fenni_2018
 
Fonctions chaine
Fonctions chaineFonctions chaine
Fonctions chaine
 
Résumé javascript
Résumé javascriptRésumé javascript
Résumé javascript
 
Formation python
Formation pythonFormation python
Formation python
 
Serie algos approximationx
Serie algos approximationxSerie algos approximationx
Serie algos approximationx
 
Chapitre1: Langage Python
Chapitre1: Langage PythonChapitre1: Langage Python
Chapitre1: Langage Python
 
Chap04 les-algorithme-de-tri-et-de-recherche
Chap04 les-algorithme-de-tri-et-de-rechercheChap04 les-algorithme-de-tri-et-de-recherche
Chap04 les-algorithme-de-tri-et-de-recherche
 
Exercices en turbo pascal sur la récursivité
Exercices en turbo pascal sur la récursivitéExercices en turbo pascal sur la récursivité
Exercices en turbo pascal sur la récursivité
 
bac info : série récursivité
bac info : série récursivitébac info : série récursivité
bac info : série récursivité
 

Similaire à resume algo 2023.pdf

RCarte_Commandes-R.pdf
RCarte_Commandes-R.pdfRCarte_Commandes-R.pdf
RCarte_Commandes-R.pdfDrissRifai1
 
Algorithmique seconde (corrigés et commentaires)
Algorithmique seconde (corrigés et commentaires)Algorithmique seconde (corrigés et commentaires)
Algorithmique seconde (corrigés et commentaires)DriNox NordisTe
 
Aide mémoire de caml
Aide mémoire de camlAide mémoire de caml
Aide mémoire de camlzan
 
condition et boucle (2).pptx
condition et boucle  (2).pptxcondition et boucle  (2).pptx
condition et boucle (2).pptxMohammedErritali2
 
Résumé Algorithme et Programmation
Résumé Algorithme et ProgrammationRésumé Algorithme et Programmation
Résumé Algorithme et Programmationborhen boukthir
 
Convention Algorithmique AS 2022-2023.pdf
Convention Algorithmique AS 2022-2023.pdfConvention Algorithmique AS 2022-2023.pdf
Convention Algorithmique AS 2022-2023.pdfLamissGhoul1
 
ch7_les chaines de caractères.pdf
ch7_les chaines de caractères.pdfch7_les chaines de caractères.pdf
ch7_les chaines de caractères.pdfFadouaBouafifSamoud
 
Formation en Python_Niveau1_2023.pptx
Formation en Python_Niveau1_2023.pptxFormation en Python_Niveau1_2023.pptx
Formation en Python_Niveau1_2023.pptxbetalab
 
Chapitre 2: String en Java
Chapitre 2:  String en JavaChapitre 2:  String en Java
Chapitre 2: String en JavaAziz Darouichi
 
Ch5-les tableaux et les pointeurs.pdf
Ch5-les tableaux et les pointeurs.pdfCh5-les tableaux et les pointeurs.pdf
Ch5-les tableaux et les pointeurs.pdfFadouaBouafifSamoud
 
Les vecteurs seconde2020.pdf
Les vecteurs seconde2020.pdfLes vecteurs seconde2020.pdf
Les vecteurs seconde2020.pdfrezgui10
 
IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES (2022-2023)
IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES  (2022-2023)IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES  (2022-2023)
IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES (2022-2023)Tunisie collège
 
Seance 4- Programmation en langage C
Seance 4- Programmation en langage CSeance 4- Programmation en langage C
Seance 4- Programmation en langage CFahad Golra
 
Chapitre 3 elements de base de java
Chapitre 3  elements de base de javaChapitre 3  elements de base de java
Chapitre 3 elements de base de javaAmir Souissi
 

Similaire à resume algo 2023.pdf (20)

RCarte_Commandes-R.pdf
RCarte_Commandes-R.pdfRCarte_Commandes-R.pdf
RCarte_Commandes-R.pdf
 
Algorithmique seconde (corrigés et commentaires)
Algorithmique seconde (corrigés et commentaires)Algorithmique seconde (corrigés et commentaires)
Algorithmique seconde (corrigés et commentaires)
 
Aide mémoire de caml
Aide mémoire de camlAide mémoire de caml
Aide mémoire de caml
 
condition et boucle (2).pptx
condition et boucle  (2).pptxcondition et boucle  (2).pptx
condition et boucle (2).pptx
 
Pointeuren c
Pointeuren cPointeuren c
Pointeuren c
 
Resume algorithme
Resume algorithmeResume algorithme
Resume algorithme
 
Résumé Algorithme et Programmation
Résumé Algorithme et ProgrammationRésumé Algorithme et Programmation
Résumé Algorithme et Programmation
 
Chapitre 2
Chapitre 2Chapitre 2
Chapitre 2
 
Initiation r
Initiation rInitiation r
Initiation r
 
5e8a000b9840a.pdf
5e8a000b9840a.pdf5e8a000b9840a.pdf
5e8a000b9840a.pdf
 
coursAlgo_V5.pdf
coursAlgo_V5.pdfcoursAlgo_V5.pdf
coursAlgo_V5.pdf
 
Convention Algorithmique AS 2022-2023.pdf
Convention Algorithmique AS 2022-2023.pdfConvention Algorithmique AS 2022-2023.pdf
Convention Algorithmique AS 2022-2023.pdf
 
ch7_les chaines de caractères.pdf
ch7_les chaines de caractères.pdfch7_les chaines de caractères.pdf
ch7_les chaines de caractères.pdf
 
Formation en Python_Niveau1_2023.pptx
Formation en Python_Niveau1_2023.pptxFormation en Python_Niveau1_2023.pptx
Formation en Python_Niveau1_2023.pptx
 
Chapitre 2: String en Java
Chapitre 2:  String en JavaChapitre 2:  String en Java
Chapitre 2: String en Java
 
Ch5-les tableaux et les pointeurs.pdf
Ch5-les tableaux et les pointeurs.pdfCh5-les tableaux et les pointeurs.pdf
Ch5-les tableaux et les pointeurs.pdf
 
Les vecteurs seconde2020.pdf
Les vecteurs seconde2020.pdfLes vecteurs seconde2020.pdf
Les vecteurs seconde2020.pdf
 
IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES (2022-2023)
IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES  (2022-2023)IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES  (2022-2023)
IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES (2022-2023)
 
Seance 4- Programmation en langage C
Seance 4- Programmation en langage CSeance 4- Programmation en langage C
Seance 4- Programmation en langage C
 
Chapitre 3 elements de base de java
Chapitre 3  elements de base de javaChapitre 3  elements de base de java
Chapitre 3 elements de base de java
 

resume algo 2023.pdf

  • 1. 1 Pensée computationnelle et programmation (résumé) Prof : FENNI-S 1. La forme générale d’un algorithme ALGORITHME Nom DEBUT Instruction 1 Instruction 2 Instruction N FIN N.B. L’écriture de l’algorithme doit obligatoirement respecter l’indentation. 2. Les types de données simples En Algorithmique En Python Entier int() Réel float () Booléen bool () Caractère str () Chaîne de caractères str () 3. Déclaration des objets de type simple, en algorithmique Tableau de déclaration des objets (T.D.O.) Objets Type/Nature Nom_Constante Constante = Valeur de la constante Nom_Variable Type_Variable Exemples : T.D.O. Objets Type/Nature Pi e Heure Moy Phrase Test C Constante = 3.14 Constante = 2.718 Entier Réel Chaîne de caractères Booléen Caractère N.B. En python, une variable n’a pas besoin d’être déclarée avec un type particulier : c’est au moment où on lui attribue une valeur qu’elle sera créée. Ainsi, son type sera défini en fonction du type de la valeur qui lui a été attribuée. L’identificateur d’une variable est sensible à la casse. Pensée computationnelle & Programmation Définition : Un algorithme est une suite ordonnée et finie d’instructions permettant de résoudre un problème donné.
  • 2. 2 Pensée computationnelle et programmation (résumé) Prof : FENNI-S 4. Déclaration d’un tableau à une dimension Déclaration en Algorithmique :  1ère méthode :  2ème méthode : Tableau de déclaration des nouveaux types (T.D.N.T) Nom_Type_Tableau = Tableau de taille et de type_éléments Exemple : Tab = Tableau de 50 chaînes de caractères Déclaration en Python en utilisant la bibliothèque Numpy : Déclaration dans le cas général from numpy import array Nom_Tableau = array ([Type_élément( )] * N ) Ou bien Nom_Tableau = array ([Valeur_initiale] * N ) Exemples de déclarations en python Déclaration Explication from numpy import array T = array ([int( )] * 8) Déclarer un tableau T de 8 entiers Pour une telle déclaration, on peut prévoir le tableau suivant : T 45 13 -7 0 84 -3 34 2 0 1 2 3 4 5 6 7 from numpy import array T = array ([float( )] * 100) Déclarer un tableau T de 100 réels from numpy import array T = array ([str] * 50) Déclarer un tableau T de 50 chaînes de caractères from numpy import array T = array ([str()] * 10) Déclarer un tableau T de 10 caractères et initialiser ses éléments par le caractère vide. from numpy import array T = array ([""] * 10 , dtype = "U20") Déclarer un tableau T de 10 éléments initialisés par une chaîne vide. Chaque élément peut contenir 20 caractères au maximum. N.B. : • L’indice de la 1ère case d’un tableau est, par défaut, égal à Zéro ; • Pour accéder à un élément d’indice « i » d’un tableau : Nom_Tableau [ i ] ; • Tous les éléments dans un numpy.array sont de même type (entier, réel, caractère,...) ; • La taille du tableau est constante (il n’est pas possible d’insérer ou de supprimer un élément). Tableau de déclaration des objets (T.D.O) Objet Type/Nature Nom_Tableau Tableau de taille et de type_éléments Exemple : T Tableau de 100 réels Tableau de déclaration des objets (T.D.O) Objet Type/Nature Nom_Tableau Nom_Type_Tableau Exemple : T Tab
  • 3. 3 Pensée computationnelle et programmation (résumé) Prof : FENNI-S 5. Les opérateurs arithmétiques Opération Opérateur en algorithmique Opérateur en python Exemples Type du résultat Addition + + 6 + 4.5 = 10.5 "BA" + "C" = "BAC" Réel Chaîne de caractères Soustraction - - 6 - 4 = 2 Entier Multiplication * * 6 * 4 = 24 1.2 * 3 = 3.6 3 * "AB" = "ABABAB" Entier Réel Chaîne de caractères Division / / 6 / 4 = 1.5 Réel Division entière DIV // 6 // 4 = 1 Entier Reste de la division entière MOD % 6 % 4 = 2 Entier 6. Les opérateurs logiques Opération Opérateur en algorithmique Opérateur en python Exemples en Python Négation non not not True = False not False = True Conjonction et and True and False = False True and True = True False and False = False Disjonction ou or True or False = True False or False = False True or True = True 7. Les opérateurs de comparaisons Tout comme les opérateurs logiques, les opérateurs de comparaison renvoient une valeur booléenne "Vrai" ou "Faux". Les opérateurs de comparaisons s'appliquent sur tous les types de base. Opération Opérateur en algorithmique Opérateur en python Exemples en Python Résultats Egal = = = 6 = = 6.0 True Différent ≠ != "a" != "A" True Strictement supérieur > > "FAMILLE"> "FAMILY" False Strictement inférieur < < 5 < 5 False Inférieur ou égal ≤ <= 4 <= 6 True Supérieur ou égal ≥ >= 3 >= 4 False Appartient (entier, caractère) in 20 in range(0,10) "b" in {"a","b","e","k"} False True Remarques : • Lors de l’évaluation d’une expression, il faut tenir compte des règles de priorité entre les opérateurs utilisés : En algorithmique En Python 1) les parenthèses (…) (…) 2) les opérateurs unaires - (l'opposé) ; NON - ; not 3) les opérateurs multiplicatifs * ; / ; DIV ; MOD ; ET * ; / ; // ; % ; and 4) les opérateurs additifs + ; - ; OU + ; - ; or 5) les opérateurs relationnels = ; < ; <= ; > ; >= ; ≠ ; = ; < ; <= ; > ; >= ; != ; in • Deux opérateurs ayant la même priorité, doivent être évalués de gauche à droite.
  • 4. 4 Pensée computationnelle et programmation (résumé) Prof : FENNI-S 8. Les fonctions prédéfinies sur les types arithmétiques Algorithmique Python Rôles Exemples en Python NArrondi (x) N = round (x) Retourne l’entier le plus proche de x N = round (3.5)  N=4 N = round (2.5)  N=2 N = round (2.8)  N=3 N = round (2.2)  N=2 NRacineCarré (x) from math import* N = sqrt (x) Retourne la racine carrée de x N = sqrt (25)  N=5 N = sqrt(-4)  Erreur NAléa (vi, vf) from random import* N = randint (vi, vf) Retourne un entier aléatoire de l’intervalle [vi, vf] N = randint (2,5) N pourra avoir 2 ou 3 ou 4 ou 5 NEnt (x) N = int (x) Retourne la partie entière de x N = int (4.25)  N=4 NAbs (x) N = abs (x) Retourne la valeur absolue de x N = abs (-5)  N=5 9. Les fonctions prédéfinies sur les chaînes de caractères Algorithmique Python Rôles Exemples en python L  Long (ch) L=len (ch) Retourne le nombre de caractères de la chaîne ch L = len("L'informatique")  L = 14 P  Pos (ch1, ch2) P=ch2.find (ch1) Retourne la première position de la chaîne ch1 dans la chaîne ch2 ch = 'Bonjour' x = ch.find ('o')  x = 1 y = ch.find ('no')  y = -1 ch  Convch (x) ch=str (x) Retourne la conversion d’un nombre x en une chaîne ch = str (17.2)  ch = '17.2' test  Estnum (ch) test=ch.isdecimal () Ou bien test=ch.isnumeric () Retourne Vrai si la chaîne ch est convertible en une valeur numérique, elle retourne Faux sinon ch = "154" test = ch.isdecimal ()  test = True ch = "9ab3" test = ch.isdecimal()  test = False N  Valeur (ch) N=int(ch) Ou bien N=float(ch) Retourne la conversion d’une chaîne ch en une valeur numérique, si c’est possible x = int ("12")  x = 12 y = float ("13.25")  y = 13.25 ch1  Sous_chaîne (ch, d, f) ch1=ch [d : f] Retourne une partie de la chaîne ch à partir de la position d jusqu’à la position f (f exclue) ch = "Bonjour" • ch1 = ch [0:3]  ch1 = 'Bon' • ch2 = ch [3:len(ch)]  ch2 = 'jour' ch  Effacer (ch, d, f) ch=ch [ : d] + ch [f : ] Efface des caractères de la chaîne ch à partir de la position d jusqu’à la position f (f exclue) ch = "Bonjour" • ch = ch [:1] + ch[4:]  ch = 'Bour' • ch = ch [:0] + ch[3:] ⇔ ch = ch [3:]  ch = 'jour' • ch = ch [:3] + ch[len(ch):] ⇔ ch = ch [:3]  ch = 'Bon' ch  Majus (ch) ch=ch.upper( ) Convertit la chaîne ch en majuscule ch = "jour" ch = ch.upper()  ch = 'JOUR' c = "a".upper()  c = 'A'
  • 5. 5 Pensée computationnelle et programmation (résumé) Prof : FENNI-S 10. Les fonctions prédéfinies sur les caractères Algorithmique Python Rôles Exemples en python Cod  Ord (c) Cod = ord (c) Retourne le code ASCII du caractère c Cod = ord("A") Cod= 65 Car  Chr (d) Car = chr (d) Retourne le caractère dont le code ASCII est d Car = chr(98) Car= 'b' 11. Les actions élémentaires simples Actions En algorithmique En Python L’action d’affectation Objet  Expression Objet = Expression Exemples : • a  2 • b  5 + a * a • ville  "La chebba" Exemples : • a = 2 • b = 5 + a * a • ville = "La chebba" L’action d’entrée Lire (Objet) Objet = input() N.B. : Par défaut, la valeur saisie est de type chaîne de caractères. Exemples : • Ecrire ("saisir une chaîne"), Lire (ch) • Ecrire ("saisir un entier"), Lire (n) • Ecrire ("saisir un réel"), Lire (x) Exemples : • ch = input ("saisir une chaîne n") • n = int (input ("saisir un entier")) • x = float (input ("saisir un réel")) L’action de sortie • Ecrire ("message", objet, expression) • print ("message", objet, expression) Exemples : • Ecrire ("Saisir un entier : ") • Ecrire ("Les notes : ", n1, n2, n3) • Ecrire ( 5 + 4 * 2 ) • Ecrire_nl() Exemples : • print ("Saisir un entier : ", end="") • print (" Les notes :", n1, n2, n3, sep="n") • print ( 5 + 4 * 2 ) • print() # ligne vide avec retour à la ligne Remarques : - Objet est une variable de type simple (entier, réel, booléen, caractère et chaîne de caractères). - « print » fait un retour à la ligne automatique. - "n" permet d’ajouter un retour à la ligne. - Le paramètre « end="" » évite le retour à la ligne. - Le paramètre « sep="n" » permet d'afficher les valeurs de manière séparée par une nouvelle ligne. 12. Les structures de contrôle conditionnelles 12.1La structure conditionnelle simple Notation Algorithmique Notation en Python Si Condition Alors Traitement FinSi if Condition : Traitement
  • 6. 6 Pensée computationnelle et programmation (résumé) Prof : FENNI-S 12.2La structure conditionnelle complète Notation Algorithmique Notation en Python Si Condition Alors Traitement1 Sinon Traitement2 FinSi if Condition : Traitement1 else : Traitement2 12.3La structure conditionnelle généralisée (Si imbriquée) Notation Algorithmique Notation en Python Si Condition1 Alors Traitement1 Sinon Si Condition2 Alors Traitement2 Sinon Si Condition3 Alors Traitement3 Sinon TraitementN FinSi if Condition1 : Traitement1 elif Condition2 : Traitement2 elif Condition3 : Traitemnt3 else : TraitementN 12.4La structure conditionnelle à choix multiples Notation Algorithmique Notation en Python (Version ≥ 3.10) Selon Sélecteur Val1 : Traitement1 Val2, Val3, Val4 : Traitement2 Val5 .. Val9 : Traitement3 … Sinon TraitementN FinSelon match Sélecteur : case Val1 : Traitement1 case Val2|Val3|Val4 : Traitement2 case Sélecteur if Val5 <= Sélecteur <= Val9 : Traitemnt3 case_ : TraitementN
  • 7. 7 Pensée computationnelle et programmation (résumé) Prof : FENNI-S 13. Les structures de contrôle itératives 13.1 La structure de contrôle itérative complète (La boucle POUR … FAIRE …) Syntaxe en algorithmique Syntaxe en Python Pour Compteur de Début à Fin [Pas = valeur_pas] Faire Traitement Fin Pour for Compteur in range (Début, Fin+1 [, pas]) : Traitement Remarques : • Le nombre de répétitions est connu avant le traitement et il est égal à |Fin – Début |+ 1. • Le Pas peut être Positif ou Négatif. • Par défaut, le Pas est égal à 1. • Il faut éviter de modifier la valeur du compteur de la boucle Pour au niveau du traitement. • range (5) le compteur prendra les valeurs suivantes : 0, 1, 2, 3, 4 • range (3, 8) le compteur prendra les valeurs suivantes : 3, 4, 5, 6, 7 • range (8, 3, -1) le compteur prendra les valeurs suivantes : 8, 7, 6, 5, 4 • range (0, 10, 3) le compteur prendra les valeurs suivantes : 0, 3, 6, 9 13.2 La structure de contrôle itérative à condition d’arrêt (La boucle TANT QUE … FAIRE …) Syntaxe en algorithmique Syntaxe en Python Initialisation Tant que Condition Faire Traitement Fin tant que Initialisation while Condition : Traitement Exemple som  0 Tant que som < 100 Faire Ecrire ("Donner un entier"), Lire (x) Som  som + x Fin tant que Exemple som = 0 while som < 100 : x = int (input ('Donner un entier')) som = som + x Remarque : Le nombre de répétitions n’est pas connu à l’avance et le traitement peut ne pas se faire. 13.3 La structure de contrôle itérative à condition d’arrêt (REPETER … JUSQU’A …) Syntaxe en algorithmique Syntaxe en Python Répéter Traitement Jusqu’à Condition d’arrêt Pas de correspondance. Toutefois, on peut utiliser : valide= False while not valide : # while valide==False : Traitement valide = Condition d’arrêt Exemple Répéter Ecrire ("Donner un entier positif ") Lire(x) Jusqu’à x>0 Exemple valide=False while not valide : x = int (input ('Donner un entier positif')) valide= x>0 Remarque : Le nombre de répétitions n’est pas connu à l’avance et le traitement se fait au moins une fois.
  • 8. 8 Pensée computationnelle et programmation (résumé) Prof : FENNI-S 14.Les modules 14.1. Les fonctions 14.1.1. La définition d’une fonction Une fonction est un sous-programme qui permet la résolution d’un sous-problème précis et retourne (renvoie) un seul résultat de type simple (entier, caractère, réel, booléen, chaîne) au programme appelant. En algorithmique En Python FONCTION Nom_fonction (pf1:type1, …, pfn:typen) : Type_Résultat DEBUT Instruction 1 Instruction 2 Instruction N Retourner Résultat FIN def Nom_fonction ( pf1 , … , pfn ) : Instruction 1 Instruction 2 Instruction N return Résultat 14.1.2. L’appel d’une fonction En Algorithmique En Python Objet  Nom_fonction (pe1, …, pen) Objet = Nom_fonction (pe1, …, pen) Exemples, pour de fonctions prédéfinies • Ch2  Majus(ch) • Si Pos (ch1, ch2) ≠ 0 Alors ............ • y  5 * RacineCarré(x+3) • Ecrire (Long(ch)) • Ch2 = ch.upper() • if ch2.find(ch1) !=0 : ………………… • y = 5 * sqrt (x+3) • print ( len(ch)) N.B. Les paramètres effectifs (pe1,…, pen) et les paramètres formels (pf1, …, pfn) doivent s’accorder de point de vue ordre, nombre et type. 14.2. Les procédures 14.2.1. La définition d’une procédure Une procédure est un sous-programme qui permet la résolution d’un sous-problème précis et qui peut transmettre de zéro à plusieurs résultats au programme appelant. 14.2.2. L’appel d’une procédure En algorithmique En Python Nom_procédure (pe1, …, pen) Nom_procédure (pe1, …, pen) Exemples, pour de procédures prédéfinies Lire (x) Ecrire (a, b) x = input() print(a, b) En algorithmique En Python PROCEDURE Nom_procédure (pf1 : type1, …, pf2 : typen) Début Instruction 1 Instruction 2 Instruction N Fin def Nom_procédure (pf1, …, pfn) : Instruction 1 Instruction 2 Instruction N
  • 9. 9 Pensée computationnelle et programmation (résumé) Prof : FENNI-S N.B. :  Le passage de paramètres par adresse (par référence) permet au programme appelant (PP) de transmettre une valeur à la procédure appelée (SP) et vice versa. Dans ce cas, le paramètre formel est précédé par le symbole « @ ». Par exemple : PROCEDURE TRAITEMENT( c : Réel ; @ a, b :Entier).  Toute modification d'un paramètre formel dans le sous-programme appelé entraîne (automatiquement) au moment du retour à l'appelant une modification de la valeur du paramètre effectif correspondant.  En python, le paramètre de type tableau est par défaut passé par référence.  La portée des variables en python : • Toute variable déclarée au sein d’un module a une portée locale. • Toute variable déclarée au sein d’un module précédée par le mot clé global a une portée globale. Par conséquent, elle ne devra pas figurer parmi les paramètres de ce module. L’exemple ci-dessous illustre le passage par adresse en algorithmique et en Python. En algorithmique Déclaration de la procédure "Saisir" L’appel de la procédure "Saisir" Procédure Saisir (@ m : Entier) Début Répéter Ecrire ("Saisir un entier entre 5 et 20") Lire (m) Jusqu’à (5 ≤ m ≤ 20) Fin Saisir (n) En Python (1ère démarche) Déclaration de la procédure "Saisir" L’appel de la procédure "Saisir" def Saisir () : global m valide = False while not valide : m = int (input ("Saisir un entier entre 5 et 20")) valide = (5 <= m <= 20) Saisir () n = m En Python (2ème démarche) Déclaration de la procédure "Saisir" L’appel de la procédure "Saisir" def Saisir () : valide = False while not valide : m = int (input ("Saisir un entier entre 5 et 20")) valide = (5 <= m <= 20) return m n = Saisir () Paramètre formel Paramètre effectif
  • 10. 10 Pensée computationnelle et programmation (résumé) Prof : FENNI-S Problème : Remplir puis afficher un tableau T par N entiers (avec 5 ≤ n ≤ 10) Exemple d’une solution modulaire En Algorithmique En Python # Algorithme du programme principal ALGORITHME Exemple DEBUT Saisie (N) Remplir (N, T) Affichage (N, T) FIN T.D.N.T. Type TAB = Tableau de 10 entiers Tableau de déclaration des objets globaux Objet Type/nature N Entier T TAB Saisie Procédure Remplir Procédure Affichage Procédure # Algorithme de la procédure Saisie PROCEDURE Saisie ( @ m : Entier ) Début Répéter Ecrire ("Donner un entier entre 5 et 10") Lire (m) Jusqu’à (5 ≤ m ≤ 10) Fin # Algorithme de la procédure Remplir PROCEDURE Remplir ( m : Entier ; @ V : TAB ) Début Pour i de 0 à m-1 Faire Ecrire ("T[",i,"]=") Lire (V[i]) Finpour Fin T.D.O. locaux Objet Type/Nature i Entier # Algorithme de la procédure Affichage PROCEDURE Remplir ( m : Entier ; V : TAB ) Début Pour i de 0 à m-1 Faire Ecrire (V[i]) Finpour Fin T.D.O. locaux Objet Type/Nature i Entier from numpy import array T = array ([int()]*10) def Saisie () : valide = False while not valide : m = int(input("Donner un entier entre 5 et 10")) valide = (5<=m<=10) return m def Remplir (m, V) : for i in range(m) : V[i]= int(input("T["+str(i)+"]=")) def Affichage (m, V) : for i in range(m) : print(V[i], end=" ") #Programme principal N = Saisie () Remplir (N, T) Affichage (N, T)
  • 11. 11 Pensée computationnelle et programmation (résumé) Prof : FENNI-S Les modules usuels Les procédures Algorithme Python Appel # Saisir un entier positif Procédure Saisir (@ x : entier) Début Répéter Ecrire ("Donner un entier positif ") Lire(x) Jusqu’à x ≥ 0 Fin def Saisir () : global x valide = False while not valide : x = int(input ("Donner un entier positif ")) valide = (x >= 0) algorithme Saisir(n) python Saisir() n = x def Saisir () : valide = False while not valide : x = int(input ("Donner un entier positif ")) valide = (x >= 0) return x algorithme Saisir(n) python n = Saisir() # Saisir une chaîne de caractères formée uniquement de lettres majuscules Procédure Saisie (@ ch : Chaîne) Début Répéter Ecrire ("Saisir une chaîne "), Lire(ch) i← 0 verif←Vrai Tant que (verif=Vrai) ET (i ≠long(ch)) Faire Si non (ch[i]∈["A".."Z"]) Alors verif ← Faux Finsi i ← i+1 Fin Tant que Jusqu’à verif = Vrai Fin TDOL objet type/nature i Entier def Saisir() : verif = False while verif ==False : ch=input("Saisir une chaîne") i=0 verif=True while (verif==True) and (i != len(ch)) : if not ("A" <= ch[i] <= "Z") : verif=False i=i+1 return ch algorithme Saisir(ch) python ch=Saisir() # Remplir un tableau T par N entiers en ordre croissant (avec 10 ≤ N ≤ 100) Procédure remplir (@ T : tab ; n : entier) Début Ecrire ("T[0] : "), Lire(T[0]) Pour i de 1 à (n-1) Faire Répéter Ecrire ("T[", i, "] : "), Lire(T[i]) Jusqu’à T[i] > T[i-1] Fin Pour Fin TDOL objet type/nature i Entier from numpy import array V = array( [int()]*100) def remplir (T, n) : T[0] = int(input("T[0] :")) for i in range (1, n) : while T[i] <= T[i-1] : T[i] = int(input("T["+ str(i) + "] :")) algorithme remplir (V, n) python remplir(V, n)
  • 12. 12 Pensée computationnelle et programmation (résumé) Prof : FENNI-S # Remplir un tableau T par N entiers de deux chiffres Procédure remplir (@ T : tab ; n : entier) Début Pour i de 0 à n-1 Faire Répéter Ecrire ("T[ ", i, "] =" ) Lire(T[i]) Jusqu’à (10 ≤ T[i] ≤ 99) FinPour Fin TDOL objet type/nature i Entier from numpy import array V = array( [int()]*100) def remplir (T, n) : for i in range(n) : valide = False while not valide : T[i] = int (input ("T["+ str(i) + "]=")) valide = (10<=T[i] <=99) algorithme remplir (V, n) python remplir(V, n) # Remplir un tableau T par N entiers distincts Procédure Saisie (n : Entier ; @ T : Tab) Début Pour i de 0 à n-1 Faire Répéter Ecrire (''Saisir la case '', i), Lire (T[i]) j ← 0 Tant que T[i] ≠ T[j] Faire j← j+1 Fin Tant que Jusqu’à (j = i) Fin Pour Fin from numpy import array V = array( [int()]*100) def Saisie (n, T) : for i in range(n) : verif = False while not verif : T[i] = int(input("Saisir la case"+ str(i))) j=0 while T[i] != T[j] : j=j+1 verif = (i==j) algorithme Saisie (n, V) python Saisie (n, V) # Remplir un tableau T par N entiers au hasard entre [a, b] Procédure Remplir (@ t : Tab ; n, a, b : Entier) Début Pour i de 0 à n-1 Faire t[i] ← Aléa (a, b) Fin Pour Fin Une lettre majuscule au hazard t[i] ← chr (65+ Aléa(0, 25)) from numpy import array v = array( [int()]*100) def Remplir (t, n, a, b) : from random import randint for i in range(n) : t[i] = randint (a, b) Une lettre majuscule au hazard t[i] = chr (65+ randint(0, 25)) algorithme Remplir (v, n, a, b) python Remplir (v, n, a, b) # Affichage d’un tableau T de N éléments Procédure afficher (T: tab ; n : entier) Début Pour i de 0 à n-1 Faire Ecrire (T[i]) FinPour Fin ………………………… from numpy import array v = array( [int()]*100) def afficher (T, n) : … for i in range(n) : … print (T[i], end=" ") …… algorithme afficher (v, n) python afficher (v, n)
  • 13. 13 Pensée computationnelle et programmation (résumé) Prof : FENNI-S # Ranger les valeurs négatifs d’un tableau T à gauche et les valeurs positifs à droite Procédure Ranger (@ t : tab ; n : entier) Début k ← 0 Pour i de 0 à n-1 Faire Si t[i] < 0 Alors aux ← t[i] t[i] ← t[k] t[k] ← aux k ← k +1 Fin Si Fin Pour Fin TDOL objet type/nature i, k Entier from numpy import array v = array( [int()]*100) def Ranger (t, n) : k=0 for i in range(n) : if t[i] < 0 : aux = t[i] t[i] = t[k] t[k] = aux k = k +1 algorithme Ranger (v, n) python Ranger (v, n) # Transférer les éléments pairs d’un tableau T, dans T1 et les impairs dans T2 Procédure Transfert (t : tab ; n : entier ; @ t1, t2 : tab ; @ c1, c2 : entier) Début c1 ← 0 ; c2 ← 0 Pour i de 0 à n-1 Faire Si t[i] mod 2 = 0 Alors c1← c1 +1 t1[c1] ←t[i] Sinon c2← c2 +1 t2[c2] ← t[i] Fin Si Fin Pour Fin TDOL objet type/nature i Entier from numpy import array v = array( [int()]*100) v1 = array( [int()]*100) v2 = array( [int()]*100) def Transfert (t, n, t1, t2) : c1=0 ; c2=0 for i in range (n) : if t[i] % 2 == 0 : t1[c1] = t[i] c1 = c1 +1 else : t2[c2] = t[i] c2 = c2 +1 return c1, c2 algorithme Transfert (v, m, v1, v2, k1, k2) python k1, k2 = Transfert (v, m, v1, v2) # Permutation de deux variables Procédure Permut (@ a, b : Réel) Début aux ← a a ← b b ← aux Fin TDOL objet type/nature aux Réel def Permut(a,b) : aux = a a = b b = aux return a, b algorithme Permut (x, y) python x,y = Permut(x,y) # Insertion d’un élément X dans un tableau T à une position p Procédure Insertion (@ t : tab ; n, x, p : entier) Début Pour i de n à (p-1) [pas=-1] Faire t[i] ← t[i-1] Fin Pour t[p] ← x Fin from numpy import array v = array( [int()]*100) def Insertion (t, n, x, p) : for i in range (n, p-1, -1) : t[i] = t[i-1] t[p]=x algorithme Insertion (v, n, x, p) python Insertion (v, n, x, p)
  • 14. 14 Pensée computationnelle et programmation (résumé) Prof : FENNI-S Les fonctions Algorithme Python Appel # PGCD de 2 entiers (méthode de la différence) Fonction PGCD (a, b : entier) : entier Début Tant que (a ≠ b) Faire Si a > b Alors a ← a-b Sinon b ← b-a FinSi Fin Tant que Retourner a Fin def PGCD (a, b ) : while (a != b) : if a > b : a = a-b else : b = b-a return a algorithme pg ← PGCD (x, y) python pg = PGCD (x, y) # PGCD de 2 entiers (méthode d’Euclide) Fonction PGCD (a, b : entier) : entier Début Tant que (b ≠ 0) Faire r ← a mod b a ← b b ← r Fin Tant que Retourner a Fin def PGCD (a, b ) : while (b != 0) : r = a % b a = b b = r return a # PPCM de 2 entiers Fonction PPCM ( a, b : entier) : entier Début i ← 1 Tant que ((a*i) mod b) ≠ 0 Faire i ← i + 1 Fin Tant que Retourner (a*i) Fin def PPCM (a, b ) : i = 1 while ((a*i) % b) != 0 : i = i + 1 return (a*i) algorithme pp ← PPCM (x, y) python pp = PPCM (x, y) # Calcul de Xn Fonction puissance(x, n : entier) : réel Début p←1 Pour i de 1 à abs(n) Faire p←p*x FinPour Si n<0 Alors p ←1/ p FinSi Retourner p Fin def puissance (x, n ) : p=1 for i in range(abs(n)) : p = p * x if n<0 : p = 1/p return p algorithme ps ← puissance(x, n) python ps = puissance(x, n) # Factoriel d’un entier N (N! = 1*2*3*…*n) Fonction fact (n : entier) : entier …… Début f ← 1 Pour i de 2 à n Faire f ← f*i FinPour Retourner f Fin def fact (n ) : f=1 for i in range (2, n+1) : f = f * i return f algorithme x ← fact(n) python x = fact(n)
  • 15. 15 Pensée computationnelle et programmation (résumé) Prof : FENNI-S # Vérifier si un nombre est premier (le nombre de ses diviseurs =2) Fonction premier (n : entier) : booléen Début nb ← 1 Pour i de 1 à (n div 2) Faire Si (n mod i) = 0 Alors nb ← nb + 1 FinSi FinPour Retourner nb = 2 Fin def premier (n) : nb=1 for i in range(1, (n//2)+1) : if n % i == 0 : nb = nb + 1 return nb == 2 algorithme ok ← premier(n) python ok = premier(n) # Méthode2 : vérifier s’il y a un diviseur de n dans l’intervalle [2, (n div 2)] Fonction premier (n : entier) : booléen Début i ← 2 verif ← Vrai Tant que verif ET (i <= n div 2) Faire Si (n mod i) = 0 Alors verif ← Faux Sinon i ← i + 1 FinSi Fin Tant que Retourner verif Fin def premier(n): i=2 verif=True while verif and (i <= n // 2): if (n % i == 0): verif=False else: i=i+1 return verif algorithme ok ← premier(n) python ok = premier(n) # Vérifier si un nombre est parfait ( n = somme de ses deviseurs sauf lui-même. exp : 6=1+2+3) Fonction parfait (n : entier) : booléen Début s ← 0 Pour i de 1 à (n div 2) Faire Si (n mod i) = 0 Alors s ← s + i FinSi FinPour Retourner s = n Fin def parfait (n) : s=0 for i in range(1, n//2+1) : if (n%i) == 0 : s = s + i return s == n algorithme ok ← parfait(n) python ok = parfait(n) # Calcul de la somme S = 1+2+3+4+…+N Fonction Somme (n : entier) : entier Début S ← 0 Pour i de 1 à n Faire S ← S + i Fin Pour Retourner S Fin def Somme(n) : S= 0 for i in range(1, n+1) : S = S + i return S algorithme som ← Somme(n) python som = Somme(n) # Calcul de la somme S = 1-2+3-4+…+(-1)n+1 N Fonction Somme (n : entier) : entier Début S ← 0 ; signe←1 Pour i de 1 à n Faire S ← S + signe*i signe ← -1 Fin Pour Retourner S Fin def Somme(n) : S= 0 ; signe=1 for i in range(1, n+1) : S = S + signe * i signe= -1 return S algorithme som ← Somme(n) python som = Somme(n)
  • 16. 16 Pensée computationnelle et programmation (résumé) Prof : FENNI-S # La somme de chiffres d’un entier Fonction Som_chiff (n : entier) : entier Début S ← 0 Répéter R ← n mod 10 S ← S + R n ← n div 10 Jusqu’à (n = 0) Retourner S Fin Solution 2 : Fonction Som_chiff (n : entier) : entier Début C ← Convch(n) S ← 0 Pour k de 0 à long(C)-1 Faire S ← S + Valeur(C[k]) Finpour Retourner S Fin def Som_chiff (n) : S= 0 Valide = False while not Valide : R = n % 10 S = S + R n = n // 10 Valide = (n==0) return S Solution 2 : def Som_chiff (n) : C=str(n) S=0 for k in range (0, len(C)) : S = S + int(C[k]) return S algorithme som ← Som_chiff(n) python som = Som_chiff(n) # Décomposition d’un nombre en un produit de facteurs premiers ( exp : 36=2*2*3*3) Fonction fact_premier (n : entier) : chaine Début ch←"" i←2 Tant que (n ≠ 1) Faire Si n mod i = 0 Alors ch ← ch + convch(i) + "*" n ← n div i Sinon i ← i+1 FinSi FinPour Retourner Sous_chaine (ch, 0, long(ch)-1) Fin def fact_premier (n) : ch = "" i = 2 while (n != 1) : if (n % i) == 0 : ch = ch + str(i) + "*" n = n // i else : i = i + 1 return ch[0 : len(ch)-1] # La moyenne de n entiers dans un tableau T Fonction Moyenne (T : tab ; n : entier) : réel Début Som← 0 Pour i de 0 à n-1 Faire Som ← Som + T[i] Fin Pour Retourner Som/n Fin from numpy import array v = array( [int()]*100) def Moyenne(T, n) : Som= 0 for i in range(n) : Som = Som + T[i] return Som/n solution 2 def Moyenne(T) : Som= 0 for i in T : Som = Som + i return Som/len(T) algorithme moy ←Moyenne(v, n) python moy = Moyenne(v, n) solution 2 moy = Moyenne(v)
  • 17. 17 Pensée computationnelle et programmation (résumé) Prof : FENNI-S # Miroir (symétrique) d’un entier Fonction Miroir (x : entier) : entier Début sym ← 0 Répéter u ← x mod 10 sym ← sym * 10 + u x ← x div 10 Jusqu’à x=0 Retourner sym Fin def Miroir (x) : sym = 0 while (x != 0) : u = x % 10 sym = sym * 10 + u x = x // 10 return sym # Vérifier si une chaîne est palindrome (exp : "AZIZA") Fonction Palindrome (ch : chaîne) : Booléen Début i ← 0 Répéter verif ← ch[i] = ch[long(ch) - i -1 ] i ← i+1 Jusqu’à (verif=faux) ou (i = long(ch) div 2) Retourner verif Fin def Palindrome (ch) : i = 0 verif = True while verif and (i != len(ch) // 2): verif = (ch[i] == ch[len(ch) - i -1]) i=i+1 return verif # Vérifier si une chaîne de caractères contient uniquement des lettres Fonction verif (ch : chaine) : booléen Début i ← 0 valide←Vrai Répéter Si non("A" ≤ Majus(ch[i]) ≤ "Z") Alors valide←Faux Finsi i ← i+1 Jusqu’à (valide=Faux) ou (i = long(ch)) Retourner valide Fin def verif (ch ) : valide = True i = 0 while (valide==True) and (i!=len(ch)) : if not ("A" <= ch[i].upper() <= "Z"): valide=False i = i + 1 return valide # Recherche de la première valeur minimum dans un tableau de n réels Fonction minimum (t : tab ; n : entier) : réel Début min ← t[0] Pour i de 1 à (n-1) Faire Si t[i] < min Alors min ← t[i] FinSi FinPour Retourner min Fin from numpy import array v = array( [float()]*100) def minimum (t, n) : min = t[0] for i in range (1, n) : if t[i] < min : min = t[i] return min algorithme mini ← minimum(v,n) python mini = minimum(v,n)
  • 18. 18 Pensée computationnelle et programmation (résumé) Prof : FENNI-S # Recherche de la dernière position d’un élément X dans un tableau de n réels Fonction Recherche (x : réel ; n : entier ; t : tab) : entier Début p ← -1 ; i ← n Répéter i ← i - 1 Si t[i] = x Alors p ← i FinSi Jusqu’à (p ≠ -1) OU (i = 0) Retourner p Fin from numpy import array v = array( [float()]*100) def Recherche (x, n, t) : p = -1 i = n valide=False while not valide : i = i - 1 if t[i] == x : p = i valide = (p != -1) or (i==0) return p algorithme pos ← Recherche(x, n, v) python pos = Recherche(x, n, v) # Fréquence d’un élément X dans un tableau de N entiers Fonction frequence (x:entier ; t:tab ; n:entier) : entier Début nb ← 0 Pour i de 0 à (n-1) Faire Si t[i] = x Alors nb ←nb + 1 FinSi FinPour Retourner nb Fin from numpy import array v = array( [int()]*100) def frequence (x, t, n) : nb = 0 for i in range(n) : if t[i] == x : nb = nb + 1 return nb