Vous êtes sur la page 1sur 21

1/21 Algorithmique et programmation (Licence 1 - S2)

Algorithmique et programmation : introduction


Algorithmique et programmation (Licence 1 - S2)
2/21 Algorithmique et programmation (Licence 1 - S2)
Introduction
Base fondamentale de linformatique :
Comment faire faire des actions com-
pliques un ordinateur partir d actions
simples ?
Faire faire : il sagit dune description des actions, pas des actions elles-mmes ;
un ordinateur : lordinateur est trs bte et trs rigoureux : il faut tre prcis,
dtaill et intelligent.
3/21 Algorithmique et programmation (Licence 1 - S2)
Algorithmique ou programmation
Dnitions prliminaires :
Lalgorithmique est ltude de la faon de dcrire et dcomposer des actions/calculs
complexes en actions/calculs simples. Un algorithme est une telle dcomposition.
La programmation est ltude de la traduction des algorithme dans un cadre com-
prhensible pour un ordinateur. Un programme est donc une traduction.
4/21 Algorithmique et programmation (Licence 1 - S2)
Notes historiques
Premiers algorithmes connus : poque babylonienne (calculs commerciaux et scaux) ;
Algorithme vient dune dformation latine du nom du mathmaticien musulman
Muh
.
ammad ibn M usa al-Khwarizm (8me sicle), du nom dune province perse (ac-
tuellement plutt en Ouzbkistan).
Premire machine programmable en 1801 (mtier tisser Jacquard), notion dveloppe
ensuite par Charles Babbage.
5/21 Algorithmique et programmation (Licence 1 - S2)
Algorithmes ?
Exemples dalgorithmes ?
1. Recette de cuisine.
2. Manuel de programmation dun enregistrement sur lecteur DVD.
3. Itinraire pour aller du bureau de la scolarit la salle de TP micro 3.1.
4. Multiplication de nombres dcimaux la main .
5. ...
6/21 Algorithmique et programmation (Licence 1 - S2)
Quelques lments dalgorithmiques
1. Squentialit : descendre lescalier puis prendre droite, puis tout droit jusqu la
sortie, puis traverser la route, puis...
La squentialit permet de dcrire lxcution conscutives dinstructions.
2. Sous-programmes : prparer 250 grammes de pte brise ; regarder le produit des
deux chires sur la table de multiplication ; ...
Transformation dun bloc dinstructions en une instruction (rutilisable). Note :
usage de paramtres.
3. Test : si vous voulez de la haute dnition, choisissez un enregistrement sans perte.
4. Boucle : prendre la 4me porte droite ; mlangez jusqu obtenir une prparation
homogne ; rpter lopration pour chaque chire du nombre multiplier.
Rptition dinstructions beaucoup de fois, ou un nombre inconnu de fois.
7/21 Algorithmique et programmation (Licence 1 - S2)
Ce qui manque pour un algorithme
1. De la rigueur :
pas de justication aux actions xcution bte ;
aucune ambiguit possible ;
excution reproductible.
2. Des donnes manipuler : nombres (entiers, ottants), chanes, ...
3. Un langage strict :
le franais est naturellement ambigu...
... et beaucoup trop complexe...
... et beaucoup trop vaste.
8/21 Algorithmique et programmation (Licence 1 - S2)
Langage algorithmique
Traditionnellement, on crit les algorithmes dans un langage algorithmique (aussi appel
pseudo-code ). Cest--dire un machin formalis en simili-langage naturel. Par exemple :
lire a
affecter 0 s
pour i allant de 1 10 faire
affecter i+s s
afficher s
Le langage algorithmique est essentiellement un langage de programmation sans certains
dtails techniques utiliss par lordinateur (par exemple, les dclarations de variables).
9/21 Algorithmique et programmation (Licence 1 - S2)
Approches de lalgorithmique
Il existe plusieurs approches dans la rdaction des algorithmes (et des programmes) :
imprative, fonctionnelle, oriente objet, dclarative, ...
A savoir : toutes ces approches permettent de rsoudre les mmes problmes. Aucun nest
plus expressif quun autre. Les dirences sont donc des questions de commodits.
Dans ce cours nous prsenterons la forme classique de la programmation imprative.
10/21 Algorithmique et programmation (Licence 1 - S2)
Et les programmes ?
Langages de programmation : C, Basic, Java, Pascal, Caml, etc. et tous leurs drivs...
Plusieurs milliers de langages de programmation ont t crs.
Fonctionnalits direntes, approches direntes, capacits direntes...
Choix du C : langage impratif classique, encore largement utilis, avec de nombreux
drivs, libre.
11/21 Algorithmique et programmation (Licence 1 - S2)
C
Langage apparu en 1972 (Dennis Ritchie, Bell Labs), inspir de langages impratifs pr-
cdents (B, Algol, FORTRAN...). Initialement li un systme dexploitation, Unix.
Standardisations successives : 1978 (C K&R), 1989 (ANSI C), 1990 (C ISO), 1999
(C99).
Langage plutt bas-niveau (proche du fonctionnement de la machine), ce qui le rend :
+ multi-usage, rapide, rpandu, basique (utilis pour crer les compilateurs et extensions
dautres langages) ;
moyennement portable, peu exible (dans un sens), peu rigoureux (donc demande de
la rigueur de la part du programmeur), peu lisible.
Certains drivs de C veulent corriger ces aspects (C++), dautres langages sen inspirent
pour la syntaxe (Java).
12/21 Algorithmique et programmation (Licence 1 - S2)
Un programme en C
Un exemple de programme en C :
int main() {
#include <stdio.h>
}
return 0;
puts("Mon premier programme.");
Lecture pralable dun chier
nomm stdio.h : permet la
dclaration de la fonction puts.
principale du programme).
le corps de la fonction est entre les accolades.
terminer par un point-virgule.
Instructions : les instructions doivent se
dclaration de la fonction main (fonction
13/21 Algorithmique et programmation (Licence 1 - S2)
Compilation dition de lien
Que faire du programme C (cas des TPs sous Linux) :
int main() {
#include <stdio.h>
}
return 0;
puts("Mon premier programme.");
monprog.o
monprog
gcc c monprog.c
gcc o monprog monprog.o
monprog.c
Programme C
dition de liens :
Fichier objet : dcrit le contenu de la fonction main.
Fichier excutable : peut tre directement excut par
la machine.
Ne dit pas ce quest (ou ce que fait) puts.
Compilation (ligne de commande) :
14/21 Algorithmique et programmation (Licence 1 - S2)
Commande globale
Pour simplier, on peut faire directement lensemble compilation dition de lien en une
seule ligne :
gcc -Wall -o monprog monprog.c
gcc est le nom sous Linux du compilateur (au sens large) C.
monprog.c est le nom du chier contenant le programme (extension .c obligatoire).
-o monprog indique le nom de lexcutable crer (option -o suivie du nom du pro-
gramme).
-Wall indique que le compilateur doit acher tout ce qui lui semble bizarre sous
forme davertissement (option indispensable en TP).
Si la compilation se passe sans problme, gcc nache rien. Sinon, il est obligatoire de
regarder les messages (avertissements ou erreurs) gnrs. Comprendre ces messages et
(ventuellement) corriger leurs causes sont un objectif des TPs.
15/21 Algorithmique et programmation (Licence 1 - S2)
Excution du programme
Le chier monprog tant cr dans le rpertoire courant, on tape ./monprog suivi de la
touche entre . La rponse donne :
Mon premier programme.
16/21 Algorithmique et programmation (Licence 1 - S2)
Exemples derreurs/avertissements (1)
Programme :
int main() {
puts("Mon premier programme.");
}
Rsultat de gcc -Wall :
a.c: In function main:
a.c:2: attention : dclaration implicite de la fonction puts
a.c:3: attention : contrle a atteint la fin non void de la fonction
Deux avertissements dans la fonction main :
1. Ligne 2 : il ne connat pas la fonction puts. Cela signie que la ligne #include <stdio.h>
est manquante.
2. Ligne 3 : cet avertissement (un peu compliqu) na pas dimportance pour linstant
et peut tre ignor (cas unique). Il sera expliqu plus tard.
17/21 Algorithmique et programmation (Licence 1 - S2)
Exemples derreurs/avertissements (2)
Programme :
int main() {
putf("Mon premier programme.");
}
Rsultat de gcc -Wall :
a.c: In function main:
a.c:2: attention : dclaration implicite de la fonction putf
a.c:3: attention : contrle a atteint la fin non void de la fonction
/tmp/cc6qdDma.o(.text+0xf): In function main:
: undefined reference to putf
collect2: ld a retourn 1 code dtat dexcution
18/21 Algorithmique et programmation (Licence 1 - S2)
Deux avertissements et une erreur dans la fonction main :
1. Ligne 2 : il ne connat pas la fonction putf. Cette fonction nexiste pas.
2. Ligne 3 : comme la dernire fois, on ignore cet avertissement.
3. Lerreur est crite dans un code bizarre : en fait, cest une erreur de ldition de liens :
il ne sait pas ce quest putf. A corriger donc.
Les avertissements nempchent pas la gnration du programme mais indiquent que le
code est douteux ou bizarre. Les erreurs bloquent la gnration du programme.
19/21 Algorithmique et programmation (Licence 1 - S2)
Exemples derreurs/avertissements (3)
Autres exemples (erreurs de compilation) :
1. oubli du ; la n de puts :
a.c:5: erreur: erreur de syntaxe avant un lment lexical }
Cette erreur est donne sur la ligne suivante. Penser vrier le code qui prcde.
2. oubli de laccolade fermante } :
a.c:4: erreur: erreur de syntaxe la fin de lentre
Erreur donne sur un programme incomplet . Ce type doubli peut tre beaucoup
plus complexe trouver, do lintrt de bien prsenter son code.
3. mauvaise orthographe de main (par exemple maan) :
/usr/lib/gcc/x86_64-redhat-linux/3.4.6/../../../../lib64/crt1.o(.text+0x21): In
function _start:
: undefined reference to main
collect2: ld a retourn 1 code dtat dexcution
Un programme C complet a besoin dune fonction main pour fonctionner.
20/21 Algorithmique et programmation (Licence 1 - S2)
Objectifs du cours
1. Connatre les points principaux dun langage algorithmique.
2. Simuler lxcution dun algorithme (drouler un algorithme).
3. crire soi-mme un algorithme. Connatre certains algorithmes classiques (recherches,
tris...).
4. Connatre les bases du langage C.
5. Programmer en C.
21/21 Algorithmique et programmation (Licence 1 - S2)
Site web
Cours sur http://www.lisyc.univ-brest.fr/pages_perso/dmasse.

Vous aimerez peut-être aussi