Apprendre à programmer avec Python 3
eBook - ePub

Apprendre à programmer avec Python 3

Avec 60 pages d'exercices corrigés !

  1. 435 pages
  2. French
  3. ePUB (adapté aux mobiles)
  4. Disponible sur iOS et Android
eBook - ePub

Apprendre à programmer avec Python 3

Avec 60 pages d'exercices corrigés !

Détails du livre
Aperçu du livre
Table des matières
Citations

À propos de ce livre

Un livre incontournable pour acquérir l'exigeante discipline qu'est l'art de la programmation!

Original et stimulant, cet ouvrage aborde au travers d'exemples attrayants et concrets tous les fondamentaux de la programmation. L'auteur a choisi Python, langage moderne et élégant, aussi performant pour le développement d'applications web complexes que pour la réalisation de scripts système ou l'analyse de fichiers XML.

Un support de cours réputé et adopté par de nombreux enseignants, avec 60 pages d'exercices corrigés

Reconnu et utilisé par les enseignants de nombreuses écoles et IUT, complété d'exercices accompagnés de leurs corrigés, cet ouvrage original et érudit est une référence sur tous les fondamentaux de la programmation: choix d'une structure de données, paramétrage, modularité, orientation objet et héritage, conception d'interface, multithreading et gestion d'événements, protocoles de communication et gestion réseau, bases de données... jusqu'à la désormais indispensable norme Unicode (le format UTF-8). On verra notamment la réalisation avec Python 3 d'une application web interactive et autonome, intégrant une base de données SQLite. Cette nouvelle édition traite de la possibilité de produire des documents imprimables (PDF) de grande qualité en exploitant les ressources combinées de Python 2 et Python 3.

A qui s'adresse ce livre?

  • Aux étudiants en BTS et IUT Informatique et à leurs enseignants;
  • À tous les autodidactes férus de programmation qui veulent découvrir le langage Python.

Foire aux questions

Il vous suffit de vous rendre dans la section compte dans paramètres et de cliquer sur « Résilier l’abonnement ». C’est aussi simple que cela ! Une fois que vous aurez résilié votre abonnement, il restera actif pour le reste de la période pour laquelle vous avez payé. Découvrez-en plus ici.
Pour le moment, tous nos livres en format ePub adaptés aux mobiles peuvent être téléchargés via l’application. La plupart de nos PDF sont également disponibles en téléchargement et les autres seront téléchargeables très prochainement. Découvrez-en plus ici.
Les deux abonnements vous donnent un accès complet à la bibliothèque et à toutes les fonctionnalités de Perlego. Les seules différences sont les tarifs ainsi que la période d’abonnement : avec l’abonnement annuel, vous économiserez environ 30 % par rapport à 12 mois d’abonnement mensuel.
Nous sommes un service d’abonnement à des ouvrages universitaires en ligne, où vous pouvez accéder à toute une bibliothèque pour un prix inférieur à celui d’un seul livre par mois. Avec plus d’un million de livres sur plus de 1 000 sujets, nous avons ce qu’il vous faut ! Découvrez-en plus ici.
Recherchez le symbole Écouter sur votre prochain livre pour voir si vous pouvez l’écouter. L’outil Écouter lit le texte à haute voix pour vous, en surlignant le passage qui est en cours de lecture. Vous pouvez le mettre sur pause, l’accélérer ou le ralentir. Découvrez-en plus ici.
Oui, vous pouvez accéder à Apprendre à programmer avec Python 3 par Gérard Swinnen en format PDF et/ou ePUB ainsi qu’à d’autres livres populaires dans Ciencia de la computación et Lenguajes de programación. Nous disposons de plus d’un million d’ouvrages à découvrir dans notre catalogue.

Informations

Éditeur
Eyrolles
Année
2012
ISBN
9782212029147

1

À l’école des sorciers

Apprendre à programmer est une activité déjà très intéressante en elle-même : elle peut stimuler puissamment votre curiosité intellectuelle. Mais ce n’est pas tout. Acquérir cette compétence vous ouvre également la voie menant à la réalisation de projets tout à fait concrets (utiles ou ludiques), ce qui vous procurera certainement beaucoup de fierté et de grandes satisfactions.
Avant de nous lancer dans le vif du sujet, nous allons vous proposer ici quelques réflexions sur la nature de la programmation et le comportement parfois étrange de ceux qui la pratiquent, ainsi que l’explication de quelques concepts fondamentaux. Il n’est pas vraiment difficile d’apprendre à programmer, mais il faut de la méthode et une bonne dose de persévérance, car vous pourrez continuer à progresser sans cesse dans cette science : elle n’a aucune limite.

Boîtes noires et pensée magique

Une caractéristique remarquable de notre société moderne est que nous vivons de plus en plus entourés de boîtes noires. Les scientifiques ont l’habitude de nommer ainsi les divers dispositifs technologiques que nous utilisons couramment, sans en connaître ni la structure ni le fonctionnement exacts. Tout le monde sait se servir d’un téléphone, par exemple, alors qu’il n’existe qu’un très petit nombre de techniciens hautement spécialisés capables d’en concevoir un nouveau modèle.
Des boîtes noires existent dans tous les domaines, et pour tout le monde. En général, cela ne nous affecte guère, car nous pouvons nous contenter d’une compréhension sommaire de leur mécanisme pour les utiliser sans états d’âme. Dans la vie courante, par exemple, la composition précise d’une pile électrique ne nous importe guère. Le simple fait de savoir qu’elle produit son électricité à partir d’une réaction chimique nous suffit pour admettre sans difficulté qu’elle sera épuisée après quelque temps d’utilisation, et qu’elle sera alors devenue un objet polluant qu’il ne faudra pas jeter n’importe où. Inutile donc d’en savoir davantage.
Il arrive cependant que certaines boîtes noires deviennent tellement complexes que nous n’arrivons plus à en avoir une compréhension suffisante pour les utiliser tout-à-fait correctement dans n’importe quelle circonstance. Nous pouvons alors être tentés de tenir à leur encontre des raisonnements qui se rattachent à la pensée magique, c’est-à-dire à une forme de pensée faisant appel à l’intervention de propriétés ou de pouvoirs surnaturels pour expliquer ce que notre raison n’arrive pas à comprendre. C’est ce qui se passe lorsqu’un magicien nous montre un tour de passe-passe, et que nous sommes enclins à croire qu’il possède un pouvoir particulier, tel un don de « double vue », ou à accepter l’existence de mécanismes paranormaux (« fluide magnétique », etc.), tant que nous n’avons pas compris le truc utilisé.
Du fait de leur extraordinaire complexité, les ordinateurs constituent bien évidemment l’exemple type de la boîte noire. Même si vous avez l’impression d’avoir toujours vécu entouré de moniteurs vidéo et de claviers, il est fort probable que vous n’ayez qu’une idée très vague de ce qui se passe réellement dans la machine, par exemple lorsque vous déplacez la souris, et qu’en conséquence de ce geste un petit dessin en forme de flèche se déplace docilement sur votre écran. Qu’est-ce qui se déplace, au juste ? Vous sentez-vous capable de l’expliquer en détail, sans oublier (entre autres) les capteurs, les ports d’interface, les mémoires, les portes et bascules logiques, les transistors, les bits, les octets, les interruptions processeur, les cristaux liquides de l’écran, la micro-programmation, les pixels, le codage des couleurs… ?
De nos jours, plus personne ne peut prétendre maîtriser absolument toutes les connaissances techniques et scientifiques mises en œuvre dans le fonctionnement d’un ordinateur. Lorsque nous utilisons ces machines, nous sommes donc forcément amenés à les traiter mentalement, en partie tout au moins, comme des objets magiques, sur lesquels nous sommes habilités à exercer un certain pouvoir, magique lui aussi.
Par exemple, nous comprenons tous très bien une instruction telle que « déplacer la fenêtre d’application en la saisissant par sa barre de titre ». Dans le monde réel, nous savons parfaitement ce qu’il faut faire pour l’exécuter, à savoir manipuler un dispositif technique familier (souris, pavé tactile…) qui va transmettre des impulsions électriques à travers une machinerie d’une complexité prodigieuse, avec pour effet ultime la modification de l’état de transparence ou de luminosité d’une partie des pixels de l’écran. Mais dans notre esprit, il ne sera nullement question d’interactions physiques ni de circuiterie complexe. C’est un objet tout à fait virtuel qui sera activé (la flèche du curseur se déplaçant à l’écran), et qui agira comme une baguette magique, pour faire obéir un objet tout aussi virtuel et magique (la fenêtre d’application). L’explication rationnelle de ce qui se passe effectivement dans la machine est donc escamotée au profit d’un « raisonnement » figuré, qui nous rassure par sa simplicité, mais qui est bel et bien une illusion.
Si vous vous intéressez à la programmation, sachez que vous serez constamment confronté à diverses formes de cette « pensée magique », non seulement chez les autres (par exemple ceux qui vous demanderont de réaliser tel ou tel programme), mais aussi et surtout dans vos propres représentations mentales. Vous devrez inlassablement démonter ces pseudo-raisonnements qui ne sont en fait que des spéculations, basées sur des interprétations figuratives simplifiées de la réalité, pour arriver à mettre en lumière (au moins en partie) leurs implications concrètes véritables.
Ce qui est un peu paradoxal, et qui justifie le titre de ce chapitre, c’est qu’en progressant dans cette compétence, vous allez acquérir de plus en plus de pouvoir sur la machine, et de ce fait vous allez vous-même devenir petit à petit aux yeux des autres, une sorte de magicien !
Bienvenue donc, comme le célèbre Harry Potter, à l’école des sorciers !

Magie blanche, magie noire

Nous n’avons bien évidemment aucune intention d’assimiler la programmation à une science occulte. Si nous vous accueillons ici comme un apprenti sorcier, c’est seulement pour attirer votre attention sur ce qu’implique cette image que vous donnerez probablement de vous-même (involontairement) à vos contemporains. Il peut être intéressant d’emprunter quelques termes au vocabulaire de la magie pour illustrer plaisamment certaines pratiques.
La programmation est l’art d’apprendre à une machine comment accomplir de nouvelles tâches, qu’elle n’avait jamais été capable d’effectuer auparavant. C’est par la programmation que vous pourrez acquérir le plus de contrôle, non seulement sur votre machine, mais aussi peut-être sur celles des autres par l’intermédiaire des réseaux. D’une certaine façon, cette activité peut donc être assimilée à une forme particulière de magie. Elle donne effectivement à celui qui l’exerce un certain pouvoir, mystérieux pour le plus grand nombre, voire inquiétant quand on se rend compte qu’il peut être utilisé à des fins malhonnêtes.
Dans le monde de la programmation, on désigne par le terme hacker les programmeurs chevronnés qui ont perfectionné les systèmes d’exploitation de type Unix et mis au point les techniques de communication qui sont à la base du développement extraordinaire de l’Internet. Ce sont eux également qui continuent inlassablement à produire et à améliorer les logiciels libres (Open Source). Selon notre analogie, les hackers sont donc des maîtres-sorciers, qui pratiquent la magie blanche.
Mais il existe aussi un autre groupe de gens que les journalistes mal informés désignent erronément sous le nom de hackers, alors qu’ils devraient plutôt les appeler crackers. Ces personnes se prétendent hackers parce qu’ils veulent faire croire qu’ils sont très compétents, alors qu’en général ils ne le sont guère. Ils sont cependant très nuisibles, parce qu’ils utilisent leurs quelques connaissances pour rechercher les moindres failles des systèmes informatiques construits par d’autres, afin d’y effectuer toutes sortes d’opérations illicites : vol d’informations confidentielles, escroquerie, diffusion de spam, de virus, de propagande haineuse, de pornographie et de contrefaçons, destruction de sites web, etc. Ces sorciers dépravés s’adonnent bien sûr à une forme grave de magie noire.
Mais il y en a une autre. Les vrais hackers cherchent à promouvoir dans leur domaine une certaine éthique, basée principalement sur l’émulation et le partage des connaissances1. La plupart d’entre eux sont des perfectionnistes, qui veillent non seulement à ce que leurs constructions logiques soient efficaces, mais aussi à ce qu’elles soient élégantes, avec une structure parfaitement lisible et documentée. Vous découvrirez rapidement qu’il est aisé de produire à la va-vite des programmes qui fonctionnent, certes, mais qui sont obscurs et confus, indéchiffrables pour toute autre personne que leur auteur (et encore !). Cette forme de programmation absconse et ingérable est souvent aussi qualifiée de « magie noire » par les hackers.

La démarche du programmeur

Comme le sorcier, le programmeur compétent semble doté d’un pouvoir étrange qui lui permet de transformer une machine en une autre, une machine à calculer en une machine à écrire ou à dessiner, par exemple, un peu à la manière d’un sorcier qui transformerait un prince charmant en grenouille, à l’aide de quelques incantations mystérieuses entrées au clavier. Comme le sorcier, il est capable de guérir une application apparemment malade, ou de jeter des sorts à d’autres, via l’Internet. Mais comment cela est-il possible ?
Cela peut paraître paradoxal, mais comme nous l’avons déjà fait remarquer plus haut, le vrai maître est en fait celui qui ne croit à aucune magie, à aucun don, à aucune intervention surnaturelle. Seule la froide, l’implacable, l’inconfortable logique est de mise.
Le mode de pensée d’un programmeur combine des constructions intellectuelles complexes, similaires à celles qu’accomplissent les mathématiciens, les ingénieurs et les scientifiques. Comme le mathématicien, il utilise des langages formels pour décrire des raisonnements (ou algorithmes). Comme l’ingénieur, il conçoit des dispositifs, il assemble des composants pour réaliser des mécanismes et il évalue leurs performances. Comme le scientifique, il observe le comportement de systèmes complexes, il crée des modèles, il teste des prédictions.
L’activité essentielle d’un programmeur consiste à résoudre des problèmes. Il s’agit là d’une compétence de haut niveau, qui implique des capacités et des connaissances diverses : être capable de (re)formuler un problème de plusieurs manières différentes, être capable d’imaginer des solutions innovantes et efficaces, être capable d’exprimer ces solutions de manière claire et complète. Comme nous l’avons déjà évoqué plus haut, il s’agira souvent de mettre en lumière les implications concrètes d’une représentation mentale « magique », simpliste ou trop abstraite.
La programmation d’un ordinateur consiste en effet à « expliquer » en détail à une machine ce qu’elle doit faire, en sachant d’emblée qu’elle ne peut pas véritablement « comprendre » un langage humain, mais seulement effectuer un traitement automatique sur des séquences de caractères. Il s’agit la plupart du temps de convertir un souhait exprimé à l’origine en termes « magiques », en un vrai raisonnement parfaitement structuré et élucidé dans ses moindres détails, que l’on appelle un algorithme.
Considérons par exemple une suite de nombres fournis dans le désordre : 47, 19, 23, 15, 21, 36, 5, 12… Comment devons-nous nous y prendre pour obtenir d’un ordinateur qu’il les remette dans l’ordre ?
Le souhait « magique » est de n’avoir qu’à cliquer sur un bouton, ou entrer une seule instruction au clavier, pour qu’automatiquement les nombres se mettent en place. Mais le travail du sorcier-programmeur est justement de créer cette « magie ». Pour y arriver, il devra décortiquer tout ce qu’implique pour nous une telle opération de tri (au fait, existe-t-il une méthode unique pour cela, ou bien y en a-t-il plusieurs ?), et en traduire toutes les étapes en une suite d’instructions simples, telles que par exemple « comparer les deux premiers nombres, les échanger s’ils ne sont pas dans l’ordre souhaité, recommencer avec le deuxième et le troisième, etc. ».
Si les instructions ainsi mises en lumière sont suffisamment simples, il pourra alors les encoder dans la machine en respectant de manière très stricte un ensemble de conventions fixées à l’avance, que l’on appelle un langage informatique. Pour « comprendre » celui-ci, la machine sera pourvue d’un mécanisme qui décode ces instructions en associant à chaque « mot » du langage une action précise. Ainsi seulement, la magie pourra s’accomplir.

Langage machine, langage de programmation

À strictement parler, un ordinateur n’est rien d’autre qu’une machine effectuant des opérations simples sur des séquences de signaux électriques, lesquels sont conditionnés de manière à ne pouvoir prendre que deux états seulement (par exemple un potentiel électrique maximum ou minimum). Ces séquences de signaux obéissent à une logique du type « tout ou rien » et peuvent donc être considérés conventionnellement comme des suites de nombres ne prenant jamais que les deux valeurs 0 et 1. Un système numérique ainsi limité à deux chiffres est appelé système binaire.
Sachez dès à présent que dans son fonctionnement interne, un ordinateur est totalement incapable de traiter autre chose que des nombres binaires. Toute information d’un autre type doit être convertie, ou codée, en format binaire. Cela est vrai non seulement pour les données que l’on souhaite traiter (les textes, les images, les sons, les nombres, etc.), mais aussi pour les programmes, c’est-à-dire les séquences d’instructions que l’on va fournir à la machine pour lui dire ce qu’elle doit faire avec ces données.
Le seul « langage » que l’ordinateur puisse véritablement « comprendre » est donc très éloigné de ce que nous utilisons nous-mêmes. C’est une longue suite de 1 et de 0 (les « bits ») souvent traités par groupes de 8 (les « octets »), 16, 32, ou même 64. Ce « langage machine » est évidemment presque incompréhensible pour nous. Pour « parler » à un ordinateur, il nous faudra utiliser des systèmes de traduction automatiques, capables de convertir en nombres binaires des suites de caractères formant des mots-clés (anglais en général) qui seront plus significatifs pour nous.
Ces systèmes de traduction automatique seront établis sur la base de toute une série de conventions, dont il existera évidemment de nombreuses variantes.
Le système de traduction proprement dit s’appellera interpréteur ou bien compilateur, suivant la méthode utilisée pour effectuer la traduction. On appellera langage de programmation un ensemble de mots-clés (choisis arbitrairement) associé à un ensemble de règles très précises indiquant comment assembler ces mots pour former des « phrases » que l’interpréteur ou le compilateur puisse traduire en langage machine (binaire).
Suivant son niveau d’abstraction, on pourra dire d’un langage qu’il est « de bas niveau » (ex : assembleur) ou « de haut niveau » (ex : Pascal, Perl, Smalltalk, Scheme, Lisp…). Un langage de bas niveau est constitué d’instructions très élémentaires, très « proches de la machine ». Un langage de haut niveau comporte des instructions plus abstraites, plus « puissantes » (et donc plus « magiques »). Cela signifie que chacune de ces instructions pourra être traduite par l’interpréteur ou le compilateur en un grand nombre d’instructions machine élémentaires.
Le langage que vous avez allez apprendre en premier est Python. Il s’agit d’un langage de haut niveau, dont la traduction en code binaire est complexe et prend donc toujours un certain temps. Cela pourrait paraître un inconvénient. En fait, les avantages que présentent les langages de haut niveau sont énormes : il est beaucoup plus facile d’écrire un programme dans un langage de haut niveau ; l’écriture du programme prend donc beaucoup moins de temps ; la probabilité d’y faire des fautes est nettement plus faible ; la maintenance (c’est-à-dire l’apport de modifications ultérieures) et la recherche des erreurs (les « bogues ») sont grandement facilitées. De plus, un programme écrit dans un langage de haut niveau sera souvent portable, c’est-à-dire que l’on pourra le faire fonctionner sans guère de modifications sur des machines ou des systèmes d’exploitation différents. Un programme écrit dans un langage de bas niveau ne peut jamais fonctionner que sur un seul type de machine : pour qu’une autre l’accepte, il faut le réécrire entièrement.
Dans ce que nous venons d’expliquer sommairement, vous aurez sans doute repéré au passage de nombreuses « boîtes noires »: int...

Table des matières

  1. Couverture
  2. Page de titre
  3. Copyright
  4. Chez le même éditeur
  5. Préface
  6. Remerciements
  7. Table des matières
  8. 1. À l’école des sorciers
  9. 2. Premiers pas
  10. 3. Contrôle du flux d’exécution
  11. 4. Instructions répétitives
  12. 5. Principaux types de données
  13. 6. Fonctions prédéfinies
  14. 7. Fonctions originales
  15. 8. Utilisation de fenêtres et de graphismes
  16. 9. Manipuler des fichiers
  17. 10. Approfondir les structures de données
  18. 11. Classes, objets, attributs
  19. 12. Classes, méthodes, héritage
  20. 13. Classes et interfaces graphiques
  21. 14. Et pour quelques widgets de plus
  22. 15. Analyse de programmes concrets 2
  23. 16. Gestion d’une base de données
  24. 17. Applications web
  25. 18. Imprimer avec python
  26. 19. Communications à travers un réseau et multithreading
  27. 20. Annexe a. installation de python
  28. 21. Annexe b. solutions des exercices
  29. 22. Index