INFO FEUILLE n° 12 BTS SIO 1 Avril-Mai 2012
Thème:
Révisions et synthèse de connaissances.
Programme ayant un " programme principal " faisant appel à des scripts ou fonctions.
( Les entrées de données par l'utilisateur se font en dehors des scripts ou fonctions )
Cela permet d'avoir un programme multitâches plus complexe.
----------------------------------------------------------------------------------------------------------------------------
EXERCICE 1
Rédiger un programme comportant les conditions suivantes:
• Le "programme principal" demande à l'utilisateur d'entrer les coefficients a , b, c
( a réel non nul , b et c deux réels), d'une équation du second
degré a x2 + b x + c = 0.
• Puis le" programme principal" fait appel ensuite à des scripts pour
retourner le discriminant, puis pour la discussion sur son signe et qui retourne les
solutions éventuelles ou l'absence de solution.
• Enfin le "programme principal" demande l'affichage de la conclusion.
-----------------------------------------------------------------------------------------------------------------
Réponse:
def scd(a,b,c):
return b**2-4*a*c
def sig(a,b,c):
if scd(a,b,c)<0:
print (" Aucune solution")
elif scd(a,b,c)==0:
print(" Il y a une racine double")
return -b/(2*a)
else:
print(" Il y a deux racines distinctes")
return [( - b + scd(a,b,c)**0.5 )/ ( 2*a ), ( - b - scd(a,b,c)**0.5 )/ (2*a )]
#####################
# PROGRAMME PRINCIPAL #
######################
a=input(" Donner un réel non nul a: a = ")
b=input(" Donner un réel b : b = ")
c=input(" Donner un réel c : c = ")
print sig(a,b,c)
input(" Appuyer sur Entrée pour arrêter")
-----------------
Cela donne par exemple:
>>>
Donner un réel non nul a: a = 1
Donner un réel b : b = 2
Donner un réel c : c = 1
Il y a une racine double
-1
Appuyer sur Entrée pour arrêter
Ou encore par exemple:
>>>
Donner un réel non nul a: a = 1
Donner un réel b : b = 2
Donner un réel c : c = 2
Aucune solution
None
Appuyer sur Entrée pour arrêter
OU encore par exemple:
>>>
Donner un réel non nul a: a = 1
Donner un réel b : b = 3
Donner un réel c : c = 1
Deux racines distinctes
[-0.3819660112501051, -2.6180339887498949]
Appuyer sur Entrée pour arrêter
OU encore avec des cœfficients décimaux:
>>>
Donner un réel non nul a: a = 1.5
Donner un réel b : b = 2.1
Donner un réel c : c = -1.4
Il y a deux racines distinctes
[0.49303534454488523, -1.8930353445448853]
Appuyer sur Entrée pour arrêter
----------------------------------------------------------------------------------------------------------------------
Remarque:
Vous pouvez imaginer de modifier le programme pour
retourner une erreur quand l'utilisateur se trompe en mettant
a = 0 malgré le texte écrit.
------------------------------------------------------------------------------------------------------------------
EXERCICE 2
Rédiger un programme comportant les conditions suivantes:
• Le "programme principal" demande à l'utilisateur d'entrer un réel x et un entier
naturel n , non simultanément nuls.
• Puis le" programme principal" fait appel ensuite à un script pour
discuter les cas n==0 ou non avec une boucle if .....else
retourne xn .
• Enfin le "programme principal" demande l'affichage de xn .
-------------------------------------------------------------------------------------------------------------------
Réponse:
from __future__ import generators
def puiss(x,n):
# retourne x^n
# x est un nombre entier non nul
# n est un entier naturel
#convention quand x<>0: x ^ 0 = 1
if n == 0:
return 1
else:
return x*puiss(x, n-1)
#####################
# PROGRAMME PRINCIPAL #
######################
x = int(input("Entrez un nombre entier NON NUL x : x = "))
n = int(input("Entrez un entier naturel n : n = "))
print x, "^" ,n, "=", puiss(x,n)
input("Appuyer sur Entrée pour quitter le programme.")
On obtient par exemple:
>>>
Entrez un nombre entier NON NUL x : x = 3
Entrez un entier naturel n : n = 0
3 ^ 0 = 1
Appuyer sur Entrée pour quitter le programme.
Ou encore par exemple:
>>>
Entrez un nombre entier NON NUL x : x = 2
Entrez un entier naturel n : n = 3
2 ^ 3 = 8
Appuyer sur Entrée pour quitter le programme.
-------------------------------------------------------------------------------------------------------------------
EXERCICE 3
Rédiger un programme comportant les conditions suivantes:
• Le "programme principal" demande à l'utilisateur d'entrer un réel x et un entier
naturel n , non simultanément nuls.
• Puis le " programme principal" fait appel ensuite à un script pour
discuter les cas n==0 , puis n>0 avec l'utilisation de while
retourne xn .
• Enfin le "programme principal" demande l'affichage de xn .
-------------------------------------------------------------------------------------------------------------------
Réponse:
def ps(x,n):
# retourne x^n
# x est un nombre entier non nul
# n est un entier naturel
#convention quand x<>0 c-à-d x != 0: x ^ 0 = 1
while n > 0:
return x*ps(x, n-1)
return 1
#####################
# PROGRAMME PRINCIPAL #
######################
x = input("Entrez un nombre entier NON NUL x : x = ")
n = int(input("Entrez un entier naturel n : n = "))
print x, "^" ,n, "=", ps(x,n)
input("Appuyer sur Entrée pour quitter le programme.")
On obtient par exemple:
>>>
Entrez un nombre entier NON NUL x : x = 2
Entrez un entier naturel n : n = 0
2 ^ 0 = 1
Appuyer sur Entrée pour quitter le programme.
OU encore par exemple:
>>>
Entrez un nombre entier NON NUL x : x = 2
Entrez un entier naturel n : n = 3
2 ^ 3 = 8
Appuyer sur Entrée pour quitter le programme.
OU encore par exemple:
>>>
Entrez un nombre entier NON NUL x : x = 1.5
Entrez un entier naturel n : n = 3
1.5 ^ 3 = 3.375
Appuyer sur Entrée pour quitter le programme.
LE PROGRAMME FONCTIONNE AUSSI POUR X NOMBRE DECIMAL.
----------------------------------------------------------------------------------------------------------------
EXERCICE 4
Rédiger un programme comportant les conditions suivantes:
• Le "programme principal" demande à l'utilisateur d'entrer un réel x et un entier
naturel n , non simultanément nuls.
• Puis le " programme principal" fait appel ensuite à un script pour
retourner pow( x , n) .
• Enfin le "programme principal" demande l'affichage de xn .
---------------------------------------------------------------------------------------------------------------------
Réponse:
def pu(x,n):
return pow(x,n)
# PROGRAMME PRINCIPAL #
#####################"
x = input("Entrez un nombre entier NON NUL x : x = ")
n = input("Entrez un entier naturel n : n = ")
# On peut mettre int(input("Entrez un entier naturel n : n = "))
# Si l'on veut absolument que n soit un entier
print x, "^" ,n, "=", pu(x,n)
# On peut mettre print( x, "^" ,n, "=", pu(x,n))
# Mais il y aura des apostrophes
input("Appuyer sur Entrée pour quitter le programme.")
On obtient par exemple :
>>>
Entrez un nombre entier non nul x : x = 2
Entrez un entier naturel n : n = 0
2 ^ 0 = 1
Appuyer sur Entrée pour quitter le programme.
On obtient par exemple :
Entrez un nombre entier non nul x : x = 2
Entrez un entier naturel n : n = 3
2 ^ 3 = 8
Appuyer sur Entrée pour quitter le programme.
LE PROGRAME FONCTIONNE AVEC x NOMBRE DECIMAL
ET MEME AVEC L'EXPOSANT NOMBRE DECIMAL.
-------------------------------------------------------------------------------------------------------
Remarque:
Vous pouvez imaginer de modifier lestrois programmes
précédents pour retourner une erreur quand l'utilisateur
se trompe en mettant x = 0 et n = 0 malgré le des questions posées.
En effet ici le programme donnerait 1 ce qui est une erreur.
---------------------------------------------------------------------------------------------------