algorithmique : api et paramètres
This commit is contained in:
parent
9220531442
commit
8ab75d1eac
Binary file not shown.
After Width: | Height: | Size: 11 KiB |
Binary file not shown.
After Width: | Height: | Size: 12 KiB |
Binary file not shown.
After Width: | Height: | Size: 35 KiB |
Binary file not shown.
After Width: | Height: | Size: 95 KiB |
|
@ -0,0 +1,21 @@
|
||||||
|
---
|
||||||
|
uri: execution.salt.peer.registered
|
||||||
|
|
||||||
|
sampleuse: ~
|
||||||
|
|
||||||
|
description: |
|
||||||
|
Notify salt peering
|
||||||
|
|
||||||
|
pattern: event
|
||||||
|
|
||||||
|
parameters:
|
||||||
|
serverid:
|
||||||
|
type: Number
|
||||||
|
description: server and salt minion uid
|
||||||
|
automation:
|
||||||
|
type: String
|
||||||
|
description: Automation engine
|
||||||
|
|
||||||
|
public: false
|
||||||
|
|
||||||
|
domain: execution-domain
|
|
@ -0,0 +1,54 @@
|
||||||
|
---
|
||||||
|
uri: server.create
|
||||||
|
|
||||||
|
description: |
|
||||||
|
Créer un serveur.
|
||||||
|
|
||||||
|
sampleuse: |
|
||||||
|
zephir-client server.create '{"servername":"MonJoliServeur", "serverdescription": "un bien joli serveur", "servermodelid":1, "serverpassphrase": "MyPassPhrase"}'
|
||||||
|
|
||||||
|
pattern: rpc
|
||||||
|
|
||||||
|
public: true
|
||||||
|
|
||||||
|
domain: server-domain
|
||||||
|
|
||||||
|
parameters:
|
||||||
|
servername:
|
||||||
|
type: String
|
||||||
|
description: |
|
||||||
|
Nom du serveur.
|
||||||
|
serverdescription:
|
||||||
|
type: String
|
||||||
|
description: |
|
||||||
|
Description du serveur.
|
||||||
|
servermodelid:
|
||||||
|
type: Number
|
||||||
|
ref: Servermodel.ServermodelId
|
||||||
|
description: |
|
||||||
|
ID du modèle de serveur.
|
||||||
|
serverpassphrase:
|
||||||
|
type: String
|
||||||
|
description: |
|
||||||
|
Phrase secrète de la clef privé.
|
||||||
|
|
||||||
|
response:
|
||||||
|
parameters:
|
||||||
|
serverid:
|
||||||
|
type: Number
|
||||||
|
ref: Server.ServerId
|
||||||
|
description: |
|
||||||
|
ID du serveur.
|
||||||
|
|
||||||
|
errors:
|
||||||
|
- uri: server.error.database-not-available
|
||||||
|
- uri: server.error.db-connection
|
||||||
|
- uri: server.error.invalid-servermodel-id
|
||||||
|
- uri: server.error.unknown-servermodel-id
|
||||||
|
- uri: server.error.servername-not-provided
|
||||||
|
|
||||||
|
related:
|
||||||
|
- server.list
|
||||||
|
- server.describe
|
||||||
|
- server.update
|
||||||
|
- server.delete
|
|
@ -0,0 +1,19 @@
|
||||||
|
---
|
||||||
|
uri: server.created
|
||||||
|
|
||||||
|
sampleuse: ~
|
||||||
|
|
||||||
|
description: |
|
||||||
|
Created server message
|
||||||
|
|
||||||
|
pattern: event
|
||||||
|
|
||||||
|
public: false
|
||||||
|
|
||||||
|
domain: server-domain
|
||||||
|
|
||||||
|
parameters:
|
||||||
|
serverid:
|
||||||
|
type: Number
|
||||||
|
description: |
|
||||||
|
Server identifier
|
|
@ -37,8 +37,8 @@ def setup(app):
|
||||||
app.add_config_value('correction', False, 'env')
|
app.add_config_value('correction', False, 'env')
|
||||||
app.add_config_value('exercice', False, 'env')
|
app.add_config_value('exercice', False, 'env')
|
||||||
|
|
||||||
exercice = False
|
exercice = True
|
||||||
correction = False
|
correction = True
|
||||||
|
|
||||||
# Add any paths that contain templates here, relative to this directory.
|
# Add any paths that contain templates here, relative to this directory.
|
||||||
templates_path = ['_templates']
|
templates_path = ['_templates']
|
||||||
|
@ -239,7 +239,7 @@ latex_elements = {
|
||||||
# author, documentclass [howto, manual, or own class]).
|
# author, documentclass [howto, manual, or own class]).
|
||||||
latex_documents = [
|
latex_documents = [
|
||||||
(master_doc, 'Algorithmique.tex', u'Cours d\'algorithmique',
|
(master_doc, 'Algorithmique.tex', u'Cours d\'algorithmique',
|
||||||
u'promotion GMSI B3', 'manual'),
|
u'promotion GMSI B4', 'manual'),
|
||||||
]
|
]
|
||||||
|
|
||||||
# The name of an image file (relative to this directory) to place at the top of
|
# The name of an image file (relative to this directory) to place at the top of
|
||||||
|
|
|
@ -293,6 +293,7 @@ Les piles
|
||||||
Traduction d'une structure de données dans une autre
|
Traduction d'une structure de données dans une autre
|
||||||
-----------------------------------------------------
|
-----------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
.. code-block:: python
|
.. code-block:: python
|
||||||
|
|
||||||
>>> listOfStrings = ['One', 'Two', 'Three']
|
>>> listOfStrings = ['One', 'Two', 'Three']
|
||||||
|
@ -575,3 +576,56 @@ Autres structures de données complexes
|
||||||
|
|
||||||
- le parcours de graphes
|
- le parcours de graphes
|
||||||
- les calculs de dates
|
- les calculs de dates
|
||||||
|
|
||||||
|
|
||||||
|
Algèbre relationnelle
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
|
||||||
|
- **projection** : suppression de colonne d'une table
|
||||||
|
- **restriction** : filtrage de lignes d'une table
|
||||||
|
- **union** : aggrégation de tables
|
||||||
|
- différence de tables
|
||||||
|
- intersection de tables
|
||||||
|
- produit cartésien de tables
|
||||||
|
- division de tables
|
||||||
|
|
||||||
|
|
||||||
|
exercices : utilisation de la librairie Pandas avec jupyter
|
||||||
|
|
||||||
|
|
||||||
|
La conception Api First
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
|
||||||
|
Exemple avec une application orientée microservices :
|
||||||
|
|
||||||
|
.. image:: _static/ZephirSeminaire.png
|
||||||
|
|
||||||
|
Domains (modules) de l'API :
|
||||||
|
|
||||||
|
.. image:: _static/domains.png
|
||||||
|
|
||||||
|
|
||||||
|
Observons un cas d'utilisation (scénario utilisateur):
|
||||||
|
|
||||||
|
.. image:: _static/Messages1.png
|
||||||
|
|
||||||
|
Interpretons en termes d'appel à une API
|
||||||
|
|
||||||
|
.. image:: _static/Messages2.png
|
||||||
|
|
||||||
|
|
||||||
|
description des messages :
|
||||||
|
|
||||||
|
premier message: **server.create**
|
||||||
|
|
||||||
|
.. literalinclude:: code/server.create.yml
|
||||||
|
|
||||||
|
deuxième message: **peer.registered**
|
||||||
|
|
||||||
|
.. literalinclude:: code/execution.salt.peer.registered.yml
|
||||||
|
|
||||||
|
troisième message: **server.created**
|
||||||
|
|
||||||
|
.. literalinclude:: code/server.created.yml
|
||||||
|
|
|
@ -65,35 +65,35 @@ de plus en plus fines, de plus en plus détaillées, qui aboutiront au programme
|
||||||
On met des *trous* dans les algorithmes de plus haut niveau,
|
On met des *trous* dans les algorithmes de plus haut niveau,
|
||||||
c'est-à-dire des phrases en langage naturel.
|
c'est-à-dire des phrases en langage naturel.
|
||||||
|
|
||||||
.. ifconfig: exercice
|
.. ifconfig:: exercice
|
||||||
|
|
||||||
**Exercice** : **Calculer la date du lendemain**
|
**Exercice** : **Calculer la date du lendemain**
|
||||||
|
|
||||||
.. ifconfig: correction
|
.. ifconfig:: correction
|
||||||
|
|
||||||
- l'algorithme de plus bas niveau
|
- l'algorithme de plus haut niveau
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
lendemain jour =
|
lendemain jour =
|
||||||
si jour [est le dernier jour du mois] alors
|
si jour [est le dernier jour du mois du dernier mois de l'année] alors
|
||||||
resultat = [calculer le 1er janvier de l'année suivante]
|
resultat = [calculer le 1er janvier de l'année suivante]
|
||||||
sinon
|
sinon
|
||||||
resultat = lendemain_dansl'année jour
|
resultat = lendemain_dansl_année(jour)
|
||||||
|
|
||||||
- les algorithmes de plus bas niveau
|
- les algorithmes de plus bas niveau associés
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
lendemain_dans_l'année jour =
|
lendemain_dans_l_année(jour) =
|
||||||
si jour [est le dernier jour du mois] alors
|
si jour [est le dernier jour du mois] alors
|
||||||
resultat = [calculer le premier jour du mois suivant]
|
resultat = [calculer le premier jour du mois suivant]
|
||||||
sinon
|
sinon
|
||||||
resultat = jour suivant jour
|
resultat = jour_suivant(jour)
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
jour_suivant jour =
|
jour_suivant(jour) =
|
||||||
jour + 1
|
jour + 1
|
||||||
|
|
||||||
et ainsi de suite jusqu'à ce que toutes les phrases soient calculables.
|
et ainsi de suite jusqu'à ce que toutes les phrases soient calculables.
|
||||||
|
|
|
@ -17,7 +17,7 @@ interface
|
||||||
des informations (partie publique, partie secrète)
|
des informations (partie publique, partie secrète)
|
||||||
|
|
||||||
|
|
||||||
Signatures, type abstrait et langage de modules : la programmation modulaire
|
Signatures, type abstrait et langage de modules : la programmation modulaire
|
||||||
permet d'aller très loin dans la programmation structurée.
|
permet d'aller très loin dans la programmation structurée.
|
||||||
|
|
||||||
|
|
||||||
|
@ -76,6 +76,7 @@ Au lieu d’importer les fonctions, on peut importer le fichier qui définit les
|
||||||
fonctions avec la syntaxe qui suit. Dans ce cas, le fichier de programme sera
|
fonctions avec la syntaxe qui suit. Dans ce cas, le fichier de programme sera
|
||||||
changé comme suit :
|
changé comme suit :
|
||||||
|
|
||||||
|
|
||||||
.. code-block:: python
|
.. code-block:: python
|
||||||
|
|
||||||
# Fichier prog2maxlist
|
# Fichier prog2maxlist
|
||||||
|
|
|
@ -66,9 +66,9 @@ Travaux Pratiques
|
||||||
**travaux pratiques :**
|
**travaux pratiques :**
|
||||||
|
|
||||||
code de césar : faire un programme pour chiffrer et déchiffrer par décalage
|
code de césar : faire un programme pour chiffrer et déchiffrer par décalage
|
||||||
|
|
||||||
exemples : Effectue une rotation de x caractères vers la droite::
|
exemples : Effectue une rotation de x caractères vers la droite::
|
||||||
|
|
||||||
>>> print(chiffre('bonjour', 3))
|
>>> print(chiffre('bonjour', 3))
|
||||||
erqmrxu
|
erqmrxu
|
||||||
>>> print(chiffre('Bonjour les amis!', 3))
|
>>> print(chiffre('Bonjour les amis!', 3))
|
||||||
|
@ -99,3 +99,20 @@ Travaux Pratiques
|
||||||
cas 12 : écrire “décembre (31 jours)”
|
cas 12 : écrire “décembre (31 jours)”
|
||||||
défaut : écrire “numéro invalide”
|
défaut : écrire “numéro invalide”
|
||||||
fselon
|
fselon
|
||||||
|
|
||||||
|
.. ifconfig:: exercice
|
||||||
|
|
||||||
|
**travaux pratiques :**
|
||||||
|
|
||||||
|
transcription d'une structure dans une autre
|
||||||
|
|
||||||
|
manipulations simple sur les DataFrames de Pandas
|
||||||
|
|
||||||
|
http://pandas.pydata.org/
|
||||||
|
|
||||||
|
http://www.python-simple.com/python-pandas/stacking-unstacking-dataframe.php
|
||||||
|
|
||||||
|
http://sametmax.com/le-pandas-cest-bon-mangez-en/
|
||||||
|
|
||||||
|
visualiser les données dans jupyter
|
||||||
|
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
\title[]{Algorithmique}
|
\title[]{Algorithmique}
|
||||||
|
|
||||||
\subtitle{CESI alternance}
|
\subtitle{CESI alternance}
|
||||||
\subtitle{promotion GMSI B3}
|
\subtitle{promotion GMSI B4}
|
||||||
|
|
||||||
\author[Gwenaël Rémond]{}
|
\author[Gwenaël Rémond]{}
|
||||||
|
|
||||||
|
|
|
@ -1,16 +0,0 @@
|
||||||
todo
|
|
||||||
====
|
|
||||||
|
|
||||||
- donner les corrections des exos de TP
|
|
||||||
|
|
||||||
- l'analyse descendante avec les dates : je l'avais zappé mais c'était bien
|
|
||||||
- modules paramétrés ? à effacer
|
|
||||||
|
|
||||||
- éviter de "mélanger" le python et le ocaml
|
|
||||||
- l'appel d'une fonction n'a pas été assez clair:
|
|
||||||
- reprendre la "boite noire" plutôt avec une analogie avec la cybernétique
|
|
||||||
- plutôt que de chercher à dire procédure/fonction, dire "bloc de code qu'on
|
|
||||||
isole" et insister sur les locales et les globales
|
|
||||||
- ne pas centrer sur la programmation impérative ou fonctionnelle,
|
|
||||||
mentionner la fonctionnelle
|
|
||||||
|
|
|
@ -457,6 +457,8 @@ Un autre exemple d'expression :
|
||||||
\Until{$\neg changed$}
|
\Until{$\neg changed$}
|
||||||
\end{algorithmic}
|
\end{algorithmic}
|
||||||
\end{algorithm}
|
\end{algorithm}
|
||||||
|
|
||||||
|
|
||||||
Expressions à partir de types de base
|
Expressions à partir de types de base
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue