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
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
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 > For r > 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,