exos d'algo
This commit is contained in:
parent
2dee810ffd
commit
79eeb4a1df
|
@ -251,9 +251,6 @@ La boucle tant que (while)
|
||||||
Ecrire "Saisie acceptée"
|
Ecrire "Saisie acceptée"
|
||||||
Fin
|
Fin
|
||||||
|
|
||||||
|
|
||||||
FIXME
|
|
||||||
|
|
||||||
.. ifconfig:: exercice
|
.. ifconfig:: exercice
|
||||||
|
|
||||||
**Exercice** : "C'est plus, C'est moins", c'est-à-dire Ecrire un algorithme qui demande à l’utilisateur
|
**Exercice** : "C'est plus, C'est moins", c'est-à-dire Ecrire un algorithme qui demande à l’utilisateur
|
||||||
|
@ -279,7 +276,6 @@ FIXME
|
||||||
FinTantQue
|
FinTantQue
|
||||||
Fin
|
Fin
|
||||||
|
|
||||||
|
|
||||||
Et les autres boucles : répéter... jusqu'à, etc...
|
Et les autres boucles : répéter... jusqu'à, etc...
|
||||||
|
|
||||||
.. raw:: latex
|
.. raw:: latex
|
||||||
|
|
|
@ -1,145 +1,15 @@
|
||||||
Structures de données simples
|
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)
|
|
||||||
- piles
|
- piles
|
||||||
- files
|
- files
|
||||||
|
|
||||||
+------------------------------------------------------+------------------------------------------------------------------------+
|
|
||||||
| Contenus | Précisions et commentaires |
|
- Recherche dans une liste, recherche du maximum dans une liste
|
||||||
+======================================================+========================================================================+
|
- Recherche d’un mot dans une chaîne de caractères.
|
||||||
| Recherche dans une liste, recherche du maximum dans | |
|
|
||||||
| une liste de nombres, calcul de la moyenne et de la | |
|
|
||||||
| variance. | |
|
|
||||||
+------------------------------------------------------+------------------------------------------------------------------------+
|
|
||||||
| Recherche d’un mot dans une chaîne de caractères. | On se limite ici à l’algorithme "naïf", en estimant sa complexité. |
|
|
||||||
+------------------------------------------------------+------------------------------------------------------------------------+
|
|
||||||
|
|
||||||
Liste
|
Liste
|
||||||
------
|
------
|
||||||
|
@ -153,25 +23,12 @@ Liste
|
||||||
biggerZoo = ['bear', 'lion', 'panda', 'zebra', ['chimpanzees', 'gorillas', 'orangutans', 'gibbons']]
|
biggerZoo = ['bear', 'lion', 'panda', 'zebra', ['chimpanzees', 'gorillas', 'orangutans', 'gibbons']]
|
||||||
print(biggerZoo)
|
print(biggerZoo)
|
||||||
|
|
||||||
FIXME
|
- Lists Versus Tuples : types mutables, immutables
|
||||||
|
- Lists Versus Sets : non ordonné, collection simple
|
||||||
- Lists Versus Tuples
|
|
||||||
- Lists Versus Sets
|
|
||||||
|
|
||||||
|
|
||||||
Tuples are used to collect an immutable ordered list of elements. This means that:
|
Traduction d'une structure de données dans une autre
|
||||||
|
-----------------------------------------------------
|
||||||
You can’t add elements to a tuple. There’s no append() or extend() method for tuples,
|
|
||||||
You can’t remove elements from a tuple. Tuples have no remove() or pop() method,
|
|
||||||
You can find elements in a tuple since this doesn’t change the tuple.
|
|
||||||
You can also use the in operator to check if an element exists in the tuple.
|
|
||||||
|
|
||||||
|
|
||||||
A list stores an ordered collection of items, so it keeps some order. Dictionaries don’t have any order.
|
|
||||||
Dictionaries are known to associate each key with a value, while lists just contain values.
|
|
||||||
|
|
||||||
Use a dictionary when you have an unordered set of unique keys that map to values.
|
|
||||||
|
|
||||||
|
|
||||||
.. code-block:: python
|
.. code-block:: python
|
||||||
|
|
||||||
|
@ -187,11 +44,6 @@ Use a dictionary when you have an unordered set of unique keys that map to value
|
||||||
123
|
123
|
||||||
>>>
|
>>>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Modification de la structure de données
|
|
||||||
----------------------------------------
|
|
||||||
|
|
||||||
.. code-block:: python
|
.. code-block:: python
|
||||||
|
|
||||||
>>> l = [('host1', '10.1.2.3', '6E:FF:56:A2:AF:18'), ('host3', '10.1.2.5', '6E:FF:56:A2:AF:19')]
|
>>> l = [('host1', '10.1.2.3', '6E:FF:56:A2:AF:18'), ('host3', '10.1.2.5', '6E:FF:56:A2:AF:19')]
|
||||||
|
@ -214,30 +66,9 @@ Structures de données complexes
|
||||||
- le parcours de graphes
|
- le parcours de graphes
|
||||||
- les calculs de dates
|
- les calculs de dates
|
||||||
|
|
||||||
+ **Récursivité**
|
|
||||||
|
|
||||||
On en présente les avantages et les inconvénients.
|
Les types produits nommés (enregistrements)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
+ **Tris** d’un tableau à une dimension de valeurs
|
|
||||||
numériques : tri par insertion, tri rapide (ou 'quicksort'),
|
|
||||||
tri par fusion. Application à la
|
|
||||||
recherche de la médiane d’une liste de nombres.
|
|
||||||
|
|
||||||
On étudie et on compare ces algorithmes de tri du point de vue des complexités temporelles dans le meilleur et dans le
|
|
||||||
pire cas.
|
|
||||||
|
|
||||||
Les types produits
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
Les types construits permettent de structurer l’information.
|
|
||||||
|
|
||||||
- les produits (n-uplets)
|
|
||||||
|
|
||||||
.. code-block:: ocaml
|
|
||||||
|
|
||||||
# type complexe = float * float ;;
|
|
||||||
|
|
||||||
- les produits nommés (enregistrements)
|
|
||||||
|
|
||||||
.. code-block:: ocaml
|
.. code-block:: ocaml
|
||||||
|
|
||||||
|
|
|
@ -220,6 +220,127 @@ Voir aussi :
|
||||||
|
|
||||||
x1 = e1, x2 = e2, ... xn = en;
|
x1 = e1, x2 = e2, ... xn = en;
|
||||||
|
|
||||||
|
Exercices : algorithmes sur les affectations
|
||||||
|
|
||||||
|
.. 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'
|
||||||
|
|
||||||
Interaction avec l'utilisateur
|
Interaction avec l'utilisateur
|
||||||
------------------------------
|
------------------------------
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue