This commit is contained in:
Mythrann 2021-02-04 20:11:33 +01:00
parent 64f41e01c9
commit d6ed37ab47
3 changed files with 203 additions and 283 deletions

View file

@ -1,65 +1,52 @@
<html class="ada2" lang="fr" id="h" xmlns="http://www.w3.org/1999/xhtml">
<!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>mission1.adb</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">mission1.adb</h1></div><main><code class="page block"><span class="kw">with</span> <span class="ident">Gada.Text_IO</span> ;<span class="eols">
<head>
<title>mission1.adb</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>
</span><span class="kw">procedure</span> <span class="fname">Mission1</span> <span class="kw">is</span><span class="eols">
<body>
<div class="header" id="header">
<h1 id="title">mission1.adb</h1>
</div>
<main><code class="page block"><span class="kw">with</span> <span class="ident">Gada.Text_IO</span> ;<span class="eols">
</span> <span class="kw">package</span> <span class="fname">Txt</span> <span class="kw">renames</span> <span class="ident">GAda.Text_IO</span> ;<span class="eols">
</span><span class="kw">procedure</span> <span class="fname">Mission1</span> <span class="kw">is</span><span class="eols">
</span> <span class="kw">package</span> <span class="fname">Txt</span> <span class="kw">renames</span> <span class="ident">GAda.Text_IO</span> ;<span class="eols">
</span> <span class="kw">procedure</span> <span class="fname">Tracer_Ligne</span> (<span class="ident">Long</span> : <span class="type">Integer</span>) <span class="kw">is</span>
</span> <span class="kw">procedure</span> <span class="fname">Tracer_Ligne</span> (<span class="ident">Long</span> : <span class="type">Integer</span>) <span class="kw">is</span>
<span class="kw">begin</span>
<span class="comment">-- Tracer n fois le caractère # puis passer à la ligne.
</span> <span class="kw">for</span> <span class="ident">Colonne</span> <span class="kw">in</span> <span class="number">1</span>..<span class="ident">Long</span> <span class="kw">loop</span>
</span> <span class="kw">for</span> <span class="ident">Colonne</span> <span class="kw">in</span> <span class="number">1</span>..<span class="ident">Long</span> <span class="kw">loop</span>
<span class="ident">Txt.Put</span>(<span class="string">&quot;#&quot;</span>) ;
<span class="kw">end</span> <span class="kw">loop</span> ;
<span class="ident">Txt.New_Line</span> ;
<span class="kw">end</span> <span class="fname">Tracer_Ligne</span> ;<span class="eols">
</span> <span class="kw">procedure</span> <span class="fname">Tracer_Rectangle</span> (<span class="ident">Largeur</span> : <span class="type">Integer</span> ; <span class="ident">Hauteur</span> : <span class="type">Integer</span>) <span
class="kw">is</span>
</span> <span class="kw">procedure</span> <span class="fname">Tracer_Rectangle</span> (<span class="ident">Largeur</span> : <span class="type">Integer</span> ; <span class="ident">Hauteur</span> : <span class="type">Integer</span>) <span class="kw">is</span>
<span class="kw">begin</span>
<span class="comment">-- Première ligne, pleine
</span> <span class="ident">Tracer_Ligne</span>(<span class="ident">Largeur</span>) ;<span class="eols">
</span> <span class="ident">Tracer_Ligne</span>(<span class="ident">Largeur</span>) ;<span class="eols">
</span> <span class="comment">-- Les lignes suivantes (de 2 à Hauteur-1) ne contiennent que
</span> <span class="comment">-- le caractère # du début et celui de la fin.
</span> <span class="kw">for</span> <span class="ident">Ligne</span> <span class="kw">in</span> <span class="number">2</span>..<span class="ident">Hauteur</span> - <span class="number">1</span> <span class="kw">loop</span>
</span> <span class="comment">-- Les lignes suivantes (de 2 à Hauteur-1) ne contiennent que
</span> <span class="comment">-- le caractère # du début et celui de la fin.
</span> <span class="kw">for</span> <span class="ident">Ligne</span> <span class="kw">in</span> <span class="number">2</span>..<span class="ident">Hauteur</span> - <span class="number">1</span> <span class="kw">loop</span>
<span class="ident">Txt.Put</span>(<span class="string">&quot;#&quot;</span>) ;<span class="eols">
</span> <span class="comment">-- Des espaces au milieu.
</span> <span class="kw">for</span> <span class="ident">Col</span> <span class="kw">in</span> <span class="number">2</span>..<span class="ident">Largeur</span> - <span class="number">1</span> <span class="kw">loop</span>
</span> <span class="comment">-- Des espaces au milieu.
</span> <span class="kw">for</span> <span class="ident">Col</span> <span class="kw">in</span> <span class="number">2</span>..<span class="ident">Largeur</span> - <span class="number">1</span> <span class="kw">loop</span>
<span class="ident">Txt.Put</span>(<span class="string">&quot; &quot;</span>) ;
<span class="kw">end</span> <span class="kw">loop</span> ;<span class="eols">
</span> <span class="ident">Txt.Put</span>(<span class="string">&quot;#&quot;</span>) ;
</span> <span class="ident">Txt.Put</span>(<span class="string">&quot;#&quot;</span>) ;
<span class="ident">Txt.New_Line</span> ;
<span class="kw">end</span> <span class="kw">loop</span> ;<span class="eols">
</span> <span class="comment">-- La dernière ligne est pleine.
</span> <span class="ident">Tracer_Ligne</span>(<span class="ident">Largeur</span>) ;
</span> <span class="comment">-- La dernière ligne est pleine.
</span> <span class="ident">Tracer_Ligne</span>(<span class="ident">Largeur</span>) ;
<span class="ident">Txt.New_Line</span> ;
<span class="kw">end</span> <span class="fname">Tracer_Rectangle</span> ;<span class="eols">
</span> <span class="kw">procedure</span> <span class="fname">Tracer_Quadrillage</span> (<span class="ident">Largeur</span> : <span class="type">Integer</span> ; <span class="ident">Hauteur</span> : <span class="type">Integer</span>) <span
class="kw">is</span>
</span> <span class="kw">procedure</span> <span class="fname">Tracer_Quadrillage</span> (<span class="ident">Largeur</span> : <span class="type">Integer</span> ; <span class="ident">Hauteur</span> : <span class="type">Integer</span>) <span class="kw">is</span>
<span class="kw">begin</span>
<span class="comment">-- On dessine ligne par ligne, colonne par colonne.
</span> <span class="kw">for</span> <span class="ident">Ligne</span> <span class="kw">in</span> <span class="number">1</span>..<span class="ident">Hauteur</span> <span class="kw">loop</span>
</span> <span class="kw">for</span> <span class="ident">Ligne</span> <span class="kw">in</span> <span class="number">1</span>..<span class="ident">Hauteur</span> <span class="kw">loop</span>
<span class="kw">for</span> <span class="ident">Col</span> <span class="kw">in</span> <span class="number">1</span>..<span class="ident">Largeur</span> <span class="kw">loop</span>
<span class="comment">-- Il suffit de tracer les lignes impaires et les colonnes impaires.
</span> <span class="kw">if</span> (<span class="ident">Ligne</span> <span class="kw">mod</span> <span class="number">2</span> = <span class="number">1</span>) <span class="kw">or</span> (<span class="ident">Col</span> <span
class="kw">mod</span> <span class="number">2</span> = <span class="number">1</span>) <span class="kw">then</span>
</span> <span class="kw">if</span> (<span class="ident">Ligne</span> <span class="kw">mod</span> <span class="number">2</span> = <span class="number">1</span>) <span class="kw">or</span> (<span class="ident">Col</span> <span class="kw">mod</span> <span class="number">2</span> = <span class="number">1</span>) <span class="kw">then</span>
<span class="ident">Txt.Put</span>(<span class="string">&quot;#&quot;</span>) ;
<span class="kw">else</span>
<span class="ident">Txt.Put</span>(<span class="string">&quot; &quot;</span>) ;
@ -70,14 +57,13 @@
<span class="ident">Txt.New_Line</span> ;
<span class="kw">end</span> <span class="fname">Tracer_Quadrillage</span> ;<span class="eols">
</span> <span class="kw">procedure</span> <span class="fname">Tracer_Damier</span> (<span class="ident">Largeur</span> : <span class="type">Integer</span> ; <span class="ident">Hauteur</span> : <span class="type">Integer</span>) <span
class="kw">is</span>
</span> <span class="kw">procedure</span> <span class="fname">Tracer_Damier</span> (<span class="ident">Largeur</span> : <span class="type">Integer</span> ; <span class="ident">Hauteur</span> : <span class="type">Integer</span>) <span class="kw">is</span>
<span class="kw">begin</span>
<span class="comment">-- Même principe que Tester_Quadrillage
</span> <span class="kw">for</span> <span class="ident">Ligne</span> <span class="kw">in</span> <span class="number">1</span>..<span class="ident">Hauteur</span> <span class="kw">loop</span>
</span> <span class="kw">for</span> <span class="ident">Ligne</span> <span class="kw">in</span> <span class="number">1</span>..<span class="ident">Hauteur</span> <span class="kw">loop</span>
<span class="kw">for</span> <span class="ident">Col</span> <span class="kw">in</span> <span class="number">1</span>..<span class="ident">Largeur</span> <span class="kw">loop</span>
<span class="comment">-- Il suffit de tracer les cases telles que x+y est pair.
</span> <span class="kw">if</span> (<span class="ident">Ligne</span> + <span class="ident">Col</span>) <span class="kw">mod</span> <span class="number">2</span> = <span class="number">0</span> <span class="kw">then</span>
</span> <span class="kw">if</span> (<span class="ident">Ligne</span> + <span class="ident">Col</span>) <span class="kw">mod</span> <span class="number">2</span> = <span class="number">0</span> <span class="kw">then</span>
<span class="ident">Txt.Put</span>(<span class="string">&quot;#&quot;</span>) ;
<span class="kw">else</span>
<span class="ident">Txt.Put</span>(<span class="string">&quot; &quot;</span>) ;
@ -88,16 +74,14 @@
<span class="ident">Txt.New_Line</span> ;
<span class="kw">end</span> <span class="fname">Tracer_Damier</span> ;<span class="eols">
</span> <span class="kw">procedure</span> <span class="fname">Tracer_Gros_Damier</span> (<span class="ident">Largeur</span> : <span class="type">Integer</span> ; <span class="ident">Hauteur</span> : <span class="type">Integer</span>) <span
class="kw">is</span>
</span> <span class="kw">procedure</span> <span class="fname">Tracer_Gros_Damier</span> (<span class="ident">Largeur</span> : <span class="type">Integer</span> ; <span class="ident">Hauteur</span> : <span class="type">Integer</span>) <span class="kw">is</span>
<span class="kw">begin</span>
<span class="comment">-- Même principe, mais en divisant les coordonnées par 2 pour faire des paquets de 2x2.
</span> <span class="kw">for</span> <span class="ident">Ligne</span> <span class="kw">in</span> <span class="number">1</span>..<span class="ident">Hauteur</span> <span class="kw">loop</span>
</span> <span class="kw">for</span> <span class="ident">Ligne</span> <span class="kw">in</span> <span class="number">1</span>..<span class="ident">Hauteur</span> <span class="kw">loop</span>
<span class="kw">for</span> <span class="ident">Col</span> <span class="kw">in</span> <span class="number">1</span>..<span class="ident">Largeur</span> <span class="kw">loop</span><span class="eols">
</span> <span class="comment">-- On soustrait 1 car sinon le damier commence au milieu d'un paquet de 2x2 et ce n'est pas joli.
</span> <span class="kw">if</span> ((<span class="ident">Ligne</span>-<span class="number">1</span>)/<span class="number">2</span> + (<span class="ident">Col</span>-<span class="number">1</span>)/<span class="number">2</span>) <span
class="kw">mod</span> <span class="number">2</span> = <span class="number">1</span> <span class="kw">then</span>
</span> <span class="comment">-- On soustrait 1 car sinon le damier commence au milieu d'un paquet de 2x2 et ce n'est pas joli.
</span> <span class="kw">if</span> ((<span class="ident">Ligne</span>-<span class="number">1</span>)/<span class="number">2</span> + (<span class="ident">Col</span>-<span class="number">1</span>)/<span class="number">2</span>) <span class="kw">mod</span> <span class="number">2</span> = <span class="number">1</span> <span class="kw">then</span>
<span class="ident">Txt.Put</span>(<span class="string">&quot;#&quot;</span>) ;
<span class="kw">else</span>
<span class="ident">Txt.Put</span>(<span class="string">&quot; &quot;</span>) ;
@ -108,47 +92,40 @@
<span class="ident">Txt.New_Line</span> ;
<span class="kw">end</span> <span class="fname">Tracer_Gros_Damier</span> ;<span class="eols">
</span><span class="kw">begin</span><span class="eols">
</span><span class="kw">begin</span><span class="eols">
</span> <span class="ident">Txt.Put_Line</span>(<span class="string">&quot;Test de Tracer_Ligne : &quot;</span>) ;
</span> <span class="ident">Txt.Put_Line</span>(<span class="string">&quot;Test de Tracer_Ligne : &quot;</span>) ;
<span class="ident">Txt.New_Line</span> ;<span class="eols">
</span> <span class="ident">Tracer_Ligne</span>(<span class="number">3</span>) ;
</span> <span class="ident">Tracer_Ligne</span>(<span class="number">3</span>) ;
<span class="ident">Tracer_Ligne</span>(<span class="number">8</span>) ;
<span class="ident">Tracer_Ligne</span>(<span class="number">20</span>) ;<span class="eols">
</span> <span class="ident">Txt.New_Line</span> ;
</span> <span class="ident">Txt.New_Line</span> ;
<span class="ident">Txt.Put_Line</span>(<span class="string">&quot;Test de Tracer_Rectangle : &quot;</span>) ;
<span class="ident">Txt.New_Line</span> ;<span class="eols">
</span> <span class="ident">Tracer_Rectangle</span>(<span class="number">5</span>, <span class="number">5</span>) ;
</span> <span class="ident">Tracer_Rectangle</span>(<span class="number">5</span>, <span class="number">5</span>) ;
<span class="ident">Tracer_Rectangle</span>(<span class="number">14</span>, <span class="number">2</span>) ;
<span class="ident">Tracer_Rectangle</span>(<span class="number">4</span>, <span class="number">6</span>) ;<span class="eols">
</span> <span class="ident">Txt.New_Line</span> ;
</span> <span class="ident">Txt.New_Line</span> ;
<span class="ident">Txt.Put_Line</span>(<span class="string">&quot;Test de Tracer_Quadrillage : &quot;</span>) ;
<span class="ident">Txt.New_Line</span> ;<span class="eols">
</span> <span class="ident">Tracer_Quadrillage</span>(<span class="number">19</span>, <span class="number">11</span>) ;<span class="eols">
</span> <span class="ident">Tracer_Quadrillage</span>(<span class="number">19</span>, <span class="number">11</span>) ;<span class="eols">
</span> <span class="ident">Txt.New_Line</span> ;
</span> <span class="ident">Txt.New_Line</span> ;
<span class="ident">Txt.Put_Line</span>(<span class="string">&quot;Test de Tracer_Damier : &quot;</span>) ;
<span class="ident">Txt.New_Line</span> ;<span class="eols">
</span> <span class="ident">Tracer_Damier</span>(<span class="number">18</span>, <span class="number">10</span>) ;<span class="eols">
</span> <span class="ident">Tracer_Damier</span>(<span class="number">18</span>, <span class="number">10</span>) ;<span class="eols">
</span> <span class="ident">Txt.New_Line</span> ;
</span> <span class="ident">Txt.New_Line</span> ;
<span class="ident">Txt.Put_Line</span>(<span class="string">&quot;Test de Tracer_Gros_Damier : &quot;</span>) ;
<span class="ident">Txt.New_Line</span> ;<span class="eols">
</span> <span class="ident">Tracer_Gros_Damier</span>(<span class="number">18</span>, <span class="number">10</span>) ;<span class="eols">
</span> <span class="ident">Tracer_Gros_Damier</span>(<span class="number">18</span>, <span class="number">10</span>) ;<span class="eols">
</span><span class="kw">end</span> <span class="fname">Mission1</span> ;
</code></main>
<footer><small class="pcom"><a class="caml_c" href="../../../yversion.html" data-eliom-c-onclick="GdR46hGdWKzn">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>
</span><span class="kw">end</span> <span class="fname">Mission1</span> ;
</code></main><footer><small class="pcom"><a class="caml_c" href="../../../yversion.html" data-eliom-c-onclick="GdR46hGdWKzn">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>

View file

@ -1,135 +1,95 @@
<!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">
<html class="ada2" lang="fr" id="h" xmlns="http://www.w3.org/1999/xhtml"><head><title>mission2.adb</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">mission2.adb</h1></div><main><code class="page block"><span class="kw">with</span> <span class="ident">Gada.Text_IO</span> ;<span class="eols">
<head>
<title>mission2.adb</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>
</span><span class="kw">procedure</span> <span class="fname">Mission2</span> <span class="kw">is</span><span class="eols">
<body>
<div class="header" id="header">
<h1 id="title">mission2.adb</h1>
</div>
<main>
<code class="page block"><span class="kw">with</span> <span class="ident">Gada.Text_IO</span> ;<span class="eols">
</span> <span class="kw">package</span> <span class="fname">Txt</span> <span class="kw">renames</span> <span class="ident">Gada.Text_IO</span> ;<span class="eols">
</span><span class="kw">procedure</span> <span class="fname">Mission2</span> <span class="kw">is</span><span class="eols">
</span> <span class="kw">package</span> <span class="fname">Txt</span> <span class="kw">renames</span> <span class="ident">Gada.Text_IO</span> ;<span class="eols">
</span> <span class="kw">type</span> <span class="type">T_Intervalle</span> <span class="kw">is</span> <span class="kw">record</span>
</span> <span class="kw">type</span> <span class="type">T_Intervalle</span> <span class="kw">is</span> <span class="kw">record</span>
<span class="ident">Inf</span> : <span class="type">Float</span> ;
<span class="ident">Sup</span> : <span class="type">Float</span> ;
<span class="kw">end</span> <span class="kw">record</span> ;
<span class="kw">function</span> <span class="fname">Intervalle_Image</span>(<span class="ident">A</span> : <span class="type">T_Intervalle</span>) <span class="kw">return</span> <span class="type">String</span> <span class="kw">is</span>
<span class="kw">begin</span>
<span class="kw">return</span> <span class="string">&quot;[&quot;</span> &amp; <span class="ident">Integer</span>'<span class="ident">Image</span>(<span class="ident">Integer</span>(<span class="ident">A.Inf</span>)) &amp; <span
class="string">&quot;,&quot;</span> &amp; <span class="ident">Integer</span>'<span class="ident">Image</span>(<span class="ident">Integer</span>(<span class="ident">A.Sup</span>)) &amp; <span class="string">&quot;]&quot;</span> ;
<span class="kw">return</span> <span class="string">&quot;[&quot;</span> &amp; <span class="ident">Integer</span>'<span class="ident">Image</span>(<span class="ident">Integer</span>(<span class="ident">A.Inf</span>)) &amp; <span class="string">&quot;,&quot;</span> &amp; <span class="ident">Integer</span>'<span class="ident">Image</span>(<span class="ident">Integer</span>(<span class="ident">A.Sup</span>)) &amp; <span class="string">&quot;]&quot;</span> ;
<span class="kw">end</span> <span class="fname">Intervalle_Image</span> ;<span class="eols">
</span> <span class="comment">-- A est inclus dans B &lt;=&gt; les bornes de A sont comprises entre les bornes de B.
</span> <span class="kw">function</span> <span class="fname">Est_Inclus</span> (<span class="ident">A</span> : <span class="type">T_Intervalle</span> ; <span class="ident">B</span> : <span class="type">T_Intervalle</span>) <span
class="kw">return</span> <span class="type">Boolean</span> <span class="kw">is</span>
</span> <span class="comment">-- A est inclus dans B &lt;=&gt; les bornes de A sont comprises entre les bornes de B.
</span> <span class="kw">function</span> <span class="fname">Est_Inclus</span> (<span class="ident">A</span> : <span class="type">T_Intervalle</span> ; <span class="ident">B</span> : <span class="type">T_Intervalle</span>) <span class="kw">return</span> <span class="type">Boolean</span> <span class="kw">is</span>
<span class="kw">begin</span>
<span class="kw">return</span> <span class="ident">A.Inf</span> &gt;= <span class="ident">B.Inf</span> <span class="kw">and</span> <span class="ident">A.Sup</span> &lt;= <span class="ident">B.Sup</span> ;
<span class="kw">end</span> <span class="fname">Est_Inclus</span> ;<span class="eols">
</span> <span class="comment">-- A et B disjoints &lt;=&gt; A est situé avant B ou A est situé après B.
</span> <span class="kw">function</span> <span class="fname">Disjoints</span> (<span class="ident">A</span> : <span class="type">T_Intervalle</span> ; <span class="ident">B</span> : <span class="type">T_Intervalle</span>) <span
class="kw">return</span> <span class="type">Boolean</span> <span class="kw">is</span>
</span> <span class="comment">-- A et B disjoints &lt;=&gt; A est situé avant B ou A est situé après B.
</span> <span class="kw">function</span> <span class="fname">Disjoints</span> (<span class="ident">A</span> : <span class="type">T_Intervalle</span> ; <span class="ident">B</span> : <span class="type">T_Intervalle</span>) <span class="kw">return</span> <span class="type">Boolean</span> <span class="kw">is</span>
<span class="kw">begin</span>
<span class="kw">return</span> <span class="ident">A.Sup</span> &lt; <span class="ident">B.Inf</span> <span class="kw">or</span> <span class="ident">A.Inf</span> &gt; <span class="ident">B.Sup</span> ;
<span class="kw">end</span> <span class="fname">Disjoints</span> ;<span class="eols">
</span> <span class="kw">procedure</span> <span class="fname">Afficher_Relation</span> (<span class="ident">A</span> : <span class="type">T_Intervalle</span> ; <span class="ident">B</span> : <span class="type">T_Intervalle</span>) <span
class="kw">is</span>
</span> <span class="kw">procedure</span> <span class="fname">Afficher_Relation</span> (<span class="ident">A</span> : <span class="type">T_Intervalle</span> ; <span class="ident">B</span> : <span class="type">T_Intervalle</span>) <span class="kw">is</span>
<span class="kw">begin</span>
<span class="kw">if</span> <span class="ident">Est_Inclus</span>(<span class="ident">A</span>, <span class="ident">B</span>) <span class="kw">then</span>
<span class="ident">Txt.Put_Line</span>(<span class="ident">Intervalle_Image</span>(<span class="ident">A</span>) &amp; <span class="string">&quot; est inclus dans &quot;</span> &amp; <span class="ident">Intervalle_Image</span>(<span
class="ident">B</span>)) ;
<span class="ident">Txt.Put_Line</span>(<span class="ident">Intervalle_Image</span>(<span class="ident">A</span>) &amp; <span class="string">&quot; est inclus dans &quot;</span> &amp; <span class="ident">Intervalle_Image</span>(<span class="ident">B</span>)) ;
<span class="kw">elsif</span> <span class="ident">Est_Inclus</span>(<span class="ident">B</span>,<span class="ident">A</span>) <span class="kw">then</span>
<span class="ident">Txt.Put_Line</span>(<span class="ident">Intervalle_Image</span>(<span class="ident">B</span>) &amp; <span class="string">&quot; est inclus dans &quot;</span> &amp; <span class="ident">Intervalle_Image</span>(<span
class="ident">A</span>)) ;
<span class="ident">Txt.Put_Line</span>(<span class="ident">Intervalle_Image</span>(<span class="ident">B</span>) &amp; <span class="string">&quot; est inclus dans &quot;</span> &amp; <span class="ident">Intervalle_Image</span>(<span class="ident">A</span>)) ;
<span class="kw">elsif</span> <span class="ident">Disjoints</span>(<span class="ident">A</span>,<span class="ident">B</span>) <span class="kw">then</span>
<span class="ident">Txt.Put_Line</span>(<span class="ident">Intervalle_Image</span>(<span class="ident">A</span>) &amp; <span class="string">&quot; et &quot;</span> &amp; <span class="ident">Intervalle_Image</span>(<span class="ident">B</span>)
&amp; <span class="string">&quot; sont disjoints.&quot;</span>) ;
<span class="ident">Txt.Put_Line</span>(<span class="ident">Intervalle_Image</span>(<span class="ident">A</span>) &amp; <span class="string">&quot; et &quot;</span> &amp; <span class="ident">Intervalle_Image</span>(<span class="ident">B</span>) &amp; <span class="string">&quot; sont disjoints.&quot;</span>) ;
<span class="kw">else</span>
<span class="ident">Txt.Put_Line</span>(<span class="ident">Intervalle_Image</span>(<span class="ident">A</span>) &amp; <span class="string">&quot; et &quot;</span> &amp; <span class="ident">Intervalle_Image</span>(<span class="ident">B</span>)
&amp; <span class="string">&quot; ne sont pas disjoints.&quot;</span>) ;
<span class="ident">Txt.Put_Line</span>(<span class="ident">Intervalle_Image</span>(<span class="ident">A</span>) &amp; <span class="string">&quot; et &quot;</span> &amp; <span class="ident">Intervalle_Image</span>(<span class="ident">B</span>) &amp; <span class="string">&quot; ne sont pas disjoints.&quot;</span>) ;
<span class="kw">end</span> <span class="kw">if</span> ;
<span class="kw">end</span> <span class="fname">Afficher_Relation</span> ;<span class="eols">
</span> <span class="kw">type</span> <span class="type">T_Prod</span> <span class="kw">is</span> <span class="kw">record</span>
</span> <span class="kw">type</span> <span class="type">T_Prod</span> <span class="kw">is</span> <span class="kw">record</span>
<span class="ident">Gauche</span> : <span class="type">T_Intervalle</span> ;
<span class="ident">Droite</span> : <span class="type">T_Intervalle</span> ;
<span class="kw">end</span> <span class="kw">record</span> ;
<span class="kw">function</span> <span class="fname">Prod_Image</span>(<span class="ident">A</span> : <span class="type">T_Prod</span>) <span class="kw">return</span> <span class="type">String</span> <span class="kw">is</span>
<span class="kw">begin</span>
<span class="kw">return</span> <span class="ident">Intervalle_Image</span>(<span class="ident">A.Gauche</span>) &amp; <span class="string">&quot; x &quot;</span> &amp; <span class="ident">Intervalle_Image</span>(<span
class="ident">A.Droite</span>) ;
<span class="kw">return</span> <span class="ident">Intervalle_Image</span>(<span class="ident">A.Gauche</span>) &amp; <span class="string">&quot; x &quot;</span> &amp; <span class="ident">Intervalle_Image</span>(<span class="ident">A.Droite</span>) ;
<span class="kw">end</span> <span class="fname">Prod_Image</span> ;
<span class="comment">-- A1xA2 est inclus dans B1xB2 &lt;=&gt; A1 inclus dans B1 et A2 inclus dans B2
</span> <span class="kw">function</span> <span class="fname">Prod_Est_Inclus</span> (<span class="ident">A</span> : <span class="type">T_Prod</span> ; <span class="ident">B</span> : <span class="type">T_Prod</span>) <span
class="kw">return</span> <span class="type">Boolean</span> <span class="kw">is</span>
</span> <span class="kw">function</span> <span class="fname">Prod_Est_Inclus</span> (<span class="ident">A</span> : <span class="type">T_Prod</span> ; <span class="ident">B</span> : <span class="type">T_Prod</span>) <span class="kw">return</span> <span class="type">Boolean</span> <span class="kw">is</span>
<span class="kw">begin</span>
<span class="kw">return</span> <span class="ident">Est_Inclus</span> (<span class="ident">A.Gauche</span>, <span class="ident">B.Gauche</span>) <span class="kw">and</span> <span class="ident">Est_Inclus</span>(<span
class="ident">A.Droite</span>, <span class="ident">B.Droite</span>) ;
<span class="kw">return</span> <span class="ident">Est_Inclus</span> (<span class="ident">A.Gauche</span>, <span class="ident">B.Gauche</span>) <span class="kw">and</span> <span class="ident">Est_Inclus</span>(<span class="ident">A.Droite</span>, <span class="ident">B.Droite</span>) ;
<span class="kw">end</span> <span class="fname">Prod_Est_Inclus</span> ;<span class="eols">
</span> <span class="comment">-- A1xA2 disjoint de B1xB2 &lt;=&gt; A1 disjoint de B1 ou A2 disjoint de B2
</span> <span class="kw">function</span> <span class="fname">Prod_Disjoints</span> (<span class="ident">A</span> : <span class="type">T_Prod</span> ; <span class="ident">B</span> : <span class="type">T_Prod</span>) <span
class="kw">return</span> <span class="type">Boolean</span> <span class="kw">is</span>
</span> <span class="comment">-- A1xA2 disjoint de B1xB2 &lt;=&gt; A1 disjoint de B1 ou A2 disjoint de B2
</span> <span class="kw">function</span> <span class="fname">Prod_Disjoints</span> (<span class="ident">A</span> : <span class="type">T_Prod</span> ; <span class="ident">B</span> : <span class="type">T_Prod</span>) <span class="kw">return</span> <span class="type">Boolean</span> <span class="kw">is</span>
<span class="kw">begin</span>
<span class="kw">return</span> <span class="ident">Disjoints</span>(<span class="ident">A.Gauche</span>, <span class="ident">B.Gauche</span>) <span class="kw">or</span> <span class="ident">Disjoints</span>(<span class="ident">A.Droite</span>,
<span class="ident">B.Droite</span>) ;
<span class="kw">return</span> <span class="ident">Disjoints</span>(<span class="ident">A.Gauche</span>, <span class="ident">B.Gauche</span>) <span class="kw">or</span> <span class="ident">Disjoints</span>(<span class="ident">A.Droite</span>, <span class="ident">B.Droite</span>) ;
<span class="kw">end</span> <span class="fname">Prod_Disjoints</span> ;<span class="eols">
</span> <span class="kw">procedure</span> <span class="fname">Prod_Afficher_Relation</span> (<span class="ident">A</span> : <span class="type">T_Prod</span> ; <span class="ident">B</span> : <span class="type">T_Prod</span>) <span
class="kw">is</span>
</span> <span class="kw">procedure</span> <span class="fname">Prod_Afficher_Relation</span> (<span class="ident">A</span> : <span class="type">T_Prod</span> ; <span class="ident">B</span> : <span class="type">T_Prod</span>) <span class="kw">is</span>
<span class="kw">begin</span>
<span class="kw">if</span> <span class="ident">Prod_Est_Inclus</span>(<span class="ident">A</span>, <span class="ident">B</span>) <span class="kw">then</span>
<span class="ident">Txt.Put_Line</span>(<span class="ident">Prod_Image</span>(<span class="ident">A</span>) &amp; <span class="string">&quot; est inclus dans &quot;</span> &amp; <span class="ident">Prod_Image</span>(<span
class="ident">B</span>)) ;
<span class="ident">Txt.Put_Line</span>(<span class="ident">Prod_Image</span>(<span class="ident">A</span>) &amp; <span class="string">&quot; est inclus dans &quot;</span> &amp; <span class="ident">Prod_Image</span>(<span class="ident">B</span>)) ;
<span class="kw">elsif</span> <span class="ident">Prod_Est_Inclus</span>(<span class="ident">B</span>,<span class="ident">A</span>) <span class="kw">then</span>
<span class="ident">Txt.Put_Line</span>(<span class="ident">Prod_Image</span>(<span class="ident">B</span>) &amp; <span class="string">&quot; est inclus dans &quot;</span> &amp; <span class="ident">Prod_Image</span>(<span
class="ident">A</span>)) ;
<span class="ident">Txt.Put_Line</span>(<span class="ident">Prod_Image</span>(<span class="ident">B</span>) &amp; <span class="string">&quot; est inclus dans &quot;</span> &amp; <span class="ident">Prod_Image</span>(<span class="ident">A</span>)) ;
<span class="kw">elsif</span> <span class="ident">Prod_Disjoints</span>(<span class="ident">A</span>,<span class="ident">B</span>) <span class="kw">then</span>
<span class="ident">Txt.Put_Line</span>(<span class="ident">Prod_Image</span>(<span class="ident">A</span>) &amp; <span class="string">&quot; et &quot;</span> &amp; <span class="ident">Prod_Image</span>(<span class="ident">B</span>) &amp; <span
class="string">&quot; sont disjoints.&quot;</span>) ;
<span class="ident">Txt.Put_Line</span>(<span class="ident">Prod_Image</span>(<span class="ident">A</span>) &amp; <span class="string">&quot; et &quot;</span> &amp; <span class="ident">Prod_Image</span>(<span class="ident">B</span>) &amp; <span class="string">&quot; sont disjoints.&quot;</span>) ;
<span class="kw">else</span>
<span class="ident">Txt.Put_Line</span>(<span class="ident">Prod_Image</span>(<span class="ident">A</span>) &amp; <span class="string">&quot; et &quot;</span> &amp; <span class="ident">Prod_Image</span>(<span class="ident">B</span>) &amp; <span
class="string">&quot; ne sont pas disjoints.&quot;</span>) ;
<span class="ident">Txt.Put_Line</span>(<span class="ident">Prod_Image</span>(<span class="ident">A</span>) &amp; <span class="string">&quot; et &quot;</span> &amp; <span class="ident">Prod_Image</span>(<span class="ident">B</span>) &amp; <span class="string">&quot; ne sont pas disjoints.&quot;</span>) ;
<span class="kw">end</span> <span class="kw">if</span> ;
<span class="kw">end</span> <span class="fname">Prod_Afficher_Relation</span> ;<span class="eols">
</span> <span class="ident">C</span> : <span class="kw">constant</span> <span class="type">T_Intervalle</span> := (<span class="number">5.0</span>, <span class="number">10.0</span>) ;
</span> <span class="ident">C</span> : <span class="kw">constant</span> <span class="type">T_Intervalle</span> := (<span class="number">5.0</span>, <span class="number">10.0</span>) ;
<span class="ident">D</span> : <span class="kw">constant</span> <span class="type">T_Intervalle</span> := (<span class="number">7.0</span>, <span class="number">8.0</span>) ;
<span class="ident">E</span> : <span class="kw">constant</span> <span class="type">T_Intervalle</span> := (<span class="number">4.0</span>, <span class="number">6.0</span>) ;<span class="eols">
</span><span class="kw">begin</span>
</span><span class="kw">begin</span>
<span class="ident">Afficher_Relation</span>(<span class="ident">C</span>,<span class="ident">D</span>) ;
<span class="ident">Afficher_Relation</span>(<span class="ident">D</span>,<span class="ident">C</span>) ;
<span class="ident">Afficher_Relation</span>(<span class="ident">C</span>,<span class="ident">E</span>) ;
<span class="ident">Afficher_Relation</span>(<span class="ident">D</span>,<span class="ident">E</span>) ;<span class="eols">
</span> <span class="ident">Prod_Afficher_Relation</span>((<span class="ident">C</span>, <span class="ident">C</span>), (<span class="ident">D</span>, <span class="ident">D</span>)) ;
</span> <span class="ident">Prod_Afficher_Relation</span>((<span class="ident">C</span>, <span class="ident">C</span>), (<span class="ident">D</span>, <span class="ident">D</span>)) ;
<span class="ident">Prod_Afficher_Relation</span>((<span class="ident">C</span>, <span class="ident">D</span>), (<span class="ident">D</span>, <span class="ident">C</span>)) ;
<span class="ident">Prod_Afficher_Relation</span>((<span class="ident">D</span>, <span class="ident">C</span>), (<span class="ident">E</span>, <span class="ident">C</span>)) ;
<span class="kw">end</span> <span class="fname">Mission2</span> ;
</code>
</main>
<footer><small class="pcom"><a class="caml_c" href="../../../yversion.html" data-eliom-c-onclick="VZGVzPPo79iK">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>
<span class="kw">end</span> <span class="fname">Mission2</span> ;
</code></main><footer><small class="pcom"><a class="caml_c" href="../../../yversion.html" data-eliom-c-onclick="VZGVzPPo79iK">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>

View file

@ -1,31 +1,21 @@
<html class="ada2" lang="fr" id="h" xmlns="http://www.w3.org/1999/xhtml">
<!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>mission2.ml</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">mission2.ml</h1></div><main><code class="page block"><span class="comment">(* Version OCaml de l'exercice sur les intervalles *)</span>
<head>
<title>mission2.ml</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">mission2.ml</h1>
</div>
<main><code class="page block"><span class="comment">(* Version OCaml de l'exercice sur les intervalles *)</span>
<span class="kw">type</span> t_intervalle =
<span class="kw">type</span> t_intervalle =
{ inf: float ;
sup: float }
<span class="kw">let</span> <span class="letvar">sof</span> x = string_of_int (int_of_float x)
<span class="kw">let</span> <span class="letvar">sof</span> x = string_of_int (int_of_float x)
<span class="comment">(* Les trois premières fonctions demandées. *)</span>
<span class="kw">let</span> <span class="letvar">intervalle_image</span> it = <span class="string">&quot;[&quot;</span> ^ sof it.inf ^ <span class="string">&quot;, &quot;</span> ^ sof it.sup ^ <span class="string">&quot;]&quot;</span>
<span class="kw">let</span> <span class="letvar">est_inclus</span> a b = (a.inf &gt;= b.inf &amp;&amp; a.sup &lt;= b.sup)
<span class="kw">let</span> <span class="letvar">disjoints</span> a b = (a.sup &lt; b.inf || a.inf &gt; b.sup)
<span class="comment">(* Les trois premières fonctions demandées. *)</span>
<span class="kw">let</span> <span class="letvar">intervalle_image</span> it = <span class="string">&quot;[&quot;</span> ^ sof it.inf ^ <span class="string">&quot;, &quot;</span> ^ sof it.sup ^ <span class="string">&quot;]&quot;</span>
<span class="kw">let</span> <span class="letvar">est_inclus</span> a b = (a.inf &gt;= b.inf &amp;&amp; a.sup &lt;= b.sup)
<span class="kw">let</span> <span class="letvar">disjoints</span> a b = (a.sup &lt; b.inf || a.inf &gt; b.sup)
<span class="comment">(* Fonction d'affichage générique qui marchera pour t_intervalle et pour t_prod. *)</span>
<span class="kw">let</span> <span class="letvar">affichage_gen</span> f_inclus f_disjoint f_image i1 i2 =
<span class="comment">(* Fonction d'affichage générique qui marchera pour t_intervalle et pour t_prod. *)</span>
<span class="kw">let</span> <span class="letvar">affichage_gen</span> f_inclus f_disjoint f_image i1 i2 =
<span class="kw">let</span> <span class="letvar">s1</span> = f_image i1
<span class="kw">and</span> <span class="letvar">s2</span> = f_image i2 <span class="kw">in</span>
@ -34,26 +24,26 @@
<span class="kw">else</span> <span class="kw">if</span> f_disjoint i1 i2 <span class="kw">then</span> <span class="uident">Printf</span>.printf <span class="string">&quot;%s et %s sont disjoints\n&quot;</span> s1 s2
<span class="kw">else</span> <span class="uident">Printf</span>.printf <span class="string">&quot;%s et %s ne sont pas disjoints, ni inclus\n&quot;</span> s1 s2
<span class="comment">(* Afficher_relation pour les intervalles. *)</span>
<span class="kw">let</span> <span class="letvar">afficher_relation</span> = affichage_gen est_inclus disjoints intervalle_image
<span class="comment">(* Afficher_relation pour les intervalles. *)</span>
<span class="kw">let</span> <span class="letvar">afficher_relation</span> = affichage_gen est_inclus disjoints intervalle_image
<span class="comment">(* Produit cartésien *)</span>
<span class="kw">type</span> t_prod =
<span class="comment">(* Produit cartésien *)</span>
<span class="kw">type</span> t_prod =
{ left: t_intervalle ;
right: t_intervalle }
<span class="comment">(* Les trois premières fonctions pour les produits cartésiens. *)</span>
<span class="kw">let</span> <span class="letvar">prod_image</span> p = intervalle_image p.left ^ <span class="string">&quot; x &quot;</span> ^ intervalle_image p.right
<span class="kw">let</span> <span class="letvar">prod_est_inclus</span> a b = est_inclus a.left b.left &amp;&amp; est_inclus a.right b.right
<span class="kw">let</span> <span class="letvar">prod_disjoints</span> a b = disjoints a.left b.left || disjoints a.right b.right
<span class="comment">(* Les trois premières fonctions pour les produits cartésiens. *)</span>
<span class="kw">let</span> <span class="letvar">prod_image</span> p = intervalle_image p.left ^ <span class="string">&quot; x &quot;</span> ^ intervalle_image p.right
<span class="kw">let</span> <span class="letvar">prod_est_inclus</span> a b = est_inclus a.left b.left &amp;&amp; est_inclus a.right b.right
<span class="kw">let</span> <span class="letvar">prod_disjoints</span> a b = disjoints a.left b.left || disjoints a.right b.right
<span class="comment">(* La fonction d'affichage demandée. *)</span>
<span class="kw">let</span> <span class="letvar">prod_afficher_relation</span> = affichage_gen prod_est_inclus prod_disjoints prod_image
<span class="comment">(* La fonction d'affichage demandée. *)</span>
<span class="kw">let</span> <span class="letvar">prod_afficher_relation</span> = affichage_gen prod_est_inclus prod_disjoints prod_image
<span class="kw">let</span> <span class="letvar">prod</span> a b = { left = a ; right = b }
<span class="kw">let</span> <span class="letvar">prod</span> a b = { left = a ; right = b }
<span class="comment">(* Test *)</span>
<span class="kw">let</span> () =
<span class="comment">(* Test *)</span>
<span class="kw">let</span> () =
<span class="kw">let</span> <span class="letvar">c</span> = { inf = <span class="number">5.0</span> ; sup = <span class="number">10.0</span> }
<span class="kw">and</span> <span class="letvar">d</span> = { inf = <span class="number">7.0</span> ; sup = <span class="number">8.0</span> }
<span class="kw">and</span> <span class="letvar">e</span> = { inf = <span class="number">4.0</span> ; sup = <span class="number">6.0</span> }
@ -70,11 +60,4 @@
()
</code></main>
<footer><small class="pcom"><a class="caml_c" href="../../../yversion.html" data-eliom-c-onclick="UJHGP0o9lEGA">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>
</code></main><footer><small class="pcom"><a class="caml_c" href="../../../yversion.html" data-eliom-c-onclick="UJHGP0o9lEGA">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>