Notes de Cours de l’UE HLIN101
Première partie
Algorithmique et Programmation – L1
Philippe Janssen, Michel Leclère et Sylvain Daudé
Université Montpellier
Septembre 2015
P. Janssen, M. Leclère, S. Daudé (UM - FDS) Algorithmique et Programmation – L1 09/2015 1 / 75
Organisation
8 séances de cours en Amphi. Attention 2 séances cette semaine.
16 séances de Travaux Dirigés par groupe d’une quarantaine. La
première séance de TD aura lieu la semaine prochaine (regardez EDT
sur le site de la Faculté des Sciences).
9 séances de Travaux Pratiques dans les salles informatiques par groupe
de 20. Les TP commenceront plus tard (en octobre).
Attention vous êtes affecté à un groupe de TD et serez évalué dans ce
groupe. Impossible de changer de groupe pour convenance personnelle.
Les documents
2 supports de cours. Le document distribué aujourd’hui correspond à la
première partie du cours. Le second sera distribué fin octobre. Ces 2
documents sont des copies incomplètes des diapositives projetées. Vous
devez les compléter pendant les séances de cours.
Des fiches de TD et TP qui seront distribuées en cours.
Tous ces documents, ainsi que d’autres informations utiles, sont
également disponibles sous forme électronique sur l’espace
pédagogique dans la rubrique HLIN101.
P. Janssen, M. Leclère, S. Daudé (UM - FDS) Algorithmique et Programmation – L1 09/2015 2 / 75
Modalités de Contrôle des Connaissances
Votre note à l’UE sera calculée à partir de 2 notes :
1 note d’examen
1 note de Contrôle Continu
selon la formule :
max( Note Examen , (60 * Note Examen + 40 * Note Contrôle Continu)/100 )
L’examen aura lieu mi-janvier.
Une session de rattrapage sera organisée mi-juin.
Le Contrôle Continu est composé :
d’une épreuve en amphithéâtre qui aura lieu la semaine avant les vacances
d’automne (60%)
de 2 contrôles lors des séances de TD (30 %)
du contrôle de présence et participation aux séances de TD et TP (10 %)
P. Janssen, M. Leclère, S. Daudé (UM - FDS) Algorithmique et Programmation – L1 09/2015 3 / 75
La Discipline Informatique
LInformatique est l’association d’une science et d’une technologie.
Une science, ensemble de théories, outils formels et méthodes
s’intéressant à :
la modélisation de l’information
la résolution de problèmes à l’aide d’ordinateurs,
Une technologie, consistant en la conception, la réalisation et le
maintien d’infrastructures matérielles et logicielles.
P. Janssen, M. Leclère, S. Daudé (UM - FDS) Algorithmique et Programmation – L1 09/2015 4 / 75
Positionnement du cours
La partie scientifique de ce cours :
Utilise des « modèles » qui vous sont familiers : les nombres entiers Net Z,
les nombres réels R, les booléens, les fonctions, les vecteurs et séquences
de nombres et un peu de géométrie du plan et de calcul numérique.
Un modèle étant choisi, on pose un problème. On cherche alors un
algorithme qui décrit la suite des étapes qui permet de résoudre le
problème. La machine utilisée reste abstraite.
La partie technologique de ce cours utilise les machines réelles (nos
ordinateurs) et un environnement logiciel pour traduire les algorithmes en
des fonctions (des programmes) C/C++, qu’on exécutera.
P. Janssen, M. Leclère, S. Daudé (UM - FDS) Algorithmique et Programmation – L1 09/2015 5 / 75
Algorithmique
L’algorithmique (discipline de conception des algorithmes) n’est pas une
science récente
-300 : Euclide expose une méthode de calcul pour obtenir le plus grand
diviseur de deux nombres entiers.
-300 : Algorithme qui permet de calculer la suite de nombres premiers,
attribué à Eratosthène.
...
Les algorithmes ne traitent pas que des problèmes numériques.
Algorithme de recherche de chemin dans un réseau (routier, informatique).
Algorithmes de traitement d’images.
Algorithmes de jeux.
Algorithmes génétiques qui recherchent un motif dans une longue chaîne de
caractères contenant les lettres ACGT, et représentant l’ADN.
...
P. Janssen, M. Leclère, S. Daudé (UM - FDS) Algorithmique et Programmation – L1 09/2015 6 / 75
Le langage de description de nos algorithmes n’est pas un langage de
programmation.
L’exécution des algorithmes ne nécessitent pas d’ordinateur. On
exécutera nos algorithmes sur une machine abstraite : crayon et feuille
de papier ou craie et tableau.
Attention à l’orthographe du mot « algorithme » !
Pas d’agglo, ni de rythme !
Le mot « algorithme » vient du nom du mathématicien perse du 9ième
siècle Abu Abdullah Muhammad ibn Musa al-Khwarizmi, souvent
considéré comme le « père de l’algèbre ».
P. Janssen, M. Leclère, S. Daudé (UM - FDS) Algorithmique et Programmation – L1 09/2015 7 / 75
Introduction
Objectif : résolution de problèmes sur ordinateur.
Cette résolution s’effectue en 2 étapes :
Écriture de l’algorithme : méthode permettant de calculer le résultat à
partir de la donnée du problème (sur une machine abstraite).
Écriture du programme : traduction de l’algorithme pour une machine
physique et un langage de programmation donnés.
P. Janssen, M. Leclère, S. Daudé (UM - FDS) Algorithmique et Programmation – L1 09/2015 8 / 75
Définition (Algorithme)
Un algorithme est une description finie
d’un calcul qui associe un résultat à
des données. Il est composé de 2
parties :
sa spécification indique le nom de
l’algorithme et décrit le problème
résolu par l’algorithme (la fonction
calculée par l’algorithme) :
quelles sont les données du
problème (ses paramètres) et
quel est le résultat attendu.
son corps décrit comment
l’algorithme résout le problème.
Ce calcul est écrit en langage
d’algorithme qui fournit des
opérations et objets primitifs et
des moyens de les composer.
Exemple
Algorithme : estPair
Données :a: Nombre ; aest
un nombre entier
Résultat : Booléen, true si aest
pair, false sinon.
Le résultat est :
cond( (a mod 2)=0,
true, false )
fin algorithme
P. Janssen, M. Leclère, S. Daudé (UM - FDS) Algorithmique et Programmation – L1 09/2015 9 / 75
Une fois l’algorithme écrit, on l’utilise par application à des arguments.
Définition (Appliquer un algorithme)
La syntaxe d’une application d’algorithme est celle de l’application d’une
fonction en math. Par exemple estPair(15).
La valeur d’une telle application est obtenue :
en substituant dans le corps de l’algorithme les arguments (ici 15) aux
paramètres de l’algorithme (ici a).
en évaluant l’expression obtenue à l’étape précédente; la valeur résultat est
celle de l’expression obtenue
Exemple
Exécution de estPair(15) :
Substituer 15 à adans le corps de estPair
cond( (15 mod 2)=0, true, false )
Évaluer l’expression :
15 mod 2 vaut 1, donc la condition est fausse, la valeur de l’expression
est alors la valeur du 3`
eme paramètre, c’est à dire false
Le résultat de cette exécution est false
P. Janssen, M. Leclère, S. Daudé (UM - FDS) Algorithmique et Programmation – L1 09/2015 10 / 75
Traduction dans des langages de programmation
Un algorithme peut être traduit dans plusieurs langages de programmation :
Exemple (Traduction de estPair en SCHEME)
( def ine e st Pa i r ( lambda ( a )
( i f (= ( modulo a 2) 0) # t # f ) ) )
Exemple (Traduction de estPair en CAML)
l e t es tP ai r : i n t > bool = fun
( x ) > i f x mod 2 = 0 then t ru e el se f a l s e ; ;
Exemple (Traduction de estPair en C++)
bool es tP ai r ( i n t n )
{ return
n % 2 == 0 ? t r ue : f a l s e ;
}
P. Janssen, M. Leclère, S. Daudé (UM - FDS) Algorithmique et Programmation – L1 09/2015 11 / 75
Sommaire de la première partie
1Introduction
2Le langage d’algorithme
Les types
Les expressions
Les algorithmes
3La récursivité
La récurrence
Définition récursive d’une fonction
4Un langage de programmation : C/C++
Les types de base en C/C++
Les expressions
Les algorithmes
Programme C/C++
5Les listes
Introduction
Le type Liste de Nombres
Les algorithmes sur les listes
Le type liste en C/C++
P. Janssen, M. Leclère, S. Daudé (UM - FDS) Algorithmique et Programmation – L1 09/2015 12 / 75
Le langage d’algorithme
Dans cette première partie, nous étudierons :
Définition d’un langage d’algorithme :
Quels sont les éléments de base : valeurs et opérations primitives ?
Quelles sont les règles de composition ?
Le langage de programmation qui servira à traduire et tester l’exécution
de nos algorithmes sera le langage C/C++.
P. Janssen, M. Leclère, S. Daudé (UM - FDS) Algorithmique et Programmation – L1 09/2015 13 / 75
Les types
Les objets manipulés ont un type.
Définition (Type)
Un type est défini par :
un domaine : l’ensemble des valeurs que peuvent prendre les objets du
type
un ensemble d’opérations et de fonctions qu’on peut appliquer aux
valeurs du type.
P. Janssen, M. Leclère, S. Daudé (UM - FDS) Algorithmique et Programmation – L1 09/2015 14 / 75
Type Nombre
domaine : R
opérations binaires classiques comme +, *, -, ˆ, ...
qui associent un nombre à 2 nombres.
Leur signature est : R×RR
fonctions numériques :
à un paramètre, de signature RR, comme abs, log, sin, ...
Par exemple abs :RR
x7−→ |x|
à deux paramètres, de signature R×RR, comme max, min,....
Par exemple max :R×RR
(x,y)7−le plus grand nombre parmi x et y
P. Janssen, M. Leclère, S. Daudé (UM - FDS) Algorithmique et Programmation – L1 09/2015 15 / 75
Type Nombre (suite)
Certaines opérations et fonctions ne sont définies que sur une partie des
réels, par exemple :
l’opération de division réelle : /:R×RR
les opérations de division entière :
quo :Z×ZZ
(x,y)7−le quotient de la division entière de x par y
mod :Z×ZZ
(x,y)7−le reste de la division entière de x par y
Attention 13 / 5 vaut
13 quo 5 vaut
13 mod 5 vaut
P. Janssen, M. Leclère, S. Daudé (UM - FDS) Algorithmique et Programmation – L1 09/2015 16 / 75
Type Booléen
domaine : Bool={ true, false }
opérations
et, ou :Bool ×Bool Bool
non :Bool Bool
dont la sémantique (la valeur) est définie dans la table :
abaet b a ou bnon( a)
true true true true false
true false false true false
false true false true true
false false false false true
On utilise également des opérateurs de comparaison associant un booléen à
2 nombres : =,6=, <, 6, >, >.
Leur signature est : R×RBool
Exemple : 2 >3 vaut
false
P. Janssen, M. Leclère, S. Daudé (UM - FDS) Algorithmique et Programmation – L1 09/2015 17 / 75
1 / 20 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !