TP Matlab(4) Exercices Chaînes Caractères

Telechargé par Saïd Mançour Billah
UNIVERSITE IBN ZOHR Année Universitaire : 2019-2020
Ecole Nationale des Sciences Appliquées Agadir Filière : CP 1
Notes de Cours Matlab
Les fonctions
Création d’une fonction :
function [val1, val2 ,..vlan] = nom_fonct (arg1,arg2 ,…argk)
val1, val2 ,…..représentent les valeurs de sortie de la fonction ;
arg1, arg2, …..représentent les paramètres d’entrée.
N.B. en Matlab il est strictement obligatoire de sauvegarder la fonction dans un ficher sous le
même nom que de celui de la fonction. Exemple : nom_fonct.m
Exemple :
On crée une fonction qui permet de calculer y = (2*x+3)/2.
function y = fonct ( x )
y = (2*x + 3) /2
end
On sauvegarde le fichier fonct.m
A l’invite de commande :
>> y = fonct (4)
y = 5.5
UNIVERSITE IBN ZOHR Année Universitaire : 2019-2020
Ecole Nationale des Sciences Appliquées Agadir Filière : CP 1
TP 4 - Matlab
Manip.1
a) Ecrire une fonction qui reçoit en entrée une chaine de caractère et un symbole, et
renvoi en sortie le nombre d’occurrence de ce symbole dans la chaine.
b) Ecrire une fonction qui reçoit en entrée deux chaînes de caractères puis renvoie le
résultat logique de leur comparaison.
Manip.2
Ecrire une fonction qui calcule les nème termes (n passé en argument) de la suite de Fibonacci :
avec F0 = 1 et F1 = 1
Manip.3
a)
Ecrire une fonction qui calcule les nème termes (n passé en argument) des suites entières Un et
Vn définies ci-dessous.
U0 = 1 V0 = 1
Un = Vn-1 + 1 Vn = 2Un - 1
b)
Ecrire une fonction select_terme qui permet de sélectionner le nème terme d’une des
suites, en fonction d’un des arguments d’entrée, choix (si choix = 1, on donnera en
sortie Un ; si choix = 2, on donnera en sortie Vn; sinon, la sortie donnera les
deux:([Un ;Vn]). Utilisez la fonction définie précédemment et l’instruction
switch...case.
Manip.1
1.
function [nbr] = nbr_symbole(ch, s)
%ch : la chaîne d’entrée
%s : le caractère dont on cherche le nombre de répétitions
L=length(ch); %taille de la chaîne
nbr =0; %initialisation du nombre de répétitions
for i=1:L %itération de la chaîne
if(ch(i) == s) %si le caractère actuel est semblable au
caractère qu’on cherche
nbr=nbr+1; %incrémentation du nombre de répétition
end
end
end
2.
function [r] = compChaines(ch1, ch2)
r=1; %on suppose au début que le résultat de la comparaison est
vrai, et on étudie tous les cas où les deux chaînes sont
différentes. Si un seul cas est confirmé, le résultat reçoit 0 et ne
peut plus revenir en arrière.
if(length(ch1)~=length(ch2)) %cas où les deux chaînes ont des
tailles différentes
r=0;
else
for i=1:length(ch1) %étudier le cas de chaque couple de
caractères
if(ch1(i)~=ch2(i))
r=0; %si un seul couple de caractères est
différent, le résultat reçoit 0
end
end
end
end
Manip.2
function [F] = fib(n)
if(n==0 || n==1)%fib(0) et fib(1) reçoivent une valeur directe
F=1;
else
F = fib(n-1) + fib(n-2); %fib doit être calculée à partir
d’elle-même. Elle va s’auto-appeler à chaque fois avec des n de plus
en plus petits jusqu’à arriver à fib(0) et fib(1) où elle aura des
valeurs, puis elle commence à remplacer.
end
end
Manip.3
a)
function [U] = Un(n)
if(n==0)
U=1;
else
U= Vn(n-1)+1; %on doit appeler la fonction Vn afin de
calculer Un
end
end
function [V] = Vn(n)
if n==0
V=1;
else
V= 2*Un(n)-1; %on doit aussi appeler la fonction Un pour
calculer Vn
end
end
b)
function [A] = select_terme(n, choix)
switch(choix)
case 1
A=Un(n);
case 2
A=Vn(n);
otherwise %autrement
A=[Un(n) Vn(n)]; %on crée un vecteur qui a le
résultat de la suite Un comme premier élément et Vn comme
deuxième élément
end
end
1 / 5 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans l'interface ou les textes ? Ou savez-vous comment améliorer l'interface utilisateur de StudyLib ? N'hésitez pas à envoyer vos suggestions. C'est très important pour nous!