algorithmique : api et paramètres

This commit is contained in:
gwen 2018-08-20 21:01:30 +02:00
parent 9220531442
commit 8ab75d1eac
15 changed files with 184 additions and 32 deletions

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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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.

View File

@ -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 dimporter 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

View File

@ -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

View File

@ -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]{}

View File

@ -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

View File

@ -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
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~