59
Structures de base [bs] Support de Cours Karine Zampieri, St´ ephane Rivi` ere Unisciel algoprog Version 24 mars 2017 Table des mati` eres 1 Le langage 4 1.1 Le langage ................................... 4 1.2 Les mots-cl´ es ................................. 5 1.3 Les identifiants ................................ 6 1.4 R` egles d’´ ecriture d’un identifiant ...................... 7 1.5 eparateurs et espaces blancs ........................ 8 1.6 Les primitives ................................. 9 1.7 ´ Evaluations : Le langage ........................... 10 1.8 Questions : R` egles d’´ ecriture ......................... 11 2 Variables, types et valeurs 12 2.1 Variable, type et valeur ............................ 12 2.2 Types int´ egr´ es ................................. 13 2.3 Litt´ eraux ................................... 14 2.4 Exemples : Variables, types et valeurs .................... 15 2.5 ´ Evaluations : Variables, types et valeurs .................. 16 2.6 Questions : Variables, types et valeurs .................... 16 3 eclarations 17 3.1 eclaration de variables ........................... 17 3.2 efinition de constante ............................ 18 3.3 Exemples : D´ eclarations ........................... 19 3.4 ´ Evaluations : D´ eclarations .......................... 20 3.5 Questions : D´ eclarations ........................... 21 4 Structure g´ en´ erale 22 4.1 Commentaire ................................. 22 4.2 Instruction compos´ ee ............................. 23 4.3 Structure g´ en´ erale ............................... 24 4.4 Exemple : Le plus petit algorithme ..................... 25 5 Interactions avec l’ext´ erieur 26 1

Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Structures de base [bs]Support de Cours

Karine Zampieri, Stephane Riviere

Unisciel algoprog Version 24 mars 2017

Table des matieres

1 Le langage 41.1 Le langage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.2 Les mots-cles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.3 Les identifiants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.4 Regles d’ecriture d’un identifiant . . . . . . . . . . . . . . . . . . . . . . 71.5 Separateurs et espaces blancs . . . . . . . . . . . . . . . . . . . . . . . . 81.6 Les primitives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91.7 Evaluations : Le langage . . . . . . . . . . . . . . . . . . . . . . . . . . . 101.8 Questions : Regles d’ecriture . . . . . . . . . . . . . . . . . . . . . . . . . 11

2 Variables, types et valeurs 122.1 Variable, type et valeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.2 Types integres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.3 Litteraux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.4 Exemples : Variables, types et valeurs . . . . . . . . . . . . . . . . . . . . 152.5 Evaluations : Variables, types et valeurs . . . . . . . . . . . . . . . . . . 162.6 Questions : Variables, types et valeurs . . . . . . . . . . . . . . . . . . . . 16

3 Declarations 173.1 Declaration de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . 173.2 Definition de constante . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.3 Exemples : Declarations . . . . . . . . . . . . . . . . . . . . . . . . . . . 193.4 Evaluations : Declarations . . . . . . . . . . . . . . . . . . . . . . . . . . 203.5 Questions : Declarations . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

4 Structure generale 224.1 Commentaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224.2 Instruction composee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234.3 Structure generale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244.4 Exemple : Le plus petit algorithme . . . . . . . . . . . . . . . . . . . . . 25

5 Interactions avec l’exterieur 26

1

Page 2: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 2

5.1 Interactions avec l’exterieur . . . . . . . . . . . . . . . . . . . . . . . . . 265.2 Saisie de donnees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275.3 Affichage de resultats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285.4 Exemples : Communication des donnees/resultats . . . . . . . . . . . . . 295.5 Evaluations : Interactions avec l’exterieur . . . . . . . . . . . . . . . . . . 305.6 Questions : Interactions avec l’exterieur . . . . . . . . . . . . . . . . . . . 31

6 Expressions algebriques 326.1 Qu’est-ce qu’une expression ? . . . . . . . . . . . . . . . . . . . . . . . . 326.2 Operateurs arithmetiques . . . . . . . . . . . . . . . . . . . . . . . . . . . 336.3 Evaluation des expressions arithmetiques . . . . . . . . . . . . . . . . . . 346.4 Exemples : Operateurs arithmetiques . . . . . . . . . . . . . . . . . . . . 356.5 Coherence de type numerique . . . . . . . . . . . . . . . . . . . . . . . . 366.6 Fonctions mathematiques . . . . . . . . . . . . . . . . . . . . . . . . . . . 376.7 Evaluations : Expressions algebriques . . . . . . . . . . . . . . . . . . . . 386.8 Questions : Expressions arithmetiques . . . . . . . . . . . . . . . . . . . . 40

7 Affectation interne 427.1 Affectation interne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427.2 Exemples : Affectation interne . . . . . . . . . . . . . . . . . . . . . . . . 437.3 Exemple : Affectations et conversions . . . . . . . . . . . . . . . . . . . . 447.4 Evaluations : Affectation interne . . . . . . . . . . . . . . . . . . . . . . . 457.5 Questions : Affectation interne . . . . . . . . . . . . . . . . . . . . . . . . 47

8 Complements 488.1 Variables et constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488.2 Affectation : Complements . . . . . . . . . . . . . . . . . . . . . . . . . . 508.3 Exemples : Complements sur l’affectation . . . . . . . . . . . . . . . . . . 518.4 Transtypage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528.5 Questions : Complements . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

9 Specificites Python 559.1 Fonctions numeriques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559.2 Questions : Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

Page 3: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 3

Python - Structures de base

Mots-Cles Structures de base, Atomes du langage, Declarations, Structure d’un algo-rithme, Interactions avec l’exterieur, Expressions algebriques, Affectation interne �Optionnel L’Algorithmique �Difficulte • ◦ ◦ (3 h) �

IntroductionCe module traite des structures de base : atomes du langage, variables, types et va-leurs, declarations, structure d’un script, communication des donnees/resultats, expres-sions algebriques, affectation interne. Le Complements donne quelques precisions sur lesvariables, l’affectation et le transtypage.

Page 4: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 4

1 Le langage

1.1 Le langage

Regles, Alphabet du langage, Elements lexicauxTout langage possede :

• Des regles de presentation (aspect lexical).

• Des regles d’ecriture (une syntaxe).

• Des regles d’interpretation (une semantique).

L’alphabet du langage permet de construire les mots et les expressions. Comme toutephrase d’un langage courant, il est compose de mots appeles lexemes ou elementslexicaux (tokens).

Le langage PythonLangage de scripts oriente objet.

Alphabet du langageC’est celui de la langue anglaise (majuscules et minuscules), les chiffres 0-9, quelques sym-boles speciaux (ceux des mathematiques par exemple) et quelques symboles de ponctua-tion. Le codage etant en UTF8, les lettres accentuees sont autorisees dans les lexemes.

La casseLe langage est case-sensitif (sensible a la casse) 1. Ceci signifie que cout, Cout et COUTreferent trois mots differents. Les accentues sont autorises en Python 3 (mais pas enPython 2). Ainsi coût est licite.

1. Il fait la distinction entre minuscules/majuscules.

Page 5: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 5

1.2 Les mots-cles

Mots-cles (keywords)Dits aussi mots reserves, ils constituent le vocabulaire du langage. Ils forment l’ossatured’un script en definissant la structure de ses donnees ou de ses instructions.

ProprieteLes mots-cles ont une signification inchangeable et predefinie, c.-a-d. qu’ils nepeuvent pas etre redefinis.

Liste des mots-cles(1) Mots-cles (2) Instances

(1) and as assert break class continue def del elif else except finally for from globalif import in is lambda nonlocal not or pass raise return try while with yield

(2) None False True

Environnements IDELes mots-cles y sont en gras (ou en couleurs).

Page 6: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 6

1.3 Les identifiants

IdentifiantDit aussi identificateur, c’est un nom choisi par le concepteur pour designer les en-tites : variable, fonction, type, etc. Cette definition reste valable dans son domaine devalidite, a condition qu’elle ne soit pas recouverte par une autre definition. Il ne doitpas correspondre a un mot-cle.

IdentifiantSequence de lettres (A...Z, a...z), de chiffres (0...9), de lettres accentuees ou du caracteresouligne (_, underscore en terme anglo-saxon). Il doit commencer par une lettre ou unsouligne.

Le souligne est significatifAinsi a, a_ et _a sont des identifiants differents.

Page 7: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 7

1.4 Regles d’ecriture d’un identifiant

Le but est de trouver un nom qui soit suffisamment court tout en restant explicite(parlant) et qui ne prete pas a confusion. Voici quelques regles et limitations tradi-tionnelles. (Il est impossible de decrire ici toutes les particularites des differents langages.Reportez-vous aux regles specifiques de votre langage.)

IdentifiantSuite de caracteres alphanumeriques d’un seul tenant (pas de caracteres blancs) et necommencant jamais par un chiffre. Ainsi x1 est correct mais non 1x.

Ecriture d’un nom composeOn distingue principalement deux notations :

Notation « tiret bas » : Elle utilise le souligne entre les mots (par ex. note_math) etnon pas le signe moins « - » qui est reserve a la soustraction dans la plupart deslangages. Ainsi note-math serait interprete comme la soustraction des elementsnote et math.

Notation « chameau » (camelCase) : Elle consiste a mettre une majuscule au de-but des mots, generalement a partir du deuxieme (par ex. noteMath ou valeurMaxOuMin).

Indices et Exposants

Ils sont proscrits (par ex. x1, z6. On les notera x1, z6).

Mots-clesCeux des langages de programmation sont interdits (par ex. for, if, return, while...pour C/C++, Java, Python) et on deconseille d’utiliser les mots-cles du pseudo-code(tels que saisir, afficher, pour...).

Caracteres exclusLa plupart des langages n’autorisent pas les caracteres accentues (tels que à,ç,ê,ï, etc.),ni les caracteres speciaux (tels que &,',#, etc.), ni les lettres des alphabets non latins (telque ∆). Enfin certains font la distinction entre les minuscules et majuscules, d’autres non.En algorithmique, nous admettons les caracteres accentues du francais (par ex. durée,intérêts, etc.).

Cas du souligneLes identifiants commencant par le soulignement (_) sont a eviter car ils sont soitreserves pour les differentes implementations du langage (en C/C++) ou parce qu’ilsont une signification pour le langage (en Python).

Cas d’une unique lettre

Evitez la lettre I ou i et la lettre l qui se confondent avec le chiffre 1, ainsi que la lettreO ou o qui se confond avec le chiffre 0.

Page 8: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 8

1.5 Separateurs et espaces blancs

Espace blancSuite de un ou plusieurs caracteres choisis parmi : espace, tabulation horizontale, tabu-lation verticale, changement de ligne ou changement de page.

SeparateursComprend les operateurs (+, -, *, /...) et les caracteres de « ponctuation ».

Quelques separateurs

Symbole Role: deux-points debut de bloc() parentheses encadrent des expressions[] crochets symboles du composant liste. point acces a un composant structuree, virgule separe les elements d’une liste; point-virgule separe les instructions' ' quotes encadrent les chaınes de caracteres" " guillemets encadrent les chaınes de caracteres

Page 9: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 9

1.6 Les primitives

BibliothequeEnsemble de fonctionnalites ajoutees a un langage de programmation.Chaque bibliotheque decrit un theme.

Pour les utiliser

import nomBiblio # importe tous les élémentsfrom nomBiblio import desTrucsUtiles # importe uniquement ceux spécifiés

PrimitivesNoms de fonctions (log, exp, sin...), d’operateurs (div, mod...) ou de traitement (afficher,saisir...). Elles acceptent un ou plusieurs parametres et jouent le meme role syntaxiquequ’un identifiant.

Appel d’une primitive

P(x,...) # procédurer = F(x,...) # fonction

ExplicationAppelle (on dit aussi invoque) la procedure P ou la fonction F avec les parametreseffectifs x... Dans le cas de fonction, la valeur retournee peut etre utilisee en tant quemacro-expression.

Page 10: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 10

1.7 Evaluations : Le langage

Mots-cles et identifiantsDeplacez chacun des elements (a gauche) dans sa categorie (a droite).

Etiquette Cible

_1surface Identifiants validestaux_creditEurosVersFrancs Identifiants non valides4emeno-commande Mots-clestaux changeglobalelif

Identifiants bien formesCochez les identifiants qui sont bien formes.

A) � imprimante en ligne

B) � zzz

C) � 1ere_variable

D) � imprimante-ligne

E) � is

Identifiants mal formesCochez les identifiants qui ne sont pas bien formes.

A) � _201

B) � Français

C) � 40Voleurs

D) � Cout Achat

E) � Temper@ture

F) � Is

Page 11: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 11

1.8 Questions : Regles d’ecriture

Regles d’ecritureParmi les identifiants suivants, quels sont ceux dont le nom n’est pas valide et pour-quoi ? Compte1, pourquoi#pas, 101espace, @adresse, VALEUR_temporaire, _201, public,val$solde, Long

Choix d’un nom (1)Quel nom choisir pour la longueur d’un rectangle ?

Page 12: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 12

2 Variables, types et valeurs

2.1 Variable, type et valeur

VariableElement informatique qu’un script peut manipuler.Decrite par :

• Un identifiant unique qui la designe.

• Un type qui definit de quel « genre » est l’information associee.

• Une valeur qui doit respecter le type.

Type d’une donneeAppele aussi domaine de definition, il specifie la taille en memoire occupee par la don-nee, quels traitements (operations) elle peut (et ne peut pas) subir ainsi que l’intervallede valeurs (minimale et maximale) qu’elle peut prendre.

Utilite du type des donneesIl est :

• Utile au concepteur d’algorithmes pour lui permettre de structurer ses idees.

• Tres utile au programmeur car il permet de detecter des erreurs potentielles.

• Indispensable au compilateur car les differents types ne sont pas tous represen-tes de la meme facon. La representation d’un meme type peut meme varier d’unprocesseur a l’autre.

Page 13: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 13

2.2 Types integres

Types integres (builtins)Dits aussi types de base, types fondamentaux ou encore types primitifs, ils cor-respondent aux donnees qui peuvent etre traitees directement par le langage.

Types integres

Domaine Algorithmique Equivalent PythonZ Entier intR Réel floatB Booléen boolA Caractère —T Chaîne str

Python : Le type CaractereIl n’existe pas : un caractere est simplement une chaıne de longueur 1.

Page 14: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 14

2.3 Litteraux

LitteralValeur explicite au sein d’un script.Il possede un type determine par sa valeur (entier, reel, caractere...).

Notation scientifique d’un reelExpression « m e p » qui signifie m · 10p (ou m est une suite de chiffres decimaux et p unentier). Ainsi, 12.4e− 5 ≡ 12.4 · 10−5 ≡ 0.000124. Elle permet d’exprimer de tres petitsnombres (ex : 2.5e-201) et de tres grands nombres (ex : 5e156).

Point decimalUn reel se distingue d’un entier par l’ajout d’un point (.) a la fin.Pour la lisibilite, preferez .0 (ex. 5.0 (reel) mais 5 (entier)).

Litteraux

Litteral entier : Suite de chiffres eventuellement prefixe par un signe (+ ou −).

Litteral reel : S’ecrit en notation decimale ou en notation scientifique.

Litteraux booleens : Ils identifient le Vrai (mot-cle True) et le Faux (mot-cle False).

Litteral chaıne : Se place entre quotes (') ou entre guillemets (").

Page 15: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 15

2.4 Exemples : Variables, types et valeurs

Exemples de typesPour representer ou decrire :

• Longueur, largeur et surface d’un rectangle : on prendra un reel.

• Nom d’une personne : une chaıne.

• Age d’une personne : un entier.

• Si un etudiant est redoublant ou pas : un booleen.

• Un mois : on preferera un entier donnant le numero du mois (par ex : 3 pour lemois de mars) plutot qu’une chaıne (par ex : "mars") car les manipulations et lescalculs seront plus simples.

Exemples de litteraux(Avec leur equivalent mathematique)

Type Equivalent Mathematique LitterauxEntier Z (entiers) 3,-5,-100,122,0Réel R (reels) 3.1425,-1.12e-10,0.0Booléen B (booleens) False,TrueCaractère A (alphanumeriques) 'a','1','A','&','#'Chaîne T (textes) "c'est du texte","a", ""

Page 16: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 16

2.5 Evaluations : Variables, types et valeurs

Litteraux entiersCochez les litteraux entiers qui sont valides (car bien formes).

A) � 12’245

B) � 36.0

C) � 0h5280

D) � 12245

Litteraux reelsCochez les litteraux reels qui sont valides (car bien formes).

A) � 1,000.0

B) � 2.1968E+10.2

C) � 3E 10

D) � 19.6%

E) � 122.1968e-5

2.6 Questions : Variables, types et valeurs

Choix d’un typeQuel type choisir pour la date de naissance d’une personne ?

Page 17: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 17

3 Declarations

3.1 Declaration de variables

Declaration de variablesConsiste a associer un type de donnees a une ou un groupe de variables. Toute variabledoit imperativement avoir ete declaree avant de pouvoir figurer dans une instructionexecutable.

Declaration de variables

nomVar = expressionnomVar1, nomVar2, ... = expr1, expr2, ...

ExplicationDeclare des variables d’identifiants nomVarI (le nom) de type TypeVar. Le type TypeVarest defini implicitement (typage dynamique) par la valeur de l’expression. La fonctionintegree type(nomVar) permet de connaıtre son type.

Page 18: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 18

3.2 Definition de constante

ConstanteLitteral a lequel est associe un identifiant (par convention, ecrit en MAJUSCULES)afin de rendre plus lisible et simplifier la maintenance d’un script. C’est donc une infor-mation pour laquelle nom, type et valeur sont figes.

Definition de constante

nomConst = expression

Les constantes n’existent pas en Python : nous utiliserons donc des variables globales.

ExplicationDefinit la constante d’identifiant nomConst de type TypeConst et lui affecte une valeur(litteral ou expression) specifiee. Le type TypeConst est defini implicitement par la valeurde l’expression.

Page 19: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 19

3.3 Exemples : Declarations

Exemple : Declarations de variables

j, k, n = 0, 0, 0racine1, racine2 = 0.0, 0.0flag = Truec = ’o’texte = "..."

Ici j,k,n sont declarees comme variables entieres, racine1,racine2 comme variablesreelles, flag comme variable booleenne, c comme variable caractere et texte commevariable chaıne de caracteres. On aurait aussi bien pu ecrire ces declarations de la faconsuivante :

j = 0k = 0n = 0racine1 = 0.0...

Cette forme peut s’averer pratique, notamment si l’on veut commenter les declarationsutilisees, variable par variable.

Exemple : Initialisations de variables

j = 12trouve = Falsesomme = 0.0etoile = ’*’

j est une variable entiere initialisee a 12, trouve une variable booleenne initialisee aFalse, somme une variable reelle initialisee a zero et etoile une variable caractere ini-tialisee a '*'.

Exemple : Declarations de constantes

PI = 3.14159MESSAGE = "Appuyez sur une touche pour continuer"

PI designe une constante reelle (approximation de π) et MESSAGE une constante chaınede caracteres du texte entre les guillemets.

Page 20: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 20

3.4 Evaluations : Declarations

Declaration de variablesReordonnez les elements afin de declarer dans cet ordre :

• x de type Entier

• y et z de type Réel

• b de type Booléen

• c de type Caractère

Mot bMot cMot xMot y,zMot =2.0,1.9Mot =3Mot ='c'Mot =True

Declaration de constante (1)Quelle ligne definit la constante GTERRE de type reel de valeur 9.81.

A) � const GTERRE = 9.81

B) � GTERRE = 9.81;

C) � const GTERRE : double = 9.81;

Declaration de constante (2)

Quelle(s) ligne(s) defini(en)t la constante MILLE de type caractere de valeur la lettre M ?Supposez qu’il n’existe pas de variable ni constante nommee M.

A) � MILLE = 'M';

B) � MILLE = "M";

C) � MILLE = M;

Page 21: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 21

3.5 Questions : Declarations

Declaration de variablesDeclarez les variables :

• prenom de type Chaîne

• age de type Entier

• j et k de type Entier, x de type Réel et c1 de type Caractère sur une meme ligne

• fini de type Booléen

Declaration de constantesDeclarez les constantes :

• ECHARGE de valeur 1.602× 10−19 (valeur approchee de la charge de l’electron)

• NMaxKits de valeur 20

• ALLUME de valeur Vrai

• OUI de valeur 'o'

• MESSAGE de valeur "Erreur, réessayez à nouveau"

Page 22: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 22

4 Structure generale

4.1 Commentaire

Commentaire (narratif)Texte qui n’est ni lu, ni execute par la machine. Il est essentiel pour rendre plus lisibleet surtout plus comprehensible un script par un etre humain.

Commentaire oriente ligne

... # rend le reste de la ligne non-exécutable

Commentaire oriente bloc

"""rend le code entouré non exécutable..."""

Page 23: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 23

4.2 Instruction composee

InstructionOrdre donne a l’ordinateur qui a pour effet de changer l’etat de la memoire oule deroulement du programme ou bien de communiquer avec les unites peripheriques(clavier, ecran, imprimante, etc.).

Instruction composee ou BlocRegroupement syntaxique de 0, 1 ou plusieurs instructions (et declarations) comme uneunique instruction.

SequentialiteLes algorithmes et programmes presentes sont exclusivement sequentiels : l’instruction2ne sera traite qu’une fois l’execution de l’instruction1 achevee.

Bloc

Bloc: #<- deux pointsinstruction1 #indentationinstruction2 #même indentation...

Conventions usuellesSavoir presenter un script, c’est montrer que l’on a compris son execution.

• Chaque ligne comporte une seule instruction.

• Un bloc est defini par des lignes de meme indentation (espaces ou tabulations).

Python : L’indentationC’est une erreur de syntaxe d’indenter deux instructions d’une valeur differente dans unmeme corps de bloc. De meme, ne melangez pas les tabulations et les espaces car celadonne lieu a des erreurs de compilation qui peuvent paraıtre incomprehensibles.

Python : InstructionUne instruction se termine a la fin d’une ligne mais elle peut se poursuivre sur plusieurslignes si ces dernieres se terminent par un antislash (\), si une paire de (), [], {} ou unechaıne encadree de guillemets triples n’est pas refermee. Plusieurs instructions simplespeuvent apparaıtre sur une meme ligne si elles sont separees par un point-virgule (;).

Page 24: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 24

4.3 Structure generale

Structure generale

from biblio import des_trucs_utilesdéclaration_des_objets_globauxdéclarations_et_définitions_de_fonctions_utiles

if __name__ == "__main__":corps_du_programme

ExplicationUn script est constitue par :

• Un en-tete qui demande d’inclure les modules indiques.

• Un corps lequel contient, eventuellement, la fonction particuliere main() (« prin-cipale »).

Le script commence son execution sur le bloc de la fonction main qui debute apres lesdeux-points, se deroule sequentiellement et se termine sur la fin de l’indentation.

ConseilOn veillera a ce qu’un script tienne sur une vingtaine de lignes (donc, en pratique, surun ecran de 40 x 80 caracteres ou une page). Ceci implique que, si votre script devaitetre plus long, il faudra le decouper, comme nous le verrons plus loin.

Page 25: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 25

4.4 Exemple : Le plus petit algorithme

Le plus petit script

if __name__ == "__main__":pass

Ou plus simplement :

pass

ExplicationC’est le plus petit script qui ne fait rien.

Page 26: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 26

5 Interactions avec l’exterieur

5.1 Interactions avec l’exterieur

Entrees/sorties clavier/ecranCe sont les interactions avec l’exterieur les plus simples et « naturelles ». Afficher del’information ou des resultats a destination de l’utilisateur est capital pour la convivialitedes programmes. Quant a la saisie, elle permet a l’utilisateur d’entrer les donnees quiseront stockees dans des variables en vue d’un traitement.

TerminologieLa saisie consiste a affecter une valeur externe a une variable : on parle aussi d’affectationexterne.

Page 27: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 27

5.2 Saisie de donnees

Saisie de donnees

nomVarI = input(["Invite"]) # lecture d’une chaînenomVarI = int(input(["Invite"])) # entrée typée d’un entiernomVarI = float(input(["Invite"])) # entrée typée d’un réelnomVarI = bool(input(["Invite"])) # entrée typée d’un booléennomVar1, ..., nomVarN = eval(input(["Invite"])) # typage dynamique

ExplicationOrdonne a la machine de lire des valeurs valI depuis le clavier et de les stocker dans lesvariables nomVarI (qui doivent exister c.-a-d. declarees). Par defaut, ce qui est tape auclavier est envoye a l’ecran et temporairement place dans un tampon pour permettre lacorrection d’erreurs de frappe. On peut donc se servir des touches [←] et [Suppr] poureffacer un caractere errone et des fleches [<] et [>] pour se deplacer dans le texte.

Page 28: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 28

5.3 Affichage de resultats

Affichage de resultats

print(expr1,...,exprN,end="") # SANS retour de ligneprint(expr1,expr2,...,exprN) # AVEC retour de ligne

ExplicationOrdonne a la machine d’afficher les valeurs des expressions exprI. Par defaut, elles sontseparees par un espace et se terminera par un saut a la ligne. Le parametre sep permetde preciser le separateur.

Python : printAvec Python 3x, print devient une fonction : il faut donc mettre des parenthesesautour de ce que l’on souhaite afficher contrairement a Python 2x.

Variables devant etre initialiseesOn ne peut afficher que des expressions dont les variables qui la composent ont eteaffectees prealablement.

Page 29: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 29

5.4 Exemples : Communication des donnees/resultats

Exemple : Afficher un mot

print("Bonjour")

ExplicationCe programme affiche le mot « Bonjour ».

Exemple : Saisir un nombre

x = float(input("Tapez un nombre reel au clavier? "))print("==> Vous avez tape ",x,", felicitations",sep="")

ExplicationCe programme permet a l’utilisateur de saisir un reel par float(input()) et de le me-moriser dans la variable x puis de le re-afficher par print.

Page 30: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 30

5.5 Evaluations : Interactions avec l’exterieur

Reordonner un algorithmeReordonnez les instructions afin de realiser la saisie puis l’affichage de trois entiers.Faites les declarations au debut de votre script.

Mot a=int(input())Mot b=int(input())Mot c=int(input())Mot print("a=",a," b=",b," c=",c,sep="")Mot print("Trois entiers? ")

Page 31: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 31

5.6 Questions : Interactions avec l’exterieur

Affichage de resultats (1)

Ecrivez un script utilisant des variables de type chaıne de caracteres qui affiche quatrephrases differentes obtenues a partir de :

belle Marquise vos beaux yeux me font mourir d’amour

Affichage de resultats (2)

Reecrivez votre script de sorte a afficher les delimiteurs (") de chacune des chaınes.

Page 32: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 32

6 Expressions algebriques

6.1 Qu’est-ce qu’une expression ?

Expression, operandes, operateurs

Eventuellement accompagnes de parentheses, une expression est une sequence « bienformee » (au sens de la syntaxe) d’operandes (valeurs litterales, variables ou expres-sions) et d’operateurs destinee a l’evaluation.

Exemples

• Dans l’expression 1+2, les valeurs 1 et 2 sont des operandes et + est un operateur.

• Dans (a+b)*c, l’operande de gauche de l’operateur * est (a+b).

• (2*(13-j)/(1+4)) est une expression numerique BF (bien formee).

• (3+(5*(-2) est non BF (parenthesage incorrect).

• 3 (5) * )-2( est non BF (operateur et parenthesage incorrect).

Pluralite d’un operateurUn operateur :

• unaire (ou monadique) porte sur un operande (ex : le - dans l’expression -a).

• binaire (ou dyadique) sur deux operandes (le plus frequent).

• ternaire (ou triadique) sur trois operandes.

Un operateur a n operandes est dit n-aire.

Page 33: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 33

6.2 Operateurs arithmetiques

Operateurs arithmetiquesDits aussi operateurs algebriques, ils agissent sur des operandes de type numerique.

Operateurs arithmetiques

Operateur EquivalentMathematique Signification Python+ (unaire) valeur +a- (unaire) oppose -a+ addition a + b- soustraction a - b* multiplication a * b/ division decimale a / bdiv division entiere a // bmod modulo (reste de la division entiere) a % b^ elevation a la puissance a ** b

Python : Division euclidienneSous Python 2, la division / appliquee a des entiers retourne le resultat de la divisionentiere. Sous Python 3, l’operateur / donne toujours le resultat de la division reelle etl’operateur // donne le resultat de la division entiere.

Division euclidienne, cas des negatifsIl n’y a pas unicite du quotient et du reste lorsque le dividende ou le diviseur sontnegatifs. Si a et b sont deux entiers relatifs dont l’un au moins est negatif, il y a plusieurscouples (q, r) tels que a = b× q+ r avec |r| < |b|. Par exemple, si a = −17 et b = 5 alors(q = −3, r = −2) ou (q = −4, r = 3) sont deux solutions possibles. Habituellement, q etr sont choisis comme le quotient et le reste de la division entiere de |a| et |b| affectes dusigne approprie (celui permettant de verifier a = b× q+ r avec |r| < |b|). Dans l’exempleci-avant, la solution retenue serait (q = −3, r = −2). Par contre, la norme impose que lavaleur de (a div b) ∗ b+ a mod b soit egale a la valeur de a.

Division par zeroTout emploi de la division devra etre accompagne d’une reflexion sur la valeur du deno-minateur, une division par 0 entraınant toujours l’arret d’un script.

Page 34: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 34

6.3 Evaluation des expressions arithmetiques

Evaluation d’une expressionElle conduit a la valeur litterale correspondant au resultat de l’expression lequels’appuie sur un systeme de priorites relatives entre les operateurs et des regles d’associa-tivite. La priorite (ou preseance) fait reference a l’ordre d’application des operateurset l’associativite peut etre exprimee de droite a gauche ou de gauche a droite. Lesparentheses permettent de modifier ou de souligner la priorite.

Ordre de priorite des operateurs arithmetiquesComme en mathematique :

1. Les operateurs unaires (+, -) (priorite la plus elevee)

2. L’operateur d’exponentiation (^) (s’il existe)

3. Les operateurs multiplicatifs (*, /, div, mod)

4. Les operateurs additifs (+, -) (priorite la plus basse)

La regle d’associativite s’applique en cas d’ambiguıte entre operateurs du meme ordrede priorite.

Operateur modPreferez de parentheser vos expressions (ne serait-ce que pour la lisibilite !).Pour des entiers :

• a ∗ b mod c ≡ (a ∗ b) mod c

• a mod b ∗ c ≡ (a mod b) ∗ c• a+ b ∗ c mod d ≡ a+ ((b ∗ c) mod d)

Exemple : Ecrivez (a ∗ b) mod c plutot que a ∗ b mod c.

ExponentiationsDeux exponentiations successives sont evaluees en commencant par celle de droite.Ainsi a^b^c signifie abc

mais a/b/c represente ab·c .

Page 35: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 35

6.4 Exemples : Operateurs arithmetiques

Exemple : Cas de deux entiersSoient a et b deux variables entieres valant respectivement 10 et 3. Le tableau illustreles operations arithmetiques qui peuvent leur etre appliques :

Operation Expression Valeuraddition a + b 13

soustraction a - b 7multiplication a * b 30

division entiere a // b 3modulo a % b 1

Exemple : Cas de deux reelsSoient a et b deux variables reelles valant respectivement 12.5 et 2.0. Le tableau illustreles operations arithmetiques qui peuvent leur etre appliques :

Operation Expression Valeuraddition a + b 14.5

soustraction a - b 10.5multiplication a * b 25.0

division a / b 6.25

Exemple : Priorite entre operateurs arithmetiques

Page 36: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 36

6.5 Coherence de type numerique

Regle de promotionPour qu’une operation numerique binaire (+, -, *, /) puisse s’effectuer, il faut que sesdeux operandes soient du meme type ou d’un type compatible. Lorsque ce n’est pasle cas, prealablement a l’operation, il y a promotion de l’operande de type le plus faiblevers le plus grand.

ExempleSi le reel r vaut 1.0 et l’entier j vaut 2, l’expression r/j se calcule ainsi :

1. Conversion de l’entier 2 en reel 2.0

2. Evaluation du calcul de 1.0/2.0 qui donne le reel 0.5

Page 37: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 37

6.6 Fonctions mathematiques

Fonctions mathematiquesElles agissent sur des parametres a valeurs reelles et donnent un resultat reel.

Pour les utiliser

import math

Quelques Fonctions mathematiques

Fonctions EquivalentMathematiques Signification Pythonpi valeur du nombre π math.piacos(x) Angle (exprime en radians) dont le cosinus est egal a x math.acos(x)asin(x) Angle (exprime en radians) dont le sinus est egal a x math.asin(x)atan(x) Angle (exprime en radians) compris entre −π/2 et π/2

dont la tangente est egale a x math.atn(x)dxe Reel de l’entier superieur math.ceil(x)cos(x) Cosinus de x (exprime en radians) math.cos(x)ex Exponentielle de x (base e) math.exp(x)|x| Valeur Absolue de x math.fabs(x)bxc Reel de l’entier inferieur a x math.floor(x)log(x) Logarithme naturel (base e) math.log(x)xy Puissance math.pow(x,y)sin(x) Sinus de x (exprime en radians) math.sin(x)√x Racine carree du nombre positif x math.sqrt(x)

tan(x) Tangente de x (exprime en radians) math.tan(x)

Racine carreeAttention de ne l’utiliser qu’avec un radicant positif.

Page 38: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 38

6.7 Evaluations : Expressions algebriques

Math : Evaluation d’expressions algebriquesIndiquez la priorite (1=la plus haute, 3=la plus basse) puis evaluez les expressions.

TextePriorites :

• [ ] parentheses

• [ ] operateurs multiplicatifs

• [ ] operateurs additifs

(a) 4+5*2 = [ ]+[ ] = [ ](b) (4+5)*2 = ([ ])*[ ] = [ ](c) 2*-3-1 = [ ]-[ ] = [ ](d) 11 div 3 = [ ] reste [ ](e) 11 div [ ] = 2 reste 3(f) 3 div 11 = [ ] reste [ ](g) [ ] div 3 = 3 reste 2

Ecriture algebrique div et mod

Ecrivez les expressions en termes de div (division entiere) et mod (reste de la divisionentiere).

Textea // b <==> [ ] [ ] [ ]a % b <==> [ ] [ ] [ ]

Evaluation d’expression div et mod

Evaluez les expressions algebriques de la division entiere et du modulo.

Texte(a) ((4+5)//20)*19 = ([ ]//20)*19 = [ ]*19 = [ ](b) (9%3)*6+1 = [ ]*6+1 = [ ](c) 4-4-(5*2)%1 = [ ]-([ ]%1) = [ ]-[ ] = [ ](d) (5+5)//20+3%3 = ([ ]//20)+[ ] = [ ]+[ ] = [ ](e) (2-1)*((2*2)%1) = [ ]*([ ]%1) = [ ]*[ ] = [ ]

Expressions algebriquesReliez les expressions (a gauche) aux expressions francaises (a droite) correspondantes.

Page 39: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 39

Etiquette Cible

n ** 2 Le chiffre des unites de nn // 2 % 2 + 1 Le premier nombre impair qui suit nn // 10 Le chiffre des dizaines de nn // 10 % 10 Le nombre de dizaines de nn+1 Le carre de nn % 10 Le double de nn * 2 L’entier qui suit n

Operateur puissanceY a-t-il un operateur pour faire un calcul de puissance ?Si oui, lequel ?

A) � Non

B) � Oui

Page 40: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 40

6.8 Questions : Expressions arithmetiques

Math : Operateurs, operandesPour chacune des expressions, identifiez tous les operateurs et leurs operandes, indiquezsi les operateurs sont unaires ou binaires et identifiez les litteraux. Ensuite fournissezune version de l’expression avec le moins de parentheses possible et une autre avec unmaximum de parentheses (tout en respectant le sens de l’expression bien sur).

• a+1

• (a+b)*12-4*(-a-b)

• a+(b*12)-4*-a

Math : Evaluation d’expressionsDonnez le type et la valeur de chaque expression :

1. (4.0+2.25)*2.0

2. 15 div 2

3. 15.0/2

4. 15 mod 2

Math : Sequence de calcul

Ecrivez deux sequences de calcul (vraiment) differentes qui donne 35 en utilisant exac-tement 5 fois la touche 5 et autant que necessaire les touches +, -, *, /, // (pour div),% (pour mod), ( et ).

Expressions mathematiquesCodez les expressions mathematiques suivantes :

• a2 − c+ a

bc+ c

d+ e

f

• −b+√b2 − 4ac

2a

1a

+ 1b

c+ d

Math : Operateurs div et mod (1)L’ecriture « a← b » designe l’operation d’affectation de b dans a.Soit n une variable contenant un entier a 2 chiffres.

Ecrivez une suite d’instructions qui permet de stocker n ecrit « a l’envers » dans unevariable p. ex : si n=12 alors p=21.

Math : Operateurs div et mod (2)Meme question ci-avant avec un entier a exactement 3 chiffres.

Page 41: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 41

Math : La carte vitaleEn France, le numero de securite sociale est un numero compose de 13 chiffres permettantd’identifier une personne, suivi d’une cle de controle de 2 chiffres pour deceler d’even-tuelles erreurs de saisie. Cette cle correspond a la difference entre 97 et le reste de ladivision du code dans la division par 97. Soit N ce code a 13 chiffres.

Donnez l’expression de la cle de securite.

Page 42: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 42

7 Affectation interne

7.1 Affectation interne

Affectation interneOperation qui fixe une valeur a une variable.

Affectation interne

nomVar = expression

ExplicationPlace la valeur de l’expression dans la zone memoire de la variable de nom nomVar. Enalgorithmique, le symbole <- (qui se lit « devient ») indique le sens du mouvement : del’expression situee a droite vers la variable a gauche.

RappelToutes les variables apparaissant dans l’expression doivent avoir ete affectes prealable-ment. Le contraire provoquerait un arret de l’algorithme.

Conversions implicitesIl est de regle que le resultat de l’expression a droite du signe d’affectation soit de memetype que la variable a sa gauche.

Page 43: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 43

7.2 Exemples : Affectation interne

Exemples : Affectations correctes

a = 3x = ydelta = math.sqrt((b*b - 4*a*c)/(2.0*a))test = True

La premiere instruction affecte la valeur 3 a la variable a, la seconde la valeur de y a lavariable x, la troisieme la valeur de l’expression arithmetique a la variable delta et laderniere la valeur logique a la variable test.

Exemples : Affectations incorrectes

somme + 1 = 3;somme = 3n;

La premiere est invalide car somme+1 n’est pas une variable et la deuxieme car 3n n’estni un nom correct de variable ni une expression correcte.

Page 44: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 44

7.3 Exemple : Affectations et conversions

emploie des fonctions mathematiques. Il montre l’affectation et les conversions implicitesde type dans les expressions.

Script @[pgaffect1.py]

import mathx = 6.0y = x * -3.0print("En A : y vaut ",y," et x vaut ",x,sep="")x = math.pow(x-4, 2)print("En B : y vaut ",y," et x vaut ",x,sep="")x = math.sin(math.sqrt(x*-y+9))print("En C : y vaut ",y," et x vaut ",x,sep="")

ExplicationIl declare des variables reelles x et y et est constitue de quatre instructions d’affectation.

• La premiere affecte la valeur 6 a la variable x. A l’issue de cette instruction, x vautle reel 6.0 (conversion implicite de l’entier 6 en reel).

• La deuxieme est l’affectation d’une expression algebrique a une variable reelle.L’expression est d’abord reconnue comme un produit a effectuer portant sur unevaleur reelle et une valeur entiere. Comme les types des valeurs sont differents, lavaleur -3 est d’abord convertie en 3.0 puis multipliee avec la valeur de la variablex (definie) qui vaut 6.0. Ainsi, la multiplication a ses deux operandes reels, elle esteffectuee et la valeur reelle -18.0 est affectee a la variable y.

• La troisieme evalue d’abord le parametre x-4 de la fonction qui vaut 6.0-4=2.0puis appelle la fonction carré qui donne la valeur 4.0 laquelle modifie la valeurde la variable x. L’ancienne valeur de x, qui etait 6.0, est perdue. Le deroulementsequentiel fait naturellement « oublier » les instructions effectuees en ne conservantque les valeurs courantes des variables.

• La quatrieme suit le meme principe : elle evalue d’abord x*-y+9 qui vaut4.0*18.0+9=81.0 laquelle est transmise a la fonction racinecarrée qui donne 9.0,laquelle est transmise a la fonction sin qui donne 0.4121184852.

En A : y vaut -18.0 et x vaut 6.0En B : y vaut -18.0 et x vaut 4.0En C : y vaut -18.0 et x vaut 0.4121184852417566

Page 45: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 45

7.4 Evaluations : Affectation interne

Affectation d’une variableCochez toutes les cases validant ou non le programme Python suivant :

#print(n1)type(n1)n1="bonjour"type(n1)n1=1.234type(n1)n1=1type(n1)n1=Truetype(n1)

A) � L’algorithme est correct.

B) � Erreur : La ligne M1 affiche n’importe quoi.

C) � Erreur : Incoherence de type en ligne M2 et ligne M3.

D) � Erreur : En ligne M4, pour initialiser une variable, il faut imperativement uneinstruction de lecture.

Sequence d’affectations (1)« Jouez le role de la machine » en modifiant le contenu des cellules et determinez ce qu’ilaffiche. Mettez un point d’interrogation ( ?) pour indefinie.

Texte

a=2a=a+2b=a*2+ac=4c=b-cc=c+a-ba=(b-a)*cb=(a+c)*bprint("A=",a," B=",b," C=",c,sep="")

Reordonner un codeReordonnez les instructions afin que ce script Python saisit trois entiers dans x, y et zpuis calcule et affiche la somme s des trois entiers.Mot print("Trois entiers? ")Mot print("La somme vaut ",s,sep="")Mot x = int(input())Mot y = int(input())Mot z = int(input())Mot s = x + y + z

Page 46: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 46

Sequence d’affectations (2)Determinez ce que valent les variables a l’issue de cet algorithme.Mettez un point d’interrogation ( ?) pour indefinie.

Texte

a=12b=5c=a-ba=a+cb=aprint("A=",a," B=",b," C=",c,sep="")

Sequence d’affectations (3)Determinez ce que valent les variables a l’issue de cet algorithme. Mettez un point d’in-terrogation ( ?) pour indefinie et le mot « OUPS » si le calcul ne peut pas s’effectuer.Concluez.

Texte

Permutation de valeursLaquelle(s) des options suivantes permet d’echanger les valeurs des variables a et b ?

A) � a = b; b = a

B) � a, b = b, a

C) � t = a; a = b; b = t

D) � t = a; b = a; t = b

Page 47: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 47

7.5 Questions : Affectation interne

Le jeu de l’erreur (1)Quel est le probleme de ce script Python ?

print(n1 / n2)

Math : Analyse d’une sequence (1)L’ecriture « a← b » designe l’operation d’affectation de b dans a.

Quel est l’effet des instructions suivantes sur les variables a et b numeriques ?(Notez A et B les contenus de a et b).

a <- a + bb <- a - ba <- a - b

Math : Analyse d’une sequence (2)L’ecriture « a← b » designe l’operation d’affectation de b dans a.

Quel est l’effet des instructions suivantes sur les variables a et b numeriques ?

a <- a + b + cb <- b + cc <- a - ca <- a - cb <- c - b + ac <- c - b

Math : Analyse d’une sequence (3)L’ecriture « a← b » designe l’operation d’affectation de b dans a.

Quel est l’effet des instructions suivantes sur les variables a et b numeriques ?

b <- b + cc <- b - cb <- b - ca <- a + bb <- a - ba <- a - b

Page 48: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 48

8 Complements

8.1 Variables et constantes

Emplacement memoire, unicite des nomsUne variable designe un emplacement memoire qui permet de stocker une valeur.L’adresse de cet emplacement memoire est associee au nom de la variable. Manipuler lenom de la variable c’est faire reference a son adresse en memoire : c’est le systeme quirealise cette association.

Puisqu’un script exploite generalement plusieurs variables pour traiter les informations,chacune est designee par un nom unique. L’unicite des noms de variables permet a lamachine d’identifier precisement la variable a etre manipulee.

VariableUne variable peut etre vue comme une boıte dans laquelle est rangee une information quipeut etre recuperee a tout moment. A la difference de la boıte qui redevient vide lorsqu’onen retire son contenu, la variable stocke une « copie » des donnees qu’un algorithme yrange (via l’affectation). Ainsi, lorsque l’algorithme recupere la valeur d’une variable, ilrecupere une copie du contenu de la variable.

Une variable conserve ses donnees (c.-a-d. son contenu) jusqu’a ce qu’une autre valeur ysoit stockee, remplacant la valeur anterieure, ou jusqu’a ce que la variable soit detruitepar l’algorithme.

Initialisation par defautElle consiste a donner une valeur initiale de facon automatique aux variables declarees(par exemple 0 pour les variables numeriques, Faux pour les booleens, etc.). Celle-cin’existe ni en algorithmique, ni dans les langages Java ou Python. En C/C++, cetteinitialisation differe selon que cette variable est locale ou globale (cf. @[Regles de visibi-lite] dans [Algorithmes parametres (2)]).

Erreurs a eviterVoici une synthese :

• Une variable ou une constante declaree avec un certain type ne peut pas etredeclaree une deuxieme fois au meme niveau.

• Il faut declarer la variable ou la constante avant de pouvoir l’utiliser.

• Une constante doit etre initialisee lors de sa declaration.

• Il faut attribuer une valeur a la variable avant d’utiliser sa valeur.

Page 49: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 49

Variables en programmationQuelques conseils :

• Declarez toujours une variable, meme si certains langages de programmation peuventles declarer pour vous. Le type pris par defaut ne sera pas forcement le plus adapte.

• Declarez les variables en debut de programme si vous souhaitez un lexique claire-ment localise. Sinon declarez-les au plus pres de leur premiere utilisation.

• Initialisez toujours les variables (par une affectation interne ou externe). Certainslangages de programmation et/ou compilateurs les initialisent automatiquement azero, d’autres pas. En particulier, le compilateur Java emet le message d’erreursuivant dans un tel cas :

Variable may not have been initialized

Prenez le principe general qu’elle n’est jamais initialisee par defaut.

Page 50: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 50

8.2 Affectation : Complements

Affectation multiple

nomVar1, nomVar2, ... = expr1, expr2, ...

ExplicationEffectue les affectations chaınees de la droite vers la gauche.

Notations abregees

x @= y # <=> x = x @ y avec @ parmi {+,-,*,/,//,%}

ExplicationNotations abregees des operateurs arithmetiques pour l’affectation.

Page 51: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 51

8.3 Exemples : Complements sur l’affectation

Page 52: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 52

8.4 Transtypage

Transtypage (casting)Conversion explicite du type d’une expression vers un autre type compatible.

Transtypage

T(expr)

Avec T parmi : str, int, float, bool (Nous verrons les autres types dans les modulessuivants).

ExplicationConvertit le type de l’expression expr vers le nouveau type T.

Page 53: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 53

8.5 Questions : Complements

Analyse d’une sequence (1)L’ecriture « a← b » designe l’operation d’affectation de b dans a.

Que contiennent les variables a la fin du programme ?

a, b <- 3, 2a <- a - bb, a <- a+1, 2*bb <- b mod 3a <- a - b div 2

Analyse d’une sequence (2)L’ecriture « a← b » designe l’operation d’affectation de b dans a.

Que contiennent les variables a la fin du programme ?

a, b, c <- 1, 2, 3a, b <- b, cb, c <- c, ab <- cc <- b

Affectations simultanees (1)L’ecriture « a← b » designe l’operation d’affectation de b dans a.

Parmi les expressions suivantes de la forme x,y<-Q1,Q2, lesquelles peuvent s’ecrire endeux lignes x<-Q1 puis y<-Q2 sans changer le resultat ?

1. x, y <- 17, 32

2. x, y <- 5, x-3

3. x, y <- y, x

4. x, y <- x+1, y+2

Affectations simultanees (2)L’ecriture « a← b » designe l’operation d’affectation de b dans a.

Quelles que soient les valeurs donnees a x et y, pour quelles valeurs des nombres a,b,c,d,peut-on remplacer l’affectation simultanee :

x, y <- a*x+b*y, c*x+d*y

par :

x <- a*x+b*yy <- c*x+d*y

Cast d’une expressionDonnez la valeur et le type de chacune des expressions.

1. AFINIR

2. AFINIR

Page 54: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 54

Variables de types differentsQue se passe-t-il si l’on met dans une expression deux variables de types differents dechaque cote d’un operateur ?

A FINIR �

Page 55: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 55

9 Specificites Python

9.1 Fonctions numeriques

Fonctions numeriques disponibles en mode consoleDes qu’on lance Python Shell, on dispose d’un certain nombre de fonctions numeriquesprogrammees. Le tableau suivant montre les plus courantes.

Fonctions Signification Exemplesabs(x) Valeur absolue du nombre x abs(-5)=5, abs(4.32)=4.32int(x) Partie entiere du nombre x int(4.5)=4, int(-3.6)=-3max(x,y,...) Plus grand des nombres indiques (au moins 2) max(6,10,4,7)=10min(x,y,...) Plus petit des nombres indiques (au moins 2) min(6,10,4,7)=4round(x,n) Arrondi du nombre x avec n decimales round(2.4)=2, round(2.6)=3, round(11.87,1)=11.9

Le module fractionsIl permet d’effectuer des calculs avec des fractions. Pour y acceder :

import fractions

Quand on utilise ce module, on ne doit pas ecrire les fractions avec une barre de fractionmais en ligne. On ecrira par exemple Fraction(2,5) (avec une lettre capitale) au lieude 2/5.

Si f est une fraction, les instructions f.numerator et f.denominator renvoient respecti-vement le numerateur et le denominateur de la fraction f.

Page 56: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 56

9.2 Questions : Python

Les differents types de nombresTapez chacune des lignes suivantes et appuyez sur la touche [Entree] a la fin de chaqueligne. Expliquez le resultat.

>>> 7.5/4>>> 7,5/4>>> 2.4e7>>> 2**30

Calculs (1)

Executez les calculs a raison de un par ligne : 5 + (−3), 5678× 987, 324567× 678999 et567.45/34.06

Calculs (2)

Executez les calculs a raison de un par ligne : 5.45− (3.32× 0.8) ; 999 ∗ ∗2 puis (5.37 +6.24× 3)− (3.45× 2− 56.876)

Calculs (3)Comparez les resultats des operations 56//9 et 56/9.

Calculs (4)

Effectuez 3.45 + 4.65 puis

4.6− 35− 2.4 .

Calculs (5)Calculez 2**100. Combien le resultat a-t-il de chiffres ?

Expressions numeriques (1)Quel est le calcul effectue ci-dessous ?

>>> a,b = 157,8>>> q = a//b>>> r = a - b*q>>> print(q,r)

Expressions numeriques (2)Quel est le resultat de ce calcul ?

>>> print(15+3*2)

Expressions numeriques (3)Que se passe-t-il si vous demandez 5%3 ?Quel est le role de l’operateur % ?

Page 57: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 57

Affectations (1)Entrez les lignes suivantes et dites ce que vous observez.

>>> x,y = 3,2>>> c = y>>> y = x>>> x = c>>> print("x=",x,"y=",y)

Affectations (2)Entrez les lignes suivantes et dites ce que vous observez.

>>> x,y = 3,2>>> x,y = y,x>>> print("x=",x,"y=",y)

Affectations (3)Entrez les lignes suivantes et dites ce que vous observez.

>>> a,b,c,d = 1,2,3,4>>> a,b,c,d = b,c,d,a>>> print("a=",a,"b=",b,"c=",c,"d=",d)

Fonctions numeriques (1)Quelle difference y a-t-il entre int(57.45) et floor(57.45) ? Et entre int(-3.22) etfloor(-3.22) ?

Fonctions numeriques (2)En ne gardant que 3 chiffres apres la virgule, calculez le quotient de 5.357 par 2.08.

Fonctions numeriques (3)Calculez la racine carree du nombre 200 en ne gardant que 3 decimales.

Fonctions numeriques (4)Utilisez le nombre donne par la fonction pi du module math pour calculer le perimetreet l’aire d’un disque de 4.56 cm de diametre. Ne conservez que 2 decimales dans lesresultats.

Fonctions numeriques (5)Entrez un entier n en ecrivant par exemple :

>>> n = 9

Sur la ligne suivante, ecrivez le calcul qui donne la somme s des quatre entiers consecutifsn, n+1, n+2 et n+3. Affichez s puis faites calculez le reste de la division de s par 4. Cettesomme peut-elle etre divisible par 4 ?

Page 58: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 58

Fonctions numeriques (6)La fonction divmod(a,b) fournit a la fois le quotient et le reste de la division eucli-dienne d’un entier a par un entier b. Faites l’essai. Que se passe-t-il si vous demandezdivmod(5,0) ?

Fonctions numeriques (7)La fonction abs(x) fournit la valeur absolue du nombre x. Entrez les lignes suivantes etdites ce que vous observez.

>>> abs(5)>>> abs(-4)>>> abs(0)

Fonctions numeriques (8)Entrez les lignes suivantes et dites ce que vous observez.

>>> x,y = 5,7>>> a = (x+y+abs(x-y))//2>>> b = (x+y-abs(x-y))//2>>> print("a=",a="b=",b)

Fonctions numeriques (9)Effectuez les calculs suivants. Quels resultats obtient-on ?

>>> Fraction(5,10)>>> Fraction(10,2)>>> Fraction(210,4070)

Fonctions numeriques (10)Effectuez les calculs suivants. Quels resultats obtient-on ?

>>> from fractions import*>>> x = "3.15926">>> Fraction(x).limit_denominator(10)>>> Fraction(x).limit_denominator(100)>>> Fraction(x).limit_denominator(1000)

Fonctions numeriques (11)

Utilisez le module fractions pour calculer 1 + 12 + 3

4.

Instructions print et input (1)Saisissez deux entiers qui seront appeles x et y. Faites en la somme et affichez-le. Faitesde meme avec deux nombres decimaux.

Page 59: Structures de base [bs] Support de Cours · 2017. 5. 3. · Unisciel algoprog { Structures de base [bs], March 24, 2017 5 1.2 Les mots-cl es Mots-cl es (keywords) Dits aussi mots

Unisciel algoprog – Structures de base [bs], March 24, 2017 59

Instructions print et input (2)Entrez un nombre en ecriture scientifique, le nombre 4e12 par exemple. Quel est le typede cette donnee ?

Instructions print et input (3)Tapez ces lignes puis saisissez un mot quelconque au lieu d’un nombre entier.Que peut-on observer ?

>>> n = int(input("Votre entier? "))

Instructions print et input (4)Tapez ces lignes puis saisissez un nombre decimal au lieu d’un nombre entier. Que peut-onobserver ?

>>> n = int(input("Votre entier? "))

Instructions print et input (5)Tapez ces lignes puis saisissez un nombre entier. Que peut-on observer ?

>>> n = int(input("Votre entier? "))>>> e = int(e)>>> print(n-e)