122 Pages

11_JavaScript

Course: CSI ITI1520, Spring 2010
School: University of Ottawa
Rating:
 
 
 
 
 

Word Count: 4646

Document Preview

3540 Structures, CSI techniques et normes du Web Friday, February 26, 2010 Le langage JavaScript (ECMAScript) Objectif: crire des programmes JavaScript Introduction lenvironnement dxcution Lectures: Web Technologies (2007) 4 Friday, February 26, 2010 Plan 1. Motivation 2. Bref historique 3. Prsentaton dtaille 1. Grammaire 2. Objets 3. Hritage par prototype 4. Fermetures Friday, February 26, 2010 Mythe...

Register Now

Unformatted Document Excerpt

Coursehero >> Canada >> University of Ottawa >> CSI ITI1520

Course Hero has millions of student submitted documents similar to the one
below including study guides, practice problems, reference materials, practice exams, textbook help and tutor support.

Course Hero has millions of student submitted documents similar to the one below including study guides, practice problems, reference materials, practice exams, textbook help and tutor support.
3540 Structures, CSI techniques et normes du Web Friday, February 26, 2010 Le langage JavaScript (ECMAScript) Objectif: crire des programmes JavaScript Introduction lenvironnement dxcution Lectures: Web Technologies (2007) 4 Friday, February 26, 2010 Plan 1. Motivation 2. Bref historique 3. Prsentaton dtaille 1. Grammaire 2. Objets 3. Hritage par prototype 4. Fermetures Friday, February 26, 2010 Mythe ou ralit JavaScript est 1. un langage de script dont la syntaxe est drive de Java 2. une version interprte de Java (sans code intermdiaire, code-octet) 3. un langage de programmation orient prototype (sans classe) Friday, February 26, 2010 Quen pensez-vous? Quelles sont vos connaissances de JavaScript? Novice, intermdiaire, avanc? ou mauvais language? Ou peut-tre, vous tes sans opinion. Quen pensez-vous? Cest un excellent Friday, February 26, 2010 Ralit JavaScript est un langage de assises et quelques mauvais concepts Victime de son adoption rapide programmation avec dexcellentes Avec un peu de discipline, on se limite aux excellents concepts offerts Trop souvent, le programmeur ne se donne pas la peine dapprendre le langage Friday, February 26, 2010 Ralit Paradigmes JavaScript importants Objet, objet littral Fonctions, programmation fonctionnelle pour la programmation dapplications Web Fermeture Friday, February 26, 2010 Motivation Calcul ct client Par exemple, valider le format dun numro de tlphone, de carte de crdit, etc. serveur Rduire la charge du rseau et/ou du Construire les pages ct client Friday, February 26, 2010 Motivation Le modle objet de document (DOM HTML) fournit un accs programmatique la page courante de lagent utilisateur programmation frquemment utilis pour manipuler le DOM les objets ! JavaScript est un langage de Concept important : paradigme pour Friday, February 26, 2010 <!DOCTYPE html PUBLIC "-/ /W3C/ /DTD XHTML 1.0 Strict/ /EN" "http:/ /www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd "> <html xmlns="http:/ /www.w3.org/1999/xhtml " lang="fr-CA"> <head> <title>Mon premier programme JavaScript</title> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> <link rel="stylesheet" type="text/css" href="default.css" media="all" /> <script type="text/javascript" src="HelloWorld.js"> </script> </head> <body> </body> </html> Friday, February 26, 2010 a lert( "C'e st bon des Pop-Tarts! \u2122" ); Friday, February 26, 2010 <!DOCTYPE html PUBLIC "-/ /W3C/ /DTD XHTML 1.0 Strict/ /EN" "http:/ /www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd "> <html xmlns="http:/ /www.w3.org/1999/xhtml " lang="fr-CA"> <head> <title>Mon premier programme JavaScript</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link rel="stylesheet" type="text/css" href="default.css" media="all" /> <script type="text/javascript"> alert( "C'e st bon des Pop-Tarts! " ); </script> </head> <body> </body> </html> Friday, February 26, 2010 Environnement de dveloppement Support par virtuellement tous les fureteurs, cest donc lun des langages de programmation les plus utiliss www.mozilla.org/rhino ] 2007 Rhino JavaScript for Java [ http:// $ java -jar js.jar Rhino 1.7 release 2 2009 03 22 js> Friday, February 26, 2010 La ptite histoire de JavaScript N LiveScript (nom de code Mocha) en 1995. Cr par Brendan Eich pour Netscape 2.0 Microsoft cre JScript en juillet 1996 1997, un standard est propos par European Computer Manufacturers Association (ECMA). ECMAScript ECMA-262 1999, ECMA-262 3ime dition 5ime dition adopte en dcembre 2009 Friday, February 26, 2010 Hum? Contrairement ce que le nom suggre, JavaScript nest pas un descandant de Java! dECMAScript 8-( En fait, on devrait plutt parler Friday, February 26, 2010 Langages de scripts Langages de programmation gnralement interprts, typage dynamique, et qui servent lextension de systmes (accs programmatique aux structures internes dun systme) Bash et C-Shell, sont une extension du systme dexploitation logiciel an de le rendre extensible Les langages de commandes, tels que Le langage TCL peut tre intgr tout Friday, February 26, 2010 JavaScript Rends les clients et serveurs extensibles en donnant un accs programmatique aux structures internes Interprt Typage dynamique Syntaxe semblable celle de Java et C++ Friday, February 26, 2010 Machine virtuelle + r untime Cette prsentation ne couvre que Scripting engine JavaScript Comprend 2 parties : Machine vituelle (scripting engine) : Environnement hte (hosting interprte et fonctions essentielles dECMAScript (prsente aujourdhui) environment) : spcique au client (Mozilla, IE, etc.), au server (IIs, etc.)... Friday, February 26, 2010 dition Friday, February 26, 2010 Rhino: JavaScript for Java Implmentation code source libre en Java $ java -jar js.jar Rhino 1.7 release 2 2009 03 22 js> 1 + 1 2 www.mozilla.org/rhino/ Comprends lAPI, un shell, un dbogueur, un compilateur, une documentation, etc. Friday, February 26, 2010 Mise au point Friday, February 26, 2010 IE6 (...) I suggest selecting Tools|Internet Options... from the IE6 menu and click on the Advanced tab in the pop-up window that appears. Then check the Display a notication about every script error checkbox. [ Jackson (2007) page 197 ] Friday, February 26, 2010 Mise au point Venkman est le dbogueur de Mozilla, qui tourne entre autres sous Firefox Friday, February 26, 2010 Excution > defaults write com.apple.Safari IncludeDebugMenu 1 Friday, February 26, 2010 Le monde dECMAScript SpiderMonkey est limplmentation code source libre crite en C de Mozilla (embarque dans Firefox) Tamarin est un engin (une machine virtuelle) JavaScript, haute performance, code source libre, crit en C++ (Projet Mozilla, embarqu dans Adobe Flash Player) Friday, February 26, 2010 Friday, February 26, 2010 JavaScript Le langage de programmation Friday, February 26, 2010 Similitudes avec Java Friday, February 26, 2010 Grammaire La syntaxe du language (affectations, oprateurs, blocs et structures de contrles) ressemble celle de Java Les tableaux sont des objets Sensible la casse (case sensitive) Commentaires : // et /* */ Friday, February 26, 2010 Dissimilitudes par rapport Java Friday, February 26, 2010 Types de donnes Les types sont associs aux valeurs et non pas aux variables! Ces types sont : Number String Boolean null undened Object Friday, February 26, 2010 Types de donnes <script type="text/javascript"> var v, m1, m2, m3, m4, m5; m1 = typeof v; m2 = typeof w; v = null; m3 = typeof v; v = 99; m4 = typeof v; v = m2; m5 = typeof v; v = true; m6 = typeof v; alert( m1 + "," + m2 + "," + m3 + "," + m4 + "," + m5 + "," + m6 ); </script> La variable v reoit des valeurs de divers t ypes. Loprateur typeof Notez la diffrence e ntre undefined et n ull Friday, February 26, 2010 Types de donnes Number, String et Boolean sont p.e. informatique.toUpperCase() Les tableaux et les fonctions sont des objets immuables et possde des mthodes Friday, February 26, 2010 Types de donnes: Number Aucune distinction entre les nombres rels et les nombres entiers (IEEE 754) Reprsention 64 bits point ottant NaN et isNaN( v ), +Innity, -Innity Friday, February 26, 2010 Conversions Plusieurs conversions de type automatiques Friday, February 26, 2010 Conversion : B oolean Originale undened null 0 NaN (Not a Number) Innity, -Innity Toute autre valeur Friday, February 26, 2010 Boolenne false false false false false false true Originale undened null true, false NaN Innity, -Innity Petits nombres Grands nombres Objet Friday, February 26, 2010 String undened null true, false NaN Innity, -Innity Notation dcimale Notation scientique Appel toString() Conversion : Number Originale undened null, false, true Chane reprsentant un nombre Autres chanes Objet Friday, February 26, 2010 Number NaN 0 1 Valeur du nombre NaN Appel valueOf() Conversion automatique des types de valeurs v ar v = 10; while ( v ) { v = v - 1; } alert( "La valeur de v est " + v ); Lexemple dmontre aussi linitialisation dune variable d ans le contexte de s a dclaration Friday, February 26, 2010 Syntaxe Variables : prcdes par le mot cl var et nont aucune dclaration de type var id; lettre ou un soulignement et soulignements Les identicateurs dbutent par une Le reste est constitu de lettres, chiffres Ne sont pas des mots rservs Friday, February 26, 2010 Syntaxe Une variable sera automatiquement cre lors dune affectation si ncessaire $ js Rhino 1.6 release 7 2007 08 19 js> var x = 1; js> y = 2; 2 js> x + y 3 js> x + z js: "<stdin>", line 5: uncaught JavaScript runtime exception: ReferenceError: "z" is not defined. Friday, February 26, 2010 Porte Environnement global (variables globales) Variables locales sont dclares laide de v ar, mais un bloc dnoncs ne cre pas un nouvel environnement lexical Friday, February 26, 2010 Syntaxe Lnonc t hrow : t hrow( Sans objet ;-) ) Le bloc c atch : try { ... } catch ( e ) { window.alert( Jattrappe tout : + e ); } Friday, February 26, 2010 Syntaxe throw( { name : FormatException, message : 2EC3 is not a valid number } ) Friday, February 26, 2010 Autres Pas de main( String[] args ); Friday, February 26, 2010 Fonctions Premire partie Friday, February 26, 2010 Fonctions Mot cl function introduit la dclaration dune fonction formels nont pas de dclaration de type nappartiennent pas un objet ou une classe valeur ; comme les appels de mthodes de Java function maximum( a, b ) { if ( a > b ) { return a; } else { return b; } } function minimum( a, b ) { if ( a < b ) { return a; } else { return b; } } var x = 5, y = 10, z = maximum( x, y ); Les paramtres Ces fonctions Appels de fonction par Friday, February 26, 2010 Fonctions Attention, si le dernier nonc excut nest pas un nonc de retour (return) alors la valeur de retour est u ndefined Friday, February 26, 2010 Valeur de type fonction function affiche( f, a, b ) { alert( "La valeur est " + f( a, b ) ); } affiche( minimum, x, y ); fun = function factice( a, b ) { return 99; }; affiche( fun, 5, 10 ); affiche( factice, 5, 10 ); Friday, February 26, 2010 Fonctions anonymes function affiche( f, a, b ) { alert( "La valeur est " + f( a, b ) ); } affiche( function( a, b ) { return a + b }, 6, 7 ); Friday, February 26, 2010 Fonctions prdnies eval isFinite, isNaN, p arseInt, parseFloat encodeURI, decodeURI, encodeURIComponent, et decodeURIComponent Friday, February 26, 2010 Trs permissif Conversions de type automatiques Plusieurs ; optionnels Paramtres surnumraires ignors lors des appels de fonction Affectation de la valeur undened aux paramtres manquants lors des appels de fonction pas dimportance : lexcution se fait en 2 passes Lordre des dclarations de fonctions na Friday, February 26, 2010 a rguments v ar somme = function() { var i, somme = 0; for ( i=0; i<arguments .length; i += 1 ) { somme += arguments[ i ] ; } return somme; }; somme( 1, 2, 3 ); Friday, February 26, 2010 Variables locales, globales et appels par valeur var a = 5, b = 10, c = 15; function test( d ) { var a; a = 96; b = 97; c = 98; d = 99; } alert( a + "," + b + "," + c + "," + d ); alert( a + "," + b + "," + c ); test( c ); alert( a + "," + b + "," + c ); Friday, February 26, 2010 Objets sans classe(s) Programmation oriente prototype Friday, February 26, 2010 Dnitions Lobjet en JavaScript est constitu dun ensemble de proprits unique et dune valeur Une proprit est compose dun nom Aucune restriction quant aux noms des proprits, la chane vide est un nom de proprit admissible Friday, February 26, 2010 Remarques Tout comme les variables, les proprits nont pas de type, elles ont des valeurs, et ces dernires ont un type Il sagit des 6 types vus prcdemment: Number, String, Boolean, null, Object et undened Friday, February 26, 2010 Remarques (suite) Les proprits sont ajoutes ou mme retranches lors de lexcution des programmes Il ny a pas de dclarations statiques des objets, les objets sont crs dynamiquement, et les proprits sont ajoutes dynamiquement Pas de classes Friday, February 26, 2010 v ar o; o = new Object(); o.prop = true; window.alert( (typeof o) + "," + (typeof o.prop) ); o.prop = "a pas de classe c't'affaire l"; window.alert( (typeof o) + "," + (typeof o.prop) ); o.prop = 1; window.alert( (typeof o) + "," + (typeof o.prop) ); o.prop = function( x ) { return x + 1 }; window.alert( (typeof o) + "," + (typeof o.prop) ); Friday, February 26, 2010 delete o.prop; window.alert( (typeof o) + "," + (typeof o.prop) ); o = "Alpha"; window.alert( (typeof o) + "," + (typeof o.prop) ); Cest un seul et mme exemple Friday, February 26, 2010 Sous Rhino js> var o; js> o = new Object(); [object Object] js> o.prop = "a pas de classe c't'affaire l" a pas de classe c't'affaire l js> typeof o object js> typeof o.prop string js> o.prop = 1; 1 js> typeof o.prop number js> o = "alpha" alpha js> typeof o string js> typeof o.prop undefined Friday, February 26, 2010 Raccourci : object initializers var personne = { prenom:Gdon, nas:12345, association:null }; var personne = { prenom:window.prompt( Entrez le prnom ), nas:window.prompt( Entrez le NAS ), association:null }; var obj = { }; Friday, February 26, 2010 Proprits de lobjet Utilise des si le nom na pas le format dun identiant ou encore est un mot rserv var stat = { var: 2, cart type: 1.41 , valeur-associe: null }; var vol = { compagnie: Air Canada, numro: 342 , depart: { ville: YOW, heure: 16:12 } }; Friday, February 26, 2010 Rection Mot cl in : for ( var propr in personne ) { window.alert( propr ); } Cette boucle afchera les (noms des) proprits de lobjet dsign par la variable personne, soit prnom, nas et association (lordre nest cependant pas dni) Friday, February 26, 2010 Sous Rhino js> var personne = { prenom: "Gdon", nas:12345, association:null }; js> personne [object Object] js> for ( var propr in personne ) { print( propr ) }; association nas prenom Friday, February 26, 2010 Proprits dun objet La variable propr contient le nom dune des proprits de lobjet personne, propr est nom, par exemple la valeur de la variable comment accder la valeur dune proprit dont le nom est la valeur associe une variable ? Friday, February 26, 2010 Proprits dun objet La notation personne.propr fait rfrence une proprit dont le nom est propr le nom est sauvegard dans la variable propr personne[ propr ] Nous accder voulons la proprit dont Il faut utiliser la notation suivante : Friday, February 26, 2010 Proprits dun objet Les deux appels la mthode alert produiront le mme rsultat : var propr = "prnom"; var personne = { prnom:"Gdon", nas:12345, association:null }; window.alert( personne.prnom ); window.alert( personne[ propr ] ); La notation personne[ propr ] est semblable aux tableaux associatifs et tables de hashage Friday, February 26, 2010 Rfrences js> var o1 = new Object(); js> o1.data = "Programmation"; Programmation js> var o2 = o1; js> o2.data += " Web"; Programmation Web js> o1.data; Programmation Web Friday, February 26, 2010 Mthodes Les mthodes sont tout simplement des fonctions assignes aux proprits produiront le mme rsultat : Les deux appels la mthode alert var personne = { prnom:"Gdon", getPrnom:function() { return this.prnom } }; window.alert( personne.prnom ); window.alert( personne.getPrnom() ); Friday, February 26, 2010 Conversion de types (suite) js> o = { v : 10, valueOf : function() { return this.v } } [object Object] js> o.valueOf() 10 js> o + 1 11 Friday, February 26, 2010 Mthodes (suite) De mme, les deux dclarations de mthodes suivantes sont () quivalentes : var personne = { prnom:"Gdon", getPrnom:function() { return this.prnom } }; var f = function() { return this.prnom } var personne = { prnom:"Gdon", getPrnom:f }; La dclaration du bas cre aussi une variable globale (quon ne peut utiliser directement, dailleurs) Friday, February 26, 2010 Constructeur function Tuple( first, second ) { this.first = first; this.second = second; this.getFirst = function() { return this.first; }; this.getSecond = function() { return this.second; }; } var p1 = new Tuple( "tree", "green" ); var p2 = new Tuple( "sky", "blue" ); window.alert( p1.getFirst() ); window.alert( p2.getSecond() ); Sans new Object() Sans valeur de retour Toute fonction est aussi un constructeur! true js> Tuple instanceof Object new Tuple( ... ); p1 instanceof Tuple Object est un constructeur prdni Friday, February 26, 2010 f unction Tuple( first, second ) { this.first = first; this.second = second; this.getFirst = function() { return this.first; }; this.getSecond = function() { return this.second; }; var p1 = new Tuple( "tree", "green" ); p1.isOrdered(); / retourne false / p1.swap(); p1.isOrdered(); / retourne true / lutilisation de this est toujours ncessaire, sinon le nom fait this.isOrdered = function() { return this.getFirst() < this.getSecond(); rfrence une variable }; ou une fonction this.swap = function() { var tmp = this.first; this.first = this.second; this.second = tmp; }; En JavaScript, Notez la dclaration dune variable locale dans la mthode swap } Friday, February 26, 2010 f unction makeTuple( first, second ) { var t = new Object(); t.first = first; t.second = second; t.getFirst = function() { return this.first; }; t.getSecond = function() { return this.second; }; return t; } var t1 = makeTuple( "rouge", 1 ); print( t1.getFirst() ); function Tuple( first, second ) { this.first = first; this.second = second; this.getFirst = function() { return this.first; }; this.getSecond = function() { return this.second; }; } var t2 = new Tuple( "bleu", 2 ); print( t2.getFirst() ); Friday, February 26, 2010 __deneGetter__ function Time( h, m ) { this.totalMinutes = 60 * h + m; this.before = function( other ) { return this.totalMinutes < other.totalMinutes; } this.__defineGetter__( "hours", function() { return toInteger( this.totalMinutes / 60 ); } ); this.__defineGetter__( "minutes", function() { return this.totalMinutes % 60; } ); } var t1 = new Time( 14, 30 ); var t2 = new Time( 15, 50 ); print( t1.before( t2 ) ); print( t1.hours ); print( t2.hours ); print( t1.minutes ); print( t2.minutes ); Similairement __deneSetter__ existe Friday, February 26, 2010 Proprits de lobjet toString(), valueOf() Friday, February 26, 2010 Hritage laide de prototypes Friday, February 26, 2010 Langages orient protype Borning, A. H. The Programming Language Aspects of ThingLab, A Constraint-Oriented Simulation Laboratory. In ACM Transactions on Programming Languages and Systems, 3, 4 (1981) 353-387. Mais aussi Self, Lisaac, Lua, Io, ABCL... Friday, February 26, 2010 Prototype Un objet sert de protype pour la cration dautres objets Un prototype est un objet Un objet est le clone dun autre objet (prototype) Friday, February 26, 2010 f unction Point() { this.x = 0; this.y = 0; this.getX = function() { return this.x }; this.getY = function() { return this.y }; }; Object.create = function( obj ) { var Constructor = function() {}; Constructor.prototype = obj; return new Constructor(); }; var p1 = new Point(); var p2 = Object.create( p1 ); p1.x = 3; p2.x = 15; print( p1.getX() ); print( p2.getX() ); Afche 3 et 15 Friday, February 26, 2010 Hritage (de prototype) function Shape( x, y ) { this.x = x; this.y = y; this.getX = function() { return this.x }; this.getY = function() { return this.y }; } function Circle( x, y, r ) { this.x = x; this.y = y; this.r = r; this.getR = function() { return this.r }; } Circle.prototype = new Shape(); En Java, on aurait crit class Circle extends Shape multiple? Hritage simple ou Hritage simple, un seul prototype associ Friday, February 26, 2010 f unction ColoredCircle( x, y, r, c ) { this.x = x; this.y = y; this.radius = r; this.color = c; this.getColor = function() { return this.color }; } ColoredCircle.prototype = new Circle(); var c1 = new ColoredCircle( 50, 100, 15, "bleu" ); js> for ( var p in c1 ) { print( c1[ p ] ); } y getColor color x radius getRadius getX getY Friday, February 26, 2010 f unction EmptyStackException() { this.message = "Stack is empty"; } EmptyStackException.prototype = new Error( "IllegalState" ); function Stack() { / ... / this.pop= function() { if ( this.isEmpty() ) { throw new EmptyStackException(); } / .... / try { } s.pop(); } } catch ( e ) { if ( e instanceof EmptyStackException ) { print( "exception caught: " + e ); } } Friday, February 26, 2010 Hritage (de prototype) Lhritage est donc dynamique Un objet peut changer de parent dynamiquement... Comment dterminer si la proprit appartient lobjet ou est hrite? for (propr in obj) { if ( obj.hasOwnPerperty( propr ) ) { ... } } Friday, February 26, 2010 Tableaux Friday, February 26, 2010 Tableaux var tbl1= new Array(); var tbl2 = new Array( 99, Okay, true ); tbl2[ 0 ]; / retourne la valeur 99 / tbl2.length; / retourne 3 / tbl2.couleur = Bleu; tbl2.couleur; / retourne Bleu / tbl2.length; / retourne 3! / var tbl3 = [ 99, Okay, true ]; var mat = [ [ 1, 0 ], [ 0, 1 ] ]; mat[ 0 ][ 0 ]; / retourne 1 / mat[ 0 ][ 1 ]; / retourne 0 / tbl2[ 3 ] = -1.0; tbl2.length; / retourne 4 / tbl2.length = 2; var tbl4 = new Array( 10 ); tbl4.length; / retourne 10 !!!! / typeof tbl4[ 0 ]; / retourne undefined !!!! / Friday, February 26, 2010 Tableaux var tbl = new Array( 5 ); tbl[ 0 ] = new Tuple( "Shabana", 1 ); tbl[ 1 ] = new Tuple( "Ashour", 2 ); tbl[ 2 ] = new Tuple( "Palmer", 3 ); tbl[ 3 ] = new Tuple( "Gaultier", 4 ); tbl[ 4 ] = new Tuple( "Lincou", 5 ); tbl.sort( function( a, b ) { if ( a.getFirst() < b.getFirst() ) return -1; else if ( a.getFirst() == b.getFirst() ) return 0; else return 1; } ); toString(), splice( ... ), push( x ), pop(), shift() Friday, February 26, 2010 Objets prdnis Friday, February 26, 2010 Objet global (window) var env = "["; for ( var propr in window ) { env = env + " " + propr; } env = env + " ]"; window.alert( env ); Friday, February 26, 2010 Quelques autres objets prdnis Lenvironnement global est un objet Les variables globales ne sont que des proprits de lobjet global prdnis Lenvironnement contient des objets Number, String et Boolean Date, Math et RegExp Friday, February 26, 2010 Quelques autres objets prdnis Dans un navigateur, lobjet global sappelle window scripts Il fournit un accs programmatique aux Entre autres, la proprit window.document reprsente le document HTML correspondant la page courante Cest le DOM et le sujet du prochain cours! Friday, February 26, 2010 Aspects ngatifs Quil faut connatre, quon devrait viter Friday, February 26, 2010 Variables globales Variables globales!!!! Solution? Crer un objet global et y sauvegarder les variables de lapplication var blogApp = {}; blogApp.background = blue; ... Friday, February 26, 2010 Aspects ngatifs du langage Variables globales!!!! Solution? Utiliser les fermetures Friday, February 26, 2010 Oprateurs de comparaison Abstract equality s1 == s2 si les types ne sont pas les mmes, JavaScript fait une conversion, dont le rsultat pourrait ne pas tre le rsultat souhait Strict equality v1 === v2, v1 !== v2 fait la comparaison strict (compare les rfrences, identit) Friday, February 26, 2010 Mais aussi Absence denvironnement lexical associ aux blocs dnoncs Correction derreurs? automatique return { status: true }; return { status: true }; Friday, February 26, 2010 Mais encore typeof null retourne object Duplication de fonctionalits (fonction, new...) Friday, February 26, 2010 Fermetures Closures Friday, February 26, 2010 Fermeture une fermeture capture des variables de son environnement lexical, ces dernires ne sont pas des variables globales function makeAdder( op ) { return function( value ) { return op + value; }; } js> var add1 = makeAdder( 1 ); js> var add5 = makeAdder( 5 ); js> add1( 1 ); 2 js> add5( 1 ); 6 Friday, February 26, 2010 Fermeture une fermeture capture des variables de son environnement lexical, ces dernires ne sont pas des variables globales function makeFunc() { var name = "bar"; function getName() { return name; } return getName(); } js> name = autre chose; js> var myFunc = makeFunc(); js> myFunc(); bar Friday, February 26, 2010 f unction makePair( f, s ) { var first = f; var second = s; var that = {}; that.getFirst = function() { return first; } that.setFirst = function( f ) { first = f; } that.getSecond = function() { return second; } that.setSecond = function( s ) { second = s; } return that; } js> a = newPair( "Marcel", "Turcotte" ); [object Object] js> b = newPair( "size", 800 ); [object Object] js> a.getFirst(); Marcel js> b.getFirst(); size js> b.setFirst( "width" ); js> b.getFirst(); width js> for ( propr in b ) { print( propr ) } getFirst setFirst getSecond setSecond Friday, February 26, 2010 Dans lexemple de la page prcdente, lobjet ne possde que des proprits dont les valeurs sont des fonctions makePair ont t captures (la fermeture) et sont maintenant partages par les mthodes g etFirst, s etFirst, getSecond et s etSecond de lobjet et ne sont accessibles qu getFirst (et autres mthodes de lobjet) Les variables locales de la fonction Ces variables ne sont pas des proprits Friday, February 26, 2010 La capture de la fermeture de la mthode m akePair ralise les objectifs de lencapsulation de donnes les attributs sont vraiment immuables mcanismes de srialisation (introspection) On peut soi-mme crer des objets dont Cette implmentation court-circuite les Friday, February 26, 2010 Fonctions Deuxime partie Friday, February 26, 2010 Appels de fonction expr () o expression retourne une fonction (un objet dont le prototype est Function.prototype) Friday, February 26, 2010 Function.prototype Une fonction est un objet dont le prototype est Function.prototype (qui est lui-mme li Object.prototype) Friday, February 26, 2010 Appels de fonction Prends quatre formes : appel de mthode appel de de fonction appel de constructeur appel laide de apply this et a rguments seront initialises diffremment Friday, February 26, 2010 Appel de fonction var add = function( x, y ) { return x + y }; var sum = add( 3, 4 ); Lors de linvocation dune fonction t his est li lobjet global Friday, February 26, 2010 Appel dun constructeur function Point() { this.x = 0; this.y = 0; this.getX = function() { return this.x }; this.getY = function() { return this.y }; }; var p1 = new Point(); Lors dun appel un constructeur Un nouvel objet est cr ayant un lien implicite (cach) la proprit p rototype du constructeur (c.-d. une fonction) nouvellement cr this est li lobjet Friday, February 26, 2010 Appel de mthode function Point() { this.x = 0; this.y = 0; this.getX = function() { return this.x }; this.getY = function() { return this.y }; }; var p1 = new Point(); ... x = p1.getX(); Lors de linvocation dune mthode t his est li lobjet Friday, February 26, 2010 Appel laide de apply v ar somme = function() { var i, somme = 0; for ( i=0; i<arguments .length; i += 1 ) { somme += arguments[ i ] ; } return somme; }; var ys = [ 1, 2, 3, 4, 5 ]; somme.apply( null, ys ); / retourne 15 / La mthode apply possde deux paramtre, le premier permet la liaison de t his Friday, February 26, 2010 Appel laide de apply La mthode apply function getName() { return this.name; } possde deux paramtre, le premier permet la liaison de t his var person = { name: "Marcel", height: 178 }; var domain = { name: "uottawa.ca", mask: 255, owner: "U. of Ottawa" }; getName.apply( person ); getName.apply( domain ); Friday, February 26, 2010 Mais encore... Friday, February 26, 2010 Ce qui nas t prsent Expressions rgulires JSON Friday, February 26, 2010 pilogue Friday, February 26, 2010 Revue des concepts Les valeurs ont des types et non les variables Les objets ont des proprits (qui ont des valeurs, qui elles ont des types) dobjets Objets littrals facilite la cration Appels de fonctions par valeur Friday, February 26, 2010 Revue des concepts Programmation oriente prototype Le mcanisme de fermeture permet lencapsulation de donnes en JavaScript (quivalent de variables prives) et objet, sans classes JavaScript est un langage fonctionnel Friday, February 26, 2010 Ressources Standard ECMA-262 ECMAScript Language Specication 3rd edition (December 1999) [ http:// www.ecma-international.org/ publications/standards/Ecma-262.htm ] 2007 developer.mozilla.org/en/docs/ Core_JavaScript_1.5_Reference ] 2007 Core JavaScript 1.5 Reference [ http:// Friday, February 26, 2010 ECMAScript [ http://www.ecmascript-lang.org/ ] 2007 Ressources (suite) Rhino JavaScript for Java [ http:// www.mozilla.org/rhino ] 2007 Venkman JavaScript Debugger project page [http://www.mozilla.org/projects/venkman/ ] 2007 en/docs/JavaScript ] visit le 26-janvier-2008 JavaScript MDC [ http://developer.mozilla.org/ Friday, February 26, 2010 Ressources (suite) Closure Compiler de Google est un outil pour loptimisation, mais surtout la compression de code JavaScript http://code.google.com/closure/compiler Friday, February 26, 2010 Ressources (suite) Doublas Crockford (2008) JavaScript: The Good Parts. OReilly. Friday, February 26, 2010
Find millions of documents on Course Hero - Study Guides, Lecture Notes, Reference Materials, Practice Exams and more. Course Hero has millions of course specific materials providing students with the best way to expand their education.

Below is a small sample set of documents:

University of Ottawa - CSI - ITI1520
CSI 3540Structures, techniques et normes du WebFriday, February 26, 2010JavaScript, documents XHTML, CSS 2 et DOMObjectif: Bien comprendre le modle objet dedocument (DOM HTML) ; lAPI permettant JavaScript (et aux autres langages) de manipuler la pag
University of Ottawa - CSI - ITI1520
CSI 3540Structures, techniques et normes du WebSaturday, March 6, 2010JavaScript, documents XHTML, CSS 2 et DOMObjectif: Bien comprendre le modle objet dedocument (DOM HTML) ; lAPI permettant JavaScript (et aux autres langages) de manipuler la page
University of Ottawa - CSI - ITI1520
CSI 3540Structures, techniques et normes du WebTuesday, March 9, 2010Reprsentation des donnes du Web en XMLObjectifs: Matriser le langage XML Comprendre limportance des espacesde nommage Lectures: Web Technologies (2007) 7Pages 364373Tuesday, Mar
University of Ottawa - CSI - ITI1520
CSI 3540Structures, techniques et normes du WebSunday, March 7, 2010Traitements asynchrones et applications ractivesObjectifs: Introduction Ajax Dvelopper des applications ractivesLectures: Web Technologies (2007) 7Sunday, March 7, 2010Plan1. Su
University of Ottawa - CSI - ITI1520
CSI 3540Structures, techniques et normes du WebFriday, March 19, 2010Reprsentation des donnes du Web en XMLObjectifs : Matriser le langage XML 1.0 Savoir utiliser les outils standard pourle traitement de XML Lectures : Web Technologies (2007) 7Pag
University of Ottawa - CSI - ITI1520
CSI 3540Structures, techniques et normes du WebFriday, March 19, 2010Reprsentation des donnes du Web en XMLObjectifs : Matriser le langage XML 1.0 Savoir utiliser les outils standard pourle traitement de XML Lectures : Web Technologies (2007) 7Pag
University of Ottawa - CSI - ITI1520
CSI 3540Structures, techniques et normes du WebFriday, March 19, 2010Reprsentation des donnes du Web en XMLObjectifs : Matriser le langage XML 1.0 Savoir utiliser les outils standard pourle traitement de XML Lectures : Web Technologies (2007) 7Pag
University of Ottawa - CSI - ITI1520
CSI 3540Structures, techniques et normes du WebFriday, March 19, 2010Sparer la programmation de la prsentation laide de JSPObjectif: 1. Concevoir des documents JSP Lectures: Web Technologies (2007) 8Pages 432447Friday, March 19, 2010Plan1. Survol
University of Ottawa - CSI - ITI1520
CSI 3540Structures, techniques et normes du WebFriday, March 26, 2010Sparer la programmation de la prsentation laide de JSPObjectifs : 1. Concevoir des documents JSP 2. Se familiariser avec le langage dexpression (EL) et les JavaBeans Lectures : Web
University of Ottawa - CSI - ITI1520
CSI 3540Structures, techniques et normes du WebWednesday, March 31, 2010Sparer la programmation de la prsentation laide de JSPObjectifs : 1. Concevoir des documents JSP 2. Se familiariser ave le cycle de dveloppement dune application Web 3. Dployer un
University of Ottawa - CSI - ITI1520
CSI 3540Structures, techniques et normes du WebFriday, April 9, 2010Services WebObjectif: Concepts de base lis aux services Web Gnreration automatiquement dunservice et dun client Lectures: Web Technologies (2007) 9Pages 486502Friday, April 9, 20
University of Ottawa - CSI - ITI1520
CSI 3540Structures, techniques et normes du WebFriday, April 9, 2010XML Schema, SOAP, WSDLObjectif: Introduction XML Schema Introduction aux vocabulaires SOAP et WSDL Comprendres les relations entreXML Schema, SOAP et WSDL Lectures: Web Technologie
University of Ottawa - CSI - ITI1520
Informations gnrales eeITI 1521. Introduction ` linformatique II aMarcel Turcotte Ecole dingnierie et de technologie de linformation e Version du 6 janvier 2010 Rsum e e Plan de cours Netiquette Bioinformatique Architecture des ordinateurs Lundi 11 h 3
University of Ottawa - CSI - ITI1520
Arbre binaireITI 1521. Introduction ` linformatique II aMarcel Turcotte Ecole dingnierie et de technologie de linformation e Version du 8 avril 2010 Rsum e eUn arbre binaire est une structure arborescente (hirarchique) telle que chaque e noeud poss`de
University of Ottawa - CSI - ITI1520
Traitement des erreurs dexcution en Java eITI 1521. Introduction ` linformatique II aMarcel Turcotte Ecole dingnierie et de technologie de linformation e Version du 11 fvrier 2010 e Rsum e e Traitement derreurs en Java : Dclaration, gestion, cration des
University of Ottawa - CSI - ITI1520
Dnitions eITI 1521. Introduction ` linformatique II aMarcel Turcotte Ecole dingnierie et de technologie de linformation e Version du 1er mars 2010 Rsum e e Files LinkedQueueUne le (queue ) est un type abstrait de donnes linaire tel que lajout de e e do
University of Ottawa - CSI - ITI1520
Dnitions eITI 1521. Introduction ` linformatique II aMarcel Turcotte Ecole dingnierie et de technologie de linformation e Version du 1er mars 2010 Rsum e e Files ArrayQueueUne le (queue ) est un type abstrait de donnes linaire tel que lajout de e e don
University of Ottawa - CSI - ITI1520
CircleITI 1521. Introduction ` linformatique II aMarcel Turcotte Ecole dingnierie et de technologie de linformation e Version du 25 janvier 2010 Rsum e e Hritage (partie 2) e PolymorphismeCompltons limplmentation de la classe Circle. e e O` cre-t-on li
University of Ottawa - CSI - ITI1520
RevueITI 1521. Introduction ` linformatique II aMarcel Turcotte Ecole dingnierie et de technologie de linformation e Version du 6 janvier 2010 Rsum e e Architecture des ordinateursPour point de dpart, jassume que les notions suivantes sont bien ma ees
University of Ottawa - CSI - ITI1520
Interface 1ITI 1521. Introduction ` linformatique II aMarcel Turcotte Ecole dingnierie et de technologie de linformation e Version du 1er fvrier 2010 e Rsum e e Interface Type abstrait de donnes eEn programmation oriente objet, linterface dune classe d
University of Ottawa - CSI - ITI1520
MotivationITI 1521. Introduction ` linformatique II aMarcel Turcotte Ecole dingnierie et de technologie de linformation e Version du 22 mars 2010 Rsum e e Itrateur 1 (Partie 1) ePour une implmentation (simplement) cha ee de linterface List dnie comme e
University of Ottawa - CSI - ITI1520
ITI 1521. Introduction informatique IILaboratoire 8 Hiver 2010[ PDF ]Objectifs Introduction aux entres-sorties (E/S) en Java Approfondir les notions lies aux exceptionsIntroductionCe laboratoire comporte deux parties. La premire partie introduit les
University of Ottawa - CSI - ITI1520
MotdITI 1521. Introduction ` linformatique II aMarcel Turcotte Ecole dingnierie et de technologie de linformation e Version du 18 mars 2010 Rsum e e Listes cha ees (partie 2) n Pointeur arri`re e Listes doublement cha ees n Noeud factice (dummy node)Da
University of Ottawa - CSI - ITI1520
Programmation oriente objet OO eITI 1521. Introduction ` linformatique II aMarcel Turcotte Ecole dingnierie et de technologie de linformation e Version du 13 janvier 2010 Rsum e e Programmation oriente objet e Encapsulation encapsulation analyse OO/co
University of Ottawa - CSI - ITI1520
Rsum e eITI 1521. Introduction ` linformatique II aMarcel Turcotte Ecole dingnierie et de technologie de linformation e Version du 24 fvrier 2010 e Rsum e eLacc`s aux lments dun tableau est tr`s rapide, il ncessite toujours un nombre e ee e e constant
University of Ottawa - CSI - ITI1520
ObjectITI 1521. Introduction ` linformatique II aMarcel Turcotte Ecole dingnierie et de technologie de linformation e Version du 10 fvrier 2010 e Rsum e e Exemples de polymorphisme : Object : equals, toString ; Structure de donnes gnrique : Pair. e eeQ
University of Ottawa - CSI - ITI1520
MotdITI 1521. Introduction ` linformatique II aMarcel Turcotte Ecole dingnierie et de technologie de linformation e Version du 11 janvier 2010 Rsum e e Types de donnes e Porte des variables e Gestion de la mmoire e Utilisez les si`ges avant s.v.p. ! e
University of Ottawa - CSI - ITI1520
ITI 1521. Introduction linformatique IILaboratoire 2 Hiver 2010Premire partieConnaissances requisesObjectifs Manipuler des tableaux et des rfrences Comprendre lutilisation de = et equals 1FindAndReplaceCompltez limplmentation de la mthode de class
University of Ottawa - CSI - ITI1520
ITI 1521. Introduction linformatique IILaboratoire 4 Hiver 2010Objectifs Crer une hirarchie de classes Approfondir vos connaissances sur lhritage Introduction au polymorphismeJeu de la vieCe laboratoire unie deux ides. Dune part, il y a le jeu de la
University of Ottawa - CSI - ITI1520
ITI 1521. Introduction linformatique IILaboratoire 5 Hiver 2010Objectifs Bien comprendre tous les aspects des interfaces Introduction limplmentation et lutilisation des piles Revu des concepts dhritagePremire partieInterfaces1 CombinationRevisitons
University of Ottawa - CSI - ITI1520
ITI 1521. Introduction linformatique IILaboratoire 6 Hiver 2010Plan Introduction aux interfaces graphiques usager (GUIs) Exercices lis aux interfaces graphiques Les solutions sont incluses dans ce document, faites de srieux eorts avant de consulter les
Delaware - MATH - 201
COMP/MATH 3804 Design and Analysis of Algorithms I Assignment 2Due June 3 at the beginning of classWrite down your name and student number on every page. The questions must be answered in order and your assignment sheets must be stapled. Late assignment
Delaware - MATH - 201
Spring 2010 MATH 4320: Final Exam Instructor: Yuri Berest The exam is due 6 pm, Thursday, May 20. Please turn in your exam in 439 Mallot Hall. Problem 1. (35 points) Let A be a commutative ring with 1. a. An element a A is called nilpotent if an = 0 for s
Delaware - MATH - 201
Spring 2010 MATH 4320: Solutions to Prelim 2 Instructor: Yuri Berest Problem 1. (a) This is straightforward: for example, we have 1 [(x1 , x2 ) (y1 , y2 )] = 1 [(x1 y1 , x2 y2 )] = x1 y1 = 1 [(x1 , x2 )] 1 [(y1 , y2 )] , and similarly for 2 . Both 1 and 2
Delaware - MATH - 201
Spring 2010 MATH 4320: Prelim 2 Instructor: Yuri Berest The exam is due Wednesday, April 14. Please write clearly and concisely. Problem 1. (15 points) If H1 and H2 are two groups, dene their direct product H1 H2 to be the set of ordered pairs cfw_(x1 , x
Delaware - MATH - 201
Spring 2010 MATH 4320: Prelim 1 Instructor: Yuri BerestProblem 1. (15 points) a. Find all integer solutions to the congruence 72x 36 (mod 376) . b. Find the smallest positive integer which leaves remainders 1, 3, 4 after dividing by 9, 7, 5 respectively.
Delaware - MATH - 201
Delaware - MATH - 201
Spring 2010 MATH 4320: Solutions to Prelim 1 Instructor: Yuri Berest Problem 1. a. Solving the congruence 72x 36 (mod 376) is equivalent to solving the equation 72x + 376y = 36 . Now, using Euclids algorithm, we compute (72, 376) = 8 . Since 8 does not di
Delaware - MATH - 201
Math 480HOMEWORK solutions #3W1. Find all integer solutions of the equation 2x + 3y = 11 Answer. (1 + 3t, 3 2t), t Z. W2. (a) For which n is it possible to simplify the fraction39n+8 ? 65n+1339n+8 Solution. The fraction 65n+13 is reducible if and only
Delaware - MATH - 201
Rensselaer Polytechnic Institute - PHIL - 77777
julia kristevapsychoanalysis and modernitysara beardsworthJulia KristevaSUNY series in Gender Theory Tina Chanter, editorJ U L I A K R I S T E VAPsychoanalysis and ModernitySara BeardsworthSTATE UNIVERSITY OF NEW YORK PRESSPublished by State Univ
Rensselaer Polytechnic Institute - PHIL - 7777
1Copyright Jonathan Bennett [Brackets] enclose editorial explanations. Small dots enclose material that has been added, but can be read as though it were part of the original text. Occasional bullets, and also indenting of passages that are not quotation
University of Phoenix - MATH - math115
Name: Crystal Reilly Date: 4-22-2010MAT115Test 1 Chapters 1 and 2 25 problems 4 points each 100 points possible Solve all problems and attach your solutions document in your Individual Forum (IF). Remember to show all steps and check your work carefully
University of Phoenix - MATH - math 115
MAT115Test 2 Chapters 3 and 4 25 problems 4 points each 100 points possible Name: Crystal Reilly Date:_5-8-10 Solve all problems and attach your solutions document in your Individual Forum (IF). Remember to show all steps and check your work carefully. P
University of Phoenix - MATH - math 115
Name: Crystal Reilly _ Date:_5-22-10MAT115Test 3 Chapters 5, 6 and 7 25 problems 4 points each 100 points possible Solve all problems and attach your solutions document in your Individual Forum (IF). Remember to show all steps and check your work carefu
Alexandria University - PHYS - MP107
PUZZLERHave you ever wondered why a tennis ball is fuzzy and why a golf ball has dimples? A spitball is an illegal baseball pitch because it makes the ball act too much like the fuzzy tennis ball or the dimpled golf ball. What principles of physics gover
Nova Southeastern University - ACT - 5753
COUNTY OF LOS ANGELES COMPREHENSIVE ANNUAL FINANCIAL REPORTFiscal Year Ended June 30, 2009 Wendy L. Watanabe, Auditor-ControllerCOUNTY OF LOS ANGELES COMPREHENSIVE ANNUAL FINANCIAL REPORT FOR THE FISCAL YEAR ENDED JUNE 30, 2009 TABLE OF CONTENTSI.INTR
Harvard - PSYCH - 1000
The presents new theories about how men fall in love and for how long.
The Petroleum Institute - PHYS - 344
11. (a) The vertical components of the individual fields (due to the two charges) cancel, by symmetry. Using d = 3.00 m and y = 4.00 m, the horizontal components (both pointing to the x direction) add to give a magnitude ofEx ,net = 2|q|d 2(8.99 109 N m
The Petroleum Institute - PHYS - 344
14. The field of each charge has magnitude E= kq e 1.60 1019 C =k = (8.99 109 N m 2 C2 ) = 3.6 106 N C. 2 2 2 r (0.020 m) ( 0.020 m )The directions are indicated in standard format below. We use the magnitude-angle notation (convenient if one is using a
The Petroleum Institute - PHYS - 344
15. (a) The electron ec is a distance r = z = 0.020 m away. Thus, (8.99 109 N m 2 C2 )(1.60 1019 C) = = 3.60 106 N/C . EC = 2 2 4 0 r (0.020 m)e(b) The horizontal components of the individual fields (due to the two es charges) cancel, and the vertical c
The Petroleum Institute - PHYS - 344
16. The net field components along the x and y axes areEnet, x =4 0 Rq12q2 cos , 4 0 R 2Enet, y = q2 sin . 4 0 R 2The magnitude is the square root of the sum of the components-squared. Setting the magnitude equal to E = 2.00 105 N/C, squaring and
The Petroleum Institute - PHYS - 344
17. We make the assumption that bead 2 is in the lower half of the circle, partly because it would be awkward for bead 1 to slide through bead 2 if it were in the path of bead 1 (which is the upper half of the circle) and partly to eliminate a second solu
The Petroleum Institute - PHYS - 344
18. According to the problem statement, Eact is Eq. 22-5 (with z = 5d)Eact = q q 160 q = 2 2 4 0 (4.5d ) 4 0 (5.5d ) 9801 4 0 d 2and Eapprox isEapprox =2qd 2 q = . 3 4 0 (5d ) 125 4 0 d 2The ratio isEapprox Eact = 0.9801 0.98.
The Petroleum Institute - PHYS - 344
19. (a) Consider the figure below. The magnitude of the net electric field at point P is 1 q Enet = 2 E1 sin = 2 2 2 4 0 ( d / 2 ) + r d /2( d / 2)2+ r2=1qd4 0 ( d / 2 )2 + r 2 3/ 2 &gt; For r &gt; d , we write [(d/2)2 + r2]3/2 r3 so the expression abo
The Petroleum Institute - PHYS - 344
20. Referring to Eq. 22-6, we use the binomial expansion (see Appendix E) but keeping higher order terms than are shown in Eq. 22-7:E=q d 3 d2 1 d3 d 3 d2 1 d3 + 4 z2 + 2 z3 + 1 z + 4 z2 2 z3 + 2 1 + z 4o z q d3 qd + + = 2o z3 4o z5Therefore, in the t
The Petroleum Institute - PHYS - 344
21. Think of the quadrupole as composed of two dipoles, each with dipole moment of magnitude p = qd. The moments point in opposite directions and produce fields in opposite directions at points on the quadrupole axis. Consider the point P on the axis, a d
The Petroleum Institute - PHYS - 344
23. We use Eq. 22-3, assuming both charges are positive. At P, we haveEleft ring = Eright ring 4 0 ( R + R2q1 R2 3/ 2)=q2 (2 R) 4 0 [(2 R ) 2 + R 2 ]3/ 2Simplifying, we obtainq1 2 = 2 q2 53/ 2 0.506.
The Petroleum Institute - PHYS - 344
25. From symmetry, we see that the net field at P is twice the field caused by the upper semicircular charge + q = R (and that it points downward). Adapting the steps leading to Eq. 22-21, we findj Enet = 2 () sin 4 0 R9090 q j. = 2 2 0 R (a) With
The Petroleum Institute - PHYS - 344
26. We find the maximum by differentiating Eq. 22-16 and setting the result equal to zero.d qz dz 4 z 2 + R 2 0F GG HcI q R 2z J= h JK 4 cz + R h2 3/ 2 0 222 5/ 2=0which leads to z = R / 2 . With R = 2.40 cm, we have z = 1.70 cm.
The Petroleum Institute - PHYS - 344
27. (a) The linear charge density is the charge per unit length of rod. Since the charge is uniformly distributed on the rod,=q 4.231015 C = = 5.19 1014 C/m. L 0.0815 m(b) We position the x axis along the rod with the origin at the left end of the rod,