Vous êtes sur la page 1sur 16

28/02/2018

Informatique SMP/S4
2017 - 2018
Prof. Abdelaziz Bouroumi
a.bouroumi@gmail.com

28/02/2018 Informatique SMP.S4, © 2018 A. Bouroumi 03. Structure générale d’un programme + Bases C/C++

03. Structure générale d’un programme +


Bases de la programmation C et C++

28/02/2018 Informatique SMP.S4, © 2018 A. Bouroumi 03. Structure générale d’un programme + Bases C/C++

1
28/02/2018

Introduction 3

• Dans les deux séances précédentes du cours nous avons


vu deux choses très importantes:
1. Les objectifs du module, son programme, son intérêt
pour les étudiants en physique, et la méthode de travail
recommandée pour tirer le meilleur profit de ce module,
2. Les étapes de résolution d’un problème par ordinateur, et
un exemple concret qui illustre ces différentes étapes.
• Dans cette séance nous allons voir deux autres choses non
moins importantes:
– La structure générale d’un programme C/C++,
– Les concepts de base de la programmation C/C++.
28/02/2018 Informatique SMP.S4, © 2018 A. Bouroumi 03. Structure générale d’un programme + Bases C/C++

Introduction (2) 4

• La structure générale d’un programme C++ peut être déduite


d’une analyse détaillée de l’exemple de programme développé
dans le cours précédent,
• Celle d’un programme C peut être déduite de l’analyse de
l’équivalent C de ce programme.
• Plusieurs concepts de base de la programmation C/C++ peuvent
également être découverts à travers l’analyse de ces deux
programmes, ligne par ligne, instruction par instruction, et
symbole par symbole.
• Une fois ces concepts de base bien compris, ils doivent être
respectés dans l’écriture de nouveaux exemples de programmes.
28/02/2018 Informatique SMP.S4, © 2018 A. Bouroumi 03. Structure générale d’un programme + Bases C/C++

2
28/02/2018

Analyse de l’exemple equa2d.cpp 5

28/02/2018 Informatique SMP.S4, © 2018 A. Bouroumi 03. Structure générale d’un programme + Bases C/C++

Ligne 1: // equa2d.cpp 6

• Cette ligne est une ligne de commentaire.


• Les commentaires servent à documenter les programmes.
• Ils sont utiles pour les programmeurs mais pas pour le
compilateur, qui les ignore.
• Un commentaire qui commence par le symbole "//" se
termine à la fin de la ligne.
• Des commentaires plus longs peuvent être utilisés. Ils doivent
être délimités par les symboles " /*" et "*/" et peuvent
s’étaler sur plusieurs lignes.
• Les commentaires ne sont pas obligatoires mais très utiles
pour faciliter la lisibilité du code.
28/02/2018 Informatique SMP.S4, © 2018 A. Bouroumi 03. Structure générale d’un programme + Bases C/C++

3
28/02/2018

7
Lignes 2 et 3: #include <iostream> et #include <math.h>

• Ces deux lignes contiennent des directives d’inclusion.


• Une directive d’inclusion sert à inclure dans le code source d’un
module le contenu d’un fichier texte externe.
• Elle doit commencer par le symbole « # » suivi du mot réservé
« include » et du nom du fichier à inclure.
• Le fichier à inclure iostream contient les déclarations de la
bibliothèque standard des entrées/sorties en C++ (dans laquelle
sont définis les objets cout et cin qui représentent l’écran et le
clavier).
• Le fichier math.h contient les déclarations des fonctions de la
bibliothèque mathématique de C (comme la fonction sqrt).
• Les délimiteurs "<" et ">" indiquent que le fichier à inclure est un
fichier standard, dont le chemin d’accès est prédéfini.

28/02/2018 Informatique SMP.S4, © 2018 A. Bouroumi 03. Structure générale d’un programme + Bases C/C++

Lignes 7 à 23: int main() {….; return 0;} 8

• Ces lignes contiennent la définition de la fonction principale du


programme.
• Tout programme C ou C++ doit comporter une fonction principale
appelée main.
• L’exécution de tout programme C ou C++ commence toujours par
la première instruction de sa fonction main,
• Le début de la fonction est indiqué par l’accolade ouvrante "{" et sa
fin par l’accolade fermente "}" .
• Les sorties sur écran sont assurées par l’objet cout (console output)
et l’opérateur "<<" de la bibliothèque iostream de C++.
• Les entrées au clavier sont assurées par l’objet cin (console input) et
l’opérateur ">>" de la même bibliothèque iostream.
• Le calcul de la racine carée de delta est assuré par la fonction "sqrt"
de la bibliothèque mathématique de C.
28/02/2018 Informatique SMP.S4, © 2018 A. Bouroumi 03. Structure générale d’un programme + Bases C/C++

4
28/02/2018

Ligne 8: float a, b, c, x1, x2, delta; 9

• Cette ligne contient l’instruction de déclaration des 6 variables utilisées par


le module.
• Comme pour les objets d’une bibliothèque, les variables utilisées par un
programme doivent être déclarées avant leur première utilisation dans une
instruction exécutable.
• Les déclarations des objets d’une bibliothèque se trouvent dans le fichier à
inclure. Celles des variables définies par l’utilisateur doivent se faire
explicitement à l’aide d’instructions de déclaration.
• L’instruction « float a, b, c, x1, x2, delta; » informe le compilateur que
dans la suite du programme les noms a, b, c, x1, x2 et delta désignent des
variables réelles (type float).
• Sans cette déclaration le compilateur n’a aucun moyen de comprendre la
signification des noms de ces variables.

28/02/2018 Informatique SMP.S4, © 2018 A. Bouroumi 03. Structure générale d’un programme + Bases C/C++

Lignes 9, 10 et 11: instructions d’E/S 10

• La ligne 9 contient deux instructions différentes:


– cout << "a= "; qui fait appel à l’objet cout et
l’opérateur << de la bibliothèque d’entrée/sortie de C++
pour afficher le message "a= " (sans les guillemets qui
servent à délimiter la chaîne de caractères à afficher),
– cin >> a; qui fait appel à l’objet cin et à l’opérateur
>> de la même bibliothèque pour lire au clavier la valeur
de la variable a la stocker dans la zone mémoire
correspondante.
• Les instructions des lignes 10 et 11 font la même chose
pour les variables b et c.
28/02/2018 Informatique SMP.S4, © 2018 A. Bouroumi 03. Structure générale d’un programme + Bases C/C++

5
28/02/2018

Ligne 12: delta = b*b – 4*a*c; 11

• L’instruction "delta = b*b – 4*a*c;" est une instruction


d’affectation.
• Elle permet d’affecter à la variable delta la valeur de l’expression
arithmétique b*b – 4*a*c,
• Les valeurs de a, b et c utilisées pour le calcul de cette expression
sont celles saisies au clavier et stockées en mémoire dans les zones
réservées à ces variables au moment de leur déclaration,
• La valeur calculée sera stockée dans la zone mémoire réservée à la
variable delta,
• L’opérateur d’affectation est représenté par le symbole "=",
• Il ne doit pas être confondu avec l’opérateur de comparaison "==",
• L’expression logique "a==b" traduit la condition "a est égal à b".
28/02/2018 Informatique SMP.S4, © 2018 A. Bouroumi 03. Structure générale d’un programme + Bases C/C++

12
Ligne 22: return 0;
• L’instruction "return 0;" permet de quitter le programme
en retournant le code 0 au système d’exploitation.
• La valeur de retour 0 indique que l’exécution du programme
s’est terminée normalement,
• Le mot "int" qui précède le nom main à la ligne 6 signifie
que le programme doit retourner au système d’exploitation un
nombre entier qui indique si le programme est terminé
normalement (code 0) ou non (code non nul),
• Pour une sortie anormale du programme, une valeur non nulle
doit être retournée. Exemple: if (a==0) exit(1);
• La fonction exit permet de quitter le programme avant sa fin
normale (c’est une sortie de secours).
28/02/2018 Informatique SMP.S4, © 2018 A. Bouroumi 03. Structure générale d’un programme + Bases C/C++

6
28/02/2018

Equivalent C du programme equa2d.cpp 13

28/02/2018 Informatique SMP.S4, © 2018 A. Bouroumi 03. Structure générale d’un programme + Bases C/C++

14

Comparaison de equa2d.cpp et equa2d.c

28/02/2018 Informatique SMP.S4, © 2018 A. Bouroumi 03. Structure générale d’un programme + Bases C/C++

7
28/02/2018

Eléments communs à C et C++ 15

• Les délimiteurs /* et */ • La fonction printf


• Les délimiteurs // et  • La fonction scanf
• Le symbole # • Les délimiteurs " et "
• La directive include • Le méta-caractère \n
• Les délimiteurs < et > • L’instruction return
• Le symbole ";" • Le type int
• La fonction main • Le type float
• Les parenthèses • Le code de retour 0
• Les délimiteurs { et } • La fonction exit

28/02/2018 Informatique SMP.S4, © 2018 A. Bouroumi 03. Structure générale d’un programme + Bases C/C++

Eléments propres à C++ 16

• La classe iostream
• Les espaces de nom
• L’instruction using
• L’objet cout
• L’opérateur <<
• L’objet cin
• L’opérateur >>
• endl

28/02/2018 Informatique SMP.S4, © 2018 A. Bouroumi 03. Structure générale d’un programme + Bases C/C++

8
28/02/2018

Remarques 17

• C étant inclus dans C++, il n’y a pas d’éléments propres à C et


qui ne sont pas compréhensibles par le compilateur C++.
• Un programme C peut donc toujours être compilé par un
compilateur C++.
• Un compilateur C, par contre, ne peut pas compiler un code
C++.
• Dans les applications du monde réel, les codes exécutables
produits par un compilateur C sont généralement plus optimisés
que ceux produits par un compilateur C++ (taille plus petite,
exécution plus rapide).
• C reste le langage de choix pour les applications qui demandent
une rapidité d’exécution.
28/02/2018 Informatique SMP.S4, © 2018 A. Bouroumi 03. Structure générale d’un programme + Bases C/C++

18

Structure générale d’un programme C/C++

28/02/2018 Informatique SMP.S4, © 2018 A. Bouroumi 03. Structure générale d’un programme + Bases C/C++

9
28/02/2018

Structure d’un programme C 19

• Un programme C est composé d’un ou de plusieurs modules


qui peuvent être compilés séparément avant d’être liés pour
produire un exécutable.
• Chaque module peut contenir des déclarations et/ou définitions
de données et de fonctions.
• Une fonction est un sous programme qui réalise une tâche utile
et réutilisable (comme la fonction sqrt de la bibliothèque
math).
• Parmi les fonctions d’un programme C il doit y avoir une et une
seule qui s’appelle main (fonction principale).
• L’exécution d’un programme C commence toujours par la
première instruction de sa fonction main. Elle se termine
normalement par l’instruction return 0;.
28/02/2018 Informatique SMP.S4, © 2018 A. Bouroumi 03. Structure générale d’un programme + Bases C/C++

Structure générale d’un programme C++ 20

• En plus de tous les constituants d’un programme C, un


programme C++ peut aussi utiliser des classes et des objets
comme:
– la classe des flux d’entrée/sortie iostream, et
– les objets cout et cin de cette classe.
• Le concept de classe constitue la base de la programmation
orientée objet (POO), supporté par C++ mais pas par C.
• Le style POO est plus général et mieux adapté pour le
développement de logiciels de grande taille que le style de
programmation structurée, qui se base uniquement sur le
concept de fonction.
28/02/2018 Informatique SMP.S4, © 2018 A. Bouroumi 03. Structure générale d’un programme + Bases C/C++

10
28/02/2018

Rôle de la fonction main 21

• C’est d’appeler d’autres fonctions en utilisant des instructions


qui doivent être conformes aux caractéristiques de chaque
fonction appelée.
• Ces autres fonctions réutilisables peuvent provenir:
– du même fichier que main (module principal),
– d’autres modules qui font partie du même programme,
– de bibliothèques externes standards, ou
– de bibliothèques externes non standards.
• En plus des appels à d’autres fonctions, la fonction main peut
bien sûr contenir d’autres types d’instructions: déclarations de
données locales, structures de test ou de boucles, calcul, etc.

28/02/2018 Informatique SMP.S4, © 2018 A. Bouroumi 03. Structure générale d’un programme + Bases C/C++

22
Fonctions réutilisables

• Une fonction réutilisable est un sous-programme structuré sous


forme d’un bloc de code nommé,
– qui permet de réaliser une tâche bien déterminée, utile et
routinière,
– qu’on programme une seule fois, et
– qu’on peut réutiliser pour toujours sans avoir à la reprogrammer.
• En plus des nombreuses fonctions de ses différentes bibliothèques
standards, C donne la possibilité aux programmeurs de
– créer de nouvelles fonctions,
– les rassembler au sein de modules séparément compilables,
– les réutiliser dans différents programmes.

28/02/2018 Informatique SMP.S4, © 2018 A. Bouroumi 03. Structure générale d’un programme + Bases C/C++

11
28/02/2018

23
Nécessité de déclarer les fonctions

• Pour pouvoir vérifier si l’appel à une fonction est correct ou


non le compilateur a besoin d’informations sur:
– le nom de la fonction,
– le type de la valeur qu’elle retourne à ses appelants,
– le nombre et l’ordre des paramètres dont elle dépend,
– Le type et le mode de passage (par valeur ou par adresse)
de chacun de ces paramètres.
• Ces informations constituent l’en-tête (header) de la fonction
et doivent être précisées à travers une instruction de
déclaration de la fonction.
• Exemple: float delta(float, float, float);
28/02/2018 Informatique SMP.S4, © 2018 A. Bouroumi 03. Structure générale d’un programme + Bases C/C++

Fichiers d’en-têtes (à inclure dans d‘autres fichiers) 24

• Les meilleures fonctions sont celles qui peuvent être


réutilisées dans différents programmes (comme les
fonctions printf, scanf, sqrt, …), et les meilleurs
programmeurs sont ceux qui écrivent du code réutilisable.
• Pour éviter d’avoir à re-déclarer de telles fonctions dans
chaque nouveau programme qui les appelle, on utilise une
astuce qui consiste à:
− Regrouper les instructions de déclaration de ces fonctions
dans un fichier d’en-tête,
− Inclure ce fichier dans tout module qui en a besoin.
• C’est le rôle de la directive #include.
28/02/2018 Informatique SMP.S4, © 2018 A. Bouroumi 03. Structure générale d’un programme + Bases C/C++

12
28/02/2018

Traitement des directives d’inclusion 25

• Les directives d’inclusion sont traitées par un programme


particulier, appelé préprocesseur, dont l’exécution est
automatiquement lancée au début de chaque compilation.
• L’option –E des compilateurs gcc et g++ permet d’arrêter la
compilation après l’exécution des directives d’inclusion par le
préprocesseur. Le résultat est un code source prétraité (complété
par les informations incluses).
• Les noms des fichiers à inclure doivent être délimités par:
– les symboles <  et > dans le cas de fichiers standards,
– des guillemets dans le cas de fichiers non standards.
• Les noms de fichiers d’en-têtes se terminant par ".h" sont
propres à C.
28/02/2018 Informatique SMP.S4, © 2018 A. Bouroumi 03. Structure générale d’un programme + Bases C/C++

Constituants d’un module principal C/C++ 26

• Le module principal d’un programme est le module qui


contient la fonction principale main.
• Les constituants d’un tel module sont, généralement:
1. Commentaires
2. Directives d’inclusion
3. Déclarations de fonctions secondaires
4. Déclarations des données globales
5. Définition de la fonction principale
6. Définitions des fonctions secondaires
• Les petits programmes peuvent comporter un seul module et
une seule fonction (la fonction main).
28/02/2018 Informatique SMP.S4, © 2018 A. Bouroumi 03. Structure générale d’un programme + Bases C/C++

13
28/02/2018

Rappel: compilation par ligne de commande 27

• Cas d’un programme C++ mono-module (tp1.cpp):


– Compilation seule (sans édition des liens):
g++ -c tp1.cpp   création de tp1.o (nom par défaut)
ou
g++ -c tp1.cpp –o eq2d.o   création de eq2d.o
– Edition des liens:
g++ tp1.o   création de a.out (nom par défaut)
ou
g++ tp1.o –o tp1   création de tp1 (exécutable)
• Cas d’un programme C: il suffit de remplacer g++ par
gcc et « .cpp » par « .c »
28/02/2018 Informatique SMP.S4, © 2018 A. Bouroumi 03. Structure générale d’un programme + Bases C/C++

28
Rappel: étapes et outils de développement (++)
(Editeur de textes) Édition de texte

(Préprocesseur) Prétraitement

(Compilateur) Compilation Test et mise au point

(Editeur de liens) Édition des liens

Exécutable
(Chargeur du SE)
28/02/2018 Informatique SMP.S4, © 2018 A. Bouroumi 03. Structure générale d’un programme + Bases C/C++

14
28/02/2018

Résumé 29

• La programmation C se base sur le concept de fonction.


• En plus de fonctions, la programmation C++ se base aussi sur les
concepts de classes et d’objets.
• Les bibliothèques standards de C sont pleines de fonctions utiles et
réutilisables dans différents programmes.
• En plus de ces fonctions standards, C donne la possibilité de créer de
nouvelles fonctions et de les regrouper au sein de modules ou
bibliothèques personnelles réutilisables.
• Les bibliothèques standards de C++ sont pleines de classes et
d’objets réutilisables dans différents programmes.
• En plus de ces classes et objets standards, C++ donne la possibilité
de créer de nouvelles classes et de nouveaux objets réutilisables.
28/02/2018 Informatique SMP.S4, © 2018 A. Bouroumi 03. Structure générale d’un programme + Bases C/C++

Suite du cours 30

• Dans la suite de ce cours nous allons apprendre à:


– utiliser les fonctions standards de C,
– créer de nouvelles fonctions non standards,
– utiliser certains objets de certaines classes de certaines
bibliothèques de C++, comme iostream (input output
stream), string (chaînes de caractères), vector (tableaux
dynamiques), ifstream (input file stream) et ofstream
(outpout file stream).
• La création de nouvelles classes et de nouveaux objets est
par contre en dehors du programme de ce module.

28/02/2018 Informatique SMP.S4, © 2018 A. Bouroumi 03. Structure générale d’un programme + Bases C/C++

15
28/02/2018

31
Importance des TP et du travail collaboratif

• Selon l’institut de recherche en styles d’apprentissage


(www.learningstyles.org) les étudiants retiennent en
moyenne:
– 10 % de ce qu’ils lisent,
– 20 % de ce qu’ils entendent,
– 30% de ce qu’ils regardent,
– 50 % de ce qu’ils entendent et regardent,
– 70 % de ce qu’ils disent, et
– 90 % de ce qu’ils disent et réalisent.
• Ceci est vrai pour tout ce qu’on cherche à apprendre.
28/02/2018 Informatique SMP.S4, © 2018 A. Bouroumi 03. Structure générale d’un programme + Bases C/C++

16

Vous aimerez peut-être aussi