exercices sur les variables
This commit is contained in:
parent
bf2d772c1b
commit
75b80773cc
|
@ -42,9 +42,9 @@ Le problème du voyageur de commerce, consiste en la recherche d’un trajet min
|
||||||
voyageur de visiter n villes. En règle générale on cherche à minimiser le temps de parcours total ou la
|
voyageur de visiter n villes. En règle générale on cherche à minimiser le temps de parcours total ou la
|
||||||
distance totale parcourue.
|
distance totale parcourue.
|
||||||
|
|
||||||
Il suffit de construire tous les chemins possibles et de cal-
|
Il suffit de construire tous les chemins possibles et de calculer leurs longueurs.
|
||||||
culer leurs longueurs. Avec ``n`` villes il y a ``(n − 1)!/2 chemins``
|
Avec ``n`` villes il y a ``(n-1)!/2`` chemins possibles.
|
||||||
possibles. Avec 36 villes on trouve : 5166573983193072464833325668761600000000,
|
Avec 36 villes on trouve : 5166573983193072464833325668761600000000,
|
||||||
si le nombre de villes augmente, ça devient vite rédibitoire.
|
si le nombre de villes augmente, ça devient vite rédibitoire.
|
||||||
|
|
||||||
Résolution par
|
Résolution par
|
||||||
|
|
|
@ -3,7 +3,128 @@ Structures de données simples
|
||||||
|
|
||||||
Algorithmes sur les structures de données simples
|
Algorithmes sur les structures de données simples
|
||||||
|
|
||||||
.. FIXME
|
Variables
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
.. ifconfig:: exercice
|
||||||
|
|
||||||
|
**Exercice** : Calculs d'affectation::
|
||||||
|
|
||||||
|
Variables A, B, C en Entier
|
||||||
|
Début
|
||||||
|
A <- 3
|
||||||
|
B <- 10
|
||||||
|
C <- A + B
|
||||||
|
B <- A + B
|
||||||
|
A <- C
|
||||||
|
Fin
|
||||||
|
|
||||||
|
.. ifconfig:: correction
|
||||||
|
|
||||||
|
**Correction**::
|
||||||
|
|
||||||
|
Après La valeur des variables est :
|
||||||
|
A <- 5 A = 5 B = ?
|
||||||
|
B <- 2 A = 5 B = 2
|
||||||
|
A <- B A = 2 B = 2
|
||||||
|
B <- A A = 2 B = 2
|
||||||
|
|
||||||
|
.. ifconfig:: exercice
|
||||||
|
|
||||||
|
**Exercice** : Calculs d'affectation
|
||||||
|
Quelles seront les valeurs des variables A et B après exécution des instructions suivantes ?
|
||||||
|
::
|
||||||
|
|
||||||
|
Variables A, B en Entier
|
||||||
|
Début
|
||||||
|
A <- 5
|
||||||
|
B <- 2
|
||||||
|
A <- B
|
||||||
|
B <- A
|
||||||
|
Fin
|
||||||
|
|
||||||
|
.. ifconfig:: correction
|
||||||
|
|
||||||
|
**Correction**::
|
||||||
|
|
||||||
|
Après La valeur des variables est :
|
||||||
|
A <- 5 A = 5 B = ?
|
||||||
|
B <- 2 A = 5 B = 2
|
||||||
|
A <- B A = 2 B = 2
|
||||||
|
B <- A A = 2 B = 2
|
||||||
|
|
||||||
|
.. ifconfig:: exercice
|
||||||
|
|
||||||
|
**Exercice** : écrire un algorithme permettant d’échanger les valeurs
|
||||||
|
de deux variables A et B, et ce quel que soit leur contenu préalable.
|
||||||
|
|
||||||
|
.. ifconfig:: correction
|
||||||
|
|
||||||
|
**Correction**::
|
||||||
|
|
||||||
|
Début
|
||||||
|
A <- n
|
||||||
|
B <- p
|
||||||
|
C <- A
|
||||||
|
A <- B
|
||||||
|
B <- C
|
||||||
|
Fin
|
||||||
|
|
||||||
|
Il faut passer par une variable dite temporaire (la variable C)
|
||||||
|
|
||||||
|
|
||||||
|
.. ifconfig:: exercice
|
||||||
|
|
||||||
|
**Exercice** :
|
||||||
|
Que produit l’algorithme suivant ?
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
Variables A, B, C de type entier
|
||||||
|
Début
|
||||||
|
A <- 423
|
||||||
|
B <- 12
|
||||||
|
C <- A + B
|
||||||
|
Fin
|
||||||
|
|
||||||
|
.. ifconfig:: correction
|
||||||
|
|
||||||
|
**Correction** : dans un prompt python
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
>>> a = 423
|
||||||
|
>>> b = 12
|
||||||
|
>>> c = a + b
|
||||||
|
>>> c
|
||||||
|
435
|
||||||
|
|
||||||
|
.. ifconfig:: exercice
|
||||||
|
|
||||||
|
**Exercice** :
|
||||||
|
Que produit l’algorithme suivant ?
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
Variables A, B, C de type texte
|
||||||
|
Début
|
||||||
|
A <- "423"
|
||||||
|
B <- "12"
|
||||||
|
C <- A + B
|
||||||
|
Fin
|
||||||
|
|
||||||
|
.. ifconfig:: correction
|
||||||
|
|
||||||
|
**Correction** : dans un prompt python
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
>>> a = '423'
|
||||||
|
>>> b = '12'
|
||||||
|
>>> c = a + b
|
||||||
|
>>> c
|
||||||
|
'42312'
|
||||||
|
|
||||||
|
|
||||||
- tableaux
|
- tableaux
|
||||||
- listes (les tris)
|
- listes (les tris)
|
||||||
|
|
|
@ -397,3 +397,74 @@ Définitions par cas
|
||||||
let rec puissance x n = match n with
|
let rec puissance x n = match n with
|
||||||
0 -> 1
|
0 -> 1
|
||||||
| -> x * puissance x (n-1)
|
| -> x * puissance x (n-1)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. ifconfig:: exercice
|
||||||
|
|
||||||
|
**Portée locale dans une fonction**
|
||||||
|
Quelles sera la valeur de la variable `a` ?
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
>>> a = 1
|
||||||
|
>>> def myfunc():
|
||||||
|
... a = 2
|
||||||
|
... return a + 1
|
||||||
|
...
|
||||||
|
>>> a = myfunc() + a
|
||||||
|
|
||||||
|
|
||||||
|
.. ifconfig:: correction
|
||||||
|
|
||||||
|
Correction:
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
>>> a = 1
|
||||||
|
>>> def myfunc():
|
||||||
|
... a = 2
|
||||||
|
... return a + 1
|
||||||
|
...
|
||||||
|
>>> a = myfunc() + a
|
||||||
|
>>> a
|
||||||
|
4
|
||||||
|
>>>
|
||||||
|
|
||||||
|
|
||||||
|
.. ifconfig:: exercice
|
||||||
|
|
||||||
|
**Exercice** : Portée locale dans une fonction avec variable globale
|
||||||
|
Quelles sera la valeur de la variable `a` ?
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
>>> a = 1
|
||||||
|
>>> def myfunc():
|
||||||
|
... global a
|
||||||
|
... a = 2
|
||||||
|
... return a + 1
|
||||||
|
...
|
||||||
|
>>> a = myfunc() + 3
|
||||||
|
>>>
|
||||||
|
|
||||||
|
.. ifconfig:: correction
|
||||||
|
|
||||||
|
**Correction** :
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
>>> a = 1
|
||||||
|
>>> def myfunc():
|
||||||
|
... global a
|
||||||
|
... a = 2
|
||||||
|
... return a + 1
|
||||||
|
...
|
||||||
|
>>> myfunc()
|
||||||
|
3
|
||||||
|
>>> a
|
||||||
|
2
|
||||||
|
>>> a = myfunc() + 3
|
||||||
|
>>> a
|
||||||
|
6
|
||||||
|
>>>
|
||||||
|
|
|
@ -188,7 +188,7 @@ le code interprété
|
||||||
|
|
||||||
Typiquement, le travail d’un compilateur se compose d’une phase d’analyse
|
Typiquement, le travail d’un compilateur se compose d’une phase d’analyse
|
||||||
|
|
||||||
- reconnaı̂t le programme à traduire et sa signification
|
- reconnaît le programme à traduire et sa signification
|
||||||
- signale les erreurs et peut donc échouer (erreurs de syntaxe, de portée, de typage, etc.)
|
- signale les erreurs et peut donc échouer (erreurs de syntaxe, de portée, de typage, etc.)
|
||||||
|
|
||||||
Puis d’une phase de synthèse
|
Puis d’une phase de synthèse
|
||||||
|
|
|
@ -14,6 +14,13 @@ développement à se poser des questions d'organisation et de structuration.
|
||||||
Aujourd'hui, on dispose de deux grands modèles d'organisation dont les avantages et les
|
Aujourd'hui, on dispose de deux grands modèles d'organisation dont les avantages et les
|
||||||
particularités sont distincts.
|
particularités sont distincts.
|
||||||
|
|
||||||
|
L'écriture des vrais programmes consiste à les structurer pour les présenter
|
||||||
|
comme un assemblage de briques qui s'emboîtent naturellement.
|
||||||
|
Ce problème se révèle fondamental dès que la taille des programmes devient conséquente.
|
||||||
|
Si on ne prend pas garde au bon découpage des programmes en modules indépendants,
|
||||||
|
on se retrouve rapidement débordé par un grand nombre de variables,
|
||||||
|
et il devient quasiment impossible de réaliser un programme correct.
|
||||||
|
|
||||||
La modularité
|
La modularité
|
||||||
~~~~~~~~~~~~~
|
~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue