Cours - Page d`accueil
Transcription
Cours - Page d`accueil
Informatique Cours Lycée Fénelon BCPST 1 Initiation à SCILAB A. Utilisation de SCILAB en mode immédiat A. 1. Les types de données simples . . . . . . . . . a) Les constantes prédéfinies . . . . . . . b) Les constantes définies par affectation c) Les booléens . . . . . . . . . . . . . . d) Les fonctions prédéfinies . . . . . . . . e) Les chaînes de caractères . . . . . . . A. 2. Les opérations sur les données simples . . . . a) Opérateurs arithmétiques . . . . . . . b) Opérateurs relationnels . . . . . . . . c) Opérateurs logiques . . . . . . . . . . . . . . . . . . . . 3 3 3 4 4 5 5 6 6 6 6 B. Utilisation de SCILAB en mode différé B. 1. Écriture d’un script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B. 2. Écriture d’une fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 7 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introduction Il existe au moins deux manières d’utiliser SCILAB : • en mode immédiat (ou interpréteur), c’est-à-dire comme une calculatrice géante, en tapant sur la ligne de commande ce que l’on veut voir exécuter puis en attendant le résultat ; • en mode différé (ou compilateur), c’est-à-dire comme un environnement de programmation en écrivant des scripts (avec l’éditeur de texte) puis en invoquant ces scripts à partir de l’invite de commande. L’objectif de ce chapitre est de décrire ces deux modes de fonctionnement. 2 A. Utilisation de SCILAB en mode immédiat Dans un premier temps, nous allons utiliser SCILAB comme une calculatrice scientifique, c’està-dire en mode immédiat. A. 1. Les types de données simples Les commandes envoyées à SCILAB peuvent être des expressions ou des instructions, construites à partir des données connues par le logiciel. Ces données sont très nombreuses et nous nous contentons ici de décrire celles qui permettent une utilisation basique de SCILAB. a) Les constantes prédéfinies On distingue deux types de constantes : celles prédéfinies et celles définies par affectation (que nous étudierons au paragraphe suivant). Ces constantes peuvent être des nombres réels ou des nombres complexes. Voici une liste (non exhaustive) des constantes prédéfinies dans SCILAB : Constante mathématique π e ε-machine i Instruction SCILAB %pi %e %eps %i Exercice 1. Tapez à l’invite les expressions suivantes, suivies de la touche entrée : --> 2 ∗ %pi // l’étoile ∗ désigne la multiplication --> (1 + %e)/2 // le slash / désigne la division --> %eps --> 1 + %eps --> %iˆ2, (1 − %i)ˆ2 // ˆ permet d’élever à la puissance --> 2 ∗ %pi + ... 3^2 --> %pi; Remarques : • Le double slash // permet d’ajouter un commentaire : SCILAB ignore ce qui suit. • Sauf pour la dernière commande, la réponse (answer ) est donnée sous la forme ans = suivi du résultat (sur la ligne suivante). La variable ans est créée automatiquement pour stocker la valeur de l’expression courante. • Les touches du clavier représentant des flèches verticales vous permettent de circuler rapidement à travers toutes vos frappes précédentes, puis de les éditer (pour éventuellement les modifier) avec les flèches gauche et droite. • Les calculs sont effectués en double précision (16 chiffres après la virgule). SCILAB n’est donc pas un logiciel de calcul formel : il ne connaît ni π ni e mais seulement des valeurs approchées de ces nombres. On verra que, pour cette raison, SCILAB ne trouve pas 0 lorsqu’il calcule sin π !! • On peut entrer plusieurs commandes sur une même ligne : il suffit pour cela de séparer les différentes commandes par une virgule. • On peut également entrer une seule commande sur plusieurs lignes (lorsque l’instruction est trop longue) en terminant chaque ligne que l’on veut prolonger par des points de suspension. • Le point virgule ; est un inhibiteur d’affichage, c’est-à-dire qu’il indique à SCILAB de ne pas afficher le résultat du calcul. C’est très pratique pour les calculs intermédiaires. 3 b) Les constantes définies par affectation L’affectation est l’instruction qui donne une valeur à une variable (que l’on crée ou que l’on modifie). Sa syntaxe est simple : on choisit une lettre (seule ou suivie de lettre(s) ou de chiffre(s)) et on lui attribue une valeur à l’aide du signe =. Exercice 2. Tapez à l’invite les expressions suivantes, suivies de la touche entrée : --> a = 2 // On doit lire : a est affectée à la valeur 2 --> a = a + 1 // On doit lire : a est remplacé par a + 1 --> A=2 ∗ %pi; // SCILAB distingue minuscules et majuscules --> a + A, ans + a --> clear a, a // clear permet de supprimer une variable --> A1 = 1.2D − 1, // notation scientifique --> x = rand() // rand() génère un nombre aléatoire entre 0 et 1 Remarques : • Lorsqu’on affecte une valeur à la variable a, la réponse de SCILAB est donnée sous la forme a = suivi de la valeur affectée (sur la ligne suivante). • La première commande de l’exercice crée la variable a et lui affecte la valeur 2. La deuxième instruction modifie l’affectation de a : la nouvelle valeur de a est définie à l’aide de l’ancienne. • ans est une variable temporaire. Il faut donc faire attention lorsqu’on l’utilise car son affectation change dès que l’on envoie une expression à SCILAB. • L’instruction clear a supprime la variable a. L’instruction clear (sans rien derrière) supprime toutes les variables. • Une variable qui n’a pas été affectée ou qui a subi un clear n’existe pas (SCILAB renvoie un undefined variable lorsqu’on lui demande la valeur d’une variable qui n’est pas affectée). • Essayer plusieurs fois la commande x = rand() (ne rien mettre entre les parenthèses). c) Les booléens Les constantes booléennes sont Constante boolénne Vrai Faux Instruction SCILAB %t %f Ces constantes permettent d’évaluer la valeur logique d’une relation. Exercice 3. Tapez à l’invite les expressions suivantes, suivies de la touche entrée : --> %t, %f --> a = 3 > 2, b = 1 > 2 --> a | b, a&b // | et & désignent le ou et le et logiques --> ˜a // ˜ désigne la négation logique BOOLE G, anglais, 1815-1864 Autodidacte, Boole peut être considéré comme le créateur de la logique moderne. Il est à l’origine de la notion d’ensemble et du calcul sur ces ensembles liant la logique mathématique au calcul algébrique (The Mathematical Analysis of Logic, 1847). Boole résolut ainsi un des problèmes fondamentaux de formalisation du langage et du raisonnement, que se posaient les mathématiciens depuis Leibniz. La pertinence de ses travaux lui permirent l’obtention (1849) d’une chaire de mathématiques au Queen’s College de Cork (sud de l’Irlande). 4 d) Les fonctions prédéfinies Comme tout bon logiciel de calcul, SCILAB possède une bibliothèque de fonctions usuelles. Le tableau suivant dresse la liste des plus courantes : Fonction exp log sin cos tan |·| Instruction SCILAB exp log sin cos abs Ens. de définition R R∗+ R R tan π R\ + πZ 2 C √ · ℜe ℑm sqrt real imag C C C Exercice 4. Tapez à l’invite les expressions suivantes, suivies de la touche entrée : --> log(−1) --> a = sin(%pi), a<%eps --> abs(1 + %i) --> sqrt(2 ∗ %i) Remarques : • Comme nous l’avions annoncé, SCILAB ne trouve pas 0 lorsqu’il calcule sin π mais l’erreur qu’il commet est bien évidemment inférieure à l’ε-machine. • SCILAB ne bronche pas si vous lui demandez la racine carrée d’un nombre complexe : il vous renvoie la racine de partie réelle positive (pour les nombres réels négatifs, il choisit la racine de partie imaginaire positive). e) Les chaînes de caractères Une chaîne de caractères est, comme son nom l’indique, une phrase constituée avec les lettres, les chiffres et les symboles spéciaux auxquels vous avez accès avec le clavier (il y a en tout 223 caractères imprimables dans le code ASCII). Pour indiquer à SCILAB une chaîne de caractères comme bonjour , on l’écrit entre guillemets doubles : "bonjour". Exercice 5. Tapez à l’invite les expressions suivantes, suivies de la touche entrée : --> s1="bon", s2="jour" --> s1+s2 // + désigne ici la concaténation --> disp("salut") --> "l’’apostrophe" // ce sont deux guillemets simples Remarques : • La concaténation permet de coller deux chaînes de caractères. • La fonction disp affiche une chaîne de caractères sans l’affecter à la variable ans. • La succession de deux guillemets simples ne forme pas des guillemets doubles mais permet d’afficher l’apostrophe à l’intérieur d’une chaîne de caractère. 5 A. 2. Les opérations sur les données simples Nous nous contentons ici des opérations les plus courantes sur les différents types de données rencontrés au paragraphe précédent. La plupart de ces opérations ont déjà été introduites dans les exercices précédents. a) Opérateurs arithmétiques Les principales opérations sur les nombres sont : b) Opération mathématique Instruction SCILAB addition + + soustraction − − multiplication × ∗ division ÷ / puissance ˆ ^ Opérateurs relationnels Les principales relations sont : Relation mathématique Instruction SCILAB égalité = == différent = ∼= ou <> inférieur strict < < supérieur strict > > inférieur ou égal <= supérieur ou égal >= Remarque : • En SCILAB, le signe = sert pour l’affectation des variables alors que == est utilisé dans les tests. Si vous rentrez l’expression 3 = 2 derrière l’invite de commande, SCILAB réagit par Warning: obsolete use of = instead of ==. La syntaxe exacte de l’expression boolénne 3 est égal à 2 est 3 == 2. c) Opérateurs logiques Les principaux opérateurs logiques sont : Opérateur logique Instruction SCILAB conjonction et & disjonction ou | négation non ∼ 6 B. Utilisation de SCILAB en mode différé Jusqu’à présent, SCILAB a été utilisé de manière conversationnelle, c’est-à-dire que les résultats des commandes apparaissaient au fur et à mesure qu’on les validait. Il est possible d’écrire ces suites d’instructions dans des fichiers qui pouront être appelés durant une session. On distingue deux types de fichiers : les scripts et les fonctions . B. 1. Écriture d’un script La ligne de commande est pratique lorsque l’on utilise SCILAB comme une calculatrice. Mais si l’on désire rentrer une suite d’instructions plus longue ou si l’on veut répéter plusieurs fois la même séquence de commandes, il est préférable d’écrire celles-ci dans un script (à l’aide de l’éditeur de texte) puis de l’exécuter à partir de SCILAB. Pour cela, on doit : ; • ouvrir une fenêtre de l’éditeur de texte en cliquant sur l’icône • sauver le fichier avec l’extension .sce ou .sci dans son dossier personnel (en évitant les collisions de noms) ; • taper la suite d’instructions dans le fichier ; • exécuter ce script en cliquant sur Exec . . . dans le menu Fichier puis en choisissant (en changeant éventuellement de répertoire courant) votre script : Exercice 6. Écrire un script qui, lorsqu’il est exécuté, fait s’afficher la phrase Bonjour, nous sommes le date où date désigne la date du jour. ♦ Dans un fichier Bonjour.sce, on écrit "Bonjour, nous sommes le "+date() ♦ Remarques : • Attention ! La collision de nom est une source très fréquente d’erreur(s). Pour éviter les problèmes, je vous conseille de toujours bien vérifier que le nom de votre script n’est pas déjà le nom d’une instruction SCILAB. • Pour s’y retrouver dans vos fichiers SCILAB, il est recommandé de bien sauver vos scripts sous l’extension .sce ou .sci. 7 B. 2. Écriture d’une fonction La programmation sous SCILAB fait un usage immodéré des fonctions (quelques instructions mises à part, l’essentiel des commandes de SCILAB correspond à des fonctions). Outre les fonctions usuelles que connaît SCILAB, on peut en acquérir d’autres en chargeant en mémoire des bibliothèques préfabriquées (packages). On peut également définir soi-même de nouvelles fonctions en écrivant puis en exécutant des sous-programmes de type function, à l’instar des scripts. Pour cela, on doit : • ouvrir une fenêtre de l’éditeur de texte en cliquant sur l’icône ; • taper la suite d’instructions dans le fichier en adoptant la syntaxe suivante : function y=nom(x1,x2,...,xn) // x1,...,xn sont les variables liste d’instructions // calcul de y à partir des variables endfunction • sauver le fichier avec l’extension .sce ou .sci dans son dossier personnel ; • charger cette fonction en mémoire de la même manière qu’on exécute un script (en cliquant sur Exec . . . dans le menu Fichier puis en choisissant nom.sci) : si tout se passe bien, SCILAB répond Exécution terminée. (mais ne fait rien dans l’immédiat) ; • utiliser ensuite cette fonction comme n’importe qu’elle autre fonction. La compilation d’un script (extension .sce) entraine l’exécution immédiate des commandes contenues dans le script. Au contraire, lorsqu’on compile une fonction (extension .sci), SCILAB n’affiche rien dans l’immédiat mais charge la définition de la fonction en mémoire, ce qui permet de l’utiliser ensuite en précisant la valeur de la variable. On retiendra donc que l’on doit écrire une fonction lorsque l’on veut effectuer des commandes qui dépendent d’un paramètre et que l’on peut se contenter d’un script dans le cas contraire. Exercice 7. Écrire une fonction qui, lorsqu’elle est chargée puis exécutée, fait s’afficher la phrase Bonjour prénom , nous sommes le date où prénom désigne le prénom de l’utilisateur et date représente la date du jour. ♦ Dans un fichier Bonjour.sci, on écrit : function phrase = bonj(prenom) // évitez les accents phrase = "Bonjour " + prenom + ", nous sommes le " + date() endfunction puis on exécute ce fichier. On peut alors utiliser la fonction bonj comme toute autre fonction. 8 ♦