Skip to content
Snippets Groups Projects
Commit d41d7a7e authored by BERNHARD DELPHINE's avatar BERNHARD DELPHINE
Browse files

Corrections mineures Cours 1

parent bf78c8ae
Branches master
No related merge requests found
%% Cell type:markdown id: tags:
# Introduction
## Sommaire
1. [Objectifs](#objectifs)
1. [Exemples d'applications](#exemples)
1. [Exemple de programmes](#programme)
1. [La programmation](#programmation)
1. [Qu'est-ce que la programmation ?](#keske)
1. [Algorithmes de tous les jours : les recettes de cuisine](#recettes)
1. [Un défi : comment "penser" comme un ordinateur ?](#penser)
1. [Pourquoi apprendre à programmer ?](#pourquoi)
1. [Pourquoi le langage Python ?](#python)
1. [Premiers programmes](#premiers)
%% Cell type:markdown id: tags:
## 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 étudiant·e·s 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. Ce module ne nécessite pas de
connaissances en programmation, mais un intérêt pour l'outil informatique.
%% Cell type:markdown id: tags:
## 2. Exemples d'applications <a name="exemples"></a>
Vous utilisez certainement des programmes de traitement automatique des langues, quotidiennement ou presque :
1. Traduction automatique : [Google Translate](https://translate.google.fr/), [DeepL](https://www.deepl.com/translator), [Systran](https://demo-pnmt.systran.net/translationTools/text)
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
1. Agent conversationnel : ChatGPT
%% Cell type:markdown id: tags:
## 3. Exemple de programme... <a name="programme"></a>
... Pour jouer au jeu du pendu (Source : https://www.apprendre-en-ligne.net/pj/pendu/pendu.py):
%% Cell type:code id: tags:
``` python
from random import choice
liste_mots = ["abricot", "ail", "aliment", "ananas", "banane", "bifteck", "café", "carotte",
"cerise", "chocolat", "chou", "citron", "citrouille", "clémentine", "concombre",
"coquillage", "corbeille", "crabe", "crevette", "endive", "farine", "fraise",
"framboise", "fromage", "fruit", "gâteau", "haricot", "huile", "légume", "marchand",
"melon", "monnaie", "navet", "noisette", "noix", "nourriture", "oignon", "orange",
"panier", "pâtes", "pêche", "persil", "petit pois", "poire", "poireau", "pomme",
"pomme de terre", "prix", "prune", "queue", "raisin", "riz", "salade", "sucre",
"thé", "tomate", "viande", "vin", "acheter", "ajouter", "coûter", "payer", "peser",
"rendre", "vendre", "cher", "léger", "lourd", "plein"]
"pomme de terre", "prix", "prune", "raisin", "riz", "salade", "sucre", "peser",
"thé", "tomate", "viande", "vin", "acheter", "ajouter", "coûter", "payer", "rendre",
"vendre", "cher", "léger", "lourd", "plein"]
mot = choice(liste_mots) # prend au hasard un mot dans la liste
mot = mot.upper() # mot en majuscules
print("Bienvenue dans le jeu du pendu")
mot_devine = "*" * len(mot)
print(mot_devine)
nbr_essais = 0
# Tant que le mot n'a pas été trouvé
while mot_devine != mot:
lettre = input("Entrez une lettre ou '?' pour abandonner : ")
lettre = lettre[0] # évite des erreurs si un mot est entré au lieu d'une lettre
if lettre == '?':
print(f'Le mot était {mot}')
break
lettre = lettre.upper()
for i in range(len(mot)):
if lettre == mot[i]:
mot_devine = mot_devine[:i] + lettre + mot_devine[i+1:]
print(mot_devine)
nbr_essais += 1
if mot == mot_devine:
print('Bravo ! Le mot', mot, 'a été trouvé en', nbr_essais, 'coups')
```
%% Cell type:markdown id: tags:
## 4. La programmation <a name="programmation"></a>
### 4.A. 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.
### 4.B. 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 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.
### 4.C. 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.
### 4.D. 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.
### 4.E. 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)
* Langage réputé pour faciliter la qualité et la maintenabilité des programmes
* 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 très populaire :
<img src = "https://git.unistra.fr/dbernhard/proghumanum/-/raw/master/img/PythonPopularity.png" />
Source : [http://pypl.github.io/PYPL.html?country=FR](http://pypl.github.io/PYPL.html?country=FR)
%% Cell type:markdown id: tags:
## 5. Premiers programmes <a name="premiers"></a>
Testez l'instruction ci-dessous, soit en :
- Utilisant le raccourci `CTRL+Entrée`
- Utilisant le raccourci `SHIFT+Entrée` (dans ce cas, la cellule suivante est séléectionné après l'exécution)
- Cliquant sur `Exécuter/Run`
%% Cell type:code id: tags:
``` python
print("Bonjour tout le monde !")
```
%% Cell type:markdown id: tags:
A votre avis, que fait la commande `print` ?
Exécutez maintenant l'instruction ci-dessous :
%% Cell type:code id: tags:
``` python
print("Bonjour tout le monde !"
```
%% Cell type:markdown id: tags:
Il manque une parenthèse fermante dans l'instruction ci-dessus, ce qui provoque une **erreur**. Lorsqu'on écrit un programme, il faut être très rigoureux·se : il suffit d'une faute d'orthographe, d'un caractère mal placé ou manquant pour que le programme ne fonctionne pas. Heureusement, le message d'erreur vous renseigne sur le type de problème et son emplacement : il faut alors lire attentivement ce message pour trouver où se situe l'erreur et la corriger.
%% Cell type:markdown id: tags:
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 la commande 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.
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment