Ce diaporama a bien été signalé.
Le téléchargement de votre SlideShare est en cours. ×

resume algo 2023.pdf

Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
1 Pensée computationnelle et programmation (résumé) Prof : FENNI-S
1. La forme générale d’un algorithme
ALGORITHME Nom
DEB...
2 Pensée computationnelle et programmation (résumé) Prof : FENNI-S
4. Déclaration d’un tableau à une dimension
Déclaration...
3 Pensée computationnelle et programmation (résumé) Prof : FENNI-S
5. Les opérateurs arithmétiques
Opération
Opérateur en
...
Publicité
Publicité
Publicité
Chargement dans…3
×

Consultez-les par la suite

1 sur 18 Publicité

Plus De Contenu Connexe

Similaire à resume algo 2023.pdf (20)

Publicité

Plus récents (20)

resume algo 2023.pdf

  1. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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

×