11
Preacutesentation du Cours
Objectif Montrer que lrsquoInformatique est un outil puissant pour reacutesoudre des problegravemes de Physique de Matheacutematique Scientifiques en geacuteneacuteral
Moyens Apprentissage des bases de la programmation impeacuterative au travers du laquo langage C raquo langage couramment utiliseacute dans la communauteacute scientifique
Organisation de lrsquoenseignement
ndash 10h30 de cours en 7 seacuteances de 1h30
ndash 12h de Tps en 8 seacuteances de 1h30
12
Preacutesentation du Cours
Mateacuteriel peacutedagogique
Les documents de cours le cours (laquo agrave trous raquo) les Tps une fiche de laquo savoir faire raquo par chapitre un meacutemento sont accessibles en ligne via la plateforme jlon sur lENT
Une cleacute USB pour enregistrer ses exercices effectueacutes en TP
Environnement de programmation utiliseacute en TP
Dev-C++ IDE (Integrated Development Environment)
Evaluation 2 controcircles continus en TP (50) un controcircle final sur la totaliteacute de lrsquoenseignement (50)
13
Preacutesentation du Cours
A la maison pour le choix de lIDE Pour les utilisateurs de Mac vous pouvez porter votre attention sur
CodeBlocks -gt httpwwwcodeblocksorgdownloads26mac
avec tutorial ici httplouloudeveloppezcomtutorielscppcodeblocks
Possibiliteacute dimporter un projet de dev-c++ utiliseacute en TP
ou bien
xcode -gt httpsitunesapplecomfrappxcodeid497799835mt=12ampign-mpt=uo3D2
avec un tutorial ici httpwwwsiteduzerocominformatiquetutorielsapprenez-a-programmer-en-cxcode-mac-os-seulement
Pour les utilisateurs de Windows 8 une nouvelle version de dev-c++ est neacutecessaire
httpwwwwindows8downloadscomwin8-dev-c--wdoxnrth
Pour les utilisateurs de Linux Ubuntu un paquet du logiciel CodeBlocks est disponible via la logithegraveque Ubuntu
Pour les autres systegravemes Linux aller directement sur la page de lIDE CodeBlocks httpwwwcodeblocksorgdownloads26
14
Preacutesentation du Cours
Me contacter
Courrier eacutelectronique guingnei3sunicefr
Petit Valrose 3egraveme eacutetage
15
Initiation agrave la programmation impeacuterative Langage C
L1 PC - SFFranck GUINGNE
Drsquoapregraves le cours de Francis Avnaim
16
Plan du cours
1 Introduction
2 Programmation impeacuterative Introduction au langage C
3 Les bases du langage C
4 Les fonctions du langage C
5 Deacutecoupage drsquoun programme en fonctionsMeacutethodologie de programmation
6 Eacutetude de deux applications Fichiers de donneacutees
17
Cours 1
18
1 Introduction
19
11 LrsquoInformatique aujourdrsquohui
Domaines drsquoapplications
Internet
Les machines
110
Domaines drsquoapplications de lrsquoInformatique
Nombreux et varieacutes (lrsquoInformatique a envahi notre quotidien exemples paiement par carte de creacutedit teacuteleacutephonie mobile preacutevisions meacuteteacuteo GPS etc)
Quelques grands domaines drsquoapplication
Sciences
Banque finance gestion
Industrie
Meacutedecine
Communication
111
Internet (bref) historique
Naissance en 1969 projet militaire Ameacutericain pour une transmission des informations deacutecentraliseacutee (Arpanet protocole IP)
Reacuteseau NSF (National Science Fondation) des universitaires Ameacutericains
Multiplication des reacuteseaux et laquo fusion raquo en un seul reacuteseau Internet
Creacuteation du Web par les chercheurs du Cern (Centre Europeacuteen de la Recherche Nucleacuteaire) en 1989
112
Evolution dInternetDATE NUMBER OF USERS WORLD POPULATION INFORMATION SOURCE
December 1995 16 millions 04 IDC
March 2000 304 millions 50 Nua Ltd
March 2005 888 millions 139 Internet World Stats
June 2010 1966 millions 287 Internet World Stats
Jun 2011 2110 millions 304 Internet World Stats
June 2012 2405 millions 343 Internet World Stats
Dec 2013 2802 millions 390 Internet World Stats
March 2014 (estimate)
2937 millions 407 Internet World Stats
113
Internet aujourdrsquohui
114
Internet aujourdrsquohui
World Wide Web 11 milliard de sites web en 2016 (source netcraft)
eMail 215 milliards envoyeacutes par jour en 2016 (hors spam)44 milliards de comptes mails en 2015
Reacuteseaux sociaux (Facebook Twitter Instagram etc)
Teacuteleacutephonie videacuteo confeacuterences chat (Skype Messenger etc)
Forums de discussion (IRC)
Commerce eacutelectronique
Transmission de fichiers (protocole ftp)
115
Les machines
Les laquo machines raquo se classifient en fonction de leur puissance
La puissance drsquoune machine se mesure en nombre drsquoopeacuterations par seconde ou Flops (floating point operation per seconde) Les multiples sont
Le Meacutegaflops 1 million drsquoop par seconde (10^6)
Le Gigaflops 1 milliard drsquoop par seconde (10^9)
Le Teacuteraflops mille milliards drsquoop par seconde (10^12)
Le Peacutetaflops un million de milliards drsquoop par seconde (10^15)
116
Les machines
Les super calculateurs
Liste du top 5 des super calculateurs sur httpwwwtop500org
2008 Roadrunner de IBM 1 PFLOPS
2010 Jaguar Cray XT5-HE 17 PFLOPS
2012 Sequoia ndash BlueGeneQ de IBM 16 PFLOPS
2014 Tianhe-2 (MilkyWay-2) - TH-IVB-FEP Cluster de NUDT 33 PFLOPS
2016 Sunway TaihuLight 93 PFLOPS
Les macro ordinateurs ou mainframe
Permettent la connexion simultaneacutee de plusieurs centaines drsquoutilisateurs Puissance gt 100 Meacutegaflops
Preacutesent dans les tregraves grosses entreprises nationales et internationales DEC HP Sun IBM (ES9000) Unisys
117
Les machines
Les mini ordinateurs
Permettent la connexion simultaneacutee de plusieurs dizaines drsquoutilisateurs Puissance gt 10 Meacutegaflops
Preacutesents dans les grosses PME
DEC HP Sun IBM (AS400)
Les ordinateurs personnels
Stations de travail (Sun Hp)
Micro-ordinateurs (PC Mac) de bureau (desktop) portables (notebook) de poche (laptop) internet (netbook)
118
12 Hardware (mateacuteriel) Software (logiciel)
Lrsquoinformatique repose sur
Le hardware physique du silicium et technologies associeacutees (transistors miniaturiseacutes microprocesseurs circuits inteacutegreacutes ordinateurs)
Le software programmation des ordinateurs
Dans ce cours nous traitons uniquement de la partie programmation
119
Le logiciel (Software)
Une machine est capable de traiter de lrsquoinformation (symbolique numeacuterique)
Pour qursquoelle ait une utiliteacute il faut lui
laquo dire raquo quels traitements effectuer crsquoest-agrave-dire la programmer
Logiciel ensemble des programmes destineacutes agrave effectuer un traitement sur un ordinateur
120
13 Les langages de programmation
Historique
Environnement de programmation
Champs drsquoapplications des langages
121
Historique des langages de programmation
Au commencement (~ 1946) le langage machine des 1 et des 0
Un progregraves le langage drsquoassemblage (~1950)
Premiers langages de haut niveau Fortran (applications scientifiques -1956-)
Cobol (applications de gestion -1960-)
Lisp (intelligence artificielle -1960-)
122
Historique des langages de programmation
Quelques reacutefeacuterents Pascal (Wirth 1968 ) C (Ritchie 1970) Smalltalk (Jey 1970) Ada (Ichbiah 1975) Prolog (Colmerauer Roussel 1975) C++ (Stroustrup 1983)
Langages les plus reacutecents (tous objets) Java (Sun) 1991 Python (Guido Van Rossum) 1991 C (Microsoft) 2001 hellip pour contrer Java et C++
123
Utilisation des langages de programmation Sur le site httpwwwtiobecomindexphpcontentpaperinfotpciindexhtml
124
Les environnements de programmations modernes
Ils integravegrent
Un eacutediteur intelligent
Un compilateur
Un deacutebogueur symbolique
Un geacuteneacuterateur drsquointerface graphique
125
Eacutediteurs intelligents pour lrsquoeacutecriture de programmes
Un langage de programmation a des regravegles syntaxiques strictes
Un eacutediteur laquo intelligent raquo
Signale des erreurs potentielles
Structure le texte automatiquement pour vous
Exemple si lrsquoon ouvre une accolade laquo raquo lrsquoeacutediteur eacutedite automatiquement lrsquoaccolade fermante correspondante laquo raquo
126
Compilateurs
Un ordinateur ne laquo comprend raquo que le langage machine (1 et 0)
Le compilateur est un laquo gros raquo programme qui traduit le programme eacutecrit dans un langage eacutevolueacute (par exemple C) en un programme machine
Si le compilateur est correct lrsquoordinateur exeacutecute bien les tacircches deacutecrites dans le langage de haut niveau
Problegraveme lrsquoœuf ou la poule (ou dans quel langage eacutecrire un compilateur )
127
Deacutebogueurs
Un deacutebogueur est un programme qui permet de suivre pas agrave pas lrsquoexeacutecution drsquoun programme ce qui permet de chercher plus facilement les erreurs eacuteventuelles (les bugs )
Il permet essentiellement
Drsquoavancer pas agrave pas dans lrsquoexeacutecution du programme De creacuteer des points drsquoarrecirct De lire (et de modifier) le contenu des variables
128
Deacutebogueurs
129
Geacuteneacuterateurs drsquointerfaces graphiques
La plupart des applications professionnelles ont une interface graphique eacutevolueacutee comprenant boutons cases agrave cocher menu deacuteroulant etc
Certains langages disposent drsquoinstructions permettant la creacuteation de ces interfaces
Certaines plateformes de deacuteveloppement proposent mecircme des outils graphiques et de gestion de code qui permettent au programmeur non expeacuterimenteacute de deacutevelopper facilement ce type drsquointerfaces (citons delphi visual basic visual C++ jbuilder etc)
130
Champs drsquoapplications des langages
Un langage est plus ou moins bien adapteacute agrave un domaine donneacute
Certains langages sont relativement speacutecialiseacutes
(Perl traitement des chaicircnes de caractegraveres JavaScript eacutecriture de pages web interactives etc)
Drsquoautres plus ou moins geacuteneacuteralistes (C Pascal C++ Objective C Java Python etc)
131
2 Programmation impeacuterative Introduction au langage C
132
21 Les diffeacuterents paradigmes de programmation
Il existe plusieurs techniques de programmation
Impeacuterative
Fonctionnelle
Logique
Orienteacutee objets
Parallegravele
Le langage que nous allons eacutetudier le langage C appartient agrave la cateacutegorie des langages de programmation impeacuterative
133
La programmation impeacuterative
Dans ce type de programmation on manipule explicitement la meacutemoire gracircce agrave des instructions de haut niveau
Exemple
1 int n = 1 on initialise une variable nommeacutee n agrave 1
2 n = n + 1 on increacutemente n de 1
Eacutetat de la meacutemoire
Apregraves 1
Apregraves 2
134
La programmation impeacuterative
Langages embleacutematiques Pascal C Basic Fortran
Remarque dans tous les cas au niveau de la machine lrsquoexeacutecution drsquoun programme revient toujours agrave des manipulations sur la meacutemoire
135
22 Le langage C introduction
Historique
Compilateurs environnements de programmation
136
Historique du langage C
Creacuteeacute en 1972 par Denis Ritchie (2011dagger)(Bell Laboratories)
Au deacutepart pour deacutevelopper le systegraveme drsquoexploitation Unix
Aujourdrsquohui utiliseacute par une large communauteacute de programmeurs
137
Historique du langage C
Premiegravere deacutefinition rigoureuse en 1978 laquoThe C programming Language raquo par Kerniguan amp Ritchie
Aujourdrsquohui le langage est normaliseacute on parle de laquo C ANSI raquo
138
Compilateurs environnements de programmation
Il existe des compilateurs etou environnements de programmation pour tous les systegravemes drsquoexploitation
Par exemple
Sous Windows Dev-C++ (eacutediteur + compilateur + deacutebogueur) Sous Linux gcc (eacutediteur emacs + deacutebogueur ddd)
Notons que tous les environnements de programmations pour C++ et Objective C sont aussi des environnements de programmation pour C Nous utiliserons drsquoailleurs Dev-C++ qui comme son nom lrsquoindique est un environnement de programmation pour C++
139
23 Etude drsquoun programme simple en C
Objet du programme calcul de la surface et du volume des planegravetes du systegraveme Solaire
Rappels des formules
Listing du programme
Analyse deacutetailleacutee du code
140
Le systegraveme Solaire
Planegravete Image Rayon (km)
Mercure 2439
Veacutenus 6050
Terre 6378
Mars 3387
141
Le systegraveme Solaire
Jupiter 71400
Saturne 60000
Uranus 26150
Neptune 24300
142
Surface et volume drsquoune sphegravere en fonction du rayon
V =4
3π R
3
S=4π R2
143
Le programme laquo planetes raquo
Un programme se deacuteveloppe dans un fichier
On deacuteveloppera nos programmes dans un fichier drsquoextension c
Le programme qui calcule lrsquoaire et le volume des planegravetes agrave partir de leur rayon est deacuteveloppeacute dans le fichier planetesc
Regravegles de bonne programmation
On donnera au fichier un nom qui rappelle la fonction du programme qui y est deacuteveloppeacute
On nrsquoutilise pas les accents (planetesc au lieu de planegravetesc) ni les espaces
144
Le fichier planetesc
include ltstdiohgt
const float PI = 314
int main() float rayon_planete le rayon de la planetefloat surface_planete sa surfacefloat volume_planete son volume
entree de la donnee rayon printf(Entrez le rayon de la planete (en km) )scanf(f amprayon_planete)
calcul de la surface du volume
surface_planete = 40 PI rayon_planete rayon_planetevolume_planete = (4030) PI rayon_planete rayon_planete rayon_planete
impression des resultatsprintf(sfsn Surface de la planete surface_planete km2)printf(sfsn Volume de la planete volume_planete km3)
return 0
145
Analyse du programme laquo planetes raquo
include ltstdiohgt
Demande dinclusion du fichier stdioh
(laquo standard input ouput raquo) Linclusion de ce fichier est neacutecessaire pour pouvoir utiliser les fonctions dentreacutee-sortie
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
12
Preacutesentation du Cours
Mateacuteriel peacutedagogique
Les documents de cours le cours (laquo agrave trous raquo) les Tps une fiche de laquo savoir faire raquo par chapitre un meacutemento sont accessibles en ligne via la plateforme jlon sur lENT
Une cleacute USB pour enregistrer ses exercices effectueacutes en TP
Environnement de programmation utiliseacute en TP
Dev-C++ IDE (Integrated Development Environment)
Evaluation 2 controcircles continus en TP (50) un controcircle final sur la totaliteacute de lrsquoenseignement (50)
13
Preacutesentation du Cours
A la maison pour le choix de lIDE Pour les utilisateurs de Mac vous pouvez porter votre attention sur
CodeBlocks -gt httpwwwcodeblocksorgdownloads26mac
avec tutorial ici httplouloudeveloppezcomtutorielscppcodeblocks
Possibiliteacute dimporter un projet de dev-c++ utiliseacute en TP
ou bien
xcode -gt httpsitunesapplecomfrappxcodeid497799835mt=12ampign-mpt=uo3D2
avec un tutorial ici httpwwwsiteduzerocominformatiquetutorielsapprenez-a-programmer-en-cxcode-mac-os-seulement
Pour les utilisateurs de Windows 8 une nouvelle version de dev-c++ est neacutecessaire
httpwwwwindows8downloadscomwin8-dev-c--wdoxnrth
Pour les utilisateurs de Linux Ubuntu un paquet du logiciel CodeBlocks est disponible via la logithegraveque Ubuntu
Pour les autres systegravemes Linux aller directement sur la page de lIDE CodeBlocks httpwwwcodeblocksorgdownloads26
14
Preacutesentation du Cours
Me contacter
Courrier eacutelectronique guingnei3sunicefr
Petit Valrose 3egraveme eacutetage
15
Initiation agrave la programmation impeacuterative Langage C
L1 PC - SFFranck GUINGNE
Drsquoapregraves le cours de Francis Avnaim
16
Plan du cours
1 Introduction
2 Programmation impeacuterative Introduction au langage C
3 Les bases du langage C
4 Les fonctions du langage C
5 Deacutecoupage drsquoun programme en fonctionsMeacutethodologie de programmation
6 Eacutetude de deux applications Fichiers de donneacutees
17
Cours 1
18
1 Introduction
19
11 LrsquoInformatique aujourdrsquohui
Domaines drsquoapplications
Internet
Les machines
110
Domaines drsquoapplications de lrsquoInformatique
Nombreux et varieacutes (lrsquoInformatique a envahi notre quotidien exemples paiement par carte de creacutedit teacuteleacutephonie mobile preacutevisions meacuteteacuteo GPS etc)
Quelques grands domaines drsquoapplication
Sciences
Banque finance gestion
Industrie
Meacutedecine
Communication
111
Internet (bref) historique
Naissance en 1969 projet militaire Ameacutericain pour une transmission des informations deacutecentraliseacutee (Arpanet protocole IP)
Reacuteseau NSF (National Science Fondation) des universitaires Ameacutericains
Multiplication des reacuteseaux et laquo fusion raquo en un seul reacuteseau Internet
Creacuteation du Web par les chercheurs du Cern (Centre Europeacuteen de la Recherche Nucleacuteaire) en 1989
112
Evolution dInternetDATE NUMBER OF USERS WORLD POPULATION INFORMATION SOURCE
December 1995 16 millions 04 IDC
March 2000 304 millions 50 Nua Ltd
March 2005 888 millions 139 Internet World Stats
June 2010 1966 millions 287 Internet World Stats
Jun 2011 2110 millions 304 Internet World Stats
June 2012 2405 millions 343 Internet World Stats
Dec 2013 2802 millions 390 Internet World Stats
March 2014 (estimate)
2937 millions 407 Internet World Stats
113
Internet aujourdrsquohui
114
Internet aujourdrsquohui
World Wide Web 11 milliard de sites web en 2016 (source netcraft)
eMail 215 milliards envoyeacutes par jour en 2016 (hors spam)44 milliards de comptes mails en 2015
Reacuteseaux sociaux (Facebook Twitter Instagram etc)
Teacuteleacutephonie videacuteo confeacuterences chat (Skype Messenger etc)
Forums de discussion (IRC)
Commerce eacutelectronique
Transmission de fichiers (protocole ftp)
115
Les machines
Les laquo machines raquo se classifient en fonction de leur puissance
La puissance drsquoune machine se mesure en nombre drsquoopeacuterations par seconde ou Flops (floating point operation per seconde) Les multiples sont
Le Meacutegaflops 1 million drsquoop par seconde (10^6)
Le Gigaflops 1 milliard drsquoop par seconde (10^9)
Le Teacuteraflops mille milliards drsquoop par seconde (10^12)
Le Peacutetaflops un million de milliards drsquoop par seconde (10^15)
116
Les machines
Les super calculateurs
Liste du top 5 des super calculateurs sur httpwwwtop500org
2008 Roadrunner de IBM 1 PFLOPS
2010 Jaguar Cray XT5-HE 17 PFLOPS
2012 Sequoia ndash BlueGeneQ de IBM 16 PFLOPS
2014 Tianhe-2 (MilkyWay-2) - TH-IVB-FEP Cluster de NUDT 33 PFLOPS
2016 Sunway TaihuLight 93 PFLOPS
Les macro ordinateurs ou mainframe
Permettent la connexion simultaneacutee de plusieurs centaines drsquoutilisateurs Puissance gt 100 Meacutegaflops
Preacutesent dans les tregraves grosses entreprises nationales et internationales DEC HP Sun IBM (ES9000) Unisys
117
Les machines
Les mini ordinateurs
Permettent la connexion simultaneacutee de plusieurs dizaines drsquoutilisateurs Puissance gt 10 Meacutegaflops
Preacutesents dans les grosses PME
DEC HP Sun IBM (AS400)
Les ordinateurs personnels
Stations de travail (Sun Hp)
Micro-ordinateurs (PC Mac) de bureau (desktop) portables (notebook) de poche (laptop) internet (netbook)
118
12 Hardware (mateacuteriel) Software (logiciel)
Lrsquoinformatique repose sur
Le hardware physique du silicium et technologies associeacutees (transistors miniaturiseacutes microprocesseurs circuits inteacutegreacutes ordinateurs)
Le software programmation des ordinateurs
Dans ce cours nous traitons uniquement de la partie programmation
119
Le logiciel (Software)
Une machine est capable de traiter de lrsquoinformation (symbolique numeacuterique)
Pour qursquoelle ait une utiliteacute il faut lui
laquo dire raquo quels traitements effectuer crsquoest-agrave-dire la programmer
Logiciel ensemble des programmes destineacutes agrave effectuer un traitement sur un ordinateur
120
13 Les langages de programmation
Historique
Environnement de programmation
Champs drsquoapplications des langages
121
Historique des langages de programmation
Au commencement (~ 1946) le langage machine des 1 et des 0
Un progregraves le langage drsquoassemblage (~1950)
Premiers langages de haut niveau Fortran (applications scientifiques -1956-)
Cobol (applications de gestion -1960-)
Lisp (intelligence artificielle -1960-)
122
Historique des langages de programmation
Quelques reacutefeacuterents Pascal (Wirth 1968 ) C (Ritchie 1970) Smalltalk (Jey 1970) Ada (Ichbiah 1975) Prolog (Colmerauer Roussel 1975) C++ (Stroustrup 1983)
Langages les plus reacutecents (tous objets) Java (Sun) 1991 Python (Guido Van Rossum) 1991 C (Microsoft) 2001 hellip pour contrer Java et C++
123
Utilisation des langages de programmation Sur le site httpwwwtiobecomindexphpcontentpaperinfotpciindexhtml
124
Les environnements de programmations modernes
Ils integravegrent
Un eacutediteur intelligent
Un compilateur
Un deacutebogueur symbolique
Un geacuteneacuterateur drsquointerface graphique
125
Eacutediteurs intelligents pour lrsquoeacutecriture de programmes
Un langage de programmation a des regravegles syntaxiques strictes
Un eacutediteur laquo intelligent raquo
Signale des erreurs potentielles
Structure le texte automatiquement pour vous
Exemple si lrsquoon ouvre une accolade laquo raquo lrsquoeacutediteur eacutedite automatiquement lrsquoaccolade fermante correspondante laquo raquo
126
Compilateurs
Un ordinateur ne laquo comprend raquo que le langage machine (1 et 0)
Le compilateur est un laquo gros raquo programme qui traduit le programme eacutecrit dans un langage eacutevolueacute (par exemple C) en un programme machine
Si le compilateur est correct lrsquoordinateur exeacutecute bien les tacircches deacutecrites dans le langage de haut niveau
Problegraveme lrsquoœuf ou la poule (ou dans quel langage eacutecrire un compilateur )
127
Deacutebogueurs
Un deacutebogueur est un programme qui permet de suivre pas agrave pas lrsquoexeacutecution drsquoun programme ce qui permet de chercher plus facilement les erreurs eacuteventuelles (les bugs )
Il permet essentiellement
Drsquoavancer pas agrave pas dans lrsquoexeacutecution du programme De creacuteer des points drsquoarrecirct De lire (et de modifier) le contenu des variables
128
Deacutebogueurs
129
Geacuteneacuterateurs drsquointerfaces graphiques
La plupart des applications professionnelles ont une interface graphique eacutevolueacutee comprenant boutons cases agrave cocher menu deacuteroulant etc
Certains langages disposent drsquoinstructions permettant la creacuteation de ces interfaces
Certaines plateformes de deacuteveloppement proposent mecircme des outils graphiques et de gestion de code qui permettent au programmeur non expeacuterimenteacute de deacutevelopper facilement ce type drsquointerfaces (citons delphi visual basic visual C++ jbuilder etc)
130
Champs drsquoapplications des langages
Un langage est plus ou moins bien adapteacute agrave un domaine donneacute
Certains langages sont relativement speacutecialiseacutes
(Perl traitement des chaicircnes de caractegraveres JavaScript eacutecriture de pages web interactives etc)
Drsquoautres plus ou moins geacuteneacuteralistes (C Pascal C++ Objective C Java Python etc)
131
2 Programmation impeacuterative Introduction au langage C
132
21 Les diffeacuterents paradigmes de programmation
Il existe plusieurs techniques de programmation
Impeacuterative
Fonctionnelle
Logique
Orienteacutee objets
Parallegravele
Le langage que nous allons eacutetudier le langage C appartient agrave la cateacutegorie des langages de programmation impeacuterative
133
La programmation impeacuterative
Dans ce type de programmation on manipule explicitement la meacutemoire gracircce agrave des instructions de haut niveau
Exemple
1 int n = 1 on initialise une variable nommeacutee n agrave 1
2 n = n + 1 on increacutemente n de 1
Eacutetat de la meacutemoire
Apregraves 1
Apregraves 2
134
La programmation impeacuterative
Langages embleacutematiques Pascal C Basic Fortran
Remarque dans tous les cas au niveau de la machine lrsquoexeacutecution drsquoun programme revient toujours agrave des manipulations sur la meacutemoire
135
22 Le langage C introduction
Historique
Compilateurs environnements de programmation
136
Historique du langage C
Creacuteeacute en 1972 par Denis Ritchie (2011dagger)(Bell Laboratories)
Au deacutepart pour deacutevelopper le systegraveme drsquoexploitation Unix
Aujourdrsquohui utiliseacute par une large communauteacute de programmeurs
137
Historique du langage C
Premiegravere deacutefinition rigoureuse en 1978 laquoThe C programming Language raquo par Kerniguan amp Ritchie
Aujourdrsquohui le langage est normaliseacute on parle de laquo C ANSI raquo
138
Compilateurs environnements de programmation
Il existe des compilateurs etou environnements de programmation pour tous les systegravemes drsquoexploitation
Par exemple
Sous Windows Dev-C++ (eacutediteur + compilateur + deacutebogueur) Sous Linux gcc (eacutediteur emacs + deacutebogueur ddd)
Notons que tous les environnements de programmations pour C++ et Objective C sont aussi des environnements de programmation pour C Nous utiliserons drsquoailleurs Dev-C++ qui comme son nom lrsquoindique est un environnement de programmation pour C++
139
23 Etude drsquoun programme simple en C
Objet du programme calcul de la surface et du volume des planegravetes du systegraveme Solaire
Rappels des formules
Listing du programme
Analyse deacutetailleacutee du code
140
Le systegraveme Solaire
Planegravete Image Rayon (km)
Mercure 2439
Veacutenus 6050
Terre 6378
Mars 3387
141
Le systegraveme Solaire
Jupiter 71400
Saturne 60000
Uranus 26150
Neptune 24300
142
Surface et volume drsquoune sphegravere en fonction du rayon
V =4
3π R
3
S=4π R2
143
Le programme laquo planetes raquo
Un programme se deacuteveloppe dans un fichier
On deacuteveloppera nos programmes dans un fichier drsquoextension c
Le programme qui calcule lrsquoaire et le volume des planegravetes agrave partir de leur rayon est deacuteveloppeacute dans le fichier planetesc
Regravegles de bonne programmation
On donnera au fichier un nom qui rappelle la fonction du programme qui y est deacuteveloppeacute
On nrsquoutilise pas les accents (planetesc au lieu de planegravetesc) ni les espaces
144
Le fichier planetesc
include ltstdiohgt
const float PI = 314
int main() float rayon_planete le rayon de la planetefloat surface_planete sa surfacefloat volume_planete son volume
entree de la donnee rayon printf(Entrez le rayon de la planete (en km) )scanf(f amprayon_planete)
calcul de la surface du volume
surface_planete = 40 PI rayon_planete rayon_planetevolume_planete = (4030) PI rayon_planete rayon_planete rayon_planete
impression des resultatsprintf(sfsn Surface de la planete surface_planete km2)printf(sfsn Volume de la planete volume_planete km3)
return 0
145
Analyse du programme laquo planetes raquo
include ltstdiohgt
Demande dinclusion du fichier stdioh
(laquo standard input ouput raquo) Linclusion de ce fichier est neacutecessaire pour pouvoir utiliser les fonctions dentreacutee-sortie
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
13
Preacutesentation du Cours
A la maison pour le choix de lIDE Pour les utilisateurs de Mac vous pouvez porter votre attention sur
CodeBlocks -gt httpwwwcodeblocksorgdownloads26mac
avec tutorial ici httplouloudeveloppezcomtutorielscppcodeblocks
Possibiliteacute dimporter un projet de dev-c++ utiliseacute en TP
ou bien
xcode -gt httpsitunesapplecomfrappxcodeid497799835mt=12ampign-mpt=uo3D2
avec un tutorial ici httpwwwsiteduzerocominformatiquetutorielsapprenez-a-programmer-en-cxcode-mac-os-seulement
Pour les utilisateurs de Windows 8 une nouvelle version de dev-c++ est neacutecessaire
httpwwwwindows8downloadscomwin8-dev-c--wdoxnrth
Pour les utilisateurs de Linux Ubuntu un paquet du logiciel CodeBlocks est disponible via la logithegraveque Ubuntu
Pour les autres systegravemes Linux aller directement sur la page de lIDE CodeBlocks httpwwwcodeblocksorgdownloads26
14
Preacutesentation du Cours
Me contacter
Courrier eacutelectronique guingnei3sunicefr
Petit Valrose 3egraveme eacutetage
15
Initiation agrave la programmation impeacuterative Langage C
L1 PC - SFFranck GUINGNE
Drsquoapregraves le cours de Francis Avnaim
16
Plan du cours
1 Introduction
2 Programmation impeacuterative Introduction au langage C
3 Les bases du langage C
4 Les fonctions du langage C
5 Deacutecoupage drsquoun programme en fonctionsMeacutethodologie de programmation
6 Eacutetude de deux applications Fichiers de donneacutees
17
Cours 1
18
1 Introduction
19
11 LrsquoInformatique aujourdrsquohui
Domaines drsquoapplications
Internet
Les machines
110
Domaines drsquoapplications de lrsquoInformatique
Nombreux et varieacutes (lrsquoInformatique a envahi notre quotidien exemples paiement par carte de creacutedit teacuteleacutephonie mobile preacutevisions meacuteteacuteo GPS etc)
Quelques grands domaines drsquoapplication
Sciences
Banque finance gestion
Industrie
Meacutedecine
Communication
111
Internet (bref) historique
Naissance en 1969 projet militaire Ameacutericain pour une transmission des informations deacutecentraliseacutee (Arpanet protocole IP)
Reacuteseau NSF (National Science Fondation) des universitaires Ameacutericains
Multiplication des reacuteseaux et laquo fusion raquo en un seul reacuteseau Internet
Creacuteation du Web par les chercheurs du Cern (Centre Europeacuteen de la Recherche Nucleacuteaire) en 1989
112
Evolution dInternetDATE NUMBER OF USERS WORLD POPULATION INFORMATION SOURCE
December 1995 16 millions 04 IDC
March 2000 304 millions 50 Nua Ltd
March 2005 888 millions 139 Internet World Stats
June 2010 1966 millions 287 Internet World Stats
Jun 2011 2110 millions 304 Internet World Stats
June 2012 2405 millions 343 Internet World Stats
Dec 2013 2802 millions 390 Internet World Stats
March 2014 (estimate)
2937 millions 407 Internet World Stats
113
Internet aujourdrsquohui
114
Internet aujourdrsquohui
World Wide Web 11 milliard de sites web en 2016 (source netcraft)
eMail 215 milliards envoyeacutes par jour en 2016 (hors spam)44 milliards de comptes mails en 2015
Reacuteseaux sociaux (Facebook Twitter Instagram etc)
Teacuteleacutephonie videacuteo confeacuterences chat (Skype Messenger etc)
Forums de discussion (IRC)
Commerce eacutelectronique
Transmission de fichiers (protocole ftp)
115
Les machines
Les laquo machines raquo se classifient en fonction de leur puissance
La puissance drsquoune machine se mesure en nombre drsquoopeacuterations par seconde ou Flops (floating point operation per seconde) Les multiples sont
Le Meacutegaflops 1 million drsquoop par seconde (10^6)
Le Gigaflops 1 milliard drsquoop par seconde (10^9)
Le Teacuteraflops mille milliards drsquoop par seconde (10^12)
Le Peacutetaflops un million de milliards drsquoop par seconde (10^15)
116
Les machines
Les super calculateurs
Liste du top 5 des super calculateurs sur httpwwwtop500org
2008 Roadrunner de IBM 1 PFLOPS
2010 Jaguar Cray XT5-HE 17 PFLOPS
2012 Sequoia ndash BlueGeneQ de IBM 16 PFLOPS
2014 Tianhe-2 (MilkyWay-2) - TH-IVB-FEP Cluster de NUDT 33 PFLOPS
2016 Sunway TaihuLight 93 PFLOPS
Les macro ordinateurs ou mainframe
Permettent la connexion simultaneacutee de plusieurs centaines drsquoutilisateurs Puissance gt 100 Meacutegaflops
Preacutesent dans les tregraves grosses entreprises nationales et internationales DEC HP Sun IBM (ES9000) Unisys
117
Les machines
Les mini ordinateurs
Permettent la connexion simultaneacutee de plusieurs dizaines drsquoutilisateurs Puissance gt 10 Meacutegaflops
Preacutesents dans les grosses PME
DEC HP Sun IBM (AS400)
Les ordinateurs personnels
Stations de travail (Sun Hp)
Micro-ordinateurs (PC Mac) de bureau (desktop) portables (notebook) de poche (laptop) internet (netbook)
118
12 Hardware (mateacuteriel) Software (logiciel)
Lrsquoinformatique repose sur
Le hardware physique du silicium et technologies associeacutees (transistors miniaturiseacutes microprocesseurs circuits inteacutegreacutes ordinateurs)
Le software programmation des ordinateurs
Dans ce cours nous traitons uniquement de la partie programmation
119
Le logiciel (Software)
Une machine est capable de traiter de lrsquoinformation (symbolique numeacuterique)
Pour qursquoelle ait une utiliteacute il faut lui
laquo dire raquo quels traitements effectuer crsquoest-agrave-dire la programmer
Logiciel ensemble des programmes destineacutes agrave effectuer un traitement sur un ordinateur
120
13 Les langages de programmation
Historique
Environnement de programmation
Champs drsquoapplications des langages
121
Historique des langages de programmation
Au commencement (~ 1946) le langage machine des 1 et des 0
Un progregraves le langage drsquoassemblage (~1950)
Premiers langages de haut niveau Fortran (applications scientifiques -1956-)
Cobol (applications de gestion -1960-)
Lisp (intelligence artificielle -1960-)
122
Historique des langages de programmation
Quelques reacutefeacuterents Pascal (Wirth 1968 ) C (Ritchie 1970) Smalltalk (Jey 1970) Ada (Ichbiah 1975) Prolog (Colmerauer Roussel 1975) C++ (Stroustrup 1983)
Langages les plus reacutecents (tous objets) Java (Sun) 1991 Python (Guido Van Rossum) 1991 C (Microsoft) 2001 hellip pour contrer Java et C++
123
Utilisation des langages de programmation Sur le site httpwwwtiobecomindexphpcontentpaperinfotpciindexhtml
124
Les environnements de programmations modernes
Ils integravegrent
Un eacutediteur intelligent
Un compilateur
Un deacutebogueur symbolique
Un geacuteneacuterateur drsquointerface graphique
125
Eacutediteurs intelligents pour lrsquoeacutecriture de programmes
Un langage de programmation a des regravegles syntaxiques strictes
Un eacutediteur laquo intelligent raquo
Signale des erreurs potentielles
Structure le texte automatiquement pour vous
Exemple si lrsquoon ouvre une accolade laquo raquo lrsquoeacutediteur eacutedite automatiquement lrsquoaccolade fermante correspondante laquo raquo
126
Compilateurs
Un ordinateur ne laquo comprend raquo que le langage machine (1 et 0)
Le compilateur est un laquo gros raquo programme qui traduit le programme eacutecrit dans un langage eacutevolueacute (par exemple C) en un programme machine
Si le compilateur est correct lrsquoordinateur exeacutecute bien les tacircches deacutecrites dans le langage de haut niveau
Problegraveme lrsquoœuf ou la poule (ou dans quel langage eacutecrire un compilateur )
127
Deacutebogueurs
Un deacutebogueur est un programme qui permet de suivre pas agrave pas lrsquoexeacutecution drsquoun programme ce qui permet de chercher plus facilement les erreurs eacuteventuelles (les bugs )
Il permet essentiellement
Drsquoavancer pas agrave pas dans lrsquoexeacutecution du programme De creacuteer des points drsquoarrecirct De lire (et de modifier) le contenu des variables
128
Deacutebogueurs
129
Geacuteneacuterateurs drsquointerfaces graphiques
La plupart des applications professionnelles ont une interface graphique eacutevolueacutee comprenant boutons cases agrave cocher menu deacuteroulant etc
Certains langages disposent drsquoinstructions permettant la creacuteation de ces interfaces
Certaines plateformes de deacuteveloppement proposent mecircme des outils graphiques et de gestion de code qui permettent au programmeur non expeacuterimenteacute de deacutevelopper facilement ce type drsquointerfaces (citons delphi visual basic visual C++ jbuilder etc)
130
Champs drsquoapplications des langages
Un langage est plus ou moins bien adapteacute agrave un domaine donneacute
Certains langages sont relativement speacutecialiseacutes
(Perl traitement des chaicircnes de caractegraveres JavaScript eacutecriture de pages web interactives etc)
Drsquoautres plus ou moins geacuteneacuteralistes (C Pascal C++ Objective C Java Python etc)
131
2 Programmation impeacuterative Introduction au langage C
132
21 Les diffeacuterents paradigmes de programmation
Il existe plusieurs techniques de programmation
Impeacuterative
Fonctionnelle
Logique
Orienteacutee objets
Parallegravele
Le langage que nous allons eacutetudier le langage C appartient agrave la cateacutegorie des langages de programmation impeacuterative
133
La programmation impeacuterative
Dans ce type de programmation on manipule explicitement la meacutemoire gracircce agrave des instructions de haut niveau
Exemple
1 int n = 1 on initialise une variable nommeacutee n agrave 1
2 n = n + 1 on increacutemente n de 1
Eacutetat de la meacutemoire
Apregraves 1
Apregraves 2
134
La programmation impeacuterative
Langages embleacutematiques Pascal C Basic Fortran
Remarque dans tous les cas au niveau de la machine lrsquoexeacutecution drsquoun programme revient toujours agrave des manipulations sur la meacutemoire
135
22 Le langage C introduction
Historique
Compilateurs environnements de programmation
136
Historique du langage C
Creacuteeacute en 1972 par Denis Ritchie (2011dagger)(Bell Laboratories)
Au deacutepart pour deacutevelopper le systegraveme drsquoexploitation Unix
Aujourdrsquohui utiliseacute par une large communauteacute de programmeurs
137
Historique du langage C
Premiegravere deacutefinition rigoureuse en 1978 laquoThe C programming Language raquo par Kerniguan amp Ritchie
Aujourdrsquohui le langage est normaliseacute on parle de laquo C ANSI raquo
138
Compilateurs environnements de programmation
Il existe des compilateurs etou environnements de programmation pour tous les systegravemes drsquoexploitation
Par exemple
Sous Windows Dev-C++ (eacutediteur + compilateur + deacutebogueur) Sous Linux gcc (eacutediteur emacs + deacutebogueur ddd)
Notons que tous les environnements de programmations pour C++ et Objective C sont aussi des environnements de programmation pour C Nous utiliserons drsquoailleurs Dev-C++ qui comme son nom lrsquoindique est un environnement de programmation pour C++
139
23 Etude drsquoun programme simple en C
Objet du programme calcul de la surface et du volume des planegravetes du systegraveme Solaire
Rappels des formules
Listing du programme
Analyse deacutetailleacutee du code
140
Le systegraveme Solaire
Planegravete Image Rayon (km)
Mercure 2439
Veacutenus 6050
Terre 6378
Mars 3387
141
Le systegraveme Solaire
Jupiter 71400
Saturne 60000
Uranus 26150
Neptune 24300
142
Surface et volume drsquoune sphegravere en fonction du rayon
V =4
3π R
3
S=4π R2
143
Le programme laquo planetes raquo
Un programme se deacuteveloppe dans un fichier
On deacuteveloppera nos programmes dans un fichier drsquoextension c
Le programme qui calcule lrsquoaire et le volume des planegravetes agrave partir de leur rayon est deacuteveloppeacute dans le fichier planetesc
Regravegles de bonne programmation
On donnera au fichier un nom qui rappelle la fonction du programme qui y est deacuteveloppeacute
On nrsquoutilise pas les accents (planetesc au lieu de planegravetesc) ni les espaces
144
Le fichier planetesc
include ltstdiohgt
const float PI = 314
int main() float rayon_planete le rayon de la planetefloat surface_planete sa surfacefloat volume_planete son volume
entree de la donnee rayon printf(Entrez le rayon de la planete (en km) )scanf(f amprayon_planete)
calcul de la surface du volume
surface_planete = 40 PI rayon_planete rayon_planetevolume_planete = (4030) PI rayon_planete rayon_planete rayon_planete
impression des resultatsprintf(sfsn Surface de la planete surface_planete km2)printf(sfsn Volume de la planete volume_planete km3)
return 0
145
Analyse du programme laquo planetes raquo
include ltstdiohgt
Demande dinclusion du fichier stdioh
(laquo standard input ouput raquo) Linclusion de ce fichier est neacutecessaire pour pouvoir utiliser les fonctions dentreacutee-sortie
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
14
Preacutesentation du Cours
Me contacter
Courrier eacutelectronique guingnei3sunicefr
Petit Valrose 3egraveme eacutetage
15
Initiation agrave la programmation impeacuterative Langage C
L1 PC - SFFranck GUINGNE
Drsquoapregraves le cours de Francis Avnaim
16
Plan du cours
1 Introduction
2 Programmation impeacuterative Introduction au langage C
3 Les bases du langage C
4 Les fonctions du langage C
5 Deacutecoupage drsquoun programme en fonctionsMeacutethodologie de programmation
6 Eacutetude de deux applications Fichiers de donneacutees
17
Cours 1
18
1 Introduction
19
11 LrsquoInformatique aujourdrsquohui
Domaines drsquoapplications
Internet
Les machines
110
Domaines drsquoapplications de lrsquoInformatique
Nombreux et varieacutes (lrsquoInformatique a envahi notre quotidien exemples paiement par carte de creacutedit teacuteleacutephonie mobile preacutevisions meacuteteacuteo GPS etc)
Quelques grands domaines drsquoapplication
Sciences
Banque finance gestion
Industrie
Meacutedecine
Communication
111
Internet (bref) historique
Naissance en 1969 projet militaire Ameacutericain pour une transmission des informations deacutecentraliseacutee (Arpanet protocole IP)
Reacuteseau NSF (National Science Fondation) des universitaires Ameacutericains
Multiplication des reacuteseaux et laquo fusion raquo en un seul reacuteseau Internet
Creacuteation du Web par les chercheurs du Cern (Centre Europeacuteen de la Recherche Nucleacuteaire) en 1989
112
Evolution dInternetDATE NUMBER OF USERS WORLD POPULATION INFORMATION SOURCE
December 1995 16 millions 04 IDC
March 2000 304 millions 50 Nua Ltd
March 2005 888 millions 139 Internet World Stats
June 2010 1966 millions 287 Internet World Stats
Jun 2011 2110 millions 304 Internet World Stats
June 2012 2405 millions 343 Internet World Stats
Dec 2013 2802 millions 390 Internet World Stats
March 2014 (estimate)
2937 millions 407 Internet World Stats
113
Internet aujourdrsquohui
114
Internet aujourdrsquohui
World Wide Web 11 milliard de sites web en 2016 (source netcraft)
eMail 215 milliards envoyeacutes par jour en 2016 (hors spam)44 milliards de comptes mails en 2015
Reacuteseaux sociaux (Facebook Twitter Instagram etc)
Teacuteleacutephonie videacuteo confeacuterences chat (Skype Messenger etc)
Forums de discussion (IRC)
Commerce eacutelectronique
Transmission de fichiers (protocole ftp)
115
Les machines
Les laquo machines raquo se classifient en fonction de leur puissance
La puissance drsquoune machine se mesure en nombre drsquoopeacuterations par seconde ou Flops (floating point operation per seconde) Les multiples sont
Le Meacutegaflops 1 million drsquoop par seconde (10^6)
Le Gigaflops 1 milliard drsquoop par seconde (10^9)
Le Teacuteraflops mille milliards drsquoop par seconde (10^12)
Le Peacutetaflops un million de milliards drsquoop par seconde (10^15)
116
Les machines
Les super calculateurs
Liste du top 5 des super calculateurs sur httpwwwtop500org
2008 Roadrunner de IBM 1 PFLOPS
2010 Jaguar Cray XT5-HE 17 PFLOPS
2012 Sequoia ndash BlueGeneQ de IBM 16 PFLOPS
2014 Tianhe-2 (MilkyWay-2) - TH-IVB-FEP Cluster de NUDT 33 PFLOPS
2016 Sunway TaihuLight 93 PFLOPS
Les macro ordinateurs ou mainframe
Permettent la connexion simultaneacutee de plusieurs centaines drsquoutilisateurs Puissance gt 100 Meacutegaflops
Preacutesent dans les tregraves grosses entreprises nationales et internationales DEC HP Sun IBM (ES9000) Unisys
117
Les machines
Les mini ordinateurs
Permettent la connexion simultaneacutee de plusieurs dizaines drsquoutilisateurs Puissance gt 10 Meacutegaflops
Preacutesents dans les grosses PME
DEC HP Sun IBM (AS400)
Les ordinateurs personnels
Stations de travail (Sun Hp)
Micro-ordinateurs (PC Mac) de bureau (desktop) portables (notebook) de poche (laptop) internet (netbook)
118
12 Hardware (mateacuteriel) Software (logiciel)
Lrsquoinformatique repose sur
Le hardware physique du silicium et technologies associeacutees (transistors miniaturiseacutes microprocesseurs circuits inteacutegreacutes ordinateurs)
Le software programmation des ordinateurs
Dans ce cours nous traitons uniquement de la partie programmation
119
Le logiciel (Software)
Une machine est capable de traiter de lrsquoinformation (symbolique numeacuterique)
Pour qursquoelle ait une utiliteacute il faut lui
laquo dire raquo quels traitements effectuer crsquoest-agrave-dire la programmer
Logiciel ensemble des programmes destineacutes agrave effectuer un traitement sur un ordinateur
120
13 Les langages de programmation
Historique
Environnement de programmation
Champs drsquoapplications des langages
121
Historique des langages de programmation
Au commencement (~ 1946) le langage machine des 1 et des 0
Un progregraves le langage drsquoassemblage (~1950)
Premiers langages de haut niveau Fortran (applications scientifiques -1956-)
Cobol (applications de gestion -1960-)
Lisp (intelligence artificielle -1960-)
122
Historique des langages de programmation
Quelques reacutefeacuterents Pascal (Wirth 1968 ) C (Ritchie 1970) Smalltalk (Jey 1970) Ada (Ichbiah 1975) Prolog (Colmerauer Roussel 1975) C++ (Stroustrup 1983)
Langages les plus reacutecents (tous objets) Java (Sun) 1991 Python (Guido Van Rossum) 1991 C (Microsoft) 2001 hellip pour contrer Java et C++
123
Utilisation des langages de programmation Sur le site httpwwwtiobecomindexphpcontentpaperinfotpciindexhtml
124
Les environnements de programmations modernes
Ils integravegrent
Un eacutediteur intelligent
Un compilateur
Un deacutebogueur symbolique
Un geacuteneacuterateur drsquointerface graphique
125
Eacutediteurs intelligents pour lrsquoeacutecriture de programmes
Un langage de programmation a des regravegles syntaxiques strictes
Un eacutediteur laquo intelligent raquo
Signale des erreurs potentielles
Structure le texte automatiquement pour vous
Exemple si lrsquoon ouvre une accolade laquo raquo lrsquoeacutediteur eacutedite automatiquement lrsquoaccolade fermante correspondante laquo raquo
126
Compilateurs
Un ordinateur ne laquo comprend raquo que le langage machine (1 et 0)
Le compilateur est un laquo gros raquo programme qui traduit le programme eacutecrit dans un langage eacutevolueacute (par exemple C) en un programme machine
Si le compilateur est correct lrsquoordinateur exeacutecute bien les tacircches deacutecrites dans le langage de haut niveau
Problegraveme lrsquoœuf ou la poule (ou dans quel langage eacutecrire un compilateur )
127
Deacutebogueurs
Un deacutebogueur est un programme qui permet de suivre pas agrave pas lrsquoexeacutecution drsquoun programme ce qui permet de chercher plus facilement les erreurs eacuteventuelles (les bugs )
Il permet essentiellement
Drsquoavancer pas agrave pas dans lrsquoexeacutecution du programme De creacuteer des points drsquoarrecirct De lire (et de modifier) le contenu des variables
128
Deacutebogueurs
129
Geacuteneacuterateurs drsquointerfaces graphiques
La plupart des applications professionnelles ont une interface graphique eacutevolueacutee comprenant boutons cases agrave cocher menu deacuteroulant etc
Certains langages disposent drsquoinstructions permettant la creacuteation de ces interfaces
Certaines plateformes de deacuteveloppement proposent mecircme des outils graphiques et de gestion de code qui permettent au programmeur non expeacuterimenteacute de deacutevelopper facilement ce type drsquointerfaces (citons delphi visual basic visual C++ jbuilder etc)
130
Champs drsquoapplications des langages
Un langage est plus ou moins bien adapteacute agrave un domaine donneacute
Certains langages sont relativement speacutecialiseacutes
(Perl traitement des chaicircnes de caractegraveres JavaScript eacutecriture de pages web interactives etc)
Drsquoautres plus ou moins geacuteneacuteralistes (C Pascal C++ Objective C Java Python etc)
131
2 Programmation impeacuterative Introduction au langage C
132
21 Les diffeacuterents paradigmes de programmation
Il existe plusieurs techniques de programmation
Impeacuterative
Fonctionnelle
Logique
Orienteacutee objets
Parallegravele
Le langage que nous allons eacutetudier le langage C appartient agrave la cateacutegorie des langages de programmation impeacuterative
133
La programmation impeacuterative
Dans ce type de programmation on manipule explicitement la meacutemoire gracircce agrave des instructions de haut niveau
Exemple
1 int n = 1 on initialise une variable nommeacutee n agrave 1
2 n = n + 1 on increacutemente n de 1
Eacutetat de la meacutemoire
Apregraves 1
Apregraves 2
134
La programmation impeacuterative
Langages embleacutematiques Pascal C Basic Fortran
Remarque dans tous les cas au niveau de la machine lrsquoexeacutecution drsquoun programme revient toujours agrave des manipulations sur la meacutemoire
135
22 Le langage C introduction
Historique
Compilateurs environnements de programmation
136
Historique du langage C
Creacuteeacute en 1972 par Denis Ritchie (2011dagger)(Bell Laboratories)
Au deacutepart pour deacutevelopper le systegraveme drsquoexploitation Unix
Aujourdrsquohui utiliseacute par une large communauteacute de programmeurs
137
Historique du langage C
Premiegravere deacutefinition rigoureuse en 1978 laquoThe C programming Language raquo par Kerniguan amp Ritchie
Aujourdrsquohui le langage est normaliseacute on parle de laquo C ANSI raquo
138
Compilateurs environnements de programmation
Il existe des compilateurs etou environnements de programmation pour tous les systegravemes drsquoexploitation
Par exemple
Sous Windows Dev-C++ (eacutediteur + compilateur + deacutebogueur) Sous Linux gcc (eacutediteur emacs + deacutebogueur ddd)
Notons que tous les environnements de programmations pour C++ et Objective C sont aussi des environnements de programmation pour C Nous utiliserons drsquoailleurs Dev-C++ qui comme son nom lrsquoindique est un environnement de programmation pour C++
139
23 Etude drsquoun programme simple en C
Objet du programme calcul de la surface et du volume des planegravetes du systegraveme Solaire
Rappels des formules
Listing du programme
Analyse deacutetailleacutee du code
140
Le systegraveme Solaire
Planegravete Image Rayon (km)
Mercure 2439
Veacutenus 6050
Terre 6378
Mars 3387
141
Le systegraveme Solaire
Jupiter 71400
Saturne 60000
Uranus 26150
Neptune 24300
142
Surface et volume drsquoune sphegravere en fonction du rayon
V =4
3π R
3
S=4π R2
143
Le programme laquo planetes raquo
Un programme se deacuteveloppe dans un fichier
On deacuteveloppera nos programmes dans un fichier drsquoextension c
Le programme qui calcule lrsquoaire et le volume des planegravetes agrave partir de leur rayon est deacuteveloppeacute dans le fichier planetesc
Regravegles de bonne programmation
On donnera au fichier un nom qui rappelle la fonction du programme qui y est deacuteveloppeacute
On nrsquoutilise pas les accents (planetesc au lieu de planegravetesc) ni les espaces
144
Le fichier planetesc
include ltstdiohgt
const float PI = 314
int main() float rayon_planete le rayon de la planetefloat surface_planete sa surfacefloat volume_planete son volume
entree de la donnee rayon printf(Entrez le rayon de la planete (en km) )scanf(f amprayon_planete)
calcul de la surface du volume
surface_planete = 40 PI rayon_planete rayon_planetevolume_planete = (4030) PI rayon_planete rayon_planete rayon_planete
impression des resultatsprintf(sfsn Surface de la planete surface_planete km2)printf(sfsn Volume de la planete volume_planete km3)
return 0
145
Analyse du programme laquo planetes raquo
include ltstdiohgt
Demande dinclusion du fichier stdioh
(laquo standard input ouput raquo) Linclusion de ce fichier est neacutecessaire pour pouvoir utiliser les fonctions dentreacutee-sortie
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
15
Initiation agrave la programmation impeacuterative Langage C
L1 PC - SFFranck GUINGNE
Drsquoapregraves le cours de Francis Avnaim
16
Plan du cours
1 Introduction
2 Programmation impeacuterative Introduction au langage C
3 Les bases du langage C
4 Les fonctions du langage C
5 Deacutecoupage drsquoun programme en fonctionsMeacutethodologie de programmation
6 Eacutetude de deux applications Fichiers de donneacutees
17
Cours 1
18
1 Introduction
19
11 LrsquoInformatique aujourdrsquohui
Domaines drsquoapplications
Internet
Les machines
110
Domaines drsquoapplications de lrsquoInformatique
Nombreux et varieacutes (lrsquoInformatique a envahi notre quotidien exemples paiement par carte de creacutedit teacuteleacutephonie mobile preacutevisions meacuteteacuteo GPS etc)
Quelques grands domaines drsquoapplication
Sciences
Banque finance gestion
Industrie
Meacutedecine
Communication
111
Internet (bref) historique
Naissance en 1969 projet militaire Ameacutericain pour une transmission des informations deacutecentraliseacutee (Arpanet protocole IP)
Reacuteseau NSF (National Science Fondation) des universitaires Ameacutericains
Multiplication des reacuteseaux et laquo fusion raquo en un seul reacuteseau Internet
Creacuteation du Web par les chercheurs du Cern (Centre Europeacuteen de la Recherche Nucleacuteaire) en 1989
112
Evolution dInternetDATE NUMBER OF USERS WORLD POPULATION INFORMATION SOURCE
December 1995 16 millions 04 IDC
March 2000 304 millions 50 Nua Ltd
March 2005 888 millions 139 Internet World Stats
June 2010 1966 millions 287 Internet World Stats
Jun 2011 2110 millions 304 Internet World Stats
June 2012 2405 millions 343 Internet World Stats
Dec 2013 2802 millions 390 Internet World Stats
March 2014 (estimate)
2937 millions 407 Internet World Stats
113
Internet aujourdrsquohui
114
Internet aujourdrsquohui
World Wide Web 11 milliard de sites web en 2016 (source netcraft)
eMail 215 milliards envoyeacutes par jour en 2016 (hors spam)44 milliards de comptes mails en 2015
Reacuteseaux sociaux (Facebook Twitter Instagram etc)
Teacuteleacutephonie videacuteo confeacuterences chat (Skype Messenger etc)
Forums de discussion (IRC)
Commerce eacutelectronique
Transmission de fichiers (protocole ftp)
115
Les machines
Les laquo machines raquo se classifient en fonction de leur puissance
La puissance drsquoune machine se mesure en nombre drsquoopeacuterations par seconde ou Flops (floating point operation per seconde) Les multiples sont
Le Meacutegaflops 1 million drsquoop par seconde (10^6)
Le Gigaflops 1 milliard drsquoop par seconde (10^9)
Le Teacuteraflops mille milliards drsquoop par seconde (10^12)
Le Peacutetaflops un million de milliards drsquoop par seconde (10^15)
116
Les machines
Les super calculateurs
Liste du top 5 des super calculateurs sur httpwwwtop500org
2008 Roadrunner de IBM 1 PFLOPS
2010 Jaguar Cray XT5-HE 17 PFLOPS
2012 Sequoia ndash BlueGeneQ de IBM 16 PFLOPS
2014 Tianhe-2 (MilkyWay-2) - TH-IVB-FEP Cluster de NUDT 33 PFLOPS
2016 Sunway TaihuLight 93 PFLOPS
Les macro ordinateurs ou mainframe
Permettent la connexion simultaneacutee de plusieurs centaines drsquoutilisateurs Puissance gt 100 Meacutegaflops
Preacutesent dans les tregraves grosses entreprises nationales et internationales DEC HP Sun IBM (ES9000) Unisys
117
Les machines
Les mini ordinateurs
Permettent la connexion simultaneacutee de plusieurs dizaines drsquoutilisateurs Puissance gt 10 Meacutegaflops
Preacutesents dans les grosses PME
DEC HP Sun IBM (AS400)
Les ordinateurs personnels
Stations de travail (Sun Hp)
Micro-ordinateurs (PC Mac) de bureau (desktop) portables (notebook) de poche (laptop) internet (netbook)
118
12 Hardware (mateacuteriel) Software (logiciel)
Lrsquoinformatique repose sur
Le hardware physique du silicium et technologies associeacutees (transistors miniaturiseacutes microprocesseurs circuits inteacutegreacutes ordinateurs)
Le software programmation des ordinateurs
Dans ce cours nous traitons uniquement de la partie programmation
119
Le logiciel (Software)
Une machine est capable de traiter de lrsquoinformation (symbolique numeacuterique)
Pour qursquoelle ait une utiliteacute il faut lui
laquo dire raquo quels traitements effectuer crsquoest-agrave-dire la programmer
Logiciel ensemble des programmes destineacutes agrave effectuer un traitement sur un ordinateur
120
13 Les langages de programmation
Historique
Environnement de programmation
Champs drsquoapplications des langages
121
Historique des langages de programmation
Au commencement (~ 1946) le langage machine des 1 et des 0
Un progregraves le langage drsquoassemblage (~1950)
Premiers langages de haut niveau Fortran (applications scientifiques -1956-)
Cobol (applications de gestion -1960-)
Lisp (intelligence artificielle -1960-)
122
Historique des langages de programmation
Quelques reacutefeacuterents Pascal (Wirth 1968 ) C (Ritchie 1970) Smalltalk (Jey 1970) Ada (Ichbiah 1975) Prolog (Colmerauer Roussel 1975) C++ (Stroustrup 1983)
Langages les plus reacutecents (tous objets) Java (Sun) 1991 Python (Guido Van Rossum) 1991 C (Microsoft) 2001 hellip pour contrer Java et C++
123
Utilisation des langages de programmation Sur le site httpwwwtiobecomindexphpcontentpaperinfotpciindexhtml
124
Les environnements de programmations modernes
Ils integravegrent
Un eacutediteur intelligent
Un compilateur
Un deacutebogueur symbolique
Un geacuteneacuterateur drsquointerface graphique
125
Eacutediteurs intelligents pour lrsquoeacutecriture de programmes
Un langage de programmation a des regravegles syntaxiques strictes
Un eacutediteur laquo intelligent raquo
Signale des erreurs potentielles
Structure le texte automatiquement pour vous
Exemple si lrsquoon ouvre une accolade laquo raquo lrsquoeacutediteur eacutedite automatiquement lrsquoaccolade fermante correspondante laquo raquo
126
Compilateurs
Un ordinateur ne laquo comprend raquo que le langage machine (1 et 0)
Le compilateur est un laquo gros raquo programme qui traduit le programme eacutecrit dans un langage eacutevolueacute (par exemple C) en un programme machine
Si le compilateur est correct lrsquoordinateur exeacutecute bien les tacircches deacutecrites dans le langage de haut niveau
Problegraveme lrsquoœuf ou la poule (ou dans quel langage eacutecrire un compilateur )
127
Deacutebogueurs
Un deacutebogueur est un programme qui permet de suivre pas agrave pas lrsquoexeacutecution drsquoun programme ce qui permet de chercher plus facilement les erreurs eacuteventuelles (les bugs )
Il permet essentiellement
Drsquoavancer pas agrave pas dans lrsquoexeacutecution du programme De creacuteer des points drsquoarrecirct De lire (et de modifier) le contenu des variables
128
Deacutebogueurs
129
Geacuteneacuterateurs drsquointerfaces graphiques
La plupart des applications professionnelles ont une interface graphique eacutevolueacutee comprenant boutons cases agrave cocher menu deacuteroulant etc
Certains langages disposent drsquoinstructions permettant la creacuteation de ces interfaces
Certaines plateformes de deacuteveloppement proposent mecircme des outils graphiques et de gestion de code qui permettent au programmeur non expeacuterimenteacute de deacutevelopper facilement ce type drsquointerfaces (citons delphi visual basic visual C++ jbuilder etc)
130
Champs drsquoapplications des langages
Un langage est plus ou moins bien adapteacute agrave un domaine donneacute
Certains langages sont relativement speacutecialiseacutes
(Perl traitement des chaicircnes de caractegraveres JavaScript eacutecriture de pages web interactives etc)
Drsquoautres plus ou moins geacuteneacuteralistes (C Pascal C++ Objective C Java Python etc)
131
2 Programmation impeacuterative Introduction au langage C
132
21 Les diffeacuterents paradigmes de programmation
Il existe plusieurs techniques de programmation
Impeacuterative
Fonctionnelle
Logique
Orienteacutee objets
Parallegravele
Le langage que nous allons eacutetudier le langage C appartient agrave la cateacutegorie des langages de programmation impeacuterative
133
La programmation impeacuterative
Dans ce type de programmation on manipule explicitement la meacutemoire gracircce agrave des instructions de haut niveau
Exemple
1 int n = 1 on initialise une variable nommeacutee n agrave 1
2 n = n + 1 on increacutemente n de 1
Eacutetat de la meacutemoire
Apregraves 1
Apregraves 2
134
La programmation impeacuterative
Langages embleacutematiques Pascal C Basic Fortran
Remarque dans tous les cas au niveau de la machine lrsquoexeacutecution drsquoun programme revient toujours agrave des manipulations sur la meacutemoire
135
22 Le langage C introduction
Historique
Compilateurs environnements de programmation
136
Historique du langage C
Creacuteeacute en 1972 par Denis Ritchie (2011dagger)(Bell Laboratories)
Au deacutepart pour deacutevelopper le systegraveme drsquoexploitation Unix
Aujourdrsquohui utiliseacute par une large communauteacute de programmeurs
137
Historique du langage C
Premiegravere deacutefinition rigoureuse en 1978 laquoThe C programming Language raquo par Kerniguan amp Ritchie
Aujourdrsquohui le langage est normaliseacute on parle de laquo C ANSI raquo
138
Compilateurs environnements de programmation
Il existe des compilateurs etou environnements de programmation pour tous les systegravemes drsquoexploitation
Par exemple
Sous Windows Dev-C++ (eacutediteur + compilateur + deacutebogueur) Sous Linux gcc (eacutediteur emacs + deacutebogueur ddd)
Notons que tous les environnements de programmations pour C++ et Objective C sont aussi des environnements de programmation pour C Nous utiliserons drsquoailleurs Dev-C++ qui comme son nom lrsquoindique est un environnement de programmation pour C++
139
23 Etude drsquoun programme simple en C
Objet du programme calcul de la surface et du volume des planegravetes du systegraveme Solaire
Rappels des formules
Listing du programme
Analyse deacutetailleacutee du code
140
Le systegraveme Solaire
Planegravete Image Rayon (km)
Mercure 2439
Veacutenus 6050
Terre 6378
Mars 3387
141
Le systegraveme Solaire
Jupiter 71400
Saturne 60000
Uranus 26150
Neptune 24300
142
Surface et volume drsquoune sphegravere en fonction du rayon
V =4
3π R
3
S=4π R2
143
Le programme laquo planetes raquo
Un programme se deacuteveloppe dans un fichier
On deacuteveloppera nos programmes dans un fichier drsquoextension c
Le programme qui calcule lrsquoaire et le volume des planegravetes agrave partir de leur rayon est deacuteveloppeacute dans le fichier planetesc
Regravegles de bonne programmation
On donnera au fichier un nom qui rappelle la fonction du programme qui y est deacuteveloppeacute
On nrsquoutilise pas les accents (planetesc au lieu de planegravetesc) ni les espaces
144
Le fichier planetesc
include ltstdiohgt
const float PI = 314
int main() float rayon_planete le rayon de la planetefloat surface_planete sa surfacefloat volume_planete son volume
entree de la donnee rayon printf(Entrez le rayon de la planete (en km) )scanf(f amprayon_planete)
calcul de la surface du volume
surface_planete = 40 PI rayon_planete rayon_planetevolume_planete = (4030) PI rayon_planete rayon_planete rayon_planete
impression des resultatsprintf(sfsn Surface de la planete surface_planete km2)printf(sfsn Volume de la planete volume_planete km3)
return 0
145
Analyse du programme laquo planetes raquo
include ltstdiohgt
Demande dinclusion du fichier stdioh
(laquo standard input ouput raquo) Linclusion de ce fichier est neacutecessaire pour pouvoir utiliser les fonctions dentreacutee-sortie
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
16
Plan du cours
1 Introduction
2 Programmation impeacuterative Introduction au langage C
3 Les bases du langage C
4 Les fonctions du langage C
5 Deacutecoupage drsquoun programme en fonctionsMeacutethodologie de programmation
6 Eacutetude de deux applications Fichiers de donneacutees
17
Cours 1
18
1 Introduction
19
11 LrsquoInformatique aujourdrsquohui
Domaines drsquoapplications
Internet
Les machines
110
Domaines drsquoapplications de lrsquoInformatique
Nombreux et varieacutes (lrsquoInformatique a envahi notre quotidien exemples paiement par carte de creacutedit teacuteleacutephonie mobile preacutevisions meacuteteacuteo GPS etc)
Quelques grands domaines drsquoapplication
Sciences
Banque finance gestion
Industrie
Meacutedecine
Communication
111
Internet (bref) historique
Naissance en 1969 projet militaire Ameacutericain pour une transmission des informations deacutecentraliseacutee (Arpanet protocole IP)
Reacuteseau NSF (National Science Fondation) des universitaires Ameacutericains
Multiplication des reacuteseaux et laquo fusion raquo en un seul reacuteseau Internet
Creacuteation du Web par les chercheurs du Cern (Centre Europeacuteen de la Recherche Nucleacuteaire) en 1989
112
Evolution dInternetDATE NUMBER OF USERS WORLD POPULATION INFORMATION SOURCE
December 1995 16 millions 04 IDC
March 2000 304 millions 50 Nua Ltd
March 2005 888 millions 139 Internet World Stats
June 2010 1966 millions 287 Internet World Stats
Jun 2011 2110 millions 304 Internet World Stats
June 2012 2405 millions 343 Internet World Stats
Dec 2013 2802 millions 390 Internet World Stats
March 2014 (estimate)
2937 millions 407 Internet World Stats
113
Internet aujourdrsquohui
114
Internet aujourdrsquohui
World Wide Web 11 milliard de sites web en 2016 (source netcraft)
eMail 215 milliards envoyeacutes par jour en 2016 (hors spam)44 milliards de comptes mails en 2015
Reacuteseaux sociaux (Facebook Twitter Instagram etc)
Teacuteleacutephonie videacuteo confeacuterences chat (Skype Messenger etc)
Forums de discussion (IRC)
Commerce eacutelectronique
Transmission de fichiers (protocole ftp)
115
Les machines
Les laquo machines raquo se classifient en fonction de leur puissance
La puissance drsquoune machine se mesure en nombre drsquoopeacuterations par seconde ou Flops (floating point operation per seconde) Les multiples sont
Le Meacutegaflops 1 million drsquoop par seconde (10^6)
Le Gigaflops 1 milliard drsquoop par seconde (10^9)
Le Teacuteraflops mille milliards drsquoop par seconde (10^12)
Le Peacutetaflops un million de milliards drsquoop par seconde (10^15)
116
Les machines
Les super calculateurs
Liste du top 5 des super calculateurs sur httpwwwtop500org
2008 Roadrunner de IBM 1 PFLOPS
2010 Jaguar Cray XT5-HE 17 PFLOPS
2012 Sequoia ndash BlueGeneQ de IBM 16 PFLOPS
2014 Tianhe-2 (MilkyWay-2) - TH-IVB-FEP Cluster de NUDT 33 PFLOPS
2016 Sunway TaihuLight 93 PFLOPS
Les macro ordinateurs ou mainframe
Permettent la connexion simultaneacutee de plusieurs centaines drsquoutilisateurs Puissance gt 100 Meacutegaflops
Preacutesent dans les tregraves grosses entreprises nationales et internationales DEC HP Sun IBM (ES9000) Unisys
117
Les machines
Les mini ordinateurs
Permettent la connexion simultaneacutee de plusieurs dizaines drsquoutilisateurs Puissance gt 10 Meacutegaflops
Preacutesents dans les grosses PME
DEC HP Sun IBM (AS400)
Les ordinateurs personnels
Stations de travail (Sun Hp)
Micro-ordinateurs (PC Mac) de bureau (desktop) portables (notebook) de poche (laptop) internet (netbook)
118
12 Hardware (mateacuteriel) Software (logiciel)
Lrsquoinformatique repose sur
Le hardware physique du silicium et technologies associeacutees (transistors miniaturiseacutes microprocesseurs circuits inteacutegreacutes ordinateurs)
Le software programmation des ordinateurs
Dans ce cours nous traitons uniquement de la partie programmation
119
Le logiciel (Software)
Une machine est capable de traiter de lrsquoinformation (symbolique numeacuterique)
Pour qursquoelle ait une utiliteacute il faut lui
laquo dire raquo quels traitements effectuer crsquoest-agrave-dire la programmer
Logiciel ensemble des programmes destineacutes agrave effectuer un traitement sur un ordinateur
120
13 Les langages de programmation
Historique
Environnement de programmation
Champs drsquoapplications des langages
121
Historique des langages de programmation
Au commencement (~ 1946) le langage machine des 1 et des 0
Un progregraves le langage drsquoassemblage (~1950)
Premiers langages de haut niveau Fortran (applications scientifiques -1956-)
Cobol (applications de gestion -1960-)
Lisp (intelligence artificielle -1960-)
122
Historique des langages de programmation
Quelques reacutefeacuterents Pascal (Wirth 1968 ) C (Ritchie 1970) Smalltalk (Jey 1970) Ada (Ichbiah 1975) Prolog (Colmerauer Roussel 1975) C++ (Stroustrup 1983)
Langages les plus reacutecents (tous objets) Java (Sun) 1991 Python (Guido Van Rossum) 1991 C (Microsoft) 2001 hellip pour contrer Java et C++
123
Utilisation des langages de programmation Sur le site httpwwwtiobecomindexphpcontentpaperinfotpciindexhtml
124
Les environnements de programmations modernes
Ils integravegrent
Un eacutediteur intelligent
Un compilateur
Un deacutebogueur symbolique
Un geacuteneacuterateur drsquointerface graphique
125
Eacutediteurs intelligents pour lrsquoeacutecriture de programmes
Un langage de programmation a des regravegles syntaxiques strictes
Un eacutediteur laquo intelligent raquo
Signale des erreurs potentielles
Structure le texte automatiquement pour vous
Exemple si lrsquoon ouvre une accolade laquo raquo lrsquoeacutediteur eacutedite automatiquement lrsquoaccolade fermante correspondante laquo raquo
126
Compilateurs
Un ordinateur ne laquo comprend raquo que le langage machine (1 et 0)
Le compilateur est un laquo gros raquo programme qui traduit le programme eacutecrit dans un langage eacutevolueacute (par exemple C) en un programme machine
Si le compilateur est correct lrsquoordinateur exeacutecute bien les tacircches deacutecrites dans le langage de haut niveau
Problegraveme lrsquoœuf ou la poule (ou dans quel langage eacutecrire un compilateur )
127
Deacutebogueurs
Un deacutebogueur est un programme qui permet de suivre pas agrave pas lrsquoexeacutecution drsquoun programme ce qui permet de chercher plus facilement les erreurs eacuteventuelles (les bugs )
Il permet essentiellement
Drsquoavancer pas agrave pas dans lrsquoexeacutecution du programme De creacuteer des points drsquoarrecirct De lire (et de modifier) le contenu des variables
128
Deacutebogueurs
129
Geacuteneacuterateurs drsquointerfaces graphiques
La plupart des applications professionnelles ont une interface graphique eacutevolueacutee comprenant boutons cases agrave cocher menu deacuteroulant etc
Certains langages disposent drsquoinstructions permettant la creacuteation de ces interfaces
Certaines plateformes de deacuteveloppement proposent mecircme des outils graphiques et de gestion de code qui permettent au programmeur non expeacuterimenteacute de deacutevelopper facilement ce type drsquointerfaces (citons delphi visual basic visual C++ jbuilder etc)
130
Champs drsquoapplications des langages
Un langage est plus ou moins bien adapteacute agrave un domaine donneacute
Certains langages sont relativement speacutecialiseacutes
(Perl traitement des chaicircnes de caractegraveres JavaScript eacutecriture de pages web interactives etc)
Drsquoautres plus ou moins geacuteneacuteralistes (C Pascal C++ Objective C Java Python etc)
131
2 Programmation impeacuterative Introduction au langage C
132
21 Les diffeacuterents paradigmes de programmation
Il existe plusieurs techniques de programmation
Impeacuterative
Fonctionnelle
Logique
Orienteacutee objets
Parallegravele
Le langage que nous allons eacutetudier le langage C appartient agrave la cateacutegorie des langages de programmation impeacuterative
133
La programmation impeacuterative
Dans ce type de programmation on manipule explicitement la meacutemoire gracircce agrave des instructions de haut niveau
Exemple
1 int n = 1 on initialise une variable nommeacutee n agrave 1
2 n = n + 1 on increacutemente n de 1
Eacutetat de la meacutemoire
Apregraves 1
Apregraves 2
134
La programmation impeacuterative
Langages embleacutematiques Pascal C Basic Fortran
Remarque dans tous les cas au niveau de la machine lrsquoexeacutecution drsquoun programme revient toujours agrave des manipulations sur la meacutemoire
135
22 Le langage C introduction
Historique
Compilateurs environnements de programmation
136
Historique du langage C
Creacuteeacute en 1972 par Denis Ritchie (2011dagger)(Bell Laboratories)
Au deacutepart pour deacutevelopper le systegraveme drsquoexploitation Unix
Aujourdrsquohui utiliseacute par une large communauteacute de programmeurs
137
Historique du langage C
Premiegravere deacutefinition rigoureuse en 1978 laquoThe C programming Language raquo par Kerniguan amp Ritchie
Aujourdrsquohui le langage est normaliseacute on parle de laquo C ANSI raquo
138
Compilateurs environnements de programmation
Il existe des compilateurs etou environnements de programmation pour tous les systegravemes drsquoexploitation
Par exemple
Sous Windows Dev-C++ (eacutediteur + compilateur + deacutebogueur) Sous Linux gcc (eacutediteur emacs + deacutebogueur ddd)
Notons que tous les environnements de programmations pour C++ et Objective C sont aussi des environnements de programmation pour C Nous utiliserons drsquoailleurs Dev-C++ qui comme son nom lrsquoindique est un environnement de programmation pour C++
139
23 Etude drsquoun programme simple en C
Objet du programme calcul de la surface et du volume des planegravetes du systegraveme Solaire
Rappels des formules
Listing du programme
Analyse deacutetailleacutee du code
140
Le systegraveme Solaire
Planegravete Image Rayon (km)
Mercure 2439
Veacutenus 6050
Terre 6378
Mars 3387
141
Le systegraveme Solaire
Jupiter 71400
Saturne 60000
Uranus 26150
Neptune 24300
142
Surface et volume drsquoune sphegravere en fonction du rayon
V =4
3π R
3
S=4π R2
143
Le programme laquo planetes raquo
Un programme se deacuteveloppe dans un fichier
On deacuteveloppera nos programmes dans un fichier drsquoextension c
Le programme qui calcule lrsquoaire et le volume des planegravetes agrave partir de leur rayon est deacuteveloppeacute dans le fichier planetesc
Regravegles de bonne programmation
On donnera au fichier un nom qui rappelle la fonction du programme qui y est deacuteveloppeacute
On nrsquoutilise pas les accents (planetesc au lieu de planegravetesc) ni les espaces
144
Le fichier planetesc
include ltstdiohgt
const float PI = 314
int main() float rayon_planete le rayon de la planetefloat surface_planete sa surfacefloat volume_planete son volume
entree de la donnee rayon printf(Entrez le rayon de la planete (en km) )scanf(f amprayon_planete)
calcul de la surface du volume
surface_planete = 40 PI rayon_planete rayon_planetevolume_planete = (4030) PI rayon_planete rayon_planete rayon_planete
impression des resultatsprintf(sfsn Surface de la planete surface_planete km2)printf(sfsn Volume de la planete volume_planete km3)
return 0
145
Analyse du programme laquo planetes raquo
include ltstdiohgt
Demande dinclusion du fichier stdioh
(laquo standard input ouput raquo) Linclusion de ce fichier est neacutecessaire pour pouvoir utiliser les fonctions dentreacutee-sortie
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
17
Cours 1
18
1 Introduction
19
11 LrsquoInformatique aujourdrsquohui
Domaines drsquoapplications
Internet
Les machines
110
Domaines drsquoapplications de lrsquoInformatique
Nombreux et varieacutes (lrsquoInformatique a envahi notre quotidien exemples paiement par carte de creacutedit teacuteleacutephonie mobile preacutevisions meacuteteacuteo GPS etc)
Quelques grands domaines drsquoapplication
Sciences
Banque finance gestion
Industrie
Meacutedecine
Communication
111
Internet (bref) historique
Naissance en 1969 projet militaire Ameacutericain pour une transmission des informations deacutecentraliseacutee (Arpanet protocole IP)
Reacuteseau NSF (National Science Fondation) des universitaires Ameacutericains
Multiplication des reacuteseaux et laquo fusion raquo en un seul reacuteseau Internet
Creacuteation du Web par les chercheurs du Cern (Centre Europeacuteen de la Recherche Nucleacuteaire) en 1989
112
Evolution dInternetDATE NUMBER OF USERS WORLD POPULATION INFORMATION SOURCE
December 1995 16 millions 04 IDC
March 2000 304 millions 50 Nua Ltd
March 2005 888 millions 139 Internet World Stats
June 2010 1966 millions 287 Internet World Stats
Jun 2011 2110 millions 304 Internet World Stats
June 2012 2405 millions 343 Internet World Stats
Dec 2013 2802 millions 390 Internet World Stats
March 2014 (estimate)
2937 millions 407 Internet World Stats
113
Internet aujourdrsquohui
114
Internet aujourdrsquohui
World Wide Web 11 milliard de sites web en 2016 (source netcraft)
eMail 215 milliards envoyeacutes par jour en 2016 (hors spam)44 milliards de comptes mails en 2015
Reacuteseaux sociaux (Facebook Twitter Instagram etc)
Teacuteleacutephonie videacuteo confeacuterences chat (Skype Messenger etc)
Forums de discussion (IRC)
Commerce eacutelectronique
Transmission de fichiers (protocole ftp)
115
Les machines
Les laquo machines raquo se classifient en fonction de leur puissance
La puissance drsquoune machine se mesure en nombre drsquoopeacuterations par seconde ou Flops (floating point operation per seconde) Les multiples sont
Le Meacutegaflops 1 million drsquoop par seconde (10^6)
Le Gigaflops 1 milliard drsquoop par seconde (10^9)
Le Teacuteraflops mille milliards drsquoop par seconde (10^12)
Le Peacutetaflops un million de milliards drsquoop par seconde (10^15)
116
Les machines
Les super calculateurs
Liste du top 5 des super calculateurs sur httpwwwtop500org
2008 Roadrunner de IBM 1 PFLOPS
2010 Jaguar Cray XT5-HE 17 PFLOPS
2012 Sequoia ndash BlueGeneQ de IBM 16 PFLOPS
2014 Tianhe-2 (MilkyWay-2) - TH-IVB-FEP Cluster de NUDT 33 PFLOPS
2016 Sunway TaihuLight 93 PFLOPS
Les macro ordinateurs ou mainframe
Permettent la connexion simultaneacutee de plusieurs centaines drsquoutilisateurs Puissance gt 100 Meacutegaflops
Preacutesent dans les tregraves grosses entreprises nationales et internationales DEC HP Sun IBM (ES9000) Unisys
117
Les machines
Les mini ordinateurs
Permettent la connexion simultaneacutee de plusieurs dizaines drsquoutilisateurs Puissance gt 10 Meacutegaflops
Preacutesents dans les grosses PME
DEC HP Sun IBM (AS400)
Les ordinateurs personnels
Stations de travail (Sun Hp)
Micro-ordinateurs (PC Mac) de bureau (desktop) portables (notebook) de poche (laptop) internet (netbook)
118
12 Hardware (mateacuteriel) Software (logiciel)
Lrsquoinformatique repose sur
Le hardware physique du silicium et technologies associeacutees (transistors miniaturiseacutes microprocesseurs circuits inteacutegreacutes ordinateurs)
Le software programmation des ordinateurs
Dans ce cours nous traitons uniquement de la partie programmation
119
Le logiciel (Software)
Une machine est capable de traiter de lrsquoinformation (symbolique numeacuterique)
Pour qursquoelle ait une utiliteacute il faut lui
laquo dire raquo quels traitements effectuer crsquoest-agrave-dire la programmer
Logiciel ensemble des programmes destineacutes agrave effectuer un traitement sur un ordinateur
120
13 Les langages de programmation
Historique
Environnement de programmation
Champs drsquoapplications des langages
121
Historique des langages de programmation
Au commencement (~ 1946) le langage machine des 1 et des 0
Un progregraves le langage drsquoassemblage (~1950)
Premiers langages de haut niveau Fortran (applications scientifiques -1956-)
Cobol (applications de gestion -1960-)
Lisp (intelligence artificielle -1960-)
122
Historique des langages de programmation
Quelques reacutefeacuterents Pascal (Wirth 1968 ) C (Ritchie 1970) Smalltalk (Jey 1970) Ada (Ichbiah 1975) Prolog (Colmerauer Roussel 1975) C++ (Stroustrup 1983)
Langages les plus reacutecents (tous objets) Java (Sun) 1991 Python (Guido Van Rossum) 1991 C (Microsoft) 2001 hellip pour contrer Java et C++
123
Utilisation des langages de programmation Sur le site httpwwwtiobecomindexphpcontentpaperinfotpciindexhtml
124
Les environnements de programmations modernes
Ils integravegrent
Un eacutediteur intelligent
Un compilateur
Un deacutebogueur symbolique
Un geacuteneacuterateur drsquointerface graphique
125
Eacutediteurs intelligents pour lrsquoeacutecriture de programmes
Un langage de programmation a des regravegles syntaxiques strictes
Un eacutediteur laquo intelligent raquo
Signale des erreurs potentielles
Structure le texte automatiquement pour vous
Exemple si lrsquoon ouvre une accolade laquo raquo lrsquoeacutediteur eacutedite automatiquement lrsquoaccolade fermante correspondante laquo raquo
126
Compilateurs
Un ordinateur ne laquo comprend raquo que le langage machine (1 et 0)
Le compilateur est un laquo gros raquo programme qui traduit le programme eacutecrit dans un langage eacutevolueacute (par exemple C) en un programme machine
Si le compilateur est correct lrsquoordinateur exeacutecute bien les tacircches deacutecrites dans le langage de haut niveau
Problegraveme lrsquoœuf ou la poule (ou dans quel langage eacutecrire un compilateur )
127
Deacutebogueurs
Un deacutebogueur est un programme qui permet de suivre pas agrave pas lrsquoexeacutecution drsquoun programme ce qui permet de chercher plus facilement les erreurs eacuteventuelles (les bugs )
Il permet essentiellement
Drsquoavancer pas agrave pas dans lrsquoexeacutecution du programme De creacuteer des points drsquoarrecirct De lire (et de modifier) le contenu des variables
128
Deacutebogueurs
129
Geacuteneacuterateurs drsquointerfaces graphiques
La plupart des applications professionnelles ont une interface graphique eacutevolueacutee comprenant boutons cases agrave cocher menu deacuteroulant etc
Certains langages disposent drsquoinstructions permettant la creacuteation de ces interfaces
Certaines plateformes de deacuteveloppement proposent mecircme des outils graphiques et de gestion de code qui permettent au programmeur non expeacuterimenteacute de deacutevelopper facilement ce type drsquointerfaces (citons delphi visual basic visual C++ jbuilder etc)
130
Champs drsquoapplications des langages
Un langage est plus ou moins bien adapteacute agrave un domaine donneacute
Certains langages sont relativement speacutecialiseacutes
(Perl traitement des chaicircnes de caractegraveres JavaScript eacutecriture de pages web interactives etc)
Drsquoautres plus ou moins geacuteneacuteralistes (C Pascal C++ Objective C Java Python etc)
131
2 Programmation impeacuterative Introduction au langage C
132
21 Les diffeacuterents paradigmes de programmation
Il existe plusieurs techniques de programmation
Impeacuterative
Fonctionnelle
Logique
Orienteacutee objets
Parallegravele
Le langage que nous allons eacutetudier le langage C appartient agrave la cateacutegorie des langages de programmation impeacuterative
133
La programmation impeacuterative
Dans ce type de programmation on manipule explicitement la meacutemoire gracircce agrave des instructions de haut niveau
Exemple
1 int n = 1 on initialise une variable nommeacutee n agrave 1
2 n = n + 1 on increacutemente n de 1
Eacutetat de la meacutemoire
Apregraves 1
Apregraves 2
134
La programmation impeacuterative
Langages embleacutematiques Pascal C Basic Fortran
Remarque dans tous les cas au niveau de la machine lrsquoexeacutecution drsquoun programme revient toujours agrave des manipulations sur la meacutemoire
135
22 Le langage C introduction
Historique
Compilateurs environnements de programmation
136
Historique du langage C
Creacuteeacute en 1972 par Denis Ritchie (2011dagger)(Bell Laboratories)
Au deacutepart pour deacutevelopper le systegraveme drsquoexploitation Unix
Aujourdrsquohui utiliseacute par une large communauteacute de programmeurs
137
Historique du langage C
Premiegravere deacutefinition rigoureuse en 1978 laquoThe C programming Language raquo par Kerniguan amp Ritchie
Aujourdrsquohui le langage est normaliseacute on parle de laquo C ANSI raquo
138
Compilateurs environnements de programmation
Il existe des compilateurs etou environnements de programmation pour tous les systegravemes drsquoexploitation
Par exemple
Sous Windows Dev-C++ (eacutediteur + compilateur + deacutebogueur) Sous Linux gcc (eacutediteur emacs + deacutebogueur ddd)
Notons que tous les environnements de programmations pour C++ et Objective C sont aussi des environnements de programmation pour C Nous utiliserons drsquoailleurs Dev-C++ qui comme son nom lrsquoindique est un environnement de programmation pour C++
139
23 Etude drsquoun programme simple en C
Objet du programme calcul de la surface et du volume des planegravetes du systegraveme Solaire
Rappels des formules
Listing du programme
Analyse deacutetailleacutee du code
140
Le systegraveme Solaire
Planegravete Image Rayon (km)
Mercure 2439
Veacutenus 6050
Terre 6378
Mars 3387
141
Le systegraveme Solaire
Jupiter 71400
Saturne 60000
Uranus 26150
Neptune 24300
142
Surface et volume drsquoune sphegravere en fonction du rayon
V =4
3π R
3
S=4π R2
143
Le programme laquo planetes raquo
Un programme se deacuteveloppe dans un fichier
On deacuteveloppera nos programmes dans un fichier drsquoextension c
Le programme qui calcule lrsquoaire et le volume des planegravetes agrave partir de leur rayon est deacuteveloppeacute dans le fichier planetesc
Regravegles de bonne programmation
On donnera au fichier un nom qui rappelle la fonction du programme qui y est deacuteveloppeacute
On nrsquoutilise pas les accents (planetesc au lieu de planegravetesc) ni les espaces
144
Le fichier planetesc
include ltstdiohgt
const float PI = 314
int main() float rayon_planete le rayon de la planetefloat surface_planete sa surfacefloat volume_planete son volume
entree de la donnee rayon printf(Entrez le rayon de la planete (en km) )scanf(f amprayon_planete)
calcul de la surface du volume
surface_planete = 40 PI rayon_planete rayon_planetevolume_planete = (4030) PI rayon_planete rayon_planete rayon_planete
impression des resultatsprintf(sfsn Surface de la planete surface_planete km2)printf(sfsn Volume de la planete volume_planete km3)
return 0
145
Analyse du programme laquo planetes raquo
include ltstdiohgt
Demande dinclusion du fichier stdioh
(laquo standard input ouput raquo) Linclusion de ce fichier est neacutecessaire pour pouvoir utiliser les fonctions dentreacutee-sortie
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
18
1 Introduction
19
11 LrsquoInformatique aujourdrsquohui
Domaines drsquoapplications
Internet
Les machines
110
Domaines drsquoapplications de lrsquoInformatique
Nombreux et varieacutes (lrsquoInformatique a envahi notre quotidien exemples paiement par carte de creacutedit teacuteleacutephonie mobile preacutevisions meacuteteacuteo GPS etc)
Quelques grands domaines drsquoapplication
Sciences
Banque finance gestion
Industrie
Meacutedecine
Communication
111
Internet (bref) historique
Naissance en 1969 projet militaire Ameacutericain pour une transmission des informations deacutecentraliseacutee (Arpanet protocole IP)
Reacuteseau NSF (National Science Fondation) des universitaires Ameacutericains
Multiplication des reacuteseaux et laquo fusion raquo en un seul reacuteseau Internet
Creacuteation du Web par les chercheurs du Cern (Centre Europeacuteen de la Recherche Nucleacuteaire) en 1989
112
Evolution dInternetDATE NUMBER OF USERS WORLD POPULATION INFORMATION SOURCE
December 1995 16 millions 04 IDC
March 2000 304 millions 50 Nua Ltd
March 2005 888 millions 139 Internet World Stats
June 2010 1966 millions 287 Internet World Stats
Jun 2011 2110 millions 304 Internet World Stats
June 2012 2405 millions 343 Internet World Stats
Dec 2013 2802 millions 390 Internet World Stats
March 2014 (estimate)
2937 millions 407 Internet World Stats
113
Internet aujourdrsquohui
114
Internet aujourdrsquohui
World Wide Web 11 milliard de sites web en 2016 (source netcraft)
eMail 215 milliards envoyeacutes par jour en 2016 (hors spam)44 milliards de comptes mails en 2015
Reacuteseaux sociaux (Facebook Twitter Instagram etc)
Teacuteleacutephonie videacuteo confeacuterences chat (Skype Messenger etc)
Forums de discussion (IRC)
Commerce eacutelectronique
Transmission de fichiers (protocole ftp)
115
Les machines
Les laquo machines raquo se classifient en fonction de leur puissance
La puissance drsquoune machine se mesure en nombre drsquoopeacuterations par seconde ou Flops (floating point operation per seconde) Les multiples sont
Le Meacutegaflops 1 million drsquoop par seconde (10^6)
Le Gigaflops 1 milliard drsquoop par seconde (10^9)
Le Teacuteraflops mille milliards drsquoop par seconde (10^12)
Le Peacutetaflops un million de milliards drsquoop par seconde (10^15)
116
Les machines
Les super calculateurs
Liste du top 5 des super calculateurs sur httpwwwtop500org
2008 Roadrunner de IBM 1 PFLOPS
2010 Jaguar Cray XT5-HE 17 PFLOPS
2012 Sequoia ndash BlueGeneQ de IBM 16 PFLOPS
2014 Tianhe-2 (MilkyWay-2) - TH-IVB-FEP Cluster de NUDT 33 PFLOPS
2016 Sunway TaihuLight 93 PFLOPS
Les macro ordinateurs ou mainframe
Permettent la connexion simultaneacutee de plusieurs centaines drsquoutilisateurs Puissance gt 100 Meacutegaflops
Preacutesent dans les tregraves grosses entreprises nationales et internationales DEC HP Sun IBM (ES9000) Unisys
117
Les machines
Les mini ordinateurs
Permettent la connexion simultaneacutee de plusieurs dizaines drsquoutilisateurs Puissance gt 10 Meacutegaflops
Preacutesents dans les grosses PME
DEC HP Sun IBM (AS400)
Les ordinateurs personnels
Stations de travail (Sun Hp)
Micro-ordinateurs (PC Mac) de bureau (desktop) portables (notebook) de poche (laptop) internet (netbook)
118
12 Hardware (mateacuteriel) Software (logiciel)
Lrsquoinformatique repose sur
Le hardware physique du silicium et technologies associeacutees (transistors miniaturiseacutes microprocesseurs circuits inteacutegreacutes ordinateurs)
Le software programmation des ordinateurs
Dans ce cours nous traitons uniquement de la partie programmation
119
Le logiciel (Software)
Une machine est capable de traiter de lrsquoinformation (symbolique numeacuterique)
Pour qursquoelle ait une utiliteacute il faut lui
laquo dire raquo quels traitements effectuer crsquoest-agrave-dire la programmer
Logiciel ensemble des programmes destineacutes agrave effectuer un traitement sur un ordinateur
120
13 Les langages de programmation
Historique
Environnement de programmation
Champs drsquoapplications des langages
121
Historique des langages de programmation
Au commencement (~ 1946) le langage machine des 1 et des 0
Un progregraves le langage drsquoassemblage (~1950)
Premiers langages de haut niveau Fortran (applications scientifiques -1956-)
Cobol (applications de gestion -1960-)
Lisp (intelligence artificielle -1960-)
122
Historique des langages de programmation
Quelques reacutefeacuterents Pascal (Wirth 1968 ) C (Ritchie 1970) Smalltalk (Jey 1970) Ada (Ichbiah 1975) Prolog (Colmerauer Roussel 1975) C++ (Stroustrup 1983)
Langages les plus reacutecents (tous objets) Java (Sun) 1991 Python (Guido Van Rossum) 1991 C (Microsoft) 2001 hellip pour contrer Java et C++
123
Utilisation des langages de programmation Sur le site httpwwwtiobecomindexphpcontentpaperinfotpciindexhtml
124
Les environnements de programmations modernes
Ils integravegrent
Un eacutediteur intelligent
Un compilateur
Un deacutebogueur symbolique
Un geacuteneacuterateur drsquointerface graphique
125
Eacutediteurs intelligents pour lrsquoeacutecriture de programmes
Un langage de programmation a des regravegles syntaxiques strictes
Un eacutediteur laquo intelligent raquo
Signale des erreurs potentielles
Structure le texte automatiquement pour vous
Exemple si lrsquoon ouvre une accolade laquo raquo lrsquoeacutediteur eacutedite automatiquement lrsquoaccolade fermante correspondante laquo raquo
126
Compilateurs
Un ordinateur ne laquo comprend raquo que le langage machine (1 et 0)
Le compilateur est un laquo gros raquo programme qui traduit le programme eacutecrit dans un langage eacutevolueacute (par exemple C) en un programme machine
Si le compilateur est correct lrsquoordinateur exeacutecute bien les tacircches deacutecrites dans le langage de haut niveau
Problegraveme lrsquoœuf ou la poule (ou dans quel langage eacutecrire un compilateur )
127
Deacutebogueurs
Un deacutebogueur est un programme qui permet de suivre pas agrave pas lrsquoexeacutecution drsquoun programme ce qui permet de chercher plus facilement les erreurs eacuteventuelles (les bugs )
Il permet essentiellement
Drsquoavancer pas agrave pas dans lrsquoexeacutecution du programme De creacuteer des points drsquoarrecirct De lire (et de modifier) le contenu des variables
128
Deacutebogueurs
129
Geacuteneacuterateurs drsquointerfaces graphiques
La plupart des applications professionnelles ont une interface graphique eacutevolueacutee comprenant boutons cases agrave cocher menu deacuteroulant etc
Certains langages disposent drsquoinstructions permettant la creacuteation de ces interfaces
Certaines plateformes de deacuteveloppement proposent mecircme des outils graphiques et de gestion de code qui permettent au programmeur non expeacuterimenteacute de deacutevelopper facilement ce type drsquointerfaces (citons delphi visual basic visual C++ jbuilder etc)
130
Champs drsquoapplications des langages
Un langage est plus ou moins bien adapteacute agrave un domaine donneacute
Certains langages sont relativement speacutecialiseacutes
(Perl traitement des chaicircnes de caractegraveres JavaScript eacutecriture de pages web interactives etc)
Drsquoautres plus ou moins geacuteneacuteralistes (C Pascal C++ Objective C Java Python etc)
131
2 Programmation impeacuterative Introduction au langage C
132
21 Les diffeacuterents paradigmes de programmation
Il existe plusieurs techniques de programmation
Impeacuterative
Fonctionnelle
Logique
Orienteacutee objets
Parallegravele
Le langage que nous allons eacutetudier le langage C appartient agrave la cateacutegorie des langages de programmation impeacuterative
133
La programmation impeacuterative
Dans ce type de programmation on manipule explicitement la meacutemoire gracircce agrave des instructions de haut niveau
Exemple
1 int n = 1 on initialise une variable nommeacutee n agrave 1
2 n = n + 1 on increacutemente n de 1
Eacutetat de la meacutemoire
Apregraves 1
Apregraves 2
134
La programmation impeacuterative
Langages embleacutematiques Pascal C Basic Fortran
Remarque dans tous les cas au niveau de la machine lrsquoexeacutecution drsquoun programme revient toujours agrave des manipulations sur la meacutemoire
135
22 Le langage C introduction
Historique
Compilateurs environnements de programmation
136
Historique du langage C
Creacuteeacute en 1972 par Denis Ritchie (2011dagger)(Bell Laboratories)
Au deacutepart pour deacutevelopper le systegraveme drsquoexploitation Unix
Aujourdrsquohui utiliseacute par une large communauteacute de programmeurs
137
Historique du langage C
Premiegravere deacutefinition rigoureuse en 1978 laquoThe C programming Language raquo par Kerniguan amp Ritchie
Aujourdrsquohui le langage est normaliseacute on parle de laquo C ANSI raquo
138
Compilateurs environnements de programmation
Il existe des compilateurs etou environnements de programmation pour tous les systegravemes drsquoexploitation
Par exemple
Sous Windows Dev-C++ (eacutediteur + compilateur + deacutebogueur) Sous Linux gcc (eacutediteur emacs + deacutebogueur ddd)
Notons que tous les environnements de programmations pour C++ et Objective C sont aussi des environnements de programmation pour C Nous utiliserons drsquoailleurs Dev-C++ qui comme son nom lrsquoindique est un environnement de programmation pour C++
139
23 Etude drsquoun programme simple en C
Objet du programme calcul de la surface et du volume des planegravetes du systegraveme Solaire
Rappels des formules
Listing du programme
Analyse deacutetailleacutee du code
140
Le systegraveme Solaire
Planegravete Image Rayon (km)
Mercure 2439
Veacutenus 6050
Terre 6378
Mars 3387
141
Le systegraveme Solaire
Jupiter 71400
Saturne 60000
Uranus 26150
Neptune 24300
142
Surface et volume drsquoune sphegravere en fonction du rayon
V =4
3π R
3
S=4π R2
143
Le programme laquo planetes raquo
Un programme se deacuteveloppe dans un fichier
On deacuteveloppera nos programmes dans un fichier drsquoextension c
Le programme qui calcule lrsquoaire et le volume des planegravetes agrave partir de leur rayon est deacuteveloppeacute dans le fichier planetesc
Regravegles de bonne programmation
On donnera au fichier un nom qui rappelle la fonction du programme qui y est deacuteveloppeacute
On nrsquoutilise pas les accents (planetesc au lieu de planegravetesc) ni les espaces
144
Le fichier planetesc
include ltstdiohgt
const float PI = 314
int main() float rayon_planete le rayon de la planetefloat surface_planete sa surfacefloat volume_planete son volume
entree de la donnee rayon printf(Entrez le rayon de la planete (en km) )scanf(f amprayon_planete)
calcul de la surface du volume
surface_planete = 40 PI rayon_planete rayon_planetevolume_planete = (4030) PI rayon_planete rayon_planete rayon_planete
impression des resultatsprintf(sfsn Surface de la planete surface_planete km2)printf(sfsn Volume de la planete volume_planete km3)
return 0
145
Analyse du programme laquo planetes raquo
include ltstdiohgt
Demande dinclusion du fichier stdioh
(laquo standard input ouput raquo) Linclusion de ce fichier est neacutecessaire pour pouvoir utiliser les fonctions dentreacutee-sortie
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
19
11 LrsquoInformatique aujourdrsquohui
Domaines drsquoapplications
Internet
Les machines
110
Domaines drsquoapplications de lrsquoInformatique
Nombreux et varieacutes (lrsquoInformatique a envahi notre quotidien exemples paiement par carte de creacutedit teacuteleacutephonie mobile preacutevisions meacuteteacuteo GPS etc)
Quelques grands domaines drsquoapplication
Sciences
Banque finance gestion
Industrie
Meacutedecine
Communication
111
Internet (bref) historique
Naissance en 1969 projet militaire Ameacutericain pour une transmission des informations deacutecentraliseacutee (Arpanet protocole IP)
Reacuteseau NSF (National Science Fondation) des universitaires Ameacutericains
Multiplication des reacuteseaux et laquo fusion raquo en un seul reacuteseau Internet
Creacuteation du Web par les chercheurs du Cern (Centre Europeacuteen de la Recherche Nucleacuteaire) en 1989
112
Evolution dInternetDATE NUMBER OF USERS WORLD POPULATION INFORMATION SOURCE
December 1995 16 millions 04 IDC
March 2000 304 millions 50 Nua Ltd
March 2005 888 millions 139 Internet World Stats
June 2010 1966 millions 287 Internet World Stats
Jun 2011 2110 millions 304 Internet World Stats
June 2012 2405 millions 343 Internet World Stats
Dec 2013 2802 millions 390 Internet World Stats
March 2014 (estimate)
2937 millions 407 Internet World Stats
113
Internet aujourdrsquohui
114
Internet aujourdrsquohui
World Wide Web 11 milliard de sites web en 2016 (source netcraft)
eMail 215 milliards envoyeacutes par jour en 2016 (hors spam)44 milliards de comptes mails en 2015
Reacuteseaux sociaux (Facebook Twitter Instagram etc)
Teacuteleacutephonie videacuteo confeacuterences chat (Skype Messenger etc)
Forums de discussion (IRC)
Commerce eacutelectronique
Transmission de fichiers (protocole ftp)
115
Les machines
Les laquo machines raquo se classifient en fonction de leur puissance
La puissance drsquoune machine se mesure en nombre drsquoopeacuterations par seconde ou Flops (floating point operation per seconde) Les multiples sont
Le Meacutegaflops 1 million drsquoop par seconde (10^6)
Le Gigaflops 1 milliard drsquoop par seconde (10^9)
Le Teacuteraflops mille milliards drsquoop par seconde (10^12)
Le Peacutetaflops un million de milliards drsquoop par seconde (10^15)
116
Les machines
Les super calculateurs
Liste du top 5 des super calculateurs sur httpwwwtop500org
2008 Roadrunner de IBM 1 PFLOPS
2010 Jaguar Cray XT5-HE 17 PFLOPS
2012 Sequoia ndash BlueGeneQ de IBM 16 PFLOPS
2014 Tianhe-2 (MilkyWay-2) - TH-IVB-FEP Cluster de NUDT 33 PFLOPS
2016 Sunway TaihuLight 93 PFLOPS
Les macro ordinateurs ou mainframe
Permettent la connexion simultaneacutee de plusieurs centaines drsquoutilisateurs Puissance gt 100 Meacutegaflops
Preacutesent dans les tregraves grosses entreprises nationales et internationales DEC HP Sun IBM (ES9000) Unisys
117
Les machines
Les mini ordinateurs
Permettent la connexion simultaneacutee de plusieurs dizaines drsquoutilisateurs Puissance gt 10 Meacutegaflops
Preacutesents dans les grosses PME
DEC HP Sun IBM (AS400)
Les ordinateurs personnels
Stations de travail (Sun Hp)
Micro-ordinateurs (PC Mac) de bureau (desktop) portables (notebook) de poche (laptop) internet (netbook)
118
12 Hardware (mateacuteriel) Software (logiciel)
Lrsquoinformatique repose sur
Le hardware physique du silicium et technologies associeacutees (transistors miniaturiseacutes microprocesseurs circuits inteacutegreacutes ordinateurs)
Le software programmation des ordinateurs
Dans ce cours nous traitons uniquement de la partie programmation
119
Le logiciel (Software)
Une machine est capable de traiter de lrsquoinformation (symbolique numeacuterique)
Pour qursquoelle ait une utiliteacute il faut lui
laquo dire raquo quels traitements effectuer crsquoest-agrave-dire la programmer
Logiciel ensemble des programmes destineacutes agrave effectuer un traitement sur un ordinateur
120
13 Les langages de programmation
Historique
Environnement de programmation
Champs drsquoapplications des langages
121
Historique des langages de programmation
Au commencement (~ 1946) le langage machine des 1 et des 0
Un progregraves le langage drsquoassemblage (~1950)
Premiers langages de haut niveau Fortran (applications scientifiques -1956-)
Cobol (applications de gestion -1960-)
Lisp (intelligence artificielle -1960-)
122
Historique des langages de programmation
Quelques reacutefeacuterents Pascal (Wirth 1968 ) C (Ritchie 1970) Smalltalk (Jey 1970) Ada (Ichbiah 1975) Prolog (Colmerauer Roussel 1975) C++ (Stroustrup 1983)
Langages les plus reacutecents (tous objets) Java (Sun) 1991 Python (Guido Van Rossum) 1991 C (Microsoft) 2001 hellip pour contrer Java et C++
123
Utilisation des langages de programmation Sur le site httpwwwtiobecomindexphpcontentpaperinfotpciindexhtml
124
Les environnements de programmations modernes
Ils integravegrent
Un eacutediteur intelligent
Un compilateur
Un deacutebogueur symbolique
Un geacuteneacuterateur drsquointerface graphique
125
Eacutediteurs intelligents pour lrsquoeacutecriture de programmes
Un langage de programmation a des regravegles syntaxiques strictes
Un eacutediteur laquo intelligent raquo
Signale des erreurs potentielles
Structure le texte automatiquement pour vous
Exemple si lrsquoon ouvre une accolade laquo raquo lrsquoeacutediteur eacutedite automatiquement lrsquoaccolade fermante correspondante laquo raquo
126
Compilateurs
Un ordinateur ne laquo comprend raquo que le langage machine (1 et 0)
Le compilateur est un laquo gros raquo programme qui traduit le programme eacutecrit dans un langage eacutevolueacute (par exemple C) en un programme machine
Si le compilateur est correct lrsquoordinateur exeacutecute bien les tacircches deacutecrites dans le langage de haut niveau
Problegraveme lrsquoœuf ou la poule (ou dans quel langage eacutecrire un compilateur )
127
Deacutebogueurs
Un deacutebogueur est un programme qui permet de suivre pas agrave pas lrsquoexeacutecution drsquoun programme ce qui permet de chercher plus facilement les erreurs eacuteventuelles (les bugs )
Il permet essentiellement
Drsquoavancer pas agrave pas dans lrsquoexeacutecution du programme De creacuteer des points drsquoarrecirct De lire (et de modifier) le contenu des variables
128
Deacutebogueurs
129
Geacuteneacuterateurs drsquointerfaces graphiques
La plupart des applications professionnelles ont une interface graphique eacutevolueacutee comprenant boutons cases agrave cocher menu deacuteroulant etc
Certains langages disposent drsquoinstructions permettant la creacuteation de ces interfaces
Certaines plateformes de deacuteveloppement proposent mecircme des outils graphiques et de gestion de code qui permettent au programmeur non expeacuterimenteacute de deacutevelopper facilement ce type drsquointerfaces (citons delphi visual basic visual C++ jbuilder etc)
130
Champs drsquoapplications des langages
Un langage est plus ou moins bien adapteacute agrave un domaine donneacute
Certains langages sont relativement speacutecialiseacutes
(Perl traitement des chaicircnes de caractegraveres JavaScript eacutecriture de pages web interactives etc)
Drsquoautres plus ou moins geacuteneacuteralistes (C Pascal C++ Objective C Java Python etc)
131
2 Programmation impeacuterative Introduction au langage C
132
21 Les diffeacuterents paradigmes de programmation
Il existe plusieurs techniques de programmation
Impeacuterative
Fonctionnelle
Logique
Orienteacutee objets
Parallegravele
Le langage que nous allons eacutetudier le langage C appartient agrave la cateacutegorie des langages de programmation impeacuterative
133
La programmation impeacuterative
Dans ce type de programmation on manipule explicitement la meacutemoire gracircce agrave des instructions de haut niveau
Exemple
1 int n = 1 on initialise une variable nommeacutee n agrave 1
2 n = n + 1 on increacutemente n de 1
Eacutetat de la meacutemoire
Apregraves 1
Apregraves 2
134
La programmation impeacuterative
Langages embleacutematiques Pascal C Basic Fortran
Remarque dans tous les cas au niveau de la machine lrsquoexeacutecution drsquoun programme revient toujours agrave des manipulations sur la meacutemoire
135
22 Le langage C introduction
Historique
Compilateurs environnements de programmation
136
Historique du langage C
Creacuteeacute en 1972 par Denis Ritchie (2011dagger)(Bell Laboratories)
Au deacutepart pour deacutevelopper le systegraveme drsquoexploitation Unix
Aujourdrsquohui utiliseacute par une large communauteacute de programmeurs
137
Historique du langage C
Premiegravere deacutefinition rigoureuse en 1978 laquoThe C programming Language raquo par Kerniguan amp Ritchie
Aujourdrsquohui le langage est normaliseacute on parle de laquo C ANSI raquo
138
Compilateurs environnements de programmation
Il existe des compilateurs etou environnements de programmation pour tous les systegravemes drsquoexploitation
Par exemple
Sous Windows Dev-C++ (eacutediteur + compilateur + deacutebogueur) Sous Linux gcc (eacutediteur emacs + deacutebogueur ddd)
Notons que tous les environnements de programmations pour C++ et Objective C sont aussi des environnements de programmation pour C Nous utiliserons drsquoailleurs Dev-C++ qui comme son nom lrsquoindique est un environnement de programmation pour C++
139
23 Etude drsquoun programme simple en C
Objet du programme calcul de la surface et du volume des planegravetes du systegraveme Solaire
Rappels des formules
Listing du programme
Analyse deacutetailleacutee du code
140
Le systegraveme Solaire
Planegravete Image Rayon (km)
Mercure 2439
Veacutenus 6050
Terre 6378
Mars 3387
141
Le systegraveme Solaire
Jupiter 71400
Saturne 60000
Uranus 26150
Neptune 24300
142
Surface et volume drsquoune sphegravere en fonction du rayon
V =4
3π R
3
S=4π R2
143
Le programme laquo planetes raquo
Un programme se deacuteveloppe dans un fichier
On deacuteveloppera nos programmes dans un fichier drsquoextension c
Le programme qui calcule lrsquoaire et le volume des planegravetes agrave partir de leur rayon est deacuteveloppeacute dans le fichier planetesc
Regravegles de bonne programmation
On donnera au fichier un nom qui rappelle la fonction du programme qui y est deacuteveloppeacute
On nrsquoutilise pas les accents (planetesc au lieu de planegravetesc) ni les espaces
144
Le fichier planetesc
include ltstdiohgt
const float PI = 314
int main() float rayon_planete le rayon de la planetefloat surface_planete sa surfacefloat volume_planete son volume
entree de la donnee rayon printf(Entrez le rayon de la planete (en km) )scanf(f amprayon_planete)
calcul de la surface du volume
surface_planete = 40 PI rayon_planete rayon_planetevolume_planete = (4030) PI rayon_planete rayon_planete rayon_planete
impression des resultatsprintf(sfsn Surface de la planete surface_planete km2)printf(sfsn Volume de la planete volume_planete km3)
return 0
145
Analyse du programme laquo planetes raquo
include ltstdiohgt
Demande dinclusion du fichier stdioh
(laquo standard input ouput raquo) Linclusion de ce fichier est neacutecessaire pour pouvoir utiliser les fonctions dentreacutee-sortie
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
110
Domaines drsquoapplications de lrsquoInformatique
Nombreux et varieacutes (lrsquoInformatique a envahi notre quotidien exemples paiement par carte de creacutedit teacuteleacutephonie mobile preacutevisions meacuteteacuteo GPS etc)
Quelques grands domaines drsquoapplication
Sciences
Banque finance gestion
Industrie
Meacutedecine
Communication
111
Internet (bref) historique
Naissance en 1969 projet militaire Ameacutericain pour une transmission des informations deacutecentraliseacutee (Arpanet protocole IP)
Reacuteseau NSF (National Science Fondation) des universitaires Ameacutericains
Multiplication des reacuteseaux et laquo fusion raquo en un seul reacuteseau Internet
Creacuteation du Web par les chercheurs du Cern (Centre Europeacuteen de la Recherche Nucleacuteaire) en 1989
112
Evolution dInternetDATE NUMBER OF USERS WORLD POPULATION INFORMATION SOURCE
December 1995 16 millions 04 IDC
March 2000 304 millions 50 Nua Ltd
March 2005 888 millions 139 Internet World Stats
June 2010 1966 millions 287 Internet World Stats
Jun 2011 2110 millions 304 Internet World Stats
June 2012 2405 millions 343 Internet World Stats
Dec 2013 2802 millions 390 Internet World Stats
March 2014 (estimate)
2937 millions 407 Internet World Stats
113
Internet aujourdrsquohui
114
Internet aujourdrsquohui
World Wide Web 11 milliard de sites web en 2016 (source netcraft)
eMail 215 milliards envoyeacutes par jour en 2016 (hors spam)44 milliards de comptes mails en 2015
Reacuteseaux sociaux (Facebook Twitter Instagram etc)
Teacuteleacutephonie videacuteo confeacuterences chat (Skype Messenger etc)
Forums de discussion (IRC)
Commerce eacutelectronique
Transmission de fichiers (protocole ftp)
115
Les machines
Les laquo machines raquo se classifient en fonction de leur puissance
La puissance drsquoune machine se mesure en nombre drsquoopeacuterations par seconde ou Flops (floating point operation per seconde) Les multiples sont
Le Meacutegaflops 1 million drsquoop par seconde (10^6)
Le Gigaflops 1 milliard drsquoop par seconde (10^9)
Le Teacuteraflops mille milliards drsquoop par seconde (10^12)
Le Peacutetaflops un million de milliards drsquoop par seconde (10^15)
116
Les machines
Les super calculateurs
Liste du top 5 des super calculateurs sur httpwwwtop500org
2008 Roadrunner de IBM 1 PFLOPS
2010 Jaguar Cray XT5-HE 17 PFLOPS
2012 Sequoia ndash BlueGeneQ de IBM 16 PFLOPS
2014 Tianhe-2 (MilkyWay-2) - TH-IVB-FEP Cluster de NUDT 33 PFLOPS
2016 Sunway TaihuLight 93 PFLOPS
Les macro ordinateurs ou mainframe
Permettent la connexion simultaneacutee de plusieurs centaines drsquoutilisateurs Puissance gt 100 Meacutegaflops
Preacutesent dans les tregraves grosses entreprises nationales et internationales DEC HP Sun IBM (ES9000) Unisys
117
Les machines
Les mini ordinateurs
Permettent la connexion simultaneacutee de plusieurs dizaines drsquoutilisateurs Puissance gt 10 Meacutegaflops
Preacutesents dans les grosses PME
DEC HP Sun IBM (AS400)
Les ordinateurs personnels
Stations de travail (Sun Hp)
Micro-ordinateurs (PC Mac) de bureau (desktop) portables (notebook) de poche (laptop) internet (netbook)
118
12 Hardware (mateacuteriel) Software (logiciel)
Lrsquoinformatique repose sur
Le hardware physique du silicium et technologies associeacutees (transistors miniaturiseacutes microprocesseurs circuits inteacutegreacutes ordinateurs)
Le software programmation des ordinateurs
Dans ce cours nous traitons uniquement de la partie programmation
119
Le logiciel (Software)
Une machine est capable de traiter de lrsquoinformation (symbolique numeacuterique)
Pour qursquoelle ait une utiliteacute il faut lui
laquo dire raquo quels traitements effectuer crsquoest-agrave-dire la programmer
Logiciel ensemble des programmes destineacutes agrave effectuer un traitement sur un ordinateur
120
13 Les langages de programmation
Historique
Environnement de programmation
Champs drsquoapplications des langages
121
Historique des langages de programmation
Au commencement (~ 1946) le langage machine des 1 et des 0
Un progregraves le langage drsquoassemblage (~1950)
Premiers langages de haut niveau Fortran (applications scientifiques -1956-)
Cobol (applications de gestion -1960-)
Lisp (intelligence artificielle -1960-)
122
Historique des langages de programmation
Quelques reacutefeacuterents Pascal (Wirth 1968 ) C (Ritchie 1970) Smalltalk (Jey 1970) Ada (Ichbiah 1975) Prolog (Colmerauer Roussel 1975) C++ (Stroustrup 1983)
Langages les plus reacutecents (tous objets) Java (Sun) 1991 Python (Guido Van Rossum) 1991 C (Microsoft) 2001 hellip pour contrer Java et C++
123
Utilisation des langages de programmation Sur le site httpwwwtiobecomindexphpcontentpaperinfotpciindexhtml
124
Les environnements de programmations modernes
Ils integravegrent
Un eacutediteur intelligent
Un compilateur
Un deacutebogueur symbolique
Un geacuteneacuterateur drsquointerface graphique
125
Eacutediteurs intelligents pour lrsquoeacutecriture de programmes
Un langage de programmation a des regravegles syntaxiques strictes
Un eacutediteur laquo intelligent raquo
Signale des erreurs potentielles
Structure le texte automatiquement pour vous
Exemple si lrsquoon ouvre une accolade laquo raquo lrsquoeacutediteur eacutedite automatiquement lrsquoaccolade fermante correspondante laquo raquo
126
Compilateurs
Un ordinateur ne laquo comprend raquo que le langage machine (1 et 0)
Le compilateur est un laquo gros raquo programme qui traduit le programme eacutecrit dans un langage eacutevolueacute (par exemple C) en un programme machine
Si le compilateur est correct lrsquoordinateur exeacutecute bien les tacircches deacutecrites dans le langage de haut niveau
Problegraveme lrsquoœuf ou la poule (ou dans quel langage eacutecrire un compilateur )
127
Deacutebogueurs
Un deacutebogueur est un programme qui permet de suivre pas agrave pas lrsquoexeacutecution drsquoun programme ce qui permet de chercher plus facilement les erreurs eacuteventuelles (les bugs )
Il permet essentiellement
Drsquoavancer pas agrave pas dans lrsquoexeacutecution du programme De creacuteer des points drsquoarrecirct De lire (et de modifier) le contenu des variables
128
Deacutebogueurs
129
Geacuteneacuterateurs drsquointerfaces graphiques
La plupart des applications professionnelles ont une interface graphique eacutevolueacutee comprenant boutons cases agrave cocher menu deacuteroulant etc
Certains langages disposent drsquoinstructions permettant la creacuteation de ces interfaces
Certaines plateformes de deacuteveloppement proposent mecircme des outils graphiques et de gestion de code qui permettent au programmeur non expeacuterimenteacute de deacutevelopper facilement ce type drsquointerfaces (citons delphi visual basic visual C++ jbuilder etc)
130
Champs drsquoapplications des langages
Un langage est plus ou moins bien adapteacute agrave un domaine donneacute
Certains langages sont relativement speacutecialiseacutes
(Perl traitement des chaicircnes de caractegraveres JavaScript eacutecriture de pages web interactives etc)
Drsquoautres plus ou moins geacuteneacuteralistes (C Pascal C++ Objective C Java Python etc)
131
2 Programmation impeacuterative Introduction au langage C
132
21 Les diffeacuterents paradigmes de programmation
Il existe plusieurs techniques de programmation
Impeacuterative
Fonctionnelle
Logique
Orienteacutee objets
Parallegravele
Le langage que nous allons eacutetudier le langage C appartient agrave la cateacutegorie des langages de programmation impeacuterative
133
La programmation impeacuterative
Dans ce type de programmation on manipule explicitement la meacutemoire gracircce agrave des instructions de haut niveau
Exemple
1 int n = 1 on initialise une variable nommeacutee n agrave 1
2 n = n + 1 on increacutemente n de 1
Eacutetat de la meacutemoire
Apregraves 1
Apregraves 2
134
La programmation impeacuterative
Langages embleacutematiques Pascal C Basic Fortran
Remarque dans tous les cas au niveau de la machine lrsquoexeacutecution drsquoun programme revient toujours agrave des manipulations sur la meacutemoire
135
22 Le langage C introduction
Historique
Compilateurs environnements de programmation
136
Historique du langage C
Creacuteeacute en 1972 par Denis Ritchie (2011dagger)(Bell Laboratories)
Au deacutepart pour deacutevelopper le systegraveme drsquoexploitation Unix
Aujourdrsquohui utiliseacute par une large communauteacute de programmeurs
137
Historique du langage C
Premiegravere deacutefinition rigoureuse en 1978 laquoThe C programming Language raquo par Kerniguan amp Ritchie
Aujourdrsquohui le langage est normaliseacute on parle de laquo C ANSI raquo
138
Compilateurs environnements de programmation
Il existe des compilateurs etou environnements de programmation pour tous les systegravemes drsquoexploitation
Par exemple
Sous Windows Dev-C++ (eacutediteur + compilateur + deacutebogueur) Sous Linux gcc (eacutediteur emacs + deacutebogueur ddd)
Notons que tous les environnements de programmations pour C++ et Objective C sont aussi des environnements de programmation pour C Nous utiliserons drsquoailleurs Dev-C++ qui comme son nom lrsquoindique est un environnement de programmation pour C++
139
23 Etude drsquoun programme simple en C
Objet du programme calcul de la surface et du volume des planegravetes du systegraveme Solaire
Rappels des formules
Listing du programme
Analyse deacutetailleacutee du code
140
Le systegraveme Solaire
Planegravete Image Rayon (km)
Mercure 2439
Veacutenus 6050
Terre 6378
Mars 3387
141
Le systegraveme Solaire
Jupiter 71400
Saturne 60000
Uranus 26150
Neptune 24300
142
Surface et volume drsquoune sphegravere en fonction du rayon
V =4
3π R
3
S=4π R2
143
Le programme laquo planetes raquo
Un programme se deacuteveloppe dans un fichier
On deacuteveloppera nos programmes dans un fichier drsquoextension c
Le programme qui calcule lrsquoaire et le volume des planegravetes agrave partir de leur rayon est deacuteveloppeacute dans le fichier planetesc
Regravegles de bonne programmation
On donnera au fichier un nom qui rappelle la fonction du programme qui y est deacuteveloppeacute
On nrsquoutilise pas les accents (planetesc au lieu de planegravetesc) ni les espaces
144
Le fichier planetesc
include ltstdiohgt
const float PI = 314
int main() float rayon_planete le rayon de la planetefloat surface_planete sa surfacefloat volume_planete son volume
entree de la donnee rayon printf(Entrez le rayon de la planete (en km) )scanf(f amprayon_planete)
calcul de la surface du volume
surface_planete = 40 PI rayon_planete rayon_planetevolume_planete = (4030) PI rayon_planete rayon_planete rayon_planete
impression des resultatsprintf(sfsn Surface de la planete surface_planete km2)printf(sfsn Volume de la planete volume_planete km3)
return 0
145
Analyse du programme laquo planetes raquo
include ltstdiohgt
Demande dinclusion du fichier stdioh
(laquo standard input ouput raquo) Linclusion de ce fichier est neacutecessaire pour pouvoir utiliser les fonctions dentreacutee-sortie
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
111
Internet (bref) historique
Naissance en 1969 projet militaire Ameacutericain pour une transmission des informations deacutecentraliseacutee (Arpanet protocole IP)
Reacuteseau NSF (National Science Fondation) des universitaires Ameacutericains
Multiplication des reacuteseaux et laquo fusion raquo en un seul reacuteseau Internet
Creacuteation du Web par les chercheurs du Cern (Centre Europeacuteen de la Recherche Nucleacuteaire) en 1989
112
Evolution dInternetDATE NUMBER OF USERS WORLD POPULATION INFORMATION SOURCE
December 1995 16 millions 04 IDC
March 2000 304 millions 50 Nua Ltd
March 2005 888 millions 139 Internet World Stats
June 2010 1966 millions 287 Internet World Stats
Jun 2011 2110 millions 304 Internet World Stats
June 2012 2405 millions 343 Internet World Stats
Dec 2013 2802 millions 390 Internet World Stats
March 2014 (estimate)
2937 millions 407 Internet World Stats
113
Internet aujourdrsquohui
114
Internet aujourdrsquohui
World Wide Web 11 milliard de sites web en 2016 (source netcraft)
eMail 215 milliards envoyeacutes par jour en 2016 (hors spam)44 milliards de comptes mails en 2015
Reacuteseaux sociaux (Facebook Twitter Instagram etc)
Teacuteleacutephonie videacuteo confeacuterences chat (Skype Messenger etc)
Forums de discussion (IRC)
Commerce eacutelectronique
Transmission de fichiers (protocole ftp)
115
Les machines
Les laquo machines raquo se classifient en fonction de leur puissance
La puissance drsquoune machine se mesure en nombre drsquoopeacuterations par seconde ou Flops (floating point operation per seconde) Les multiples sont
Le Meacutegaflops 1 million drsquoop par seconde (10^6)
Le Gigaflops 1 milliard drsquoop par seconde (10^9)
Le Teacuteraflops mille milliards drsquoop par seconde (10^12)
Le Peacutetaflops un million de milliards drsquoop par seconde (10^15)
116
Les machines
Les super calculateurs
Liste du top 5 des super calculateurs sur httpwwwtop500org
2008 Roadrunner de IBM 1 PFLOPS
2010 Jaguar Cray XT5-HE 17 PFLOPS
2012 Sequoia ndash BlueGeneQ de IBM 16 PFLOPS
2014 Tianhe-2 (MilkyWay-2) - TH-IVB-FEP Cluster de NUDT 33 PFLOPS
2016 Sunway TaihuLight 93 PFLOPS
Les macro ordinateurs ou mainframe
Permettent la connexion simultaneacutee de plusieurs centaines drsquoutilisateurs Puissance gt 100 Meacutegaflops
Preacutesent dans les tregraves grosses entreprises nationales et internationales DEC HP Sun IBM (ES9000) Unisys
117
Les machines
Les mini ordinateurs
Permettent la connexion simultaneacutee de plusieurs dizaines drsquoutilisateurs Puissance gt 10 Meacutegaflops
Preacutesents dans les grosses PME
DEC HP Sun IBM (AS400)
Les ordinateurs personnels
Stations de travail (Sun Hp)
Micro-ordinateurs (PC Mac) de bureau (desktop) portables (notebook) de poche (laptop) internet (netbook)
118
12 Hardware (mateacuteriel) Software (logiciel)
Lrsquoinformatique repose sur
Le hardware physique du silicium et technologies associeacutees (transistors miniaturiseacutes microprocesseurs circuits inteacutegreacutes ordinateurs)
Le software programmation des ordinateurs
Dans ce cours nous traitons uniquement de la partie programmation
119
Le logiciel (Software)
Une machine est capable de traiter de lrsquoinformation (symbolique numeacuterique)
Pour qursquoelle ait une utiliteacute il faut lui
laquo dire raquo quels traitements effectuer crsquoest-agrave-dire la programmer
Logiciel ensemble des programmes destineacutes agrave effectuer un traitement sur un ordinateur
120
13 Les langages de programmation
Historique
Environnement de programmation
Champs drsquoapplications des langages
121
Historique des langages de programmation
Au commencement (~ 1946) le langage machine des 1 et des 0
Un progregraves le langage drsquoassemblage (~1950)
Premiers langages de haut niveau Fortran (applications scientifiques -1956-)
Cobol (applications de gestion -1960-)
Lisp (intelligence artificielle -1960-)
122
Historique des langages de programmation
Quelques reacutefeacuterents Pascal (Wirth 1968 ) C (Ritchie 1970) Smalltalk (Jey 1970) Ada (Ichbiah 1975) Prolog (Colmerauer Roussel 1975) C++ (Stroustrup 1983)
Langages les plus reacutecents (tous objets) Java (Sun) 1991 Python (Guido Van Rossum) 1991 C (Microsoft) 2001 hellip pour contrer Java et C++
123
Utilisation des langages de programmation Sur le site httpwwwtiobecomindexphpcontentpaperinfotpciindexhtml
124
Les environnements de programmations modernes
Ils integravegrent
Un eacutediteur intelligent
Un compilateur
Un deacutebogueur symbolique
Un geacuteneacuterateur drsquointerface graphique
125
Eacutediteurs intelligents pour lrsquoeacutecriture de programmes
Un langage de programmation a des regravegles syntaxiques strictes
Un eacutediteur laquo intelligent raquo
Signale des erreurs potentielles
Structure le texte automatiquement pour vous
Exemple si lrsquoon ouvre une accolade laquo raquo lrsquoeacutediteur eacutedite automatiquement lrsquoaccolade fermante correspondante laquo raquo
126
Compilateurs
Un ordinateur ne laquo comprend raquo que le langage machine (1 et 0)
Le compilateur est un laquo gros raquo programme qui traduit le programme eacutecrit dans un langage eacutevolueacute (par exemple C) en un programme machine
Si le compilateur est correct lrsquoordinateur exeacutecute bien les tacircches deacutecrites dans le langage de haut niveau
Problegraveme lrsquoœuf ou la poule (ou dans quel langage eacutecrire un compilateur )
127
Deacutebogueurs
Un deacutebogueur est un programme qui permet de suivre pas agrave pas lrsquoexeacutecution drsquoun programme ce qui permet de chercher plus facilement les erreurs eacuteventuelles (les bugs )
Il permet essentiellement
Drsquoavancer pas agrave pas dans lrsquoexeacutecution du programme De creacuteer des points drsquoarrecirct De lire (et de modifier) le contenu des variables
128
Deacutebogueurs
129
Geacuteneacuterateurs drsquointerfaces graphiques
La plupart des applications professionnelles ont une interface graphique eacutevolueacutee comprenant boutons cases agrave cocher menu deacuteroulant etc
Certains langages disposent drsquoinstructions permettant la creacuteation de ces interfaces
Certaines plateformes de deacuteveloppement proposent mecircme des outils graphiques et de gestion de code qui permettent au programmeur non expeacuterimenteacute de deacutevelopper facilement ce type drsquointerfaces (citons delphi visual basic visual C++ jbuilder etc)
130
Champs drsquoapplications des langages
Un langage est plus ou moins bien adapteacute agrave un domaine donneacute
Certains langages sont relativement speacutecialiseacutes
(Perl traitement des chaicircnes de caractegraveres JavaScript eacutecriture de pages web interactives etc)
Drsquoautres plus ou moins geacuteneacuteralistes (C Pascal C++ Objective C Java Python etc)
131
2 Programmation impeacuterative Introduction au langage C
132
21 Les diffeacuterents paradigmes de programmation
Il existe plusieurs techniques de programmation
Impeacuterative
Fonctionnelle
Logique
Orienteacutee objets
Parallegravele
Le langage que nous allons eacutetudier le langage C appartient agrave la cateacutegorie des langages de programmation impeacuterative
133
La programmation impeacuterative
Dans ce type de programmation on manipule explicitement la meacutemoire gracircce agrave des instructions de haut niveau
Exemple
1 int n = 1 on initialise une variable nommeacutee n agrave 1
2 n = n + 1 on increacutemente n de 1
Eacutetat de la meacutemoire
Apregraves 1
Apregraves 2
134
La programmation impeacuterative
Langages embleacutematiques Pascal C Basic Fortran
Remarque dans tous les cas au niveau de la machine lrsquoexeacutecution drsquoun programme revient toujours agrave des manipulations sur la meacutemoire
135
22 Le langage C introduction
Historique
Compilateurs environnements de programmation
136
Historique du langage C
Creacuteeacute en 1972 par Denis Ritchie (2011dagger)(Bell Laboratories)
Au deacutepart pour deacutevelopper le systegraveme drsquoexploitation Unix
Aujourdrsquohui utiliseacute par une large communauteacute de programmeurs
137
Historique du langage C
Premiegravere deacutefinition rigoureuse en 1978 laquoThe C programming Language raquo par Kerniguan amp Ritchie
Aujourdrsquohui le langage est normaliseacute on parle de laquo C ANSI raquo
138
Compilateurs environnements de programmation
Il existe des compilateurs etou environnements de programmation pour tous les systegravemes drsquoexploitation
Par exemple
Sous Windows Dev-C++ (eacutediteur + compilateur + deacutebogueur) Sous Linux gcc (eacutediteur emacs + deacutebogueur ddd)
Notons que tous les environnements de programmations pour C++ et Objective C sont aussi des environnements de programmation pour C Nous utiliserons drsquoailleurs Dev-C++ qui comme son nom lrsquoindique est un environnement de programmation pour C++
139
23 Etude drsquoun programme simple en C
Objet du programme calcul de la surface et du volume des planegravetes du systegraveme Solaire
Rappels des formules
Listing du programme
Analyse deacutetailleacutee du code
140
Le systegraveme Solaire
Planegravete Image Rayon (km)
Mercure 2439
Veacutenus 6050
Terre 6378
Mars 3387
141
Le systegraveme Solaire
Jupiter 71400
Saturne 60000
Uranus 26150
Neptune 24300
142
Surface et volume drsquoune sphegravere en fonction du rayon
V =4
3π R
3
S=4π R2
143
Le programme laquo planetes raquo
Un programme se deacuteveloppe dans un fichier
On deacuteveloppera nos programmes dans un fichier drsquoextension c
Le programme qui calcule lrsquoaire et le volume des planegravetes agrave partir de leur rayon est deacuteveloppeacute dans le fichier planetesc
Regravegles de bonne programmation
On donnera au fichier un nom qui rappelle la fonction du programme qui y est deacuteveloppeacute
On nrsquoutilise pas les accents (planetesc au lieu de planegravetesc) ni les espaces
144
Le fichier planetesc
include ltstdiohgt
const float PI = 314
int main() float rayon_planete le rayon de la planetefloat surface_planete sa surfacefloat volume_planete son volume
entree de la donnee rayon printf(Entrez le rayon de la planete (en km) )scanf(f amprayon_planete)
calcul de la surface du volume
surface_planete = 40 PI rayon_planete rayon_planetevolume_planete = (4030) PI rayon_planete rayon_planete rayon_planete
impression des resultatsprintf(sfsn Surface de la planete surface_planete km2)printf(sfsn Volume de la planete volume_planete km3)
return 0
145
Analyse du programme laquo planetes raquo
include ltstdiohgt
Demande dinclusion du fichier stdioh
(laquo standard input ouput raquo) Linclusion de ce fichier est neacutecessaire pour pouvoir utiliser les fonctions dentreacutee-sortie
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
112
Evolution dInternetDATE NUMBER OF USERS WORLD POPULATION INFORMATION SOURCE
December 1995 16 millions 04 IDC
March 2000 304 millions 50 Nua Ltd
March 2005 888 millions 139 Internet World Stats
June 2010 1966 millions 287 Internet World Stats
Jun 2011 2110 millions 304 Internet World Stats
June 2012 2405 millions 343 Internet World Stats
Dec 2013 2802 millions 390 Internet World Stats
March 2014 (estimate)
2937 millions 407 Internet World Stats
113
Internet aujourdrsquohui
114
Internet aujourdrsquohui
World Wide Web 11 milliard de sites web en 2016 (source netcraft)
eMail 215 milliards envoyeacutes par jour en 2016 (hors spam)44 milliards de comptes mails en 2015
Reacuteseaux sociaux (Facebook Twitter Instagram etc)
Teacuteleacutephonie videacuteo confeacuterences chat (Skype Messenger etc)
Forums de discussion (IRC)
Commerce eacutelectronique
Transmission de fichiers (protocole ftp)
115
Les machines
Les laquo machines raquo se classifient en fonction de leur puissance
La puissance drsquoune machine se mesure en nombre drsquoopeacuterations par seconde ou Flops (floating point operation per seconde) Les multiples sont
Le Meacutegaflops 1 million drsquoop par seconde (10^6)
Le Gigaflops 1 milliard drsquoop par seconde (10^9)
Le Teacuteraflops mille milliards drsquoop par seconde (10^12)
Le Peacutetaflops un million de milliards drsquoop par seconde (10^15)
116
Les machines
Les super calculateurs
Liste du top 5 des super calculateurs sur httpwwwtop500org
2008 Roadrunner de IBM 1 PFLOPS
2010 Jaguar Cray XT5-HE 17 PFLOPS
2012 Sequoia ndash BlueGeneQ de IBM 16 PFLOPS
2014 Tianhe-2 (MilkyWay-2) - TH-IVB-FEP Cluster de NUDT 33 PFLOPS
2016 Sunway TaihuLight 93 PFLOPS
Les macro ordinateurs ou mainframe
Permettent la connexion simultaneacutee de plusieurs centaines drsquoutilisateurs Puissance gt 100 Meacutegaflops
Preacutesent dans les tregraves grosses entreprises nationales et internationales DEC HP Sun IBM (ES9000) Unisys
117
Les machines
Les mini ordinateurs
Permettent la connexion simultaneacutee de plusieurs dizaines drsquoutilisateurs Puissance gt 10 Meacutegaflops
Preacutesents dans les grosses PME
DEC HP Sun IBM (AS400)
Les ordinateurs personnels
Stations de travail (Sun Hp)
Micro-ordinateurs (PC Mac) de bureau (desktop) portables (notebook) de poche (laptop) internet (netbook)
118
12 Hardware (mateacuteriel) Software (logiciel)
Lrsquoinformatique repose sur
Le hardware physique du silicium et technologies associeacutees (transistors miniaturiseacutes microprocesseurs circuits inteacutegreacutes ordinateurs)
Le software programmation des ordinateurs
Dans ce cours nous traitons uniquement de la partie programmation
119
Le logiciel (Software)
Une machine est capable de traiter de lrsquoinformation (symbolique numeacuterique)
Pour qursquoelle ait une utiliteacute il faut lui
laquo dire raquo quels traitements effectuer crsquoest-agrave-dire la programmer
Logiciel ensemble des programmes destineacutes agrave effectuer un traitement sur un ordinateur
120
13 Les langages de programmation
Historique
Environnement de programmation
Champs drsquoapplications des langages
121
Historique des langages de programmation
Au commencement (~ 1946) le langage machine des 1 et des 0
Un progregraves le langage drsquoassemblage (~1950)
Premiers langages de haut niveau Fortran (applications scientifiques -1956-)
Cobol (applications de gestion -1960-)
Lisp (intelligence artificielle -1960-)
122
Historique des langages de programmation
Quelques reacutefeacuterents Pascal (Wirth 1968 ) C (Ritchie 1970) Smalltalk (Jey 1970) Ada (Ichbiah 1975) Prolog (Colmerauer Roussel 1975) C++ (Stroustrup 1983)
Langages les plus reacutecents (tous objets) Java (Sun) 1991 Python (Guido Van Rossum) 1991 C (Microsoft) 2001 hellip pour contrer Java et C++
123
Utilisation des langages de programmation Sur le site httpwwwtiobecomindexphpcontentpaperinfotpciindexhtml
124
Les environnements de programmations modernes
Ils integravegrent
Un eacutediteur intelligent
Un compilateur
Un deacutebogueur symbolique
Un geacuteneacuterateur drsquointerface graphique
125
Eacutediteurs intelligents pour lrsquoeacutecriture de programmes
Un langage de programmation a des regravegles syntaxiques strictes
Un eacutediteur laquo intelligent raquo
Signale des erreurs potentielles
Structure le texte automatiquement pour vous
Exemple si lrsquoon ouvre une accolade laquo raquo lrsquoeacutediteur eacutedite automatiquement lrsquoaccolade fermante correspondante laquo raquo
126
Compilateurs
Un ordinateur ne laquo comprend raquo que le langage machine (1 et 0)
Le compilateur est un laquo gros raquo programme qui traduit le programme eacutecrit dans un langage eacutevolueacute (par exemple C) en un programme machine
Si le compilateur est correct lrsquoordinateur exeacutecute bien les tacircches deacutecrites dans le langage de haut niveau
Problegraveme lrsquoœuf ou la poule (ou dans quel langage eacutecrire un compilateur )
127
Deacutebogueurs
Un deacutebogueur est un programme qui permet de suivre pas agrave pas lrsquoexeacutecution drsquoun programme ce qui permet de chercher plus facilement les erreurs eacuteventuelles (les bugs )
Il permet essentiellement
Drsquoavancer pas agrave pas dans lrsquoexeacutecution du programme De creacuteer des points drsquoarrecirct De lire (et de modifier) le contenu des variables
128
Deacutebogueurs
129
Geacuteneacuterateurs drsquointerfaces graphiques
La plupart des applications professionnelles ont une interface graphique eacutevolueacutee comprenant boutons cases agrave cocher menu deacuteroulant etc
Certains langages disposent drsquoinstructions permettant la creacuteation de ces interfaces
Certaines plateformes de deacuteveloppement proposent mecircme des outils graphiques et de gestion de code qui permettent au programmeur non expeacuterimenteacute de deacutevelopper facilement ce type drsquointerfaces (citons delphi visual basic visual C++ jbuilder etc)
130
Champs drsquoapplications des langages
Un langage est plus ou moins bien adapteacute agrave un domaine donneacute
Certains langages sont relativement speacutecialiseacutes
(Perl traitement des chaicircnes de caractegraveres JavaScript eacutecriture de pages web interactives etc)
Drsquoautres plus ou moins geacuteneacuteralistes (C Pascal C++ Objective C Java Python etc)
131
2 Programmation impeacuterative Introduction au langage C
132
21 Les diffeacuterents paradigmes de programmation
Il existe plusieurs techniques de programmation
Impeacuterative
Fonctionnelle
Logique
Orienteacutee objets
Parallegravele
Le langage que nous allons eacutetudier le langage C appartient agrave la cateacutegorie des langages de programmation impeacuterative
133
La programmation impeacuterative
Dans ce type de programmation on manipule explicitement la meacutemoire gracircce agrave des instructions de haut niveau
Exemple
1 int n = 1 on initialise une variable nommeacutee n agrave 1
2 n = n + 1 on increacutemente n de 1
Eacutetat de la meacutemoire
Apregraves 1
Apregraves 2
134
La programmation impeacuterative
Langages embleacutematiques Pascal C Basic Fortran
Remarque dans tous les cas au niveau de la machine lrsquoexeacutecution drsquoun programme revient toujours agrave des manipulations sur la meacutemoire
135
22 Le langage C introduction
Historique
Compilateurs environnements de programmation
136
Historique du langage C
Creacuteeacute en 1972 par Denis Ritchie (2011dagger)(Bell Laboratories)
Au deacutepart pour deacutevelopper le systegraveme drsquoexploitation Unix
Aujourdrsquohui utiliseacute par une large communauteacute de programmeurs
137
Historique du langage C
Premiegravere deacutefinition rigoureuse en 1978 laquoThe C programming Language raquo par Kerniguan amp Ritchie
Aujourdrsquohui le langage est normaliseacute on parle de laquo C ANSI raquo
138
Compilateurs environnements de programmation
Il existe des compilateurs etou environnements de programmation pour tous les systegravemes drsquoexploitation
Par exemple
Sous Windows Dev-C++ (eacutediteur + compilateur + deacutebogueur) Sous Linux gcc (eacutediteur emacs + deacutebogueur ddd)
Notons que tous les environnements de programmations pour C++ et Objective C sont aussi des environnements de programmation pour C Nous utiliserons drsquoailleurs Dev-C++ qui comme son nom lrsquoindique est un environnement de programmation pour C++
139
23 Etude drsquoun programme simple en C
Objet du programme calcul de la surface et du volume des planegravetes du systegraveme Solaire
Rappels des formules
Listing du programme
Analyse deacutetailleacutee du code
140
Le systegraveme Solaire
Planegravete Image Rayon (km)
Mercure 2439
Veacutenus 6050
Terre 6378
Mars 3387
141
Le systegraveme Solaire
Jupiter 71400
Saturne 60000
Uranus 26150
Neptune 24300
142
Surface et volume drsquoune sphegravere en fonction du rayon
V =4
3π R
3
S=4π R2
143
Le programme laquo planetes raquo
Un programme se deacuteveloppe dans un fichier
On deacuteveloppera nos programmes dans un fichier drsquoextension c
Le programme qui calcule lrsquoaire et le volume des planegravetes agrave partir de leur rayon est deacuteveloppeacute dans le fichier planetesc
Regravegles de bonne programmation
On donnera au fichier un nom qui rappelle la fonction du programme qui y est deacuteveloppeacute
On nrsquoutilise pas les accents (planetesc au lieu de planegravetesc) ni les espaces
144
Le fichier planetesc
include ltstdiohgt
const float PI = 314
int main() float rayon_planete le rayon de la planetefloat surface_planete sa surfacefloat volume_planete son volume
entree de la donnee rayon printf(Entrez le rayon de la planete (en km) )scanf(f amprayon_planete)
calcul de la surface du volume
surface_planete = 40 PI rayon_planete rayon_planetevolume_planete = (4030) PI rayon_planete rayon_planete rayon_planete
impression des resultatsprintf(sfsn Surface de la planete surface_planete km2)printf(sfsn Volume de la planete volume_planete km3)
return 0
145
Analyse du programme laquo planetes raquo
include ltstdiohgt
Demande dinclusion du fichier stdioh
(laquo standard input ouput raquo) Linclusion de ce fichier est neacutecessaire pour pouvoir utiliser les fonctions dentreacutee-sortie
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
113
Internet aujourdrsquohui
114
Internet aujourdrsquohui
World Wide Web 11 milliard de sites web en 2016 (source netcraft)
eMail 215 milliards envoyeacutes par jour en 2016 (hors spam)44 milliards de comptes mails en 2015
Reacuteseaux sociaux (Facebook Twitter Instagram etc)
Teacuteleacutephonie videacuteo confeacuterences chat (Skype Messenger etc)
Forums de discussion (IRC)
Commerce eacutelectronique
Transmission de fichiers (protocole ftp)
115
Les machines
Les laquo machines raquo se classifient en fonction de leur puissance
La puissance drsquoune machine se mesure en nombre drsquoopeacuterations par seconde ou Flops (floating point operation per seconde) Les multiples sont
Le Meacutegaflops 1 million drsquoop par seconde (10^6)
Le Gigaflops 1 milliard drsquoop par seconde (10^9)
Le Teacuteraflops mille milliards drsquoop par seconde (10^12)
Le Peacutetaflops un million de milliards drsquoop par seconde (10^15)
116
Les machines
Les super calculateurs
Liste du top 5 des super calculateurs sur httpwwwtop500org
2008 Roadrunner de IBM 1 PFLOPS
2010 Jaguar Cray XT5-HE 17 PFLOPS
2012 Sequoia ndash BlueGeneQ de IBM 16 PFLOPS
2014 Tianhe-2 (MilkyWay-2) - TH-IVB-FEP Cluster de NUDT 33 PFLOPS
2016 Sunway TaihuLight 93 PFLOPS
Les macro ordinateurs ou mainframe
Permettent la connexion simultaneacutee de plusieurs centaines drsquoutilisateurs Puissance gt 100 Meacutegaflops
Preacutesent dans les tregraves grosses entreprises nationales et internationales DEC HP Sun IBM (ES9000) Unisys
117
Les machines
Les mini ordinateurs
Permettent la connexion simultaneacutee de plusieurs dizaines drsquoutilisateurs Puissance gt 10 Meacutegaflops
Preacutesents dans les grosses PME
DEC HP Sun IBM (AS400)
Les ordinateurs personnels
Stations de travail (Sun Hp)
Micro-ordinateurs (PC Mac) de bureau (desktop) portables (notebook) de poche (laptop) internet (netbook)
118
12 Hardware (mateacuteriel) Software (logiciel)
Lrsquoinformatique repose sur
Le hardware physique du silicium et technologies associeacutees (transistors miniaturiseacutes microprocesseurs circuits inteacutegreacutes ordinateurs)
Le software programmation des ordinateurs
Dans ce cours nous traitons uniquement de la partie programmation
119
Le logiciel (Software)
Une machine est capable de traiter de lrsquoinformation (symbolique numeacuterique)
Pour qursquoelle ait une utiliteacute il faut lui
laquo dire raquo quels traitements effectuer crsquoest-agrave-dire la programmer
Logiciel ensemble des programmes destineacutes agrave effectuer un traitement sur un ordinateur
120
13 Les langages de programmation
Historique
Environnement de programmation
Champs drsquoapplications des langages
121
Historique des langages de programmation
Au commencement (~ 1946) le langage machine des 1 et des 0
Un progregraves le langage drsquoassemblage (~1950)
Premiers langages de haut niveau Fortran (applications scientifiques -1956-)
Cobol (applications de gestion -1960-)
Lisp (intelligence artificielle -1960-)
122
Historique des langages de programmation
Quelques reacutefeacuterents Pascal (Wirth 1968 ) C (Ritchie 1970) Smalltalk (Jey 1970) Ada (Ichbiah 1975) Prolog (Colmerauer Roussel 1975) C++ (Stroustrup 1983)
Langages les plus reacutecents (tous objets) Java (Sun) 1991 Python (Guido Van Rossum) 1991 C (Microsoft) 2001 hellip pour contrer Java et C++
123
Utilisation des langages de programmation Sur le site httpwwwtiobecomindexphpcontentpaperinfotpciindexhtml
124
Les environnements de programmations modernes
Ils integravegrent
Un eacutediteur intelligent
Un compilateur
Un deacutebogueur symbolique
Un geacuteneacuterateur drsquointerface graphique
125
Eacutediteurs intelligents pour lrsquoeacutecriture de programmes
Un langage de programmation a des regravegles syntaxiques strictes
Un eacutediteur laquo intelligent raquo
Signale des erreurs potentielles
Structure le texte automatiquement pour vous
Exemple si lrsquoon ouvre une accolade laquo raquo lrsquoeacutediteur eacutedite automatiquement lrsquoaccolade fermante correspondante laquo raquo
126
Compilateurs
Un ordinateur ne laquo comprend raquo que le langage machine (1 et 0)
Le compilateur est un laquo gros raquo programme qui traduit le programme eacutecrit dans un langage eacutevolueacute (par exemple C) en un programme machine
Si le compilateur est correct lrsquoordinateur exeacutecute bien les tacircches deacutecrites dans le langage de haut niveau
Problegraveme lrsquoœuf ou la poule (ou dans quel langage eacutecrire un compilateur )
127
Deacutebogueurs
Un deacutebogueur est un programme qui permet de suivre pas agrave pas lrsquoexeacutecution drsquoun programme ce qui permet de chercher plus facilement les erreurs eacuteventuelles (les bugs )
Il permet essentiellement
Drsquoavancer pas agrave pas dans lrsquoexeacutecution du programme De creacuteer des points drsquoarrecirct De lire (et de modifier) le contenu des variables
128
Deacutebogueurs
129
Geacuteneacuterateurs drsquointerfaces graphiques
La plupart des applications professionnelles ont une interface graphique eacutevolueacutee comprenant boutons cases agrave cocher menu deacuteroulant etc
Certains langages disposent drsquoinstructions permettant la creacuteation de ces interfaces
Certaines plateformes de deacuteveloppement proposent mecircme des outils graphiques et de gestion de code qui permettent au programmeur non expeacuterimenteacute de deacutevelopper facilement ce type drsquointerfaces (citons delphi visual basic visual C++ jbuilder etc)
130
Champs drsquoapplications des langages
Un langage est plus ou moins bien adapteacute agrave un domaine donneacute
Certains langages sont relativement speacutecialiseacutes
(Perl traitement des chaicircnes de caractegraveres JavaScript eacutecriture de pages web interactives etc)
Drsquoautres plus ou moins geacuteneacuteralistes (C Pascal C++ Objective C Java Python etc)
131
2 Programmation impeacuterative Introduction au langage C
132
21 Les diffeacuterents paradigmes de programmation
Il existe plusieurs techniques de programmation
Impeacuterative
Fonctionnelle
Logique
Orienteacutee objets
Parallegravele
Le langage que nous allons eacutetudier le langage C appartient agrave la cateacutegorie des langages de programmation impeacuterative
133
La programmation impeacuterative
Dans ce type de programmation on manipule explicitement la meacutemoire gracircce agrave des instructions de haut niveau
Exemple
1 int n = 1 on initialise une variable nommeacutee n agrave 1
2 n = n + 1 on increacutemente n de 1
Eacutetat de la meacutemoire
Apregraves 1
Apregraves 2
134
La programmation impeacuterative
Langages embleacutematiques Pascal C Basic Fortran
Remarque dans tous les cas au niveau de la machine lrsquoexeacutecution drsquoun programme revient toujours agrave des manipulations sur la meacutemoire
135
22 Le langage C introduction
Historique
Compilateurs environnements de programmation
136
Historique du langage C
Creacuteeacute en 1972 par Denis Ritchie (2011dagger)(Bell Laboratories)
Au deacutepart pour deacutevelopper le systegraveme drsquoexploitation Unix
Aujourdrsquohui utiliseacute par une large communauteacute de programmeurs
137
Historique du langage C
Premiegravere deacutefinition rigoureuse en 1978 laquoThe C programming Language raquo par Kerniguan amp Ritchie
Aujourdrsquohui le langage est normaliseacute on parle de laquo C ANSI raquo
138
Compilateurs environnements de programmation
Il existe des compilateurs etou environnements de programmation pour tous les systegravemes drsquoexploitation
Par exemple
Sous Windows Dev-C++ (eacutediteur + compilateur + deacutebogueur) Sous Linux gcc (eacutediteur emacs + deacutebogueur ddd)
Notons que tous les environnements de programmations pour C++ et Objective C sont aussi des environnements de programmation pour C Nous utiliserons drsquoailleurs Dev-C++ qui comme son nom lrsquoindique est un environnement de programmation pour C++
139
23 Etude drsquoun programme simple en C
Objet du programme calcul de la surface et du volume des planegravetes du systegraveme Solaire
Rappels des formules
Listing du programme
Analyse deacutetailleacutee du code
140
Le systegraveme Solaire
Planegravete Image Rayon (km)
Mercure 2439
Veacutenus 6050
Terre 6378
Mars 3387
141
Le systegraveme Solaire
Jupiter 71400
Saturne 60000
Uranus 26150
Neptune 24300
142
Surface et volume drsquoune sphegravere en fonction du rayon
V =4
3π R
3
S=4π R2
143
Le programme laquo planetes raquo
Un programme se deacuteveloppe dans un fichier
On deacuteveloppera nos programmes dans un fichier drsquoextension c
Le programme qui calcule lrsquoaire et le volume des planegravetes agrave partir de leur rayon est deacuteveloppeacute dans le fichier planetesc
Regravegles de bonne programmation
On donnera au fichier un nom qui rappelle la fonction du programme qui y est deacuteveloppeacute
On nrsquoutilise pas les accents (planetesc au lieu de planegravetesc) ni les espaces
144
Le fichier planetesc
include ltstdiohgt
const float PI = 314
int main() float rayon_planete le rayon de la planetefloat surface_planete sa surfacefloat volume_planete son volume
entree de la donnee rayon printf(Entrez le rayon de la planete (en km) )scanf(f amprayon_planete)
calcul de la surface du volume
surface_planete = 40 PI rayon_planete rayon_planetevolume_planete = (4030) PI rayon_planete rayon_planete rayon_planete
impression des resultatsprintf(sfsn Surface de la planete surface_planete km2)printf(sfsn Volume de la planete volume_planete km3)
return 0
145
Analyse du programme laquo planetes raquo
include ltstdiohgt
Demande dinclusion du fichier stdioh
(laquo standard input ouput raquo) Linclusion de ce fichier est neacutecessaire pour pouvoir utiliser les fonctions dentreacutee-sortie
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
114
Internet aujourdrsquohui
World Wide Web 11 milliard de sites web en 2016 (source netcraft)
eMail 215 milliards envoyeacutes par jour en 2016 (hors spam)44 milliards de comptes mails en 2015
Reacuteseaux sociaux (Facebook Twitter Instagram etc)
Teacuteleacutephonie videacuteo confeacuterences chat (Skype Messenger etc)
Forums de discussion (IRC)
Commerce eacutelectronique
Transmission de fichiers (protocole ftp)
115
Les machines
Les laquo machines raquo se classifient en fonction de leur puissance
La puissance drsquoune machine se mesure en nombre drsquoopeacuterations par seconde ou Flops (floating point operation per seconde) Les multiples sont
Le Meacutegaflops 1 million drsquoop par seconde (10^6)
Le Gigaflops 1 milliard drsquoop par seconde (10^9)
Le Teacuteraflops mille milliards drsquoop par seconde (10^12)
Le Peacutetaflops un million de milliards drsquoop par seconde (10^15)
116
Les machines
Les super calculateurs
Liste du top 5 des super calculateurs sur httpwwwtop500org
2008 Roadrunner de IBM 1 PFLOPS
2010 Jaguar Cray XT5-HE 17 PFLOPS
2012 Sequoia ndash BlueGeneQ de IBM 16 PFLOPS
2014 Tianhe-2 (MilkyWay-2) - TH-IVB-FEP Cluster de NUDT 33 PFLOPS
2016 Sunway TaihuLight 93 PFLOPS
Les macro ordinateurs ou mainframe
Permettent la connexion simultaneacutee de plusieurs centaines drsquoutilisateurs Puissance gt 100 Meacutegaflops
Preacutesent dans les tregraves grosses entreprises nationales et internationales DEC HP Sun IBM (ES9000) Unisys
117
Les machines
Les mini ordinateurs
Permettent la connexion simultaneacutee de plusieurs dizaines drsquoutilisateurs Puissance gt 10 Meacutegaflops
Preacutesents dans les grosses PME
DEC HP Sun IBM (AS400)
Les ordinateurs personnels
Stations de travail (Sun Hp)
Micro-ordinateurs (PC Mac) de bureau (desktop) portables (notebook) de poche (laptop) internet (netbook)
118
12 Hardware (mateacuteriel) Software (logiciel)
Lrsquoinformatique repose sur
Le hardware physique du silicium et technologies associeacutees (transistors miniaturiseacutes microprocesseurs circuits inteacutegreacutes ordinateurs)
Le software programmation des ordinateurs
Dans ce cours nous traitons uniquement de la partie programmation
119
Le logiciel (Software)
Une machine est capable de traiter de lrsquoinformation (symbolique numeacuterique)
Pour qursquoelle ait une utiliteacute il faut lui
laquo dire raquo quels traitements effectuer crsquoest-agrave-dire la programmer
Logiciel ensemble des programmes destineacutes agrave effectuer un traitement sur un ordinateur
120
13 Les langages de programmation
Historique
Environnement de programmation
Champs drsquoapplications des langages
121
Historique des langages de programmation
Au commencement (~ 1946) le langage machine des 1 et des 0
Un progregraves le langage drsquoassemblage (~1950)
Premiers langages de haut niveau Fortran (applications scientifiques -1956-)
Cobol (applications de gestion -1960-)
Lisp (intelligence artificielle -1960-)
122
Historique des langages de programmation
Quelques reacutefeacuterents Pascal (Wirth 1968 ) C (Ritchie 1970) Smalltalk (Jey 1970) Ada (Ichbiah 1975) Prolog (Colmerauer Roussel 1975) C++ (Stroustrup 1983)
Langages les plus reacutecents (tous objets) Java (Sun) 1991 Python (Guido Van Rossum) 1991 C (Microsoft) 2001 hellip pour contrer Java et C++
123
Utilisation des langages de programmation Sur le site httpwwwtiobecomindexphpcontentpaperinfotpciindexhtml
124
Les environnements de programmations modernes
Ils integravegrent
Un eacutediteur intelligent
Un compilateur
Un deacutebogueur symbolique
Un geacuteneacuterateur drsquointerface graphique
125
Eacutediteurs intelligents pour lrsquoeacutecriture de programmes
Un langage de programmation a des regravegles syntaxiques strictes
Un eacutediteur laquo intelligent raquo
Signale des erreurs potentielles
Structure le texte automatiquement pour vous
Exemple si lrsquoon ouvre une accolade laquo raquo lrsquoeacutediteur eacutedite automatiquement lrsquoaccolade fermante correspondante laquo raquo
126
Compilateurs
Un ordinateur ne laquo comprend raquo que le langage machine (1 et 0)
Le compilateur est un laquo gros raquo programme qui traduit le programme eacutecrit dans un langage eacutevolueacute (par exemple C) en un programme machine
Si le compilateur est correct lrsquoordinateur exeacutecute bien les tacircches deacutecrites dans le langage de haut niveau
Problegraveme lrsquoœuf ou la poule (ou dans quel langage eacutecrire un compilateur )
127
Deacutebogueurs
Un deacutebogueur est un programme qui permet de suivre pas agrave pas lrsquoexeacutecution drsquoun programme ce qui permet de chercher plus facilement les erreurs eacuteventuelles (les bugs )
Il permet essentiellement
Drsquoavancer pas agrave pas dans lrsquoexeacutecution du programme De creacuteer des points drsquoarrecirct De lire (et de modifier) le contenu des variables
128
Deacutebogueurs
129
Geacuteneacuterateurs drsquointerfaces graphiques
La plupart des applications professionnelles ont une interface graphique eacutevolueacutee comprenant boutons cases agrave cocher menu deacuteroulant etc
Certains langages disposent drsquoinstructions permettant la creacuteation de ces interfaces
Certaines plateformes de deacuteveloppement proposent mecircme des outils graphiques et de gestion de code qui permettent au programmeur non expeacuterimenteacute de deacutevelopper facilement ce type drsquointerfaces (citons delphi visual basic visual C++ jbuilder etc)
130
Champs drsquoapplications des langages
Un langage est plus ou moins bien adapteacute agrave un domaine donneacute
Certains langages sont relativement speacutecialiseacutes
(Perl traitement des chaicircnes de caractegraveres JavaScript eacutecriture de pages web interactives etc)
Drsquoautres plus ou moins geacuteneacuteralistes (C Pascal C++ Objective C Java Python etc)
131
2 Programmation impeacuterative Introduction au langage C
132
21 Les diffeacuterents paradigmes de programmation
Il existe plusieurs techniques de programmation
Impeacuterative
Fonctionnelle
Logique
Orienteacutee objets
Parallegravele
Le langage que nous allons eacutetudier le langage C appartient agrave la cateacutegorie des langages de programmation impeacuterative
133
La programmation impeacuterative
Dans ce type de programmation on manipule explicitement la meacutemoire gracircce agrave des instructions de haut niveau
Exemple
1 int n = 1 on initialise une variable nommeacutee n agrave 1
2 n = n + 1 on increacutemente n de 1
Eacutetat de la meacutemoire
Apregraves 1
Apregraves 2
134
La programmation impeacuterative
Langages embleacutematiques Pascal C Basic Fortran
Remarque dans tous les cas au niveau de la machine lrsquoexeacutecution drsquoun programme revient toujours agrave des manipulations sur la meacutemoire
135
22 Le langage C introduction
Historique
Compilateurs environnements de programmation
136
Historique du langage C
Creacuteeacute en 1972 par Denis Ritchie (2011dagger)(Bell Laboratories)
Au deacutepart pour deacutevelopper le systegraveme drsquoexploitation Unix
Aujourdrsquohui utiliseacute par une large communauteacute de programmeurs
137
Historique du langage C
Premiegravere deacutefinition rigoureuse en 1978 laquoThe C programming Language raquo par Kerniguan amp Ritchie
Aujourdrsquohui le langage est normaliseacute on parle de laquo C ANSI raquo
138
Compilateurs environnements de programmation
Il existe des compilateurs etou environnements de programmation pour tous les systegravemes drsquoexploitation
Par exemple
Sous Windows Dev-C++ (eacutediteur + compilateur + deacutebogueur) Sous Linux gcc (eacutediteur emacs + deacutebogueur ddd)
Notons que tous les environnements de programmations pour C++ et Objective C sont aussi des environnements de programmation pour C Nous utiliserons drsquoailleurs Dev-C++ qui comme son nom lrsquoindique est un environnement de programmation pour C++
139
23 Etude drsquoun programme simple en C
Objet du programme calcul de la surface et du volume des planegravetes du systegraveme Solaire
Rappels des formules
Listing du programme
Analyse deacutetailleacutee du code
140
Le systegraveme Solaire
Planegravete Image Rayon (km)
Mercure 2439
Veacutenus 6050
Terre 6378
Mars 3387
141
Le systegraveme Solaire
Jupiter 71400
Saturne 60000
Uranus 26150
Neptune 24300
142
Surface et volume drsquoune sphegravere en fonction du rayon
V =4
3π R
3
S=4π R2
143
Le programme laquo planetes raquo
Un programme se deacuteveloppe dans un fichier
On deacuteveloppera nos programmes dans un fichier drsquoextension c
Le programme qui calcule lrsquoaire et le volume des planegravetes agrave partir de leur rayon est deacuteveloppeacute dans le fichier planetesc
Regravegles de bonne programmation
On donnera au fichier un nom qui rappelle la fonction du programme qui y est deacuteveloppeacute
On nrsquoutilise pas les accents (planetesc au lieu de planegravetesc) ni les espaces
144
Le fichier planetesc
include ltstdiohgt
const float PI = 314
int main() float rayon_planete le rayon de la planetefloat surface_planete sa surfacefloat volume_planete son volume
entree de la donnee rayon printf(Entrez le rayon de la planete (en km) )scanf(f amprayon_planete)
calcul de la surface du volume
surface_planete = 40 PI rayon_planete rayon_planetevolume_planete = (4030) PI rayon_planete rayon_planete rayon_planete
impression des resultatsprintf(sfsn Surface de la planete surface_planete km2)printf(sfsn Volume de la planete volume_planete km3)
return 0
145
Analyse du programme laquo planetes raquo
include ltstdiohgt
Demande dinclusion du fichier stdioh
(laquo standard input ouput raquo) Linclusion de ce fichier est neacutecessaire pour pouvoir utiliser les fonctions dentreacutee-sortie
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
115
Les machines
Les laquo machines raquo se classifient en fonction de leur puissance
La puissance drsquoune machine se mesure en nombre drsquoopeacuterations par seconde ou Flops (floating point operation per seconde) Les multiples sont
Le Meacutegaflops 1 million drsquoop par seconde (10^6)
Le Gigaflops 1 milliard drsquoop par seconde (10^9)
Le Teacuteraflops mille milliards drsquoop par seconde (10^12)
Le Peacutetaflops un million de milliards drsquoop par seconde (10^15)
116
Les machines
Les super calculateurs
Liste du top 5 des super calculateurs sur httpwwwtop500org
2008 Roadrunner de IBM 1 PFLOPS
2010 Jaguar Cray XT5-HE 17 PFLOPS
2012 Sequoia ndash BlueGeneQ de IBM 16 PFLOPS
2014 Tianhe-2 (MilkyWay-2) - TH-IVB-FEP Cluster de NUDT 33 PFLOPS
2016 Sunway TaihuLight 93 PFLOPS
Les macro ordinateurs ou mainframe
Permettent la connexion simultaneacutee de plusieurs centaines drsquoutilisateurs Puissance gt 100 Meacutegaflops
Preacutesent dans les tregraves grosses entreprises nationales et internationales DEC HP Sun IBM (ES9000) Unisys
117
Les machines
Les mini ordinateurs
Permettent la connexion simultaneacutee de plusieurs dizaines drsquoutilisateurs Puissance gt 10 Meacutegaflops
Preacutesents dans les grosses PME
DEC HP Sun IBM (AS400)
Les ordinateurs personnels
Stations de travail (Sun Hp)
Micro-ordinateurs (PC Mac) de bureau (desktop) portables (notebook) de poche (laptop) internet (netbook)
118
12 Hardware (mateacuteriel) Software (logiciel)
Lrsquoinformatique repose sur
Le hardware physique du silicium et technologies associeacutees (transistors miniaturiseacutes microprocesseurs circuits inteacutegreacutes ordinateurs)
Le software programmation des ordinateurs
Dans ce cours nous traitons uniquement de la partie programmation
119
Le logiciel (Software)
Une machine est capable de traiter de lrsquoinformation (symbolique numeacuterique)
Pour qursquoelle ait une utiliteacute il faut lui
laquo dire raquo quels traitements effectuer crsquoest-agrave-dire la programmer
Logiciel ensemble des programmes destineacutes agrave effectuer un traitement sur un ordinateur
120
13 Les langages de programmation
Historique
Environnement de programmation
Champs drsquoapplications des langages
121
Historique des langages de programmation
Au commencement (~ 1946) le langage machine des 1 et des 0
Un progregraves le langage drsquoassemblage (~1950)
Premiers langages de haut niveau Fortran (applications scientifiques -1956-)
Cobol (applications de gestion -1960-)
Lisp (intelligence artificielle -1960-)
122
Historique des langages de programmation
Quelques reacutefeacuterents Pascal (Wirth 1968 ) C (Ritchie 1970) Smalltalk (Jey 1970) Ada (Ichbiah 1975) Prolog (Colmerauer Roussel 1975) C++ (Stroustrup 1983)
Langages les plus reacutecents (tous objets) Java (Sun) 1991 Python (Guido Van Rossum) 1991 C (Microsoft) 2001 hellip pour contrer Java et C++
123
Utilisation des langages de programmation Sur le site httpwwwtiobecomindexphpcontentpaperinfotpciindexhtml
124
Les environnements de programmations modernes
Ils integravegrent
Un eacutediteur intelligent
Un compilateur
Un deacutebogueur symbolique
Un geacuteneacuterateur drsquointerface graphique
125
Eacutediteurs intelligents pour lrsquoeacutecriture de programmes
Un langage de programmation a des regravegles syntaxiques strictes
Un eacutediteur laquo intelligent raquo
Signale des erreurs potentielles
Structure le texte automatiquement pour vous
Exemple si lrsquoon ouvre une accolade laquo raquo lrsquoeacutediteur eacutedite automatiquement lrsquoaccolade fermante correspondante laquo raquo
126
Compilateurs
Un ordinateur ne laquo comprend raquo que le langage machine (1 et 0)
Le compilateur est un laquo gros raquo programme qui traduit le programme eacutecrit dans un langage eacutevolueacute (par exemple C) en un programme machine
Si le compilateur est correct lrsquoordinateur exeacutecute bien les tacircches deacutecrites dans le langage de haut niveau
Problegraveme lrsquoœuf ou la poule (ou dans quel langage eacutecrire un compilateur )
127
Deacutebogueurs
Un deacutebogueur est un programme qui permet de suivre pas agrave pas lrsquoexeacutecution drsquoun programme ce qui permet de chercher plus facilement les erreurs eacuteventuelles (les bugs )
Il permet essentiellement
Drsquoavancer pas agrave pas dans lrsquoexeacutecution du programme De creacuteer des points drsquoarrecirct De lire (et de modifier) le contenu des variables
128
Deacutebogueurs
129
Geacuteneacuterateurs drsquointerfaces graphiques
La plupart des applications professionnelles ont une interface graphique eacutevolueacutee comprenant boutons cases agrave cocher menu deacuteroulant etc
Certains langages disposent drsquoinstructions permettant la creacuteation de ces interfaces
Certaines plateformes de deacuteveloppement proposent mecircme des outils graphiques et de gestion de code qui permettent au programmeur non expeacuterimenteacute de deacutevelopper facilement ce type drsquointerfaces (citons delphi visual basic visual C++ jbuilder etc)
130
Champs drsquoapplications des langages
Un langage est plus ou moins bien adapteacute agrave un domaine donneacute
Certains langages sont relativement speacutecialiseacutes
(Perl traitement des chaicircnes de caractegraveres JavaScript eacutecriture de pages web interactives etc)
Drsquoautres plus ou moins geacuteneacuteralistes (C Pascal C++ Objective C Java Python etc)
131
2 Programmation impeacuterative Introduction au langage C
132
21 Les diffeacuterents paradigmes de programmation
Il existe plusieurs techniques de programmation
Impeacuterative
Fonctionnelle
Logique
Orienteacutee objets
Parallegravele
Le langage que nous allons eacutetudier le langage C appartient agrave la cateacutegorie des langages de programmation impeacuterative
133
La programmation impeacuterative
Dans ce type de programmation on manipule explicitement la meacutemoire gracircce agrave des instructions de haut niveau
Exemple
1 int n = 1 on initialise une variable nommeacutee n agrave 1
2 n = n + 1 on increacutemente n de 1
Eacutetat de la meacutemoire
Apregraves 1
Apregraves 2
134
La programmation impeacuterative
Langages embleacutematiques Pascal C Basic Fortran
Remarque dans tous les cas au niveau de la machine lrsquoexeacutecution drsquoun programme revient toujours agrave des manipulations sur la meacutemoire
135
22 Le langage C introduction
Historique
Compilateurs environnements de programmation
136
Historique du langage C
Creacuteeacute en 1972 par Denis Ritchie (2011dagger)(Bell Laboratories)
Au deacutepart pour deacutevelopper le systegraveme drsquoexploitation Unix
Aujourdrsquohui utiliseacute par une large communauteacute de programmeurs
137
Historique du langage C
Premiegravere deacutefinition rigoureuse en 1978 laquoThe C programming Language raquo par Kerniguan amp Ritchie
Aujourdrsquohui le langage est normaliseacute on parle de laquo C ANSI raquo
138
Compilateurs environnements de programmation
Il existe des compilateurs etou environnements de programmation pour tous les systegravemes drsquoexploitation
Par exemple
Sous Windows Dev-C++ (eacutediteur + compilateur + deacutebogueur) Sous Linux gcc (eacutediteur emacs + deacutebogueur ddd)
Notons que tous les environnements de programmations pour C++ et Objective C sont aussi des environnements de programmation pour C Nous utiliserons drsquoailleurs Dev-C++ qui comme son nom lrsquoindique est un environnement de programmation pour C++
139
23 Etude drsquoun programme simple en C
Objet du programme calcul de la surface et du volume des planegravetes du systegraveme Solaire
Rappels des formules
Listing du programme
Analyse deacutetailleacutee du code
140
Le systegraveme Solaire
Planegravete Image Rayon (km)
Mercure 2439
Veacutenus 6050
Terre 6378
Mars 3387
141
Le systegraveme Solaire
Jupiter 71400
Saturne 60000
Uranus 26150
Neptune 24300
142
Surface et volume drsquoune sphegravere en fonction du rayon
V =4
3π R
3
S=4π R2
143
Le programme laquo planetes raquo
Un programme se deacuteveloppe dans un fichier
On deacuteveloppera nos programmes dans un fichier drsquoextension c
Le programme qui calcule lrsquoaire et le volume des planegravetes agrave partir de leur rayon est deacuteveloppeacute dans le fichier planetesc
Regravegles de bonne programmation
On donnera au fichier un nom qui rappelle la fonction du programme qui y est deacuteveloppeacute
On nrsquoutilise pas les accents (planetesc au lieu de planegravetesc) ni les espaces
144
Le fichier planetesc
include ltstdiohgt
const float PI = 314
int main() float rayon_planete le rayon de la planetefloat surface_planete sa surfacefloat volume_planete son volume
entree de la donnee rayon printf(Entrez le rayon de la planete (en km) )scanf(f amprayon_planete)
calcul de la surface du volume
surface_planete = 40 PI rayon_planete rayon_planetevolume_planete = (4030) PI rayon_planete rayon_planete rayon_planete
impression des resultatsprintf(sfsn Surface de la planete surface_planete km2)printf(sfsn Volume de la planete volume_planete km3)
return 0
145
Analyse du programme laquo planetes raquo
include ltstdiohgt
Demande dinclusion du fichier stdioh
(laquo standard input ouput raquo) Linclusion de ce fichier est neacutecessaire pour pouvoir utiliser les fonctions dentreacutee-sortie
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
116
Les machines
Les super calculateurs
Liste du top 5 des super calculateurs sur httpwwwtop500org
2008 Roadrunner de IBM 1 PFLOPS
2010 Jaguar Cray XT5-HE 17 PFLOPS
2012 Sequoia ndash BlueGeneQ de IBM 16 PFLOPS
2014 Tianhe-2 (MilkyWay-2) - TH-IVB-FEP Cluster de NUDT 33 PFLOPS
2016 Sunway TaihuLight 93 PFLOPS
Les macro ordinateurs ou mainframe
Permettent la connexion simultaneacutee de plusieurs centaines drsquoutilisateurs Puissance gt 100 Meacutegaflops
Preacutesent dans les tregraves grosses entreprises nationales et internationales DEC HP Sun IBM (ES9000) Unisys
117
Les machines
Les mini ordinateurs
Permettent la connexion simultaneacutee de plusieurs dizaines drsquoutilisateurs Puissance gt 10 Meacutegaflops
Preacutesents dans les grosses PME
DEC HP Sun IBM (AS400)
Les ordinateurs personnels
Stations de travail (Sun Hp)
Micro-ordinateurs (PC Mac) de bureau (desktop) portables (notebook) de poche (laptop) internet (netbook)
118
12 Hardware (mateacuteriel) Software (logiciel)
Lrsquoinformatique repose sur
Le hardware physique du silicium et technologies associeacutees (transistors miniaturiseacutes microprocesseurs circuits inteacutegreacutes ordinateurs)
Le software programmation des ordinateurs
Dans ce cours nous traitons uniquement de la partie programmation
119
Le logiciel (Software)
Une machine est capable de traiter de lrsquoinformation (symbolique numeacuterique)
Pour qursquoelle ait une utiliteacute il faut lui
laquo dire raquo quels traitements effectuer crsquoest-agrave-dire la programmer
Logiciel ensemble des programmes destineacutes agrave effectuer un traitement sur un ordinateur
120
13 Les langages de programmation
Historique
Environnement de programmation
Champs drsquoapplications des langages
121
Historique des langages de programmation
Au commencement (~ 1946) le langage machine des 1 et des 0
Un progregraves le langage drsquoassemblage (~1950)
Premiers langages de haut niveau Fortran (applications scientifiques -1956-)
Cobol (applications de gestion -1960-)
Lisp (intelligence artificielle -1960-)
122
Historique des langages de programmation
Quelques reacutefeacuterents Pascal (Wirth 1968 ) C (Ritchie 1970) Smalltalk (Jey 1970) Ada (Ichbiah 1975) Prolog (Colmerauer Roussel 1975) C++ (Stroustrup 1983)
Langages les plus reacutecents (tous objets) Java (Sun) 1991 Python (Guido Van Rossum) 1991 C (Microsoft) 2001 hellip pour contrer Java et C++
123
Utilisation des langages de programmation Sur le site httpwwwtiobecomindexphpcontentpaperinfotpciindexhtml
124
Les environnements de programmations modernes
Ils integravegrent
Un eacutediteur intelligent
Un compilateur
Un deacutebogueur symbolique
Un geacuteneacuterateur drsquointerface graphique
125
Eacutediteurs intelligents pour lrsquoeacutecriture de programmes
Un langage de programmation a des regravegles syntaxiques strictes
Un eacutediteur laquo intelligent raquo
Signale des erreurs potentielles
Structure le texte automatiquement pour vous
Exemple si lrsquoon ouvre une accolade laquo raquo lrsquoeacutediteur eacutedite automatiquement lrsquoaccolade fermante correspondante laquo raquo
126
Compilateurs
Un ordinateur ne laquo comprend raquo que le langage machine (1 et 0)
Le compilateur est un laquo gros raquo programme qui traduit le programme eacutecrit dans un langage eacutevolueacute (par exemple C) en un programme machine
Si le compilateur est correct lrsquoordinateur exeacutecute bien les tacircches deacutecrites dans le langage de haut niveau
Problegraveme lrsquoœuf ou la poule (ou dans quel langage eacutecrire un compilateur )
127
Deacutebogueurs
Un deacutebogueur est un programme qui permet de suivre pas agrave pas lrsquoexeacutecution drsquoun programme ce qui permet de chercher plus facilement les erreurs eacuteventuelles (les bugs )
Il permet essentiellement
Drsquoavancer pas agrave pas dans lrsquoexeacutecution du programme De creacuteer des points drsquoarrecirct De lire (et de modifier) le contenu des variables
128
Deacutebogueurs
129
Geacuteneacuterateurs drsquointerfaces graphiques
La plupart des applications professionnelles ont une interface graphique eacutevolueacutee comprenant boutons cases agrave cocher menu deacuteroulant etc
Certains langages disposent drsquoinstructions permettant la creacuteation de ces interfaces
Certaines plateformes de deacuteveloppement proposent mecircme des outils graphiques et de gestion de code qui permettent au programmeur non expeacuterimenteacute de deacutevelopper facilement ce type drsquointerfaces (citons delphi visual basic visual C++ jbuilder etc)
130
Champs drsquoapplications des langages
Un langage est plus ou moins bien adapteacute agrave un domaine donneacute
Certains langages sont relativement speacutecialiseacutes
(Perl traitement des chaicircnes de caractegraveres JavaScript eacutecriture de pages web interactives etc)
Drsquoautres plus ou moins geacuteneacuteralistes (C Pascal C++ Objective C Java Python etc)
131
2 Programmation impeacuterative Introduction au langage C
132
21 Les diffeacuterents paradigmes de programmation
Il existe plusieurs techniques de programmation
Impeacuterative
Fonctionnelle
Logique
Orienteacutee objets
Parallegravele
Le langage que nous allons eacutetudier le langage C appartient agrave la cateacutegorie des langages de programmation impeacuterative
133
La programmation impeacuterative
Dans ce type de programmation on manipule explicitement la meacutemoire gracircce agrave des instructions de haut niveau
Exemple
1 int n = 1 on initialise une variable nommeacutee n agrave 1
2 n = n + 1 on increacutemente n de 1
Eacutetat de la meacutemoire
Apregraves 1
Apregraves 2
134
La programmation impeacuterative
Langages embleacutematiques Pascal C Basic Fortran
Remarque dans tous les cas au niveau de la machine lrsquoexeacutecution drsquoun programme revient toujours agrave des manipulations sur la meacutemoire
135
22 Le langage C introduction
Historique
Compilateurs environnements de programmation
136
Historique du langage C
Creacuteeacute en 1972 par Denis Ritchie (2011dagger)(Bell Laboratories)
Au deacutepart pour deacutevelopper le systegraveme drsquoexploitation Unix
Aujourdrsquohui utiliseacute par une large communauteacute de programmeurs
137
Historique du langage C
Premiegravere deacutefinition rigoureuse en 1978 laquoThe C programming Language raquo par Kerniguan amp Ritchie
Aujourdrsquohui le langage est normaliseacute on parle de laquo C ANSI raquo
138
Compilateurs environnements de programmation
Il existe des compilateurs etou environnements de programmation pour tous les systegravemes drsquoexploitation
Par exemple
Sous Windows Dev-C++ (eacutediteur + compilateur + deacutebogueur) Sous Linux gcc (eacutediteur emacs + deacutebogueur ddd)
Notons que tous les environnements de programmations pour C++ et Objective C sont aussi des environnements de programmation pour C Nous utiliserons drsquoailleurs Dev-C++ qui comme son nom lrsquoindique est un environnement de programmation pour C++
139
23 Etude drsquoun programme simple en C
Objet du programme calcul de la surface et du volume des planegravetes du systegraveme Solaire
Rappels des formules
Listing du programme
Analyse deacutetailleacutee du code
140
Le systegraveme Solaire
Planegravete Image Rayon (km)
Mercure 2439
Veacutenus 6050
Terre 6378
Mars 3387
141
Le systegraveme Solaire
Jupiter 71400
Saturne 60000
Uranus 26150
Neptune 24300
142
Surface et volume drsquoune sphegravere en fonction du rayon
V =4
3π R
3
S=4π R2
143
Le programme laquo planetes raquo
Un programme se deacuteveloppe dans un fichier
On deacuteveloppera nos programmes dans un fichier drsquoextension c
Le programme qui calcule lrsquoaire et le volume des planegravetes agrave partir de leur rayon est deacuteveloppeacute dans le fichier planetesc
Regravegles de bonne programmation
On donnera au fichier un nom qui rappelle la fonction du programme qui y est deacuteveloppeacute
On nrsquoutilise pas les accents (planetesc au lieu de planegravetesc) ni les espaces
144
Le fichier planetesc
include ltstdiohgt
const float PI = 314
int main() float rayon_planete le rayon de la planetefloat surface_planete sa surfacefloat volume_planete son volume
entree de la donnee rayon printf(Entrez le rayon de la planete (en km) )scanf(f amprayon_planete)
calcul de la surface du volume
surface_planete = 40 PI rayon_planete rayon_planetevolume_planete = (4030) PI rayon_planete rayon_planete rayon_planete
impression des resultatsprintf(sfsn Surface de la planete surface_planete km2)printf(sfsn Volume de la planete volume_planete km3)
return 0
145
Analyse du programme laquo planetes raquo
include ltstdiohgt
Demande dinclusion du fichier stdioh
(laquo standard input ouput raquo) Linclusion de ce fichier est neacutecessaire pour pouvoir utiliser les fonctions dentreacutee-sortie
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
117
Les machines
Les mini ordinateurs
Permettent la connexion simultaneacutee de plusieurs dizaines drsquoutilisateurs Puissance gt 10 Meacutegaflops
Preacutesents dans les grosses PME
DEC HP Sun IBM (AS400)
Les ordinateurs personnels
Stations de travail (Sun Hp)
Micro-ordinateurs (PC Mac) de bureau (desktop) portables (notebook) de poche (laptop) internet (netbook)
118
12 Hardware (mateacuteriel) Software (logiciel)
Lrsquoinformatique repose sur
Le hardware physique du silicium et technologies associeacutees (transistors miniaturiseacutes microprocesseurs circuits inteacutegreacutes ordinateurs)
Le software programmation des ordinateurs
Dans ce cours nous traitons uniquement de la partie programmation
119
Le logiciel (Software)
Une machine est capable de traiter de lrsquoinformation (symbolique numeacuterique)
Pour qursquoelle ait une utiliteacute il faut lui
laquo dire raquo quels traitements effectuer crsquoest-agrave-dire la programmer
Logiciel ensemble des programmes destineacutes agrave effectuer un traitement sur un ordinateur
120
13 Les langages de programmation
Historique
Environnement de programmation
Champs drsquoapplications des langages
121
Historique des langages de programmation
Au commencement (~ 1946) le langage machine des 1 et des 0
Un progregraves le langage drsquoassemblage (~1950)
Premiers langages de haut niveau Fortran (applications scientifiques -1956-)
Cobol (applications de gestion -1960-)
Lisp (intelligence artificielle -1960-)
122
Historique des langages de programmation
Quelques reacutefeacuterents Pascal (Wirth 1968 ) C (Ritchie 1970) Smalltalk (Jey 1970) Ada (Ichbiah 1975) Prolog (Colmerauer Roussel 1975) C++ (Stroustrup 1983)
Langages les plus reacutecents (tous objets) Java (Sun) 1991 Python (Guido Van Rossum) 1991 C (Microsoft) 2001 hellip pour contrer Java et C++
123
Utilisation des langages de programmation Sur le site httpwwwtiobecomindexphpcontentpaperinfotpciindexhtml
124
Les environnements de programmations modernes
Ils integravegrent
Un eacutediteur intelligent
Un compilateur
Un deacutebogueur symbolique
Un geacuteneacuterateur drsquointerface graphique
125
Eacutediteurs intelligents pour lrsquoeacutecriture de programmes
Un langage de programmation a des regravegles syntaxiques strictes
Un eacutediteur laquo intelligent raquo
Signale des erreurs potentielles
Structure le texte automatiquement pour vous
Exemple si lrsquoon ouvre une accolade laquo raquo lrsquoeacutediteur eacutedite automatiquement lrsquoaccolade fermante correspondante laquo raquo
126
Compilateurs
Un ordinateur ne laquo comprend raquo que le langage machine (1 et 0)
Le compilateur est un laquo gros raquo programme qui traduit le programme eacutecrit dans un langage eacutevolueacute (par exemple C) en un programme machine
Si le compilateur est correct lrsquoordinateur exeacutecute bien les tacircches deacutecrites dans le langage de haut niveau
Problegraveme lrsquoœuf ou la poule (ou dans quel langage eacutecrire un compilateur )
127
Deacutebogueurs
Un deacutebogueur est un programme qui permet de suivre pas agrave pas lrsquoexeacutecution drsquoun programme ce qui permet de chercher plus facilement les erreurs eacuteventuelles (les bugs )
Il permet essentiellement
Drsquoavancer pas agrave pas dans lrsquoexeacutecution du programme De creacuteer des points drsquoarrecirct De lire (et de modifier) le contenu des variables
128
Deacutebogueurs
129
Geacuteneacuterateurs drsquointerfaces graphiques
La plupart des applications professionnelles ont une interface graphique eacutevolueacutee comprenant boutons cases agrave cocher menu deacuteroulant etc
Certains langages disposent drsquoinstructions permettant la creacuteation de ces interfaces
Certaines plateformes de deacuteveloppement proposent mecircme des outils graphiques et de gestion de code qui permettent au programmeur non expeacuterimenteacute de deacutevelopper facilement ce type drsquointerfaces (citons delphi visual basic visual C++ jbuilder etc)
130
Champs drsquoapplications des langages
Un langage est plus ou moins bien adapteacute agrave un domaine donneacute
Certains langages sont relativement speacutecialiseacutes
(Perl traitement des chaicircnes de caractegraveres JavaScript eacutecriture de pages web interactives etc)
Drsquoautres plus ou moins geacuteneacuteralistes (C Pascal C++ Objective C Java Python etc)
131
2 Programmation impeacuterative Introduction au langage C
132
21 Les diffeacuterents paradigmes de programmation
Il existe plusieurs techniques de programmation
Impeacuterative
Fonctionnelle
Logique
Orienteacutee objets
Parallegravele
Le langage que nous allons eacutetudier le langage C appartient agrave la cateacutegorie des langages de programmation impeacuterative
133
La programmation impeacuterative
Dans ce type de programmation on manipule explicitement la meacutemoire gracircce agrave des instructions de haut niveau
Exemple
1 int n = 1 on initialise une variable nommeacutee n agrave 1
2 n = n + 1 on increacutemente n de 1
Eacutetat de la meacutemoire
Apregraves 1
Apregraves 2
134
La programmation impeacuterative
Langages embleacutematiques Pascal C Basic Fortran
Remarque dans tous les cas au niveau de la machine lrsquoexeacutecution drsquoun programme revient toujours agrave des manipulations sur la meacutemoire
135
22 Le langage C introduction
Historique
Compilateurs environnements de programmation
136
Historique du langage C
Creacuteeacute en 1972 par Denis Ritchie (2011dagger)(Bell Laboratories)
Au deacutepart pour deacutevelopper le systegraveme drsquoexploitation Unix
Aujourdrsquohui utiliseacute par une large communauteacute de programmeurs
137
Historique du langage C
Premiegravere deacutefinition rigoureuse en 1978 laquoThe C programming Language raquo par Kerniguan amp Ritchie
Aujourdrsquohui le langage est normaliseacute on parle de laquo C ANSI raquo
138
Compilateurs environnements de programmation
Il existe des compilateurs etou environnements de programmation pour tous les systegravemes drsquoexploitation
Par exemple
Sous Windows Dev-C++ (eacutediteur + compilateur + deacutebogueur) Sous Linux gcc (eacutediteur emacs + deacutebogueur ddd)
Notons que tous les environnements de programmations pour C++ et Objective C sont aussi des environnements de programmation pour C Nous utiliserons drsquoailleurs Dev-C++ qui comme son nom lrsquoindique est un environnement de programmation pour C++
139
23 Etude drsquoun programme simple en C
Objet du programme calcul de la surface et du volume des planegravetes du systegraveme Solaire
Rappels des formules
Listing du programme
Analyse deacutetailleacutee du code
140
Le systegraveme Solaire
Planegravete Image Rayon (km)
Mercure 2439
Veacutenus 6050
Terre 6378
Mars 3387
141
Le systegraveme Solaire
Jupiter 71400
Saturne 60000
Uranus 26150
Neptune 24300
142
Surface et volume drsquoune sphegravere en fonction du rayon
V =4
3π R
3
S=4π R2
143
Le programme laquo planetes raquo
Un programme se deacuteveloppe dans un fichier
On deacuteveloppera nos programmes dans un fichier drsquoextension c
Le programme qui calcule lrsquoaire et le volume des planegravetes agrave partir de leur rayon est deacuteveloppeacute dans le fichier planetesc
Regravegles de bonne programmation
On donnera au fichier un nom qui rappelle la fonction du programme qui y est deacuteveloppeacute
On nrsquoutilise pas les accents (planetesc au lieu de planegravetesc) ni les espaces
144
Le fichier planetesc
include ltstdiohgt
const float PI = 314
int main() float rayon_planete le rayon de la planetefloat surface_planete sa surfacefloat volume_planete son volume
entree de la donnee rayon printf(Entrez le rayon de la planete (en km) )scanf(f amprayon_planete)
calcul de la surface du volume
surface_planete = 40 PI rayon_planete rayon_planetevolume_planete = (4030) PI rayon_planete rayon_planete rayon_planete
impression des resultatsprintf(sfsn Surface de la planete surface_planete km2)printf(sfsn Volume de la planete volume_planete km3)
return 0
145
Analyse du programme laquo planetes raquo
include ltstdiohgt
Demande dinclusion du fichier stdioh
(laquo standard input ouput raquo) Linclusion de ce fichier est neacutecessaire pour pouvoir utiliser les fonctions dentreacutee-sortie
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
118
12 Hardware (mateacuteriel) Software (logiciel)
Lrsquoinformatique repose sur
Le hardware physique du silicium et technologies associeacutees (transistors miniaturiseacutes microprocesseurs circuits inteacutegreacutes ordinateurs)
Le software programmation des ordinateurs
Dans ce cours nous traitons uniquement de la partie programmation
119
Le logiciel (Software)
Une machine est capable de traiter de lrsquoinformation (symbolique numeacuterique)
Pour qursquoelle ait une utiliteacute il faut lui
laquo dire raquo quels traitements effectuer crsquoest-agrave-dire la programmer
Logiciel ensemble des programmes destineacutes agrave effectuer un traitement sur un ordinateur
120
13 Les langages de programmation
Historique
Environnement de programmation
Champs drsquoapplications des langages
121
Historique des langages de programmation
Au commencement (~ 1946) le langage machine des 1 et des 0
Un progregraves le langage drsquoassemblage (~1950)
Premiers langages de haut niveau Fortran (applications scientifiques -1956-)
Cobol (applications de gestion -1960-)
Lisp (intelligence artificielle -1960-)
122
Historique des langages de programmation
Quelques reacutefeacuterents Pascal (Wirth 1968 ) C (Ritchie 1970) Smalltalk (Jey 1970) Ada (Ichbiah 1975) Prolog (Colmerauer Roussel 1975) C++ (Stroustrup 1983)
Langages les plus reacutecents (tous objets) Java (Sun) 1991 Python (Guido Van Rossum) 1991 C (Microsoft) 2001 hellip pour contrer Java et C++
123
Utilisation des langages de programmation Sur le site httpwwwtiobecomindexphpcontentpaperinfotpciindexhtml
124
Les environnements de programmations modernes
Ils integravegrent
Un eacutediteur intelligent
Un compilateur
Un deacutebogueur symbolique
Un geacuteneacuterateur drsquointerface graphique
125
Eacutediteurs intelligents pour lrsquoeacutecriture de programmes
Un langage de programmation a des regravegles syntaxiques strictes
Un eacutediteur laquo intelligent raquo
Signale des erreurs potentielles
Structure le texte automatiquement pour vous
Exemple si lrsquoon ouvre une accolade laquo raquo lrsquoeacutediteur eacutedite automatiquement lrsquoaccolade fermante correspondante laquo raquo
126
Compilateurs
Un ordinateur ne laquo comprend raquo que le langage machine (1 et 0)
Le compilateur est un laquo gros raquo programme qui traduit le programme eacutecrit dans un langage eacutevolueacute (par exemple C) en un programme machine
Si le compilateur est correct lrsquoordinateur exeacutecute bien les tacircches deacutecrites dans le langage de haut niveau
Problegraveme lrsquoœuf ou la poule (ou dans quel langage eacutecrire un compilateur )
127
Deacutebogueurs
Un deacutebogueur est un programme qui permet de suivre pas agrave pas lrsquoexeacutecution drsquoun programme ce qui permet de chercher plus facilement les erreurs eacuteventuelles (les bugs )
Il permet essentiellement
Drsquoavancer pas agrave pas dans lrsquoexeacutecution du programme De creacuteer des points drsquoarrecirct De lire (et de modifier) le contenu des variables
128
Deacutebogueurs
129
Geacuteneacuterateurs drsquointerfaces graphiques
La plupart des applications professionnelles ont une interface graphique eacutevolueacutee comprenant boutons cases agrave cocher menu deacuteroulant etc
Certains langages disposent drsquoinstructions permettant la creacuteation de ces interfaces
Certaines plateformes de deacuteveloppement proposent mecircme des outils graphiques et de gestion de code qui permettent au programmeur non expeacuterimenteacute de deacutevelopper facilement ce type drsquointerfaces (citons delphi visual basic visual C++ jbuilder etc)
130
Champs drsquoapplications des langages
Un langage est plus ou moins bien adapteacute agrave un domaine donneacute
Certains langages sont relativement speacutecialiseacutes
(Perl traitement des chaicircnes de caractegraveres JavaScript eacutecriture de pages web interactives etc)
Drsquoautres plus ou moins geacuteneacuteralistes (C Pascal C++ Objective C Java Python etc)
131
2 Programmation impeacuterative Introduction au langage C
132
21 Les diffeacuterents paradigmes de programmation
Il existe plusieurs techniques de programmation
Impeacuterative
Fonctionnelle
Logique
Orienteacutee objets
Parallegravele
Le langage que nous allons eacutetudier le langage C appartient agrave la cateacutegorie des langages de programmation impeacuterative
133
La programmation impeacuterative
Dans ce type de programmation on manipule explicitement la meacutemoire gracircce agrave des instructions de haut niveau
Exemple
1 int n = 1 on initialise une variable nommeacutee n agrave 1
2 n = n + 1 on increacutemente n de 1
Eacutetat de la meacutemoire
Apregraves 1
Apregraves 2
134
La programmation impeacuterative
Langages embleacutematiques Pascal C Basic Fortran
Remarque dans tous les cas au niveau de la machine lrsquoexeacutecution drsquoun programme revient toujours agrave des manipulations sur la meacutemoire
135
22 Le langage C introduction
Historique
Compilateurs environnements de programmation
136
Historique du langage C
Creacuteeacute en 1972 par Denis Ritchie (2011dagger)(Bell Laboratories)
Au deacutepart pour deacutevelopper le systegraveme drsquoexploitation Unix
Aujourdrsquohui utiliseacute par une large communauteacute de programmeurs
137
Historique du langage C
Premiegravere deacutefinition rigoureuse en 1978 laquoThe C programming Language raquo par Kerniguan amp Ritchie
Aujourdrsquohui le langage est normaliseacute on parle de laquo C ANSI raquo
138
Compilateurs environnements de programmation
Il existe des compilateurs etou environnements de programmation pour tous les systegravemes drsquoexploitation
Par exemple
Sous Windows Dev-C++ (eacutediteur + compilateur + deacutebogueur) Sous Linux gcc (eacutediteur emacs + deacutebogueur ddd)
Notons que tous les environnements de programmations pour C++ et Objective C sont aussi des environnements de programmation pour C Nous utiliserons drsquoailleurs Dev-C++ qui comme son nom lrsquoindique est un environnement de programmation pour C++
139
23 Etude drsquoun programme simple en C
Objet du programme calcul de la surface et du volume des planegravetes du systegraveme Solaire
Rappels des formules
Listing du programme
Analyse deacutetailleacutee du code
140
Le systegraveme Solaire
Planegravete Image Rayon (km)
Mercure 2439
Veacutenus 6050
Terre 6378
Mars 3387
141
Le systegraveme Solaire
Jupiter 71400
Saturne 60000
Uranus 26150
Neptune 24300
142
Surface et volume drsquoune sphegravere en fonction du rayon
V =4
3π R
3
S=4π R2
143
Le programme laquo planetes raquo
Un programme se deacuteveloppe dans un fichier
On deacuteveloppera nos programmes dans un fichier drsquoextension c
Le programme qui calcule lrsquoaire et le volume des planegravetes agrave partir de leur rayon est deacuteveloppeacute dans le fichier planetesc
Regravegles de bonne programmation
On donnera au fichier un nom qui rappelle la fonction du programme qui y est deacuteveloppeacute
On nrsquoutilise pas les accents (planetesc au lieu de planegravetesc) ni les espaces
144
Le fichier planetesc
include ltstdiohgt
const float PI = 314
int main() float rayon_planete le rayon de la planetefloat surface_planete sa surfacefloat volume_planete son volume
entree de la donnee rayon printf(Entrez le rayon de la planete (en km) )scanf(f amprayon_planete)
calcul de la surface du volume
surface_planete = 40 PI rayon_planete rayon_planetevolume_planete = (4030) PI rayon_planete rayon_planete rayon_planete
impression des resultatsprintf(sfsn Surface de la planete surface_planete km2)printf(sfsn Volume de la planete volume_planete km3)
return 0
145
Analyse du programme laquo planetes raquo
include ltstdiohgt
Demande dinclusion du fichier stdioh
(laquo standard input ouput raquo) Linclusion de ce fichier est neacutecessaire pour pouvoir utiliser les fonctions dentreacutee-sortie
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
119
Le logiciel (Software)
Une machine est capable de traiter de lrsquoinformation (symbolique numeacuterique)
Pour qursquoelle ait une utiliteacute il faut lui
laquo dire raquo quels traitements effectuer crsquoest-agrave-dire la programmer
Logiciel ensemble des programmes destineacutes agrave effectuer un traitement sur un ordinateur
120
13 Les langages de programmation
Historique
Environnement de programmation
Champs drsquoapplications des langages
121
Historique des langages de programmation
Au commencement (~ 1946) le langage machine des 1 et des 0
Un progregraves le langage drsquoassemblage (~1950)
Premiers langages de haut niveau Fortran (applications scientifiques -1956-)
Cobol (applications de gestion -1960-)
Lisp (intelligence artificielle -1960-)
122
Historique des langages de programmation
Quelques reacutefeacuterents Pascal (Wirth 1968 ) C (Ritchie 1970) Smalltalk (Jey 1970) Ada (Ichbiah 1975) Prolog (Colmerauer Roussel 1975) C++ (Stroustrup 1983)
Langages les plus reacutecents (tous objets) Java (Sun) 1991 Python (Guido Van Rossum) 1991 C (Microsoft) 2001 hellip pour contrer Java et C++
123
Utilisation des langages de programmation Sur le site httpwwwtiobecomindexphpcontentpaperinfotpciindexhtml
124
Les environnements de programmations modernes
Ils integravegrent
Un eacutediteur intelligent
Un compilateur
Un deacutebogueur symbolique
Un geacuteneacuterateur drsquointerface graphique
125
Eacutediteurs intelligents pour lrsquoeacutecriture de programmes
Un langage de programmation a des regravegles syntaxiques strictes
Un eacutediteur laquo intelligent raquo
Signale des erreurs potentielles
Structure le texte automatiquement pour vous
Exemple si lrsquoon ouvre une accolade laquo raquo lrsquoeacutediteur eacutedite automatiquement lrsquoaccolade fermante correspondante laquo raquo
126
Compilateurs
Un ordinateur ne laquo comprend raquo que le langage machine (1 et 0)
Le compilateur est un laquo gros raquo programme qui traduit le programme eacutecrit dans un langage eacutevolueacute (par exemple C) en un programme machine
Si le compilateur est correct lrsquoordinateur exeacutecute bien les tacircches deacutecrites dans le langage de haut niveau
Problegraveme lrsquoœuf ou la poule (ou dans quel langage eacutecrire un compilateur )
127
Deacutebogueurs
Un deacutebogueur est un programme qui permet de suivre pas agrave pas lrsquoexeacutecution drsquoun programme ce qui permet de chercher plus facilement les erreurs eacuteventuelles (les bugs )
Il permet essentiellement
Drsquoavancer pas agrave pas dans lrsquoexeacutecution du programme De creacuteer des points drsquoarrecirct De lire (et de modifier) le contenu des variables
128
Deacutebogueurs
129
Geacuteneacuterateurs drsquointerfaces graphiques
La plupart des applications professionnelles ont une interface graphique eacutevolueacutee comprenant boutons cases agrave cocher menu deacuteroulant etc
Certains langages disposent drsquoinstructions permettant la creacuteation de ces interfaces
Certaines plateformes de deacuteveloppement proposent mecircme des outils graphiques et de gestion de code qui permettent au programmeur non expeacuterimenteacute de deacutevelopper facilement ce type drsquointerfaces (citons delphi visual basic visual C++ jbuilder etc)
130
Champs drsquoapplications des langages
Un langage est plus ou moins bien adapteacute agrave un domaine donneacute
Certains langages sont relativement speacutecialiseacutes
(Perl traitement des chaicircnes de caractegraveres JavaScript eacutecriture de pages web interactives etc)
Drsquoautres plus ou moins geacuteneacuteralistes (C Pascal C++ Objective C Java Python etc)
131
2 Programmation impeacuterative Introduction au langage C
132
21 Les diffeacuterents paradigmes de programmation
Il existe plusieurs techniques de programmation
Impeacuterative
Fonctionnelle
Logique
Orienteacutee objets
Parallegravele
Le langage que nous allons eacutetudier le langage C appartient agrave la cateacutegorie des langages de programmation impeacuterative
133
La programmation impeacuterative
Dans ce type de programmation on manipule explicitement la meacutemoire gracircce agrave des instructions de haut niveau
Exemple
1 int n = 1 on initialise une variable nommeacutee n agrave 1
2 n = n + 1 on increacutemente n de 1
Eacutetat de la meacutemoire
Apregraves 1
Apregraves 2
134
La programmation impeacuterative
Langages embleacutematiques Pascal C Basic Fortran
Remarque dans tous les cas au niveau de la machine lrsquoexeacutecution drsquoun programme revient toujours agrave des manipulations sur la meacutemoire
135
22 Le langage C introduction
Historique
Compilateurs environnements de programmation
136
Historique du langage C
Creacuteeacute en 1972 par Denis Ritchie (2011dagger)(Bell Laboratories)
Au deacutepart pour deacutevelopper le systegraveme drsquoexploitation Unix
Aujourdrsquohui utiliseacute par une large communauteacute de programmeurs
137
Historique du langage C
Premiegravere deacutefinition rigoureuse en 1978 laquoThe C programming Language raquo par Kerniguan amp Ritchie
Aujourdrsquohui le langage est normaliseacute on parle de laquo C ANSI raquo
138
Compilateurs environnements de programmation
Il existe des compilateurs etou environnements de programmation pour tous les systegravemes drsquoexploitation
Par exemple
Sous Windows Dev-C++ (eacutediteur + compilateur + deacutebogueur) Sous Linux gcc (eacutediteur emacs + deacutebogueur ddd)
Notons que tous les environnements de programmations pour C++ et Objective C sont aussi des environnements de programmation pour C Nous utiliserons drsquoailleurs Dev-C++ qui comme son nom lrsquoindique est un environnement de programmation pour C++
139
23 Etude drsquoun programme simple en C
Objet du programme calcul de la surface et du volume des planegravetes du systegraveme Solaire
Rappels des formules
Listing du programme
Analyse deacutetailleacutee du code
140
Le systegraveme Solaire
Planegravete Image Rayon (km)
Mercure 2439
Veacutenus 6050
Terre 6378
Mars 3387
141
Le systegraveme Solaire
Jupiter 71400
Saturne 60000
Uranus 26150
Neptune 24300
142
Surface et volume drsquoune sphegravere en fonction du rayon
V =4
3π R
3
S=4π R2
143
Le programme laquo planetes raquo
Un programme se deacuteveloppe dans un fichier
On deacuteveloppera nos programmes dans un fichier drsquoextension c
Le programme qui calcule lrsquoaire et le volume des planegravetes agrave partir de leur rayon est deacuteveloppeacute dans le fichier planetesc
Regravegles de bonne programmation
On donnera au fichier un nom qui rappelle la fonction du programme qui y est deacuteveloppeacute
On nrsquoutilise pas les accents (planetesc au lieu de planegravetesc) ni les espaces
144
Le fichier planetesc
include ltstdiohgt
const float PI = 314
int main() float rayon_planete le rayon de la planetefloat surface_planete sa surfacefloat volume_planete son volume
entree de la donnee rayon printf(Entrez le rayon de la planete (en km) )scanf(f amprayon_planete)
calcul de la surface du volume
surface_planete = 40 PI rayon_planete rayon_planetevolume_planete = (4030) PI rayon_planete rayon_planete rayon_planete
impression des resultatsprintf(sfsn Surface de la planete surface_planete km2)printf(sfsn Volume de la planete volume_planete km3)
return 0
145
Analyse du programme laquo planetes raquo
include ltstdiohgt
Demande dinclusion du fichier stdioh
(laquo standard input ouput raquo) Linclusion de ce fichier est neacutecessaire pour pouvoir utiliser les fonctions dentreacutee-sortie
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
120
13 Les langages de programmation
Historique
Environnement de programmation
Champs drsquoapplications des langages
121
Historique des langages de programmation
Au commencement (~ 1946) le langage machine des 1 et des 0
Un progregraves le langage drsquoassemblage (~1950)
Premiers langages de haut niveau Fortran (applications scientifiques -1956-)
Cobol (applications de gestion -1960-)
Lisp (intelligence artificielle -1960-)
122
Historique des langages de programmation
Quelques reacutefeacuterents Pascal (Wirth 1968 ) C (Ritchie 1970) Smalltalk (Jey 1970) Ada (Ichbiah 1975) Prolog (Colmerauer Roussel 1975) C++ (Stroustrup 1983)
Langages les plus reacutecents (tous objets) Java (Sun) 1991 Python (Guido Van Rossum) 1991 C (Microsoft) 2001 hellip pour contrer Java et C++
123
Utilisation des langages de programmation Sur le site httpwwwtiobecomindexphpcontentpaperinfotpciindexhtml
124
Les environnements de programmations modernes
Ils integravegrent
Un eacutediteur intelligent
Un compilateur
Un deacutebogueur symbolique
Un geacuteneacuterateur drsquointerface graphique
125
Eacutediteurs intelligents pour lrsquoeacutecriture de programmes
Un langage de programmation a des regravegles syntaxiques strictes
Un eacutediteur laquo intelligent raquo
Signale des erreurs potentielles
Structure le texte automatiquement pour vous
Exemple si lrsquoon ouvre une accolade laquo raquo lrsquoeacutediteur eacutedite automatiquement lrsquoaccolade fermante correspondante laquo raquo
126
Compilateurs
Un ordinateur ne laquo comprend raquo que le langage machine (1 et 0)
Le compilateur est un laquo gros raquo programme qui traduit le programme eacutecrit dans un langage eacutevolueacute (par exemple C) en un programme machine
Si le compilateur est correct lrsquoordinateur exeacutecute bien les tacircches deacutecrites dans le langage de haut niveau
Problegraveme lrsquoœuf ou la poule (ou dans quel langage eacutecrire un compilateur )
127
Deacutebogueurs
Un deacutebogueur est un programme qui permet de suivre pas agrave pas lrsquoexeacutecution drsquoun programme ce qui permet de chercher plus facilement les erreurs eacuteventuelles (les bugs )
Il permet essentiellement
Drsquoavancer pas agrave pas dans lrsquoexeacutecution du programme De creacuteer des points drsquoarrecirct De lire (et de modifier) le contenu des variables
128
Deacutebogueurs
129
Geacuteneacuterateurs drsquointerfaces graphiques
La plupart des applications professionnelles ont une interface graphique eacutevolueacutee comprenant boutons cases agrave cocher menu deacuteroulant etc
Certains langages disposent drsquoinstructions permettant la creacuteation de ces interfaces
Certaines plateformes de deacuteveloppement proposent mecircme des outils graphiques et de gestion de code qui permettent au programmeur non expeacuterimenteacute de deacutevelopper facilement ce type drsquointerfaces (citons delphi visual basic visual C++ jbuilder etc)
130
Champs drsquoapplications des langages
Un langage est plus ou moins bien adapteacute agrave un domaine donneacute
Certains langages sont relativement speacutecialiseacutes
(Perl traitement des chaicircnes de caractegraveres JavaScript eacutecriture de pages web interactives etc)
Drsquoautres plus ou moins geacuteneacuteralistes (C Pascal C++ Objective C Java Python etc)
131
2 Programmation impeacuterative Introduction au langage C
132
21 Les diffeacuterents paradigmes de programmation
Il existe plusieurs techniques de programmation
Impeacuterative
Fonctionnelle
Logique
Orienteacutee objets
Parallegravele
Le langage que nous allons eacutetudier le langage C appartient agrave la cateacutegorie des langages de programmation impeacuterative
133
La programmation impeacuterative
Dans ce type de programmation on manipule explicitement la meacutemoire gracircce agrave des instructions de haut niveau
Exemple
1 int n = 1 on initialise une variable nommeacutee n agrave 1
2 n = n + 1 on increacutemente n de 1
Eacutetat de la meacutemoire
Apregraves 1
Apregraves 2
134
La programmation impeacuterative
Langages embleacutematiques Pascal C Basic Fortran
Remarque dans tous les cas au niveau de la machine lrsquoexeacutecution drsquoun programme revient toujours agrave des manipulations sur la meacutemoire
135
22 Le langage C introduction
Historique
Compilateurs environnements de programmation
136
Historique du langage C
Creacuteeacute en 1972 par Denis Ritchie (2011dagger)(Bell Laboratories)
Au deacutepart pour deacutevelopper le systegraveme drsquoexploitation Unix
Aujourdrsquohui utiliseacute par une large communauteacute de programmeurs
137
Historique du langage C
Premiegravere deacutefinition rigoureuse en 1978 laquoThe C programming Language raquo par Kerniguan amp Ritchie
Aujourdrsquohui le langage est normaliseacute on parle de laquo C ANSI raquo
138
Compilateurs environnements de programmation
Il existe des compilateurs etou environnements de programmation pour tous les systegravemes drsquoexploitation
Par exemple
Sous Windows Dev-C++ (eacutediteur + compilateur + deacutebogueur) Sous Linux gcc (eacutediteur emacs + deacutebogueur ddd)
Notons que tous les environnements de programmations pour C++ et Objective C sont aussi des environnements de programmation pour C Nous utiliserons drsquoailleurs Dev-C++ qui comme son nom lrsquoindique est un environnement de programmation pour C++
139
23 Etude drsquoun programme simple en C
Objet du programme calcul de la surface et du volume des planegravetes du systegraveme Solaire
Rappels des formules
Listing du programme
Analyse deacutetailleacutee du code
140
Le systegraveme Solaire
Planegravete Image Rayon (km)
Mercure 2439
Veacutenus 6050
Terre 6378
Mars 3387
141
Le systegraveme Solaire
Jupiter 71400
Saturne 60000
Uranus 26150
Neptune 24300
142
Surface et volume drsquoune sphegravere en fonction du rayon
V =4
3π R
3
S=4π R2
143
Le programme laquo planetes raquo
Un programme se deacuteveloppe dans un fichier
On deacuteveloppera nos programmes dans un fichier drsquoextension c
Le programme qui calcule lrsquoaire et le volume des planegravetes agrave partir de leur rayon est deacuteveloppeacute dans le fichier planetesc
Regravegles de bonne programmation
On donnera au fichier un nom qui rappelle la fonction du programme qui y est deacuteveloppeacute
On nrsquoutilise pas les accents (planetesc au lieu de planegravetesc) ni les espaces
144
Le fichier planetesc
include ltstdiohgt
const float PI = 314
int main() float rayon_planete le rayon de la planetefloat surface_planete sa surfacefloat volume_planete son volume
entree de la donnee rayon printf(Entrez le rayon de la planete (en km) )scanf(f amprayon_planete)
calcul de la surface du volume
surface_planete = 40 PI rayon_planete rayon_planetevolume_planete = (4030) PI rayon_planete rayon_planete rayon_planete
impression des resultatsprintf(sfsn Surface de la planete surface_planete km2)printf(sfsn Volume de la planete volume_planete km3)
return 0
145
Analyse du programme laquo planetes raquo
include ltstdiohgt
Demande dinclusion du fichier stdioh
(laquo standard input ouput raquo) Linclusion de ce fichier est neacutecessaire pour pouvoir utiliser les fonctions dentreacutee-sortie
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
121
Historique des langages de programmation
Au commencement (~ 1946) le langage machine des 1 et des 0
Un progregraves le langage drsquoassemblage (~1950)
Premiers langages de haut niveau Fortran (applications scientifiques -1956-)
Cobol (applications de gestion -1960-)
Lisp (intelligence artificielle -1960-)
122
Historique des langages de programmation
Quelques reacutefeacuterents Pascal (Wirth 1968 ) C (Ritchie 1970) Smalltalk (Jey 1970) Ada (Ichbiah 1975) Prolog (Colmerauer Roussel 1975) C++ (Stroustrup 1983)
Langages les plus reacutecents (tous objets) Java (Sun) 1991 Python (Guido Van Rossum) 1991 C (Microsoft) 2001 hellip pour contrer Java et C++
123
Utilisation des langages de programmation Sur le site httpwwwtiobecomindexphpcontentpaperinfotpciindexhtml
124
Les environnements de programmations modernes
Ils integravegrent
Un eacutediteur intelligent
Un compilateur
Un deacutebogueur symbolique
Un geacuteneacuterateur drsquointerface graphique
125
Eacutediteurs intelligents pour lrsquoeacutecriture de programmes
Un langage de programmation a des regravegles syntaxiques strictes
Un eacutediteur laquo intelligent raquo
Signale des erreurs potentielles
Structure le texte automatiquement pour vous
Exemple si lrsquoon ouvre une accolade laquo raquo lrsquoeacutediteur eacutedite automatiquement lrsquoaccolade fermante correspondante laquo raquo
126
Compilateurs
Un ordinateur ne laquo comprend raquo que le langage machine (1 et 0)
Le compilateur est un laquo gros raquo programme qui traduit le programme eacutecrit dans un langage eacutevolueacute (par exemple C) en un programme machine
Si le compilateur est correct lrsquoordinateur exeacutecute bien les tacircches deacutecrites dans le langage de haut niveau
Problegraveme lrsquoœuf ou la poule (ou dans quel langage eacutecrire un compilateur )
127
Deacutebogueurs
Un deacutebogueur est un programme qui permet de suivre pas agrave pas lrsquoexeacutecution drsquoun programme ce qui permet de chercher plus facilement les erreurs eacuteventuelles (les bugs )
Il permet essentiellement
Drsquoavancer pas agrave pas dans lrsquoexeacutecution du programme De creacuteer des points drsquoarrecirct De lire (et de modifier) le contenu des variables
128
Deacutebogueurs
129
Geacuteneacuterateurs drsquointerfaces graphiques
La plupart des applications professionnelles ont une interface graphique eacutevolueacutee comprenant boutons cases agrave cocher menu deacuteroulant etc
Certains langages disposent drsquoinstructions permettant la creacuteation de ces interfaces
Certaines plateformes de deacuteveloppement proposent mecircme des outils graphiques et de gestion de code qui permettent au programmeur non expeacuterimenteacute de deacutevelopper facilement ce type drsquointerfaces (citons delphi visual basic visual C++ jbuilder etc)
130
Champs drsquoapplications des langages
Un langage est plus ou moins bien adapteacute agrave un domaine donneacute
Certains langages sont relativement speacutecialiseacutes
(Perl traitement des chaicircnes de caractegraveres JavaScript eacutecriture de pages web interactives etc)
Drsquoautres plus ou moins geacuteneacuteralistes (C Pascal C++ Objective C Java Python etc)
131
2 Programmation impeacuterative Introduction au langage C
132
21 Les diffeacuterents paradigmes de programmation
Il existe plusieurs techniques de programmation
Impeacuterative
Fonctionnelle
Logique
Orienteacutee objets
Parallegravele
Le langage que nous allons eacutetudier le langage C appartient agrave la cateacutegorie des langages de programmation impeacuterative
133
La programmation impeacuterative
Dans ce type de programmation on manipule explicitement la meacutemoire gracircce agrave des instructions de haut niveau
Exemple
1 int n = 1 on initialise une variable nommeacutee n agrave 1
2 n = n + 1 on increacutemente n de 1
Eacutetat de la meacutemoire
Apregraves 1
Apregraves 2
134
La programmation impeacuterative
Langages embleacutematiques Pascal C Basic Fortran
Remarque dans tous les cas au niveau de la machine lrsquoexeacutecution drsquoun programme revient toujours agrave des manipulations sur la meacutemoire
135
22 Le langage C introduction
Historique
Compilateurs environnements de programmation
136
Historique du langage C
Creacuteeacute en 1972 par Denis Ritchie (2011dagger)(Bell Laboratories)
Au deacutepart pour deacutevelopper le systegraveme drsquoexploitation Unix
Aujourdrsquohui utiliseacute par une large communauteacute de programmeurs
137
Historique du langage C
Premiegravere deacutefinition rigoureuse en 1978 laquoThe C programming Language raquo par Kerniguan amp Ritchie
Aujourdrsquohui le langage est normaliseacute on parle de laquo C ANSI raquo
138
Compilateurs environnements de programmation
Il existe des compilateurs etou environnements de programmation pour tous les systegravemes drsquoexploitation
Par exemple
Sous Windows Dev-C++ (eacutediteur + compilateur + deacutebogueur) Sous Linux gcc (eacutediteur emacs + deacutebogueur ddd)
Notons que tous les environnements de programmations pour C++ et Objective C sont aussi des environnements de programmation pour C Nous utiliserons drsquoailleurs Dev-C++ qui comme son nom lrsquoindique est un environnement de programmation pour C++
139
23 Etude drsquoun programme simple en C
Objet du programme calcul de la surface et du volume des planegravetes du systegraveme Solaire
Rappels des formules
Listing du programme
Analyse deacutetailleacutee du code
140
Le systegraveme Solaire
Planegravete Image Rayon (km)
Mercure 2439
Veacutenus 6050
Terre 6378
Mars 3387
141
Le systegraveme Solaire
Jupiter 71400
Saturne 60000
Uranus 26150
Neptune 24300
142
Surface et volume drsquoune sphegravere en fonction du rayon
V =4
3π R
3
S=4π R2
143
Le programme laquo planetes raquo
Un programme se deacuteveloppe dans un fichier
On deacuteveloppera nos programmes dans un fichier drsquoextension c
Le programme qui calcule lrsquoaire et le volume des planegravetes agrave partir de leur rayon est deacuteveloppeacute dans le fichier planetesc
Regravegles de bonne programmation
On donnera au fichier un nom qui rappelle la fonction du programme qui y est deacuteveloppeacute
On nrsquoutilise pas les accents (planetesc au lieu de planegravetesc) ni les espaces
144
Le fichier planetesc
include ltstdiohgt
const float PI = 314
int main() float rayon_planete le rayon de la planetefloat surface_planete sa surfacefloat volume_planete son volume
entree de la donnee rayon printf(Entrez le rayon de la planete (en km) )scanf(f amprayon_planete)
calcul de la surface du volume
surface_planete = 40 PI rayon_planete rayon_planetevolume_planete = (4030) PI rayon_planete rayon_planete rayon_planete
impression des resultatsprintf(sfsn Surface de la planete surface_planete km2)printf(sfsn Volume de la planete volume_planete km3)
return 0
145
Analyse du programme laquo planetes raquo
include ltstdiohgt
Demande dinclusion du fichier stdioh
(laquo standard input ouput raquo) Linclusion de ce fichier est neacutecessaire pour pouvoir utiliser les fonctions dentreacutee-sortie
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
122
Historique des langages de programmation
Quelques reacutefeacuterents Pascal (Wirth 1968 ) C (Ritchie 1970) Smalltalk (Jey 1970) Ada (Ichbiah 1975) Prolog (Colmerauer Roussel 1975) C++ (Stroustrup 1983)
Langages les plus reacutecents (tous objets) Java (Sun) 1991 Python (Guido Van Rossum) 1991 C (Microsoft) 2001 hellip pour contrer Java et C++
123
Utilisation des langages de programmation Sur le site httpwwwtiobecomindexphpcontentpaperinfotpciindexhtml
124
Les environnements de programmations modernes
Ils integravegrent
Un eacutediteur intelligent
Un compilateur
Un deacutebogueur symbolique
Un geacuteneacuterateur drsquointerface graphique
125
Eacutediteurs intelligents pour lrsquoeacutecriture de programmes
Un langage de programmation a des regravegles syntaxiques strictes
Un eacutediteur laquo intelligent raquo
Signale des erreurs potentielles
Structure le texte automatiquement pour vous
Exemple si lrsquoon ouvre une accolade laquo raquo lrsquoeacutediteur eacutedite automatiquement lrsquoaccolade fermante correspondante laquo raquo
126
Compilateurs
Un ordinateur ne laquo comprend raquo que le langage machine (1 et 0)
Le compilateur est un laquo gros raquo programme qui traduit le programme eacutecrit dans un langage eacutevolueacute (par exemple C) en un programme machine
Si le compilateur est correct lrsquoordinateur exeacutecute bien les tacircches deacutecrites dans le langage de haut niveau
Problegraveme lrsquoœuf ou la poule (ou dans quel langage eacutecrire un compilateur )
127
Deacutebogueurs
Un deacutebogueur est un programme qui permet de suivre pas agrave pas lrsquoexeacutecution drsquoun programme ce qui permet de chercher plus facilement les erreurs eacuteventuelles (les bugs )
Il permet essentiellement
Drsquoavancer pas agrave pas dans lrsquoexeacutecution du programme De creacuteer des points drsquoarrecirct De lire (et de modifier) le contenu des variables
128
Deacutebogueurs
129
Geacuteneacuterateurs drsquointerfaces graphiques
La plupart des applications professionnelles ont une interface graphique eacutevolueacutee comprenant boutons cases agrave cocher menu deacuteroulant etc
Certains langages disposent drsquoinstructions permettant la creacuteation de ces interfaces
Certaines plateformes de deacuteveloppement proposent mecircme des outils graphiques et de gestion de code qui permettent au programmeur non expeacuterimenteacute de deacutevelopper facilement ce type drsquointerfaces (citons delphi visual basic visual C++ jbuilder etc)
130
Champs drsquoapplications des langages
Un langage est plus ou moins bien adapteacute agrave un domaine donneacute
Certains langages sont relativement speacutecialiseacutes
(Perl traitement des chaicircnes de caractegraveres JavaScript eacutecriture de pages web interactives etc)
Drsquoautres plus ou moins geacuteneacuteralistes (C Pascal C++ Objective C Java Python etc)
131
2 Programmation impeacuterative Introduction au langage C
132
21 Les diffeacuterents paradigmes de programmation
Il existe plusieurs techniques de programmation
Impeacuterative
Fonctionnelle
Logique
Orienteacutee objets
Parallegravele
Le langage que nous allons eacutetudier le langage C appartient agrave la cateacutegorie des langages de programmation impeacuterative
133
La programmation impeacuterative
Dans ce type de programmation on manipule explicitement la meacutemoire gracircce agrave des instructions de haut niveau
Exemple
1 int n = 1 on initialise une variable nommeacutee n agrave 1
2 n = n + 1 on increacutemente n de 1
Eacutetat de la meacutemoire
Apregraves 1
Apregraves 2
134
La programmation impeacuterative
Langages embleacutematiques Pascal C Basic Fortran
Remarque dans tous les cas au niveau de la machine lrsquoexeacutecution drsquoun programme revient toujours agrave des manipulations sur la meacutemoire
135
22 Le langage C introduction
Historique
Compilateurs environnements de programmation
136
Historique du langage C
Creacuteeacute en 1972 par Denis Ritchie (2011dagger)(Bell Laboratories)
Au deacutepart pour deacutevelopper le systegraveme drsquoexploitation Unix
Aujourdrsquohui utiliseacute par une large communauteacute de programmeurs
137
Historique du langage C
Premiegravere deacutefinition rigoureuse en 1978 laquoThe C programming Language raquo par Kerniguan amp Ritchie
Aujourdrsquohui le langage est normaliseacute on parle de laquo C ANSI raquo
138
Compilateurs environnements de programmation
Il existe des compilateurs etou environnements de programmation pour tous les systegravemes drsquoexploitation
Par exemple
Sous Windows Dev-C++ (eacutediteur + compilateur + deacutebogueur) Sous Linux gcc (eacutediteur emacs + deacutebogueur ddd)
Notons que tous les environnements de programmations pour C++ et Objective C sont aussi des environnements de programmation pour C Nous utiliserons drsquoailleurs Dev-C++ qui comme son nom lrsquoindique est un environnement de programmation pour C++
139
23 Etude drsquoun programme simple en C
Objet du programme calcul de la surface et du volume des planegravetes du systegraveme Solaire
Rappels des formules
Listing du programme
Analyse deacutetailleacutee du code
140
Le systegraveme Solaire
Planegravete Image Rayon (km)
Mercure 2439
Veacutenus 6050
Terre 6378
Mars 3387
141
Le systegraveme Solaire
Jupiter 71400
Saturne 60000
Uranus 26150
Neptune 24300
142
Surface et volume drsquoune sphegravere en fonction du rayon
V =4
3π R
3
S=4π R2
143
Le programme laquo planetes raquo
Un programme se deacuteveloppe dans un fichier
On deacuteveloppera nos programmes dans un fichier drsquoextension c
Le programme qui calcule lrsquoaire et le volume des planegravetes agrave partir de leur rayon est deacuteveloppeacute dans le fichier planetesc
Regravegles de bonne programmation
On donnera au fichier un nom qui rappelle la fonction du programme qui y est deacuteveloppeacute
On nrsquoutilise pas les accents (planetesc au lieu de planegravetesc) ni les espaces
144
Le fichier planetesc
include ltstdiohgt
const float PI = 314
int main() float rayon_planete le rayon de la planetefloat surface_planete sa surfacefloat volume_planete son volume
entree de la donnee rayon printf(Entrez le rayon de la planete (en km) )scanf(f amprayon_planete)
calcul de la surface du volume
surface_planete = 40 PI rayon_planete rayon_planetevolume_planete = (4030) PI rayon_planete rayon_planete rayon_planete
impression des resultatsprintf(sfsn Surface de la planete surface_planete km2)printf(sfsn Volume de la planete volume_planete km3)
return 0
145
Analyse du programme laquo planetes raquo
include ltstdiohgt
Demande dinclusion du fichier stdioh
(laquo standard input ouput raquo) Linclusion de ce fichier est neacutecessaire pour pouvoir utiliser les fonctions dentreacutee-sortie
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
123
Utilisation des langages de programmation Sur le site httpwwwtiobecomindexphpcontentpaperinfotpciindexhtml
124
Les environnements de programmations modernes
Ils integravegrent
Un eacutediteur intelligent
Un compilateur
Un deacutebogueur symbolique
Un geacuteneacuterateur drsquointerface graphique
125
Eacutediteurs intelligents pour lrsquoeacutecriture de programmes
Un langage de programmation a des regravegles syntaxiques strictes
Un eacutediteur laquo intelligent raquo
Signale des erreurs potentielles
Structure le texte automatiquement pour vous
Exemple si lrsquoon ouvre une accolade laquo raquo lrsquoeacutediteur eacutedite automatiquement lrsquoaccolade fermante correspondante laquo raquo
126
Compilateurs
Un ordinateur ne laquo comprend raquo que le langage machine (1 et 0)
Le compilateur est un laquo gros raquo programme qui traduit le programme eacutecrit dans un langage eacutevolueacute (par exemple C) en un programme machine
Si le compilateur est correct lrsquoordinateur exeacutecute bien les tacircches deacutecrites dans le langage de haut niveau
Problegraveme lrsquoœuf ou la poule (ou dans quel langage eacutecrire un compilateur )
127
Deacutebogueurs
Un deacutebogueur est un programme qui permet de suivre pas agrave pas lrsquoexeacutecution drsquoun programme ce qui permet de chercher plus facilement les erreurs eacuteventuelles (les bugs )
Il permet essentiellement
Drsquoavancer pas agrave pas dans lrsquoexeacutecution du programme De creacuteer des points drsquoarrecirct De lire (et de modifier) le contenu des variables
128
Deacutebogueurs
129
Geacuteneacuterateurs drsquointerfaces graphiques
La plupart des applications professionnelles ont une interface graphique eacutevolueacutee comprenant boutons cases agrave cocher menu deacuteroulant etc
Certains langages disposent drsquoinstructions permettant la creacuteation de ces interfaces
Certaines plateformes de deacuteveloppement proposent mecircme des outils graphiques et de gestion de code qui permettent au programmeur non expeacuterimenteacute de deacutevelopper facilement ce type drsquointerfaces (citons delphi visual basic visual C++ jbuilder etc)
130
Champs drsquoapplications des langages
Un langage est plus ou moins bien adapteacute agrave un domaine donneacute
Certains langages sont relativement speacutecialiseacutes
(Perl traitement des chaicircnes de caractegraveres JavaScript eacutecriture de pages web interactives etc)
Drsquoautres plus ou moins geacuteneacuteralistes (C Pascal C++ Objective C Java Python etc)
131
2 Programmation impeacuterative Introduction au langage C
132
21 Les diffeacuterents paradigmes de programmation
Il existe plusieurs techniques de programmation
Impeacuterative
Fonctionnelle
Logique
Orienteacutee objets
Parallegravele
Le langage que nous allons eacutetudier le langage C appartient agrave la cateacutegorie des langages de programmation impeacuterative
133
La programmation impeacuterative
Dans ce type de programmation on manipule explicitement la meacutemoire gracircce agrave des instructions de haut niveau
Exemple
1 int n = 1 on initialise une variable nommeacutee n agrave 1
2 n = n + 1 on increacutemente n de 1
Eacutetat de la meacutemoire
Apregraves 1
Apregraves 2
134
La programmation impeacuterative
Langages embleacutematiques Pascal C Basic Fortran
Remarque dans tous les cas au niveau de la machine lrsquoexeacutecution drsquoun programme revient toujours agrave des manipulations sur la meacutemoire
135
22 Le langage C introduction
Historique
Compilateurs environnements de programmation
136
Historique du langage C
Creacuteeacute en 1972 par Denis Ritchie (2011dagger)(Bell Laboratories)
Au deacutepart pour deacutevelopper le systegraveme drsquoexploitation Unix
Aujourdrsquohui utiliseacute par une large communauteacute de programmeurs
137
Historique du langage C
Premiegravere deacutefinition rigoureuse en 1978 laquoThe C programming Language raquo par Kerniguan amp Ritchie
Aujourdrsquohui le langage est normaliseacute on parle de laquo C ANSI raquo
138
Compilateurs environnements de programmation
Il existe des compilateurs etou environnements de programmation pour tous les systegravemes drsquoexploitation
Par exemple
Sous Windows Dev-C++ (eacutediteur + compilateur + deacutebogueur) Sous Linux gcc (eacutediteur emacs + deacutebogueur ddd)
Notons que tous les environnements de programmations pour C++ et Objective C sont aussi des environnements de programmation pour C Nous utiliserons drsquoailleurs Dev-C++ qui comme son nom lrsquoindique est un environnement de programmation pour C++
139
23 Etude drsquoun programme simple en C
Objet du programme calcul de la surface et du volume des planegravetes du systegraveme Solaire
Rappels des formules
Listing du programme
Analyse deacutetailleacutee du code
140
Le systegraveme Solaire
Planegravete Image Rayon (km)
Mercure 2439
Veacutenus 6050
Terre 6378
Mars 3387
141
Le systegraveme Solaire
Jupiter 71400
Saturne 60000
Uranus 26150
Neptune 24300
142
Surface et volume drsquoune sphegravere en fonction du rayon
V =4
3π R
3
S=4π R2
143
Le programme laquo planetes raquo
Un programme se deacuteveloppe dans un fichier
On deacuteveloppera nos programmes dans un fichier drsquoextension c
Le programme qui calcule lrsquoaire et le volume des planegravetes agrave partir de leur rayon est deacuteveloppeacute dans le fichier planetesc
Regravegles de bonne programmation
On donnera au fichier un nom qui rappelle la fonction du programme qui y est deacuteveloppeacute
On nrsquoutilise pas les accents (planetesc au lieu de planegravetesc) ni les espaces
144
Le fichier planetesc
include ltstdiohgt
const float PI = 314
int main() float rayon_planete le rayon de la planetefloat surface_planete sa surfacefloat volume_planete son volume
entree de la donnee rayon printf(Entrez le rayon de la planete (en km) )scanf(f amprayon_planete)
calcul de la surface du volume
surface_planete = 40 PI rayon_planete rayon_planetevolume_planete = (4030) PI rayon_planete rayon_planete rayon_planete
impression des resultatsprintf(sfsn Surface de la planete surface_planete km2)printf(sfsn Volume de la planete volume_planete km3)
return 0
145
Analyse du programme laquo planetes raquo
include ltstdiohgt
Demande dinclusion du fichier stdioh
(laquo standard input ouput raquo) Linclusion de ce fichier est neacutecessaire pour pouvoir utiliser les fonctions dentreacutee-sortie
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
124
Les environnements de programmations modernes
Ils integravegrent
Un eacutediteur intelligent
Un compilateur
Un deacutebogueur symbolique
Un geacuteneacuterateur drsquointerface graphique
125
Eacutediteurs intelligents pour lrsquoeacutecriture de programmes
Un langage de programmation a des regravegles syntaxiques strictes
Un eacutediteur laquo intelligent raquo
Signale des erreurs potentielles
Structure le texte automatiquement pour vous
Exemple si lrsquoon ouvre une accolade laquo raquo lrsquoeacutediteur eacutedite automatiquement lrsquoaccolade fermante correspondante laquo raquo
126
Compilateurs
Un ordinateur ne laquo comprend raquo que le langage machine (1 et 0)
Le compilateur est un laquo gros raquo programme qui traduit le programme eacutecrit dans un langage eacutevolueacute (par exemple C) en un programme machine
Si le compilateur est correct lrsquoordinateur exeacutecute bien les tacircches deacutecrites dans le langage de haut niveau
Problegraveme lrsquoœuf ou la poule (ou dans quel langage eacutecrire un compilateur )
127
Deacutebogueurs
Un deacutebogueur est un programme qui permet de suivre pas agrave pas lrsquoexeacutecution drsquoun programme ce qui permet de chercher plus facilement les erreurs eacuteventuelles (les bugs )
Il permet essentiellement
Drsquoavancer pas agrave pas dans lrsquoexeacutecution du programme De creacuteer des points drsquoarrecirct De lire (et de modifier) le contenu des variables
128
Deacutebogueurs
129
Geacuteneacuterateurs drsquointerfaces graphiques
La plupart des applications professionnelles ont une interface graphique eacutevolueacutee comprenant boutons cases agrave cocher menu deacuteroulant etc
Certains langages disposent drsquoinstructions permettant la creacuteation de ces interfaces
Certaines plateformes de deacuteveloppement proposent mecircme des outils graphiques et de gestion de code qui permettent au programmeur non expeacuterimenteacute de deacutevelopper facilement ce type drsquointerfaces (citons delphi visual basic visual C++ jbuilder etc)
130
Champs drsquoapplications des langages
Un langage est plus ou moins bien adapteacute agrave un domaine donneacute
Certains langages sont relativement speacutecialiseacutes
(Perl traitement des chaicircnes de caractegraveres JavaScript eacutecriture de pages web interactives etc)
Drsquoautres plus ou moins geacuteneacuteralistes (C Pascal C++ Objective C Java Python etc)
131
2 Programmation impeacuterative Introduction au langage C
132
21 Les diffeacuterents paradigmes de programmation
Il existe plusieurs techniques de programmation
Impeacuterative
Fonctionnelle
Logique
Orienteacutee objets
Parallegravele
Le langage que nous allons eacutetudier le langage C appartient agrave la cateacutegorie des langages de programmation impeacuterative
133
La programmation impeacuterative
Dans ce type de programmation on manipule explicitement la meacutemoire gracircce agrave des instructions de haut niveau
Exemple
1 int n = 1 on initialise une variable nommeacutee n agrave 1
2 n = n + 1 on increacutemente n de 1
Eacutetat de la meacutemoire
Apregraves 1
Apregraves 2
134
La programmation impeacuterative
Langages embleacutematiques Pascal C Basic Fortran
Remarque dans tous les cas au niveau de la machine lrsquoexeacutecution drsquoun programme revient toujours agrave des manipulations sur la meacutemoire
135
22 Le langage C introduction
Historique
Compilateurs environnements de programmation
136
Historique du langage C
Creacuteeacute en 1972 par Denis Ritchie (2011dagger)(Bell Laboratories)
Au deacutepart pour deacutevelopper le systegraveme drsquoexploitation Unix
Aujourdrsquohui utiliseacute par une large communauteacute de programmeurs
137
Historique du langage C
Premiegravere deacutefinition rigoureuse en 1978 laquoThe C programming Language raquo par Kerniguan amp Ritchie
Aujourdrsquohui le langage est normaliseacute on parle de laquo C ANSI raquo
138
Compilateurs environnements de programmation
Il existe des compilateurs etou environnements de programmation pour tous les systegravemes drsquoexploitation
Par exemple
Sous Windows Dev-C++ (eacutediteur + compilateur + deacutebogueur) Sous Linux gcc (eacutediteur emacs + deacutebogueur ddd)
Notons que tous les environnements de programmations pour C++ et Objective C sont aussi des environnements de programmation pour C Nous utiliserons drsquoailleurs Dev-C++ qui comme son nom lrsquoindique est un environnement de programmation pour C++
139
23 Etude drsquoun programme simple en C
Objet du programme calcul de la surface et du volume des planegravetes du systegraveme Solaire
Rappels des formules
Listing du programme
Analyse deacutetailleacutee du code
140
Le systegraveme Solaire
Planegravete Image Rayon (km)
Mercure 2439
Veacutenus 6050
Terre 6378
Mars 3387
141
Le systegraveme Solaire
Jupiter 71400
Saturne 60000
Uranus 26150
Neptune 24300
142
Surface et volume drsquoune sphegravere en fonction du rayon
V =4
3π R
3
S=4π R2
143
Le programme laquo planetes raquo
Un programme se deacuteveloppe dans un fichier
On deacuteveloppera nos programmes dans un fichier drsquoextension c
Le programme qui calcule lrsquoaire et le volume des planegravetes agrave partir de leur rayon est deacuteveloppeacute dans le fichier planetesc
Regravegles de bonne programmation
On donnera au fichier un nom qui rappelle la fonction du programme qui y est deacuteveloppeacute
On nrsquoutilise pas les accents (planetesc au lieu de planegravetesc) ni les espaces
144
Le fichier planetesc
include ltstdiohgt
const float PI = 314
int main() float rayon_planete le rayon de la planetefloat surface_planete sa surfacefloat volume_planete son volume
entree de la donnee rayon printf(Entrez le rayon de la planete (en km) )scanf(f amprayon_planete)
calcul de la surface du volume
surface_planete = 40 PI rayon_planete rayon_planetevolume_planete = (4030) PI rayon_planete rayon_planete rayon_planete
impression des resultatsprintf(sfsn Surface de la planete surface_planete km2)printf(sfsn Volume de la planete volume_planete km3)
return 0
145
Analyse du programme laquo planetes raquo
include ltstdiohgt
Demande dinclusion du fichier stdioh
(laquo standard input ouput raquo) Linclusion de ce fichier est neacutecessaire pour pouvoir utiliser les fonctions dentreacutee-sortie
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
125
Eacutediteurs intelligents pour lrsquoeacutecriture de programmes
Un langage de programmation a des regravegles syntaxiques strictes
Un eacutediteur laquo intelligent raquo
Signale des erreurs potentielles
Structure le texte automatiquement pour vous
Exemple si lrsquoon ouvre une accolade laquo raquo lrsquoeacutediteur eacutedite automatiquement lrsquoaccolade fermante correspondante laquo raquo
126
Compilateurs
Un ordinateur ne laquo comprend raquo que le langage machine (1 et 0)
Le compilateur est un laquo gros raquo programme qui traduit le programme eacutecrit dans un langage eacutevolueacute (par exemple C) en un programme machine
Si le compilateur est correct lrsquoordinateur exeacutecute bien les tacircches deacutecrites dans le langage de haut niveau
Problegraveme lrsquoœuf ou la poule (ou dans quel langage eacutecrire un compilateur )
127
Deacutebogueurs
Un deacutebogueur est un programme qui permet de suivre pas agrave pas lrsquoexeacutecution drsquoun programme ce qui permet de chercher plus facilement les erreurs eacuteventuelles (les bugs )
Il permet essentiellement
Drsquoavancer pas agrave pas dans lrsquoexeacutecution du programme De creacuteer des points drsquoarrecirct De lire (et de modifier) le contenu des variables
128
Deacutebogueurs
129
Geacuteneacuterateurs drsquointerfaces graphiques
La plupart des applications professionnelles ont une interface graphique eacutevolueacutee comprenant boutons cases agrave cocher menu deacuteroulant etc
Certains langages disposent drsquoinstructions permettant la creacuteation de ces interfaces
Certaines plateformes de deacuteveloppement proposent mecircme des outils graphiques et de gestion de code qui permettent au programmeur non expeacuterimenteacute de deacutevelopper facilement ce type drsquointerfaces (citons delphi visual basic visual C++ jbuilder etc)
130
Champs drsquoapplications des langages
Un langage est plus ou moins bien adapteacute agrave un domaine donneacute
Certains langages sont relativement speacutecialiseacutes
(Perl traitement des chaicircnes de caractegraveres JavaScript eacutecriture de pages web interactives etc)
Drsquoautres plus ou moins geacuteneacuteralistes (C Pascal C++ Objective C Java Python etc)
131
2 Programmation impeacuterative Introduction au langage C
132
21 Les diffeacuterents paradigmes de programmation
Il existe plusieurs techniques de programmation
Impeacuterative
Fonctionnelle
Logique
Orienteacutee objets
Parallegravele
Le langage que nous allons eacutetudier le langage C appartient agrave la cateacutegorie des langages de programmation impeacuterative
133
La programmation impeacuterative
Dans ce type de programmation on manipule explicitement la meacutemoire gracircce agrave des instructions de haut niveau
Exemple
1 int n = 1 on initialise une variable nommeacutee n agrave 1
2 n = n + 1 on increacutemente n de 1
Eacutetat de la meacutemoire
Apregraves 1
Apregraves 2
134
La programmation impeacuterative
Langages embleacutematiques Pascal C Basic Fortran
Remarque dans tous les cas au niveau de la machine lrsquoexeacutecution drsquoun programme revient toujours agrave des manipulations sur la meacutemoire
135
22 Le langage C introduction
Historique
Compilateurs environnements de programmation
136
Historique du langage C
Creacuteeacute en 1972 par Denis Ritchie (2011dagger)(Bell Laboratories)
Au deacutepart pour deacutevelopper le systegraveme drsquoexploitation Unix
Aujourdrsquohui utiliseacute par une large communauteacute de programmeurs
137
Historique du langage C
Premiegravere deacutefinition rigoureuse en 1978 laquoThe C programming Language raquo par Kerniguan amp Ritchie
Aujourdrsquohui le langage est normaliseacute on parle de laquo C ANSI raquo
138
Compilateurs environnements de programmation
Il existe des compilateurs etou environnements de programmation pour tous les systegravemes drsquoexploitation
Par exemple
Sous Windows Dev-C++ (eacutediteur + compilateur + deacutebogueur) Sous Linux gcc (eacutediteur emacs + deacutebogueur ddd)
Notons que tous les environnements de programmations pour C++ et Objective C sont aussi des environnements de programmation pour C Nous utiliserons drsquoailleurs Dev-C++ qui comme son nom lrsquoindique est un environnement de programmation pour C++
139
23 Etude drsquoun programme simple en C
Objet du programme calcul de la surface et du volume des planegravetes du systegraveme Solaire
Rappels des formules
Listing du programme
Analyse deacutetailleacutee du code
140
Le systegraveme Solaire
Planegravete Image Rayon (km)
Mercure 2439
Veacutenus 6050
Terre 6378
Mars 3387
141
Le systegraveme Solaire
Jupiter 71400
Saturne 60000
Uranus 26150
Neptune 24300
142
Surface et volume drsquoune sphegravere en fonction du rayon
V =4
3π R
3
S=4π R2
143
Le programme laquo planetes raquo
Un programme se deacuteveloppe dans un fichier
On deacuteveloppera nos programmes dans un fichier drsquoextension c
Le programme qui calcule lrsquoaire et le volume des planegravetes agrave partir de leur rayon est deacuteveloppeacute dans le fichier planetesc
Regravegles de bonne programmation
On donnera au fichier un nom qui rappelle la fonction du programme qui y est deacuteveloppeacute
On nrsquoutilise pas les accents (planetesc au lieu de planegravetesc) ni les espaces
144
Le fichier planetesc
include ltstdiohgt
const float PI = 314
int main() float rayon_planete le rayon de la planetefloat surface_planete sa surfacefloat volume_planete son volume
entree de la donnee rayon printf(Entrez le rayon de la planete (en km) )scanf(f amprayon_planete)
calcul de la surface du volume
surface_planete = 40 PI rayon_planete rayon_planetevolume_planete = (4030) PI rayon_planete rayon_planete rayon_planete
impression des resultatsprintf(sfsn Surface de la planete surface_planete km2)printf(sfsn Volume de la planete volume_planete km3)
return 0
145
Analyse du programme laquo planetes raquo
include ltstdiohgt
Demande dinclusion du fichier stdioh
(laquo standard input ouput raquo) Linclusion de ce fichier est neacutecessaire pour pouvoir utiliser les fonctions dentreacutee-sortie
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
126
Compilateurs
Un ordinateur ne laquo comprend raquo que le langage machine (1 et 0)
Le compilateur est un laquo gros raquo programme qui traduit le programme eacutecrit dans un langage eacutevolueacute (par exemple C) en un programme machine
Si le compilateur est correct lrsquoordinateur exeacutecute bien les tacircches deacutecrites dans le langage de haut niveau
Problegraveme lrsquoœuf ou la poule (ou dans quel langage eacutecrire un compilateur )
127
Deacutebogueurs
Un deacutebogueur est un programme qui permet de suivre pas agrave pas lrsquoexeacutecution drsquoun programme ce qui permet de chercher plus facilement les erreurs eacuteventuelles (les bugs )
Il permet essentiellement
Drsquoavancer pas agrave pas dans lrsquoexeacutecution du programme De creacuteer des points drsquoarrecirct De lire (et de modifier) le contenu des variables
128
Deacutebogueurs
129
Geacuteneacuterateurs drsquointerfaces graphiques
La plupart des applications professionnelles ont une interface graphique eacutevolueacutee comprenant boutons cases agrave cocher menu deacuteroulant etc
Certains langages disposent drsquoinstructions permettant la creacuteation de ces interfaces
Certaines plateformes de deacuteveloppement proposent mecircme des outils graphiques et de gestion de code qui permettent au programmeur non expeacuterimenteacute de deacutevelopper facilement ce type drsquointerfaces (citons delphi visual basic visual C++ jbuilder etc)
130
Champs drsquoapplications des langages
Un langage est plus ou moins bien adapteacute agrave un domaine donneacute
Certains langages sont relativement speacutecialiseacutes
(Perl traitement des chaicircnes de caractegraveres JavaScript eacutecriture de pages web interactives etc)
Drsquoautres plus ou moins geacuteneacuteralistes (C Pascal C++ Objective C Java Python etc)
131
2 Programmation impeacuterative Introduction au langage C
132
21 Les diffeacuterents paradigmes de programmation
Il existe plusieurs techniques de programmation
Impeacuterative
Fonctionnelle
Logique
Orienteacutee objets
Parallegravele
Le langage que nous allons eacutetudier le langage C appartient agrave la cateacutegorie des langages de programmation impeacuterative
133
La programmation impeacuterative
Dans ce type de programmation on manipule explicitement la meacutemoire gracircce agrave des instructions de haut niveau
Exemple
1 int n = 1 on initialise une variable nommeacutee n agrave 1
2 n = n + 1 on increacutemente n de 1
Eacutetat de la meacutemoire
Apregraves 1
Apregraves 2
134
La programmation impeacuterative
Langages embleacutematiques Pascal C Basic Fortran
Remarque dans tous les cas au niveau de la machine lrsquoexeacutecution drsquoun programme revient toujours agrave des manipulations sur la meacutemoire
135
22 Le langage C introduction
Historique
Compilateurs environnements de programmation
136
Historique du langage C
Creacuteeacute en 1972 par Denis Ritchie (2011dagger)(Bell Laboratories)
Au deacutepart pour deacutevelopper le systegraveme drsquoexploitation Unix
Aujourdrsquohui utiliseacute par une large communauteacute de programmeurs
137
Historique du langage C
Premiegravere deacutefinition rigoureuse en 1978 laquoThe C programming Language raquo par Kerniguan amp Ritchie
Aujourdrsquohui le langage est normaliseacute on parle de laquo C ANSI raquo
138
Compilateurs environnements de programmation
Il existe des compilateurs etou environnements de programmation pour tous les systegravemes drsquoexploitation
Par exemple
Sous Windows Dev-C++ (eacutediteur + compilateur + deacutebogueur) Sous Linux gcc (eacutediteur emacs + deacutebogueur ddd)
Notons que tous les environnements de programmations pour C++ et Objective C sont aussi des environnements de programmation pour C Nous utiliserons drsquoailleurs Dev-C++ qui comme son nom lrsquoindique est un environnement de programmation pour C++
139
23 Etude drsquoun programme simple en C
Objet du programme calcul de la surface et du volume des planegravetes du systegraveme Solaire
Rappels des formules
Listing du programme
Analyse deacutetailleacutee du code
140
Le systegraveme Solaire
Planegravete Image Rayon (km)
Mercure 2439
Veacutenus 6050
Terre 6378
Mars 3387
141
Le systegraveme Solaire
Jupiter 71400
Saturne 60000
Uranus 26150
Neptune 24300
142
Surface et volume drsquoune sphegravere en fonction du rayon
V =4
3π R
3
S=4π R2
143
Le programme laquo planetes raquo
Un programme se deacuteveloppe dans un fichier
On deacuteveloppera nos programmes dans un fichier drsquoextension c
Le programme qui calcule lrsquoaire et le volume des planegravetes agrave partir de leur rayon est deacuteveloppeacute dans le fichier planetesc
Regravegles de bonne programmation
On donnera au fichier un nom qui rappelle la fonction du programme qui y est deacuteveloppeacute
On nrsquoutilise pas les accents (planetesc au lieu de planegravetesc) ni les espaces
144
Le fichier planetesc
include ltstdiohgt
const float PI = 314
int main() float rayon_planete le rayon de la planetefloat surface_planete sa surfacefloat volume_planete son volume
entree de la donnee rayon printf(Entrez le rayon de la planete (en km) )scanf(f amprayon_planete)
calcul de la surface du volume
surface_planete = 40 PI rayon_planete rayon_planetevolume_planete = (4030) PI rayon_planete rayon_planete rayon_planete
impression des resultatsprintf(sfsn Surface de la planete surface_planete km2)printf(sfsn Volume de la planete volume_planete km3)
return 0
145
Analyse du programme laquo planetes raquo
include ltstdiohgt
Demande dinclusion du fichier stdioh
(laquo standard input ouput raquo) Linclusion de ce fichier est neacutecessaire pour pouvoir utiliser les fonctions dentreacutee-sortie
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
127
Deacutebogueurs
Un deacutebogueur est un programme qui permet de suivre pas agrave pas lrsquoexeacutecution drsquoun programme ce qui permet de chercher plus facilement les erreurs eacuteventuelles (les bugs )
Il permet essentiellement
Drsquoavancer pas agrave pas dans lrsquoexeacutecution du programme De creacuteer des points drsquoarrecirct De lire (et de modifier) le contenu des variables
128
Deacutebogueurs
129
Geacuteneacuterateurs drsquointerfaces graphiques
La plupart des applications professionnelles ont une interface graphique eacutevolueacutee comprenant boutons cases agrave cocher menu deacuteroulant etc
Certains langages disposent drsquoinstructions permettant la creacuteation de ces interfaces
Certaines plateformes de deacuteveloppement proposent mecircme des outils graphiques et de gestion de code qui permettent au programmeur non expeacuterimenteacute de deacutevelopper facilement ce type drsquointerfaces (citons delphi visual basic visual C++ jbuilder etc)
130
Champs drsquoapplications des langages
Un langage est plus ou moins bien adapteacute agrave un domaine donneacute
Certains langages sont relativement speacutecialiseacutes
(Perl traitement des chaicircnes de caractegraveres JavaScript eacutecriture de pages web interactives etc)
Drsquoautres plus ou moins geacuteneacuteralistes (C Pascal C++ Objective C Java Python etc)
131
2 Programmation impeacuterative Introduction au langage C
132
21 Les diffeacuterents paradigmes de programmation
Il existe plusieurs techniques de programmation
Impeacuterative
Fonctionnelle
Logique
Orienteacutee objets
Parallegravele
Le langage que nous allons eacutetudier le langage C appartient agrave la cateacutegorie des langages de programmation impeacuterative
133
La programmation impeacuterative
Dans ce type de programmation on manipule explicitement la meacutemoire gracircce agrave des instructions de haut niveau
Exemple
1 int n = 1 on initialise une variable nommeacutee n agrave 1
2 n = n + 1 on increacutemente n de 1
Eacutetat de la meacutemoire
Apregraves 1
Apregraves 2
134
La programmation impeacuterative
Langages embleacutematiques Pascal C Basic Fortran
Remarque dans tous les cas au niveau de la machine lrsquoexeacutecution drsquoun programme revient toujours agrave des manipulations sur la meacutemoire
135
22 Le langage C introduction
Historique
Compilateurs environnements de programmation
136
Historique du langage C
Creacuteeacute en 1972 par Denis Ritchie (2011dagger)(Bell Laboratories)
Au deacutepart pour deacutevelopper le systegraveme drsquoexploitation Unix
Aujourdrsquohui utiliseacute par une large communauteacute de programmeurs
137
Historique du langage C
Premiegravere deacutefinition rigoureuse en 1978 laquoThe C programming Language raquo par Kerniguan amp Ritchie
Aujourdrsquohui le langage est normaliseacute on parle de laquo C ANSI raquo
138
Compilateurs environnements de programmation
Il existe des compilateurs etou environnements de programmation pour tous les systegravemes drsquoexploitation
Par exemple
Sous Windows Dev-C++ (eacutediteur + compilateur + deacutebogueur) Sous Linux gcc (eacutediteur emacs + deacutebogueur ddd)
Notons que tous les environnements de programmations pour C++ et Objective C sont aussi des environnements de programmation pour C Nous utiliserons drsquoailleurs Dev-C++ qui comme son nom lrsquoindique est un environnement de programmation pour C++
139
23 Etude drsquoun programme simple en C
Objet du programme calcul de la surface et du volume des planegravetes du systegraveme Solaire
Rappels des formules
Listing du programme
Analyse deacutetailleacutee du code
140
Le systegraveme Solaire
Planegravete Image Rayon (km)
Mercure 2439
Veacutenus 6050
Terre 6378
Mars 3387
141
Le systegraveme Solaire
Jupiter 71400
Saturne 60000
Uranus 26150
Neptune 24300
142
Surface et volume drsquoune sphegravere en fonction du rayon
V =4
3π R
3
S=4π R2
143
Le programme laquo planetes raquo
Un programme se deacuteveloppe dans un fichier
On deacuteveloppera nos programmes dans un fichier drsquoextension c
Le programme qui calcule lrsquoaire et le volume des planegravetes agrave partir de leur rayon est deacuteveloppeacute dans le fichier planetesc
Regravegles de bonne programmation
On donnera au fichier un nom qui rappelle la fonction du programme qui y est deacuteveloppeacute
On nrsquoutilise pas les accents (planetesc au lieu de planegravetesc) ni les espaces
144
Le fichier planetesc
include ltstdiohgt
const float PI = 314
int main() float rayon_planete le rayon de la planetefloat surface_planete sa surfacefloat volume_planete son volume
entree de la donnee rayon printf(Entrez le rayon de la planete (en km) )scanf(f amprayon_planete)
calcul de la surface du volume
surface_planete = 40 PI rayon_planete rayon_planetevolume_planete = (4030) PI rayon_planete rayon_planete rayon_planete
impression des resultatsprintf(sfsn Surface de la planete surface_planete km2)printf(sfsn Volume de la planete volume_planete km3)
return 0
145
Analyse du programme laquo planetes raquo
include ltstdiohgt
Demande dinclusion du fichier stdioh
(laquo standard input ouput raquo) Linclusion de ce fichier est neacutecessaire pour pouvoir utiliser les fonctions dentreacutee-sortie
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
128
Deacutebogueurs
129
Geacuteneacuterateurs drsquointerfaces graphiques
La plupart des applications professionnelles ont une interface graphique eacutevolueacutee comprenant boutons cases agrave cocher menu deacuteroulant etc
Certains langages disposent drsquoinstructions permettant la creacuteation de ces interfaces
Certaines plateformes de deacuteveloppement proposent mecircme des outils graphiques et de gestion de code qui permettent au programmeur non expeacuterimenteacute de deacutevelopper facilement ce type drsquointerfaces (citons delphi visual basic visual C++ jbuilder etc)
130
Champs drsquoapplications des langages
Un langage est plus ou moins bien adapteacute agrave un domaine donneacute
Certains langages sont relativement speacutecialiseacutes
(Perl traitement des chaicircnes de caractegraveres JavaScript eacutecriture de pages web interactives etc)
Drsquoautres plus ou moins geacuteneacuteralistes (C Pascal C++ Objective C Java Python etc)
131
2 Programmation impeacuterative Introduction au langage C
132
21 Les diffeacuterents paradigmes de programmation
Il existe plusieurs techniques de programmation
Impeacuterative
Fonctionnelle
Logique
Orienteacutee objets
Parallegravele
Le langage que nous allons eacutetudier le langage C appartient agrave la cateacutegorie des langages de programmation impeacuterative
133
La programmation impeacuterative
Dans ce type de programmation on manipule explicitement la meacutemoire gracircce agrave des instructions de haut niveau
Exemple
1 int n = 1 on initialise une variable nommeacutee n agrave 1
2 n = n + 1 on increacutemente n de 1
Eacutetat de la meacutemoire
Apregraves 1
Apregraves 2
134
La programmation impeacuterative
Langages embleacutematiques Pascal C Basic Fortran
Remarque dans tous les cas au niveau de la machine lrsquoexeacutecution drsquoun programme revient toujours agrave des manipulations sur la meacutemoire
135
22 Le langage C introduction
Historique
Compilateurs environnements de programmation
136
Historique du langage C
Creacuteeacute en 1972 par Denis Ritchie (2011dagger)(Bell Laboratories)
Au deacutepart pour deacutevelopper le systegraveme drsquoexploitation Unix
Aujourdrsquohui utiliseacute par une large communauteacute de programmeurs
137
Historique du langage C
Premiegravere deacutefinition rigoureuse en 1978 laquoThe C programming Language raquo par Kerniguan amp Ritchie
Aujourdrsquohui le langage est normaliseacute on parle de laquo C ANSI raquo
138
Compilateurs environnements de programmation
Il existe des compilateurs etou environnements de programmation pour tous les systegravemes drsquoexploitation
Par exemple
Sous Windows Dev-C++ (eacutediteur + compilateur + deacutebogueur) Sous Linux gcc (eacutediteur emacs + deacutebogueur ddd)
Notons que tous les environnements de programmations pour C++ et Objective C sont aussi des environnements de programmation pour C Nous utiliserons drsquoailleurs Dev-C++ qui comme son nom lrsquoindique est un environnement de programmation pour C++
139
23 Etude drsquoun programme simple en C
Objet du programme calcul de la surface et du volume des planegravetes du systegraveme Solaire
Rappels des formules
Listing du programme
Analyse deacutetailleacutee du code
140
Le systegraveme Solaire
Planegravete Image Rayon (km)
Mercure 2439
Veacutenus 6050
Terre 6378
Mars 3387
141
Le systegraveme Solaire
Jupiter 71400
Saturne 60000
Uranus 26150
Neptune 24300
142
Surface et volume drsquoune sphegravere en fonction du rayon
V =4
3π R
3
S=4π R2
143
Le programme laquo planetes raquo
Un programme se deacuteveloppe dans un fichier
On deacuteveloppera nos programmes dans un fichier drsquoextension c
Le programme qui calcule lrsquoaire et le volume des planegravetes agrave partir de leur rayon est deacuteveloppeacute dans le fichier planetesc
Regravegles de bonne programmation
On donnera au fichier un nom qui rappelle la fonction du programme qui y est deacuteveloppeacute
On nrsquoutilise pas les accents (planetesc au lieu de planegravetesc) ni les espaces
144
Le fichier planetesc
include ltstdiohgt
const float PI = 314
int main() float rayon_planete le rayon de la planetefloat surface_planete sa surfacefloat volume_planete son volume
entree de la donnee rayon printf(Entrez le rayon de la planete (en km) )scanf(f amprayon_planete)
calcul de la surface du volume
surface_planete = 40 PI rayon_planete rayon_planetevolume_planete = (4030) PI rayon_planete rayon_planete rayon_planete
impression des resultatsprintf(sfsn Surface de la planete surface_planete km2)printf(sfsn Volume de la planete volume_planete km3)
return 0
145
Analyse du programme laquo planetes raquo
include ltstdiohgt
Demande dinclusion du fichier stdioh
(laquo standard input ouput raquo) Linclusion de ce fichier est neacutecessaire pour pouvoir utiliser les fonctions dentreacutee-sortie
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
129
Geacuteneacuterateurs drsquointerfaces graphiques
La plupart des applications professionnelles ont une interface graphique eacutevolueacutee comprenant boutons cases agrave cocher menu deacuteroulant etc
Certains langages disposent drsquoinstructions permettant la creacuteation de ces interfaces
Certaines plateformes de deacuteveloppement proposent mecircme des outils graphiques et de gestion de code qui permettent au programmeur non expeacuterimenteacute de deacutevelopper facilement ce type drsquointerfaces (citons delphi visual basic visual C++ jbuilder etc)
130
Champs drsquoapplications des langages
Un langage est plus ou moins bien adapteacute agrave un domaine donneacute
Certains langages sont relativement speacutecialiseacutes
(Perl traitement des chaicircnes de caractegraveres JavaScript eacutecriture de pages web interactives etc)
Drsquoautres plus ou moins geacuteneacuteralistes (C Pascal C++ Objective C Java Python etc)
131
2 Programmation impeacuterative Introduction au langage C
132
21 Les diffeacuterents paradigmes de programmation
Il existe plusieurs techniques de programmation
Impeacuterative
Fonctionnelle
Logique
Orienteacutee objets
Parallegravele
Le langage que nous allons eacutetudier le langage C appartient agrave la cateacutegorie des langages de programmation impeacuterative
133
La programmation impeacuterative
Dans ce type de programmation on manipule explicitement la meacutemoire gracircce agrave des instructions de haut niveau
Exemple
1 int n = 1 on initialise une variable nommeacutee n agrave 1
2 n = n + 1 on increacutemente n de 1
Eacutetat de la meacutemoire
Apregraves 1
Apregraves 2
134
La programmation impeacuterative
Langages embleacutematiques Pascal C Basic Fortran
Remarque dans tous les cas au niveau de la machine lrsquoexeacutecution drsquoun programme revient toujours agrave des manipulations sur la meacutemoire
135
22 Le langage C introduction
Historique
Compilateurs environnements de programmation
136
Historique du langage C
Creacuteeacute en 1972 par Denis Ritchie (2011dagger)(Bell Laboratories)
Au deacutepart pour deacutevelopper le systegraveme drsquoexploitation Unix
Aujourdrsquohui utiliseacute par une large communauteacute de programmeurs
137
Historique du langage C
Premiegravere deacutefinition rigoureuse en 1978 laquoThe C programming Language raquo par Kerniguan amp Ritchie
Aujourdrsquohui le langage est normaliseacute on parle de laquo C ANSI raquo
138
Compilateurs environnements de programmation
Il existe des compilateurs etou environnements de programmation pour tous les systegravemes drsquoexploitation
Par exemple
Sous Windows Dev-C++ (eacutediteur + compilateur + deacutebogueur) Sous Linux gcc (eacutediteur emacs + deacutebogueur ddd)
Notons que tous les environnements de programmations pour C++ et Objective C sont aussi des environnements de programmation pour C Nous utiliserons drsquoailleurs Dev-C++ qui comme son nom lrsquoindique est un environnement de programmation pour C++
139
23 Etude drsquoun programme simple en C
Objet du programme calcul de la surface et du volume des planegravetes du systegraveme Solaire
Rappels des formules
Listing du programme
Analyse deacutetailleacutee du code
140
Le systegraveme Solaire
Planegravete Image Rayon (km)
Mercure 2439
Veacutenus 6050
Terre 6378
Mars 3387
141
Le systegraveme Solaire
Jupiter 71400
Saturne 60000
Uranus 26150
Neptune 24300
142
Surface et volume drsquoune sphegravere en fonction du rayon
V =4
3π R
3
S=4π R2
143
Le programme laquo planetes raquo
Un programme se deacuteveloppe dans un fichier
On deacuteveloppera nos programmes dans un fichier drsquoextension c
Le programme qui calcule lrsquoaire et le volume des planegravetes agrave partir de leur rayon est deacuteveloppeacute dans le fichier planetesc
Regravegles de bonne programmation
On donnera au fichier un nom qui rappelle la fonction du programme qui y est deacuteveloppeacute
On nrsquoutilise pas les accents (planetesc au lieu de planegravetesc) ni les espaces
144
Le fichier planetesc
include ltstdiohgt
const float PI = 314
int main() float rayon_planete le rayon de la planetefloat surface_planete sa surfacefloat volume_planete son volume
entree de la donnee rayon printf(Entrez le rayon de la planete (en km) )scanf(f amprayon_planete)
calcul de la surface du volume
surface_planete = 40 PI rayon_planete rayon_planetevolume_planete = (4030) PI rayon_planete rayon_planete rayon_planete
impression des resultatsprintf(sfsn Surface de la planete surface_planete km2)printf(sfsn Volume de la planete volume_planete km3)
return 0
145
Analyse du programme laquo planetes raquo
include ltstdiohgt
Demande dinclusion du fichier stdioh
(laquo standard input ouput raquo) Linclusion de ce fichier est neacutecessaire pour pouvoir utiliser les fonctions dentreacutee-sortie
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
130
Champs drsquoapplications des langages
Un langage est plus ou moins bien adapteacute agrave un domaine donneacute
Certains langages sont relativement speacutecialiseacutes
(Perl traitement des chaicircnes de caractegraveres JavaScript eacutecriture de pages web interactives etc)
Drsquoautres plus ou moins geacuteneacuteralistes (C Pascal C++ Objective C Java Python etc)
131
2 Programmation impeacuterative Introduction au langage C
132
21 Les diffeacuterents paradigmes de programmation
Il existe plusieurs techniques de programmation
Impeacuterative
Fonctionnelle
Logique
Orienteacutee objets
Parallegravele
Le langage que nous allons eacutetudier le langage C appartient agrave la cateacutegorie des langages de programmation impeacuterative
133
La programmation impeacuterative
Dans ce type de programmation on manipule explicitement la meacutemoire gracircce agrave des instructions de haut niveau
Exemple
1 int n = 1 on initialise une variable nommeacutee n agrave 1
2 n = n + 1 on increacutemente n de 1
Eacutetat de la meacutemoire
Apregraves 1
Apregraves 2
134
La programmation impeacuterative
Langages embleacutematiques Pascal C Basic Fortran
Remarque dans tous les cas au niveau de la machine lrsquoexeacutecution drsquoun programme revient toujours agrave des manipulations sur la meacutemoire
135
22 Le langage C introduction
Historique
Compilateurs environnements de programmation
136
Historique du langage C
Creacuteeacute en 1972 par Denis Ritchie (2011dagger)(Bell Laboratories)
Au deacutepart pour deacutevelopper le systegraveme drsquoexploitation Unix
Aujourdrsquohui utiliseacute par une large communauteacute de programmeurs
137
Historique du langage C
Premiegravere deacutefinition rigoureuse en 1978 laquoThe C programming Language raquo par Kerniguan amp Ritchie
Aujourdrsquohui le langage est normaliseacute on parle de laquo C ANSI raquo
138
Compilateurs environnements de programmation
Il existe des compilateurs etou environnements de programmation pour tous les systegravemes drsquoexploitation
Par exemple
Sous Windows Dev-C++ (eacutediteur + compilateur + deacutebogueur) Sous Linux gcc (eacutediteur emacs + deacutebogueur ddd)
Notons que tous les environnements de programmations pour C++ et Objective C sont aussi des environnements de programmation pour C Nous utiliserons drsquoailleurs Dev-C++ qui comme son nom lrsquoindique est un environnement de programmation pour C++
139
23 Etude drsquoun programme simple en C
Objet du programme calcul de la surface et du volume des planegravetes du systegraveme Solaire
Rappels des formules
Listing du programme
Analyse deacutetailleacutee du code
140
Le systegraveme Solaire
Planegravete Image Rayon (km)
Mercure 2439
Veacutenus 6050
Terre 6378
Mars 3387
141
Le systegraveme Solaire
Jupiter 71400
Saturne 60000
Uranus 26150
Neptune 24300
142
Surface et volume drsquoune sphegravere en fonction du rayon
V =4
3π R
3
S=4π R2
143
Le programme laquo planetes raquo
Un programme se deacuteveloppe dans un fichier
On deacuteveloppera nos programmes dans un fichier drsquoextension c
Le programme qui calcule lrsquoaire et le volume des planegravetes agrave partir de leur rayon est deacuteveloppeacute dans le fichier planetesc
Regravegles de bonne programmation
On donnera au fichier un nom qui rappelle la fonction du programme qui y est deacuteveloppeacute
On nrsquoutilise pas les accents (planetesc au lieu de planegravetesc) ni les espaces
144
Le fichier planetesc
include ltstdiohgt
const float PI = 314
int main() float rayon_planete le rayon de la planetefloat surface_planete sa surfacefloat volume_planete son volume
entree de la donnee rayon printf(Entrez le rayon de la planete (en km) )scanf(f amprayon_planete)
calcul de la surface du volume
surface_planete = 40 PI rayon_planete rayon_planetevolume_planete = (4030) PI rayon_planete rayon_planete rayon_planete
impression des resultatsprintf(sfsn Surface de la planete surface_planete km2)printf(sfsn Volume de la planete volume_planete km3)
return 0
145
Analyse du programme laquo planetes raquo
include ltstdiohgt
Demande dinclusion du fichier stdioh
(laquo standard input ouput raquo) Linclusion de ce fichier est neacutecessaire pour pouvoir utiliser les fonctions dentreacutee-sortie
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
131
2 Programmation impeacuterative Introduction au langage C
132
21 Les diffeacuterents paradigmes de programmation
Il existe plusieurs techniques de programmation
Impeacuterative
Fonctionnelle
Logique
Orienteacutee objets
Parallegravele
Le langage que nous allons eacutetudier le langage C appartient agrave la cateacutegorie des langages de programmation impeacuterative
133
La programmation impeacuterative
Dans ce type de programmation on manipule explicitement la meacutemoire gracircce agrave des instructions de haut niveau
Exemple
1 int n = 1 on initialise une variable nommeacutee n agrave 1
2 n = n + 1 on increacutemente n de 1
Eacutetat de la meacutemoire
Apregraves 1
Apregraves 2
134
La programmation impeacuterative
Langages embleacutematiques Pascal C Basic Fortran
Remarque dans tous les cas au niveau de la machine lrsquoexeacutecution drsquoun programme revient toujours agrave des manipulations sur la meacutemoire
135
22 Le langage C introduction
Historique
Compilateurs environnements de programmation
136
Historique du langage C
Creacuteeacute en 1972 par Denis Ritchie (2011dagger)(Bell Laboratories)
Au deacutepart pour deacutevelopper le systegraveme drsquoexploitation Unix
Aujourdrsquohui utiliseacute par une large communauteacute de programmeurs
137
Historique du langage C
Premiegravere deacutefinition rigoureuse en 1978 laquoThe C programming Language raquo par Kerniguan amp Ritchie
Aujourdrsquohui le langage est normaliseacute on parle de laquo C ANSI raquo
138
Compilateurs environnements de programmation
Il existe des compilateurs etou environnements de programmation pour tous les systegravemes drsquoexploitation
Par exemple
Sous Windows Dev-C++ (eacutediteur + compilateur + deacutebogueur) Sous Linux gcc (eacutediteur emacs + deacutebogueur ddd)
Notons que tous les environnements de programmations pour C++ et Objective C sont aussi des environnements de programmation pour C Nous utiliserons drsquoailleurs Dev-C++ qui comme son nom lrsquoindique est un environnement de programmation pour C++
139
23 Etude drsquoun programme simple en C
Objet du programme calcul de la surface et du volume des planegravetes du systegraveme Solaire
Rappels des formules
Listing du programme
Analyse deacutetailleacutee du code
140
Le systegraveme Solaire
Planegravete Image Rayon (km)
Mercure 2439
Veacutenus 6050
Terre 6378
Mars 3387
141
Le systegraveme Solaire
Jupiter 71400
Saturne 60000
Uranus 26150
Neptune 24300
142
Surface et volume drsquoune sphegravere en fonction du rayon
V =4
3π R
3
S=4π R2
143
Le programme laquo planetes raquo
Un programme se deacuteveloppe dans un fichier
On deacuteveloppera nos programmes dans un fichier drsquoextension c
Le programme qui calcule lrsquoaire et le volume des planegravetes agrave partir de leur rayon est deacuteveloppeacute dans le fichier planetesc
Regravegles de bonne programmation
On donnera au fichier un nom qui rappelle la fonction du programme qui y est deacuteveloppeacute
On nrsquoutilise pas les accents (planetesc au lieu de planegravetesc) ni les espaces
144
Le fichier planetesc
include ltstdiohgt
const float PI = 314
int main() float rayon_planete le rayon de la planetefloat surface_planete sa surfacefloat volume_planete son volume
entree de la donnee rayon printf(Entrez le rayon de la planete (en km) )scanf(f amprayon_planete)
calcul de la surface du volume
surface_planete = 40 PI rayon_planete rayon_planetevolume_planete = (4030) PI rayon_planete rayon_planete rayon_planete
impression des resultatsprintf(sfsn Surface de la planete surface_planete km2)printf(sfsn Volume de la planete volume_planete km3)
return 0
145
Analyse du programme laquo planetes raquo
include ltstdiohgt
Demande dinclusion du fichier stdioh
(laquo standard input ouput raquo) Linclusion de ce fichier est neacutecessaire pour pouvoir utiliser les fonctions dentreacutee-sortie
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
132
21 Les diffeacuterents paradigmes de programmation
Il existe plusieurs techniques de programmation
Impeacuterative
Fonctionnelle
Logique
Orienteacutee objets
Parallegravele
Le langage que nous allons eacutetudier le langage C appartient agrave la cateacutegorie des langages de programmation impeacuterative
133
La programmation impeacuterative
Dans ce type de programmation on manipule explicitement la meacutemoire gracircce agrave des instructions de haut niveau
Exemple
1 int n = 1 on initialise une variable nommeacutee n agrave 1
2 n = n + 1 on increacutemente n de 1
Eacutetat de la meacutemoire
Apregraves 1
Apregraves 2
134
La programmation impeacuterative
Langages embleacutematiques Pascal C Basic Fortran
Remarque dans tous les cas au niveau de la machine lrsquoexeacutecution drsquoun programme revient toujours agrave des manipulations sur la meacutemoire
135
22 Le langage C introduction
Historique
Compilateurs environnements de programmation
136
Historique du langage C
Creacuteeacute en 1972 par Denis Ritchie (2011dagger)(Bell Laboratories)
Au deacutepart pour deacutevelopper le systegraveme drsquoexploitation Unix
Aujourdrsquohui utiliseacute par une large communauteacute de programmeurs
137
Historique du langage C
Premiegravere deacutefinition rigoureuse en 1978 laquoThe C programming Language raquo par Kerniguan amp Ritchie
Aujourdrsquohui le langage est normaliseacute on parle de laquo C ANSI raquo
138
Compilateurs environnements de programmation
Il existe des compilateurs etou environnements de programmation pour tous les systegravemes drsquoexploitation
Par exemple
Sous Windows Dev-C++ (eacutediteur + compilateur + deacutebogueur) Sous Linux gcc (eacutediteur emacs + deacutebogueur ddd)
Notons que tous les environnements de programmations pour C++ et Objective C sont aussi des environnements de programmation pour C Nous utiliserons drsquoailleurs Dev-C++ qui comme son nom lrsquoindique est un environnement de programmation pour C++
139
23 Etude drsquoun programme simple en C
Objet du programme calcul de la surface et du volume des planegravetes du systegraveme Solaire
Rappels des formules
Listing du programme
Analyse deacutetailleacutee du code
140
Le systegraveme Solaire
Planegravete Image Rayon (km)
Mercure 2439
Veacutenus 6050
Terre 6378
Mars 3387
141
Le systegraveme Solaire
Jupiter 71400
Saturne 60000
Uranus 26150
Neptune 24300
142
Surface et volume drsquoune sphegravere en fonction du rayon
V =4
3π R
3
S=4π R2
143
Le programme laquo planetes raquo
Un programme se deacuteveloppe dans un fichier
On deacuteveloppera nos programmes dans un fichier drsquoextension c
Le programme qui calcule lrsquoaire et le volume des planegravetes agrave partir de leur rayon est deacuteveloppeacute dans le fichier planetesc
Regravegles de bonne programmation
On donnera au fichier un nom qui rappelle la fonction du programme qui y est deacuteveloppeacute
On nrsquoutilise pas les accents (planetesc au lieu de planegravetesc) ni les espaces
144
Le fichier planetesc
include ltstdiohgt
const float PI = 314
int main() float rayon_planete le rayon de la planetefloat surface_planete sa surfacefloat volume_planete son volume
entree de la donnee rayon printf(Entrez le rayon de la planete (en km) )scanf(f amprayon_planete)
calcul de la surface du volume
surface_planete = 40 PI rayon_planete rayon_planetevolume_planete = (4030) PI rayon_planete rayon_planete rayon_planete
impression des resultatsprintf(sfsn Surface de la planete surface_planete km2)printf(sfsn Volume de la planete volume_planete km3)
return 0
145
Analyse du programme laquo planetes raquo
include ltstdiohgt
Demande dinclusion du fichier stdioh
(laquo standard input ouput raquo) Linclusion de ce fichier est neacutecessaire pour pouvoir utiliser les fonctions dentreacutee-sortie
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
133
La programmation impeacuterative
Dans ce type de programmation on manipule explicitement la meacutemoire gracircce agrave des instructions de haut niveau
Exemple
1 int n = 1 on initialise une variable nommeacutee n agrave 1
2 n = n + 1 on increacutemente n de 1
Eacutetat de la meacutemoire
Apregraves 1
Apregraves 2
134
La programmation impeacuterative
Langages embleacutematiques Pascal C Basic Fortran
Remarque dans tous les cas au niveau de la machine lrsquoexeacutecution drsquoun programme revient toujours agrave des manipulations sur la meacutemoire
135
22 Le langage C introduction
Historique
Compilateurs environnements de programmation
136
Historique du langage C
Creacuteeacute en 1972 par Denis Ritchie (2011dagger)(Bell Laboratories)
Au deacutepart pour deacutevelopper le systegraveme drsquoexploitation Unix
Aujourdrsquohui utiliseacute par une large communauteacute de programmeurs
137
Historique du langage C
Premiegravere deacutefinition rigoureuse en 1978 laquoThe C programming Language raquo par Kerniguan amp Ritchie
Aujourdrsquohui le langage est normaliseacute on parle de laquo C ANSI raquo
138
Compilateurs environnements de programmation
Il existe des compilateurs etou environnements de programmation pour tous les systegravemes drsquoexploitation
Par exemple
Sous Windows Dev-C++ (eacutediteur + compilateur + deacutebogueur) Sous Linux gcc (eacutediteur emacs + deacutebogueur ddd)
Notons que tous les environnements de programmations pour C++ et Objective C sont aussi des environnements de programmation pour C Nous utiliserons drsquoailleurs Dev-C++ qui comme son nom lrsquoindique est un environnement de programmation pour C++
139
23 Etude drsquoun programme simple en C
Objet du programme calcul de la surface et du volume des planegravetes du systegraveme Solaire
Rappels des formules
Listing du programme
Analyse deacutetailleacutee du code
140
Le systegraveme Solaire
Planegravete Image Rayon (km)
Mercure 2439
Veacutenus 6050
Terre 6378
Mars 3387
141
Le systegraveme Solaire
Jupiter 71400
Saturne 60000
Uranus 26150
Neptune 24300
142
Surface et volume drsquoune sphegravere en fonction du rayon
V =4
3π R
3
S=4π R2
143
Le programme laquo planetes raquo
Un programme se deacuteveloppe dans un fichier
On deacuteveloppera nos programmes dans un fichier drsquoextension c
Le programme qui calcule lrsquoaire et le volume des planegravetes agrave partir de leur rayon est deacuteveloppeacute dans le fichier planetesc
Regravegles de bonne programmation
On donnera au fichier un nom qui rappelle la fonction du programme qui y est deacuteveloppeacute
On nrsquoutilise pas les accents (planetesc au lieu de planegravetesc) ni les espaces
144
Le fichier planetesc
include ltstdiohgt
const float PI = 314
int main() float rayon_planete le rayon de la planetefloat surface_planete sa surfacefloat volume_planete son volume
entree de la donnee rayon printf(Entrez le rayon de la planete (en km) )scanf(f amprayon_planete)
calcul de la surface du volume
surface_planete = 40 PI rayon_planete rayon_planetevolume_planete = (4030) PI rayon_planete rayon_planete rayon_planete
impression des resultatsprintf(sfsn Surface de la planete surface_planete km2)printf(sfsn Volume de la planete volume_planete km3)
return 0
145
Analyse du programme laquo planetes raquo
include ltstdiohgt
Demande dinclusion du fichier stdioh
(laquo standard input ouput raquo) Linclusion de ce fichier est neacutecessaire pour pouvoir utiliser les fonctions dentreacutee-sortie
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
134
La programmation impeacuterative
Langages embleacutematiques Pascal C Basic Fortran
Remarque dans tous les cas au niveau de la machine lrsquoexeacutecution drsquoun programme revient toujours agrave des manipulations sur la meacutemoire
135
22 Le langage C introduction
Historique
Compilateurs environnements de programmation
136
Historique du langage C
Creacuteeacute en 1972 par Denis Ritchie (2011dagger)(Bell Laboratories)
Au deacutepart pour deacutevelopper le systegraveme drsquoexploitation Unix
Aujourdrsquohui utiliseacute par une large communauteacute de programmeurs
137
Historique du langage C
Premiegravere deacutefinition rigoureuse en 1978 laquoThe C programming Language raquo par Kerniguan amp Ritchie
Aujourdrsquohui le langage est normaliseacute on parle de laquo C ANSI raquo
138
Compilateurs environnements de programmation
Il existe des compilateurs etou environnements de programmation pour tous les systegravemes drsquoexploitation
Par exemple
Sous Windows Dev-C++ (eacutediteur + compilateur + deacutebogueur) Sous Linux gcc (eacutediteur emacs + deacutebogueur ddd)
Notons que tous les environnements de programmations pour C++ et Objective C sont aussi des environnements de programmation pour C Nous utiliserons drsquoailleurs Dev-C++ qui comme son nom lrsquoindique est un environnement de programmation pour C++
139
23 Etude drsquoun programme simple en C
Objet du programme calcul de la surface et du volume des planegravetes du systegraveme Solaire
Rappels des formules
Listing du programme
Analyse deacutetailleacutee du code
140
Le systegraveme Solaire
Planegravete Image Rayon (km)
Mercure 2439
Veacutenus 6050
Terre 6378
Mars 3387
141
Le systegraveme Solaire
Jupiter 71400
Saturne 60000
Uranus 26150
Neptune 24300
142
Surface et volume drsquoune sphegravere en fonction du rayon
V =4
3π R
3
S=4π R2
143
Le programme laquo planetes raquo
Un programme se deacuteveloppe dans un fichier
On deacuteveloppera nos programmes dans un fichier drsquoextension c
Le programme qui calcule lrsquoaire et le volume des planegravetes agrave partir de leur rayon est deacuteveloppeacute dans le fichier planetesc
Regravegles de bonne programmation
On donnera au fichier un nom qui rappelle la fonction du programme qui y est deacuteveloppeacute
On nrsquoutilise pas les accents (planetesc au lieu de planegravetesc) ni les espaces
144
Le fichier planetesc
include ltstdiohgt
const float PI = 314
int main() float rayon_planete le rayon de la planetefloat surface_planete sa surfacefloat volume_planete son volume
entree de la donnee rayon printf(Entrez le rayon de la planete (en km) )scanf(f amprayon_planete)
calcul de la surface du volume
surface_planete = 40 PI rayon_planete rayon_planetevolume_planete = (4030) PI rayon_planete rayon_planete rayon_planete
impression des resultatsprintf(sfsn Surface de la planete surface_planete km2)printf(sfsn Volume de la planete volume_planete km3)
return 0
145
Analyse du programme laquo planetes raquo
include ltstdiohgt
Demande dinclusion du fichier stdioh
(laquo standard input ouput raquo) Linclusion de ce fichier est neacutecessaire pour pouvoir utiliser les fonctions dentreacutee-sortie
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
135
22 Le langage C introduction
Historique
Compilateurs environnements de programmation
136
Historique du langage C
Creacuteeacute en 1972 par Denis Ritchie (2011dagger)(Bell Laboratories)
Au deacutepart pour deacutevelopper le systegraveme drsquoexploitation Unix
Aujourdrsquohui utiliseacute par une large communauteacute de programmeurs
137
Historique du langage C
Premiegravere deacutefinition rigoureuse en 1978 laquoThe C programming Language raquo par Kerniguan amp Ritchie
Aujourdrsquohui le langage est normaliseacute on parle de laquo C ANSI raquo
138
Compilateurs environnements de programmation
Il existe des compilateurs etou environnements de programmation pour tous les systegravemes drsquoexploitation
Par exemple
Sous Windows Dev-C++ (eacutediteur + compilateur + deacutebogueur) Sous Linux gcc (eacutediteur emacs + deacutebogueur ddd)
Notons que tous les environnements de programmations pour C++ et Objective C sont aussi des environnements de programmation pour C Nous utiliserons drsquoailleurs Dev-C++ qui comme son nom lrsquoindique est un environnement de programmation pour C++
139
23 Etude drsquoun programme simple en C
Objet du programme calcul de la surface et du volume des planegravetes du systegraveme Solaire
Rappels des formules
Listing du programme
Analyse deacutetailleacutee du code
140
Le systegraveme Solaire
Planegravete Image Rayon (km)
Mercure 2439
Veacutenus 6050
Terre 6378
Mars 3387
141
Le systegraveme Solaire
Jupiter 71400
Saturne 60000
Uranus 26150
Neptune 24300
142
Surface et volume drsquoune sphegravere en fonction du rayon
V =4
3π R
3
S=4π R2
143
Le programme laquo planetes raquo
Un programme se deacuteveloppe dans un fichier
On deacuteveloppera nos programmes dans un fichier drsquoextension c
Le programme qui calcule lrsquoaire et le volume des planegravetes agrave partir de leur rayon est deacuteveloppeacute dans le fichier planetesc
Regravegles de bonne programmation
On donnera au fichier un nom qui rappelle la fonction du programme qui y est deacuteveloppeacute
On nrsquoutilise pas les accents (planetesc au lieu de planegravetesc) ni les espaces
144
Le fichier planetesc
include ltstdiohgt
const float PI = 314
int main() float rayon_planete le rayon de la planetefloat surface_planete sa surfacefloat volume_planete son volume
entree de la donnee rayon printf(Entrez le rayon de la planete (en km) )scanf(f amprayon_planete)
calcul de la surface du volume
surface_planete = 40 PI rayon_planete rayon_planetevolume_planete = (4030) PI rayon_planete rayon_planete rayon_planete
impression des resultatsprintf(sfsn Surface de la planete surface_planete km2)printf(sfsn Volume de la planete volume_planete km3)
return 0
145
Analyse du programme laquo planetes raquo
include ltstdiohgt
Demande dinclusion du fichier stdioh
(laquo standard input ouput raquo) Linclusion de ce fichier est neacutecessaire pour pouvoir utiliser les fonctions dentreacutee-sortie
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
136
Historique du langage C
Creacuteeacute en 1972 par Denis Ritchie (2011dagger)(Bell Laboratories)
Au deacutepart pour deacutevelopper le systegraveme drsquoexploitation Unix
Aujourdrsquohui utiliseacute par une large communauteacute de programmeurs
137
Historique du langage C
Premiegravere deacutefinition rigoureuse en 1978 laquoThe C programming Language raquo par Kerniguan amp Ritchie
Aujourdrsquohui le langage est normaliseacute on parle de laquo C ANSI raquo
138
Compilateurs environnements de programmation
Il existe des compilateurs etou environnements de programmation pour tous les systegravemes drsquoexploitation
Par exemple
Sous Windows Dev-C++ (eacutediteur + compilateur + deacutebogueur) Sous Linux gcc (eacutediteur emacs + deacutebogueur ddd)
Notons que tous les environnements de programmations pour C++ et Objective C sont aussi des environnements de programmation pour C Nous utiliserons drsquoailleurs Dev-C++ qui comme son nom lrsquoindique est un environnement de programmation pour C++
139
23 Etude drsquoun programme simple en C
Objet du programme calcul de la surface et du volume des planegravetes du systegraveme Solaire
Rappels des formules
Listing du programme
Analyse deacutetailleacutee du code
140
Le systegraveme Solaire
Planegravete Image Rayon (km)
Mercure 2439
Veacutenus 6050
Terre 6378
Mars 3387
141
Le systegraveme Solaire
Jupiter 71400
Saturne 60000
Uranus 26150
Neptune 24300
142
Surface et volume drsquoune sphegravere en fonction du rayon
V =4
3π R
3
S=4π R2
143
Le programme laquo planetes raquo
Un programme se deacuteveloppe dans un fichier
On deacuteveloppera nos programmes dans un fichier drsquoextension c
Le programme qui calcule lrsquoaire et le volume des planegravetes agrave partir de leur rayon est deacuteveloppeacute dans le fichier planetesc
Regravegles de bonne programmation
On donnera au fichier un nom qui rappelle la fonction du programme qui y est deacuteveloppeacute
On nrsquoutilise pas les accents (planetesc au lieu de planegravetesc) ni les espaces
144
Le fichier planetesc
include ltstdiohgt
const float PI = 314
int main() float rayon_planete le rayon de la planetefloat surface_planete sa surfacefloat volume_planete son volume
entree de la donnee rayon printf(Entrez le rayon de la planete (en km) )scanf(f amprayon_planete)
calcul de la surface du volume
surface_planete = 40 PI rayon_planete rayon_planetevolume_planete = (4030) PI rayon_planete rayon_planete rayon_planete
impression des resultatsprintf(sfsn Surface de la planete surface_planete km2)printf(sfsn Volume de la planete volume_planete km3)
return 0
145
Analyse du programme laquo planetes raquo
include ltstdiohgt
Demande dinclusion du fichier stdioh
(laquo standard input ouput raquo) Linclusion de ce fichier est neacutecessaire pour pouvoir utiliser les fonctions dentreacutee-sortie
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
137
Historique du langage C
Premiegravere deacutefinition rigoureuse en 1978 laquoThe C programming Language raquo par Kerniguan amp Ritchie
Aujourdrsquohui le langage est normaliseacute on parle de laquo C ANSI raquo
138
Compilateurs environnements de programmation
Il existe des compilateurs etou environnements de programmation pour tous les systegravemes drsquoexploitation
Par exemple
Sous Windows Dev-C++ (eacutediteur + compilateur + deacutebogueur) Sous Linux gcc (eacutediteur emacs + deacutebogueur ddd)
Notons que tous les environnements de programmations pour C++ et Objective C sont aussi des environnements de programmation pour C Nous utiliserons drsquoailleurs Dev-C++ qui comme son nom lrsquoindique est un environnement de programmation pour C++
139
23 Etude drsquoun programme simple en C
Objet du programme calcul de la surface et du volume des planegravetes du systegraveme Solaire
Rappels des formules
Listing du programme
Analyse deacutetailleacutee du code
140
Le systegraveme Solaire
Planegravete Image Rayon (km)
Mercure 2439
Veacutenus 6050
Terre 6378
Mars 3387
141
Le systegraveme Solaire
Jupiter 71400
Saturne 60000
Uranus 26150
Neptune 24300
142
Surface et volume drsquoune sphegravere en fonction du rayon
V =4
3π R
3
S=4π R2
143
Le programme laquo planetes raquo
Un programme se deacuteveloppe dans un fichier
On deacuteveloppera nos programmes dans un fichier drsquoextension c
Le programme qui calcule lrsquoaire et le volume des planegravetes agrave partir de leur rayon est deacuteveloppeacute dans le fichier planetesc
Regravegles de bonne programmation
On donnera au fichier un nom qui rappelle la fonction du programme qui y est deacuteveloppeacute
On nrsquoutilise pas les accents (planetesc au lieu de planegravetesc) ni les espaces
144
Le fichier planetesc
include ltstdiohgt
const float PI = 314
int main() float rayon_planete le rayon de la planetefloat surface_planete sa surfacefloat volume_planete son volume
entree de la donnee rayon printf(Entrez le rayon de la planete (en km) )scanf(f amprayon_planete)
calcul de la surface du volume
surface_planete = 40 PI rayon_planete rayon_planetevolume_planete = (4030) PI rayon_planete rayon_planete rayon_planete
impression des resultatsprintf(sfsn Surface de la planete surface_planete km2)printf(sfsn Volume de la planete volume_planete km3)
return 0
145
Analyse du programme laquo planetes raquo
include ltstdiohgt
Demande dinclusion du fichier stdioh
(laquo standard input ouput raquo) Linclusion de ce fichier est neacutecessaire pour pouvoir utiliser les fonctions dentreacutee-sortie
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
138
Compilateurs environnements de programmation
Il existe des compilateurs etou environnements de programmation pour tous les systegravemes drsquoexploitation
Par exemple
Sous Windows Dev-C++ (eacutediteur + compilateur + deacutebogueur) Sous Linux gcc (eacutediteur emacs + deacutebogueur ddd)
Notons que tous les environnements de programmations pour C++ et Objective C sont aussi des environnements de programmation pour C Nous utiliserons drsquoailleurs Dev-C++ qui comme son nom lrsquoindique est un environnement de programmation pour C++
139
23 Etude drsquoun programme simple en C
Objet du programme calcul de la surface et du volume des planegravetes du systegraveme Solaire
Rappels des formules
Listing du programme
Analyse deacutetailleacutee du code
140
Le systegraveme Solaire
Planegravete Image Rayon (km)
Mercure 2439
Veacutenus 6050
Terre 6378
Mars 3387
141
Le systegraveme Solaire
Jupiter 71400
Saturne 60000
Uranus 26150
Neptune 24300
142
Surface et volume drsquoune sphegravere en fonction du rayon
V =4
3π R
3
S=4π R2
143
Le programme laquo planetes raquo
Un programme se deacuteveloppe dans un fichier
On deacuteveloppera nos programmes dans un fichier drsquoextension c
Le programme qui calcule lrsquoaire et le volume des planegravetes agrave partir de leur rayon est deacuteveloppeacute dans le fichier planetesc
Regravegles de bonne programmation
On donnera au fichier un nom qui rappelle la fonction du programme qui y est deacuteveloppeacute
On nrsquoutilise pas les accents (planetesc au lieu de planegravetesc) ni les espaces
144
Le fichier planetesc
include ltstdiohgt
const float PI = 314
int main() float rayon_planete le rayon de la planetefloat surface_planete sa surfacefloat volume_planete son volume
entree de la donnee rayon printf(Entrez le rayon de la planete (en km) )scanf(f amprayon_planete)
calcul de la surface du volume
surface_planete = 40 PI rayon_planete rayon_planetevolume_planete = (4030) PI rayon_planete rayon_planete rayon_planete
impression des resultatsprintf(sfsn Surface de la planete surface_planete km2)printf(sfsn Volume de la planete volume_planete km3)
return 0
145
Analyse du programme laquo planetes raquo
include ltstdiohgt
Demande dinclusion du fichier stdioh
(laquo standard input ouput raquo) Linclusion de ce fichier est neacutecessaire pour pouvoir utiliser les fonctions dentreacutee-sortie
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
139
23 Etude drsquoun programme simple en C
Objet du programme calcul de la surface et du volume des planegravetes du systegraveme Solaire
Rappels des formules
Listing du programme
Analyse deacutetailleacutee du code
140
Le systegraveme Solaire
Planegravete Image Rayon (km)
Mercure 2439
Veacutenus 6050
Terre 6378
Mars 3387
141
Le systegraveme Solaire
Jupiter 71400
Saturne 60000
Uranus 26150
Neptune 24300
142
Surface et volume drsquoune sphegravere en fonction du rayon
V =4
3π R
3
S=4π R2
143
Le programme laquo planetes raquo
Un programme se deacuteveloppe dans un fichier
On deacuteveloppera nos programmes dans un fichier drsquoextension c
Le programme qui calcule lrsquoaire et le volume des planegravetes agrave partir de leur rayon est deacuteveloppeacute dans le fichier planetesc
Regravegles de bonne programmation
On donnera au fichier un nom qui rappelle la fonction du programme qui y est deacuteveloppeacute
On nrsquoutilise pas les accents (planetesc au lieu de planegravetesc) ni les espaces
144
Le fichier planetesc
include ltstdiohgt
const float PI = 314
int main() float rayon_planete le rayon de la planetefloat surface_planete sa surfacefloat volume_planete son volume
entree de la donnee rayon printf(Entrez le rayon de la planete (en km) )scanf(f amprayon_planete)
calcul de la surface du volume
surface_planete = 40 PI rayon_planete rayon_planetevolume_planete = (4030) PI rayon_planete rayon_planete rayon_planete
impression des resultatsprintf(sfsn Surface de la planete surface_planete km2)printf(sfsn Volume de la planete volume_planete km3)
return 0
145
Analyse du programme laquo planetes raquo
include ltstdiohgt
Demande dinclusion du fichier stdioh
(laquo standard input ouput raquo) Linclusion de ce fichier est neacutecessaire pour pouvoir utiliser les fonctions dentreacutee-sortie
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
140
Le systegraveme Solaire
Planegravete Image Rayon (km)
Mercure 2439
Veacutenus 6050
Terre 6378
Mars 3387
141
Le systegraveme Solaire
Jupiter 71400
Saturne 60000
Uranus 26150
Neptune 24300
142
Surface et volume drsquoune sphegravere en fonction du rayon
V =4
3π R
3
S=4π R2
143
Le programme laquo planetes raquo
Un programme se deacuteveloppe dans un fichier
On deacuteveloppera nos programmes dans un fichier drsquoextension c
Le programme qui calcule lrsquoaire et le volume des planegravetes agrave partir de leur rayon est deacuteveloppeacute dans le fichier planetesc
Regravegles de bonne programmation
On donnera au fichier un nom qui rappelle la fonction du programme qui y est deacuteveloppeacute
On nrsquoutilise pas les accents (planetesc au lieu de planegravetesc) ni les espaces
144
Le fichier planetesc
include ltstdiohgt
const float PI = 314
int main() float rayon_planete le rayon de la planetefloat surface_planete sa surfacefloat volume_planete son volume
entree de la donnee rayon printf(Entrez le rayon de la planete (en km) )scanf(f amprayon_planete)
calcul de la surface du volume
surface_planete = 40 PI rayon_planete rayon_planetevolume_planete = (4030) PI rayon_planete rayon_planete rayon_planete
impression des resultatsprintf(sfsn Surface de la planete surface_planete km2)printf(sfsn Volume de la planete volume_planete km3)
return 0
145
Analyse du programme laquo planetes raquo
include ltstdiohgt
Demande dinclusion du fichier stdioh
(laquo standard input ouput raquo) Linclusion de ce fichier est neacutecessaire pour pouvoir utiliser les fonctions dentreacutee-sortie
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
141
Le systegraveme Solaire
Jupiter 71400
Saturne 60000
Uranus 26150
Neptune 24300
142
Surface et volume drsquoune sphegravere en fonction du rayon
V =4
3π R
3
S=4π R2
143
Le programme laquo planetes raquo
Un programme se deacuteveloppe dans un fichier
On deacuteveloppera nos programmes dans un fichier drsquoextension c
Le programme qui calcule lrsquoaire et le volume des planegravetes agrave partir de leur rayon est deacuteveloppeacute dans le fichier planetesc
Regravegles de bonne programmation
On donnera au fichier un nom qui rappelle la fonction du programme qui y est deacuteveloppeacute
On nrsquoutilise pas les accents (planetesc au lieu de planegravetesc) ni les espaces
144
Le fichier planetesc
include ltstdiohgt
const float PI = 314
int main() float rayon_planete le rayon de la planetefloat surface_planete sa surfacefloat volume_planete son volume
entree de la donnee rayon printf(Entrez le rayon de la planete (en km) )scanf(f amprayon_planete)
calcul de la surface du volume
surface_planete = 40 PI rayon_planete rayon_planetevolume_planete = (4030) PI rayon_planete rayon_planete rayon_planete
impression des resultatsprintf(sfsn Surface de la planete surface_planete km2)printf(sfsn Volume de la planete volume_planete km3)
return 0
145
Analyse du programme laquo planetes raquo
include ltstdiohgt
Demande dinclusion du fichier stdioh
(laquo standard input ouput raquo) Linclusion de ce fichier est neacutecessaire pour pouvoir utiliser les fonctions dentreacutee-sortie
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
142
Surface et volume drsquoune sphegravere en fonction du rayon
V =4
3π R
3
S=4π R2
143
Le programme laquo planetes raquo
Un programme se deacuteveloppe dans un fichier
On deacuteveloppera nos programmes dans un fichier drsquoextension c
Le programme qui calcule lrsquoaire et le volume des planegravetes agrave partir de leur rayon est deacuteveloppeacute dans le fichier planetesc
Regravegles de bonne programmation
On donnera au fichier un nom qui rappelle la fonction du programme qui y est deacuteveloppeacute
On nrsquoutilise pas les accents (planetesc au lieu de planegravetesc) ni les espaces
144
Le fichier planetesc
include ltstdiohgt
const float PI = 314
int main() float rayon_planete le rayon de la planetefloat surface_planete sa surfacefloat volume_planete son volume
entree de la donnee rayon printf(Entrez le rayon de la planete (en km) )scanf(f amprayon_planete)
calcul de la surface du volume
surface_planete = 40 PI rayon_planete rayon_planetevolume_planete = (4030) PI rayon_planete rayon_planete rayon_planete
impression des resultatsprintf(sfsn Surface de la planete surface_planete km2)printf(sfsn Volume de la planete volume_planete km3)
return 0
145
Analyse du programme laquo planetes raquo
include ltstdiohgt
Demande dinclusion du fichier stdioh
(laquo standard input ouput raquo) Linclusion de ce fichier est neacutecessaire pour pouvoir utiliser les fonctions dentreacutee-sortie
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
143
Le programme laquo planetes raquo
Un programme se deacuteveloppe dans un fichier
On deacuteveloppera nos programmes dans un fichier drsquoextension c
Le programme qui calcule lrsquoaire et le volume des planegravetes agrave partir de leur rayon est deacuteveloppeacute dans le fichier planetesc
Regravegles de bonne programmation
On donnera au fichier un nom qui rappelle la fonction du programme qui y est deacuteveloppeacute
On nrsquoutilise pas les accents (planetesc au lieu de planegravetesc) ni les espaces
144
Le fichier planetesc
include ltstdiohgt
const float PI = 314
int main() float rayon_planete le rayon de la planetefloat surface_planete sa surfacefloat volume_planete son volume
entree de la donnee rayon printf(Entrez le rayon de la planete (en km) )scanf(f amprayon_planete)
calcul de la surface du volume
surface_planete = 40 PI rayon_planete rayon_planetevolume_planete = (4030) PI rayon_planete rayon_planete rayon_planete
impression des resultatsprintf(sfsn Surface de la planete surface_planete km2)printf(sfsn Volume de la planete volume_planete km3)
return 0
145
Analyse du programme laquo planetes raquo
include ltstdiohgt
Demande dinclusion du fichier stdioh
(laquo standard input ouput raquo) Linclusion de ce fichier est neacutecessaire pour pouvoir utiliser les fonctions dentreacutee-sortie
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
144
Le fichier planetesc
include ltstdiohgt
const float PI = 314
int main() float rayon_planete le rayon de la planetefloat surface_planete sa surfacefloat volume_planete son volume
entree de la donnee rayon printf(Entrez le rayon de la planete (en km) )scanf(f amprayon_planete)
calcul de la surface du volume
surface_planete = 40 PI rayon_planete rayon_planetevolume_planete = (4030) PI rayon_planete rayon_planete rayon_planete
impression des resultatsprintf(sfsn Surface de la planete surface_planete km2)printf(sfsn Volume de la planete volume_planete km3)
return 0
145
Analyse du programme laquo planetes raquo
include ltstdiohgt
Demande dinclusion du fichier stdioh
(laquo standard input ouput raquo) Linclusion de ce fichier est neacutecessaire pour pouvoir utiliser les fonctions dentreacutee-sortie
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
145
Analyse du programme laquo planetes raquo
include ltstdiohgt
Demande dinclusion du fichier stdioh
(laquo standard input ouput raquo) Linclusion de ce fichier est neacutecessaire pour pouvoir utiliser les fonctions dentreacutee-sortie
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
146
Analyse du programme laquo planetes raquo
const float PI = 314
Deacuteclaration drsquoune constante symbolique PI eacutegale agrave 314 de type float (nombre reacuteel)
Dans le code la reacutefeacuterence agrave PI plutocirct qursquoagrave la valeur 314 permet une modification facile de celle-ci (une ligne agrave modifier contre autant de lignes ougrave apparaicirctrait une valeur laquo en dur raquo)
Regravegle de bonne programmation utiliser des constantes symboliques pour les valeurs qui changent rarement (constantes physiques eacuteconomiques (ex taux de tva) etc)
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
147
Analyse du programme laquo planetes raquo
int main()
main est la fonction principale en C Elle est exeacutecuteacutee quand on lance le programme
Une fonction passe une liste drsquoarguments (ici la liste est vide) et renvoie une valeur (ici un entier -int comme integer-)
Le code de la fonction est donneacute entre laccolade ouvrante et la fermante correspondante
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
148
Analyse du programme laquo planetes raquo
float rayon_planete le rayon de la planete
float surface_planete sa surface
float volume_planete son volume
Deacuteclaration de trois variables qui meacutemorisent le rayon la surface et le volume de la planegravete Un commentaire indique ce que meacutemorisent les variables
Regravegles de bonne programmation Donner des noms aux variables qui correspondent agrave lrsquoinformation
qursquoelles meacutemorisent Commenter le programme pour qursquoil soit plus compreacutehensible
En C on a droit aux commentaires sur une ligne avec laquo raquo et aux commentaires sur plusieurs lignes encadreacutes par laquo raquo Les commentaires sont ignoreacutes par le compilateur Ils ne srsquoadressent qursquoaux lecteurs du programme
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
149
Analyse du programme laquo planetes raquo
entree de la donnee rayon
printf(Entrez le rayon de la planete (en km) )
scanf(f amprayon_planete)
Lutilisateur doit entrer le rayon de la planegravete au clavier Une phrase agrave leacutecran lui indique la donneacutee attendue (fonction printf)
La donneacutee est alors tapeacutee sur le clavier est reacutecupeacutereacutee dans la variable rayon_planete gracircce agrave la fonction scanf (le nom de la variable doit ecirctre preacuteceacutedeacute du caractegravere amp)
Le premier argument de la fonction scanf f indique que la donneacutee attendue est un nombre reacuteel
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
150
Analyse du programme laquo planetes raquo
calcul
de la surface du volume
surface_planete = 40 PI rayon_planete
rayon_planete
volume_planete = (4030) PI rayon_planete
rayon_planete rayon_planete
Calcul de la surface et du volume et meacutemorisation dans les variables correspondantes
est le signe pour la multiplication et est le signe pour la division
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
151
Analyse du programme laquo planetes raquo
impression des resultats
printf(sfsn Surface de la planete
surface_planete km2)
printf(sfsn Volume de la planete
volume_planete km3)
Impression agrave leacutecran du contenu des variables surface_planete et volume_planete avec le commentaire correspondant
Le premier argument de printf (sfsn) indique la nature des donneacutees agrave imprimer (paramegravetres suivants) sindique limpression dune chaicircne de caractegraveres f dun nombre reacuteel n indique un saut de ligne apregraves impression
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
152
Analyse du programme laquo planetes raquo
return 0
La fonction main doit renvoyer un entier Ici 0 (code correspondant en geacuteneacuteral agrave une exeacutecution sans erreur)
On ferme laccolade correspondant agrave la fonction main
Regravegle de bonne programmation les accolades ouvrantes et fermantes se correspondant doivent ecirctre au mecircme niveau drsquoindentation Le code drsquoune fonction est en retrait par rapport aux accolades correspondantes
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
153
24 Organisation du code en C
En C le code se reacutepartit en deux types de fichiers les h (en-tecircte) et les c (code source)
Les fichiers h contiennent uniquement du code deacuteclaratif Ce code est utilisable dans le fichier c qui lrsquoinclut (include) Par exemple les fonctions drsquoentreacuteessorties printf et scanf sont utilisables dans planetesc car le fichier planetesc inclut le fichier stdioh qui contient les deacutefinitions de ces fonctions
Avant la compilation le preacute-processeur expanse dans les fichiers c le code des fichiers h inclus
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
154
25 Compilation exeacutecution
Le programme deacuteveloppeacute dans le fichier planetesc est eacutecrit en langage C Pour que ce programme devienne effectif il faut le transformer en un programme exeacutecutable compreacutehensible par le processeur
On compile le programme planetesc en utilisant lrsquooption laquo Compiler raquo du menu deacuteroulant laquo Exeacutecuter raquo de Dev-C++
On exeacutecute le programme exeacutecutable geacuteneacutereacute en utilisant lrsquooption laquo Exeacutecute raquo du menu deacuteroulant laquoExeacutecuterraquo de Dev-C++
Lrsquoexeacutecutable geacuteneacutereacute de nom laquo planetesexe raquo se trouve dans le mecircme reacutepertoire que le fichier planetec
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre
155
Exeacutecution du programme
Voici le reacutesultat du programme pour la planegravete Terre