Piscine 42 C00 : les exercices corrigés
Allez, on se jette dans le grand bain !
Le projet C00 est là pour te familiariser avec les bases de la programmation en langage C. Tu vas apprendre à manipuler les fonctions de base, les boucles, les conditions, et à gérer la sortie standard. Découvres les solutions détaillées et commentées pour le projet C00 de la Piscine de l’école 42.
C00 ex00 : ft_putchar
🎯 Objectif de l'exercice
L’objectif pour toi va être d’écrire une fonction qui permet d’afficher un caractère passé en paramètre. Cette fonction servira de base pour comprendre comment interagir avec les entrées/sorties en C, et plus précisément comment utiliser la fonction write
pour afficher du texte.
🎓 Notions essententielles
- Prototypes de fonctions en C : comprendre comment déclarer une fonction en C.
- La fonction
write
: apprendre à utiliser cette fonction pour écrire des données, ici un caractère, dans la sortie standard (l’écran).
💻 Fonctionnement de ft_putchar
La fonction doit être déclarée de la manière suivante : void ft_putchar(char c);
.
👉 Cela signifie que la fonction ne retourne rien (void
) et prend un seul paramètre de type char
.
La fonction write
est utilisée pour afficher un caractère. La syntaxe à retenir pour cet exercice est simplement : write(1, &c, 1);
write
prend trois paramètres : le premier pour spécifier où afficher (ici l’écran), le second pour dire quoi afficher (le caractère passé en paramètre), et le troisième pour indiquer combien de caractères à afficher (ici 1).
✅ Le code de la fonction :
void ft_putchar(char c)
{
write(1, &c, 1);
}
💡Fonction Main pour tester ft_putchar
Pour être sûr que ta fonction ft_putchar
remplisse son rôle, tu peux rajouter une fonction main
. C’est une bonne pratique pour t’assurer que ta fonction fonctionne correctement.
Attention, le sujet spécifie que tu dois rendre une fonction et non pas un programme. Une fois que tu as testé ta fonction, tu peux placer ton main()
entre commentaires pour qu’elle ne soit pas lue par la moulinette et que seule ta fonction ft_putchar
soit testée.
#include
void ft_putchar(char c)
{
write(1, &c, 1);
}
int main(void)
{
ft_putchar('a');
}
C00 ex01 : ft_print_alphabet
🎯 Objectif de l'exercice ft_print_alphabet
L’objectif de cet exercice est de créer une fonction qui affiche toutes les lettres de l’alphabet en minuscule, dans l’ordre croissant, sur une seule ligne. On va utiliser une boucle pour répéter une opération simple plusieurs fois.
🎓 Notions essententielles
- Les boucles en C : La boucle
while
oufor
(bien quefor
soit interdit par la Norme ‼️) pour parcourir les lettres de l’alphabet. - Les types de données
char
pour comprendre que les caractères sont représentés par des valeurs numériques en ASCII. - La fonction
write
déjà vue dans l’exercice précédent, que l’on utilise ici pour afficher chaque lettre.
💻 Fonctionnement de ft_print_alphabet
Prototype de la fonction :
La fonction doit être déclarée comme suit : void ft_print_alphabet(void);
.
void ft_print_alphabet(void);
👉 Elle ne prend aucun paramètre et ne retourne rien.
Initialisation du caractère de départ :
En C, les caractères sont représentés par des valeurs ASCII. Par exemple, la lettre 'a'
correspond à la valeur ASCII 97 et 'z'
à 122.
On commence donc par initialiser une variable char
à 'a'
.
char letter;
letter = 'a';
💬 Remarque : on pourrait très bien déclarer et initialiser la variable sur une seule ligne : char letter = ‘a’ … sauf que la norme de 42 ne le permet pas ‼️
Création de la boucle :
Pour afficher toutes les lettres de l’alphabet, on va utiliser une boucle while
. Elle doit continuer tant que la variable char
n’a pas dépassé 'z'
.
Affichage des caractères :
À chaque itération de la boucle, la fonction write
est appelée pour afficher la lettre actuelle. Ensuite, la variable char
est incrémentée pour passer à la lettre suivante.
✅ Le code de ft_print_alphabet :
void ft_print_alphabet(void)
{
char letter;
letter = 'a';
while (letter <= 'z')
{
write(1, &letter, 1);
letter++;
}
}
💡 Fonction Main pour tester ft_print_alphabet
#include
int main(void)
{
ft_print_alphabet ();
return (0);
}
C00 ex02 : ft_print_reverse_alphabet
🎯 Objectif de l'exercice ft_print_reverse_alphabet
Ici, l’objectif est de créer une fonction qui affiche toutes les lettres de l’alphabet en minuscule, mais cette fois-ci dans l’ordre décroissant, sur une seule ligne. L’idée est la même que pour l’exercice précédent (utiliser une boucle) mais cette fois on va mettre en place une décrémentation.
🎓 Notions essententielles
- Les boucles : utilisation d’une boucle
while
pour parcourir les lettres de l’alphabet en ordre décroissant. - Les types de données
char
et comprendre que les caractères peuvent être décrémentés, et qu’ils suivent l’ordre ASCII. - La fonction
write
: déjà utilisée dans les exercices précédents pour afficher les caractères.
💻 Fonctionnement de ft_print_reverse_alphabet
Prototype de la fonction :
La fonction doit être déclarée comme suit : void ft_print_reverse_alphabet(void);
. Elle ne prend aucun paramètre et ne retourne rien.
Initialisation du caractère de départ :
Ici, on va commencer par la dernière lettre de l’alphabet, 'z'
, qui correspond à la valeur ASCII 122.
Création de la boucle :
On utilise une boucle while
pour parcourir les lettres de l’alphabet de 'z'
à 'a'
. La boucle continue tant que la variable char
n’a pas atteint 'a'
.
Affichage des caractères :
À chaque itération de la boucle, la fonction write
est appelée pour afficher la lettre actuelle. Ensuite, la variable char
est décrémentée pour passer à la lettre précédente.
✅ Le code de ft_print_reverse_alphabet :
void ft_print_reverse_alphabet(void)
{
char letter;
letter = 'z';
while (letter >= 'a')
{
write(1, &letter, 1);
letter--;
}
}
💡 Fonction Main pour tester ft_print_alphabet
#include
int main(void)
{
ft_print_reverse_alphabet();
return (0);
}
C00 ex03 : ft_print_numbers
🎯 Objectif de l'exercice ft_print_numbers
Dans cet exercice, on te demande de créer une fonction qui affiche tous les chiffres de 0 à 9 sur une seule ligne, dans l’ordre croissant.
🎓 Notions essententielles
- Les boucles en C : Utilisation d’une boucle
while
pour parcourir les chiffres de 0 à 9. - Les types de données
char
: pour comprendre que les chiffres peuvent être représentés en tant que caractères (par exemple,'0'
correspond à 48 en ASCII). - La fonction
write
: déjà utilisée dans les exercices précédents pour afficher les caractères.
💻 Fonctionnement de ft_print_numbers
Prototype de la fonction :
La fonction doit être déclarée comme suit : void ft_print_numbers(void);
. Elle ne prend aucun paramètre et ne retourne rien.
Initialisation du caractère de départ :
Ici, on va commencer par le caractère représentant le chiffre '0'
, qui correspond à la valeur ASCII 48.
Création de la boucle :
On se sert d’une boucle while
pour parcourir les chiffres de '0'
à '9'
. Elle doit continuer tant que la variable char
n’a pas dépassé '9'
.
Affichage des chiffres :
À chaque itération de la boucle, la fonction write
est appelée pour afficher le chiffre actuel. Ensuite, la variable char
est incrémentée pour passer au chiffre suivant.
✅ Le code de ft_print_numbers :
void ft_print_numbers(void)
{
char number;
number = '0';
while (number <= '9')
{
write(1, &number, 1);
number++;
}
}
💡 Fonction Main pour tester ft_print_numbers
#include
int main(void)
{
ft_print_numbers ();
return (0);
}