Université Paris-Saclay

L3 et Magistère 1ère année de Physique Fondamentale

Cours de langage C appliqué à la physique 2024-2025

Bartjan van Tent


Dernière mise à jour : lundi 17/03/2025

Travail personnel février - mars 2025

Consultez les sujets proposés ici :

Dépot des projets

La date limite pour le dépot des projets est le jeudi 27 mars à 18h00.

Les projets doivent être déposés sur e-Campus, dans Cours du S5 - Informatique, activité Devoir Projet informatique.
Il faut strictement adhérer aux règles suivantes concernant le nom et le format du fichier à déposer.

Le nom doit être de la forme suivante : Projet_Nom_Prenom.tar.gzNom et Prenom sont à remplacer par votre nom et prénom, sans accents ni traits d'union éventuels. Exemple : si votre prénom et nom sont Xavier-Marie Sérénité, le nom de votre fichier est Projet_Serenite_XavierMarie.tar.gz.
(Par contre, le mot "Projet" reste inchangé dans le nom du fichier, vous ne le remplacez pas.)

Tous les fichiers de votre projet doivent être regroupés dans un seul fichier .tar, puis ce fichier doit être comprimé avec gzip. Vous créez le fichier .tar avec la commande suivante (à exécuter dans le répertoire où se trouvent vos fichiers) :

tar cvf Projet_Nom_Prenom.tar liste_de_fichiers

liste_de_fichiers est une liste de tous vos fichiers (utiles) du projet, séparés par des espaces. Exemple : si vous (Xavier-Marie Sérénité) voulez inclure les fichiers Projet.cpp et valeurs.dat ainsi que tous les fichiers du sous-répertoire figures, il faut taper :

tar cvf Projet_Serenite_XavierMarie.tar Projet.cpp valeurs.dat figures

Attention : le nom du fichier .tar se trouve directement après les "cvf" et avant les autres noms de fichiers. Il ne faut pas se tromper dans cet ordre, sinon vous risquez de vous faire écraser un fichier.
Enfin vous comprimez le fichier .tar avec la commande :

gzip Projet_Nom_Prenom.tar

ce qui crée le fichier Projet_Nom_Prenom.tar.gz à déposer sur e-Campus.
La création du fichier .tar.gz selon les instructions ci-dessus est obligatoire, même si vous n'avez qu'un seul fichier .cpp à soumettre.
Attention : la taille de votre fichier .tar.gz ne doit pas dépasser les 10 Mo.
Vous pouvez vérifier le contenu du fichier .tar.gz avec la commande :

tar ztvf Projet_Nom_Prenom.tar.gz

N'oubliez pas de vérifier (plusieurs fois !) que tous les fichiers dont vous aurez besoin pour montrer et exécuter votre programme pendant l'examen oral sont inclus dans le fichier .tar.gz. L'utilisation d'autres fichiers pendant l'examen oral n'est pas autorisée.
Attention : si vous avez choisi un sujet libre, il faut inclure dans la soumission aussi un fichier .txt ou .pdf décrivant le sujet.

Examens oraux

Les oraux auront lieu les mardi 1er, 8 et 15 avril. Les dates et heures précises de votre passage se trouvent sur la page e-Campus du cours.
Les étudiants qui ne sont pas disponibles à l'heure prévue (pour une raison légitime) doivent immédiatement contacter leur examinateur.

Les oraux auront lieu dans vos salles d'informatique habituelles. Pendant ces oraux vous utiliserez les ordinateurs du magistère (dans un répertoire spécial pour l'oral) et non pas votre ordinateur portable. Il faut donc vérifier que votre projet s'exécute bien sur les ordinateurs du magistère même si vous avez l'habitude de travailler sur votre ordinateur portable.

Travaux dirigés

Transparents de cours

(Les chapitres vont apparaître au fur et à mesure que le cours avance.)

Poly de cours (écrit par François Naulin)

(Je n'ai pas recompilé les chapitres individuels qui n'ont pas changé, c'est donc normal de voir des dates de 2021.)
  1. Introduction
  2. Bases Linux, premier programme en C, compilation, exécution
  3. Représentation des nombres entiers et réels en binaire
  4. Variables, constantes, types, opérateurs
  5. Tests et boucles
  6. Entrées, sorties, fichiers, en C++
  7. Fonctions
  8. Adresses, pointeurs
  9. Tableaux dynamiques
  10. Générateur aléatoire uniforme sur [0,1], applications
  11. Introduction à la programmation de la résolution numérique d'équations différentielles par les méthodes d'Euler et de Runge-Kutta
  12. Structures
  13. Fichiers sources, compilation séparée, visibilité
Poly complet (contenant tous les chapitres) : cliquer ici

Les chapitres 3, 12 et 13, ainsi que les commandes Linux et le graphisme avec Python matplotlib, sont hors programme en ce qui concerne l'examen écrit.

Compléments de cours (hors programme, pas à jour)

  1. Tableaux standards du C
  2. Rapport entre tableaux standards, adresses et pointeurs
  3. Entrées, sorties, fichiers, en C strict
  4. Chaînes de caractères, en C strict

Graphisme avec Python Matplotlib

  1. Notice écrite pour ce cours
  2. Site de Matplotlib

NOUVEAU ! Pour travailler chez soi sur un ordinateur sous Windows

En attendant que la connexion à distance sur les ordinateurs du Magistère soit de nouveau possible, voici une manière simple pour travailler chez vous sur un ordinateur sous Windows en utilisant Cygwin, qui ressemble le plus possible à la façon de travailler dans les salles du Magistère.
  1. Télécharger le fichier setup-x86_64.exe. Mettez-le à un endroit sûr dont vous vous rappelez, car vous en aurez besoin non seulement pour installer Cygwin initialement, mais aussi plus tard pour mettre votre installation à jour ou pour installer des paquets supplémentaires.
  2. Lancer le programm setup-x86_64.exe. Pour les premières questions vous pouvez accepter les choix par défaut. Dans la liste des mirroirs vous choisissez celui qui vous convient, par exemple un site localisé en France.
  3. Ensuite vous arrivez sur l'écran où il faut choisir les paquets à installer. Mettez-vous dans la vue "Categories" si ce n'est pas déjà le cas et dépliez "All" pour voir les catégories. En plus des paquets installés par défaut, il faudra installer de la catégorie "Devel" le paquet "gcc-g++" et de la catégorie "Editors" le paquet "emacs-w32". (Pour les installer il faut changer le mot "Skip" en la dernière version non pas indiquée comme "(test)".) Vous pouvez toujours relancer setup-x86_64.exe plus tard pour installer des paquets en plus.
  4. Continuez et enfin patientez pendant l'installation.
Maintenant vous pouvez lancer une fenêtre terminal Cygwin soit à partir du menu de Windows, soit en cliquant sur l'icône sur le bureau (si vous n'avez pas changé ces choix pendant l'installation). Après ça fonctionne comme sur les ordinateurs du Magistère : vous lancez emacs avec la commande "emacs votre_programme.cpp &" et vous pouvez utiliser les autres commandes Linux comme "ls", "cp", "mv", "mkdir" etc.
Pour compiler et exécuter votre programme, vu que "ccc" est une commande spéciale des ordinateurs du Magistère que vous n'avez donc pas ici, il faut utiliser pour compiler

g++ -Wall votre_programme.cpp

ce qui crée un fichier exécutable appelé "a.exe". Vous l'exécutez ensuite avec la commande

./a

L'option "-Wall" est pour que le compilateur n'affiche pas seulement les erreurs de compilation, mais aussi des avertissements s'il pense que quelque chose n'est pas bonne, comme sur les ordinateurs du Magistère.
Comment faire ensuite pour les fonctions de la bibliothèque du Magistère ?
En principe il devrait être possible de copier tous les fichiers source de la bibliothèque du Magistère, qui se trouvent dans le répertoire /public/mphyo/bibli_fonctions/ , et de la compiler sous Cygwin et utilisant "make" (il faut alors installer le paquet "make" de la catégorie "Devel"), mais je ne l'ai pas encore essayé pour tester.

Une solution plus simple, si vous n'utilisez que les fonctions "rk4" et "make_plot_py" de la bibliothèque, est de copier-coller ces fonctions directement dans votre programme. Voici la fonction rk4.

Pour l'instant je n'ai pas encore réussi à faire fonctionner les graphiques de Python matplotlib sous Cygwin, donc la fonction "make_plot_py" n'est pas encore utile. Si vous avez déjà une façon de faire des graphiques avec Python matplotlib sous Windows, vous pouvez pour votre projet simplement faire la partie Python à part en utilisant le fichier de résultats fourni par votre programme C (il n'est pas obligatoire d'utiliser make_plot_py pour faire appel au Python depuis le C).

Pour se connecter aux ordinateurs du Magistère depuis chez soi

NE FONCTIONNE PAS ACTUELLEMENT, DEPUIS LE PIRATAGE

Projets

Sujets d'examen avec corrigés

  1. Mars 2017 avec corrigé
  2. Mars 2018 avec corrigé
  3. Mai 2019 avec corrigé
  4. Mai 2021 avec corrigé
  5. Avril 2022 avec corrigé
  6. Mai 2023 avec corrigé
  7. Mai 2024 avec corrigé