InscriptionConnexion
Bienvenue sur le topic d’entraide en programmation !

Esprit Peer-To-Peer / Autonomie / Compréhension avant solution

Première semaine d'exo ->
[b]Module C00 : Les Fondations | Shell du Commençant[/b]

Objectif : Maîtriser les bases du langage C et l'application stricte de la Norme.

Introduction : Plonge dans le grand bain.
Bienvenue sur ton premier véritable défi. Ce module est ta porte d'entrée dans l'univers du C, le langage qui propulse le monde et qui te propulsera, toi, vers la maîtrise. Ici, tu vas apprendre à manier les bases du langage tout en respectant une discipline de code stricte : la Norme.
Oublie les facilités, les raccourcis ou les habitudes que tu as pu développer. On réapprend à coder, pour écrire un code propre, lisible et performant. Ton unique guide sera ton cerveau, les man pages, et tes pairs.
Prépare-toi à être autonome. Prépare-toi à la Norme.

Règle d'Or :
1. LA NORME EST IMPÉRATIVE :

TOUS tes fichiers doivent respecter la Norme. La norminette est ton juge impitoyable. Tout manquement sera sanctionné, y compris les règles non vérifiées par la norminette mais mentionnées dans le document officiel de la Norme.

Fonctions courtes : Maximum 25 lignes de code (hors accolades de fonction).

Paramètres limités : Maximum 4 paramètres par fonction.

Variables contenues : Maximum 5 variables déclarées par fonction.

Fichiers concis : Maximum 5 fonctions par fichier .c.

Toutes les règles de Naming, Formatting, Headers, etc., s'appliquent.

2. INTERDICTIONS FORMELLES (Relire la section "Forbidden Stuff!" de la Norme) :

Tu as l'interdiction ABSOLUE d'utiliser :

Les boucles for

Les boucles do-while

Les instructions switch

Le mot-clé case (inclus dans switch)

Les opérateurs ternaires (?
:)

Les goto

Les VLA (Variable Length Arrays)

Toute fonction de la librairie standard qui n'est pas explicitement autorisée. Cela inclut, mais n'est pas limité à : printf, puts, malloc, free, strlen (si tu n'as pas encore fait ft_strlen), etc.

3. TON SEUL OUTIL D'AFFICHAGE : _putchar

Pour toute sortie vers la console, tu devras utiliser une fonction void _putchar(char c);. Cette fonction te sera fournie, ou tu devras l'écrire toi-même (ex00). Elle ne fait qu'afficher UN SEUL CARACTÈRE. Tu devras la réutiliser pour toutes tes affiches.

4. COMPILATION :

Ton code doit compiler sans erreur ni avertissement avec gcc -Wall -Wextra -Werror.

5. STRUCTURE :

Chaque exercice doit être dans son propre dossier exXX (ex: ex00/ft_putchar.c, ex01/ft_print_alphabet.c).

6. ESPRIT ONCHE :

Cherche par toi-même, expérimente, débogue.

Demande de l'aide à tes pairs, mais ne copie JAMAIS. Expliquer une solution est aider, donner une solution est tricher.






Vous devez être au niveau 1 pour voir ce message.




Vous devez être au niveau 2 pour voir ce message.


Vous devez être au niveau 3 pour voir ce message.



Vous devez être au niveau 4 pour voir ce message.



Vous devez être au niveau 5 pour voir ce message.



Vous devez être au niveau 6 pour voir ce message.



Vous devez être au niveau 7 pour voir ce message.



Vous devez être au niveau 8 pour voir ce message.



Validation :
Ton travail sera évalué par tes pairs. Sois exigeant avec toi-même, ton code doit être parfait. Respecte la Norme à la lettre, chaque détail compte.
N'oublie pas :

1. Fais un git add de tous tes fichiers. (Il est préférable que tu te crée un copte github pour que nous puissions t'évaluer)
2. Fais un git commit -m "Ex00 to Ex07 ready" (ou un message pertinent).
3. Fais un git push vers ta branche de travail (souvent main ou master pour les premiers modules).

- Bon courage, et que la Norme soit avec toi.
:2loin_noel4:


📍 Objectif du topic :


Ce topic est dédié à l’apprentissage et au perfectionnement du langage de programmation en C pour l'instant (j'ajouterai à l'avenir d'autres langages):

Comprendre → Tester → Corriger → Recommencer



1. Apprendre par soi-même :
Il n’y a pas de cours classiques. Tu reçois un objectif, pas la solution. Le but est d’apprendre à chercher, comprendre et résoudre des problèmes par toi-même.

2. Apprendre en pratiquant :
Tu apprends en codant réellement. Les erreurs, les bugs et les crashs font partie intégrante de
l’apprentissage. Chaque erreur est une source de compréhension.


3. L’échec fait partie du processus
Rater un projet ne signifie pas échouer définitivement. L’échec est vu comme une étape
normale pour progresser

4. Apprendre avec les autres (peer-learning)
L’entraide est centrale. Tu apprends en expliquant et en étant aidé. Cependant, donner
directement la solution est déconseillé : on guide, on n’assiste pas.

5. La rigueur du code
Le code doit être propre, lisible et bien structuré. La gestion de la mémoire est essentielle et
aucune fuite n’est tolérée.

6. Pourquoi le langage C ?
Le C permet de comprendre le fonctionnement interne d’un ordinateur : mémoire, pointeurs,
compilation. Une fois ces bases acquises, les autres langages deviennent plus accessibles.

7. État d’esprit attendu
• Patience
• Curiosité
• Persévérance
• Humilité face à l’erreur

Personne n’attend que tu sois bon dès le départ. On attend que tu progresses.

Outil recommandé pour débuter (sans installation ni inscription) : www.onlinegdb.com https://www.onlinegdb.com/
Voici une norme que vous pouvez utiliser

Pour pouvoir vous faciliter la vie et vous épargner le spoiler en dessous je vous invite a installer ce plug_in sur votre vscode : github.com https://github.com/42school/norminette
Norm
1. Les Interdictions Majeures (À ne JAMAIS faire)

Le point le plus crucial. L'utilisation des éléments suivants est strictement interdite et entraînera un échec immédiat :

* Boucles : for, do...while

* Structures de contrôle : switch, case

* Sauts : goto

* Opérateurs ternaires : condition ? val1 : val2

* Tableaux de taille variable (VLA - Variable Length Arrays)

Utilisez uniquement des boucles while et des structures if-else.

2. Mise en Forme et Indentation

* Indentation : Onglets réels (tabulations) d'une largeur de 4 caractères. N'utilisez PAS 4 espaces. Configurez votre éditeur en conséquence.

* Lignes : 80 colonnes maximum (commentaires inclus).

* Fonctions : 25 lignes maximum (sans compter les accolades de la fonction).

* Accolades { } : Toujours seules sur leur propre ligne (sauf pour les déclarations de struct/enum/union).

* Déclarations : Toutes les variables doivent être déclarées au tout début de la fonction. Une ligne vide doit séparer le bloc de déclaration du reste du code.

* Pointeurs : L'astérisque * doit être collé au nom de la variable, pas au type (char *ptr; et non char* ptr;).

* Espacement :

Un espace autour des opérateurs (=, +, ==, etc.).

Un espace après chaque mot-clé C (if, while, return), sauf les types (int, char...).

Pas d'espaces en fin de ligne.

Jamais deux lignes vides ou deux espaces consécutifs.

3. Fonctions

* Nombre : 5 fonctions maximum par fichier .c.

* Paramètres : 4 paramètres nommés maximum. Si une fonction ne prend aucun paramètre, utilisez void (int my_func(void);).

* Variables : 5 variables déclarées maximum par fonction.

* Retour de fonction : La valeur de retour doit être entre parenthèses.

cDownloadCopy code// Correct

return (0);

// Incorrect

return 0;

* Séparation : Les fonctions doivent être séparées par exactement une ligne vide.

4. Nommage (Naming)

* Style : snake_case (minuscules et underscores) pour tout : fichiers, variables, fonctions.

* Langue : Les noms doivent être clairs, explicites et en anglais (*)

* Préfixes spécifiques :

s_ pour les struct

t_ pour les typedef

u_ pour les union

e_ pour les enum

g_ pour les variables globales (const ou static uniquement).

* Variables globales : L'utilisation de variables globales non const ou non static est interdite.

5. Fichiers et Headers

* Header 42 : Chaque fichier (.c et .h) doit commencer par le header standard 42, avec vos informations (login, email, dates) à jour (*).

* Header Guards : Vos fichiers .h doivent être protégés contre la double inclusion. Si votre fichier s'appelle ft_piscine.h, le guard sera FT_PISCINE_H.

cDownloadCopy code#ifndef FT_PISCINE_H

# define FT_PISCINE_H

/* Contenu du header */

#endif

* Inclusions :

N'incluez pas de fichier .c.

N'incluez pas de headers inutilisés (*).

Placez les inclusions au tout début du fichier.

* Déclarations : Ne déclarez pas de struct dans un fichier .c (faites-le dans un .h).

6. Commentaires et Macros

* Commentaires :

Interdits à l'intérieur du corps des fonctions. Uniquement en fin de ligne ou sur leur propre ligne.

Doivent être utiles et en anglais (*).

Ne peuvent pas "justifier" du mauvais code (par ex., une fonction nommée f1 avec un commentaire expliquant ce qu'elle fait).

* Macros (#define) :

Noms entièrement en majuscules (MY_MACRO).

Uniquement pour des valeurs littérales ou constantes (ex: BUFFER_SIZE).

Les macros sur plusieurs lignes sont interdites.

Les macros servant à contourner la norme sont interdites.

7. Makefile

* Règles obligatoires : $(NAME), all, clean, fclean, re.

* all doit être la règle par défaut.

* Le Makefile ne doit pas recompiler si aucun fichier source n'a changé.

* Les fichiers sources doivent être listés explicitement (pas de *.c).

' OR '1' = '1'
il y a 3 mois
[b]Module C00 : Les Fondations | Shell du Commençant[/b]

Objectif : Maîtriser les bases du langage C et l'application stricte de la Norme.

Introduction : Plonge dans le grand bain.
Bienvenue sur ton premier véritable défi. Ce module est ta porte d'entrée dans l'univers du C, le langage qui propulse le monde et qui te propulsera, toi, vers la maîtrise. Ici, tu vas apprendre à manier les bases du langage tout en respectant une discipline de code stricte : la Norme.
Oublie les facilités, les raccourcis ou les habitudes que tu as pu développer. On réapprend à coder, pour écrire un code propre, lisible et performant. Ton unique guide sera ton cerveau, les man pages, et tes pairs.
Prépare-toi à être autonome. Prépare-toi à la Norme.

Règle d'Or :
1. LA NORME EST IMPÉRATIVE :

TOUS tes fichiers doivent respecter la Norme. La norminette est ton juge impitoyable. Tout manquement sera sanctionné, y compris les règles non vérifiées par la norminette mais mentionnées dans le document officiel de la Norme.

Fonctions courtes : Maximum 25 lignes de code (hors accolades de fonction).

Paramètres limités : Maximum 4 paramètres par fonction.

Variables contenues : Maximum 5 variables déclarées par fonction.

Fichiers concis : Maximum 5 fonctions par fichier .c.

Toutes les règles de Naming, Formatting, Headers, etc., s'appliquent.

2. INTERDICTIONS FORMELLES (Relire la section "Forbidden Stuff!" de la Norme) :

Tu as l'interdiction ABSOLUE d'utiliser :

Les boucles for

Les boucles do-while

Les instructions switch

Le mot-clé case (inclus dans switch)

Les opérateurs ternaires (?
:)

Les goto

Les VLA (Variable Length Arrays)

Toute fonction de la librairie standard qui n'est pas explicitement autorisée. Cela inclut, mais n'est pas limité à : printf, puts, malloc, free, strlen (si tu n'as pas encore fait ft_strlen), etc.

3. TON SEUL OUTIL D'AFFICHAGE : _putchar

Pour toute sortie vers la console, tu devras utiliser une fonction void _putchar(char c);. Cette fonction te sera fournie, ou tu devras l'écrire toi-même (ex00). Elle ne fait qu'afficher UN SEUL CARACTÈRE. Tu devras la réutiliser pour toutes tes affiches.

4. COMPILATION :

Ton code doit compiler sans erreur ni avertissement avec gcc -Wall -Wextra -Werror.

5. STRUCTURE :

Chaque exercice doit être dans son propre dossier exXX (ex: ex00/ft_putchar.c, ex01/ft_print_alphabet.c).

6. ESPRIT ONCHE :

Cherche par toi-même, expérimente, débogue.

Demande de l'aide à tes pairs, mais ne copie JAMAIS. Expliquer une solution est aider, donner une solution est tricher.






Vous devez être au niveau 1 pour voir ce message.




Vous devez être au niveau 2 pour voir ce message.


Vous devez être au niveau 3 pour voir ce message.



Vous devez être au niveau 4 pour voir ce message.



Vous devez être au niveau 5 pour voir ce message.



Vous devez être au niveau 6 pour voir ce message.



Vous devez être au niveau 7 pour voir ce message.



Vous devez être au niveau 8 pour voir ce message.



Validation :
Ton travail sera évalué par tes pairs. Sois exigeant avec toi-même, ton code doit être parfait. Respecte la Norme à la lettre, chaque détail compte.
N'oublie pas :

1. Fais un git add de tous tes fichiers. (Il est préférable que tu te crée un copte github pour que nous puissions t'évaluer)
2. Fais un git commit -m "Ex00 to Ex07 ready" (ou un message pertinent).
3. Fais un git push vers ta branche de travail (souvent main ou master pour les premiers modules).

- Bon courage, et que la Norme soit avec toi.
:2loin_noel4:
' OR '1' = '1'
il y a 3 mois
- Aucun troll
:ChatGPTVaVousParler:
' OR '1' = '1'
il y a 3 mois
Je viole la plupart de tes interdictions et pourtant je ne suis pas un mauvais programmeur (il paraît même que j'en serait un bon)

Où as-tu été chercher ça ?
Certifié tous gaz.
il y a 3 mois
Zardoz
Zardoz
3 mois
Je viole la plupart de tes interdictions et pourtant je ne suis pas un mauvais programmeur (il paraît même que j'en serait un bon)

Où as-tu été chercher ça ?
Je crois que ces interdictions sont juste pour ces exos, je me souviens avoir eu plus ou moins les mêmes en première année pour des exos simples du même style
:FramboiseRika:
:kiwi-jmp:
:OrangeRikaContent:
il y a 3 mois
Je crois que ces interdictions sont juste pour ces exos, je me souviens avoir eu plus ou moins les mêmes en première année pour des exos simples du même style
:FramboiseRika:
Ce document est un torchon et n'a même pas été relu.

On nous interdit Boucles : for, do...while (ne JAMAIS faire) pour nous dire trois lignes plus loin : Utilisez uniquement des boucles while.

Un langage sans boucles n'est pas Turing-complet et ne permet pas de calculer toutes les fonctions récursives.

C'est n'importe quoi.
Certifié tous gaz.
il y a 3 mois