Vous êtes sur la page 1sur 35

Initiation à l’informatique

Introduction au langage C Partie1 Année Universitaire 2011-2012 Dounia LOTFI SMI
Introduction au langage C
Partie1
Année Universitaire 2011-2012
Dounia LOTFI
SMI
Introduction (1) Un compilateur est un programme informatique qui traduit un langage (appelé le langage
Introduction (1)
Un compilateur est un programme informatique qui
traduit un langage (appelé le langage source) en un autre
(le langage cible), généralement dans le but de créer un
exécutable.
Exemple: GCC « GNU COMPILER COLLECTION ».
(Compilateur Open Source).
Une exécution d'un programme consiste à indiquer au
processeur qu'il doit exécuter les instructions qu'il
contient.
Environnements de développement intégrés C: DEV,
Eclipse, Netbeans…
Introduction (2) Un langage de programmation est un langage informatique, permettant à un être humain
Introduction (2)
Un langage de programmation est un
langage informatique, permettant à un être
humain d'écrire un code source qui sera analysé
par une machine, généralement un ordinateur.
Le C est un langage de programmation impératif
conçu pour la programmation système. Inventé
au début des années 1970 avec UNIX, C est
devenu un des langages les plus utilisés.
Introduction (3) Installation de l’environnement de programmation DEV
Introduction (3)
Installation de l’environnement de
programmation DEV
Premier Programme en C #include <stdio.h> #include <stdlib.h> Programme affichant le message
Premier Programme en C
#include <stdio.h>
#include <stdlib.h>
Programme
affichant le
message "Hello
world!" à l'écran
int main() {
printf("Hello world!\n");
return 0;
}
Analyse du programme #include <stdio.h> #include <stdlib.h>  Directives de préprocesseur
Analyse du programme
#include <stdio.h>
#include <stdlib.h>
 Directives de préprocesseur (Bibliothèques) Ce sont des lignes qui
seront lues par un programme appelé préprocesseur, un programme qui se
lance au début de la compilation.
 Ces lignes incluent les bibliothèques qui vont nous permettre d'afficher du
texte à l'écran.
int main() {
printf("Hello world!\n");
return 0; }
 Un programme en langage C est constitué de fonctions.
 Une fonction permet de rassembler plusieurs commandes à l'ordinateur.
 Main est la fonction principale de votre programme.
 printf(); permet d’afficher le texte écris entre guillemets.
Analyse du programme  Une fonction a un début et une fin, délimités par des
Analyse du programme
 Une fonction a un début et une fin, délimités par des accolades { et }.
 La première ligne : printf("Hello world!\n"); demande à afficher le
message "Hello world!" à l'écran.
 \n : retour à la ligne (= "Entrée").
 return 0; indique qu'on arrive à la fin de notre fonction main et demande
de renvoyer la valeur 0.
 Chaque programme une fois terminé renvoie une valeur, par exemple (0 =
tout est correct, n'importe quelle autre valeur = erreur ).
Compiler et
exécuter
votre
programme
// (Commentaire) Cette instruction affiche
Hello world à l'écran ou /*…
*/
(Plusieurs
lignes de commentaires)
Les types et les variables C manipule deux types de base: les entiers et les
Les types et les variables
C manipule deux types de base: les entiers et les nombres flottants.
• sur 1 octet, les entiers signés et non signés (char) et (unsigned char).
• sur 2 octets, les entiers signés et non signés (short) et (unsigned short).
• sur 4 octets, les entiers signés et non signés (long) et (unsigned long).
Le type int (unsigned int) est selon les machines synonymes de short
(unsigned short) ou de long (unsigned long).
 Short : (de -32768 à 32767).
 Unsigned short: (de 0 à 65535).
 Long: (de -2147843648 à 2147843647).
 Unsigned long: (de 0 à 4294967295).
Les types et les variables Les nombres à virgule flottante (abusivement appelés réels) servent à
Les types et les variables
Les nombres à virgule flottante (abusivement appelés réels) servent à coder
de manière approchée les nombres réels.
 Float est codé sur 4 octets (valeurs comprises entre 3.4 *10^-38 et 3.4 *
10^38).
 Double est codé sur 8 octets (valeurs comprises entre 1.7 * 10^-308 et
1.7 * 10^308).
 Long double est codé sur 10 octets (valeurs comprises entre 3.4 * 10^-
4932 et 3.4 * 10^4932 ).
Les constantes  Les constantes entières peuvent s'exprimer En notation décimale: 123, -123, etc En
Les constantes
 Les constantes entières peuvent s'exprimer
En notation décimale: 123, -123, etc
En notation octale avec un 0 en première position: 0123
En notation hexadécimale avec les caractères 0x ou 0X en première
position : 0x1b 0X2c, 0X1B, 0X2C, etc
 Le type d'une constante entière est le << plus petit >> type dans lequel il
peut être représenté :
Notation décimale : int, sinon long, sinon unsigned long
Notation octale ou héxa: int, sinon unsigned int, sinon unsigned long
Les constantes Une constante flottante se présente sous la forme d'une suite de chiffres (partie
Les constantes
Une constante flottante se présente sous la forme d'une suite de chiffres
(partie entière), un point qui joue le rôle de virgule, une suite de chiffres
(partie fractionnaire), une des deux lettres e ou E, éventuellement le signe +
ou - suivi d'une suite de chiffres (valeur absolue de l'exposant).
Une constante flottante est supposée être de type double. Le suffixe F indique
qu'elle est de type float. Le suffixe LF indique qu'elle est de type long double.
Exemple: .5e7, 5.e6, 5e6.
Les variables Une variable est un emplacement en mémoire identifié par un identificateur, contenant une
Les variables
Une variable est un emplacement en mémoire identifié par un
identificateur, contenant une valeur d'un type donné et dont la valeur
peut être modifiée durant l'exécution du programme.
Avant d’utiliser une variable on doit la déclarer c -à-d spécifier son
type et lui associer un identificateur.
Exemple: char Terme ; int nombre ; double nombr_2;
Les variables peuvent être initialisées à la déclaration avec des
constantes. On utilise pour cela le symbole =.
Exemple: int max = 0; float som = 0.5 ;
La fonction printf printf (format, liste_d'expressions) Format : • constante chaîne (entre " "), •
La fonction printf
printf (format, liste_d'expressions)
Format :
• constante chaîne (entre " "),
• pointeur sur une "chaîne de caractères" (cette notion sera
étudiée ultérieurement).
Liste_d'expressions : suite d'expressions séparées par des
virgules d'un type en accord avec le code format
correspondant.
Les principaux codes de conversion
printf ("%f", x) ;
C: char d: int u: unsigned int
Ld: long lu: unsigned long f: double ou float
La fonction scanf scanf ( format, liste_d_adresses) Format : • Constante chaîne (entre " "),
La fonction scanf
scanf ( format, liste_d_adresses)
Format :
• Constante chaîne (entre " "),
• Pointeur sur une "chaîne de caractères" (cette notion sera
étudiée ultérieurement).
• Liste_d_adresses : liste de "lvalue", séparées par des
virgules, d'un type en accord avec le code de format
correspondant.
Les opérateurs Les opérateurs arithmétiques : • - : changement de signe • * :
Les opérateurs
Les opérateurs arithmétiques :
• - : changement de signe
• * : Multiplication
• / : Division
• % : Modulo (reste de la division de deux entiers)
• + : Addition
• - : Soustraction
Les opérateurs Les opérateurs relationnels : Ces opérateurs binaires (vrai ou faux) permettent d’établir des
Les opérateurs
Les opérateurs relationnels :
Ces opérateurs binaires (vrai ou faux) permettent d’établir des
conditions logiques en comparant leurs deux opérandes.
• == test si égal
• != test si différent
• < test si inférieur
• <= test si inférieur ou égal
• > test si supérieur
• >= test si supérieur ou égal
Les opérateurs Les opérateurs relationnels : Ces opérateurs binaires (vrai ou faux) permettent d’établir des
Les opérateurs
Les opérateurs relationnels :
Ces opérateurs binaires (vrai ou faux) permettent d’établir des
conditions logiques en comparant leurs deux opérandes.
• == test si égal
• != test si différent
• < test si inférieur
• <= test si inférieur ou égal
• > test si supérieur
• >= test si supérieur ou égal
Les opérateurs Les opérateurs logiques: Ces opérateurs permettent les opérations booléennes classiques sur des
Les opérateurs
Les opérateurs logiques:
Ces opérateurs permettent les opérations booléennes
classiques sur des conditions logiques.
• ! Négation logique d’une condition
• && ET logique de conditions
• || OU logique de conditions
Opérateur d’incrémentation
Incrémentation préfixée/postfixée.
• a++ est équivalent à a=a+1;
• b=a++; est équivalent à b=a; puis a=a+1;(post).
•b=++a; est équivalent à a=a+1; puis b=a;(pré).
Exercice (1) Ecrivez un programme qui calcule et affiche la surface et la circonférence d’un
Exercice (1)
Ecrivez un programme qui calcule et affiche la surface et la
circonférence d’un cercle (2*Pi*r et Pi*r^2). Le programme
demandera à l’utilisateur d’entrer la valeur du rayon.
La circonférence: La longueur du segment faisant le tour d'un
cercle.
Les instructions de contrôle
Les instructions de contrôle
Blocs d'instructions Un bloc est une suite d'instructions placées entre { et }. Les instructions
Blocs d'instructions
Un bloc est une suite d'instructions placées entre { et }. Les
instructions figurant dans un bloc sont absolument
quelconques. Il peut s'agir aussi bien d'instructions simples
(terminées par un point-virgule) que d'instructions structurées
(choix, boucles).
Instruction simple;
Choix ou/et boucle
Syntaxe de l'instruction if if (/* Votre condition */) { // Instructions à exécuter si
Syntaxe de l'instruction if
if (/* Votre condition */)
{ // Instructions à exécuter si la condition est vraie }
Exemple: if (age >= 18) { printf ("Vous etes majeur !"); }
SI la variable vaut ça
ALORS fais ceci
Tout ce qui se trouve à l'intérieur
des accolades sera
exécuté uniquement si la
condition est vérifiée.
Exemple (Instruction IF) #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) {
Exemple (Instruction IF)
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int age = 20;
if (age >= 18)
{
printf ("Vous etes majeur !\n");
}
return 0;
}
Le "else" pour dire "sinon" if (age >= 18) // Si l'âge est supérieur ou
Le "else" pour dire "sinon"
if (age >= 18) // Si l'âge est supérieur ou égal à 18
{
printf ("Vous etes majeur !");
}
else // Sinon
{
printf ("Ah c'est bete, vous etes mineur !");
}
Plusieurs Conditions Exemples: 1. if (age > 18 && age < 25) 2. if (age
Plusieurs Conditions
Exemples:
1. if (age > 18 && age < 25)
2. if (age > 30 || argent > 100000)
{
printf("Bienvenue chez PicsouBanque !");
}
else { printf("Hors de ma vue, miserable !"); }
3. if (!(age < 18))
4. if (age == 18) { printf ("Vous venez de devenir majeur !"); }
Un test avec une variable Une variable à laquelle on fait prendre les valeurs 0
Un test avec une variable
Une variable à laquelle on fait prendre les valeurs 0 et 1
est un booléen.
0 = Faux
1 = Vrai
Exemple:
int majeur = 1;
if (majeur)
{
printf("Tu es majeur !");
}
else {
Si votre variable est censée contenir
un nombre, faites un test sous la
forme "if (variable == 1)".
Si votre variable est censée contenir
un booléen (c'est-à-dire soit 1 soit 0
pour dire vrai ou faux), faites un test
sous la forme "if (variable)".
printf("Tu es mineur");
}
L’instruction Switch Syntaxe de l'instruction switch switch (expression) { case constante_1 : [
L’instruction Switch
Syntaxe de l'instruction switch
switch (expression) {
case constante_1 : [ suite_d'instructions_1 ]
case constante_2 : [ suite_d'instructions_2 ]
case constante_n : [ suite_d'instructions_n ]
[ default : suite_d'instructions ]
}
L’instruction Switch(Exemple) if (age == 2) { printf("Un bébé"); } else if (age == 6)
L’instruction Switch(Exemple)
if (age == 2)
{
printf("Un bébé"); }
else if (age == 6)
{
printf("Un enfant"); }
else if (age == 12)
{
printf("Un jeune"); }
else if (age == 16)
{
printf("Un adolescent"); }
else if (age == 18)
{
printf("Un adulte");}
else if (age == 68)
{
printf("Un papy");}
else
{printf("Je n'ai aucune description pour ton âge");}
L’instruction Switch(Exemple) switch (age) { case 2: printf("Un bébé"); break; case 6: printf("Un
L’instruction Switch(Exemple)
switch (age)
{
case 2:
printf("Un bébé"); break;
case 6:
printf("Un gamin"); break;
case 12:
printf("Un jeune"); break;
case 16:
printf("Un adolescent"); break;
case 18:
L'instruction break;
commande en fait à
l'ordinateur de "sortir"
printf("Un adulte"); break;
des accolades.
case 68:
printf("Un papy"); break;
default:
printf("Je n'ai aucune description pour ton age");
break;
}
Les boucles  L'ordinateur lit les instructions de haut en bas.  Une fois arrivé
Les boucles
 L'ordinateur lit les instructions de haut en bas.
 Une fois arrivé à la fin de la boucle, il repart à la première
instruction.
 Il recommence alors à lire les instructions de haut en bas
et il repart au début de la boucle.
La boucle While Syntaxe: while (/* Condition */) { // Instructions à répéter } Exemple:
La boucle While
Syntaxe:
while (/* Condition */)
{ // Instructions à répéter }
Exemple:
int nombreEntre = 0;
Tant que l’utilisateur n'a
pas tapé le nombre 47,
while (nombreEntre != 47)
on recommence à lui
demander le nombre.
{ printf("Tapez le nombre 47 ! ");
scanf("%d", &nombreEntre);
}
La boucle While Exécution Exemple: int compteur = 0; while (compteur < 10) { printf("La
La boucle While
Exécution
Exemple:
int compteur = 0;
while (compteur < 10)
{
printf("La variable compteur vaut %d\n",compteur);
compteur++;
}
La boucle Do While Syntaxe: Do { // Instructions à répéter } while (/* Condition
La boucle Do While
Syntaxe:
Do { // Instructions à répéter }
while (/* Condition */)
Exemple:
main()
{ int n ;
Le programme demande un
nombre à l'utilisateur tant
qu'il ne fournit pas une
valeur positive.
do
{ printf ("donnez un nb >0 : ") ;
scanf ("%d", &n) ;
}
while (n<=0)
printf ("vous avez fourni %d\n", n) ;
La boucle For Syntaxe: FOR (exp1;exp2;exp3) { // Instructions à répéter } Exp1 « L'initialisation
La boucle For
Syntaxe:
FOR (exp1;exp2;exp3)
{ // Instructions à répéter }
Exp1 « L'initialisation » cette première instruction est utilisée pour
préparer notre variable .
Exp2 « La condition » comme pour la boucle while, c'est la condition qui
dit si la boucle doit être répétée ou pas. Tant que la condition est vraie, la
boucle for continue.
Exp3 « L'incrémentation » cette dernière instruction est exécutée à la fin
de chaque tour de boucle pour mettre à jour la variable . La quasi-totalité du
temps on fera une incrémentation, mais on peut aussi faire une
décrémentation (variable--;) ou encore n'importe quelle autre opération
(variable += 2; pour avancer de 2 en 2 par exemple).
La boucle For Exemple: int compteur = 0; while (compteur < 10) While { printf("Le
La boucle For
Exemple:
int compteur = 0;
while (compteur < 10)
While
{
printf("Le nombre est toujours inf à 10 !\n");
compteur++;
}
Ceci est équivalent à
int compteur;
for (compteur = 0 ; compteur < 10 ; compteur++)
For
{
printf("Le nombre est toujours inf à 10 !\n");
}