Javascript : les bases du langage

Documents pareils
Projet de programmation (IK3) : TP n 1 Correction

Présentation du langage et premières fonctions

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Java Licence Professionnelle CISII,

STAGE IREM 0- Premiers pas en Python

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Programmer en JAVA. par Tama

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

TP 1. Prise en main du langage Python

Introduction au langage C

Algorithmique et Programmation, IMA

Langage Java. Classe de première SI

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Programmation Web. Madalina Croitoru IUT Montpellier

Programmation en Java IUT GEII (MC-II1) 1

INF 321 : mémento de la syntaxe de Java


Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

OCL - Object Constraint Language

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

Chapitre VI- La validation de la composition.

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

Introduction à MATLAB R

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Document Object Model (DOM)

TP JAVASCRIPT OMI4 TP5 SRC

as Architecture des Systèmes d Information

Devenez un véritable développeur web en 3 mois!

TD3: tableaux avancées, première classe et chaînes

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

Utilisation d objets : String et ArrayList

Apprendre Java en 154 minutes

Algorithmique et programmation : les bases (VBA) Corrigé

Programmation C++ (débutant)/instructions for, while et do...while

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Notions fondamentales du langage C# Version 1.0

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février :30 à 20:30

Plan du cours. Historique du langage Nouveautés de Java 7

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

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

Cours d algorithmique pour la classe de 2nde

Recherche dans un tableau

CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN ING

Java Licence Professionnelle CISII,

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Programmation avec des objets : Cours 7. Menu du jour

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

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Solutions du chapitre 4

Cours No 3 : Identificateurs, Fonctions, Premières Structures de contrôle.

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Introduction au langage Java

Chapitre 10 Arithmétique réelle

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Travaux dirigés n 10

ACTIVITÉ DE PROGRAMMATION

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

Algorithmique I. Algorithmique I p.1/??

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Claude Delannoy. 3 e édition C++

V- Manipulations de nombres en binaire

UE C avancé cours 1: introduction et révisions

Calcul Formel et Numérique, Partie I

Le stockage local de données en HTML5

Environnements informatiques

Programme Compte bancaire (code)

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Corrigé des TD 1 à 5

1. Structure d'un programme FORTRAN 95

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Premiers Pas en Programmation Objet : les Classes et les Objets

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Master d Informatique Corrigé du partiel novembre 2010

Cours 1 : La compilation

Principes des langages de programmation INF 321. Eric Goubault

Initiation à la programmation en Python

Un ordonnanceur stupide

Initiation à l algorithmique

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr

Analyse de sécurité de logiciels système par typage statique

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Découverte de Python

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

SUPPORT DE COURS. Langage C

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Sélection du contrôleur

AWS avancé. Surveiller votre utilisation d EC2

4. Groupement d objets

Architecture Orientée Service, JSON et API REST

Chapitre 2 Devine mon nombre!

Arbres binaires de recherche

Transcription:

Javascript : les bases du langage Technologies du Web 1 Jean-Christophe Routier Licence 1 SESI Université Lille 1 Université Lille 1 - Licence 1 SESI Technologies du Web 1 1

Javascript présentation partielle, et parfois partiale Javascript un langage fonctionnel à objet à base de prototypes un langage de scripts, interprété les scripts peuvent être placés dans les documents html le navigateur possède un interprète javascript le code javascript permet d agir sur les propriétés des éléments de manipuler l arbre DOM dynamicité du document affiché Université Lille 1 - Licence 1 SESI Technologies du Web 1 2

Intégration de javascript dans la page html 2 cas de figure possibles : code javascript directement placé dans le corps du fichier html : <script type="text/javascript">... code javascript ici </script> code javascript dans un fichier séparé chargé à l aide de la balise script et de son attribut src : <script src="unfichier.js" type="text/javascript"> </script> NB : flux de chargement du fichier html Université Lille 1 - Licence 1 SESI Technologies du Web 1 3

Un style de programmation impératif Programmation impérative Capitaliser ce qui a été vu en InitProg et API1. variables structures de contrôles : conditionnelles et itératives une nouvelle syntaxe quelques différences dans les règles de fonctionnement de nouvelles fonctions à apprendre Université Lille 1 - Licence 1 SESI Technologies du Web 1 4

Types primitifs boolean 2 constantes true, false opérateurs : négation!, et logique &&, ou logique number pas de séparation nette entre entiers et flottants opérateurs : +, -, *, / (division flottante), % (reste de la division) -Infinity, Infinity string pas de type caractère séparé de string, il faut considérer des chaînes de longueur 1 les chaînes se notent entre " ou : "exemple", un autre opérateur de concaténation : + + objet String = nombreuses méthodes Université Lille 1 - Licence 1 SESI Technologies du Web 1 5

Variables Déclaration Il faut déclarer les variables à l aide du mot-clef var. Une variable doit être déclarée avant d être utilisée. Affectation L opérateur d affectation se note =. Une variable non initialisée a pour valeur null ou undefined var x; x = 12; var texte = " timoleon "; console. log (x); // 12 var y; console. log (y); // undefined console. log ( z); // ReferenceError : z is not defined Université Lille 1 - Licence 1 SESI Technologies du Web 1 6

Quelques prédicats var x = 1; x == 1; // vaut true x!= 1; // vaut false var s = " timoleon "; s == " timoleon "; // vaut true s!= " javascript "; // vaut true var y = 12; x > y; // vaut false x <= y; // vaut true s < " abracadabra "; // vaut false "un" >= " deux "; // vaut true var z; z == null ; // vaut true z == undefined ; // vaut true z = 1; z == null ; // vaut false Université Lille 1 - Licence 1 SESI Technologies du Web 1 7

Fonctions Valeur de type fonction le mot-clef function permet de définir une donnée de type fonction, on précise entre parenthèses les paramètre formels séparés par des virgules, le corps de la fonction est noté entre accolades, la valeur de retour d une fonction est précisé par return return n est pas obligatoire (dans ce cas valeur retour = undefined) function (x, y) { var valeur = x+y; return 2* valeur + 1 ; function (x) { alert ("la valeur est "+x); Université Lille 1 - Licence 1 SESI Technologies du Web 1 8

Fonctions Définition et appel définir une fonction c est définir une variable dont la valeur est de type fonction on appelle une fonction en précisant les paramètres effectifs entre parenthèses var exemple = function (x, y) { var valeur = x+y; return 2* valeur + 1 ; exemple (2,3) ; // vaut : 11 exemple ; // vaut : function (x,y) {... Université Lille 1 - Licence 1 SESI Technologies du Web 1 9

Autre syntaxe // éqv à : function exemple (x, y) { // var exemple = function (x, y) { var valeur = x+y; return 2* valeur + 1 ; exemple (2,3) ; // vaut 11 Université Lille 1 - Licence 1 SESI Technologies du Web 1 10

Règle de portée Locale et globale toute définition de variable dans une fonction est locale à la fonction. une variable locale masque une variable globale de même nom. var timo = 12; // déf. globale, timo vaut 12 var leon = -5; // déf. globale, timo vaut -5 var exemple = function () { // déf. globale de exemple var timo = 2; // déf. locale, timo vaut 2 var valeur = 10 ; // déf. locale, valeur vaut 10 return 2* valeur + timo + leon ; // valeur : 2*10 + 2-5 = 17 exemple (); // vaut 17 timo ; // vaut 12 leon ; // vaut -5 valeur ; // Erreur : valeur non définie Université Lille 1 - Licence 1 SESI Technologies du Web 1 11

Séquence et bloc Séquence Les instructions se terminent par un ;. Bloc d instructions Un bloc d instructions en séquence se note entre accolades. Un bloc d instructions est une instruction. Attention Contrairement à de nombreux langages, un bloc ne définit pas de règle de portée. La seule règle de portée se situe au niveau des fonctions. Université Lille 1 - Licence 1 SESI Technologies du Web 1 12

Structure conditionnelle if (condition) { séquence d instructions si true else { séquence d instructions si false var collatz = function(i) { if (i % 2 == 0) { return i/2; else { return 3*i+1; la partie else n est pas obligatoire false, 0, "", NaN, null, undefined valent false, tout le reste vaut true Université Lille 1 - Licence 1 SESI Technologies du Web 1 13

Structures itératives : pour for (var i = inf ; i < max ; i=i+1) { // i=i+1 s écrit aussi i++ séquence d instructions var sommeentiers = function ( bornemax ) { var somme = 0; for ( var i = 0 ; i < bornemax ; i=i +1) { somme = somme + i; return somme ; sommeentiers (100) ; // somme vaut 4950 Université Lille 1 - Licence 1 SESI Technologies du Web 1 14

Structures itératives : tant que while ( condition ) { séquence d instructions var sommechiffres = function ( n) { var result = 0; while (n > 0) { result = result + ( n % 10) ; n = Math. floor (n /10) ; return result ; sommechiffres (12345) ; // vaut 15 do { séquence d instructions while (condition ) Université Lille 1 - Licence 1 SESI Technologies du Web 1 15

tant que et pour Une boucle pour peut toujours s écrire sous la forme d une boucle tant que. pour i variant de borne inf à borne sup répéter corps de boucle i borne inf tant que i borne sup répéter debutbloc corps de boucle i i + 1 finbloc En javascript les boucles for sont des while déguisées : for ( init ; condition ; increment ) { séquence d instructions init; while (condition ) { séquence d instructions; increment; Université Lille 1 - Licence 1 SESI Technologies du Web 1 16

On peut donc aussi écrire : var sommechiffres = function ( n) { for ( var result =0; n > 0; n = Math. floor (n /10) ) { result = result + ( n % 10) ; return result ; sommechiffres (12345) ; // vaut 15 mais cela ne veut pas dire que l on doit le faire... Université Lille 1 - Licence 1 SESI Technologies du Web 1 17

Conversions javascript est (très) souple sur la notion de typage. javascrit applique «automatiquement» certaines conversions de type sur les valeurs lorsque le contexte le nécessite : vers le type boolean (cf. remarque précédente) vers le type string vers le type number a une incidence sur la notion d égalité Université Lille 1 - Licence 1 SESI Technologies du Web 1 18

Conversion en booléen et en chaîne var valeurbooleenne = function ( val ) { if ( val ) { // dans ce contexte valeur booléenne attendue return " " + val +" est converti en true "; // chaine attendue else { return " " + val +" est converti en false "; valeurbooleenne (" abcd "); // -> abcd est converti en true valeurbooleenne (""); // -> est converti en false var x; valeurbooleenne ( x); // -> undefined est converti en false x = 0; valeurbooleenne ( x); // -> 0 est converti en false x = 1; valeurbooleenne ( x); // -> 1 est converti en true Université Lille 1 - Licence 1 SESI Technologies du Web 1 19

Conversion en nombre une chaîne dont les caractères représente un nombre est convertie en ce nombre NB : dans un expression avec l opérateur + c est la conversion vers chaîne qui l emporte NaN : Not a Number valeur de conversion pour toute expression qui ne peut être convertie en un nombre peut se tester avec fonction isnan. " 12.5 " *3; // -> 37.5 "99" -5; // -> 94 "99"+5 // -> "995" /!\ " deux " *3; // -> NaN isnan (" deux " *3) ; // -> true Université Lille 1 - Licence 1 SESI Technologies du Web 1 20

parseint et parsefloat convertissent une chaîne en nombre (entier ou flottant) seul le premier nombre dans la chaîne est retourné, les autres caractères (y compris correspondant à des nombres) sont ignorés si le premier caractère ne peut être converti en un nombre, le résultat sera NaN les espaces en tête sont ignorés parsefloat (" 1.24 "); // -> 1.24 parseint ("42"); // -> 42 parseint ("42 est la reponse "); // -> 42 parseint (" 42 est la reponse "); // -> 42 parseint ("42 estlareponse "); // -> 42 parseint ("42 43 44"); // -> 42 parseint (" reponse = 42"); // -> NaN Université Lille 1 - Licence 1 SESI Technologies du Web 1 21

Egalités étranges Attention Du fait de la conversion, dans certains cas des valeurs de types différents peuvent être considérées égales. 1 == "1" // -> true 10!= "10" // -> false 1 == "un" // -> false 0 == false // -> true " 0" == false // -> true /!\ alors que "0" se convertit en false L opérateur === teste à la fois le type et la valeur (négation!==). 1 === "1" // -> false 0 === false // -> false 10 === 9+1; // -> true 1!== "1"; // -> true Université Lille 1 - Licence 1 SESI Technologies du Web 1 22

Objets les objets possèdent des méthodes (= fonctions) une méthode s invoque sur un objet on utilise la «notation pointée» Ex : avec l objet String var s = new String (" timoleon "); // création d un objet String var sub = s. substring (2,6) ; // sub vaut " mole " s. charat (4) ; // vaut "l" s. length ; // vaut 8 // conversion des valeurs string vers objet String " abracadabra ". charat (2) ; // vaut "r" " abracadabra ". substring (4,8) ; // vaut " cada " Université Lille 1 - Licence 1 SESI Technologies du Web 1 23

Premiers liens avec document html En attendant mieux... window.alert affiche une «popup» d information window.prompt affiche une boîte de dialogue avec une zone de saisie de texte a pour résultat le texte saisi Attention : le résultat est de type string, prévoir des conversions avec parseint ou parsefloat si nécessaire. document.write et document.writeln écrit du texte dans le flux html le texte écrit est interprété par le navigateur Attention : efface le contenu du document si le flux doit être réouvert ne pas utiliser dans une fonction! Université Lille 1 - Licence 1 SESI Technologies du Web 1 24