• Aucun résultat trouvé

Interrogation d’informatique n o 2-corrigé :

N/A
N/A
Protected

Academic year: 2022

Partager "Interrogation d’informatique n o 2-corrigé :"

Copied!
2
0
0

Texte intégral

(1)

Interrogation d’informatique n o 2-corrigé :

Serge Dupont (2004)

1 Exercice 1 (compréhension) :

Que fait le programme suivant ? (Si possible, justifier). Que va afficher Maple après la dernière ligne ?

> exo:=proc(u::posint,v::posint)

> if u=v then v

> elif irem(u,2)=0 then

> if irem(v,2)=0 then 2*exo(u/2,v/2)

> else exo(u/2,v) fi

> elif irem(v,2)=0 then exo(u,v/2)

> else if u>v then exo((u-v)/2,v)

> else exo((v-u)/2,u) fi

> fi: end:

> exo(32,12) : exo(15,11) :

Ce programme calcule le pgcd par l’algorithme d’Euclide, mais en n’utilisant que des soustractions et des divisions par deux. Il est bien adapté à l’informatique, dont les données sont en général stockées en base 2.

2 Exercice 2 (algorithmique) :

La suite de Solomon Golomb est l’unique suite d’entiers u= (uk)croissante auto-descriptive au sens suivant : elle commence par u1=1, puis pour tout entier strictement positif n, undésigne le nombre de n dans la suite u.

Question 1 :

Donner les 10 premiers termes de la suite de Golomb.

2.1 Réponse

> [1,2,2,3,3,4,4,4,5,5]:

Question 2 :

Ecrire un programme Golomb(n) dont la variable est un entier n>0 et qui renvoie la liste des termes

≤n de la suite de Golomb (i.e. tous les termes untels que un≤n).

2.2 Réponse

> Golomb:=proc(n::posint)

> local L,i,k :

> if n =1 then [1]

> elif n=2 then [1,2,2]

> else L:=[1,2,2] : i:=3 :

> while L[nops(L)]<n do

> L:=[op(L),seq(i,k=1..L[i])] :

> i:=i+1 od : L fi:

> end :

> Golomb(10);

[1,2,2,3,3,4,4,4,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,9,10,10,10,10,10]

3 Exercice 3 (algorithmique) :

Les scribes égyptiens (1800 av. JC) savait écrire tout rationnel r strictement compris entre 0 et 1 comme somme d’inverses d’entiers, i.e. r=∑pj=1n1j avec nj≤nj+1.

Ecrire un programme scribe(r) de variable r rationnel dans]0,1[et renvoyant une liste[n1, ...,np]telle que r=n1

1 +· · ·n1

p. (On rappelle la fonction ceil(x) qui associe au réel x l’unique entier n tel que n1<

x≤n−1.)

(2)

3.1 Réponse

> scribe:=proc(r::rational)

> local L,x,n:

> x:=r : L:=[] :

> while x<>0 do n:=ceil(1/x) : L:=[op(L),n] : x:=x-1/n od:

> L: end:

> scribe(3/7);

[3,11,231]

> 1/3+1/11+1/231;

3 7

4 Exercice 4 (programmation) :

Ecrire un programme trapeze(f,n,a,b) qui prend comme argument la fonction f , l’entier n et les bornes a et b du segment, et retourne le dessin ci-dessus.

4.1 Réponse

> trapeze:=proc(f,n,a,b)

> local h,x1,x2,y1,y2,xtemp,ytemp,L,j :

> h:=(b-a)/n: x1:=a : y1:= f(a): x2:=a+h : y2:=f(a+h) :

> L:=[[x2,0],[x2,y2],[x1,y1],[x1,0]] :

> for j from 1 to n-1 do

> xtemp:=x2 : ytemp:=y2 :

> x2:=x2+h : y2:= f(x2) :

> x1:=xtemp : y1:=ytemp :

> L:=[op(L),[x2,0],[x2,y2],[x1,y1],[x1,0]] od:

> plot(L): end:

> dessin1:=trapeze(sin,10,0,2*Pi):

> dessin2:=plot(sin,0..2*Pi,color=blue):

> plots[display]({dessin1,dessin2});

–1 –0.5

0 0.5

1

1 2 3 4 5 6

Références

Documents relatifs

Ici encore, on a intérêt à « revenir aux fondamentaux » en adoptant une approche vectorielle du

[r]

[r]

Découvrir le début de l’histoire et bien le comprendre : Mettre en mémoire les évènements des pages 3 à 4. Inférer les pensées du personnage : compléter

Mais il aurait bien aimé savoir ce que le singe avait écrit.. Alors le lion rebroussa chemin et ordonna au singe de lire la

[r]

Puce est tout fier de montrer à Zig sa solution de la deuxième énigme de la rubrique A1867-Bienvenue à 2016 dans laquelle il s’agit de trouver un carré parfait dont la somme

Si Sébastien peut répondre, c’est qu’il détient l’un des deux couples (2,56) ou (2,60) et c’est vrai que s’il avait été plus rapide dans ses calculs, il aurait pu