Académique Documents
Professionnel Documents
Culture Documents
2 Ti
2 Ti
ème
Niveau : 2 TI
Partie2
On interrogera 5 fois l’utilisateur ! Améliorer le jeu
en ajoutant un score (1 par bonne réponse et -1 sinon)
Partie3
Partie1
Objectifs :
Les différents types des variables.
Les nombre aléatoire (Aléa() / random())
Structure conditionnelle.
Décomposition de problème :
L’ordinateur choisi Table de Tester la réponse et afficher
au hasard 2 entiers multiplication (Bravo ou c’est faux)
a et b entre 0 et 10
Poser à l’utilisateur la Saisi de la réponse
question a*b= ? de l’utilisateur
TDO
Objet Type/nature Rôle
a, b Variable/Entier Deux variables tirés au hasard par l’ordinateur
p Variable/Entier Produit des deux entiers
test Variable/Booléen tester de la réponse de l’utilisateur
Break de savoir :
Note :
Une variable est une zone de la mémoire centrale de l'ordinateur dans
laquelle une valeur est stockée.
Une variable possède un identificateur (nom) et un type (numérique, booléen,..)
La bibliothèque random permet de générer des nombres aléatoires.
random(): tirer un réel aléatoire entre 0 et 1
randint(a,b): tirer un entier aléatoire entre a et b.
uniform(a,b): tirer un réel aléatoire entre a et b.
Note :
Structures conditionnelle (test) : permet d’exécuter un bloc de code selon qu’une
condition (test booléen) soit vérifié ou pas.
On distingue les formes suivantes :
Forme simple: if (“si”)
Forme complète: if…else (“si…sinon”)
Forme imbriqués (avec alternatives): if…elif…else (“si…sinon si… sinon”)
No te :
Les types des variables sont classés généralement en quatre catégories: les types
numériques (entiers & réels), les types alphanumériques (les chaines de caractères),
types booléens (Vrai/faux) et les tableaux (listes).
3) A part les opérateurs arithmétiques usuels, citer d’autres qu’on peut les appliquer
avec des opérandes numériques ?
Exercice d’application:
Aider votre professeur de math à trouver une solution informatique pour résoudre
l’équation suivante : F(x,y)= |2x+1|/y3
Sachant que x et y sont deux réels aléatoires (x € [0,1]
et y € [0,40])
Algorithme
Début EQUATION
1) xAléa () x est un réel aléatoire entre 0 et 1
2) yAléa (0,40) y est un réel aléatoire entre 1 et 40
3) Si y#0 alors
f RacineCarrée(Absolu(2*x+1)/exposant(y,3))
Afficher (‘’X=’’, arrondi(x,3), ‘’Y=’’, arrondi(y,3),, ‘’F=’’, arrondi(f,3),)
Fin
Programme python :
from random import *
from math import *
x=random()
y=uniform(1,40)
if (y!=0) :
f=sqrt(abs(2*x+1)/pow(y,3))
print("X=", round(x,3), "Y=", round(y,3), "F=",round(f,3))
Note :
Le module math contient des fonctions mathématiques de base (sqrt, abs, pow..)
round(x,nb) : fixer nb chiffres après la virgule.
Solution1 : Solution2 :
Algorithme categorie_enfant Algorithme categorie_enfant
Début Début
1) Afficher ("Saisir l'âge: ") 1) Afficher ("Saisir l'âge: ")
Lire (age) Lire (age)
2) SI age < 6 ALORS 2) SI age < 6 ALORS
Afficher ("Saisir un âge supérieur ou égal 6") Afficher ("Saisir un age supérieur ou égal 6")
SINON SI age <=7 ALORS SINON SI age …………. ET age ………… ALORS
Afficher ("Poussin") Afficher ("Poussin")
SINON SI age <=9 ALORS SINON SI age ………… ET age ………… ALORS
Afficher ("Pupille") Afficher ("Pupille")
SINON SI age <=11 ALORS SINON SI age ………… ET age ………… ALORS
Afficher ("Minime") Afficher ("Minime")
SINON SINON
Afficher ("Cadet") Afficher ("Cadet")
FIN SI FIN SI
Fin Fin
Suite Partie1
l’utilisateur doit s’identifier
au début du jeu à travers la
saisie de son nom et prénom
séparés par espace.
Affichons par la suite un
message de bienvenu à
l’utilisateur (en affichant
uniquement son prénom).
Décomposition de l’identification de
l’utilisateur :
Saisie de Chercher l’indice/position du caractère espace (séparateur) dans
Nom&Prénom la chaine Ch pos_espace pos(" ", Ch)
Chercher l’indice du dernier caractère de Ch Llong(Ch)
Avec indice du dernier caractère= L-1
Programme python :
from random import randint
#----------------Ajout de l'identification de l'utilisateur----------------
ch=input("Nom&Prénom du joueur (séparés par espace!):")
p_espace=(ch.find(" "))
L= len(ch)
prenom=ch[(p_espace)+1 :L] #--- avec L exclus---
print("Bienvenu", prenom, "dans notre jeu !")
#---------------Commençant le jeu -----------------------------------------
a=randint(0,10)
b=randint(0,10)
print(a,"*",b,"=", end=" ")
p=int(input())
test=(a*b==p)
if (test==True): print(test, "Bravo!")
else: print(test, "C'est faux!")
TDO
Objet Type/nature
a, b, p_espace, p, L Variable/Entier
test Variable/Booléen
ch, Prenom Variable/Chaine de caractère
Note :
En En python Description
algorith
me
Ord (c) Ord (c) Retourne le code ASCII du caractère c.
Chr (code) Chr (code) Retourne le caractère correspondant au code ASCII donné.
Pos (ch1, ch2) Ch2.find(ch1)) Retourne la première position de la chaîne ch1 dans ch2
InstructionsRésultats Interprétations
print(V[1:3]) 'èm' Caractère d'indice 1 au caractère d'indice 3 (exclu)
print(V[1:-7])
print(V[1:9:3] 'è f' Caractère d'indice 1 au caractère d'indice 9 (exclu)
) par pas = 3
print(V[:3]) '2èm' Premier caractère jusqu’au d'indice 3 (exclu)
print(V[5:]) 'Info' Caractère d'indice 5 au dernier
print(V[::3]) '2en' Caractère d'indice 0 au dernier caractère par pas =3
print(V[::-2]) 'on m2' En commençant de droite à gauche par pas = -2
V[0]='C' Erreur On ne peut pas changer les caractères d’une chaine
Affichage Interprétation
Instruction
s
s1+s2+s3 'La vie est belle.' Concaténation des 3 chaines.
s3*3 'belle.belle.belle.' Répéter 3 fois la chaine s3.
"E" not in s2 True Vérifie le non inclusion du caractère ‘E‘ dans
la chaine s2.
"la" in s1 False Vérifie l’inclusion de la chaine ‘la‘ dans la
chaine s1.
"belle "== s3 True Compare l’égalité entre les 2 chaines.
s2<=s3 True Compare l’infériorité de s2 par rapport à s3.
Partie 2 et 3
Interroger 5 fois l’utilisateur et ajouter un score (1 par bonne réponse et -1 sinon)
Améliorer par la suite l’affichage en ajoutant à chaque interrogation le numéro d’essai et
à la fin du jeu le résultat final comportant le nombre d’essais et le score final.
Objectifs :
La structure de contrôle itératives complète (boucle Pour)
Les listes
Décomposition de problème :
Initialiser le score à 0 pour débuter le jeu
Répéter
Demander et saisir le produit p de l’utilisateur
5 fois
p = a*b
Vrai Faux
Algorithme1
Score+=1 Programme
Score-=1 python1 :
Afficher bravo ! Afficher c’est import*
from random faux !
Début calculatrice score=0
[score=0] pour i de 0 à 4 faire for i in range(5):
Fin de jeu : Afficher le nombre d’essais et le score final
a=randint(0,10)
aAléa (0 ,10)
b=randint(0,10)
bAléa (0 ,10) p=int(input(str(a)+"*"+str(b)+"="))
Afficher (a,’’*’’, b,’’= ’’) if (a*b==p):
Améliorons l’affichage :
En algo En python
[ ] Pour compteur de Vi à Vf [Pas = valeur] faire for compteur in séquence :
Traitement Traitement
Fin pour Les éléments de la séquence sont issus
d'une chaîne ou d'une liste.
Une liste est une structure de données contenant plusieurs éléments de même type
ou de types différents, délimités entre 2 crochets.
Partie 4
Améliorons encore notre jeu :
En cas de réponse erronée, le programme
reposera la même question, tant que la
bonne réponse n'aura pas été donnée.
Test de la condition d’entrée
Fausse réponse :
p≠a*b
Objectifs :
La boucle à condition d’arrêt (Tantque)
Décomposition de problème :
Initialiser le score à 0 pour débuter le jeu
Break de savoir :
Note :
La boucle non bornée sans limite (Tantque/while) : permet de répéter un traitement
tant que la condition d’entrée est Vraie (valide/vérifiée).
Elle est utilisée si on ne connait pas à l’avance le nombre de répétitions.
En algorithme En python
[] Tantque condition_Vrai faire While condition_True:
Traitement Traitement
Fin tant que
Partie 5
Améliorons encore notre jeu :
Le programme fait un contrôle de saisie du
produit p donné par le joueur et n’accepte que
une valeur numérique (entier) pour déclencher
par la suite le jeu.
Sortir
Objectifs :
La boucle à condition d’arrêt (Répéter.. jusqu’a)
Fonctions prédéfinies sur les chaines de caractères.
Décomposition de problème :
Initialiser le score à 0 pour débuter le jeu
La boucle non bornée (c.-à-d. non limitée par de born inf et born sup) (Répéter..
jusqu’à/while True) : permet la répétition d’un Traitement jusqu'à ce qu’une condition de sortie
soit Vraie.
Dans cette boucle, le traitement est exécuté au moins une fois (1 ou +eurs) avant l'évaluation
de la condition d'arrêt.
Elle est utilisée si on ne connait pas à l’avance le nombre de répétitions.
Elle est fréquemment utilisée pour les contrôles de saisie.
En algorithme En python
[] Répéter while True:
Traitement Traitements
if condition_True:
Jusqu'à condition_Vrai
break
Partie 6
Améliorons encore notre jeu :
Contrôler toute saisie du produit p donné par le
joueur (doit être de type entier)
Donner la possibilité de rejouer (lancement du
jeu à la demande).
Objectifs :
Les sous programmes (procédures et fonctions)
Décomposition de problème :
[Initialiser Réponse à oui]
Programme
Principal
En algorithme En python
Fonction ma_fonction (paramètres formels :type) :type_résultat Def ma_fonction (param) :
Début Traitement
Traitement return résultat
Retourner Résultat (facultatif)
Fin def, mot-clé qui est l'abréviation de
Appel : var ma_fonction (param effectifs) (au niveau « define » (définir, en anglais)
du prog. principal)
Exemple :
def cube(x): print(cube(3)) affiche 27
return (x * x * x) print(cube(5)) affiche 125
En algorithme En python
Procedure ma_procedure(paramètres formels :type) Def ma_procedure(param) :
Début Traitement
Traitement
Fin
Appel : ma_procedure (param effectifs) (au niveau du
prog. Princip.)
Exemple :
def message ():
message() affiche Fonction
print ("Fonction sans retour de valeur !")
sans retour de valeur !
Une variable déclarée dans un sous-programme est dite locale est elle n’est accessible
que depuis ce sous-programme (indéterminée dehors)
Scripts Résultat
Afficher la table de multiplication par 7: 1*7=7
2 * 7 = 14
def tableMult_par_7(): 3 * 7 = 21
i = 1 4 * 7 = 28
while i <= 10: 5 * 7 = 35
print(i, "*", 7, "=", i * 7) 6 * 7 = 42
i += 1 # On incrémente i de 1 à chaque tour de boucle. 7 * 7 = 49
8 * 7 = 56
# appelle de la procédure
9 * 7 = 63
tableMult_par_7()
10 * 7 = 70
Afficher le min suivi du max de 2 entiers:
def calculMiniMaxi(x,y):
if x<y: print (x,y)
else: print (y,x) 2, 10
# appelle de la procédure
calculMiniMaxi(2,10)
x et y sont passées par valeurs fixes (pas de changement)
Afficher le périmètre et l’aire d’un rectangle:
def rectangle(x,y):
print("périmètre :",2*(x+y),"aire :",x*y) périmètre : 24
aire : 35
# appelle de la procédure
rectangle(7,5)
x et y sont passées par valeurs (pas de changement)
Afficher la somme de la suite de n entiers:
def sommeEntiers(n):
somme = 0
for i in range(n+1):
somme += i 21
return somme
# appelle de la fonction
s=sommeEntiers(6)
print(s)
Afficher la somme et le produit de deux entiers:
def somme_produit(a,b):
s = a + b
13 42
p = a * b
print(s, p)
# appelle de la procédure
somme_produit(6,7)
a et b sont passées par valeurs (pas de changement)
Algorithme procédure
saisie_produit :
Procédure saisie_produit (@X: entier)
Début
Répéter
Afficher (’’Essai’’, i+1, ’’ :’’, a,’’*’’, b,’’= ’’)
Lire(X)
Jusqu'à estnum(X)
Fin
Partie 6
Améliorons encore notre jeu :
Contrôler toute saisie du produit p donné par le
joueur (doit être de type entier)
Donner la possibilité de rejouer (lancement du
jeu à la demande).
Objectifs :
Les sous programmes (procédures et fonctions)
Décomposition de problème :
[Initialiser Réponse à oui]
Programme
Principal
En algorithme En python
Fonction ma_fonction (paramètres formels :type) :type_résultat Def ma_fonction (param) :
Début Traitement
Traitement return résultat
Retourner Résultat (facultatif)
Fin def, mot-clé qui est l'abréviation de
Appel : var ma_fonction (param effectifs) (au niveau « define » (définir, en anglais)
du prog. principal)
Exemple :
def cube(x): print(cube(3)) affiche 27
return (x * x * x) print(cube(5)) affiche 125
En algorithme En python
Procedure ma_procedure(paramètres formels :type) Def ma_procedure(param) :
Début Traitement
Traitement
Fin
Appel : ma_procedure (param effectifs) (au niveau du
prog. Princip.)
Exemple :
def message ():
message() affiche Fonction
print ("Fonction sans retour de valeur !")
sans retour de valeur !
Une variable déclarée dans un sous-programme est dite locale est elle n’est accessible
que depuis ce sous-programme (indéterminée dehors)
Scripts Résultat
Afficher la table de multiplication par 7: 1*7=7
2 * 7 = 14
def tableMult_par_7(): 3 * 7 = 21
i = 1 4 * 7 = 28
while i <= 10: 5 * 7 = 35
print(i, "*", 7, "=", i * 7) 6 * 7 = 42
i += 1 # On incrémente i de 1 à chaque tour de boucle. 7 * 7 = 49
8 * 7 = 56
# appelle de la procédure
9 * 7 = 63
tableMult_par_7()
10 * 7 = 70
Afficher le min suivi du max de 2 entiers:
def calculMiniMaxi(x,y):
if x<y: print (x,y)
else: print (y,x) 2, 10
# appelle de la procédure
calculMiniMaxi(2,10)
x et y sont passées par valeurs fixes (pas de changement)
Afficher le périmètre et l’aire d’un rectangle:
def rectangle(x,y):
print("périmètre :",2*(x+y),"aire :",x*y) périmètre : 24
aire : 35
# appelle de la procédure
rectangle(7,5)
x et y sont passées par valeurs (pas de changement)
Afficher la somme de la suite de n entiers:
def sommeEntiers(n):
somme = 0
for i in range(n+1):
somme += i 21
return somme
# appelle de la fonction
s=sommeEntiers(6)
print(s)
Afficher la somme et le produit de deux entiers:
def somme_produit(a,b):
s = a + b
13 42
p = a * b
print(s, p)
# appelle de la procédure
somme_produit(6,7)
a et b sont passées par valeurs (pas de changement)
Algorithme procédure
saisie_produit :
Procédure saisie_produit (@X: entier)
Début
Répéter
Afficher (’’Essai’’, i+1, ’’ :’’, a,’’*’’, b,’’= ’’)
Lire(X)
Jusqu'à estnum(X)
Fin
Partie 7
Améliorons encore notre jeu en affichant à la fin les scores correspondant aux parties
jouées.
Objectif :
Les tableaux à une dimension (vecteurs)
Algorithme principal
Début calculatrice
[reponse" oui" j=0] #---j contient le numéro de partie---
Tantque (reponse="oui") faire
print("************************************")
print("Fin de jeu et résultat: ")