Introdution à la programmation
Nousavonsvu,danslehapitrepréédent, equ'estunalgorithmeetunertainnombrede
façonspourexéuterlesalgorithmes
hh
àlamainii
.Nousallonsvoir,dansehapitre,omment utiliser laprogrammation pourexéuter lesalgorithmes, ommenton met en plae elle-i surunordinateurmoderne(interprétationet ompilation).Nousdonneronsunpremierexemplede
programmesoure,enlangageC.NousdérironsquelquesompilateursCetommentmettreen
plaenotreprogrammesureux-i.
2.1 Notions théoriques
2.1.1 Qu'est-e que la programmation?
Un ordinateur, et qu'importepourl'instantune dénition préise,peutêtreutilisédansdes
butsdivers:pourfairetournerdesjeux('estsouventdenosjourslapremièreprisedeontat,
pourles jeunes tout au moins), pour utiliserdes logiiels de bureautique (traitement de texte,
tableur...),pouravoiraèsàInternet...Cependantils'agitd'ativitésspéialisées.L'ativitéla
plus versatile, elle pour laquelle les ordinateurs ont été onçus à l'origine, est d'eetuer des
aluls omplexesàdérire. Lafaçondedérire esaluls (dansunsenstrès large)estl'objet
delaprogrammation.
Laprogrammationestlafaçond'indiqueràl'ordinateurlesalulsqu'ildoit
eetuer.
Laprogrammationpermet,entreautres,laoneptiondeslogiiels.D'unefaçonplusmodeste,
ellepermet deréerdesprogrammesdealulspourlesquelsiln'existe pasdelogiiels.
2.1.2 Façons de programmer
Surlespremiersordinateurs,laprogrammationonsistaitàreâbleràhaquefoisentre elles
un ertain nombre d'unités. Heureusement pour elui qui programme, le programmeur en
l'ourrene,lafaçon(physique)deprogrammeraévolué.
Suivant une idée de John von Neumann de la n des années 1940, le programme est
maintenantune donnée ommeles autres,entrée dans lamémoirevivede l'ordinateuromme
lesautresdonnées.
Ceprogrammepeutêtreéritenlangage mahine,quiestdiretementompréhensiblepar
leproesseur. L'inonvénientmajeur dulangagemahineest quele programmeurdoitfaireun
trèsgroseortdeodage.Onautiliséensuitedeslangagessymboliques,plusompréhensibles
parleprogrammeur,qu'ilfauttraduireenlangagemahineàunertainmoment.Ce futl'idée
d'AlanTuringaudébutdesannées1950.
Onapendantlongtempsdistinguerdeuxtypesdelangagessymboliques(denosjours,lahié-
rarhieestdevenuebeauoupplusne):leslangagesd'assemblage,trèsprohesdeslangages
mahinemaisutilisantdesmnémoniquestrèsutilespourleprogrammeur,etleslangagesévo-
luésplusprohesdelafaçonderaisonnerdesprogrammeurs,letraduteurdelangagefaisantle
travailpourserapproherdulangagemahine.
Les langages évoluéssontinterprétés ou ompilés. L'interprétation onsisteà traduire
ligneàligneleprogrammeau momentoùonlelane;leserreurs sontrepéréesrapidement,on
aune forme d'interativitéintéressante.Laompilation onsiste,dans une premièreétape, à
traduirele programmepuis, dansune seonde étape, àl'exéuter.On perdl'interativitémais
l'exéutionest plusrapide.
2.1.3 Les grandes étapes de la ompilation
De nos jours, on eetue la programmationde lafaçon suivante. On ommene par érire
un programme,dit plus exatementprogramme soure,grâe à unéditeur detexte, dans
unlangage partiulier,dit langage de programmation (auxrèglessyntaxiquestrès strites,
ontrairementauxlangues naturelles[ainsiappelésparlesinformatiiensparoppositionaux
langages deprogrammation℄ tels quele françaisoul'anglais). Cependante langage est quand
mêmesusammentprohedel'anglaisdebase(impérialismeanglo-saxonoblige!).
soureenquelquehosedeplusompréhensibleparl'ordinateur,quiestappeléprogrammeob-
jet.Leprogrammeurpeutonsidérerleprogrammeobjetommequelquehosedemagique,e
n'est passon problème. On en apprend plussur les programmes objetsdans le ours de Sys-
tèmed'exploitation,danslequelonvoitlaoneptionatuelle('est-à-direelled'aujourd'hui
qui n'est ni elle d'hier, ni ertainement elle de demain) des ordinateurs et la struture d'un
programmeobjet.
Ce programme objet se présente ommeun hier d'une nouvellesorte (parrapport ànos
hierstexte, maintenant bien onnus), dit hier binaire ('est en faitomme elaque l'on
appelletout hierqui n'estpasunhiertexte,'est-à-direquinedonneriendebien ompré-
hensiblelorsqu'ilestluaveunéditeurdetexte)maisquiest(plusoumoins)exéutable :son
appelsurlalignedeommande(dansleasd'uninterpréteurdeommandestextuel;pardouble
lisur sonine dans le asd'un interpréteurde ommandegraphique) délenhe l'exéution
deequi estdéritdansleprogramme(soure).
2.1.4 Diversité des langages de programmation
De même qu'il existe de nombreuses langues naturelles, il existe de nombreux langages de
programmation.Leslangagessediérenientlesuns desautres (outreleursrèglessyntaxiques,
biensûr)parlefaitqu'ilssontplusappropriéspourteloutelbut.
Le langage PASCAL, parexemple, aété onçu en 1971omme unlangaged'initiation àla
programmation et permettantd'exprimer simplement les divers algorithmes. Ce ours de pro-
grammationsera ependant illustréparunautre langage,le langage C pour deuxraisons :le
langage C est le plusutilisé dans les entreprises, mais ei est une mauvaise raison; la raison
prinipale est que si le ours de programmation struturéeserait bien illustré par PASCAL, il
n'en serapas demême duours de programmation orientée objet, pour lequellelangage C++
estdevenuelaréférene.LelangageC++utiliselelangageCommenoyau,nousavonsintérêt
àonnaîtrelelangageC.
2.1.5 Diversité des ompilateurs
Leompilateurdoittraduireunprogrammesoure,éritdansunlangagedeprogrammation
donné,enunlangageobjet.Ilyadonaumoinsunompilateurparlangagedeprogrammation.
Leprogrammeobjetdépenddusystèmeinformatiquesurlequelonsetrouve,essentiellementdu
miroproesseurmaisaussidusystèmed'exploitation.Iln'estdonpassusantdeherherun
ompilateurC,ilfautunompilateurCadaptéàteloutelsystèmeinformatique.Deplus,puisque
lesompilateurssontsouventdesprogiiels(logiielsonçuspardesentreprisesommerialeset
misàjourrégulièrement),ilexistesouventplusieursompilateurspourunlangagedonnésurun
2.2 Un premier exemple de programme C
Nousallonsérireunprogrammepermettantd'aher`Bonjour'surl'érandumoniteur.
Premièreétape:érireleprogrammesoure.-Leprogrammesoures'éritgrâeàunéditeurde
texte,n'importelequel.Érivonsdonleprogrammesuivant(survotreéditeurdetextepréféré):
#inlude <stdio.h>
void main(void)
{
printf("Bonjour");
}
Deuxièmeétape: sauvegarderleprogramme.- Une bonne habitude onsiste à sauvegarder les
programmes(soure)avantdepasseràlaompilation.Enregistronsdonleprogrammei-dessus,
parexemplesouslenomessai..
L'extension`'esttraditionnellepourlesprogrammessouredulangageC.
Troisièmeétape:laompilation.- La façonde faire dépend duompilateur utilisé. Nous y re-
viendrons plus loin lors de la desription de quelques ompilateurs. Si tout se passe bien,un
nouveauhiersetrouvedanslerépertoiredontlenomdépendduompilateur.
Quatrièmeétape:exéutionduprogramme.-Cenouveauhierestengénéralunexéutableet,
enlelançant,ondevraitvoirapparaître`Bonjour'àl'éran.
2.3 Quelques ompilateurs
LeompilateurderéférenealongtempsestleompilateurGNUg.
2.3.1 Le ompilateur GNU C sous Unix
Tout système d'exploitation Unix est livré ave un ompilateur C ar 'est le langage de
programmation système favori de Unix, d'ailleurs réé pour lui. Plus préisémentla première
versiond'Unixfutériteen1969enlangaged'assemblagedumini-ordinateurPDP7;lelangage
CfutonçuparDennisRithieàpeuprèsenmêmetempseten1973,DennisRithieet Ken
ThompsonontrééritlenoyauUnixenlangageC,equientlepremiersystèmed'exploitation
ànepasêtreéritenlangaged'assemblage.
2.3.1.1 Installation
Nous n'expliquerons pasii omment installerle ompilateur Csous Unix puisque,pourla
raisonque nousvenonsd'indiquer,il s'installeenmême tempsquelesystèmed'exploitation (à
de rares exeptions près, à savoirlorsqu'on ne veut vraiment ni programmer, ni ompiler des
logiielsdistribuéssouslaformedehiersoure,e quin'estpasnotreas).
L'installation d'Unix peut être une opération déliate. Nous supposerons ii que Linux est
installésur unompatible PC.
2.3.1.2 Premierexemple
Voyonsommentmettreenplaenotrepremierexemplepermettantd'aher`Bonjour'.
Premièreétape:érireetsauvegarderleprogramme.- Le programme s'érit ave votreéditeur
detextefavorisousUnix.Parexempleaveemas,onlanel'éditeur,àpartirdurépertoiresur
lequelonveutsauvegarderleprogramme,enérivant(ensupposantqueleprompteursoit $):
$ emas bonjour. &
Érivonsalorsletextevui-dessusdanslafenêtrequiapparaît,sauvegardons(grâeaumenu
déroulant)etquittons(grâeaumenudéroulantouenfaisantCTRL-X CTRL-C,lafaçondequitter
emas).
Deuxièmeétape:laompilation.-Pourompilere programme, toujoursàpartirdumême ré-
pertoire,onérit:
$ bonjour.
ou:
$ g bonjour.
ommeonveut.
La ommande orrespond àCompilateur C (enfait àC Compiler), laommande g à
Gnu.
Ilexistealorsunnouveauhierdanslerépertoire,appelé a.out(pourAssembler Output).
Troisièmeétape:exéutionduprogramme.-Pourexéuterleprogrammeilsut defaireappel
àlui,enérivantsurlalignedeommande:
puis en appuyant sur la touhe
hh
retourii
. Normalement on doit voir apparaître e que le programmeestenséfaire,'est-à-direqu'apparaît:Bonjour$
Remarquonsqu'iln'yapasdepassageàlaligneaprèsahagedurésultat.
Quatrièmeétape:donnerunnomauprogramme.-Celapeutêtregênantd'avoirtoujourslemê-
menompourl'exéutable,surtoutsionveutenutiliserdeux.Sionveutquel'exéutables'appelle
Bonjour,parexemple,onompiledelafaçonsuivante:
$ -o Bonjour bonjour.
enutilisantleparamètre`-o'(pour`output').
2.3.2 Le ompilateur de MinGW sous Windows
MinGW, ontrationdel'anglais
hh
Minimalist Gnufor Windows
ii
, est unenvironnement
dedéveloppementminimalisted'appliations(oulogiiels)pourMirosoftWindows.
2.3.2.1 Installation
RéupérationsurInternet.-Leompilateur MinGWsetrouvesurlesite:
http://www.mingw.org
Cliquer dans le menu de navigation à gauhe de la page d'aueil sur
hh
downloadsii
pour se retrouversurlapage:https://soureforge.net/projets/mingw/files/
puisliquer sur
hh
Downloadmingw-get-setup.exe(86.5kB)ii
qu'il faut enregistrerdans leré- pertoirequevousvoulez.Exéution.-Faitesexéuterlehierréupéré.
Notezbienl'emplaementdanslequelleompilateurestplaé,emplaementproposéouelui
quevousluiindiquez,parexempledans:
hh
:\
programmes\
mingw\ ii
Modiationdelavariabled'environnementPATH .- L'exéution préédente fait presque tout
automatiquement,mais n'indique pasausystème d'exploitation l'emplaement duompilateur
g,alorsquenousavonsbesoin.
Vérions-le!Ouvonsl'invitedeommandes:sousWindows8,parexemple,liquersur
hh
Re- herherii
surlebandeaudedroite(quiapparaîteneetuantunlégermouvementdedroite à gauhesur lebord droitdel'éran tatile); érirehh
ommandeii
dans la fenêtre dereherhe (hh
appliation
ii
est par défaut, sinon il faut liquer dessus);
hh
invite de ommandes
ii
est
proposé;liquerdessus;unenouvellefenêtre (voirgurei-dessous)apparaît.
Érire `g'puisappuyersurlatouhe
hh
entréeii
.Laréponse est:hh
'g' n'est pas reonnu en tant que ommande interne ou externe, un program-me exéutable ou un fihier de ommandes.
ii
Pourremédier àela, faisonsapparaîtrel'explorateur dehiers. Un liave lebouton de
droite de la souris sur
hh
Ordinateur
ii
fait apparaîtreun menu déroulant. Double-liquer sur
hh
Propriétés
ii
.Surlafenêtrequisurgit,liquersur
hh
Paramètressystèmeavanés
ii
(Attention!
il faut détenir les droits de superutilisateur). Sur la nouvelle fenêtre, liquer sur
hh
Variables
d'environnement
ii
.Surlafenêtresuivante,liquersur
hh
Path
ii
de
hh
Variablessystème
ii
puis
sur
hh
Modier
ii
.Enfaisanttrèsattention(en'estpastrèslisible,d'unepart,et,d'autrepart,
si on détruitune partie de e qui est déjà érit, d'autresappliations ne fontionnerontplus),
ajoutonsàlan unpoint-virgule et lehemin onduisantausous-répertoire`bin' de MinGW,
soitdansl'exemplevui-dessus:
hh
;:
\
programmes\
mingw\
binii
Cliquersur`OK',enoresur`OK'pourlanouvellefenêtre,puisunetroisièmefois.
Sitoutestorret,surunenouvelleinstanedel'invitedeommandes(Attention!l'anienne
neprendpasenomptelanouvelleversiondesvariablesd'environnement),`g'devraitdonner
lieuàlaréponsesuivante`g: fatal error: not input files. Compilation terminated'.
Si en'estpasleas,ilfautreommenerenherhantlàoùons'estfourvoyé.
2.3.2.2 Premierexemple
Reprendre e qui est dit à proposdu ompilateur gsous Linux, à partque l'on utilisera
éventuellementunautreéditeurdetexte(blo-notesdeWindows,parexemple).SousWindows,
onseplaeradansunefenêtredelignedeommandes,évidemment.
2.3.3 Le ompilateur sous MaOS
2.3.3.1 Le terminal
L'analogue de l'invite de ommande de Windows s'appelle
hh
Terminalii
sous le système d'exploitationMaOSd'Apple.Beauoupd'utilisateursnel'utilisentjamais.La premièrefois qu'on veutl'utiliser, il faut aller herherette appliationdans le dossier
hh
/Appliations/Utilitairesii
.Mettezsonine danslehh
Dokii
pourl'avoirtoujoursàportéedesourisdanslasuite.Lanez-leenliquantsurl'ine.
2.3.3.2 Installationdu ompilateur g
Tapez
hh
gii
ouhh ii
dansleterminalpuissurlatouheretour.Deuxsituations peuvent seproduire:Premieras:leompilateurestdéjàinstallé.- Dans e as on voit une phraseanalogueau as
deWindows.
Deuxièmeas:leompilateurn'estpasenoreinstallé.-Dans e asunmessages'ahe,indi-
quantqu'ilfautinstallerl'appliation(gratuite)
hh
Xodeii
. Ilfautdonallertéléhargerhh
Xodeii
surhh
MaAppStoreii
2.3.3.3 Utilisationde l'éditeurde texteTextEdit
L'analogued'àlafoisl'éditeurdetexte
hh
Blo-Noteii
etdutraitementdetextehh
Wordpadii
deWindowss'appelle,sousMaOS,
hh
TextEditii
, quivientaveMaOSX.Pardéfaut, ilvapluttseomporterommeuntraitementdetexte,àla
hh
WordPadii
.Pourl'utiliserommeéditeurdetexte,hoisirdanslemenu
hh
Format>
Make Plain Textii
(ouutiliserleraourilavier`Command+Shift+T').
On peut aussi déider de e mode éditeur de texte omme mode par défaut à haque fois
qu'onlaneetteappliation:dans
hh
Preferenes
ii
,sousFormat,hoisirPlain Text.