css-le-botlan/Y/Ada-S2/exo-traces.html
2021-02-09 17:41:02 +01:00

165 lines
8.2 KiB
HTML

<!DOCTYPE html>
<!-- Page generated by OCaml with Ocsigen.
See http://ocsigen.org/ and http://caml.inria.fr/ for information -->
<html class="ada2" lang="fr" id="h" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Exercice de tracés avec des caractères</title>
<meta content="text/html; charset=utf-8" http-equiv="content-type" />
<link media="all" href="../ystyle.css" rel="stylesheet" />
<script src="../Scripts/yfold.js"></script>
</head>
<body>
<div class="header" id="header">
<h1 id="title">Exercice de tracés avec des caractères</h1>
<nav><a class="caml_c" title="Back to main page" href="tps.html" data-eliom-c-onclick="AVUMznauqliT"></a></nav>
</div>
<main>
<section class="yfold">
<h2 class="yfold-title" onclick="toggleYfold('5abee968')"><span class="arrow" id="arrow-5abee968">&#x25b8;</span>Objectifs</h2>
<div class="yfold-content" id="content-5abee968" data-yfold-default="show">
<ul class="goals">
<li>Écrire quelques procédures qui affichent des formes géométriques en utilisant le caractère dièse #. Par exemple, un pseudo-carré et un damier :
<pre>#####
# #
# #
# #
#####</pre>
<pre> ## ## ## ##
## ## ## ##
## ## ## ## ##
## ## ## ## ##
## ## ## ##
## ## ## ##
## ## ## ## ##
## ## ## ## ##
## ## ## ##
## ## ## ## </pre>
</li>
<li>Ces exercices vous familiariseront avec les concepts des séances de TP à venir.</li>
</ul>
<h4>Prérequis</h4>
<p>➪ Au moins quelques restes du semestre 1.</p>
</div>
<script>
//<![CDATA[
initYfold('5abee968');
//]]>
</script>
</section>
<section class="yfold">
<h2 class="yfold-title" onclick="toggleYfold('053717c4')"><span class="arrow" id="arrow-053717c4">&#x25b8;</span>Étapes à suivre</h2>
<div class="yfold-content" id="content-053717c4" data-yfold-default="hide">
<ul class="steps">
<li>Le seul acteur dont vous aurez besoin est <a class="file caml_c" href="../Ada-S1/acteur-gada/gada-text_io.ads.html" data-eliom-c-onclick="akNvajSCrSGu">GAda.Text_IO</a>. </li>
<li>Créez un nouveau dossier <span class="file">Exos-Algo</span>. </li>
<li>Créez-y un fichier vide <span class="file">mission1.adb</span> que vous complétez avec la structure d'usage (page 5 du livret du semestre 1). <br /><small class="pcom">Si vraiment vous n'y parvenez pas, exclamez-vous : <q>O cursed spite
that ever I was born to set it right!</q> (Hamlet, Act I, Scene 5) puis copiez le fichier mission1.adb qui se situe sur commetud (comme au premier TP du premier semestre).</small></li>
<li>Dans votre programme, qui s'appelle déjà <var>Mission1</var>, ajoutez une procédure <var>Tracer_Ligne</var> qui reçoit en argument un entier <var>Long</var> et qui trace une ligne de <var>Long</var> symboles dièses puis passe à la
ligne. <br />Par exemple, si Long vaut 5, la procédure affiche<samp>#####</samp><img class="space" title="Tracer_Ligne" style="width:305px;height:50px;" alt="Procedure Tracer_Ligne" src="../Gen/Tracer_Ligne-1-4e0-.png" /> Pour tester,
invoquer la procédure dans le corps du programme principal avec les arguments 3, 8, puis 20. Vous obtenez alors le résultat suivant :
<pre><samp>###
########
####################</samp></pre><small class="pcom">Corps de la procédure : 4 lignes Ada.</small>
</li>
<li>Ajoutez maintenant à votre programme une procédure <code class="inline">Tracer_Rectangle</code> qui reçoit deux arguments : <var>Largeur</var> et <var>Hauteur</var>, et qui trace (toujours avec des dièses) les contours d'un rectangle
des dimensions indiquées (en nombre de dièses). <img class="space" title="Tracer_Rectangle" style="width:361px;height:50px;" alt="Procedure Tracer_Rectangle" src="../Gen/Tracer_Rectangle-2-266-.png" /> Pour tester, invoquer la procédure
dans le corps du programme principal avec les paires d'arguments (5,5), (4,6), puis (14,2). Vous obtenez alors le résultat suivant (utiliser des espaces &quot; &quot; pour décaler les dièses les uns des autres quand c'est nécessaire.) :
<pre><samp>#####
# #
# #
# #
#####
####
# #
# #
# #
# #
####
##############
##############</samp></pre><small class="pcom">Corps de la procédure : une dizaine de lignes Ada.</small>
</li>
<li>
<aside class="yfold">
<div class="content">
<h4 class="yfold-title" onclick="toggleYfold('c1b7a4c8')"><span class="arrow" id="arrow-c1b7a4c8">&#x25b8;</span>Pour tester si un nombre est pair</h4>
<div class="yfold-content" id="content-c1b7a4c8" data-yfold-default="hide">On utilise le modulo :<ul>
<li><code class="inline">X mod 2</code> vaut 0 lorsque X est pair.</li>
<li><code class="inline">X mod 2</code> vaut 1 lorsque X est impair.</li>
</ul>
</div>
<script>
//<![CDATA[
initYfold('c1b7a4c8');
//]]>
</script>
</div>
</aside>Ajoutez une procédure <code class="inline">Tracer_Quadrillage</code> qui reçoit aussi en argument une largeur et une hauteur. Invoquée avec la paire d'arguments (19, 11), votre procédure doit afficher ceci :
<pre><samp>###################
# # # # # # # # # #
###################
# # # # # # # # # #
###################
# # # # # # # # # #
###################
# # # # # # # # # #
###################
# # # # # # # # # #
###################</samp></pre><small class="pcom">Corps de la procédure : une dizaine de lignes Ada, un seul IF.</small>
</li>
<li>Faites de même une procédure <code class="inline">Tracer_Damier</code> qui, invoquée avec les arguments (18,10) affiche ceci :
<pre><samp># # # # # # # # #
# # # # # # # # #
# # # # # # # # #
# # # # # # # # #
# # # # # # # # #
# # # # # # # # #
# # # # # # # # #
# # # # # # # # #
# # # # # # # # #
# # # # # # # # #</samp></pre><small class="pcom">Corps de la procédure : une dizaine de lignes Ada, un seul IF.</small>
</li>
<li><span class="lbutton">Facultatif</span>Et enfin, écrivez une procédure <code class="inline">Tracer_Gros_Damier</code> qui, invoquée avec les arguments (18,10) affiche ceci :
<pre><samp> ## ## ## ##
## ## ## ##
## ## ## ## ##
## ## ## ## ##
## ## ## ##
## ## ## ##
## ## ## ## ##
## ## ## ## ##
## ## ## ##
## ## ## ## </samp></pre><small class="pcom">Corps de la procédure : une dizaine de lignes Ada, un seul IF.</small>
</li>
</ul>
</div>
<script>
//<![CDATA[
initYfold('053717c4');
//]]>
</script>
</section>
<section class="yfold">
<h2 class="yfold-title" onclick="toggleYfold('14138620')"><span class="arrow" id="arrow-14138620">&#x25b8;</span>Bilan</h2>
<div class="yfold-content" id="content-14138620" data-yfold-default="hide">
<ul class="success">
<li>Vous avez compris que pour parcourir une structure à deux dimensions (damier, matrice), il faut deux boucles FOR imbriquées.</li>
<li>Dans ces deux boucles FOR imbriquées, vous reconnaissez le compteur des lignes et le compteur des colonnes.</li>
</ul>
</div>
<script>
//<![CDATA[
initYfold('14138620');
//]]>
</script>
</section>
</main>
<footer><small class="pcom"><a class="caml_c" href="../yversion.html" data-eliom-c-onclick="7pkwUvkk3G6G">Version information</a></small><a target="_blank" href="http://www.insa-toulouse.fr"><img title="INSA Toulouse"
style="width:73px;height:28px;" alt="INSA logo" src="../Images/logo-insa-light.jpg" /></a><a target="_blank" href="http://jigsaw.w3.org/css-validator/check/referer"><img title="Validate css stylesheet" style="width:28px;height:32px;"
alt="CSS3 logo" src="../Images/css3.png" /></a><a target="_blank" href="http://validator.w3.org/check/referer"><img title="Validate html5 content" style="width:32px;height:32px;" alt="HTML5 logo" src="../Images/html5.png" /></a></footer>
</body>
</html>