Atelier de Programmation C
1
Objectifs
Apprendre les bases de la programmation
Se familiariser aux vocabulaires de programmation
Ecrire et compiler un programme en langage C
2
Initiation au langage C
3
Introduction générale
L’algorithme sert à :
Trouver les bonnes variables
Imbriquer les boucles dans le bon sens
Enchainer les si-alors sinon dans le bon ordre
Le programme sert à :
Coder l’algorithme afin que l’ordinateur puisse exécuter les actions
décrites
Doit être écrit dans un langage compréhensible par l’ordinateur
Un programme est donc une suite ordonnée d’instructions
élémentaires codifiées dans un langage de programmation
Classification des langages de programmation
Les langages de bas niveau
Plus proche du langage machine
Utilise des instructions complexes
Exemple : langage assembleur ASM
Les langages de haut niveau
Plus proche du langage humain
Permet de développer de façon plus souple et rapide
Exemple : Pascal, Visual Basic, Java, C/C++
5
Langage de prog. C : Introduction
Crée dans les années 1970s comme outil de
développement du système d’exploitation UNIX
Avantages du langage C
Normalisé
ANSI (American National Standards Institute) en 1983
ISO (International Standardization Organisation) en 1990
Général : Le langage C n’est pas orienté vers un domaine
d’applications particulières
Modulaire: Un programme C est écrit sous forme de sous-
programme appelés modules
Structuré et typé : Il offre plusieurs structures de contrôle et
types de données
6
Réalisation et exécution d’un programme C
Conception du programme :
Analyser l’application à programmer
Dégager les données à manipuler et les opérations à réaliser
Choisir les meilleurs algorithmes
Ecriture du programme :
Traduire le résultat de la conception en un programme écrit dans le
langage de prog.
Compilation :
Traduction du prog. en langage machine (utiliser un compilateur)
Création d’un fichier exécutable, sinon génération d’erreurs
Exécution :
Envoyer le fichier exécutable à la machine pour exécution
Exécution séquentielle des instructions (les unes après les autres)
Si erreurs a l’exécution alors retour en phase 2 ou même 1
7
Structure d’un programme en C
#include<>
Bibliothèques …
int fonc1(…) {
…
Fonctions }
secondaires
void fonc2(…) {
…
}
void main()
{
int i; //bloc déclaration
Programme …
principal
i=0; //bloc d’instructions
fonc1(…) ;
fonc2(…) ;
…
}
8
Structure d’un prog. C : Programme principal
Chaque programme en C doit renfermer obligatoirement une
fonction principale dont le nom main est imposé
Il ne peut y avoir qu'une seule fonction main par programme
L’exécution du programme commence avec la 1ère instruction de
la fonction main et se termine avec la dernière
9
Structure d’un prog. C : Bibliothèques
La directive #include permet de faire appel à des fonctions
prédéfinies (fonctions d’entrées/sorties, fonctions
mathématiques, etc.)
Ces fonctions sont définies dans des fichiers munis de l’extension .h
Syntaxe : #include<nom_fichier.h>
Exemple :
stdio.h : opérations de gestion des entrées-sorties
math.h : fonctions mathématiques
graph.h : fonctions graphiques
time.h : date et heure
10
Structure d’un prog. C : les fonctions
secondaires
La notion de procédures n’existe pas en C
Une fonction doit avoir un type de retour
Une fonction peut prendre zéro ou plusieurs arguments en
paramètres
En C, une fonction secondaire doit être déclarée avant toute
appel à celle-ci
11
Structure d’un prog. C : les fonctions
secondaires
#include <stdio.h>
/*
* Calculer le cube d'un réel x
*/
double cube (double x){
return (x*x*x);
}
int main(void){
double c;
c = cube (2.0);
printf ("Le cube est %f", c);
12
Structure d’un prog. C : les commentaires
Les commentaires permettent d’introduire des explications aux
endroits critiques, afin d’en faciliter la compréhension
Un commentaire sur une seule linge
Exemple : // Ceci est un commentaire sur une ligne
Un commentaire peut s’étaler sur plusieurs lignes
Exemple : /* un commentaire
qui s’étend
sur plusieurs lignes */
13
Syntaxe : symboles mots clés, règles
Symboles spéciaux
[ ] \ { } .,;:# = < > - * / ( ) ! ?
Mots réservés
if else int char float double while for switch case const void
break continue struct signed unsigned return do etc.
Règles syntaxiques
Point virgule ; après chaque instruction
Accolade ouvrante { au début et fermante } à la fin de chaque
fonction, de chaque bloc d’instructions
Contraintes imposées par le langage
Toute variable apparaissant dans le bloc d’instructions doit être
déclarée
14
Déclaration des variables
Syntaxe : type_variable nom_variable;
nom_variable est un identificateur :
Composé de lettres majuscules, lettres minuscules, chiffres de 0 à 9 et
le tiret-bat ( _ )
Pas de caractère spéciaux, pas de blancs
ne peut pas commencer par un chiffre
Noms de variables valides
X y15 Rose_1 _temps
mot magicien TauxIntere MOT
Noms de variables non valides
4ème “a” titre-vedette titre vedette
15
Les types
Un type est un nom pour un ensemble de valeurs. Un
type est muni d’opérateurs. Donc:
Déclarer une variable sert aussi à connaître les
opérateurs applicables à (la valeur de) la variable
Les types de base en C:
int : entier
char : caractère (code ASCII)
float : nombre à virgule flottante en simple précision
double : nombre à virgule flottante en double précision
void : représente l’absence de type. Par exemple une
fonction de type void ne retourne pas de valeur.
16
Les qualificateurs
short : s’applique aux entiers (short int : entier codé sur 2 octets) ;
long : s’applique aux entiers (long int : entier codé sur 4 octets) et
aux nombres à virgule flottante double précision (long double :
double précision étendue) ;
signed : s’applique au type char (de -128 à 127) ou aux types
entiers (de −2n−1 à 2n−1 − 1, n étant le nombre de bits utilisés) ;
unsigned : s’applique au type char (de 0 à 255) ou aux types
entiers (de 0 à 2n − 1)
Les qualificateurs utilisés seuls s’appliquent par défaut à int
17
Les qualificateurs
18
Remarques
Pas de type booléen :
faux = 0,
vrai = n’importe quelle autre valeur
Le type caractère n’existe pas de manière indépendante en C
caractère représenté par "char" = nombre entier (code ASCII)
Les caractères sont entrés entre quottes ‘a’(==97), ‘b’(==98),
‘0’(==48), ‘A’(==65), etc.
Pas de type chaîne de caractères
chaîne de caractères = tableau de caractères et donc tableau
d’entiers.
19
Déclaration des constantes
Syntaxe : const type nom_constante = valeur;
nom_constante est un identificateur qui sert à nommer une valeur
Une constante sert souvent à simplifier la lisibilité d’un programme
Exemples:
const int dix = 10;
const float PI = 3.14159
Avertissement
On ne peut pas changer la valeur d’une constante dans le programme
20
Les opérateurs
Affectation
identificateur_de_variable = expression
L’expression située à droite du signe = est évaluée et sa valeur
est affectée à la variable désignée par
identificateur_de_variable située à gauche du signe égal
Opérateurs arithmétiques
+ Addition
- soustraction
* multiplication
/ Division entière ou réelle selon le type des opérandes
% Modulo : reste de la division entière
21
Les opérateurs
Opérateurs de compraraison
== Egalité
!= Différent
>,>=,<,<= Supérieur, supérieur ou égal, inférieur, inférieur ou égal
Opérateurs logiques
! Négation unaire (NOT)
&& ET logique binaire
|| OU logique binaire
22
Les opérateurs de traitement de bit
Opérateurs composites
Des opérateurs composites sont construits à partir de
l’opérateur d’affectation et d’opérateurs binaires.
ident_var opérateur_binaire= expression
≡
ident_var = ident_var opérateur_binaire expression
Exemple : (+, -, *, /, %)
i += 3 est équivalent à i = i + 3
i *= 5 est équivalent à i = i * 5
23
Les opérateurs de traitement de bit
Opérateur conditionnel
L’opérateur conditionnel permet à une expression d’avoir une
valeur conditionnellement à une autre valeur.
condition ? val1 : val2
Si condition est différent de 0, l’expression prendra la valeur
val1. Si condition vaut 0, l’expression prendra la valeur val2.
Exemple :
max= x>y? x : y
24
Conversion de type
Lorsque des opérandes d’un opérateur sont de type différent,
ils sont convertis en un type commun
Par exemple, dans l’expression 2.0 + 3, l’entier 3 sera converti en
double. Il s’agit d’une conversion implicite
Il est possible de forcer une conversion (conversion explicite)
en utilisant un opérateur conversion (cast)
(nom_type) expression
La globalité de l’expression est convertie dans le type
nom_type
25
Instructions d’entrée-sortie
L’instruction printf() permet d’afficher des valeurs (des
résultats) à l’écran
L’instruction scanf() permet de saisir (lire) des données
entrées au clavier
Pour chaque variable, un type de conversion est spécifié.
Ce type de conversion est décrit par les caractères qui
suivent le caractère “%”. %d int
%ld long
%hd short
%f float
%lf double
%c char (caractère)
%s chaîne de caractères
26
Instructions d’entrée-sortie
scanf("FORMAT", &nom_variable)
FORMAT permet de spécifier le type de la variable lue.
Par exemple, "%d" pour un entier, "%f" pour un réel, …
La variable dit avoir été déclarée (avec le bon type)
Exemple
int i;
scanf("%d",&i);
Si l’utilisateur tape 33, la valeur de la variable i est 33.
Si la valeur saisie n’est pas du type de la variable alors une
erreur se produit
27
Instructions d’entrée-sortie
scanf("FORMATS", liste des variables)
Exemple
int i, j, n;
scanf("%d %d %d",&i, &j, &n);
Si l’utilisateur tape 33 44 22, la valeur de la variable i est 33, la
valeur de j est 44 et la valeur de n est 22,
28
Instructions d’entrée-sortie
printf("FORMAT", expression)
printf("FORMATS", liste d’expressions)
Exemple
int i=3;
float res=3.2+1.05
printf("%d",i); //affichage de 3 à l’écran
printf("%d",5+7); //affichage de 12 à l’écran
printf(“valeur de i= %d“,i); //affichage de valeur de i=3
printf(“pour i=%d res=%f”,i,res) //affichage de pour i=3 res=4.25
printf("FORMAT\n", expression) : affiche le résultat d’évaluation
de l’expression puis effectue un retour à la ligne
29
Exemple
#include <stdio.h>
int main () {
int i = 10;
float l = 3.14159;
char p[50] = "Bonjour";
printf ("%d bonjour %f %s\n", i, l, p);
scanf ("%d %f %s", &i, &l, p);
printf ("Apres lecture au clavier : %d %f %s\n", i, l, p);
Données en entrée
23 6.55957 salut
Données écrites en sortie standard
10 bonjour 3.141590 Bonjour
Apres lecture au clavier : 23 6.559570 salut
30