Langages et programmation
Un algorithme est une suite finie et non ambiguë d’instructions et d’opérations permettant de résoudre une classe de problèmes. (Wikipedia : algorithme)
Notre langue maternelle est ambigüe et ne convient donc pas à l’écriture d’algorithmes destinés aux machines. À ce titre, visionnez la jolie vidéo « Challenge consignes exactes » où les enfants ont du mal à se sortir des imprécisions et ambiguité du langage .
Nous allons mettre en palce des algorithmes à l’aide de structures algorithmiques, puis nous implémenteorns ces algorithmes en Python.
Ada Lovelace
Elle s’appelle Ada, Augusta Ada King, comtesse de Lovelace, fille du célèbre poète Lord George Gordon Byron.
En 1843, un siècle avant la naissance des calculateurs électroniques, Ada Lovelace formule les premières idées fondamentales de l’informatique. Elle contribue à améliorer les premiers programmes, conçus alors sur papier.
Elle travaille avec Charles Babbage, mathématicien, sur la « machine analytique ». Pour faire marcher cette future machine, Ada crée des « diagrammes » qui ont pour but d’expliquer comment doit procéder la machine pour arriver au résultat recherché… et ceci indépendamment de la façon dont sont réalisées ces opérations. Ce sont des « algorithmes ».
Le langage ADA créé entre 1980 et 1983 lui doit son nom.
[image par Luaailustrada Licence Attribution-Share Alike 4.0 ]
Dans ce chapitre, nous allons poser les bases de la programmation dite impérative en examinant dans l’ordre:
- Variables et affectation: stockage provisoire des valeurs, modification. Les variables ont un type: voici ceux que nous avons rencontrés:entier (int), réel (float), chaîne de caractère (str), booléen (bool). Une affectation est une [b]instruction.[/b]
>>> nom = "Sanchez" >>> type(nom) <class 'str'>
Python détermine le type des données seul, on dit que le typage est dynamique. En C ou C++, vous devez indiquer le type de la variable: on dit que le typage est statique.
- Expression: c’est le résultat d’un calcul, celui-ci peut-être stocké dans une variable. Comme en maths, les expressions sont évaluées en suivant les priorités des opérateurs, y compris logique comme not, and et or donnés ici dans l’ordre de leur priorité.
- Séquences d’instructions: utiliser des conditions et effectuer un branchement vers un bloc d’instruction selon que cette condition est vraie ou fausse.
- Import de module: Utilisation de module comme turtle qui contient des méthodes de tracé. Sans cet import, la méthode forward, par exemple, n’est pas connue. Nous utliserons notamment les modules math, matplot, random et tkinter, pygame, PIL.
- Fonctions: Morceaux de programme auxquels on a donné un nom, nous pouvons les réutiliser juste en appelant ce nom: le code est alors factorisé.
- Structures conditionnelles. Utiliser une condition pour effectuer un branchement vers une séquence d’instruction.
- Boucles:
- Boucle bornée : boucle Pour, répéter N fois une séquence d’instruction. N est connu .
- Boucle non bornée : boucle while répéter une séquence d’instruction tant qu’une condition est vérifiée.
Notre but est que vous puissiez au fur et à mesure de votre parcours:
-
nommer de manière pertinente les objets en explicitant leur type ou catégorie pour les manipuler correctement ;
-
maîtriser la complexité d’un grand problème ou d’un système en le hiérarchisant ou le scindant en plusieurs sous-problèmes plus simples ;
-
spécifier dans ses moindres détails un procédé pour qu’il puisse s’exécuter sans ambiguïté de manière mécanique, etc.
Documents de cours:
-
Cours premiers pas: les bases à connaître.
-
Cours Python pour plus de détail: http://maths-code.fr/NSI/1ere/Cours-Python_2020.pdf
-
Fiche d’exercices:
Python reste le support utilisé mais il n’est qu’un support: les structures vous sont présentées dans d’autres langages comme C++ ou Javascript.