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('exercice', False, 'env')
exercice = False
correction = False
exercice = True
correction = True
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
@ -239,7 +239,7 @@ latex_elements = {
# author, documentclass [howto, manual, or own class]).
latex_documents = [
(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

View File

@ -293,6 +293,7 @@ Les piles
Traduction d'une structure de données dans une autre
-----------------------------------------------------
.. code-block:: python
>>> listOfStrings = ['One', 'Two', 'Three']
@ -575,3 +576,56 @@ Autres structures de données complexes
- le parcours de graphes
- 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,
c'est-à-dire des phrases en langage naturel.
.. ifconfig: exercice
.. ifconfig:: exercice
**Exercice** : **Calculer la date du lendemain**
.. ifconfig: correction
.. ifconfig:: correction
- l'algorithme de plus bas niveau
- l'algorithme de plus haut niveau
::
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]
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
resultat = [calculer le premier jour du mois suivant]
sinon
resultat = jour suivant jour
resultat = jour_suivant(jour)
::
jour_suivant jour =
jour_suivant(jour) =
jour + 1
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)
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.
@ -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
changé comme suit :
.. code-block:: python
# Fichier prog2maxlist

View File

@ -66,9 +66,9 @@ Travaux Pratiques
**travaux pratiques :**
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::
>>> print(chiffre('bonjour', 3))
erqmrxu
>>> print(chiffre('Bonjour les amis!', 3))
@ -99,3 +99,20 @@ Travaux Pratiques
cas 12 : écrire “décembre (31 jours)”
défaut : écrire “numéro invalide”
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}
\subtitle{CESI alternance}
\subtitle{promotion GMSI B3}
\subtitle{promotion GMSI B4}
\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$}
\end{algorithmic}
\end{algorithm}
Expressions à partir de types de base
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~