Bienvenue sur la page de C !

Le C qu'est ce que c'est ?

Le C est un langage de programmation impératif généraliste, de bas niveau. Inventé au début des années 1970 pour réécrire UNIX, C est devenu un des langages les plus utilisé, encore de nos jours.

De nombreux langages plus modernes comme C++, C#, Java, PHP, Javascript et bien d'autres encore sont hérités du langage C et reprennent en partie sa logique.

C offre au développeur une marge de contrôle importante sur la machine (notamment sur la gestion de la mémoire) et est de ce fait utilisé pour réaliser les « fondations » (compilateurs, interpréteurs…) de ces langages plus modernes.

Comment et par qui a été créé le C ?

Le langage C a été inventé au cours de l'année 1972 dans les Laboratoires Bell.
Il était développé en même temps que UNIX par Dennis Ritchie et Ken Thompson.

Ken Thompson avait développé un prédécesseur de C, le langage B, qui est lui-même inspiré de BCPL. Dennis Ritchie a fait évoluer le langage B dans une nouvelle version suffisamment différente,
en ajoutant notamment les types, pour qu'elle soit appelée C

Dennis Ritchie et Ken Thompson

Pourquoi est-il beaucoup utilisé ?

C'est un des langages les plus utilisés car :

-il existe depuis longtemps, le début des années 1970 ;
-il est fondé sur un standard ouvert (selon la norme ANSI);
-il est très facilement portable entre sytèmes d'exploitation;
-de nombreux informaticiens le connaissent ;
-il permet la minimisation de l'allocation mémoire nécessaire et la maximisation de la performance, notamment par l'utilisation de pointeurs ;
-des compilateurs et bibliothèques logicielles existent sur la plupart des architectures ;
-il a influencé de nombreux langages plus récents dont C++, Java, C# et PHP ; sa syntaxe en particulier est largement reprise ;
-il met en œuvre un nombre restreint de concepts, ce qui facilite sa maîtrise et l'écriture de compilateurs simples et rapides ;
-il ne spécifie pas rigidement le comportement du fichier exécutable produit, ce qui aide à tirer parti des capacités propres à chaque ordinateur ;
-il permet l'écriture de logiciels qui n'ont besoin d'aucun support à l'exécution (ni bibliothèque logicielle ni machine virtuelle),
au comportement prévisible -en temps d'exécution comme en consommation de mémoire vive, comme des noyaux de système d'exploitation et des logiciels embarqués.

Quelques exemples de programmes basiques

Tout d'abord il faut savoir que la façons "d'exécuter" des programmes en C et en python n'est pas la même. Python est un interpréteur, il a donc besoins d'un interpréteur pour faire fonctionner ces programmes. Le language C quand à lui est un language qui doit être compiler pour être éxécuter. C'est à dire que l'on compile d'abord notre projet en .exe pour l'éxécuter ensuite.



Pour un premier programme je vais vous montrez comment faire afficher un message. Pour cela nous allons utiliser la fonction printf avec le fameux "Hello world".
Tout d'abord il faudra se rendre dans code blocks qu'il faudra au préhalable installer. Vous pouvez utiliser un autre compileur mais les examples seront fait sur celui la.

Dans ces exemples je ne vous montre pas comment créer un projet sur Code Block, ni comment mettre un compileur dessus (ex: GCC, MINGW, CLANG, etc...) car je juge cette étape assez simple d'accès avec de la documentation ou des tutos sur internet.

#include <stdio.h>
#include <stdlib.h>

int main() {
   printf("Hello World!");
   return 0;
}

Votre premier programme en C est très basique mais permet de bien comprendre les bases du langage. C est consommateur de caractères car il faut plusieurs lignes pour au final en afficher une seule!

Tout programme en langage C doit contenir au minimum une fonction principale appelée main. Beaucoup de programme ne contienne dans cette fonction que des appels à d'autres fonctions.
Sa syntaxe est relativement légère, trop parfois. Un laxisme dans le développement entraînera vite la production d'un code illisible et bourré de fautes. La seule syntaxe obligatoire, en dehors du main, est de finir chaque ligne avec un point-virgule ;
Il faut également prendre l'habitude de bien identer son code.

#include <stdio.h>
#include <stdlib.h>

int main() {
printf("Hello World!");
return 0;
}

Le script ci-dessus est totalement correct mais est bien moins lisible que celui d'avant.


Maintenant que vous connaissez les bases, Vous pouvez réaliser un programme un peut plus complexe qui calcule l'aire d'un rectangle. Nous allons créez en premier temps le squelette:
-inclusion des librairies essentielles: stdio et stdlib
-corps du programme (main)

#include <stdio.h>
#include <stdlib.h>

int main ()
{

}

La fonction main s'exécute dès lancement du programme.

Il vous reste à coder la demande l'utilisateur pour renseigner la longeur et largeur du rectangle, avant de calculer son aire.
Pour cela il convient de définir les variables qui contiendront ces deux données et leur type. C'est facile , elles seront numériques, typées décimales, donc en langage C typées float

Ajoutez à votre programme la définition des variables comme ci-dessous. Voici un exemple typique du laxisme facilement pris en C: on peut déclarer ces variables en global, ou en local.
En 2 lignes:

-déclaration globales: au même niveau que les include, hors de toute fonction. L'avantage est que le contenu de ces variables est accesible depuis toutes les fonctions.

- déclaration locale: la variable n'est accessible que dans la fonction et ne reste pas en mémoire après son utilisation: le recyclage avant l'heure!

Vous déclarez une variable l pour la largeur, une variable L pour la longueur. LeC est sensible à la casse, voilà encore un exemple de ce que l'on peut faire en C mais que l'on ne doit pas faire: illisibilité, confusion,..

#include <stdio.h>
#include <stdlib.h>

int main ()
{
    float l,L;
}

Le C n'est pas le plus folichon des languages pour demander à l'utilisateur de saisir des données. Il est même lourd!. La fonction scanf qui joue ce rôle ne permet que de recevoir une information que de l'entrée standard stdin, c'est à dire le clavier.
Il faut indiquer à l'utilisateur ce qu'il est sensé saisir par des printf. Lourd, très lourd..!

#include <stdio.h>
#include <stdlib.h>

int main ()
{
    float l,L;
    printf ("Entrez la largeur de votre rectangle : ");
    scanf ("%f", &l);
    printf ("Entrez la longueur de votre rectangle : ");
    scanf ("%f", &L);
}

Votre oeil de lynx a tout de suite remarqué le symbole & à gauche de la variable. Cela indique que le contenu lu au clavier est stocké dans la variable, l ou L, selon la ligne.
Enfin nous pouvons afficher le résultat en faisant le calcul directement

#include <stdio.h>
#include <stdlib.h>

int main ()
{
    float l,L;
    printf ("Entrez la largeur de votre rectangle : ");
    scanf ("%f", &l);
    printf ("Entrez la longueur de votre rectangle : ");
    scanf ("%f", &L);
    printf ("L'aire du rectangle est de %.2f cm carré.\n", l * L);
}
				

l'affichage de l'aire est complexe me direz-vous. oui car il permet en une seule ligne de faire le calcul, le formater et de l'afficher.
Détaillons tout cela:
- printf permet d'afficher une chaîne de caractères et de remplacer certains caractères par le contenu d'une variable.
Le %.2f aurait pu s'écrire se réduire à sa plus simple expression: %f, qui indique que ces caractères seront remplacés par la prochaine variable trouvée sur notre chemin, à savoir le résultat de l x L.
Le résultat n'est pas formaté, c'est à dire que l'on va afficher une suite de décimales importantes derrière la virgule non significatives.
L'expression %.2f signfie que l'on retourne un nombre décimal arrondi à deux chiffres derrière la virgule.

Entrez la largeur de votre rectangle : 1.524
Entrez la largeur de votre rectangle : 2.452
L'aire du rectangle est de 3.74 cm carré.
Avec juste %f nous aurons eu en résultat:
L'aire du rectangle est de 3.736848 cm carré.

#include <stdio.h>
#include <stdlib.h>

int main (int argc, char *argv[])
{
    float l,L;
    printf ("Entrez la largeur de votre rectangle : ");
    scanf ("%f", &l);
    printf ("Entrez la longueur de votre rectangle : ");
    scanf ("%f", &L);
    printf ("L'aire du rectangle est de %f cm carré.\n", l * L);
    return EXIT_SUCCESS;
}
				

Pour finir nous r'ajoutons le return qui permet de renvoyer dans ce cas precis une sortie de la fonction et donc du programme avec succès.

Et voila votre premier programme en C est finit vous n'avez plus qu'à l'éxécuter et à le tester.