• Aucun résultat trouvé

BTS SIO >

N/A
N/A
Protected

Academic year: 2022

Partager "BTS SIO >"

Copied!
8
0
0

Texte intégral

(1)

AlgorithÆmique et Python

BTS SIO >

2019/20

I Installation

Version 3.7.4 :https://www.python.org/downloads/

I.1 Prise en main de Python

Pour exécuter des commandes Python ou un programme Python, cela se fait soit en ligne de com- mande soit depuis un éditeur Python.

Il est possible de programmer en Python en ligne de commande, c’est-à-dire en saisissant et en exécu- tant les instructions les unes à la suite des autres. Ceci se fait via un interpréteur de commandes (ou console). Il est également possible de saisir toutes les instructions d’un programme dans un fichier et d’exécuter ce programme.

I.2 Interpréteur

Dans un interpréteur de commandes, le symbole >>> correspond au signal d’invite, ou prompt principal, lequel vous indique que Python est prêt à exécuter une commande.

Les lignes non précédées de ce symbole correspondent à l’affichage d’un résultat. Après avoir saisi chaque instruction, il suffit de taper sur la toucheEnter pour que la commande soit exécutée.

I.3 L’interface IDLE

L’installation de Python génère l’installation d’une interface, appelée IDLE (Integrated DeveLopment Environment). Cette interface vous permet de saisir des instructions en ligne de commande mais éga- lement d’exécuter des programmes Python enregistrés dans des fichiers. L’interpréteur de commandes et L’éditeur de texte (où l’on saisit les commandes d’un programme une à une) sont dans des fenêtres séparées.

L’accès à l’éditeur de texte pour écrire un programme dans un fichier, se fait dans le menuFile, sélectionnezNew File. Une nouvelle fenêtre s’ouvre.

Tapez votre programme Python dans cette fenêtre. Pour exécuter votre programme, allez dans le menu Runet faitesRun Module(ou F5). Il va vous être demandé de faire,une sauvegarde de votre fichier (qui a généralement l’extension .py), puis votre programme s’exécutera (dans l’interpréteur).

Remarque 1 Il existe beaucoup de distributions Pythonparmi lesquelles Edupython,Thonny, Pyso, etc ....

I.4 Module ou librairie

On peut importer desmodulesqui ne sont pas accessibles par défaut quand on lancePython. Par exemple, le calculsin(π2) +√

2nécessite l’utilisation des fonctionssinetsqrtqui sont contenues dans le modulemath. Il faut donc l’importer.

Trois procédures possibles :

• ⊲on écritfrom math import*cela importe tout le module (tout ce qu’il contient) ;

• ⊲on écritfrom math import sin,sqrtseules les commandessinetsqrtseront importées ;

• ⊲on écritimport math as mtcela importe tout le module et ses fonctions devront être préfixées parmt,mt.sin(mt.pi/2)+mt.sqrt(2).

(2)

II Algorithmique

II.1 Types de variables

DéfiÆnition

Dans un algorithme ou un programme, les variables considérées ont destypesqui définissent la nature des valeurs qu’elles peuvent prendre. Les trois types princi- paux considérés en classe de Seconde sont :

• lesentiersquand les valeurs possibles de la variable sont des entiers.

• lesflottantsquand les valeurs possibles de la variable sont des réels.

• les chaînes de caractèresquand les valeurs possibles de la variable sont des « mots ».

• • •

Exemple 1 On doit érire un programme eetuant des statistiques sur des équipes sportives. Dans e programme, il y aura en partiulier trois variables : nomqui orrespond au nom de l'équipe, effetifqui orrespond à son eetif et

moyenne_agequiorrespondà samoyenned'âge. Lesvaleurspossiblesprisespar:

nomsontdesmots:elleestdondetypehaînedearatères;

effetifsontdes nombresentiers:elleestdondetypeentier;

moyenne_agesontdesnombresréels:elleestdondetypeottant.

Remarque 2 Lorsque le langage choisi estPython,

⊲ le type chaîne de caractères se nommestr(pour string);

⊲ le type entier se nommeint(pour integer);

⊲ le type flottant se nommefloat(pour floating-point);

D’autres types existent et seront vus cette année, le typebooléenet le typeliste.

• • •

A1

Ce qui suit est à saisir dans un « inter- préteur »Python. Compléter les pointillés

>>> type(3)

. . . .

>>> type(3.02)

. . . .

>>> type('bonjour')

. . . .

>>> type(6.0)

. . . .

II.2 Affectation

DéfiÆnition

Une variable est une référence à une « case mémoire » dans laquelle on peut mettre un objet (de différents types).

Créer une variable qui fait référence à un objet, c’estl’affectation.

• • •

Remarque 3 En langage naturel, on écrit par exemple « a reçoit la valeur 2 », de la façon suivante « a

←2 ».

Si l’on écrit en langage naturel « a←a+1 », vers quelle valeur la variableapointera-t-elle ? EXERCICE 1 Comment s’écrivent les deux instructions « a←2 » et « a←a+1 » enPython?

• • •

A2

Ce qui suit est à saisir dans un « inter- préteur »Python. Compléter les pointillés

>>> a=3

>>> a=2*a+1

>>> a

>>> . . . .

>>> a=5

>>> b=a+2.3

>>> type(b)

. . . .

(3)

II.3 Fonctions

DéfiÆnition

Pour des raisons de lisibilité ou pour éviter des répétitions dans un programme, il peut être utile de définir unefonctionc’est à dire un bloc d’instructions qui ne sera exécuté que s’il est appelé (éventuellement plusieurs fois).

Une fonction possède généralement des paramètreset retourne unevaleur de (mais ce n’est pas systématique, par exemple si elle réalise un affichage).

• • •

Exemple 2 L'indie de masse orporelle(IMC) d'une personne estdonnée par laformuleIM C = masse

taille2 la masse

estenkilogrammesetlatailleen mètres.

A3

La définition de la fonction en langage naturel se fait de la façon suivante :

fontion IMC(masse,taille)

IMCmasse/(taille*taille) return IMC

Écrire la définition de la fonction en

Python, puis dans l’interpréteur saisir

>>> IMC(70,1.65)

>>> . . . (compléter)

• • •

A4

Expérimenter plusieurs fois la fonction

mystereécrite ci-dessous enPython

def mystere():

return random.randint(1,6)

À quoi sert-elle ?

II.4 Instructions conditionnelles

DéfiÆnition

Dans un algorithme, on est parfois amené à exécuter une ou plusieurs instruc- tions uniquement si une certaine condition est vérifiée, c’est ce que l’on appelle desinstruction conditionnelles.

Si la condition n’est pas vérifiée, on peut soit exécuter un autre bloc d’instructions, soit ne rien faire.

Dans ces deux cas, on exécute ensuite la suite de l’algorithme.

• • •

A5

On veut simuler un jeu dans lequel on lance un dé et où l’on gagne uniquement si le résultat est 6. En langage naturel,

xentier aléatoire entre 1 et 6

Si x=6

Affiher "Gagné"

Sinon

Affiher "Perdu"

Fin Si

Affiher bientt"

Écrire le code ci-contre et en particulier l’instruction condi- tionnelle enPython

• • •

(4)

A6

Voici une variante enPythonde l’algorithme précédent

import random

x=random.randint(1,6)

if x==6:

print("Gagné")

print("À bientt")

En quoi cette version diffère-t-elle de la précédente ?

• • • Remarque 4 Un nouveau type :le type booléen.

A7

Ce qui suit est à saisir dans un « interpréteur »Python. Com- pléter les pointillés.

>>> x=6

>>> x==5

. . . .

>>> x==6

. . . .

La condition d’une instruction conditionnelle peut être de la forme « Sicondition1 ou condition2 » ou encore « Si condition1 et condition2 »

II.5 Boucles bornées

DéfiÆnition

Lorsqu’on veut exécuter un nombre déterminé de fois un même bloc d’instructions, on utilise uneboucle bornée, aussi appeléboucle Pour.

Ces boucles sont munies d’une variablecompteurque l’on peut utiliser dans les instructions.

• • •

Exemple 3 Il s'agitd'érireun algorithme qui aluleet aheles 25 premiers arréspuis, quand ela estfait, ahe

terminé.

A8

Voici la structure en langage naturel.

Pouri allant de 1 à . . . .

a ← . . . .

Affiher a

Affiher "terminé"

Écrire le code ci-contre et en particulier la boucle Pour en

Python

Remarque 5 La variableiest appelée lecompteur.

À chaque passage dans la boucle, il est augmenté de 1, on dit qu’il estincrémentéde 1.

A9

Voici en langage naturel un algorithme utilisant une boucle Pour.

S=0

Pour i allant de 1 à 10

SS+i

Affiher S

Compléter le tableau suivant en faisant tour- ner l’algorithme « à la main ».

S . i

Vers quelle valeur la variable S pointe-t-elle ? Écrire le code ci-contre et en particulier la boucle Pour enPython

(5)

II.6 Boucles non bornées

DéfiÆnition

Lorsqu’on veut répéter un même bloc d’instructions tant qu’une condition est vé- rifiée, on utilise uneboucle non bornée, aussi appeléboucle Tant que.

• • •

Exemple 4 Ils'agitd'érireunalgorithmequiahelapluspetitepuissanede2supérieurestritementà1000000.

A10

Voici la structure en langage naturel.

p1

Tant que p 6 1000000

p=p*2

Affiher p

À quoi sert la première affectation « p←1 » ? p

p61000000 .

Lorsque p = . . . on sort de la boucle Tant que et on exécute la suite de l’algorithme c’est à dire . . . .

Écrire le code ci-contre et en particulier la boucle Tant que enPython

• • •

A11

Voici en langage naturel un algorithme utilisant une boucle Tant que.

i5

Tant que i 6 10

S3i+5

ii+1

Fin Tant que

1. Quelles sont les valeurs prises parxpen- dant l’exécution de cet algorithme ? 2. Écrire le code ci-contre enPython

II.7 Un nouvel objet : la liste II.7.1 Définition

DéfiÆnition

Unelisteest une collection écrite entre crochets, d’éléments séparés par des vir- gules.

()éventuellement de types différents

• • • Exemple 5

A12

Ce qui suit est à saisir dans un « interpréteur »Python. Compléter les pointillés

>>> L=[1,5,'vaanes',True,3.14℄

>>> type(L)

. . . .

(6)

II.7.2 Les opérations de base sur les listes

Opérations

L=[]L variable de type liste qui pointe sur une liste vide ;

L[0]est le premier élément de la liste, l’élément de rang0 ;

len(L)est un entier qui donne le nombre d’éléments de la liste L ou encore la longueur de la liste ;

L[k]est le k+1eme élément de la liste, l’élément de rang k ;

L.index(élément)donne le premier rang auquel apparaît l’élément ;

L.append(élément)ajoute l’élément en fin de liste (la longueur de la liste est modifiée) ;

L.insert(k,élément)insère l’élément au rang k ;

max(L)donne le plus « grand » élément de la liste (lorsque cela a un sens).

• il en existe d’autres ...

• • •

A13

Ce qui suit est à saisir dans un « inter- préteur »Python. Compléter les pointillés

>>> L=[4,8,-7,100℄

>>> L[1℄

. . . .

>>> L.append(12)

>>> L

. . . .

>>> L.index(-7)

. . . .

>>> len(L)

. . . .

Érire l'instrution qui permet

d'insérer l'élément 45 au rang 3

. . . .

II.7.3 Générer une liste par ajouts successifs avec une boucle Pour

Méthode • Oninitialisela liste à vide ;

• On ajoute un élément à la fois avec la méthodeappendà chaque passage dans la boucle Pour.

• • •

Exemple 6 Onsouhaiteonstruire unelisteLpquiontientles20premiersnombrespairs.

A14

Compléter le codePythonsuivant pour y parvenir.

Lp=. . . .

for x in range(. . . .):

Lp.append(. . . .)

print(. . . .)

II.7.4 Construction d’une liste par compréhension

Ensembles d’objets mathématiques définis par compréhension.

Voici un ensemble notéAque l’on décrit de la manière suivante

A={2i+ 1|i∈N}

qui se lit « ensemble des nombres de la forme2i+ 1tels queiappartiennent àN. » 1. Écrire quelques éléments de l’ensembleA.

2. On considère l’ensembleB ={0; 7; 14; 21; 28; 35;. . .}. (a) Que sous-entendent les points de suspension ? (b) Exprimer l’ensembleB en compréhension.

3. On noteC ={k−1|k∈A}oùAest l’ensemble défini au-dessus. DécrireC.

(7)

• • •

Remarque 6 B = {0; 7; 14; 21; 28; 35;. . .} est dit défini par extension. Les éléments de l’en- semble sont explicitement donnés (ou on peut les deviner s’il y en a un nombre infini).

Listes définies en compréhension.

1. Effectuer la saisie suivante dans un interpréteur Python.

A15

>>> [3*i for i in range(101)℄

. . . .

2. En observant la liste affichée, décrire ses éléments dans le langage mathématique.

3. Donner l’ensemble des éléments de la liste enextensionet encompréhension.

4. A16

On définit l’ensemble T de la façon suivante :

T = nn(n+1)

2 [n∈No

. Écrire ue instruction permettant de construire la liste des20 premiers éléments deT.

>>> . . . . . . . .

5. A17

On définit deux listes en compréhension. Expli- quer la différence entre les deux listes obtenues.

>>> L1=[i**2 for i in range(1,51)℄

>>> L1

. . . .

>>> L2=[i**2 for i in range(1,51) if i**2<10**3℄

>>> L2

. . . .

II.8 Itérer sur des éléments d’une liste

A18

Écrire et exécuter le programme suivant.

A=[1,11,21,31,41℄

for element in A:

print(element-1)

Expliquer les différentes étapes de son exécution. On pourra commencer par tra- duire en françaisfor element in A.

• • •

A19

Faire tourner « à la main » le programme suivant

L1=[0,1,2,3,4,5℄

L2=[

for i in L1:

L2.append(i*i)

print(L2)

Le saisir dans une consolePython.

• • •

EXERCICE 2 On considère la fonction f définie surR par f(x) = 3x2 + 3x−6. On note Lx la liste

[-2.5,-2,-1,-0.5,0,1,3℄.

(8)

A20

Construire de deux manières la liste Ly des images par la fonctionf des éléments de listeLx.

en ompréhension

. . . . . . . . . . . . . . . . . . . .

par ajouts suessifs

. . . . . . . . . . . . . . . . . . . .

Faire afficher la plus grande valeur deLy.

• • •

Références

Documents relatifs

(Nous ne pouvons pas référencer directement une variable ordinaire dans la définition d'un widget Tkinter, parce que Tkinter lui-même est écrit dans un langage qui n'utilise pas

Si l’on veut définir une fonction réutilisable dans différents programmes, on peut aussi l’enregistrer dans un fichier et l’importer ensuite dans chaque programme

– d`es qu’une constante num´erique comporte un point, qui joue le rˆole de virgule d´ecimale, Python comprend qu’il s’agit d’un nombre d´ecimal, on dit plutˆ ot flottant, et

Dans ce cours, nous avons pris le parti d'aborder très tôt la programmation d'une interface graphique, avant même d'avoir présenté l'ensemble des structures

Revue Française d’Economie et de Gestion www.revuefreg.com Page 76 Précis théorique et épistémologique en supply chain management : Analyse.. de la crise

Une fonction nommée SommeL(liste) qui calcule et renvoie la somme des éléments de la liste mise en paramètre de

Ce faisant, on crée l’objet 1 dans l’espace des objets, la variable note dans l’espace des variables aussi appelé espace de nommage.. Et on fait le lien entre

Écrire une procédure demandant les coefficients a , b et c d’un polynôme du second degré et donnant en retour le nombre de racine du polynôme et les racine quand il y en a..