• Nenhum resultado encontrado

Qu’est-ce que la programmation ?

N/A
N/A
Protected

Academic year: 2023

Share "Qu’est-ce que la programmation ?"

Copied!
18
0
0

Texto

(1)

Expressions, instructions, et variables

Algo & Prog avec R

A. Malapert, B. Martin, M. Pelleau, et J.-P. Roy 11 septembre 2021

Université Côte d’Azur, CNRS, I3S, France firstname.lastname@univ-cotedazur.fr

(2)

Ressources sur cet enseignement

La page Web du cours, que vous enregistrez dans vos signets.

www.i3s.unice.fr/~malapert/R

Langage de programmation Environnement de développement

1/16

(3)

Qu’est-ce que la programmation ?

L’art de rédiger des textes dans une langue artificielle.

Art Science ? Textes Programmes

Langue artificielle Langage de programmation

Dans quel but ?

Faire exécuter une tâche à un ordinateur.

Il s’agit d’une activité de résolution de problèmes.

I Hum, on va faire des maths, alors ?

I Un peu quand même, mais pas trop, le monde est vaste. Nous allons tâcher d’en modéliser de petites portions pour les faire rentrer dans la machine. Des nombres, du texte, des images, le Web . . .

I On pourrait presque dire : calculer le Monde ?

I Oui, bravo, c’est cela, réduire le Monde à des ensembles d’objets sur lesquels on peut faire des calculs.

(4)

Jouer avec des nombres entiers

Dans toutes les sciences, les nombres jouent un rôle important.

R se présente comme une calculette interactive à travers sontoplevel. Il présente sonprompt>pour que vous lui soumettiez un calcul . . .

> 10 + 3

[1] 13

> 10 + 3 * 5

[1] 25

> 16 / 3

[1] 5.3 3 3 3 3 3

> 16 %/ % 3 [1] 5

> 16 %% 3

[1] 1

Opérateurs de base sur les entiers I +et-: addition et soustraction.

I *et/: multiplication et division.

I **: puissance.

I %/%ou%%: quotient et reste.

Le kilo informatique

> 2* *10 # le k i l o i n f o r m a t i q u e [1] 1 0 2 4

3/16

(5)

Division euclidienne

Siaetbsont deux entiers avecb6= 0, alors :

a=b∗(a%/%b) + (a%%b)

I a%/%bfournit lequotientde la division de l’entieraparb.

I a%%bfournit lerestede la division de l’entier aparb.

> 16 %/ % 3 [1] 5

> 16 %% 3

[1] 1

> 3 * (16 %/ % 3) + (16 %% 3) [1] 16

(6)

Erreurs de calcul

Mal utilisée, une opération peut provoquer une ERREUR.

Gestion des erreurs avec une valeur spéciale

> 16 %% 0

[1] NaN

> 0/0 [1] NaN

Gestion des erreurs avec une exception

> ’ a ’ + 5

E r r o r in " a " + 5 : a r g u m e n t non num é r i q u e p o u r un op é r a t e u r b i n a i r e

5/16

(7)

Priorité des opérations

L’ordre du calcul d’une expression arithmétique tient compte de la priorité de chaque opérateur.

Priorité Opérateurs Faible +et-

Haute *,/,%/%et%%

Très haute **

> 5 - 8 + 4 * 2 * * 3

[1] 29

> (5 - 8) + (4 * (2 * * 3) )

[1] 29

Dans le doute,mieux vaut mettre des parenthèses!

(8)

Représentation des nombres (voir l’autoformation)

La tailledes entiersest toujours limitée parla mémoire dela machine.

En R, les entiers sont représentés sur 32 bits.

> . M a c h i n e $ i n t e g e r . max [1] 2 1 4 7 4 8 3 6 4 7

On dit que l’on travaille avec des nombres entiers enprécision finie! Pourtant, R peut renvoyer un résultat entier au-delà de cette valeur.

> 2 ^ 3 1

[1] 2 1 4 7 4 8 3 6 4 8

R va automatiquement transformer le résultat en unnombre flottant. Les nombres flottants représentent les nombres réels sur 64 bits. Attention, l’arithmétique flottante n’est pas exacte !

> x < - 2 * * 221

> x + 1 = = x

[1] T R U E

Comment expliquer vous ce résultat ? Quels sont les autres problèmes ? 7/16

(9)

Programmer avec des variables

Variable

Un peu comme lesinconnuesen Algèbre, sauf qu’ici une variable devra êtreconnueet contenir une valeur.

> a < - 2 # l i r e : a p r e n d p o u r v a l e u r 2

> p < - 10 # p p r e n d p o u r v a l e u r 10

> c < - a * * p # c p r e n d p o u r v a l e u r c e l l e de a p u i s s a n c e p

> c # t o u j o u r s le k i l o i n f o r m a t i q u e [1] 1 0 2 4

Instruction d’affectation :variable <- expression

Ce signe<-(ou=) non commutatif n’a rien à voir avec celui des maths ! L’écriture 2 + 3 = an’aura donc aucun sens ! !

> 2 + 3 < - a

E r r o r in 2 + 3 < - a :

la c i b l e de l’ a s s i g n a t i o n est un o b j e t n ’a p p a r t e n a n t pas au l a n g a g e

> 2 + 3 < - 5

E r r o r in 2 + 3 < - 5 : . . .

(10)

Expression ou instruction ?

Ne confondez pas les EXPRESSIONS et les INSTRUCTIONS, qui toutes deux vont contenir des variables.

I Une expression seracalculée,

I tandis qu’une instruction seraexécutée!

> a < - 5

> x < - 3

Expression

Renvoie un résultat.

> a * x * * 2

[1] 45

Instruction Aucun résultat.

> c < - a * x * * 2

>

les séparateur d’instructions : saut de ligne et le point virgule.

> a < - 5 ; x < - 3

9/16

(11)

Une variable a le droit de changer de valeur

> a < - 2

> b < - a # la v a l e u r de a e s t c a l c u l é e p u i s c ’ e s t e l l e q u i

e s t t r a n s m i s e à b

> a < - a + 1 # q u i se l i t : a d e v i e n t é g a l à a + 1

> b # et n o n 3 , ok ? [1] 2

Échange de deux variables Avec une variable temporaire.

> t e m p < - a # la v a r i a b l e t e m p m é m o r i s e la v a l e u r de a

> a < - b # la v a r i a b l e a p r e n d la v a l e u r de b

> b < - t e m p # la v a r i a b l e b p r e n d l ’ a n c i e n n e v a l e u r de a

> a [1] 2

> b [1] 3

(12)

Comparaison

Opérateurs de comparaison

> a < - 2

> a = = 3 # é g a l i t é m a t h é m a t i q u e [1] F A L S E

> a > 3 # s t r i c t e m e n t s u p é r i e u r [1] F A L S E

> a + 1 > = 3 # s u p é r i e u r ou é g a l

[1] T R U E

> a + 1 < 3 # s t r i c t e m e n t i n f é r i e u r [1] F A L S E

> a + 1 < = 3 # i n f é r i e u r ou é g a l

[1] T R U E

> a + 1 ! = 3 # d i f f é r e n t [1] F A L S E

BooléensTRUE etFALSE Dans une expression arithmétique,

I TRUE == 1, I FALSE == 0.

> 5 + T R U E [1] 6

> T R U E * F A L S E [1] 0

> F A L S E + 1 [1] 1

> F A L S E + 1 = = T R U E [1] T R U E

Évitez ce genre de facilités !

11/16

(13)

Affichage de résultats avec print

La fonction print(...) permet d’afficher une expression :

> a < - 2

> p r i n t( a * a ) [1] 4

>

Ce qui est affiché n’est pas le résultat de la fonctionprint, mais l’effet de cette fonction.

Cependant, la fonction renvoie aussi l’objetxpassé en paramètre de manière invisible.

> p r i n t(5)= =5

[1] 5 # l ’ e f f e t de p r i n t ( 5 )

[1] T R U E # le r é s u l t a t du t e s t d ’ é g a l i t é

>

(14)

Construction de résultats avec paste

La fonctionpaste(...) permet de concaténer une expression :

> p a s t e(’ le c a r r e de ’, a , ’ v a u t ’, a*a )

[1] " le c a r r e de 2 v a u t 4 "

Remarquez l’espace automatique.

I Ce qui est affiché est le résultatde la fonctionpaste.

I La fonctionpasteaccepte des paramètres optionnels modifiant le format du résultat.

> p a s t e(’ le c a r r e de ’, a , ’ v a u t ’, a*a , sep=’ | ’)

[1] " le c a r r e de |2| v a u t |4 "

Cependant, les possibilités de la fonction paste(...) sont limitées.

13/16

(15)

Construction de résultats avec sprintf

La fonctionsprintf(...)permet de concaténer et formater finement une expression :

> s p r i n t f (’ le c a r r e de % d v a u t % d ’, a , a*a ) [1] " le c a r r e de 2 v a u t 4 "

I Ce qui est affiché est le résultat de la fonction sprintf.

I Les fonctions de la familleprintfsont très puissantes et disponibles dans denombreux langages.

> s p r i n t f (’ le c a r r e de %.5 f v a u t %08.5 f ’, pi , pi*pi ) [1] " le c a r r e de 3.1 4 1 5 9 v a u t 09.8 6 9 6 0 "

(16)

Construction et affichage de résultats avec cat

La fonctioncat(...)permet de concaténer une expression, puis de l’afficher :

> cat(’ le c a r r e de ’, a , ’ v a u t ’, a*a )

le c a r r e de 2 v a u t 4>

Remarquez l’espace automatique et l’absence de saut de ligne.

I Ce qui est affiché est l’effet de la fonctioncat.

I Comme paste, la fonction accepte des paramètres optionnels.

Pour ajouter un saut de ligne, il faut utiliser uncaractère spécial.

> cat(’ le c a r r e de ’, a , ’ v a u t ’, a*a , ’ \ n ’)

le c a r r e de 2 v a u t 4

>

Contrairement àprint, la fonction ne renvoie pas de résultat.

> cat(5)= =5

5l o g i c a l(0) # l ’ e f f e t de c a t ( 5 ) c o l l é au r é s u l t a t du t e s t

15/16

(17)

Rédaction de texte dans un éditeur

Le travail interactif autoplevelest pratique pour de petits calculs. Mais mieux vaut en général travailler dans unéditeur de texte.

(18)

Questions?

Retrouvez ce cours sur le site web www.i3s.unice.fr/~malapert/R

16/16

Referências

Documentos relacionados

Resumo: Foi replicada a tecnologia “Produção de mel direto no vidro” (criada pelo técnico da Emater do Paraná, Nilo Deriberalli), junto aos membros da Associação de Apicultores