Notes de cours de langage C

 

UJF – JF Nicaud

 

0. Références

Ces notes de cours

Ces notes de cours sont téléchargeables à l’adresse : http://membres-lig.imag.fr/nicaud/

Livres

Nombreux livres, voir bibliothèque. Utiliser des livres pas trop vieux qui suivent la norme ANSI C.

 

Le livre des auteurs : Kernighan et Ritchie

 

Des livres gratuits téléchargeables sur Internet, dont :

Bernard Cassagne, Introduction au langage C
http://www-clips.imag.fr/commun/bernard.cassagne/Introduction_ANSI_C.html

Compilateurs

Environnement de développement intégré pour Windows :

lcc : gratuit pour usages non commerciaux, téléchargeable à :
http://www.cs.virginia.edu/%7Elcc-win32/

Dev-C++ : gratuit

http://www.bloodshed.net/devcpp.html

http://www.01net.com/outils/telecharger/windows/Programmation/langage/fiches/2327.html

Informations de toutes sortes

Club d'entraide des développeurs francophones

http://www.developpez.com

des forums, des livres, des compilateurs, des FAQ…

1. Introduction

1.1 Premier exemple

Calcul de la somme de deux nombres

 

int main()                                             /* entête du programme principal */

{

                int n1, n2, somme;            /* déclaration de 3 variables entières */

 

                printf("Calcul de la somme de 2 nombres entiers\n");        /* affichage à l’écran */

                printf("Donner le premier nombre\n");                                      /* affichage à l’écran */

                scanf("%d",&n1);                                                                             /* saisie au clavier */

                printf("Donner le deuxieme nombre\n");                                 /* affichage à l’écran */

                scanf("%d",&n2);                                                                             /* saisie au clavier */

                somme = n1 + n2;                                                                            /* calcul */

                printf("La somme est %d\n",somme);                                      /* affichage à l’écran du résultat */

                                                                                                                             /* du traitement */

}

 

Mise en œuvre d’un programme

 

Phase 1 : Saisie du programme dans un fichier

C’est le fichier source que l’on crée avec un éditeur de texte, Emacs par exemple.

 

Phase 2 : Compilation

Le compilateur analyse le programme source et indique les erreurs.

S’il n’y a pas d’erreur, il produit un programme objet composé d’instructions pour le processeur.

 

Phase 3 : Edition de liens

L’éditeur de lien associe le programme objet à des programmes objets de la bibliothèque pour produire un programme exécutable.

 

Phase 4 : Exécution

Le programme exécutable est exécuté.

 

On teste le programme pour détecter des erreurs. S’il y en a, on modifie le programme source pour les corriger.

Environnements de développement

 

Contexte console

 

En environnement console avec un éditeur de texte comme Emacs et un compilateur comme gcc (qui fait aussi l’édition des liens).

 

Contexte EDI

 

On dispose d’un environnement de développement intégré comportant éditeur de texte, compilateur et éditeur de liens.

 

Exemple : lcc pour Windows, utilisé dans le cours

Structure du programme

 

Entête fonction main

{

      déclaration des variables

      instructions effectuant les traitements

}

 

Les commentaires

 

Un commentaire est une partie ignorée par le compilateur.

Il commence par /* et se termine par */

Il peut utiliser plusieurs lignes.

 

Les commentaires ne peuvent pas s’imbriquer.

Les variables entières

 

Déclaration avec éventuellement affectation en même temps

 

int n1, a = 4, b = 8, c = -5 ;

 

int mot-clé (mot réservé) indiquant la déclaration d’un entier (integer)

 

Le nom d’une variable est un identificateur : succession de lettres, chiffres et "_" ne commençant pas par un chiffre.

 

Une variable entière correspond à un emplacement mémoire de n octets généralement (n dépend de la machine) avec représentation en binaire.

Plus petit entier INT_MIN et Plus grand entier INT_MAX (bibliothèque limits.h)

Avec la représentation fréquente sur 4 octets, on a :

INT_MIN = -2 147 483 648

INT_MAX = 2 147 483 647

 

Opérateurs pour faire des calculs :

- opérateurs binaires infixés +    de priorité 12

- opérateurs binaires infixés *  /  % de priorité 13

- opérateurs unaires préfixés +  – de priorité 14

- parenthèses.

 

A priorité égale pour les binaires, opérations effectuées de gauche à droite.

 

Ex : -a + b / 3 * c  est équivalent à (-a) + ( (b / 3) * c)

 

% est l’opérateur modulo :

 n % p est le reste de la division entière de n par p.

 

Pas de puissance dans le langage de base, mais la fonction pow de bibliothèque math.h

pow(n,p) est « n à la puissance p ».

 

Débordements dans les calculs, selon les options de compilation :

-          calcul erroné,

-          erreur.

Les affectations d’entiers

 

Syntaxe :

<variable> = <expression> ;

 

Exemple :

somme = n1 + n2;

 

Les affichages à l’écran

 

On dit aussi « écriture à l’écran ».

 

Fonction de la bibiothèque stdio.h

 

Syntaxe :

printf(<chaine_de_formatage>, <expression1>, <expression2>, ...);

 

Exemple :

printf("La somme de %d et %d est %d\n", a, b, a + b) ;

 

le premier %d indique de placer à cet endroit la première expression en représentation décimale, analogue pour le deuxième et le troisième

\n dit d’aller à la ligne

 

Les saisies au clavier

 

On dit aussi « lecture au clavier ».

 

Fonction de la bibiothèque stdio.h

 

Syntaxe :

scanf(<chaine_de_formatage>, &<variable1>, &<variable2>, ...);

 

Exemple :

scanf("%d %d", &a, &b) ;

 

le premier %d indique de saisir un nombre ne décimal pour le mettre dans la première variable, analogue pour le deuxième

 

Les "&" seront expliqués plus tard. Ne pas les oublier.

Divers

 

Le langage C est sensible à la casse : N1 est différent de n1