Informatique et Programmation Python Extraits choisis du ...gabrel/DOCUMENTS/... · Plan du cours 1...

Preview:

Citation preview

Informatique et Programmation Python 1

CPES1

2019-2020

1. Extraits choisis du cours d’Informatique de L1 MIE conçu avec E. Lazard, M. Manouvrier

CPES1 Informatique 2019-2020 1 / 73

Plan du cours

1 Algorithmes et programmation : principaux concepts etinstructions élémentaires

2 Définition et appels de fonction3 Structures de données séquentielles : chaines de caractères et

listes4 Tuples, dictionnaires et tris5 Analyse d’algorithmes et premières notions de complexité : le cas

des algorithmes de recherche

CPES1 Informatique 2019-2020 2 / 73

Chapitre 1 - Algorithmes, variables et types

1.1 Algorithmes et programmation : principaux concepts1.2. Valeurs, types et variables1.3. Instructions élémentaires

1.3.1 Affectation et expression1.3.2 Lecture et écriture

1.4. Instructions conditionnelles1.5. Instructions répétitives

CPES1 Informatique 2019-2020 3 / 73

Exemple :

FIGURE – f (x) = x3 − 1

CPES1 Informatique 2019-2020 4 / 73

ASCII = American Standard Code for InformationInterchange

FIGURE – Table ascii

CPES1 Informatique 2019-2020 5 / 73

Algorithme qui détermine si une équation du second degré,ax2 + bx + c = 0, n’admet aucune solution réelle :

ALGOVARIABLESa TYPE NOMBREb TYPE NOMBREc TYPE NOMBREd TYPE NOMBREDEBUT

ECRIRE "Quel est le paramètre a?"LIRE aECRIRE "Quel est le paramètre b?"LIRE bECRIRE "Quel est le paramètre c?"LIRE cd <- b*b - 4*a*cECRIRE "Le discriminant est égal à : ", dSI (d<0) ALORS

DEBUTECRIRE "L’équation n’admet aucune racine réelle"

FINFIN

CPES1 Informatique 2019-2020 6 / 73

Reprise de l’exemple du transparent 6 avec un SINON :

ALGOVARIABLESa, b, c, d TYPE NOMBREDEBUT

ECRIRE "Quel est le paramètre a?"LIRE aECRIRE "Quel est le paramètre b?"LIRE bECRIRE "Quel est le paramètre c?"LIRE cd <- b*b - 4*a*cECRIRE "Le discriminant est égal à : ", dSI (d<0) ALORS

DEBUTECRIRE "Le discrimant est négatif"ECRIRE "L’équation n’admet aucune racine réelle"

FINSINON

DEBUTECRIRE "L’équation admet au moins une racine réelle"

FINFIN

CPES1 Informatique 2019-2020 7 / 73

ALGOVARIABLESa TYPE NOMBREDEBUT

ECRIRE "Quel est le paramètre a?"LIRE aSI (a!=0) ALORS

DEBUTSI (a%2==0) ALORS

DEBUTECRIRE "C’est un nombre pair"SI (a>0) ALORS

DEBUTECRIRE "et positif"

FINFIN

FINSINON

DEBUTECRIRE "Il est nul"

FINFIN

CPES1 Informatique 2019-2020 8 / 73

Traduction de l’exemple du transparent 6 en Python :

a = float(input("Donner le paramètre a : "))b = float(input("Donner le paramètre b : "))c = float(input("Donner le paramètre c : "))d = b*b - 4*a*cprint("Le discriminant est égal à : ", d)if d < 0:

print("Votre équation n’admet aucune racine réelle")

Autre exemple : Que se passe-t-il lors de l’exécution duprogramme ci-dessous pour x = 4 ?

x = int(input("Donner l’inconnue x positive ou nulle : "))if x >= 10:

print("x n’est pas constitué d’un unique chiffre")print("parce qu’il est plus grand que 10")

CPES1 Informatique 2019-2020 9 / 73

Traduction de l’exemple du transparent 7 en Python :

a = float(input("Donner le paramètre a : "))b = float(input("Donner le paramètre b : "))c = float(input("Donner le paramètre c : "))d = b*b - 4*a*cprint("Le discriminant est égal à : ", d)if d < 0:

print("Le discrimant est négatif.")print("Votre équation n’admet aucune racine réelle")

else:print("Votre équation admet au moins une racine réelle")

CPES1 Informatique 2019-2020 10 / 73

Que fait le programme Python suivant?

if True:print("Tout juste")

else:print("Pas bon")

CPES1 Informatique 2019-2020 11 / 73

a = float(input("Donner le paramètre a : "))b = float(input("Donner le paramètre b : "))c = float(input("Donner le paramètre c : "))d = b*b - 4*a*cif d < 0:

print("L’équation n’admet aucune racine réelle")elif d == 0:

print("L’équation admet une unique racine réelle")else:

print("L’équation admet deux racines réelles distinctes")

CPES1 Informatique 2019-2020 12 / 73

Exercice : Dans l’algorithme ci-dessous, le texte de "message2" peut-ilêtre plus explicite quant à la parité et au signe de a ?

ALGOVARIABLESa TYPE NOMBREDEBUT

ECRIRE "Quel est le paramètre a?"LIRE aSI (a>0 ET a%2==0) ALORS

DEBUTECRIRE "C’est un nombre pair positif"

FINSINON

DEBUTSI a%2==0 ALORS

DEBUTECRIRE "message2"

FINFIN

FIN

CPES1 Informatique 2019-2020 13 / 73

Instruction TANT_QUE

Exemple 1 : Algorithme affichant les entiers de 1 à 10

ALGOVARIABLESx TYPE NOMBREDEBUTx <- 1TANT_QUE (x<=10) FAIREDEBUTECRIRE xx <- x+1

FINFIN

CPES1 Informatique 2019-2020 14 / 73

Exemple 2 : Que fait cet algorithme?

ALGOVARIABLESn TYPE NOMBREDEBUTlire nTANT_QUE n >= 0 FAIREDEBUTECRIRE nn <- n-1

FINFIN

CPES1 Informatique 2019-2020 15 / 73

Exemple 3 : On veut connaître le plus petit entier n tel que2n ≥ 10 000.

Compléter les lignes 2 et 3 de l’algorithme ci-dessous pour qu’ilréponde au problème.

ALGOVARIABLESn TYPE NOMBREDEBUT1 n <- 12 TANT_QUE (2**n ???? ) FAIRE

DEBUT3 n <- ????

FIN4 ECRIRE nFIN

Ex. repris de http://www.xm1math.net/algobox/exemples/dichotomie.html

CPES1 Informatique 2019-2020 16 / 73

Instruction while en Python

Exemple 4 : Programme Python affichant les entiers de 1 à 10

n = 1while n <= 10:

print(n)n = n + 1

CPES1 Informatique 2019-2020 17 / 73

Exemple 5 : que se passe-t-il ?

n = 1while n <= 10:

print(n)n = n + 1

Exemple 6 : que se passe-t-il ?

n = 1while True:

print(n)

CPES1 Informatique 2019-2020 18 / 73

L’instruction break

Exemple 7 : Lecture au clavier de 10 valeurs >0 et affichage de leursomme

Stratégie 1 pour gérer les erreurs de saisie : interrompre la lecture enutilisant l’instruction break

cpt = 0somme = 0while cpt < 10:

x = int(input())if x <= 0:

print("Erreur de saisie")break

somme += xcpt += 1

if cpt < 10:print("Erreur de saisie")

else:print("La somme des 10 valeurs lues est :", somme)

Instruction non autorisée en algorithmiqueCPES1 Informatique 2019-2020 19 / 73

L’instruction continue

Stratégie 2 pour gérer les erreurs de saisie : poursuivre la lecturejusqu’à obtenir 10 valeurs >0 en utilisant l’instruction continue

cpt = 0somme = 0while cpt < 10:

x = int(input())if x <= 0:

continuesomme += xcpt += 1

print("La somme des 10 valeurs lues est :", somme)

Instruction non autorisée en algorithmique

CPES1 Informatique 2019-2020 20 / 73

Réécriture de la stratégie 1 p. 19 sans instruction break

cpt = 0somme = 0while cpt < 10:

x = int(input())if x <= 0:

print("Erreur de saisie")cpt = 10

else :somme += xcpt += 1

if x <= 0:print("Erreur de saisie")

else:print("La somme des 10 valeurs lues est :", somme)

CPES1 Informatique 2019-2020 21 / 73

Réécriture de la stratégie 2 p. 20 sans l’instruction continue

cpt = 0somme = 0while cpt < 10:

x = int(input())if x > 0:

somme += xcpt += 1

print("La somme des 10 valeurs lues est :", somme)

CPES1 Informatique 2019-2020 22 / 73

Plan du cours

Chapitre 2 - Fonctions2.1 Introduction2.2 Utiliser des fonctions appartenant à des modules2.3 Fonctions en pseudo-code

DéfinitionAppel

2.4 Fonctions en PythonDéfinitionAppelStructure d’un programme PythonPortée des variables en Python

CPES1 Informatique 2019-2020 23 / 73

Exemples de fonctions déjà utilisées en Python

1 nom = input()

2 nom = input("Saisir votre nom")

3 ch = "Saisir votre nom"

nom = input(ch)

4 print("Nom:", nom, "Prénom:", prenom, note)

CPES1 Informatique 2019-2020 24 / 73

Utiliser des fonctions appartenant à des modules

Exemple : Utiliser la fonction sqrt du module mathimport mathx = math.sqrt(4)

1 importer le module math (les fonctions et constantes du modulepeuvent alors être appelées - elles sont accessibles !)

2 appeler la fonction sqrt du module math en lui donnantl’argument 4 pour calculer sa racine carrée. La valeur renvoyéeest référencé par la variable x.

CPES1 Informatique 2019-2020 25 / 73

Les modules Python

Modules = bibliothèques contenant des fonctions qu’il est possibled’appeler.

math : contient des fonctions et constantes mathématiques debase (sin, cos, exp, logarithme, racine carrée, puissance, π...) ;os : contient des fonctions et constantes permettant d’interagiravec le système d’exploitation ;random : contient des fonctions et constantes permettant degénérer des nombres aléatoires ;time : permet d’accéder à l’heure de l’ordinateur et aux fonctionsgérant le temps ;numpy : algèbre linéaire, calcul numérique ;matplotlib : représentation graphique.

CPES1 Informatique 2019-2020 26 / 73

Utiliser les modules Python : 1ère méthode

1 import nomModule2 help(nomModule) pour obtenir de l’aide sur un module3 dir(nomModule) pour connaître la liste des

fonctions/méthodes/constantes incluses dans un module4 nomModule.nomFonction(...) pour appeler n’importe

laquelle des fonctions incluses dans ce module

Renommer un moduleimport numpy as np

CPES1 Informatique 2019-2020 27 / 73

Utiliser les modules Python : 2eme méthode

Exemplefrom random import randintrandint(2,19)

permet d’importer une fonction particulière d’un module.

Pour importer toutes les fonctions d’un modulefrom nomModule import *

Attention si, avec cette méthode, on importe des fonctions portant lemême nom provenant de modules différents, c’est la dernière fonctiondu dernier module importé qui sera alors la seule accessible.

CPES1 Informatique 2019-2020 28 / 73

Exercice : déterminer les nombres parfaits <= n

ALGOVARIABLESn TYPE NOMBRE

DEBUTLIRE nTANT_QUE (n>1) FAIREDEBUTSI (sommeDiviseurs(n)==n) ALORS

DEBUTECRIRE n

FINn <- n-1

FINFIN

ou en Python :

n = int(input())while n > 1:

if sommeDiviseurs(n) == n:print(n)

n = n - 1

CPES1 Informatique 2019-2020 29 / 73

Exemple : la fonction sommeDiviseurs

FONCTION sommeDiviseurs(e TYPE NOMBRE) TYPE NOMBREVARIABLES_LOCALESsomme, d TYPE NOMBRE

DEBUTd <- 1somme <- 0TANT_QUE (d<e) FAIREDEBUT

SI ((e%d)==0) ALORSDEBUT

somme <- somme+dFIN

d <- d+1FIN

RENVOYER sommeFIN

CPES1 Informatique 2019-2020 30 / 73

Exercice

Ecrire une fonction prenant en argument une année et qui teste sil’année est bissextile : la fonction doit renvoyer une valeur booléenneVRAI si l’année est bissextile et FAUX sinon.

CPES1 Informatique 2019-2020 31 / 73

La fonction bissextile en pseudo-code

FONCTION bissextile(annee TYPE NOMBRE) TYPE BOOLEENVARIABLES_LOCALES

b1, b2 TYPE booleenDEBUT

b1 <- (annee%4 == 0) and (annee%100 != 0)b2 <- annee%400 == 0RENVOYER b1 or b2

FIN

CPES1 Informatique 2019-2020 32 / 73

Appel de fonction

Exemple de fonction :

FONCTION carre(v TYPE NOMBRE) TYPE NOMBREDEBUT

RENVOYER v*vFIN

Exemples d’appel de la fonction carre() :

c <- carre(2)ECRIRE carre(2)SI carre(2)==6 ALORS DEBUT ... FIN

CPES1 Informatique 2019-2020 33 / 73

La fonction bissextile en Python

def bissextile(annee):b1 = (annee%4 == 0) and (annee%100 != 0)b2 = annee%400 == 0return b1 or b2

CPES1 Informatique 2019-2020 34 / 73

Analyser les fonctions suivantes

def afficheBonjour():print(’Le résultat est Bonjour’)

def affiche(v):print("Le résultat est", v)

def concat(ch1,ch2):return ch1+ch2

def resteEtQuotient(num,denom):return num%denom, num//denom

CPES1 Informatique 2019-2020 35 / 73

Exemple : calcul de l’image de x sur 2*x + 1

def imageV1(x):return 2*x+1

def imageV2(x):print(2*x+1)

Pour afficher le résultat à l’écran, quelle instruction appelante?

imageV1(3)print(imageV1(3))imageV2(3)print(imageV2(3))

Evaluer les expressions suivantes :

7 == imageV1(3)7 == imageV2(3)

Combien vaut v?

v = imageV1(3)v = imageV2(3)

CPES1 Informatique 2019-2020 36 / 73

Exemple : Fonction sans instruction return

>>> def g(x): print(2*x+1)

>>> print(g(3))7 # affichage dans fonctionNone # affichage de la valeur renvoyée

>>> g(3) == None7 # affichage dans fonctionTrue # g(3) est remplacée par sa "valeur"

CPES1 Informatique 2019-2020 37 / 73

Ce qu’il ne faut pas faire !

Exemple : redéfinition de la fonction print()

def print():return True

print(’bonjour’)

Traceback (most recent call last):File "<console>", line 1, in <module>

TypeError: print() takes 0 positional arguments but 1 was given

CPES1 Informatique 2019-2020 38 / 73

Exemple

def incrementerEntier(n):n = n + 1return n

m = 5print(’Valeur retour :’,incrementerEntier(m))print("Valeur de m :", m)

affiche

Valeur retour : 6Valeur de m : 5

CPES1 Informatique 2019-2020 39 / 73

Structure d’un programme Python

Contrainte : Entête d’une fonction doit avoir été lue par l’interpréteuravant d’être appelée !

Conventionimport ....

def fonction1(...) :...

def fonction2(...) :...

def fonction3(...) :...

BlocInstructions = Programme principal

CPES1 Informatique 2019-2020 40 / 73

Appels croisés :

def f1(x):if x==0:

print(1)f2(0)

else:print(2)f2(1)

def f2(x):if x==0:

print(3)f1(1)

else:print(4)

f1(0) # affiche 1 3 2 4

def f1(x):if x==0:

print(1)f2(0)

else:print(2)f2(1)

f1(0) # erreur d’exécution

def f2(x):if x==0:

print(3)f1(1)

else:print(4)

CPES1 Informatique 2019-2020 41 / 73

Portée des variables en Python

2 types de variables dans un programme Python :Variables locales à une fonctionVariables globales, accessibles depuis n’importe quel point ducode

CPES1 Informatique 2019-2020 42 / 73

Exemple

def f(x):res = 2 * x + 1return res

print(f(3))

L’instruction print(res) peut-elle s’exécuter correctement dans leprogramme principal ?

CPES1 Informatique 2019-2020 43 / 73

Exemple avec 2 variables locales de même nom

def f(x):res = 2 * x + 1return res

def g(x):res = 5 * x + 3return res

print(f(3))print(g(3))

CPES1 Informatique 2019-2020 44 / 73

Accès à une variable globale dans une fonction

Exemple :

def image(x):res = a * x + breturn res

a = 2b = 1print(image(3))

CPES1 Informatique 2019-2020 45 / 73

Priorité aux variables locales

def imageV2(x):a = 5b = 10res = a * x + breturn res

a = 2b = 1print(imageV2(3))print(a, b)

CPES1 Informatique 2019-2020 46 / 73

Impossible de modifier une variable globale dans unefonction

def h():vg = vg + 1return vg + 1

vg = 1print(h())print(vg)

CPES1 Informatique 2019-2020 47 / 73

... à moins d’utiliser le mot-clé global

Exemple :

def hV2():global vgvg = vg + 1return vg + 1

vg = 1print(hV2())print(vg)

CPES1 Informatique 2019-2020 48 / 73

Conseil : Utiliser les arguments pour modifier unevariable globale

def hV3(v):v = v + 1return v, vg + 1

vg = 1vg, val_retour = hV3(vg)print(val_retour)print(vg)

CPES1 Informatique 2019-2020 49 / 73

La trace d’appels : Traceback

def a():b()

def b():c()

def c():erreur()

a()

Traceback (most recent call last):File "tb.py", line 10, in <module>a()

File "tb.py", line 2, in ab()

File "tb.py", line 5, in bc()

File "tb.py", line 8, in cerror()

NameError: global name ’erreur’is not defined

CPES1 Informatique 2019-2020 50 / 73

Chaînes de caractères : Opérateur d’extraction

Quels seront les affichages?

>>> ch = ’Python’>>> print(ch[1:3])

>>> print(ch[2:2])

>>> print(ch[:4])

>>> print(ch[4:])

>>> print(ch[4:3])

>>> print(ch[::-1])

CPES1 Informatique 2019-2020 51 / 73

Chaînes de caractères : Opérateur de concaténation

Quels seront les affichages?

>>> ch = ’Python’ + ’ pour tous’>>> print(ch)

>>> ch1 = ’Python’>>> ch2 = ’ pour tous’>>> ch = ch1 + ch2>>> print(ch)

>>> ch = ’p’ + ch[1:]>>> print(ch)

CPES1 Informatique 2019-2020 52 / 73

Chaînes de caractères : Opérateurs de duplication etd’appartenance

Quels seront les affichages?

>>> ch = ’bon’>>> ch = ch*2>>> print(ch)

>>> print(’on’ in ch)

>>> print(’ont’ in ch)

CPES1 Informatique 2019-2020 53 / 73

Chaînes de caractères : Fonctions natives

len(ch) avec ch de type str renvoie le nombre de caractèresconstituant chlen(’La\nvie’) renvoie 6

car \n constitue un seul caractère qui représente le passage à lalignechr(i), avec i une valeur de type int, renvoie le caractèrecodé par la valeur iord(car), avec car une valeur de type str de longueur 1,renvoie la valeur de codage du caractère car

eval(ch), avec ch de type str, renvoie la valeur retournée parl’expression décrite par cheval(’5+7’) renvoie 12 de type int

CPES1 Informatique 2019-2020 54 / 73

Exercices

1 L’expression chr(ord(’A’) + 32) est-elle correcte?2 Quelle valeur est renvoyée?3 Après avoir exécutée ce bloc d’instructionschaine = ’’for c in ’ABCDEFGHIJKLMNOPQRSTUVWXYZ’:

chaine = chaine + chr(ord(c) + 32)

4 quelle valeur référence la variable chaine?5 quelle valeur est renvoyée par cette expressionchaine == eval(’chaine’)

CPES1 Informatique 2019-2020 55 / 73

Instruction POUR, séquence et tableau enpseudo-code

Instruction répétitive POUR

Pour répéter un nombre de fois fixé à l’avance un bloc d’instructionsdonné, on utilise une boucle POUR

POUR var ALLANT_DE val_debut A val_finDEBUTBloc d’instructionsFIN

var est une variable de type nombre (à déclarer)val_debut et val_fin sont des valeurs entières.Nombre d’itérations = val_fin - val_debut + 1Première itération : var reçoit val_debut, bloc d’instructions estexécuté puis var est automatiquement incrémentée de 1. Quandvar atteint la valeur val_fin, dernière itération !interdit de modifier la valeur de var dans le bloc d’instructions

CPES1 Informatique 2019-2020 56 / 73

La boucle POUR

Algorithme en pseudo-code affichant le carré de tous les entiersde 1 jusqu’à 10 :

ALGOVARIABLESi TYPE NOMBREcarre TYPE NOMBREDEBUT

POUR i ALLANT_DE 1 A 10DEBUT

carre <- i*iECRIRE carre

FINFIN

CPES1 Informatique 2019-2020 57 / 73

Séquences et tableaux

SéquenceSuite finie ordonnée de valeurs S = a1, . . . ,ap, . . . ,an

Longueur de SNombre n de valeurs contenues dans la séquence S (si n = 0 on diraque la séquence est vide)

Pour stocker ces n valeurs, on ne devra pas déclarer/initialiser nvariables distinctes. On va créer une et une seule variable quiréférencera ces n valeurs => nouveau type de données tableau

CPES1 Informatique 2019-2020 58 / 73

Type de données tableau à une dimension

Stocker une séquence S = a1, . . . ,ap, . . . ,an dans une variable detype tableau appelée T :

a1 a2 . . . ap . . . an

T [0] T [1] . . . T [p − 1] . . . T [n − 1]

Déclaration d’un tableau à une dimension en pseudo-code : 2étapes

1 déclarer une variable de type TABLEAU

2 dans le corps de l’algorithme, utiliser la fonction CREER_TABLEAUpour créer le tableau en spécifiant sa taille

CPES1 Informatique 2019-2020 59 / 73

Créer un tableau à une dimension

1 Déclaration du tableau et du type des valeurs de la séquenceVARIABLET TYPE TABLEAU DE NOMBREn TYPE NOMBRE...

2 Appel à la fonction CREER_TABLEAU dans l’algorithmeDEBUT...LIRE nT <- CREER_TABLEAU(n)...FIN

CPES1 Informatique 2019-2020 60 / 73

Accéder à une valeur stockée dans un tableau à unedimension

T[i] permet d’accéder à la valeur stockée à l’indice i du tableauunidimensionnel T, avec i compris entre 0 et n - 1

RemarqueOn peut créer des tableaux contenant des valeurs de tout type :TABLEAU de CHAINES, TABLEAU de BOOLEEN....

CPES1 Informatique 2019-2020 61 / 73

Stocker une séquence de n nombres dans un tableauà une dimension

VARIABLET TYPE TABLEAU DE NOMBREn, ind TYPE NOMBREDEBUTLIRE nT <- CREER_TABLEAU(n)ind <- 0TANT_QUE ind < n FAIRE

DEBUTLIRE T[ind]ind <- ind + 1FIN

FIN

CPES1 Informatique 2019-2020 62 / 73

Stocker une séquence de n nombres dans un tableauà une dimension avec une boucle POUR

VARIABLET TYPE TABLEAU DE NOMBREn, ind TYPE NOMBREDEBUTLIRE nT <- CREER_TABLEAU(n)POUR ind ALLANT de 0 à n-1

DEBUTLIRE T[ind]FIN

FIN

CPES1 Informatique 2019-2020 63 / 73

Opérateurs sur les tableaux : insertion

InsertionAjouter une valeur v à l’indice p-1. OBLIGE à décaler vers la droitetoutes les valeurs stockées précédemment de T[p-1] à T[n-1] (et ilfaut que le tableau soit suffisamment grand !)

a1 a2 . . . v ap . . . an . . .

T [0] T [1] . . . T [p − 1] T [p] . . . T [n]

CPES1 Informatique 2019-2020 64 / 73

Opérateurs sur les tableaux : insertion

Déclaration de tableaux SUFFISAMMENT GRAND :

VARIABLET TYPE TABLEAU DE NOMBREn TYPE NOMBREdim TYPE NOMBRE...

DEBUT...LIRE ndim <- n * 2T <- CREER_TABLEAU(dim)

taille : fonction qui retourne la dimension du tableau

CPES1 Informatique 2019-2020 65 / 73

Insérer v à l’indice p-1 de T

POUR i allant de 0 à n-pDEBUTT[n-i] <- T[n-i-1]FIN

T[p-1] <- v#mettre à jour la longueur de la séquencen <- n + 1

CPES1 Informatique 2019-2020 66 / 73

Opérateurs sur les tableaux : suppression

SuppressionSupprimer la valeur à l’indice p-1. OBLIGE à décaler vers la gauchetoutes les valeurs stockées précédemment de T[p] à T[n-1]

a1 a2 . . . ap+1 . . . an

T [0] T [1] . . . T [p − 1] . . . T [n − 2] T [n − 1]

CPES1 Informatique 2019-2020 67 / 73

Supprimer la valeur à l’indice p-1 de T

POUR i allant de p-1 à n-2DEBUTT[i] <- T[i+1]FIN

#mettre à jour la longueur de la séquencen <- n - 1

# pour afficher les valeurs stockées dans le tableauPOUR i allant de 0 à n-1

DEBUTECRIRE T[i]FIN

CPES1 Informatique 2019-2020 68 / 73

Quid d’une valeur de type str?

une valeur de type str est une séquencemais une valeur de type str n’est pas stockée dans un tableau(on ne peut pas appliquer les opérateurs classiques : une valeurde type str est non modifiable)dans langages de programmation courants, le type tableau existe,pas en Python !

CPES1 Informatique 2019-2020 69 / 73

Tableau à deux dimensions

T [0][0] T [0][1] . . . T [0][j] . . . T [0][m − 1]. . . . . . . . . . . . . . . . . .

T [i][0] T [i][1] . . . T [i][j] . . . T [i][m − 1]. . . . . . . . . . . . . . . . . .

T [n − 1][0] T [n − 1][1] . . . T [n − 1][j] . . . T [n − 1][m − 1]

Déclaration d’un tableau à deux dimensions en pseudo-code :

VARIABLET TYPE TABLEAU DE NOMBREn, m TYPE NOMBREDEBUTLIRE nLIRE mT <- CREER_TABLEAU(n, m)FIN

CPES1 Informatique 2019-2020 70 / 73

Initialiser un tableau à 2 dimensions

VARIABLET TYPE TABLEAU DE NOMBREn, m, i, j TYPE NOMBREDEBUTLIRE nLIRE mT <- CREER_TABLEAU(n, m)POUR i ALLANT_DE 0 A n-1

DEBUTPOUR j ALLANT_DE 0 A m-1

DEBUTLIRE T[i][j]FIN

FIN

CPES1 Informatique 2019-2020 71 / 73

Algorithme en pseudo-code permettant de remplacer chaquenombre d’un tableau par son cube :

ALGOVARIABLESi, taille TYPE NOMBREcube TYPE NOMBRET TYPE TABLEAU DE NOMBREDEBUT

LIRE tailleT <- CREER_TABLEAU(taille)POUR i ALLANT DE 0 A (taille-1)

DEBUTLIRE T[i]

FINPOUR i ALLANT_DE 0 A (taille-1)

DEBUTcube <- T[i]*T[i]*T[i]T[i] <- cube

FINFIN

CPES1 Informatique 2019-2020 72 / 73

Exercice

Écrire en pseudo-code un algorithme qui demande à l’utilisateur deremplir un tableau de chaînes de caractères (en lui demandant aupréalable sa taille), lui demande ensuite un élément x , puis déterminela dernière position (entre 1 et n) de cet élément dans le tableau.

CPES1 Informatique 2019-2020 73 / 73

Recommended