Ce deuxième cours concerne les tuples, séquences non modifiables d'éléments. On peut les étendre en tuples nommés en ajoutant un nom à chacune des entrées du tuple, appelées alors champs. Enfin, on peut aller plus loin et définir des objets en associant des fonctions à des données. Cette seconde partie introduit à la programmation orientée objet.
Ce cours aborde la gestion d'erreurs en programmation, c'est-à-dire comment gérer les situations où une erreur se produit. Après avoir présenté le principe des spécifications et de la programmation défensive avec l'instruction assert, ce cours présente l'instruction try/except qui permet de capturer des erreurs. Enfin, le cours termine en présentant comment définir ses propres erreurs et les générer avec l'instruction raise.
Dans ce cours, on découvre comment lire et écrire des fichiers à l'aide de Python. Il est possible de créer des fichiers texte ou des fichiers binaires. Pour manipuler un fichier, il faut d'abord l'ouvrir, puis on peut faire les opérations et enfin on doit le refermer.
Ce premier cours présente les notions d'objet et de classe, et le lien entre elles. Il présente aussi le premier concept clé de la programmation orientée objet, à savoir l'encapsulation des données. Les exemples sont fournis dans plusieurs langages (Python, C#, Java, C++ et PHP).
This course will introduce the core data structures of the Python programming language. We will move past the basics of procedural programming and explore how we can use the Python built-in data structures such as lists, dictionaries, and tuples to perform increasingly complex data analysis.
Dans ce cours, on découvre comment construire une interface graphique en Python en utilisant la librairie Tk. Après avoir vu les différents composants de base, ce cours présente la programmation évènementielle qui permet d'écrire du code qui réagit à des évènements comme le clic sur un bouton, par exemple.
Objectif général : Acquérir les connaissances nécessaires à la programmation avec le langage Python
Objectifs opérationnels :
- Mémoriser des données primitives
- Traiter des données
- Communiquer avec l’extérieur
- Contrôler le flux d’exécution des instructions
- Mémoriser des données composites
- Découper et réutiliser du code
Ce cours aborde la gestion d'erreurs en programmation, c'est-à-dire comment gérer les situations où une erreur se produit. Après avoir présenté le principe des spécifications et de la programmation défensive avec l'instruction assert, ce cours présente l'instruction try/except qui permet de capturer des erreurs. Enfin, le cours termine en présentant comment définir ses propres erreurs et les générer avec l'instruction raise.
Dans ce cours, on découvre comment lire et écrire des fichiers à l'aide de Python. Il est possible de créer des fichiers texte ou des fichiers binaires. Pour manipuler un fichier, il faut d'abord l'ouvrir, puis on peut faire les opérations et enfin on doit le refermer.
Ce premier cours présente les notions d'objet et de classe, et le lien entre elles. Il présente aussi le premier concept clé de la programmation orientée objet, à savoir l'encapsulation des données. Les exemples sont fournis dans plusieurs langages (Python, C#, Java, C++ et PHP).
This course will introduce the core data structures of the Python programming language. We will move past the basics of procedural programming and explore how we can use the Python built-in data structures such as lists, dictionaries, and tuples to perform increasingly complex data analysis.
Dans ce cours, on découvre comment construire une interface graphique en Python en utilisant la librairie Tk. Après avoir vu les différents composants de base, ce cours présente la programmation évènementielle qui permet d'écrire du code qui réagit à des évènements comme le clic sur un bouton, par exemple.
Objectif général : Acquérir les connaissances nécessaires à la programmation avec le langage Python
Objectifs opérationnels :
- Mémoriser des données primitives
- Traiter des données
- Communiquer avec l’extérieur
- Contrôler le flux d’exécution des instructions
- Mémoriser des données composites
- Découper et réutiliser du code
cours d'initiation à la programmation modulaire sous Python en utilisant des fonctions et des procédures pour décomposer un problème en sous-problème plus facile à traiter en utilisant des fonctions et des procédures.
Ce cours concerne les arbres, structure de données organisant les données de manière hiérarchique dans de nœuds reliés entre eux par une relation parent-enfant. Le cours présente les arbres généraux et ensuite les arbres binaires, où chaque nœud possède 0 ou 2 enfants. Enfin, le cours termine en présentant des algorithmes de recherche et en particulier l'arbre binaire de recherche.
Ce cours présente comment définir de nouveaux objets en définissant des classes. Un objet est une instance d'une classe qui définit les variables d'instances (attributs) et méthodes (fonctionnalités) que les objets créés à partir de la classe auront.
Ce premier cours avancé sur Python concerne les deux structures de données avancées que sont les ensembles et les dictionnaires. Ces derniers sont notamment utilisés pour construire des bases de données orientées document.
Objectif général : Savoir créer des pages Web interactives sans trop solliciter le serveur et le réseau pour offrir une meilleure expérience utilisateur
Objectifs opérationnels
- Stocker des données à l’aide des variables
- Traiter des données à l’aide des opérateurs.
- Communiquer avec l’internaute à l’aide des E/S de base
- Contrôler le flux d’exécution des instructions.
- Réutiliser et organiser le code en créant des fonctions
- Créer l’interactivité grâce à la gestion des évènements
- Traiter plus facilement plusieurs données connexes grâce aux tableaux et aux objets
- Gérer les propriétés de la fenêtre avec l’objet window
- Manipuler le contenu de la page Web grâce à l’objet document
- Contrôler la saisie d’un formulaire avec l’objet form
Ce cours présente les principaux moyens de communications que l'on peut déployer au sein d'un système embarqué. Après un rappel sur les différents types de communication (série/parallèle, synchrone/asynchrone, half-duplex/full-duplex), le cours présente le port série ainsi que l'implémentation UART. Vient ensuite le bus USB et les deux modes en hôte ou périphérique. Après cela, le cours présente les protocoles I2C et puis SPI. Enfin, il termine avec le simple bus 1-Wire. Tous ces différents moyens de communication sont disponibles sur la BeagleBone Black et le cours illustre comment les manipuler à l'aide du Linux embarqué.
Cette présentation montre plusieurs outils gratuits qui peuvent être utilisés pour gérer plusieurs aspects de la gestion de projets, en particulier informatique, de manière collaborative. On y voit comment versioner son code avec Git, déployer son code avec Heroku, tester son code avec Travis, gérer et planifier son temps et ses tâches avec Trello, FreedCamp et Tom'splanner, comment communiquer avec Slack et comment rédiger sa documentation avec Read the Docs.
cours d'initiation à la programmation modulaire sous Python en utilisant des fonctions et des procédures pour décomposer un problème en sous-problème plus facile à traiter en utilisant des fonctions et des procédures.
Ce cours concerne les arbres, structure de données organisant les données de manière hiérarchique dans de nœuds reliés entre eux par une relation parent-enfant. Le cours présente les arbres généraux et ensuite les arbres binaires, où chaque nœud possède 0 ou 2 enfants. Enfin, le cours termine en présentant des algorithmes de recherche et en particulier l'arbre binaire de recherche.
Ce cours présente comment définir de nouveaux objets en définissant des classes. Un objet est une instance d'une classe qui définit les variables d'instances (attributs) et méthodes (fonctionnalités) que les objets créés à partir de la classe auront.
Ce premier cours avancé sur Python concerne les deux structures de données avancées que sont les ensembles et les dictionnaires. Ces derniers sont notamment utilisés pour construire des bases de données orientées document.
Objectif général : Savoir créer des pages Web interactives sans trop solliciter le serveur et le réseau pour offrir une meilleure expérience utilisateur
Objectifs opérationnels
- Stocker des données à l’aide des variables
- Traiter des données à l’aide des opérateurs.
- Communiquer avec l’internaute à l’aide des E/S de base
- Contrôler le flux d’exécution des instructions.
- Réutiliser et organiser le code en créant des fonctions
- Créer l’interactivité grâce à la gestion des évènements
- Traiter plus facilement plusieurs données connexes grâce aux tableaux et aux objets
- Gérer les propriétés de la fenêtre avec l’objet window
- Manipuler le contenu de la page Web grâce à l’objet document
- Contrôler la saisie d’un formulaire avec l’objet form
Ce cours présente les principaux moyens de communications que l'on peut déployer au sein d'un système embarqué. Après un rappel sur les différents types de communication (série/parallèle, synchrone/asynchrone, half-duplex/full-duplex), le cours présente le port série ainsi que l'implémentation UART. Vient ensuite le bus USB et les deux modes en hôte ou périphérique. Après cela, le cours présente les protocoles I2C et puis SPI. Enfin, il termine avec le simple bus 1-Wire. Tous ces différents moyens de communication sont disponibles sur la BeagleBone Black et le cours illustre comment les manipuler à l'aide du Linux embarqué.
Cette présentation montre plusieurs outils gratuits qui peuvent être utilisés pour gérer plusieurs aspects de la gestion de projets, en particulier informatique, de manière collaborative. On y voit comment versioner son code avec Git, déployer son code avec Heroku, tester son code avec Travis, gérer et planifier son temps et ses tâches avec Trello, FreedCamp et Tom'splanner, comment communiquer avec Slack et comment rédiger sa documentation avec Read the Docs.
Ce cours concerne la manipulation des chaines de caractères et les expressions régulières. La première partie présente la classe str Python ainsi que les opérations qu'il est possible de faire sur des objets str. La seconde partie concerne les expressions regulières qui permettent de valider des chaines de caractères ou d'en extraire des sous-chaines qui satisfont un motif donné. On y voit finalement comment utiliser le module re Python.
Slides du cours "JAVA1001 : Introduction à la programmation Java" de la formation "Apprendre Java et la Programmation Orientée-Objets" du learning center de http://www.ukonline.be
Ce deuxième cours aborde la programmation réseau, c'est-à-dire le développement d'applications avec plusieurs composants qui communiquent entre eux via la réseau. Après une rapide présentation des protocoles UDP et TCP, le cours aborde la notion de socket et présente le module Python de même nom. Le cours présente deux applications concrètes : une application de chat (basé sur UDP) et une application echo (basé sur TCP). Le cours se termine par la découverte de la notion de protocole de communication et de la définition du format des messages échangés.
Ce premier cours introduit la notion de système embarqué en commençant par en donner une définition. Il les caractérise ensuite sur base de plusieurs critères : type d'application, de fonction visé, taille, fiabilité, efficacité. Il présente ensuite plusieurs aspects hardware (unité de calcul, architecture matérielle, composants clés) et software (niveau de programmation, processus de développement). Enfin, il conclut en discutant sur ce qu'est un ingénieur en systèmes embarqués.
Présentation du projet de transmission numérique dans lequel les étudiants sont amenés, en équipes mixtes électroniciens - informaticiens, à développer une application qui, sur base de données collectées par des senseurs, propose une analyse de ces dernières pour fournir un service.
Ce cours présente la programmation fonctionnelle et montre comment il est possible de programmer avec ce paradigme en utilisant Python. La première partie présente la notion d'objet de type fonction, les fonctions lambda, le type callable et les closures. La deuxième partie présente les décorateur et montre comment ajouter du comportement à une fonction à l'aide d'un décorateur. La troisième partie présente les itérateurs et les générateurs qui, grâce à l'instruction yield, génère les données à la demande.
Ce cours présente la notion de système embarqué temps-réel et comment il est possible de gérer cela au niveau software avec un Linux embarqué. Plusieurs solutions sont présentées : OS temps-réel, linux préemptif et support hardware. Enfin, le cours présente le PRU-ICSS, dont est dotée la BeagleBone Black, une unité de calcul spécialisée pour les applications temps réel. Le cours présente comment programmer le PRU et notamment comment compiler un code à sa destination à l'aide d'un langage d'assemblage.
Ce cours présente la notion de qualité de code et comment il est possible de l'évaluer grâce à des métriques mesurables. Après avoir présenté plusieurs métriques standards, il se concentrer sur des aspects de qualité de code spécifique à l'orienté objet et présente les cinq concepts de l'orienté objet. La deuxième partie du cours présente plusieurs bonnes pratiques à avoir en programmation orientée objet, sur base d'exemples concrets.
Ce cours présente le notion de qualité de code et quels sont les critères et pratiques à adopter pour produire du code de qualité. Il présente les erreurs de programmation les plus fréquentes auprès des apprentis programmeurs. La deuxième partie du cours présente la notion de convention de codage et en particulier le PEP 0008 qui décrit des conventions à adopter lorsqu'on programme en Python.
Ce cours présente la notion de système d'exploitation et en particulier les Linux embarqués qui sont spécialement conçus pour des systèmes embarqués de haut niveau avec des processeurs à usage général (GPP) comme unité de calcul principale. Il explique ensuite comment Linux embarqué démarre, quelles sont les différentes phases et modalités de stockage du système d'exploitation. Enfin, il présente la BeagleBone Black, ses caractéristiques et comment la programmer. Le cours conclut en expliquant la notion de driver de périphérique et comment ils sont conçus sous Linux à l'aide de fichiers.
Ce cours présente la notion d'héritage entre classes qui permet de construire une relation de type "is-a". On crée une sous-classe à partir d'une super-classe, pour en hériter une partie de ses membres. On peut ensuite y ajouter des membres spécifiques. Ce cours présente également la redéfinition de méthodes, et comment utiliser les modificateurs de visibilité des membres.
Ce cours concerne le polymorphisme, c'est-à-dire la capacité pour une variable de prendre plusieurs types de donnée durant le temps de sa vie. Le cours présente aussi la notion de classe abstraite et d'interface qui est une classe abstraite pure.
Ce cours introduit aux trois langages de programmation du Web que sont l'HTML, le CSS et le Javascript. L'HTML est un langage de balisage qui permet de décrire un document et sa structure. Le CSS est un langage qui permet de définir des règles de style à appliquer à un document. Enfin, Javascript est un langage permettant d'ajouter un aspect dynamique à une page web.
Ce cours présente les relations de composition et d'agrégation qu'il est possible d'établir entre plusieurs classes et objets. La seconde partie présente la notion d'immuabilité d'objets et montre comment faire des copies d'objets.
Ce cours introduit à la notion de type abstrait de données (TAD). On commence par y découvrir les principes de complexité temporelle et spatiale permettant d'analyser les performances d'une structure de données et d'algorithmes. Ensuite, le cours présente plusieurs TAD : la pile, la file, le deque et le vecteur. Enfin, il présente comment implémenter des TAD avec des structures chainées.
Ce cours est le premier en lien avec l'algorithmique présente les algorithmes et fonctions récursives ainsi que le type abstrait de données arbre. La première partie revient sur les notions de problème, algorithhme et spécification. La deuxième partie présente la récursion et de nombreux exemples. Enfin, la troisième partie présente le type abstrait de données arbre qui permet d'organiser des données de manière hiérarchique. Le cours se termine avec une introduction aux notions de backtracking et lookahead.
Introduction à la partie technique de la formation Digitalent mise en place par l'équipe ECAM. Cette formation couvre l'impression 3D, la programmation et l'électronique embarquée.
Chapitre8: Collections et Enumerations En JavaAziz Darouichi
Voici le chapitre 8 sur les collections et les énumerations en Java.
Si vous avez des remarques ou suggestions afin de le parfaire.
N’hésitez pas à me contacter via mon email:
pr.azizdarouichi@gmail.com.
Bonne lecture.
Nettoyer et transformer ses données avec Openrefine : partie 2Mathieu Saby
2ème partie de la formation Openrefine donnée à l'URFIST de Paris le 25 mai 2018
La version pptx et les données sont disponibles librement sur Open Science Framework : https://osf.io/uqwrb/
Objectif général : Prendre en main la bibliothèque JavaScript la plus utilisée
Objectifs spécifiques :
Inclure la bibliothèque
Sélectionner du contenu
Manipuler des éléments
Mettre en forme du contenu
Gérer des évènements
Utiliser des effets
Effectuer des requêtes AJAX
C'est la nouvelle version 2019 du chapitre sur les tableaux en C++:
https://fr.slideshare.net/AzizDarouichi/chapitre3-tableauxcpp
Si vous avez des remarques ou suggestions afin de le parfaire.
N’hésitez pas à me contacter via mon email:
pr.azizdarouichi@gmail.com.
Bonne lecture
Ce cours présente ce qu'est l'internet des objets (IoT), un réseau parallèle au web connectant entre eux des dispositifs physiques. Les différences majeures entre l'IoT et le web sont mises en avant, ainsi que les grands défis auxquels le monde de l'IoT est confronté. Le cours présente ensuite brièvement comment on peut gérer un système embarqué à distance, notamment pour la maintenance, le monitoring, le disaster recovery, notamment à l'aide d'un watchdog. Enfin, pour conclure, plusieurs architectures réseaux possibles sont présentées, pour inter-connecter des systèmes embarqués et les relier au web.
Cette conférence présente le framework Johnny-Five qui permet de programmer des cartes embarquées à l'aide d'un module Node.js. Après un tour rapide du JavaScript et de son fonctionnement, en particulier la programmation fonctionnelle et l'exécution pilotée par les évènements, la présentation décrit Node.js et aborde rapidement son fonctionnement. La troisième partie présente Johnny-Five et plusieurs exemples simples de contrôle d'une LED et de l'utilisation des entrées/sorties numériques et analogiques.
Cette conférence présente LaTeX, un outil permettant de réaliser des documents de haute qualité typographique et professionnelle. Après avoir présenté quelques règles de typographie de la langue française, la présentation fait découvrir les bases de LaTeX et montre comment réaliser son premier document. Elle présente ensuite plusieurs constructions de base comme les listes, l'inclusion d'images et de tableaux, les mathématiques, les listings de code source. Enfin, elle termine avec des constructions plus avancées, comme la notion de figure et références croisées.
Ce cours présente comment réaliser des interfaces graphiques avec Python en utilisant la librairie Kivy. La première partie rappelle les principes de la programmation évènementielle puis présente la séparation interface/comportement à l'aide de fichiers KV et Python. La deuxième partie présente comment réaliser des dessins avec les composants Canvas. On y voit comment dessiner des formes, appliquer des transformations et on termine avec un exemple de composants déplaçables.
Ce second cours d'algorithmique présente des techniques utilisées en intelligence artificielle pour trouver une solution à un problème de recherche. La première partie définit un problème de recherche : état, action, arbre d'exécution, espace d'états, cout, objectif et formalisation. La deuxième partie présente plusieurs algorithmes de recherche : non informé (BFS, UCS, DFS, DLS, ID-DFS, BS), informé (BFS, A*) et avec adversaire (Minimax, Alpha-Beta Pruning). Enfin, la troisième partie présente deux librairies Python qui implémentent des algorithmes de recherche.
Ce cours introduit à l'intelligence artificielle. La première partie du cours présente et définit ce qu'est l'intelligence et décrit les notions d'agent rationnel et d'environnement et leurs propriétés. Ces deux concepts permettent d'offrir un cadre de réflexion sur l'intelligence. La fin de la première partie présente les neufs formes d'intelligence selon Howard Gardner. La seconde partie du cours présente et définit l'intelligence artificielle, initiée par Marvin Minsky et John McCarthy au MIT. Elle présente également le test de Turing, test permettant de déterminer si une machine peut penser. Cette partie se termine en présentant les six grands domaines de l'intelligence artificielle.
Ce cours présente les techniques que l'on peut utiliser pour effectuer des calculs parallèles avec une machine. La première partie introduit à la notion de parallélisme et de processus. Elle présente ensuite comment lancer et manipuler des processus avec les modules subprocess et multiprocessing. On y voit également comment communiquer entre processus avec des Queue et des Pipe. La deuxième partie présente les threads et leur utilisation avec le module threading. On y voit également comment créer un pool de workers/executors pour exécuter des jobs. Enfin, la dernière partie présente le framework dispy qui permet de facilement faire du calcul distribué et exploiter le parallélisme de données.
Ce premier cours introduit à plusieurs aspects liés au développement informatique. Le cours présente comment versioner son code avec le système Git et comment le déployer avec Heroku. Il présente ensuite comment débugguer avec le module pdb et comment profiler son code avec les modules timeit et profile. Enfin, le cours termine en présentant le concept de tests unitaires que l'on peut construire avec les modules doctest et unittest.
Ce cours présente ce qu'est Internet et son fonctionnement. En partant de l'ordinateur personnel ou smartphone connectés en un réseau local, le cours remonte petit à petit vers le fournisseur d'accès et l'Internet complet. Le cours présente ensuite plusieurs protocoles qui assurent le bon fonctionnement d'Internet et des services qu'il permet d'offrir. Enfin, la dernière partie concerne l'internet des objets.
Ce cours présente le langage UML qui permet notamment de modéliser des logiciels programmés en orienté objet. Ce cours présente les diagrammes de classes qui permettent de décrire la structure d'un logiciel et les diagrammes d'activité qui permettent de décrire les aspects dynamiques de l'exécution.
2. Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative Commons
Attribution – Pas d’Utilisation Commerciale – Pas de Modification 4.0 International.
3. Rappels
Ensemble
Collection non ordonnée d’éléments distincts
Opérations ensemblistes
Modification et ensemble non modifiable
Dictionnaire
Ensemble de paires clé-valeur, avec clés distinctes
Opérations d’accès et de modification
Base de données et format JSON
3
4. Objectifs
Utilisation de tuples
Définition et utilisation
Fonction avec plusieurs valeurs de retour
Tuple nommé
Introduction aux objets
Création et utilisation d’objets
Appel de méthode
Programmation orientée objet
4
6. Tuple
Séquence ordonnée et non modifiable d’éléments
Les éléments d’un tuple ne peuvent pas être modifiés
Définition d’un tuple avec ()
Parenthèses pas obligatoires lorsqu’au moins un élément
1 # Tuple vide
2 a = ()
3
4 # Tuples contenant un seul élément
5 b = 1,
6 c = (1,)
7
8 # Tuples contenant trois éléments
9 d = 1, 2, 3
10 e = (1, 2, 3)
6
7. Somme des éléments d’un tuple
Accès aux éléments d’un tuple avec les crochets
En lecture seulement, l’accès en écriture est interdit
Taille d’un tuple obtenue avec la fonction len
Parcours d’un tuple avec while ou for
1 def sum(values): | def sum(values):
2 s = 0 | s = 0
3 i = 0 | for element in values:
4 while i < len(values): | s += element
5 s += values[i] | return s
6 i += 1 |
7 return s |
7
8. Définition avec parenthèses
Définition avec parenthèses d’un tuple parfois obligatoire
Pour le tuple vide
Lors d’un appel de fonction
1 result = sum(1, 2, 3)
2
3 # Solution correcte :
4 # result = sum ((1, 2, 3))
Traceback (most recent call last):
File "program.py", line 9, in
r = sum(1, 2, 3)
TypeError: sum() takes 1 positional argument but 3 were given
8
9. Emballage et déballage
On peut emballer plusieurs valeurs dans un tuple
Elles sont toutes accessibles à partir d’une seule variable
On peut déballer un tuple dans plusieurs variables
Chaque variable reçoit la valeur d’un élément du tuple
1 t = 1, 2, 3
2 print(t)
3
4 a, b, c = t
5 print(a, b, c, sep=’/’)
(1, 2, 3)
1/2/3
9
10. Plusieurs valeurs de retour
Une fonction peut renvoyer plusieurs valeurs
Il suffit en fait de renvoyer un tuple
Fonction qui cherche un élément dans une liste
Si l’élément est trouvé, renvoie True et son indice
Sinon renvoie False et None comme indice
1 def find(list , element):
2 i = 0
3 while i < len(list):
4 if list[i] == element: # L’élément est trouvé
5 return True , i
6 i += 1
7 return False , None # L’élément n’a pas été trouvé
10
11. Récupération des valeurs de retour
Deux solutions pour récupérer les valeurs de retour
Sous forme d’une variable contenant un tuple
Avec autant de variables qu’il y a d’éléments dans le tuple
1 values = [1, 2, 3, 4]
2
3 result = find(values , 2)
4 found , index = find(values , 6)
5
6 print(result , found , index)
(True , 1) False None
11
12. Absence de valeur
La valeur spéciale None représente l’absence de valeur
A permis d’avoir des valeurs de retour homogènes pour find
1 def find(list , element):
2 i = 0
3 while i < len(list):
4 if list[i] == element: # L’élément est trouvé
5 return True , i
6 i += 1
7 return False # L’élément n’a pas été trouvé
8
9 values = [1, 2, 3, 4]
10 result = find(values , 2) # result peut être
11 # de différents type
12 if type(result) is tuple:
13 print(result [0], result [1])
14 else:
15 print(result)
12
13. Opérateur de déballage
Deux manières de déballer un tuple
Avec l’opérateur d’affectation
Lors d’un appel de fonction
Opérateur de déballage (*) lors d’un appel de fonction
Déballe le tuple dans les paramètres de la fonction appelée
1 def max(a, b, c):
2 if a > b and a > c:
3 return a
4 elif b > c:
5 return b
6 return c
7
8 t = 1, 2, 3
9 result = max (*t)
13
14. Affectation multiple
Changer la valeur de plusieurs variables en une fois
Combinaison d’emballage puis de déballage
Permet d’échanger les valeurs de deux variables
En une seule opération, sans variable intermédiaire
1 x, y = "Hello", 42
2 print(x, y)
3
4 x, y = y, x
5 print(x, y)
Hello 42
42 Hello
14
15. Tuple nommé
Attribuer un nom à chacun des éléments d’un tuple
Et permettre d’accéder aux éléments à partir du nom
Création d’un tuple nommé en deux phases
Définition d’un nouveau type de tuple nommé
Création du tuple nommé
1 from collections import namedtuple
2
3 Item = namedtuple (’Item ’, [’barcode ’, ’description ’, ’price ’])
4
5 coca = Item (5449000000996 , "Coca -Cola 33cl", 0.70)
15
16. Accès aux champs
Accès aux champs avec l’opérateur d’accès (.)
Un tuple nommé est un tuple enrichi
coca
0
barcode
1
description
2
price
5449000000996 "Coca-Cola 33cl" 0.7
1 print(len(coca)) # 3
2 print(coca [1]) # Coca -Cola 33cl
3 print(coca [1:3]) # (’Coca -Cola 33cl ’, 0.7)
4
5 print(coca.price) # 0.7
16
17. Vecteur dans le plan (1)
Définitions de fonctions qui agissent sur un vecteur
Représentation textuelle et calcul de la norme
1 from math import sqrt
2 from collections import namedtuple
3
4 Vector = namedtuple (’Vector ’, [’x’, ’y’])
5
6 def vectostr(v):
7 return "(" + str(v.x) + ", " + str(v.y) + ")"
8
9 def norm(v):
10 return sqrt(v.x ** 2 + v.y ** 2)
11
12 u = Vector (1, 1)
13 print(vectostr(u))
14 print(norm(u))
17
18. Tuple nommé vs dictionnaire
Éléments d’un tuple nommé ordonnés car séquence
Un dictionnaire est un ensemble de paires clé-valeur
Tuple nommé non modifiable
On peut modifier et ajouter des valeurs à un dictionnaire
Champs d’un tuple nommé sont des chaines de caractères
Les clés d’un dictionnaire sont des valeurs non modifiables
18
20. Objet (1)
Un objet combine des données et des fonctions
Les fonctions ont accès complet aux données de l’objet
Permet de définir des types de données complexes
On a déjà renconté les listes, chaines de caractères, ensembles...
1 dice = {1, 2, 3, 4, 5, 6} # Initialisation des données
2 face = dice.pop () # Appel d’une fonction
3
4 print("La face visible du dé est :", face)
La face visible du dé est : 1
20
21. Objet (2)
Trois éléments existent lorsqu’on crée un objet
L’objet, avec ses attributs, se trouve en mémoire
Une variable du même type que l’objet est déclarée
Une référence vers l’objet est stockée dans la variable
1 dice = {1, 2, 3, 4, 5, 6}
dice
set
set
1
2
3
4
5
6
21
22. Création
Création d’un objet en exécutant un constructeur
Permet d’initialiser les attributs de l’objet
1 from datetime import time
2
3 start = time (14, 45, 21)
4 end = time (16, 15, 56)
start
time
time
hour : 14
minute : 45
second : 21
end
time
time
hour : 16
minute : 15
second : 56
22
24. Accès aux attributs
Accès aux attributs d’un objet avec l’opérateur d’accès
Exactement comme avec les tuples nommés
L’accès peut se faire en lecture et/ou écriture
Certains attributs sont protégés en lecture seule
1 startseconds = 3600 * start.hour + 60 * start.minute + start.second
2 endseconds = 3600 * end.hour + 60 * end.minute + end.second
3
4 difference = endseconds - startseconds
5 print("Le cours va durer :", difference , "secondes")
24
25. Paramètre de type objet
Une fonction peut recevoir des paramètres de type objet
Le paramètre reçoit une copie de la référence vers l’objet
1 from datetime import time
2
3 def toseconds(t):
4 return 3600 * t.hour + 60 * t.minute + t.second
5
6
7 start = time (14, 45, 21)
8 end = time (16, 15, 56)
9
10 difference = toseconds(end) - toseconds(start)
11 print("Le cours va durer :", difference , "secondes")
Le cours va durer : 5435 secondes
25
26. Valeur de retour de type objet
Une fonction peut renvoyer un objet
La fonction crée l’objet et renvoie une référence vers ce dernier
1 from datetime import time
2
3 def theoreticalend (start , duration):
4 minute = start.minute + (duration % 60)
5 hour = start.hour + (duration // 60) + (minute // 60)
6 return time(hour , minute % 60, start.second)
7
8
9 start = time (14, 45, 21)
10 print("Le cours devrait finir à :", theoreticalend (start , 90))
Le cours devrait finir à : 16:15:21
26
27. Appel de méthode (1)
Une fonction associée à un objet est appelée une méthode
Une méthode est appelée sur un objet cible
1 from calendar import TextCalendar
2
3 cal = TextCalendar ()
4 cal.prmonth (2015 , 9) # Affiche le calendrier de septembre 2015
September 2015
Mo Tu We Th Fr Sa Su
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
27
28. Appel de méthode (2)
Méthode appelée avec l’opérateur d’appel de méthode (.)
L’objet cible est précisé avant le point
1 from calendar import TextCalendar
2
3 cal = TextCalendar ()
4 cal. setfirstweekday (6) # Change le premier jour de la semaine
5 cal.prmonth (2015 , 9)
September 2015
Su Mo Tu We Th Fr Sa
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
28
29. Vecteur dans le plan (2)
Méthode appelée directement sur l’objet cible
On ne doit plus passer le vecteur en paramètre
fonction(tuple_nommé, paramètres) objet.methode(paramètres)
1 # u = Vector (1, 1)
2 # print(vectostr(u))
3 # print(norm(u))
4
5 u = Vector (1, 1)
6 print(u)
7 print(u.norm ())
29
30. Objet vs tuple nommé
Modification possible des attributs d’un objet (directe ou non)
Un tuple nommé est non modifiable
Fonctions associées aux objets, appelées méthodes
Fonction utilisant un tuple nommé doit le recevoir en paramètre
Accès aux attributs peut être restreint aux méthodes
Tous les champs d’un tuple sont toujours accessibles
30
31. Programmation orientée objet
La programmation orientée objet manipule des objets
Concepts et entités représentés par des objets
Représenter des objets concrets ou conceptuels du monde réel
Une personne, un moyen de transport, une date, une liste...
Création de nouveaux types de données
Permet une programmation de plus haut niveau
31
32. État d’un objet
Chaque objet est unique et possède son propre état
Identité propre à chaque objet, avec ses propres attributs
L’état d’un objet est modifiable ou non
Objet immuable aura toujours le même état
État d’un objet non modifiable ne peut être changé
32
33. Manipuler les objets du monde
getFuelLevel
isOnGround
startEngine
startAutopilot
34. Mini-Projet
Site web de gestion avec base de données
Serveur web permettant de gérer une liste de films, cours,
musiques, contacts...
Base de donnéesServeur
Client GUI
34