0% ont trouvé ce document utile (0 vote)
56 vues24 pages

Introduction à la programmation en Caml

Transféré par

agondanoumarius3
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
56 vues24 pages

Introduction à la programmation en Caml

Transféré par

agondanoumarius3
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Algorithmique - Programmation 1

Cours 1

Université Henri Poincaré

CESS Epinal

Automne 2008

1 / 24
Introduction

Plan

Introduction

A propos d’AP1

Quelques concepts de base

Premiers pas avec Caml

Le branchement conditionnel

Fonctions

2 / 24
Introduction

Introduction
Qu’est ce que l’informatique ?

◮ discipline très jeune


◮ discipline en constante évolution (performance des
ordinateurs multipliée par 2 tous les 18 mois, cf loi de
Moore)
◮ discipline très large (calcul, gestion, bases de données,
bureautique, réalité virtuelle, robotique, productique,
traitement de la langue, de la parole, de l’image, etc)
◮ discipline évoluant dans un contexte économique à forte
croissance
◮ discipline fortement liée aux télécommunications

3 / 24
Introduction

Introduction (suite)

Définition
Manipulation d’informations (qui constituent des modèles
numériques ou symboliques) en vue de la résolution
(automatique ou interactive) de problèmes (souvent dépendants
de données et/ou de paramètres)

4 / 24
A propos d’AP1

Plan

Introduction

A propos d’AP1

Quelques concepts de base

Premiers pas avec Caml

Le branchement conditionnel

Fonctions

5 / 24
A propos d’AP1

Objectifs du cours AP1


◮ Présentation d’un sous-domaine de l’informatique, à savoir
la programmation
→ développement d’applications
◮ Apprendre à décrire la résolution d’un problème
→ développement d’algorithmes
◮ Apprendre à résoudre un problème en utilisant des
fonctions (donnée d’entrée traitée pour produire une sortie)
→ paradigme fonctionnel
◮ Application : implantation d’algorithmes au moyen du
langage de programmation caml
→ apprendre syntaxe et sémantique d’un langage
◮ Pourquoi pas apprendre à aimer l’informatique ?

6 / 24
A propos d’AP1

Informations pratiques
◮ 10 séances de cours - TD - TP (20 heures de chaque)
◮ Supports (cours, exercices, tps) disponibles en ligne sur la
plateforme ARCHE ([Link]
◮ TPs utilisant des logiciels libres (éditeur emacs +
compilateur Ocaml) :
[Link]
[Link]
◮ Livre en ligne :
Développement d’applications avec Objective Caml
[Link]
◮ Evaluation : examen écrit + TP noté
7 / 24
Quelques concepts de base

Plan

Introduction

A propos d’AP1

Quelques concepts de base

Premiers pas avec Caml

Le branchement conditionnel

Fonctions

8 / 24
Quelques concepts de base

Programme
Définition (Programme)
[Vue symbolique] Description d’une relation fonctionnelle entre
deux ensembles (données d’entrée et résultat).

[Vue pratique] Un programme est une liste d’instructions


indiquant à un ordinateur ce qu’il doit faire (implantation d’un
algorithme dans un langage compréhensible par la machine).

◮ Construction d’un programme


◮ Validation d’un programme
◮ Transformation d’un programme (compilation)
◮ Exécution d’un programme (interprétation)

9 / 24
Quelques concepts de base

Calcul et valeur

Définition (Calcul)
Application automatique de règles de transformation qui
produisent une valeur finale (le résultat) à partir de valeurs
initiales (les données).

Définition (Valeur)
Objet informatique qui ne peut plus être transformé par le
mécanisme de calcul courant (donc définition relative à la notion
de calcul).

10 / 24
Quelques concepts de base

Nom et affectation

Définition (Nom)
Symbole (parfois appelé identifiant), défini par le programmeur,
et dénotant une valeur.
NB: l’orthographe d’un nom est soumise à des règles strictes
dépendantes du langage de programmation utilisé.

Définition (Affectation)
Association entre un nom et une valeur.
NB: dans de nombreux langages, l’affectation se fait au moyen
de l’opérateur =.x

11 / 24
Quelques concepts de base

Type

Définition (Type)
Un type est défini par :
◮ un ensemble de valeurs

◮ un ensemble d’opérations sur ces valeurs

◮ une expression de type (nom du type)

◮ Exemples : entiers, caractères, réels, etc.


◮ Caml est un langage dit fortement typé, car toute donnée
manipulée a un certain type.
◮ NB: la notion de type permet de vérifier que les données
manipulées sont bien celles attendues par le programme.

12 / 24
Quelques concepts de base

Inférence de type

Définition (Inférence de type)


Déduction du type d’une expression à partir d’un ensemble de
règles.

◮ Permet de détecter des instructions erronées (par exemple,


somme d’un entier et d’un caractère).

13 / 24
Quelques concepts de base

Evaluation d’un programme

Définition (Evaluation)
Calcul de la valeur des expressions (≈ instructions) contenues
dans un programme.

NB: En Caml, l’évaluation est basée sur la notion de réécriture,


i.e. le remplacement successif des noms par les valeurs
auxquelles ils sont liés, et des opérations par leur résultat.

14 / 24
Premiers pas avec Caml

Plan

Introduction

A propos d’AP1

Quelques concepts de base

Premiers pas avec Caml

Le branchement conditionnel

Fonctions

15 / 24
Premiers pas avec Caml

Premiers pas avec Caml


◮ Caml vs Ocaml (paradigme fonctionnel + paradigme objet)
◮ Interprétation vs compilation (Toplevel de caml)
◮ En mode interprété, Caml attend la saisie d’expressions et
retourne pour chaque expression, sa valeur (évaluation de
l’expression)
◮ L’évaluation est provoquée en ajoutant à la fin de
l’expression le suffixe “;;”
◮ Exemple :
# 2 + 3;;
- : int = 5

16 / 24
Premiers pas avec Caml

Les types de base en Caml : les entiers


Valeurs: Nombres entiers relatifs ( Z)
NB: Ensemble de taille finie (capacitée maximale, cf
représentation en mémoire)
Notation Caml: int
Opérateurs: + - * /
Règles de typage:
• Si op est une opération sur les entiers, et que a et b sont
des entiers, alors a op b est un entier
• Si a et b sont des entiers, alors a < b est de type booléen
(valeur de vérité)
Evaluation:
Règles de calcul usuelles sur les opérateurs

17 / 24
Premiers pas avec Caml

Les types de base en Caml : les décimaux


Valeurs: Nombres réels (IR)
NB: Ensemble de taille finie (capacitée maximale, cf
représentation en mémoire)
Notation Caml: float, opérateurs suffixés par un point
Opérateurs: +. -. *. /.
Règles de typage:
• Si op est une opération sur les réels, et que a et b sont
des réels, alors a op b est un réel
• Si a et b sont des réels, alors a < b est de type booléen
(valeur de vérité)
Evaluation:
Règles de calcul usuelles sur les opérateurs

18 / 24
Premiers pas avec Caml

Les types de base en Caml : les booléens


Valeurs: {true, false}
Notation Caml: bool
Opérateurs: && (et logique), or (ou logique),
not (non logique), = (égalité 6= affectation)
Règles de typage:
• Si op est une opération sur les booléens, et que a et b
sont des booléens, alors a op b est un booléen
• Si a et b sont des booléens, alors a = b est de type
booléen
Evaluation:
Règles de calcul usuelles sur les opérateurs

19 / 24
Le branchement conditionnel

Plan

Introduction

A propos d’AP1

Quelques concepts de base

Premiers pas avec Caml

Le branchement conditionnel

Fonctions

20 / 24
Le branchement conditionnel

Condition (if then else)


• Notation Caml:

if <expression booléenne>
then
<expression>
else
<expression>

Règles de typage:
• L’expression est bien typée si l’expression derrière le if est
de type bool, et les expressions derrière then et else sont
de même type
• Le type de l’expression est celui des expressions qui suiv-
ent le then ou le else
21 / 24
Le branchement conditionnel

Condition (if then else, suite)

Evaluation:
Une expression conditionnelle a une valeur, elle peut donc
être utilisée là où on met des valeurs

(if b then e1 else e2) = e1 si b vaut true


(if b then e1 else e2) = e2 si b vaut false

Exemples:
• (Symbole de Kroneker) if i = j then 1 else 0
• (Valeur absolue) if a < 0 then -a else a

22 / 24
Fonctions

Plan

Introduction

A propos d’AP1

Quelques concepts de base

Premiers pas avec Caml

Le branchement conditionnel

Fonctions

23 / 24
Fonctions

Fonctions
Caml offre une notation proche des mathématiques :

mathématiques caml
f :D→R let f = function
y 7−→ expr (y ) y -> expr(y);;

carre : IN → IN
x 7−→ x.x

let carre = function x -> x * x ;;


carre 2;;
carre (2+3);;
(carre 2)+3;;

24 / 24

Vous aimerez peut-être aussi