GitLab now enforces expiry dates on tokens that originally had no set expiration date. Those tokens were given an expiration date of one year later. Please review your personal access tokens, project access tokens, and group access tokens to ensure you are aware of upcoming expirations. Administrators of GitLab can find more information on how to identify and mitigate interruption in our documentation.
"### 3.2. Algorithmes de tous les jours : les recettes de cuisine <a name=\"recettes\"></a>\n",
"On peut faire l'analogie entre un algorithme et une recette de cuisine : on liste tout d'abord tout ce dont on a besoin (les ingrédients) et on donne ensuite la suite des instructions que devra suivre la personne qui réalise la recette. \n",
"Prenons l'exemple d'une recette locale, le gâteau de santé ('Gsundheitsküeche'). Il suffit de prendre 250g de farine, 10 cl d'huile, 120 g de sucre, 200 de yaourt nature, 5 cl de lait, 1 sachet de levure chimique et 1 gousse de vanille. On mélange tous les ingrédients, en commençant par l'huile, le sucre le yaourt, le lait et la vanille et on termine en ajoutant la farine et la levure. Faire cuire 45 minutes au four. C'est simple...\n",
"Prenons l'exemple d'une recette locale, le gâteau de santé ('Gsundheitsküeche'). Il suffit de prendre 250g de farine, 10 cl d'huile, 120 g de sucre, 200 g de yaourt nature, 5 cl de lait, 1 sachet de levure chimique et 1 gousse de vanille. On mélange tous les ingrédients, en commençant par l'huile, le sucre le yaourt, le lait et la vanille et on termine en ajoutant la farine et la levure. Faire cuire 45 minutes au four. C'est simple...\n",
"\n",
"Si nous devions faire réaliser cette recette par un robot ou un ordinateur commandant une machine, il réaliserait la recette exactement comme nous l'avons décrite, c'est-à-dire :\n",
" * La gousse de vanille ira en entier dans le mélange, car il n'est pas spécifié de la fendre en 2 et gratter l'intérieur, pour ne garder que les grains.\n",
...
...
@@ -271,7 +271,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.4"
"version": "3.7.10"
}
},
"nbformat": 4,
...
...
%% Cell type:markdown id: tags:
# Introduction
## Sommaire
1.[Objectifs](#objectifs)
1.[Exemples d'applications](#exemples)
1.[La programmation](#programmation)
1.[Qu'est-ce que la programmation ?](#keske)
1.[Algorithmes de tous les jours : les recettes de cuisine](#recettes)
1.[Exemple de tâche : conjuguer un verbe au présent de l'indicatif](#conjugaison)
1.[Un défi : comment "penser" comme un ordinateur ?](#penser)
1.[Pourquoi apprendre à programmer ?](#pourquoi)
1.[Programmation et langues naturelles](#langues)
1.[Pourquoi le langage Python ?](#python)
1.[Premiers programmes](#premiers)
1.[Enregistrement de programmes](#enregistrement)
## 1. Objectifs <a name="objectifs"></a>
L'informatique est entrain de révolutionner la manière d'appréhender le champ des humanités. Afin de traiter des contenus numériques toujours plus diversifiés et toujours plus nombreux (Big Data), les outils informatiques sont désormais nécessaires. L'objectif de ce module est de préparer les étudiantes et étudiants aux enjeux du numérique, par une initiation à la programmation avec le langage Python. Les compétences acquises permettront de développer des applications simples de traitement automatique des langues et des scripts de manipulation et d'analyse de données textuelles.
### 1.1. Compétences à acquérir :
* Maîtriser les techniques de programmation et être capable d'écrire des programmes de manière indépendante
* Connaître les concepts de base de l'algorithmique et des structures de données
### 1.2. Contenus :
Découverte du langage Python. Généralités autour de la notion d’algorithmique et des questions liées à l’informatisation des documents textuels. Écriture de programmes en utilisant les variables, les opérations d’affectation, les boucles, les instructions conditionnelles, les structures de données simples et complexes (listes et dictionnaires) ainsi que les expressions régulières. Mise en application de ces notions par des exercices impliquant de combiner ces divers éléments.
1. Correction orthographique dans les logiciels de traitement de texte, les navigateurs web
1. Reconnaissance de la parole et systèmes de question-réponse dans les assistants vocaux : Assistant Google, Siri
%% Cell type:markdown id: tags:
## 3. La programmation <a name="programmation"></a>
### 3.1. Qu'est-ce que la programmation ? <a name="keske"></a>
L'objectif d'un **programme** est de résoudre un problème donné de manière systématique (par exemple, trier une liste de mots, ou identifier le maximum dans un ensemble de chiffres). Pour cela, il faut trouver la suite d'**instructions** (ou ordres) à donner à la machine pour trouver la solution : c'est ce qu'on appelle l'**algorithme**.
La phase de **programmation** consiste à traduire l'algorithme dans un **langage de programmation** pour obtenir un **programme**.
Un **logiciel** est un ensemble de programmes.
Pour les langages dits "interprétés", l'exécution d'un programme nécessite un **interpréteur**, qui va lire les instructions du programme et les exécuter.
### 3.2. Algorithmes de tous les jours : les recettes de cuisine <a name="recettes"></a>
On peut faire l'analogie entre un algorithme et une recette de cuisine : on liste tout d'abord tout ce dont on a besoin (les ingrédients) et on donne ensuite la suite des instructions que devra suivre la personne qui réalise la recette.
Prenons l'exemple d'une recette locale, le gâteau de santé ('Gsundheitsküeche'). Il suffit de prendre 250g de farine, 10 cl d'huile, 120 g de sucre, 200 de yaourt nature, 5 cl de lait, 1 sachet de levure chimique et 1 gousse de vanille. On mélange tous les ingrédients, en commençant par l'huile, le sucre le yaourt, le lait et la vanille et on termine en ajoutant la farine et la levure. Faire cuire 45 minutes au four. C'est simple...
Prenons l'exemple d'une recette locale, le gâteau de santé ('Gsundheitsküeche'). Il suffit de prendre 250g de farine, 10 cl d'huile, 120 g de sucre, 200 g de yaourt nature, 5 cl de lait, 1 sachet de levure chimique et 1 gousse de vanille. On mélange tous les ingrédients, en commençant par l'huile, le sucre le yaourt, le lait et la vanille et on termine en ajoutant la farine et la levure. Faire cuire 45 minutes au four. C'est simple...
Si nous devions faire réaliser cette recette par un robot ou un ordinateur commandant une machine, il réaliserait la recette exactement comme nous l'avons décrite, c'est-à-dire :
* La gousse de vanille ira en entier dans le mélange, car il n'est pas spécifié de la fendre en 2 et gratter l'intérieur, pour ne garder que les grains.
* Idem pour le sachet de levure chimique, ce n'est pas précisé qu'il faut l'ouvrir et verser le contenu, puis jeter le sachet
* Enfin, ce n'est pas précisé qu'il faut allumer le four et verser la pâte dans un moule.
Tout ça paraît très logique, mais un robot ou un ordinateur ne comprend pas les instructions ambigues ou incomplètes, car il n'a pas de connaissances extérieures.
### 3.3. Exemple de tâche : conjuguer un verbe au présent de l'indicatif <a name="conjugaison"></a>
Algorithme proposé :
1. Demander le verbe à l'utilisateur
1. Retirer les deux derniers caractères pour obtenir le radical
1. Afficher Je + ' ' + radical + e
1. Afficher Tu + ' ' + radical + es
etc.
Résultat :
* chanter → Je chante, Tu chantes, ...
* chanson → Je chanse, Tu chanses, ...
L'algorithme proposé n'est donc pas très robuste et il est nécessaire d'introduire des vérifications supplémentaires.
Algorithme version 2 :
1. Demander le verbe à l'utilisateur
1. Vérifier que le verbe se termine bien par "er". Si ce n'est pas le cas, afficher un message d'erreur.
1. Retirer les deux derniers caractères pour obtenir le radical
1. Afficher Je + ' ' + radical + e
1. Afficher Tu + ' ' + radical + es
etc.
Résultat :
* chanter → Je chante, Tu chantes, ...
* chanson → ERREUR !
* affecter → Je affecte, Tu affectes, ...
Il faut donc encore améliorer l'algorithme pour prendre en compte le cas particulier des verbes qui commencent par une voyelle.
Algorithme version 3 :
1. Demander le verbe à l'utilisateur
1. Vérifier que le verbe se termine bien par "er". Si ce n'est pas le cas, afficher un message d'erreur.
1. Retirer les deux derniers caractères pour obtenir le radical
1. Si le verbe commence par une consonne, afficher Je + ' ', sinon afficher J', puis afficher radical + e
1. Afficher Tu + ' ' + radical + es
etc.
Résultat :
* chanter → Je chante, Tu chantes, ...
* chanson → ERREUR !
* affecter → J'affecte, Tu affectes, ...
### 3.4. Un défi : comment "penser" comme un ordinateur ? <a name="penser"></a>
* Il faut s'entraîner à réfléchir aux problèmes d'une manière particulière ;
* Les ordinateurs ne sont pas intelligents, mais ils sont capables d'effectuer des tâches précises ;
* Il est nécessaire de leur donner des instructions précises, complètes et détaillées ;
* Ces instructions ne peuvent pas être communiquées en langue naturelle, mais doivent être traduites dans un langage de programmation ;
* Il faut penser à l'avance aux exceptions possibles.
### 3.5. Pourquoi apprendre à programmer ? <a name="pourquoi"></a>
#### Il y a beaucoup de bonnes raisons...
* Il n'existe pas de logiciel tout prêt capable de répondre à tous les besoins ;
* Savoir programmer permet de mieux comprendre le fonctionnement interne des logiciels, leurs limites, et donc les utiliser à bon escient ;
* L'utilisation de différents outils nécessite souvent de transformer le format de sortie de l'un en un format adéquat pour l'autre ;
* Cela permet de pouvoir effectuer soi-même des tâches qu'il faudrait sinon confier à d'autres ;
* La programmation est une activité qui s'avère généralement très passionnante, gratifiante, voire amusante ;
* La programmation est un bon entraînement pour la résolution de problèmes et le raisonnement logique, compétences utiles dans d'autres domaines ;
* C'est en phase avec l'importance grandissante du numérique dans la société, même dans les domaines relevant des sciences humaines et sociales.
### 3.6. Programmation et langues naturelles <a name="langues"></a>
#### Points communs
* Il existe de nombreuses langues et langages informatiques différents.
* Quelques langages de programmation : Python, Perl, Java, C, C++, C#, Scheme, Lisp, Prolog, Basic, Fortran, Lisp, Scheme, Ada, Pascal, BASIC, etc.
* Tout comme les langues, les langages informatiques s'organisent en familles, en fonction de leurs points communs et de leurs différences
* Certains langages informatiques sont plus faciles à apprendre que d'autres.
#### Différences
* La langue naturelle est naturellement ambiguë et expressive, tandis que les langages informatiques sont exacts et peu expressifs
* Il n'y a pas d'ambiguïté possible dans les programmes informatiques : chaque instruction ne peut avoir qu'une interprétation.
Une "phrase" comme *La belle ferme le voile* n'est donc pas possible !
* Le "lexique" des langages informatiques est très limité, et ressemble généralement fortement à l'anglais :
Pour python : *in, def, for, if, else, print, import, from, continue, pass, return* etc.
### 3.7. Pourquoi le langage Python ? <a name="python"></a>
#### Caractéristiques de Python
Le langage Python a été créé par Guido von Rossum aux Pays-Bas. Le nom du langage fait référence aux Monty Python. La première version publique (0.9.0) date de 1991.
Le code Python est exécuté par une machine virtuelle installée sur la machine (l'interpréteur de commandes).
#### Un langage "facile" à apprendre
Par rapport à d'autres langages, Python est facile à apprendre, assez facile à lire et à manipuler. Et aussi à maintenir...
Il utilise peu de symboles comme les accolades ({ }), les symboles dollar ($) et dièse (\#).
#### Un langage avec de multiples avantages et utilisations
* Manipulation aisée de fichiers et de dossiers ;
* Syntaxe simple, proche du langage naturel (anglais)
* Nombreuses bibliothèques disponibles pour des tâches variées : calcul scientifique, travail avec des données textuelles, manipulation de bases de données, applications Web, etc.
* Écriture rapide de petits programmes (les moulinettes) ;
* Gratuit et disponible sous tous type de plateformes ;
* Utilisé dans de nombreuses entreprises (Google, YouTube, DropBox, et.), pour la recherche scientifique (notamment en traitement automatique des langues via le Natural Language Processing Toolkit) et l'enseignement ;
* Langage réputé pour faciliter la qualité et la maintenabilité des programmes

Testez l'instruction ci-dessous avec CTRL+Entrée :
%% Cell type:code id: tags:
``` python
print("Bonjour tout le monde !")
```
%% Cell type:markdown id: tags:
A votre avis, que fait la commande `print` ?
Testez ensuite la suite d'instructions ci-dessous :
%% Cell type:code id: tags:
``` python
prenom=input("Comment vous appelez-vous ? ")
print("Bonjour "+prenom)
```
%% Cell type:markdown id: tags:
Que fait la commande `input` ?
Modifiez les lignes de code ci-dessus pour afficher deux points d'exclamation après le prénom, par exemple : Bonjour Marie !!
Testez maintenant la suite d'instructions ci-dessous :
%% Cell type:code id: tags:
``` python
nom=input("Entrez un nom commun masculin singulier : ")
pluriel=nom+"s"
print("Les formes fléchies de '"+nom+"' sont : ")
print("un "+nom)
print("des "+pluriel)
```
%% Cell type:markdown id: tags:
A quoi sert le `+` ?
Modifiez le programme pour prendre en compte le cas des noms communs féminins, comme "maison" par exemple.
## 4. Enregistrement de programmes <a name="enregistrement"></a>
Pour les programmes dépassant une ou deux instructions (une ligne de code = une instruction), il peut être utile de les enregistrer pour pouvoir les réutiliser plus tard.
Nous allons utiliser l'environnement de développement PyCharm (guide d'utilisation succinct : https://koor.fr/Python/Tutorial/python_ide_pycharm.wp)
Enregistrez le programme précédent sous le nom `pluriel.py`. Exécutez ensuite le programme.