Vous êtes sur la page 1sur 64

Université Ouaga 1 JKZ

UFR/SEA
Département d’informatique :
L1-S1

Cours d’informatique:
Algorithmique Niveau 1
et
Programmation SciLab
6 Crédits
CT : 24h
TD : 24h
TP : 24h
Mai 2021

Dr Kiswendsida Kisito Kaboré


http://kisitokab.xyz
Objectif global du cours :

• A la fin du cours (CT+TD+TP), vous serez capable de


réaliser vos propres programmes informatiques.

• Vous allez pouvoir utiliser judicieusement les


structures de donnée statiques dans les algorithmes.

Dr Kiswendsida Kisito Kaboré.


http://Kisitokab.xyz 2
Objectifs spécifiques du cours
Vous serrez capable de
a) Concevoir un bon algorithme et de le rédiger
pour solutionner un problème posé.
b) Utiliser judicieusement les structures de
donnée statiques dans les algorithmes.
c) Utiliser correctement le logiciel de calcul
scientifique Scilab (Scientifique Laboratory)
d) Traduire correctement vos algorithmes en
programmes Scilab.
Dr Kiswendsida Kisito Kaboré.
http://Kisitokab.xyz 3
Évaluation
Évaluation pratique pendant le TP (2/5).
Évaluation théorique (3/5).

Dr Kiswendsida Kisito Kaboré.


http://Kisitokab.xyz 4
contenu
I. Notion d’algorithmique

II. Construction d’algorithme

III. Méthodes de construction d’algorithmes

IV. Les types et structures de données statiques

V. Introduction à la programmation avec SCILAB


– Exemple de langage de programmation : Scilab
– Modularité : Procédures et fonctions
– Graphisme
Dr Kiswendsida Kisito Kaboré.
http://Kisitokab.xyz 5
Chapitre 5 :
La programmation avec le
langage SCILAB

Dr Kiswendsida Kisito Kaboré.


http://Kisitokab.xyz 169
- Objectifs spécifiques :

1) Se familiariser avec l’utilisation du langage


Scilab pour programmer

Dr Kiswendsida Kisito Kaboré.


http://Kisitokab.xyz 170
Contenu
1.Généralités sur les langages de programmation

2.Présentation de Scilab

3.Programmation en Scilab

4.La manipulation des matrices et vecteurs

5.Les graphiques

6.Les fonctions

7.Les fichiers Kiswendsida Kisito Kaboré


http://kabore.shost.ca
171
1. Généralités sur les langages de programmation
a. Langage informatique
• On appelle «langage informatique» ou«langage
de programmation » un langage destiné à
décrire l'ensemble des actions consécutives
qu'un ordinateur doit exécuter.

Kiswendsida Kisito Kaboré


172
http://kabore.shost.ca
1. Généralités sur les langages de programmation
a. Langage informatique

• Un langage informatique est ainsi une façon


pratique pour nous (humains) de donner des
instructions à un ordinateur.
• Un langage informatique est rigoureux:
• –À CHAQUE instruction correspond UNE action
du processeur.

Kiswendsida Kisito Kaboré


173
http://kabore.shost.ca
1. Généralités sur les langages de programmation
b. Langage machine
• Le langage utilisé par le processeur est appelé
langage machine.
• Il s'agit des données telles qu'elles arrivent au
processeur, constituées d'une suite de 0 et de 1
(données binaire).

Kiswendsida Kisito Kaboré


174
http://kabore.shost.ca
1. Généralités sur les langages de programmation
b. Langage machine

• Le langage machine n'est pas compréhensible


par l’homme, c'est pourquoi des langages
intermédiaires (langage de programmation),
compréhensibles par l'homme, ont été mis au
point.

Kiswendsida Kisito Kaboré


175
http://kabore.shost.ca
1. Généralités sur les langages de programmation
C. Niveaux des langages
• Un langage est dit de bas niveau lorsque celui-
ci est composé de valeurs binaires ou en est
proche
–ex: langage machine.
• un langage de haut niveau est compréhensible
par l’homme.
–Ex: nos langues maternelles
• Dans le schéma ci-dessous, vous pouvez
observer la "hiérarchie" des niveaux de
langages. Kiswendsida Kisito Kaboré
176
http://kabore.shost.ca
1. Généralités sur les langages de programmation
C. Niveaux des langages
• Classement par niveau des langages.
Langage de Langage humain
haut niveau (mooré, dioula, fulfuldé, bouaba, etc.)

Langage de programmation de
haut niveau
(Scilab, c, pascal, Java, C++, C#, etc.)

Langage d’assemblage
(Assembleur)

Langage de
Langage machine
( valeurs binaires)
bas niveau Kiswendsida Kisito Kaboré
http://kabore.shost.ca
177
1. Généralités sur les langages de programmation
d. Compilation ou conversion en langage
machine
• Compiler un programme écrit dans un langage
de haut niveau (C, pascal, java, etc.) consiste à
le convertir dans un langage de bas niveau
(langage machine).

• Le logiciel ou programme chargé de faire cette


conversion est appelé compilateur.

Kiswendsida Kisito Kaboré


178
http://kabore.shost.ca
1. Généralités sur les langages de programmation
e. Interprétation et compilation
Langage compilé
• Un programme écrit dans un langage
informatique «compilé » va être traduit par un
compilateur, afin de générer un nouveau
fichier qui sera autonome.
• Autrement dit, ce fichier n'aura pas besoin
d'un programme pour s'exécuter.
• On dit que c’est un fichier exécutable.

Kiswendsida Kisito Kaboré


179
http://kabore.shost.ca
1. Généralités sur les langages de programmation
e. Interprétation et compilation
Langage interprété
• Un programme écrit dans un langage
informatique dit «interprété » a besoin d'un
programme auxiliaire (l'interpréteur) pour
traduire au fur et à mesure de l’exécution les
instructions du programme.

Kiswendsida Kisito Kaboré


180
http://kabore.shost.ca
1. Généralités sur les langages de programmation
e. Interprétation et compilation

Langage Domaine principal d’application Compilé/interprété

BASIC Programmation basique à but éducatif interprété


C Programmation système compilé
C++ Programmation système objet compilé
Cobol Gestion compilé
Fortran Calcul compilé
Java Programmation orientée internet Compilé/interprété
SCILAB et Calcul mathématique Compilé/interprété
MATLAB
LISP Intelligence artificielle intermédiaire
Pascal Enseignement compilé
PHP Développement de sites web dynamiques Langage interprété
Kiswendsida Kisito Kaboré
181
http://kabore.shost.ca
2.Présentation de Scilab
Typage
• Le typage est le fait d'attribuer un type (entier,
réel, caractère, etc.) aux éléments (variables,
constantes, etc.) utilisés dans un programme.
• Le typage peut être explicite ou implicite.
– Explicite quand les types sont expressément dit
dans le programme;
– Implicite quand le type est déterminé par le
compilateur ou l'interpréteur.

Kiswendsida Kisito Kaboré


182
http://kabore.shost.ca
2.Présentation de Scilab
Typage
• On parle de typage :
– Statique quand la vérification des types se fait dès
la phase de compilation;

– Dynamique lorsque celle-ci est faite durant


l'exécution.
• De plus un typage dynamique associe les types
aux valeurs, alors qu'un typage statique associe
le type à la variable.
• Scilab est un langage à typage dynamique.
Kiswendsida Kisito Kaboré
183
http://kabore.shost.ca
2.Présentation de Scilab

• Il est utilisé pour résoudre numériquement de


nombreux problèmes:
– résolution de systèmes linéaires (même creux),
– calcul matriciel
– transformée de Fourier rapide,
– plusieurs méthodes de résolution d‘équations
différentielles,
– Etc.

Kiswendsida Kisito Kaboré


184
http://kabore.shost.ca
2.Présentation de Scilab

• Un avantage de Scilab par rapport aux langages


Fortran, C, Pascal, etc. est qu’il possède
– un grand nombre de fonctions préprogrammées
– des outils de représentation graphique.

• (La connaissance de Scilab est requise pour tous


les candidats à l’Agrégation de Mathématiques en
France.)

Kiswendsida Kisito Kaboré


185
http://kabore.shost.ca
3. Programmation en Scilab

• Quand on lance le programme SCILAB une


fenêtre (interactive) de commande apparaît avec
un symbole --> (appelé prompt) attendant les
instructions de l’utilisateur.

Kiswendsida Kisito Kaboré


186
http://kabore.shost.ca
3. Programmation en Scilab

• On peut écrire des instructions directement dans


la console après la flèche -->,
• puis taper la touche Entrée pour que le calcul
s’effectue.
• ans signifie answer (réponse).

Kiswendsida Kisito Kaboré


187
http://kabore.shost.ca
3. Programmation en Scilab
Calcul numérique

• La virgule des nombres décimaux est notée avec


un point.
• Par exemple :
-->2+3.4
ans =
5.4

Kiswendsida Kisito Kaboré


188
http://kabore.shost.ca
3. Programmation en Scilab
Calcul numérique
• Il est nécessaire de bien respecter la casse
(majuscules et minuscules) pour que les calculs
s’effectuent correctement.
• Par exemple:
• -->sqrt(9) -->SQRT(9)
ans = ! -- error 4
3

Kiswendsida Kisito Kaboré


189
http://kabore.shost.ca
3. Programmation en Scilab
Calcul numérique
• %e et %pi représentent respectivement e et π:

-->%e
%e =
2.718281828459

Kiswendsida Kisito Kaboré


190
http://kabore.shost.ca
3. Programmation en Scilab
Variables
• Les variables n’ont pas besoin d’être déclarées à
l’avance, mais toute variable doit avoir une valeur.
• Exemple
-->a
!--error4 Variable non définie: a
-->a=%pi/4 (initialisé à la déclaration)
a = 0.785398163397
-->a
a = 0.785398163397
-->
Kiswendsida Kisito Kaboré
191
http://kabore.shost.ca
3. Programmation en Scilab
Affichage
• Si l’on ne précise pas SCILAB affiche toujours le
résultat des commandes après l’appui sur la
touche return (entrée).
• Si l’on veut ne pas afficher le résultat alors on
ajoute un « point-virgule » à la fin de la
commande.
• Exemple :
-->a=%pi/4 ;
-->
-->a
a = 0.785398163397
--> Kiswendsida Kisito Kaboré
192
http://kabore.shost.ca
3. Programmation en Scilab
Affichage
• On peut utiliser la fonction disp().
• Syntaxe
disp ( VariableV )
• permet d’afficher le contenu de la variable
VariableV à l’écran.
• Exemple
-->disp(a)
a=
0.785398163397
--> Kiswendsida Kisito Kaboré
193
http://kabore.shost.ca
3. Programmation en Scilab
Affichage
• La routine printf().
• Affiche une chaine de caractère
• Les formats f pour afficher des nombres réels et d
pour les entiers.
• Exemple
-->x =6;
-->printf(’La racine carrée de %f est %f\n’, x, sqrt(x ));

Kiswendsida Kisito Kaboré


194
http://kabore.shost.ca
3. Programmation en Scilab
Affectation
• L’affectation est réalisée avec le signe =
• Syntaxe:
variable = expression

• Exemples:
nom=“paul”;
age=51;
disp(nom)

Kiswendsida Kisito Kaboré


195
http://kabore.shost.ca
3. Programmation en Scilab
Les instructions alternatives
• Les opérateurs de comparaison

Kiswendsida Kisito Kaboré


196
http://kabore.shost.ca
3. Programmation en Scilab
Structure alternative simple
Syntaxe en Scilab: En algorithmique:
if <condition> then Si <condition> Alors
<instructions>
<instructions> Finsi
end

Kiswendsida Kisito Kaboré


197
http://kabore.shost.ca
3. Programmation en Scilab
Structure alternative simple
Exemple:
x=rand()*1.1;
p="face";
if x<0.5 then
p="pile";
end
disp(p)
Kiswendsida Kisito Kaboré
198
http://kabore.shost.ca
3. Programmation en Scilab
Structure alternative double
Syntaxe : Exemple:
if <condition> then
<instructions_1> note=9.45;
else if note<10 then
<instructions_2> decision=’redouble’;
end else
decision=’passe’;
end
disp(decision)

Kiswendsida Kisito Kaboré


199
http://kabore.shost.ca
3. Programmation en Scilab
Structures itératives
Syntaxe :
La boucle For

for <variable> = <expr>


<instructions>
end

On peut le comprendre comme :


Pour <variable> parcourant les éléments d’un intervalle Répéter
<instructions>
FinPour

Kiswendsida Kisito Kaboré


200
http://kabore.shost.ca
3. Programmation en Scilab
Structures itératives
La boucle For : Syntaxe
Permet de répéter Pour une variable prenant
successivement les valeurs dans un intervalle
donnée.
Syntaxe en Scilab:
for <variable> = <expr>
<instructions>
end

Kiswendsida Kisito Kaboré


201
http://kabore.shost.ca
3. Programmation en Scilab
Structures itératives
Exemple
En langage algorithmique : Traduction en Scilab :

Pour n Є[1,20] répéter for n=1:20


Afficher(n*n) disp(n*n)
FinPour end

Kiswendsida Kisito Kaboré


202
http://kabore.shost.ca
3. Programmation en Scilab
Structures itératives
La boucle while : Syntaxe
En langage algorithmique : Traduction en Scilab :

Tant que <condition> while <condition>

<instructions> <instructions>

FinTantque end

Kiswendsida Kisito Kaboré


203
http://kabore.shost.ca
3. Programmation en Scilab
Structures itératives
La boucle while : Exemple
x=rand();
n=0;
while x<0.9 //tant que …
n=n+1;
x=rand();
end
disp(n)
Les commentaires sont placés après //
Kiswendsida Kisito Kaboré
204
http://kabore.shost.ca
4.Manipulation des matrices

• Pour définir une matrice il faut entrer au clavier la


liste de ses éléments, en adoptant les conventions
suivantes :
– les éléments d'une même ligne sont sépares par des
espaces ou des virgules ;
– la liste des éléments doit être entourée de crochets [ ];
– chaque ligne, sauf la dernière, doit se terminer par un
point-virgule.

Kiswendsida Kisito Kaboré


205
http://kabore.shost.ca
4.Manipulation des matrices
• Par exemple, la commande :
-->A=[1 1 1;2 4 8;3 9 27]
• produit la sortie :
A = 1 1 1
2 4 8
3 9 27
• Si l'instruction est terminée par un point virgule «;»,
le résultat n'apparaît pas a l‘écran.

Kiswendsida Kisito Kaboré


206
http://kabore.shost.ca
4.Manipulation des matrices

•Un vecteur ligne


A = 1 1 1 •Une suite de valeurs
2 4 8
3 9 27

•Un vecteur colone


•Une suite de valeurs
Kiswendsida Kisito Kaboré
207
http://kabore.shost.ca
4.Manipulation des matrices
• Les vecteurs sont des matrices particulières.
• Pour définir un vecteur (colonne et ligne) :
--> v=[1;2;3]
v=
1
2
3

--> v=[1,2,3]
v=
1 2 3
Kiswendsida Kisito Kaboré
208
http://kabore.shost.ca
4.Manipulation des matrices
L’opérateur « deux points » :
• Il permet de créer des suites de réels réguliers. Cela
permet de générer des vecteurs dont les éléments
sont réguliers.
• Syntaxe 1:
a:b (avec a<b) donne le vecteur ligne:
[a, a+1, a+2, · · · , a+n]
avec a+n ≤ b.
a: valeur initiale
b: valeur finale
le pas (différence entreKiswendsida
deuxKisitoéléments)
Kaboré
est 1:
209
http://kabore.shost.ca
4.Manipulation des matrices
L’opérateur « deux points » :
• Syntaxe 2:
a:p:b est le vecteur:
[a, a+p, a+2*p, · · · , a+n*p] avec a+n*p ≤ b
a: valeur initiale
b: valeur finale
p: le pas (différence entre deux éléments)

Kiswendsida Kisito Kaboré


210
http://kabore.shost.ca
4.Manipulation des matrices
Linspace :
• Linspace est une fonction qui permet d’avoir des
valeurs régulièrement espacées entre deux
extrémités.
• Syntaxe :
• linspace(a,b,n) engendre un vecteur ligne de n
points régulièrement espacés entre a et b.
• Par exemple:
• --> linspace(1,5,8)

Kiswendsida Kisito Kaboré


211
http://kabore.shost.ca
4.Manipulation des matrices
Linspace :
• linspace(a,b):
Si on ne précise pas le nombre de points,
linspace génère par défaut avec n=100

• Exemple:
• -->linspace(0,2*%pi)

Kiswendsida Kisito Kaboré


212
http://kabore.shost.ca
4.Manipulation des matrices
Les fonctions Sum et Prod
• sum(v): calcule la somme des éléments du vecteur v

• prod(v) : calcule le produit des éléments du vecteur v

• Exemple:
sum(2:10)
prod(linspace(1,9,5))

Kiswendsida Kisito Kaboré


213
http://kabore.shost.ca
5.Les graphiques
Introduction au graphisme
• Supposons que l'on veuille visualiser la fonction
y = e-x cos(4x) Pour x ϵ [0; 2ᚂ].

• On peut tout d'abord créer un maillage de


l'intervalle par la fonction linspace :
-->x=linspace(0,2*%pi,101);

Kiswendsida Kisito Kaboré


214
http://kabore.shost.ca
5.Les graphiques
Introduction au graphisme
• On peut alors calculer les valeurs yi de la fonction
pour chaque composante xi du maillage, ce qui,
grâce aux instructions « vectorielles » ne nécessite
aucune boucle.
-->y=exp(-x).*cos(4*x);
• La fonction plot permet de tracer une courbe
passant par les points dont les coordonnées sont le
vecteur x pour les abscisses et y pour les
ordonnées.
-->plot(x,y) Kiswendsida Kisito Kaboré
215
http://kabore.shost.ca
5.Les graphiques
Exercice
• Tracer le graphe de la fonction
f(x) = sin(x)/x
pour xϵ [0; 4*pi].

Kiswendsida Kisito Kaboré


216
http://kabore.shost.ca
6.Les Fonctions
Syntaxe
• Toute déclaration de fonction doit commencer par
function et terminer par endfunction.

function [y1,...,yn] = nom_fonction (x1,...,xm)


<instructions>
endfunction

• où les xi sont les arguments d'entrée (paramètres),


les yj étant les arguments de sortie (résultats).
• nom_fonction est le nom de la fonction
Kiswendsida Kisito Kaboré
217
http://kabore.shost.ca
6.Les Fonctions
Exemple

function [x1,x2] = resoud_equ_2d (a, b,c)


delta = b^2 -4*a*c
x1 = (-b -sqrt(delta))/(2*a)
x2 = (-b + sqrt(delta))/(2*a)
endfunction

Kiswendsida Kisito Kaboré


218
http://kabore.shost.ca
6.Les Fonctions
Exercice
1.Modifier la fonction resoud_equ_2d pour qu‘elle traite
uniquement les solutions réelles.
2.Écrire une fonction qui prend en paramètre 2 entiers
positifs et retourne leur pgcd.
3.On cherche à connaître le plus petit entier p tel que 2p
soit supérieur ou égal à entier positif b.
a) Ecrire un algorithme qui résout ce problème
b) Traduire cet algorithme en Scilab en écrivant une
fonction petitepuisance qui prend b comme paramètre
et retourne p:
Kiswendsida Kisito Kaboré
219
http://kabore.shost.ca
6.Les Fonctions
Fonctions d'entrée/sortie
• La fonction input permet de rentrer un
paramètre interactivement.
• Pour demander à l’utilisateur la valeur de la
variable a , on peut écrire :
a=input(“Donner la valeur de a : “)

• La fonction disp permet l'affichage a l'écran.

Kiswendsida Kisito Kaboré


220
http://kabore.shost.ca
6.Les Fonctions
Fonctions d'entrée/sortie

En langage Traduction en
algorithmique : Scilab :

1. demander e 1. e=input("Somme en euros : ")

2. demander t 2. t=input("Taux de change : ")

3. d←e*t 3. d=e*t

4. afficher d 4. disp(d)
Kiswendsida Kisito Kaboré
221
http://kabore.shost.ca
6.Les Fonctions
Fonctions d'entrée/sortie
Exemple
a = input("Entrez une valeur");

if (a-2*int(a/2))==0 then
disp("le nombre entré est pair");
else
disp("le nombre entré est impair");
end
Kiswendsida Kisito Kaboré
222
http://kabore.shost.ca
7. Les Fichiers
• On peut écrire dans un fichier une suite
d’instructions appelée script et les faire exécuter
par la commande exec
-->exec nom_du_fichier
Ou
-->exec(‘‘nom_du_fichier’’)

Kiswendsida Kisito Kaboré


223
http://kabore.shost.ca
7. Les Fichiers

• Les fichiers de scripts scilab ont pour extension .sce


• C’est-à-dire que le nom du fichier se termine .sce

Kiswendsida Kisito Kaboré


224
http://kabore.shost.ca
7. Les Fichiers
• Lorsque le fichier ne contient que des fonctions
(aussi appelées macros) l’extension est .sci

• Exemple: mabiblio.sci

• Les fonctions contenues dans ce fichier peuvent


alors être appelées dans Scilab après avoir charger
le fichier par la commande exec.

Kiswendsida Kisito Kaboré


225
http://kabore.shost.ca
• Je vous remercie

Kiswendsida Kisito Kaboré


226
http://kabore.shost.ca
Quelques liens à visiter :
• https://www.scilab.org/
• https://fr.wikipedia.org/wiki/Scilab
• https://www.labri.fr/perso/maylis/AlgoSem2/
• http://cours.pise.info/algo/variables.htm
• http://foad.ugb.sn/course/view.php?id=267
• http://Kisitokab.xyz
• https://fr.wikipedia.org/wiki/Algorithmique

Dr Kiswendsida Kisito Kaboré.


http://Kisitokab.xyz 227

Vous aimerez peut-être aussi