Exercice 2
Vous devrez rendre 3 copies : Une copie pour les exercices 1 et 2 ... et sur votre
interprétation de l'algorithme nécessaire pour répondre à chaque problème.
Part of the document
BCPST Informatique : D.S. n°1
Samedi 26 novembre
Vous devrez rendre 3 copies : Une copie pour les exercices 1 et 2
Une copie pour l'exercice 3
Une copie pour l'exercice 4
Une partie du barème est donnée sur la syntaxe du langage Scilab et sur
votre interprétation de l'algorithme nécessaire pour répondre à chaque
problème. Vous devrez donc expliquer chaque programme par un texte en
français.
Exercice 1 (Extrait modifié en Scilab de l'épreuve C, Mathématiques 2000,
du concours "Agro") (4 points)
1) Dans le problème, la fonction suivante permettait de construire une
simulation de variables aléatoires prenant un nombre fini de valeurs. On a
p réel tel que 0 < p < 1
a) Que fait la fonction suivante :
function [a]=MACHIN1(p);
Y=rand();
if Y=i2 do
i1=input('entrez une première année');
i2=input('entrez une deuxième année plus grande que la première');
end
disp('les années bissextiles concernées sont :')
for n=i1:i2 do
if n/4-floor(n/4)==0 & ((n/100floor(n/100)) | (n/400==floor(n/400))) then
disp(n); end
end
Exercice 3
1) Il s'agit du principe classique de cacul des différents termes d'une
suite :
x0=input('entrez le terme initial de la suite')
n=input('entrez l''indice n du terme recherché')
x=x0;
for i=1:n do x=4*x*(1-x); end
disp(x)
Pour la seconde version, seul le placement du disp apporte la solution ou
bien de permettre les affichages successifs des différents calculs :
x0=input('entrez le terme initial de la suite')
n=input('entrez l''indice n du terme recherché')
x=x0
for i=1:n do x=4*x*(1-x);
disp(x)
end
2) Vous deviez reconnaître la construction d'une somme :
n=input('combien de nombres impairs souhaitez-vous considérer ?')
s=0;
for i=0:(n-1) do
s=s+(2*i+1)^2;
end
disp(s)
Exercice 4
1) Les boucles en while sont utilisées ; l'une pour la demande de la
précision l'autre pour le calcul des termes successifs :
pre=input('Quelle précision voulez-vous ?");
while pre>=1 do
pre=input('La précision doit être plus petite que 1");
end
n=3;m=2;
while 1/m>pre do
x=n+2*m;
y=n+m;
n=x;m=y;
disp(n/m)
end
2) a) Deux boucles en for pour rechercher les couples solutions :
for i=1:10 do
for j=1:10 do
if i^2==3*j^2+1 then disp(i,' ',j)
end
end
end
b) Le programme est très semblable au premier :
pre=1.E-4
n=2;m=1;
while 1/m>pre do
x=n+3*m;
y=n+m;
n=x;m=y;
disp(n/m)
end
BCPST Informatique : D.S. n°2
Samedi 18 mars
Vous devrez rendre 2 copies : Une copie pour l'exercice 1
Une copie pour l'exercice 2
Exercice 1
Le but de cet exercice est de travailler sur une chaîne de caractères
représentant un texte. Vous supposerez que ce texte contient des caractères
en majuscules, des espaces, des virgules, des points, des apostrophes.
1) Construire la fonction [tab]=occurrences(c) déterminant dans un tableau
tab le nombre d'occurrences de chacune des 26 lettres de l'alphabet
contenues dans la chaîne c. (Rappel : str2code('A') retourne -10 dans
Scilab ainsi que str2code('Z') retourne -35).
2) Construire la fonction [a,b]=bornes(tab) déterminant le minimum et le
maximum des occurrences du tableau tab donné en entrée.
3) Construire la fonction [tab_bis]=trier(tab) permettant de construire le
tableau tab_bis, tableau associé à un tri croissant du tableau tab. Ce
tableau ne doit pas contenir les valeurs dans l'ordre croissant du tableau
tab mais les positions de ces valeurs données dans l'ordre croissant.
Exercice 2
Un générateur de Charabia latin
Nous nous proposons de réaliser un générateur de charabia latin (jeu
utilisé par les petits enfants de langue anglaise), c'est-à-dire un
programme qui modifie un mot du français en un mot d'un charabia latin.
Cette transformation s'effectue en plaçant la première lettre du mot à la
fin, et en y ajoutant la lettre "a". Ainsi, le mot "tortue" devient
"ortueta", "Scilab" devient "cilabsa", et ainsi de suite.
Ecrivons maintenant un programme Scilab qui lira une phrase en français et
écrira son équivalent en charabia latin. Pour des raisons de simplicité,
nous ne tiendrons pas compte du problème des lettres majuscules et des
signes de ponctuation.
L'écriture du programme traduisant le fonctionnement de ce jeu sera
facilitée par la construction des modules suivants :
1) Ecrire la fonction [ch]=Entrez_Texte permettant d'entrer le texte en
français représenté par la chaîne de caractères ch (vérifiez