64 lines
No EOL
11 KiB
HTML
64 lines
No EOL
11 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>Partie 1 (2H environ) : Manipulation de 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">Partie 1 (2H environ) : Manipulation de caractères</h1><nav><a class="caml_c" title="Back to main page" href="tps.html" data-eliom-c-onclick="gfTnxn62lNv8"></a></nav></div><main><section class="yfold"><h2 class="yfold-title" onclick="toggleYfold('1d669c0b')"><span class="arrow" id="arrow-1d669c0b">▸</span>Objectifs</h2><div class="yfold-content" id="content-1d669c0b" data-yfold-default="show"><ul class="goals"><li>Parcourir les tableaux et matrices. </li><li>Exploiter l'information d'une structure imbriquée.</li></ul><h4>Prérequis</h4><ul class="requires"><li>À la première séance de TP, vous avez fait une bonne partie des exercices de préparation : <a class="caml_c" href="exo-traces.html" data-eliom-c-onclick="qAkNdhiy4PZ+">Exercice de tracés avec des caractères</a> et <a class="caml_c" href="exo-intervalles.html" data-eliom-c-onclick="7c2pXeamkvmC">Exercice avec des types article</a>. </li></ul></div><script>
|
|
//<![CDATA[
|
|
initYfold('1d669c0b') ;
|
|
//]]>
|
|
</script></section><section class="yfold"><h2 class="yfold-title" onclick="toggleYfold('e919c091')"><span class="arrow" id="arrow-e919c091">▸</span>Mission 1</h2><div class="yfold-content" id="content-e919c091" data-yfold-default="hide"><p>La transformation d'une image en Ascii-Art (voir image ci-contre) nécessite de manipuler des caractères (des lettres), ceux qui servent à reconstituer l'image. Dans ce premier TP, nous nous concentrons donc sur la forme graphique des caractères, fournie sous forme de matrice. </p><section class="yfold card"><h4 class="yfold-title" onclick="toggleYfold('21bb4a14')"><span class="arrow" id="arrow-21bb4a14">▸</span>Descente dans la table</h4><div class="yfold-content" id="content-21bb4a14" data-yfold-default="hide"><pre class="ascii">
|
|
```````
|
|
```'''````` ``````'''`,,`
|
|
```'` ``'``
|
|
,`' ''``
|
|
,'` `^,
|
|
`,' `'`
|
|
,,!~..`````````````````````,`'`,,``````````````````'''.'!,,
|
|
|'~ws\~` `/kx^^''~!, `,~x?J~~`
|
|
`-' `~*.-,-'``,` *XO**^*\k);` `,,--^./r!~' ^-`
|
|
_' ' `^',` `^,``` *5Q[jx/]%*/ `,,-'` ``,--` -`'`
|
|
_' ',,,` `''',._``,-'^-%%{*/~7Y)--_^^'```,,`''' ```_` ^`
|
|
`^ xcanr_~~,``'''^-''^-~~'``^^'^~,'^~``!_.~'~-,-''''''--:!x)=v` ^`
|
|
^ ''`'''^^''``-,---'',,.~~, ` `.x,,,,,^',``',,'--+^~~'^` ^
|
|
~` ' =0r^,--~'+-!x` -` `.
|
|
' ' ' ` '^ -` '
|
|
`^ ' -` `' -` ^`
|
|
'` ' '' ` _ ```' _` `,
|
|
'` ' x' ^ `~ ^` `,
|
|
`, ' `' ` !` -` `'
|
|
' ' `~` ``,'_ '' -` _`
|
|
' ' ````` `''~` ,`, ^` '
|
|
`. ' `` ' `'`^^, ' , -` ``
|
|
^` ' ' `,`` `' '` ' _` -` `'
|
|
^ ' ,' `,^ ~' `'' `' -` ^
|
|
^ ' `-```-`' .'` ,-,` '` -``-
|
|
-`' `-` `-` .` `-^' `' ',`'!` -'-
|
|
'' .' `' _``.`'`'.` ^` ^, ~^
|
|
`^` `^ `' ,` `', `^ ' ` `. `-^`
|
|
`' '` . ,` ' '. , ', ,` `'` -`
|
|
`' `` `'`' '` .'` , `,` -` `'` _`
|
|
`' ``^--`^ ' ^ ~ , '. '-,_.,'` -`
|
|
`' `^-~' `'`-`^ ! ^_`.,^` ^`
|
|
`' `` ,-`^`'`'''` ```'` ,`
|
|
`-'''''''''''''''''''---+*Y!+~=^''''--~-'''````````````````-`
|
|
</pre><ul class="steps"><li>Créez un dossier pour tous vos prochains TPs d'algo, nommez-le <span class="hfile">algo2</span> (sans espace !). Copiez-y le fichier <span class="file">mission1.adb</span> que vous trouvez sur commetud. </li><li>Écrire un programme <var>Mission1</var> qui demande poliment à l'utilisateur de taper un entier (n) et qui affiche ensuite la valeur de n. Testez.</li><li><span class="difficulty"><img style="width:16px;height:16px;" alt="Star" src="../Images/etoile.png"/></span> Complétez votre programme : affichez ensuite le caractère contenu dans la n-ème case de la table, avec <code class="inline">GAda.Text_IO.Put(Aff : character)</code>. <section class="advice"><div class="content"><ul><li>Pour tester : le caractère numéro 32 est un 'C'.</li><li>Il vous faut bien comprendre l'acteur <a class="file caml_c" href="acteur-jpg/caracteres.ads.html" data-eliom-c-onclick="K1+GdZu2su0o">Caracteres</a>. Pour cela, réfléchissez à deux, et lisez ces commentaires : </li><li>L'information que l'on cherche se trouve dans la variable <var>Table</var>. C'est un <b>tableau</b> (<code class="inline">array</code>). Voyez votre poly pour comprendre ce qu'est un tableau.</li><li>Chaque case de ce tableau contient un type article <code class="inline">T_Paire</code> (chaque case est différente). </li><li>On vous demande d'afficher le caractère contenu dans cet article.</li><li>En résumé, il faut donc trouver comment accéder à la N-ème case de la <var>Table</var>, et obtenir le caractère contenu dans le type article présent dans cette case.</li></ul></div></section></li></ul></div><script>
|
|
//<![CDATA[
|
|
initYfold('21bb4a14') ;
|
|
//]]>
|
|
</script></section><section class="yfold card"><h4 class="yfold-title" onclick="toggleYfold('adfb12d4')"><span class="arrow" id="arrow-adfb12d4">▸</span>Parcours de matrice</h4><div class="yfold-content" id="content-adfb12d4" data-yfold-default="hide"><ul class="steps"><li><span class="difficulty"><img style="width:16px;height:16px;" alt="Star" src="../Images/etoile.png"/></span>Ajoutez un sous-programme : la procédure <code class="block">Afficher_Trame</code><img class="space" title="Afficher_Trame" style="width:343px;height:50px;" alt="Procedure Afficher_Trame" src="../Gen/Afficher_Trame-1-b52-.png"/>Pour afficher la trame, on parcourt la matrice ligne par ligne et colonne par colonne. Si la case contient un pixel allumé, on affiche un <var>#</var><small class="pcom"> (avec GAda.Text_IO.Put), </small>si le pixel est éteint, un espace. <br/><section class="advice"><div class="content">Pour détecter si le pixel est éteint ou allumé, utiliser un <b>bloc CASE</b>. </div></section></li><li>Pensez à ajouter une procédure de test : <code class="block">Tester_Afficher_Trame</code> qui affiche la trame de 3 ou 4 caractères de votre choix. <img class="space" title="Tester_Afficher_Trame" style="width:235px;height:50px;" alt="Procedure Tester_Afficher_Trame" src="../Gen/Tester_Afficher_Trame-0-c97-.png"/></li><li>Écrivez une procédure <code class="block">Afficher_Mot</code> qui reçoit en argument une chaîne (<var class="type">String</var>) et qui affiche verticalement les trames des caractères de cette chaîne. Si vous avez besoin de créer une fonction auxiliaire, c'est normal.<img class="space" title="Afficher_Mot" style="width:290px;height:50px;" alt="Procedure Afficher_Mot" src="../Gen/Afficher_Mot-1-78e-.png"/><section class="advice"><div class="content">Le type <var class="type">String</var> est un tableau de <var class="type">Character</var> : <br/><code class="block"><span class="kw">type</span> <span class="type">String</span> <span class="kw">is</span> <span class="kw">array</span>(<span class="ident">Integer</span> <span class="kw">range</span> <>) <span class="kw">of</span> <span class="ident">Character</span>
|
|
</code><br/>Le numéro de la première case n'est pas forcément <code class="inline">1</code>, il s'obtient avec la notation <code class="inline">'First</code>. </div></section></li><li>Testez en affichant votre nom.</li><li><span class="lbutton">Défi (facultatif)</span>(Si vous êtes en avance) afficher maintenant votre nom horizontalement. N'oubliez pas d'écrire d'abord l'algorigramme sur papier.</li></ul></div><script>
|
|
//<![CDATA[
|
|
initYfold('adfb12d4') ;
|
|
//]]>
|
|
</script></section></div><script>
|
|
//<![CDATA[
|
|
initYfold('e919c091') ;
|
|
//]]>
|
|
</script></section><section class="yfold"><h2 class="yfold-title" onclick="toggleYfold('edf0389a')"><span class="arrow" id="arrow-edf0389a">▸</span>Acteurs utilisés</h2><div class="yfold-content" id="content-edf0389a" data-yfold-default="hide"><ul class="file-list"><li><a class="file caml_c" href="../Ada-S1/acteur-gada/gada-text_io.ads.html" data-eliom-c-onclick="u4xARMFAStEG">GAda.Text_IO</a></li><li><a class="file caml_c" href="../Ada-S1/acteur-gada/gada-integer_text_io.ads.html" data-eliom-c-onclick="HpGnIS+9/+EO">GAda.Integer_Text_IO</a></li><li><a class="file caml_c" href="acteur-jpg/caracteres.ads.html" data-eliom-c-onclick="j38sV1e1Pf2i">Caracteres</a></li></ul></div><script>
|
|
//<![CDATA[
|
|
initYfold('edf0389a') ;
|
|
//]]>
|
|
</script></section><section class="yfold"><h2 class="yfold-title" onclick="toggleYfold('644a65bb')"><span class="arrow" id="arrow-644a65bb">▸</span>Bilan</h2><div class="yfold-content" id="content-644a65bb" data-yfold-default="hide"><ul class="success"><li>Une matrice dans un type article dans un tableau ne vous fait pas peur.</li><li>..mais saurez-vous manipuler un type article dans une matrice ? (cf <a class="caml_c" href="tp-m2.html" data-eliom-c-onclick="cM3G/zHGY24B">Mission 2</a>)</li></ul></div><script>
|
|
//<![CDATA[
|
|
initYfold('644a65bb') ;
|
|
//]]>
|
|
</script></section></main><footer><small class="pcom"><a class="caml_c" href="../yversion.html" data-eliom-c-onclick="020TtW4+L8N/">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> |