1 La notion de variable en Python 2 Les principaux types de variables

publicité
Lycée Roland Garros - BCPST 1
Informatique
TP INFO no 2. Variables, fonctions, chiers Python
1 La notion de variable en Python
Le langage Python est un langage dit typé. Cela signie que TOUTES les variables qu'il
manipule sont dotées d'un type. Il s'agit d'une caractéristique qui spécie quel genre de
donnée représente cette variable.
Les opérations, les fonctions, sont souvent dénies spéciquement pour chaque type de
variable. Par exemple, on peut multiplier deux entiers, ou concaténer deux chaînes de
caractère, mais pas vice-versa : si l'on essaie de faire l'inverse on obtiendra une erreur.
Pour acher la valeur d'une variable, vous avez remarqué qu'il sut de taper son
nom dans la fenêtre principale, et de faire Entrée. Cela ne sera bientôt plus possible quand
on commencera à travailler dans l'éditeur. L'instruction print() sera alors la solution.
I a="Amstramgram"
I print(a)
I print(a**2)
I b="Pic et pic et colegram"
I print(b)
I print(a,b)
2 Les principaux types de variables
2.1 Le type int
C'est le type des nombres entiers. Les opérations sur les nombres entiers sont celles qui
sont calculées le plus rapidement par l'ordinateur.
I
I
I
I
I
I
type(2)
type(0)
type(-13)
type(24*5)
H=24*5
print(H)
2.2 Le type float
C'est le type des nombres réels (en fait des nombres décimaux, un ordinateur ne travaillant
qu'avec un nombre ni de chires après la virgule). L'ordinateur code de telles variables
en retenant
1
• 12 chires signicatifs,
• La position de la virgule : une puissance de 10
(d'où leur nom de nombres à virgule ottante). Ce type permet de travailler avec des
nombres très grands ou très petits, avec un degré de précision constant.
I
I
I
I
I
I
type(2.3)
type(2.)
M=2*3
type(M)
N=2.*3
type(N)
2.3 Le type str
C'est le type des variables qui sont des suites de symboles (lettres, chires, ponctuation
ou caractères spéciaux), c'est-à-dire des chaînes de caractères, qu'on délimite en Python
par des guillemets ou des apostrophes.
De telles variables sont très utiles pour faire acher des messages en cours de programme,
analyser un texte, coder un message secret. . .
I
I
I
I
a="c est bien !"
print(a)
b=' on programme en "Python" ' . . . . . . . . . . deux délimiteurs possibles ' ou "
print(b)
I 'coucou'+' ca va ?' . . . . . . . . le symbole + concatène les chaînes de caractère !
I print(a+b)
I 'guili'*3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ca chatouille ?
I message='glouglou'
I len(message) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . len comme length =longueur
I
I
I
I
message[1]
message[0] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . La numérotation part donc de 0 . . .
message[2:4] . . . . . . . . . . . . . . .et par ailleurs le dernier indice est toujours exclu !
message[8] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pourquoi une erreur ?
I A='1 \n+2 \n \n=3'
I print(A) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . \n saute une ligne.
2
ATTENTION
la présence de guillemets change complètement le sens d'une expression. Par exemple,
tapez :
I gargamel=3
I gargamel*2
I 'gargamel'*2
Analysez la réaction de Python à ces deux instructions. Il ne faut surtout pas confondre
les deux : gargamel désigne la variable portant le nom gargamel, alors que 'gargamel'
désigne simplement la séquence de caractères g, a, r, g, a, m, e, l.
Soyez donc vigilant ! De nombreuses erreurs viennent de cette confusion. . .
2.4 Le type bool : booléens
Les variables du type bool représentent une valeur de vérité, elles ont donc pour valeur
soit True, soit False. Elles constitueront par exemple les conditions des boucles if, for
et while, d'où leur importance.
Le plus souvent les variables booléennes interviennent comme réponse à un test (c'est à
dire une question posée à Python). En clair Python renvoie True ou False selon si la
condition du test est vraie ou fausse.
I
I
I
I
I
I
1>2
1<2
1<1
1<=1
1=1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tiens ? qu'est-ce qui cloche ?
1==1
Comprenez bien la diérence entre = et == : rien à voir !
I
I
I
I
1!=1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Que signie l'opération !=
'coucou'=='coucoucou'
'coucou'=='coucoucou'[0:6]
'coucou'==3.54325
I a='1'
I a==1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pourquoi ?
Les opérations que Python sait eectuer sur les variables booléennes correspondent aux
connecteurs logiques que nous connaissons
I (0==1) and (0==0)
I A=(0+0==3);B=(0+0==0)
I type(A)
3
I print(A and B)
I print(A or B)
I print(not(A))
2.5 Un type composite : le type list
Les variables du type list sont des séquences ordonnées de valeurs, qui peuvent éventuellement être de types diérents. Une liste s'écrit entre crochets, en séparant ses éléments
par des virgules :
I
I
I
I
L=[1,'haha',2.34,False]
print(L)
type(L)
len(L)
On peut extraire un élément d'une liste en précisant sa position. Les éléments qui constituent une liste peuvent être de n'importe quel type, et éventuellement de types diérents.
ATTTENTION comme toujours à la numérotation qui commence à 0.
I
I
I
I
I
I
I
I
I
I
I
L[0]
type(L[0])
L[1];type(L[1])
type(L[1])
L[2]
type(L[2])
L[3]
type(L[3])
L[-1]
L[-2] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . -1,-2,-3 : à l'envers en partant du dernier
L[2:4] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . extraction d'un morceau de liste
Il y a des outils simples pour créer des listes :
I
I
I
I
I
I
[i**2 for i in [1,3,5]]
A=list(range(5)); print(A)
B=list(range(2,7)); print(B)
C=list(range(0, 20, 3)); print(C)
[x**2-3 for x in C] . . . . . . . . . . . . . syntaxe à retenir absolument : super utile !
A+B+C . . . . . . . . . . . . . . . . . . . symbole + sur les listes = opération de concaténation
Autre outil : on peut changer la valeur d'un ou plusieurs éléments d'une liste. C'est
la réaectation :
I
I
I
I
L[2]='hoho'
print(L)
L[3]=L[3]+1;print(L)
L[0:2]=['a','b'] ;print(L)
Voici quelques opérations courantes sur les listes :
I L=[3,2,5,8,6,6,1,5,3]
I sum(L)
I del(L[3]);print(L) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . to delete = supprimer
4
I
I
I
I
I
L.append(9);print(L) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . to append = ajouter
L=L+[7];print(L) . . . . . . . . . . . . . . . . . . . même eet que l'instruction précédente
L.reverse();print(L) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . to reverse = inverser
L.index(8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . index = position
sorted(L) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . to sort = trier
Remarque. Les éléments d'une liste peuvent eux-mêmes être des listes :
I M=[1,3,5,['riri','fifi','loulou']]
I print(M[3])
I print(M[3][2])
2.6 Convertir une valeur
Il est possible de convertir une valeur d'un certain type vers un autre type. Pour cela, les
mots-clé int, float, bool, str, list, en plus de représenter des types, constituent des
instructions qui ont pour eet de convertir une valeur dans le type désiré. C'est possible
quand il existe une manière naturelle de faire la conversion.
Par exemple l'expression
I float(2)
crée le nombre ottant correspondant à 2, c'est à dire le nombre 2, 0.
Autres exemples :
I
I
I
I
I
I
I
I
I
I
I
I
I
I
int(2.3) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . int calcule donc la partie entière.
str(2)
345+678
str(345)+str(678)
'24'+'57'
int('24')+int('57')
a='4.5'
2*a
2*float(a)
list('coucou')
bool(1)
bool(0)
int(False)
int(True) . . . . . . . . . . . . . . . . . . . . . . . . . . . En logique binaire, 1 = vrai et 0 = faux.
Quand il n'existe pas de conversion naturelle une erreur sera renvoyée :
I int('24a')
I int('2.3')
I float([1,4,6])
Remarque : Python peut parfois convertir une variable par nécessité. Exemples :
I True+True+False
I True*3
I False*3
5
Exercice 1
Expliquer le résultat pour chacune des commandes suivantes, certes tirées par les cheveux.
I len(str(float(7)))
I sorted(str(1==2)+str(1==1))
I len(str(len(str(len('Grandschtroumpf')))))
3 Fonctions, modules et chiers
3.1 Fichiers .py
Nous allons maintenant apprendre à travailler dans l'éditeur : nous y écrirons des scripts
et les exécuterons. Un script est un chier texte contenant des lignes de code constituant un programme, autrement dit c'est un ensemble d'instructions. Nous pourrons par
ailleurs enregistrer un script sous la forme d'un chier portant l'extension .py (comme
python). Un chier .py est aussi appelé un module.
L'exécution d'un chier .py a pour eet d'eectuer dans le shell l'exécution de chacune
des lignes d'instruction contenues dans le script, l'une après l'autre.
Cette façon de procéder possède de nombreux avantages :
• On n'est pas restreint à une seule ligne pour écrire nos instructions, par conséquent
on peut écrire facilement des séquences de plusieurs instructions.
• Notre travail n'est pas perdu quand on ferme Python : les chiers .py créés peuvent
être sauvegardés, emportés à la maison, modiés, envoyés au prof ou aux camarades. . .
• On bénécie de toutes les fonctionnalités pratiques de l'éditeur que vous découvrirez
bientôt : coloration syntaxique, indentation automatique. . .
Première expérience avec l'éditeur
Faites File → Save As puis choisissez le nom du chier et l'emplacement de
votre choix. Je suggère : monTP2.py dans un répertoire TP_python/TP2 de votre
machine. L'utilisation de l'éditeur est enfantine :
• tapez plusieurs lignes d'instruction dans l'éditeur :
a=1
b=3
c=(a+b)*(b+1)
print(c)
print('et voila')
• Faites Ctrl+E (le raccourci pour la commande Execute )
Que s'est-il passé ? Dans la fenêtre principale, on vous signale que toutes les lignes
de votre chier ont été exécutées comme si vous les aviez rentrées l'une après l'autre
dans le shell.
6
Résultat : la 4ème ligne a produit l'achage de la valeur de la variable c. La 5ème ligne
a produit l'achage du message 'et voila'. Rien de bien glorieux pour l'instant mais avec
l'éditeur les possibilités sont prodigieuses.
Prenez donc quelques minutes pour faire vos propres expériences avec l'éditeur !
3.2 Dénir des fonctions
Intérêt d'une fonction : apprendre à l'ordinateur à accomplir une tâche qu'il ne savait
pas accomplir auparavant, et qu'on pourra ensuite lui demander d'accomplir en exécutant la dite fonction. Nous avons déjà manipulé des fonctions pré-existantes, comme par
exemple cos. Voyons comment faire pour en créer des nouvelles, personnalisées.
Attention : comme vous verrez, une fonction informatique n'est pas exactement une
fonction au sens mathématique du terme. Par exemple une fonction informatique peut ne
pas avoir de variable, ou même ne pas renvoyer de valeur de sortie.
En fait une fonction, pour Python, désigne le regroupement d'un certain nombre d'instructions (de toutes sortes) que Python eectuera d'un coup le jour où la fonction sera appelée.
La syntaxe pour créer une fonction est la suivante.
def ma_fonction(arguments):
...
...
[bloc d'instructions]
...
...
Remarques importantes
• chaque ligne du bloc
d'instructions de la fonction DOIT être décalée d'un alinéa
de 4 espaces (ou une Tab) Python ne rigole pas avec ça ! C'est la n de l'alinéa
qui signale que la dénition de la fonction est terminée.
Cette règle peut paraître embêtante mais elle est en fait très commode. Grâce à
elle le code est très lisible : on repère du premier coup d'÷il où commence
et où termine la dénition d'une fonction. Vous verrez que l'éditeur Python vous
simpliera la vie en créant automatiquement ces alinéas.
• le symbole : est obligatoire à la n de ligne d'en-tête (sinon, message d'erreur
lorsqu'on fait Ctrl+E). En cas d'oubli, ça se remarquera tout de suite : l'éditeur ne
fera pas la création automatique d'alinéa en signe de protestation.
• la construction ci-dessus ne fait que déclarer votre fonction, elle ne l'exécute pas.
Il est donc normal que le shell ne retourne ni n'ache rien après que vous tapiez
Ctrl + E.
Pour exécuter la fonction il faudra en fait le faire dans le shell en tapant :
I nomdelafonction(a,b,c)
avec bien sûr autant d'arguments a,b,c... que vous en aviez déclarés en dénissant
votre fonction.
• vous pouvez nommer votre fonction comme vous voulez, mais et évitez les majuscules et les accents pour éviter toute erreur.
7
Premières expériences sur les fonctions :
(1) Un exemple de fonction sans argument
def tablede4():
n=4
print('la table de 4 commence par :')
print(n,2*n,3*n,4*n,5*n)
(2) Un exemple de fonction avec un argument
def tableden(a):
print('la table de '+str(a)+' commence par :')
print(a,2*a,3*a,4*a,5*a)
(3) Un exemple de fonction avec plusieurs arguments
def division(x,y):
print('reste de la div de'+str(x)+' par '+str(y)+' = '+str(x%y))
print('Le quotient de la division de'+str(x)+' par '+str(y)+' est : '+str(x//y))
(4) Un exemple de fonction qui en appelle une autre :
def tables():
tableden(1)
tableden(2)
tableden(3)
tableden(4)
tableden(5)
Toutes ces fonctions ne sont pas vraiment des fonctions à proprement parler mais des
procédures. En eet, même si elles ont eectué une tâche (elles ont produit un achage)
elles ne renvoient pas de valeur de sortie. En comparaison, cos est une vraie fonction car
à une valeur d'entrée x est associée une valeur de sortie cos(x).
Pour comprendre, dénissez par exemple la fonction suivante :
def cube(x):
print(x*x*x)
puis analysez ce qui se passe si on fait :
I
I
I
I
I
cube(3)
cube(3)-1
M=cube(10) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bon sang mais où est le problème ?
M
type(M)
(5) Une fonction qui renvoie une valeur de sortie : l'instruction return
On reprend l'exemple précédent, à un détail près :
8
def cube_bis(x):
return(x*x*x)
dans l'éditeur, la ligne contenant return est forcément la dernière du paragraphe dénissant la fonction. Le saut à la ligne suivant se fait donc automatiquement
sans alinéa après le mot return.
Grâce à l'instruction return, la fonction cube renvoie eectivement une valeur. Cette valeur pourra ensuite être utilisée comme n'importe quelle autre variable. Testez à nouveau
Remarque.
I
I
I
I
cube_bis(3)-1
M=cube_bis(10)
M
type(M)
(6) Un exemple de fonction qui parle à l'utilisateur : l'instruction input
Une autre façon d'intégrer un paramètre dans une fonction est de dialoguer avec l'utilisateur, en utilisant l'instruction input(). C'est l'équivalent de la fonction prompt utilisée
au lycée mais la syntaxe est diérente : faites
I
I
I
I
a=input()
b=input('rentrer un nombre : ')
print(a+b)
print(int(a)+int(b))
A retenir, donc : input renvoie une chaîne de caractère, que celle-ci soit constituée de
chires ou non. Si l'on veut avoir accès au nombre lui-même il faudra commencer par une
conversion.
On peut utiliser input dans un programme :
def cube_ter():
a=input('Donnez moi un nombre je vous donnerai son cube')
a=int(a)
print(str(a)+' puissance 3 ='+str(a*a*a))
L'avantage est que l'utilisateur a juste à écrire le nom de la fonction sans se préoccuper
de ce que désignent les noms des variables utilisées. Cependant son utilisation n'est pas
justiée si vous êtes vous-même l'utilisateur.
3.3 Les commentaires dans un script
La lecture et la compréhension d'un script Python, si ce script est conséquent en taille,
est un exercice dicile. Comme tous les langages de programmation, Python permet pour
cette raison de documenter les scripts qu'on écrit.
Documenter un script, c'est faire des commentaires, à l'intérieur du script, qui ne seront
pas interprétés par Python. Ces commentaires serviront donc uniquement à fournir des
explications sur le script. Voici un exemple :
def pingouin(x):
# attention, n'oubliez pas le symbole :
9
y=2*x**2-3*x+5
return y
# L'exposant ne s'écrit pas ^ mais **
Dans cet exemple les commentaires ont peu d'intérêt mais dès qu'un script contient plus
de 10 lignes, utilise des boucles, des formules compliquées, et un grand nombre de variables, l'usage des commentaires est indispensable. Prenez l'habitude de les utiliser.
Comment insérer des commentaires ? En Python, on insère un commentaire grâce
au symbole #. Dans une ligne, tout ce qui est après un symbole # est considéré comme
commentaire. Un double # en début de ligne permet de tracer une ligne droite de séparation.
A qui s'adressent les commentaires ? A n'importe quelle personne qui lira votre
script ultérieurement :
• votre professeur à qui vous avez demandé de corriger votre script,
• un collègue avec qui vous collaborez pour écrire un script,
• au jury de l'oral de Maths-info, qui sera amené à lire votre projet info,
• plus fréquemment à vous-même : il arrive souvent de devoir reprendre un ancien
script pour le modier. Croyez-moi, sans commentaire on ne comprend plus rien à
ce qu'on avait soi-même écrit un mois auparavant !
4 Variables locales / variables globales
4.1 Dénition
Lorsqu'on dénit des variables à l'intérieur du corps d'une fonction, ces variables ne sont
accessibles qu'à la fonction elle-même. On dit que ces variables sont des variables LOCALES de la fonction. Par exemple créez la fonction suivante dans l'éditeur :
def fonctionexemple(x):
y=2*x
z=y+1
return z
Puis tapez les commandes suivantes :
I fonctionexemple(3)
I print(y)
Python vous signale qu'il ne connaît pas de variable portant le nom y. C'est normal :
à chaque fois que la fonction fonctionexemple est exécutée, elle va créer des variables x
et y durant l'exécution, mais ces variables seront automatiquement détruites à la n de
l'exécution de la fonction.
a le même rôle qu'une variable muette
Métaphore : une variable locale en informatique
P
en mathématiques. Lorsque vous calculez nk=1 k 2 , vous utilisez la variable k . Cependant,
dès que votre calcul est terminé, que vous êtes ressorti de la somme, la variable k n'a plus
d'existence.
10
A l'inverse, les variables dénies à l'extérieur d'une fonction sont des variables GLOBALES. Il faut savoir que
• le contenu d'une variable globale est visible de l'intérieur d'une fonction : on peut
faire appel à sa valeur dans une instruction faisant partie d'une déclaration de
fonction.
• une variable globale ne peut pas etre modiée à l'intérieur d'une fonction. On ne
peut pas modier sa valeur dans une instruction faisant partie d'une déclaration de
fonction.
s'il se trouve, par coïncidence, qu'une fonction utilise une variable (locale)
qui porte le même nom qu'une autre variable (globale) dénie en dehors de la fonction,
alors en réalité Python crée deux variables bien distinctes et indépendantes.
Intérêt : quand vous écrivez une fonction vous pouvez choisir librement les noms de vos
variables ! Aucun risque d'écraser d'autres variables dénies à l'extérieur de la fonction.
Cela n'arrivera pas puisque toutes les variables de votre fonction seront locales.
Remarque.
4.2 Un exemple d'illustration
• Créez la fonction suivante dans l'éditeur
def glouglou():
plic=2
print('valeur de plic : '+str(plic))
print('valeur de ploc : '+str(ploc))
• Expliquer ce qui se passe lors de l'exécution de la fonction dans la fenêtre principale :
I glouglou()
• Recommençons en créant au préalable une variable ploc. Analyser la réaction de Py-
thon pour chacune des lignes.
I ploc=3
I glouglou()
I plic
• On fait la même chose mais auparavant on crée la variable globale plic. Analyser.
I plic=500
I glouglou()
I plic
4.3 Déclarer une variable globale
Il est possible de forcer une fonction à travailler avec une variable globale, en le déclarant
explicitement par la commande :
global nomdevariable,
ce qui signie qu'on déclare à Python "dans la présente fonction, nomdevariable désignera la variable globale qui porte ce nom".
Exemple.
Créez la fonction :
11
def fonction_qui_met_a_au_carre_et_affiche_a():
global a
a=a**2
print('a vaut désormais ',a)
Et dans la fenêtre principale, faites (n'oubliez pas l'utilité de la touche ↑) :
I
I
I
I
a=2
fonction_qui_met_a_au_carre_et_affiche_a()
fonction_qui_met_a_au_carre_et_affiche_a()
fonction_qui_met_a_au_carre_et_affiche_a()
12
5 Un peu de pratique : exercices sur les fonctions
Exercice 2
Volume d'une sphère Créer une fonction volumesphere(R) qui prend en argument un nombre R et qui renvoie
le volume d'une sphère de rayon R
Exercice 3
Une fonction quelconque Créer une fonction f qui prend en argument deux réels x et y et renvoie la valeur de
f (x, y) = x2 y 2 +
Exercice 4
cos y
− bx + yc.
cos x
Création d'une liste à partir d'une chaîne de caractère Créer une fonction toto(C) qui prend en argument une chaîne de caractère C et renvoie une liste contenant
• comme premier élément le premier caractère de C,
• comme deuxième élément le dernier caractère de C,
• comme troisième élément la longueur de C,
. toto('messagesecret') renverra ['m','t',13]
Exemple
Exercice 5
Raccourcir un message Créer une fonction moitie(D) qui prend en argument une chaîne de caractère D et renvoie une chaîne contenant uniquement la première moitié des caractères de D (arrondi à
l'inférieur).
. si on exécute moitie('coucou') la fonction devra renvoyer la chaîne 'cou'
Exemple
Exercice 6
Calcul de l'équation d'une droite Créer une fonction equation_droite() qui prend en entrée les coordonnées de 2 points
A et B et ache l'équation de la droite passant par ces deux points. Les données xA , yA ,
xB et yB pourront être rentrées, au choix :
1. en tant que paramètres de la fonction equation_droite(xA,yA,xB,yB)
2. en utilisant l'instruction input().
Exemple. Pour les points A(1, 5) et B(3, 11) la fonction devra acher :
L'equation de la droite est :
y = 3.0 x + 2.0
13
Exercice 7
Simplier une fraction rationnelle
Créer une fonction qui permet d'écrire une fraction rationnelle
H+
G
.
cx + d
Exemple.
ax + b
sous la forme
cx + d
Si a = 4, b = 5, c = 2, d = 1, la fonction provoquera l'achage suivant :
(4x+5)/(2x+1)= 2+3/(2x+1)
Exercice 8
Censure
Créer une fonction censure qui prend comme argument un (gros) mot, et remplace toutes
les lettres par * sauf la première et la dernière.
Exemple.
censure('scrogneugneu') retournera 's**********u'
Exercice 9
Compter en heures, minutes, secondes Créer une fonction temps qui prend un argument S (nombre de secondes) et qui exprime S sous forme d'heures, minutes et secondes. La fonction devra acher le résultat
sous forme d'une belle phrase :
. temps(3733) devra acher
Exemple
'3733 secondes, ça fait 1 heure, 2 minutes et 13 secondes'
Les perfectionnistes pourront faire en sorte que le s du pluriel ne s'ache pas pour les
chires 1 et 0.
Exercice 10
Nombre de racines d'un polynôme Créer une fonction racines(a,b,c) qui prend en argument trois coecients a, b et c,
calcule le discriminant du polynôme P = aX 2 + bX + c, et précise le nombre de racines
réelles de P .
Exemple.
l'exécution de racines(2,1,-2) achera :
Delta=17. Le polynôme P possède 2 racines réelles.
14
Téléchargement