Présentation du Cours -...

55
1.1 Présentation du Cours Objectif : Montrer que l’Informatique est un outil puissant pour résoudre des problèmes de Physique, de Mathématique, Scientifiques en général Moyens : Apprentissage des bases de la programmation impérative au travers du « langage C », langage couramment utilisé dans la communauté scientifique Organisation de l’enseignement : 10h30 de cours en 7 séances de 1h30, 12h de Tps en 8 séances de 1h30.

Transcript of Présentation du Cours -...

Page 1: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 2: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 3: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 4: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 5: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 6: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 7: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 8: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 9: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 10: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 11: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 12: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 13: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 14: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 15: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 16: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 17: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 18: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 19: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 20: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 21: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 22: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 23: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 24: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 25: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 26: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 27: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 28: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 29: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 30: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 31: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 32: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 33: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 34: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 35: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 36: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 37: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 38: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 39: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 40: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 41: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 42: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 43: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 44: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 45: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 46: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 47: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 48: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 49: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 50: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 51: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 52: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 53: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 54: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

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

Page 55: Présentation du Cours - perso.eleves.ens-rennes.frperso.eleves.ens-rennes.fr/people/Siargey.Kachanovich/TPC_notes/TP1/Cours1.pdf1.12 Evolution d'Internet DATE NUMBER OF USERS % WORLD

155

Exeacutecution du programme

Voici le reacutesultat du programme pour la planegravete Terre