0% ont trouvé ce document utile (0 vote)
61 vues4 pages

Algorithmique Et Programmation 1 TP3: Booléens Et Conditionnels

Ce document présente un TP sur l'algorithmique et la programmation, axé sur l'utilisation des booléens et des conditionnels. Les exercices incluent la création d'un sapin de Noël décoré, un jeu de devinette avec une boucle while, et la génération d'images à l'aide de conditions pour dessiner des formes comme des bandes noires et des damiers. Les étudiants sont encouragés à développer des fonctions pour manipuler des images en utilisant des concepts de programmation fondamentaux.

Transféré par

baran.tt007
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
61 vues4 pages

Algorithmique Et Programmation 1 TP3: Booléens Et Conditionnels

Ce document présente un TP sur l'algorithmique et la programmation, axé sur l'utilisation des booléens et des conditionnels. Les exercices incluent la création d'un sapin de Noël décoré, un jeu de devinette avec une boucle while, et la génération d'images à l'aide de conditions pour dessiner des formes comme des bandes noires et des damiers. Les étudiants sont encouragés à développer des fonctions pour manipuler des images en utilisant des concepts de programmation fondamentaux.

Transféré par

baran.tt007
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Université de Strasbourg

Première année de licence


Semestre 1

Algorithmique et Programmation 1
TP3 : Booléens et conditionnels

Avant de démarrer ce TP, assurez-vous que vous avez résolu les exercices 3 (divi-
sibilité) et 4 (tirage au sort) du TD3.

1 Dessiner un sapin de Noël


Au TP précédent, nous avions déjà dessiné un sapin. Dans ce TP, nous voulons le
décorer avec des boules (des caractères ’O’). On souhaite que la probabilité qu’un
caractère ’O’ apparaisse à la place d’une étoile soit de 20%.
Écrire une fonction sapinDecore qui est en tout point identique à la fonction
sapin écrite au TP précédent, mais qui, dans 20% des cas, écrit un caractère ’O’
au lieu du caractère *.

2 Boucle while
Écrire un programme qui choisit un nombre entier mystère myst au hasard entre 0 et 99. Ensuite, tant que l’uti-
lisateur n’a pas trouvé le nombre mystère, le programme lui demande de deviner ce nombre. Si le nombre mystère
est :
— inférieur au nombre entré, alors le programme affiche moins ;
— supérieur au nombre entré, alors le programme affiche plus ;
— égal à x alors le programme félicite l’utilisateur et arrête le jeu.

3 Projet labyrinthe : dessiner des images


Dans le TP précédent, nous avions déjà dessiné des images. Mais quand il fallait dessiner des bandes ou des cases,
nous avions la contrainte que la largeur ou la hauteur de l’image devait être un multiple du double de la largeur de la
case/bande. Dans ce TP, l’utilisation des conditionnels nous affranchira de cette contrainte.
Le programme suivant parcourt tous les pixels de l’image (toutes les lignes y et toutes les colonnes x) et les colorie
en noir.

import tkdraw.basic as graph

def noir(haut,larg):
for y in range(haut): # parcourt les lignes y
for x in range(larg): # parcourt les colonnes x
graph.plot(y, x)

graph.open_win(400,600)
noir(400,600)
graph.wait()

1
Pour générer les images suivantes, vous pouvez vous inspirer du programme ci-dessus mais avec d’autres fonctions.
Plus précisément, je vous demande de parcourir tous les pixels (comme ci-dessus) mais de colorier seulement certains
d’entre eux en élaborant des conditions adéquates. Le premier exercice comporte un corrigé.
1. Écrire une fonction bande_noire_gauche qui admet trois arguments : la hauteur de l’image haut, la lar-
geur de l’image larg et un entier larg_bande compris entre 0 et larg. Cette fonction devra produire
une image qui comportera une bande noire de largeur larg_bande calée à gauche. Par exemple l’appel
bande_noire_gauche(hauteur,largeur,100) devrait produire quelque chose de semblable à la fi-
gure 2.a. Voici le corrigé de ce premier exercice.
def bande_noire_gauche(haut,larg,larg_bande):
for y in range(haut):
for x in range(larg):
if x < larg_bande:
graph.plot(y,x)

2. Écrire une fonction rectangle_noir qui admet six arguments : la hauteur de l’image haut, la largeur de
l’image larg et quatre entiers y1, y2, x1 et x2 définissant les bords d’un rectangle. Cette fonction devra
colorier tous les pixels contenus dans ce rectangle (bornes inférieures incluses, bornes supérieures exclues). Par
exemple l’appel

rectangle_noir(hauteur,largeur,50,200,150,450)

devrait produire quelque chose de semblable à la figure 1 (sans les légendes).

F IGURE 1 – Un rectangle défini par 4 variables x1, x2, y1 et y2.

3. Écrire une fonction rectangle_blanc qui admet les mêmes sept arguments, mais qui dessine un rectangle
blanc sur fond noir. Par exemple l’appel rectangle_blanc(hauteur,largeur,50,200,150,450)
devrait produire quelque chose de semblable à la figure 2.b.
4. On cherche à obtenir une image composée de bandes noires et blanches verticales comme sur la figure 2.c. On
suppose que ces bandes sont d’épaisseur larg_bande pixels. On numérote ces bandes. On suppose que la
bande la plus à gauche est la bande 0, la suivante est la bande 1 etc. Soit un pixel d’abscisse x et d’ordonnée
y. En utilisant x et larg_bande, écrire une expression qui représente le numéro de la bande dans laquelle se
trouve ce pixel.
5. On suppose que la première bande doit être blanche. Quelle est la condition portant sur le numéro de la bande
nv pour que cette bande soit noire ?
6. Écrire une fonction rayures_verticales qui admet trois arguments : la hauteur de l’image haut, la lar-
geur de l’image larg et un entier larg_bande. Cette fonction devra créer une image composée de bandes

2
verticales noires et blanches. Chaque rayure ayant une largeur de larg_bande pixels. Par exemple l’appel
rayures_verticales(hauteur,largeur,50) devrait produire quelque chose de semblable à la fi-
gure 2.c. Vérifiez que cette fonction est correcte lorsque la largeur de bande ne divise pas la largeur de l’image.
7. On cherche à produire un damier avec des cases de taille cote. On numérote les bandes verticales (comme
ci-dessus) et les bandes horizontales. Chaque case est donc caractérisée par un numéro de bande horizontale et
un numérode bande verticale. La case en haut à gauche est caractérisée par 0 et 0. Soit un pixel de coordonnées
(x,y). En utilisant x,y et cote écrire deux expressions qui donnent respectivement nv le numéro de la bande
verticale et nh le numéro de la bande horizontale auxquelles appartient le pixel.
8. On suppose que la case en haut à gauche est blanche. Quelle est la condition portant sur nh et nv pour que la
case soit noire ?
9. Écrire une fonction damier qui admet trois arguments : la hauteur de l’image haut, la largeur de l’image
larg et un entier cote. Cette fonction devra créer un damier composé de carrés blancs et noirs de taille cote.
Par exemple l’appel damier(hauteur,largeur,50) devrait produire quelque chose de semblable à la
figure 2.d. Vérifiez que cette fonction est correcte lorsque cote ne divise pas la taille de l’image.

F IGURE 2 –

10. Exercice complémentaire (difficile). Écrire une fonction damier_multicolore qui admet trois arguments :
la hauteur de l’image haut, la largeur de l’image larg et un entier cote. Cette fonction devra créer un
damier composé de carrés de taille cote, dont les cases colorées sont d’une couleur aléatoire. Par exemple
l’appel damier_multicolore(hauteur,largeur,45) devrait produire quelque chose de semblable à
la figure 3. Vous utiliserez pour cela l’argument optionnel de la fonction graph.plot(y, x, couleur),
où couleur est une chaîne de caractères représentant la couleur du pixel à afficher. Exemples de couleurs
valides :

"black", "white", "red", "green", "blue", "yellow", "cyan", "magenta",


"orange", "darkgrey"

À présent, vous savez diviser une image en cases et colorier chaque case selon un principe donné. Pour pouvoir
générer une image représentant un labyrinthe, il suffit de colorier l’image non pas en fonction des coordonnées de la
case mais en fonction de données fournies par le générateur de labyrinthe (une liste). Vous pouvez y parvenir soit en
dessinant des rectangles, soit en parcourant les pixels et en détectant si un pixel donné représente un mur ou un couloir.

3
F IGURE 3 –

Vous aimerez peut-être aussi