• Aucun résultat trouvé

Dans le cas d une structure de programme permettant d effectuer un ou plusieurs tests, on utilise l expression if.

N/A
N/A
Protected

Academic year: 2022

Partager "Dans le cas d une structure de programme permettant d effectuer un ou plusieurs tests, on utilise l expression if."

Copied!
19
0
0

Texte intégral

(1)

Numérique et Science Informatique

Thème 2 : Langages et programmation : données de types construits Résumé du chapitre 1 : les éléments d’un programme

Le cours complet est à consulter sur le site de NSI 1

ère

partie : Notions de base et syntaxe

L'instruction print permet d'afficher du texte dans notre programme.

Exemple : print("Bonjour")

On peut ajouter des indications pour empécher le retour à la ligne, ou pour séparer des variables en cas d'affichage multiple

L'instruction for loop in range(n) permet de répéter des instructions n fois.

Exemple :

for loop in range(5):

print("Coucou")

l'instruction à répéter est indenté (décalé) pour indiquer qu'elle appartient à l'instruction de répétition.

Une variable est une sorte de boîte pouvant contenir des valeurs.

Ex : v=1 ou v= "bonjour" ; v est le nom de la variable et 1 et bonjour des valeurs

Ainsi une variable peut être de type int (nombre entier), float (nombre à virgule), str (chaîne de caractère), boolean (vrai ou faux) et d'autres types que nous verrons par la suite.

Les variables peuvent être modifiées.

Exemple : contenance = 60

contenance = contenance – 15

L'affectation contenance = contenance - 15 décrit l' action suivante : l'enregistrement de la

valeur placée à droite du = dans la variable indiquée à gauche.

Les variables peuvent être comparées entre-elles (si elles sont du même type), on utilise alors des opérateurs de comparaison. La comparaison de variables est considérée comme une expression. Le résultat de cette comparaison est soit vrai, soit faux (True ou False).

RRQ. Une expression est donc toujours de type booléen.

Opérateur Signification Remarques

< strictement inférieur

<= inférieur ou égal

> strictement supérieur

>= supérieur ou égal

== égal Attention : deux signes ==

!= différent

is identique Deux conditions : égal et même type is not non identique

Dans le cas d’une structure de programme permettant d’effectuer un ou plusieurs tests, on

utilise l’expression if.

L'expression input() permet de demander une entrée à l'utilisateur du programme. Si cette entrée est une donnée numérique il faut utiliser l'expression int() : n =

int(input())

On peut également utiliser des

opérateurs logiques : and, or, not.

(2)

Réaliser des tests

Dans le cas où l’on veut tester de nombreuses expressions, il est

intéressant d’utiliser l’instruction « elif » (contraction de else if).

Elle est toujours associée à une instruction if.

Si l'expression 1 est vraie alors le bloc d'instructions 1 est exécuté, et on passe à la suite du programme.

Si l'expression 1 est fausse alors on teste l'expression 2 :

o

si l'expression 2 est vraie on exécute le bloc

d'instructions 2, et on passe à la suite du programme.

o

si l'expression 2 est fausse alors on teste l'expression 3, etc...

Le bloc d'instructions 5 est donc exécuté si toutes les expressions sont fausses (c'est le bloc "par défaut").

Parfois il n'y a rien à faire.

Dans ce cas, on peut omettre l'instruction else

2

ème

partie : Exercices d'apprentissage

Utilisation de l'instruction print

Exercice 1 : Ecrivez un programme qui écrira : Hello World ! Exercice 2 : Ecrivez un programme qui écrira :

Nous sommes en spécialité NSI Nous apprenons le langage python Nous sommes en "première"

Répétition d'instruction : utilisation du for

Exercice 3 : Corrigez les erreurs contenues dans le programme ci-dessous afin qu'il affiche 13 fois de suite le texte 9 * 8 = 72.

for loop in range(13) print("9 * 8 = 72)

Exercice 4 : Ecrire un programme qui permet d'afficher deux fois les textes : "Bonjour !" , "Comment vas-tu ?"

Exercice 5 : Ecrire un programme qui permet d'afficher trois fois : "Bonjour !" et une fois "Comment vas-tu ?"

Exercice 6 : Votre programme doit écrire 3 lignes, chacune contenant plusieurs fois de suite une lettre suivie du caractère « _ » (underscore en anglais) : la lettre « a » sur la première ligne, la lettre « b » sur la deuxième et la lettre « c » sur la troisième.

Vous disposez déjà d'un modèle où chaque ligne contient 4 lettres :

Cependant, vous vous dites qu'il serait mieux de mettre 30 lettres par ligne.

Écrivez un programme qui étend votre modèle. Bien sûr, vous utiliserez une boucle pour ne pas vous fatiguer à écrire vous-même 30 fois chaque lettre.

if (expression):

bloc d’instructions

# suite du programme

if (expression 1):

bloc d’instructions 1

elif (expression 2):

bloc d’instructions 2

elif (expression 3):

bloc d’instructions 3

elif (expression 4):

bloc d’instructions 4

else :

bloc d’instructions 5

# suite du programme

a_a_a_a_

b_b_b_b_

c_c_c_c_

(3)

Exercice 7 : Un damier de dimension 4×4 peut se représenter sous la forme suivante : OXOX

XOXO OXOX XOXO

Votre programme doit afficher un damier de taille 40×40. Assurez-vous bien que la case tout en haut à gauche contienne un « O », comme c'est le cas dans le damier ci-dessus.

Répétitions imbriquées

Exercice 8 : En utilisant les indications précédentes, écrivez le programme qui permet d'afficher un rectangle rempli de X de 5 lignes sur 10 colonnes.

Faire des calculs

Exercice 9 : Une école est formée de 4 classes, constituées respectivement de 25, 30, 27 et 22 élèves.

Cependant, 8 élèves sont absents aujourd'hui. Sachant que chaque élève présent doit recevoir 3 bonbons, écrivez un programme qui calcule puis affiche le nombre total de bonbons nécessaires.

Vous n'avez pas besoin de calculatrice : effectuez les calculs dans votre programme.

Mémoriser des informations : les variables

Exercice 10 : L'algoréathlon se constitue de trois étapes à effectuer chaque jour : 2 km de natation, 34 km de cyclisme et 6 km de course à pied.

Sachant qu'un sportif répète ces trois étapes pendant 3 jours de suite, vous devez afficher la distance totale qu'il a parcourue à la fin du 1er jour, à la fin du 2e jour, puis à la fin de l'algoréathlon complet.

Exercice 11 : La cour carrée a été mesurée avec quatre bâtons de longueurs respectives 17 m, 7 m, 5 m et 2 m. La longueur du côté de la cour est égale à 5 fois le premier bâton plus 2 fois le second plus 1 fois le troisième plus 2 fois le quatrième.

Votre programme doit afficher deux lignes : la première doit contenir la surface de la cour, et la seconde ligne doit contenir son périmètre. Les résultats doivent être exprimés en mètres carrés et en mètres, respectivement, mais vous ne devez pas afficher l'unité après la valeur numérique.

Important : dans votre programme, commencez par calculer la longueur du côté de la cour et l'enregistrer dans une variable.

Modifier une variable – plusieurs variables

Exercice 12 : Votre programme doit compter jusqu'à 100, c'est à dire afficher les entiers de 1 à 100, un par ligne, et ensuite afficher « J'arrive ! ». Ainsi, s'il ne devait compter que jusqu'à 3 au lieu de 100, votre programme devrait afficher :

↳ 1 2 3 J'arrive !

Exercice 13 : Votre programme devra lancer le décompte en partant de 100 puis annoncer le décollage, c'est-à-dire afficher une séquence d'annonces de la forme :

100 99 ...

2 1 0

Décollage !

Important : votre programme ne doit pas faire plus d'une quinzaine de lignes.

en remplaçant les « … » par toutes les valeurs intermédiaires.

(4)

Exercice 14 : L'automne ayant été très pluvieux, les Bufo Algo, une espèce locale de crapauds, se sont reproduits en grand nombre, et les habitants ont constaté que leur nombre doublait chaque semaine

! Leurs prédateurs naturels, les couleuvres (un type de serpent), sont complètement dépassés ! Sachant qu'il y a actuellement 1337 crapauds et que leur nombre double chaque semaine, votre programme devra afficher le nombre de crapauds qu'il y aura après la 12e semaine.

Important : vous devez utiliser une boucle pour calculer le nombre de crapauds.

Exercice 15 : Toucher la cible au premier tir rapporte un bonbon, toucher la cible au deuxième tir rapporte deux bonbons de plus, la toucher au troisième tir rapporte encore trois bonbons de plus, etc. Écrivez un programme qui affiche sur la première ligne le nombre total de bonbons obtenus si l'on ne réussit qu'1 tir, puis qui affiche sur la deuxième ligne le nombre de bonbons récupérés si l'on réussit 2 tirs de suite, puis sur la troisième ligne le nombre de bonbons récupérés si l'on réussit 3 tirs de suite, etc. jusqu'à la valeur que l'on peut récupérer si l'on réussit 50 tirs de suite.

Par exemple, si votre programme s'arrêtait à 5 et non à 50, il devrait afficher ceci :

↳ 1 3 6 10 15

Exercice 16 : L'objectif est de construire une tour à l'aide de petits cubes en bois, sachant que la forme de cette tour consiste en un ensemble de grands cubes placés les uns au-dessus des autres. La base de la tour est un cube de taille 17×17×17, c'est-à-dire composé de 17×17×17 = 4 913 petits cubes. Sur ce cube est posé un autre cube de taille 15×15×15. Au-dessus de ce dernier se trouve un cube de 13×13×13. La tour continue ainsi jusqu'à atteindre le sommet, qui consiste en un cube de taille 1×1×1.

Votre programme doit calculer et afficher le nombre total de petits cubes nécessaires pour construire la pyramide. Effectuez les calculs dans le programme en y intégrant une boucle.

Exercice 17 : Voici à quoi ressemble la table de multiplication allant jusqu'à 5 fois 5.

↳ 1 2 3 4 5 2 4 6 8 10 3 6 9 12 15 4 8 12 16 20 5 10 15 20 25

Écrivez un programme qui affiche une table de multiplication allant jusqu'à 20 fois 20.

Lecture d'une entrée

Exercice 18 : Votre programme doit lire un entier, qui représente la longueur du côté d'un champ carré en mètres. Il doit ensuite afficher la masse que l'on pourra récolter de ce champ si l'on suppose que la production sera de 23 kg par mètre carré.

Exemple : entrée : 10 sortie : 2300

Exercice 19 : Votre programme doit lire un entier, le nombre de lignes souhaité, et écrira autant de fois que demandé la phrase « Je dois suivre en cours ».

Exemple entrée : 3 sortie :

Je dois suivre en cours Je dois suivre en cours Je dois suivre en cours

(5)

Exercice 20 : Étant données deux températures entières tempMin et tempMax, votre programme doit afficher toutes les températures comprises entre les deux, bornes incluses.

Exemple entrée : 9 14 sortie : 9 10 11 12 13 14

Exercice 21 : Un nombre de départ va être donné par le chef du village. La personne qui suit doit le multiplier par 2, puis la suivante doit multiplier le nombre obtenu par 3, celle d'encore après doit multiplier le résultat par 4… jusqu'à ce que les nbNombres calculs aient été effectués.

Le chef a choisi le nombre 66 pour démarrer le jeu. Votre programme lira l'entier nbNombres, la quantité de nombres attendue par le jeu (nombre de départ inclus). Il devra ensuite afficher tous les nombres de la partie.

Exemples Exemple 1 entrée : 4 sortie : 66 132 396 1584

Tests et conditions

Exercice 22 : Votre programme doit lire deux entiers, correspondant à deux numéros de bornes kilométriques, et il doit afficher la distance séparant ces deux bornes. Notez que le résultat doit être un nombre positif ou nul.

Exemples :

Exercice 23 : Votre programme devra lire deux entiers, la superficie d'un champ des Arignon et la superficie d'un champ des Evaran. Si l'un des champs est plus grand d'au moins 10 m² (strictement) que l'autre champ, alors il faudra afficher le texte « La famille X a un champ trop grand », « X » devant bien sûr être remplacé par « Arignon » ou « Evaran » selon le cas.

Exemples :

Exemple 2 entrée : 1 sortie : 66

Commentaires

Les valeurs du premier exemple correspondent aux calculs suivants :

• 66

• 66 × 2 = 132

• 132 × 3 = 396

• 396 × 4 = 1584

Exemple 1 entrée : 152 189 sortie : 37

Exemple 2 entrée : 814 786 sortie : 28

Exemple 1 entrée : 42 54 sortie :

La famille Evaran a un champ trop grand

Exemple 2 entrée : 10 20 sortie :

Dans le second exemple, il n'y a rien à afficher.

(6)

Exercice 24 : Votre programme doit lire deux entiers, compris entre 1 et 6, la valeur de chaque dé. Si la somme est supérieure ou égale à 10, alors vous devez payer une taxe spéciale (36 pièces). Sinon, vous payez deux fois la somme des valeurs des deux dés. Votre programme devra afficher selon le cas le texte « Taxe spéciale ! » ou bien « Taxe régulière », puis la somme à payer (sans indiquer l'unité).

Exercice 25 : Votre programme devra lire un premier entier : le nombre de membres nbMembres qui constituent une équipe. Ensuite, il devra lire les poids (en kilogrammes), au total nbMembres × 2, sachant que le premier poids est celui d'un joueur de la 1re équipe, le deuxième poids celui d'un joueur de la 2e équipe, le troisième la 1re équipe, le quatrième la 2e équipe, etc.

Après avoir calculé le poids total de chaque équipe, vous devrez afficher le texte « L'équipe X a un avantage » (en remplaçant X par la valeur 1 ou 2), en considérant qu'une équipe est avantagée si elle a un poids total supérieur à celui de l'autre.

Vous afficherez ensuite le texte « Poids total pour l'équipe 1 : » suivi du poids de l'équipe 1, puis « Poids total pour l'équipe 2 : » suivi du poids de l'équipe 2 (voir l'exemple ci-dessous).

Exemple entrée : 3 40 80 50 50 60 10 sortie :

L'équipe 1 a un avantage Poids total pour l'équipe 1 : 150 Poids total pour l'équipe 2 : 140

Exercice 26 : On vous donne le nombre d'habitants d'un certain nombre de lieux que vous visitez.

Une ville étant un lieu dont la population est strictement supérieure à 10 000 habitants, déterminez combien de lieux sont des villes.

Votre programme doit lire un entier : le nombre de lieux. Il doit ensuite lire, pour chaque lieu, un entier donnant le nombre de gens qui y habitent. Votre programme doit alors afficher le nombre de villes.

Exemple entrée : 6 1000 5000 15000 4780 0 23590 sortie : 2

Exemple 1 entrée : 5 6 sortie :

Taxe spéciale ! 36

Exemple 2 entrée : 4 3 sortie : Taxe régulière 14

Aide : On commence par calculer les poids des deux équipes en lisant les poids deux à deux à l'aide d'une boucle. On utilise ensuite une structure « si/sinon » pour afficher l'équipe qui est la plus lourde. Enfin, on affiche les poids des deux équipes. L'important est de ne pas écrire deux fois le code représentant la dernière étape (en la mettant dans le bloc du « si » et celui du « sinon ») mais en l'écrivant une seule fois après la structure conditionnelle.

(7)

Les opérateurs booléens : le « et »

Exercice 27 : On vous donne un intervalle de temps pendant lequel on sait qu'un espion est arrivé, puis la date d'arrivée d'un certain nombre de personnes.

Déterminez combien de ces personnes peuvent être cet espion.

Votre programme doit d'abord lire deux entiers : la date de début et la date de fin de l'intervalle pendant lequel on sait que l'espion est arrivé en ville.

Il doit ensuite lire un entier nbEntrées, le nombre total de personnes entrées dans la ville, puis les nbEntrées nombres suivants qui représentent les dates d'entrée (non triées) des différentes personnes.

Votre programme doit afficher le nombre de personnes entrées entre les deux dates données, incluses.

Exemple entrée : 6 10 5 7 11 8 3 6 sortie : 3

Les opérateurs booléens : le « ou »

Exercice 28 : Écrivez un programme qui lit un numéro de mois algoréen, et affiche le nombre de jours de celui-ci. Les Algoréens disposent de leur propre calendrier. Voici les informations dont vous avez besoin :

Numéro du mois Nombre de jours

1 30

2 30

3 30

4 31

5 31

6 31

7 30

8 30

9 30

10 31

11 29

Exercice 29 : Vous devez écrire un programme qui détermine si deux soldats ont été de garde en même temps.

Votre programme doit lire quatre entiers : la date du début et la date de fin (incluse) du service du premier soldat puis celles du second soldat.

Si les deux soldats ont, à un moment (même une seule seconde), été de garde en même temps le programme devra écrire "Amis" et sinon "Pas amis".

Dans l'exemple, l'espion est entré dans la ville entre le jour 6 et le jour 10, et 5 personnes sont enregistrées dans les données de la ville. Dans le schéma ci-dessous, une colonne correspond à un jour (dont le numéro se trouve en haut), et l'intervalle est représenté par le segment à bouts ronds

Pour chaque personne Pi, on a représenté sa date d'entrée dans la ville avec une barre (accompagnée du numéro de la personne). On voit que 3 dates se trouvent dans l'intervalle

Exemple entrée : 6 sortie : 31

Exemple 1 entrée : 2 5 3 6 sortie : Amis

Exemple 2 entrée : 1 5 10 15 sortie : Pas amis

Exemple 3 entrée : 2 4 4 6 sortie : Amis

(8)

Les variables booléennes

Exercice 30 : On vous donne un entier, le numéro d'une personne recherchée, puis un entier

tailleListe, et enfin tailleListe entiers parmi lesquels vous devez chercher le numéro de la personne. Si le numéro est présent dans la liste (il peut l'être plusieurs fois) vous devez afficher le texte "Sorti de la ville" sinon "Encore dans la ville".

Exemple entrée : 42 5 1 7 172 2 41 sortie :

Encore dans la ville

Les opérateurs booléens : la négation

Exercice 31 : Votre programme doit lire entier : un nombre de personnes à considérer. Ensuite, pour chaque personne, il doit lire son signalement sous la forme de cinq entiers : sa taille en centimètres, son âge en années, son poids en kilogrammes, un entier valant 1 si la personne possède un cheval et 0 sinon, et un entier valant 1 si la personne à les cheveux bruns et 0 sinon.

On veut déterminer pour chaque personne à quel point elle correspond aux 5 critères suivants :

• il aurait une taille supérieure ou égale à 178 cm et inférieure ou égale à 182 cm ;

• il aurait au moins 34 ans ;

• il pèserait strictement moins de 70 kg ;

• il n'a pas de cheval ;

• il a les cheveux bruns.

Lorsque cela n'est pas précisé explicitement, les inégalités sont au sens large.

Pour chaque personne, vous devez tester tous les critères. S'ils sont vérifiés tous les 5, vous devez afficher « Très probable ». Si seulement 3 ou 4 sont vérifiés, vous devez afficher « Probable ». Si aucun n'est vérifié, vous devez afficher « Impossible », et dans les autres cas, vous devez afficher « Peu probable ».

Faire des tests : le « sinon si »

Exercice 32 : Un grand magasin propose une offre spéciale : si on achète pour plus de 300 euros de produits on a une remise de 40 euros, sinon si on achète pour plus de 200 euros on a une remise de 25 euros, sinon si on achète pour plus de 100 euros on a une remise de 10 euros sinon on a aucune remise.

Traduisez ce programme en python en utilisant des termes elif

Il faut tester si un entier est présent dans une liste. Pour cela on utilise une variable booléenne qui vaut "faux" au début. On regarde alors tous les entiers de la liste et si on trouve celui de la personne on met cette variable à "vraie". À la fin, il suffit de tester la valeur de la variable et d'afficher le bon texte.

Exemple entrée : 1 180 40 65 0 1 sortie : Très probable

(9)

Exercice 33 : On réalise une expérience consistant à demander à plusieurs personnes de placer chacune un jeton sur une table contenant des zones de différentes couleurs. Les chercheurs

souhaitent ainsi étudier si le choix de la zone où une personne place son jeton est lié à la couleur des vêtements qu'elle porte.

On vous donne en entrée le nombre de jetons qui ont été déposés, puis, pour chaque jeton, ses coordonnées sur la feuille par rapport à l'origine en haut à gauche, sous la forme d'une abscisse et d'une ordonnée entre −1 000 et 1 000.

Votre programme devra qualifier chaque jeton avec l'un des textes suivants, en fonction de la couleur sur laquelle il se trouve :

• « En dehors de la feuille »

• « Dans une zone jaune »

• « Dans une zone bleue »

• « Dans une zone rouge »

Essayez d'écrire votre programme de sorte qu'il y ait au maximum une condition par possibilité de texte affiché.

Exemple entrée : 4 16 12 30 22 64 62 -5 86

Dans l'exemple, on a 4 jetons, de coordonnées (16 ; 12), (30 ; 22), (64 ; 62) et (-5 ; 86).

Nombres à virgule

Exercice 34 : L'épaisseur d'une feuille de papier est de 110 micromètres c'est à dire 0,110

millimètres. Si on la plie 15 fois sur elle-même et que l'épaisseur double à chaque fois, quelle sera l'épaisseur finale si on l'exprime en centimètres ? Votre programme devra calculer et afficher cette valeur (qui n'est pas forcément entière).

Exercice 35 : Écrivez un programme qui lit un nombre décimal (un nombre à virgule) représentant un nombre de lieues et affiche le nombre de kilomètres correspondant. Un kilomètre vaut exactement 0.707 lieues.

Exemple entrée : 10.5 sortie :

14.8514851485

Exercice 36 : Des écoliers d'une école voisine aiment bien calculer la moyenne qu'ils vont avoir sur leur bulletin de notes avant de le recevoir. Cependant, ils ont beaucoup de notes, et ils aimeraient donc pouvoir utiliser un petit programme pour calculer leur moyenne sans se fatiguer.

Le nombre de notes dépend non seulement des matières, mais aussi des possibles absences de chacun. Aussi, le programme doit être capable de calculer la moyenne d'un nombre

arbitraire de notes. C'est pourquoi vous concevez un programme auquel il faut

d'abord fournir le nombre de notes dont il faut faire la moyenne, puis fournir les notes elles-mêmes (une par une).

Votre programme doit d'abord lire un premier entier, qui décrit le nombre de notes obtenues. Ensuite, il doit lire chacune de ces notes, qui sont également des nombres entiers. Enfin, il doit afficher la moyenne de toutes ces notes.

sortie :

Dans une zone bleue Dans une zone jaune Dans une zone rouge En dehors de la feuille

Exemple entrée : 3 10 14 15 sortie : 13.0

(10)

Utilisation de modules externes

Exercice 37 : Votre programme devra lire un entier, la population actuelle de la ville, puis un nombre décimal, la croissance prévue de la population, en pourcentage. Il devra alors afficher la nouvelle population de la ville sous la forme d'un nombre entier. On considérera, par convention, qu'une population de 31,4 habitants signifie qu'il y a 31 habitants, on ne compte donc que les habitants « entiers » !

Ci-dessous quelques formules pour vous aider dans la conception du programme de l'exercice avec une augmentation de population de 15%

Exercice 38 : Votre programme devra lire un nombre décimal, la quantité de ciment nécessaire pour les fondations de votre nouvelle maison, en kilos. Sachant que le ciment n'est vendu qu'en sacs de 60 kilos et qu'un sac coûte 45 euros, votre programme devra afficher le coût total du ciment.

Exemple entrée : 145.8 sortie : 135

Exercice 39 : Votre programme devra lire un décimal, le temps (en secondes) entre le moment où vous voyez l'éclair et le moment où vous entendez le tonnerre. Il devra calculer et afficher la distance entre vous et l'orage, arrondi au kilomètre près.

On supposera que la lumière se déplace instantanément. La vitesse du son dépend de paramètres comme l'altitude, la température...mais on supposera qu'en cette soirée elle vaut 340,29 mètres / seconde.

Exemple entrée : 3.0 sortie : 1

Division entière et reste

Exercice 40 : Vous commencez à apprendre une nouvelle langue et décidez d'acheter quelques livres pour vous entraîner. Vous trouvez un vendeur qui propose de nombreux livres à des prix avantageux.

Vous disposez d'une certaine somme d'argent et vous vous demandez combien de livres vous pouvez acheter, sachant qu'ils sont tous au même prix.

Votre programme doit commencer par lire la somme d'argent dont vous disposez et lira ensuite le prix d'un livre. Il devra ensuite afficher un entier, le plus grand nombre de livres qu'il vous est possible d'acheter avec cette somme d'argent.

Exemple entrée : 27 5 sortie : 5

Exemple 1 entrée : 123 7.0 sortie : 131

Exemple 2 entrée : 456 -5.5 sortie : 430

Comme on connait la vitesse du son et le temps que celui-ci a mis pour parcourir la distance il est facile de calculer la distance (en mètres) en faisant distanceMetres  tempsParcours * vitesseSon

on a donc

distanceKilometres  (tempsParcours * vitesseSon) / 1000

(11)

Exercice 41 : Vous êtes chargé d'acheter des fruits pour un grand repas organisé pour fêter la dernière récolte qui a été très fructueuse. Les vendeurs proposent généralement leurs fruits par paquets. Vous souhaitez acheter un paquet dont le nombre de fruits soit un multiple du nombre de personnes conviées, de sorte que chaque invité ait le même nombre de fruits.

Votre programme doit commencer par lire un entier nbPersonnes puis un entier nbFruits. Il doit ensuite afficher "oui" si nbFruits est un multiple de nbPersonnes, et "non" dans le cas contraire.

Exemple entrée : 12 156 sortie : oui

Exercice 42 : Lors de l'examen final à la fin de leurs études, la tradition veut que les élèves tirent un sujet au hasard. Tirer un numéro dans un chapeau n'étant pas très amusant, ils utilisent une roue

comme celle-ci, qu'ils peuvent faire tourner dans un sens ou dans l'autre.

Votre programme doit commencer par lire un entier nbZones. Sachant que la roue va tourner de nbZones zones, vous devez calculer (puis afficher) sur quelle zone le curseur va arriver.

Ainsi, si la route tourne de +2 zones alors le curseur arrive sur la zone 2, et si la roue tourne de -2 zones, alors le curseur arrive sur la zone 22.

Un peu de culture

Vous retrouverez fréquemment le nombre 42 en informatique, mais aussi dans un certain nombre de films et jeux vidéos. Il s'agit d'une référence à un feuilleton radio de science-fiction humoristique, The Hitchhiker's Guide to the Galaxy (Le Guide du voyageur galactique), écrit par Douglas Adams et qui a depuis fait l'objet de livres et d'un film. Dans cette fiction, le super-ordinateur Deep

Thought (Pensées Profondes), après plus de 7 millions d'années de calculs, apporte la réponse à « La grande question sur la Vie, l'Univers et le Reste ». Et cette réponse est… 42 !

3

ème

partie : Exercices en classe ou maison

Exercice 1

Ecrivez un programme qui fait saisir un prix hors taxes à l'utilisateur, puis qui affiche le prix TTC correspondant en se basant sur un taux de TVA à 19,6%.

• Utilisez des variables aux noms explicites.

• Rappel : la demande d’une information saisie au clavier par un utilisateur est codée par input(“la question posée“)

Modifiez ensuite votre programme pour permettre à l’utilisateur de choisir le taux de TVA.

Exercice 2

Quel problème peut se poser avec le programme suivant ? Le corriger.

f = f * 1 f = f * 2 f = f * 3 f = f * 4 f = f * 5 print(f)

Exemple 1 entrée : 25 sortie : 1

Exemple 2 entrée : -50 sortie : 22

(12)

Exercice 3

On donne un extrait des logins d'accès au réseau du lycée : Identifiant Mot de passe

slevy motdepasse1

Jetienne motdepasse2

prey motdepasse3

La saisie du login fournit deux variables Identifiant et Motdepasse : une pour l'identifiant et l'autre pour le mot de passe.

Construire une variable booléenne qui donne True en cas d'identification correcte, et False dans le cas contraire

Exercice 4

Ecrivez un programme qui fait saisir une température en degrés Celsius, puis affiche le résultat de sa conversion en degrés Fahrenheit.

Rappel : en informatique, la virgule s'écrit avec un point.

"C'est à Daniel Gabriel Fahrenheit que l'on doit l'invention des thermomètres en

graduation Fahrenheit. Au début, ses thermomètres sont à l'alcool (1709), mais il remplace rapidement l'alcool par du mercure (1715), permettant à ses outils de mesure de fournir des données comparables. En 1742, un autre scientifique, Anders Celsius, propose une nouvelle graduation au thermomètre. La conversion entre les échelles est donnée par [°F] = [°C] x 9/5 + 32."

Exercice 5

Ecrire un programme qui, étant donné une équation du second degré, détermine le nombre de ses solutions réelles et leurs valeurs éventuelles.

Rappel : le discriminant du trinôme ax2 + bx + c est Δ=b2-4ac Si Δ<0 alors l’équation n’admet aucune solution réelle.

Si Δ=0 alors l’équation admet une solution double : x=-b/2a Si Δ>0 alors l’équation admet 2 solutions réelles distinctes :

X= et X=

Aide : votre programme doit obligatoirement commencer par from math import *

pour vous permettre d’utiliser des signes mathématiques comme sinus : sin (variable), cosinus : cos(variable) ou racine carré : sqrt(variable)

Exercice 6

Le but de cet exercice est d’écrire un programme qui demande à l’utilisateur une date comprise entre le 1er janvier 1901 et le 31 décembre 2099 et qui indique le nombre de jours écoulés entre le premier janvier 1901 et cette date.

Une bonne approximation de ce nombre est

(a – 1901) * 365 + (m – 1)*30 + j – 1 avec a : l'année, m : le mois et j : le jour

Mais il faut lui ajouter deux termes correctifs :

• Le premier est dû au fait que tous les mois ne font pas trente jours.

On peut montrer que ce terme correctif vaut m//2 quand m est compris entre 1 et 2 et (m + m//8)//2 -2 quand m est compris entre 3 et 12.

• Le second est dû aux années bissextiles. On peut montrer que ce terme correctif vaut (a – 1900)//4 – 1 si a est un multiple de 4 et m est compris entre 1 et 2 et sinon vaut (a – 1900)//4 .

Ecrire un programme qui demande à l’utilisateur trois nombres qui constituent une date comprise entre le premier janvier 1901 et le 31 décembre 2099, par exemple 20/12/1996, et qui indique le nombre de jours écoulés entre le premier janvier 1901 et cette date.

Ecrire un programme qui demande à l’utilisateur deux dates et indique le nombre de jours écoulés entre ces deux dates.

(13)

Exercice 7

Vous venez d'arriver au bord d'un grand lac que vous devez contourner, par un côté ou l'autre, peu importe. Vous avez réussi à trouver une carte décrivant la position exacte de tous les villages le long de la route qui longe la rive du lac. Sachant que vous pouvez marcher 50 km dans la journée, vous aimeriez savoir dans combien de villages différents vous pourriez dormir la nuit prochaine.

Votre programme doit d'abord lire un entier décrivant votre position actuelle sur la route, sous la forme d'un nombre de kilomètres par rapport au début de la route. Ensuite, il doit lire un entier donnant le nombre de villages. Pour chaque village, il doit lire un entier décrivant la position de ce village le long de cette même route. Votre programme doit alors afficher le nombre de villages qui se trouvent à une distance inférieure ou égale à 50 km de votre position actuelle.

Exemple

entrée :

120 5 30 113 187 145 129

sortie :

3

Commentaires

Vous êtes à la position 120 et il y a donc trois villages à moins de 50 km : ceux aux positions 113, 145 et 129. Les deux autres villages sont trop lointains.

Aide

Pour chaque village, on va calculer la distance entre la position actuelle et ce village. Pour cela, on calcule la différence entre leurs positions respectives. Si cette différence est positive, la distance est égale à cette différence, autrement la distance est égale à l'opposé de cette différence.

On utilise une variable nommée nbAccessibles pour calculer le résultat. Au début cette variable vaut zéro. Pour chaque distance que l'on calcule, on teste si cette distance est inférieure à 50 km. Si c'est le cas, on incrémente (c'est-à-dire on augmente d'une unité) le contenu de la variable nbAccessibles.

Exercice 8

Votre programme doit d'abord lire un entier strictement positif, le nombre de jours de marche effectués jusqu'à présent. Il doit ensuite lire, pour chaque jour, la distance parcourue ce jour-là. Il doit alors afficher la distance maximale parcourue en une journée.

Exemple

entrée :

4 36 14 38 28

sortie :

38

(14)

Aide

Le problème consiste à calculer le maximum d'un ensemble de distances. Pour cela, on énumère les nombres un par un, en maintenant une variable, nommée distanceMax, qui correspond à tout moment à la distance la plus grande qu'on a déjà rencontrée.

Au début, distanceMax vaut 0. Lorsqu'on traite une nouvelle distance, on teste si cette distance dépasse la valeur courante de la variable distanceMax. Si c'est le cas, on enregistre cette distance dans la variable. Une fois que l'on a traité toutes les distances, on affiche la valeur de distanceMax.

Exercice 9

Votre programme lira d'abord un entier représentant le nombre de montées et descentes que vous avez réalisées. Pour chaque montée ou descente, il faut ensuite lire un entier représentant la variation d'altitude, cet entier étant strictement positif dans le cas d'une montée et strictement négatif dans le cas d'une descente (il n'y a rien à compter pour les tronçons qui sont bien à plat).

Votre programme devra afficher l'altitude totale montée puis l'altitude totale descendue (ces deux nombres sont positifs).

Exemple

entrée :

5 4 7 -6 -3 2

sortie :

13 9

Aide

On utilise deux variables : une pour stocker la somme des montées et une pour stocker la somme des descentes. Au début ces variables valent zéro. À chaque fois que l'on lit une variation d'altitude, on utilise une structure "si/sinon" pour tester si la variation correspond à une montée ou à une descente. Pour une montée, on ajoute la variation d'altitude à la somme des montées. Pour une descente, on ajoute l'opposé (afin d'avoir toujours un nombre positif) de la variation d'altitude à la somme des descentes.

(15)

Exercice 10

Il existe 4 types d'arbres :

• le "Tinuviel" fait moins de 5 mètres de haut et ses feuilles sont composées de plus de 8 folioles

• le "Calaelen" fait plus de 10 mètres de haut et ses feuilles sont composées de plus 10 folioles

• le "Falarion" fait moins de 8 mètres de haut et ses feuilles sont composées de moins de 5 folioles

• le "Dorthonion" fait plus de 12 mètres de haut et ses feuilles sont composées de moins de 7 folioles

Votre programme lira deux entiers, la hauteur et le nombre de folioles de l'arbre, et affichera le nom de l'arbre correspondant.

Toutes les inégalités sont à prendre au sens large, c'est-à-dire que "moins" signifie "moins ou égal"

ou et "plus" signifie "plus ou égal".

Exemples

Exemple 1

entrée :

12 12

sortie :

Calaelen

Exemple 2

entrée :

4 9

sortie :

Tinuviel

Exercice 11

Une chambre ne coûte rien si on a 60 ans (l'âge de l'aubergiste !) et 5 écus si on a strictement moins de 10 ans. Pour les autres personnes c'est 30 écus plus un supplément de 10 écus si on a au moins 20 kilos de bagages.

Votre programme doit lire deux entiers, l'âge et le poids des bagages de la personne et doit afficher le prix, sous la forme d'un entier.

Exemple

entrée :

22 25

sortie :

40

(16)

Exercice 12

Le programme doit d'abord lire un entier strictement positif correspondant au nombre de maisons.

Ensuite, pour chaque maison, il doit lire la position horizontale (l'abscisse, le "x") et sa position verticale (l'ordonnée, le "y") de cette maison. Toutes les abscisses et ordonnées sont des entiers compris entre zéro et 1 million.

Le programme doit alors afficher le périmètre de la plus petite clôture rectangulaire englobant toutes les maisons. Ce rectangle doit avoir ses côtés parallèles aux axes du repère, comme montré sur l'illustration.

Exemple

entrée :

4 1 5 5 3 4 6 2 9

sortie :

20

Représentation graphique du premier exemple

Aide

Pour calculer le périmètre de la clôture, il faut déterminer l'abscisse minimale, l'abscisse maximale, l'ordonnée minimale et l'ordonnée maximale des maisons du village. Il s'agit donc de maintenir deux minimums et deux maximums dans le programme, ce que l'on peut faire à l'aide de quatre variables, nommées xMin, xMax, yMin et yMax. De ces valeurs, on peut déduire la largeur (xMax - xMin) et la hauteur (yMax - yMin) de la clôture, puis son périmètre, qui est égal à 2 * (largeur + hauteur).

Attention, il faut calculer les minimums et maximums de manière indépendante (et donc ne pas utiliser de if/else) car une même coordonnée peut, à un moment, être à la fois un minimum et un maximum : pensez au cas où il n'y a qu'une maison par exemple

(17)

Exercice 13

Votre programme doit lire un entier nbMarchands (non nul) puis les nbMarchands entiers suivants, qui indiquent le prix des galettes chez chaque marchand, de la position 1 à la position nbMarchands.

Votre programme devra ensuite afficher la position du plus petit de ces prix. En cas d'égalité entre deux prix, on prendra la position la plus grande. Tous les prix et positions sont positifs et ne dépassent pas 1 million.

Exemple

entrée :

6 12 11 9 11 9 15

sortie :

5

Commentaires

Parmi ces 6 marchands, c'est le 5ème qui vend ses galettes le moins cher, à 9 euros la galette. Il est à égalité avec le 3e marchand, mais on préfère le 5e qui est le plus près du bout de la rue (position la plus grande)

Aide

Il faut calculer la position du minimum d'une suite de prix. On a donc besoin d'une

variable minPrix pour mémoriser la plus petite valeur vue pour le moment, une variable pour mémoriser sa position, et une variable pour connaître la position actuelle. On va alors lire tous les entiers et si on en trouve un plus petit ou égal à minPrix alors on met à jour cette variable ainsi que la position associée.

La variable posMinPrix, qui contient la position du plus petit prix vu jusqu'à présent, est initialisée à - 1 au début. En effet, il faut bien lui donner une valeur initiale, et la valeur -1 (qui n'est pas une position valide) permet d'indiquer au lecteur « attention, il ne s'agit pas d'une vraie position, c'est juste une valeur initiale ».

Pour mettre à jour le minimum et sa position, on va utiliser le code suivant : Si prix <= minPrix alors

minPrix <- prix posMinPrix <- pos

Attention à bien utiliser <= et pas < car dans l'énoncé il est indiqué : « En cas d'égalité, on prendra la position la plus grande ». Donc si on a une égalité, il faut mettre à jour la position du minimum.

C'est une chose à laquelle il faut toujours faire attention lorsqu'on calcule des positions de minima ou maxima (pluriels de « minimum » et « maximum ») : est-ce qu'on gère bien les cas d'égalités comme nous le demande l'énoncé ?

(18)

Exercice 14

On vous décrit les arrivées et départs des participants d'une fête, et votre programme doit afficher le nombre maximum de personnes qui ont été présentes au même moment. Chacun des invités est identifié par un numéro.

Le premier entier à lire est nbPersonnes : le nombre total de personnes qui se sont rendues à la fête.

Ensuite, il y a 2 × nbPersonnes entiers à lire, dans l'ordre chronologique des arrivées et départs. Si l'entier est positif, c'est que la personne de numéro correspondant vient d'arriver, s'il est négatif, elle vient de partir. Une fois qu'une personne est partie, elle ne revient pas.

Votre programme doit déterminer puis afficher le nombre maximum de personnes qui étaient là simultanément.

Exemple

entrée :

5 1 2 -1 3 4 -2 -4 5 -3 -5

sortie :

3

Commentaires

Au cours de la fête décrite par l'exemple, on a donc les flux suivants :

• l'invité n°1 entre ;

• l'invité n°2 entre ;

• l'invité n°1 sort ;

• l'invité n°3 entre ;

• l'invité n°4 entre ;

• l'invité n°2 sort…

Le nombre de présents est maximal lors de l'arrivée de la personne n°4 : il y a alors trois invités qui sont arrivés et restés.

Aide

On utilise une variable pour mémoriser le nombre de personnes actuellement présentes et une autre pour le nombre maximum de personnes qui ont été là simultanément. Dès qu'une personne arrive ou part, on met à jour le nombre de personne actuellement là puis on regarde si ce nombre dépasse le maximum et le cas échéant on met celui-ci à jour.

(19)

Exercice 15

La ville comprend de nombreuses casernes de pompiers et chacune a sa propre zone d'intervention qui lui est réservée. Cependant en regardant ces zones il vous semble qu'elles ne sont pas très bien choisies car parfois elles se recoupent alors que certains endroits de la ville sont en dehors de toutes les zones et donc ne sont pas protégées par les pompiers. Vous décidez d'aider le maire à mieux organiser l'action des pompiers.

Votre programme doit lire la description de plusieurs paires de zones rectangulaires, et pour chacune, déterminer si les deux rectangles s'intersectent.

Vous devez lire un premier entier, le nombre de paires de zones que votre programme devra tester. Ensuite, pour chaque paire possible, deux zones rectangulaires et parallèles aux axes vous sont données l'une après l'autre. Chaque zone est décrite par 4 entiers : son abscisse minimale et maximale puis son ordonnée minimale et maximale.

Sur cet exemple, la zone du bas est donc décrite par les 4 entiers (1, 6, 1, 5) et l'autre par (4, 9, 3, 8) :

Pour chaque paire de zones, votre programme doit écrire "OUI" si les zones s'intersectent et "NON"

sinon. Si elles ne font que se toucher sur les bords il doit écrire "NON".

Exemple

entrée :

1 1 6 1 5 4 9 3 8

sortie :

OUI

Aide

Le point principal de l'algorithme consiste à tester l'intersection de deux rectangles. En regardant sur un dessin on voit que pour tester une intersection il faut regarder la "projection" du rectangle sur les deux axes. Si les segments correspondants s'intersectent sur chaque axe alors les rectangles s'intersectent, sinon les rectangles sont disjoints.

Les rectangles ne s'intersectent donc pas si au moins un des couples de segments ne s'intersecte pas. Le programme est alors relativement simple.

Références

Documents relatifs

Autrement dit, notre souci, par le biais de ces deux textes donc deux discours de deux écrivains, tous deux natifs d’Oran ; tous deux ressentant une appartenance à ce

marge brute – remise – prix d’achat net – prix de vente hors taxe – coût d’achat prix de vente toute taxe comprise – prix d’achat net – frais d’achat – prix

Une brique homogène ayant la forme d’un parallélépipède rectangle reste en équilibre sur un plan incliné faisant un angle de 30° avec l’horizontale... Quel est le nom

Dans ce réseau, il y a trois possibilités de câbles d’un seul tenant (backbones) avec chaque fois un seul branchement en T :. FGJI : branchement en G vers les autres nœuds du

Vous avez maintenant sur toute la partie de droite un éditeur de texte (une page blanche dans lquelle vous pouvez écrire).. Word à également créé dans la partie de gauche Modules et

L’exemple suivant montre la déclaration d’une variable de type pointeur de fonction qui doit retourné un entier nommé pFonction1 et d’une fonction retournant

Concernant le volume testiculaire, nous avons constaté dans notre étude, comme dans la littérature, une différence significative de la taille moyenne entre les deux groupes de

En conformité avec les dispositions du Règlement des études collégiales (RRÉC), notamment l=article 11, le ministère de l=Éducation déposait en septembre 1998, la