CH 4 : Types de données en Scilab

Documents pareils
Présentation du langage et premières fonctions

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Chapitre 10 Arithmétique réelle

Premiers pas avec Mathematica

TP 1. Prise en main du langage Python

Initiation à la Programmation en Logique avec SISCtus Prolog

STAGE IREM 0- Premiers pas en Python

Algorithmique et programmation : les bases (VBA) Corrigé

Les structures. Chapitre 3

ÉVALUATION FORMATIVE. On considère le circuit électrique RC représenté ci-dessous où R et C sont des constantes strictement positives.

Comparaison de fonctions Développements limités. Chapitre 10

Compléments de documentation Scilab : affichage de texte et formatage de nombres

Chapitre 2. Eléments pour comprendre un énoncé

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Définitions. Numéro à préciser. (Durée : )

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

TP Service HTTP Serveur Apache Linux Debian

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Module 16 : Les fonctions de recherche et de référence

AC AB. A B C x 1. x + 1. d où. Avec un calcul vu au lycée, on démontre que cette solution admet deux solutions dont une seule nous intéresse : x =

Calculabilité Cours 3 : Problèmes non-calculables.

Premiers Pas en Programmation Objet : les Classes et les Objets

S3CP. Socle commun de connaissances et de compétences professionnelles


Cours d initiation à la programmation en C++ Johann Cuenin

Demande d admission au Centre pédagogique Lucien-Guilbault Secteur primaire

Aide : publication de décisions VS

IMAGES NUMÉRIQUES MATRICIELLES EN SCILAB

Chapitre VI- La validation de la composition.

Exercices - Fonctions de plusieurs variables : corrigé. Pour commencer

Créer le schéma relationnel d une base de données ACCESS

Bases de programmation. Cours 5. Structurer les données

clef primaire ; clef étrangère ; projection ; restriction ; jointure ; SQL ; SELECT ; FROM ; WHERE

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Glossaire des nombres

avec des nombres entiers

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Qu est-ce qu une problématique?

Introduction à MATLAB R

STRICTEMENT CONFIDENTIEL

Comment créer et utiliser une fonction

Chapitre 1 Qu est-ce qu une expression régulière?

Les nombres entiers. Durée suggérée: 3 semaines

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Utilisation d objets : String et ArrayList

I. Introduction aux fonctions : les fonctions standards

Continuité et dérivabilité d une fonction

Etude de fonctions: procédure et exemple

TSTI 2D CH X : Exemples de lois à densité 1

CONSEILS POUR LA REDACTION DU RAPPORT DE RECHERCHE. Information importante : Ces conseils ne sont pas exhaustifs!

Python - introduction à la programmation et calcul scientifique

1. Qu est-ce que la conscience phonologique?

Algorithme. Table des matières

Mathématiques financières

Fiche PanaMaths Calculs avec les fonctions sous Xcas

Traitement de texte : Quelques rappels de quelques notions de base

Maple: premiers calculs et premières applications

Cours d algorithmique pour la classe de 2nde

Chap III : Les tableaux

Petit lexique de calcul à l usage des élèves de sixième et de cinquième par M. PARCABE, professeur au collège Alain FOURNIER de BORDEAUX, mars 2007

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

NOM : Prénom : Date de naissance : Ecole : CM2 Palier 2

Attestation de maîtrise des connaissances et compétences au cours moyen deuxième année

Cours 1 : La compilation

La Clé informatique. Formation Excel XP Aide-mémoire

Relation entre deux variables : estimation de la corrélation linéaire

Le graphisme et l écriture, en lien avec les apprentissages en maternelle

Séquence 4. Comment expliquer la localisation des séismes et des volcans à la surface du globe?

Algorithmique et Programmation, IMA

6. Les différents types de démonstrations

Calcul Formel et Numérique, Partie I

I. Programmation I. 1 Ecrire un programme en Scilab traduisant l organigramme montré ci-après (on pourra utiliser les annexes):

Pilotage de la masse salariale Déploiement de l outil de budgétisation

Corps des nombres complexes, J Paul Tsasa

Claude Delannoy. 3 e édition C++

Chapitre I Notions de base et outils de travail

Base de données relationnelle et requêtes SQL

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

Compter à Babylone. L écriture des nombres

Seconde Généralités sur les fonctions Exercices. Notion de fonction.

Fibonacci et les paquerettes

Représentation des Nombres

Initiation à la programmation en Python

Chapitre 1 : Évolution COURS

Feuille TD n 1 Exercices d algorithmique éléments de correction

FICHE TECHNIQUE PRODUIT

Les chaînes de caractères

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

CH.6 Propriétés des langages non contextuels

LA BATTERIE DU PORTABLE

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Explications des items d'obii pour la validation du B2I

Mathématiques I Section Architecture, EPFL

Logiciel de Base. I. Représentation des nombres

Contents. 1 Introduction Objectifs des systèmes bonus-malus Système bonus-malus à classes Système bonus-malus : Principes

Machines virtuelles Cours 1 : Introduction

CONFIGURATION DE BASE. 6, Rue de l'industrie BP130 SOULTZ GUEBWILLER Cedex. Fax.: Tel.:

Cours 7 : Utilisation de modules sous python

Transcription:

II. Le type CH 4 : Types de données en Scilab Nous avons mentionné dans le «CH 1 : Découverte de Scilab» que les nombres représentables en Scilab sont régis par la norme IEEE-754 (voir http://fr.wikipedia.org/wiki/ieee_754). Tous ces réels sont regroupés dans un même type de données, nommé. I. Les types de données en informatique I.1. Définition En informatique, chaque donnée est associée à un type de données. Les types de données sont à comprendre comme une classification des données. Formellement, un type de données est défini par : un ensemble des valeurs : toutes les valeurs qui ont le même type. un ensemble d opérateurs : les opérateurs qui permettent de manipuler et de combiner ces valeurs. La définition peut sembler un peu vague. Ainsi, afin d appréhender cette notion, nous allons détailler les principaux types de données qui sont utilisés dans Scilab. On pourra noter que nous avons déjà rencontré la plupart de ces types de données dans les chapitres précédents, sans toutefois les nommer précisément. I.2. La fonction typeof La fonction typeof permet d associer chaque objet à son type. Par exemple, on peut se demander quel est le type associé au réel 1. > typeof(1) Commençons donc par détailler le type. Rappelons les principaux opérateurs permettant de manipuler et de combiner les objets de type, déjà présentés dans le premier chapitre. + opérateur d addition - opérateur de soustraction opérateur de multiplication / opérateur de division opérateur puissance : permet de calculer x y opérateur puissance : x y est l équivalent de x y Il faut comprendre que tous ces opérateurs ont la même spécification, à savoir op :. Autrement dit, chacune de ces fonctions prend en entrée deux objets de type et les combinent pour obtenir un nouvel objet de type. Ceci n est pas très surprenant car correspond à la manipulation des réels en mathématiques : si l on somme, soustrait, multiplie, ou divise deux réels, on obtient un réel. Il est à noter que la fonction typeof peut être utilisée pour : estimer le type de données d une valeur. > typeof(3.4) estimer le type de données d une expression. > typeof(5+2*3/4) 1

estimer le type de données d une variable. > typeof(%pi) > a = 5; typeof(a) Le type d une variable est par définition le type de la valeur qu elle contient. III. Le type Le type (booléen en français) ne regroupe que deux éléments : %f et %t. La variable %t représente la valeur de vérité vrai et %f représente la valeur de vérité faux. Rappelons les principaux opérateurs permettant de manipuler et de combiner les objets de type. opérateur OU de Scilab & opérateur ET de Scilab opérateur NON de Scilab Les deux premiers opérateurs et & possèdent la même spécification, à savoir op :. L opérateur a pour spécification :. Ceci signifie que la disjonction (l opérateur ) et la conjonction (l opérateur &) de deux est un, et que la négation (l opérateur ) d un est un. La fonction typeof permet d illustrer le fonctionnement du type. > typeof(%t) On peut notamment tester les spécifications des opérateurs, & et. > typeof(%t & %f), typeof(%t %f), typeof( %f) Ces résultats ne sont pas surprenants puisque %t & %f vaut %f, que %t %f vaut %t et que %f vaut %t. Pour comprendre l intérêt du type de données, il faut introduire les opérateurs de comparaison. > permet de tester la supériorité stricte < permet de tester l infériorité stricte >= permet de tester la supériorité large <= permet de tester l infériorité large == permet de tester l égalité Ces opérateurs ont pour spécification op :. Ce ne sont pas des opérateurs combinant des mais qui permettent de créer des en combinant des objets de type. Ils seront utilisés pour créer des conditionnelles (cf CH 7). > typeof(3 <= %e) > x = (12 == 3.5 (11-9)+5), typeof(x) x = V 2

Conversion implicite de type Nous avons vu précédemment que l opérateur + a pour spécification :. Cela signifie notamment que cet opérateur ne peut être utilisé, a priori, qu avec des objets de type. En réalité, il est possible d utiliser la fonction + avec des objets de type. Pour ce faire, une conversion de types est opérée. Le booléen %t est remplacé par 1 (et donc converti vers le type ) et le booléen %f est remplacé par 0. Scilab utilise ici la bijection naturelle qui existe entre l ensemble {%f, %t} et l ensemble {0, 1}. Ce mécanisme a lieu sans que l on ait à faire appel à une fonction de conversion. On dira donc qu il y a conversion implicite de type. Via cette conversion, toute fonction utilisant des objets de type peut être utilisée avec des objets de type. > ((8+%t) %f) (26-%t) 25. Surcharge d un opérateur En Scilab, il est possible de surcharger la définition d un opérateur i.e. de définir le comportement de cet opérateur pour des objets dont le type n est pas celui défini dans sa spécification. En l occurence, l opérateur + a pour spécification + : mais est surchargé pour pouvoir être utilisé avec des chaînes de caractères. > typeof("bonjour à tous!") > typeof("5+3 2"), typeof("%t %f") IV. Le type Le type regroupe l ensemble des chaînes de caractères i.e. tous les éléments qui s écrivent entre guillemets (" " ou ' '). Il n y a qu un opérateur combinant les chaînes de caractère. Il s agit de l opérateur de concaténation qui prend en paramètre deux chaînes de caractère et en crée une nouvelle en les mettant bout à bout. + opérateur de concaténation L opérateur de concaténation est noté grâce au symbole d addition + et a pour spécification + :. Ceci semble en contradiction avec la présentation précédente, décrivant l opérateur + comme un opérateur permettant de combiner seulement des objets de type. Expliquons ce phénomène. Tout élément encadré par des guillemets est de type et sa valeur est la chaîne de caractères entre ces guillements. > a = "je vais" + "bien" + "et vous?", typeof(a) a = je vaisbienetvous? > b = "je vais" + " bien " + "et vous?" b = je vais bien et vous? L opérateur + permet de coller deux chaînes de caractères. On fera attention à la gestion des espaces qui sont considérés comme des caractères à part entière. 3

> "j'ai 20 ans"!--error 276 Opérateur, virgule ou point-virgule manquant. > "j''ai 20 ans" j'ai 20 ans Si l on souhaite écrire une phrase avec une apostrophe, il faudra doubler le symbole et ce afin de supprimer toute ambigüité (le symbole ' est aussi utilisé pour créer des chaînes de caractères). Conversion explicite de type En Scilab, il est possible de convertir des objets de certains types vers un autre type. On s intéresse essentiellement à la fonction 1 qui a pour spécification : et permet de convertir tout objet de type en un objet de type. > a = (5), typeof(a) a = 5 Cette fonctionnalité nous sera très utile, notamment lorsque nous voulons concaténer une chaîne de caractères avec un objet de type. > x = 20; > "j''ai " + x + " ans" > "j''ai " + (x) + " ans" j'ai 20 ans En fait, l opérateur est aussi surchargé. Ce qui permet notamment de convertir en chaînes de caractères des objets de type. > (%t) Nous pouvons maintenant expliquer l utilisation de l opérateur dans le chapitre précédent. La valeur de la variable xplus (de type ) est convertie en un objet de type afin d être concaténée à la phrase "La plus grande...". Pour illustrer la possibilité de concaténer en une fois plusieurs chaînes de caractères, nous rajoutons une phrase à l affichage final. // Test de la fonction racp avec demande des entrées // et affichage des sorties a = input("entrez la valeur du coefficient a : "); b = input("entrez la valeur du coefficient b : "); c = input("entrez la valeur du coefficient c : "); [xplus, xmoins] = racp(a, b, c); disp("voici les deux racines du polynôme " + (a) + "X 2 + " + (b) + "X + " + (c)) disp("la plus grande racine vaut " + (xplus)); disp("la plus petite racine vaut " + (xmoins)); Ce qui permet d obtenir, lors de l exécution, l affichage suivant. > exec('/info/exemple_cours/racpdispinp.sce', -1) Entrez la valeur du coefficient a : 3 Entrez la valeur du coefficient b : 5 Entrez la valeur du coefficient c : 2 Voici les deux racines du polynôme 3X 2 + 5X + 2 La plus grande racine vaut -0.6666667 La plus petite racine vaut -1. 1 Malheureusement, la fonction porte le même nom que le type de données... 4

V. Le type function Il existe plusieurs autres types de données en Scilab, qu il n est pas utile de connaître à notre niveau. Nous discutons ici brièvement de la gestion des fonctions dans le simple but d étoffer notre culture informatique. En Scilab, les fonctions sont des objets qui sont séparés en deux catégories. Les fonctions prédéfinies telles que log, sqrt, abs sont regroupées dans le type fptr. Les fonctions définies par l utilisateur à l aide de la construction function...endfunction sont regroupées dans le type function 2. > typeof(sqrt), typeof(racp) fptr function Les fonctions étant des objets à part entière, il est notamment possible d affecter la valeur d une fonction à une variable... > h = sqrt; h(9) 3.... ou encore de prendre des fonctions comme paramètres d une fonction. // Cette fonction prend en paramètre les fonctions f et g // et l élément x et calcule la composée f o g au point x function y = composeepoint(f, g, x) y = f(g(x)); endfunction > composeepoint(exp, log, 5) 5. VI. Les erreurs de type En primaire, vous avez appris que l on n additionne pas les choux et les carottes. L idée derrière cette maxime est qu il ne faut pas mélanger les différentes unités de mesure. On ne peut additionner des mètres et des centimètres (sauf à tout convertir en centimètres!) ; des poids et des tailles ; des vitesses et des longueurs. Cette remarque peut être généralisée : il faut respecter les spécifications des opérateurs. Par exemple, on rencontre parfois l erreur (ou plutôt l horreur) consistant à écrire : 25 5. Ceci n a pas de sens. En effet, 25 et 5 sont des nombres et l opérateur d équivalence sert uniquement à combiner des propositions. En informatique, les opérateurs sont définis pour des objets de certains types. Utiliser un opérateur avec des objets qu il ne prend pas en charge correspond à effectuer une erreur de type. En Scilab, ce genre d erreurs sera relevé par l interpréteur du langage. > log("36")!--error 246 Fonction non définie pour le type d argument donné. > 3+"5" > 2 sqrt Le fait de travailler avec des données typées permet de mettre à jour certaines erreurs. Les types de données font donc partie intégrante des mécanismes de sécurité permettant de protéger le code. 2 On peut encore une fois déplorer la collision entre le nom d un type de données et un mot clé du langage. 5