<=
/div>
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/pres.xml
Content-Transfer-Encoding: quoted-printable
Content-Type: text/xml; charset="utf-8"
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/slide0001.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 13
CSE
303
Concepts and Tools for
Software Developme=
nt
Richard C. Davis
UW CSE – 10/27/2006
Lecture
13 – C Wrap-up
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/slide0001_image001.gif
Content-Transfer-Encoding: base64
Content-Type: image/gif
R0lGODlhyAF2AHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADG
AXUAgAAAAJkAAAL/jI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si
8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho
eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7
CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P
n6+/z9/v/w8woMCBBAsaPIgwocKFDBs6fAgxosSJFCtavIgxo8aNNhw7evwIMqTIkSRLmjyJMqXK
lSxbunwJM6bMmTRr2ryJM6fOnTx7+vwJNKjQoUSLGj2KNOmkAgA7
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/slide0004.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 13
10/27/2006
CSE 303 Lecture 13
2
Administravia
=
8226; Exam
&=
#8211; This
Wednesday
&=
#8211; In
class
&=
#8211; One-sided
8½" x 11" crib sheet
&=
#8211; Review
session Monday, 6:00PM?
=
8226; Richard's
Monday office hours
&=
#8211; delayed
30 mins.
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/slide0004_image002.gif
Content-Transfer-Encoding: base64
Content-Type: image/gif
R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg
AUMAgAAAAJkAAALkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si
8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho
eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7
CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P
n6+/z9/v/w8wYIgCADs=
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/slide0005.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 13
10/27/2006
CSE 303 Lecture 13
Your Feedback: Materials
=
8226; Many
like lecture notes
&=
#8211; This
was a surprise
&=
#8211; I'll
try to post 30 minutes before lecture
&=
#8226; But
I can't promise it
=
8226; Many
dislike "Programming in C"
&=
#8211; Few
good books on C (most C++)
&=
#8211; C99
focus was a big mistake on our part
&=
#8211; HW4
uses C99
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/slide0005_image003.gif
Content-Transfer-Encoding: base64
Content-Type: image/gif
R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg
AUMAgAAAAJkAAALkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si
8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho
eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7
CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P
n6+/z9/v/w8wYIgCADs=
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/slide0007.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 13
10/27/2006
CSE 303 Lecture 13
Your Feedback: Grades
=
8226; Where
are our grades!?!
&=
#8211; Shooting
for a week and a half turn-around
&=
#8211; We're
way behind and we're sorry
&=
#8211; You
can still get what you need
&=
#8226; Come
to office hours
=
226;
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/slide0007_image004.gif
Content-Transfer-Encoding: base64
Content-Type: image/gif
R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg
AUMAgAAAAJkAAALkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si
8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho
eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7
CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P
n6+/z9/v/w8wYIgCADs=
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/slide0006.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 13
10/27/2006
CSE 303 Lecture 13
Your Feedback: Assignments
• P=
ositive
comments
– A=
dvanced
stuff is interesting
• N=
egative
comments
– D=
ebugging
is hard/annoying
• I=
'll
try to assign it after some exercises
– G=
ive
hints early!
• N=
eed to
adjust difficulty of problems sometimes
• H=
W3
crash hint was not handled well (sorry)
– S=
truggling? Come to office hours!
=
• <=
i>I'm
proud of your progress
R=
26;
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/slide0006_image005.gif
Content-Transfer-Encoding: base64
Content-Type: image/gif
R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg
AUMAgAAAAJkAAALkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si
8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho
eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7
CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P
n6+/z9/v/w8wYIgCADs=
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/slide0009.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 13
10/27/2006
CSE 303 Lecture 13
6
Last Time
<=
span
class=3DBB style=3D'position:absolute;left:-4.43%'>• The
Preprocessor
•
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/slide0009_image006.gif
Content-Transfer-Encoding: base64
Content-Type: image/gif
R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg
AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si
8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho
eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7
CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P
n6+/z9/v/w8wYIgCADs=
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/slide0012.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 13
10/27/2006
CSE 303 Lecture 13
Today
=
8226; C
Wrap-up
&=
#8211; Overview
&=
#8211; Other
topics
&=
#8226; File
I/O
&=
#8226; Function
pointers
&=
#8211; Toward
C++
=
226;
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/slide0012_image007.gif
Content-Transfer-Encoding: base64
Content-Type: image/gif
R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg
AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si
8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho
eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7
CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P
n6+/z9/v/w8wYIgCADs=
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/slide0013.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 13
10/27/2006
CSE 303 Lecture 13
Top-down Overview of C
=
8226; Preprocessing
– <=
span
style=3D'font-family:"Courier New";color:#339933'>#include -=
for
external declarations
&=
#8226; Stick
to standard idioms
– <=
span
style=3D'font-family:"Courier New";color:#339933'>#ifdef - f=
or
conditional compilation
– <=
span
style=3D'font-family:"Courier New";color:#339933'>#define - =
for token-based
text substitution
=
8226; Compiling
(type checking and code gen.)
&=
#8211; A
sequence of declarations
&=
#8211; Each
C file (usually) becomes a .o
file
=
226;
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/slide0013_image008.gif
Content-Transfer-Encoding: base64
Content-Type: image/gif
R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg
AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si
8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho
eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7
CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P
n6+/z9/v/w8wYIgCADs=
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/slide0014.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 13
10/27/2006
CSE 303 Lecture 13
Top-down
Overview of C (cont'd)
• Linking (more later)=
13;
– Take .o and .a files a=
nd
make a program
– libc.a in by default
• Has printf , malloc , etc …
• Executing
<=
/div>
– O/S maintains address
space illusion
• The "big
array"
– Execution starts at
main
– Library manages the he=
ap
via malloc <=
/span>/free
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/slide0014_image009.gif
Content-Transfer-Encoding: base64
Content-Type: image/gif
R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg
AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si
8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho
eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7
CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P
n6+/z9/v/w8wYIgCADs=
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/slide0015.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 13
10/27/2006
CSE 303 Lecture 13
C: The Language
=
8226; File
is a sequence of declarations
&=
#8211; Global
variables : t x=
; or
t x =3D =
e;
– <=
span
style=3D'font-family:"Courier New";color:#339933'>struct , enum , (and=
union )
definitions
&=
#8211; Function
prototypes : t f(t1, … tn);<=
/b>
&=
#8211; Function
definitions
– <=
span
style=3D'font-family:"Courier New";color:#339933'>typedef s=
span>
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/slide0015_image010.gif
Content-Transfer-Encoding: base64
Content-Type: image/gif
R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg
AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si
8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho
eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7
CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P
n6+/z9/v/w8wYIgCADs=
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/slide0016.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 13
10/27/2006
CSE 303 Lecture 13
C: The Language (cont'd)
• A function body is a <=
i>statement
– Statements similar to
Java
• Include stdbool.h =
for bool
<=
/span>
• No exception handling&=
#13;
– Local Declarations
=
;
• Local Scope
• Use stack
<=
/div>
• Expressions
• Left is location
<=
/span>
• Right is value (includ=
ing
pointers to locations)
•<=
/span>
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/slide0016_image011.gif
Content-Transfer-Encoding: base64
Content-Type: image/gif
R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg
AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si
8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho
eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7
CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P
n6+/z9/v/w8wYIgCADs=
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/slide0017.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 13
10/27/2006
CSE 303 Lecture 13
C: The Language (cont'd)
• E=
xpression
Syntax
– &=
quot; * =
span>" for pointer dereference
<=
/div>
– &=
quot; &=
b> " for address-of
– &=
quot; . =
span>" for field access
– &=
quot; e->f=
" means " (*e).f "
– &=
quot; e1[e2]<=
/b> " means " *(e1 + e2) "
• P=
ointer
arithmetic remembers size of element!
• S=
ize of
types is exposed
– B=
ut
seldom what you think
• P=
adding,
alignment make this even harder to tell
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/slide0017_image012.gif
Content-Transfer-Encoding: base64
Content-Type: image/gif
R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg
AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si
8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho
eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7
CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P
n6+/z9/v/w8wYIgCADs=
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/slide0018.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 13
10/27/2006
CSE 303 Lecture 13
C is Unsafe
• For setting your compu=
ter
on fire, try these
– Array-bounds violation
(bad ptr arithmetic)
– dangling pointer
dereferences
– dereferencing NULL
<=
/span>
– Using results of wrong
casts
– Using contents of
uninitialized locations
• Remember
=
div>
– Pointer casts are not
checked
– Crashing "good&qu=
ot;
compared to silent bugs
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/slide0018_image013.gif
Content-Transfer-Encoding: base64
Content-Type: image/gif
R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg
AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si
8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho
eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7
CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P
n6+/z9/v/w8wYIgCADs=
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/slide0019.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 13
10/27/2006
CSE 303 Lecture 13
File I/O, Function Pointers
• File I/O
=
div>
– Very different in C and
C++
– We avoided so you could
focus more on C++
• Function Pointers
=
– Very ugly syntax
<=
/span>
– Used by User Interface
toolkits
• Callbacks
<=
/div>
– Important if you're tr=
ying
to "fake" objects
• Examples in file-an=
d-funcs.c
•<=
/span>
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/slide0019_image014.gif
Content-Transfer-Encoding: base64
Content-Type: image/gif
R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg
AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si
8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho
eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7
CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P
n6+/z9/v/w8wYIgCADs=
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/slide0020.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 13
10/27/2006
CSE 303 Lecture 13
Toward Objects
• I=
f you
want "objects" with code and data:
=
211; struct
MyPoint {
=
211; // data
=
211; int x; int y;
=
211; // code
=
211; int (*getX)(struct MyPoint
*);
=
211; void (*setX)(struct MyPoint =
*,
int);
=
211; }
<=
/b>
• C=
++ was
born when this became common
•
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/slide0020_image015.gif
Content-Transfer-Encoding: base64
Content-Type: image/gif
R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg
AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si
8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho
eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7
CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P
n6+/z9/v/w8wYIgCADs=
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/slide0010.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 13
10/27/2006
CSE 303 Lecture 13
Summary
• Done with C after homework and exam!
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/slide0010_image016.gif
Content-Transfer-Encoding: base64
Content-Type: image/gif
R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg
AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si
8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho
eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7
CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P
n6+/z9/v/w8wYIgCADs=
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/slide0011.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 13
10/27/2006
CSE 303 Lecture 13
Reading
=
8226; Programming
in C
&=
#8211; Chapter
16: File I/O (optional)
&=
#8211; pp273-274:
Pointers to Functions (optional)
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/slide0011_image017.gif
Content-Transfer-Encoding: base64
Content-Type: image/gif
R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg
AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si
8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho
eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7
CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P
n6+/z9/v/w8wYIgCADs=
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/slide0003.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 13
10/27/2006
CSE 303 Lecture 13
18
Next Time
=
8226; Societal
Implications Discussion
&=
#8211; Privacy
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/slide0003_image018.gif
Content-Transfer-Encoding: base64
Content-Type: image/gif
R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg
AUMAgAAAAJkAAALkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si
8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho
eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7
CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P
n6+/z9/v/w8wYIgCADs=
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/master01.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
<=
/div>
<=
/div>
<=
/div>
<=
/div>
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
<=
/div>
<=
/div>
<=
/div>
<=
/div>
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/master03_stylesheet.css
Content-Transfer-Encoding: base64
Content-Type: text/css
Ym9keQ0KCXt3aWR0aDo1MzRweDsNCgloZWlnaHQ6NDAwcHg7fQ0KLlRCDQoJe21zby1zcGVjaWFs
LWZvcm1hdDpub2J1bGxldFwyMDIyO30NCi5UDQoJe3RleHQtYWxpZ246Y2VudGVyOw0KCWZvbnQt
ZmFtaWx5OkFyaWFsOw0KCWNvbG9yOndoaXRlOw0KCW1zby1jb2xvci1pbmRleDowOw0KCWZvbnQt
c2l6ZToyMDklOw0KCW1zby1jaGFyLXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30N
Ci5CQg0KCXttc28tc3BlY2lhbC1mb3JtYXQ6YnVsbGV0XDIwMjI7fQ0KLkINCgl7dGV4dC1hbGln
bjpsZWZ0Ow0KCWZvbnQtZmFtaWx5OkFyaWFsOw0KCWNvbG9yOiM5OTAwMDA7DQoJZm9udC1zaXpl
OjE1MiU7DQoJbXNvLWNoYXItd3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLkIx
Qg0KCXttc28tc3BlY2lhbC1mb3JtYXQ6YnVsbGV0XDIwMTM7fQ0KLkIxDQoJe3RleHQtYWxpZ246
bGVmdDsNCglmb250LWZhbWlseTpBcmlhbDsNCgljb2xvcjpibGFjazsNCgltc28tY29sb3ItaW5k
ZXg6MTsNCglmb250LXNpemU6MTMzJTsNCgltc28tY2hhci13cmFwOjE7DQoJbXNvLWtpbnNva3Ut
b3ZlcmZsb3c6MTt9DQouQjJCDQoJe21zby1zcGVjaWFsLWZvcm1hdDpidWxsZXRcMjAyMjt9DQou
QjINCgl7dGV4dC1hbGlnbjpsZWZ0Ow0KCWZvbnQtZmFtaWx5OkFyaWFsOw0KCWNvbG9yOmJsYWNr
Ow0KCW1zby1jb2xvci1pbmRleDoxOw0KCWZvbnQtc2l6ZToxMTQlOw0KCW1zby1jaGFyLXdyYXA6
MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5CM0INCgl7bXNvLXNwZWNpYWwtZm9ybWF0
OmJ1bGxldFwyMDEzO30NCi5CMw0KCXt0ZXh0LWFsaWduOmxlZnQ7DQoJZm9udC1mYW1pbHk6QXJp
YWw7DQoJY29sb3I6YmxhY2s7DQoJbXNvLWNvbG9yLWluZGV4OjE7DQoJZm9udC1zaXplOjk1JTsN
Cgltc28tY2hhci13cmFwOjE7DQoJbXNvLWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouQjRCDQoJe21z
by1zcGVjaWFsLWZvcm1hdDpidWxsZXRcMDBCQjt9DQouQjQNCgl7dGV4dC1hbGlnbjpsZWZ0Ow0K
CWZvbnQtZmFtaWx5OkFyaWFsOw0KCWNvbG9yOmJsYWNrOw0KCW1zby1jb2xvci1pbmRleDoxOw0K
CWZvbnQtc2l6ZTo5NSU7DQoJbXNvLWNoYXItd3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93
OjE7fQ0KLk5CDQoJe21zby1zcGVjaWFsLWZvcm1hdDpub2J1bGxldFwyMDIyO30NCi5ODQoJe3Rl
eHQtYWxpZ246bGVmdDsNCglmb250LWZhbWlseTpBcmlhbDsNCgljb2xvcjpibGFjazsNCgltc28t
Y29sb3ItaW5kZXg6MTsNCglmb250LXNpemU6NTclOw0KCW1zby1jaGFyLXdyYXA6MTsNCgltc28t
a2luc29rdS1vdmVyZmxvdzoxO30NCi5OMUINCgl7bXNvLXNwZWNpYWwtZm9ybWF0Om5vYnVsbGV0
XDIwMjI7fQ0KLk4xDQoJe3RleHQtYWxpZ246bGVmdDsNCglmb250LWZhbWlseTpBcmlhbDsNCglj
b2xvcjpibGFjazsNCgltc28tY29sb3ItaW5kZXg6MTsNCglmb250LXNpemU6NTclOw0KCW1zby1j
aGFyLXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5OMkINCgl7bXNvLXNwZWNp
YWwtZm9ybWF0Om5vYnVsbGV0XDIwMjI7fQ0KLk4yDQoJe3RleHQtYWxpZ246bGVmdDsNCglmb250
LWZhbWlseTpBcmlhbDsNCgljb2xvcjpibGFjazsNCgltc28tY29sb3ItaW5kZXg6MTsNCglmb250
LXNpemU6NTclOw0KCW1zby1jaGFyLXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30N
Ci5OM0INCgl7bXNvLXNwZWNpYWwtZm9ybWF0Om5vYnVsbGV0XDIwMjI7fQ0KLk4zDQoJe3RleHQt
YWxpZ246bGVmdDsNCglmb250LWZhbWlseTpBcmlhbDsNCgljb2xvcjpibGFjazsNCgltc28tY29s
b3ItaW5kZXg6MTsNCglmb250LXNpemU6NTclOw0KCW1zby1jaGFyLXdyYXA6MTsNCgltc28ta2lu
c29rdS1vdmVyZmxvdzoxO30NCi5ONE4NCgl7bXNvLXNwZWNpYWwtZm9ybWF0Om5vYnVsbGV0XDIw
MjI7fQ0KLk40DQoJe3RleHQtYWxpZ246bGVmdDsNCglmb250LWZhbWlseTpBcmlhbDsNCgljb2xv
cjpibGFjazsNCgltc28tY29sb3ItaW5kZXg6MTsNCglmb250LXNpemU6NTclOw0KCW1zby1jaGFy
LXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5PQg0KCXttc28tc3BlY2lhbC1m
b3JtYXQ6bm9idWxsZXRcMjAyMjt9DQouTw0KCXt0ZXh0LWFsaWduOmxlZnQ7DQoJZm9udC1mYW1p
bHk6QXJpYWw7DQoJY29sb3I6YmxhY2s7DQoJbXNvLWNvbG9yLWluZGV4OjE7DQoJZm9udC1zaXpl
Ojg1JTsNCgltc28tY2hhci13cmFwOjE7DQoJbXNvLWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouTzEN
Cgl7bXNvLWNoYXItd3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLk8yDQoJe21z
by1jaGFyLXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5PMw0KCXttc28tY2hh
ci13cmFwOjE7DQoJbXNvLWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouTzQNCgl7bXNvLWNoYXItd3Jh
cDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLkNCQg0KCXttc28tc3BlY2lhbC1mb3Jt
YXQ6bm9idWxsZXRcMjAyMjt9DQouQ0INCgl7dGV4dC1hbGlnbjpjZW50ZXI7DQoJZm9udC1mYW1p
bHk6QXJpYWw7DQoJY29sb3I6Izk5MDAwMDsNCglmb250LXNpemU6MTUyJTsNCgltc28tY2hhci13
cmFwOjE7DQoJbXNvLWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouQ0IxDQoJe21zby1jaGFyLXdyYXA6
MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5DQjINCgl7bXNvLWNoYXItd3JhcDoxOw0K
CW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLkNCMw0KCXttc28tY2hhci13cmFwOjE7DQoJbXNv
LWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouQ0I0DQoJe21zby1jaGFyLXdyYXA6MTsNCgltc28ta2lu
c29rdS1vdmVyZmxvdzoxO30NCi5DVEINCgl7bXNvLXNwZWNpYWwtZm9ybWF0Om5vYnVsbGV0XDIw
MjI7fQ0KLkNUDQoJe3RleHQtYWxpZ246Y2VudGVyOw0KCWZvbnQtZmFtaWx5OkFyaWFsOw0KCWNv
bG9yOndoaXRlOw0KCW1zby1jb2xvci1pbmRleDowOw0KCWZvbnQtc2l6ZToyMDklOw0KCW1zby1j
aGFyLXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5IQg0KCXtjb2xvcjojOTkw
MDAwOw0KCW1zby1jaGFyLXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5IQjEN
Cgl7bXNvLWNoYXItd3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLkhCMg0KCXtt
c28tY2hhci13cmFwOjE7DQoJbXNvLWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouSEIzDQoJe21zby1j
aGFyLXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5IQjQNCgl7bXNvLWNoYXIt
d3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLlFCDQoJe2NvbG9yOiM5OTAwMDA7
DQoJbXNvLWNoYXItd3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLlFCMQ0KCXtt
c28tY2hhci13cmFwOjE7DQoJbXNvLWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouUUIyDQoJe21zby1j
aGFyLXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5RQjMNCgl7bXNvLWNoYXIt
d3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLlFCNA0KCXttc28tY2hhci13cmFw
OjE7DQoJbXNvLWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouVGJsDQoJe2NvbG9yOiM5OTAwMDA7DQoJ
bXNvLWNoYXItd3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLlRibDENCgl7bXNv
LWNoYXItd3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLlRibDINCgl7bXNvLWNo
YXItd3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLlRibDMNCgl7bXNvLWNoYXIt
d3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLlRibDQNCgl7bXNvLWNoYXItd3Jh
cDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLmRlZmF1bHRCDQoJe21zby1zcGVjaWFs
LWZvcm1hdDpub2J1bGxldFwyMDIyO30NCi5kZWZhdWx0DQoJe3RleHQtYWxpZ246bGVmdDsNCglm
b250LWZhbWlseTpBcmlhbDsNCglmb250LXdlaWdodDpub3JtYWw7DQoJZm9udC1zdHlsZTpub3Jt
YWw7DQoJdGV4dC1kZWNvcmF0aW9uOm5vbmU7DQoJdGV4dC1zaGFkb3c6bm9uZTsNCgl0ZXh0LWVm
ZmVjdDpub25lOw0KCW1zby1mYXJlYXN0LWhpbnQ6bm87DQoJbGF5b3V0LWZsb3c6aG9yaXpvbnRh
bDsNCgljb2xvcjpibGFjazsNCgltc28tY29sb3ItaW5kZXg6MTsNCglmb250LXNpemU6ODUlOw0K
CW1zby10ZXh0LXJhaXNlOjAlOw0KCW1zby1saW5lLXNwYWNpbmc6IjEwMCAwIDAiOw0KCW1zby1t
YXJnaW4tbGVmdC1hbHQ6MDsNCgltc28tdGV4dC1pbmRlbnQtYWx0OjA7DQoJbXNvLWNoYXItd3Jh
cDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7DQoJZGlyZWN0aW9uOmx0cjsNCgltc28td29y
ZC13cmFwOjE7DQoJbXNvLXZlcnRpY2FsLWFsaWduLXNwZWNpYWw6YmFzZWxpbmU7DQoJbXNvLWFu
c2ktbGFuZ3VhZ2U6RU4tVVM7fQ0KYTpsaW5rDQoJe2NvbG9yOiMwMDk5OTkgIWltcG9ydGFudDt9
DQphOmFjdGl2ZQ0KCXtjb2xvcjojMzMzMzk5ICFpbXBvcnRhbnQ7fQ0KYTp2aXNpdGVkDQoJe2Nv
bG9yOiM5OUNDMDAgIWltcG9ydGFudDt9DQp=
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/master04_stylesheet.css
Content-Transfer-Encoding: base64
Content-Type: text/css
Ym9keQ0KCXt3aWR0aDo1MzRweDsNCgloZWlnaHQ6NDAwcHg7fQ0KLlRCDQoJe21zby1zcGVjaWFs
LWZvcm1hdDpub2J1bGxldFwyMDIyO30NCi5UDQoJe3RleHQtYWxpZ246Y2VudGVyOw0KCWZvbnQt
ZmFtaWx5OkFyaWFsOw0KCWNvbG9yOndoaXRlOw0KCW1zby1jb2xvci1pbmRleDowOw0KCWZvbnQt
c2l6ZToyMDklOw0KCW1zby1jaGFyLXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30N
Ci5CQg0KCXttc28tc3BlY2lhbC1mb3JtYXQ6YnVsbGV0XDIwMjI7fQ0KLkINCgl7dGV4dC1hbGln
bjpsZWZ0Ow0KCWZvbnQtZmFtaWx5OkFyaWFsOw0KCWNvbG9yOiMwMDAwOTk7DQoJZm9udC1zaXpl
OjE1MiU7DQoJbXNvLWNoYXItd3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLkIx
Qg0KCXttc28tc3BlY2lhbC1mb3JtYXQ6YnVsbGV0XDIwMTM7fQ0KLkIxDQoJe3RleHQtYWxpZ246
bGVmdDsNCglmb250LWZhbWlseTpBcmlhbDsNCgljb2xvcjpibGFjazsNCgltc28tY29sb3ItaW5k
ZXg6MTsNCglmb250LXNpemU6MTMzJTsNCgltc28tY2hhci13cmFwOjE7DQoJbXNvLWtpbnNva3Ut
b3ZlcmZsb3c6MTt9DQouQjJCDQoJe21zby1zcGVjaWFsLWZvcm1hdDpidWxsZXRcMjAyMjt9DQou
QjINCgl7dGV4dC1hbGlnbjpsZWZ0Ow0KCWZvbnQtZmFtaWx5OkFyaWFsOw0KCWNvbG9yOmJsYWNr
Ow0KCW1zby1jb2xvci1pbmRleDoxOw0KCWZvbnQtc2l6ZToxMTQlOw0KCW1zby1jaGFyLXdyYXA6
MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5CM0INCgl7bXNvLXNwZWNpYWwtZm9ybWF0
OmJ1bGxldFwyMDEzO30NCi5CMw0KCXt0ZXh0LWFsaWduOmxlZnQ7DQoJZm9udC1mYW1pbHk6QXJp
YWw7DQoJY29sb3I6YmxhY2s7DQoJbXNvLWNvbG9yLWluZGV4OjE7DQoJZm9udC1zaXplOjk1JTsN
Cgltc28tY2hhci13cmFwOjE7DQoJbXNvLWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouQjRCDQoJe21z
by1zcGVjaWFsLWZvcm1hdDpidWxsZXRcMDBCQjt9DQouQjQNCgl7dGV4dC1hbGlnbjpsZWZ0Ow0K
CWZvbnQtZmFtaWx5OkFyaWFsOw0KCWNvbG9yOmJsYWNrOw0KCW1zby1jb2xvci1pbmRleDoxOw0K
CWZvbnQtc2l6ZTo5NSU7DQoJbXNvLWNoYXItd3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93
OjE7fQ0KLk5CDQoJe21zby1zcGVjaWFsLWZvcm1hdDpub2J1bGxldFwyMDIyO30NCi5ODQoJe3Rl
eHQtYWxpZ246bGVmdDsNCglmb250LWZhbWlseTpBcmlhbDsNCgljb2xvcjpibGFjazsNCgltc28t
Y29sb3ItaW5kZXg6MTsNCglmb250LXNpemU6NTclOw0KCW1zby1jaGFyLXdyYXA6MTsNCgltc28t
a2luc29rdS1vdmVyZmxvdzoxO30NCi5OMUINCgl7bXNvLXNwZWNpYWwtZm9ybWF0Om5vYnVsbGV0
XDIwMjI7fQ0KLk4xDQoJe3RleHQtYWxpZ246bGVmdDsNCglmb250LWZhbWlseTpBcmlhbDsNCglj
b2xvcjpibGFjazsNCgltc28tY29sb3ItaW5kZXg6MTsNCglmb250LXNpemU6NTclOw0KCW1zby1j
aGFyLXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5OMkINCgl7bXNvLXNwZWNp
YWwtZm9ybWF0Om5vYnVsbGV0XDIwMjI7fQ0KLk4yDQoJe3RleHQtYWxpZ246bGVmdDsNCglmb250
LWZhbWlseTpBcmlhbDsNCgljb2xvcjpibGFjazsNCgltc28tY29sb3ItaW5kZXg6MTsNCglmb250
LXNpemU6NTclOw0KCW1zby1jaGFyLXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30N
Ci5OM0INCgl7bXNvLXNwZWNpYWwtZm9ybWF0Om5vYnVsbGV0XDIwMjI7fQ0KLk4zDQoJe3RleHQt
YWxpZ246bGVmdDsNCglmb250LWZhbWlseTpBcmlhbDsNCgljb2xvcjpibGFjazsNCgltc28tY29s
b3ItaW5kZXg6MTsNCglmb250LXNpemU6NTclOw0KCW1zby1jaGFyLXdyYXA6MTsNCgltc28ta2lu
c29rdS1vdmVyZmxvdzoxO30NCi5ONE4NCgl7bXNvLXNwZWNpYWwtZm9ybWF0Om5vYnVsbGV0XDIw
MjI7fQ0KLk40DQoJe3RleHQtYWxpZ246bGVmdDsNCglmb250LWZhbWlseTpBcmlhbDsNCgljb2xv
cjpibGFjazsNCgltc28tY29sb3ItaW5kZXg6MTsNCglmb250LXNpemU6NTclOw0KCW1zby1jaGFy
LXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5PQg0KCXttc28tc3BlY2lhbC1m
b3JtYXQ6bm9idWxsZXRcMjAyMjt9DQouTw0KCXt0ZXh0LWFsaWduOmxlZnQ7DQoJZm9udC1mYW1p
bHk6QXJpYWw7DQoJY29sb3I6YmxhY2s7DQoJbXNvLWNvbG9yLWluZGV4OjE7DQoJZm9udC1zaXpl
Ojg1JTsNCgltc28tY2hhci13cmFwOjE7DQoJbXNvLWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouTzEN
Cgl7bXNvLWNoYXItd3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLk8yDQoJe21z
by1jaGFyLXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5PMw0KCXttc28tY2hh
ci13cmFwOjE7DQoJbXNvLWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouTzQNCgl7bXNvLWNoYXItd3Jh
cDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLkNCQg0KCXttc28tc3BlY2lhbC1mb3Jt
YXQ6bm9idWxsZXRcMjAyMjt9DQouQ0INCgl7dGV4dC1hbGlnbjpjZW50ZXI7DQoJZm9udC1mYW1p
bHk6QXJpYWw7DQoJY29sb3I6IzAwMDA5OTsNCglmb250LXNpemU6MTUyJTsNCgltc28tY2hhci13
cmFwOjE7DQoJbXNvLWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouQ0IxDQoJe21zby1jaGFyLXdyYXA6
MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5DQjINCgl7bXNvLWNoYXItd3JhcDoxOw0K
CW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLkNCMw0KCXttc28tY2hhci13cmFwOjE7DQoJbXNv
LWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouQ0I0DQoJe21zby1jaGFyLXdyYXA6MTsNCgltc28ta2lu
c29rdS1vdmVyZmxvdzoxO30NCi5DVEINCgl7bXNvLXNwZWNpYWwtZm9ybWF0Om5vYnVsbGV0XDIw
MjI7fQ0KLkNUDQoJe3RleHQtYWxpZ246Y2VudGVyOw0KCWZvbnQtZmFtaWx5OkFyaWFsOw0KCWNv
bG9yOndoaXRlOw0KCW1zby1jb2xvci1pbmRleDowOw0KCWZvbnQtc2l6ZToyMDklOw0KCW1zby1j
aGFyLXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5IQg0KCXtjb2xvcjojMDAw
MDk5Ow0KCW1zby1jaGFyLXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5IQjEN
Cgl7bXNvLWNoYXItd3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLkhCMg0KCXtt
c28tY2hhci13cmFwOjE7DQoJbXNvLWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouSEIzDQoJe21zby1j
aGFyLXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5IQjQNCgl7bXNvLWNoYXIt
d3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLlFCDQoJe2NvbG9yOiMwMDAwOTk7
DQoJbXNvLWNoYXItd3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLlFCMQ0KCXtt
c28tY2hhci13cmFwOjE7DQoJbXNvLWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouUUIyDQoJe21zby1j
aGFyLXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5RQjMNCgl7bXNvLWNoYXIt
d3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLlFCNA0KCXttc28tY2hhci13cmFw
OjE7DQoJbXNvLWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouVGJsDQoJe2NvbG9yOiMwMDAwOTk7DQoJ
bXNvLWNoYXItd3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLlRibDENCgl7bXNv
LWNoYXItd3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLlRibDINCgl7bXNvLWNo
YXItd3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLlRibDMNCgl7bXNvLWNoYXIt
d3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLlRibDQNCgl7bXNvLWNoYXItd3Jh
cDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLmRlZmF1bHRCDQoJe21zby1zcGVjaWFs
LWZvcm1hdDpub2J1bGxldFwyMDIyO30NCi5kZWZhdWx0DQoJe3RleHQtYWxpZ246bGVmdDsNCglm
b250LWZhbWlseTpBcmlhbDsNCglmb250LXdlaWdodDpub3JtYWw7DQoJZm9udC1zdHlsZTpub3Jt
YWw7DQoJdGV4dC1kZWNvcmF0aW9uOm5vbmU7DQoJdGV4dC1zaGFkb3c6bm9uZTsNCgl0ZXh0LWVm
ZmVjdDpub25lOw0KCW1zby1mYXJlYXN0LWhpbnQ6bm87DQoJbGF5b3V0LWZsb3c6aG9yaXpvbnRh
bDsNCgljb2xvcjpibGFjazsNCgltc28tY29sb3ItaW5kZXg6MTsNCglmb250LXNpemU6ODUlOw0K
CW1zby10ZXh0LXJhaXNlOjAlOw0KCW1zby1saW5lLXNwYWNpbmc6IjEwMCAwIDAiOw0KCW1zby1t
YXJnaW4tbGVmdC1hbHQ6MDsNCgltc28tdGV4dC1pbmRlbnQtYWx0OjA7DQoJbXNvLWNoYXItd3Jh
cDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7DQoJZGlyZWN0aW9uOmx0cjsNCgltc28td29y
ZC13cmFwOjE7DQoJbXNvLXZlcnRpY2FsLWFsaWduLXNwZWNpYWw6YmFzZWxpbmU7DQoJbXNvLWFu
c2ktbGFuZ3VhZ2U6RU4tVVM7fQ0KYTpsaW5rDQoJe2NvbG9yOiMwMDk5OTkgIWltcG9ydGFudDt9
DQphOmFjdGl2ZQ0KCXtjb2xvcjojMzMzMzk5ICFpbXBvcnRhbnQ7fQ0KYTp2aXNpdGVkDQoJe2Nv
bG9yOiM5OUNDMDAgIWltcG9ydGFudDt9DQp=
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/script.js
Content-Transfer-Encoding: quoted-printable
Content-Type: application/javascript; charset="us-ascii"
function LoadSld()
{
var sld=3DGetObj("SlideObj")
if( !g_supportsPPTHTML ) { =09
sld.style.visibility=3D"visible"
return
}
if( MakeNotesVis() ) return
runAnimations =3D _InitAnimations();
=09
if( IsWin("PPTSld") )
parent.SldUpdated(GetSldId())
g_origSz=3DparseInt(SlideObj.style.fontSize)
g_origH=3Dsld.style.posHeight
g_origW=3Dsld.style.posWidth
g_scaleHyperlinks=3D(document.all.tags("AREA").length>0)
if( g_scaleHyperlinks )
InitHLinkArray()
if( g_scaleInFrame||(IsWin("PPTSld") && parent.IsFullScrMode() ) )
document.body.scroll=3D"no"
_RSW()
if( IsWin("PPTSld") && parent.IsFullScrMode() )
FullScrInit();
=09
MakeSldVis();
ChkAutoAdv()
if( runAnimations )
{
if( document.all("NSPlay") )
document.all("NSPlay").autoStart =3D false;
if( sld.filters && sld.filters.revealtrans )
setTimeout( "document.body.start()", sld.filters.revealtrans.duration * =
1000 );
else
document.body.start();
}
}
function MakeSldVis()=20
{
var fTrans=3Dg_showAnimation && SldHasTrans()
if( fTrans )=09
{
if( g_bgSound ) {
idx=3Dg_bgSound.indexOf(",");
pptSound.src=3Dg_bgSound.substr( 0, idx );
pptSound.loop=3D -(parseInt(g_bgSound.substr(idx+1)));
}
SlideObj.filters.revealtrans.Apply()=09
}
SlideObj.style.visibility=3D"visible"
if( fTrans )
SlideObj.filters.revealtrans.Play()
}
function MakeNotesVis()=20
{
if( !IsNts() ) return false=20
SlideObj.style.display=3D"none"
nObj =3D document.all.item("NotesObj")
parent.SetHasNts(0)
if( nObj ) {=20
nObj.style.display=3D""
parent.SetHasNts(1)
}
return 1
}
function ChkAutoAdv()
{
if(SldHasTrans())
SlideObj.onfilterchange=3DAutoAdv
else
AutoAdv()
}
function AutoAdv()
{
if(!IsWin("PPTSld") || !gUseSldTimings )return
var sld=3DGetCurSld()
if( (sld.mAdvDelay>0) && !parent.IsFramesMode() )
setTimeout("parent.GoToNextSld()",sld.mAdvDelay)
}
function GetObj(id)
{
if(g_supportsPPTHTML) return document.all(id);
else return document.getElementById(id);
}
function SldHasTrans() { return SlideObj.style.filter !=3D ""; }
function GetSldId()=20
{
var regExp =3D /file:\/\/\//i
var pos =3D location.href.search(regExp)
if (MHTMLPrefix !=3D "" && pos !=3D -1)
sId =3D location.href.substring(pos)
else
{
sId =3D RemoveFilePrefixFromHref(location.href);
var regExp =3D /\//
var fixedHref =3D sId
var pos =3D -1
=09
pos =3D fixedHref.search(regExp)
while (pos !=3D -1)
{
fixedHref =3D fixedHref.replace(regExp, "\\")
pos =3D fixedHref.search(regExp)
}
=09
if (g_fBaseHyperlink =3D=3D true)
sId =3D "file:///" + fixedHref;
else
sId =3D fixedHref.substring(fixedHref.lastIndexOf('\\') + 1)
}
=09
return sId
}
function HideMenu() { if( frames["PPTSld"] && PPTSld.document.all.item("ctx=
tmenu") && PPTSld.ctxtmenu.style.display!=3D"none" ) { PPTSld.ctxtmenu.styl=
e.display=3D'none'; return true } return false }
function IsWin( name ) { return window.name =3D=3D name }
function IsNts() { return IsWin("PPTNts") }
function IsSldOrNts() { return( IsWin("PPTSld")||IsWin("PPTNts") ) }
function SupportsPPTAnimation() { return( navigator.platform =3D=3D "Win32"=
&& navigator.appVersion.indexOf("Windows")>0 ) }
function SupportsPPTHTML()
{
var appVer=3Dnavigator.appVersion, msie=3DappVer.indexOf("MSIE "), ver=3D0
if( msie >=3D 0 )
ver=3DparseFloat( appVer.substring( msie+5, appVer.indexOf(";",msie) ) )
else
ver=3DparseInt(appVer)
return( ver >=3D 4 && msie >=3D 0 )
}
function _RSW()
{
if( !g_supportsPPTHTML || IsNts() ||
( !g_scaleInFrame && (!IsWin("PPTSld") || !parent.IsFullScrMode()) ) )
return
var padding=3D0;
if( IsWin("PPTSld") && parent.IsFramesMode() ) padding=3D6
cltWidth=3Ddocument.body.clientWidth-padding
cltHeight=3Ddocument.body.clientHeight-padding
factor=3D(1.0*cltWidth)/g_origW
if( cltHeight < g_origH*factor )
factor=3D(1.0*cltHeight)/g_origH
newSize =3D g_origSz * factor
if( newSize < 1 ) newSize=3D1
s=3DSlideObj.style
s.fontSize=3DnewSize+"px"
s.posWidth=3Dg_origW*factor
s.posHeight=3Dg_origH*factor
s.posLeft=3D(cltWidth-s.posWidth+padding)/2
s.posTop=3D(cltHeight-s.posHeight+padding)/2
if( g_scaleHyperlinks )
ScaleHyperlinks( factor )
}
function _InitAnimations()
{
animRuntimeInstalled =3D ''+document.body.localTime !=3D 'undefined';
isFullScreen =3D (window.name =3D=3D "PPTSld") && !parent.IsFramesMode();
g_animUseRuntime =3D g_showAnimation && animRuntimeInstalled && !(isFullSc=
reen && parent.IsSldVisited());
if( g_animUseRuntime ) {
collSeq =3D document.all.tags("seq");
if( collSeq !=3D null ) {
for(ii=3D0;ii
numSlds )
gSldJumpIdx =3D numSlds;
if ( gSldJumpIdx >=3D 0 ) {
if ( gSldJumpIdx =3D=3D 0 )
gSldJumpIdx =3D 1;
var jumpTo =3D parseInt(gSldJumpIdx);
gSldJump =3D 0; gSldJumpIdx =3D "";
win.GoToSld( parent.GetSldList().mList[jumpTo-1].mSldHref )
}
}
}
function _KDH()
{
if( event.keyCode =3D=3D 8 ) {
event.returnValue =3D 0;
parent.GoToPrevSld();
}
}
function DocumentOnClick()
{
if( IsNts() || parent.HideMenu() ) return;
if( ( g_allowAdvOnClick && !parent.IsFramesMode() ) ||
(event && (event.keyCode=3D=3D32) ) )
parent.GoToNextSld();
}
var g_supportsPPTHTML =3D SupportsPPTHTML(), g_scaleInFrame =3D 1, gId=3D""=
, g_bgSound=3D"",
g_scaleHyperlinks =3D false, g_allowAdvOnClick =3D 1, g_showInBrowser =
=3D 0, gLoopCont =3D 0, gUseSldTimings =3D 1;
var g_showAnimation =3D g_supportsPPTHTML && SupportsPPTAnimation() && ( (w=
indow.name=3D=3D"PPTSld" && !parent.IsFramesMode()) || g_showInBrowser );va=
r g_animManager =3D null;
var g_animUseRuntime =3D false;
var g_animItemsToHide, g_animInteractiveItems, g_animSlideTime;
var g_animMainSequence =3D null;
var ENDSHOW_MESG=3D"End of slide show, click to exit.", SCREEN_MODE=3D"Fram=
es", gIsEndShow=3D0, NUM_VIS_SLDS=3D18, SCRIPT_HREF=3D"script.js", FULLSCR_=
HREF=3D"fullscreen.htm";
var gCurSld =3D gPrevSld =3D 1, g_offset =3D 0, gNtsOpen =3D gHasNts =3D gO=
tlTxtExp =3D 0, gHasNarration =3D 0, gOtlOpen =3D true
window.gPPTHTML=3DSupportsPPTHTML()
var g_fBaseHyperlink =3D false;
var gMainDoc=3Dnew Array(new hrefList("slide0001.htm",1,-1,1),new hrefList(=
"slide0004.htm",1,-1,1),new hrefList("slide0005.htm",1,-1,1),new hrefList("=
slide0007.htm",1,-1,1),new hrefList("slide0006.htm",1,-1,1),new hrefList("s=
lide0009.htm",1,-1,1),new hrefList("slide0012.htm",1,-1,1),new hrefList("sl=
ide0013.htm",1,-1,1),new hrefList("slide0014.htm",1,-1,1),new hrefList("sli=
de0015.htm",1,-1,1),new hrefList("slide0016.htm",1,-1,1),new hrefList("slid=
e0017.htm",1,-1,1),new hrefList("slide0018.htm",1,-1,1),new hrefList("slide=
0019.htm",1,-1,1),new hrefList("slide0020.htm",1,-1,1),new hrefList("slide0=
010.htm",1,-1,1),new hrefList("slide0011.htm",1,-1,1),new hrefList("slide00=
03.htm",1,-1,1));
/*********************************************
Frameset functions
These functions control slide navigation
and state of the frameset.
**********************************************/
function RemoveFilePrefixFromHref(href)
{
var regExp =3D /^file:\/\/\//i;
return href.replace(regExp, "")
}
function FullScrInit()
{
g_allowAdvOnClick =3D GetCurSld().mAdvOnClk
document.body.style.backgroundColor=3D"black"
document.oncontextmenu=3Dparent._CM;
document.onkeydown =3D _KDH;
document.ondragstart=3DCancel
document.onselectstart=3DCancel
self.focus()
}
function Redirect( frmId )
{=09
var str=3Ddocument.location.hash,idx=3Dstr.indexOf('#'), sId=3DGetSldId()
if(idx>=3D0) str=3Dstr.substr(1);
if( window.name !=3D frmId && ( sId !=3D str) ) {
obj =3D GetObj("Main-File")
window.location.href=3Dobj.href+"#"+sId
return 1
}
return 0
}
var MHTMLPrefix =3D CalculateMHTMLPrefix();=20
function CalculateMHTMLPrefix()
{
if ( document.location.protocol =3D=3D 'mhtml:') {=20
href=3Dnew String(document.location.href)=20
Start=3Dhref.indexOf('!')+1=20
End=3Dhref.lastIndexOf('/')+1=20
if (End < Start)=20
return href.substring(0, Start)=20
else=20
return href.substring(0, End)=20
}
return '';
}
function GetTags(base,tag)
{
if(g_supportsPPTHTML) return base.all.tags(tag);
else return base.getElementsByTagName(tag);
}
function UpdNtsPane(){ if(frames["PPTNts"]) PPTNts.location.replace( MHTMLP=
refix+GetHrefObj( gCurSld ).mNtsHref ) }
function UpdNavPane( sldIndex ){ if(gNavLoaded) PPTNav.UpdNav() }
function UpdOtNavPane(){ if(gOtlNavLoaded) PPTOtlNav.UpdOtlNav() }
function UpdOtlPane(){ if(gOtlLoaded) PPTOtl.UpdOtl() }
function SetHasNts( fVal )
{
if( gHasNts !=3D fVal ) {
gHasNts=3DfVal
UpdNavPane()
}
}
function ToggleOtlText()
{
gOtlTxtExp=3D!gOtlTxtExp
UpdOtlPane()
}
function ClearMedia()
{
// Clear any sounds playing before launching another browser window. Other=
wise,
// in fullscreen mode, you'll continue to hear the sound in the frames mod=
e.
if (PPTSld.pptSound) PPTSld.pptSound.loop =3D 0;
}
function FullScreen()
{=20
if ( PPTSld.g_animUseRuntime )
PPTSld.document.body.pause();
ClearMedia();
var href =3D ( document.location.protocol =3D=3D 'mhtml:') ? FULLSCR_HREF =
: FULLSCR_HREF+"#"+GetHrefObj(gCurSld).mSldHref;
if (MHTMLPrefix !=3D "")
href =3D RemoveFilePrefixFromHref(href)
if(PPTNav.event.ctrlKey) {
var w =3D (window.screen.availWidth * 1.0) / 2.0
var h =3D w * (PPTSld.g_origH * 1.0) / PPTSld.g_origW
win =3D window.open( MHTMLPrefix+href,null,"toolbar=3D0,resizable=3D1,top=
=3D0,left=3D0," + "width=3D"+ w + ",height=3D" + h );
if( win.document.body && PPTSld.g_animUseRuntime )
win.document.body.PPTSldFrameset=3Dwindow;
}
else
{
win =3D window.open( MHTMLPrefix+href,null,"fullscreen=3Dyes" );
if( win.document.body && PPTSld.g_animUseRuntime )
win.document.body.PPTSldFrameset=3Dwindow;
}
}
function ToggleVNarration()
{
rObj=3DPPTSld.document.all("NSPlay")
if( rObj && !PPTSld.g_animUseRuntime ) {
if( (rObj.playState =3D=3D 1)||(rObj.playState =3D=3D 0) )
rObj.Play()
else if( rObj.playState =3D=3D 2 )
rObj.Pause()
else
return;
}
else if( PPTSld.g_animUseRuntime )
{
narObj =3D PPTSld.document.all("narrationID")
if( narObj )
narObj.togglePause()
}
}
function GetCurSldNum()
{ =20
obj=3DGetHrefObj(gCurSld)
if( obj.mOrigVis =3D=3D 1 )
return obj.mSldIdx
else =20
return gCurSld
}
function GetNumSlds()
{ =20
if( GetHrefObj(gCurSld).mOrigVis =3D=3D 1 )
return GetSldList().mNumVisSlds;
else
return GetSldList().mList.length
}
function GetSldNum( href )
{
for(ii=3D0; ii 1 )
PopSldList();
else if( !IsFramesMode() ) {
if( gLoopCont )
GoToFirst()
else
EndShow()
}
}
function GoToPrevSld()
{
ii=3DgCurSld-1
if( ii > 0 ) {
obj=3DGetHrefObj(ii)
while ( obj && ( obj.mVis =3D=3D 0 ) && ( ii>0 ) )
obj=3DGetHrefObj(--ii)
if( ii =3D=3D 0 ) ii=3D1
GoToSldNum(ii)
}
}
function GoToFirst(){ GoToSld( GetHrefObj(1).mSldHref ) }
function GoToLast()
{
ii=3DGetSldList().mList.length
if( ii !=3D gCurSld )
GoToSld( GetHrefObj(ii).mSldHref )
}
function GoToSldNum( num )
{
if( PPTSld.event ) PPTSld.event.cancelBubble=3Dtrue
obj =3D GetHrefObj( num )
obj.mVis=3D1
gPrevSld=3DgCurSld
gCurSld =3D num;
=09
if (MHTMLPrefix !=3D "")
PPTSld.location.replace(MHTMLPrefix+RemoveFilePrefixFromHref(obj.mSldHref=
))
else
PPTSld.location.replace(obj.mSldHref)
=09
if( IsFramesMode() ) {
UpdNavPane(); UpdOtlPane(); UpdNtsPane()
}
}
function GoToSld( href )
{
if( PPTSld.event ) PPTSld.event.cancelBubble=3Dtrue
GetHrefObj( GetSldNum(href) ).mVis=3D1
if (MHTMLPrefix !=3D "")
PPTSld.location.replace(MHTMLPrefix+RemoveFilePrefixFromHref(href))
else
PPTSld.location.replace(href)
}
function SldUpdated( id )
{
if( id =3D=3D GetHrefObj(gCurSld).mSldHref ) return
gPrevSld=3DgCurSld
gCurSld=3DGetSldNum(id)
if( IsFramesMode() ) {
UpdNavPane(); UpdOtlPane(); UpdNtsPane()
}
}
function PrevSldViewed(){ GoToSld( GetHrefObj(gPrevSld).mSldHref ) }
function HasPrevSld() { return ( gIsEndShow || ( gCurSld !=3D 1 && GetHrefO=
bj( gCurSld-1 ).mVis =3D=3D 1 )||( GetCurSldNum() > 1 ) ) }
function HasNextSld() { return (GetCurSldNum() !=3D GetNumSlds()) }
function CloseWindow() {
if( HideMenu() ) return;
=09
var event =3D PPTSld.event;
if( !IsFramesMode() && event && (event.keyCode=3D=3D27 || event.keyCode=3D=
=3D32 || event.type=3D=3D"click" ) )
window.close( self );
CatchNumKeys( self, event );
}
function Unload() { gIsEndShow=3D0; }
function SetupEndShow() {
gIsEndShow=3D1;
PPTSld.document.body.scroll=3D"no";
PPTSld.document.onkeypress=3DCloseWindow;
PPTSld.document.onclick=3DCloseWindow;
PPTSld.document.oncontextmenu=3D_CM;
}
function EndShow()
{
if( IsFramesMode() ) return
if( PPTSld.event ) PPTSld.event.cancelBubble=3Dtrue
doc=3DPPTSld.document
var dir =3D doc.body.dir
if( dir !=3D "rtl" ) dir =3D "ltr";
doc.open()
doc.writeln('' + ENDSHOW_MESG + '
=
body>')
doc.close()
}
function SetSldVisited(){ GetSldList().mList[gCurSld-1].mVisited=3Dtrue }
function IsSldVisited(){ return GetSldList().mList[gCurSld-1].mVisited }
function hrefList( sldHref, visible, advDelay, advClk )
{
this.mSldHref=3D this.mNtsHref =3D sldHref
this.mOrigVis=3D this.mVis =3D visible
this.mVisited=3D false
this.mAdvDelay=3D advDelay
this.mAdvOnClk=3D advClk
}
function SldList(arr,curSld,fEnd)
{
this.mCurSld =3D curSld;
this.mList =3D new Array();
var idx =3D 1;
for(ii=3D0;ii 0) {
PushSldList(sldList,fEnd);
gCurSld =3D 1;
}
else
if( PPTSld.event ) PPTSld.event.cancelBubble=3Dtrue
}
function PushSldList(arr,fEnd) {
var ii =3D gSldStack.length;
gSldStack[ii] =3D new SldList(arr,gCurSld,fEnd);
GoToSld( gSldStack[ii].mList[0].mSldHref );
}
function PopSldList() {
if (gSldStack[gSldStack.length-1].fEndShow)
EndShow()
else {
gCurSld =3D gSldStack[gSldStack.length-1].mCurSld;
gSldStack[gSldStack.length-1] =3D null;
gSldStack.length--;
var sldList =3D gSldStack[gSldStack.length-1];
GoToSld( sldList.mList[gCurSld - 1].mSldHref );
}
}
var custShowList=3Dnew Array();
/*********************************************
Navigation button implementation
There are 2 types of buttons: ImgBtn, TxtBtn
implemented as function objects. They share
a similiar interface so the event handlers
can call SetActive, for example, on a button=20
object without needing to know exactly=20
what type of button it is.
**********************************************/
//----------------------------------
function ImgBtn( oId,bId,w,action )
//----------------------------------
{
var t=3Dthis
t.Perform =3D _IBP
t.SetActive =3D _IBSetA
t.SetInactive=3D _IBSetI
t.SetPressed =3D _IBSetP
t.SetDisabled=3D _IBSetD
t.Enabled =3D _IBSetE
t.ChangeIcon =3D null
t.UserAction =3D action
t.ChgState =3D _IBUI
t.mObjId =3D oId
t.mBorderId=3D bId
t.mWidth =3D w
t.mIsOn =3D t.mCurState =3D 0
}
function _IBSetA()
{
if( this.mIsOn ) {
obj=3Dthis.ChgState( gHiliteClr,gShadowClr,2 )
obj.style.posTop=3D0
}
}
function _IBSetI()
{
if( this.mIsOn ) {
obj=3Dthis.ChgState( gFaceClr,gFaceClr,1 )
obj.style.posTop=3D0=20
}
}
function _IBSetP()
{
if( this.mIsOn ) {
obj=3Dthis.ChgState( gShadowClr,gHiliteClr,2 )
obj.style.posLeft+=3D1; obj.style.posTop+=3D1
}
}
function _IBSetD()
{ =20
obj=3Dthis.ChgState( gFaceClr,gFaceClr,0 )
obj.style.posTop=3D0=20
}
function _IBSetE( state )
{
var t=3Dthis
GetObj( t.mBorderId ).style.visibility=3D"visible"
if( state !=3D t.mIsOn ) {
t.mIsOn=3Dstate
if( state )
t.SetInactive()
else
t.SetDisabled()
}
}
function _IBP()
{
var t=3Dthis
if( t.mIsOn ) {
if( t.UserAction !=3D null )
t.UserAction()
if( t.ChangeIcon ) {
obj=3DGetObj(t.mObjId)
if( t.ChangeIcon() )
obj.style.posLeft=3Dobj.style.posLeft+(t.mCurState-4)*t.mWidth
else
obj.style.posLeft=3Dobj.style.posLeft+(t.mCurState-0)*t.mWidth
}
t.SetActive()
} =20
}
function _IBUI( clr1,clr2,nextState )
{
var t=3Dthis
SetBorder( GetObj( t.mBorderId ),clr1,clr2 )
obj=3DGetObj( t.mObjId )
obj.style.posLeft=3Dobj.style.posLeft+(t.mCurState-nextState)*t.mWidth-obj=
.style.posTop
t.mCurState=3DnextState
return obj
}
//-----------------------------------------
function TxtBtn( oId,oeId,action,chkState )
//-----------------------------------------
{
var t=3Dthis
t.Perform =3D _TBP
t.SetActive =3D _TBSetA
t.SetInactive=3D _TBSetI
t.SetPressed =3D _TBSetP
t.SetDisabled=3D _TBSetD
t.SetEnabled =3D _TBSetE
t.GetState =3D chkState
t.UserAction =3D action
t.ChgState =3D _TBUI
t.mObjId =3D oId
t.m_elementsId=3D oeId
t.mIsOn =3D 1
}
function _TBSetA()
{
var t=3Dthis
if( t.mIsOn && !t.GetState() )
t.ChgState( gHiliteClr,gShadowClr,0,0 )
}
function _TBSetI()
{
var t=3Dthis
if( t.mIsOn && !t.GetState() )
t.ChgState( gFaceClr,gFaceClr,0,0 )
}
function _TBSetP()
{
if( this.mIsOn )
this.ChgState( gShadowClr,gHiliteClr,1,1 )
}
function _TBSetD()
{ =20
this.ChgState( gFaceClr,gFaceClr,0,0 )
this.mIsOn =3D 0
}
function _TBSetE()
{
var t=3Dthis
if( !t.GetState() )
t.ChgState( gFaceClr,gFaceClr,0,0 )
else
t.ChgState( gShadowClr,gHiliteClr,1,1 )
t.mIsOn =3D 1
}
function _TBP()
{
var t=3Dthis
if( t.mIsOn ) {=20
if( t.UserAction !=3D null )
t.UserAction()
if( !t.GetState )
return
if( t.GetState() )
t.SetPressed()
else
t.SetActive()
} =20
}
function _TBUI( clr1,clr2,lOffset,tOffset )
{
SetBorder( GetObj( this.mObjId ),clr1,clr2 )
Offset( GetObj( this.m_elementsId ),lOffset,tOffset )
}
function Offset( obj, top, left ){ obj.style.top=3Dtop; obj.style.left=3Dle=
ft }
function SetBorder( obj, upperLeft, lowerRight )
{
s=3Dobj.style;
s.borderStyle =3D "solid"
s.borderWidth =3D 1=20
s.borderLeftColor =3D s.borderTopColor =3D upperLeft
s.borderBottomColor=3D s.borderRightColor =3D lowerRight
}
function GetBtnObj(){ return gBtnArr[window.event.srcElement.id] }
function BtnOnOver(){ b=3DGetBtnObj(); if( b !=3D null ) b.SetActive() }
function BtnOnDown(){ b=3DGetBtnObj(); if( b !=3D null ) b.SetPressed() }
function BtnOnOut(){ b=3DGetBtnObj(); if( b !=3D null ) b.SetInactive() }
function BtnOnUp()
{
b=3DGetBtnObj()
if( b !=3D null )
b.Perform()
else
Upd()
}
function GetNtsState(){ return parent.gNtsOpen }
function GetOtlState(){ return parent.gOtlOpen }
function GetOtlTxtState(){ return parent.gOtlTxtExp }
function NtsBtnSetFlag( fVal )
{
s=3Ddocument.all.item( this.m_flagId ).style
s.display=3D"none"
if( fVal )
s.display=3D""
else
s.display=3D"none"
}
function _BSetA_Border(){ b =3D gBtnArr[this.mObjId]; if( b !=3D null ) b.S=
etActive() }
function _BSetI_Border(){ b =3D gBtnArr[this.mObjId]; if( b !=3D null ) b.S=
etInactive() }
function _BSetP_Border(){ b =3D gBtnArr[this.mObjId]; if( b !=3D null ) b.S=
etPressed() }
function _BSetA_BorderImg()
{=20
b =3D gBtnArr[this.mBorderId]=20
if( b !=3D null && this.mIsOn && !b.GetState() ) {
obj=3Dthis.ChgState( gHiliteClr,gShadowClr,2 )
obj.style.posTop=3D0
}
}
function _BSetI_BorderImg()
{=20
b =3D gBtnArr[this.mBorderId]
if( b !=3D null && this.mIsOn && !b.GetState() ) {
obj=3Dthis.ChgState( gFaceClr,gFaceClr,1 )
obj.style.posTop=3D0
}
}
var gHiliteClr=3D"THREEDHIGHLIGHT",gShadowClr=3D"THREEDSHADOW",gFaceClr=3D"=
THREEDFACE"
var gBtnArr =3D new Array()
gBtnArr["nb_otl"] =3D new TxtBtn( "nb_otl","nb_otlElem",parent.ToggleOtlPan=
e,GetOtlState )
gBtnArr["nb_otlElem"] =3D new TxtBtn( "nb_otl","nb_otlElem",parent.ToggleOt=
lPane,GetOtlState )
gBtnArr["nb_nts"] =3D new ImgBtn( "nb_nts","nb_ntsBorder",10,parent.ToggleN=
tsPane )
gBtnArr["nb_nts"].SetActive =3D _BSetA_BorderImg;
gBtnArr["nb_nts"].SetInactive =3D _BSetI_BorderImg;
gBtnArr["nb_ntsBorder"] =3D new TxtBtn( "nb_ntsBorder","nb_ntsElem",parent.=
ToggleNtsPane,GetNtsState )
gBtnArr["nb_ntsElem"] =3D new TxtBtn( "nb_ntsBorder","nb_ntsElem",parent.To=
ggleNtsPane,GetNtsState )
gBtnArr["nb_prevBorder"] =3D gBtnArr["nb_prev"]=3D new ImgBtn( "nb_prev","n=
b_prevBorder",30,parent.GoToPrevSld )
gBtnArr["nb_nextBorder"] =3D gBtnArr["nb_next"]=3D new ImgBtn( "nb_next","n=
b_nextBorder",30,parent.GoToNextSld )
gBtnArr["nb_sldshw"]=3D new ImgBtn( "nb_sldshw","nb_sldshwBorder",18,parent=
.FullScreen )
gBtnArr["nb_sldshwBorder"] =3D new TxtBtn( "nb_sldshw","nb_sldshwBorder",pa=
rent.FullScreen,null )
gBtnArr["nb_sldshwBorder"].SetActive =3D _BSetA_Border;
gBtnArr["nb_sldshwBorder"].SetInactive =3D _BSetI_Border;
gBtnArr["nb_sldshwText"] =3D new TxtBtn( "nb_sldshw","nb_sldshwText",parent=
.FullScreen,null )
gBtnArr["nb_sldshwText"].SetActive =3D _BSetA_Border;
gBtnArr["nb_sldshwText"].SetInactive =3D _BSetI_Border;
gBtnArr["nb_voice"] =3D gBtnArr["nb_voiceBorder"] =3D new ImgBtn( "nb_voice=
","nb_voiceBorder",18,parent.ToggleVNarration )
gBtnArr["nb_otlTxtBorder"] =3D gBtnArr["nb_otlTxt"]=3D new ImgBtn( "nb_otlT=
xt","nb_otlTxtBorder",23,parent.ToggleOtlText )
gBtnArr["nb_ntsBorder"].m_flagId=3D "nb_nts"
gBtnArr["nb_ntsBorder"].SetFlag =3D NtsBtnSetFlag
gBtnArr["nb_otlTxt"].ChangeIcon=3D GetOtlTxtState
/*********************************************
Context menu implementation
_CM() is the function that's hooked up to
the oncontextmenu event. Once we're asked to
show the menu, we first build it by creating
DIVs on-the-fly. Then we position it=20
within the screen area so it doesn't get
clipped.
Creating the DIVs using createElement() means
we don't have to write out any extra HTML
into the slide HTML files.
**********************************************/
var sNext=3D"Next",sPrev=3D"Previous",sEnd=3D"End Show",sFont=3D"Arial",sAr=
row=3D"Arrow",sFreeform=3D"Freeform",sRect=3D"Rectangle",sOval=3D"Oval"
function ShowMenu()
{
BuildMenu();
var doc=3DPPTSld.document.body,x=3DPPTSld.event.clientX+doc.scrollLeft,y=
=3DPPTSld.event.clientY+doc.scrollTop
m =3D PPTSld.document.all.item("ctxtmenu")
m.style.pixelLeft=3Dx
if( (x+m.scrollWidth > doc.clientWidth)&&(x-m.scrollWidth > 0) )
m.style.pixelLeft=3Dx-m.scrollWidth
m.style.pixelTop=3Dy
if( (y+m.scrollHeight > doc.clientHeight)&&(y-m.scrollHeight > 0) )
m.style.pixelTop=3Dy-m.scrollHeight
m.style.display=3D""
}
function _CM()
{
if( !parent.IsFullScrMode() ) return;
if(!PPTSld.event.ctrlKey) {
ShowMenu()
return false
} else
HideMenu()
}
function BuildMenu()
{
if( PPTSld.document.all.item("ctxtmenu") ) return
var mObj=3DCreateItem( PPTSld.document.body )
mObj.id=3D"ctxtmenu"
mObj.style.visibility=3D"hidden"
var s=3DmObj.style
s.position=3D"absolute"
s.cursor=3D"default"
s.width=3D"120px"
SetCMBorder(mObj,"menu","black")
var iObj=3DCreateItem( mObj )
SetCMBorder( iObj, "threedhighlight","threedshadow" )
iObj.style.padding=3D2
CreateMenuItem( iObj,sNext,M_GoNextSld,M_True )
CreateMenuItem( iObj,sPrev,M_GoPrevSld,M_HasPrevSld )
=09
CreateSeparator( iObj )
CreateMenuItem( iObj,sEnd,M_End,M_True )
mObj.style.visibility=3D"visible"
}
function Cancel() { window.event.cancelBubble=3Dtrue; window.event.returnVa=
lue=3Dfalse }
function Highlight() { ChangeClr("activecaption","threedhighlight") }
function Deselect() { ChangeClr("threedface","menutext") }
function Perform()
{
e=3DPPTSld.event.srcElement
if( e.type=3D=3D"menuitem" && e.IsActive() )
e.Action()
else
PPTSld.event.cancelBubble=3Dtrue
}
function ChangeClr( bg,clr )
{
e=3DPPTSld.event.srcElement
if( e.type=3D=3D"menuitem" && e.IsActive() ) {
e.style.backgroundColor=3Dbg
e.style.color=3Dclr
}
}
function M_HasPrevSld() { return( parent.HasPrevSld() ) }
function M_GoNextSld() { if( gIsEndShow ) M_End(); else GoToNextSld() }
function M_GoPrevSld() { if( gIsEndShow ) { gIsEndShow=3D0; history.back();=
PPTSld.event.cancelBubble=3Dtrue; } else GoToPrevSld() }
function M_True() { return true }
function M_End() { window.close( self ) }
function CreateMenuItem( node,text,action,eval )
{
var e=3DCreateItem( node )
e.type=3D"menuitem"
e.Action=3Daction
e.IsActive=3Deval
e.innerHTML=3Dtext
if( !e.IsActive() )
e.style.color=3D"threedshadow"
e.onclick=3DPerform
e.onmouseover=3DHighlight
e.onmouseout=3DDeselect
s=3De.style;
s.fontFamily=3DsFont
s.fontSize=3D"9pt"
s.paddingLeft=3D2
}
function CreateSeparator( node )
{
var sObj=3DCreateItem( node )
SetCMBorder(sObj,"menu","menu")
var s=3DsObj.style
s.borderTopColor=3D"threedshadow"
s.borderBottomColor=3D"threedhighlight"
s.height=3D1
s.fontSize=3D"0px"
}
function CreateItem( node )
{
var elem=3DPPTSld.document.createElement("DIV")
node.insertBefore( elem )
return elem
}
function SetCMBorder( o,ltClr,rbClr )
{
var s=3Do.style
s.backgroundColor=3D"menu"
s.borderStyle=3D"solid"
s.borderWidth=3D1
s.borderColor=3DltClr+" "+rbClr+" "+rbClr+" "+ltClr
}
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/fullscreen.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/buttons.gif
Content-Transfer-Encoding: base64
Content-Type: image/gif
R0lGODlhWAESAPf4AAAAAIAAAACAAICAAAAAgIAAgACAgICAgAQEBISEBASEBISEhAQEhMTExAQE
/KTM9Pz8/ERERPz8BAT8/KSkpGRkhMTcxCRkxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAMDAwP8AAAD/AP//AAAA//8A/wD//////yH5BAEAAPgALAAAAABYARIA
QAj/APEJHEiwoMGDCBMqXMiwocOHECNKnEixosWLGCEiQKCRo8YDIEHig2DxAD4LKD1avDDhgUuV
GUOGbHBR5QGYFBG4fHAB58EKECJEwCfUYAWPFGAygLCRKQIIUKM6WAohKUGgCikcFWh1INWoYKVS
7SrQ41GbIhGYLAuVQVOoC+IyXUuUAkG1HE3KFDhAwkgJc5/qDZmxsOHDiBMrXsy4sePDGyP7lChT
5MULmDPnlDw5YmW6FTNrfgi0aNGEZPEtbfo2bNTUpYeeRph69dPWrqvCNFuBIGG1A59CYPAVQtwF
cw0OxWdTIOiBCQAjaAB17fOFII8voGmRc+eOkilm/z9OvTtnjN4hYk1YoT3H2rnBOphPAB9skgq3
2lcaX/5YnJVt9BloAar12UEIRGCZdQghMABI1Tn32IQUVthYexhmqGGGMBHAgIfEhSiiiATAtOGJ
GnYI4ogsEldicAYOGNJGZaml3Y0L3NTZUBz1xlB0PUoUI0jlVWRSVN89xBKSGB1YU1TMoRfVBEle
hR9HQs1GEHxQ3RZZbveZthxt/LEmXHyp5XWABSCpaRJwbM13gAACPHVccgJFgF+NEhqUAEkQSCfc
ddhVhh5dVTaEAEsTUNlkZUWKN9BNGDE6QU8OrSdbllzpxyVTTrU21Uj3scfhp7nNpyoDaTIEJ3P9
If8J2kbLNYegg9JRBwGhFvbq66+ZUiDssMQWK2yHxiZLrInKNotss8l+B5yBrr5p2UIJvortANoC
6+234IbLla/elRtZjeamh5CC3Sb0YLvixivvYkDFGlZqBNh7r4n6goVvv6/ZlCicN+kL71ALTnpQ
dCIZp7CihkLA3UQmoWRBogyxtBPGCTnZncVR1rSTo5nuydC/Eo8kUH+lOoTyyvjoCuZu+PjYIKLD
rZybtrM1d10C0QXKEVz48GrQkEeWdFJKlbb0UmEeV0SzyC6RvNB646LWIVjUNeC1zAFb+RDKXksM
9r531bwmpQW9+hQDDsx5pqwDRWBXcFES2hc+gEn/wJGdEEWdE6LoWcoxQweaTNmkhydkKaYMYY2Q
p1unbLl/pPKbn3v7EZRvrKvqlja2ONvrtoIw9tn2g32/tQBlhtYkU+MNikZ7QYlPDPuMldpOmuJX
nVo5VF3HjI+q89mteX5IDd/fVFClma5kiE4f2XUJhlz09gj2NbTDRifkmu7zXjR++RVJ/lPznuvr
QH2iD6S+UewP9Dnon6d2NLwN8n90BB6hC68cFMCHoe+ACASP9c4DowUyEF0OPFcDI0ij/VXPaAKC
UfhS95AKGoQ7IBRICI1HwhGaUIQoLGEKT6jCFrLwhSuMoQtlCMMZ2rCGOKShDm+4wxzy8Ic+DGIP
B4cIRCKGMCAAOy==
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/frame.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 13
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/outline.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
No=
tes
1
Richard C. Davis
UW CSE – 10/27/2006
Lecture 13 – C Wrap-up
2
Exam
This Wednesday
In class
One-sided 8½" x 11" crib sheet
Review session Monday, 6:00PM?
Richard's Monday office hours
3
Many like lecture notes
This was a surprise
I'll try to post 30 minutes before lecture
Many dislike "Programming in C"
Few good books on C (most C++)
C99 focus was a big mistake on our part
HW4 uses C99
4
Where are our grades!?!
Shooting for a week and a half turn-around
We're way behind and we're sorry
You can still get what you need
5
Positive comments
Advanced stuff is interesting
Negative comments
Debugging is hard/annoying
I'll try to assign it after some exercises
Give hints early!
Need to adjust difficulty of problems sometimes
HW3 crash hint was not handled well (sorry)
Struggling? Come to o=
ffice
hours!
I'm proud of your progress
6
7
C Wrap-up
Overview
Other topics
File I/O
Function pointers
Toward C++
8
Preprocessing
#include - for external declarations
#ifdef - for conditional compilation
#define - for token-based text substitution
Compiling (type checking and code gen.)
A sequence of declarations
Each C file (usually) becomes a .o file
9
Linking (more later)
Take .o and .a files and make a program
libc.a in by default
Executing
O/S maintains address space illusion
Execution starts at main
Library manages the heap via malloc/free
10
File is a sequence of declarations
Global variables : t x; or t x =3D e;
struct, enum, (and union) definitions
Function prototypes: t
f(t1, … tn);
Function definitions
typedefs
11
A function body is a statement
Statements similar to Java
Include stdbool.h for bool
No exception handling
Local Declarations
Expressions
Left is location
Right is value (including pointers to locations)
12
Expression Syntax
"*" for pointer dereference
"&" for address-of
"." for field access
"e->f" means "(*e).f"
"e1[e2]" means "*(e1 + e2)"
Pointer arithmetic remembers size of element!
Size of types is exposed
But seldom what you think
Padding, alignment make this even harder to tell
13
For setting your computer on fire, try these
Array-bounds violation (bad ptr arithmetic)
dangling pointer dereferences
dereferencing NULL
Using results of wrong casts
Using contents of uninitialized locations
Remember
Pointer casts are not checked
Crashing "good" compared to silent bugs
14
File I/O
Very different in C and C++
We avoided so you could focus more on C++
Function Pointers
Very ugly syntax
Used by User Interface toolkits
Important if you're trying to "fake" objects
Examples in file-and-funcs.c
15
If you want "objects" with code and data:
struct MyPoint {
// data
int x; int y;
// code
int (*getX)(struct MyPoint *);
void (*setX)(struct MyPoint *, int);
}
C++ was born when this became common
16
Done with C after homework and exam!
17
Programming in C
Chapter 16: File I/O (optional)
pp273-274: Pointers to Functions (optional)
18
Societal Implications Discussion
------=_NextPart_01C6F9E9.0CA676D0
Content-Location: file:///C:/AF8A9A53/cse303-06au-lecture13_files/filelist.xml
Content-Transfer-Encoding: quoted-printable
Content-Type: text/xml; charset="utf-8"
------=_NextPart_01C6F9E9.0CA676D0--