beaucoup de trucs
47
Y/Ada-S1/exercices/complet-s1.html
Normal file
24
Y/Ada-S2/exo-intervalles.html
Normal file
|
@ -0,0 +1,24 @@
|
|||
<!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 avec des types article</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 avec des types article</h1><nav><a class="caml_c" title="Back to main page" href="tps.html" data-eliom-c-onclick="qTPZRMm8azh9"></a></nav></div><main><section class="yfold"><h2 class="yfold-title" onclick="toggleYfold('47526826')"><span class="arrow" id="arrow-47526826">▸</span>Objectifs</h2><div class="yfold-content" id="content-47526826" data-yfold-default="show"><ul><li>L'objectif est d'écrire quelques fonctions manipulant des intervalles de réels, représentés avec un type article.</li></ul></div><script>
|
||||
//<![CDATA[
|
||||
initYfold('47526826') ;
|
||||
//]]>
|
||||
</script></section><section class="yfold"><h2 class="yfold-title" onclick="toggleYfold('59d9c792')"><span class="arrow" id="arrow-59d9c792">▸</span>Étapes à suivre</h2><div class="yfold-content" id="content-59d9c792" data-yfold-default="hide"><section class="yfold card"><h4 class="yfold-title" onclick="toggleYfold('c5642c79')"><span class="arrow" id="arrow-c5642c79">▸</span>Première partie : les intervalles compacts</h4><div class="yfold-content" id="content-c5642c79" data-yfold-default="hide"><ul class="steps"><li>Créez un nouveau fichier <span class="file">mission2.adb</span> contenant la structure habituelle d'un programme Ada. </li><li>Définissez un type article <code class="inline">T_Intervalle</code> permettant de représenter les intervalles de réels fermés et bornés, c'est-à-dire de la forme [inf, sup] où inf et sup sont des réels. Remarquez qu'il suffit de connaître inf et sup pour définir l'intervalle.</li><li>Définissez une fonction <code class="inline">Intervalle_Image</code> qui reçoit un <code class="inline">T_Intervalle</code> et renvoie une chaîne de caractères, de la forme "[3,5]"<small class="pcom"> (pour un affichage pas trop laid, convertir les bornes en entier, ou alors utiliser l'acteur <a class="file caml_c" href="../Ada-S1/acteur-gada/dfloat.ads.html" data-eliom-c-onclick="QET/ZEqPcLT1">DFloat</a>).</small></li><li>Ajoutez une fonction <code class="inline">Est_Inclus</code> qui reçoit deux arguments A et B de type <code class="inline">T_Intervalle</code> et qui renvoie vrai si et seulement si A est inclus dans B. <img class="space" title="Est_Inclus" style="width:399px;height:50px;" alt="Function Est_Inclus" src="../Gen/Est_Inclus-2-a14-f.png"/><small class="pcom">(Le corps de la fonction tient en une seule ligne.)</small></li><li>Ajoutez une fonction <code class="inline">Disjoints</code> ayant la même signature que <code class="inline">Est_Inclus</code> (même arguments, même type de résultat) et qui renvoie vrai si et seulement si A et B sont disjoints. <small class="pcom">(Elle tient aussi en une seule ligne.)</small></li><li>Ajoutez une procédure <code class="inline">Afficher_Relation</code> qui reçoit deux arguments A et B de type <code class="inline">T_Intervalle</code> et qui affiche l'un ou l'autre des messages suivants (selon ce qui est le plus adéquat) :<ul><li><samp>A est inclus dans B</samp></li><li><samp>B est inclus dans A</samp></li><li><samp>A et B sont disjoints</samp></li><li><samp>A et B ne sont pas disjoints</samp><small class="pcom"> (mais aucun n'est inclus dans l'autre)</small></li></ul>Vous pouvez utiliser <code class="inline">Intervalle_Image</code> pour afficher l'intervalle lui-même au lieu de "A" ou "B".</li><li>Pour tester, créez trois constantes C, D, E, représentant respectivement les intervalles [5, 10], [7, 8], et [4, 6]. Puis, dans le corps du programme principal, invoquez <code class="inline">Afficher_Relation</code> avec les paires d'arguments (C,D), (D,C), (C,E), et (D,E). <br/>Grâce à votre maîtrise absolue des relations ensemblistes, vous pouvez prévoir à l'avance ce qui sera affiché.</li></ul></div><script>
|
||||
//<![CDATA[
|
||||
initYfold('c5642c79') ;
|
||||
//]]>
|
||||
</script></section><section class="yfold card"><h4 class="yfold-title" onclick="toggleYfold('c5f14639')"><span class="arrow" id="arrow-c5f14639">▸</span>Deuxième partie : produits cartésiens d'intervalles compacts</h4><div class="yfold-content" id="content-c5f14639" data-yfold-default="hide"><ul class="steps"><li>Dans le même programme, définissez un type <code class="inline">T_Prod</code> représentant un produit cartésien de deux intervalles. Par exemple : [1,5]x[3,8] est un élément de T_Prod</li><li>Définissez une fonction <code class="inline">Prod_Image</code> qui reçoit un <code class="inline">T_Prod</code>et qui renvoie une chaîne de caractère, par exemple "[1,5]x[3,8]".<small class="pcom"> Vous pensez spontanément à utiliser Intervalle_Image, c'est bien.</small></li><li>Comme ci-dessus, définissez les fonctions <code class="inline">Prod_Est_Inclus</code> et <code class="inline">Prod_Disjoints</code> qui reçoivent deux arguments A et B de type <code class="inline">T_Prod</code> et qui indiquent si A est inclus dans B ou si A et B sont disjoints (respectivement). <br/><small class="pcom">Le corps de ces fonctions tient toujours en une seule ligne.</small></li><li>Comme ci-dessus, ajoutez une procédure <code class="inline">Prod_Afficher_Relation</code> qui joue le même rôle que <code class="inline">Afficher_Relation</code> mais pour des arguments de type <code class="inline">T_Prod</code>.</li><li>Testez dans le corps du programme principal en invoquant <code class="inline">Prod_Afficher_Relation</code> avec les paires d'arguments suivants : <ul><li>CxC et DxD</li><li>CxD et DxC</li><li>DxC et ExC</li></ul>en prévoyant à l'avance ce qui sera affiché.</li></ul></div><script>
|
||||
//<![CDATA[
|
||||
initYfold('c5f14639') ;
|
||||
//]]>
|
||||
</script></section></div><script>
|
||||
//<![CDATA[
|
||||
initYfold('59d9c792') ;
|
||||
//]]>
|
||||
</script></section><section class="yfold"><h2 class="yfold-title" onclick="toggleYfold('0e19da2c')"><span class="arrow" id="arrow-0e19da2c">▸</span>Bilan</h2><div class="yfold-content" id="content-0e19da2c" data-yfold-default="hide"><ul class="success"><li>Avec le type <var class="type">T_Prod</var>, vous avez expérimenté un type article imbriqué dans un autre type article.</li><li>Vous savez maintenant que vous devez vous souvenir du produit cartésien À VIE.</li></ul></div><script>
|
||||
//<![CDATA[
|
||||
initYfold('0e19da2c') ;
|
||||
//]]>
|
||||
</script></section></main><footer><small class="pcom"><a class="caml_c" href="../yversion.html" data-eliom-c-onclick="dPUSAaaxce2m">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>
|
77
Y/Ada-S2/exo-traces.html
Normal file
|
@ -0,0 +1,77 @@
|
|||
<!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">▸</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">▸</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 " " 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">▸</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">▸</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>
|
BIN
Y/Gen/Acceleration_Stats-2-a60-f.png
Normal file
After Width: | Height: | Size: 7.4 KiB |
BIN
Y/Gen/Afficher_Action-2-b9e-.png
Normal file
After Width: | Height: | Size: 3.9 KiB |
BIN
Y/Gen/Controler_Vitesse-2-c6e-f.png
Normal file
After Width: | Height: | Size: 6.8 KiB |
BIN
Y/Gen/Date_Vitesse_Max-1-99f-f.png
Normal file
After Width: | Height: | Size: 5.8 KiB |
BIN
Y/Gen/Est_Inclus-2-a14-f.png
Normal file
After Width: | Height: | Size: 5.8 KiB |
BIN
Y/Gen/Tester_Affichage-0-c97-.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
Y/Gen/Tester_Controler_Vitesse-2-aa8-.png
Normal file
After Width: | Height: | Size: 5.1 KiB |
BIN
Y/Gen/Tracer_Ligne-1-4e0-.png
Normal file
After Width: | Height: | Size: 2.9 KiB |
BIN
Y/Gen/Tracer_Rectangle-2-266-.png
Normal file
After Width: | Height: | Size: 4.2 KiB |
BIN
Y/Gen/Vitesse_Min-0-fb9-f.png
Normal file
After Width: | Height: | Size: 3.9 KiB |
BIN
Y/Gen/Vitesse_Moy-1-99f-f.png
Normal file
After Width: | Height: | Size: 5.5 KiB |
BIN
Y/Images/algo-auto1.png
Normal file
After Width: | Height: | Size: 39 KiB |
BIN
Y/Images/car1.png
Normal file
After Width: | Height: | Size: 101 KiB |
BIN
Y/Images/car2.png
Normal file
After Width: | Height: | Size: 217 KiB |
BIN
Y/Images/car3.png
Normal file
After Width: | Height: | Size: 239 KiB |
BIN
Y/Images/car4.png
Normal file
After Width: | Height: | Size: 156 KiB |
BIN
Y/Images/etoile.png
Normal file
After Width: | Height: | Size: 455 B |
BIN
Y/Images/forbid.png
Normal file
After Width: | Height: | Size: 670 B |
BIN
Y/Images/logo-insa-light.jpg
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
Y/Images/speed1.png
Normal file
After Width: | Height: | Size: 80 KiB |
BIN
Y/Images/speed2.png
Normal file
After Width: | Height: | Size: 71 KiB |
137
Y/ystyle.css
|
@ -74,7 +74,7 @@ main {
|
|||
display: block;
|
||||
}
|
||||
|
||||
.yfold:not(.card) {
|
||||
.yfold:not(.card):not(aside) {
|
||||
background: rgba(189, 189, 189, 0.2);
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
|
@ -210,7 +210,7 @@ footer .pcom a {
|
|||
|
||||
|
||||
/* PAGE DE CODE */
|
||||
code {
|
||||
code:not(.inline) {
|
||||
z-index: 2;
|
||||
background: #000;
|
||||
width: min(94vw, 900px);
|
||||
|
@ -243,7 +243,7 @@ span.comment {
|
|||
white-space: pre;
|
||||
}
|
||||
|
||||
span.kw {
|
||||
span.kw, code.kw {
|
||||
color: rgb(227,99,99);
|
||||
}
|
||||
|
||||
|
@ -267,9 +267,140 @@ span.uident{
|
|||
color: rgb(203, 203, 53);
|
||||
}
|
||||
|
||||
.light code:not(.inline) {
|
||||
z-index: 2;
|
||||
background: black;
|
||||
width: min(94vw, 900px);
|
||||
border-radius: 12px;
|
||||
margin-left: 3vw;
|
||||
margin-top: 20px;
|
||||
font-family: monospace;
|
||||
display: block;
|
||||
color: white;
|
||||
|
||||
tab-size: 2;
|
||||
white-space: pre;
|
||||
|
||||
overflow-x: scroll;
|
||||
font-size: 120%;
|
||||
padding: 20px 50px 22px 15px;
|
||||
border-bottom: 10px solid #222;
|
||||
line-height: 1.55;
|
||||
}
|
||||
|
||||
code * {
|
||||
white-space: pre;
|
||||
tab-size: 2px;
|
||||
display: inline;
|
||||
}
|
||||
|
||||
.light span.comment {
|
||||
font-style: italic;
|
||||
color: rgb(204, 209, 209);
|
||||
white-space: pre;
|
||||
}
|
||||
|
||||
.light span.kw {
|
||||
color: rgb(138, 74, 10);
|
||||
}
|
||||
|
||||
.light span.type {
|
||||
color: rgb(138, 74, 10);
|
||||
}
|
||||
|
||||
.light span.fname {
|
||||
color: rgb(138, 138, 10);
|
||||
}
|
||||
|
||||
.light span.string {
|
||||
color: rgb(10, 138, 74);
|
||||
}
|
||||
|
||||
.light span.letvar {
|
||||
color: rgb(74, 138, 10);
|
||||
}
|
||||
|
||||
.light span.uident {
|
||||
color: rgb(138, 138, 10));
|
||||
}
|
||||
|
||||
span.file {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
var, samp, code.inline {
|
||||
display: inline-block;
|
||||
padding: 2px 8px;
|
||||
background: #222;
|
||||
color: #ffffcc ;
|
||||
border-radius: 4px;
|
||||
font-size: 90%;
|
||||
font-family: monospace;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
pre {
|
||||
margin: 20px 0;
|
||||
}
|
||||
|
||||
img.space {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
display: block;
|
||||
margin-top: 1.5ex;
|
||||
margin-bottom: 1.5ex;
|
||||
}
|
||||
|
||||
span.lbutton{
|
||||
position:relative;
|
||||
margin-right: 6px;
|
||||
}
|
||||
|
||||
span.lbutton:before{
|
||||
content:"";
|
||||
z-index:-1;
|
||||
left:-0.5em;
|
||||
top:-0.1em;
|
||||
border-width:2px;
|
||||
border-style:solid;
|
||||
border-color:rgb(138, 138, 10);
|
||||
position:absolute;
|
||||
border-right-color:transparent;
|
||||
width:100%;
|
||||
height:1em;
|
||||
transform:rotate(2deg);
|
||||
opacity:0.7;
|
||||
border-radius:50%;
|
||||
padding:0.1em 0.25em;
|
||||
}
|
||||
span.lbutton:after{
|
||||
content:"";
|
||||
z-index:-1;
|
||||
left:-0.5em;
|
||||
top:0.1em;
|
||||
padding:0.1em 0.25em;
|
||||
border-width:2px;
|
||||
border-style:solid;
|
||||
border-color:rgb(138, 138, 10);
|
||||
border-left-color:transparent;
|
||||
border-top-color:transparent;
|
||||
position:absolute;
|
||||
width:100%;
|
||||
height:1em;
|
||||
transform:rotate(-1deg);
|
||||
opacity:0.7;
|
||||
border-radius:50%;
|
||||
}
|
||||
|
||||
aside.yfold {
|
||||
margin: 20px 0;
|
||||
}
|
||||
|
||||
aside .yfold-title, .card .yfold-title {
|
||||
color: black;
|
||||
font-family: 'Poppins', sans-serif;
|
||||
font-weight: 100;
|
||||
}
|
||||
|
||||
/* MEDIA */
|
||||
|
||||
|
|