• Aucun résultat trouvé

I.3Conditionnelle if I.2Boucle while I.1Boucle for I.Structures Algorithmique:lesbases

N/A
N/A
Protected

Academic year: 2022

Partager "I.3Conditionnelle if I.2Boucle while I.1Boucle for I.Structures Algorithmique:lesbases"

Copied!
2
0
0

Texte intégral

(1)

MPSI1

Algorithmique : les bases

lyc´ee Chaptal

I. Structures

I.1 Boucle

hh

for

ii

– C’est une boucle utilis´ee quand le nombre d’it´erations est connue et que celles-ci sont index´ees par un entier.

– Le pas est donn´e `a la suite de l’instructionby. Par d´efaut, celui-ci vaut 1.

– Structure :> for k from 1 to 10 by 3 do instructions end do – Exemples :

1. Calculer

100

P

k=1

k:

> s:=0 ;

> for i from 1 to 100 do s:=s+i

end do :

> s ;

2. Calculer la somme des entiers pair de 1 `a 100 :> s:=0 ;

> for k from 0 to 100 by 2 do

s:=s+k end do :

> s ;

ou encore> s:=0 ;

> for k from 1 to 50 do s:=s+2*k

end do :

> s ;

I.2 Boucle

hh

while

ii

– C’est une boucle utilis´ee quand le nombre d’it´erations n’est pas n´ecessairement connue mais seulement une condition d’arrˆet (de forme bool´eenne :trueoufalse) qui tant qu’elle n’est pas satisfaite, poursuit la r´ep´etition des instructions de la boucle.

– On prendra bien soin de v´erifier que la condition d’arrˆet se produit en un temps fini ! – Structure :> while condition do instructions end do

– Exemples : 1. Calculer

100

P

k=1

k:

> s:=0 ;k:=1 ;

> while (k<=100) do s:=s+k ;

k:=k+1 end do :

> s ;

2. Calculer le quotient de la division euclidienne de 103 par 25 :

> q:=0 ; r:=103 ; b:=25 ;

> while b<=r do r:=r-b ; q:=q+1 end do ;

> q ;

Remarque : une derni`ere ins- truction> q,r ;donnerait la s´e- quence quotient/reste.

3. D´eterminer le plus petit entierp tel que

p

P

k=1

k2>21334 :

> s:=0 ;p:=0 ;

> while s<21334 do p:=p+1 ;

s:=s+p*p ; end do ;

> p ;

I.3 Conditionnelle

hh

if

ii

– C’est la structure qui permet d’ex´ecuter une instruction si une condition (d´efinie par une variable bool´enne) est v´erifi´ee.

– L’instructionelse peut ˆetre omise.

– Il existe aussi des possibilit´es d’enchaˆıner des conditions `a l’aide de l’instructionelif.

– Structure :> if condition then instructions else instructions end if.

– Exemple : On donnea,b,c. Si ∆ =b2−4ac est positif, ´ecrire qu’il y a des solutions r´eelles, sinon qu’il n’y en a pas.

> a:=423 ; b:=960 ; c:=545 ;

> Delta := b*b - 4*a*c ;

> if Delta < 0

then print(’ilnyapasdesolutionsreelles’) else print(’ilyadessolutionsreelles’) end if

(2)

MPSI1

Algorithmique : les bases

lyc´ee Chaptal

II. Proc´ edures

II.1 Fonctions

– Pour d´efinir une fonction d’une ou plusieurs variables, on utilise la syntaxe :> f:= (v1,...,vn) -> expr;o`uf est le nom de la fonction,v1,...,vnen sont les variables etexprle r´esultat de l’´evaluation def en les variables.

– On peut ´egalement transformer une expression en fonction `a l’aide de l’instructionunapply.

– Exemples :

1. >f1:=x->x*x ;

> f1(5) ;

2. > f2:= unapply(x*x,x) ;

II.2 Proc´ edures

– Une fonction est un cas particulier de proc´edure. Une proc´edure permet d’enchaˆıner des instructions d´ependant de variables d’appel.

– Structure :> Maprocedure:= proc(v1,...,vn) local l1,..,lp;

global g1,...,gp; instructions; end.

– v1,...,vnsont les variables d’appel,l1,..,lples variables locales etg1,...,gples variables globales.

– La valeur prise par une proc´edure est celle de la derni`ere instruction effectu´ee.

– On peut utiliser une proc´edure `a l’int´erieur d’une autre.

– Exemples :

1. > pro1:=proc(x) local a ;

global b ; a:=x ;b:=x ;a*b end ;

Deviner le r´esultat des instructions :

> a:=1 ;b:=1 ;pro1(4) ;a ;b ;.

2. > som1:=proc(n) local k,s ; s:=0 ;

for k from 1 to n do s:=s+23 od ; s

end ;

Que donnera> som1(10) ;?

II.3 Des outils

II.3.1 R´ecursivit´e

– Une proc´edure peut-ˆetre r´ecursive, c’est-`a-dire qu’elle peut s’appeler elle-mˆeme.

– On prendra soin de v´erifier que l’algorithme ainsi d´ecrit aboutit en un temps fini.

– On remarquera que le temps de calcul peut-ˆetre quel- quefois rapidement tr`es long...

– Exemple :

> fibo:=proc(n) if n=0

then 1 else if n=1

then 1

else fibo(n-1)+fibo(n-2) fi ;

fi end ;

II.4 Sorties d’une proc´ edure

On utilise pour cela, suivant les cas, erroroureturn

II.5 D´ etail des calculs effectu´ es

Pour obtenir le d´etail des calculs effectu´es par une proc´e- dure, on utilisetrace.

Par exemple :> trace(fibo) ; fibo(4) ;.

II.6 Nombre d’arguments

nargs d´esigne le nombre d’arguments pass´es `a la proc´e- dure et argsla liste des arguments pass´es `a la proc´edure.

Exemple : que fait la proc´edure suivante

> moyenne:=proc() local m,n ;

m:=0 ;

if nargs=0 then error(’calcul impossible’) else

for n to nargs do m:=m+args[n] od ; evalf(m/nargs)

fi end ;

Références

Documents relatifs

Je me propose d'indiquer succinctement, dans les quelques pages qui suivent, les r6sultats auxquels je suis arriv6... Sur uno application des ddterminants

Le ompilateur doit traduire un programme soure, érit dans un langage de programmation.. donné, en un

−→ utiliser un shéma itératif à nombre déterminé d'itérations. −→ appelé aussi souvent

Souvent, dénition mathématique valide lorsque algorithme réursif..

−→ utiliser un shéma itératif à nombre d'itérations déterminé. −→ appeler aussi souvent

Erire un algorithme qui demande une suite de 10 nombres et. ahe la somme de

Est-il possible de résoudre le problème à l'aide de la résolution. du problème portant sur une (des) &#34;plus

Le plus grand élément d'une partie, lorsqu'il existe, est l'élément. appartenant à ette partie qui est plus grand que