Académique Documents
Professionnel Documents
Culture Documents
1) Introduction
==> Programmer c’est quoi ?
Programmer signifie réaliser des « programmes informatiques ». Les
programmes demandent à l’ordinateur d'effectuer des actions.
==> Votre ordinateur est rempli de programmes comme:
*La calculatrice est un programme
* votre traitement de texte (Word)est un programme
* votre logiciel de chat «WhatsApp» est un programme
* les jeux vidéo sont des programmes.
!!! pour ouvrir un nouveau projet (le fichier sur lequel on va écrire notre
premier programme ) taper Ctrl+N . après bien sur d'installation de
logiciel Dev C++ , puis écrire le programme que vous souhaitez si vous
avez un peu d'expérience, sinon taper le programme proposé ci-dessous ,
à la fin d'écriture le code vous pouvez tester votre programme est ce qu'il
ça marche bien ou non en cliquant sur le boutton d’exécution qui se trouve
dans la figure suivante:
C'est ce « code minimum » que nous allons découvrir maintenant. Il
devrait servir de base pour la plupart de vos programmes en langage C.
* #include <stdio.h>
#include <stdlib.h>
Ce sont des lignes spéciales que l'on ne voit qu'en haut des fichiers
source. Ces lignes sont facilement reconnaissables car elles
commencent par un dièse #. Ces lignes spéciales, on les appelle
directives de préprocesseur (un nom compliqué, n'est-ce pas ?).
Ce sont des lignes qui seront lues par un programme appelé
préprocesseur, un programme qui se lance au début de la compilation.
Le mot include en anglais signifie « inclure » en français. Ces lignes
demandent d'inclure des fichiers au projet, c'est-à-dire d'ajouter des
fichiers pour la compilation. Il y a deux lignes, donc deux fichiers inclus.
Ces fichiers s'appellent stdio.h et stdlib.h. Ces fichiers existent déjà,
des fichiers source tout prêts. On verra plus tard qu'on les appelle des
bibliothèques. En gros, ces fichiers contiennent du code tout prêt
qui permet d'afficher du texte à l'écran.
* printf("Hello world!\n") ;
return 0 ;
Ces lignes à l'intérieur d'une fonction s’appellent instructions, Chaque
instruction est une commande à l'ordinateur. Chacune de
ces lignes demande à l'ordinateur de faire quelque chose. Par exemple la
première demande par l’ordinateur d’afficher le message Hello world! à
l'écran, puis passer à l'instruction suivante return 0 ; . Cette ligne indique
qu'on arrive à la fin de notre fonction main et demande de renvoyer la
valeur 0.
Exemple :
int N ;
float e , r ;
char letter ;
Les opérations sur des variables :
Syntaxe :
const Nom_Constante = valeur ;
Exemple : const float pi = 3.14 ;
Par ailleurs, il faut mettre le symbole & devant le nom de la variable qui
va recevoir la valeur.
Syntaxe:
printf ("message à l'écran");
Exemple:
printf (" Entrer votre email : ") ;
Remarque
Pour afficher la valeur d’une variable à l’écran on ajoute un symbole
spécial à l’endroit où l’on veut afficher la valeur de cette variable. .
int (%d ) float (%f ) char ( % c)
Exemple :
printf (" Votre âge est %d ans ", age) ;
Exercice d’application 1
Ecrire un programme qui affiche si un nombre entier saisi au clavier est
pair ou impair.
Remarque : il existe aussi un autre type de condition c’est la condition
composées.
Certains problèmes exigent de formuler des conditions qui ne peuvent être
exprimées sous la forme simple, par exemple la condition de note de
devoir doit être inclus dans l’intervalle [0, 20], cette condition est
composée de deux conditions simples qui sont note ≥0 et note ≤ 20
Exercice d’application 2
Ecrire un programme qui permet de faire une remarque d’une note saisi
au clavier ( si la note supérieur à 10 alors on affiche validé sinon non
validé (NB : la note comprise entre 0 et 20 ! ).
Exercice 1:
Ecrire un programme qui demande deux nombres m et n à l’utilisateur et
l’informe ensuite si le produit de ces deux nombres est positif ou négatif.
On inclut dans le programme le cas où le produit peut être nul.
Exercice 2:
Une boutique propose à ces clients, une réduction de 15% pour les
montants d’achat supérieurs à 200 dh. Ecrire un programme permettant de
saisir le prix total HT et de calculer le montant TTC en prenant en compte la
réduction et la TVA=20%.
1-3) Structure à choix multiples (Switch)
La condition if... else que l'on vient de voir est le type de condition le plus
souvent utilisé. Toutefois, le if... else peut s'avérer quelque peu… répétitif :
Prenons cet exemple :
Pour résoudre ce problème de la répétition de if else if else ….
plusieurs fois. On utilise une nouvelle structure à choix
multiples. Cette structure conditionnelle permet de choisir
le traitement à effectuer en fonction de la valeur ou de l’intervalle de
valeurs d’une variable ou d’une expression.
Syntaxe :
Lorsque l’ordinateur rencontre cette instruction, il vérifie la valeur de la
variable, et il la compare aux différentes valeurs.
Les valeurs sont évaluées dans l’ordre, les unes après les autres, et une
fois la valeur de variable est vérifiée l’action associée est exécutée. On
peut utiliser une instruction default (facultative), dont l’action sera exécutée
si aucune des valeurs évaluées n’a pas été remplie.
Exercice d’application :
Ecrire un programme permettant d’afficher le mois en lettre selon
le numéro saisi au clavier (janvier=1 , février =2 …….. décembre = 12).
Remarque : Vous devez mettre une instruction break ; à la fin de chaque
cas. Pour ignorer les instructions en dessous !
L'instruction break ; commande en fait à l'ordinateur de « sortir »
des accolades. Et instruction defaulf ; sera exécutée si aucune des
valeurs évaluées n’a pas été remplie.
Syntaxe :
Exemple:
Remarque : Si la structure while contient la condition ne devient jamais
fausse. Le programme tourne dans une boucle infinie et n’en sort plus.
Exemple :
Dans cet exemple nous avons une boucle infinie. L’ordinateur ne s’arrêtera
jamais d’afficher le message Bonsoir car la variable i qui est testée dans la
condition n’est jamais incrémenter. Alors pour résoudre le problème de
boucle infinie dans ce cas-là, on incrémente la variable i à chaque tour de
boucle pour afficher Bonsoir 10 fois exactement.
Exercice 1
Ecrire un programme qui calcule la somme S = 1+2+3+4+……..+ 10.
Utilisant la boucle while.
Exercice 2
Ecrire un programme qui calcule la somme S= 1+2+3+4+……..+ N, où N
saisi par l’utilisateur.
Exemple:
Cet exemple permet d’afficher le message bonjour 10 fois, et tant que la
condition est vraie la boucle répète l’exécution des instructions qui se
trouvent entre les accolades.
==> La partie d’initialisation est de type entier. Elle est initialisée par la
valeur initiale, la partie instruction(s) augmente cette valeur par 1
automatiquement à chaque tour de boucle jusqu'à la valeur finale.
==> Lorsque la valeur compteur vaut la valeur finale, le traitement est
exécuté une seule fois puis le programme sort de la boucle.
Exemple:
Exercice 1
Ecrire un programme qui calcule S=1+2+3+….+ 10. Utilisant la boucle for.
Exercice 2
Ecrire un programme qui calcule S=1+2+3+…+ N. Utilisant la boucle for.
Exercice 3
Ecrire un programme qui affiche la table de multiplication de 5. Utilisant la
boucle for.
Exercice 4
Ecrire un programme qui affiche la table de multiplication d’un entier saisie
par l’utilisateur, Utilisant la boucle for.
2-4) La boucle do ….While
Cette boucle permet de répéter les instructions qui se trouvent entre les
accolades tant que la condition est vraie.
Remarque : Cette boucle ne s’utilise en général que pour des menus, elle
est dangereuse car il n’y a pas de vérification de la condition avant d’y
entrer.
Ce type de boucle est très similaire à while, bien qu’un peu moins utilisé
en général.
La seule chose qui change en fait par rapport à while, c'est la position de
la condition. Au li eu d'être au début de la boucle, la condition est à la fin:
Syntaxe :
la boucle while pourrait très bien ne jamais être exécutée si la condition
est fausse dès le départ. Par exemple, si la condition est fausse dès le
début et on ne serait jamais rentré dans la boucle. et Pour la
boucle do… while, c'est différent: cette boucle s'exécutera toujours au
moins une fois même si la condition est fausse.
Il est donc parfois utile de faire des boucles de ce type, pour s'assurer
que l'on rentre au moins une fois dans la boucle.
Exemple:
En utilisant la boucle do…..while, on écrit un programme qui
affiche Bonjour 10 fois.
Exercice 1
Ecrire un programme qui calcule la somme S= 1+2+3+…+ 10. Utilisant la
boucle do…..while.
Exercice 2
Ecrire un programme qui affiche la table de multiplication de 5. Utilisant la
boucle do …. While.
Chapitre 3: Les Tableaux
1) Introduction
Imaginons que dans un algorithme, nous avons besoin d’un grand nombre
de variables, il devient difficile de donner un nom pour chaque variable.
Exemple :
Ecrire un programme permettant de saisir cinq notes et de les afficher
après avoir multiplié toutes les notes par trois.
==> La même instruction répète cinq fois. Imaginons que si l’on voudrait
réaliser ce programme avec 100 notes, cela devient très difficile.
==> Pour résoudre ce problème, il existe un type de données qui permet de
définir plusieurs variables de même type.
2) Définition
Un tableau est une suite d’éléments de même type. Il utilise plusieurs
cases mémoire à l’aide d’un seul nom. Comme toutes les cases portent le
même nom, elles se différencient par un numéro ou un indice.
Nous pouvons représenter schématiquement un tableau nommé Note
composé de cinq cases, dans la mémoire comme suit :
3) Tableau à une dimension
3-1) Déclaration
La déclaration d’un tableau permet d’associer à un nom d’une zone
mémoire composée d’un certain nombre de cases mémoires de même
type.
Syntaxe : type nom_tableau[taille_max] ;
Exemple : float Notes[40] ;
Remarques :
==> Le premier élément d’un tableau porte l’indice 0 .
==> La valeur d’un indice doit être un nombre entier
==> La valeur d’un indice doit être inférieure ou égale au nombre
d’éléments du tableau. Par exemple, avec le tableau tab[20], il est
impossible d’écrire tab[21] ou tab[26], ces expressions font référence à des
éléments qui n’existe pas.
==> L’utilisation de ces éléments se fait en suite, via le nom du tableau et
son indice. Ce dernier peut être soit une valeur (tab[3] ) , soit une variable
( tab [i] ) ou encore une expression ( tab[i+1] ).
==> Pour Faire un parcours complet sur un tableau, on utilise une boucle.
Exercice 1
Ecrire un programme permettant de saisir 20 notes et de les stocker dans
un tableau nommé Etudiant, puis les afficher.
Exercice 2 : Ecrire un programme permettant de saisir 20 notes et de les
afficher
après avoir multiplié toutes ces notes par un coefficient fourni par
l’utilisateur.
Exercice 3
Ecrire un programme permettant de saisir 12 notes et qui affiche la
moyenne de ces notes.
Exercice 4
Ecrire un programme permettant de saisir 12 notes et qui affiche le
maximum de ces notes.
Exercice 5
Ecrire un programme qui demande à l’utilisateur de taper 10 entiers qui
seront stockés dans un tableau. Le programme doit trier le tableau par
ordre croissant et doit afficher le tableau.
Exercice 6
4) Tableau à deux dimensions
Reprenons l’exemple des notes en considérant cette fois qu’un
étudiant a plusieurs notes (une note pour chaque matière). On
peut simplifier des choses comme suite.
Remarques:
==> L’utilisation d’une matrice se fait via son nom et ses indices.
Ces derniers peuvent être soient des valeurs (tab[1][3] ) , soient
des variables ( tab [i][j] ) ou encore des expressions ( tab[i+1]
[j] ).
==> Pour Faire un parcours complet sur une matrice, on utilise
deux boucles, l’une au sein de l’autre, c’est ce qu’on appelle les
boucles imbriquées. La première boucle pour parcourir les lignes
tandis que la deuxième est utilisée pour parcourir les éléments
de la ligne précisée par la boucle principale (la première boucle).
Exemple :
Ecrire un programme permettant de saisir les notes d’une
classe de 30 étudiants en 5 matières.
chapitre 4 : Les Pointeurs
1) Introduction
La plupart des langages de programmation offrent la possibilité
d'accéder aux données dans la mémoire de l'ordinateur à l'aide
de pointeurs, c’est-à-dire. à l'aide de variables auxquelles on peut
attribuer les adresses d'autres variables.
2) Adressage de variables
Avant de parler de pointeurs, il est indiqué brièvement les deux
modes d'adressage principaux, qui vont d'ailleurs nous
accompagner tout au long des chapitres suivants.
Exemple :
Soit A une variable contenant la valeur 10 et P un pointeur qui
contient l'adresse de A. En mémoire, A et P peuvent se présenter
comme suit:
3) Les pointeurs
Un pointeur est une variable spéciale qui peut contenir
l'adresse d'une autre variable En C, chaque pointeur est limité à
un type de données. Il peut contenir l'adresse d'une variable
simple de ce type ou l'adresse d'une composante d'un tableau de
ce type.
si un pointeur P contient l'adresse d'une variable A, on dit que P
pointe sur A.
Remarque :
Les pointeurs et les noms de variables ont le même rôle: Ils
donnent accès à un emplacement dans la mémoire interne de
l'ordinateur. Il faut quand même bien faire la différence:
*Un pointeur est une variable qui peut "pointer" sur différentes
adresses
*Le nom d'une variable reste toujours lié à la même adresse
Exemple :
Exemple d’application
4) Pointeurs et tableaux
4-1) introduction
En C, il existe une relation très étroite entre tableaux et pointeurs. Ainsi,
chaque opération avec des indices de tableaux peut aussi être exprimée à
l'aide de pointeurs. En général, les versions formulées avec des pointeurs
sont plus compactes et plus efficientes, surtout à l'intérieur de fonctions.
Mais, du moins pour des débutants, le 'formalisme pointeur' est un peu
inhabituel .
En résume :
Le nom d'un tableau est un pointeur constant sur le premier élément du
tableau.
Les deux expressions &tableau[0] et tableau sont équivalents.
Exercice d’application
Ecrire un programme permettant de saisir 5 entiers et de les stocker dans
un tableau nommé tableau, puis les afficher. (NB. utiliser la notion de
pointeur !!!!)
Exercice 1
Soit P un pointeur qui 'pointe' sur un tableau A:
int A[] = {12, 23, 34, 45, 56, 67, 78, 89, 90};
int *P; P = A;
Quelles valeurs ou adresses fournissent ces expressions:
a) *P+2
b) *(P+2)
c) &P+1
d) &A[4]-3
e) A+3
f) 1+(*P-10)
g) *(P + *(P+8)-A[7])
solution
a) 14
b) 34
c) l’adresse du 2éme élement du tableau
d) l’adresse du 2éme élement du tableau
e) l’adresse du 4éme élement du tableau
f) 3
g) 23
Exercice 2
Ecrire un programme qui range les éléments d'un tableau A du
type int dans l'ordre inverse. Le programme utilisera des pointeurs P1 et P2
et une variable numérique AIDE pour la permutation des éléments.