diff --git a/algo/algorithmique/cours/_static/Messages1.png b/algo/algorithmique/cours/_static/Messages1.png new file mode 100644 index 0000000..8ba474a Binary files /dev/null and b/algo/algorithmique/cours/_static/Messages1.png differ diff --git a/algo/algorithmique/cours/_static/Messages2.png b/algo/algorithmique/cours/_static/Messages2.png new file mode 100644 index 0000000..83356e4 Binary files /dev/null and b/algo/algorithmique/cours/_static/Messages2.png differ diff --git a/algo/algorithmique/cours/_static/ZephirSeminaire.png b/algo/algorithmique/cours/_static/ZephirSeminaire.png new file mode 100644 index 0000000..316844a Binary files /dev/null and b/algo/algorithmique/cours/_static/ZephirSeminaire.png differ diff --git a/algo/algorithmique/cours/_static/domains.png b/algo/algorithmique/cours/_static/domains.png new file mode 100644 index 0000000..2f0c354 Binary files /dev/null and b/algo/algorithmique/cours/_static/domains.png differ diff --git a/algo/algorithmique/cours/code/execution.salt.peer.registered.yml b/algo/algorithmique/cours/code/execution.salt.peer.registered.yml new file mode 100644 index 0000000..7e9e003 --- /dev/null +++ b/algo/algorithmique/cours/code/execution.salt.peer.registered.yml @@ -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 diff --git a/algo/algorithmique/cours/code/server.create.yml b/algo/algorithmique/cours/code/server.create.yml new file mode 100644 index 0000000..4ef83a7 --- /dev/null +++ b/algo/algorithmique/cours/code/server.create.yml @@ -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 diff --git a/algo/algorithmique/cours/code/server.created.yml b/algo/algorithmique/cours/code/server.created.yml new file mode 100644 index 0000000..a839fdb --- /dev/null +++ b/algo/algorithmique/cours/code/server.created.yml @@ -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 diff --git a/algo/algorithmique/cours/conf.py b/algo/algorithmique/cours/conf.py index b115013..c0d46de 100644 --- a/algo/algorithmique/cours/conf.py +++ b/algo/algorithmique/cours/conf.py @@ -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 diff --git a/algo/algorithmique/cours/donnees.txt b/algo/algorithmique/cours/donnees.txt index 990629e..c458c35 100644 --- a/algo/algorithmique/cours/donnees.txt +++ b/algo/algorithmique/cours/donnees.txt @@ -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 diff --git a/algo/algorithmique/cours/modularite.txt b/algo/algorithmique/cours/modularite.txt index 276d12d..50ada1e 100644 --- a/algo/algorithmique/cours/modularite.txt +++ b/algo/algorithmique/cours/modularite.txt @@ -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. diff --git a/algo/algorithmique/cours/modules.txt b/algo/algorithmique/cours/modules.txt index 5df4b5e..dfb30c0 100644 --- a/algo/algorithmique/cours/modules.txt +++ b/algo/algorithmique/cours/modules.txt @@ -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 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 changé comme suit : + .. code-block:: python # Fichier prog2maxlist diff --git a/algo/algorithmique/cours/tp.txt b/algo/algorithmique/cours/tp.txt index 3d3ebd5..90d89d9 100644 --- a/algo/algorithmique/cours/tp.txt +++ b/algo/algorithmique/cours/tp.txt @@ -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 + diff --git a/algo/algorithmique/diapos/beamer.tex b/algo/algorithmique/diapos/beamer.tex index 62eb264..efa9532 100644 --- a/algo/algorithmique/diapos/beamer.tex +++ b/algo/algorithmique/diapos/beamer.tex @@ -39,7 +39,7 @@ \title[]{Algorithmique} \subtitle{CESI alternance} -\subtitle{promotion GMSI B3} +\subtitle{promotion GMSI B4} \author[Gwenaël Rémond]{} diff --git a/algo/algorithmique/todo.txt b/algo/algorithmique/todo.txt deleted file mode 100644 index 48b2068..0000000 --- a/algo/algorithmique/todo.txt +++ /dev/null @@ -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 - diff --git a/algo/tronCommun/programme.txt b/algo/tronCommun/programme.txt index 63e416e..45bebea 100644 --- a/algo/tronCommun/programme.txt +++ b/algo/tronCommun/programme.txt @@ -457,6 +457,8 @@ Un autre exemple d'expression : \Until{$\neg changed$} \end{algorithmic} \end{algorithm} + + Expressions à partir de types de base ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~