23
Jean-Philippe PERNIN Université Stendhal Département Informatique Pédagogique Bureau I113 Mél. : [email protected] Algorithmique : Programmes et données

Jean-Philippe PERNIN Université Stendhal Département Informatique Pédagogique Bureau I113 Mél. : [email protected] Algorithmique : Programmes

Embed Size (px)

Citation preview

Page 1: Jean-Philippe PERNIN Université Stendhal Département Informatique Pédagogique Bureau I113 Mél. : Jean-Philippe.Pernin@u-grenoble3.fr Algorithmique : Programmes

Jean-Philippe PERNIN

Université StendhalDépartement Informatique Pédagogique

Bureau I113

Mél. : [email protected]

Algorithmique : Programmes et données

Page 2: Jean-Philippe PERNIN Université Stendhal Département Informatique Pédagogique Bureau I113 Mél. : Jean-Philippe.Pernin@u-grenoble3.fr Algorithmique : Programmes

Copyright - Jean-Philippe Pernin - DIP - Université Stendhal - Grenoble 3 2

L'approche algorithmique(Approche procédurale, programmation structurée)

• Origine du terme : – Al Kwarismi : mathématicien arabe (Xème siècle)

• Algorithme = Ensemble de règles opératoires définissant une suite finie d'opérations à effectuer, en vue d'obtenir la solution d'un problème donné.

• Deux activités distinctes :– 1. Conception d'un algorithme produisant le résultat

cherché

– 2. Rédaction de l'algorithme dans un langage de programmation donné (par exemple JavaScript)

Page 3: Jean-Philippe PERNIN Université Stendhal Département Informatique Pédagogique Bureau I113 Mél. : Jean-Philippe.Pernin@u-grenoble3.fr Algorithmique : Programmes

Copyright - Jean-Philippe Pernin - DIP - Université Stendhal - Grenoble 3 3

Deux étapes : conception et programmation

AFFICHER "Donne ton age"

LIRE age de l'utilisateur

SELON LE CAS

| SI l'age est inférieur ou égal à 18

| AFFICHER "Tu es jeune"

| SI l'age est entre 19 et 29

| AFFICHER "Tu es vieux"

| SINON

| AFFICHER "Tu es très vieux"

1. CONCEVOIR L'ALGORITHME

var age

age = prompt ("Quel est ton age ?", "")

if (age <= 18)

{

alert ("tu es jeune");

}

else

{

if ( (age >= 19) &&( age <=29))

{

alert ("tu es vieux" ) ;

}

else

{

alert (" tu es tres vieux") ;

}

}

2. TRADUIRE L'ALGORITHME EN

JAVASCRIPT

Page 4: Jean-Philippe PERNIN Université Stendhal Département Informatique Pédagogique Bureau I113 Mél. : Jean-Philippe.Pernin@u-grenoble3.fr Algorithmique : Programmes

Copyright - Jean-Philippe Pernin - DIP - Université Stendhal - Grenoble 3 4

Deux étapes : conception et programmation

AFFICHER "Donne ton age"

LIRE age de l'utilisateur

SELON LE CAS

| SI l'age est inférieur à 18

| AFFICHER "Tu es jeune"

| SI l'age est entre 19 et 29

| AFFICHER "Tu es vieux"

| SINON

| AFFICHER "Tu es très vieux"

var age

age = prompt ("Quel est ton age ?", "")

if (age < 18)

{

alert ("tu es jeune");

}

else

{

if ( (age >= 19) &&( age <=29))

{

alert ("tu es vieux" ) ;

}

else

{

alert (" tu es tres vieux") ;

}

}

ERREUR DE CONCEPTION

La conception d'un algorithme juste est une activité plus

complexe que la maîtrise d'un langage de programmation

Page 5: Jean-Philippe PERNIN Université Stendhal Département Informatique Pédagogique Bureau I113 Mél. : Jean-Philippe.Pernin@u-grenoble3.fr Algorithmique : Programmes

Copyright - Jean-Philippe Pernin - DIP - Université Stendhal - Grenoble 3 5

Algorithme : une première définition

• Combinaison d'actions qui agissent sur des données

– Qu'est ce qu'une action ? • Le concept d'action élémentaire

• Le concept d'action complexe : l'analyse descendante

– Comment combiner les actions ?• la composition séquentielle

• la composition conditionnelle

• la composition alternative

• la composition itérative

– Comment décrire les données ?• les types simples de données

• les types complexes de données

Page 6: Jean-Philippe PERNIN Université Stendhal Département Informatique Pédagogique Bureau I113 Mél. : Jean-Philippe.Pernin@u-grenoble3.fr Algorithmique : Programmes

Copyright - Jean-Philippe Pernin - DIP - Université Stendhal - Grenoble 3 6

Ex: Recette de Gâteau glacé Forêt noire, sauce à la vanille et au kirsch

1. Dans une casserole, faire bouillir le lait, la crème et les gousses de vanille

2. Faire mousser les jaunes d'oeufs avec le sucre.

3. Ajouter le mélange bouillant tout en remuant.

4. Remettre la sauce dans la casserole

5. Remuer sans arrêt jusqu'au point d'ébullition (ne pas bouillir).

6. Laisser refroidir,

7. Enlever les gousses de vanille

8. Parfumer au kirsch.

Ingrédients:

2 dl de lait

2 dl de crème

2 gousses de vanille

4 jaunes d'oeufs

60 g de sucre

un peu de kirsch.

Description des données (ingrédients) à manipuler

Le résultat : transformation des données initiales

Traitement

Description de la marche à suivre pour obtenir le

résultat

Page 7: Jean-Philippe PERNIN Université Stendhal Département Informatique Pédagogique Bureau I113 Mél. : Jean-Philippe.Pernin@u-grenoble3.fr Algorithmique : Programmes

Copyright - Jean-Philippe Pernin - DIP - Université Stendhal - Grenoble 3 7

Programme = séquence d'actions

• Le programme principal décrit la séquence d'actions qui vont être exécutées.

• Le programme est écrit uniquement avec les termes ou les conventions autorisées dans le langage.

Début Programme

Action1

Action2

....

Fin Programme

Page 8: Jean-Philippe PERNIN Université Stendhal Département Informatique Pédagogique Bureau I113 Mél. : Jean-Philippe.Pernin@u-grenoble3.fr Algorithmique : Programmes

Copyright - Jean-Philippe Pernin - DIP - Université Stendhal - Grenoble 3 8

Action nommée ou procédure

• Afin de rendre le programme plus lisible on peut nommer une séquence d'actions (ou procédure)

• Cette procédure peut être appelée depuis le programme principal ou depuis d'autres procédures

Début Programme

appeler Action1

Action2

....

Fin Programme

procédure Action1

....

Fin Procédure

Page 9: Jean-Philippe PERNIN Université Stendhal Département Informatique Pédagogique Bureau I113 Mél. : Jean-Philippe.Pernin@u-grenoble3.fr Algorithmique : Programmes

Copyright - Jean-Philippe Pernin - DIP - Université Stendhal - Grenoble 3 9

Structure d'un programme

• Programme = DONNEES + TRAITEMENTS

• Un programme doit toujours modifier des données sinon il ne fait rien

Programme

Description des données:

Description des traitementsdébut

......

......

......

......fin

Page 10: Jean-Philippe PERNIN Université Stendhal Département Informatique Pédagogique Bureau I113 Mél. : Jean-Philippe.Pernin@u-grenoble3.fr Algorithmique : Programmes

Copyright - Jean-Philippe Pernin - DIP - Université Stendhal - Grenoble 3 10

Comment décrire les données ?

• Une donnée est désignée par un nom – EX: lait, oeuf, farine, roue, nombre de roues, age,

taille, ...

• Une donnée est caractérisée par une valeur :– Ex: Taille : 170 cm– DateNaissance : 21 Janvier 1975– Age : 22 ans– Prénom : Nestor

• Une donnée peut être constante ou variable.

Page 11: Jean-Philippe PERNIN Université Stendhal Département Informatique Pédagogique Bureau I113 Mél. : Jean-Philippe.Pernin@u-grenoble3.fr Algorithmique : Programmes

Copyright - Jean-Philippe Pernin - DIP - Université Stendhal - Grenoble 3 11

Données constantes ou variables ?

• CONSTANTES : DateNaissance, Prénom– Donnée dont la valeur ne varie jamais pendant le

déroulement des traitements

• VARIABLES : Age, Taille– Donnée dont la valeur peut varier pendant le

déroulement des traitements

Page 12: Jean-Philippe PERNIN Université Stendhal Département Informatique Pédagogique Bureau I113 Mél. : Jean-Philippe.Pernin@u-grenoble3.fr Algorithmique : Programmes

Copyright - Jean-Philippe Pernin - DIP - Université Stendhal - Grenoble 3 12

Déclaration de constantes en Javascript

// Déclaration des constantes

Pi = 3.14; // valeur de la constante Pi

NbDeRoues = 4; // nombre de roues

Nom de la constanteNi blanc, ni caractères spéciaux (é,è,à,...)Sensible au majuscules (case-sensitive)

Valeur de la constante

Pi = 3.14 ;

Symbole =Symbole ;

termine chaque déclaration

Page 13: Jean-Philippe PERNIN Université Stendhal Département Informatique Pédagogique Bureau I113 Mél. : Jean-Philippe.Pernin@u-grenoble3.fr Algorithmique : Programmes

Copyright - Jean-Philippe Pernin - DIP - Université Stendhal - Grenoble 3 13

Traduction des données en informations machine

Programme Source

Description des données:

Description des traitementsdébut

......

......

......

......fin

Programme Exécutable

00110011100111000101001111010111

Les données doivent pouvoir être traduites en informations manipulables par la machine

0011100111000101001111010111001100111001110001010011110101110011

Les traitements doivent pouvoir être traduits en instructions de la machine

Programmation

Programmeur

Page 14: Jean-Philippe PERNIN Université Stendhal Département Informatique Pédagogique Bureau I113 Mél. : Jean-Philippe.Pernin@u-grenoble3.fr Algorithmique : Programmes

Copyright - Jean-Philippe Pernin - DIP - Université Stendhal - Grenoble 3 14

Format des données élémentaires

L'unité d'information pour la machine est l'octet.

Comment traduire une donnée en une suite d'octets ?

1. Adopter un code de représentation

2. Choisir un format (nombre d'octets)

un nombre Entier

Code binaire

24 0000000000011000

Deux octets

un caractère

Une chaine de caractères

Une valeur logique

ABA

01001010010010110100101011111111

Dépend de la longueur de la chaine

Code ASCII, UNICODE

true 11111111 Un octetConvention

VRAI = 11111111FAUX = 00000000

A 01001010

Code ASCII, UNICODE

Un octet

Page 15: Jean-Philippe PERNIN Université Stendhal Département Informatique Pédagogique Bureau I113 Mél. : Jean-Philippe.Pernin@u-grenoble3.fr Algorithmique : Programmes

Copyright - Jean-Philippe Pernin - DIP - Université Stendhal - Grenoble 3 15

Nécessité de décrire le type des données variables

Pour pouvoir être traduite en informations manipulable par la machine, il est nécessaire de typer les données variables :

Description des variables

Age : un entier

EstPlein : un logique (vrai ou faux)

Nom : une chaine

00000000

00000000

11111111

11111111

00000000

00000000

00000000

00000000

00000000

00000000

00000000

00000000

00000000

A chaque variable déclarée, on réserve une zone de la mémoire correspondant à la

taille nécessaire au codage de l'information

mémoire

Page 16: Jean-Philippe PERNIN Université Stendhal Département Informatique Pédagogique Bureau I113 Mél. : Jean-Philippe.Pernin@u-grenoble3.fr Algorithmique : Programmes

Copyright - Jean-Philippe Pernin - DIP - Université Stendhal - Grenoble 3 16

56

Notion de Variable

Emplacement "virtuel" dans lequel est stocké provisoirement une valeur

A

Valeur

Emplacement

Nom de la variable

Page 17: Jean-Philippe PERNIN Université Stendhal Département Informatique Pédagogique Bureau I113 Mél. : Jean-Philippe.Pernin@u-grenoble3.fr Algorithmique : Programmes

Copyright - Jean-Philippe Pernin - DIP - Université Stendhal - Grenoble 3 17

Chaque variable ne peut contenirque des valeurs d'un certain type

A

Enveloppe type Logique

true

B

Enveloppe type Entier

356

C

Enveloppe type Chaîne

Il était une fois, il y a très très longtemps

Page 18: Jean-Philippe PERNIN Université Stendhal Département Informatique Pédagogique Bureau I113 Mél. : Jean-Philippe.Pernin@u-grenoble3.fr Algorithmique : Programmes

Copyright - Jean-Philippe Pernin - DIP - Université Stendhal - Grenoble 3 18

Caractéristiques d'une variable

Une variable est caractérisée par :• un nom

– exemple : Hauteur• un type . exemples de types de base :

– entier (en Pascal : integer)(en Javascript : Number)– réel (en Pascal : real)(en Javascript : Number)– logique (en Pascal : boolean)(en Javascript : Boolean)– texte (en Pascal : string)(en JavaScript : String)

• une valeur qui peut varier selon le déroulement du programme– exemple : 123

Page 19: Jean-Philippe PERNIN Université Stendhal Département Informatique Pédagogique Bureau I113 Mél. : Jean-Philippe.Pernin@u-grenoble3.fr Algorithmique : Programmes

Copyright - Jean-Philippe Pernin - DIP - Université Stendhal - Grenoble 3 19

Etapes à suivre

1. Créer ( =déclarer) la variable– var ENTIER minimum

2. Mettre une valeur (=Affecter) dans la variable

(La valeur doit être de même type que la variable) – minimum 955 ;

1. Utiliser la valeur contenue dans la variable– circonference minimum ;

minimum type entier

minimum type entier

356

minimum type entier

356

circonference

type entier

356

Page 20: Jean-Philippe PERNIN Université Stendhal Département Informatique Pédagogique Bureau I113 Mél. : Jean-Philippe.Pernin@u-grenoble3.fr Algorithmique : Programmes

Copyright - Jean-Philippe Pernin - DIP - Université Stendhal - Grenoble 3 20

Déclaration des variables

// Déclaration des variables

var Diametre ; // Diametre est un entier

var Nom , Prenom ; // Nom et Prenom sont des chaînes

Lexique

Diamètre : un entier

Nom , Prénom : des chaines

en notation algorithmique

en Javascript (langage faiblement typé)

Page 21: Jean-Philippe PERNIN Université Stendhal Département Informatique Pédagogique Bureau I113 Mél. : Jean-Philippe.Pernin@u-grenoble3.fr Algorithmique : Programmes

Copyright - Jean-Philippe Pernin - DIP - Université Stendhal - Grenoble 3 21

Affectation de variables

Diametre = 4

Diametre 4 {mettre 4 dans diametre}

Diametre Diametre + 1 {ajouter 1 à diametre}

Circonference Pi * Diametre {calculer la circonference}

en notation algorithmique

en JavascriptPartie Gauche

Toujours le nom d'une variable

Partie DroiteUne expression dont le résultat est

compatible avec le type de la variable

Symbole =affectation

ATTENTION : RISQUE DE CONFUSION AVEC L'EGALITE

Page 22: Jean-Philippe PERNIN Université Stendhal Département Informatique Pédagogique Bureau I113 Mél. : Jean-Philippe.Pernin@u-grenoble3.fr Algorithmique : Programmes

Copyright - Jean-Philippe Pernin - DIP - Université Stendhal - Grenoble 3 22

Lecture d'une variable

diametre = prompt ("Quel diamètre ?", 0) ;

lire (Diamètre) {mettre dans diamètre la valeur saisie}

en notation algorithmique

en Javascript

Partie GaucheNom de la variable à lire

(dans laquelle sera mis le résultat)

Instruction de lecture

Message à afficher

Valeur proposée

Page 23: Jean-Philippe PERNIN Université Stendhal Département Informatique Pédagogique Bureau I113 Mél. : Jean-Philippe.Pernin@u-grenoble3.fr Algorithmique : Programmes

Copyright - Jean-Philippe Pernin - DIP - Université Stendhal - Grenoble 3 23

Ecriture d'une variable

alert (diametre) ;

ecrire (Diamètre) {Afficher à l’écran la valeur contenue dans diamètre}

en notation algorithmique

en Javascript

Instruction d'écriturealert

Nom de la variable à écrire