$> ls -l
-rwrw-rw- 1 db0   db0 62.1 Ko 2015-03-30 19:37 Impatient C
-rwrw-rw- 1 db0   db0  3.5 Ko 2015-03-30 19:37 Impatient SCM
-rwrw-rw- 1 db0   db0  3.0 Ko 2015-03-30 19:37 Impatient Emacs
-rwrw-rw- 1 db0   db0  2.4 Ko 2015-03-30 19:37 Impatient Man Pages
-rwrw-rw- 1 db0   db0 10.5 Ko 2015-03-30 19:37 Impatient Perl
-rwrw-rw- 1 db0   db0 17.3 Ko 2015-03-30 19:37 Impatient Python
-rwrw-rw- 1 db0   db0 13.6 Ko 2015-03-30 19:37 Impatient Shell Debutant
-rwrw-rw- 1 db0   db0 16.4 Ko 2015-03-30 19:37 Impatient Shell Script
-rwrw-rw- 1 db0   db0  3.4 Ko 2015-03-30 19:37 Impatient Shell
-rwrw-rw- 1 db0   db0  1.8 Ko 2015-03-30 19:37 Impatient Vim


Impatient - C

Ce cours se veut être utilisable comme une fiche de référence (des "rappels" ou un "support de cours") mais aussi permettre aux débutants d'apprendre.
C'est pour cette raison que l'on y trouve des informations explicatives aux débutants mélangées à des indications plus avancées (cachées, il faut cliquer sur "details" pour les voir).
J'ai conscience qu'il est difficile de satisfaire deux publics différents avec un même texte, c'est pourquoi j'écouterai volontiers vos remarques et commentaires permettant de l'améliorer. Particulièrement celles d'un debutant.
(Le systeme de commentaires en bas de page est là pour ca)

Sommaire

    Chapitre I

  1. Structure d'un code en C
  2. Les variables
  3. Un exemple...
  4. La Compilation
  5. Conditions et boucles
  6. Opérateurs de calcul et incrémentations
  7. Afficher des variables
  8. Chapitre II

  9. Les tableaux
  10. Les pointeurs
  11. Les chaînes de caractères
  12. Chapitre III

  13. La récursivité
  14. Manipulation de fichiers
  15. Les fichiers headers, les includes, les defines et les macros

Chapitre I

Structure d'un code en C

UP

Les variables

Type Nombre d'octets en mémoire Nombre de bits en mémoire Limite inférieure Limite supérieure
char 1 octet 8 bits - 128 127
unsigned char 1 octet 8 bits 0 255
short 2 octets 8 x 2 = 16 bits - 32 768 32 767
unsigned short 2 octets 8 x 2 = 16 bits 0 65 535
int 4 octets 8 x 4 = 32 bits - 2 147 483 648 2 147 483 647
unsigned int 4 octets 8 x 4 = 32 bits 0 4 294 967 295
long 4 octets 8 x 4 = 32 bits -2 147 483 648 2 147 483 647
unsigned long 4 octets 8 x 4 = 32 bits 0 4 294 967 295
float 4 octets 8 x 4 = 32 bits -3.4 x 10-38 3.4 x 1038
double 8 octets 8 x 8 = 64 bits -1.7 x 10-308 1.7 x 10308
long double 12 octets 8 x 12 = 96 bits -3.4 x 10-4932 3.4 x 104932
(Ce tableau n'est pas forcément juste, il dépend de l'architecture de votre machine. Il n'est, par exemple, pas valable en 64bits.) UP

Un exemple...

... vaut mieux qu'un long discours !

    int			subtraction(int a, int b)
    {
      int		result;

      result = a - b;
      return (result);
    }

    int			main(void)
    {
      int		i;

      i = 3;
      i = i + 5;
      i = subtraction(i, 2);
      return (0);
    }
  
Voici ce qu'il se passe ici : Maintenant, pour tester ce programme, on va le compiler et le lancer. On se rendra compte qu'il n'affiche rien.

UP

La Compilation

On compile avec gcc (alias cc).

Le compilateur génère alors un fichier (executable) a.out.
Il est possible de modifier le nom du fichier grace a l'option -o

     gcc -o nom_executable mon_code.c

S'il y a une ou plusieurs erreurs, elles seront affichées et la compilation s'arrêtera.
Cependant, certaines "erreurs" peuvent ne pas empêcher la compilation, on les appelle les Warnings.
Il est malgré tout très important de corriger ces petites erreurs car la plupart du temps, elle perturberont le fonctionnement normal du programme.

Pour afficher plus de Warnings, il est possible (et conseillé) d'ajouter des options (dites flags de compilation) :

Beaucoup d'autres sont disponibles. Reportez-vous au man gcc.

Il est aussi possible de demander au compilateur d'effectuer (ou pas) des optimisations :

Cependant, je ne recommande pas l'utilisation de ceux-ci pendant la réalisation d'un programme C (pourquoi ?). (Une fois qu'il est fini, pourquoi pas)

On peut compiler plusieurs fichiers C pour un meme programme.

Exemple de compilation :

     gcc -O0 -Wall -Wextra -Werror -ansi -o mon_executable mon_code.c
Pour eviter d'avoir à taper cette longue commande a chaque compilation, faites-vous un alias ! (Comment faire ?)

Une fois que le programme est compilé, on peut le lancer pour voir ce qu'il fait :

     ./mon_executable	  

UP

Conditions et boucles

UP

Opérateurs de calcul et incrémentations

UP

Afficher des variables

Pour donner à une variable comme valeur une lettre, on a deux solutions :

Pour connaitre les valeurs ASCII de chaque lettre, on utilise la table ASCII que l'on peut consulter grace au man ascii. Exemple : La lettre 'F' a pour valeur ASCII 70 tandis que la lettre 'f' a pour valeur ASCII 102.

D'autres caractères non visibles mais qui peuvent etre utiles :

Pour afficher une lettre, on va utiliser cette petite fonction :

    #include	<unistd.h>

    void	print_char(char c)
    {
      write(STDOUT_FILENO, &c, sizeof(c));
    }
  
(Pour l'instant, il n'est pas utile de comprendre cette fonction)

Ce petit programme va afficher la lettre 'p' suivie d'un retour à la ligne et finir le programme en indiquant qu'il est réussi :

    int		main(void)
    {
      print_char('p');
      print_char('\n');
      return (0);
    }
  

UP

Chapitre II

Les tableaux

UP

Les pointeurs

UP

Les chaînes de caractères

On appelle une chaîne de caractères un tableau de type char qui contient des lettres (leurs valeurs ASCII) et qui se termine par un '\0'.

On peut envoyer une chaine de caractere à une fonction en utilisant des double quotes (") "ma chaine de caracteres\n".
Les simples quotes (‘) sont utilisées pour les caractères seuls.
La fonction à laquelle on aura envoye la chaîne de caracteres grâce à des doubles quotes prendra alors en paramètre un pointeur vers un char. C'est le pointeur vers la première case du tableau qui contient une chaîne de caractères.
      void		print_string(char *string)
      {
        /* fonction qui affiche */
      }

      int		main(void)
      {
        print_string("Le pays du 42");
        return (0);
      }

UP

Chapitre III

La récursivité

UP

Manipulation de fichiers

UP

Les fichiers headers, les includes, les defines et les macros


UP

En cours...

Commentaires | Ajouter un commentaire