Démarrer
CS50 IDE est un « environnement de développement intégré » basé sur le web qui vous permet de programmer « dans le nuage », sans installer aucun logiciel localement. En effet, CS50 IDE vous fournit votre propre « espace de travail » (c’est-à-dire un espace de stockage) dans lequel vous pouvez enregistrer vos propres fichiers et dossiers (alias répertoires).
Logging In
Rendez-vous sur ide.cs50.io et cliquez sur « Sign in with GitHub » pour accéder à votre CS50 IDE. Une fois votre IDE chargé, vous devriez voir que (par défaut) il est divisé en trois parties. En haut de l’IDE CS50 se trouve votre « éditeur de texte », où vous écrirez tous vos programmes. En bas, vous trouverez une « fenêtre de terminal » (bleu clair, par défaut), une interface de ligne de commande (CLI) qui vous permet d’explorer les fichiers et les répertoires de votre espace de travail, de compiler du code, d’exécuter des programmes et même d’installer de nouveaux logiciels. Et à gauche se trouve votre « navigateur de fichiers », qui vous montre tous les fichiers et dossiers actuellement dans votre IDE.
Débutez en cliquant à l’intérieur de votre fenêtre de terminal. Vous devriez constater que son « invite » ressemble à celle ci-dessous.
~/ $
Cliquez à l’intérieur de cette fenêtre de terminal, puis tapez
mkdir ~/pset1/
suivi de la touche Entrée afin de créer un répertoire (c’est-à-dire un dossier) appelé pset1
dans votre répertoire personnel. Faites attention à ne pas oublier l’espace entre mkdir
et ~/pset1
ou tout autre caractère d’ailleurs ! Gardez à l’esprit que ~
désigne votre répertoire personnel et que ~/pset1
désigne un répertoire appelé pset1
dans ~
.
À partir de maintenant, exécuter (c’est-à-dire lancer) une commande signifie la taper dans une fenêtre de terminal et appuyer sur Entrée. Les commandes sont « sensibles à la casse », alors assurez-vous de ne pas taper en majuscules quand vous voulez dire en minuscules ou vice versa.
Maintenant exécutez
cd ~/pset1/
pour vous déplacer dans (c’est-à-dire ouvrir) ce répertoire. Votre invite devrait maintenant ressembler à ce qui suit.
~/pset1/ $
Si ce n’est pas le cas, revenez sur vos pas et voyez si vous pouvez déterminer où vous vous êtes trompé.
Maintenant, exécutez
mkdir ~/pset1/hello
pour créer un nouveau répertoire appelé hello
à l’intérieur de votre répertoire pset1
. Puis exécutez
cd ~/pset1/hello
pour vous déplacer dans ce répertoire.
Devons-nous vous faire écrire votre premier programme ? Dans le menu Fichier, cliquez sur Nouveau fichier, et enregistrez-le (comme via l’option Enregistrer du menu Fichier) sous le nom de hello.c
à l’intérieur de votre répertoire ~/pset1/hello
. Procédez à l’écriture de votre premier programme en tapant précisément ces lignes dans le fichier :
#include <stdio.h>int main(void){ printf("hello, world\n");}
Notez comment CS50 IDE ajoute une « coloration syntaxique » (c’est-à-dire une couleur) au fur et à mesure que vous tapez, bien que le choix de couleurs de CS50 IDE puisse différer de celui de cet ensemble de problèmes. Ces couleurs ne sont pas réellement enregistrées dans le fichier lui-même ; elles sont simplement ajoutées par CS50 IDE pour faire ressortir certaines syntaxes. Si vous n’aviez pas enregistré le fichier en tant que hello.c
dès le départ, CS50 IDE ne saurait pas (par l’extension du nom de fichier) que vous écrivez du code C, auquel cas ces couleurs seraient absentes.
Listing Files
Puis, dans votre fenêtre de terminal, immédiatement à droite du prompt (~/pset1/hello/ $
), exécutez
ls
Vous devriez voir juste hello.c
? C’est parce que vous venez de lister les fichiers de votre dossier hello
. En particulier, vous avez exécuté (c’est-à-dire lancé) une commande appelée ls
, qui est un raccourci pour « liste ». (C’est une commande si fréquemment utilisée que ses auteurs l’ont appelée simplement ls
pour économiser les frappes de clavier). Vous comprenez ?
Compilation de programmes
Maintenant, avant de pouvoir exécuter le programme hello.c
, rappelez-vous que nous devons le compiler avec un compilateur (par exemple, clang
), le traduisant du code source en code machine (c’est-à-dire des zéros et des uns). Exécutez la commande ci-dessous pour faire cela:
clang hello.c
Et puis exécutez celle-ci à nouveau:
ls
Cette fois, vous devriez voir non seulement hello.c
mais aussi a.out
listés ? (Vous pouvez voir la même chose graphiquement si vous cliquez à nouveau sur cette icône de dossier.) C’est parce que clang
a traduit le code source dans hello.c
en code machine dans a.out
, qui se trouve être l’abréviation de « sortie assembleur », mais nous en reparlerons une autre fois.
Maintenant, exécutez le programme en exécutant ce qui suit.
./a.out
Bonjour, monde, en effet !
Nom des programmes
Maintenant, a.out
n’est pas le nom le plus convivial pour un programme. Compilons à nouveau hello.c
, en sauvegardant cette fois le code machine dans un fichier appelé, de manière plus appropriée, hello
. Exécutez le suivant.
clang -o hello hello.c
Faites attention à ne pas négliger un seul de ces espaces là dedans ! Puis exécutez à nouveau celle-ci :
ls
Vous devriez maintenant voir non seulement hello.c
(et a.out
d’avant) mais aussi hello
listé aussi ? C’est parce que -o
est un argument de ligne de commande, parfois connu comme un drapeau ou un commutateur, qui indique à clang
de sortir (d’où le o
) un fichier appelé hello
. Exécutez la commande ci-dessous pour essayer le programme nouvellement nommé.
./hello
Bonjour à nouveau!
Faire les choses plus facilement
Rappellez-vous que nous pouvons automatiser le processus d’exécution de clang
, en laissant make
comprendre comment le faire pour nous, nous épargnant ainsi quelques frappes au clavier. Exécutez ce qui suit pour compiler ce programme une dernière fois.
make hello
Vous devriez voir que make
exécute clang
avec encore plus d’arguments de ligne de commande pour vous ? Plus sur ceux-ci, aussi, une autre fois!
Maintenant exécutez le programme lui-même une dernière fois en exécutant ce qui suit.
./hello
Phew!
Getting User Input
Il suffit de dire que peu importe comment vous compilez ou exécutez ce programme, il n’imprime jamais que hello, world
. Personnalisons-le un peu, comme nous l’avons fait en classe.
Modifiez ce programme de telle sorte qu’il demande d’abord à l’utilisateur son nom, puis imprime hello, so-and-so
, où so-and-so
est son nom réel.
Comme précédemment, assurez-vous de compiler votre programme avec :
make hello
Et assurez-vous d’exécuter votre programme, en le testant plusieurs fois avec différentes entrées, avec :
./hello
Walkthrough
Hints
Vous ne vous souvenez pas comment demander à l’utilisateur son nom ?
Rappellez-vous que vous pouvez utiliser get_string
comme suit, en stockant sa valeur de retour dans une variable appelée name
de type string
.
string name = get_string("What is your name?\n");
Vous ne vous souvenez pas comment formater une chaîne de caractères ?
Vous ne vous souvenez pas comment joindre (c’est-à-dire, concaténer) le nom de l’utilisateur avec un message d’accueil ? Rappelez-vous que vous pouvez utiliser printf
non seulement pour imprimer, mais aussi pour formater une chaîne de caractères (d’où le f
dans printf
), comme dans l’exemple ci-dessous, où name
est un string
.
printf("hello, %s\n", name);
Utilisation d’un identificateur non déclaré?
En regardant l’exemple ci-dessous, peut-être d’autres erreurs ?
error: use of undeclared identifier 'string'; did you mean 'stdin'?
Rappellez-vous que, pour utiliser get_string
, vous devez inclure cs50.h
(dans lequel get_string
est déclaré) au sommet d’un fichier, comme avec:
#include <cs50.h>
Comment tester votre code
Exécutez ce qui suit pour évaluer la justesse de votre code utilisant check50
. Mais assurez-vous de le compiler et de le tester vous-même également !
check50 cs50/problems/2020/x/hello
Exécutez ce qui suit pour évaluer le style de votre code en utilisant style50
.
style50 hello.c
Comment soumettre
Exécutez ce qui suit, en vous connectant avec votre nom d’utilisateur et votre mot de passe GitHub lorsque vous y êtes invité. Par sécurité, vous verrez des astérisques (*
) à la place des caractères réels de votre mot de passe.
submit50 cs50/problems/2020/x/hello
.