tp2 : introduction à la...

7

Click here to load reader

Upload: phamanh

Post on 12-Sep-2018

212 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: TP2 : Introduction à la programmationwebpages.lss.supelec.fr/.../Enseignement/2005_2008/bcpst/tp2.pdf · TP2 : Introduction à la programmation ... 1 Objectifs du TP 1 2 Les briques

TP2 : Introduction à la programmation

Matthieu Kowalski

Table des matières

1 Objectifs du TP 1

2 Les briques de base de la programmation 12.1 Retour sur l’affectation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.2 Quelques précisions sur les variables . . . . . . . . . . . . . . . . . . . . . . . 22.3 Opérations d’entrée/sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.4 Sortie à l’écran . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2.4.1 Entrée au clavier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.5 Test conditionnel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.6 Les boucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.6.1 Boucle for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.6.2 Boucle while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

3 Quelques exercices d’entraînement 6

1 Objectifs du TP

Après vous être familiarisé avec l’environnement Matlab lors du premier TP, celui-ciet les suivants auront pour but de vous donner les bases de la programmation structurée.

L’apprentissage de la programmation est nécessaire pour utiliser toute la puissance deMatlab, et par la suite résoudre quelques problèmes mathématiques, physiques ou autres.

Wikipedia donne la définition suivante pour un programme informatique : « Un pro-gramme informatique est une liste d’ordres indiquant à un ordinateur ce qu’il doit faire.Il se présente sous la forme d’une ou plusieurs séquences d’instructions. »

Il existe plusieurs méthodes de programmation. Celle que l’on va voir est la plus clas-sique et s’appelle « programmation impérative ». Dans ce type de programmation, lesinstructions qui modifient les données sont exécutées les unes après les autres, à l’aide destructures de contrôles.

1

Page 2: TP2 : Introduction à la programmationwebpages.lss.supelec.fr/.../Enseignement/2005_2008/bcpst/tp2.pdf · TP2 : Introduction à la programmation ... 1 Objectifs du TP 1 2 Les briques

TP info BCPST1 2007/2008

Ce TP est divisé en deux parties. La première présente rapidement les outils de basesnécessaires à la programmation. Il est essentiel de bien les comprendre. Des exemplessimples sont là pour en illustrer le fonctionnement.

La seconde partie est là pour vous apprendre à utiliser ces outils, et commencer à écrirevous même des programmes.

2 Les briques de base de la programmation

2.1 Retour sur l’affectation

Le premier TP vous a fait manipuler des variables, afin de “mémoriser” quelquesopérations. On revient ici sur le principe de variables en informatique, en essayant desouligner les différences avec une variable mathématique.

En informatique, une variable sert à stocker une valeur, ce qui permet de la modifierfacilement et de voir son évolution au cours d’un programme. Une variable informatiquedésigne donc une et une seule chose, contrairement à une variable mathématique. Si l’onprend l’exemple d’un équation du second degré ax2 + bx + c = 0, x désigne les deuxracines du polynôme. En informatique, il faudra utiliser deux variables de nom différentsi l’on veut les stocker.

Sous Matlab, l’instruction d’affectation se fait avec le symbole « = ».Prenons l’exemple suivant

>> a = 1;>> b = a+3;>> a = 3;

La première instruction affecte la valeur 1 à la variable a. La seconde calcule l’expres-sion a + 3, puis affecte le résultat à la variable b, sans changer la valeur de a. La troisièmeet dernière instruction affecte la valeur 3 à la variable a, qui “oublie” son ancienne valeur.

Il faut bien faire attention au fait que l’opérateur « = » n’est pas un opérateur d’égalité,en particulier, il n’y a pas réflexivité de l’opérateur. Ainsi, les deux opérations suivantesne sont pas du tout équivalentes :

>> a = b;>> b = a;

En mathématiques, lorsqu’on écrit b = a + 1, cela suppose que a et b vont toujoursvérifier cette relation. À l’inverse, en informatique, si l’on considère les trois instructionssuivantes

>> a = 5;>> b = a +1;>> a = 2;

2

Page 3: TP2 : Introduction à la programmationwebpages.lss.supelec.fr/.../Enseignement/2005_2008/bcpst/tp2.pdf · TP2 : Introduction à la programmation ... 1 Objectifs du TP 1 2 Les briques

TP info BCPST1 2007/2008

la relation entre a et b est oubliée : on peut travailler indépendamment sur chacune desvariables.

Exercice 1 Comment échanger la valeur de deux variables ?

2.2 Quelques précisions sur les variables

En informatique, il existe deux types de variables– Les variables globales. Ces variables sont connues de tout l’environnement, et peuvent

être appelées de n’importe quelle fonction. Si elles peuvent être pratiques, il est trèsdangereux de les utiliser. Nous n’utiliserons jamais (a priori. . . ) de variable globaledans le cadre de ce cours.

– Les variables locales. Elles ont une portée limitée à la fonction dans laquelle ellessont utilisées, et ne seront pas connues des autres fonctions.

Exemple 1function res = ma_fonction(x)

res = exp(x)*5;

La variable x passée en paramètre ne sera connue qu’à l’intérieur de la fonction. Si vous appelezma_fonction(5) dans l’interpréteur, x sera égale à 5 à l’intérieur de la fonction pour faire le calculvoulu, mais ne sera pas connu de l’interpréteur, et de même pour res. Le résultat de l’opérationsera enregistré seulement si vous l’affectez à une variable.

>> R = ma_fonction(5);>> x>> res>> R

2.3 Opérations d’entrée/sortie

Afin d’interagir avec l’utilisateur, il est souvent utile de pouvoir afficher à l’écran cer-taines informations, ou de questionner l’utilisateur. Il existe plusieurs façons de le faireavec Matlab. Nous ne présentons ici que les plus simples (les fonctions plus avancéesseront présentées en temps voulue si besoin est).

2.4 Sortie à l’écran

Afin d’afficher du texte ou le contenu d’une variable à l’écran, il existe la fonctiondisp.

3

Page 4: TP2 : Introduction à la programmationwebpages.lss.supelec.fr/.../Enseignement/2005_2008/bcpst/tp2.pdf · TP2 : Introduction à la programmation ... 1 Objectifs du TP 1 2 Les briques

TP info BCPST1 2007/2008

Si l’on veut afficher une chaîne de caractère (ie. du texte), il faut que celle-ci soit miseentre cotes « ’ ».

Exemple 2>> disp(’Hello world’);

Si l’on veut afficher le contenu d’une variable, il suffit de passer la variable en para-mètre.

Exemple 3>> a = exp(5);>> disp(a);>> chaine_de_caractere = ’voila une chaine’;>> disp(chaine_de_caratere);

2.4.1 Entrée au clavier

Pour demander une valeur particulière à l’utilisateur, on va utiliser la commandeinput. Cette fonction renvoie un paramètre, qui est ce que l’utilisateur a entré au cla-vier. Par défaut, input attend une variable qui ne soit pas une chaîne caractère.

Exemple 4>> n = input(’entrez une matrice : ’);>> n

Pour entrer une chaîne de caractère, il faut passer le paramètre ’s’ à input

Exemple 5>> c = input(’entrez votre prenom : ’,’s’);>> c

Que se passe-t-il si l’option ’s’ n’est pas donnée ?

2.5 Test conditionnel

En informatique comme partout ailleurs, on est confronté à des choix. C’est l’instruc-tion if qui permet de tester une condition, et d’agir en conséquence, c’est-à-dire de réali-ser une série d’instruction en cas de réalisation ou non de la condition. Plus précisément,la structure de l’instruction est la suivante :

if <condition><série d’instructions si la condition est vraie>

else<série d’instructions si la condition est fausse>

end

4

Page 5: TP2 : Introduction à la programmationwebpages.lss.supelec.fr/.../Enseignement/2005_2008/bcpst/tp2.pdf · TP2 : Introduction à la programmation ... 1 Objectifs du TP 1 2 Les briques

TP info BCPST1 2007/2008

Afin de tester une condition, a besoin d’opérateurs de comparaison :– Égalité : « == » ;– Strictement inférieur à : « < » ;– Strictement supérieur à : « > » ;– Inférieur ou égale à : « <= » ;– Supérieur ou égale à : « >= » ;– Différent de : « ˜= » ;

Exemple 6 Dans un script Matlab, regardez ce petit programme

n = input(’entrez un entier : ’);

if mod(n,2) == 0disp(’Le nombre est pair’);

elsedisp(’Le nombre est impair’);

end

2.6 Les boucles

L’intérêt de l’informatique est de pouvoir répéter facilement et rapidement une suited’instructions donnée. C’est ce que permettent de faire les boucles. Il existe deux sortesde boucles

1. Les boucles inconditionnelles ou définies : on connaît à l’avance le nombre de répé-titions nécessaires.

2. Les boucles conditionnelles ou indéfinies : on répète la série d’instruction, sous unecondition donnée.

2.6.1 Boucle for

Le boucle for permet d’utiliser un compteur facilement pour réaliser une boucle in-conditionnelle. Sous Matlab, for permet de parcourir tous les éléments d’un vecteur unà un. On utilise la boucle for de la manière suivante

for i = <vecteur a parcourir><instructions>

end

Exemple 7 On va afficher les n premiers entiers, où n est un nombre donné par l’utilisateur.

5

Page 6: TP2 : Introduction à la programmationwebpages.lss.supelec.fr/.../Enseignement/2005_2008/bcpst/tp2.pdf · TP2 : Introduction à la programmation ... 1 Objectifs du TP 1 2 Les briques

TP info BCPST1 2007/2008

n = input(’donnez un nombre entier: ’);for i=1:ndisp(i);

end

Exemple 8 On va afficher les n premiers entiers pairs, où n est un nombre donné par l’utilisateur.

n = input(’donnez un nombre entier: ’);for i=2:2:ndisp(i);

end

2.6.2 Boucle while

La boucle while permet de réaliser une boucle tant qu’une condition n’est pas véri-fiée.

Exemple 9 Dans les programmes précédents, on ne vérifie pas si le nombre passé en argumentétait bien un entier. On va donc redemander d’entrer un nombre tant que celui-ci ne sera pasentier.

n = input(’Entrez un entier: ’);while n-floor(n) ~= 0n = input(’On a dit un entier: ’);

end

3 Quelques exercices d’entraînement

Vous possédez maintenant tous les éléments nécessaires pour faire des programmesévolués. Faites la série d’exercice suivant, afin de vous habituer à la programmation.

Exercice 2 Faites un programme qui permet de résoudre une équation du second degré

1. Dans C ;

2. Dans R.

Exercice 3 Écrire une fonction ayant pour paramètre N , qui calcule les N premiers termes de lasuite géométrique un = 2n, et les renvois dans un vecteur.

Exercice 4 Calculer la somme des N premiers termes de la suite un = 2n de deux manières :

1. En réutilisant la fonction précédente ;

6

Page 7: TP2 : Introduction à la programmationwebpages.lss.supelec.fr/.../Enseignement/2005_2008/bcpst/tp2.pdf · TP2 : Introduction à la programmation ... 1 Objectifs du TP 1 2 Les briques

TP info BCPST1 2007/2008

2. Sans réutiliser la fonction précédente.

On écrira une nouvelle fonction à chaque fois.

Exercice 5 Écrire un script qui permet de jouer au jeu suivant. Demander deux nombres entiersà l’utilisateur. Tirer au hasard un nombre entier entre ces deux bornes. Demander ensuite à l’uti-lisateur de deviner ce nombre. Si l’utilisateur le devine, écrire “gagner” et sortir. Sinon, reposer laquestion, en indiquant si le nombre à deviner est plus petit ou plus grand que la réponse donnée.

Indication : (on regardera la fonction rand pour tirer un nombre au hasard).

Exercice 6 Écrire une fonction qui permet de calculer N !, où N est passé en paramètre.Étant donné les propriétés de la fonction factorielle, voyez-vous un autre moyen de calculer le

résultat ?

7