---
# System prepended metadata

title: 'OIC - Cours 2 : programmation collaborative'

---

# Oic_02 L1-Z : semaine du 03 février 2024

Exercice de formalisation des programmes en binôme. 


## TP : Calcul de moyenne

*Situation* : l'évaluation dans le cours de programmation fonctionnelle se passe de la manière suivante : l'enseignant.e calcule la moyenne des trois meilleures notes obtenues par chaque étudiant.e. Par ailleurs, pour valoriser la progression des étudiant.es, l'enseignant ajoute un point à la note finale si la moyenne des deux dernières notes est supérieure à la moyenne des deux premières. 

Ex : J. a eu les notes suivantes au cours du semestre :
notes : 12 11 14 13 12
note finale : 13 + 1 = 14.

**En binôme** : Écrire un programme qui donne calcule cette moyenne à partir des notes obtenues par les étudiant.es au cours du semestre. Les notes sont lues dans un fichier texte que vous devez créer. 

Binômes à renseigner ici : https://lite.framacalc.org/f4kbz3tt40-acno

==Avant de vous mettre à coder== :
- définissez vos besoins 
- envisagez tous les cas d'utilisation possibles 
- listez les tâches (et sous-tâches) à réaliser
- décidez d'un mode de fonctionnement avec votre binôme

==Puis, toujours avant de vous mettre à coder== :
- décidez des structures de données dont vous allez avoir besoin
- décidez des fonctions et éventuellement des modules que vous allez développer
- décrivez vos fonctions, par fichier :
(ici, la fonction `main` du programme `main.py`) 
``` 
Main.main()->rien
Description : fonction principale du programme de calcul de 
moyennes
Paramètres : ???
Valeur de retour : ???
```

:warning: ces étapes sont obligatoires : vous devez rendre avec votre programme un README.txt (ou README.md) qui explique le fonctionnement du programme et comment vous avez procédé pour travailler en équipe. Prenez donc soin de ==documenter== les obstacles, solutions, et choix qui se présentent à vous.



### Extension pour la semaine prochaine **à rendre pour le 06/03 à 20h**:

- l'un.e ajoute une interface de saisie au clavier : le programme demande à l'utilisateur/trice de saisir les notes des étudiant.es
- l'autre ajoute un (joli) affichage final qui donne les moyennes des étudiants classés par ordre alphabétique de nom de famille.

**4 binômes seront tirés au sort pour présenter ce qu'ils et elles ont fait et expliquer comment ils et elles ont fonctionné.**

\+ n'oubliez pas de remplir votre contrat pédagogique https://conpere.univ-paris8.fr

```
Millour_oic_TP2/
                src/programme.py
                test/test_vide.txt test_2_notes.tkt test_5_notes.txt test_doublon_nom.txt
                docs/
                README.txt[md]
                
                
---------------
README.md
---------------

# Tests 
test_vide.txt : le programme n'affiche rien
```

Test de la fonction de lecture de fichier en python : 

```python!
print("Premier test (affichage du contenu d'un seul bloc):\n")
f = open('test.txt', 'r')
contenu = f.read()
print(contenu)
f.close()

print("Deuxième test :\n")
with open('test.txt', 'r') as f:
    lignes = f.readlines()  # Retourne une liste

print("affichage de l'objet 'lignes'\n")
print(lignes)

print("affichage ligne par ligne\n")

i=0
for ligne in lignes:
    print(i)
    print(ligne)
    i+=1
```