ProgHelp

Une communauté intelligente et active

Introduction au C

Message par Ne02ptzero » 28 Septembre 2013, 21:40

Bonjour a tous!

Je commence ici une série de tutoriels sur le langage C!
J'essaierai d'en sortir de nouveaux régulièrement.
Je vous préviens, j'ai appris le C méthode 42 (Donc Epitech), donc on oublie les printf(); et autres merdes existantes dans le genre!
Si vous ne voyez pas de quoi je parle, ne vous inquiétez pas 8-) !

Bon, on va commencer par le commencement, qu'est ce que le langage C?
Le C est un langage de programmation impératif, généraliste, issu de la programmation système. Inventé au début des années 1970 pour réécrire UNIX, C est devenu un des langages les plus utilisés. De nombreux langages plus modernes comme C++, Java et PHP reprennent des aspects de C.


Le C est LE premier langage majeur a avoir été invente, pour créer le système UNIX que vous connaissez mieux sous le nom de Linux (Les puristes vont crier au viol, alors je precise que UNIX et Linux ne sont pas la même choses, Linux étant un dérivé du système UNIX)
Pour ma part, le langage C est un des plus importants existants car il a inspire de nombreux langages comme le PHP, Java, Bash, Perl et j'en passe.

Le langage C est un langage bas-niveau (Rien a voir avec la difficulté c'est juste qu'il est plus proche de processeur mais on en reparlera).
Si vous voulez des exemples de projets en C,... et bien Windows, Linux (Les premières Versions), et j'en oublie des milliers.

Cool tout sa, mais sa sert a quoi ce langage?

Je ne peux pas vous dire a quoi ce langage sert, car je pourrai passer une année a tout écrire que je n'aurai pas fini.
Néanmoins, je peux vous dire a quoi il ne sert pas: Les Interfaces Graphiques.
En effet ce langage a été invente pour les taches en Background (Arrière-plan pour les anglophobes), et ce c;est que très tard que le librairie GTK (Qui permet de faire des interfaces graphiques en C a été invente).

Si vous voulez plus d'info sur le C, je vous invite a chercher de la doc dessus, c'est toujours tres intéressant !

Bon maintenant que vous savez a peu près ce que c'est que le C, on va passer a autre chose.
Le langage C est un langage non-interprété c'est a dire qu'il faut passer par un compilateur pour faire un exécutable.

Installation:
Pour ma part je code sous Linux, mais de bonne grace, je vais vous donner la marche a suivre pour coder en C sous Windaube également:

Windows:

Plusieurs solutions existent sous Windows:

- Passer par un IDE (Logiciel qui prend en compte l’écriture du code, la compilation et l'execution)
- Passer par un compilateur externe

Ne connaissant pas Windows, je peut pas trop vous aider la dessus, mais si vous êtes débutant je ne peux que vous conseiller de passer par un IDE.

Tutoriel d'installation de Code Blocks sous Windaube -> http://fr.openclassrooms.com/informatique/cours/apprenez-a-programmer-en-c/code-blocks-windows-mac-os-linux

Si vous ne voulez pas d'IDE, le code devra être écrit dans n'importe quel éditeur de code et compile ensuite avec MinGw, qui est une version de gcc sur Windows.

Tutoriel pour installer MinGw sous Windows -> http://devtricks.wordpress.com/installer-mingw-ou-comment-faire-du-gcc-sous-windows-version-2010/

Linux:

Sous Linux, il va vous falloir un éditeur de code, et un compilateur:
-> L’éditeur de code sur Terminal:
Vim ou Emacs (Je bosse personnellement sous vim, mais vous avez le libre choix de votre editeur)
-> L’éditeur graphique:
Je ne peux que conseiller l'excellent Sublime-text qui est parfait pour la programmation en général!

Télécharger Vim ou Emacs:
sudo apt-get install vim

ou
sudo apt-get install emacs

Selon votre distribution, la commande d'installation est a modifier.

Pour Sublime -> http://www.sublimetext.com/3

Le compilateur:
Je vous présente le meilleur compilateur du monde, gcc!
Il est installe par défaut sur Linux, extrêmement simple d'utilisation!

Pour compiler:
gcc monfichier.c


Bien!
Vous avez maintenant tout les outils en main pour coder en C:

On commence le code!

Je vais vous donner un code basique, et je vais vous l'expliquer:
int     main()
{
return (0);
}

Voici le code le plus basique possible.
On détaille le code:
int     main()

La fonction main, est la fonction de référence de votre programme, votre programme doit TOUJOURS contenir un main sinon votre code ne marchera pas.
Quand votre exécutable sera... exécuté et bien la fonction main sera toujours la première appelée!
C'est donc la fonction principale de votre code!

Comme dans de nombreux langages, une instructions est suivie de { } pour délimiter le contenu.
Et bien en C, c'est la même chose!
Je vais faire un rapide schéma pour que vous compreniez mieux:
Instruction
{ //Début du contenu
/*Code de l'instruction
* ...
*/
} //Fin du contenu


D'accord, très bien mais c'est quoi ce return (0); dans le code?


Le return (0); permet d’arrêter une fonction pour dire que tout c'est bien passe, tout simplement.
Sachez qu'il n'est pas du tout obligatoire, mais par convention, on le met toujours et je vous invite fortement a le faire également!
Il faut savoir également que le code contenu dans les instructions se fini toujours par un ";", sa permet d'indiquer au programme que l'action a faire s’arrête ici

Tres bien, mais je n'ai pas compris cette ligne: int main()

J'allais y venir, un peu de patience que diable!

LES VARIABLES:

Les Types en C:

Un "type"? c'est quoi sa?

Et bien je vais vous apprendre quelque chose: Notre ordinateur a une mémoire vive!
Et cette mémoire vive alloue plus ou moins de la place pour chaque programme.
Le gros problème, c'est que la mémoire ne sait pas combien de mémoire elle va allouer pour chaque programme, donc il faut lui indiquer avant!
Quoi !? La memoire de mon ordi est si assistée que sa?

Et bien, ... oui.

Voila un petit schéma pour que vous compreniez mieux:
-> Notre programme est execute
-> Le programme arrive devant la memoire: "Oye belle mémoire, permet moi de louer un petit peu de place chez toi!"
-> La memoire: "Je veux bien, mais il faut que tu me dise combien tu en veux!"
-> Le programme: "Et bien, attend un peu, que je calcule sa... 16 bits s'ilteplait!"
-> La memoire: "On va voir si j'ai la place pour sa... Oui c'est bon, Bienvenue dans la mémoire! Suivant!"

Evidemment, tout ceci ne prend que des millièmes de secondes a notre ordinateur, qui a ete concu pour gerer des milliards de cas comme celui la a la seconde!
Super histoire... Mais comment le programme sait combien de mémoire il lui faut?

C'est exactement ce que ce sont dit les créateurs du C il y a quelques années !
Et ils ont finalement trouve une solution plutôt simple:
Ils ont définis des types qui vont contenir un nombre donne de données.

On passe aux choses sérieuses:
Il existe de nombreux types, mais j'ai décidé de ne vous en présenter que deux aujourd'hui!
- Les INT
- Les CHAR
Attend,.. INT c'est pas ce qu'il y a marque devant main?

Si, tout a fait!

Petite explication sur les types:
Int: Les int peuvent contenir des nombres de -32767 (-215+1) a 32767 (215-1), donc des nombres très petits et des nombres très grands!
Char: un char ne peuvent contenir UNE SEULE LETTRE, oui j'ai bien dit une seule lettre!

Vous connaissez maintenant les 2 principaux types en C!
Ouais, c'est plutôt cool, mais sa va nous servir a quoi tout sa?


J'y viens:
Vous connaissez les variables?
Si vous avez déjà fait d'autres langages de programmation vous voyez surement de quoi je parle!
Une variable est une valeur qui varie (peut changer de valeur) est qui est utilisée pour traite de l'information dans votre programme.

En pseudo code:
Je déclare une variable qui s’appelle "i" et qui vaut 0;
je change la valeur de i pour 1;
j'ajoute 2 a la variable i;

J’espère que vous avez bien compris ce qu’était une variable c'est capital pour faire de la programmation!
Et bien en C, pour déclarer une variable, il faut préciser son type!

Par exemple:
int    i;
int b;

i = 0;
b = 2;

J'ai déclaré 2 variables de type int, qui s’appelle i et b, ensuite j'ai assigne des valeurs aux variables.
En fin de code , i vaut 0 et b vaut 2.

La même chose pour les char:
char   c;
char d;

c = 'a';
d = 'b';

Même principe que pour les int, c vaut maintenant la lettre 'a' et d la lettre 'b'
/!\ATTENTION: quand vous assignez une valeur a un char il faut toujours mettre des simple quote ( '' ), jamais de double ( "" ).
Cette règle ne s'applique que pour les char, pour les int mettez simplement les nombres associes!

Voila pour cette introduction au C!
J'espere que tout cela vous aura plus, je continuerai cette série de tutoriels bientôt!
___________
< Problem ? >
-----------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||

Github
Avatar de l’utilisateur
Ne02ptzero
Petit nouveau
 
Messages : 8
Points d'honneur : 20 PH
Inscription : 28 Sep 2013

Message par Nicogo » 28 Septembre 2013, 22:53

Beau tutoriel, j'ai vite lu (par manque de temps)
mais sinon évite les mots genre m****, etc ;)
Image
Avatar de l’utilisateur
Nicogo
Administrateur
 
Messages : 460
Points d'honneur : -666 PH
Inscription : 30 Oct 2012

Message par Patak » 29 Septembre 2013, 11:37

Tuto très sympa :grin:

+ 10 Points d'honneur
Image


SPOILER : AFFICHER


Avatar de l’utilisateur
Patak
Administrateur
 
Messages : 1144
Points d'honneur : -666 PH
Inscription : 30 Oct 2012

Message par minouche42 » 21 Juin 2014, 01:48

Super tuto pour moi qui vas me mettre a fond dedan, merci beaucoup! =)
Image
Avatar de l’utilisateur
minouche42
Graphiste
 
Messages : 117
Points d'honneur : 0 PH
Inscription : 16 Déc 2012

Message par Shadock12345 » 13 Juillet 2015, 22:07

Bonsoir !
Ton introduction peut être intéressant. Toutefois, je trouve qu'il n'est pas complet et manque de renseignements et de références !

Tu as omis les directives de préprocesseur qui sont importantes avant de commencer quoi que-ce soit ! Je parle de :
#include <stdio.h>
#include <stdlib.h>

Qui sont des lignes qui seront lues par un programme appelé préprocesseur, un programme qui se lance au début de la compilation !

Je cite :
int main()

La fonction main, est la fonction de référence de votre programme, votre programme doit TOUJOURS contenir un main sinon votre code ne marchera pas.
Quand votre exécutable sera... exécuté et bien la fonction main sera toujours la première appelée!
C'est donc la fonction principale de votre code!

Comme dans de nombreux langages, une instructions est suivie de { } pour délimiter le contenu.
Et bien en C, c'est la même chose!
Je vais faire un rapide schéma pour que vous compreniez mieux:


Tout d'abord tu devrais préciser que la ligne :
int main()

Peut aussi s'écrire
int main(int argc, char *argv[])

Les deux écritures sont tout à fait possibles, mais la "plus développée" est la plus courante. D'ailleurs de nombreux programmeurs auront plutôt tendance à l'utiliser. En ce qui concerne l'utilisation de l'une ou de l'autre des écritures ne changeras rien pour nous.

Tu aurais du expliquer aussi pourquoi il était important de mettre un ------> ; <------- a la fin de chaques instructions !

Je vais m'arrêter là :grin:
Pour moi, c'est une introduction au C à revoir :hap:
Désolé... J'ai fais mon facheux :lol:
Sinon en somme, bonne initiative ! :D
Avatar de l’utilisateur
Shadock12345
Petit nouveau
 
Messages : 6
Points d'honneur : 5 PH
Inscription : 13 Juil 2015

Message par Loulouw » 15 Juillet 2015, 20:46

Tu remonte un vieux sujet mais bon je vais te corriger du coup :hap:

stdlib.h : Elle sert aux allocations de mémoire, dans ce tuto je ne vois aucun malloc / free etc. Elle n'est donc pas indispensable ici ! (Certes forcément utile par la suite mais pas ici)

stdio.H : Pareil ici, elle n'est pas indispensable, il assigne juste des valeurs à des variables ! S'il avait décidé de les afficher avec un printf là elle serait utile mais ici non !

int main(int argc, char *argv[])


On connait seulement int et char et tu veux nous expliqué une synthaxe avec un tableau de pointeur :hap: Je pense c'est un peu trop tôt pour une introduction ! :p
Quand t'es geek, tu comprends pourquoi la Peugeot 404 est introuvable...

http://louiszwawiak.fr
Avatar de l’utilisateur
Loulouw
Programmeur
 
Messages : 355
Points d'honneur : 125 PH
Inscription : 15 Déc 2012

Message par Maxwell » 28 Mai 2016, 17:44

Je déterre ! :hap:


"Je vous préviens, j'ai appris le C méthode 42 (Donc Epitech), donc on oublie les printf(); et autres merdes existantes dans le genre!"


J'admet que cela m'intrigue et suis curieux de voir se que tu veux nous proposer :lol:
Je reste sceptique , car même dans mes programme "important" j'emploi la fonction printf :ugeek:
Maxwell
Apprenti membre
 
Messages : 28
Points d'honneur : 7 PH
Inscription : 28 Mai 2016


Retour vers C

  • Qui est en ligne ?
  • Consulter les nouveaux messages
  • Consulter les messages sans réponse
  • Au total, il y a 0 utilisateur en ligne :: 0 inscrit, 0 invisible et 0 invité (basé sur le nombre d’utilisateurs actifs des 5 dernières minutes)
  • Le nombre maximum d’utilisateurs en ligne simultanément a été de 272 le 12 Mars 2015, 03:11
  • Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 0 invité(s)