Rattrapage cours paradigmes + theorie
This commit is contained in:
parent
080b45e2b7
commit
dd3c48b811
|
@ -5,7 +5,7 @@ Cours de Licence3 Semestre 2
|
|||
##### Liste des cours
|
||||
- [Systèmes d'exploitation](../systemesdexploitation/compiled/README.html)
|
||||
- [Conception de systèmes d'information](../conceptiondesystemesdinformation/compiled/README.html)
|
||||
- Paradigmes de programmation
|
||||
- [Paradigmes de programmation](../paradigmesdeprogrammation/compiled/README.html)
|
||||
- [Théorie des langages et compilation](../theoriedeslangagesetcompilation/compiled/README.html)
|
||||
- [Systèmes distribués](../systemesdistribues/compiled/README.html)
|
||||
- Anglais
|
||||
|
|
2
compile
2
compile
|
@ -1,3 +1,3 @@
|
|||
#!/bin/sh
|
||||
|
||||
pandoc -f markdown -t html5 --css ../../../dependencies/pandoc.css $1.md -o compiled/$1.html
|
||||
pandoc -f markdown -t html5 --css ../dependencies/pandoc.css $1.md -o compiled/$1.html
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
<ul>
|
||||
<li><a href="../systemesdexploitation/compiled/README.html">Systèmes d'exploitation</a></li>
|
||||
<li><a href="../conceptiondesystemesdinformation/compiled/README.html">Conception de systèmes d'information</a></li>
|
||||
<li>Paradigmes de programmation</li>
|
||||
<li><a href="../paradigmesdeprogrammation/compiled/README.html">Paradigmes de programmation</a></li>
|
||||
<li><a href="../theoriedeslangagesetcompilation/compiled/README.html">Théorie des langages et compilation</a></li>
|
||||
<li><a href="../systemesdistribues/compiled/README.html">Systèmes distribués</a></li>
|
||||
<li>Anglais</li>
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
Paradigmes de programmation
|
||||
---------------------------
|
||||
|
||||
#### Cours
|
||||
|
||||
1. [Introduction](../cours/compiled/introduction.html)
|
||||
|
||||
#### TDs
|
||||
|
||||
#### TPs
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="generator" content="pandoc">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
|
||||
<title></title>
|
||||
<style type="text/css">code{white-space: pre;}</style>
|
||||
<link rel="stylesheet" href="../../dependencies/pandoc.css">
|
||||
<!--[if lt IE 9]>
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
|
||||
<![endif]-->
|
||||
</head>
|
||||
<body>
|
||||
<h2 id="paradigmes-de-programmation">Paradigmes de programmation</h2>
|
||||
<h4 id="cours">Cours</h4>
|
||||
<ol type="1">
|
||||
<li><a href="../cours/compiled/introduction.html">Introduction</a></li>
|
||||
</ol>
|
||||
<h4 id="tds">TDs</h4>
|
||||
<h4 id="tps">TPs</h4>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,3 @@
|
|||
#!/bin/sh
|
||||
|
||||
pandoc -f markdown -t html5 --css ../../../dependencies/pandoc.css $1.md -o compiled/$1.html
|
|
@ -0,0 +1,78 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="generator" content="pandoc">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
|
||||
<title></title>
|
||||
<style type="text/css">code{white-space: pre;}</style>
|
||||
<link rel="stylesheet" href="../../../dependencies/pandoc.css">
|
||||
<!--[if lt IE 9]>
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
|
||||
<![endif]-->
|
||||
</head>
|
||||
<body>
|
||||
<h1 id="paradigmes-de-programmation---introduction">Paradigmes de programmation - Introduction</h1>
|
||||
<h3 id="langage-de-programmation">Langage de programmation</h3>
|
||||
<ul>
|
||||
<li>un modèle de calcul</li>
|
||||
<li>une syntaxe et une sémantique</li>
|
||||
<li>des considérations pragmatiques qui forment le langage</li>
|
||||
</ul>
|
||||
<h3 id="exemple-introductif-suite">Exemple introductif (suite)</h3>
|
||||
<ul>
|
||||
<li>La notation mathématique (syntaxe) fournit le langage de programmation.</li>
|
||||
<li>L'arithmétique fournit le modèle du calcul pour effectuer le calcul</li>
|
||||
<li>Le passage de la syntaxe au modèle de calcul fournit la signification (sémantique) pour le programme.</li>
|
||||
<li>La notation utilisée dans cet exemple est basée sur les considérations très pragmatiques de facilité d'utilisation et de compréhension</li>
|
||||
</ul>
|
||||
<p><strong>CCL</strong>: Cet exemple sert à illustrer plusieurs idées principales dans l'étude des langages de programmation qui sont récapitulées dans la définition suivante.</p>
|
||||
<h3 id="définitions">Définitions</h3>
|
||||
<p><strong>Modèle de calcul</strong></p>
|
||||
<blockquote>
|
||||
<p>Une collection de valeurs et d'exécutions</p>
|
||||
</blockquote>
|
||||
<p><strong>Calcul</strong></p>
|
||||
<blockquote>
|
||||
<p>L'application d'une séquence d'opérations à une valeur pour rapporter une autre valeur.</p>
|
||||
</blockquote>
|
||||
<p><strong>Programme</strong></p>
|
||||
<blockquote>
|
||||
<p>Une spécification d'un calcul.</p>
|
||||
</blockquote>
|
||||
<p><strong>Langage de programmation</strong></p>
|
||||
<blockquote>
|
||||
<p>Une notation pour écrire des programmes.</p>
|
||||
</blockquote>
|
||||
<p><strong>Syntaxe d'un langage de programmation</strong></p>
|
||||
<blockquote>
|
||||
<p>Se rapporte à la structure ou à la forme des programmes.</p>
|
||||
</blockquote>
|
||||
<p><strong>émantique d'un langage de programmation</strong></p>
|
||||
<blockquote>
|
||||
<p>Décrit la relation entre un programme et le modèle de calcul.</p>
|
||||
</blockquote>
|
||||
<p><strong>Pragmatique d'un langage de programmation</strong></p>
|
||||
<blockquote>
|
||||
<p>Décrit le degré de succès avec lequel le langage de programmation est conforme à ses buts d'une part dans sa fidélité au modèle de calcul et d'autre part dans son utilité pour les programmateurs humains.</p>
|
||||
</blockquote>
|
||||
<h3 id="modèles-de-calcul">Modèles de calcul</h3>
|
||||
<ul>
|
||||
<li><p>Trois modèles de calcul <strong>de base</strong>:</p>
|
||||
<ul>
|
||||
<li>fonctionnel</li>
|
||||
<li>logique</li>
|
||||
<li>impératif</li>
|
||||
</ul></li>
|
||||
<li><p>En plus de l'ensemble des valeurs et d'opérations, chacun a un ensemble d'opérations pour effectuer le calcul :</p>
|
||||
<ol type="1">
|
||||
<li>fonctionnel : application de fonctions</li>
|
||||
<li>logique : inférence logique (modus ponens)</li>
|
||||
<li>impératif : ordre de changement d'états</li>
|
||||
</ol></li>
|
||||
</ul>
|
||||
<h4 id="le-modèle-fonctionnel">Le Modèle Fonctionnel</h4>
|
||||
<h4 id="le-modèle-logique">Le Modèle Logique</h4>
|
||||
<h4 id="le-modèle-impératif">Le Modèle Impératif</h4>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,72 @@
|
|||
Paradigmes de programmation - Introduction
|
||||
==========================================
|
||||
|
||||
### Langage de programmation
|
||||
|
||||
* un modèle de calcul
|
||||
* une syntaxe et une sémantique
|
||||
* des considérations pragmatiques qui forment le langage
|
||||
|
||||
|
||||
### Exemple introductif (suite)
|
||||
|
||||
* La notation mathématique (syntaxe) fournit le langage de programmation.
|
||||
* L'arithmétique fournit le modèle du calcul pour effectuer le calcul
|
||||
* Le passage de la syntaxe au modèle de calcul fournit la signification (sémantique) pour le programme.
|
||||
* La notation utilisée dans cet exemple est basée sur les considérations très pragmatiques de facilité d'utilisation et de compréhension
|
||||
|
||||
|
||||
**CCL**: Cet exemple sert à illustrer plusieurs idées principales dans l'étude des langages de programmation qui sont récapitulées dans la définition suivante.
|
||||
|
||||
### Définitions
|
||||
|
||||
**Modèle de calcul**
|
||||
|
||||
> Une collection de valeurs et d'exécutions
|
||||
|
||||
**Calcul**
|
||||
|
||||
> L'application d'une séquence d'opérations à une valeur pour rapporter une autre valeur.
|
||||
|
||||
**Programme**
|
||||
|
||||
> Une spécification d'un calcul.
|
||||
|
||||
**Langage de programmation**
|
||||
|
||||
> Une notation pour écrire des programmes.
|
||||
|
||||
**Syntaxe d'un langage de programmation**
|
||||
|
||||
> Se rapporte à la structure ou à la forme des programmes.
|
||||
|
||||
|
||||
**émantique d'un langage de programmation**
|
||||
|
||||
> Décrit la relation entre un programme et le modèle de calcul.
|
||||
|
||||
**Pragmatique d'un langage de programmation**
|
||||
|
||||
> Décrit le degré de succès avec lequel le langage de programmation est conforme à ses buts d'une part dans sa fidélité au modèle de calcul et d'autre part dans son utilité pour les programmateurs humains.
|
||||
|
||||
### Modèles de calcul
|
||||
|
||||
* Trois modèles de calcul **de base**:
|
||||
|
||||
* fonctionnel
|
||||
* logique
|
||||
* impératif
|
||||
|
||||
|
||||
* En plus de l'ensemble des valeurs et d'opérations, chacun a un ensemble d'opérations pour effectuer le calcul :
|
||||
|
||||
1. fonctionnel : application de fonctions
|
||||
2. logique : inférence logique (modus ponens)
|
||||
3. impératif : ordre de changement d'états
|
||||
|
||||
|
||||
#### Le Modèle Fonctionnel
|
||||
|
||||
#### Le Modèle Logique
|
||||
|
||||
#### Le Modèle Impératif
|
|
@ -4,7 +4,8 @@ Théorie des langages de programmation & compilation
|
|||
#### Cours
|
||||
|
||||
1. [Introduction](../cours/compiled/introduction.html)
|
||||
2. [Chapitre 1](../cours/compiled/1.html)
|
||||
2. [Chapitre 1 - Langages](../cours/compiled/1.html)
|
||||
3. [Chapitre 2 - Grammaire](../cours/compiled/2.html)
|
||||
|
||||
#### TDs
|
||||
|
||||
|
|
|
@ -16,7 +16,8 @@
|
|||
<h4 id="cours">Cours</h4>
|
||||
<ol type="1">
|
||||
<li><a href="../cours/compiled/introduction.html">Introduction</a></li>
|
||||
<li><a href="../cours/compiled/1.html">Chapitre 1</a></li>
|
||||
<li><a href="../cours/compiled/1.html">Chapitre 1 - Langages</a></li>
|
||||
<li><a href="../cours/compiled/2.html">Chapitre 2 - Grammaire</a></li>
|
||||
</ol>
|
||||
<h4 id="tds">TDs</h4>
|
||||
<h4 id="tps">TPs</h4>
|
||||
|
|
|
@ -119,3 +119,41 @@ Principe pour décrire les langages par une **grammaire** (procédé formel de c
|
|||
|
||||
|
||||
### Opérations sur les langages
|
||||
|
||||
Soit $L$ et $M$, deux langages, et l'alphabet $\Sigma = {a, b}$.
|
||||
|
||||
- Union: $L\cup M = \{x\in \Sigma^* / x\in L\ ou\ x\in M\}$
|
||||
- Intersection: $L\cap M = \{x\in \Sigma^* / x\in L\ et\ x\in M\}$
|
||||
- Différence: $L\setminus M = \{x\in \Sigma^* / x\in L\ et\ x\notin M\}$
|
||||
- Complémentaire: $A\subset \Sigma^* = \neg A = \{x\in \Sigma^* / x\notin A\}$
|
||||
- Concaténation/Produit: $L\otimes M = \{x.y\in \Sigma^* / x\in L\ et\ y\in M\}$
|
||||
|
||||
|
||||
**Exercice:**
|
||||
|
||||
- $L\otimes M = \{b, ba, ab, aba, abb, abba\}$
|
||||
- $M\otimes L = \{b, ba, ba, bab, baa, baab\}$
|
||||
|
||||
##### Distribution:
|
||||
|
||||
- $A.(B\cup C) = (A.B) \cup (A.C)$
|
||||
- **/!\\** pas de distributivité avec $\cap$
|
||||
|
||||
|
||||
##### Structure monoide:
|
||||
|
||||
> Ensemble muni d'une opération interne associative et d'un élément neutre.
|
||||
>
|
||||
> **exemple**: $\Sigma$ muni de concaténation
|
||||
>
|
||||
|
||||
> $L^+$ est la _fermeture positive_ de $L$ = $L^*-\{\epsilon\}$
|
||||
|
||||
##### Classification des langages:
|
||||
|
||||
- Type 0 : Langage récursivement **énumérable**
|
||||
- Type 1 : Langage récursivement **contextuel**
|
||||
- Type 2 : Langage récursivement **algébrique** (context-free)
|
||||
- Type 3 : Langage récursivement **relationnel** (régulier
|
||||
|
||||
> $Type\ 3 \subset\ Type\ 2\ \subset\ Type\ 1\ \subset\ Type 0$
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
Chapitre II - Grammaire
|
||||
=======================
|
||||
|
||||
|
||||
### Définitions
|
||||
|
||||
**Grammaire**
|
||||
|
||||
> Ensemble de règles permettant de générer des mots du langage sous forme de réécriture (on remplace une séquence par une autre).
|
||||
|
||||
**Mots générés**
|
||||
|
||||
> Mots obtenus à partir d'un symbole spécial appelé **symbole de départ** ou **axiome**.
|
|
@ -127,5 +127,41 @@
|
|||
</ul>
|
||||
</blockquote>
|
||||
<h3 id="opérations-sur-les-langages">Opérations sur les langages</h3>
|
||||
<p>Soit <span class="math inline"><em>L</em></span> et <span class="math inline"><em>M</em></span>, deux langages, et l'alphabet <span class="math inline"><em>Σ</em> = <em>a</em>, <em>b</em></span>.</p>
|
||||
<ul>
|
||||
<li>Union: <span class="math inline"><em>L</em> ∪ <em>M</em> = {<em>x</em> ∈ <em>Σ</em><sup>*</sup>/<em>x</em> ∈ <em>L</em> <em>o</em><em>u</em> <em>x</em> ∈ <em>M</em>}</span></li>
|
||||
<li>Intersection: <span class="math inline"><em>L</em> ∩ <em>M</em> = {<em>x</em> ∈ <em>Σ</em><sup>*</sup>/<em>x</em> ∈ <em>L</em> <em>e</em><em>t</em> <em>x</em> ∈ <em>M</em>}</span></li>
|
||||
<li>Différence: <span class="math inline"><em>L</em> \ <em>M</em> = {<em>x</em> ∈ <em>Σ</em><sup>*</sup>/<em>x</em> ∈ <em>L</em> <em>e</em><em>t</em> <em>x</em> ∉ <em>M</em>}</span></li>
|
||||
<li>Complémentaire: <span class="math inline"><em>A</em> ⊂ <em>Σ</em><sup>*</sup> = ¬<em>A</em> = {<em>x</em> ∈ <em>Σ</em><sup>*</sup>/<em>x</em> ∉ <em>A</em>}</span></li>
|
||||
<li>Concaténation/Produit: <span class="math inline"><em>L</em> ⊗ <em>M</em> = {<em>x</em>.<em>y</em> ∈ <em>Σ</em><sup>*</sup>/<em>x</em> ∈ <em>L</em> <em>e</em><em>t</em> <em>y</em> ∈ <em>M</em>}</span></li>
|
||||
</ul>
|
||||
<p><strong>Exercice:</strong></p>
|
||||
<ul>
|
||||
<li><span class="math inline"><em>L</em> ⊗ <em>M</em> = {<em>b</em>, <em>b</em><em>a</em>, <em>a</em><em>b</em>, <em>a</em><em>b</em><em>a</em>, <em>a</em><em>b</em><em>b</em>, <em>a</em><em>b</em><em>b</em><em>a</em>}</span></li>
|
||||
<li><span class="math inline"><em>M</em> ⊗ <em>L</em> = {<em>b</em>, <em>b</em><em>a</em>, <em>b</em><em>a</em>, <em>b</em><em>a</em><em>b</em>, <em>b</em><em>a</em><em>a</em>, <em>b</em><em>a</em><em>a</em><em>b</em>}</span></li>
|
||||
</ul>
|
||||
<h5 id="distribution">Distribution:</h5>
|
||||
<ul>
|
||||
<li><span class="math inline"><em>A</em>.(<em>B</em> ∪ <em>C</em>)=(<em>A</em>.<em>B</em>)∪(<em>A</em>.<em>C</em>)</span></li>
|
||||
<li><strong>/!\</strong> pas de distributivité avec <span class="math inline">∩</span></li>
|
||||
</ul>
|
||||
<h5 id="structure-monoide">Structure monoide:</h5>
|
||||
<blockquote>
|
||||
<p>Ensemble muni d'une opération interne associative et d'un élément neutre.</p>
|
||||
<p><strong>exemple</strong>: <span class="math inline"><em>Σ</em></span> muni de concaténation</p>
|
||||
</blockquote>
|
||||
<blockquote>
|
||||
<p><span class="math inline"><em>L</em><sup>+</sup></span> est la <em>fermeture positive</em> de <span class="math inline"><em>L</em></span> = <span class="math inline"><em>L</em><sup>*</sup> − {<em>ϵ</em>}</span></p>
|
||||
</blockquote>
|
||||
<h5 id="classification-des-langages">Classification des langages:</h5>
|
||||
<ul>
|
||||
<li>Type 0 : Langage récursivement <strong>énumérable</strong></li>
|
||||
<li>Type 1 : Langage récursivement <strong>contextuel</strong></li>
|
||||
<li>Type 2 : Langage récursivement <strong>algébrique</strong> (context-free)</li>
|
||||
<li>Type 3 : Langage récursivement <strong>relationnel</strong> (régulier</li>
|
||||
</ul>
|
||||
<blockquote>
|
||||
<p><span class="math inline"><em>T</em><em>y</em><em>p</em><em>e</em> 3 ⊂ <em>T</em><em>y</em><em>p</em><em>e</em> 2 ⊂ <em>T</em><em>y</em><em>p</em><em>e</em> 1 ⊂ <em>T</em><em>y</em><em>p</em><em>e</em>0</span></p>
|
||||
</blockquote>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="generator" content="pandoc">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
|
||||
<title></title>
|
||||
<style type="text/css">code{white-space: pre;}</style>
|
||||
<link rel="stylesheet" href="../../../dependencies/pandoc.css">
|
||||
<!--[if lt IE 9]>
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
|
||||
<![endif]-->
|
||||
</head>
|
||||
<body>
|
||||
<h1 id="chapitre-ii---grammaire">Chapitre II - Grammaire</h1>
|
||||
<h3 id="définitions">Définitions</h3>
|
||||
<p><strong>Grammaire</strong></p>
|
||||
<blockquote>
|
||||
<p>Ensemble de règles permettant de générer des mots du langage sous forme de réécriture (on remplace une séquence par une autre).</p>
|
||||
</blockquote>
|
||||
<p><strong>Mots générés</strong></p>
|
||||
<blockquote>
|
||||
<p>Mots obtenus à partir d'un symbole spécial appelé <strong>symbole de départ</strong> ou <strong>axiome</strong>.</p>
|
||||
</blockquote>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in New Issue