Bienvenue dans mon dépôt holbertonschool-low_level_programming ! Ce répertoire est le point de départ de mon parcours d'apprentissage intensif du langage C, en mettant l'accent sur la programmation de bas niveau. Il compile l'ensemble des projets et exercices réalisés dans le cadre de ma formation, depuis les fondamentaux jusqu'aux concepts plus avancés.
Mon objectif à travers ces projets est de développer une compréhension profonde de la manière dont les programmes fonctionnent "sous le capot", en explorant la mémoire, la compilation et les interactions directes avec le système.
Ce dépôt vise à solidifier ma compréhension des concepts clés du C, me permettant d'expliquer sans effort :
- Pourquoi le C est un langage essentiel : Sa place et son rôle dans le monde de la programmation.
- Les figures emblématiques du C : Qui sont Dennis Ritchie, Brian Kernighan et Linus Torvalds.
- Le processus de compilation : Ce qui se passe lorsque l'on tape
gcc main.c. - Points d'entrée et la fonction
main: Leur importance et leurs rôles. - Les bases de l'affichage : Utiliser
printf,putsetputcharpour interagir avec l'utilisateur. - Manipulation des types et opérateurs : Découvrir
sizeofpour la taille des types. - Compilation avancée : Maîtriser
gcc, le nom par défaut des exécutables et le style de codage Betty. - Inclusion d'en-têtes : Savoir trouver les bons fichiers d'en-tête pour les fonctions de la bibliothèque standard.
- Valeurs de retour des programmes : L'influence de
mainsur le code de sortie d'un programme.
- Langage Principal : C
- Scripts : Shell / Bash
- Compilateur : GCC (GNU Compiler Collection) sur Ubuntu 20.04 LTS
- Options de compilation strictes :
-Wall -Werror -Wextra -pedantic -std=gnu89 - Éditeurs de Code :
vi,vim,emacs - Style de Codage : Betty (vérifié par
betty-style.pletbetty-doc.pl)
Ce dépôt est une collection de divers projets, chacun dans son propre dossier. Chaque dossier de projet contient un README.md spécifique détaillant ses propres objectifs et exercices. Voici un aperçu des principaux projets inclus :
- Lien vers hello_world : Introduction aux bases du C (compilation, affichage, etc.).
- Lien vers variables_if_else_while : Exploration des variables, conditions et boucles.
- Lien vers functions_nested_loops : Fonctions et boucles imbriquées.
- Lien vers more_functions_nested_loops : Fonctions supplémentaires et boucles complexes.
- Lien vers pointers_arrays_strings : Maîtrise des pointeurs, tableaux et chaînes de caractères.
- Lien vers recursion : Comprendre et appliquer la récursivité.
- Lien vers argc_argv : Gestion des arguments de la ligne de commande (
argc,argv). - Lien vers malloc free : Comprendre Malloc, Calloc et Realloc.
- Lien vers more malloc free : Fonctions suplémentaires et Malloc plus complexe.
- Lien vers structure typedef : Comprendre les structures, a quoi sert typedef.
- Lien vers variadic functions : Création et utilisation des fonctions variadiques.
- Lien vers function pointers : Utilisation et comprehension des pointers de fonctions.
Tous les projets de ce dépôt suivent un ensemble commun de règles :
- Éditeurs Autorisés :
vi,vim,emacs. - Environnement de Compilation : Ubuntu 20.04 LTS avec
gcc. - Options de Compilation :
-Wall -Werror -Wextra -pedantic -std=gnu89. - Fin de Fichier : Tous les fichiers doivent se terminer par une nouvelle ligne.
- Documentation : Un fichier
README.mdest requis à la racine de chaque dossier de projet. - Qualité du Code : Pas d'erreurs ni d'avertissements à la compilation.
- Restrictions : Pas de variables globales, pas plus de 5 fonctions par fichier (sauf indication contraire), et l'utilisation de
system()est interdite. - Shell Scripts : Si des scripts shell sont présents, ils doivent être de 2 lignes exactes, se terminer par une nouvelle ligne, et commencer par
#!/bin/bash.
Le respect du style de code Betty est primordial. Pour faciliter cette vérification :
- Cloner le dépôt Betty :
git clone https://github.com/holbertonschool/Betty.git - Se déplacer dans le répertoire :
cd Betty - Installer le linter :
sudo ./install.sh - Créer le script
betty(wrapper) : Créez un fichier nommébettyet copiez-y le contenu suivant :#!/bin/bash # Simply a wrapper script to keep you from having to use betty-style # and betty-doc separately on every item. # Originally by Tim Britton (@wintermanc3r), multiargument added by # Larry Madeo (@hillmonkey) BIN_PATH="/usr/local/bin" BETTY_STYLE="betty-style" BETTY_DOC="betty-doc" if [ "$#" = "0" ]; then echo "No arguments passed." exit 1 fi for argument in "$@" ; do echo -e "\n========== $argument ==========" ${BIN_PATH}/${BETTY_STYLE} "$argument" ${BIN_PATH}/${BETTY_DOC} "$argument" done
- Rendre le script exécutable :
chmod a+x betty - Déplacer le script dans le PATH :
sudo mv betty /bin/(ou un autre répertoire de votre$PATH).
Vous pouvez maintenant exécuter betty votre_fichier.c pour vérifier la conformité au style Betty !
Mathieu GODALIER - Élève en programmation à la Holberton School
