Principes des langages de programmation
INF 321
Eric Goubault
14 juin 2012
2
Table des mati`eres
1 Introduction 7
2 Programmation imp´erative 11
2.1 Variables et types . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2 Codage des nombres . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.3 Expressions arithm´etiques . . . . . . . . . . . . . . . . . . . . . . 14
2.4 Instructions.............................. 14
2.5 S´emantique ´el´ementaire . . . . . . . . . . . . . . . . . . . . . . . 14
2.6 Lestableaux ............................. 16
2.7 S´emantique des r´ef´erences . . . . . . . . . . . . . . . . . . . . . . 17
2.8 La equence d’instructions . . . . . . . . . . . . . . . . . . . . . . 18
2.9 Conditionnelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.10 It´eration - la boucle . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.11Fonctions ............................... 21
2.12 Passage d’arguments aux fonctions . . . . . . . . . . . . . . . . . 21
2.13 Variables locales, variables globales . . . . . . . . . . . . . . . . . 24
2.14 R´ef´erences, pointeurs, objets . . . . . . . . . . . . . . . . . . . . 26
2.15 Un peu de syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3 Structures de donn´ees 35
3.1 Types produits, ou enregistrements . . . . . . . . . . . . . . . . . 35
3.2 Le ramasse-miette, ou GC . . . . . . . . . . . . . . . . . . . . . . 37
3.3 Enregistrements et appels de fonctions . . . . . . . . . . . . . . . 38
3.4 Lestableaux ............................. 39
3.5 Egalit´e physique et ´egalit´e structurelle . . . . . . . . . . . . . . . 42
3.6 Partage ................................ 43
3.7 Typessomme............................. 45
3.8 Types de donn´ees dynamiques . . . . . . . . . . . . . . . . . . . . 48
3.9 Les listes lin´eaires . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.10 Application aux tables de hachage... . . . . . . . . . . . . . . . . 51
3.11 Listes et partage . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3
4TABLE DES MATI `
ERES
4 Programmation orient´ee objet, en JAVA 57
4.1 Statique versus dynamique . . . . . . . . . . . . . . . . . . . . . 57
4.2 Types somme, revisit´es . . . . . . . . . . . . . . . . . . . . . . . . 60
4.3 H´eritage................................ 61
4.4 Exceptions .............................. 63
4.5 Interfaces ............................... 65
4.6 H´eritage et typage . . . . . . . . . . . . . . . . . . . . . . . . . . 65
4.7 Classes abstraites . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4.8 Paquetages .............................. 67
4.9 Collections .............................. 68
4.10 Les objets en (O)Caml . . . . . . . . . . . . . . . . . . . . . . . . 68
5 ecursivit´e, calculabilit´e et complexit´e 69
5.1 La r´ecursivit´e dans les langages de programmation . . . . . . . . 69
5.2 Piledappel.............................. 70
5.3 R´ecurrence structurelle . . . . . . . . . . . . . . . . . . . . . . . . 74
5.4 Partage en emoire et ecursivit´e . . . . . . . . . . . . . . . . . . 76
5.5 Les fonctions ecursives primitives . . . . . . . . . . . . . . . . . 78
5.6 Fonctions r´ecursives partielles . . . . . . . . . . . . . . . . . . . . 80
5.7 Pour aller plus loin . . . . . . . . . . . . . . . . . . . . . . . . . . 81
5.8 Quelques ´el´ements en complexit´e . . . . . . . . . . . . . . . . . . 82
6 emantique d´enotationnelle 89
6.1 S´emantique ´el´ementaire . . . . . . . . . . . . . . . . . . . . . . . 89
6.2 Probl`emes de points fixes . . . . . . . . . . . . . . . . . . . . . . 91
6.3 S´emantique de la boucle while ................... 95
6.4 S´emantique des fonctions ecursives . . . . . . . . . . . . . . . . . 96
6.5 Continuie et calculabilit´e . . . . . . . . . . . . . . . . . . . . . . 97
7 Logique, mod`eles et preuve 99
7.1 Syntaxe ................................ 99
7.2 S´emantique ..............................100
7.3 D´ecidabilit´e des formules logiques . . . . . . . . . . . . . . . . . . 102
7.4 Pour aller plus loin... . . . . . . . . . . . . . . . . . . . . . . . . . 103
7.5 Un peu de th´eorie de la emonstration . . . . . . . . . . . . . . . 103
8 Validation et preuve de programmes 109
8.1 La validation, pour quoi faire ? . . . . . . . . . . . . . . . . . . . 109
8.2 Preuve `a la Hoare . . . . . . . . . . . . . . . . . . . . . . . . . . 111
9 Typage, et programmation fonctionnelle 117
9.1 PCF (non typ´e) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
9.2 S´emantique op´erationnelle . . . . . . . . . . . . . . . . . . . . . . 118
9.3 Ordres d’´evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . 121
9.4 Appel par nom, appel par valeur et appel par n´ecessit´e . . . . . . 121
9.5 Combinateurs de point fixe . . . . . . . . . . . . . . . . . . . . . 123
TABLE DES MATI `
ERES 5
9.6 Typage ................................ 125
9.7 Th´eorie de la emonstration et typage . . . . . . . . . . . . . . . 128
9.8 Pour aller plus loin . . . . . . . . . . . . . . . . . . . . . . . . . . 131
10 Programmation r´eactive synchrone 133
10.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
10.2Lustre .................................133
10.3 Calcul d’horloges . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
10.4 Pour aller plus loin... . . . . . . . . . . . . . . . . . . . . . . . . . 138
10.5 R´eseaux de Kahn et emantique de Lustre . . . . . . . . . . . . . 138
1 / 140 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 !