<?xml version="1.0" encoding="UTF-8"?>
<rss  xmlns:atom="http://www.w3.org/2005/Atom" 
      xmlns:media="http://search.yahoo.com/mrss/" 
      xmlns:content="http://purl.org/rss/1.0/modules/content/" 
      xmlns:dc="http://purl.org/dc/elements/1.1/" 
      version="2.0">
<channel>
<title>lyceum</title>
<link>https://www.lyceum.fr/</link>
<atom:link href="https://www.lyceum.fr/index.xml" rel="self" type="application/rss+xml"/>
<description></description>
<generator>quarto-1.5.55</generator>
<lastBuildDate>Wed, 31 Jul 2024 15:15:56 GMT</lastBuildDate>
<item>
  <title>Chapitre 1: Programme et variables</title>
  <link>https://www.lyceum.fr/2gt/snt/0-programmation-python/1-programme-et-variables/</link>
  <description><![CDATA[ 




<div class="programme">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-1-contents" aria-controls="callout-1" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Programme
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-1" class="callout-1-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="programme">
<table class="table table-bordered table-hover caption-top">
<thead class="table-warning">
<tr class="header">
<th>Contenus</th>
<th>Capacités attendues</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>Affectations, variables</p>
<p>Séquences</p></td>
<td>Écrire et développer des programmes pour répondre à des problèmes et modéliser des phénomènes physiques, économiques et sociaux.</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div>

</div>
<div class="intro quarto-layout-panel" data-layout-ncol="2">
<div class="quarto-layout-row">
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<p>Dans cette partie, nous allons nous intéresser à la programmation en utilisant le langage <a href="https://www.python.org/">Python</a> qui permet d’utiliser les outils de la programmation dans des domaines très variés: sciences, analyse de données, web… On commence par les variables, les entrées et les sorties d’un programme.</p>
</div>
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<p></p><figure class="wikimage figure"><picture>
			  <source type="image/webp" srcset="/img/CVhCKLzgHE-92.webp 92w, /img/CVhCKLzgHE-300.webp 300w, /img/CVhCKLzgHE-600.webp 600w" sizes="100vw">
  <source type="image/svg+xml" srcset="/img/CVhCKLzgHE-92.svg 92w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/CVhCKLzgHE-92.webp" width="600" height="658" alt="Le langage Python est un langage de haut niveau simple à apprendre." loading="lazy" decoding="async">
			</picture>
<figcaption id="caption">Le langage Python est un langage de haut niveau simple à apprendre.</figcaption><figcaption id="credit">©&nbsp;&nbsp;GPL&nbsp;<a id="image-description" href="//commons.wikimedia.org/wiki/File:Python-logo-notext.svg">via Wikimedia Commons</a></figcaption></figure><p></p>
</div>
</div>
</div>
<section id="algorithme-et-programme" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="algorithme-et-programme"><span class="header-section-number">1</span> Algorithme et programme</h2>
<dl>
<dt>
Programme
</dt>
<dd>
<div>
<p>Un programme est une séquence d’instructions destinées à être exécutées par la machine.</p>
</div>
</dd>
</dl>
<div class="example">
<div class="sourceCode" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb1-1"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Bonjour"</span>)</span>
<span id="cb1-2">nom <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">input</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Comment vous appelez-vous?"</span>)</span>
<span id="cb1-3"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Bienvenue"</span>, nom)</span></code></pre></div>
</div>
<div class="plus">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-2-contents" aria-controls="callout-2" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
En plus: Algorithme et programme
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-2" class="callout-2-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="plus" data-titre="Algorithme et programme">
<p>En informatique, on parle souvent d’algorithmes, car nos programmes sont en fait des algorithmes exécutés par les ordinateurs.</p>
<dl>
<dt>
Algorithme
</dt>
<dd>
<div>
<p>Un algorithme est une méthode, une suite d’instructions permettant d’obtenir un résultat.</p>
</div>
</dd>
</dl>
<p>Ce type de méthode est utilisé depuis la nuit des temps pour fabriquer des tissus, nouer des cordages, ou bien préparer des aliments.</p>
<p>La révolution de l’informatique survenue au milieu du XXe siècle vient du fait que l’on a pu faire exécuter ces algorithmes à des machines. Pour cela il a fallu exprimer ces algorithmes dans des langages de programmation afin qu’ils puissent être exécutés par les ordinateurs.</p>
</div>
</div>
</div>
</div>
</div>
</section>
<section id="variables" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="variables"><span class="header-section-number">2</span> Variables</h2>
<dl>
<dt>
Variable
</dt>
<dd>
<div>
<p>Les variables sont des noms permettant de désigner des valeurs stockées par le programme.</p>
</div>
</dd>
</dl>
<div class="example">
<p>Voici trois types de variables simples utilisées en Python.</p>
<div class="sourceCode" id="cb2" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb2-1"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># type int (integer)</span></span>
<span id="cb2-2">entier <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">13</span></span>
<span id="cb2-3"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># type float (nombre à virgule flottante)</span></span>
<span id="cb2-4">flottant <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">13.0</span></span>
<span id="cb2-5"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># type str (string) les chaînes de caractères</span></span>
<span id="cb2-6">texte <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"treize"</span></span></code></pre></div>
<p>Il existe aussi le type booléen: <code>True</code> ou <code>False</code></p>
</div>
<div class="callout callout-style-default callout-warning callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Avertissement
</div>
</div>
<div class="callout-body-container callout-body">
<p>Attention à bien distinguer une variable comme <code>age</code> d’une chaine de caractère <code>"age"</code>.</p>
</div>
</div>
</section>
<section id="la-fonction-print-afficher-une-sortie" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="la-fonction-print-afficher-une-sortie"><span class="header-section-number">3</span> La fonction <code>print()</code>: Afficher une sortie</h2>
<p>La fonction <code>print</code> permet au programme d’afficher du texte en <strong>sortie</strong>.</p>
<p>On peut utiliser <em>plusieurs arguments</em> séparés par des virgules qui seront alors ajoutés les uns à côté des autres (on dit concaténés).</p>
<div class="example">
<div id="287d8f6e" class="cell" data-execution_count="1">
<div class="sourceCode cell-code" id="cb3" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb3-1">nom <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Sy"</span></span>
<span id="cb3-2">prenom <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Omar"</span></span>
<span id="cb3-3">age <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">42</span></span>
<span id="cb3-4"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(prenom, nom, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"a"</span>, age, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"ans."</span>)</span></code></pre></div>
<p><span class="smallcaps">&gt;&gt;sortie</span></p>
<div class="cell-output cell-output-stdout">
<pre><code>Omar Sy a 42 ans.</code></pre>
</div>
</div>
</div>
</section>
<section id="la-fonction-input-récupérer-une-entrée" class="level2" data-number="4">
<h2 data-number="4" class="anchored" data-anchor-id="la-fonction-input-récupérer-une-entrée"><span class="header-section-number">4</span> La fonction <code>input()</code>: Récupérer une entrée</h2>
<p>La fonction <code>input</code> permet au programme de récupérer du texte en <strong>entrée</strong>.</p>
<p>Généralement, on récupère le texte entré par l’utilisateur dans un variable en le convertissant dans le type souhaité.</p>
<div class="example">
<div class="sourceCode" id="cb5" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb5-1"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># récupère une chaîne de caractère par défaut</span></span>
<span id="cb5-2">nom <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">input</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Comment vous appelez-vous?"</span>)</span>
<span id="cb5-3"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># on converti la réponse de l'utilisateur en entier avec la fonction int</span></span>
<span id="cb5-4">age <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">int</span>(<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">input</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Quel âge avez-vous?"</span>))</span>
<span id="cb5-5"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># on converti la réponse de l'utilisateur en fottant avec la fonction float</span></span>
<span id="cb5-6">taille <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">float</span>(<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">input</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Donnez votre taille en mètre"</span>))</span></code></pre></div>
<p>Lorsque le programme est lancé, l’utilisateur devra répondre aux questions posées, et on pourra utiliser ces réponses grâce aux variables <code>nom</code>, <code>age</code> et <code>taille</code>.</p>
</div>


</section>

 ]]></description>
  <category>2SNT</category>
  <guid>https://www.lyceum.fr/2gt/snt/0-programmation-python/1-programme-et-variables/</guid>
  <pubDate>Wed, 31 Jul 2024 15:15:56 GMT</pubDate>
</item>
<item>
  <title>Chapitre 2: Conditions</title>
  <link>https://www.lyceum.fr/2gt/snt/0-programmation-python/2-conditions/</link>
  <description><![CDATA[ 




<div class="programme">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-1-contents" aria-controls="callout-1" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Programme
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-1" class="callout-1-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="programme">
<table class="table table-bordered table-hover caption-top">
<thead class="table-warning">
<tr class="header">
<th>Contenus</th>
<th>Capacités attendues</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Instructions conditionnelles</td>
<td>Écrire et développer des programmes pour répondre à des problèmes et modéliser des phénomènes physiques, économiques et sociaux.</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div>

</div>
<div class="intro quarto-layout-panel" data-layout-ncol="2">
<div class="quarto-layout-row">
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<p>Dans ce chapitre, nous allons voir comment utiliser des conditions dans un programme pour que son fonctionnement change en fonction des valeurs des variables.</p>
</div>
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<p></p><figure class="wikimage figure"><picture>
			  <source type="image/webp" srcset="/img/DoT4R1ACRe-300.webp 300w, /img/DoT4R1ACRe-600.webp 600w, /img/DoT4R1ACRe-2048.webp 2048w" sizes="100vw">
  <source type="image/jpeg" srcset="/img/DoT4R1ACRe-300.jpeg 300w, /img/DoT4R1ACRe-600.jpeg 600w, /img/DoT4R1ACRe-2048.jpeg 2048w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/DoT4R1ACRe-300.webp" width="2048" height="1536" alt="Beaucoup de chemins ont possibles, reste à aller sur le bon en fonction de notre destination." loading="lazy" decoding="async">
			</picture>
<figcaption id="caption">Beaucoup de chemins ont possibles, reste à aller sur le bon en fonction de notre destination.</figcaption><figcaption id="credit">©&nbsp;beglib&nbsp;CC BY-SA 3.0&nbsp;<a id="image-description" href="//commons.wikimedia.org/wiki/File:110_to_91_interchange_-_panoramio.jpg">via Wikimedia Commons</a></figcaption></figure><p></p>
</div>
</div>
</div>
<section id="la-logique-booléenne" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="la-logique-booléenne"><span class="header-section-number">1</span> La logique booléenne</h2>
<p>Les booléens sont un type particulier de variables qui n’ont que deux valeurs possibles:</p>
<ul>
<li><code>True</code>: Vrai</li>
<li><code>False</code>: Faux</li>
</ul>
<section id="les-opérateurs-de-comparaison" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="les-opérateurs-de-comparaison"><span class="header-section-number">1.1</span> Les opérateurs de comparaison</h3>
<p>Pour comparer des variables en Python, on utilise les opérateurs suivants:</p>
<ul>
<li><code>x &lt; y</code>: x est-il inférieur à y ?</li>
<li><code>x &lt;= y</code>: x est-il inférieur ou égal à y ?</li>
<li><code>x &gt; y</code>: x est-il supérieur à y ?</li>
<li><code>x &gt;= y</code>: x est-il supérieur ou égal à y ?</li>
<li><code>x == y</code>: x est-il égal à y ?</li>
<li><code>x != y</code>: x est-il différent y ?</li>
</ul>
<p>Les opérateurs de comparaison retournent un booléen: <code>True</code> ou <code>False</code>.</p>
<div class="examples">
<div id="75aba9d4" class="cell" data-execution_count="1">
<div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb1-1"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># affectation des variables</span></span>
<span id="cb1-2">a <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">7</span></span>
<span id="cb1-3">b <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">13</span></span>
<span id="cb1-4">c <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">7</span></span>
<span id="cb1-5"></span>
<span id="cb1-6"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># comparaisons</span></span>
<span id="cb1-7"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(a <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&lt;</span> b) </span>
<span id="cb1-8"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(a <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> b)</span>
<span id="cb1-9"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(a <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">!=</span> b)</span>
<span id="cb1-10"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(a <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> c)</span></code></pre></div>
<p><span class="smallcaps">&gt;&gt;sortie</span></p>
<div class="cell-output cell-output-stdout">
<pre><code>True
False
True
True</code></pre>
</div>
</div>
</div>
<div class="callout callout-style-default callout-warning callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Avertissement
</div>
</div>
<div class="callout-body-container callout-body">
<p>Il faut bien distinguer le simple égal <code>=</code> utilisé pour l’<em>affectation des variables</em> et le double égal <code>==</code> utilisé pour la <em>condition d’égalité</em>.</p>
</div>
</div>
</section>
<section id="opérateurs-booléens" class="level3" data-number="1.2">
<h3 data-number="1.2" class="anchored" data-anchor-id="opérateurs-booléens"><span class="header-section-number">1.2</span> Opérateurs booléens</h3>
<p>On peut réaliser des combinaisons de valeurs booléennes avec les opérateurs:</p>
<ul>
<li><code>and</code>: <em>ET LOGIQUE</em> vrai si deux conditions sont vraies.</li>
<li><code>or</code>: <em>OU LOGIQUE</em> vrai si au moins une des deux conditions est vraie.</li>
</ul>
<div class="examples">
<div id="f3f0c2fd" class="cell" data-execution_count="2">
<div class="sourceCode cell-code" id="cb3" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb3-1">age <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">15</span></span>
<span id="cb3-2"></span>
<span id="cb3-3"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># comparaisons</span></span>
<span id="cb3-4"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(age <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">10</span>)  </span>
<span id="cb3-5"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(age <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;=</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">18</span>) </span>
<span id="cb3-6"></span>
<span id="cb3-7"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># combinaisons</span></span>
<span id="cb3-8"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(age <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">10</span> <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">and</span> age <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;=</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">18</span>)  </span>
<span id="cb3-9"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(age <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">10</span> <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">or</span> age <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;=</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">18</span>)   </span></code></pre></div>
<p><span class="smallcaps">&gt;&gt;sortie</span></p>
<div class="cell-output cell-output-stdout">
<pre><code>True
False
False
True</code></pre>
</div>
</div>
</div>
</section>
</section>
<section id="les-instructions-conditionnelles" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="les-instructions-conditionnelles"><span class="header-section-number">2</span> Les instructions conditionnelles</h2>
<p>En fonction de conditions on va exécuter des blocs de code différents.</p>
<p>En Python, les blocs sont précédés de <code>:</code> et sont indentés avec 4 espaces.</p>
<pre><code>entrée dans le bloc:
    1ère instruction du bloc
    2e instruction du bloc
    ...
sortie du bloc</code></pre>
<section id="linstruction-si-if" class="level3" data-number="2.1">
<h3 data-number="2.1" class="anchored" data-anchor-id="linstruction-si-if"><span class="header-section-number">2.1</span> L’instruction SI <code>if</code></h3>
<p>Le bloc d’instruction contenu n’est exécuté que si la condition est vérifiée.</p>
<p><strong>Syntaxe</strong></p>
<div class="sourceCode" id="cb6" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb6-1"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> condition:</span>
<span id="cb6-2">    instruction <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span></span>
<span id="cb6-3">    instruction <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span></span>
<span id="cb6-4">    ...</span></code></pre></div>
<div class="example">
<div class="sourceCode" id="cb7" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb7-1">mdp <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">input</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Entrez votre mot de passe."</span>)</span>
<span id="cb7-2"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> mdp <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"azerty :</span></span>
<span id="cb7-3"><span class="er" style="color: #AD0000;
background-color: null;
font-style: inherit;">    print</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Connexion réussie"</span>)</span></code></pre></div>
</div>
</section>
<section id="linstruction-sinon-else" class="level3" data-number="2.2">
<h3 data-number="2.2" class="anchored" data-anchor-id="linstruction-sinon-else"><span class="header-section-number">2.2</span> L’instruction SINON <code>else</code></h3>
<p>Indique le bloc d’instruction a exécuté si la condition n’est pas vérifiée.</p>
<p><strong>Syntaxe</strong></p>
<div class="sourceCode" id="cb8" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb8-1"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> condition:</span>
<span id="cb8-2">    bloc d<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'instructions exécuté si la condition est vraie</span></span>
<span id="cb8-3"><span class="er" style="color: #AD0000;
background-color: null;
font-style: inherit;">else:</span></span>
<span id="cb8-4">    bloc d<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'instructions exécuté si la condition est fausse</span></span></code></pre></div>
<div class="example">
<div class="sourceCode" id="cb9" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb9-1">mdp <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">input</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Entrez votre mot de passe."</span>)</span>
<span id="cb9-2"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> mdp <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"azerty :</span></span>
<span id="cb9-3"><span class="er" style="color: #AD0000;
background-color: null;
font-style: inherit;">    print</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Connexion réussie"</span>)</span>
<span id="cb9-4"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span>:</span>
<span id="cb9-5">    <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Mot de passe faux"</span>)</span></code></pre></div>
</div>
</section>
<section id="linstruction-sinon-si-elif" class="level3" data-number="2.3">
<h3 data-number="2.3" class="anchored" data-anchor-id="linstruction-sinon-si-elif"><span class="header-section-number">2.3</span> L’instruction SINON SI <code>elif</code></h3>
<p>Cette instruction permet de réaliser des tests imbriqués, c’est un raccourci pour les instructions <code>else</code> et <code>if</code>.</p>
<p><strong>Syntaxe</strong></p>
<div class="sourceCode" id="cb10" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb10-1"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> condition <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>:</span>
<span id="cb10-2">    bloc d<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'instructions exécuté si la condition 1 est vraie</span></span>
<span id="cb10-3"><span class="er" style="color: #AD0000;
background-color: null;
font-style: inherit;">elif condition 2:</span></span>
<span id="cb10-4">    bloc d<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'instructions exécuté si la condition 1 est fausse et la condition 2 vraie</span></span>
<span id="cb10-5"><span class="er" style="color: #AD0000;
background-color: null;
font-style: inherit;">else:</span></span>
<span id="cb10-6">    bloc d<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'instructions exécuté si les conditions 1 et 2 sont fausses</span></span></code></pre></div>
<div class="example">
<div class="sourceCode" id="cb11" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb11-1">nom <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">input</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Entrez votre nom d'utilisateur."</span>)</span>
<span id="cb11-2">mdp <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">input</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Entrez votre mot de passe."</span>)</span>
<span id="cb11-3"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> nom <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">!=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"nice06"</span> :</span>
<span id="cb11-4">    <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Nom d'utilisateur inconnu"</span>)</span>
<span id="cb11-5"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">elif</span> mdp <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">!=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"azerty"</span>:</span>
<span id="cb11-6">    <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Mot de passe incorrect"</span>)</span>
<span id="cb11-7"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span>:</span>
<span id="cb11-8">    <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># le mot de passe et le nom d'utilisateurs sont corrects</span></span>
<span id="cb11-9">    <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Connexion réussie"</span>)</span></code></pre></div>
</div>


</section>
</section>

 ]]></description>
  <category>2SNT</category>
  <guid>https://www.lyceum.fr/2gt/snt/0-programmation-python/2-conditions/</guid>
  <pubDate>Wed, 31 Jul 2024 15:15:56 GMT</pubDate>
</item>
<item>
  <title>Chapitre 3: Boucles et fonctions</title>
  <link>https://www.lyceum.fr/2gt/snt/0-programmation-python/3-boucles-et-fonctions/</link>
  <description><![CDATA[ 




<div class="programme">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-1-contents" aria-controls="callout-1" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Programme
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-1" class="callout-1-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="programme">
<table class="table table-bordered table-hover caption-top">
<thead class="table-warning">
<tr class="header">
<th>Contenus</th>
<th>Capacités attendues</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>Boucles bornées et non bornées</p>
<p>Définitions et appels de fonctions</p></td>
<td>Écrire et développer des programmes pour répondre à des problèmes et modéliser des phénomènes physiques, économiques et sociaux.</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div>

</div>
<div class="intro quarto-layout-panel" data-layout-ncol="2">
<div class="quarto-layout-row">
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<p>Dans ce chapitre, nous allons nous intéresser aux boucles qui permettent de <strong>répéter</strong> des instructions dans un programme, ainsi qu’aux fonctions qui permettent d’exécuter des portions de programme à la demande.</p>
</div>
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<p></p><figure class="wikimage figure"><picture>
			  <source type="image/webp" srcset="/img/yH9ojVlw8b-164.webp 164w, /img/yH9ojVlw8b-300.webp 300w, /img/yH9ojVlw8b-600.webp 600w" sizes="100vw">
  <source type="image/svg+xml" srcset="/img/yH9ojVlw8b-164.svg 164w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/yH9ojVlw8b-164.webp" width="600" height="519" alt="Il existe deux types de boucles, les boucles bornées et le boucles non bornées." loading="lazy" decoding="async">
			</picture>
<figcaption id="caption">Il existe deux types de boucles, les boucles bornées et le boucles non bornées.</figcaption><figcaption id="credit">©&nbsp;&nbsp;CC BY-SA 2.5&nbsp;<a id="image-description" href="//commons.wikimedia.org/wiki/File:RepeatUntil.svg">via Wikimedia Commons</a></figcaption></figure><p></p>
</div>
</div>
</div>
<section id="les-boucles" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="les-boucles"><span class="header-section-number">1</span> Les boucles</h2>
<p>Les boucles permettent de <strong>répéter</strong> des blocs d’instructions.</p>
<p>Il en existe deux types:</p>
<ul>
<li>Les boucles bornées avec le mot-clé <code>for</code>.</li>
<li>Les boucles non bornées avec le mot-clé <code>while</code>.</li>
</ul>
<section id="les-boucles-bornées-for" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="les-boucles-bornées-for"><span class="header-section-number">1.1</span> Les boucles bornées: <code>for</code></h3>
<p>Lorsqu’<em>on connait le nombre de répétitions</em> à effectuer, on utilise la boucle <code>for</code> associée à la fonction <code>range()</code>.</p>
<div class="example">
<p>Pour répéter 7 fois un bloc d’instructions, on utilise:</p>
<div id="f12f8de9" class="cell" data-execution_count="1">
<div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb1-1"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> i <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">range</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">7</span>):</span>
<span id="cb1-2">    <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(i)</span></code></pre></div>
<p><span class="smallcaps">&gt;&gt;sortie</span></p>
<div class="cell-output cell-output-stdout">
<pre><code>0
1
2
3
4
5
6</code></pre>
</div>
</div>
</div>
<div class="plus">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-2-contents" aria-controls="callout-2" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
En plus
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-2" class="callout-2-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="plus">
<p>On peut aussi réaliser des boucles sur des types construits qui seront vus en <a href="../../../../1g/nsi/3-representation-des-donnees-types-construits">première</a>.</p>
<ul>
<li><p>Sur des chaînes de caractères:</p>
<div id="45de0c6f" class="cell" data-execution_count="2">
<div class="sourceCode cell-code" id="cb3" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb3-1"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> lettre <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Bonjour!"</span>:</span>
<span id="cb3-2">    <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(lettre)</span></code></pre></div>
<p><span class="smallcaps">&gt;&gt;sortie</span></p>
<div class="cell-output cell-output-stdout">
<pre><code>B
o
n
j
o
u
r
!</code></pre>
</div>
</div></li>
<li><p>Sur des listes:</p>
<div id="efa7f31e" class="cell" data-execution_count="3">
<div class="sourceCode cell-code" id="cb5" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb5-1"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> premier <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> [<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">7</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">11</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">13</span>]:</span>
<span id="cb5-2">    <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(premier)</span></code></pre></div>
<p><span class="smallcaps">&gt;&gt;sortie</span></p>
<div class="cell-output cell-output-stdout">
<pre><code>2
3
5
7
11
13</code></pre>
</div>
</div></li>
</ul>
</div>
</div>
</div>
</div>
</div>
</section>
<section id="les-boucles-non-bornées-while" class="level3" data-number="1.2">
<h3 data-number="1.2" class="anchored" data-anchor-id="les-boucles-non-bornées-while"><span class="header-section-number">1.2</span> Les boucles non bornées: <code>while</code></h3>
<p>Lorsqu’<em>on ne connait pas le nombre de répétitions</em> à effectuer, on utilise la boucle <code>while</code> associée à une <em>variable de contrôle</em>.</p>
<div class="example">
<p>Voici un programme qui permet de vérifier la saisie d’un mot de passe par un utilisateur.</p>
<div class="sourceCode" id="cb7" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb7-1">mdp <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">""</span>                <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># initialisation</span></span>
<span id="cb7-2"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">while</span> mdp <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">!=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"azerty"</span>:  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># condition d'arrêt de la boucle</span></span>
<span id="cb7-3">    mdp <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">input</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Entrez votre mot de passe."</span>)   <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># mise à jour de</span></span>
<span id="cb7-4">                                                <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># la variable de boucle</span></span>
<span id="cb7-5"></span>
<span id="cb7-6"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># On sort de la boucle</span></span>
<span id="cb7-7"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Vous êtes connecté"</span>)</span></code></pre></div>
</div>
<div class="callout callout-style-default callout-caution callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Mise en garde
</div>
</div>
<div class="callout-body-container callout-body">
<p>Attention à bien vérifier que votre boucle finira par se terminer sinon votre programme rentrera dans une boucle infinie, et il faudra obligatoirement le stopper.</p>
</div>
</div>
</section>
</section>
<section id="les-fonctions" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="les-fonctions"><span class="header-section-number">2</span> Les fonctions</h2>
<p>Il s’agit de blocs d’instructions exécutés à la demande, on les définit par le mot-clef <code>def</code>.</p>
<div class="example">
<div id="bd3dfa8a" class="cell" data-execution_count="4">
<div class="sourceCode cell-code" id="cb8" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb8-1"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># définition de la fonction</span></span>
<span id="cb8-2"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">def</span> dit_bonjour(prenom):</span>
<span id="cb8-3">    <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Bonjour "</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> prenom)</span></code></pre></div>
</div>
<p>Nous venons de définir la fonction, mais pour l’instant, il ne se passe rien.</p>
<p>Pour exécuter le code de la fonction, il faut maintenant appeler la fonction avec un paramètre pour l’exécuter.</p>
<div id="e9ecc582" class="cell" data-execution_count="5">
<div class="sourceCode cell-code" id="cb9" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb9-1"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># appel de la fonction avec l'argument Ada</span></span>
<span id="cb9-2">dit_bonjour(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Ada"</span>)</span></code></pre></div>
<p><span class="smallcaps">&gt;&gt;sortie</span></p>
<div class="cell-output cell-output-stdout">
<pre><code>Bonjour Ada</code></pre>
</div>
</div>
</div>
<section id="renvoyer-une-valeur-avec-return" class="level3" data-number="2.1">
<h3 data-number="2.1" class="anchored" data-anchor-id="renvoyer-une-valeur-avec-return"><span class="header-section-number">2.1</span> Renvoyer une valeur avec <code>return</code></h3>
<p>Au lieu d’afficher une valeur, il est préférable de <em>renvoyer</em> une valeur grâce au mot-clé <code>return</code>.</p>
<div class="example">
<div id="60a1dd6f" class="cell" data-execution_count="6">
<div class="sourceCode cell-code" id="cb11" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb11-1"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">def</span> périmètre(rayon):</span>
<span id="cb11-2">    p <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.14</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>rayon</span>
<span id="cb11-3">    <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">return</span> p</span></code></pre></div>
</div>
<p>Cette fois-ci l’appel renverra la valeur du périmètre, on peut alors l’affecter à une variable.</p>
<div id="98087b7e" class="cell" data-execution_count="7">
<div class="sourceCode cell-code" id="cb12" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb12-1"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># on appelle la fonction avec l'argument 0.5</span></span>
<span id="cb12-2">p <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> périmètre(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.5</span>)</span>
<span id="cb12-3"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(p)</span></code></pre></div>
<p><span class="smallcaps">&gt;&gt;sortie</span></p>
<div class="cell-output cell-output-stdout">
<pre><code>3.14</code></pre>
</div>
</div>
</div>
</section>
<section id="les-paramètres-de-fonction" class="level3" data-number="2.2">
<h3 data-number="2.2" class="anchored" data-anchor-id="les-paramètres-de-fonction"><span class="header-section-number">2.2</span> Les paramètres de fonction</h3>
<p>Une fonction peut accepter un nombre quelconque de paramètres, il suffit de les séparer par des virgules.</p>
<div class="examples">
<p>Avec deux paramètres.</p>
<div id="be1c5a87" class="cell" data-execution_count="8">
<div class="sourceCode cell-code" id="cb14" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb14-1"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">def</span> surface_rectangle(l, L):</span>
<span id="cb14-2">    <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">return</span> l<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>L</span>
<span id="cb14-3"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># appel</span></span>
<span id="cb14-4">surface_rectangle(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>) <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># renvoie 6</span></span></code></pre></div>
<div class="cell-output cell-output-display" data-execution_count="8">
<pre><code>6</code></pre>
</div>
</div>
<p>Avec aucun paramètre:</p>
<div id="7541deb4" class="cell" data-execution_count="9">
<div class="sourceCode cell-code" id="cb16" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb16-1"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> time</span>
<span id="cb16-2"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">def</span> affiche_heure():</span>
<span id="cb16-3">    <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(time.asctime())</span>
<span id="cb16-4"></span>
<span id="cb16-5"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Pour l'appel on met les parénthèses même s'il n'y a pas d'arguments</span></span>
<span id="cb16-6">affiche_heure()</span></code></pre></div>
<p><span class="smallcaps">&gt;&gt;sortie</span></p>
<div class="cell-output cell-output-stdout">
<pre><code>Wed Jul 31 15:17:09 2024</code></pre>
</div>
</div>
</div>


</section>
</section>

 ]]></description>
  <category>2SNT</category>
  <guid>https://www.lyceum.fr/2gt/snt/0-programmation-python/3-boucles-et-fonctions/</guid>
  <pubDate>Wed, 31 Jul 2024 15:15:56 GMT</pubDate>
</item>
<item>
  <title>Partie 1: Les données structurées</title>
  <link>https://www.lyceum.fr/2gt/snt/1-les-donnees-structurees/</link>
  <description><![CDATA[ 




<div class="programme">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-1-contents" aria-controls="callout-1" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Programme
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-1" class="callout-1-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="programme">
<table class="table table-bordered table-hover caption-top">
<thead class="table-warning">
<tr class="header">
<th><pre><code>        Contenus</code></pre></th>
<th><pre><code>                  Capacités attendues</code></pre></th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Données</td>
<td>Définir une donnée personnelle. Identifier les principaux formats et représentations de données.</td>
</tr>
<tr class="even">
<td>Données structurées</td>
<td>Identifier les différents descripteurs d’un objet. Distinguer la valeur d’une donnée de son descripteur. Utiliser un site de données ouvertes, pour sélectionner et récupérer des données.</td>
</tr>
<tr class="odd">
<td>Traitement de données structurées</td>
<td>Réaliser des opérations de recherche, filtre, tri ou calcul sur une ou plusieurs tables.</td>
</tr>
<tr class="even">
<td>Métadonnées</td>
<td>Retrouver les métadonnées d’un fichier personnel.</td>
</tr>
<tr class="odd">
<td>Données dans le nuage (<em>cloud</em>)</td>
<td><p>Utiliser un support de stockage dans le nuage.</p>
<p>Partager des fichiers, paramétrer des modes de synchronisation.</p>
<p>Identifier les principales causes de la consommation énergétique des centres de données ainsi que leur ordre de grandeur.</p></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div>

</div>
<div class="intro quarto-layout-panel" data-layout-ncol="2">
<div class="quarto-layout-row">
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<p>Les données personnelles sont un grand enjeu actuel du web, c’est pour cela que l’Europe s’est dotée du RGPD pour faire respecter des règles sur la collecte et le traitement des données personnelles par les entreprises.</p>
</div>
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><picture>
			  <source type="image/webp" srcset="/img/ddGZanZTCZ-300.webp 300w, /img/ddGZanZTCZ-438.webp 438w" sizes="100vw">
  <source type="image/png" srcset="/img/ddGZanZTCZ-300.png 300w, /img/ddGZanZTCZ-438.png 438w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/ddGZanZTCZ-300.webp" width="438" height="564" alt="" loading="lazy" decoding="async">
			</picture>
</p>
<figcaption>Image d’un formulaire de collecte de données</figcaption>
</figure>
</div>
</div>
</div>
</div>
<div class="appli">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-2-contents" aria-controls="callout-2" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Application
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-2" class="callout-2-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="appli">
<p><a href="https://lienmini.fr/3389-102">Évaluation diagnostique PP12-13</a>.</p>
</div>
</div>
</div>
</div>
</div>
<p></p><div class="yt-embend"><div><iframe width="560" height="315" src="https://yewtu.be/embed/N6XJXkeW5OE" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe><p><a href="https://www.youtube.com/watch?v=N6XJXkeW5OE">Vidéo</a> servie sans cookie via <a href="https://yewtu.be/">yewtu.be</a></p></div></div><p></p>
<section id="les-formats-de-données" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="les-formats-de-données"><span class="header-section-number">1</span> Les formats de données</h2>
<p>En informatique les données sont codées sous forme binaire(des 0 et des 1).</p>
<p>La façon de coder l’information dépend du type de fichier que l’on reconnait grâce à son <em>extension</em>.</p>
<div class="examples">
<ul>
<li>image: ____________________________________</li>
<li>vidéo: ____________________________________</li>
<li>texte: ____________________________________</li>
<li>audio: ____________________________________</li>
<li>…</li>
</ul>
</div>
<p>La plupart des formats ajoutent des données pour décrire le fichier. <strong>Ce sont les métadonnées.</strong></p>
<div class="appli">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-3-contents" aria-controls="callout-3" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Application
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-3" class="callout-3-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="appli">
<p>Observer les données et métadonnées d’une photo sur cette page:</p>
<p><a href="https://apps.lyceum.fr/photo-metadata/" class="uri">https://apps.lyceum.fr/photo-metadata/</a></p>
<ol type="1">
<li>Que représentent les données de cette photo?</li>
<li>Donner cinq métadonnées ajoutées à cette photo.</li>
</ol>
</div>
</div>
</div>
</div>
</div>
<div class="plus">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-4-contents" aria-controls="callout-4" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
En plus: Comment compter en binaire?
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-4" class="callout-4-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="plus" data-titre="Comment compter en binaire?">
<p>En binaire <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>11</mn><mo>=</mo><mn>3</mn></mrow><annotation encoding="application/x-tex">11 = 3</annotation></semantics></math> ! <strong>Étrange</strong>, pas tant que ça si on compte sur nos <em>deux</em> doigts.</p>
<ol start="0" type="1">
<li><code>0</code></li>
<li><code>1</code></li>
<li><code>10</code></li>
<li><code>11</code></li>
<li><code>100</code> …</li>
</ol>
<p>On a l’habitude de préciser la base de numération en indice <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mn>3</mn><mn>10</mn></msub><mo>=</mo><msub><mn>11</mn><mn>2</mn></msub></mrow><annotation encoding="application/x-tex">3_{10}= 11_{2}</annotation></semantics></math>.</p>
</div>
</div>
</div>
</div>
</div>
<div class="appli">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-5-contents" aria-controls="callout-5" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Application
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-5" class="callout-5-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="appli">
<ol type="1">
<li>Compter jusqu’à 16 en binaire.</li>
<li>Quelle est la valeur de <code>1111 1111</code>, la plus grande valeur stockée sur un octet?</li>
<li>Écrire 64 en binaire.</li>
</ol>
</div>
</div>
</div>
</div>
</div>
<div class="plus">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-6-contents" aria-controls="callout-6" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
En plus: L'enjeu des métadonnées
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-6" class="callout-6-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="plus" data-titre="L'enjeu des métadonnées">
<p>Lire cette vidéo du journal Le Monde.</p>
<p></p><div class="yt-embend"><div><iframe width="560" height="315" src="https://yewtu.be/embed/kz3Zb_Y_wJw" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe><p><a href="https://www.youtube.com/watch?v=kz3Zb_Y_wJw">Vidéo</a> servie sans cookie via <a href="https://yewtu.be/">yewtu.be</a></p></div></div><p></p>
</div>
</div>
</div>
</div>
</div>
</section>
<section id="quest-ce-quune-donnée-personnelle" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="quest-ce-quune-donnée-personnelle"><span class="header-section-number">2</span> Qu’est-ce qu’une donnée personnelle ?</h2>
<dl>
<dt>
Donnée personnelle
</dt>
<dd>
<div>
<p>Une donnée personnelle correspond à toute information qui permet d’identifier directement ou indirectement une personne physique.</p>
</div>
</dd>
</dl>
<p><a href="https://www.cnil.fr/fr/definition/donnee-personnelle" class="cite-source">CNIL</a></p>
<div class="examples">
<ul>
<li>Nom,</li>
<li>Prénom</li>
<li>photographie du visage</li>
<li>date et lieu de naissance</li>
<li>adresse, adresse électronique, adresse IP</li>
<li>numéro de téléphone</li>
<li>numéro de sécurité sociale</li>
<li>numéro de carte bancaire</li>
</ul>
</div>
<div class="plus">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-7-contents" aria-controls="callout-7" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
En plus
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-7" class="callout-7-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="plus">
<p>En droit français, les personnes morales(non physiques) sont les personnes agissant au sein d’une entreprise ou d’une association par exemple.</p>
</div>
</div>
</div>
</div>
</div>
</section>
<section id="descripteurs-et-valeurs-dun-tableau-de-données" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="descripteurs-et-valeurs-dun-tableau-de-données"><span class="header-section-number">3</span> Descripteurs et valeurs d’un tableau de données</h2>
<p>Dans un jeu de données, on distingue:</p>
<ul>
<li>le <strong>descripteur</strong> par exemple <code>artiste</code> qui est un champ commun à tout le jeu de données.</li>
<li>de sa <strong>valeur</strong> <code>Adele</code>, <code>Led Zeppelin</code>… qui est propre à chaque ligne des données.</li>
</ul>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><picture>
			  <source type="image/webp" srcset="/img/PXduRFd37a-300.webp 300w, /img/PXduRFd37a-600.webp 600w, /img/PXduRFd37a-751.webp 751w" sizes="100vw">
  <source type="image/png" srcset="/img/PXduRFd37a-300.png 300w, /img/PXduRFd37a-600.png 600w, /img/PXduRFd37a-751.png 751w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/PXduRFd37a-300.webp" width="751" height="169" alt="" loading="lazy" decoding="async">
			</picture>
</p>
<figcaption>Copie d’écran de libreoffice calc avec des données sur des albums musicaux.</figcaption>
</figure>
</div>
</section>
<section id="les-formats-de-données-structurées" class="level2" data-number="4">
<h2 data-number="4" class="anchored" data-anchor-id="les-formats-de-données-structurées"><span class="header-section-number">4</span> Les formats de données structurées</h2>
<p>Les données peuvent être stockées sous divers <em>formats</em> adaptés à leurs usages.</p>
<p><a href="http://opendata.nicecotedazur.org/data/dataset" class="cite-source"><picture>
			  <source type="image/webp" srcset="/img/m2zo1uPWVA-295.webp 295w" sizes="100vw">
  <source type="image/png" srcset="/img/m2zo1uPWVA-295.png 295w" sizes="100vw">
				<img class="img-fluid" src="https://www.lyceum.fr/img/m2zo1uPWVA-295.webp" width="295" height="419" alt="Format des données sur http://opendata.nicecotedazur.org/data/dataset" loading="lazy" decoding="async">
			</picture>
opendata.nicecotedazur.org</a></p>
<ul>
<li><p>Les formats de tableur spécifiques aux logiciels, par exemple:</p>
<ul>
<li><code>XLS</code>: tableur Microsoft Excel.</li>
<li><code>ODS</code>: tableur LibreOffice sous licence libre.</li>
</ul></li>
<li><p>Les formats textuels adaptés aux machines et <em>indépendants</em> du logiciel de traitement.</p>
<ul>
<li><p><code>CSV</code>: données séparées par des virgules <em>Coma Separated Values</em></p>
<div id="72872beb" class="cell" data-execution_count="1">
<div class="cell-output cell-output-display" data-execution_count="1">
<style>pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.output_html .hll { background-color: #ffffcc }
.output_html { background: #f8f8f8; }
.output_html .c { color: #3D7B7B; font-style: italic } /* Comment */
.output_html .err { border: 1px solid #FF0000 } /* Error */
.output_html .k { color: #008000; font-weight: bold } /* Keyword */
.output_html .o { color: #666666 } /* Operator */
.output_html .ch { color: #3D7B7B; font-style: italic } /* Comment.Hashbang */
.output_html .cm { color: #3D7B7B; font-style: italic } /* Comment.Multiline */
.output_html .cp { color: #9C6500 } /* Comment.Preproc */
.output_html .cpf { color: #3D7B7B; font-style: italic } /* Comment.PreprocFile */
.output_html .c1 { color: #3D7B7B; font-style: italic } /* Comment.Single */
.output_html .cs { color: #3D7B7B; font-style: italic } /* Comment.Special */
.output_html .gd { color: #A00000 } /* Generic.Deleted */
.output_html .ge { font-style: italic } /* Generic.Emph */
.output_html .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */
.output_html .gr { color: #E40000 } /* Generic.Error */
.output_html .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.output_html .gi { color: #008400 } /* Generic.Inserted */
.output_html .go { color: #717171 } /* Generic.Output */
.output_html .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
.output_html .gs { font-weight: bold } /* Generic.Strong */
.output_html .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.output_html .gt { color: #0044DD } /* Generic.Traceback */
.output_html .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
.output_html .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
.output_html .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
.output_html .kp { color: #008000 } /* Keyword.Pseudo */
.output_html .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
.output_html .kt { color: #B00040 } /* Keyword.Type */
.output_html .m { color: #666666 } /* Literal.Number */
.output_html .s { color: #BA2121 } /* Literal.String */
.output_html .na { color: #687822 } /* Name.Attribute */
.output_html .nb { color: #008000 } /* Name.Builtin */
.output_html .nc { color: #0000FF; font-weight: bold } /* Name.Class */
.output_html .no { color: #880000 } /* Name.Constant */
.output_html .nd { color: #AA22FF } /* Name.Decorator */
.output_html .ni { color: #717171; font-weight: bold } /* Name.Entity */
.output_html .ne { color: #CB3F38; font-weight: bold } /* Name.Exception */
.output_html .nf { color: #0000FF } /* Name.Function */
.output_html .nl { color: #767600 } /* Name.Label */
.output_html .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
.output_html .nt { color: #008000; font-weight: bold } /* Name.Tag */
.output_html .nv { color: #19177C } /* Name.Variable */
.output_html .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
.output_html .w { color: #bbbbbb } /* Text.Whitespace */
.output_html .mb { color: #666666 } /* Literal.Number.Bin */
.output_html .mf { color: #666666 } /* Literal.Number.Float */
.output_html .mh { color: #666666 } /* Literal.Number.Hex */
.output_html .mi { color: #666666 } /* Literal.Number.Integer */
.output_html .mo { color: #666666 } /* Literal.Number.Oct */
.output_html .sa { color: #BA2121 } /* Literal.String.Affix */
.output_html .sb { color: #BA2121 } /* Literal.String.Backtick */
.output_html .sc { color: #BA2121 } /* Literal.String.Char */
.output_html .dl { color: #BA2121 } /* Literal.String.Delimiter */
.output_html .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
.output_html .s2 { color: #BA2121 } /* Literal.String.Double */
.output_html .se { color: #AA5D1F; font-weight: bold } /* Literal.String.Escape */
.output_html .sh { color: #BA2121 } /* Literal.String.Heredoc */
.output_html .si { color: #A45A77; font-weight: bold } /* Literal.String.Interpol */
.output_html .sx { color: #008000 } /* Literal.String.Other */
.output_html .sr { color: #A45A77 } /* Literal.String.Regex */
.output_html .s1 { color: #BA2121 } /* Literal.String.Single */
.output_html .ss { color: #19177C } /* Literal.String.Symbol */
.output_html .bp { color: #008000 } /* Name.Builtin.Pseudo */
.output_html .fm { color: #0000FF } /* Name.Function.Magic */
.output_html .vc { color: #19177C } /* Name.Variable.Class */
.output_html .vg { color: #19177C } /* Name.Variable.Global */
.output_html .vi { color: #19177C } /* Name.Variable.Instance */
.output_html .vm { color: #19177C } /* Name.Variable.Magic */
.output_html .il { color: #666666 } /* Literal.Number.Integer.Long */</style><div class="highlight"><pre><span></span>album,artiste,année,ventes
Thriller,Michael Jackson,1982,33M
Led Zeppelin IV,Led Zeppelin,1971,23M
Legend,Bob Marley &amp; the Wailers,1984,15M
25,Adele,2015,10M
</pre></div>
</div>
</div></li>
<li><p><code>JSON</code>: notation objet issue de javascript.</p>
<div id="de0cda82" class="cell" data-execution_count="2">
<div class="cell-output cell-output-display" data-execution_count="2">
<style>pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.output_html .hll { background-color: #ffffcc }
.output_html { background: #f8f8f8; }
.output_html .c { color: #3D7B7B; font-style: italic } /* Comment */
.output_html .err { border: 1px solid #FF0000 } /* Error */
.output_html .k { color: #008000; font-weight: bold } /* Keyword */
.output_html .o { color: #666666 } /* Operator */
.output_html .ch { color: #3D7B7B; font-style: italic } /* Comment.Hashbang */
.output_html .cm { color: #3D7B7B; font-style: italic } /* Comment.Multiline */
.output_html .cp { color: #9C6500 } /* Comment.Preproc */
.output_html .cpf { color: #3D7B7B; font-style: italic } /* Comment.PreprocFile */
.output_html .c1 { color: #3D7B7B; font-style: italic } /* Comment.Single */
.output_html .cs { color: #3D7B7B; font-style: italic } /* Comment.Special */
.output_html .gd { color: #A00000 } /* Generic.Deleted */
.output_html .ge { font-style: italic } /* Generic.Emph */
.output_html .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */
.output_html .gr { color: #E40000 } /* Generic.Error */
.output_html .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.output_html .gi { color: #008400 } /* Generic.Inserted */
.output_html .go { color: #717171 } /* Generic.Output */
.output_html .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
.output_html .gs { font-weight: bold } /* Generic.Strong */
.output_html .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.output_html .gt { color: #0044DD } /* Generic.Traceback */
.output_html .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
.output_html .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
.output_html .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
.output_html .kp { color: #008000 } /* Keyword.Pseudo */
.output_html .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
.output_html .kt { color: #B00040 } /* Keyword.Type */
.output_html .m { color: #666666 } /* Literal.Number */
.output_html .s { color: #BA2121 } /* Literal.String */
.output_html .na { color: #687822 } /* Name.Attribute */
.output_html .nb { color: #008000 } /* Name.Builtin */
.output_html .nc { color: #0000FF; font-weight: bold } /* Name.Class */
.output_html .no { color: #880000 } /* Name.Constant */
.output_html .nd { color: #AA22FF } /* Name.Decorator */
.output_html .ni { color: #717171; font-weight: bold } /* Name.Entity */
.output_html .ne { color: #CB3F38; font-weight: bold } /* Name.Exception */
.output_html .nf { color: #0000FF } /* Name.Function */
.output_html .nl { color: #767600 } /* Name.Label */
.output_html .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
.output_html .nt { color: #008000; font-weight: bold } /* Name.Tag */
.output_html .nv { color: #19177C } /* Name.Variable */
.output_html .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
.output_html .w { color: #bbbbbb } /* Text.Whitespace */
.output_html .mb { color: #666666 } /* Literal.Number.Bin */
.output_html .mf { color: #666666 } /* Literal.Number.Float */
.output_html .mh { color: #666666 } /* Literal.Number.Hex */
.output_html .mi { color: #666666 } /* Literal.Number.Integer */
.output_html .mo { color: #666666 } /* Literal.Number.Oct */
.output_html .sa { color: #BA2121 } /* Literal.String.Affix */
.output_html .sb { color: #BA2121 } /* Literal.String.Backtick */
.output_html .sc { color: #BA2121 } /* Literal.String.Char */
.output_html .dl { color: #BA2121 } /* Literal.String.Delimiter */
.output_html .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
.output_html .s2 { color: #BA2121 } /* Literal.String.Double */
.output_html .se { color: #AA5D1F; font-weight: bold } /* Literal.String.Escape */
.output_html .sh { color: #BA2121 } /* Literal.String.Heredoc */
.output_html .si { color: #A45A77; font-weight: bold } /* Literal.String.Interpol */
.output_html .sx { color: #008000 } /* Literal.String.Other */
.output_html .sr { color: #A45A77 } /* Literal.String.Regex */
.output_html .s1 { color: #BA2121 } /* Literal.String.Single */
.output_html .ss { color: #19177C } /* Literal.String.Symbol */
.output_html .bp { color: #008000 } /* Name.Builtin.Pseudo */
.output_html .fm { color: #0000FF } /* Name.Function.Magic */
.output_html .vc { color: #19177C } /* Name.Variable.Class */
.output_html .vg { color: #19177C } /* Name.Variable.Global */
.output_html .vi { color: #19177C } /* Name.Variable.Instance */
.output_html .vm { color: #19177C } /* Name.Variable.Magic */
.output_html .il { color: #666666 } /* Literal.Number.Integer.Long */</style><div class="highlight"><pre><span></span>{"album":"Thriller","artiste":"Michael Jackson","année":1982,"ventes":"33M"}
{"album":"Led Zeppelin IV","artiste":"Led Zeppelin","année":1971,"ventes":"23M"}
{"album":"Legend","artiste":"Bob Marley &amp; the Wailers","année":1984,"ventes":"15M"}
{"album":"25","artiste":"Adele","année":2015,"ventes":"10M"}
</pre></div>
</div>
</div></li>
<li><p><code>XML</code>: format de données avec balises <em>eXtensible Markup Langage</em></p>
<div id="59a10ec4" class="cell" data-execution_count="3">
<div class="cell-output cell-output-display" data-execution_count="3">
<style>pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.output_html .hll { background-color: #ffffcc }
.output_html { background: #f8f8f8; }
.output_html .c { color: #3D7B7B; font-style: italic } /* Comment */
.output_html .err { border: 1px solid #FF0000 } /* Error */
.output_html .k { color: #008000; font-weight: bold } /* Keyword */
.output_html .o { color: #666666 } /* Operator */
.output_html .ch { color: #3D7B7B; font-style: italic } /* Comment.Hashbang */
.output_html .cm { color: #3D7B7B; font-style: italic } /* Comment.Multiline */
.output_html .cp { color: #9C6500 } /* Comment.Preproc */
.output_html .cpf { color: #3D7B7B; font-style: italic } /* Comment.PreprocFile */
.output_html .c1 { color: #3D7B7B; font-style: italic } /* Comment.Single */
.output_html .cs { color: #3D7B7B; font-style: italic } /* Comment.Special */
.output_html .gd { color: #A00000 } /* Generic.Deleted */
.output_html .ge { font-style: italic } /* Generic.Emph */
.output_html .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */
.output_html .gr { color: #E40000 } /* Generic.Error */
.output_html .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.output_html .gi { color: #008400 } /* Generic.Inserted */
.output_html .go { color: #717171 } /* Generic.Output */
.output_html .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
.output_html .gs { font-weight: bold } /* Generic.Strong */
.output_html .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.output_html .gt { color: #0044DD } /* Generic.Traceback */
.output_html .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
.output_html .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
.output_html .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
.output_html .kp { color: #008000 } /* Keyword.Pseudo */
.output_html .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
.output_html .kt { color: #B00040 } /* Keyword.Type */
.output_html .m { color: #666666 } /* Literal.Number */
.output_html .s { color: #BA2121 } /* Literal.String */
.output_html .na { color: #687822 } /* Name.Attribute */
.output_html .nb { color: #008000 } /* Name.Builtin */
.output_html .nc { color: #0000FF; font-weight: bold } /* Name.Class */
.output_html .no { color: #880000 } /* Name.Constant */
.output_html .nd { color: #AA22FF } /* Name.Decorator */
.output_html .ni { color: #717171; font-weight: bold } /* Name.Entity */
.output_html .ne { color: #CB3F38; font-weight: bold } /* Name.Exception */
.output_html .nf { color: #0000FF } /* Name.Function */
.output_html .nl { color: #767600 } /* Name.Label */
.output_html .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
.output_html .nt { color: #008000; font-weight: bold } /* Name.Tag */
.output_html .nv { color: #19177C } /* Name.Variable */
.output_html .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
.output_html .w { color: #bbbbbb } /* Text.Whitespace */
.output_html .mb { color: #666666 } /* Literal.Number.Bin */
.output_html .mf { color: #666666 } /* Literal.Number.Float */
.output_html .mh { color: #666666 } /* Literal.Number.Hex */
.output_html .mi { color: #666666 } /* Literal.Number.Integer */
.output_html .mo { color: #666666 } /* Literal.Number.Oct */
.output_html .sa { color: #BA2121 } /* Literal.String.Affix */
.output_html .sb { color: #BA2121 } /* Literal.String.Backtick */
.output_html .sc { color: #BA2121 } /* Literal.String.Char */
.output_html .dl { color: #BA2121 } /* Literal.String.Delimiter */
.output_html .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
.output_html .s2 { color: #BA2121 } /* Literal.String.Double */
.output_html .se { color: #AA5D1F; font-weight: bold } /* Literal.String.Escape */
.output_html .sh { color: #BA2121 } /* Literal.String.Heredoc */
.output_html .si { color: #A45A77; font-weight: bold } /* Literal.String.Interpol */
.output_html .sx { color: #008000 } /* Literal.String.Other */
.output_html .sr { color: #A45A77 } /* Literal.String.Regex */
.output_html .s1 { color: #BA2121 } /* Literal.String.Single */
.output_html .ss { color: #19177C } /* Literal.String.Symbol */
.output_html .bp { color: #008000 } /* Name.Builtin.Pseudo */
.output_html .fm { color: #0000FF } /* Name.Function.Magic */
.output_html .vc { color: #19177C } /* Name.Variable.Class */
.output_html .vg { color: #19177C } /* Name.Variable.Global */
.output_html .vi { color: #19177C } /* Name.Variable.Instance */
.output_html .vm { color: #19177C } /* Name.Variable.Magic */
.output_html .il { color: #666666 } /* Literal.Number.Integer.Long */</style><div class="highlight"><pre><span></span><span class="cp">&lt;?xml version="1.0" encoding="utf-8"?&gt;</span>
<span class="nt">&lt;data&gt;</span>
<span class="w">  </span><span class="nt">&lt;row&gt;</span>
<span class="w">    </span><span class="nt">&lt;album&gt;</span>Thriller<span class="nt">&lt;/album&gt;</span>
<span class="w">    </span><span class="nt">&lt;artiste&gt;</span>Michael<span class="w"> </span>Jackson<span class="nt">&lt;/artiste&gt;</span>
<span class="w">    </span><span class="nt">&lt;année&gt;</span>1982<span class="nt">&lt;/année&gt;</span>
<span class="w">    </span><span class="nt">&lt;ventes&gt;</span>33M<span class="nt">&lt;/ventes&gt;</span>
<span class="w">  </span><span class="nt">&lt;/row&gt;</span>
<span class="w">  </span><span class="nt">&lt;row&gt;</span>
<span class="w">    </span><span class="nt">&lt;album&gt;</span>Led<span class="w"> </span>Zeppelin<span class="w"> </span>IV<span class="nt">&lt;/album&gt;</span>
<span class="w">    </span><span class="nt">&lt;artiste&gt;</span>Led<span class="w"> </span>Zeppelin<span class="nt">&lt;/artiste&gt;</span>
<span class="w">    </span><span class="nt">&lt;année&gt;</span>1971<span class="nt">&lt;/année&gt;</span>
<span class="w">    </span><span class="nt">&lt;ventes&gt;</span>23M<span class="nt">&lt;/ventes&gt;</span>
<span class="w">  </span><span class="nt">&lt;/row&gt;</span>
<span class="w">  </span><span class="nt">&lt;row&gt;</span>
<span class="w">    </span><span class="nt">&lt;album&gt;</span>Legend<span class="nt">&lt;/album&gt;</span>
<span class="w">    </span><span class="nt">&lt;artiste&gt;</span>Bob<span class="w"> </span>Marley<span class="w"> </span><span class="ni">&amp;amp;</span><span class="w"> </span>the<span class="w"> </span>Wailers<span class="nt">&lt;/artiste&gt;</span>
<span class="w">    </span><span class="nt">&lt;année&gt;</span>1984<span class="nt">&lt;/année&gt;</span>
<span class="w">    </span><span class="nt">&lt;ventes&gt;</span>15M<span class="nt">&lt;/ventes&gt;</span>
<span class="w">  </span><span class="nt">&lt;/row&gt;</span>
<span class="w">  </span><span class="nt">&lt;row&gt;</span>
<span class="w">    </span><span class="nt">&lt;album&gt;</span>25<span class="nt">&lt;/album&gt;</span>
<span class="w">    </span><span class="nt">&lt;artiste&gt;</span>Adele<span class="nt">&lt;/artiste&gt;</span>
<span class="w">    </span><span class="nt">&lt;année&gt;</span>2015<span class="nt">&lt;/année&gt;</span>
<span class="w">    </span><span class="nt">&lt;ventes&gt;</span>10M<span class="nt">&lt;/ventes&gt;</span>
<span class="w">  </span><span class="nt">&lt;/row&gt;</span>
<span class="nt">&lt;/data&gt;</span>
</pre></div>
</div>
</div></li>
</ul></li>
</ul>
</section>
<section id="les-données-ouvertes" class="level2" data-number="5">
<h2 data-number="5" class="anchored" data-anchor-id="les-données-ouvertes"><span class="header-section-number">5</span> Les données ouvertes</h2>
<p>À l’inverse des données collectées par certaines entreprises privées pour mieux connaitre leurs utilisateurs ou éventuellement faire un commerce de ces données, les données ouvertes sont librement accessibles grâce à une licence ouverte garantissant leur libre accès et leur réutilisation par tous, sans restriction technique, juridique ou financière.</p>
<dl>
<dt>
Données ouvertes
</dt>
<dd>
<div>
<p>Les <strong>données ouvertes</strong> ou <em>open data</em> sont des données numériques dont l’accès et l’usage sont laissés libres aux usagers.</p>
</div>
</dd>
</dl>
<div class="examples">
<ul>
<li>Plateforme ouverte des données publiques françaises: <a href="https://www.data.gouv.fr/fr/" class="uri">https://www.data.gouv.fr/fr/</a></li>
<li>Données de la ville de Nice Côte d’azur: <a href="http://opendata.nicecotedazur.org/data/dataset" class="uri">http://opendata.nicecotedazur.org/data/dataset</a></li>
<li>Données structurées de Wikipédia: <a href="https://wikidata.org/" class="uri">https://wikidata.org/</a></li>
<li>…</li>
</ul>
</div>
</section>
<section id="informatique-en-nuage-le-cloud" class="level2" data-number="6">
<h2 data-number="6" class="anchored" data-anchor-id="informatique-en-nuage-le-cloud"><span class="header-section-number">6</span> Informatique en nuage: le cloud</h2>
<p></p><figure class="wikimage figure"><picture>
			  <source type="image/webp" srcset="/img/8ofnEUU1SW-300.webp 300w, /img/8ofnEUU1SW-600.webp 600w, /img/8ofnEUU1SW-753.webp 753w" sizes="100vw">
  <source type="image/png" srcset="/img/8ofnEUU1SW-300.png 300w, /img/8ofnEUU1SW-600.png 600w, /img/8ofnEUU1SW-753.png 753w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/8ofnEUU1SW-300.webp" width="753" height="646" alt="Schéma donnant un aperçu sur les facteurs principaux du cloud computing." loading="lazy" decoding="async">
			</picture>
<figcaption id="caption"></figcaption><figcaption id="credit">©&nbsp;&nbsp;CC BY-SA 3.0&nbsp;<a id="image-description" href="//commons.wikimedia.org/wiki/File:Nuage33.png">via Wikimedia Commons</a></figcaption></figure><p></p>
<dl>
<dt>
Informatique en nuage
</dt>
<dd>
<div>
<p>Réseau d’ordinateurs permettant à leurs utilisateurs de partager et utiliser à distance diverses ressources informatiques comme des fichiers, des logiciels, des capacités de calcul et de la mémoire. <a href="https://fr.wiktionary.org/wiki/informatique_en_nuage" class="cite-source">Wiktionnaire</a></p>
</div>
</dd>
</dl>
<div class="examples">
<ul>
<li>atrium: le cloud des lycées de la région sud.</li>
<li>_________: __________________________________________</li>
<li>_________: __________________________________________</li>
</ul>
</div>
<div class="appli">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-8-contents" aria-controls="callout-8" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Application: Partager des documents sur atrium
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-8" class="callout-8-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="appli" data-titre="Partager des documents sur atrium">
<p>À l’aide des tutoriels d’atrium, réaliser les actions suivantes:</p>
<ol type="1">
<li><a href="https://www.atrium-sud.fr/web/assistance/deposer-un-document">Déposer un document sur atrium</a></li>
<li><a href="https://www.atrium-sud.fr/web/assistance/partager-un-document">Partager un document</a> en réglant les paramètres de partage.</li>
</ol>
</div>
</div>
</div>
</div>
</div>
<div class="appli">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-9-contents" aria-controls="callout-9" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Application: Paramètres de synchronisation
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-9" class="callout-9-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="appli" data-titre="Paramètres de synchronisation">
<p>En utilisant le document 2 P 22 du <a href="https://www.editions-delagrave.fr/livre/9782206103389-sciences-numeriques-et-technologie-snt-2de-2019-manuel-eleve">manuel de Delagrave</a>:</p>
<ul>
<li>Vérifier vos paramètres de synchronisation des données de votre téléphone.</li>
<li>Où sont enregistrées ces données?</li>
<li>À quoi peuvent-elles servir?</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="appli">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-10-contents" aria-controls="callout-10" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Application: La consommation de données des data-centers
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-10" class="callout-10-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="appli" data-titre="La consommation de données des data-centers">
<p>En utilisant le document 4 P 23 du <a href="https://www.editions-delagrave.fr/livre/9782206103389-sciences-numeriques-et-technologie-snt-2de-2019-manuel-eleve">manuel de Delagrave</a>:</p>
<p>Rédiger un court paragraphe expliquant quels sont les enjeux de la consommation énergétique des centres de données utilisés dans le cloud.</p>
</div>
</div>
</div>
</div>
</div>
</section>
<section id="les-dictionnaires-en-python" class="level2" data-number="7">
<h2 data-number="7" class="anchored" data-anchor-id="les-dictionnaires-en-python"><span class="header-section-number">7</span> Les dictionnaires en Python</h2>
<p>En python, une entrée peut-être représentée par un dictionnaire ou les couples <code>"descripteur": valeur</code> sont séparés par des virgules et entourées d’accolades.</p>
<div class="sourceCode" id="cb3" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb3-1">match <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> {<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'ligue'</span>: <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'L1'</span>,</span>
<span id="cb3-2">         <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'saison'</span>: <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'2002-2003'</span>,</span>
<span id="cb3-3">         <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'jour'</span>: <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'1'</span>,</span>
<span id="cb3-4">         <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'date'</span>: <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'2002-08-03 20:00:00+02:00'</span>,</span>
<span id="cb3-5">         <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'lieu'</span>: <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Nice'</span>,</span>
<span id="cb3-6">         <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'equipe_domicile'</span>: <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Nice'</span>,</span>
<span id="cb3-7">         <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'score_domicile'</span>: <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'1'</span>,</span>
<span id="cb3-8">         <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'equipe_exterieur'</span>: <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Le Havre'</span>,</span>
<span id="cb3-9">         <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'score_exterieur'</span>: <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'2'</span>}</span></code></pre></div>
<p>Chaque valeur peut-être accédée grâce à son descripteur (ou clé):</p>
<div class="sourceCode" id="cb4" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb4-1"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(match[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"lieu"</span>]) <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># affiche "Nice"</span></span></code></pre></div>
<div class="appli">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-11-contents" aria-controls="callout-11" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Application
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-11" class="callout-11-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="appli">
<p>Expliquer simplement quelle donnée représente le dictionnaire match?</p>
</div>
</div>
</div>
</div>
</div>
</section>
<section id="exploitation-dun-fichier-csv-en-python" class="level2" data-number="8">
<h2 data-number="8" class="anchored" data-anchor-id="exploitation-dun-fichier-csv-en-python"><span class="header-section-number">8</span> Exploitation d’un fichier <code>csv</code> en Python</h2>
<p>Lorsqu’on lit un fichier <code>csv</code> en Python, chaque ligne du fichier est automatiquement converti en <code>dict</code>ionnaire.</p>
<p>Voici par exemple comment afficher toutes les lignes d’un fichier appelé <code>data.csv</code>.</p>
<div class="sourceCode" id="cb5" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb5-1"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># import du module csv de Python</span></span>
<span id="cb5-2"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> csv</span>
<span id="cb5-3"></span>
<span id="cb5-4"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Lecture de chaque ligne sous forme de dictionnaire</span></span>
<span id="cb5-5"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">with</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">open</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'data.csv'</span>) <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">as</span> csv_file:</span>
<span id="cb5-6">    reader <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> csv.DictReader(csv_file)</span>
<span id="cb5-7">    <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> ligne <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> reader:</span>
<span id="cb5-8">        <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># affiche le dictionnaire complet</span></span>
<span id="cb5-9">        <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(ligne)</span>
<span id="cb5-10">        <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># ou on affiche qu'une valeur par ligne</span></span>
<span id="cb5-11">        <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># print(ligne["descripteur"])</span></span></code></pre></div>
<p>Voici par exemple la sortie obtenue avec le fichier des musées de Nice:</p>
<pre><code>{"Type d'établissement": 'MUSEE', 'Identité': "MUSÉE D'ART MODERNE ET D'ART CONTEMPORAIN MAMAC", 'Adresse': 'Place Yves Klein 06300 Nice'}
{"Type d'établissement": 'MUSEE', 'Identité': 'MUSÉE MATISSE', 'Adresse': '164 Avenue des Arènes de Cimiez, 06000 Nice'}
{"Type d'établissement": 'MUSEE', 'Identité': 'PALAIS LASCARIS', 'Adresse': '15 rue Droite            06300 Nice'}
{"Type d'établissement": 'MUSEE', 'Identité': "MUSEUM D'HISTOIRE NATURELLE", 'Adresse': '60 bd Risso           06300 Nice'}
{"Type d'établissement": 'MUSEE', 'Identité': "MUSEE D'ARCHEOLOGIE DE NICE CIMIEZ", 'Adresse': '160, avenue des Arènes de Cimiez 06000 Nice'}
{"Type d'établissement": 'MUSEE', 'Identité': "MUSEE D'ARCHEOLOGIE DE NICE TERRA AMATA", 'Adresse': '25 bd Carnot\n06300 Nice'}
{"Type d'établissement": 'MUSEE', 'Identité': 'MUSÉE DES BEAUX-ARTS JULES CHERET', 'Adresse': '33 av des Baumettes    06000 Nice'}
{"Type d'établissement": 'MUSEE', 'Identité': "MUSÉE INTERNATIONAL D'ART NAÏF ANATOLE JAKOVSKY", 'Adresse': 'Château Sainte-Hélène 23, avenue de Fabron 06200 NICE'}
{"Type d'établissement": 'MUSEE', 'Identité': 'MUSÉE DE LA PHOTOGRAPHIE CHARLES NEGRE', 'Adresse': '1 Place Pierre Gautier 06300 Nice'}
{"Type d'établissement": 'MUSEE', 'Identité': 'VILLA MASSÉNA', 'Adresse': '65 rue de France   06000 Nice'}
{"Type d'établissement": 'MUSEE', 'Identité': 'PRIEURE DU VIEUX LOGIS', 'Adresse': '59 Avenue de Saint-Barthélémy, 06100 Nice'}
{"Type d'établissement": 'GALERIE ', 'Identité': 'GALERIE DE LA MARINE', 'Adresse': '59 quai des Etats-Unis  06300 Nice'}
{"Type d'établissement": 'GALERIE ', 'Identité': 'GALERIE DES PONCHETTES', 'Adresse': '77 Quai des États-Unis, 06300 Nice'}
{"Type d'établissement": '', 'Identité': 'MONASTERE DES FRANCISCAINS', 'Adresse': 'Place du Monastère - 06000 Nice'}</code></pre>


</section>

 ]]></description>
  <category>2SNT</category>
  <guid>https://www.lyceum.fr/2gt/snt/1-les-donnees-structurees/</guid>
  <pubDate>Wed, 31 Jul 2024 15:15:56 GMT</pubDate>
</item>
<item>
  <title>Partie 2: Internet</title>
  <link>https://www.lyceum.fr/2gt/snt/2-internet/</link>
  <description><![CDATA[ 




<div class="programme">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-1-contents" aria-controls="callout-1" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Programme
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-1" class="callout-1-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="programme">
<table class="table table-bordered table-hover caption-top">
<thead class="table-warning">
<tr class="header">
<th>Contenus | Capacités attendues</th>
<th></th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td colspan="2">Indépendance d’internet | Caractériser quelques types de réseaux physiques : obsolètes | par rapport au réseau physique | ou actuels, rapides ou lents, filaires ou non. | | | | Caractériser l’ordre de grandeur du trafic de données sur | | internet et son évolution. |</td>
</tr>
<tr class="even">
<td colspan="2">Réseaux pair-à-pair | Décrire l’intérêt des réseaux pair-à-pair ainsi que les usages | | illicites qu’on peut en faire. |</td>
</tr>
<tr class="odd">
<td colspan="2">Protocole TCP/IP : paquets, | Distinguer le rôle des protocoles IP et TCP. | routage des paquets | | | Caractériser les principes du routage et ses limites. | | | | Distinguer la fiabilité de transmission et l’absence de garantie | | temporelle. |</td>
</tr>
<tr class="even">
<td colspan="2">Adresses symboliques et | Sur des exemples réels, retrouver une adresse IP à partir | serveurs DNS | d’une adresse symbolique et inversement. |</td>
</tr>
</tbody>
</table>
<table class="table table-bordered table-hover caption-top">
<thead class="table-warning">
<tr class="header">
<th><strong>Exemples d’activités</strong> |</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><ul>
<li>Illustrer le fonctionnement du routage et de TCP par des activités débranchées ou à l’aide de logiciels dédiés, en tenant compte de la destruction de paquets. |</li>
<li>Déterminer l’adresse IP d’un équipement et l’adresse du DNS sur un réseau. |</li>
<li>Suivre le chemin d’un courriel en utilisant une commande du protocole IP. |</li>
</ul></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div>

</div>
<div class="intro quarto-layout-panel" data-layout-ncol="2">
<div class="quarto-layout-row">
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<p>Dans cette partie, nous allons nous intéresser à internet: <strong>le réseau des réseaux</strong>. Né en 1983, il est aujourd’hui incontournable, mais comment est-il né et comment fonctionne-t-il? Souvent confondu avec le web (le réseau d’informations reliées par l’hypertexte), le réseau internet est le réseau de machines permettant le transport de ces informations, mais pas que!</p>
</div>
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<p></p><figure class="wikimage figure"><picture>
			  <source type="image/webp" srcset="/img/4NVefrIUfD-300.webp 300w, /img/4NVefrIUfD-600.webp 600w, /img/4NVefrIUfD-743.webp 743w" sizes="100vw">
  <source type="image/svg+xml" srcset="/img/4NVefrIUfD-743.svg 743w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/4NVefrIUfD-300.webp" width="743" height="552" alt="Internet est constitué de la multitude de réseaux répartis dans le monde entier et interconnectés." loading="lazy" decoding="async">
			</picture>
<figcaption id="caption">Internet est constitué de la multitude de réseaux répartis dans le monde entier et interconnectés.</figcaption><figcaption id="credit">©&nbsp;&nbsp;CC BY-SA 3.0&nbsp;<a id="image-description" href="//commons.wikimedia.org/wiki/File:Internet-transit.svg">via Wikimedia Commons</a></figcaption></figure><p></p>
</div>
</div>
</div>
<div class="appli">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-2-contents" aria-controls="callout-2" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Application: QCU diagnostique
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-2" class="callout-2-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="appli" data-titre="QCU diagnostique">
<p>On commence par tester ses connaissances en utilisant le QCU P34-35 du <a href="https://www.editions-delagrave.fr/livre/9782206103389-sciences-numeriques-et-technologie-snt-2de-2019-manuel-eleve">manuel de Delagrave</a></p>
<p>Lien vers la version en ligne: <a href="https://lienmini.fr/3389-202" class="uri">https://lienmini.fr/3389-202</a></p>
</div>
</div>
</div>
</div>
</div>
<section id="lhistoire-dinternet" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="lhistoire-dinternet"><span class="header-section-number">1</span> L’histoire d’Internet</h2>
<p></p><div class="yt-embend"><div><iframe width="560" height="315" src="https://yewtu.be/embed/5ee6W1ODvFU" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe><p><a href="https://www.youtube.com/watch?v=5ee6W1ODvFU">Vidéo</a> servie sans cookie via <a href="https://yewtu.be/">yewtu.be</a></p></div></div><p></p>
<p>L’ancêtre d’internet s’appelait <!-- arpanet --> ________________. Sur internet, les données sont acheminées sous forme de <!-- paquets --> ________________.</p>
<p>Les règles permettant la transmission des données sont les protocoles:</p>
<ul>
<li>TCP qui <!-- assure le transport et l'intégrité des paquets dans le réseau --> _________________________________.</li>
<li>IP qui <!-- conduit les paquets à bon port --> _________________________________.</li>
</ul>
</section>
<section id="lessor-dinternet" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="lessor-dinternet"><span class="header-section-number">2</span> L’essor d’internet</h2>
<p>Internet a fait progressivement disparaître beaucoup des moyens de communication précédents:</p>
<ul>
<li>__________________________,</li>
<li>__________________________,</li>
<li>__________________________,</li>
<li>…</li>
</ul>
<p>Son trafic augmente de façon <em>exponentielle</em>.</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><picture>
			  <source type="image/webp" srcset="/img/ShURDNjrKx-300.webp 300w, /img/ShURDNjrKx-395.webp 395w" sizes="100vw">
  <source type="image/png" srcset="/img/ShURDNjrKx-300.png 300w, /img/ShURDNjrKx-395.png 395w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/ShURDNjrKx-300.webp" width="395" height="221" alt="" loading="lazy" decoding="async">
			</picture>
</p>
<figcaption>Évolution du trafic d’internet</figcaption>
</figure>
</div>
<div class="appli">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-3-contents" aria-controls="callout-3" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Application
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-3" class="callout-3-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="appli">
<p>Recherchez dans cette <a href="https://reseaux.orange.fr/questions/internet-mobile/definition-data">page</a> les consommations associées à divers usages d’internet et les classer par ordre croissant.</p>
</div>
</div>
</div>
</div>
</div>
<div class="plus">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-4-contents" aria-controls="callout-4" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
En plus: Le bit et l'octet: unités d'information
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-4" class="callout-4-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="plus" data-titre="Le bit et l'octet: unités d'information">
<p>Les machines que nous utilisons actuellement fonctionnent sur des circuits électroniques à deux états notés 0 ou 1.</p>
<p>Toutes les données sont codées en binaire, mais cette unité est tellement petite on utilise plus communément d’autres unités comme:</p>
<ul>
<li>l’octet: <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>1</mn><mspace width="0.222em"></mspace><mi>o</mi><mo>=</mo><mn>8</mn><mspace width="0.222em"></mspace><mi>b</mi><mi>i</mi><mi>t</mi><mi>s</mi></mrow><annotation encoding="application/x-tex">1~o = 8~bits</annotation></semantics></math>,</li>
<li>le kibioctet: <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>1</mn><mi>k</mi><mi>i</mi><mi>o</mi><mo>=</mo><msup><mn>2</mn><mn>10</mn></msup><mi>o</mi><mi>c</mi><mi>t</mi><mi>e</mi><mi>t</mi><mi>s</mi><mo>=</mo><mn>1</mn><mspace width="0.222em"></mspace><mn>024</mn><mspace width="0.222em"></mspace><mi>o</mi><mo>≈</mo><mn>1</mn><mspace width="0.222em"></mspace><mi>k</mi><mi>o</mi></mrow><annotation encoding="application/x-tex">1kio=2^{10} octets = 1~024~o \approx 1~ko</annotation></semantics></math>,</li>
<li>le mébioctet: <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>1</mn><mi>M</mi><mi>i</mi><mi>o</mi><mo>=</mo><msup><mn>2</mn><mn>20</mn></msup><mi>o</mi><mi>c</mi><mi>t</mi><mi>e</mi><mi>t</mi><mi>s</mi><mo>=</mo><mn>1</mn><mspace width="0.222em"></mspace><mn>048</mn><mspace width="0.222em"></mspace><mn>576</mn><mspace width="0.222em"></mspace><mi>o</mi><mo>≈</mo><mn>1</mn><mspace width="0.222em"></mspace><mi>M</mi><mi>o</mi></mrow><annotation encoding="application/x-tex">1Mio=2^{20} octets = 1~048~576~o \approx 1~Mo</annotation></semantics></math>,</li>
<li>le gibioctet: <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>1</mn><mi>G</mi><mi>i</mi><mi>o</mi><mo>=</mo><msup><mn>2</mn><mn>30</mn></msup><mi>o</mi><mi>c</mi><mi>t</mi><mi>e</mi><mi>t</mi><mi>s</mi><mo>=</mo><mn>1</mn><mspace width="0.222em"></mspace><mn>073</mn><mspace width="0.222em"></mspace><mn>741</mn><mspace width="0.222em"></mspace><mn>824</mn><mo>≈</mo><mn>1</mn><mspace width="0.222em"></mspace><mi>G</mi><mi>o</mi></mrow><annotation encoding="application/x-tex">1Gio=2^{30} octets = 1~073~741~824 \approx 1~Go</annotation></semantics></math></li>
</ul>
</div>
</div>
</div>
</div>
</div>
</section>
<section id="les-protocoles-dinternet" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="les-protocoles-dinternet"><span class="header-section-number">3</span> Les protocoles d’internet</h2>
<p></p><div class="yt-embend"><div><iframe width="560" height="315" src="https://yewtu.be/embed/5AVY6E-7yCc" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe><p><a href="https://www.youtube.com/watch?v=5AVY6E-7yCc">Vidéo</a> servie sans cookie via <a href="https://yewtu.be/">yewtu.be</a></p></div></div><p></p>
<p>Afin que deux machines puissent communiquer, entre-elles à travers internet, des règles sont définies mondialement: les <strong>protocoles</strong>.</p>
<div>

</div>
<div class="quarto-layout-panel" data-layout-ncol="2">
<div class="quarto-layout-row">
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<p></p><figure class="wikimage figure"><picture>
			  <source type="image/webp" srcset="/img/5rRngJTojk-300.webp 300w, /img/5rRngJTojk-600.webp 600w, /img/5rRngJTojk-2139.webp 2139w" sizes="100vw">
  <source type="image/svg+xml" srcset="/img/5rRngJTojk-2139.svg 2139w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/5rRngJTojk-300.webp" width="2139" height="1631" alt="Les réseaux constituant internet sont reliés par des routeurs. Les protocoles de routage indiquent les directions que doivent suivre les paquets en fonction de l'IP de destination notamment. Certains paquets peuvent se «perdre» et ils n'arrivent pas forcément dans l'ordre." loading="lazy" decoding="async">
			</picture>
<figcaption id="caption">Les réseaux constituant internet sont reliés par des routeurs. Les protocoles de routage indiquent les directions que doivent suivre les paquets en fonction de l'IP de destination notamment. Certains paquets peuvent se «perdre» et ils n'arrivent pas forcément dans l'ordre.</figcaption><figcaption id="credit">©&nbsp;&nbsp;CC BY-SA 4.0&nbsp;<a id="image-description" href="//commons.wikimedia.org/wiki/File:Internet-transit-2.svg">via Wikimedia Commons</a></figcaption></figure><p></p>
</div>
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<ul>
<li><strong>Le protocole IP</strong> donne une adresse unique à chaque machine du réseau internet.</li>
<li><strong>Le protocole TCP</strong> découpe l’information en paquets avant envoi et les vérifie à la réception puis les réordonne.</li>
</ul>
</div>
</div>
</div>
<p>Il existe deux versions des adresses IP:</p>
<table class="caption-top table">
<thead>
<tr class="header">
<th><strong>IPv4</strong></th>
<th><strong>IPv6</strong></th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>Une adresse IP (version 4) est constituée de 4 nombres compris entre 0 et 255 séparés par des points.</p>
<p></p><figure class="wikimage figure"><picture>
			  <source type="image/webp" srcset="/img/FQwaAgFbKN-300.webp 300w, /img/FQwaAgFbKN-600.webp 600w, /img/FQwaAgFbKN-750.webp 750w" sizes="100vw">
  <source type="image/svg+xml" srcset="/img/FQwaAgFbKN-750.svg 750w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/FQwaAgFbKN-300.webp" width="750" height="450" alt="Chacun des quatre octets (8 bits) est un nombre compris entre 0 et 255 en notation décimale." loading="lazy" decoding="async">
			</picture>
<figcaption id="caption">Chacun des quatre octets (8 bits) est un nombre compris entre 0 et 255 en notation décimale.</figcaption><figcaption id="credit">&nbsp;Public domain&nbsp;<a id="image-description" href="//commons.wikimedia.org/wiki/File:Adresse_Ipv4.svg">via Wikimedia Commons</a></figcaption></figure><p></p></td>
<td><p>Les adresses IPv6 sont représentées par huit nombres de quatre chiffres <em>hexadécimaux</em>(de 0 à F, <a href="../../../1g/nsi/2-representation-des-donnees-types-et-valeurs-de-base/1-representation-des-entiers-naturels#codage-hexadécimal">voir</a>) chacun, séparés par deux-points.</p>
<p></p><figure class="wikimage figure"><picture>
			  <source type="image/webp" srcset="/img/fSUw1z0egD-300.webp 300w, /img/fSUw1z0egD-600.webp 600w, /img/fSUw1z0egD-750.webp 750w" sizes="100vw">
  <source type="image/svg+xml" srcset="/img/fSUw1z0egD-750.svg 750w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/fSUw1z0egD-300.webp" width="750" height="450" alt="Chacun des 8x4=24 chiffres hexadécimaux est compris entre 0 et F( soit 15 en décimal)." loading="lazy" decoding="async">
			</picture>
<figcaption id="caption">Chacun des 8x4=24 chiffres hexadécimaux est compris entre 0 et F( soit 15 en décimal).</figcaption><figcaption id="credit">&nbsp;Public domain&nbsp;<a id="image-description" href="//commons.wikimedia.org/wiki/File:Ipv6_address.svg">via Wikimedia Commons</a></figcaption></figure><p></p></td>
</tr>
<tr class="even">
<td><p>Le nombre total d’adresse est <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>255</mn><mo>×</mo><mn>255</mn><mo>×</mo><mn>255</mn><mo>×</mo><mn>255</mn><mo>=</mo><msup><mn>255</mn><mn>4</mn></msup></mrow><annotation encoding="application/x-tex">255 \times 255 \times 255 \times 255 = 255^4</annotation></semantics></math> soit environ 4 milliards d’adresse ce qui est largement insuffisant.</p></td>
<td><p>Le nombre total d’adresse est <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mn>16</mn><mrow><mn>4</mn><mo>×</mo><mn>8</mn></mrow></msup><mo>≈</mo><mn>3</mn><mo>×</mo><msup><mn>10</mn><mn>38</mn></msup></mrow><annotation encoding="application/x-tex">16^{4\times8} \approx 3\times 10^{38}</annotation></semantics></math> qui devrait largement suffire pour longtemps.</p></td>
</tr>
</tbody>
</table>
<div class="examples">
<p>Quand on s’abonne auprès d’un FAI, on obtient une adresse <strong>IP</strong>, cette adresse permet d’identifier votre appareil sur le réseau.</p>
<p>Exemple: <code>185.15.58.224</code> est l’adresse des serveurs de Wikipédia: <a href="https://185.15.58.224" class="uri">https://185.15.58.224</a></p>
<p>Pour obtenir son adresse IP on peut consulter un site comme: <a href="https://www.whatsmyip.org/" class="uri">https://www.whatsmyip.org/</a>.</p>
<p>Pou connaitre l’adresse d’un site, on peut utiliser la commande <code>ping</code>. Par exemple: <code>ping wikipedia.org</code></p>
<p><code>ping -4 wikipedia.org</code></p>
<p><code>&gt;&gt;&gt; PING  (185.15.58.224) 56(84) octets de données.</code></p>
<p>Voici l’adresse IPv6 de Wikipédia.org <code>2a02:ec80:0600:ed1a:0000:0001</code>.</p>
<p>Pour l’utiliser dans un navigateur, il faut l’écrire entre crochets: <a href="https://%5B2a02:ec80:600:ed1a::1%5D/" class="uri">https://[2a02:ec80:600:ed1a::1]/</a></p>
<pre><code>ping -6 wikipedia.org
&gt;&gt;&gt;64&nbsp;octets de text-lb.drmrs.wikimedia.org (2a02:ec80:600:ed1a::1)&nbsp;: icmp_seq=1 ttl=47 temps=30.3&nbsp;ms</code></pre>
</div>
</section>
<section id="noms-de-domaine-le-protocole-dns" class="level2" data-number="4">
<h2 data-number="4" class="anchored" data-anchor-id="noms-de-domaine-le-protocole-dns"><span class="header-section-number">4</span> Noms de domaine, le protocole DNS</h2>
<dl>
<dt>
Nom de domaine
</dt>
<dd>
<div>
<p>Un nom de domaine est un « masque » sur une adresse IP. Le but d’un nom de domaine est de retenir et communiquer facilement l’adresse d’un ensemble de serveurs (site web, courrier électronique, FTP). <a href="https://fr.wikipedia.org/wiki/Nom_de_domaine" class="cite-source">Article Wikipédia</a></p>
</div>
</dd>
</dl>
<div class="example">
<p>Par exemple, <code>wikipedia.org</code> est plus simple à mémoriser que <code>208.80.154.224</code> ou <code>91.198.174.192</code>. <a href="https://fr.wikipedia.org/wiki/Domain_Name_System" class="cite-source">Article Wikipédia DNS</a></p>
</div>
<div class="prop">
<div>

</div>
<div class="quarto-layout-panel" data-layout-ncol="2">
<div class="quarto-layout-row">
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<p>Le système de nom de domaine est hiérarchique, permettant la définition de sous-domaines.</p>
</div>
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<p></p><figure class="wikimage figure"><picture>
			  <source type="image/webp" srcset="/img/NAHGvdwsJ--300.webp 300w, /img/NAHGvdwsJ--600.webp 600w, /img/NAHGvdwsJ--1066.webp 1066w" sizes="100vw">
  <source type="image/svg+xml" srcset="/img/NAHGvdwsJ--1066.svg 1066w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/NAHGvdwsJ--300.webp" width="1066" height="572" alt="Le nom de.wikipedia.org appartient aux domaines de premier niveau «.org»." loading="lazy" decoding="async">
			</picture>
<figcaption id="caption">Le nom de.wikipedia.org appartient aux domaines de premier niveau «.org».</figcaption><figcaption id="credit">©&nbsp;&nbsp;CC BY-SA 2.5&nbsp;<a id="image-description" href="//commons.wikimedia.org/wiki/File:Dns-raum.svg">via Wikimedia Commons</a></figcaption></figure><p></p>
</div>
</div>
</div>
</div>
<dl>
<dt>
DNS
</dt>
<dd>
<div>
<p>Le Domain Name System ou DNS est un service informatique distribué sur Internet qui résout les noms de domaine Internet en adresse IP. <a href="https://fr.wikipedia.org/wiki/Domain_Name_System" class="cite-source">Article Wikipedia DNS</a></p>
</div>
</dd>
</dl>
<p></p><figure class="wikimage figure"><picture>
			  <source type="image/webp" srcset="/img/RF67NyPAek-300.webp 300w, /img/RF67NyPAek-450.webp 450w, /img/RF67NyPAek-600.webp 600w" sizes="100vw">
  <source type="image/svg+xml" srcset="/img/RF67NyPAek-450.svg 450w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/RF67NyPAek-300.webp" width="600" height="213" alt="Un nom de domaine est résolu de droite à gauche grâce aux serveurs de noms DNS de plus en plus spécialisés jusqu'à obtenir l'adresse IP du nom de domaine tapé." loading="lazy" decoding="async">
			</picture>
<figcaption id="caption">Un nom de domaine est résolu de droite à gauche grâce aux serveurs de noms DNS de plus en plus spécialisés jusqu'à obtenir l'adresse IP du nom de domaine tapé.</figcaption><figcaption id="credit">&nbsp;Public domain&nbsp;<a id="image-description" href="//commons.wikimedia.org/wiki/File:Example_of_an_iterative_DNS_resolver.svg">via Wikimedia Commons</a></figcaption></figure><p></p>
<!-- ::: {.plus titre="La commande nslookup"}

Cette commande permet de trouver une adresse IP à partir d'un nom de domaine:

    [ben@archben ~]$ nslookup framasoft.org
    Server:         192.168.1.1
    Address:        192.168.1.1#53

    Non-authoritative answer:
    Name:   framasoft.org
    Address: 144.76.131.212
    Name:   framasoft.org
    Address: 2a01:4f8:141:3421::212


Ou l'inverse:


    [ben@archben ~]$ nslookup 144.76.131.212
    212.131.76.144.in-addr.arpa     name = edna.framasoft.org.

::: -->
</section>
<section id="communication-sur-internet" class="level2" data-number="5">
<h2 data-number="5" class="anchored" data-anchor-id="communication-sur-internet"><span class="header-section-number">5</span> Communication sur Internet</h2>
<p></p><div class="yt-embend"><div><iframe width="560" height="315" src="https://yewtu.be/embed/6ZazbI8faqw" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe><p><a href="https://www.youtube.com/watch?v=6ZazbI8faqw">Vidéo</a> servie sans cookie via <a href="https://yewtu.be/">yewtu.be</a></p></div></div><p></p>
<div class="appli">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-5-contents" aria-controls="callout-5" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Application
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-5" class="callout-5-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="appli">
<p>Répondre aux questions de l’activité PP 44-45 du <a href="https://www.editions-delagrave.fr/livre/9782206103389-sciences-numeriques-et-technologie-snt-2de-2019-manuel-eleve">manuel de Delagrave</a>.</p>
</div>
</div>
</div>
</div>
</div>
<p>On distingue deux principaux modes de communication.</p>
<table class="caption-top table">
<thead>
<tr class="header">
<th><strong>Communication client-serveur</strong></th>
<th><strong>Communication pair à pair</strong></th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>Une machine (<em>le client</em>) émet une requête vers une autre machine (<em>le serveur</em>) qui est la seule à pouvoir répondre à ces requêtes.</p></td>
<td><p>Dans un réseau pair à pair au contraire, chaque machine est à la fois client et serveur. Les deux machines communiquent directement sans intermédiaire.</p></td>
</tr>
<tr class="even">
<td><picture>
			  <source type="image/webp" srcset="/img/nq5zdaGp4J-119.webp 119w, /img/nq5zdaGp4J-300.webp 300w, /img/nq5zdaGp4J-600.webp 600w" sizes="100vw">
  <source type="image/svg+xml" srcset="/img/nq5zdaGp4J-119.svg 119w" sizes="100vw">
				<img class="img-fluid" src="https://www.lyceum.fr/img/nq5zdaGp4J-119.webp" width="600" height="620" alt="" loading="lazy" decoding="async">
			</picture>
</td>
<td><picture>
			  <source type="image/webp" srcset="/img/9b4DhKg5Ax-119.webp 119w, /img/9b4DhKg5Ax-300.webp 300w, /img/9b4DhKg5Ax-600.webp 600w" sizes="100vw">
  <source type="image/svg+xml" srcset="/img/9b4DhKg5Ax-119.svg 119w" sizes="100vw">
				<img class="img-fluid" src="https://www.lyceum.fr/img/9b4DhKg5Ax-119.webp" width="600" height="620" alt="" loading="lazy" decoding="async">
			</picture>
</td>
</tr>
<tr class="odd">
<td>La communication <strong>client-serveur</strong> est la plus utilisée actuellement web, courriel, Vod …</td>
<td>La communication <strong>pair à pair</strong> est beaucoup moins utilisée actuellement: <a href="https://ubuntu.com/download/alternative-downloads#bittorrent">Torrent</a>pour le partage de fichiers, <a href="https://en.wikipedia.org/wiki/Skype_protocol">Skype</a>: Communications audio et vidéos. <a href="https://joinpeertube.org/">peertube</a>: partage de vidéos alternative à youtube… Mais beaucoup y voit un avenir prometteur pour décentraliser le web et éviter le recours systématique au serveur des géants du web (GAFAM) qui au passage aspirent des données.</td>
</tr>
</tbody>
</table>
<div class="appli">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-6-contents" aria-controls="callout-6" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Application
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-6" class="callout-6-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="appli">
<p>Citer au moins un avantage et un inconvénient pour chaque type de communication.</p>
</div>
</div>
</div>
</div>
</div>
<!--

Avantages:

Inconvénient:

- lorsque vous visitez la plateforme vous utilisez des ressources pour envoyer des données à
  d'autres utilisateurs.





## Organisation du réseau internet

<p><a href="https://commons.wikimedia.org/wiki/File:Internet_Connectivity_Distribution_%26_Core.svg#/media/File:Internet_Connectivity_Distribution_&amp;_Core.svg"><img class="half right" src="https://upload.wikimedia.org/wikipedia/commons/3/36/Internet_Connectivity_Distribution_%26_Core.svg" alt="Internet Connectivity Distribution &amp; Core.svg" width="1234" height="720"></a><br>By <a href="//commons.wikimedia.org/wiki/User:Ludovic.ferre" title="User:Ludovic.ferre">User:Ludovic.ferre</a> - Internet Connectivity Distribution&amp;Core.svg, <a href="https://creativecommons.org/licenses/by-sa/3.0" title="Creative Commons Attribution-Share Alike 3.0">CC BY-SA 3.0</a>, <a href="https://commons.wikimedia.org/w/index.php?curid=10030716">Link</a></p>


<wc-wikimage title="Internet_Connectivity_Distribution_&_Core.svg" caption="Interconnexion des réseaux au sein d'internet."></wc-wikimage>


Le réseau internet n'est pas centralisé, il n'y a pas une machine _centrale_ à laquelle sont
connectées toutes les autres. Les **routeurs** permettent de connecter les réseaux entre eux.

Pour se connecter à internet, il suffit de se connecter à une autre machine qui y est déjà
connectée.

::: examples

- connexion à une box par câble RJ45, par Wifi
- partage de connexion avec un téléphone par WIFI, câble USB
- WIFI public

:::








Pour accéder à internet, il faut:

- Avoir une machine avec un terminal(ou carte) réseau(ordinateur, téléphone, tablette...),
- se raccorder à un fournisseur d'accès à internet(FAI) par une connexion:
       - **filaire**: ADSL, VDSL2, fibre optique,
       - **sans fil**:
           - Wi-Fi, WiMAX,
           - via un réseau de téléphonie mobile (GSM/EDGE, 3G/UMTS, 3G+ ou LTE, 4G, 4G+, 5G, etc.)
           - ou par satellite.

Internet par satellite: article le monde

::: plus

Cette organisation permet de rendre le réseau internet résilient face aux pannes, car
lorsque des pannes ont lieu, elles n'affectent pas la totalité du réseau et les échanges peuvent
transiter quand même par d'autres machines.

:::






-->


</section>

 ]]></description>
  <category>2SNT</category>
  <guid>https://www.lyceum.fr/2gt/snt/2-internet/</guid>
  <pubDate>Wed, 31 Jul 2024 15:15:56 GMT</pubDate>
</item>
<item>
  <title>Partie 3: Le Web</title>
  <link>https://www.lyceum.fr/2gt/snt/3-le-web/</link>
  <description><![CDATA[ 




<div class="programme">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-1-contents" aria-controls="callout-1" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Programme
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-1" class="callout-1-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="programme">
<table class="table table-bordered table-hover caption-top">
<thead class="table-warning">
<tr class="header">
<th colspan="2">Contenus | Capacités attendues |</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td colspan="2">Repères historiques | Connaître les étapes du développement du <em>Web</em>. |</td>
</tr>
<tr class="even">
<td colspan="2">Hypertexte | Maîtriser les renvois d’un texte à différents contenus. |</td>
</tr>
<tr class="odd">
<td colspan="2">Requête HTTP | Décomposer le contenu d’une requête HTTP et identifier les paramètres passés. |</td>
</tr>
<tr class="even">
<td colspan="2">URL | Décomposer l’URL d’une page. | | Reconnaître les pages sécurisées. |</td>
</tr>
<tr class="odd">
<td colspan="2">Modèle client/serveur | Inspecter le code d’une page hébergée par un serveur et distinguer ce qui est | | exécuté par le client et par le serveur. |</td>
</tr>
<tr class="even">
<td colspan="2">Langages HTML et CSS | Distinguer ce qui relève du contenu d’une page et de son style | | de présentation. | | Étudier et modifier une page HTML simple. |</td>
</tr>
<tr class="odd">
<td colspan="2">Moteurs de recherche : | Mener une analyse critique des résultats fournis par un moteur | principes et usages | de recherche. | | Comprendre les enjeux de la publication d’informations. |</td>
</tr>
<tr class="even">
<td colspan="2">Paramètres de sécurité d’un | Maîtriser les réglages les plus importants concernant la | navigateur | gestion des cookies, la sécurité et la confidentialité d’un | | navigateur. | | Sécuriser sa navigation en ligne et analyser les pages et | | fichiers. |</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div>

</div>
<div class="intro quarto-layout-panel" data-layout-ncol="2">
<div class="quarto-layout-row">
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<p>Le <em>Web</em> (toile d’araignée) désigne un système donnant accès à un ensemble de données (page, image, son, vidéo) reliées par des liens hypertextes et accessibles sur le réseau internet.</p>
</div>
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<p></p><figure class="wikimage figure"><picture>
			  <source type="image/webp" srcset="/img/Z8S6ocW6Gw-300.webp 300w, /img/Z8S6ocW6Gw-536.webp 536w, /img/Z8S6ocW6Gw-600.webp 600w" sizes="100vw">
  <source type="image/svg+xml" srcset="/img/Z8S6ocW6Gw-536.svg 536w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/Z8S6ocW6Gw-300.webp" width="600" height="501" alt="Logo original du World Wide Web créé en 1989 et ouvert au public en 1991." loading="lazy" decoding="async">
			</picture>
<figcaption id="caption">Logo original du World Wide Web créé en 1989 et ouvert au public en 1991.</figcaption><figcaption id="credit">©&nbsp;&nbsp;CC BY-SA 4.0&nbsp;<a id="image-description" href="//commons.wikimedia.org/wiki/File:WWW-LetShare.svg">via Wikimedia Commons</a></figcaption></figure><p></p>
</div>
</div>
</div>
<!--

Ne confondons pas internet et le web. Le web, l'ensemble des documents électroniques accessibles
sur le réseau internet compte aujourd'hui près de _2 milliards de pages_ et est devenu omniprésent
dans notre vie grâce à l'utilisation d'_applications web dynamiques_. L'ensemble des documents
électroniques du web doivent pouvoir être consulté à partir de machines variées, ordinateurs,
tablettes, objets connectés. C'est pour cela que des _normes_ ont été mis au point pour garantir un
accès universel à tous.


Le web est un lieu «magique» où une grande quantité d'informations et de services sont à votre
portée, mais l'accès libre à une information ou à un service signifie-t-il qu'il est gratuit?
Dans ce chapitre, nous verrons comment rechercher des informations sur le web, sécuriser sa
navigation et respecter le droit d'auteur sur le Web. -->
<!--
Commençons par une vidéo présentant l'histoire du web.
lienmini.fr/3389-303

[![Lien vers la vidéo](../images/screenshot-delagrave-histoire-web.png)](http://lienmini.fr/3389-303)
-->
<div class="appli">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-2-contents" aria-controls="callout-2" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Application: QCU diagnostique
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-2" class="callout-2-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="appli" data-titre="QCU diagnostique">
<p>On commence par tester ses connaissances en utilisant le QCU P56-57 du <a href="https://www.editions-delagrave.fr/livre/9782206103389-sciences-numeriques-et-technologie-snt-2de-2019-manuel-eleve">manuel de Delagrave</a></p>
<p>Lien vers la version en ligne: <a href="https://lienmini.fr/3389-302" class="uri">https://lienmini.fr/3389-302</a></p>
</div>
</div>
</div>
</div>
</div>
<p></p><div class="yt-embend"><div><iframe width="560" height="315" src="https://yewtu.be/embed/bD6oideRbg8" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe><p><a href="https://www.youtube.com/watch?v=bD6oideRbg8">Vidéo</a> servie sans cookie via <a href="https://yewtu.be/">yewtu.be</a></p></div></div><p></p>
<section id="lhypertexte" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="lhypertexte"><span class="header-section-number">1</span> L’hypertexte</h2>
<div class="appli">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-3-contents" aria-controls="callout-3" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Application
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-3" class="callout-3-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="appli">
<p>En utilisant les documents PP 58-59 du <a href="https://www.editions-delagrave.fr/livre/9782206103389-sciences-numeriques-et-technologie-snt-2de-2019-manuel-eleve">manuel de Delagrave</a>, répondre aux questions suivantes :</p>
<ol type="1">
<li>Expliquer ce qu’est un lien hypertexte, et quand il est apparu.</li>
<li>Quelles relations existent entre l’hypertexte, les pages Web et les navigateurs.</li>
<li>Quelle est la différence entre une page web statique et dynamique ?</li>
</ol>
</div>
</div>
</div>
</div>
</div>
<p>Les documents <em>hypertextes</em> ont été imaginés en 1965 par Ted Nelson puis mis en pratique dans le Web inventé en 1989 par Tim Berners-Lee.</p>
<dl>
<dt>
Lien hypertexte
</dt>
<dd>
<div>
<p>Un lien hypertexte ou <em>hyperlien</em> permet de passer automatiquement d’un document consulté à un document lié.</p>
</div>
</dd>
</dl>
</section>
<section id="le-langage-html" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="le-langage-html"><span class="header-section-number">2</span> Le langage <code>html</code></h2>
<p>Les documents du web sont écrits en <code>html</code>(<em>HypertText Markup Langage</em>), le navigateur web traduit le code <code>html</code> et l’affiche à l’utilisateur.</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><picture>
			  <source type="image/webp" srcset="/img/0ED5E6bQmk-300.webp 300w, /img/0ED5E6bQmk-600.webp 600w, /img/0ED5E6bQmk-1919.webp 1919w" sizes="100vw">
  <source type="image/png" srcset="/img/0ED5E6bQmk-300.png 300w, /img/0ED5E6bQmk-600.png 600w, /img/0ED5E6bQmk-1919.png 1919w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/0ED5E6bQmk-300.webp" width="1919" height="522" alt="" loading="lazy" decoding="async">
			</picture>
</p>
<figcaption>Code HTML et rendu d’une page par le navigateur web.</figcaption>
</figure>
</div>
<div class="prop">
<p>Le langage <code>html</code> est un langage qui utilise des balises ouvrantes <code>&lt;balise&gt;</code> et fermantes <code>&lt;/balise&gt;</code>.</p>
</div>
<div class="examples">
<ul>
<li>Un titre de niveau 1: <code>&lt;h1&gt;Mon titre&lt;/h1&gt;</code></li>
<li>Un lien hypertexte dans un paragraphe: <code>&lt;p&gt;Le &lt;a href="https://www.w3.org/"&gt;w3c&lt;/a&gt; gère les normes du web.&lt;/p&gt;</code></li>
</ul>
</div>
<div class="appli">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-4-contents" aria-controls="callout-4" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Application
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-4" class="callout-4-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="appli">
<p>Faire l’<a href="./exo">exercice 1</a>.</p>
</div>
</div>
</div>
</div>
</div>
<div class="plus">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-5-contents" aria-controls="callout-5" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
En plus: Les normes du html
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-5" class="callout-5-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="plus" data-titre="Les normes du html">
<p>Bien entendu, les premiers navigateurs n’étaient pas aussi évolués qu’aujourd’hui, vous pouvez d’ailleurs avoir une idée du rendu de cette page à l’époque de sa création à cette adresse: http://line-mode.cern.ch/www/hypertext/WWW/TheProject.html</p>
<p>Le langage <code>html</code> ne cesse d’évoluer pour répondre à tous les nouveaux usages d’internet, utilisation d’écrans tactiles, lectures de vidéos, paiements…</p>
<p>On peut trouver sa spécification <a href="https://html.spec.whatwg.org/">ici</a></p>
</div>
</div>
</div>
</div>
</div>
</section>
<section id="les-adresses-url-uniforme-resource-locator" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="les-adresses-url-uniforme-resource-locator"><span class="header-section-number">3</span> Les adresses URL <em>(Uniforme Resource Locator)</em></h2>
<p>Sur le web, chaque page web possède une adresse unique qui permet de l’identifier.</p>
<dl>
<dt>
URL
</dt>
<dd>
<div>
<p>Une URL ou <em>adresse universelle</em> est l’adresse d’une ressource donnée(document, image, vidéo…), unique sur le Web.</p>
</div>
</dd>
</dl>
<div class="examples">
<ul>
<li>boîte aux lettres électronique : <code>mailto:gaston.lagaffe@mail.com</code> ;</li>
<li>numéro de téléphone: <code>tel:+33 1 234 567 890</code>.</li>
<li>page web: https://fr.wikipedia.org/wiki/Grace_Hopper#Anecdote</li>
</ul>
</div>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><picture>
			  <source type="image/webp" srcset="/img/9F6kI3ZHAB-300.webp 300w, /img/9F6kI3ZHAB-600.webp 600w, /img/9F6kI3ZHAB-2493.webp 2493w" sizes="100vw">
  <source type="image/png" srcset="/img/9F6kI3ZHAB-300.png 300w, /img/9F6kI3ZHAB-600.png 600w, /img/9F6kI3ZHAB-2493.png 2493w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/9F6kI3ZHAB-300.webp" width="2493" height="241" alt="" loading="lazy" decoding="async">
			</picture>
</p>
<figcaption>Description complète d’une URL issue du site MDN sous licence CC-BY-SA 3.0</figcaption>
</figure>
</div>
<p><a href="https://developer.mozilla.org/en-US/docs/Learn/Common_questions/What_is_a_URL" class="cite-source">Article URL sur MDN</a></p>
<div class="prop">
<p>Une URL se décompose en plusieurs parties :</p>
<ul>
<li>Le protocole <strong>(Obligatoire)</strong>: <code>http</code>, <code>https</code>, <code>mailto</code>, <code>tel</code>…</li>
<li>Le domaine précédé éventuellement du sous-domaine <strong>(Obligatoire)</strong>: <code>fr.wikipedia.org</code></li>
<li>Le chemin vers la ressource sur le serveur: <code>/blog/index.html</code></li>
<li>L’ancre sur une partie de la page: <code>#exo2</code></li>
<li>Les paramètres d’URL: <code>?q=CSS&amp;locale=ja</code></li>
</ul>
</div>
<div class="examples">
<ul>
<li><code>/2gt/snt/3-le-web/#les-adresses-url</code></li>
<li><code>https://developer.mozilla.org/fr/search?q=CSS&amp;locale=ja</code></li>
</ul>
</div>
<div class="plus">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-6-contents" aria-controls="callout-6" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
En plus: Caractères spéciaux dans les URL
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-6" class="callout-6-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="plus" data-titre="Caractères spéciaux dans les URL">
<p><strong>Attention</strong> de nombreux caractères sont interdits dans les URL. Vous rencontrerez parfois le <code>%20</code>, c’est tout simplement un espace, ou encore <code>%C3%A9</code> pour <code>é</code>.</p>
<p>Pour connaitre les codes ouvrez votre console navigateur et tapez: <code>encodeURI("é")</code>.</p>
</div>
</div>
</div>
</div>
</div>
</section>
<section id="le-protocole-http" class="level2" data-number="4">
<h2 data-number="4" class="anchored" data-anchor-id="le-protocole-http"><span class="header-section-number">4</span> Le protocole <code>HTTP</code></h2>
<p>Le protocole <code>HTTP</code> (<em>HyperText Transfer Protocol</em>) gère l’échange de données entre le client et le serveur sur le Web.</p>
<div class="prop">
<p>HTTPS est la version sécurisée du protocole HTTP dans laquelle les données échangées entre le client et le serveur sont <em>cryptées</em>.</p>
</div>
<ul>
<li>Le <strong>client</strong> effectue des demandes au serveur comme: - <code>GET</code>: Demande d’une page. - <code>POST</code>: Envoi de données. Pour un formulaire par exemple. - <code>DELETE</code>: Suppression d’une ressource du serveur. - …</li>
</ul>
<p>Les informations nécessaires à la requête sont placées dans des en-têtes un peu comme si les messages étaient placés dans une enveloppe.</p>
<div class="example">
<p>Voici la requête <code>HTTP</code><em>(un extrait)</em> envoyée pour demander la page la page https://fr.wikipedia.org/wiki/Hypertext_Transfer_Protocol en cliquant sur le lien du moteur de recherche www.qwant.com.</p>
<p>La première ligne indique le type de requête(GET, POST…), l’adresse de la ressource et la version du protocole.</p>
<pre><code>GET /wiki/Hypertext_Transfer_Protocol HTTP/2
Host: fr.wikipedia.org
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:80.0) Gecko/20100101 Firefox/80.0
Accept-Language: fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3
Referer: https://www.qwant.com/
Cookie: WMF-Last-Access=14-Sep-2020; WMF-Last-Access-Global=14-Sep-2020; GeoIP=FR:PAC:Nice:43.71:7.26:v4;
...</code></pre>
</div>
<ul>
<li><p>Le <strong>serveur</strong> répond au client en commençant par lui envoyer un <a href="https://fr.wikipedia.org/wiki/Liste_des_codes_HTTP">code d’état</a>:</p>
<pre><code> - `200`: succès de la requête
 - ...
 - `301` ou `302`: redirection vers une autre page;
 - `404`: page non trouvée
 - ...
 - `500`: erreur du serveur
 - ...</code></pre></li>
</ul>
<div class="example">
<p>Et voici l’en-tête <em>(un extrait)</em> de la réponse du serveur:</p>
<pre><code>HTTP/2 200 OK
date: Sun, 13 Sep 2020 09:14:27 GMT
content-language: fr
last-modified: Sun, 06 Sep 2020 18:23:06 GMT
content-type: text/html; charset=UTF-8
content-length: 33988
...</code></pre>
<p>La réponse renvoyée (après l’en-tête) étant la page <code>html</code> demandée dont nous parlerons juste après :</p>
<div class="sourceCode" id="cb4" style="background: #f1f3f5;"><pre class="sourceCode numberSource html number-lines code-with-copy"><code class="sourceCode html"><span id="cb4-1"><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;!DOCTYPE</span> html<span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb4-2"><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">html</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> lang</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"fr"</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb4-3"><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">head</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb4-4"><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">meta</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> charset</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"UTF-8"</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">/&gt;</span></span>
<span id="cb4-5"><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">title</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span>Hypertext Transfer Protocol — Wikipédia<span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;/</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">title</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb4-6">...</span>
<span id="cb4-7"><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;/</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">html</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span></code></pre></div>
</div>
<div class="appli">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-7-contents" aria-controls="callout-7" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Application
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-7" class="callout-7-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="appli">
<p>En analysant les en-têtes de la requête et de la réponse, expliquez quelles sont les informations:</p>
<ul>
<li>Envoyées par le client,</li>
<li>et celles renvoyées par le serveur.</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</section>
<section id="comment-fonctionne-un-moteur-de-recherche" class="level2" data-number="5">
<h2 data-number="5" class="anchored" data-anchor-id="comment-fonctionne-un-moteur-de-recherche"><span class="header-section-number">5</span> Comment fonctionne un moteur de recherche?</h2>
<!-- lienmini.fr/1046-307 -->
<p></p><div class="yt-embend"><div><iframe width="560" height="315" src="https://yewtu.be/embed/iKMm6SXO0wA" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe><p><a href="https://www.youtube.com/watch?v=iKMm6SXO0wA">Vidéo</a> servie sans cookie via <a href="https://yewtu.be/">yewtu.be</a></p></div></div><p></p>
<div class="appli">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-8-contents" aria-controls="callout-8" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Application
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-8" class="callout-8-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="appli">
<p>Répondre aux questions de l’activité PP 64-65 du <a href="https://www.editions-delagrave.fr/livre/9782206103389-sciences-numeriques-et-technologie-snt-2de-2019-manuel-eleve">manuel de Delagrave</a>, puis <strong>conclure en expliquant quels sont les principaux critères de classement des résultats sur un moteur de recherche</strong>.</p>
</div>
</div>
</div>
</div>
</div>
<ol type="1">
<li>Des robots logiciels explorent toutes les pages web: l’<strong>exploration</strong>.</li>
<li>Les pages sont ensuite classées: l’<strong>indexation</strong>.</li>
<li>Lorsque l’utilisateur fait une recherche l’<em>algorithme</em> du moteur de recherche affiche une liste de pages en les classant dans un ordre qui lui est propre: le <strong>classement</strong>.</li>
</ol>
<div class="plus">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-9-contents" aria-controls="callout-9" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
En plus: Impact écologique
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-9" class="callout-9-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="plus" data-titre="Impact écologique">
<p>Selon l’étude de l’ADEME, aller directement à l’adresse d’un site, soit en tapant son adresse dans son navigateur, soit en l’ayant enregistré comme « favori » (plutôt que de rechercher ce site via un moteur de recherche) divise par 4 les émissions de gaz à effet de serre.</p>
</div>
</div>
</div>
</div>
</div>
</section>
<section id="les-cookies" class="level2" data-number="6">
<h2 data-number="6" class="anchored" data-anchor-id="les-cookies"><span class="header-section-number">6</span> Les cookies</h2>
<div class="appli">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-10-contents" aria-controls="callout-10" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Application
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-10" class="callout-10-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="appli">
<p>Répondre aux questions suivantes en utilisant les documents de l’activité PP 66-67 du <a href="https://www.editions-delagrave.fr/livre/9782206103389-sciences-numeriques-et-technologie-snt-2de-2019-manuel-eleve">manuel de Delagrave</a>.</p>
<ol type="1">
<li>Comment paramétrer son navigateur pour améliorer sa confidentialité?</li>
<li>Que sont les cookies? Et les cookies tiers?</li>
<li>Ai-je le droit de copier-coller n’importe quelles informations sur les sites web?</li>
</ol>
</div>
</div>
</div>
</div>
</div>
<dl>
<dt>
cookie
</dt>
<dd>
<div>
<p>Les <strong>cookies</strong> sont de petits fichiers stockés sur votre navigateur par le serveur pour maintenir votre connexion ou stocker votre panier par exemple.</p>
</div>
</dd>
</dl>
<p>Les cookies <em>tiers</em> sont des cookies déposés par des serveurs autres que ceux du site que vous visitez. Ces cookies sont souvent utilisés pour vous suivre lors de votre navigation afin d’établir un profil publicitaire ou autre.</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><picture>
			  <source type="image/webp" srcset="/img/Nq_bfBqu5e-300.webp 300w, /img/Nq_bfBqu5e-600.webp 600w, /img/Nq_bfBqu5e-1185.webp 1185w" sizes="100vw">
  <source type="image/png" srcset="/img/Nq_bfBqu5e-300.png 300w, /img/Nq_bfBqu5e-600.png 600w, /img/Nq_bfBqu5e-1185.png 1185w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/Nq_bfBqu5e-300.webp" width="1185" height="329" alt="" loading="lazy" decoding="async">
			</picture>
</p>
<figcaption>Paramétrage des cookies sur chromium</figcaption>
</figure>
</div>
</section>
<section id="les-droits-sur-internet" class="level2" data-number="7">
<h2 data-number="7" class="anchored" data-anchor-id="les-droits-sur-internet"><span class="header-section-number">7</span> Les droits sur internet</h2>
<p>Le droit d’auteur s’applique sur internet comme ailleurs. Tous les textes, photos, vidéos sont la propriété de leur auteur ou ayant-droits(maison de disques, descendants…) et ce jusqu’à leur entrée dans le <strong>domaine public</strong> 70 ans après la mort de leur auteur.</p>
<p>Certains sites comme Wikipédia tentent de promouvoir un nouveau type de licence <a href="https://creativecommons.org/licenses/">Creative Commons</a> afin que les œuvres puissent être copiées, distribuées, modifiées et adaptées.</p>
<p></p><figure class="wikimage figure"><picture>
			  <source type="image/webp" srcset="/img/huKcoEY6Ey-300.webp 300w, /img/huKcoEY6Ey-394.webp 394w, /img/huKcoEY6Ey-600.webp 600w" sizes="100vw">
  <source type="image/svg+xml" srcset="/img/huKcoEY6Ey-394.svg 394w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/huKcoEY6Ey-300.webp" width="600" height="970" alt="La licence libre Creative Commons existe sous diverses variations plus ou moins ouvertes." loading="lazy" decoding="async">
			</picture>
<figcaption id="caption">La licence libre Creative Commons existe sous diverses variations plus ou moins ouvertes.</figcaption><figcaption id="credit">©&nbsp;&nbsp;CC BY-SA 4.0&nbsp;<a id="image-description" href="//commons.wikimedia.org/wiki/File:Creative_commons_license_spectrum_fr.svg">via Wikimedia Commons</a></figcaption></figure><p></p>


</section>

 ]]></description>
  <category>2SNT</category>
  <guid>https://www.lyceum.fr/2gt/snt/3-le-web/</guid>
  <pubDate>Wed, 31 Jul 2024 15:15:56 GMT</pubDate>
</item>
<item>
  <title>Partie 4: Localisation, cartographie et mobilité</title>
  <link>https://www.lyceum.fr/2gt/snt/4-localisation-cartographie-et-mobilite/</link>
  <description><![CDATA[ 




<div class="programme">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-1-contents" aria-controls="callout-1" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Programme
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-1" class="callout-1-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="programme">
<table class="table table-bordered table-hover caption-top">
<thead class="table-warning">
<tr class="header">
<th>Contenus</th>
<th>Capacités attendues</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>GPS, Galileo</td>
<td>Décrire le principe de fonctionnement de la géolocalisation.</td>
</tr>
<tr class="even">
<td>Cartes numériques</td>
<td>Identifier les différentes couches d’information de GeoPortail pour extraire différents types de données. Contribuer à OpenStreetMap de façon collaborative.</td>
</tr>
<tr class="odd">
<td>Protocole NMEA 0183</td>
<td>Décoder une trame NMEA pour trouver des coordonnées géographiques.</td>
</tr>
<tr class="even">
<td>Calculs d’itinéraires</td>
<td>Utiliser un logiciel pour calculer un itinéraire. Représenter un calcul d’itinéraire comme un problème sur un graphe.</td>
</tr>
<tr class="odd">
<td>Confidentialité</td>
<td>Régler les paramètres de confidentialité d’un téléphone pour partager ou non sa position.</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div>

</div>
<div class="intro quarto-layout-panel" data-layout-ncol="2">
<div class="quarto-layout-row">
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<p>La cartographie est essentielle pour beaucoup d’activités : agriculture, urbanisme, transports, loisirs, etc. Elle a été révolutionnée par l’arrivée des cartes numériques accessibles depuis les ordinateurs, tablettes et téléphones, bien plus souples à l’usage que les cartes papier.</p>
</div>
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><picture>
			  <source type="image/webp" srcset="/img/nbYHm3TNxD-300.webp 300w, /img/nbYHm3TNxD-600.webp 600w, /img/nbYHm3TNxD-1195.webp 1195w" sizes="100vw">
  <source type="image/png" srcset="/img/nbYHm3TNxD-300.png 300w, /img/nbYHm3TNxD-600.png 600w, /img/nbYHm3TNxD-1195.png 1195w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/nbYHm3TNxD-300.webp" width="1195" height="722" alt="" loading="lazy" decoding="async">
			</picture>
</p>
<figcaption>Image d’une carte interactive des stations de vélo bleu à Nice</figcaption>
</figure>
</div>
</div>
</div>
</div>
<div class="appli">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-2-contents" aria-controls="callout-2" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Application
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-2" class="callout-2-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="appli">
<p><a href="https://lienmini.fr/3389-402">Évaluation diagnostique PP78-79</a>.</p>
</div>
</div>
</div>
</div>
</div>
<section id="le-fonctionnement-de-la-géolocalisation" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="le-fonctionnement-de-la-géolocalisation"><span class="header-section-number">1</span> Le fonctionnement de la géolocalisation</h2>
<p></p><div class="yt-embend"><div><iframe width="560" height="315" src="https://yewtu.be/embed/e79tSIpLiDk" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe><p><a href="https://www.youtube.com/watch?v=e79tSIpLiDk">Vidéo</a> servie sans cookie via <a href="https://yewtu.be/">yewtu.be</a></p></div></div><p></p>
<div class="appli">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-3-contents" aria-controls="callout-3" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Application
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-3" class="callout-3-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="appli">
<p>Faire l’activité 2 P82-83 du <a href="https://www.editions-delagrave.fr/livre/9782206103389-sciences-numeriques-et-technologie-snt-2de-2019-manuel-eleve">manuel de Delagrave</a> sur le fonctionnement de la géolocalisation.</p>
</div>
</div>
</div>
</div>
</div>
<div class="prop">
<p>La géolocalisation par satellite nécessite qu’il y en ait toujours au moins quatre satellites « visibles » par le terminal équipé d’une puce de géolocalisation(GPS/Galiléo).</p>
<p></p><figure class="wikimage figure"><picture>
			  <source type="image/webp" srcset="/img/k9l8DYsYhe-240.webp 240w" sizes="100vw">
  <source type="image/gif" srcset="/img/k9l8DYsYhe-240.gif 240w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/k9l8DYsYhe-240.webp" width="240" height="192" alt="la géolocalisation nécessite l'utilisation de plusieurs satellites pour déterminer la position d'un objet." loading="lazy" decoding="async">
			</picture>
<figcaption id="caption">la géolocalisation nécessite l'utilisation de plusieurs satellites pour déterminer la position d'un objet.</figcaption><figcaption id="credit">&nbsp;Public domain&nbsp;<a id="image-description" href="//commons.wikimedia.org/wiki/File:ConstellationGPS.gif">via Wikimedia Commons</a></figcaption></figure><p></p>
</div>
<dl>
<dt>
Principe de trilatération
</dt>
<dd>
<div>
<p>Les coordonnées GPS sont déterminées en mesurant avec une grande précision les <strong>distances</strong> entre le terminal et <em>trois satellites</em>.</p>
</div>
</dd>
</dl>
<p></p><figure class="wikimage figure"><picture>
			  <source type="image/webp" srcset="/img/D126mxzaWM-300.webp 300w, /img/D126mxzaWM-600.webp 600w, /img/D126mxzaWM-1280.webp 1280w" sizes="100vw">
  <source type="image/jpeg" srcset="/img/D126mxzaWM-300.jpeg 300w, /img/D126mxzaWM-600.jpeg 600w, /img/D126mxzaWM-1280.jpeg 1280w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/D126mxzaWM-300.webp" width="1280" height="910" alt="Deux cercles se coupent en deux points, il faut un troisième satellite pour déterminer lequel correspond à la position." loading="lazy" decoding="async">
			</picture>
<figcaption id="caption">Deux cercles se coupent en deux points, il faut un troisième satellite pour déterminer lequel correspond à la position.</figcaption><figcaption id="credit">©&nbsp;&nbsp;CC BY 4.0&nbsp;<a id="image-description" href="//commons.wikimedia.org/wiki/File:3D_Trilateration.jpg">via Wikimedia Commons</a></figcaption></figure><p></p>
<div class="appli">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-4-contents" aria-controls="callout-4" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Application
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-4" class="callout-4-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="appli">
<p>Un signal de satellite met 1 vingtième de seconde pour se propager du satellite au terminal. En déduire la distance qui sépare le satellite et le terminal sachant que la vitesse de la lumière est de 300 mille km/s.</p>
</div>
</div>
</div>
</div>
</div>
</section>
<section id="le-protocole-nmea" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="le-protocole-nmea"><span class="header-section-number">2</span> Le protocole NMEA</h2>
<p>Les informations de géolocalisation peuvent être regroupées au sein d’une trame afin d’être échangées avec d’autres appareils(Maritimes dans le cas de la NMEA).</p>
<div class="prop">
<p>Une trame NMEA commence par <code>$</code> et les informations de géolocalisation sont séparées par des virgules dans l’ordre suivant:</p>
<ol type="1">
<li>Type de trame</li>
<li>Heure d’envoi de la trame au format <code>HHMMSS.SSS</code> (064036.289 -&gt; 06h40min36s289)</li>
<li>Latitude au format degré minute <code>ddmm.mmmmm</code></li>
<li>Hémisphère N/S</li>
<li>Longitude au format degré minute <code>ddmm.mmmmm</code></li>
<li>Hémisphère E/W</li>
<li>…</li>
<li>Nombre de satellites utilisés</li>
<li>Précision horizontale.</li>
<li>Altitude</li>
<li>…</li>
</ol>
<p>Le format degré minute utilisé peut être converti comme ceci <code>2503.6319 = 25° 03.6319'</code></p>
<p>qui se lit «25 degrés et 03,6319 minute » avec une minute = 1/60 ° soit:</p>
<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>25</mn><mo>+</mo><mn>3</mn><mo>,</mo><mn>6319</mn><mi>/</mi><mn>60</mn><mi>°</mi><mo>=</mo><mn>25</mn><mo>,</mo><mn>06053</mn><mi>°</mi></mrow><annotation encoding="application/x-tex">
25 + 3,6319/60 ° = 25,06053°
</annotation></semantics></math></p>
</div>
<div class="appli">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-5-contents" aria-controls="callout-5" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Application
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-5" class="callout-5-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="appli">
<ol type="1">
<li><p>Donner la coordonnée géographique(longitude, latitude, altitude) ainsi que le nombre de satellites et la précision correspondant à ces trames.</p>
<pre><code>$GPGGA,064036.289,4851.4934,N,0217.6563,E,1,4,3.2,61.5,M,,,,0000*0E

$GPGGA,092751.000,4041.3544,N,7402.6724,W,1,8,1.0,4.5,M,55.3,M,,*75</code></pre></li>
<li><p>Visualiser ces coordonnées sur OpenStreetMap en ajustant l’ancre de l’URL suivante:</p>
<p><a href="https://www.openstreetmap.org/export#map=17/43.69864/7.24820" class="uri">https://www.openstreetmap.org/export#map=17/43.69864/7.24820</a></p>
<ul>
<li><code>17</code> correspond au facteur de zoom de la carte.</li>
<li><code>43.69864</code> la latitude (négatif si Sud).</li>
<li><code>7.24820</code> la longitude (négatif sur ouest)</li>
</ul></li>
</ol>
<!--

1e: Tour Eiffel altitude 61.5m: https://www.openstreetmap.org/export#map=18/48.85822/2.29427
2e: statue de la liberté altitude 4.5m: https://www.openstreetmap.org/export#map=17/40.68924/-74.04454

-->
</div>
</div>
</div>
</div>
</div>
</section>
<section id="calculs-ditinéraires-et-graphes" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="calculs-ditinéraires-et-graphes"><span class="header-section-number">3</span> Calculs d’itinéraires et graphes</h2>
<p>Pour calculer un itinéraire entre deux villes, on modélise le problème sous forme de <em>graphe</em>.</p>
<dl>
<dt>
graphe
</dt>
<dd>
<div>
<p>Un graphe est une représentation abstraite de liens appelés <em>arêtes</em> entre des objets appelés <em>sommets</em>.</p>
</div>
</dd>
</dl>
<div class="example">
<p>Prenons l’exemple du réseau routier du sud-est.</p>
<table>
<tbody><tr>
<th>
<iframe height="600px" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" sandbox="allow-forms allow-scripts allow-same-origin" src="https://www.geoportail.gouv.fr/embed/visu.html?c=5.372373895720115,44.64181268159601&amp;z=7&amp;l0=ORTHOIMAGERY.ORTHOPHOTOS::GEOPORTAIL:OGC:WMTS(1)&amp;l1=GEOGRAPHICALGRIDSYSTEMS.PLANIGNV2::GEOPORTAIL:OGC:WMTS(1)&amp;l2=Voiture$OGC:OPENLS;Itineraire-1648030903323(0.9)&amp;permalink=yes" allowfullscreen="">
</iframe>
</th>
<th>
<p>On peut le représenter sous forme de graphe de distance comme ceci:</p>
<!-- graph {
    label="Données issues de geoportail avec  l'itinéraire le plus court";
    Lyon -- Grenoble[label="106 km"];
    Lyon -- Aix[label="292 km"];
    Grenoble -- Nice[label="293 km"]
    Grenoble -- Aix[label="239 km"];
    Aix -- Marseille[label="30 km"];
    Aix -- Nice[label="174 km"];

} -->
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="https://www.lyceum.fr/2gt/snt/images/reseau-routier-sud-est.svg" class="img-fluid figure-img"></p>
<figcaption>Graphe du réseau routier du sud-est</figcaption>
</figure>
</div>
</th>
</tr>
</tbody></table>
</div>
<div class="appli">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-6-contents" aria-controls="callout-6" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Application
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-6" class="callout-6-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="appli">
<p>En utilisant le graphe ci-dessus, répondre aux questions suivantes.</p>
<ol type="1">
<li>Donner tous les chemins possibles permettant d’aller de Nice à Lyon.</li>
<li>Calculer leurs distances et en déduire quelle est la route la plus courte.</li>
</ol>
</div>
</div>
</div>
</div>
</div>


</section>

 ]]></description>
  <category>2SNT</category>
  <guid>https://www.lyceum.fr/2gt/snt/4-localisation-cartographie-et-mobilite/</guid>
  <pubDate>Wed, 31 Jul 2024 15:15:56 GMT</pubDate>
</item>
<item>
  <title>Partie 5: La photographie numérique</title>
  <link>https://www.lyceum.fr/2gt/snt/5-la-photographie-numerique/</link>
  <description><![CDATA[ 




<div class="programme">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-1-contents" aria-controls="callout-1" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Programme
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-1" class="callout-1-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="programme">
<table class="table table-bordered table-hover caption-top">
<thead class="table-warning">
<tr class="header">
<th>Contenus</th>
<th>Capacités attendues</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Photosites, pixels, résolution(du capteur, de l’image), profondeur de couleur.</td>
<td>Distinguer les photosites du capteur et les pixels de l’image en comparant les résolutions du capteur et de l’image selon les réglages de l’appareil.</td>
</tr>
<tr class="even">
<td>Métadonnées EXIF</td>
<td>Retrouver les métadonnées d’une photographie.</td>
</tr>
<tr class="odd">
<td>Traitement d’image</td>
<td>Traiter par programme une image pour la transformer en agissant sur les trois composantes de ses pixels.</td>
</tr>
<tr class="even">
<td>Rôle des algorithmes dans les appareils photo numériques</td>
<td>Expliciter des algorithmes associés à la prise de vue. Identifier les étapes de la construction de l’image finale.</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<p></p><div class="yt-embend"><div><iframe width="560" height="315" src="https://yewtu.be/embed/UnNPNc-F9ks" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe><p><a href="https://www.youtube.com/watch?v=UnNPNc-F9ks">Vidéo</a> servie sans cookie via <a href="https://yewtu.be/">yewtu.be</a></p></div></div><p></p>
<div class="appli">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-2-contents" aria-controls="callout-2" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Application
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-2" class="callout-2-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="appli">
<p>Faire l’<a href="https://lienmini.fr/3389-502">évaluation diagnostique</a> sur les images numériques PP102-103 du manuel Delagrave.</p>
</div>
</div>
</div>
</div>
</div>
<section id="les-images-numériques" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="les-images-numériques"><span class="header-section-number">1</span> Les images numériques</h2>
<p>Il existe deux principaux types d’images numériques:</p>
<ul>
<li>Les images <em>matricielles</em> dans lesquelles l’image est décrite par une suite de pixels colorées: les formats <code>jpg</code>, <code>png</code>, <code>gif</code>, <code>webp</code>, <code>avif</code>…</li>
<li>Les images <em>vectorielles</em> dans lesquelles l’image est décrite par les formes contenues dans l’image: le format <code>svg</code> principalement.</li>
</ul>
<p></p><figure class="wikimage figure"><picture>
			  <source type="image/webp" srcset="/img/bGZtlhxgUw-300.webp 300w, /img/bGZtlhxgUw-915.svg 915w" sizes="100vw">
  <source type="image/svg+xml" srcset="/img/bGZtlhxgUw-915.svg 915w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/bGZtlhxgUw-300.webp" width="915" height="585" alt="Les images photographiques que nous étudions dans ce chapitre sont matricielles, elles souffrent des effets de pixelisation lors des zooms. Au contraire les images vectorielles peuvent être affichées à n'importe quel niveau de zoom, on les utilise principalement pour les schémas et graphiques." loading="lazy" decoding="async">
			</picture>
<figcaption id="caption">Les images photographiques que nous étudions dans ce chapitre sont matricielles, elles souffrent des effets de pixelisation lors des zooms. Au contraire les images vectorielles peuvent être affichées à n'importe quel niveau de zoom, on les utilise principalement pour les schémas et graphiques.</figcaption><figcaption id="credit">©&nbsp;&nbsp;CC BY-SA 2.5&nbsp;<a id="image-description" href="//commons.wikimedia.org/wiki/File:Bitmap_VS_SVG.svg">via Wikimedia Commons</a></figcaption></figure><p></p>
</section>
<section id="définition-dune-image" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="définition-dune-image"><span class="header-section-number">2</span> Définition d’une image</h2>
<dl>
<dt>
Définition d’une image
</dt>
<dd>
<div>
<p>La définition d’une image matricielle est le nombre de pixels de l’image.</p>
</div>
</dd>
</dl>
<div class="example">
<ul>
<li>Format Full HD : 1 920 × 1 080</li>
<li>Format 4k: 3 840 × 2 160</li>
</ul>
</div>
<div class="plus">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-3-contents" aria-controls="callout-3" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
En plus
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-3" class="callout-3-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="plus">
<p>À ne pas confondre avec la résolution de l’image qui s’exprime en pixels par pouce qui mesure la qualité d’une image affichée ou imprimée.</p>
</div>
</div>
</div>
</div>
</div>
<div class="appli">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-4-contents" aria-controls="callout-4" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Application
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-4" class="callout-4-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="appli">
<p>Calculer la définition des images Full HD et 4K <em>sans calculatrice</em>.</p>
</div>
</div>
</div>
</div>
</div>
</section>
<section id="codage-des-couleurs" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="codage-des-couleurs"><span class="header-section-number">3</span> Codage des couleurs</h2>
<p>En informatique, il existe différentes façons de coder les couleurs, pour s’en rendre, il suffit d’ouvrir un sélecteur de couleur sur votre ordinateur pour s’en rendre compte.</p>
<p><input type="color"></p>
<dl>
<dt>
Système RVB
</dt>
<dd>
<div>
<p>Un des systèmes les plus courants de codage des couleurs en informatique est le système RVB (pour Rouge Vert Bleu) qui code les intensités des composantes rouge, verte et bleue d’un pixel en synthèse additive des couleurs.</p>
</div>
</dd>
</dl>
<div>

</div>
<div class="quarto-layout-panel" data-layout-ncol="2">
<div class="quarto-layout-row">
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<p></p><figure class="wikimage figure"><img src="https://upload.wikimedia.org/wikipedia/commons/e/e0/Synthese%2B.svg" class="img-fluid figure-img" alt="Synthèse additive des couleurs."><figcaption id="caption">Synthèse additive des couleurs.</figcaption><figcaption id="credit">©&nbsp;&nbsp;CC BY-SA 3.0&nbsp;<a id="image-description" href="//commons.wikimedia.org/wiki/File:Synthese%2B.svg">via Wikimedia Commons</a></figcaption></figure><p></p>
</div>
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<p></p><figure class="wikimage figure"><picture>
			  <source type="image/webp" srcset="/img/cPmNRsr3EM-300.webp 300w, /img/cPmNRsr3EM-600.webp 600w, /img/cPmNRsr3EM-1100.webp 1100w" sizes="100vw">
  <source type="image/jpeg" srcset="/img/cPmNRsr3EM-300.jpeg 300w, /img/cPmNRsr3EM-600.jpeg 600w, /img/cPmNRsr3EM-1100.jpeg 1100w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/cPmNRsr3EM-300.webp" width="1100" height="1100" alt="Dispositions possibles des mosaïques de lumières colorées dans un écran." loading="lazy" decoding="async">
			</picture>
<figcaption id="caption">Dispositions possibles des mosaïques de lumières colorées dans un écran.</figcaption><figcaption id="credit">©&nbsp;&nbsp;CC BY-SA 3.0&nbsp;<a id="image-description" href="//commons.wikimedia.org/wiki/File:Pixel_geometry_02_Pengo.jpg">via Wikimedia Commons</a></figcaption></figure><p></p>
</div>
</div>
</div>
<div class="plus">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-5-contents" aria-controls="callout-5" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
En plus: Références des systèmes de couleurs sur MDN
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-5" class="callout-5-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="plus" data-titre="Références des systèmes de couleurs sur MDN">
<p>Encore une fois, consultez cette page sur l’excellent site MDN pour en savoir plus.</p>
<p><a href="https://developer.mozilla.org/fr/docs/Web/CSS/color_value" class="uri">https://developer.mozilla.org/fr/docs/Web/CSS/color_value</a></p>
</div>
</div>
</div>
</div>
</div>
<dl>
<dt>
Profondeur des couleurs
</dt>
<dd>
<div>
<p>La profondeur de couleurs est le nombre de bits utilisés pour représenter la couleur d’un pixel dans une image.</p>
</div>
</dd>
</dl>
<div class="example">
<ul>
<li><strong>1 bit</strong>: 0 ou 1 pour Noir et Blanc.</li>
<li><strong>1 octet</strong>: <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mn>2</mn><mn>8</mn></msup><mo>=</mo><mn>256</mn></mrow><annotation encoding="application/x-tex">2^8=256</annotation></semantics></math> niveaux pour les images en niveau de gris.</li>
<li><strong>3 octets</strong>: 1 octet pour chaque composante rouge, verte et bleue pour les images en <code>jpeg</code>. (voir cette <a href="https://apps.lyceum.fr/css-colors/">animation</a>)</li>
<li><strong>6 octets</strong>: 2 octets pour chaque composante rouge, verte et bleue pour les images en <code>tiff</code> ou <code>raw</code>.</li>
</ul>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><picture>
			  <source type="image/webp" srcset="/img/4wvUHtBOEe-300.webp 300w, /img/4wvUHtBOEe-600.webp 600w, /img/4wvUHtBOEe-1518.webp 1518w" sizes="100vw">
  <source type="image/png" srcset="/img/4wvUHtBOEe-300.png 300w, /img/4wvUHtBOEe-600.png 600w, /img/4wvUHtBOEe-1518.png 1518w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/4wvUHtBOEe-300.webp" width="1518" height="327" alt="" loading="lazy" decoding="async">
			</picture>
</p>
<figcaption>Profondeur des couleurs source Wikipédia</figcaption>
</figure>
</div>
<p><a href="https://en.wikipedia.org/wiki/Color_depth" class="cite-source">Wikipédia</a></p>
</div>
<div class="appli">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-6-contents" aria-controls="callout-6" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Application
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-6" class="callout-6-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="appli">
<p>En utilisant cette <a href="https://apps.lyceum.fr/css-colors/">animation</a>. Répondre aux questions suivantes.</p>
<ol type="1">
<li><p>Combien de niveaux de couleurs peuvent être codées sur 3 octets?</p></li>
<li><p>En notant (R, G, B) les couleurs sur 3 octets, expliquer comment obtenir:</p>
<ul>
<li>du rouge: <code>(255, 0, 0)</code></li>
<li>du vert:</li>
<li>du bleu:</li>
<li>du jaune:</li>
<li>du magenta:</li>
<li>du cyan:</li>
<li>du noir:</li>
<li>du blanc:</li>
</ul></li>
</ol>
</div>
</div>
</div>
</div>
</div>
</section>
<section id="les-métadonnées" class="level2" data-number="4">
<h2 data-number="4" class="anchored" data-anchor-id="les-métadonnées"><span class="header-section-number">4</span> Les métadonnées</h2>
<dl>
<dt>
Métadonnées
</dt>
<dd>
<div>
<p>En plus des données concernant les couleurs des pixels de l’image, les photographies numériques contiennent de nombreuses informations concernant la prise de vue:</p>
</div>
</dd>
</dl>
<ul>
<li>la date</li>
<li>l’heure</li>
<li>l’appareil utilisé pour prendre la photo</li>
<li>les paramètres de la prise de vue(flash, vitesse…)</li>
<li>la géolocalisation si disponible</li>
</ul>
<p>Un des formats de métadonnées couramment utilisé dans les photos est le format <code>EXIF</code>.</p>
<div class="appli">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-7-contents" aria-controls="callout-7" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Application
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-7" class="callout-7-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="appli">
<p>Citer au moins cinq métadonnées présentes dans la photo présentée sur cette page:</p>
<p><a href="https://apps.lyceum.fr/photo-metadata/" class="uri">https://apps.lyceum.fr/photo-metadata/</a></p>
</div>
</div>
</div>
</div>
</div>


</section>

 ]]></description>
  <category>2SNT</category>
  <guid>https://www.lyceum.fr/2gt/snt/5-la-photographie-numerique/</guid>
  <pubDate>Wed, 31 Jul 2024 15:15:56 GMT</pubDate>
</item>
<item>
  <title>Partie 6: Les réseaux sociaux</title>
  <link>https://www.lyceum.fr/2gt/snt/6-les-reseaux-sociaux/</link>
  <description><![CDATA[ 




<div class="programme">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-1-contents" aria-controls="callout-1" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Programme
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-1" class="callout-1-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="programme">
<table class="table table-bordered table-hover caption-top">
<thead class="table-warning">
<tr class="header">
<th colspan="2">Contenus | Capacités attendues |</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td colspan="2">Identité numérique, | Connaître les principaux concepts liés à l’usage des réseaux | e-réputation, identification, | sociaux. | authentification | |</td>
</tr>
<tr class="even">
<td colspan="2">Réseaux sociaux existants | Distinguer plusieurs réseaux sociaux selon leurs | | caractéristiques, y compris un ordre de grandeur de leurs | | nombres d’abonnés. | | | | Paramétrer des abonnements pour assurer la confidentialité | | de données personnelles. |</td>
</tr>
<tr class="odd">
<td colspan="2">Modèle économique des réseaux sociaux | Identifier les sources de revenus des entreprises de | | réseautage social. |</td>
</tr>
<tr class="even">
<td colspan="2">Rayon, diamètre et centre | Déterminer ces caractéristiques sur des graphes simples. | d’un graphe | | | | Notion de « petit monde » | Décrire comment l’information présentée par les réseaux | | sociaux est conditionnée par le choix préalable de ses amis. | Expérience de Milgram | |</td>
</tr>
<tr class="odd">
<td colspan="2"><div class="line-block">Connaître les dispositions de l’article 222-33-2-2 du code |</div>
<p>Cyberviolence | pénal. | | | | Connaître les différentes formes de cyberviolence | | (harcèlement, discrimination, sexting…) et les ressources | | disponibles pour lutter contre la cyberviolence. | | |</p></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<blockquote class="blockquote">
<p>Les réseaux sociaux sont des applications basées sur les technologies du <em>Web</em> qui offrent un service de mise en relation d’internautes pour ainsi développer des communautés d’intérêts.</p>
</blockquote>
<p></p><div class="yt-embend"><div><iframe width="560" height="315" src="https://yewtu.be/embed/aA_NZdasOg4" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe><p><a href="https://www.youtube.com/watch?v=aA_NZdasOg4">Vidéo</a> servie sans cookie via <a href="https://yewtu.be/">yewtu.be</a></p></div></div><p></p>
<div class="appli">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-2-contents" aria-controls="callout-2" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Application
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-2" class="callout-2-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="appli">
<p><a href="https://lienmini.fr/3389-602">Évaluation diagnostique PP126-127</a>.</p>
</div>
</div>
</div>
</div>
</div>
<section id="identité-numérique" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="identité-numérique"><span class="header-section-number">1</span> Identité numérique</h2>
<p>Lorsqu’on utilise un réseau social, celui-ci nous demande de créer un compte pour nous <strong>identifier</strong>.</p>
<p>À chaque interaction avec le réseau, nous devons nous <strong>authentifier</strong> grâce à un mot de passe par exemple.</p>
<p>Vous obtenez alors une identité numérique qui permet d’associer une personne physique ou morale avec un compte de réseau social.</p>
<div class="examples">
<ul>
<li><a href="https://twitter.com/potus"><span class="citation" data-cites="POTUS">@POTUS</span></a>: le président des États-Unis.</li>
<li><a href="https://twitter.com/taylorswift13"><span class="citation" data-cites="taylorswift13">@taylorswift13</span></a>: …</li>
<li><a href="https://twitter.com/cristiano"><span class="citation" data-cites="Cristiano">@Cristiano</span></a>: …</li>
</ul>
<p>Voir cet <a href="https://en.wikipedia.org/wiki/List_of_most-followed_Twitter_accounts">article</a> pour une liste à jour des personnes les plus suivies sur Twitter.</p>
</div>
<p>Lorsque nous sommes identifiés, nous laissons des traces sur le web qui vont façonner notre <em>cyber-réputation</em>.</p>
<dl>
<dt>
Cyber-réputation
</dt>
<dd>
<div>
<p>Réputation d’une entité (personne physique ou morale, marque, produit) en fonction des traces la concernant, trouvables sur le Web.</p>
</div>
</dd>
</dl>
</section>
<section id="graphe-social" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="graphe-social"><span class="header-section-number">2</span> Graphe social</h2>
<p></p><figure class="wikimage figure"><picture>
			  <source type="image/webp" srcset="/img/iqeybAxWTx-300.webp 300w, /img/iqeybAxWTx-600.webp 600w, /img/iqeybAxWTx-960.webp 960w" sizes="100vw">
  <source type="image/gif" srcset="/img/iqeybAxWTx-300.gif 300w, /img/iqeybAxWTx-600.gif 600w, /img/iqeybAxWTx-960.gif 960w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/iqeybAxWTx-300.webp" width="960" height="720" alt="Pour représenter les liens entre les personnes présentes sur un réseau social, on utilise couramment des graphes." loading="lazy" decoding="async">
			</picture>
<figcaption id="caption">Pour représenter les liens entre les personnes présentes sur un réseau social, on utilise couramment des graphes.</figcaption><figcaption id="credit">©&nbsp;&nbsp;CC BY-SA 3.0&nbsp;<a id="image-description" href="//commons.wikimedia.org/wiki/File:Social_graph.gif">via Wikimedia Commons</a></figcaption></figure><p></p>
<section id="vocabulaire" class="level3" data-number="2.1">
<h3 data-number="2.1" class="anchored" data-anchor-id="vocabulaire"><span class="header-section-number">2.1</span> Vocabulaire</h3>
<p>Dans un graphe social, on représente:</p>
<ul>
<li>Les personnes par des ronds: les <em>sommets</em>,</li>
<li>Leurs relations par des traits: les <em>arêtes</em>.</li>
</ul>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><picture>
			  <source type="image/webp" srcset="/img/yih4SQjc5U-300.webp 300w, /img/yih4SQjc5U-600.webp 600w, /img/yih4SQjc5U-864.webp 864w" sizes="100vw">
  <source type="image/svg+xml" srcset="/img/yih4SQjc5U-864.svg 864w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/yih4SQjc5U-300.webp" width="864" height="648" alt="" loading="lazy" decoding="async">
			</picture>
</p>
<figcaption>Exemple de graphe social</figcaption>
</figure>
</div>
</section>
<section id="représentations-des-liens-entre-personnes" class="level3" data-number="2.2">
<h3 data-number="2.2" class="anchored" data-anchor-id="représentations-des-liens-entre-personnes"><span class="header-section-number">2.2</span> Représentations des liens entre personnes</h3>
<p>Un graphe peut-être décrit par un tableau dans lequel on va porter les relations d’amitié entre les personnes.</p>
<table class="table table-bordered table-hover caption-top">
<tbody>
<tr class="odd">
<td><div class="line-block">Jules</div></td>
<td colspan="2">Hugo | Ambre</td>
<td colspan="3">Raphaël | Rose | Chloé</td>
<td></td>
</tr>
<tr class="even">
<td>Jules |</td>
<td><div class="line-block">| |</div></td>
<td colspan="5"><div class="line-block"></div></td>
</tr>
<tr class="odd">
<td colspan="7">Hugo | | | | | | |</td>
</tr>
<tr class="even">
<td>Ambre |</td>
<td><div class="line-block">| |</div></td>
<td colspan="5"><div class="line-block"></div></td>
</tr>
<tr class="odd">
<td>Raphaël</td>
<td><div class="line-block">| |</div></td>
<td colspan="5"><div class="line-block">|</div></td>
</tr>
<tr class="even">
<td colspan="7">Rose | | | | | | |</td>
</tr>
<tr class="odd">
<td>Chloé |</td>
<td><div class="line-block">| |</div></td>
<td colspan="5"><div class="line-block"></div></td>
</tr>
</tbody>
</table>
</section>
<section id="rayon-diamètre-et-centre-dun-graphe" class="level3" data-number="2.3">
<h3 data-number="2.3" class="anchored" data-anchor-id="rayon-diamètre-et-centre-dun-graphe"><span class="header-section-number">2.3</span> Rayon, diamètre et centre d’un graphe</h3>
<p>Pour mesurer les caractéristiques d’un graphe, on mesure les distances entre les nœuds.</p>
<p>La <strong>distance</strong> entre deux sommets dans un graphe est définie par la longueur d’un plus court chemin entre ces deux sommets.</p>
<p>Il peut être commode de remplir un tableau de distances pour caractériser le graphe.</p>
<table class="table table-bordered table-hover caption-top">
<tbody>
<tr class="odd">
<td>distance</td>
<td>Jules</td>
<td>Hugo</td>
<td>Ambre</td>
<td>Raphaël</td>
<td>Rose</td>
<td>Chloé</td>
</tr>
<tr class="even">
<td colspan="7">Jules | 0 | | | | | |</td>
</tr>
<tr class="odd">
<td colspan="2">Hugo | | 0 | | |</td>
<td colspan="5"><div class="line-block"></div></td>
</tr>
<tr class="even">
<td colspan="7">Ambre | | | 0 | | | |</td>
</tr>
<tr class="odd">
<td colspan="7">Raphaël | | | | 0 | | |</td>
</tr>
<tr class="even">
<td>Rose | |</td>
<td><div class="line-block">| 0</div></td>
<td colspan="5"><div class="line-block"></div></td>
</tr>
<tr class="odd">
<td colspan="7">Chloé | | | | | | 0 |</td>
</tr>
</tbody>
</table>
<dl>
<dt>
Diamètre
</dt>
<dd>
<div>
<p>La <strong>plus grande distance</strong> possible qui puisse exister <em>entre deux de ses sommets</em>.</p>
</div>
</dd>
<dt>
Rayon
</dt>
<dd>
<div>
<p>La <strong>plus petite distance</strong> à laquelle puisse se trouver un sommet de <em>tous les autres</em>.</p>
</div>
</dd>
<dt>
Centre
</dt>
<dd>
<div>
<p>Le ou les <strong>nœuds</strong> distants d’au maximum un <strong>rayon</strong> des autres.</p>
</div>
</dd>
</dl>
<p>Pour déterminer ces caractéristiques on mesure la distance maximale de chaque nœud aux autres (on parle d’excentricité).</p>
<table class="table table-bordered table-hover caption-top">
<tbody>
<tr class="odd">
<td colspan="7">distance | Jules | Hugo | Ambre | Raphaël | Rose | Chloé |</td>
</tr>
<tr class="even">
<td>distance | | | maximale | | | (excentricité)</td>
<td colspan="6"><div class="line-block">| |<br>
| |<br>
| | | | |</div></td>
</tr>
</tbody>
</table>
<div class="appli">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-3-contents" aria-controls="callout-3" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Application
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-3" class="callout-3-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="appli">
<p>Déterminer le rayon, le diamètre et le centre du graphe précédent.</p>
</div>
</div>
</div>
</div>
</div>
</section>
</section>
<section id="les-petits-mondes" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="les-petits-mondes"><span class="header-section-number">3</span> Les petits mondes</h2>
<p>Sur les réseaux sociaux actuels, <em>3,5 personnes en moyenne</em> séparent deux personnes choisies au hasard. On est donc effectivement <em>connecté au monde entier</em>.</p>
<p></p><figure class="wikimage figure"><picture>
			  <source type="image/webp" srcset="/img/7pF2VTV53V-300.webp 300w, /img/7pF2VTV53V-600.webp 600w, /img/7pF2VTV53V-682.webp 682w" sizes="100vw">
  <source type="image/png" srcset="/img/7pF2VTV53V-300.png 300w, /img/7pF2VTV53V-600.png 600w, /img/7pF2VTV53V-682.png 682w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/7pF2VTV53V-300.webp" width="682" height="801" alt="Des petits mondes qui communiquent peu entre eux!" loading="lazy" decoding="async">
			</picture>
<figcaption id="caption">Des petits mondes qui communiquent peu entre eux!</figcaption><figcaption id="credit">©&nbsp;&nbsp;CC BY 3.0&nbsp;<a id="image-description" href="//commons.wikimedia.org/wiki/File:Sna_large.png">via Wikimedia Commons</a></figcaption></figure><p></p>
<p>Cependant, de par la conception des <em>algorithmes de recommandations</em>, ces réseaux nous présentent souvent des contenus de personnes qui nous ressemblent et qui pensent comme nous ce qui « étonnamment » nous empêche d’être au contact des autres et de leurs différences. <strong>On reste dans notre petit monde</strong>.</p>


</section>

 ]]></description>
  <category>2SNT</category>
  <guid>https://www.lyceum.fr/2gt/snt/6-les-reseaux-sociaux/</guid>
  <pubDate>Wed, 31 Jul 2024 15:15:56 GMT</pubDate>
</item>
<item>
  <title>Partie 7: Informatique embarquée</title>
  <link>https://www.lyceum.fr/2gt/snt/7-informatique-embarquee/</link>
  <description><![CDATA[ 




<div class="programme">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-1-contents" aria-controls="callout-1" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Programme
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-1" class="callout-1-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="programme">
<table class="table table-bordered table-hover caption-top">
<thead class="table-warning">
<tr class="header">
<th>Contenus</th>
<th>Capacités attendues</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Systèmes informatiques embarqués</td>
<td>Identifier des algorithmes de contrôle des comportements physiques à travers les données des capteurs, l’IHM et les actions des actionneurs dans des systèmes courants.</td>
</tr>
<tr class="even">
<td>Interface homme-machine (IHM)</td>
<td>Réaliser une IHM simple d’un objet connecté.</td>
</tr>
<tr class="odd">
<td>Commande d’un actionneur, acquisition des données d’un capteur</td>
<td>Écrire des programmes simples d’acquisition de données ou de commande d’un actionneur.</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div class="intro">
<p>Après avoir transformé les chaînes de montage des automobiles et les avions dans les années quatre-vingt-dix, l’informatique intervient maintenant dans des domaines toujours plus nombreux : automobile, réseau ferroviaire et transports urbains, domotique, robotique, loisirs, etc., conduisant à un nouvel internet des objets.</p>
</div>
<div class="appli">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-2-contents" aria-controls="callout-2" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Application
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-2" class="callout-2-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="appli">
<p><a href="https://lienmini.fr/3389-702">Évaluation diagnostique</a> PP150-151.</p>
</div>
</div>
</div>
</div>
</div>
<section id="interface-homme-machine" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="interface-homme-machine"><span class="header-section-number">1</span> Interface Homme-Machine</h2>
<p>: Interface Homme-Machine (IHM)</p>
<p>Moyens (matériels ou logiciels) prévus pour la communication entre un être humain et une machine.</p>
<div class="examples">
<ul>
<li>clavier</li>
<li>souris</li>
<li><hr></li>
<li><hr></li>
<li><hr></li>
</ul>
</div>
</section>
<section id="les-objets-connectés" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="les-objets-connectés"><span class="header-section-number">2</span> Les objets connectés</h2>
<p>Les objets informatisés avaient autrefois des <strong>interfaces homme-machine (IHM)</strong> dédiées, souvent dépendantes d’une liaison filaire directe. Mais les technologies du <em>Web</em> intégrées au téléphone portable permettent maintenant d’y rassembler les interfaces des objets du quotidien, ce qui en simplifie et uniformise l’usage. Les objets informatisés deviennent ainsi connectés.</p>
<p>On estime à 50 milliards le nombre d’objets connectés en 2020.</p>


</section>

 ]]></description>
  <category>2SNT</category>
  <guid>https://www.lyceum.fr/2gt/snt/7-informatique-embarquee/</guid>
  <pubDate>Wed, 31 Jul 2024 15:15:56 GMT</pubDate>
</item>
<item>
  <title>Chapitre 1: Quelques dates marquantes de l’histoire de l’informatique</title>
  <link>https://www.lyceum.fr/1g/nsi/1-histoire-de-linformatique/1-quelques-dates-marquantes-de-lhistoire-de-linformatique/</link>
  <description><![CDATA[ 




<div class="programme">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-1-contents" aria-controls="callout-1" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Programme
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-1" class="callout-1-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="programme">
<table class="table table-bordered table-hover caption-top">
<thead class="table-warning">
<tr class="header">
<th>Contenus</th>
<th>Capacités attendues</th>
<th>Commentaires</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Événements clés de l’histoire de l’informatique</td>
<td>Situer dans le temps les principaux événements de l’histoire de l’informatique et leurs protagonistes.</td>
<td>Ces repères historiques seront construits au fur et à mesure de la présentation des concepts et techniques.</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<section id="comment-en-est-on-arrivé-là" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="comment-en-est-on-arrivé-là"><span class="header-section-number">1</span> Comment en est-on arrivé là?</h2>
<p>Nous sommes aujourd’hui entourés d’ordinateurs, de serveurs, de tablettes, et nous interagissons avec ces machines quotidiennement, mais comment cela a-t-il été possible?</p>
<p>Comme l’explique l’article <a href="https://fr.wikipedia.org/wiki/Informatique">Informatique</a> de Wikipédia, cela a été possible grâce à des avancées de nature <strong>théorique</strong>, mais aussi <strong>technologiques</strong>.</p>
<blockquote class="blockquote">
<p>Ces champs d’application (de l’informatique) peuvent être séparés en deux branches:</p>
<ul>
<li>l’une, de <strong>nature théorique</strong>, qui concerne la définition de concepts et modèles,</li>
<li>et l’autre, de <strong>nature pratique</strong>, qui s’intéresse aux techniques concrètes de mise en œuvre.</li>
</ul>
</blockquote>
</section>
<section id="sources" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="sources"><span class="header-section-number">2</span> Sources</h2>
<p>Les <em>domaines de l’informatique</em> sont nombreux: algorithmique, langages de programmation… Et l’informatique fait intervenir de nombreux <em>domaines connexes</em>: électronique, optique, ondes pour le stockage de données, leur échange sur des réseaux…</p>
<p>Voici quelques liens pour y voir plus clair:</p>
<ul>
<li><a href="http://archinfo01.hypotheses.org/770">Une histoire de l’informatique sur le site hypotheses.org</a></li>
<li><a href="http://www.histoire-informatique.org/">Histoire de l’informatique de Francois Guillier</a></li>
<li><a href="https://fr.wikipedia.org/wiki/Histoire_de_l%27informatique">Histoire de l’informatique sur Wikipedia</a></li>
<li><a href="https://fr.wikipedia.org/wiki/Histoire_des_ordinateurs">Histoire des ordinateurs</a></li>
<li><a href="https://fr.wikipedia.org/wiki/Chronologie_de_l%27informatique">Chronologie de l’informatique</a></li>
</ul>


</section>

 ]]></description>
  <category>1NSI</category>
  <guid>https://www.lyceum.fr/1g/nsi/1-histoire-de-linformatique/1-quelques-dates-marquantes-de-lhistoire-de-linformatique/</guid>
  <pubDate>Wed, 31 Jul 2024 15:15:56 GMT</pubDate>
</item>
<item>
  <title>Chapitre 2: Technologie et théorie</title>
  <link>https://www.lyceum.fr/1g/nsi/1-histoire-de-linformatique/2-technologie-et-theorie/</link>
  <description><![CDATA[ 




<div class="intro">
<p>Le développement de l’informatique a nécessité de nombreuses avancées dans des domaines variés tant <em>technologiques que théoriques</em>.</p>
</div>
<section id="aspects-technologiques" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="aspects-technologiques"><span class="header-section-number">1</span> Aspects technologiques</h2>
<section id="calculateurs-mécaniques" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="calculateurs-mécaniques"><span class="header-section-number">1.1</span> Calculateurs mécaniques</h3>
<p>En 1642, <em>Blaise Pascale</em> est le premier à avoir conçu une machine à calculer <strong>mécanique</strong>, capable d’effectuer les quatre opérations élémentaires sur les entiers: addition, soustraction, multiplication, division.</p>
<p></p><figure class="wikimage figure"><picture>
			  <source type="image/webp" srcset="/img/VDPTQw7bga-300.webp 300w, /img/VDPTQw7bga-600.webp 600w, /img/VDPTQw7bga-2042.webp 2042w" sizes="100vw">
  <source type="image/jpeg" srcset="/img/VDPTQw7bga-300.jpeg 300w, /img/VDPTQw7bga-600.jpeg 600w, /img/VDPTQw7bga-2042.jpeg 2042w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/VDPTQw7bga-300.webp" width="2042" height="1119" alt="La pascaline créée par Blaise Pascal en 1652." loading="lazy" decoding="async">
			</picture>
<figcaption id="caption">La pascaline créée par Blaise Pascal en 1652.</figcaption><figcaption id="credit">©&nbsp;David.Monniaux&nbsp;CC BY-SA 3.0&nbsp;<a id="image-description" href="//commons.wikimedia.org/wiki/File:Arts_et_Metiers_Pascaline_dsc03869.jpg">via Wikimedia Commons</a></figcaption></figure> <p></p>
</section>
<section id="calculateurs-électromécaniques" class="level3" data-number="1.2">
<h3 data-number="1.2" class="anchored" data-anchor-id="calculateurs-électromécaniques"><span class="header-section-number">1.2</span> Calculateurs électromécaniques</h3>
<p>Au début du XX<sup>e</sup> siècle, on commence à utiliser l’<strong>électricité</strong> pour réaliser des calculateurs.</p>
<p>D’abord des machines <strong>électromécaniques</strong> comme le <strong>Z3</strong> allemand achevé en 1941. On le dit électromécanique, car il utilisait des relais électromécaniques fonctionnant à une fréquence de 5 à 10 Hz.(Source <a href="https://fr.wikipedia.org/wiki/Zuse_3">Wikipedia</a>)</p>
<p></p><figure class="wikimage figure"><picture>
			  <source type="image/webp" srcset="/img/1Y3ynjzfRP-300.webp 300w, /img/1Y3ynjzfRP-600.webp 600w, /img/1Y3ynjzfRP-1600.webp 1600w" sizes="100vw">
  <source type="image/jpeg" srcset="/img/1Y3ynjzfRP-300.jpeg 300w, /img/1Y3ynjzfRP-600.jpeg 600w, /img/1Y3ynjzfRP-1600.jpeg 1600w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/1Y3ynjzfRP-300.webp" width="1600" height="1200" alt="Replica of the <a href=" https:="" en.wikipedia.org="" wiki="" z3_(computer)"="" title="en:Z3 (computer)">Zuse Z3 in the <a href="https://en.wikipedia.org/wiki/Deutsches_Museum" class="extiw" title="en:Deutsches Museum"><i>Deutsches Museum</i></a> in <a href="https://en.wikipedia.org/wiki/Munich" class="extiw" title="en:Munich">Munich</a>, <a href="https://en.wikipedia.org/wiki/Germany" class="extiw" title="en:Germany">Germany</a>"
					loading="lazy"
					decoding="async"&gt;
			</picture>
<figcaption id="caption"></figcaption><figcaption id="credit">©&nbsp;<a href="https://de.wikipedia.org/wiki/User:Venusianer" class="extiw" title="de:User:Venusianer">Venusianer</a>&nbsp;CC BY-SA 3.0&nbsp;<a id="image-description" href="//commons.wikimedia.org/wiki/File:Z3_Deutsches_Museum.JPG">via Wikimedia Commons</a></figcaption></figure><p></p>
<p>On remplace rapidement les relais électromécaniques par des tubes à vides comme dans l’<a href="https://fr.wikipedia.org/wiki/ENIAC">ENIAC</a>.</p>
<p></p><figure class="wikimage figure"><picture>
			  <source type="image/webp" srcset="/img/ps7RLqQ4jH-300.webp 300w, /img/ps7RLqQ4jH-600.webp 600w, /img/ps7RLqQ4jH-1239.webp 1239w" sizes="100vw">
  <source type="image/jpeg" srcset="/img/ps7RLqQ4jH-300.jpeg 300w, /img/ps7RLqQ4jH-600.jpeg 600w, /img/ps7RLqQ4jH-1239.jpeg 1239w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/ps7RLqQ4jH-300.webp" width="1239" height="1024" alt="" u.s.="" army="" photo",="" from="" m.="" weik,="" "the="" eniac="" story"="" a="" technician="" changes="" tube.="" caption="" reads="" "replacing="" bad="" tube="" meant="" checking="" among="" eniac's="" 19,000="" possibilities."="" center:="" glenn="" a.="" beck"="" loading="lazy" decoding="async">
			</picture>
<figcaption id="caption"></figcaption><figcaption id="credit">&nbsp;Public domain&nbsp;<a id="image-description" href="//commons.wikimedia.org/wiki/File:ENIAC-changing_a_tube.jpg">via Wikimedia Commons</a></figcaption></figure><p></p>
</section>
<section id="le-transistor-et-lavènement-de-lélectronique" class="level3" data-number="1.3">
<h3 data-number="1.3" class="anchored" data-anchor-id="le-transistor-et-lavènement-de-lélectronique"><span class="header-section-number">1.3</span> Le transistor et l’avènement de l’électronique</h3>
<p></p><figure class="wikimage figure"><picture>
			  <source type="image/webp" srcset="/img/RVKqvULtPL-300.webp 300w, /img/RVKqvULtPL-600.webp 600w, /img/RVKqvULtPL-4400.webp 4400w" sizes="100vw">
  <source type="image/jpeg" srcset="/img/RVKqvULtPL-300.jpeg 300w, /img/RVKqvULtPL-600.jpeg 600w, /img/RVKqvULtPL-4400.jpeg 4400w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/RVKqvULtPL-300.webp" width="4400" height="3480" alt="Le transistor est un composant à trois bornes." loading="lazy" decoding="async">
			</picture>
<figcaption id="caption">Le transistor est un composant à trois bornes.</figcaption><figcaption id="credit">©&nbsp;&nbsp;CC BY-SA 3.0&nbsp;<a id="image-description" href="//commons.wikimedia.org/wiki/File:Transistorer_(cropped).jpg">via Wikimedia Commons</a></figcaption></figure> C’est avec l’invention du transistor en 1947 que l’ère de l’électronique et de l’informatique va prendre son envol. Cette découverte vaudra à ses inventeurs américains William Shockley et Walter Brattain le prix Nobel de physique en 1956.<p></p>
<blockquote class="blockquote">
<p>Le transistor est considéré comme un énorme progrès face au tube électronique : beaucoup plus petit, plus léger et plus robuste, fonctionnant avec des tensions faibles, autorisant une alimentation par piles, il fonctionne presque instantanément une fois mis sous tension, contrairement aux tubes électroniques qui demandaient une dizaine de secondes de chauffage, généraient une consommation importante et nécessitaient une source de tension élevée (plusieurs centaines de volts). <a href="https://fr.wikipedia.org/wiki/Transistor#Historique" class="cite-source">Wikipedia</a></p>
</blockquote>
</section>
</section>
<section id="aspects-théoriques" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="aspects-théoriques"><span class="header-section-number">2</span> Aspects théoriques</h2>
<section id="la-machine-de-turing" class="level3" data-number="2.1">
<h3 data-number="2.1" class="anchored" data-anchor-id="la-machine-de-turing"><span class="header-section-number">2.1</span> La machine de Turing</h3>
<p>Au fur et à mesure que les machines évoluaient, on est venu à se poser beaucoup plus théorique: “Une machine peut-elle tout calculer?”, “Existe-t-il une machine capable de décider si une proposition mathématique est vraie ou fausse?”.</p>
<p>Pour répondre à ces questions, Alan Turing propose en 1937 un modèle de machine appelé aujourd’hui <em>machine de Turing</em>. Cette machine a les caractéristiques suivantes:</p>
<p>Elle possède un ruban infini que lequel on dispose des données. La machine peut lire les données, les traiter et en écrire d’autres. Au bout d’un certain temps, il se peut qu’elle s’arrête, et on peut alors lire le résultat.</p>
<p>Turing démontre grâce à cette machine <em>théorique</em> qu’il existe certains problèmes que la machine n’est pas capable de résoudre.</p>
<p>On considère aujourd’hui l’ordinateur comme une réalisation concrète d’une machine de Turing universelle, c’est-à-dire une machine traitant des informations et capable de prendre comme donnée n’importe quel algorithme et de l’exécuter.</p>
</section>
<section id="larchitecture-de-von-neumann" class="level3" data-number="2.2">
<h3 data-number="2.2" class="anchored" data-anchor-id="larchitecture-de-von-neumann"><span class="header-section-number">2.2</span> L’architecture de von Neumann</h3>
<p>Le premier ordinateur électronique conçu pour être une machine de Turing est l’EINAC réalisé en 1943. Son architecture fut décrite par John von Neumann et sert de base, à quelques améliorations près, à l’architecture de tous les ordinateurs depuis.</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><picture>
			  <source type="image/webp" srcset="/img/NDn-z2wfYS-300.webp 300w, /img/NDn-z2wfYS-600.webp 600w, /img/NDn-z2wfYS-1249.webp 1249w" sizes="100vw">
  <source type="image/png" srcset="/img/NDn-z2wfYS-300.png 300w, /img/NDn-z2wfYS-600.png 600w, /img/NDn-z2wfYS-1249.png 1249w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/NDn-z2wfYS-300.webp" width="1249" height="552" alt="" loading="lazy" decoding="async">
			</picture>
</p>
<figcaption>Architecture de Von Neumann</figcaption>
</figure>
</div>
<p><a href="http://www.editions-eyrolles.com/Livre/9782212135435/" class="cite-source">Informatique et sciences du numérique Spécialité ISN en terminale S - Avec des exercices corrigés et des idées de projets par Gilles Dowek</a></p>
<p>Cette architecture est centrée autour de deux composants principaux:</p>
<ul>
<li>le <strong>processeur</strong>,</li>
<li>et la <strong>mémoire</strong>.</li>
</ul>
<div class="ref">
<ul>
<li><a href="http://www.editions-eyrolles.com/Livre/9782212135435/">Informatique et sciences du numérique Spécialité ISN en terminale S - Avec des exercices corrigés et des idées de projets par Gilles Dowek</a></li>
<li><a href="http://www.editions-eyrolles.com/Livre/9782212137002/informatique-pour-tous-en-classes-preparatoires-aux-grandes-ecoles">Informatique pour tous en classes préparatoires aux grandes écoles de Benjamin Wack</a></li>
</ul>
</div>


</section>
</section>

 ]]></description>
  <category>1NSI</category>
  <guid>https://www.lyceum.fr/1g/nsi/1-histoire-de-linformatique/2-technologie-et-theorie/</guid>
  <pubDate>Wed, 31 Jul 2024 15:15:56 GMT</pubDate>
</item>
<item>
  <title>Chapitre 1: Représentation des entiers naturels</title>
  <link>https://www.lyceum.fr/1g/nsi/2-representation-des-donnees-types-et-valeurs-de-base/1-representation-des-entiers-naturels/</link>
  <description><![CDATA[ 




<div class="programme">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-1-contents" aria-controls="callout-1" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Programme
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-1" class="callout-1-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="programme">
<table class="table table-bordered table-hover caption-top">
<thead class="table-warning">
<tr class="header">
<th>Contenus</th>
<th>Capacités attendues</th>
<th>Commentaires</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Écriture d’un entier positif dans une base b ⩾ 2</td>
<td>Passer de la représentation d’une base dans une autre.</td>
<td>Les bases 2, 10 et 16 sont privilégiées.</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div>

</div>
<div class="intro quarto-layout-panel" data-layout-ncol="2">
<div class="quarto-layout-row">
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<p>On a l’habitude d’écrire les nombres entiers naturels en utilisant la notation décimale, cependant les ordinateurs actuels utilisent la base 2 pour représenter toutes les informations et donc les nombres. Dans ce chapitre nous allons voir comment compter en binaire?</p>
</div>
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<p></p><figure class="wikimage figure"><picture>
			  <source type="image/webp" srcset="/img/Hr3DXW7K6Q-268.webp 268w" sizes="100vw">
  <source type="image/gif" srcset="/img/Hr3DXW7K6Q-268.gif 268w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/Hr3DXW7K6Q-268.webp" width="268" height="123" alt="Cette animation montre comment compter en binaire de 0 à 31 en utilisant 5 bits." loading="lazy" decoding="async">
			</picture>
<figcaption id="caption">Cette animation montre comment compter en binaire de 0 à 31 en utilisant 5 bits.</figcaption><figcaption id="credit">©&nbsp;&nbsp;CC BY-SA 4.0&nbsp;<a id="image-description" href="//commons.wikimedia.org/wiki/File:Binary_counter.gif">via Wikimedia Commons</a></figcaption></figure><p></p>
</div>
</div>
</div>
<p>Chacun de ces nombres étant comprise entre 0 et 9, cela représente un ensemble de dix chiffres d’où le nom de notation décimale.</p>
<p>Les chiffres utilisés sont: <strong>0 1 2 3 4 5 6 7 8 9</strong></p>
<p>Cependant, nos ordinateurs actuels utilisent des transistors pour calculer qui ne possèdent que deux états: <strong>0 1</strong>.</p>
<p>Lorsqu’on va compter, on va très rapidement se retrouver à court de chiffres, et on sera obligé d’ajouter des deuzaines, quatraines, huitaines à gauche… Tout comme nous ajoutions des dizaines, centaines, milliers en base 10.</p>
<table class="table table-bordered table-hover caption-top">
<thead class="table-warning">
<tr class="header">
<th>Représentation décimale</th>
<th>Représentation binaire</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>0</td>
<td>0</td>
</tr>
<tr class="even">
<td>1</td>
<td>1</td>
</tr>
<tr class="odd">
<td>2</td>
<td>10</td>
</tr>
<tr class="even">
<td>3</td>
<td>11</td>
</tr>
<tr class="odd">
<td>4</td>
<td>100</td>
</tr>
<tr class="even">
<td>5</td>
<td>101</td>
</tr>
<tr class="odd">
<td>6</td>
<td>110</td>
</tr>
<tr class="even">
<td>7</td>
<td>111</td>
</tr>
<tr class="odd">
<td>8</td>
<td>1000</td>
</tr>
</tbody>
</table>
<section id="codage-binaire" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="codage-binaire"><span class="header-section-number">1</span> Codage binaire</h2>
<blockquote class="blockquote">
<p>Le système binaire est un système de numération utilisant la base 2. On nomme couramment bit (de l’anglais binary digit, soit « chiffre binaire ») les chiffres de la numération binaire positionnelle. Ceux-ci ne peuvent prendre que deux valeurs, notées par convention 0 et 1.</p>
<p>C’est un concept essentiel de l’informatique. En effet, les processeurs des ordinateurs actuels sont composés de transistors ne gérant chacun que deux états.</p>
<p><a href="http://fr.wikipedia.org/wiki/Syst%C3%A8me_binaire" class="cite-source">Article Wikipédia sur le système binaire</a></p>
</blockquote>
<p>Actuellement, dans les systèmes numériques comme les ordinateurs, toutes <em>les informations</em>, qu’il s’agisse de nombres, de textes d’images, de sons ou encore de vidéos sont codées sous forme <strong>binaire</strong>.</p>
<p>Le système binaire est un système de <em>numération positionnel</em> utilisant la <strong>base deux</strong>.</p>
<p>Les chiffres utilisés sont: <strong>0 1</strong></p>
<div class="prop">
<p>Avec <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>n</mi><annotation encoding="application/x-tex">n</annotation></semantics></math> bits, on peut représenter <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mn>2</mn><mi>n</mi></msup><annotation encoding="application/x-tex">2^n</annotation></semantics></math> informations.</p>
<p>Dans le cas des entiers naturels, on peut compter de <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mn>0</mn><annotation encoding="application/x-tex">0</annotation></semantics></math> à <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mn>2</mn><mrow><mi>n</mi><mo>−</mo><mn>1</mn></mrow></msup><annotation encoding="application/x-tex">2^{n-1}</annotation></semantics></math>.</p>
</div>
<div class="examples">
<ul>
<li>avec 4 bits: de 0 à 15.</li>
<li>avec 8 bits: de 0 à 255.</li>
</ul>
</div>
<div class="plus">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-2-contents" aria-controls="callout-2" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
En plus: Dépassement de capacité
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-2" class="callout-2-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="plus" data-titre="Dépassement de capacité">
<div>

</div>
<div class="quarto-layout-panel" data-layout-ncol="2">
<div class="quarto-layout-row">
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<blockquote class="blockquote">
<p>Un dépassement d’entier (integer overflow) est, en informatique, une condition qui se produit lorsqu’une opération mathématique produit une valeur numérique supérieure à celle représentable dans l’espace de stockage disponible. <span class="cite-source"><a href="https://fr.wikipedia.org/wiki/D%C3%A9passement_d%27entier">Article Wikipédia</a></span></p>
</blockquote>
</div>
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<p></p><figure class="wikimage figure"><picture>
			  <source type="image/webp" srcset="/img/ehpZtCQEcU-300.webp 300w, /img/ehpZtCQEcU-600.webp 600w, /img/ehpZtCQEcU-799.webp 799w" sizes="100vw">
  <source type="image/svg+xml" srcset="/img/ehpZtCQEcU-799.svg 799w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/ehpZtCQEcU-300.webp" width="799" height="465" alt="Le vol 501 d'Ariane 5 en 1996 s'est soldé par sa destruction en raison d'un dépassement d'entier." loading="lazy" decoding="async">
			</picture>
<figcaption id="caption">Le vol 501 d'Ariane 5 en 1996 s'est soldé par sa destruction en raison d'un dépassement d'entier.</figcaption><figcaption id="credit">©&nbsp;&nbsp;CC BY 3.0&nbsp;<a id="image-description" href="//commons.wikimedia.org/wiki/File:Ariane_501_Fallout_Zone.svg">via Wikimedia Commons</a></figcaption></figure><p></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<section id="comment-passer-de-la-notation-binaire-à-la-notation-décimale" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="comment-passer-de-la-notation-binaire-à-la-notation-décimale"><span class="header-section-number">1.1</span> Comment passer de la notation binaire à la notation décimale ?</h3>
<div class="example">
<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mn>1110</mn><annotation encoding="application/x-tex">
1110
</annotation></semantics></math></p>
<p><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mn>1110</mn><mn>2</mn></msub><annotation encoding="application/x-tex">1110_2</annotation></semantics></math> est l’addition de droite à gauche de zéro unité, une <em>deuzaine</em>, une <em>quatraine</em>, une <em>huitaine</em>.</p>
<p>Soit mathématiquement:</p>
<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>1110</mn><mo>=</mo><mn>1</mn><mo>×</mo><msup><mn>2</mn><mn>3</mn></msup><mo>+</mo><mn>1</mn><mo>×</mo><msup><mn>2</mn><mn>2</mn></msup><mo>+</mo><mn>1</mn><mo>×</mo><msup><mn>2</mn><mn>1</mn></msup><mo>+</mo><mn>0</mn><mo>×</mo><msup><mn>2</mn><mn>0</mn></msup><mo>=</mo><mn>14</mn></mrow><annotation encoding="application/x-tex">
1110=1 \times 2^3 + 1 \times 2^2 + 1 \times 2^1 + 0 \times 2^0 = 14
</annotation></semantics></math></p>
</div>
<p><em>Remarque: on indique la base de numération par un indice à la fin du nombre.</em></p>
<p>Soit <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mn>1110</mn><mn>2</mn></msub><mo>=</mo><msub><mn>14</mn><mn>10</mn></msub></mrow><annotation encoding="application/x-tex">1110_2 = 14_{10}</annotation></semantics></math></p>
</section>
<section id="comment-passer-de-la-notation-décimale-à-la-notation-binaire" class="level3" data-number="1.2">
<h3 data-number="1.2" class="anchored" data-anchor-id="comment-passer-de-la-notation-décimale-à-la-notation-binaire"><span class="header-section-number">1.2</span> Comment passer de la notation décimale à la notation binaire ?</h3>
<p>On regroupe les objets par paquets de 2 en réalisant des divisions successives jusqu’à obtenir un quotient égal à 0.</p>
<div class="example">
<p>Trouver en base deux la représentation du nombre <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mn>13</mn><mn>10</mn></msub><annotation encoding="application/x-tex">13_{10}</annotation></semantics></math></p>
<pre><code>13| 2
   |---
 1 | 6 | 2
       |---
     0 | 3 | 2
           |---
         1 | 1 | 2
               |---
             1 | 0</code></pre>
</div>
<p>L’écriture du nombre se fait alors de droite à gauche :</p>
<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mn>13</mn><mn>10</mn></msub><mo>=</mo><msub><mn>1101</mn><mn>2</mn></msub></mrow><annotation encoding="application/x-tex">
13_{10} = 1101_{2}
</annotation></semantics></math></p>
<p>On peut vérifier le résultat:</p>
<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mn>1110</mn><mn>2</mn></msub><mo>=</mo><mn>1</mn><mo>×</mo><msup><mn>2</mn><mn>3</mn></msup><mo>+</mo><mn>1</mn><mo>×</mo><msup><mn>2</mn><mn>2</mn></msup><mo>+</mo><mn>1</mn><mo>×</mo><msup><mn>2</mn><mn>1</mn></msup><mo>+</mo><mn>0</mn><mo>×</mo><msup><mn>2</mn><mn>0</mn></msup><mo>=</mo><msub><mn>13</mn><mn>10</mn></msub></mrow><annotation encoding="application/x-tex">
{1110}_{2} = 1 \times 2^3 + 1 \times 2^2 + 1 \times 2^1 + 0 \times 2^0 = 13_{10}
</annotation></semantics></math></p>
</section>
</section>
<section id="loctet" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="loctet"><span class="header-section-number">2</span> L’octet</h2>
<blockquote class="blockquote">
<p>Les mémoires actuelles sont toutes composées de cellules mémoires capables de retenir un bit. En mettant pleins de ces cellules dans un seul composant, et en mettant quelques circuits électroniques pour gérer le tout, on obtient une mémoire.<a href="http://fr.openclassrooms.com/informatique/cours/fonctionnement-d-un-ordinateur-depuis-zero/memoriser-un-bit" class="cite-source">OpenClassroom</a></p>
</blockquote>
<p>L’état d’un circuit mémoire, se décrit par une suite finie de 0 et de 1, que l’on appelle un <strong>mot</strong>. Par exemple, le mot 100 décrit l’état d’un circuit composé de trois circuits mémoires un bit, respectivement dans l’état 1, 0 et 0.</p>
<p>Dans la mémoire des ordinateurs les circuits mémoire un bit sont souvent groupés par huit : les <strong>octets</strong>.</p>
<dl>
<dt>
Octet
</dt>
<dd>
<div>
<p>Un octet (<em>byte</em> en anglais) est une suite de 8 bits. Il permet de coder <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mn>2</mn><mn>8</mn></msup><mo>=</mo><mn>256</mn></mrow><annotation encoding="application/x-tex">2^8=256</annotation></semantics></math> valeurs.</p>
</div>
</dd>
</dl>
<div class="plus">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-3-contents" aria-controls="callout-3" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
En plus: Les unités de stockage
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-3" class="callout-3-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="plus" data-titre="Les unités de stockage">
<p>Contrairement aux préfixes du système international(SI) utilisé en physique qui utilise des puissances de 10, on utilise en informatique la norme IEC basés des puissances de 2.</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><picture>
			  <source type="image/webp" srcset="/img/RZG7wp6C5J-300.webp 300w, /img/RZG7wp6C5J-441.webp 441w" sizes="100vw">
  <source type="image/png" srcset="/img/RZG7wp6C5J-300.png 300w, /img/RZG7wp6C5J-441.png 441w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/RZG7wp6C5J-300.webp" width="441" height="419" alt="" loading="lazy" decoding="async">
			</picture>
</p>
<figcaption>Les préfixes SI et IEC ont des noms et des valeurs proches, les fabricants de disque dur l’ont bien compris et utilisent toujours le préfixe SI pour faire croire à un plus grand stockage.</figcaption>
</figure>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<section id="codage-hexadécimal" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="codage-hexadécimal"><span class="header-section-number">3</span> Codage hexadécimal</h2>
<p>La notation binaire bien qu’adaptée aux composants électroniques, ne l’est pas du tout pour l’homme. Certains des premiers ordinateurs, comme l’<a href="https://fr.wikipedia.org/wiki/ENIAC#Histoire">ENIAC</a> utilisaient la base 10, cependant cette idée a été abandonnée en raison des difficultés que cela entraînaient au niveau électronique. La base 16, <strong>le système hexadécimal rend l’utilisation du binaire plus humaine</strong>.</p>
<p>Un chiffre hexadécimal est un mot de 4 bits puisque <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mn>2</mn><mn>4</mn></msup><mo>=</mo><mn>16</mn></mrow><annotation encoding="application/x-tex">2^4 = 16</annotation></semantics></math>.</p>
<p>Les chiffres utilisés sont: <strong>0 1 2 3 4 5 6 7 8 9 a b c d e f</strong></p>
<p>Voici les correspondances entre les bases hexadécimale, décimale et binaire.</p>
<table class="table table-bordered table-hover caption-top">
<thead class="table-warning">
<tr class="header">
<th>Chiffre hexadécimal</th>
<th>Représentation décimale</th>
<th>Représentation binaire</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>0</td>
<td>0</td>
<td>0000</td>
</tr>
<tr class="even">
<td>1</td>
<td>1</td>
<td>0001</td>
</tr>
<tr class="odd">
<td>2</td>
<td>2</td>
<td>0010</td>
</tr>
<tr class="even">
<td>3</td>
<td>3</td>
<td>0011</td>
</tr>
<tr class="odd">
<td>4</td>
<td>4</td>
<td>0100</td>
</tr>
<tr class="even">
<td>5</td>
<td>5</td>
<td>0101</td>
</tr>
<tr class="odd">
<td>6</td>
<td>6</td>
<td>0110</td>
</tr>
<tr class="even">
<td>7</td>
<td>7</td>
<td>0111</td>
</tr>
<tr class="odd">
<td>8</td>
<td>8</td>
<td>1000</td>
</tr>
<tr class="even">
<td>9</td>
<td>9</td>
<td>1001</td>
</tr>
<tr class="odd">
<td>A</td>
<td>10</td>
<td>1010</td>
</tr>
<tr class="even">
<td>B</td>
<td>11</td>
<td>1011</td>
</tr>
<tr class="odd">
<td>C</td>
<td>12</td>
<td>1100</td>
</tr>
<tr class="even">
<td>D</td>
<td>13</td>
<td>1101</td>
</tr>
<tr class="odd">
<td>E</td>
<td>14</td>
<td>1110</td>
</tr>
<tr class="even">
<td>F</td>
<td>15</td>
<td>1111</td>
</tr>
<tr class="odd">
<td>10</td>
<td>16</td>
<td>10000</td>
</tr>
</tbody>
</table>
<section id="comment-passer-de-la-notation-binaire-à-la-notation-hexadécimale" class="level3" data-number="3.1">
<h3 data-number="3.1" class="anchored" data-anchor-id="comment-passer-de-la-notation-binaire-à-la-notation-hexadécimale"><span class="header-section-number">3.1</span> Comment passer de la notation binaire à la notation hexadécimale ?</h3>
<div class="example">
<p>Comment représenter le mot binaire de 16 bits: <code>1010101111100001</code></p>
<p>On est d’accord, en binaire, c’est <em>inhumain</em>, par contre en hexadécimal, cela devient beaucoup plus lisible et manipulable:</p>
<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mn>1010101111100001</mn><mn>2</mn></msub><mo>=</mo><msub><mrow><mi>a</mi><mi>b</mi><mi>e</mi><mn>1</mn></mrow><mn>16</mn></msub></mrow><annotation encoding="application/x-tex">
{1010101111100001}_2 = {abe1}_{16}
</annotation></semantics></math></p>
<p>Ou si l’on tient vraiment à notre bonne vielle base 10:</p>
<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>a</mi><mi>b</mi><mi>e</mi><msub><mn>1</mn><mn>16</mn></msub><mo>=</mo><msub><mrow><mo stretchy="true" form="prefix">(</mo><mn>10</mn><mo>×</mo><msup><mn>16</mn><mn>3</mn></msup><mo>+</mo><mn>11</mn><mo>×</mo><msup><mn>16</mn><mn>2</mn></msup><mo>+</mo><mn>14</mn><mo>×</mo><msup><mn>16</mn><mn>1</mn></msup><mo>+</mo><mn>1</mn><mo>×</mo><msup><mn>16</mn><mn>0</mn></msup><mo stretchy="true" form="postfix">)</mo></mrow><mn>10</mn></msub><mo>=</mo><msub><mn>44001</mn><mn>10</mn></msub></mrow><annotation encoding="application/x-tex">
abe1_{16}=(10 \times 16^3 + 11 \times 16^2 + 14 \times 16^1 + 1 \times 16^0)_{10}=44001_{10}
</annotation></semantics></math></p>
</div>
<p>Pour passer de l’écriture binaire à l’écriture hexadécimale, il suffit de regrouper les chiffres binaires 4 par 4.</p>
<div class="example">
<p>Trouver en base seize la représentation du nombre <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mn>101101</mn><mn>2</mn></msub><annotation encoding="application/x-tex">101101_{2}</annotation></semantics></math></p>
<pre><code>En base 2:    101101 = 0010 1101
En base 16:              2    D</code></pre>
<p>Soit: <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mn>101101</mn><mn>2</mn></msub><mo>=</mo><mn>2</mn><msub><mi>D</mi><mn>16</mn></msub></mrow><annotation encoding="application/x-tex">101101_{2} = 2D_{16}</annotation></semantics></math></p>
<p>On peut vérifier le résultat en base 10:</p>
<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mn>101101</mn><mn>2</mn></msub><mo>=</mo><mi>+</mi><mn>1</mn><mo>×</mo><msup><mn>2</mn><mn>5</mn></msup><mo>+</mo><mn>0</mn><mo>×</mo><msup><mn>2</mn><mn>4</mn></msup><mo>+</mo><mn>1</mn><mo>×</mo><msup><mn>2</mn><mn>3</mn></msup><mo>+</mo><mn>1</mn><mo>×</mo><msup><mn>2</mn><mn>2</mn></msup><mo>+</mo><mn>0</mn><mo>×</mo><msup><mn>2</mn><mn>1</mn></msup><mo>+</mo><mn>1</mn><mo>×</mo><msup><mn>2</mn><mn>0</mn></msup><mo>=</mo><msub><mn>13</mn><mn>10</mn></msub></mrow><annotation encoding="application/x-tex">
{101101}_2 = + 1 \times 2^5 + 0 \times 2^4 + 1 \times 2^3 + 1 \times 2^2 + 0 \times 2^1 + 1 \times 2^0 = 13_{10}
</annotation></semantics></math></p>
</div>
</section>
<section id="comment-passer-de-la-notation-décimale-à-la-notation-hexadécimale" class="level3" data-number="3.2">
<h3 data-number="3.2" class="anchored" data-anchor-id="comment-passer-de-la-notation-décimale-à-la-notation-hexadécimale"><span class="header-section-number">3.2</span> Comment passer de la notation décimale à la notation hexadécimale ?</h3>
<p>On regroupe les objets par paquets de 16 en réalisant des divisions successives jusqu’à obtenir un quotient égal à 0.</p>
<div class="example">
<p>Trouver en base seize la représentation du nombre <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mn>255</mn><mn>16</mn></msub><annotation encoding="application/x-tex">255_{16}</annotation></semantics></math></p>
<pre><code> 286  | 16
      |---
14(e)| 17 | 16
           |---
         1 | 1 | 16
               |---
             1 | 0 </code></pre>
</div>
<p>L’écriture du nombre se fait alors de droite à gauche en remplaçant les nombres décimaux par leurs écritures hexadécimales:</p>
<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mn>286</mn><mn>10</mn></msub><mo>=</mo><mn>11</mn><msub><mi>e</mi><mn>16</mn></msub></mrow><annotation encoding="application/x-tex">
286_{10} = 11e_{16}
</annotation></semantics></math></p>
<p>On peut vérifier le résultat :</p>
<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mrow><mi>e</mi><mn>11</mn></mrow><mn>16</mn></msub><mo>=</mo><mn>1</mn><mo>×</mo><msup><mn>16</mn><mn>2</mn></msup><mo>+</mo><mn>1</mn><mo>×</mo><msup><mn>16</mn><mn>1</mn></msup><mo>+</mo><mn>14</mn><mrow><mo stretchy="true" form="prefix">(</mo><mi>e</mi><mo stretchy="true" form="postfix">)</mo></mrow><mo>×</mo><msup><mn>2</mn><mn>0</mn></msup><mo>=</mo><mn>256</mn><mo>+</mo><mn>16</mn><mo>+</mo><mn>14</mn><mo>=</mo><msub><mn>286</mn><mn>10</mn></msub></mrow><annotation encoding="application/x-tex">
{e11}_{16} = 1 \times 16^2 + 1 \times 16^1 + 14(e) \times 2^0 = 256 + 16 + 14 = 286_{10}
</annotation></semantics></math></p>
</section>
</section>
<section id="opérations-arithmétiques" class="level2" data-number="4">
<h2 data-number="4" class="anchored" data-anchor-id="opérations-arithmétiques"><span class="header-section-number">4</span> Opérations arithmétiques</h2>
<p>Les méthodes utilisées en base dix s’appliquent de la même façon dans les autres bases.</p>
<div class="callout callout-style-default callout-caution callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Mise en garde
</div>
</div>
<div class="callout-body-container callout-body">
<p>Des dépassements de capacités (<em>integer overflow</em>) peuvent advenir en cas d’addition(<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>255</mn><mo>+</mo><mn>1</mn><mo>=</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">255 + 1 = 0</annotation></semantics></math> sur un octet!).</p>
<p>Les soustractions doivent donner des résultats positifs, car on ne code pas encore les entiers relatifs(<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>10</mn><mo>−</mo><mn>13</mn><mo>=</mo><mi>−</mi><mn>3</mn></mrow><annotation encoding="application/x-tex">10 - 13 = -3</annotation></semantics></math> qui ne peut pas être codé!).</p>
</div>
</div>
<section id="addition-binaire" class="level3" data-number="4.1">
<h3 data-number="4.1" class="anchored" data-anchor-id="addition-binaire"><span class="header-section-number">4.1</span> Addition binaire</h3>
<div class="example">
<p>Réaliser l’addition binaire: <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mn>1011</mn><mn>2</mn></msub><mo>+</mo><msub><mn>1010</mn><mn>2</mn></msub></mrow><annotation encoding="application/x-tex">1011_2 + 1010_2</annotation></semantics></math></p>
<pre><code> (1) (1)
    1 0 1 1
  + 1 0 1 0
    -------
  1 0 1 0 1
</code></pre>
</div>
<p>On peut vérifier le résultat en base 10 :</p>
<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mo stretchy="true" form="prefix">(</mo><msub><mn>1011</mn><mn>2</mn></msub><mo>=</mo><msub><mn>11</mn><mn>10</mn></msub><mo stretchy="true" form="postfix">)</mo></mrow><mo>+</mo><mrow><mo stretchy="true" form="prefix">(</mo><msub><mn>1010</mn><mn>2</mn></msub><mo>=</mo><msub><mn>10</mn><mn>10</mn></msub><mo stretchy="true" form="postfix">)</mo></mrow><mo>=</mo><msub><mn>10101</mn><mn>2</mn></msub><mo>=</mo><msub><mn>21</mn><mn>10</mn></msub></mrow><annotation encoding="application/x-tex">
({1011}_2 = 11_{10})+({1010}_2 = 10_{10})={10101}_2 = 21_{10}
</annotation></semantics></math></p>
</section>
<section id="addition-hexadécimale" class="level3" data-number="4.2">
<h3 data-number="4.2" class="anchored" data-anchor-id="addition-hexadécimale"><span class="header-section-number">4.2</span> Addition hexadécimale</h3>
<div class="example">
<p>Réaliser l’addition hexadécimale: <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>A</mi><msub><mn>803</mn><mn>16</mn></msub><mo>+</mo><mn>2</mn><mi>D</mi><msub><mn>35</mn><mn>16</mn></msub></mrow><annotation encoding="application/x-tex">A803_{16} + 2D35_{16}</annotation></semantics></math></p>
<pre><code>   (1)
    A 8 0 3
  + 2 D 3 5
    -------
    D 5 3 8
</code></pre>
</div>
<p>On peut vérifier le résultat en base 10:</p>
<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mo stretchy="true" form="prefix">(</mo><msub><mrow><mi>A</mi><mn>803</mn></mrow><mn>16</mn></msub><mo>=</mo><mn>43</mn><msub><mn>011</mn><mn>10</mn></msub><mo stretchy="true" form="postfix">)</mo></mrow><mo>+</mo><mrow><mo stretchy="true" form="prefix">(</mo><msub><mrow><mn>2</mn><mi>D</mi><mn>35</mn></mrow><mn>16</mn></msub><mo>=</mo><mn>11</mn><msub><mn>573</mn><mn>10</mn></msub><mo stretchy="true" form="postfix">)</mo></mrow><mo>=</mo><msub><mrow><mi>D</mi><mn>538</mn></mrow><mn>16</mn></msub><mo>=</mo><mn>54</mn><msub><mn>584</mn><mn>10</mn></msub></mrow><annotation encoding="application/x-tex">
({A803}_{16} = 43 011_{10})+({2D35}_{16} = 11 573_{10})={D538}_{16} = 54 584_{10}
</annotation></semantics></math></p>
</section>
<section id="soustraction-binaire" class="level3" data-number="4.3">
<h3 data-number="4.3" class="anchored" data-anchor-id="soustraction-binaire"><span class="header-section-number">4.3</span> Soustraction binaire</h3>
<div class="example">
<p>Réaliser la soustraction binaire: <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mn>1011</mn><mn>2</mn></msub><mo>−</mo><msub><mn>0110</mn><mn>2</mn></msub></mrow><annotation encoding="application/x-tex">1011_2 - 0110_2</annotation></semantics></math></p>
<pre><code>    1 0 1 1
  - 0 1 1 0
   (1)
    -------
    0 1 0 1
</code></pre>
</div>
<p>On peut vérifier le résultat en base 10:</p>
<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mo stretchy="true" form="prefix">(</mo><msub><mn>1011</mn><mn>2</mn></msub><mo>=</mo><msub><mn>11</mn><mn>10</mn></msub><mo stretchy="true" form="postfix">)</mo></mrow><mo>−</mo><mrow><mo stretchy="true" form="prefix">(</mo><msub><mn>0110</mn><mn>2</mn></msub><mo>=</mo><msub><mn>6</mn><mn>10</mn></msub><mo stretchy="true" form="postfix">)</mo></mrow><mo>=</mo><msub><mn>0101</mn><mn>2</mn></msub><mo>=</mo><msub><mn>5</mn><mn>10</mn></msub></mrow><annotation encoding="application/x-tex">
({1011}_2 = 11_{10})-({0110}_2 = 6_{10})={0101}_2 = 5_{10}
</annotation></semantics></math></p>
</section>
<section id="soustraction-hexadécimale" class="level3" data-number="4.4">
<h3 data-number="4.4" class="anchored" data-anchor-id="soustraction-hexadécimale"><span class="header-section-number">4.4</span> Soustraction hexadécimale</h3>
<div class="example">
<p>Réaliser la soustraction hexadécimale : <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>A</mi><msub><mn>803</mn><mn>16</mn></msub><mo>−</mo><mn>2</mn><mi>D</mi><msub><mn>35</mn><mn>16</mn></msub></mrow><annotation encoding="application/x-tex">A803_{16} - 2D35_{16}</annotation></semantics></math></p>
<pre><code>     A  8  0  3
  -  2  D  3  5
    (1)(1)(1)
    -----------
     7  A  C  E
</code></pre>
</div>
<p>On peut vérifier le résultat en base 10 :</p>
<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mo stretchy="true" form="prefix">(</mo><msub><mrow><mi>A</mi><mn>803</mn></mrow><mn>16</mn></msub><mo>=</mo><mn>43</mn><msub><mn>011</mn><mn>10</mn></msub><mo stretchy="true" form="postfix">)</mo></mrow><mo>−</mo><mrow><mo stretchy="true" form="prefix">(</mo><msub><mrow><mn>2</mn><mi>D</mi><mn>35</mn></mrow><mn>16</mn></msub><mo>=</mo><mn>11</mn><msub><mn>573</mn><mn>10</mn></msub><mo stretchy="true" form="postfix">)</mo></mrow><mo>=</mo><msub><mrow><mn>7</mn><mi>A</mi><mi>C</mi><mi>E</mi></mrow><mn>16</mn></msub><mo>=</mo><mn>31</mn><msub><mn>438</mn><mn>10</mn></msub></mrow><annotation encoding="application/x-tex">
({A803}_{16} = 43 011_{10})-({2D35}_{16} = 11 573_{10})={7ACE}_{16} = 31 438_{10}
</annotation></semantics></math></p>
<p>Maintenant que vous avez tout compris, voici un lien vers un convertisseur en ligne.</p>
<p><a href="http://www.binaryconvert.com/convert_unsigned_int.html" class="uri">http://www.binaryconvert.com/convert_unsigned_int.html</a></p>
</section>
</section>
<section id="conversions-et-opérations-en-python" class="level2" data-number="5">
<h2 data-number="5" class="anchored" data-anchor-id="conversions-et-opérations-en-python"><span class="header-section-number">5</span> Conversions et opérations en python</h2>
<p>Bien entendu, comme ce genre d’opérations est courante en informatique, python possède des fonctions pour manipuler les nombres entiers en base décimale <code>int()</code>, en base deux <code>bin()</code>, en base seize <code>hex()</code>.</p>
<p>Vous pouvez trouver quelques exemples de ces conversions sur cette réponse du forum de programmation en anglais <a href="http://stackoverflow.com/a/11029366/1919130">stackoverflow</a></p>
<p><strong>ATTENTION</strong></p>
<p>Les nombres binaires et hexadécimaux sont représentés en Python sous forme de chaîne de caractères avec un préfixe.</p>
<ul>
<li><code>Ob</code> pour les nombres binaires par exemple<code>'0x1001'</code> pour <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mn>1001</mn><mn>2</mn></msub><annotation encoding="application/x-tex">1001_{2}</annotation></semantics></math></li>
<li><code>Ox</code> pour les nombres hexadécimaux par exemple<code>'0xABCD'</code> pour <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>A</mi><mi>B</mi><msub><mi>C</mi><mn>16</mn></msub></mrow><annotation encoding="application/x-tex">ABC_{16}</annotation></semantics></math></li>
</ul>


</section>

 ]]></description>
  <category>1NSI</category>
  <guid>https://www.lyceum.fr/1g/nsi/2-representation-des-donnees-types-et-valeurs-de-base/1-representation-des-entiers-naturels/</guid>
  <pubDate>Wed, 31 Jul 2024 15:15:56 GMT</pubDate>
</item>
<item>
  <title>Chapitre 2: Représentation des entiers relatifs</title>
  <link>https://www.lyceum.fr/1g/nsi/2-representation-des-donnees-types-et-valeurs-de-base/2-representation-des-entiers-relatifs/</link>
  <description><![CDATA[ 




<div class="programme">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-1-contents" aria-controls="callout-1" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Programme
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-1" class="callout-1-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="programme">
<table class="table table-bordered table-hover caption-top">
<thead class="table-warning">
<tr class="header">
<th>Contenus</th>
<th>Capacités attendues</th>
<th>Commentaires</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Représentation binaire d’un entier relatif</td>
<td>Évaluer le nombre de bits nécessaires à l’écriture en base 2 d’un entier, de la somme ou du produit de deux nombres entiers. Utiliser le complément à 2.</td>
<td>Il s’agit de décrire les tailles courantes des entiers (8, 16, 32 ou 64 bits). Il est possible d’évoquer la représentation des entiers de taille arbitraire de Python.</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div>

</div>
<div class="intro quarto-layout-panel" data-layout-ncol="2">
<div class="quarto-layout-row">
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<p>Jusqu’à maintenant, nous avons appris à représenter des entiers naturels en représentation binaire ou hexadécimale. Cependant, dans de nombreux programmes, il est nécessaire d’utiliser d’autres types de nombres comme les <strong>entiers relatifs</strong> ou les <strong>réels</strong>. Dans ce chapitre nous allons voir comment coder les nombres entiers relatifs grâce à la <a href="https://en.wikipedia.org/wiki/Method_of_complements">méthode des compléments</a> qui permet de coder une plage symétrique d’entiers positifs et négatifs de manière à ce qu’ils puissent utiliser le même algorithme (matériel) pour l’addition sur toute la plage.</p>
</div>
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><picture>
			  <source type="image/webp" srcset="/img/4PFTZSLrq4-300.webp 300w, /img/4PFTZSLrq4-478.webp 478w" sizes="100vw">
  <source type="image/png" srcset="/img/4PFTZSLrq4-300.png 300w, /img/4PFTZSLrq4-478.png 478w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/4PFTZSLrq4-300.webp" width="478" height="402" alt="" loading="lazy" decoding="async">
			</picture>
</p>
<figcaption>Complément à 2 sur 3 bits.</figcaption>
</figure>
</div>
</div>
</div>
</div>
<section id="méthode-naïve-utilisation-dun-bit-de-signe" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="méthode-naïve-utilisation-dun-bit-de-signe"><span class="header-section-number">1</span> Méthode naïve: utilisation d’un bit de signe</h2>
<p>La façon la plus simple de procéder serait de réserver le bit de poids fort pour le signe(0 pour positif et 1 pour négatif), et de garder le rester pour la représentation de la valeur absolue du nombre.</p>
<p>Avec un codage utilisant des mots de n bits, on pourrait représenter des nombres entre <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>−</mi><msup><mn>2</mn><mrow><mi>n</mi><mo>−</mo><mn>1</mn></mrow></msup><mo>+</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">-2^{n-1}+1</annotation></semantics></math> et <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mn>2</mn><mrow><mi>n</mi><mo>−</mo><mn>1</mn></mrow></msup><mo>−</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">2^{n-1}-1</annotation></semantics></math>.</p>
<p>Par exemple, avec un codage sur 3 bits, des nombres entre -3 et 3:</p>
<table class="table table-bordered table-hover caption-top">
<thead class="table-warning">
<tr class="header">
<th>Représentation binaire</th>
<th>Valeur décimale</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>000</td>
<td>+0</td>
</tr>
<tr class="even">
<td>001</td>
<td>+1</td>
</tr>
<tr class="odd">
<td>010</td>
<td>+2</td>
</tr>
<tr class="even">
<td>011</td>
<td>+3</td>
</tr>
<tr class="odd">
<td>100</td>
<td>-0</td>
</tr>
<tr class="even">
<td>101</td>
<td>-1</td>
</tr>
<tr class="odd">
<td>110</td>
<td>-2</td>
</tr>
<tr class="even">
<td>111</td>
<td>-3</td>
</tr>
</tbody>
</table>
<blockquote class="blockquote">
<p>Malheureusement cette représentation possède deux inconvénients. Le premier (mineur) est que le nombre zéro (0) possède deux représentations. L’autre inconvénient (majeur) est que cette représentation impose de modifier l’algorithme d’addition ; si un des nombres est négatif, l’addition binaire usuelle donne un résultat incorrect. <a href="http://fr.wikipedia.org/wiki/Compl%C3%A9ment_%C3%A0_deux#Explication">Voir l’article de Wikipédia pour plus de détails</a></p>
</blockquote>
<div class="appli">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-2-contents" aria-controls="callout-2" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Application
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-2" class="callout-2-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="appli">
<p>Vérifier que 3 - 2 ne donne pas le bon résultat avec cet encodage en binaire.</p>
</div>
</div>
</div>
</div>
</div>
</section>
<section id="notation-en-complément-à-deux" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="notation-en-complément-à-deux"><span class="header-section-number">2</span> Notation en complément à deux</h2>
<p>Cette méthode permet de remédier aux problèmes évoqués ci-dessus.</p>
<p>On utilise un encodage de longueur fixe <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>n</mi><annotation encoding="application/x-tex">n</annotation></semantics></math>:</p>
<ul>
<li>La première moitié représente les entiers <em>positifs ou nul</em> codés normalement <em>avec un 0 sur le bit de poids fort</em>;</li>
<li>La deuxième moitié représente les entiers <em>strictement négatifs</em>. Pour cela on leur ajoute <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mn>2</mn><mi>n</mi></msup><annotation encoding="application/x-tex">2^n</annotation></semantics></math> et on retrouve un <em>1 sur le bit de poids fort</em>.</li>
</ul>
<div class="callout callout-style-default callout-note callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Note
</div>
</div>
<div class="callout-body-container callout-body">
<p>Dans cet encodage, le bit de poids fort contient encore l’information du signe:</p>
<ul>
<li><code>0</code> pour les entiers <em>positifs ou nul</em>.</li>
<li><code>1</code> pour les entiers <em>strictement négatifs</em>.</li>
</ul>
</div>
</div>
<div class="prop">
<p>En complément à 2 sur <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>n</mi><annotation encoding="application/x-tex">n</annotation></semantics></math> bits, on peut représenter des nombres entre <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>−</mi><msup><mn>2</mn><mrow><mi>n</mi><mo>−</mo><mn>1</mn></mrow></msup></mrow><annotation encoding="application/x-tex">-2^{n-1}</annotation></semantics></math> et <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mn>2</mn><mrow><mi>n</mi><mo>−</mo><mn>1</mn></mrow></msup><mo>−</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">2^{n-1}-1</annotation></semantics></math>.</p>
</div>
<div id="d2f16a06" class="cell" data-execution_count="1">
<div class="cell-output cell-output-display">
<div>
<figure class="figure">
<p><picture>
			  <source type="image/webp" srcset="/img/VP1-eAppo2-300.webp 300w, /img/VP1-eAppo2-600.webp 600w, /img/VP1-eAppo2-1174.webp 1174w" sizes="100vw">
  <source type="image/png" srcset="/img/VP1-eAppo2-300.png 300w, /img/VP1-eAppo2-600.png 600w, /img/VP1-eAppo2-1174.png 1174w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/VP1-eAppo2-300.webp" width="1174" height="942" alt="" loading="lazy" decoding="async">
			</picture>
</p>
</figure>
</div>
</div>
</div>
<section id="méthode-dencodage" class="level3" data-number="2.1">
<h3 data-number="2.1" class="anchored" data-anchor-id="méthode-dencodage"><span class="header-section-number">2.1</span> Méthode d’encodage</h3>
<p>L’entier négatif <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>x</mi><annotation encoding="application/x-tex">x</annotation></semantics></math> est codé comme s’il s’agissait de l’entier <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>x</mi><mo>+</mo><msup><mn>2</mn><mi>n</mi></msup></mrow><annotation encoding="application/x-tex">x + 2^{n}</annotation></semantics></math> ou n est la taille du mot.</p>
<p>Il est possible d’appliquer un algorithme simple pour réaliser cette addition en binaire <em>(cette méthode sera désignée comme 2ᵉ méthode par la suite)</em>.</p>
<ul>
<li>On inverse les bits de l’écriture binaire de sa valeur absolue.</li>
<li>On ajoute 1 au résultat (les dépassements sont ignorés).</li>
</ul>
<p><a href="https://fr.wikipedia.org/wiki/Compl%C3%A9ment_%C3%A0_deux" class="cite-source">Article Wikipédia sur le complément à deux</a></p>
<div class="example">
<p>Utilisons cet encodage sur 3 bits.</p>
<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>−</mi><msub><mn>1</mn><mn>10</mn></msub><mo>=</mo><msub><mi>?</mi><mn>2</mn></msub></mrow><annotation encoding="application/x-tex">
-1_{10} = ?_{2}
</annotation></semantics></math></p>
<section id="ère-méthode" class="level5" data-number="2.1.0.1">
<h5 data-number="2.1.0.1" class="anchored" data-anchor-id="ère-méthode"><span class="header-section-number">2.1.0.1</span> 1<sup>ère</sup> méthode</h5>
<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>−</mi><mn>1</mn><mo>=</mo><mo>&gt;</mo><mi>−</mi><mn>1</mn><mo>+</mo><msup><mn>2</mn><mn>3</mn></msup><mo>=</mo><msub><mn>7</mn><mn>10</mn></msub><mo>=</mo><msub><mn>111</mn><mn>2</mn></msub></mrow><annotation encoding="application/x-tex">
-1 =&gt; -1 + 2^3 = 7_{10} = 111_2
</annotation></semantics></math></p>
</section>
<section id="e-méthode" class="level5" data-number="2.1.0.2">
<h5 data-number="2.1.0.2" class="anchored" data-anchor-id="e-méthode"><span class="header-section-number">2.1.0.2</span> 2<sup>e</sup> méthode</h5>
<ol type="1">
<li>La valeur <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>−</mi><mn>1</mn></mrow><annotation encoding="application/x-tex">-1</annotation></semantics></math> a pour valeur absolue <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mn>1</mn><annotation encoding="application/x-tex">1</annotation></semantics></math> codé <code>001</code> sur 3 bits.</li>
<li>On inverse les bits: <code>110</code></li>
<li>On ajoute 1: <code>111</code></li>
</ol>
<p>Les deux méthodes donnent le même résultat:</p>
<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>−</mi><msub><mn>1</mn><mn>10</mn></msub><mo>=</mo><msub><mn>111</mn><mn>2</mn></msub></mrow><annotation encoding="application/x-tex">
-1_{10} = 111_{2}
</annotation></semantics></math></p>
</section>
<section id="tableau-de-valeurs" class="level4" data-number="2.1.1">
<h4 data-number="2.1.1" class="anchored" data-anchor-id="tableau-de-valeurs"><span class="header-section-number">2.1.1</span> Tableau de valeurs</h4>
<p>Avec un codage sur 3 bits, on peut coder des nombres entre <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>−</mi><msup><mn>2</mn><mrow><mn>3</mn><mo>−</mo><mn>1</mn></mrow></msup><mo>=</mo><mi>−</mi><mn>4</mn></mrow><annotation encoding="application/x-tex">-2^{3-1}=-4</annotation></semantics></math> et <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>−</mi><msup><mn>2</mn><mrow><mn>3</mn><mo>−</mo><mn>1</mn></mrow></msup><mo>−</mo><mn>1</mn><mo>=</mo><mn>3</mn></mrow><annotation encoding="application/x-tex">-2^{3-1}-1=3</annotation></semantics></math>.</p>
<table class="table table-bordered table-hover caption-top">
<thead class="table-warning">
<tr class="header">
<th>Représentation binaire</th>
<th>Valeur décimale</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>000</td>
<td>+0</td>
</tr>
<tr class="even">
<td>001</td>
<td>+1</td>
</tr>
<tr class="odd">
<td>010</td>
<td>+2</td>
</tr>
<tr class="even">
<td>011</td>
<td>+3</td>
</tr>
<tr class="odd">
<td>100</td>
<td>-4</td>
</tr>
<tr class="even">
<td>101</td>
<td>-3</td>
</tr>
<tr class="odd">
<td>110</td>
<td>-2</td>
</tr>
<tr class="even">
<td>111</td>
<td>-1</td>
</tr>
</tbody>
</table>
<div id="b5279935" class="cell" data-execution_count="2">
<div class="cell-output cell-output-display">
<div>
<figure class="figure">
<p><picture>
			  <source type="image/webp" srcset="/img/kduLNLq-Oz-300.webp 300w, /img/kduLNLq-Oz-600.webp 600w, /img/kduLNLq-Oz-1174.webp 1174w" sizes="100vw">
  <source type="image/png" srcset="/img/kduLNLq-Oz-300.png 300w, /img/kduLNLq-Oz-600.png 600w, /img/kduLNLq-Oz-1174.png 1174w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/kduLNLq-Oz-300.webp" width="1174" height="900" alt="" loading="lazy" decoding="async">
			</picture>
</p>
</figure>
</div>
</div>
</div>
</section>
</div>
</section>
<section id="méthode-de-décodage" class="level3" data-number="2.2">
<h3 data-number="2.2" class="anchored" data-anchor-id="méthode-de-décodage"><span class="header-section-number">2.2</span> Méthode de décodage</h3>
<p>Pour connaitre le nombre que représente un entier négatif, on effectue la démarche inverse:</p>
<ul>
<li>On lui retranche 1 puis,</li>
<li>on inverse tous ces bits,</li>
<li>On convertit en base 10, et on ajoute le signe -.</li>
</ul>
<p>Ce qui revient à lui soustraire <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mn>2</mn><mi>n</mi></msup><annotation encoding="application/x-tex">2^n</annotation></semantics></math>.</p>
<div class="example">
<p>Toujours en travaillant sur 3 bits:</p>
<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mn>110</mn><mn>2</mn></msub><mo>=</mo><msub><mi>?</mi><mn>10</mn></msub></mrow><annotation encoding="application/x-tex">
110_2 = ?_{10}
</annotation></semantics></math></p>
<section id="ère-méthode-1" class="level4" data-number="2.2.1">
<h4 data-number="2.2.1" class="anchored" data-anchor-id="ère-méthode-1"><span class="header-section-number">2.2.1</span> 1<sup>ère</sup> méthode</h4>
<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mn>110</mn><mn>2</mn></msub><mo>=</mo><msub><mn>6</mn><mn>10</mn></msub><mo>=</mo><mo>&gt;</mo><mn>6</mn><mo>−</mo><msup><mn>2</mn><mn>3</mn></msup><mo>=</mo><mi>−</mi><msub><mn>2</mn><mn>10</mn></msub></mrow><annotation encoding="application/x-tex">
110_2 = 6_{10} =&gt; 6 - 2^3 = -2_{10}
</annotation></semantics></math></p>
</section>
<section id="e-méthode-1" class="level4" data-number="2.2.2">
<h4 data-number="2.2.2" class="anchored" data-anchor-id="e-méthode-1"><span class="header-section-number">2.2.2</span> 2<sup>e</sup> méthode</h4>
<ol type="1">
<li>On retranche 1: <code>110 - 1 = 101</code></li>
<li>On inverse les bits: <code>010</code></li>
<li>On convertit en base 10: <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mn>010</mn><mn>2</mn></msub><mo>=</mo><msub><mn>2</mn><mn>10</mn></msub></mrow><annotation encoding="application/x-tex">010_2 = 2_{10}</annotation></semantics></math> donc c’est <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>−</mi><mn>2</mn></mrow><annotation encoding="application/x-tex">-2</annotation></semantics></math>.</li>
</ol>
<p>Les deux méthodes donnent le même résultat:</p>
<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mn>110</mn><mn>2</mn></msub><mo>=</mo><mi>−</mi><msub><mn>2</mn><mn>10</mn></msub></mrow><annotation encoding="application/x-tex">
110_2 = -2_{10}
</annotation></semantics></math></p>
</section>
</div>
</section>
</section>
<section id="opérations" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="opérations"><span class="header-section-number">3</span> Opérations</h2>
<div class="callout callout-style-default callout-tip callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Astuce
</div>
</div>
<div class="callout-body-container callout-body">
<p>Il faut bien garder à l’esprit que l’encodage en complément à deux ne peut être fait que sur des <em>mots binaires</em> de taille fixe et que les dépassements de capacité ne sont pas pris en compte.</p>
</div>
</div>
<section id="soustraction" class="level3" data-number="3.1">
<h3 data-number="3.1" class="anchored" data-anchor-id="soustraction"><span class="header-section-number">3.1</span> Soustraction</h3>
<p>Réalisons le calcul <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>3</mn><mo>−</mo><mn>2</mn><mo>=</mo><mn>3</mn><mo>+</mo><mrow><mo stretchy="true" form="prefix">(</mo><mi>−</mi><mn>2</mn><mo stretchy="true" form="postfix">)</mo></mrow></mrow><annotation encoding="application/x-tex">3-2 = 3+ (-2)</annotation></semantics></math> sur trois bits.</p>
<pre><code>   011
  +110
  ----
(1)001</code></pre>
<p>On trouve bien <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mn>001</mn><mn>2</mn></msub><mo>=</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">{001}_2=1</annotation></semantics></math> car le 4<sup>e</sup> bit n’est pas prise en compte.</p>
</section>
<section id="multiplication" class="level3" data-number="3.2">
<h3 data-number="3.2" class="anchored" data-anchor-id="multiplication"><span class="header-section-number">3.2</span> Multiplication</h3>
<p>Réalisons le calcul <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>2</mn><mo>*</mo><mrow><mo stretchy="true" form="prefix">(</mo><mi>−</mi><mn>2</mn><mo stretchy="true" form="postfix">)</mo></mrow></mrow><annotation encoding="application/x-tex">2*(-2)</annotation></semantics></math> sur trois bits.</p>
<pre><code>     010
    x110
    ----
     000
    010
   010
   -----
 (01)100</code></pre>
<p>On trouve bien sur trois bits <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mn>100</mn><mn>2</mn></msub><mo>=</mo><mi>−</mi><mn>4</mn></mrow><annotation encoding="application/x-tex">{100}_2=-4</annotation></semantics></math>.</p>


</section>
</section>

 ]]></description>
  <category>1NSI</category>
  <guid>https://www.lyceum.fr/1g/nsi/2-representation-des-donnees-types-et-valeurs-de-base/2-representation-des-entiers-relatifs/</guid>
  <pubDate>Wed, 31 Jul 2024 15:15:56 GMT</pubDate>
</item>
<item>
  <title>Chapitre 3: Représentation des nombres à virgule</title>
  <link>https://www.lyceum.fr/1g/nsi/2-representation-des-donnees-types-et-valeurs-de-base/3-representation-des-nombres-a-virgule/</link>
  <description><![CDATA[ 




<div class="programme">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-1-contents" aria-controls="callout-1" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Programme
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-1" class="callout-1-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="programme">
<table class="table table-bordered table-hover caption-top">
<thead class="table-warning">
<tr class="header">
<th>Contenus</th>
<th>Capacités attendues</th>
<th>Commentaires</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Représentation approximative des nombres réels: notion de nombre flottant</td>
<td>Représentation approximative des nombres réels: notion de nombre flottant</td>
<td><code>0.2 + 0.1</code> n’est pas égal à <code>0.3</code>. Il faut éviter de tester l’égalité de deux flottants. Aucune connaissance précise de la norme IEEE-754 n’est exigible.</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div>

</div>
<div class="intro quarto-layout-panel" data-layout-ncol="2">
<div class="quarto-layout-row">
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<p>Nous avons appris à encoder des nombres entiers naturels, et relatifs, et nous avons vu que les limites physiques des machines imposaient des limites sur l’étendue des valeurs. Maintenant que nous allons tenter de coder les réels, les limites de notre machine vont encore entraîner des limites sur l’<em>étendue des valeurs</em>, mais également sur <strong>la précision des valeurs</strong>.</p>
</div>
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<p></p><figure class="wikimage figure"><picture>
			  <source type="image/webp" srcset="/img/zgYF8AyG5m-300.webp 300w, /img/zgYF8AyG5m-500.webp 500w, /img/zgYF8AyG5m-600.webp 600w" sizes="100vw">
  <source type="image/svg+xml" srcset="/img/zgYF8AyG5m-500.svg 500w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/zgYF8AyG5m-300.webp" width="600" height="114" alt="Pour encoder un nombre flottant on
utilise 1 bit de signe f bits pour la mantisse et e bits pour l'exposant." loading="lazy" decoding="async">
			</picture>
<figcaption id="caption">Pour encoder un nombre flottant on
utilise 1 bit de signe f bits pour la mantisse et e bits pour l'exposant.</figcaption><figcaption id="credit">©&nbsp;&nbsp;CC BY-SA 3.0&nbsp;<a id="image-description" href="//commons.wikimedia.org/wiki/File:General_floating_point.svg">via Wikimedia Commons</a></figcaption></figure><p></p>
</div>
</div>
</div>
<section id="virgule-fixe-et-virgule-flottante" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="virgule-fixe-et-virgule-flottante"><span class="header-section-number">1</span> Virgule fixe et virgule flottante</h2>
<p>Il existe deux façons de coder les nombres à virgule:</p>
<ul>
<li>Le codage en <strong>virgule fixe</strong> qui consiste à garder <em>un nombre fixe de chiffes après la virgule.</em></li>
</ul>
<div class="example">
<p>Par exemple sur un octet, on peut utiliser 4 bits pour la partie entière et 4 bits pour la partie décimale.</p>
<p>Ainsi, <code>0101 1011</code> a pour valeur:</p>
<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mn>2</mn><mn>2</mn></msup><mo>+</mo><msup><mn>2</mn><mn>0</mn></msup><mo>+</mo><msup><mn>2</mn><mrow><mi>−</mi><mn>1</mn></mrow></msup><mo>+</mo><msup><mn>2</mn><mrow><mi>−</mi><mn>2</mn></mrow></msup><mo>+</mo><msup><mn>2</mn><mrow><mi>−</mi><mn>3</mn></mrow></msup><mo>=</mo><mn>4</mn><mo>+</mo><mn>1</mn><mo>+</mo><mn>0.5</mn><mo>+</mo><mn>0.25</mn><mo>+</mo><mn>0.125</mn><mo>=</mo><mn>5</mn><mo>,</mo><mn>825</mn></mrow><annotation encoding="application/x-tex">
2^2 + 2^0 + 2^{-1} + 2^{-2} + 2^{-3} = 4 + 1 + 0.5 + 0.25 + 0.125 = 5,825
</annotation></semantics></math></p>
</div>
<ul>
<li>Dans le codage en <em>virgule flottante</em>, on garde <em>un nombre fixe de chiffres significatifs</em> et on réserve l’autre partie du codage à l’exposant. C’est une méthode semblable à la notation scientifique utilisée en physique, mais avec des puissances de 2.</li>
</ul>
<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>±</mi><mi>m</mi><mo>×</mo><msup><mn>2</mn><mi>n</mi></msup><mrow><mspace width="0.333em"></mspace><mtext mathvariant="normal"> avec </mtext><mspace width="0.333em"></mspace></mrow><mi>m</mi><mo>∈</mo><mo stretchy="false" form="prefix">[</mo><mn>1</mn><mo>;</mo><mn>2</mn><mo stretchy="false" form="prefix">[</mo></mrow><annotation encoding="application/x-tex">
\pm m \times  2^{n} \text{ avec } m \in [1; 2[
</annotation></semantics></math></p>
<p>C’est cette deuxième méthode qui est utilisée dans les ordinateurs et smartphones et que nous allons étudier cette année.</p>
</section>
<section id="principe-du-codage-en-virgule-flottante" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="principe-du-codage-en-virgule-flottante"><span class="header-section-number">2</span> Principe du codage en virgule flottante</h2>
<p>On représente un nombre à virgule flottante sous la forme:</p>
<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>s</mi><mspace width="0.222em"></mspace><mi>m</mi><mo>⋅</mo><msup><mn>2</mn><mi>n</mi></msup></mrow><annotation encoding="application/x-tex">
s\ m \cdot 2^n
</annotation></semantics></math></p>
<p></p><figure class="wikimage figure"><picture>
			  <source type="image/webp" srcset="/img/zgYF8AyG5m-300.webp 300w, /img/zgYF8AyG5m-500.webp 500w, /img/zgYF8AyG5m-600.webp 600w" sizes="100vw">
  <source type="image/svg+xml" srcset="/img/zgYF8AyG5m-500.svg 500w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/zgYF8AyG5m-300.webp" width="600" height="114" alt="Pour encoder un nombre flottant on
utilise 1 bit de signe f bits pour la mantisse et e bits pour l'exposant." loading="lazy" decoding="async">
			</picture>
<figcaption id="caption">Pour encoder un nombre flottant on
utilise 1 bit de signe f bits pour la mantisse et e bits pour l'exposant.</figcaption><figcaption id="credit">©&nbsp;&nbsp;CC BY-SA 3.0&nbsp;<a id="image-description" href="//commons.wikimedia.org/wiki/File:General_floating_point.svg">via Wikimedia Commons</a></figcaption></figure><p></p>
<p>Supposons un nombre flottant codé sur un octet utilisant 1 bit de signe, 3 bits pour l’exposant et 4 bits pour la mantisse: <code>1 100 1011</code></p>
<ul>
<li><p><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>s</mi><annotation encoding="application/x-tex">s</annotation></semantics></math> est le signe représenté par le bit de poids fort:</p>
<ul>
<li><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>s</mi><mo>=</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">s=0</annotation></semantics></math>: signe <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>+</mi><annotation encoding="application/x-tex">+</annotation></semantics></math></li>
<li><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>s</mi><mo>=</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">s=1</annotation></semantics></math>: signe <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>−</mi><annotation encoding="application/x-tex">-</annotation></semantics></math></li>
</ul>
<p><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>s</mi><mo>=</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">s=1</annotation></semantics></math> Notre codage représente donc un nombre <strong>négatif</strong>.</p></li>
<li><p><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>n</mi><annotation encoding="application/x-tex">n</annotation></semantics></math> est l’exposant représenté par un <em>entier relatif décalé</em> et non en complément à deux(ceci afin de faciliter la comparaison des exposants).</p>
<p>Ce décalage est de <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mn>2</mn><mrow><mi>e</mi><mo>−</mo><mn>1</mn></mrow></msup><mo>−</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">2^{e-1} - 1</annotation></semantics></math> <em>(e représente le nombre de bits utilisé pour coder l’exposant)</em></p>
<p>L’exposant a pour valeur <code>100</code> codé sur 3 bits, il doit être décalé de <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mn>2</mn><mn>2</mn></msup><mo>−</mo><mn>1</mn><mo>=</mo><mn>3</mn></mrow><annotation encoding="application/x-tex">2^{2} - 1 = 3</annotation></semantics></math>. Ainsi, puisque <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mn>100</mn><mn>2</mn></msub><mo>=</mo><msub><mn>4</mn><mn>10</mn></msub></mrow><annotation encoding="application/x-tex">100_2 = 4_{10}</annotation></semantics></math>, l’exposant <code>100</code> correspond à un exposant de 4-3=<strong>1</strong>.</p></li>
<li><p><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>m</mi><annotation encoding="application/x-tex">m</annotation></semantics></math> est la mantisse qui est un nombre binaire à virgule compris entre 1 inclus et 2 exclus. Le seul chiffre avant la virgule étant toujours 1, il n’est pas représenté(on le dit <em>implicite</em>), et le codage binaire de la mantisse représente donc uniquement les chiffres après la virgule qui sont despuissances <em>négatives</em> de 2: de gauche à droite, un demi, un quart, un huitème, un seizième…</p></li>
</ul>
<p>Dans notre exemple, la mantisse est: <code>1011</code>, elle représentera le nombre:</p>
<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>m</mi><mo>=</mo><mn>1</mn><mo>+</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mo>+</mo><mfrac><mn>1</mn><msup><mn>2</mn><mn>3</mn></msup></mfrac><mo>+</mo><mfrac><mn>1</mn><msup><mn>2</mn><mn>4</mn></msup></mfrac><mo>=</mo><mn>1</mn><mo>+</mo><mn>0</mn><mo>,</mo><mn>5</mn><mo>+</mo><mn>0</mn><mo>,</mo><mn>125</mn><mo>+</mo><mn>0</mn><mo>,</mo><mn>0625</mn><mo>=</mo><mn>1</mn><mo>,</mo><mn>6875</mn></mrow><annotation encoding="application/x-tex">
m = 1 + \frac{1}{2} +  \frac{1}{2^3}+ \frac{1}{2^4} =  1+0,5+0,125+0,0625 = 1,6875
</annotation></semantics></math></p>
<p>Le code <code>1 101 1011</code> sur un octet utilisant 1 bit de signe, 3 bits pour l’exposant et 4 bits pour la mantisse représente donc:</p>
<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>−</mi><mn>1</mn><mo>,</mo><mn>6875</mn><mo>⋅</mo><msup><mn>2</mn><mn>1</mn></msup><mo>=</mo><mi>−</mi><mn>3</mn><mo>,</mo><mn>375</mn></mrow><annotation encoding="application/x-tex">
- 1,6875 \cdot 2^{1}= -3,375
</annotation></semantics></math></p>
<div class="appli">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-2-contents" aria-controls="callout-2" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Application
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-2" class="callout-2-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="appli">
<p>Calculer la valeur représentée par le codage suivant sur 16 bits</p>
<p></p><figure class="wikimage figure"><picture>
			  <source type="image/webp" srcset="/img/votUdcgW_h-257.webp 257w, /img/votUdcgW_h-300.webp 300w, /img/votUdcgW_h-600.webp 600w" sizes="100vw">
  <source type="image/svg+xml" srcset="/img/votUdcgW_h-257.svg 257w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/votUdcgW_h-257.webp" width="600" height="175" alt="Les 16 bits sont répartis en 7 bits de mantisse, 8 bits d'exposant et 1 bit de signe." loading="lazy" decoding="async">
			</picture>
<figcaption id="caption">Les 16 bits sont répartis en 7 bits de mantisse, 8 bits d'exposant et 1 bit de signe.</figcaption><figcaption id="credit">©&nbsp;&nbsp;CC BY-SA 4.0&nbsp;<a id="image-description" href="//commons.wikimedia.org/wiki/File:Bfloat16_format.svg">via Wikimedia Commons</a></figcaption></figure><p></p>
</div>
</div>
</div>
</div>
</div>
</section>
<section id="la-norme-ieee-754" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="la-norme-ieee-754"><span class="header-section-number">3</span> La norme IEEE 754</h2>
<blockquote class="blockquote">
<p>L’IEEE 754 est une norme pour la représentation des nombres à virgule flottante en binaire. Elle est la norme la plus employée actuellement pour le calcul des nombres à virgule flottante dans le domaine informatique. <a href="http://fr.wikipedia.org/wiki/IEEE_754">Source Wikipédia</a></p>
</blockquote>
<p>Cette norme définit notamment 2 formats pour représenter des nombres à virgule flottante:</p>
<div>

</div>
<div class="quarto-layout-panel" data-layout-ncol="2">
<div class="quarto-layout-row">
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<p><em>simple précision</em> (32 bits : 1 bit de signe, 8 bits d’exposant (-126 à 127), 23 bits de mantisse),</p>
</div>
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<p><em>double précision</em> (64 bits : 1 bit de signe, 11 bits d’exposant (-1022 à 1023), 52 bits de mantisse).</p>
</div>
</div>
<div class="quarto-layout-row">
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<p></p><figure class="wikimage figure"><picture>
			  <source type="image/webp" srcset="/img/ILcXFYLmIC-300.webp 300w, /img/ILcXFYLmIC-342.webp 342w" sizes="100vw">
  <source type="image/png" srcset="/img/ILcXFYLmIC-300.png 300w, /img/ILcXFYLmIC-342.png 342w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/ILcXFYLmIC-300.webp" width="342" height="54" alt="Norme IEEE 754 de codage simple précision sur 32 bits." loading="lazy" decoding="async">
			</picture>
<figcaption id="caption">Norme IEEE 754 de codage simple précision sur 32 bits.</figcaption><figcaption id="credit">©&nbsp;&nbsp;CC BY-SA 3.0&nbsp;<a id="image-description" href="//commons.wikimedia.org/wiki/File:IEEE754_simple_precision.png">via Wikimedia Commons</a></figcaption></figure><p></p>
</div>
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<p></p><figure class="wikimage figure"><picture>
			  <source type="image/webp" srcset="/img/cSNxhBV6c_-300.webp 300w, /img/cSNxhBV6c_-600.webp 600w, /img/cSNxhBV6c_-662.webp 662w" sizes="100vw">
  <source type="image/png" srcset="/img/cSNxhBV6c_-300.png 300w, /img/cSNxhBV6c_-600.png 600w, /img/cSNxhBV6c_-662.png 662w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/cSNxhBV6c_-300.webp" width="662" height="54" alt="Norme IEEE 754 de codage simple précision sur 64 bits." loading="lazy" decoding="async">
			</picture>
<figcaption id="caption">Norme IEEE 754 de codage simple précision sur 64 bits.</figcaption><figcaption id="credit">©&nbsp;&nbsp;CC BY-SA 3.0&nbsp;<a id="image-description" href="//commons.wikimedia.org/wiki/File:IEEE754_double_precision.png">via Wikimedia Commons</a></figcaption></figure><p></p>
</div>
</div>
</div>
<div class="appli">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-3-contents" aria-controls="callout-3" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Application: Réaliser la conversion en base 2 de la valeur approchée de pi: 3.141592653589793
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-3" class="callout-3-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="appli" data-titre="Réaliser la conversion en base 2 de la valeur approchée de pi: 3.141592653589793">
<ul>
<li>en simple précision: <a href="http://www.binaryconvert.com/result_float.html?decimal=051046049052049053057050054053051053056057055057051">ici</a></li>
<li>en double précision: <a href="http://www.binaryconvert.com/result_double.html?decimal=051046049052049053057050054053051053056057055057051">ici</a></li>
</ul>
<p>Comparer la précision obtenue dans les deux cas.</p>
</div>
</div>
</div>
</div>
</div>
<div class="plus">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-4-contents" aria-controls="callout-4" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
En plus
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-4" class="callout-4-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="plus">
<p>La norme donne une signification particulière au plus petit et au plus grand exposant pour définir certaines valeurs spéciales.</p>
<ul>
<li>le zéro positif: <code>+0 = 0 00000000000 0000000000000000000000000000000000000000000000000000</code>,</li>
<li>le zéro négatif: <code>-0 = 1 00000000000 0000000000000000000000000000000000000000000000000000</code>,</li>
<li>l’infini positif: <code>+∞ = 0 11111111111 0000000000000000000000000000000000000000000000000000</code>,</li>
<li>l’infini négatif: <code>+∞ = 1 11111111111 0000000000000000000000000000000000000000000000000000</code>,</li>
<li>Not a Number …</li>
</ul>
<p><a href="https://en.wikipedia.org/wiki/Double-precision_floating-point_format#Double-precision_examples" class="cite-source">Article Wikipédia en anglais</a></p>
</div>
</div>
</div>
</div>
</div>
</section>
<section id="tests-dégalité-sur-les-flottants" class="level2" data-number="4">
<h2 data-number="4" class="anchored" data-anchor-id="tests-dégalité-sur-les-flottants"><span class="header-section-number">4</span> Tests d’égalité sur les flottants</h2>
<p>Si on effectue le calcul <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>0.2</mn><mo>+</mo><mn>0.1</mn></mrow><annotation encoding="application/x-tex">0.2 +0.1</annotation></semantics></math> en Python, on obtient:</p>
<div class="sourceCode" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb1-1"><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;&gt;&gt;</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.2</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.1</span></span>
<span id="cb1-2"><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.30000000000000004</span></span></code></pre></div>
<p>Et contre toute attente, certains tests que l’on aurait cru positifs renvoient des valeurs négatives(ce que l’on appelle un <em><a href="https://fr.wikipedia.org/wiki/Faux_n%C3%A9gatif">faux négatif</a></em>):</p>
<div class="sourceCode" id="cb2" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb2-1"><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;&gt;&gt;</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.2</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.1</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.3</span></span>
<span id="cb2-2"><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">False</span></span></code></pre></div>
<p>Ainsi <strong>un calcul avec des nombres à virgule ne peut-être qu’approximatif</strong>. Cependant, plus on augmente la taille du registre du processeur et plus nous pourrons représenter de valeurs, et plus nos calculs gagneront en précision.</p>
<p>Comme nous sommes limités sur la précision des flottants, on transforme les tests d’égalités en tests d’inégalités à une précision donnée.</p>
<p>Ainsi:</p>
<div class="sourceCode" id="cb3" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb3-1"><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;&gt;&gt;</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.2</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.1</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.3</span></span>
<span id="cb3-2"><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">False</span></span></code></pre></div>
<p>Par contre, en utilisant une précision du millionième:</p>
<div class="sourceCode" id="cb4" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb4-1"><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;&gt;&gt;</span> <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> math <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># pour utiliser la fonction valeur absolue  fabs()</span></span>
<span id="cb4-2"><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;&gt;&gt;</span> precision <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1E-6</span></span>
<span id="cb4-3"><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;&gt;&gt;</span> math.fabs((<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.2</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.1</span>) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.3</span>)  <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&lt;</span> precision</span>
<span id="cb4-4"><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">True</span></span></code></pre></div>
<p>D’ailleurs la bibliothèque <code>math</code> de Python inclut à cet effet la fonction <a href="https://docs.python.org/3/library/math.html#math.isclose"><code>math.isclose()</code></a>.</p>
<div class="sourceCode" id="cb5" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb5-1"><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;&gt;&gt;</span> <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">from</span> math <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> isclose</span>
<span id="cb5-2"><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;&gt;&gt;</span> isclose(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.2</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.1</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.3</span>)</span>
<span id="cb5-3"><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">True</span></span></code></pre></div>


</section>

 ]]></description>
  <category>1NSI</category>
  <guid>https://www.lyceum.fr/1g/nsi/2-representation-des-donnees-types-et-valeurs-de-base/3-representation-des-nombres-a-virgule/</guid>
  <pubDate>Wed, 31 Jul 2024 15:15:56 GMT</pubDate>
</item>
<item>
  <title>Chapitre 4: Représentation des textes</title>
  <link>https://www.lyceum.fr/1g/nsi/2-representation-des-donnees-types-et-valeurs-de-base/4-representation-des-textes/</link>
  <description><![CDATA[ 




<div class="programme">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-1-contents" aria-controls="callout-1" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Programme
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-1" class="callout-1-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="programme">
<table class="table table-bordered table-hover caption-top">
<thead class="table-warning">
<tr class="header">
<th>Contenus</th>
<th>Capacités attendues</th>
<th>Commentaires</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>Représentation d’un texte en machine.</p>
<p>Exemples des encodages <code>ASCII</code>, <code>ISO-8859-1</code>, <code>Unicode</code></p></td>
<td><p>Identifier l’intérêt des différents systèmes d’encodage.</p>
<p>Convertir un fichier texte dans différents formats d’encodage.</p></td>
<td>Aucune connaissance précise des normes d’encodage n’est exigible</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div>

</div>
<div class="intro quarto-layout-panel" data-layout-ncol="2">
<div class="quarto-layout-row">
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<p>Dans ce chapitre, nous allons voir comment coder en binaire du texte, et donc apprendre quelles sont les méthodes utilisées pour encoder des caractères en binaire. Nous allons voir que le choix du codage des caractères dépend fortement des langues, ainsi la langue française comporte de nombreuses lettres spécifiques: <kbd>é</kbd>, <kbd>è</kbd>, <kbd>ê</kbd>, <kbd>ç</kbd>, <kbd>à</kbd>…</p>
</div>
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><picture>
			  <source type="image/webp" srcset="/img/wDKlPflTog-300.webp 300w, /img/wDKlPflTog-600.webp 600w, /img/wDKlPflTog-1364.webp 1364w" sizes="100vw">
  <source type="image/png" srcset="/img/wDKlPflTog-300.png 300w, /img/wDKlPflTog-600.png 600w, /img/wDKlPflTog-1364.png 1364w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/wDKlPflTog-300.webp" width="1364" height="812" alt="" loading="lazy" decoding="async">
			</picture>
</p>
<figcaption>Table des caractères ISO-8859-1 qu’on utilisait pour encoder les textes français</figcaption>
</figure>
</div>
</div>
</div>
</div>
<div>

</div>
<div class="quarto-layout-panel" data-layout-ncol="2">
<div class="quarto-layout-row">
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<p>Le premier codage à avoir été utilisé est le codage ASCII <em>(American Standard Code for Information Interchange)</em>, qui ne prévoit pas l’utilisation de lettres accentuées et qui peut vous amener parfois à lire des textes à la limite du compréhensible sur vos écrans.</p>
</div>
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><picture>
			  <source type="image/webp" srcset="/img/fNE7dZKuJi-300.webp 300w, /img/fNE7dZKuJi-600.webp 600w, /img/fNE7dZKuJi-915.webp 915w" sizes="100vw">
  <source type="image/png" srcset="/img/fNE7dZKuJi-300.png 300w, /img/fNE7dZKuJi-600.png 600w, /img/fNE7dZKuJi-915.png 915w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/fNE7dZKuJi-300.webp" width="915" height="108" alt="" loading="lazy" decoding="async">
			</picture>
</p>
<figcaption>Image d’un texte présentant une erreur d’encodage de caractères</figcaption>
</figure>
</div>
</div>
</div>
</div>
<section id="le-codage-ascii" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="le-codage-ascii"><span class="header-section-number">1</span> Le codage ASCII</h2>
<blockquote class="blockquote">
<p>Le codage ASCII est une norme de codage de caractères en informatique ancienne et connue pour son influence incontournable sur les codages de caractères qui lui ont succédé. Elle était la plus largement compatible pour ce qui est des caractères latins non accentués. <strong>ASCII contient les caractères nécessaires pour écrire en anglais.</strong></p>
</blockquote>
<blockquote class="blockquote">
<p>L’ASCII définit seulement <strong>128 caractères</strong> numérotés de 0 à 127 et codés en binaire de 0000000 à 1111111. Sept bits suffisent donc pour représenter un caractère codé en ASCII. Toutefois, les ordinateurs travaillant presque tous sur un multiple de huit bits (multiple d’un octet) depuis les années 1970, chaque caractère d’un texte en ASCII est souvent stocké dans un octet dont le 8e bit est 0. &nbsp; <a href="https://fr.wikipedia.org/wiki/American_Standard_Code_for_Information_Interchange" class="cite-source">Article ASCII sur Wikipédia</a></p>
</blockquote>
<p>Voici la table ASCII:</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><picture>
			  <source type="image/webp" srcset="/img/UrP4z7k20Q-300.webp 300w, /img/UrP4z7k20Q-600.webp 600w, /img/UrP4z7k20Q-5490.webp 5490w" sizes="100vw">
  <source type="image/png" srcset="/img/UrP4z7k20Q-300.png 300w, /img/UrP4z7k20Q-600.png 600w, /img/UrP4z7k20Q-5490.png 5490w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/UrP4z7k20Q-300.webp" width="5490" height="1656" alt="" loading="lazy" decoding="async">
			</picture>
</p>
<figcaption>Table ASCII</figcaption>
</figure>
</div>
<p>Certains des caractères présents ne peuvent pas être affichés(repérés par un fond bleu), ce sont des caractères de contrôle. Vous pouvez trouver leur signification sur cette <a href="http://isn.fil.univ-lille1.fr/activite3/doc/ascii.txt">page</a>.</p>
<p>Pour lire le tableau, on associe au caractère le code binaire suivant: <code>n°deligne_n°decolonne</code>. Par exemple, le caractère <kbd>a</kbd> est situé dans la case correspondant à la 7ᵉ ligne, 2ᵉ colonne. Sa représentation binaire est:<code>110_0001</code> soit sous la forme d’un octet: <code>01100001</code>. Ce qui correspond au caractère 97 en décimal.</p>
<p>Pour faciliter la lecture des codes ASCII par un humain, il est plus commode de coder les numéros de ligne et de colonne en hexadécimal, et la lettre ‘a’ aura alors pour code <code>61</code> en hexadécimal.</p>
</section>
<section id="lencodage-iso" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="lencodage-iso"><span class="header-section-number">2</span> L’encodage ISO</h2>
<blockquote class="blockquote">
<p>La nécessité de représenter des textes comportant des caractères non présents dans la table ASCII tels ceux de l’alphabet latin utilisés en français comme le ‘à’, le ‘é’ ou le ‘ç’ impose l’utilisation d’un autre codage que l’ASCII.</p>
</blockquote>
<div class="prop">
<p>Les codages ISO sont des extensions du codage ASCII:</p>
<ul>
<li>Le codage des 128 caractères présents dans la table ASCII est conservé;</li>
<li>les 128 caractères supplémentaires sont <em>régionalisés</em> en fonction des divers alphabets du monde.</li>
</ul>
</div>
<blockquote class="blockquote">
<p>L’ISO, organisation internationale de normalisation, propose de son côté plusieurs variantes de codages adaptées aux différentes langues. La plus utilisée concerne les langues européennes occidentales. Il s’agit de l’ISO-8859-1, aussi nommé <code>ISO-Latin1</code>. <a href="http://isn.fil.univ-lille1.fr/activite3/codcar.html" class="cite-source">Université de Lille</a></p>
</blockquote>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><picture>
			  <source type="image/webp" srcset="/img/wDKlPflTog-300.webp 300w, /img/wDKlPflTog-600.webp 600w, /img/wDKlPflTog-1364.webp 1364w" sizes="100vw">
  <source type="image/png" srcset="/img/wDKlPflTog-300.png 300w, /img/wDKlPflTog-600.png 600w, /img/wDKlPflTog-1364.png 1364w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/wDKlPflTog-300.webp" width="1364" height="812" alt="" loading="lazy" decoding="async">
			</picture>
</p>
<figcaption>Table des caractères ISO-8859-1</figcaption>
</figure>
</div>
<p>On peut constater que cette table ne prend pas en charge le caractère <kbd>€</kbd>, ainsi une nouvelle norme mieux adaptée au français a été introduite l’<code>ISO 8859-15</code>.</p>
<p>Certains caractères ont été ajoutés dont <kbd>€</kbd>, <kbd>œ</kbd>, <kbd>Œ</kbd>…</p>
<p>Mais il existe d’autres variantes adaptées à d’autres langues:</p>
<ul>
<li><code>ISO-8859-2</code> pour les pays d’Europe de l’Est,</li>
<li><code>ISO-8859-3</code> pour les pays du sud est de l’Europe…</li>
</ul>
<p>Du fait de l’internationalisation des pratiques en informatique, on a mis au point un standard international permettant d’encoder les caractères de toutes les langues: le standard <strong><code>Unicode</code></strong>.</p>
</section>
<section id="lencodage-unicode-utf-8" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="lencodage-unicode-utf-8"><span class="header-section-number">3</span> L’encodage Unicode UTF-8</h2>
<p>L’encodage UTF-8 est un encodage en élaboration qui permet d’encoder tous les caractères de toutes les langues, il est actuellement en train de s’imposer face aux antres encodages en raison de son universalité.</p>
<p></p><figure class="wikimage figure"><picture>
			  <source type="image/webp" srcset="/img/jX7yYJsvQn-300.webp 300w, /img/jX7yYJsvQn-600.webp 600w, /img/jX7yYJsvQn-734.webp 734w" sizes="100vw">
  <source type="image/png" srcset="/img/jX7yYJsvQn-300.png 300w, /img/jX7yYJsvQn-600.png 600w, /img/jX7yYJsvQn-734.png 734w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/jX7yYJsvQn-300.webp" width="734" height="492" alt="Après de nombreuses propositions pour remplacer le codage ASCII, il semble que l'encodage UTF-8 semble prendre le dessus." loading="lazy" decoding="async">
			</picture>
<figcaption id="caption">Après de nombreuses propositions pour remplacer le codage ASCII, il semble que l'encodage UTF-8 semble prendre le dessus.</figcaption><figcaption id="credit">©&nbsp;&nbsp;CC BY-SA 4.0&nbsp;<a id="image-description" href="//commons.wikimedia.org/wiki/File:UnicodeGrow2b.png">via Wikimedia Commons</a></figcaption></figure><p></p>
<div class="prop">
<p>La norme UTF-8 utilise un codage de longueurs variable sur un à quatre octets. Les caractères à un octet sont équivalents avec le code ASCII assurant ainsi la <strong>rétro-compatibilité avec le standard ASCII</strong>.</p>
</div>
<div class="plus">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-2-contents" aria-controls="callout-2" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
En plus: Statistiques actualisées
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-2" class="callout-2-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="plus" data-titre="Statistiques actualisées">
<p>Au 21 septembre 2019, l’UTF-8 est utilisé par 94% des sites. <a href="https://w3techs.com/technologies/overview/character_encoding/all">Source</a></p>
</div>
</div>
</div>
</div>
</div>
<blockquote class="blockquote">
<p>À l’évidence, 256 caractères ne suffisant pas pour représenter les lettres de tous les alphabets utilisés (pensons au russe, à l’hébreu, etc.), un nouveau standard a été introduit : Unicode. La table Unicode comporte la définition de près de cent cinquante mille caractères. &nbsp; Le codage de cette table est multiple. Le codage le plus couramment utilisé se nomme UTF-8. Son principe est le suivant : une première série de caractères sont codés sur un octet. D’autres caractères sont codés sur deux octets, le premier octet débute par ‘110’ pour l’indiquer, l’octet suivant débute par ‘10’. De même des codages sur 3 ou 4 octets sont utilisés pour d’autres caractères. (Cette rapide introduction à UTF-8 est volontairement simplifiée.) &nbsp; Les 128 premiers caractères de la table UTF-8 sont compatibles avec le codage ASCII. Ainsi le codage UTF-8 d’un texte ne comportant que des caractères présents dans la table ASCII sera le même que le codage ASCII de ce texte. &nbsp; Ce ne sera pas vrai pour un texte ISO-Latin-1. Il importe donc, quand on veut décoder un texte, de savoir quel est le codage utilisé sous peine de décoder improprement les caractères. <a href="http://isn.fil.univ-lille1.fr/activite3/codcar.html" class="cite-source">Université de Lille</a></p>
</blockquote>
<p>La table complète des caractères Unicode peut être consultée sur l’article <a href="https://en.wikipedia.org/wiki/List_of_Unicode_characters">Wikipédia</a></p>
<p>Par exemple si on cherche dans cette table la lettre <kbd>é</kbd>, on trouve le code:<strong><code>U+00E9</code></strong> appelé point code, en binaire cela correspond au nombre décimal 233, et au nombre binaire <code>1110 1001</code>. Ce nombre binaire sera représenté en UTF-8 sur deux octets sous la forme: <code>110x_xxxx 10xx_xxxx</code>. Les chiffres binaires du point de code sont rangés de droite à gauche aux positions ‘x’ de ce schéma.</p>
<p>On obtient donc <code>1100_0011 1010_1001</code> pour le caractère <kbd>é</kbd>.</p>
<p>Ce qui représente en hexadécimal:<code>C3 A9</code>, il occupe donc deux octets.</p>
</section>
<section id="lencodage-des-caractères-en-python" class="level2" data-number="4">
<h2 data-number="4" class="anchored" data-anchor-id="lencodage-des-caractères-en-python"><span class="header-section-number">4</span> L’encodage des caractères en python</h2>
<p>En <strong><code>python 3</code></strong>, tous les fichiers doivent être codés en UTF-8, et les chaînes de caractères <code>string</code> sont encodées en UTF-8, contrairement aux <code>bytes</code> qui ne doivent contenir que des caractères ASCII.</p>
</section>
<section id="lencodage-des-caractères-en-html" class="level2" data-number="5">
<h2 data-number="5" class="anchored" data-anchor-id="lencodage-des-caractères-en-html"><span class="header-section-number">5</span> L’encodage des caractères en <code>html</code></h2>
<p>Pour obtenir un affichage correct des caractères spéciaux en <code>html</code>, il faut déclarer l’encodage utf-8 dans le fichier d’en-tête(<code>&lt;head&gt;</code>) de la page <code>html</code> en utilisant la balise <code>&lt;meta&gt;</code>.</p>
<p>Voici la structure type d’un fichier <code>html5</code>.</p>
<div class="sourceCode" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode numberSource html number-lines code-with-copy"><code class="sourceCode html"><span id="cb1-1"><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;!doctype</span> html<span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb1-2"><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">html</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb1-3"></span>
<span id="cb1-4">    <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">head</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb1-5">        <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">meta</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> charset</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"utf-8"</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb1-6">        <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">title</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span>Titre du document<span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;/</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">title</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb1-7">    <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;/</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">head</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb1-8"></span>
<span id="cb1-9">    <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">body</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb1-10">        Contenu du document, avec d'éventuels accents!!!</span>
<span id="cb1-11">        et caractères étranges , de toutes les langues...</span>
<span id="cb1-12">        ...ظɶ</span>
<span id="cb1-13">        ...ऴ,ඛ</span>
<span id="cb1-14">        ...ტ,ላ,Ꮹ,ᜨ...</span>
<span id="cb1-15">    <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;/</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">body</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb1-16"><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;/</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">html</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span></code></pre></div>
<p>Il est également possible d’afficher des caractères par leur code <code>html</code>, ces codes sont également présents sur l’article <a href="https://en.wikipedia.org/wiki/List_of_Unicode_characters">Wikipédia</a>.</p>
<p>Par exemple le caractère <kbd>À</kbd> <code>U+00C0</code> peut être codé en <code>html</code> par <code>&amp;#192;</code>, ou encore en notation hexadécimale: <code>&amp;#xc0;</code></p>


</section>

 ]]></description>
  <category>1NSI</category>
  <guid>https://www.lyceum.fr/1g/nsi/2-representation-des-donnees-types-et-valeurs-de-base/4-representation-des-textes/</guid>
  <pubDate>Wed, 31 Jul 2024 15:15:56 GMT</pubDate>
</item>
<item>
  <title>Chapitre 5: Les booléens</title>
  <link>https://www.lyceum.fr/1g/nsi/2-representation-des-donnees-types-et-valeurs-de-base/5-les-booleens/</link>
  <description><![CDATA[ 




<div class="programme">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-1-contents" aria-controls="callout-1" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Programme
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-1" class="callout-1-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="programme">
<table class="table table-bordered table-hover caption-top">
<thead class="table-warning">
<tr class="header">
<th>Contenus</th>
<th>Capacités attendues</th>
<th>Commentaires</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>Valeurs booléennes : <code>0</code>, <code>1</code>.</p>
<p>Opérateurs booléens : <code>and</code>, <code>or</code>, <code>not</code>.</p>
<p>Expressions booléennes</p></td>
<td>Dresser la table d’une d’une expression booléenne.</td>
<td><p>Le ou exclusif (<code>xor</code>) est évoqué.</p>
<p>Quelques applications directes comme l’addition binaire sont présentées.</p>
<p>L’attention des élèves est attirée sur le caractère séquentiel de certains opérateurs booléens.</p></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<!-- Uniformisation des notations & | ! à la sympy pour se rapprocher du C ou js et car on est en info

variables notées comme des variables propositionnelles: P Q R(Wikipedia) au lieu de x,y,z ou a,b,c,d...
https://fr.wikipedia.org/wiki/Variable_propositionnelle

On peut envisager un TP TD simplifications par python vérifications

 -->
<div>

</div>
<div class="intro quarto-layout-panel" data-layout-ncol="2">
<div class="quarto-layout-row">
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<p>Au XIXe siècle, le britannique <em>Georges Boole</em> crée une algèbre pour traduire les raisonnements logiques en opérations. Plus tard, au début de l’informatique dans les années 1930, <em>Claude Shannon</em> montre dans sa <a href="https://en.wikipedia.org/wiki/A_Symbolic_Analysis_of_Relay_ET_Switching_Circuits">thèse</a> qu’il devrait également être possible d’utiliser des arrangements de relais électriques pour résoudre des problèmes d’algèbre booléenne. La route était ouverte à l’apparition des premiers ordinateurs électriques, et bientôt électroniques.</p>
</div>
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<p></p><figure class="wikimage figure"><picture>
			  <source type="image/webp" srcset="/img/nESwF_lGu7-300.webp 300w, /img/nESwF_lGu7-600.webp 600w, /img/nESwF_lGu7-1834.webp 1834w" sizes="100vw">
  <source type="image/jpeg" srcset="/img/nESwF_lGu7-300.jpeg 300w, /img/nESwF_lGu7-600.jpeg 600w, /img/nESwF_lGu7-1834.jpeg 1834w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/nESwF_lGu7-300.webp" width="1834" height="2077" alt="Le mathématicien britannique Georges Boole (1815-1864) est le fondateur de la logique symbolique moderne." loading="lazy" decoding="async">
			</picture>
<figcaption id="caption">Le mathématicien britannique Georges Boole (1815-1864) est le fondateur de la logique symbolique moderne.</figcaption><figcaption id="credit">&nbsp;Public domain&nbsp;<a id="image-description" href="//commons.wikimedia.org/wiki/File:PSM_V17_D740_George_Boole.jpg">via Wikimedia Commons</a></figcaption></figure><p></p>
</div>
</div>
</div>
<p>Dans ce cours, nous allons nous intéresser à un type simple, les booléens qui ne possèdent que deux valeurs et qui sont donc codés que sur un seul bit:</p>
<ul>
<li><em>FAUX</em>: dont la syntaxe peut varier suivant les langages de programmation; <code>0</code> <code>False</code>, <code>false</code> …</li>
<li><em>VRAI</em>: noté <code>0</code>, <code>True</code>, <code>true</code> …</li>
</ul>
<p>Ces types sont extrêmement utilisés en informatique notamment pour l’exécution <strong>conditionnelle</strong> de code en fonction des conditions. La fameuse instruction <code>if ... else</code>.</p>
<p>Comme il n’existe que deux valeurs booléennes, les opérations ne sont pas les mêmes qu’avec les nombres.</p>
<section id="introduction-à-lalgèbre-de-boole" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="introduction-à-lalgèbre-de-boole"><span class="header-section-number">1</span> Introduction à l’algèbre de Boole</h2>
<p>Dans le monde noir et blanc des idéaux, il y a une vérité absolue. C’est-à-dire que tout est vrai ou faux. Dans ce contexte philosophique, considérons les exemples suivants:</p>
<blockquote class="blockquote">
<p>“Un plus un égal deux.” <strong>Vrai ou faux?</strong></p>
</blockquote>
<p>C’est (sans doute) vrai!</p>
<blockquote class="blockquote">
<p>“1 + 1 = 2” ET “2 + 2 = 4” <strong>Vrai ou faux? </strong></p>
</blockquote>
<p>C’est aussi vrai.</p>
<p>Mais qu’en est-il:</p>
<blockquote class="blockquote">
<p>“1 + 1 = 3” OU “Sydney est en Australie” <strong>Vrai ou faux?</strong></p>
</blockquote>
<p>C’est vrai! Bien que 1 + 1 = 3 ne soit pas vrai, le <code>OU</code> dans l’instruction a indiqué que, si l’une ou l’autre partie de l’instruction est vraie, l’instruction entière l’est également.</p>
<p>Considérons maintenant un exemple plus déconcertant</p>
<blockquote class="blockquote">
<p>“2 + 2 = 4” OU “1 + 1 = 3” ET “1 - 3 = -1” <strong>Vrai ou faux?</strong></p>
</blockquote>
<p>La vérité ou la fausseté des déclarations dépend de l’ordre dans lequel vous évaluez la déclaration. Si vous évaluez d’abord “2 + 2 = 4 <code>OU</code> 1 + 1 = 3”, la déclaration est fausse et sinon vraie. Comme en algèbre ordinaire, il est nécessaire de définir certaines règles pour régir l’ordre d’évaluation, afin d’éviter toute ambiguïté.</p>
<p>Avant de décider dans quel ordre évaluer les énoncés, nous faisons ce que la plupart des mathématiciens aiment faire, remplacer les phrases par des symboles ces symboles représentent ce que l’on appelle des <strong>variables propositionnelles</strong>:</p>
<ul>
<li>Soit <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>P</mi><annotation encoding="application/x-tex">P</annotation></semantics></math> la vérité ou la fausseté de l’énoncé 2 + 2 = 4.</li>
<li>Soit <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>Q</mi><annotation encoding="application/x-tex">Q</annotation></semantics></math> la vérité ou la fausseté de l’énoncé 1 + 1 = 3.</li>
<li>Soit <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>R</mi><annotation encoding="application/x-tex">R</annotation></semantics></math> la vérité ou la fausseté de l’énoncé 1 - 3 = -1.</li>
</ul>
<p>Ensuite, l’exemple ci-dessus peut être récrit de manière plus compacte:</p>
<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>P</mi><mspace width="0.222em"></mspace><mtext mathvariant="normal">ou</mtext><mspace width="0.222em"></mspace><mi>Q</mi><mspace width="0.222em"></mspace><mtext mathvariant="normal">et</mtext><mspace width="0.222em"></mspace><mi>R</mi></mrow><annotation encoding="application/x-tex">
P\ \textrm{ou}\ Q\ \textrm{et}\ R
</annotation></semantics></math></p>
<p>Pour aller encore plus loin, les mathématiciens remplacent également les opérations par des signes <strong>OU par <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>∨</mi><annotation encoding="application/x-tex">\vee</annotation></semantics></math></strong> et <strong>ET par <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>∧</mi><annotation encoding="application/x-tex">\wedge</annotation></semantics></math></strong>, l’énoncé devient:</p>
<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>P</mi><mo>∨</mo><mi>Q</mi><mo>∧</mo><mi>R</mi></mrow><annotation encoding="application/x-tex">
P \vee Q \wedge R
</annotation></semantics></math></p>
<p>Il faut également établir l’ordre de priorité. Nous évaluons <code>ET</code> en premier, puis <code>OU</code> avec le P.</p>
<p>La déclaration <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>P</mi><mo>∨</mo><mi>Q</mi><mo>∧</mo><mi>R</mi></mrow><annotation encoding="application/x-tex">P \vee Q \wedge R</annotation></semantics></math> est vraie on peut écrire:</p>
<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>P</mi><mo>∨</mo><mi>Q</mi><mo>∧</mo><mi>R</mi><mo>=</mo><mtext mathvariant="normal">VRAI</mtext></mrow><annotation encoding="application/x-tex">
 P \vee Q \wedge R = \textrm{VRAI}
 </annotation></semantics></math></p>
</section>
<section id="opérations-fondamentales-et-notations" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="opérations-fondamentales-et-notations"><span class="header-section-number">2</span> Opérations fondamentales et notations</h2>
<p>Dans ce cours on notera les valeurs <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mtext mathvariant="normal">VRAI</mtext><mo>=</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">\textrm{VRAI} = 1</annotation></semantics></math> et <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mtext mathvariant="normal">FAUX</mtext><mo>=</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">\textrm{FAUX} = 0</annotation></semantics></math>.</p>
<p>L’algèbre booléenne est construite à partir de <a href="https://fr.wikipedia.org/wiki/Alg%C3%A8bre_de_Boole_(logique)#Fonctions_logiques_fondamentales">3 opérations fondamentales</a>, les notations dépendent du domaine d’étude (logique, électronique, algèbre…), on utilisera une notation proche de <em>langages de programmation</em> usuels tels que le C ou le javascript.</p>
<table class="table table-bordered table-hover caption-top">
<thead class="table-warning">
<tr class="header">
<th>Opération</th>
<th>Écriture utilisée</th>
<th>Écritures rencontrées</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>ET</td>
<td><code>&amp;</code></td>
<td><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>×</mi><annotation encoding="application/x-tex">\times</annotation></semantics></math> ou <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>⋅</mi><annotation encoding="application/x-tex">\cdot</annotation></semantics></math> ou <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>∧</mi><annotation encoding="application/x-tex">\wedge</annotation></semantics></math></td>
</tr>
<tr class="even">
<td>OU</td>
<td><code>|</code></td>
<td><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>+</mi><annotation encoding="application/x-tex">+</annotation></semantics></math> ou <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>∨</mi><annotation encoding="application/x-tex">\vee</annotation></semantics></math></td>
</tr>
<tr class="odd">
<td>NON</td>
<td><code>!</code></td>
<td>P’, ~P, <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo>¬</mo><mi>P</mi></mrow><annotation encoding="application/x-tex">\neg P</annotation></semantics></math>, <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mover><mi>P</mi><mo accent="true">¯</mo></mover><annotation encoding="application/x-tex">\overline{P}</annotation></semantics></math></td>
</tr>
</tbody>
</table>
<div class="prop">
<p>Le ET logique (<code>&amp;</code>) est <strong>prioritaire</strong> sur le OU (<code>|</code>).</p>
</div>
<p>On notera dans ce cours les <strong>variables booléennes</strong> avec des lettres majuscules: <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>P</mi><annotation encoding="application/x-tex">\displaystyle
P</annotation></semantics></math>, <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>Q</mi><annotation encoding="application/x-tex">\displaystyle Q</annotation></semantics></math>, <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>R</mi><annotation encoding="application/x-tex">\displaystyle R</annotation></semantics></math>… On parle de <a href="https://fr.wikipedia.org/wiki/Variable_propositionnelle">variable propositionnelle</a>.</p>
<p>Dans les langages informatiques, les syntaxes peuvent être encore différentes!</p>
<table class="table table-bordered table-hover caption-top">
<thead class="table-warning">
<tr class="header">
<th>Opération</th>
<th>python</th>
<th>javascript</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><strong>Valeurs booléennes</strong></td>
<td></td>
<td></td>
</tr>
<tr class="even">
<td>VRAI = 1</td>
<td><code>True</code></td>
<td><code>true</code></td>
</tr>
<tr class="odd">
<td>FAUX = 0</td>
<td><code>False</code></td>
<td><code>false</code></td>
</tr>
<tr class="even">
<td><strong>Opérateurs booléens</strong></td>
<td></td>
<td></td>
</tr>
<tr class="odd">
<td>NON (!)</td>
<td><code>not a</code></td>
<td><code>!a</code></td>
</tr>
<tr class="even">
<td>ET (&amp;)</td>
<td><code>a and b</code></td>
<td><code>a &amp;&amp; b</code></td>
</tr>
<tr class="odd">
<td>OU (|)</td>
<td><code>a or b</code></td>
<td><code>a || b</code></td>
</tr>
</tbody>
</table>
</section>
<section id="tables-de-vérités" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="tables-de-vérités"><span class="header-section-number">3</span> Tables de vérités</h2>
<dl>
<dt>
Tables de vérité
</dt>
<dd>
<div>
<p>Une table de vérité donne tous les résultats possibles d’une opération booléenne en fonction de la ou les entrées.</p>
</div>
</dd>
</dl>
<p>Nous allons dans un premier temps nous intéresser aux tables de vérité des trois fonctions logiques fondamentales:</p>
<section id="fonction-non-logique" class="level3" data-number="3.1">
<h3 data-number="3.1" class="anchored" data-anchor-id="fonction-non-logique"><span class="header-section-number">3.1</span> Fonction NON LOGIQUE: <code>!</code></h3>
<p>La fonction logique <code>NON</code> n’a qu’un argument.</p>
<p>Elle renvoie l’inverse de son argument <code>FAUX</code> si l’argument est <code>VRAI</code>, et vice-versa.</p>
<table class="table table-bordered table-hover caption-top">
<thead class="table-warning">
<tr class="header">
<th>P</th>
<th>!P</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>0</p>
<p>0</p></td>
<td><p>1</p>
<p>0</p></td>
</tr>
</tbody>
</table>
</section>
<section id="fonction-et-logique" class="level3" data-number="3.2">
<h3 data-number="3.2" class="anchored" data-anchor-id="fonction-et-logique"><span class="header-section-number">3.2</span> Fonction ET LOGIQUE: <code>&amp;</code></h3>
<p>La fonction <code>ET LOGIQUE</code> a deux arguments, elle renvoie <code>VRAI</code> si les deux arguments ont pour valeur <code>VRAI</code>.</p>
<table class="table table-bordered table-hover caption-top">
<thead class="table-warning">
<tr class="header">
<th>P</th>
<th>Q</th>
<th>P &amp; Q</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>0</p>
<p>0</p>
<p>1</p>
<p>1</p></td>
<td><p>0</p>
<p>1</p>
<p>0</p>
<p>1</p></td>
<td><p>0</p>
<p>0</p>
<p>0</p>
<p>1</p></td>
</tr>
</tbody>
</table>
<p>On voit bien grâce à cette table pourquoi on utilise parfois le signe <code>x</code> pour désigner la fonction ET LOGIQUE.</p>
<ul>
<li><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>0</mn><mo>×</mo><mn>0</mn><mo>=</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">0 \times 0 = 0</annotation></semantics></math></li>
<li><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>0</mn><mo>×</mo><mn>1</mn><mo>=</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">0 \times 1 = 0</annotation></semantics></math></li>
<li><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>1</mn><mo>×</mo><mn>0</mn><mo>=</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">1 \times 0 = 0</annotation></semantics></math></li>
<li><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>1</mn><mo>×</mo><mn>1</mn><mo>=</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">1 \times 1 = 1</annotation></semantics></math></li>
</ul>
</section>
<section id="fonction-ou-logique" class="level3" data-number="3.3">
<h3 data-number="3.3" class="anchored" data-anchor-id="fonction-ou-logique"><span class="header-section-number">3.3</span> Fonction OU LOGIQUE: <code>|</code></h3>
<p>La fonction <code>OU LOGIQUE</code> a deux arguments, elle renvoie <code>VRAI</code> si au moins un des deux arguments a pour valeur <code>VRAI</code>.</p>
<table class="table table-bordered table-hover caption-top">
<thead class="table-warning">
<tr class="header">
<th>P</th>
<th>Q</th>
<th>P | Q</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>0</p>
<p>0</p>
<p>1</p>
<p>1</p></td>
<td><p>0</p>
<p>1</p>
<p>0</p>
<p>1</p></td>
<td><p>0</p>
<p>1</p>
<p>1</p>
<p>1</p></td>
</tr>
</tbody>
</table>
<p>On voit grâce à cette table que le signe <code>+</code> utilisé pour désigner la fonction OU LOGIQUE fonctionne à peu près comme le <code>+</code> de notre algèbre traditionnelle.</p>
<ul>
<li><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>0</mn><mo>+</mo><mn>0</mn><mo>=</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">0 + 0 = 0</annotation></semantics></math></li>
<li><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>0</mn><mo>+</mo><mn>1</mn><mo>=</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">0 + 1 = 1</annotation></semantics></math></li>
<li><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>1</mn><mo>+</mo><mn>0</mn><mo>=</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">1 + 0 = 1</annotation></semantics></math></li>
<li><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>1</mn><mo>+</mo><mn>1</mn><mo>=</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">1 + 1 = 1</annotation></semantics></math></li>
</ul>
<div class="plus">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-2-contents" aria-controls="callout-2" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
En plus: XOR, NAND et NOR
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-2" class="callout-2-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="plus" data-titre="XOR, NAND et NOR">
<p>Bien que toutes les opérations booléennes puissent être écrites avec les trois opérations fondamentales ET, OU et NON, on utilise fréquemment d’autres opérations:</p>
<ul>
<li><strong>XOR</strong>: OU EXCLUSIF cette opération renvoie vrai uniquement si P ou Q sont vraies, mais pas les deux <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>P</mi><mi>&amp;</mi><mi>!</mi><mi>Q</mi><mo stretchy="false" form="prefix">|</mo><mi>!</mi><mi>P</mi><mi>&amp;</mi><mi>Q</mi></mrow><annotation encoding="application/x-tex">P \&amp; !Q | !P \&amp; Q</annotation></semantics></math>.</li>
<li><strong>NAND</strong>: NON ET cette opération renvoie faux uniquement si P et Q sont vraies <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>!</mi><mrow><mo stretchy="true" form="prefix">(</mo><mi>P</mi><mi>&amp;</mi><mi>Q</mi><mo stretchy="true" form="postfix">)</mo></mrow></mrow><annotation encoding="application/x-tex">!(P \&amp; Q)</annotation></semantics></math>.</li>
<li><strong>NOR</strong>: NON OU cette opération renvoie vrai uniquement si P et Q sont fausses <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>!</mi><mrow><mo stretchy="true" form="prefix">(</mo><mi>P</mi><mo stretchy="false" form="prefix">|</mo><mi>Q</mi><mo stretchy="true" form="postfix">)</mo></mrow></mrow><annotation encoding="application/x-tex">!(P | Q)</annotation></semantics></math>.</li>
</ul>
<p>Vous pouvez construire les tables de vérité de ces fonctions en application.</p>
</div>
</div>
</div>
</div>
</div>
</section>
<section id="tables-de-vérité-composées" class="level3" data-number="3.4">
<h3 data-number="3.4" class="anchored" data-anchor-id="tables-de-vérité-composées"><span class="header-section-number">3.4</span> Tables de vérité composées</h3>
<p>Les trois tables de vérité présentées ci-dessus sont les plus élémentaires et servent de jeux de construction pour les plus complexes.</p>
<p>Supposons que nous voulions construire une table de vérité pour P &amp; Q | R (c-à-d P ET Q OU R).</p>
<p>Remarquez que cette table implique trois variables (P, Q et R), nous nous attendons donc à ce qu’elle soit plus grande que les précédentes.</p>
<p>Pour construire une table de vérité, nous écrivons d’abord toutes les combinaisons possibles des trois variables:</p>
<pre><code>P   Q   R
---------
0   0   0
0   0   1
0   1   0
0   1   1
1   0   0
1   0   1
1   1   0
1   1   1</code></pre>
<p>Nous complétons ensuite le tableau à la main en calculant la valeur que chaque combinaison produira en utilisant l’expression P&amp;Q | R.</p>
<pre><code>P   Q   R  | P &amp; Q | R
-----------|----------
0   0   0  |     0
0   0   1  |     1
0   1   0  |     0
0   1   1  |     1
1   0   0  |     0
1   0   1  |     1
1   1   0  |     1
1   1   1  |     1</code></pre>
<p>La procédure que nous suivons pour produire des tables de vérité est maintenant claire. Voici quelques exemples supplémentaires de tables de vérité.</p>
<div class="appli">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-3-contents" aria-controls="callout-3" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Application: Construire des tables de vérité
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-3" class="callout-3-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="appli" data-titre="Construire des tables de vérité">
<p>Construire les tables de vérité suivantes:</p>
<ul>
<li>P | Q | R</li>
<li>!(P | Q &amp; R)</li>
<li>(P | Q &amp; !R) &amp; S</li>
</ul>
<p><strong>CORRECTION</strong></p>
<ul>
<li><p>Table de vérité de <strong>P | Q | R</strong></p>
<table class="table table-bordered table-hover caption-top">
<tbody>
<tr class="odd">
<td>P</td>
<td>Q</td>
<td>R</td>
<td>P | Q | R</td>
</tr>
<tr class="even">
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr class="odd">
<td>0</td>
<td>0</td>
<td>1</td>
<td>1</td>
</tr>
<tr class="even">
<td>0</td>
<td>1</td>
<td>0</td>
<td>1</td>
</tr>
<tr class="odd">
<td>0</td>
<td>1</td>
<td>1</td>
<td>1</td>
</tr>
<tr class="even">
<td>1</td>
<td>0</td>
<td>0</td>
<td>1</td>
</tr>
<tr class="odd">
<td>1</td>
<td>0</td>
<td>1</td>
<td>1</td>
</tr>
<tr class="even">
<td>1</td>
<td>1</td>
<td>0</td>
<td>1</td>
</tr>
<tr class="odd">
<td>1</td>
<td>1</td>
<td>1</td>
<td>1</td>
</tr>
</tbody>
</table></li>
<li><p>Table de vérité de <strong>!(P | Q &amp; R)</strong></p>
<table class="table table-bordered table-hover caption-top">
<tbody>
<tr class="odd">
<td>P</td>
<td>Q</td>
<td>R</td>
<td>Q&amp;R</td>
<td>P | QR</td>
<td>!(P | Q &amp; R)</td>
</tr>
<tr class="even">
<td>0</td>
<td>0</td>
<td>0</td>
<td></td>
<td></td>
<td>1</td>
</tr>
<tr class="odd">
<td>0</td>
<td>0</td>
<td>1</td>
<td></td>
<td></td>
<td>1</td>
</tr>
<tr class="even">
<td>0</td>
<td>1</td>
<td>0</td>
<td></td>
<td></td>
<td>1</td>
</tr>
<tr class="odd">
<td>0</td>
<td>1</td>
<td>1</td>
<td>1</td>
<td>1</td>
<td>0</td>
</tr>
<tr class="even">
<td>1</td>
<td>0</td>
<td>0</td>
<td></td>
<td>1</td>
<td>0</td>
</tr>
<tr class="odd">
<td>1</td>
<td>0</td>
<td>1</td>
<td></td>
<td>1</td>
<td>0</td>
</tr>
<tr class="even">
<td>1</td>
<td>1</td>
<td>0</td>
<td></td>
<td>1</td>
<td>0</td>
</tr>
<tr class="odd">
<td>1</td>
<td>1</td>
<td>1</td>
<td>1</td>
<td>1</td>
<td>0</td>
</tr>
</tbody>
</table></li>
<li><p>Table de vérité de <strong>(P | Q &amp; !R) &amp; S</strong></p>
<table class="table table-bordered table-hover caption-top">
<tbody>
<tr class="odd">
<td>P</td>
<td>Q</td>
<td>R</td>
<td>S</td>
<td>Q &amp; !R</td>
<td>P | Q &amp; !R</td>
<td>(P | Q &amp; !R) &amp; S</td>
</tr>
<tr class="even">
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr class="odd">
<td>0</td>
<td>0</td>
<td>0</td>
<td>1</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr class="even">
<td>0</td>
<td>0</td>
<td>1</td>
<td>0</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr class="odd">
<td>0</td>
<td>0</td>
<td>1</td>
<td>1</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr class="even">
<td>0</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>1</td>
<td>1</td>
<td></td>
</tr>
<tr class="odd">
<td>0</td>
<td>1</td>
<td>0</td>
<td>1</td>
<td>1</td>
<td>1</td>
<td>1</td>
</tr>
<tr class="even">
<td>0</td>
<td>1</td>
<td>1</td>
<td>0</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr class="odd">
<td>0</td>
<td>1</td>
<td>1</td>
<td>1</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr class="even">
<td>1</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td></td>
<td>1</td>
<td></td>
</tr>
<tr class="odd">
<td>1</td>
<td>0</td>
<td>0</td>
<td>1</td>
<td></td>
<td>1</td>
<td>1</td>
</tr>
<tr class="even">
<td>1</td>
<td>0</td>
<td>1</td>
<td>0</td>
<td></td>
<td>1</td>
<td></td>
</tr>
<tr class="odd">
<td>1</td>
<td>0</td>
<td>1</td>
<td>1</td>
<td></td>
<td>1</td>
<td>1</td>
</tr>
<tr class="even">
<td>1</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>1</td>
<td>1</td>
<td></td>
</tr>
<tr class="odd">
<td>1</td>
<td>1</td>
<td>0</td>
<td>1</td>
<td>1</td>
<td>1</td>
<td>1</td>
</tr>
<tr class="even">
<td>1</td>
<td>1</td>
<td>1</td>
<td>0</td>
<td></td>
<td>1</td>
<td></td>
</tr>
<tr class="odd">
<td>1</td>
<td>1</td>
<td>1</td>
<td>1</td>
<td></td>
<td>1</td>
<td>1</td>
</tr>
</tbody>
</table></li>
</ul>
</div>
</div>
</div>
</div>
</div>
<p>Vous pouvez consulter la page d’<a href="./exo">exercices</a> pour vous entraîner.</p>
</section>
</section>
<section id="équivalence-dexpressions-booléennes" class="level2" data-number="4">
<h2 data-number="4" class="anchored" data-anchor-id="équivalence-dexpressions-booléennes"><span class="header-section-number">4</span> Équivalence d’expressions booléennes</h2>
<p>En algèbre ordinaire, deux expressions peuvent être équivalentes, par exemple:</p>
<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>x</mi><mo>×</mo><mi>z</mi><mo>+</mo><mi>y</mi><mo>×</mo><mi>z</mi><mo>=</mo><mrow><mo stretchy="true" form="prefix">(</mo><mi>x</mi><mo>+</mo><mi>y</mi><mo stretchy="true" form="postfix">)</mo></mrow><mo>×</mo><mi>z</mi></mrow><annotation encoding="application/x-tex">
x \times z + y \times z = (x + y) \times z
</annotation></semantics></math></p>
<p>La même chose peut être dite de l’algèbre booléenne. Construisons des tables de vérité pour:</p>
<p><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>P</mi><mi>&amp;</mi><mi>R</mi><mo stretchy="false" form="prefix">|</mo><mi>Q</mi><mi>&amp;</mi><mi>R</mi></mrow><annotation encoding="application/x-tex">P \&amp; R | Q \&amp; R</annotation></semantics></math> et <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mo stretchy="true" form="prefix">(</mo><mi>P</mi><mo stretchy="false" form="prefix">|</mo><mi>Q</mi><mo stretchy="true" form="postfix">)</mo></mrow><mi>&amp;</mi><mi>R</mi></mrow><annotation encoding="application/x-tex">(P | Q) \&amp; R</annotation></semantics></math></p>
<pre><code>P   Q   R  | P &amp; R | Q &amp; R
--------------------------
0   0   0  |       0 
0   0   1  |       0 
0   1   0  |       0 
0   1   1  |       1 
1   0   0  |       0 
1   0   1  |       1 
1   1   0  |       0 
1   1   1  |       1 </code></pre>
<pre><code>P   Q   R  | (P | Q) &amp; R
------------------------
0   0   0  |     0 
0   0   1  |     0 
0   1   0  |     0 
0   1   1  |     1 
1   0   0  |     0 
1   0   1  |     1 
1   1   0  |     0 
1   1   1  |     1 </code></pre>
<p>En comparant les deux tableaux, vous aurez remarqué que les résultats(c’est-à-dire la dernière colonne) des deux tableaux sont identiques!</p>
<dl>
<dt>
Équivalence d’expressions booléennes
</dt>
<dd>
<div>
<p>Nous disons que deux expressions booléennes sont équivalentes si la sortie de leurs tables de vérité est la même. L’équivalence d’expressions booléennes est notée avec le signe =.</p>
</div>
</dd>
</dl>
</section>
<section id="les-lois-de-lalgèbre-de-boole" class="level2" data-number="5">
<h2 data-number="5" class="anchored" data-anchor-id="les-lois-de-lalgèbre-de-boole"><span class="header-section-number">5</span> Les lois de l’algèbre de BOOLE</h2>
<p><strong>Il n’est pas demandé d’apprendre ces lois, mais vous devez savoir les démontrer.</strong></p>
<table class="table table-bordered table-hover caption-top">
<thead class="table-warning">
<tr class="header">
<th>Nom de la loi</th>
<th>Écriture mathématique</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Éléments neutres</td>
<td><p><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>P</mi><mo stretchy="false" form="prefix">|</mo><mn>0</mn><mo>=</mo><mi>P</mi></mrow><annotation encoding="application/x-tex">P|0=P</annotation></semantics></math></p>
<p><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>P</mi><mi>&amp;</mi><mn>1</mn><mo>=</mo><mi>P</mi></mrow><annotation encoding="application/x-tex">P\&amp;1=P</annotation></semantics></math></p></td>
</tr>
<tr class="even">
<td>Éléments absorbants</td>
<td><p><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>P</mi><mi>&amp;</mi><mn>0</mn><mo>=</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">P\&amp;0=0</annotation></semantics></math></p>
<p><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>P</mi><mo stretchy="false" form="prefix">|</mo><mn>1</mn><mo>=</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">P| 1=1</annotation></semantics></math></p></td>
</tr>
<tr class="odd">
<td>Complémentarité</td>
<td><p><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>P</mi><mo stretchy="false" form="prefix">|</mo><mi>!</mi><mi>P</mi><mo>=</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">P| !P=1</annotation></semantics></math></p>
<p><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>P</mi><mi>&amp;</mi><mi>!</mi><mi>P</mi><mo>=</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">P\&amp; !P=0</annotation></semantics></math></p></td>
</tr>
<tr class="even">
<td>Idempotence</td>
<td><p><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>P</mi><mo stretchy="false" form="prefix">|</mo><mi>P</mi><mo>=</mo><mi>P</mi></mrow><annotation encoding="application/x-tex">P| P=P</annotation></semantics></math></p>
<p><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>P</mi><mi>&amp;</mi><mi>P</mi><mo>=</mo><mi>P</mi></mrow><annotation encoding="application/x-tex">P \&amp;P = P</annotation></semantics></math></p></td>
</tr>
<tr class="odd">
<td>Commutativité</td>
<td><p><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>P</mi><mi>&amp;</mi><mi>Q</mi><mo>=</mo><mi>Q</mi><mi>&amp;</mi><mi>P</mi></mrow><annotation encoding="application/x-tex">P \&amp; Q = Q \&amp; P</annotation></semantics></math></p>
<p><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>P</mi><mrow><mo stretchy="true" form="prefix">|</mo><mi>Q</mi><mo>=</mo><mi>Q</mi><mo stretchy="true" form="postfix">|</mo></mrow><mi>P</mi></mrow><annotation encoding="application/x-tex">P | Q = Q | P</annotation></semantics></math></p></td>
</tr>
<tr class="even">
<td>Associativité</td>
<td><p><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>P</mi><mi>&amp;</mi><mrow><mo stretchy="true" form="prefix">(</mo><mi>Q</mi><mi>&amp;</mi><mi>R</mi><mo stretchy="true" form="postfix">)</mo></mrow><mo>=</mo><mrow><mo stretchy="true" form="prefix">(</mo><mi>P</mi><mi>&amp;</mi><mi>Q</mi><mo stretchy="true" form="postfix">)</mo></mrow><mi>&amp;</mi><mi>R</mi><mo>=</mo><mi>P</mi><mi>&amp;</mi><mi>Q</mi><mi>&amp;</mi><mi>R</mi></mrow><annotation encoding="application/x-tex">P \&amp; (Q \&amp; R)= (P \&amp; Q) \&amp;R =P \&amp;Q \&amp; R</annotation></semantics></math></p>
<p><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>P</mi><mrow><mo stretchy="true" form="prefix">|</mo><mrow><mo stretchy="true" form="prefix">(</mo><mi>Q</mi><mrow><mo stretchy="true" form="prefix">|</mo><mi>R</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><mo stretchy="false" form="prefix">(</mo><mi>P</mi><mo stretchy="true" form="postfix">|</mo></mrow><mi>Q</mi><mo stretchy="true" form="postfix">)</mo></mrow><mo stretchy="true" form="postfix">|</mo></mrow><mi>R</mi><mo>=</mo><mi>P</mi><mrow><mo stretchy="true" form="prefix">|</mo><mi>Q</mi><mo stretchy="true" form="postfix">|</mo></mrow><mi>R</mi></mrow><annotation encoding="application/x-tex">P | ( Q | R ) = (P | Q) | R = P | Q | R</annotation></semantics></math></p></td>
</tr>
<tr class="odd">
<td>Distributivité</td>
<td><p><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>P</mi><mi>&amp;</mi><mo stretchy="false" form="prefix">(</mo><mi>Q</mi><mrow><mo stretchy="true" form="prefix">|</mo><mi>R</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><mi>P</mi><mi>&amp;</mi><mi>Q</mi><mo stretchy="true" form="postfix">|</mo></mrow><mi>P</mi><mi>&amp;</mi><mi>R</mi></mrow><annotation encoding="application/x-tex">P \&amp; ( Q | R ) = P \&amp; Q | P \&amp; R</annotation></semantics></math></p>
<p><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>P</mi><mo stretchy="false" form="prefix">|</mo><mrow><mo stretchy="true" form="prefix">(</mo><mi>Q</mi><mi>&amp;</mi><mi>R</mi><mo stretchy="true" form="postfix">)</mo></mrow><mo>=</mo><mrow><mo stretchy="true" form="prefix">(</mo><mi>P</mi><mo stretchy="false" form="prefix">|</mo><mi>Q</mi><mo stretchy="true" form="postfix">)</mo></mrow><mi>&amp;</mi><mrow><mo stretchy="true" form="prefix">(</mo><mi>P</mi><mo stretchy="false" form="prefix">|</mo><mi>R</mi><mo stretchy="true" form="postfix">)</mo></mrow></mrow><annotation encoding="application/x-tex">P | ( Q \&amp; R ) =(P | Q)\&amp;(P | R)</annotation></semantics></math></p></td>
</tr>
<tr class="even">
<td>Lois de De Morgan</td>
<td><p><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>!</mi><mrow><mo stretchy="true" form="prefix">(</mo><mi>P</mi><mo stretchy="false" form="prefix">|</mo><mi>Q</mi><mo stretchy="true" form="postfix">)</mo></mrow><mo>=</mo><mi>!</mi><mi>P</mi><mi>&amp;</mi><mi>!</mi><mi>Q</mi></mrow><annotation encoding="application/x-tex">!(P | Q)= !P \&amp; !Q</annotation></semantics></math></p>
<p><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>!</mi><mrow><mo stretchy="true" form="prefix">(</mo><mi>P</mi><mi>&amp;</mi><mi>Q</mi><mo stretchy="true" form="postfix">)</mo></mrow><mo>=</mo><mi>!</mi><mi>P</mi><mo stretchy="false" form="prefix">|</mo><mi>!</mi><mi>Q</mi></mrow><annotation encoding="application/x-tex">!(P\&amp; Q)= !P | !Q</annotation></semantics></math></p></td>
</tr>
</tbody>
</table>
<p>Ces lois peuvent facilement être démontrées à l’aide de <em>tables de vérité</em>.</p>
<div class="ref">
<ul>
<li>https://en.m.wikibooks.org/wiki/High_School_Mathematics_Extensions/Logic</li>
<li>http://info.blaisepascal.fr/nsi-les-booleens</li>
<li>https://www.maxicours.com/se/cours/simplification-de-l-expression-logique-a-l-aide-des-regles-de-l-algebre-booleenne/</li>
<li>http://www.courstechinfo.be/MathInfo/FctLogiques1.html</li>
<li>https://www.plymouth.ac.uk/uploads/production/document/path/3/3760/PlymouthUniversity_MathsETStats_Boolean_algebra_ET_logic_gates.pdf</li>
</ul>
</div>


</section>

 ]]></description>
  <category>1NSI</category>
  <guid>https://www.lyceum.fr/1g/nsi/2-representation-des-donnees-types-et-valeurs-de-base/5-les-booleens/</guid>
  <pubDate>Wed, 31 Jul 2024 15:15:56 GMT</pubDate>
</item>
<item>
  <title>Chapitre 1: Introduction aux tableaux</title>
  <link>https://www.lyceum.fr/1g/nsi/3-representation-des-donnees-types-construits/1-introduction-aux-tableaux/</link>
  <description><![CDATA[ 




<div class="programme">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-1-contents" aria-controls="callout-1" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Programme
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-1" class="callout-1-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="programme">
<table class="table table-bordered table-hover caption-top">
<thead class="table-warning">
<tr class="header">
<th>Contenus</th>
<th>Capacités attendues</th>
<th>Commentaires</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>p-uplets. p-uplets nommés</td>
<td>Écrire une fonction renvoyant un p-uplet de valeurs.</td>
<td></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div>

</div>
<div class="intro quarto-layout-panel" data-layout-ncol="2">
<div class="quarto-layout-row">
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<p>Dans la deuxième partie <a href="../../../../1g/nsi/2-representation-des-donnees-types-et-valeurs-de-base/">2-Représentation des données: types et valeurs de base</a>, nous avions vu certains types de <strong>variables simples</strong>: <code>int</code>(entiers), <code>float</code>(nombres à virgule flottante) <code>bool</code>(booléen), <code>str</code>(chaîne de caractères). Nous allons maintenant voir des <strong>types construits</strong> qui sont des <em>collections d’objets</em> de type simple assemblés dans ce que l’on appelle une structure de données.</p>
</div>
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<p></p><figure class="wikimage figure"><picture>
			  <source type="image/webp" srcset="/img/d-hVLO-gAH-300.webp 300w, /img/d-hVLO-gAH-600.webp 600w, /img/d-hVLO-gAH-711.webp 711w" sizes="100vw">
  <source type="image/png" srcset="/img/d-hVLO-gAH-300.png 300w, /img/d-hVLO-gAH-600.png 600w, /img/d-hVLO-gAH-711.png 711w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/d-hVLO-gAH-300.webp" width="711" height="159" alt="Un ensemble de valeurs entières stockées dans un tableau à une dimension." loading="lazy" decoding="async">
			</picture>
<figcaption id="caption">Un ensemble de valeurs entières stockées dans un tableau à une dimension.</figcaption><figcaption id="credit">&nbsp;Public domain&nbsp;<a id="image-description" href="//commons.wikimedia.org/wiki/File:Tableau_à_une_dimension.png">via Wikimedia Commons</a></figcaption></figure><p></p>
</div>
</div>
</div>
<p>Nous verrons dans cette partie trois exemples de types construits:</p>
<ul>
<li>les p-uplets <code>tuple</code> et listes <code>list</code>: des collections d’éléments ordonnés dans lesquels les valeurs sont accédées via un <strong>indice de position</strong>.</li>
<li>les p-uplet nommés <code>namedtuple</code> et les dictionnaires <code>dict</code>: ensemble d’éléments dans lesquels les valeurs sont accédées via une <strong>clef</strong>.</li>
</ul>
<section id="quest-ce-quun-tableau" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="quest-ce-quun-tableau"><span class="header-section-number">1</span> Qu’est-ce qu’un tableau?</h2>
<dl>
<dt>
Tableau
</dt>
<dd>
<div>
<p>En informatique, un tableau est une structure de données représentant une séquence finie d’éléments auxquels on peut accéder efficacement par leur indice, dans la séquence.</p>
</div>
</dd>
</dl>
<p>Il existe deux implémentations des tableaux en Python: les <code>tuple</code>s et les <code>list</code>es.</p>
<section id="syntaxe-des-tuples-a-b-c" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="syntaxe-des-tuples-a-b-c"><span class="header-section-number">1.1</span> Syntaxe des tuples <code>(a, b, c)</code></h3>
<p>Les tuples sont des valeurs séparées par des virgules <code>,</code> entourées de parenthèses <code>(..., ..., ...</code>)` qui peuvent parfois être <em>omises</em>.</p>
<div id="13a59b44" class="cell" data-execution_count="1">
<div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb1-1">t <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> (<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>)</span>
<span id="cb1-2"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">type</span>(t)</span></code></pre></div>
<div class="cell-output cell-output-display" data-execution_count="1">
<pre><code>tuple</code></pre>
</div>
</div>
<div id="b0ede932" class="cell" data-execution_count="2">
<div class="sourceCode cell-code" id="cb3" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb3-1"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># sans parenthèses</span></span>
<span id="cb3-2">t <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span></span>
<span id="cb3-3"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">type</span>(t)</span></code></pre></div>
<div class="cell-output cell-output-display" data-execution_count="2">
<pre><code>tuple</code></pre>
</div>
</div>
</section>
<section id="syntaxe-des-listes-a-b-c" class="level3" data-number="1.2">
<h3 data-number="1.2" class="anchored" data-anchor-id="syntaxe-des-listes-a-b-c"><span class="header-section-number">1.2</span> Syntaxe des listes <code>[a, b, c]</code></h3>
<p>Les valeurs de la collection sont entourées par des crochets <code>[]</code>, leurs éléments sont séparés par des virgules.</p>
<div id="436c1b0e" class="cell" data-execution_count="3">
<div class="sourceCode cell-code" id="cb5" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb5-1">tab <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> [ <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"a"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"z"</span> , <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"e"</span>]</span>
<span id="cb5-2"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">type</span>(tab)</span></code></pre></div>
<div class="cell-output cell-output-display" data-execution_count="3">
<pre><code>list</code></pre>
</div>
</div>
</section>
<section id="différences-entre-tuple-et-liste" class="level3" data-number="1.3">
<h3 data-number="1.3" class="anchored" data-anchor-id="différences-entre-tuple-et-liste"><span class="header-section-number">1.3</span> Différences entre tuple et liste</h3>
<p>Outre la syntaxe, il y a plusieurs différences clés entre les tuples et les listes en Python:</p>
<ul>
<li><p><strong>Immutabilité</strong> : les tuples sont immuables, c’est-à-dire qu’une fois créés, ils ne peuvent pas être modifiés. Les listes, en revanche, sont mutables, c’est-à-dire que vous pouvez ajouter, supprimer ou remplacer des éléments dans une liste une fois qu’elle a été créée.</p></li>
<li><p><strong>Performance</strong> : les tuples sont généralement plus rapides à créer et à accéder que les listes. Cela est dû à leur immutabilité, qui signifie qu’il n’y a pas besoin de gérer la modification des éléments dans un tuple.</p></li>
<li><p><strong>Utilisation</strong> : les tuples sont souvent utilisés lorsque vous avez besoin de stocker des données qui ne doivent pas être modifiées, tandis que les listes sont utilisées lorsque vous avez besoin de stocker des données qui doivent être modifiées fréquemment.</p></li>
</ul>
</section>
</section>
<section id="différences-et-similitudes-entre-tuple-et-listes" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="différences-et-similitudes-entre-tuple-et-listes"><span class="header-section-number">2</span> Différences et similitudes entre tuple et listes</h2>
<div class="sourceCode cell-code" id="cb7" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb7-1">t <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> (<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.0</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"trois"</span>)</span>
<span id="cb7-2">t</span>
<span id="cb7-3"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">type</span>(t)</span>
<span id="cb7-4">t[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>]</span>
<span id="cb7-5">t[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>]</span>
<span id="cb7-6">t[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>]</span>
<span id="cb7-7"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">len</span>(t)</span>
<span id="cb7-8">t[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"un"</span></span>
<span id="cb7-9">tab <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> [<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.0</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"trois"</span>]</span>
<span id="cb7-10">tab</span>
<span id="cb7-11"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">type</span>(tab)</span>
<span id="cb7-12">tab[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>]</span>
<span id="cb7-13">tab[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>]</span>
<span id="cb7-14">tab[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>]</span>
<span id="cb7-15"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">len</span>(tab)</span>
<span id="cb7-16">tab[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"un"</span></span>
<span id="cb7-17">tab</span></code></pre></div>
<div class="quarto-layout-panel" data-layout-ncol="2">
<div class="quarto-layout-row">
<div class="tuple quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<p><strong>Tuple</strong></p>
<p>On peut stocker plusieurs valeurs de types différents.</p>
<div id="26396aff" class="cell" data-execution_count="4">
<div class="cell-output cell-output-display" data-execution_count="4">
<pre><code>(1, 2.0, 'trois')</code></pre>
</div>
</div>
<div id="b03575a5" class="cell" data-execution_count="5">
<div class="cell-output cell-output-display" data-execution_count="5">
<pre><code>tuple</code></pre>
</div>
</div>
<p>L’accès se fait par un indice entier de position qui <em>commence à 0</em>. On place l’indice entre des crochets.</p>
<div id="93daf793" class="cell" data-execution_count="6">
<div class="cell-output cell-output-display" data-execution_count="6">
<pre><code>1</code></pre>
</div>
</div>
<div id="33d90017" class="cell" data-execution_count="7">
<div class="cell-output cell-output-display" data-execution_count="7">
<pre><code>2.0</code></pre>
</div>
</div>
<div id="23046c10" class="cell" data-execution_count="8">
<div class="cell-output cell-output-display" data-execution_count="8">
<pre><code>'trois'</code></pre>
</div>
</div>
<p>La longueur du tuple est obtenue grâce à la fonction <code>len()</code></p>
<div id="718b9a0b" class="cell" data-execution_count="9">
<div class="cell-output cell-output-display" data-execution_count="9">
<pre><code>3</code></pre>
</div>
</div>
<p>Les tuples sont <a href="https://fr.wiktionary.org/wiki/immutable"><em>immutables</em></a>, c’est-à-dire qu’on ne peut les modifier une fois qu’ils ont été créés.</p>
<div id="86d221e8" class="cell" data-execution_count="10">
<p><span class="smallcaps">&gt;&gt;sortie</span></p>
<div class="cell-output cell-output-error">
<div class="ansi-escaped-output">
<pre><span class="ansi-red-fg">---------------------------------------------------------------------------</span>
<span class="ansi-red-fg">TypeError</span>                                 Traceback (most recent call last)
Cell <span class="ansi-green-fg">In[10], line 1</span>
<span class="ansi-green-fg">----&gt; 1</span> <span class="ansi-yellow-bg">t</span><span class="ansi-yellow-bg">[</span><span style="color:rgb(98,98,98)" class="ansi-yellow-bg">0</span><span class="ansi-yellow-bg">]</span> <span style="color:rgb(98,98,98)">=</span> <span style="color:rgb(175,0,0)">"</span><span style="color:rgb(175,0,0)">un</span><span style="color:rgb(175,0,0)">"</span>

<span class="ansi-red-fg">TypeError</span>: 'tuple' object does not support item assignment</pre>
</div>
</div>
</div>
</div>
<div class="liste quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<p><strong>Liste</strong></p>
<p>On peut stocker plusieurs valeurs de types différents.</p>
<div id="361732f6" class="cell" data-execution_count="11">
<div class="cell-output cell-output-display" data-execution_count="11">
<pre><code>[1, 2.0, 'trois']</code></pre>
</div>
</div>
<div id="2e66a014" class="cell" data-execution_count="12">
<div class="cell-output cell-output-display" data-execution_count="12">
<pre><code>list</code></pre>
</div>
</div>
<p>L’accès se fait par un indice entier de position qui <em>commence à 0</em>. On place l’indice entre des crochets.</p>
<div id="9c82fe7a" class="cell" data-execution_count="13">
<div class="cell-output cell-output-display" data-execution_count="13">
<pre><code>1</code></pre>
</div>
</div>
<div id="33ed295a" class="cell" data-execution_count="14">
<div class="cell-output cell-output-display" data-execution_count="14">
<pre><code>2.0</code></pre>
</div>
</div>
<div id="e56499b5" class="cell" data-execution_count="15">
<div class="cell-output cell-output-display" data-execution_count="15">
<pre><code>'trois'</code></pre>
</div>
</div>
<p>La longueur de la liste est obtenue grâce à la fonction <code>len()</code></p>
<div id="58fd1d9c" class="cell" data-execution_count="16">
<div class="cell-output cell-output-display" data-execution_count="16">
<pre><code>3</code></pre>
</div>
</div>
<p>Les listes sont <a href="https://fr.wiktionary.org/wiki/mutable"><em>mutables</em></a>, c’est-à-dire qu’on peut les modifier une fois qu’elles ont été créés.</p>
<div id="71dd2d55" class="cell" data-execution_count="17">
<div class="cell-output cell-output-display" data-execution_count="17">
<pre><code>['un', 2.0, 'trois']</code></pre>
</div>
</div>
</div>
</div>
</div>
<p><strong>ATTENTION: Dans les types construits, il faut bien distinguer l’indice et la valeur stockée à cet indice.</strong></p>
<p></p><figure class="wikimage figure"><picture>
			  <source type="image/webp" srcset="/img/d-hVLO-gAH-300.webp 300w, /img/d-hVLO-gAH-600.webp 600w, /img/d-hVLO-gAH-711.webp 711w" sizes="100vw">
  <source type="image/png" srcset="/img/d-hVLO-gAH-300.png 300w, /img/d-hVLO-gAH-600.png 600w, /img/d-hVLO-gAH-711.png 711w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/d-hVLO-gAH-300.webp" width="711" height="159" alt="Les valeurs stockées sont de type quelconque par contre les indice sont des entiers commençant à 0." loading="lazy" decoding="async">
			</picture>
<figcaption id="caption">Les valeurs stockées sont de type quelconque par contre les indice sont des entiers commençant à 0.</figcaption><figcaption id="credit">&nbsp;Public domain&nbsp;<a id="image-description" href="//commons.wikimedia.org/wiki/File:Tableau_à_une_dimension.png">via Wikimedia Commons</a></figcaption></figure><p></p>
</section>
<section id="méthodes-et-fonctions" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="méthodes-et-fonctions"><span class="header-section-number">3</span> Méthodes et fonctions</h2>
<section id="quest-ce-quune-méthode" class="level3" data-number="3.1">
<h3 data-number="3.1" class="anchored" data-anchor-id="quest-ce-quune-méthode"><span class="header-section-number">3.1</span> Qu’est-ce qu’une méthode?</h3>
<p>Python étant un <a href="../../../../tg/nsi/1-structures-de-donnees/2-programmation-objet">langage objet</a>, des méthodes sont ajoutées aux tableaux pour interagir facilement avec eux.</p>
<p>La différence entre méthode et fonction sera approfondie en terminale lors de l’étude de la <a href="../../../../tg/nsi/1-structures-de-donnees/2-programmation-objet">programmation orientée objet</a>. Pour l’instant, nous pouvons simplement dire qu’il s’agit d’une fonction attachée à un objet qui s’appelle en utilisant une <strong>notation pointée</strong>.</p>
<div class="sourceCode" id="cb21" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb21-1"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># appel d'une fonction</span></span>
<span id="cb21-2">fonction(arguments) <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># ex: len(tab)</span></span>
<span id="cb21-3"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># appel d'une méthode d'objet</span></span>
<span id="cb21-4">objet.méthode(arguments) <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># ex: tab.append(5)</span></span></code></pre></div>
</section>
<section id="méthodes-des-tuples" class="level3" data-number="3.2">
<h3 data-number="3.2" class="anchored" data-anchor-id="méthodes-des-tuples"><span class="header-section-number">3.2</span> Méthodes des tuples</h3>
<p>Les tuples étant immuables ne présentent que deux méthodes qui sont décrites dans la <a href="https://docs.python.org/fr/3/library/stdtypes.html#sequence-types-list-tuple-range">documentation</a> ou grâce à l’appel <code>help(tuple)</code></p>
<ul>
<li>La méthode <code>index</code>: indice de la première occurrence de l’élément cherché donné en argument.</li>
<li>La méthode <code>count</code>: nombre d’éléments de valeur donnée en argument.</li>
</ul>
<div id="ac1a237b" class="cell" data-execution_count="18">
<div class="sourceCode cell-code" id="cb22" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb22-1">t <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> (<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>)</span></code></pre></div>
</div>
<div id="a32faa5e" class="cell" data-execution_count="19">
<div class="sourceCode cell-code" id="cb23" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb23-1"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># appel de la méthode index()</span></span>
<span id="cb23-2">t.index(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>)</span></code></pre></div>
<div class="cell-output cell-output-display" data-execution_count="19">
<pre><code>3</code></pre>
</div>
</div>
<div id="5e104c07" class="cell" data-execution_count="20">
<div class="sourceCode cell-code" id="cb25" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb25-1">t.count(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>)</span></code></pre></div>
<div class="cell-output cell-output-display" data-execution_count="20">
<pre><code>3</code></pre>
</div>
</div>
<div class="plus">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-2-contents" aria-controls="callout-2" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
En plus: Documentation des tuples
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-2" class="callout-2-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="plus" data-titre="Documentation des tuples">
<div id="1507a16a" class="cell" data-execution_count="21">
<div class="sourceCode cell-code" id="cb27" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb27-1"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">help</span>(<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">tuple</span>)</span></code></pre></div>
<p><span class="smallcaps">&gt;&gt;sortie</span></p>
<div class="cell-output cell-output-stdout">
<pre><code>Help on class tuple in module builtins:

class tuple(object)
 |  tuple(iterable=(), /)
 |
 |  Built-in immutable sequence.
 |
 |  If no argument is given, the constructor returns an empty tuple.
 |  If iterable is specified the tuple is initialized from iterable's items.
 |
 |  If the argument is a tuple, the return value is the same object.
 |
 |  Built-in subclasses:
 |      asyncgen_hooks
 |      UnraisableHookArgs
 |
 |  Methods defined here:
 |
 |  __add__(self, value, /)
 |      Return self+value.
 |
 |  __contains__(self, key, /)
 |      Return bool(key in self).
 |
 |  __eq__(self, value, /)
 |      Return self==value.
 |
 |  __ge__(self, value, /)
 |      Return self&gt;=value.
 |
 |  __getattribute__(self, name, /)
 |      Return getattr(self, name).
 |
 |  __getitem__(self, key, /)
 |      Return self[key].
 |
 |  __getnewargs__(self, /)
 |
 |  __gt__(self, value, /)
 |      Return self&gt;value.
 |
 |  __hash__(self, /)
 |      Return hash(self).
 |
 |  __iter__(self, /)
 |      Implement iter(self).
 |
 |  __le__(self, value, /)
 |      Return self&lt;=value.
 |
 |  __len__(self, /)
 |      Return len(self).
 |
 |  __lt__(self, value, /)
 |      Return self&lt;value.
 |
 |  __mul__(self, value, /)
 |      Return self*value.
 |
 |  __ne__(self, value, /)
 |      Return self!=value.
 |
 |  __repr__(self, /)
 |      Return repr(self).
 |
 |  __rmul__(self, value, /)
 |      Return value*self.
 |
 |  count(self, value, /)
 |      Return number of occurrences of value.
 |
 |  index(self, value, start=0, stop=9223372036854775807, /)
 |      Return first index of value.
 |
 |      Raises ValueError if the value is not present.
 |
 |  ----------------------------------------------------------------------
 |  Class methods defined here:
 |
 |  __class_getitem__(...)
 |      See PEP 585
 |
 |  ----------------------------------------------------------------------
 |  Static methods defined here:
 |
 |  __new__(*args, **kwargs)
 |      Create and return a new object.  See help(type) for accurate signature.
</code></pre>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<section id="méthodes-des-listes" class="level3" data-number="3.3">
<h3 data-number="3.3" class="anchored" data-anchor-id="méthodes-des-listes"><span class="header-section-number">3.3</span> Méthodes des listes</h3>
<p>Les listes présentent de nombreuses méthodes en plus de celles des tuples qui vont permettre de les <a href="https://docs.python.org/fr/3/library/stdtypes.html#mutable-sequence-types">modifier</a>.</p>
<p>Voici quelques utilisations courantes à retenir(la liste complète est dans la documentation!).</p>
<ul>
<li>ajouter des éléments à la liste à la fin avec la méthode <code>append</code>, ou à un indice quelconque avec la méthode <code>insert</code>.</li>
</ul>
<div id="f74be61c" class="cell" data-execution_count="22">
<div class="sourceCode cell-code" id="cb29" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb29-1"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># ajout à la fin</span></span>
<span id="cb29-2">tab.append(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>)</span>
<span id="cb29-3">tab</span></code></pre></div>
<div class="cell-output cell-output-display" data-execution_count="22">
<pre><code>['un', 2.0, 'trois', 4]</code></pre>
</div>
</div>
<div id="fb94d8de" class="cell" data-execution_count="23">
<div class="sourceCode cell-code" id="cb31" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb31-1"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># ajout à l'indice 0(au début)</span></span>
<span id="cb31-2">tab.insert(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'zéro'</span>)</span>
<span id="cb31-3">tab</span></code></pre></div>
<div class="cell-output cell-output-display" data-execution_count="23">
<pre><code>['zéro', 'un', 2.0, 'trois', 4]</code></pre>
</div>
</div>
<ul>
<li>supprimer des éléments de la liste à la fin avec la méthode <code>pop()</code>, ou à un indice quelconque avec la méthode <code>pop(indice)</code>.</li>
</ul>
<div id="e43d7054" class="cell" data-execution_count="24">
<div class="sourceCode cell-code" id="cb33" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb33-1">tab.pop()</span>
<span id="cb33-2">tab</span></code></pre></div>
<div class="cell-output cell-output-display" data-execution_count="24">
<pre><code>['zéro', 'un', 2.0, 'trois']</code></pre>
</div>
</div>
<div id="9d901aae" class="cell" data-execution_count="25">
<div class="sourceCode cell-code" id="cb35" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb35-1">tab.pop(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>)</span>
<span id="cb35-2">tab</span></code></pre></div>
<div class="cell-output cell-output-display" data-execution_count="25">
<pre><code>['zéro', 2.0, 'trois']</code></pre>
</div>
</div>
<div class="plus">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-3-contents" aria-controls="callout-3" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
En plus: Documentation des listes
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-3" class="callout-3-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="plus" data-titre="Documentation des listes">
<div id="93d7cc42" class="cell" data-execution_count="26">
<div class="sourceCode cell-code" id="cb37" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb37-1"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">help</span>(<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">list</span>)</span></code></pre></div>
<p><span class="smallcaps">&gt;&gt;sortie</span></p>
<div class="cell-output cell-output-stdout">
<pre><code>Help on class list in module builtins:

class list(object)
 |  list(iterable=(), /)
 |
 |  Built-in mutable sequence.
 |
 |  If no argument is given, the constructor creates a new empty list.
 |  The argument must be an iterable if specified.
 |
 |  Methods defined here:
 |
 |  __add__(self, value, /)
 |      Return self+value.
 |
 |  __contains__(self, key, /)
 |      Return bool(key in self).
 |
 |  __delitem__(self, key, /)
 |      Delete self[key].
 |
 |  __eq__(self, value, /)
 |      Return self==value.
 |
 |  __ge__(self, value, /)
 |      Return self&gt;=value.
 |
 |  __getattribute__(self, name, /)
 |      Return getattr(self, name).
 |
 |  __getitem__(self, index, /)
 |      Return self[index].
 |
 |  __gt__(self, value, /)
 |      Return self&gt;value.
 |
 |  __iadd__(self, value, /)
 |      Implement self+=value.
 |
 |  __imul__(self, value, /)
 |      Implement self*=value.
 |
 |  __init__(self, /, *args, **kwargs)
 |      Initialize self.  See help(type(self)) for accurate signature.
 |
 |  __iter__(self, /)
 |      Implement iter(self).
 |
 |  __le__(self, value, /)
 |      Return self&lt;=value.
 |
 |  __len__(self, /)
 |      Return len(self).
 |
 |  __lt__(self, value, /)
 |      Return self&lt;value.
 |
 |  __mul__(self, value, /)
 |      Return self*value.
 |
 |  __ne__(self, value, /)
 |      Return self!=value.
 |
 |  __repr__(self, /)
 |      Return repr(self).
 |
 |  __reversed__(self, /)
 |      Return a reverse iterator over the list.
 |
 |  __rmul__(self, value, /)
 |      Return value*self.
 |
 |  __setitem__(self, key, value, /)
 |      Set self[key] to value.
 |
 |  __sizeof__(self, /)
 |      Return the size of the list in memory, in bytes.
 |
 |  append(self, object, /)
 |      Append object to the end of the list.
 |
 |  clear(self, /)
 |      Remove all items from list.
 |
 |  copy(self, /)
 |      Return a shallow copy of the list.
 |
 |  count(self, value, /)
 |      Return number of occurrences of value.
 |
 |  extend(self, iterable, /)
 |      Extend list by appending elements from the iterable.
 |
 |  index(self, value, start=0, stop=9223372036854775807, /)
 |      Return first index of value.
 |
 |      Raises ValueError if the value is not present.
 |
 |  insert(self, index, object, /)
 |      Insert object before index.
 |
 |  pop(self, index=-1, /)
 |      Remove and return item at index (default last).
 |
 |      Raises IndexError if list is empty or index is out of range.
 |
 |  remove(self, value, /)
 |      Remove first occurrence of value.
 |
 |      Raises ValueError if the value is not present.
 |
 |  reverse(self, /)
 |      Reverse *IN PLACE*.
 |
 |  sort(self, /, *, key=None, reverse=False)
 |      Sort the list in ascending order and return None.
 |
 |      The sort is in-place (i.e. the list itself is modified) and stable (i.e. the
 |      order of two equal elements is maintained).
 |
 |      If a key function is given, apply it once to each list item and sort them,
 |      ascending or descending, according to their function values.
 |
 |      The reverse flag can be set to sort in descending order.
 |
 |  ----------------------------------------------------------------------
 |  Class methods defined here:
 |
 |  __class_getitem__(...)
 |      See PEP 585
 |
 |  ----------------------------------------------------------------------
 |  Static methods defined here:
 |
 |  __new__(*args, **kwargs)
 |      Create and return a new object.  See help(type) for accurate signature.
 |
 |  ----------------------------------------------------------------------
 |  Data and other attributes defined here:
 |
 |  __hash__ = None
</code></pre>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
</section>
<section id="utilisations-courantes-des-tuples" class="level2" data-number="4">
<h2 data-number="4" class="anchored" data-anchor-id="utilisations-courantes-des-tuples"><span class="header-section-number">4</span> Utilisations courantes des tuples</h2>
<section id="déstructuration" class="level3" data-number="4.1">
<h3 data-number="4.1" class="anchored" data-anchor-id="déstructuration"><span class="header-section-number">4.1</span> Déstructuration</h3>
<p>Il peut être <em>pratique</em> de récupérer les valeurs stockées dans le tuple dans des variables de type simple: on parle de <strong>déstructuration</strong>.</p>
<div id="433aa2f9" class="cell" data-execution_count="27">
<div class="sourceCode cell-code" id="cb39" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb39-1">t <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> (<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"α"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"β"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"γ"</span>)</span>
<span id="cb39-2">a, b, c <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> t</span>
<span id="cb39-3"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"t="</span>, t)</span>
<span id="cb39-4"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"a="</span>, a)</span>
<span id="cb39-5"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"b="</span>, b)</span>
<span id="cb39-6"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"c="</span>, c)</span></code></pre></div>
<p><span class="smallcaps">&gt;&gt;sortie</span></p>
<div class="cell-output cell-output-stdout">
<pre><code>t= ('α', 'β', 'γ')
a= α
b= β
c= γ</code></pre>
</div>
</div>
</section>
<section id="permuter-des-variables" class="level3" data-number="4.2">
<h3 data-number="4.2" class="anchored" data-anchor-id="permuter-des-variables"><span class="header-section-number">4.2</span> Permuter des variables</h3>
<p>Habituellement, lorsque l’on souhaite permuter deux variables, il est nécessaire de passer par une troisième variable auxiliaire. Grâce aux tuples, la permutation peut se faire en une instruction.</p>
<div id="7d7ddb26" class="cell" data-execution_count="28">
<div class="sourceCode cell-code" id="cb41" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb41-1">a <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span></span>
<span id="cb41-2">b <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span></span>
<span id="cb41-3"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"a="</span>,a, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"b="</span>, b)</span>
<span id="cb41-4"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Permutation"</span>)</span>
<span id="cb41-5">a, b <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> b, a</span>
<span id="cb41-6"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"a="</span>,a, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"b="</span>, b)</span></code></pre></div>
<p><span class="smallcaps">&gt;&gt;sortie</span></p>
<div class="cell-output cell-output-stdout">
<pre><code>a= 3 b= 2
Permutation
a= 2 b= 3</code></pre>
</div>
</div>
</section>
<section id="renvoyer-plusieurs-valeurs-dans-une-fonction" class="level3" data-number="4.3">
<h3 data-number="4.3" class="anchored" data-anchor-id="renvoyer-plusieurs-valeurs-dans-une-fonction"><span class="header-section-number">4.3</span> Renvoyer plusieurs valeurs dans une fonction</h3>
<p>Il s’agit d’une application courante des tuples. Prenons l’exemple d’une fonction qui renvoie les deux racines du trinôme.</p>
<div id="7eabe9b3" class="cell" data-execution_count="29">
<div class="sourceCode cell-code" id="cb43" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb43-1"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">def</span> racines_du_trinome(a,b,c):</span>
<span id="cb43-2">    delta <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> b<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>a<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>c</span>
<span id="cb43-3">    <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> delta <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;=</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>:</span>
<span id="cb43-4">        <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">return</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span>b<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span>delta<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.5</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>a), <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span>b<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span>delta<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.5</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>a)</span>
<span id="cb43-5"></span>
<span id="cb43-6">racines_du_trinome(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>,<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>,<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>)</span></code></pre></div>
<div class="cell-output cell-output-display" data-execution_count="29">
<pre><code>(-1.0, 1.0)</code></pre>
</div>
</div>
<p>Ici on récupère les racines par déstructuration.</p>
<div id="c2627bb6" class="cell" data-execution_count="30">
<div class="sourceCode cell-code" id="cb45" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb45-1">x1, x2 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> racines_du_trinome(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>,<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>,<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>)</span>
<span id="cb45-2"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"racine 1:"</span>, x1)</span>
<span id="cb45-3"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"racine 2:"</span>, x2)</span></code></pre></div>
<p><span class="smallcaps">&gt;&gt;sortie</span></p>
<div class="cell-output cell-output-stdout">
<pre><code>racine 1: -1.4142135623730951
racine 2: 1.4142135623730951</code></pre>
</div>
</div>
</section>
</section>
<section id="savoir-si-un-tableau-contient-une-valeur" class="level2" data-number="5">
<h2 data-number="5" class="anchored" data-anchor-id="savoir-si-un-tableau-contient-une-valeur"><span class="header-section-number">5</span> Savoir si un tableau contient une valeur</h2>
<p>Outre la méthode <code>index()</code>, on peut utiliser l’opérateur booléen <code>in</code> pur savoir si une valeur est dans la liste.</p>
<div id="6620a5fd" class="cell" data-execution_count="31">
<div class="sourceCode cell-code" id="cb47" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb47-1">tab <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> [<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>]</span>
<span id="cb47-2"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span> <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> tab)</span>
<span id="cb47-3"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span> <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> tab)</span></code></pre></div>
<p><span class="smallcaps">&gt;&gt;sortie</span></p>
<div class="cell-output cell-output-stdout">
<pre><code>True
False</code></pre>
</div>
</div>
</section>
<section id="parcours-séquentiel-des-tableaux" class="level2" data-number="6">
<h2 data-number="6" class="anchored" data-anchor-id="parcours-séquentiel-des-tableaux"><span class="header-section-number">6</span> Parcours séquentiel des tableaux</h2>
<p>Les tableaux étant des structures ordonnées finies, il est facile de les parcourir dans l’ordre avec une boucle bornée <code>for</code>.</p>
<p>En python, on peut réaliser l’itération sur les valeurs ou sur les indices si nécessaire. Cette dernière est plus compliquée, mais plus puissant, car on a alors accès à l’indice <code>i</code> <strong>et</strong> à la valeur <code>tab[i]</code>).</p>
<section id="itération-sur-les-valeurs" class="level3" data-number="6.1">
<h3 data-number="6.1" class="anchored" data-anchor-id="itération-sur-les-valeurs"><span class="header-section-number">6.1</span> Itération sur les valeurs</h3>
<p>On fait une itération sur les valeurs du tableau en utilisant le mot-clé <code>in</code>.</p>
<div id="85463205" class="cell" data-execution_count="32">
<div class="sourceCode cell-code" id="cb49" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb49-1">tab <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> [<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">12</span>, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">15</span>, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">9</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">17</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">7</span>]</span>
<span id="cb49-2"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> val <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> tab:</span>
<span id="cb49-3">    <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(val)</span></code></pre></div>
<p><span class="smallcaps">&gt;&gt;sortie</span></p>
<div class="cell-output cell-output-stdout">
<pre><code>12
-3
15
-9
17
7</code></pre>
</div>
</div>
</section>
<section id="itération-sur-les-indices" class="level3" data-number="6.2">
<h3 data-number="6.2" class="anchored" data-anchor-id="itération-sur-les-indices"><span class="header-section-number">6.2</span> Itération sur les indices</h3>
<p>C’est la méthode classique utilisée dans les langages impératifs.</p>
<div id="a529567f" class="cell" data-execution_count="33">
<div class="sourceCode cell-code" id="cb51" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb51-1">t <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> (<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">12</span>, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">15</span>, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">9</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">17</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">7</span>)</span>
<span id="cb51-2"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> i <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">range</span>(<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">len</span>(t)):</span>
<span id="cb51-3">    val <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> t[i]</span>
<span id="cb51-4">    <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"indice:"</span>, i, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"valeur:"</span>, val)</span></code></pre></div>
<p><span class="smallcaps">&gt;&gt;sortie</span></p>
<div class="cell-output cell-output-stdout">
<pre><code>indice: 0 valeur: 12
indice: 1 valeur: -3
indice: 2 valeur: 15
indice: 3 valeur: -9
indice: 4 valeur: 17
indice: 5 valeur: 7</code></pre>
</div>
</div>
<div class="plus">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-4-contents" aria-controls="callout-4" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
En plus
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-4" class="callout-4-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="plus">
<p>Même si le choix du nom des variables d’itération vous appartient, on a l’habitude d’utiliser:</p>
<ul>
<li><code>i</code>, <code>idx</code>, <code>j</code>, <code>k</code>… pour les index</li>
<li><code>val</code>, <code>v</code>, <code>e</code>… pour les valeurs des éléments du tableau.</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="callout callout-style-default callout-note callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Note
</div>
</div>
<div class="callout-body-container callout-body">
<p>Ces deux méthodes fonctionnent aussi bien avec les tuples que les listes, mais également avec les chaînes de caractères <code>str</code>.</p>
<div id="ce5977a1" class="cell" data-execution_count="34">
<div class="sourceCode cell-code" id="cb53" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb53-1"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> lettre <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Bonjour"</span>:</span>
<span id="cb53-2">    <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(lettre)</span></code></pre></div>
<p><span class="smallcaps">&gt;&gt;sortie</span></p>
<div class="cell-output cell-output-stdout">
<pre><code>B
o
n
j
o
u
r</code></pre>
</div>
</div>
<div id="27dd73e2" class="cell" data-execution_count="35">
<div class="sourceCode cell-code" id="cb55" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb55-1">mot <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Bonjour"</span></span>
<span id="cb55-2"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> i <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">range</span>(<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">len</span>(mot)):</span>
<span id="cb55-3">    val <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> mot[i]</span>
<span id="cb55-4">    <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"indice:"</span>, i, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"valeur:"</span>, val)</span></code></pre></div>
<p><span class="smallcaps">&gt;&gt;sortie</span></p>
<div class="cell-output cell-output-stdout">
<pre><code>indice: 0 valeur: B
indice: 1 valeur: o
indice: 2 valeur: n
indice: 3 valeur: j
indice: 4 valeur: o
indice: 5 valeur: u
indice: 6 valeur: r</code></pre>
</div>
</div>
</div>
</div>


</section>
</section>

 ]]></description>
  <category>1NSI</category>
  <guid>https://www.lyceum.fr/1g/nsi/3-representation-des-donnees-types-construits/1-introduction-aux-tableaux/</guid>
  <pubDate>Wed, 31 Jul 2024 15:15:56 GMT</pubDate>
</item>
<item>
  <title>Chapitre 2: Usages avancés des tableaux</title>
  <link>https://www.lyceum.fr/1g/nsi/3-representation-des-donnees-types-construits/2-usages-avances-des-tableaux/</link>
  <description><![CDATA[ 




<div class="programme">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-1-contents" aria-controls="callout-1" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Programme
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-1" class="callout-1-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="programme">
<table class="table table-bordered table-hover caption-top">
<thead class="table-warning">
<tr class="header">
<th>Contenus</th>
<th>Capacités attendues</th>
<th>Commentaires</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Tableau indexé, tableau donné en compréhension</td>
<td><p>Lire et modifier les éléments d’un tableau grâce à leurs index.</p>
<p>Construire un tableau par compréhension.</p>
<p>Utiliser des tableaux de tableaux pour représenter des matrices, notation <code>a[i][j]</code></p>
<p>Itérer sur les éléments d’un tableau.</p></td>
<td><p>Seuls les tableaux dont les éléments sont du même type sont présentés.</p>
<p>Aucune connaissance des tranches (slices) n’est exigible.</p>
<p>L’aspect dynamique des tableaux de Python n’est pas évoqué.</p>
<p>Python identifie listes et tableaux.</p>
<p>Il n’est pas fait référence aux tableaux de la bibliothèque NumPy.</p></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div>

</div>
<div class="intro quarto-layout-panel" data-layout-ncol="2">
<div class="quarto-layout-row">
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<p>Nous nous intéressons dans ce chapitre à quelques fonctions avancées des tableaux comme leur création <em>par compréhension</em> et l’utilisation de tableaux de tableaux pour représenter des données à deux dimensions comme une image par exemple.</p>
</div>
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<p></p><figure class="wikimage figure"><picture>
			  <source type="image/webp" srcset="/img/-fWE2XuSIf-289.webp 289w, /img/-fWE2XuSIf-300.webp 300w, /img/-fWE2XuSIf-600.webp 600w" sizes="100vw">
  <source type="image/svg+xml" srcset="/img/-fWE2XuSIf-289.svg 289w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/-fWE2XuSIf-289.webp" width="600" height="707" alt="Un tableau (dynamique) possède une taille varaiable, et on peut lui ajouter ou lui enlever des éléments après sa création et son stockage en mémoire." loading="lazy" decoding="async">
			</picture>
<figcaption id="caption">Un tableau (dynamique) possède une taille varaiable, et on peut lui ajouter ou lui enlever des éléments après sa création et son stockage en mémoire.</figcaption><figcaption id="credit">&nbsp;CC0&nbsp;<a id="image-description" href="//commons.wikimedia.org/wiki/File:Dynamic_array.svg">via Wikimedia Commons</a></figcaption></figure><p></p>
</div>
</div>
</div>
<section id="tableau-donné-en-compréhension" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="tableau-donné-en-compréhension"><span class="header-section-number">1</span> Tableau donné en compréhension</h2>
<p>Plutôt que de remplir un tableau par énumération de ces éléments dans une boucle, on peut définir des <a href="">listes en compréhension</a>, c’est-à-dire des listes dont le contenu est <em>défini par filtrage du contenu d’une autre liste</em>.</p>
<section id="boucle-classique" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="boucle-classique"><span class="header-section-number">1.1</span> Boucle classique</h3>
<p>On commence par créer une liste vide, puis, on ajoute grâce à une boucle les éléments un à un à la liste grâce à la méthode <code>append()</code>.</p>
<p>Voici par exemple comment créer une liste contenant les puissances de 2 de <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mn>2</mn><mn>1</mn></msup><annotation encoding="application/x-tex">2^1</annotation></semantics></math> à <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mn>2</mn><mn>12</mn></msup><annotation encoding="application/x-tex">2^{12}</annotation></semantics></math>.</p>
<div id="ab5bb366" class="cell" data-execution_count="1">
<div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb1-1">t <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> []</span>
<span id="cb1-2"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> i <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">range</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">13</span>):</span>
<span id="cb1-3">    t.append(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span>i)</span>
<span id="cb1-4">t</span></code></pre></div>
<div class="cell-output cell-output-display" data-execution_count="1">
<pre><code>[1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096]</code></pre>
</div>
</div>
</section>
<section id="écriture-en-compréhension" class="level3" data-number="1.2">
<h3 data-number="1.2" class="anchored" data-anchor-id="écriture-en-compréhension"><span class="header-section-number">1.2</span> Écriture en compréhension</h3>
<p>Cette construction syntaxique offre des avantages de lisibilité et de concision et se rapproche de la notation utilisée en mathématiques :</p>
<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>S</mi><mo>=</mo><mo stretchy="false" form="prefix">{</mo><msup><mn>2</mn><mi>n</mi></msup><mo stretchy="false" form="prefix">|</mo><mi>n</mi><mo>∈</mo><mi>ℕ</mi><mo>,</mo><mi>n</mi><mo>&lt;</mo><mn>13</mn><mo stretchy="false" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">
S=\{2^{n} | n\in {\mathbb{N}}, n&lt;13\}
</annotation></semantics></math></p>
<div id="f27c68a2" class="cell" data-execution_count="2">
<div class="sourceCode cell-code" id="cb3" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb3-1">t <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> [<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span>n <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> n <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">range</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">13</span>)]</span>
<span id="cb3-2">t</span></code></pre></div>
<div class="cell-output cell-output-display" data-execution_count="2">
<pre><code>[1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096]</code></pre>
</div>
</div>
<p>On peut même ajouter des conditions. Par exemple ici on crée une liste des puissances de 2 des puissances paires.</p>
<div id="84569a3e" class="cell" data-execution_count="3">
<div class="sourceCode cell-code" id="cb5" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb5-1">t <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> [<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span>n <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> n <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">range</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">13</span>) <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> n <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">%</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>]</span>
<span id="cb5-2">t</span></code></pre></div>
<div class="cell-output cell-output-display" data-execution_count="3">
<pre><code>[1, 4, 16, 64, 256, 1024, 4096]</code></pre>
</div>
</div>
<div class="plus">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-2-contents" aria-controls="callout-2" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
En plus: Syntaxe complète avec `else`
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-2" class="callout-2-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="plus" data-titre="Syntaxe complète avec `else`">
<p>Il est possible d’utiliser une clause <code>else</code> dans les conditions grâce à l’opérateur ternaire: <code>valeur_si_vrai if condition else valeur_si_faux</code></p>
<div class="sourceCode" id="cb7" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb7-1">[f(x) <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> condition <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span> g(x) <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> x <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> sequence]</span></code></pre></div>
<p>Par exemple:</p>
<div class="sourceCode" id="cb8" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb8-1">[<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">str</span>(i) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">" est pair"</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> i <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">%</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">str</span>(i) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">" est impair"</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> i <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">range</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>)]</span></code></pre></div>
<p>renvoie: <code>['0 est pair', '1 est impair', '2 est pair', '3 est impair', '4 est pair']</code></p>
</div>
</div>
</div>
</div>
</div>
</section>
</section>
<section id="tableaux-à-deux-dimensions-les-matrices" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="tableaux-à-deux-dimensions-les-matrices"><span class="header-section-number">2</span> Tableaux à deux dimensions: les matrices</h2>
<div>

</div>
<div class="quarto-layout-panel" data-layout-ncol="2">
<div class="quarto-layout-row">
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<p>Pour représenter un tableau de données, on peut utiliser une liste de liste. <math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="true" form="prefix">(</mo><mtable><mtr><mtd columnalign="center" style="text-align: center"><mn>1</mn></mtd><mtd columnalign="center" style="text-align: center"><mn>2</mn></mtd><mtd columnalign="center" style="text-align: center"><mn>3</mn></mtd></mtr><mtr><mtd columnalign="center" style="text-align: center"><mn>4</mn></mtd><mtd columnalign="center" style="text-align: center"><mn>5</mn></mtd><mtd columnalign="center" style="text-align: center"><mn>6</mn></mtd></mtr><mtr><mtd columnalign="center" style="text-align: center"><mn>7</mn></mtd><mtd columnalign="center" style="text-align: center"><mn>8</mn></mtd><mtd columnalign="center" style="text-align: center"><mn>9</mn></mtd></mtr></mtable><mo stretchy="true" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">
\begin{pmatrix}
   1 &amp; 2 &amp; 3\\
   4 &amp; 5 &amp; 6\\
   7 &amp; 8 &amp; 9 
\end{pmatrix}
</annotation></semantics></math></p>
</div>
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<p></p><figure class="wikimage figure"><picture>
			  <source type="image/webp" srcset="/img/yVBB2v0xKe-206.webp 206w, /img/yVBB2v0xKe-300.webp 300w, /img/yVBB2v0xKe-600.webp 600w" sizes="100vw">
  <source type="image/svg+xml" srcset="/img/yVBB2v0xKe-206.svg 206w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/yVBB2v0xKe-206.webp" width="600" height="431" alt="Stockage d'un tableau dans une liste de listes." loading="lazy" decoding="async">
			</picture>
<figcaption id="caption">Stockage d'un tableau dans une liste de listes.</figcaption><figcaption id="credit">&nbsp;Public domain&nbsp;<a id="image-description" href="//commons.wikimedia.org/wiki/File:Array_of_array_storage.svg">via Wikimedia Commons</a></figcaption></figure><p></p>
</div>
</div>
</div>
<div id="f646dcab" class="cell" data-execution_count="4">
<div class="sourceCode cell-code" id="cb9" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb9-1">mat <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> [[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>],</span>
<span id="cb9-2">       [<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span>],</span>
<span id="cb9-3">       [<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">7</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">9</span>]]</span>
<span id="cb9-4">mat</span></code></pre></div>
<div class="cell-output cell-output-display" data-execution_count="4">
<pre><code>[[1, 2, 3], [4, 5, 6], [7, 8, 9]]</code></pre>
</div>
</div>
<section id="accès-aux-éléments" class="level3" data-number="2.1">
<h3 data-number="2.1" class="anchored" data-anchor-id="accès-aux-éléments"><span class="header-section-number">2.1</span> Accès aux éléments</h3>
<p>On accède alors aux éléments en précisant l’index de ligne et de colonne: <code>mat[i ligne][j colonne]</code>.</p>
<p>Par exemple pour accéder au troisième élément de la première ligne.</p>
<div id="935566c0" class="cell" data-execution_count="5">
<div class="sourceCode cell-code" id="cb11" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb11-1">mat[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>][<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>]</span></code></pre></div>
<div class="cell-output cell-output-display" data-execution_count="5">
<pre><code>3</code></pre>
</div>
</div>
<p>Accès au deuxième élément de la troisième ligne.</p>
<div id="5bd20975" class="cell" data-execution_count="6">
<div class="sourceCode cell-code" id="cb13" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb13-1">mat[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>][<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>]</span></code></pre></div>
<div class="cell-output cell-output-display" data-execution_count="6">
<pre><code>8</code></pre>
</div>
</div>
</section>
<section id="accès-aux-lignes-et-colonnes" class="level3" data-number="2.2">
<h3 data-number="2.2" class="anchored" data-anchor-id="accès-aux-lignes-et-colonnes"><span class="header-section-number">2.2</span> Accès aux lignes et colonnes</h3>
<p>L’accès à une ligne est aisé, par exemple pour la deuxième ligne.</p>
<div id="595f35bd" class="cell" data-execution_count="7">
<div class="sourceCode cell-code" id="cb15" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb15-1">mat[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>]</span></code></pre></div>
<div class="cell-output cell-output-display" data-execution_count="7">
<pre><code>[4, 5, 6]</code></pre>
</div>
</div>
<p>L’accès aux colonnes est plus délicat, on peut par exemple utiliser une liste en compréhension, par exemple pour accéder à la première colonne.</p>
<div id="7fa1790c" class="cell" data-execution_count="8">
<div class="sourceCode cell-code" id="cb17" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb17-1">[ligne[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>] <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> ligne <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> mat]</span></code></pre></div>
<div class="cell-output cell-output-display" data-execution_count="8">
<pre><code>[1, 4, 7]</code></pre>
</div>
</div>
</section>
<section id="itérations-sur-les-valeurs" class="level3" data-number="2.3">
<h3 data-number="2.3" class="anchored" data-anchor-id="itérations-sur-les-valeurs"><span class="header-section-number">2.3</span> Itérations sur les valeurs</h3>
<p>Comme il s’agit d’une structure imbriquée, nous devons utiliser deux boucles imbriquées.</p>
<p>On peut par exemple itérer sur les valeurs des lignes.</p>
<div id="64dca7e8" class="cell" data-execution_count="9">
<div class="sourceCode cell-code" id="cb19" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb19-1"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> ligne <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> mat:</span>
<span id="cb19-2">    <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> val <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> ligne:</span>
<span id="cb19-3">        <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(val)</span></code></pre></div>
<p><span class="smallcaps">&gt;&gt;sortie</span></p>
<div class="cell-output cell-output-stdout">
<pre><code>1
2
3
4
5
6
7
8
9</code></pre>
</div>
</div>


</section>
</section>

 ]]></description>
  <category>1NSI</category>
  <guid>https://www.lyceum.fr/1g/nsi/3-representation-des-donnees-types-construits/2-usages-avances-des-tableaux/</guid>
  <pubDate>Wed, 31 Jul 2024 15:15:56 GMT</pubDate>
</item>
<item>
  <title>Chapitre 3: Dictionnaires</title>
  <link>https://www.lyceum.fr/1g/nsi/3-representation-des-donnees-types-construits/3-dictionnaires/</link>
  <description><![CDATA[ 




<div class="programme">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-1-contents" aria-controls="callout-1" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Programme
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-1" class="callout-1-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="programme">
<table class="table table-bordered table-hover caption-top">
<thead class="table-warning">
<tr class="header">
<th>Contenus</th>
<th>Capacités attendues</th>
<th>Commentaires</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Dictionnaires par clés et valeurs</td>
<td><p>Construire une entrée de dictionnaire</p>
<p>Itérer sur les éléments d’un dictionnaire.</p></td>
<td><p>Il est possible de présenter les données EXIF d’une image sous la forme d’un enregistrement.</p>
<p>En Python, les p-uplets nommés sont implémentés par des dictionnaires.</p>
<p>Utiliser les méthodes <code>keys()</code>, <code>values()</code> et <code>items()</code></p></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div>

</div>
<div class="intro quarto-layout-panel" data-layout-ncol="2">
<div class="quarto-layout-row">
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<p>Dans un dictionnaire les valeurs de la collection ne sont pas repéré par un index, mais par une <em>clé</em>. Ils ne possèdent donc pas d’ordre a priori, c’est une structure <em>non-ordonnée</em>. Les dernières versions de Python assurent cependant un ordre lors de leur itération.</p>
</div>
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<p></p><figure class="wikimage figure"><picture>
			  <source type="image/webp" srcset="/img/DfK9FySFiR-300.webp 300w, /img/DfK9FySFiR-600.webp 600w, /img/DfK9FySFiR-688.webp 688w" sizes="100vw">
  <source type="image/svg+xml" srcset="/img/DfK9FySFiR-688.svg 688w" sizes="100vw">
				<img class="img-fluid figure-img" src="https://www.lyceum.fr/img/DfK9FySFiR-300.webp" width="688" height="261" alt="Les dictionnaires en Python sont ce que l'on appelle un tableau associatif." loading="lazy" decoding="async">
			</picture>
<figcaption id="caption">Les dictionnaires en Python sont ce que l'on appelle un tableau associatif.</figcaption><figcaption id="credit">&nbsp;Public domain&nbsp;<a id="image-description" href="//commons.wikimedia.org/wiki/File:Associative_array_as_linked_list.svg">via Wikimedia Commons</a></figcaption></figure><p></p>
</div>
</div>
</div>
<section id="syntaxe" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="syntaxe"><span class="header-section-number">1</span> Syntaxe</h2>
<p>Les dictionnaires sont entourés d’accolades <code>{}</code>. Les clés doivent être des objets <em>imuables</em>, typiquement des <code>str</code>.</p>
<div class="sourceCode" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb1-1">{<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'clé_1'</span>: valeur_1, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'clé_n'</span>: valeur_n, ...<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'clé_n'</span>: valeur_n}</span></code></pre></div>
<div id="68090699" class="cell" data-execution_count="1">
<div class="sourceCode cell-code" id="cb2" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb2-1">D <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> { <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'nom'</span>: <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Lagaffe'</span> , <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'prenom'</span>: <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Gaston'</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'age'</span>: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">22</span> }</span>
<span id="cb2-2"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">type</span>(D)</span></code></pre></div>
<div class="cell-output cell-output-display" data-execution_count="1">
<pre><code>dict</code></pre>
</div>
</div>
<p>Pour accéder aux éléments du dictionnaire, il suffit d’appeler la clé correspondante, d’autre part la fonction <code>len()</code> est également disponible.</p>
<div id="9a9ff769" class="cell" data-execution_count="2">
<div class="sourceCode cell-code" id="cb4" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb4-1"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">len</span>(D)</span></code></pre></div>
<div class="cell-output cell-output-display" data-execution_count="2">
<pre><code>3</code></pre>
</div>
</div>
<div id="db2dee4f" class="cell" data-execution_count="3">
<div class="sourceCode cell-code" id="cb6" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb6-1">D[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'nom'</span>]</span></code></pre></div>
<div class="cell-output cell-output-display" data-execution_count="3">
<pre><code>'Lagaffe'</code></pre>
</div>
</div>
<div id="2912f6aa" class="cell" data-execution_count="4">
<div class="sourceCode cell-code" id="cb8" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb8-1">D[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'age'</span>]</span></code></pre></div>
<div class="cell-output cell-output-display" data-execution_count="4">
<pre><code>22</code></pre>
</div>
</div>
</section>
<section id="ajout-et-suppression-déléments" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="ajout-et-suppression-déléments"><span class="header-section-number">2</span> Ajout et suppression d’éléments</h2>
<p>Les dictionnaires étant <em><a href="https://fr.wiktionary.org/wiki/mutable">mutables</a></em>, on peut ajouter des éléments au dictionnaire en **assignant* des clés paire valeur à notre guise.</p>
<div id="a9564d9d" class="cell" data-execution_count="5">
<div class="sourceCode cell-code" id="cb10" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb10-1">D[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"expression"</span>] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"M'enfin"</span></span>
<span id="cb10-2">D</span></code></pre></div>
<div class="cell-output cell-output-display" data-execution_count="5">
<pre><code>{'nom': 'Lagaffe', 'prenom': 'Gaston', 'age': 22, 'expression': "M'enfin"}</code></pre>
</div>
</div>
<p>On peut au contraire supprimer des éléments du dictionnaire avec la méthode <code>pop()</code>.</p>
<div id="20c9204d" class="cell" data-execution_count="6">
<div class="sourceCode cell-code" id="cb12" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb12-1">D.pop(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"age"</span>)</span>
<span id="cb12-2">D</span></code></pre></div>
<div class="cell-output cell-output-display" data-execution_count="6">
<pre><code>{'nom': 'Lagaffe', 'prenom': 'Gaston', 'expression': "M'enfin"}</code></pre>
</div>
</div>
</section>
<section id="autres-méthodes-des-dictionnaires" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="autres-méthodes-des-dictionnaires"><span class="header-section-number">3</span> Autres méthodes des dictionnaires</h2>
<p>Les méthodes des <code>dict</code>ionnaires sont décrites dans la <a href="https://docs.python.org/fr/3/library/stdtypes.html#sequence-types-list-tuple-range">documentation</a> ou grâce à l’appel <code>help(tuple)</code>, outre les méthodes d’itération il peut être utile de connaitre la méthode <code>get(clé)</code> qui renvoie la valeur associée à l clé ou <code>None</code> si la clé n’existe pas.</p>
<p>Cela permet d’éviter les exceptions du type <code>KeyError</code> si la clé n’existe pas.</p>
<div id="166233b0" class="cell" data-execution_count="7">
<div class="sourceCode cell-code" id="cb14" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb14-1">D</span></code></pre></div>
<div class="cell-output cell-output-display" data-execution_count="7">
<pre><code>{'nom': 'Lagaffe', 'prenom': 'Gaston', 'expression': "M'enfin"}</code></pre>
</div>
</div>
<p>Par exemple, la clé <code>age</code> n’existe plus donc la syntaxe d’accés par clé renvoir une erreur.</p>
<div id="20ff347e" class="cell" data-execution_count="8">
<div class="sourceCode cell-code" id="cb16" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb16-1"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(D[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"nom"</span>])</span>
<span id="cb16-2"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(D[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"prenom"</span>])</span>
<span id="cb16-3"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(D[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"age"</span>])</span></code></pre></div>
<p><span class="smallcaps">&gt;&gt;sortie</span></p>
<div class="cell-output cell-output-stdout">
<pre><code>Lagaffe
Gaston</code></pre>
</div>
<p><span class="smallcaps">&gt;&gt;sortie</span></p>
<div class="cell-output cell-output-error">
<div class="ansi-escaped-output">
<pre><span class="ansi-red-fg">---------------------------------------------------------------------------</span>
<span class="ansi-red-fg">KeyError</span>                                  Traceback (most recent call last)
Cell <span class="ansi-green-fg">In[8], line 3</span>
<span class="ansi-green-fg ansi-bold">      1</span> <span style="color:rgb(0,135,0)">print</span>(D[<span style="color:rgb(175,0,0)">"</span><span style="color:rgb(175,0,0)">nom</span><span style="color:rgb(175,0,0)">"</span>])
<span class="ansi-green-fg ansi-bold">      2</span> <span style="color:rgb(0,135,0)">print</span>(D[<span style="color:rgb(175,0,0)">"</span><span style="color:rgb(175,0,0)">prenom</span><span style="color:rgb(175,0,0)">"</span>])
<span class="ansi-green-fg">----&gt; 3</span> <span style="color:rgb(0,135,0)">print</span>(<span class="ansi-yellow-bg">D</span><span class="ansi-yellow-bg">[</span><span style="color:rgb(175,0,0)" class="ansi-yellow-bg">"</span><span style="color:rgb(175,0,0)" class="ansi-yellow-bg">age</span><span style="color:rgb(175,0,0)" class="ansi-yellow-bg">"</span><span class="ansi-yellow-bg">]</span>)

<span class="ansi-red-fg">KeyError</span>: 'age'</pre>
</div>
</div>
</div>
<p>Par contre, la méthode <code>get()</code> ne générera pas la <code>KeyError</code> et renverra <code>None</code> la clé n’existe pas.</p>
<div id="ab069927" class="cell" data-execution_count="9">
<div class="sourceCode cell-code" id="cb18" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb18-1"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(D.get(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"nom"</span>))</span>
<span id="cb18-2"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(D.get(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"prenom"</span>))</span>
<span id="cb18-3"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(D.get(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"age"</span>))</span></code></pre></div>
<p><span class="smallcaps">&gt;&gt;sortie</span></p>
<div class="cell-output cell-output-stdout">
<pre><code>Lagaffe
Gaston
None</code></pre>
</div>
</div>
<div class="plus">
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-2-contents" aria-controls="callout-2" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
En plus: Documentation des dictionnaires
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-2" class="callout-2-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<div class="plus" data-titre="Documentation des dictionnaires">
<div id="aa9287d8" class="cell" data-execution_count="10">
<div class="sourceCode cell-code" id="cb20" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb20-1"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">help</span>(<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">dict</span>)</span></code></pre></div>
<p><span class="smallcaps">&gt;&gt;sortie</span></p>
<div class="cell-output cell-output-stdout">
<pre><code>Help on class dict in module builtins:

class dict(object)
 |  dict() -&gt; new empty dictionary
 |  dict(mapping) -&gt; new dictionary initialized from a mapping object's
 |      (key, value) pairs
 |  dict(iterable) -&gt; new dictionary initialized as if via:
 |      d = {}
 |      for k, v in iterable:
 |          d[k] = v
 |  dict(**kwargs) -&gt; new dictionary initialized with the name=value pairs
 |      in the keyword argument list.  For example:  dict(one=1, two=2)
 |
 |  Built-in subclasses:
 |      StgDict
 |
 |  Methods defined here:
 |
 |  __contains__(self, key, /)
 |      True if the dictionary has the specified key, else False.
 |
 |  __delitem__(self, key, /)
 |      Delete self[key].
 |
 |  __eq__(self, value, /)
 |      Return self==value.
 |
 |  __ge__(self, value, /)
 |      Return self&gt;=value.
 |
 |  __getattribute__(self, name, /)
 |      Return getattr(self, name).
 |
 |  __getitem__(self, key, /)
 |      Return self[key].
 |
 |  __gt__(self, value, /)
 |      Return self&gt;value.
 |
 |  __init__(self, /, *args, **kwargs)
 |      Initialize self.  See help(type(self)) for accurate signature.
 |
 |  __ior__(self, value, /)
 |      Return self|=value.
 |
 |  __iter__(self, /)
 |      Implement iter(self).
 |
 |  __le__(self, value, /)
 |      Return self&lt;=value.
 |
 |  __len__(self, /)
 |      Return len(self).
 |
 |  __lt__(self, value, /)
 |      Return self&lt;value.
 |
 |  __ne__(self, value, /)
 |      Return self!=value.
 |
 |  __or__(self, value, /)
 |      Return self|value.
 |
 |  __repr__(self, /)
 |      Return repr(self).
 |
 |  __reversed__(self, /)
 |      Return a reverse iterator over the dict keys.
 |
 |  __ror__(self, value, /)
 |      Return value|self.
 |
 |  __setitem__(self, key, value, /)
 |      Set self[key] to value.
 |
 |  __sizeof__(...)
 |      D.__sizeof__() -&gt; size of D in memory, in bytes
 |
 |  clear(...)
 |      D.clear() -&gt; None.  Remove all items from D.
 |
 |  copy(...)
 |      D.copy() -&gt; a shallow copy of D
 |
 |  get(self, key, default=None, /)
 |      Return the value for key if key is in the dictionary, else default.
 |
 |  items(...)
 |      D.items() -&gt; a set-like object providing a view on D's items
 |
 |  keys(...)
 |      D.keys() -&gt; a set-like object providing a view on D's keys
 |
 |  pop(...)
 |      D.pop(k[,d]) -&gt; v, remove specified key and return the corresponding value.
 |
 |      If the key is not found, return the default if given; otherwise,
 |      raise a KeyError.
 |
 |  popitem(self, /)
 |      Remove and return a (key, value) pair as a 2-tuple.
 |
 |      Pairs are returned in LIFO (last-in, first-out) order.
 |      Raises KeyError if the dict is empty.
 |
 |  setdefault(self, key, default=None, /)
 |      Insert key with a value of default if key is not in the dictionary.
 |
 |      Return the value for key if key is in the dictionary, else default.
 |
 |  update(...)
 |      D.update([E, ]**F) -&gt; None.  Update D from dict/iterable E and F.
 |      If E is present and has a .keys() method, then does:  for k in E: D[k] = E[k]
 |      If E is present and lacks a .keys() method, then does:  for k, v in E: D[k] = v
 |      In either case, this is followed by: for k in F:  D[k] = F[k]
 |
 |  values(...)
 |      D.values() -&gt; an object providing a view on D's values
 |
 |  ----------------------------------------------------------------------
 |  Class methods defined here:
 |
 |  __class_getitem__(...)
 |      See PEP 585
 |
 |  fromkeys(iterable, value=None, /)
 |      Create a new dictionary with keys from iterable and values set to value.
 |
 |  ----------------------------------------------------------------------
 |  Static methods defined here:
 |
 |  __new__(*args, **kwargs)
 |      Create and return a new object.  See help(type) for accurate signature.
 |
 |  ----------------------------------------------------------------------
 |  Data and other attributes defined here:
 |
 |  __hash__ = None
</code></pre>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<section id="itération-sur-les-dictionnaires" class="level2" data-number="4">
<h2 data-number="4" class="anchored" data-anchor-id="itération-sur-les-dictionnaires"><span class="header-section-number">4</span> Itération sur les dictionnaires</h2>
<p>Les dictionnaires étant des associations de clés(<em>keys</em>) et de valeurs(<em>values</em>), il existe trois méthodes pour <em>itérer</em> sur les clés, les valeurs ou les deux.</p>
<section id="itération-sur-les-clés-keys" class="level3" data-number="4.1">
<h3 data-number="4.1" class="anchored" data-anchor-id="itération-sur-les-clés-keys"><span class="header-section-number">4.1</span> Itération sur les clés: <code>keys()</code></h3>
<div id="e8ab0f1a" class="cell" data-execution_count="11">
<div class="sourceCode cell-code" id="cb22" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb22-1"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> key <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> D.keys():</span>
<span id="cb22-2">    <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(key)</span></code></pre></div>
<p><span class="smallcaps">&gt;&gt;sortie</span></p>
<div class="cell-output cell-output-stdout">
<pre><code>nom
prenom
expression</code></pre>
</div>
</div>
<p>Ou plus simplement.</p>
<div id="987a54c5" class="cell" data-execution_count="12">
<div class="sourceCode cell-code" id="cb24" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb24-1"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> key <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> D:</span>
<span id="cb24-2">    <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(key)</span></code></pre></div>
<p><span class="smallcaps">&gt;&gt;sortie</span></p>
<div class="cell-output cell-output-stdout">
<pre><code>nom
prenom
expression</code></pre>
</div>
</div>
</section>
<section id="itération-sur-les-valeurs-values" class="level3" data-number="4.2">
<h3 data-number="4.2" class="anchored" data-anchor-id="itération-sur-les-valeurs-values"><span class="header-section-number">4.2</span> Itération sur les valeurs: <code>values()</code></h3>
<div id="63122e70" class="cell" data-execution_count="13">
<div class="sourceCode cell-code" id="cb26" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb26-1"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> value <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> D.values():</span>
<span id="cb26-2">    <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(value)</span></code></pre></div>
<p><span class="smallcaps">&gt;&gt;sortie</span></p>
<div class="cell-output cell-output-stdout">
<pre><code>Lagaffe
Gaston
M'enfin</code></pre>
</div>
</div>
</section>
<section id="itération-sur-les-paires-clé-valeurs-items" class="level3" data-number="4.3">
<h3 data-number="4.3" class="anchored" data-anchor-id="itération-sur-les-paires-clé-valeurs-items"><span class="header-section-number">4.3</span> Itération sur les paires clé, valeurs: <code>items()</code></h3>
<div id="1f80d124" class="cell" data-execution_count="14">
<div class="sourceCode cell-code" id="cb28" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb28-1"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> key, value <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> D.items():</span>
<span id="cb28-2">    <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(key, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'=&gt;'</span>, value)</span></code></pre></div>
<p><span class="smallcaps">&gt;&gt;sortie</span></p>
<div class="cell-output cell-output-stdout">
<pre><code>nom =&gt; Lagaffe
prenom =&gt; Gaston
expression =&gt; M'enfin</code></pre>
</div>
</div>
</section>
</section>
<section id="p-uplets-nommés" class="level2" data-number="5">
<h2 data-number="5" class="anchored" data-anchor-id="p-uplets-nommés"><span class="header-section-number">5</span> p-uplets nommés</h2>
<p>Il est possible de créer des p-uplets nommés afin de pouvoir accéder aux éléments de la collection par clé. Contrairement aux dictionnaires, ils sont immutables et donc potentiellement plus performants, ils sont cependant peu utilisés et nécessite d’être importé par le module <code>collections</code> avant d’être utilisé.</p>
<div id="a4b3ce5e" class="cell" data-execution_count="15">
<div class="sourceCode cell-code" id="cb30" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb30-1"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">from</span> collections <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> namedtuple</span>
<span id="cb30-2"></span>
<span id="cb30-3">Eleve <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> namedtuple(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Eleve'</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'nom, age, classe, spécialité'</span>)</span>
<span id="cb30-4">e <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> Eleve(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"John"</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">17</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"1g"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"nsi"</span> )</span>
<span id="cb30-5">e</span></code></pre></div>
<div class="cell-output cell-output-display" data-execution_count="15">
<pre><code>Eleve(nom='John', age=17, classe='1g', spécialité='nsi')</code></pre>
</div>
</div>
<p>L’accès peut se faire en ajoutant un point et le nom de la clé. Il s’agit d’une <em>notation pointée</em> comme dans le cas d’appel de méthodes, cependant il n’y a pas de parenthèses, car il s’agit de valeurs et non de fonctions(On parle d’attributs de l’objet).</p>
<div id="bb2f832a" class="cell" data-execution_count="16">
<div class="sourceCode cell-code" id="cb32" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb32-1">e.age</span></code></pre></div>
<div class="cell-output cell-output-display" data-execution_count="16">
<pre><code>17</code></pre>
</div>
</div>
<div id="4220b18c" class="cell" data-execution_count="17">
<div class="sourceCode cell-code" id="cb34" style="background: #f1f3f5;"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb34-1">e.spécialité</span></code></pre></div>
<div class="cell-output cell-output-display" data-execution_count="17">
<pre><code>'nsi'</code></pre>
</div>
</div>
</section>
<section id="structures-imbriquées-avec-les-dictionnaires" class="level2" data-number="6">
<h2 data-number="6" class="anchored" data-anchor-id="structures-imbriquées-avec-les-dictionnaires"><span class="header-section-number">6</span> Structures imbriquées avec les dictionnaires</h2>
<p>Tout comme nous avons vu les tableaux de tableau dans le chapitre précédent, il est possible d’imaginer des structures imbriquées avec des dictionnaires.</p>
<p>On va s’intéresser plus particulièrement à une liste de dictionnaire qui pourrait être obtenue par lecture d’un fichier de données <code>csv</code>.</p>


</section>

 ]]></description>
  <category>1NSI</category>
  <guid>https://www.lyceum.fr/1g/nsi/3-representation-des-donnees-types-construits/3-dictionnaires/</guid>
  <pubDate>Wed, 31 Jul 2024 15:15:56 GMT</pubDate>
</item>
</channel>
</rss>
