Champ Valeur
Auteur·e Élise
Édition 2023-10-17
Durée 1 sessions
Taille des équipes 1 personne
Rendu via git, dépôt $YEAR_ep_c1, droits en lecture à delivery_collector

Évaluation

Les exercices de ce chapitre permettent de valider les compétences suivantes du module :

  • N1 compiler un programme, avec les drapeaux d’avertissements
  • N2 écrire un programme qui n’admet pas d’arguments, écrire un main sans les arguments du programme
  • N3 sortir avec un code, contrôler le code de sortie d’un programme
  • N4 imprimer une succession de caractères avec tc_putchar, en ayant bien recopié la fonction dans son code, avec l’inclusion et en appellant la fonction depuis son main
  • N5 exprimer un caractère (une lettre, un chiffre, un symbole ou un caractère spécial) entre apostrophes

Ce barème est un témoin à but informatif de votre compréhension du chapitre, il était utilisé par le passé et est conservé comme référence :

Critère Points
Dépôt git créé 3
Droits à delivery_collector en lecture 3
hello.txt 4
return 189 3
print_b 3
print_digits 4
Total des critères 20
Note maximale 20

Règlement

La réalisation de cet exercice est assujettie aux règles en vigueur dans l’école en matière de triche et de normalisation. Tricher vous expose à de graves sanctions.

Synopsis

Votre objectif est d’apprendre à rendre votre travail sur la forge logicielle git vos identifiants de connexion sur celle-ci sont les mêmes que pour vous connecter en SSH.

Pour rendre votre travail il y a plusieurs étapes à suivre :

  • vous connecter sur la forge
  • créer un dépôt avec le nom correct
  • aller dans les paramètres du dépôt, dans collaborateurs et ajouter delivery-collector avec les droits en lecture
  • cloner le dépôt vide sur votre session
  • y ajouter le code que vous voulez rendre
  • git add vos_fichiers_à_rendre, git commit -m "votre_message_de_commit"
  • git push -u origin main

Pour pouvoir cloner en SSH, et ainsi ne pas avoir à renseigner votre mot de passe à chaque push/pull, il va falloir créer une clé ssh avec ssh-keygen depuis le serveur (equinox) et ajouter la clé publique dans vos paramètres sur la forge logicielle.

Votre deuxième objectif pour aujourd’hui, c’est d’écrire vos premiers programmes en C, et de les déposer sur la forge logicielle.

Étapes GIT

1. Serveur de travail

Assurez-vous d’être connectés au serveur de travail. Si dans votre invité de commande il est déjà écrit votre_login@equinox, c’est que vous êtes connectés. Sinon faites ssh equinox dans un terminal.

2. Configuration SSH pour la forge

Afin de communiquer avec la forge par SSH. On va générer, depuis votre session sur le serveur, une paire de clé SSH.

Utilisez la commande suivante :

ssh-keygen

Elle va vous permettre de générer une paire de clés SSH sur le serveur.

Vérifiez le nom de la clé qui fini en .pub avec :

ls ~/.ssh

Faites la commande suivante, en remplaçant id_ed25519.pub par le nom de votre clé publique si il est différent, pour afficher votre clé publique :

cat ~/.ssh/id_ed25519.pub

Connectez-vous sur la forge logicielle git, allez dans vos paramètres puis dans vos clés SSH.

Screenshot from 2023-10-17 09-27-26.png

Screenshot from 2023-10-17 09-27-43.png

Ajoutez une clé, et collez le contenu de votre id_ed25519.pub (ou de votre fichier .pub avec une autre nom, le cas échéant) dans la boite de texte.

N’oubliez pas de valider.

3. Création du dépôt

En haut à droite sur la forge vous avez un bouton + avec lequel vous pouvez créez un dépôt, il vous amène sur un formulaire de création de dépôt.

  • Donnez à votre dépôt le nom indiqué dans le cartouche du sujet.
  • Rendez votre dépôt privé.
  • Vous pouvez choisir le .gitignore pour le langage “C”.
  • Puis valider tout en bas.

4. Droits de correction

Pour la correction, vous devez donner les droits en lecture sur votre dépôt a un utilisateur précis : delivery-collector.

Pour ce faire, allez dans les paramètres du dépôt, dans les collaborateurs, entrez le nom de delivery-collector, puis validez.

Pasted image 20231017095142.png

Mettez ses droits en lecture seule.

Pasted image 20231017095441.png

5. Clonage

Pour travailler sur votre dépôt, il faut que vous le récupériez depuis votre session sur le serveur.

Commencez par copier l’adresse de clonage “SSH” que vous donne la forge. Pasted image 20231017094710.png

Dans votre terminal, allez dans le dossier Delivery puis faites :

git clone addresse_de_clonage

Après avoir cloné le dépôt, il vous suffit de cd dedans.

6. Éditer des fichiers avec neovim

Avez neovim, créez un fichier hello.txt.

Pour créer un fichier hello.txt avec nvim, il suffit de faire :

nvim hello.txt

Les raccourcis clavier que vous devez apprendre sur vim sont :

  • i pour passer en mode d’insertion
    • esc pour sortir du mode d’insertion
  • en mode normal :
    • :w sauvegarder ;
    • :q quitter ;
    • :wq sauvegarder et quitter ;
    • :e NOM_DE_FICHIER choisir un nouveau fichier à créer ou a ouvrir ;
  • ctrl+c annuler un raccourci ou une commande que vous avez commencé de taper.

Dans le fichier hello.txt écrivez :

hello world!

Sauvegardez et quittez.

7. Identité git

Créez le fichier ~/.gitconfig avec le contenu suivant :

[user]
	name = Prénom Nom
	email = login@edu.ecole-89.com
[init]
	defaultBranch = main

8. add, commit et push

À nouveau dans votre dépôt, pour que votre fichier soit suivi par git, il faut commencer par l’ajouter à git avec :

git add hello.txt

On peut afficher les fichiers modifiés avec git status. La commande affiche, l’état des fichiers modifiés :

  • s’il sont suivis par git et ajoutés ;
  • s’il sont suivis par git mais pas encore ajoutés au prochain commit ;
  • s’il ne sont pas suivis.

Après chaque changement d’un fichier que l’on souhaite déposer sur git, il faut le add.

Pour sauvegarder l’état des fichiers ajoutés dans l’historique git de votre dépôt (pour pouvoir le push), il faut faire un commit.

git commit -m "votre_message"

Après avoir fait un commit vous devez push vos changement locaux vers le serveur avec la commande :

git push

Premiers programmes en C

Pour faire vos premiers programmes, commencez par regarder les vidéos de cours associées sur MS Teams dans “Support de Cours”, “Chapitre 1 partie 2”.

return 189

Fichier à rendre : return_189.c

Écrivez un programme qui sort avec le code 189. Utiliser nvim pour créer et éditer votre fichier.

Exemple de test effectué à la correction :

$ gcc return_189.c
$ ./a.out
$ echo $?
189

Fichier à rendre : print_b.c

Fonction·s autorisée·s : write

Écrivez un programme qui écrit la lettre b suivi d’un retour à la ligne sur la sortie standard.

Pour afficher une lettre, je vous donne une fonction, qui prend en paramètre la lettre (ou le caractère) que vous voulez afficher. Copiez cette fonction en haut du fichier print_b.c que vous allez rendre.

#include <unistd.h>

void tc_putchar(char c)
{
    write(1, &c, 1);
}

Dans votre fonction main utilisez tc_putchar pour afficher la lettre et le retour à la ligne.

Exemple de test :

$ gcc print_b.c
$ ./a.out
b
$ 

Fichier à rendre : print_digits.c

Fonction·s autorisée·s : write

Écrivez un programme qui écrit tous les chiffres de 0 à 9 sur la sortie standard suivi d’un retour à la ligne.

Copier l’extrait de code avec tc_putchar de l’exercice précédent, et mettez le au début de votre fichier print_digit. Utilisez tc_putchar dans votre fonction main pour afficher les caractères.

Exemple de test :

$ gcc print_digits.c
$ ./a.out
0123456789
$