<=
/div>
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/pres.xml
Content-Transfer-Encoding: quoted-printable
Content-Type: text/xml; charset="utf-8"
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0001.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 7
CSE
303
Concepts and Tools for
Software Developme=
nt
Richard C. Davis
UW CSE – 10/11/2006
Lecture
7 – Introduction to C
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_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_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0004.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 7
10/11/2006
CSE 303 Lecture 7
2
Administravia
=
8226; Extra
Office Hours
&=
#8211; Richard:
Thursday (10/12), CSE 210
–
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_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_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0005.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 7
10/11/2006
CSE 303 Lecture 7
3
Tip of the Day
=
8226; ACM
Student Chapter Tutorials
&=
#8211; Accessible
from CSE 303 “Comp. Resources”
&=
#8211; Fast
way to find way around Linux
&=
#8226; Printing
&=
#8226; Lists
of common commands
&=
#8226; Emacs
tutorials
&=
#8226; Language
tutorials
&=
#8211; Sed,
Awk, Python
&=
#8211; C,
C++
&=
#8226; Tool
Tutorials (
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0005_image003.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_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0006.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 7
10/11/2006
CSE 303 Lecture 7
Where are We?
=
8226; Before:
Shell
&=
#8211; Files
&=
#8211; Users
&=
#8211; Processes
=
8226; Now:
C and C++ (for “processes”)
&=
#8211; Numbers
&=
#8211; Memory
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0006_image004.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_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0009.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 7
10/11/2006
CSE 303 Lecture 7
Welcome to C
=
8226; Comparing
to Java:
&=
#8211; Lower
Level : good for compiler, bad for you
&=
#8211; Unsafe :
wrong programs can do anything
&=
#8211; “Standard
Library ” is smaller
&=
#8211; Similar
Syntax : pan help or confuse
&=
#8211; Procedural :
Not “object oriented”
=
8226; Java-like
thinking can get you in trouble!
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0009_image005.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_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0010.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 7
10/11/2006
CSE 303 Lecture 7
Plan for Learning C
=
8226; Learn
“C Style” Programming
&=
#8211; Syntax
&=
#8211; Pointers
& Memory Management
&=
#8211; Good
idioms
&=
#8211; Why
use C?
=
8226; Later
&=
#8211; “C++
Style” Programming
&=
#8211; Development
Tools
–
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0010_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_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0011.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 7
10/11/2006
CSE 303 Lecture 7
Learning Method
=
8226; We’ll
Look at How C Programs Run
&=
#8211; Not
promised by C’s definition
&=
#8211; Allows
reasoning about the implementation
&=
#8226; Know
why C does what it does
&=
#8226; Avoid
this in general!
&=
#8226; But
sometimes need to debug programs
=
8226; Note:
Text does not cover this in detail
&=
#8211; Notes
will be important
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0011_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_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0007.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 7
10/11/2006
CSE 303 Lecture 7
Today
<=
span
class=3DBB style=3D'position:absolute;left:-4.43%'>• C Memory
Model
<=
span
class=3DBB style=3D'position:absolute;left:-4.43%'>• Simple C
Programs
<=
span
class=3DBB style=3D'position:absolute;left:-4.43%'>• Introduct=
ion to
Pointers
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0007_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_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0012.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 7
10/11/2006
CSE 303 Lecture 7
Address Space of Unix Process
Stack
(Dynamically
Allocated)
Heap
(Dynamically
Allocated)
Static Data
(“Data
Segment”)
Code
(“Text
Segment”)
0xFFF=
FFFFF
0x000=
00000
Addre=
ss
Space
Address
space is an array of 8-=
bit bytes
Typical
total size is 2 <=
span
style=3D'font-size:74%;position:relative;top:-.45em;mso-text-raise:30%'>32=
We’ll
assume that an integer <=
/span> is 4 bytes
An
index into this array=
is
called an address
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0012_image009.gif
Content-Transfer-Encoding: base64
Content-Type: image/gif
R0lGODlh4gFRAXcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg
AU8BggAAAAAAAAAAmcyZ/8z/zMz//wECAwECAwP/KLrc/jDKSau9OOvNu/9gKI5kaZ5oqq5s675w
LM90bd94ru987//AoHBILBqPyKRyyWw6n9CodEqtWq/YrHbL7Xq/4LB4TC6bz+i0es1uu9/wuHxO
r9vv+Lx+z+/7/4CBgoOEhYaHiImKi4yNjo+QkZKTlJWWl5iZmpucnZ6foKGio6SlpqeoqaqrrK2u
r7CxsrO0tba3uLm6u7y9vr/AwcLDxMXGx8jJysvMzc7P0NHS09TV1tfY2drb3N3e3+Dh4uPk5ebn
6Onq6+zt7u/w8fLz9PX29/j5+vv8/f7/AAMKHEiwYAkACBMqXMiwocOHECNKnEixosWLGDNq3Mix
/6PHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bNmzhz6tzJs6fPn0CDCh1KtKjRo0iTKl3KtKnT
p1CjSp1KtarVq1izat3KtavXr2DDih1LtqzZs2jTql3Ltq3bt3Djyp1Lt67du3jz6t3Lt6/fv4AD
Cx5MuLDhw4gTK17MuLHjx5AjS55MubLly5gza97MubNnjQFCix5NurTp06hTq17NurXr17Bjy57d
+nPbAARy697Nu7fv38CDCx9OvLjx48iTK18+PIBttriZS59Ovbr169irO3+uNnr27+DDix8Pfjt3
tN7Jq1/Pvv148+fNpndPv779+7/hxyc7H7////8AlrffWf0FaOCBCBan34BhFZjggxAmuCCDXzkY
4YUY2jchhV1ZmOGHIIq3IYdbeRjiiShONyKJWZmY4oswErcii1e5GOONOOo2I41V2Zjjjy/uyONU
PgJpJIhCDhlVkUc2GWGSSj7FpJNUHghllE1NWeWW/l2J5VJacikmfV5+mVSYY6apXplmHoWmmnAK
2GaNcdb5H5tzEvWmnXxKh2eeQu3Z56DI/QkoUIISqmhzh1KV6KKQ+mZooz09GumluU1K6U6WYhqp
ppvm1Kmni4Ia6k2jkkqoqafWlKqqfbLa6kyvwmqnrLPGVKutceKa60u78qqmr7+2FKywYxJb7Er/
xyLLpbLLptSss1VCG+1J01LrpLXXlpSttkdy2+1I34ILpLjjhlSuuTmim+5H67J7o7vvdhSvvDDS
W+9G9+Kbor77ZtSvvycCHPBFAxOM5ME/JaxwhgYzTBFtFFds8cUYZ6yxxhJX2jFoH3MaMkYRj+xQ
yYeibPJCKufZ8soIvdymzCvT/KXNI+Mcpc4f8zykzxIDTaPQBxNNotH7Ik2h0u8yPaDT40Idn9TX
Us2d1ctibZvWv3Ltmdezgs2Z2KeSrZnZm6KNmdqNsm2Z24DCTZncc9Itmd1m4g2Z3ljy7ZjfSgLO
mOA8Eq6Y4SwijpjiHDJumOMMQk6Y5PtRLpjl/+dhDpjmz3Hul+efgc6X6J2Rrpfpm6GOl+qZsW6X
65fBTpfsldEul+2T4Q6X7pHx7pbvjwEPHcw2Cb+W8YMTPxHyizGPnvI0OU8g9LRSD5H0i1v/EPaH
cc+f9jBtLP745Jdv/vngA/swrN4X5vD6T6bv0vvwP9j+5PV7ev9g9OdvpfzG8t+l9nc5AX4KgCzp
nwHvhEBmLbBUDVSJAh94HwIGZoIUrI8FN5fBQW3wLxjsYHs++DkR8omEfQmhCdcUQWmtsE4oHN0L
e9VClKhwhuGJ4V5uiMPv6PB0PUzTD/PCwyBeZ4irM6KYkHiXIiqROkx83RO3FMW6OHGKzKni7P+w
SCUtzuWKXEyOF28XxiaNMS5gLKNxzrg7NRqJjW9JoxsZVUOTyHGOwYHj7/DYrjrakY840uNtADkv
P3qLkDESJHQQmS9DkuSOjNSRI8kVyX9NUiSQrKQij1dJFG2yO50s2CXVFcoQfTItmYzkKdFTyoWN
El6t/NAqCRRLiL0SXufLpS53yctd3tIjvQymMIdJzNr8kiMBKIAyl8nMZjrzmdCMpjSnSc1qWvOa
2MymNrfJTWrOUj7dDKc4x0nOcprznOX8ZlmSic52uvOd8IznO9XJH3na8574zOc96TkWdurznwAN
qEClyU+x+HOgCE2oQuFZ0AYt9KEQjSg3Gwr/loNK9KIYzShFK5TRjnoUohv1ikU/StKS7vOYyDSp
SlfKUJTyi6Uwjek4Q9ohmdr0ptekKVdGitOe+lSnJfKpUIcKVK3wdKhIXWlRW5TUpsZ0qVg5qlOn
ilGo1oiqWP2oVa0i1ax6FaFb7dFXxwpSl4KGrGhNaFgdlda2BnStRHKrXPMJV6l0da54JWddl5TX
vrpzr1C5q18Hi03ASomwiBWnYZ0i2MQ69pmLzdJjJ5tTswqMspidZmSZ0tjMOnazYPKsaJsJWqV0
drSDLe2ZUIta1SLltKzNq2vdFFvRztYosK2tXG9blNzqtq281dNvMRvcofh2uGQtbqCQO1nl/wbl
uMz1qnMRFd3PWpZk1U3sdBuWXcRu1yfQ7a5Tv1upYpr3vOjV5XURlt72uve9tFmvRQIwgPra9774
za9+98vf/vr3vwAOsIAHTOACG/jA/yUvT+iL4AY7+MEQjrCEJwxhBXOKwhjOsIY3zOENW1gnDO6w
iEdM4hJ3+MOiMrGKV8ziFidYvhUJsYtnTOMaexjGE7OxjnfM4wOjGCcy7rGQh0zkH6OKyEhO8o6N
XDwlO/nJK2ayq6BM5SrfGMcSCbKVt8xlA0s5el0Os5gF/GVajfnMaM5vmWWi5TS7mctr1tWb5xzm
OIePzni2sp2Blec+P3nP8/OzoJEMaGMN+rjQPS50AhHNaBsrmlmNjrSLHy1BSVtaxZSW1qU3PeJM
25DToL4ylq8X6lJT2NPYMrWqKzzqiLR51bAOMKrtGOtaE3jW3rK1rgGM60fu+tf87TW5gE1s/Aob
k8VO9gCOrS5lF5vZIHm1s2ENbXhNG9jVBua1f51te217191G5rd1HW5+jdvW5QbNuWudboGtO9bt
Jtm7qd1qUs9b1fFG2L3xXe/t7dvU+Z7vv0sd8BjD9+AITzhpDJMAADs=
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0012_image010.gif
Content-Transfer-Encoding: base64
Content-Type: image/gif
R0lGODlhCwAzAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAQAK
ADAAgAAAAAAAAAI8hBGnlnvtUGRTTujw0qF7z3wgImKlImYj2l3aU73VTNf2jccyGX1qy/I9UqET
6VQSUi6xJvPZc0ahmUUBADs=
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0012_image011.gif
Content-Transfer-Encoding: base64
Content-Type: image/gif
R0lGODlhCgDCAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAAAK
AL8AgAAAAAAAAAKkhBGnlsvRFoxnQmmVnXU3z4GX5lQlcyIpJa3uyZLwW8bmjNe0Y6M5v2v9hLqh
rIgEGm9JorJ5fEqd1GiVObVqsVcflLv1ZsFkcVe1NIfRX3WZPU7J5/S6/Y7P6/f8vv8PGFjXA3dG
eBi0hphWqJj4ttjWCPnoZjl5GRmHyalpWNkJ6unIOEpZKpqKuippmqnaCvsgQju7YcvRkaE7opHr
29NLVQAAOw==
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0013.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 7
10/11/2006
CSE 303 Lecture 7
More on the Address Space
=
8226; Read
an unused part of memory?
&=
#8211; May
cause “segmentation fault” (crash)
=
8226; Code :
instructions f=
or
program (read only)
=
8226; Static
Data : =
usually
global variables
=
8226; Stack :
local variable=
s and
code addresses
&=
#8211; Grows
and shrinks as program executes
=
8226; Heap :
data (like obj=
ects
from Java’s new)
&=
#8211; Managed
manually
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0013_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_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0017.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 7
10/11/2006
CSE 303 Lecture 7
Hello World
• #include <stdio.h>
•
• /*
• * First C program
• */
• int main() {
•
=
• // Pr=
int to
the stream "stdout"
•
fputs("Hello World\n",stdout);
•
=
• return
0;
• }
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0017_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_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0008.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 7
10/11/2006
CSE 303 Lecture 7
Testing Hello World
• Compiling and running
hello.c
– Compile: gcc –g –W=
all
–o hi hello.c
– Run:./hi
<=
/span>
• Compile Command
Meaning
– gcc : Gnu C Compiler
– -g : include debugging information=
3;
– -Wall : show all warnings (good for
learning)
– -o hi : specifies program name
• Omit? Program is named=
a.out
=
•<=
/span>
–<=
/span>
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0008_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_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0019.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 7
10/11/2006
CSE 303 Lecture 7
Header Files
• #include
<stdio.h>
&=
#8211; Directive
to C Preprocessor (more later)
=
span>
=
8211; Finds
stdio.h and
includes entire contents
&=
#8211; stdio.h
is a “header” file
&=
#8211; stdio.h
describes fputs=
and stdout <=
/span>
–
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0019_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_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0020.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 7
10/11/2006
CSE 303 Lecture 7
Functions
• fputs
=
&=
#8211; Function
that sends characters to a stream
– <=
span
style=3D'font-family:"Courier New";color:#339933'>\n is an e=
scape
sequence for “newline”
• main
<=
/span>
&=
#8211; Every
C program starts execution here
=
8226; Functions
like Java methods, but…
&=
#8211; Not
part of a class
&=
#8211; Not
associated with an object (no “this)
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0020_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_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0014.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 7
10/11/2006
CSE 303 Lecture 7
How Processes Operate
=
8226; Load
Code/Static Data into memory
=
8226; Store
current “Stack Frame”
&=
#8211; Address
of current instruction
&=
#8211; Local
variables
=
8226; Calling
“Functions” (like Methods in Java)
&=
#8211; Creates
new stack frame
&=
#8211; Current
instruction becomes “return address”
=
8226; On
exit, delete all memory
•
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0014_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_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0021.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 7
10/11/2006
CSE 303 Lecture 7
Execution Example
1
=
span>
2
=
span>
3
=
span>
4
=
span>
5
=
span>
6
=
span>
7
=
span>
8
=
span>
9 =
#include <stdio.h>
<=
/div>
int main() {
int integer1;=
13;
int integer2;=
13;
int sum;
=
b>
integer1 =3D 10=
;
integer2 =3D 20=
;
sum =3D integer=
1 +
integer2;
printf(“\=
nSum
is %d”, sum);
return 0;
<=
/b>
}
Stack
after line 4
integer1
integer2
sum
XXXX
XXXX
XXXX
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0021_image018.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_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0021_image019.gif
Content-Transfer-Encoding: base64
Content-Type: image/gif
R0lGODlhWwBTAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAABa
AFEAgQAAAAAAAMz/zAECAwLejI+py+0Po5i02ouz3rxv44XiSHpgiaaqdq7uS7bwTGNyjdN3zq97
D4wFgkTUr4jMHJNMyrLJfEKR0imxagVis7wtF+f96obiZrj8OqN95HVR7Ta249o5vRvJ6/f8/T0I
9xcSKNhBWPhhhwhzuGij6MgWOTY501g5cYmpWck56RkJ6ii6SIpoWogqqPrHeudKBxsn60a7ZovW
p7vLm4eZBvk7gltGLGb8hcylnMVs5TwFDSVtFiw8aH1tmK2d2C33XUIdxR1+MZ6ETlVuXqH+xt6e
GS//fkXf3qu/31sAADs=
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0022.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 7
10/11/2006
CSE 303 Lecture 7
Execution Example
1
=
span>
2
=
span>
3
=
span>
4
=
span>
5
=
span>
6
=
span>
7
=
span>
8
=
span>
9 =
Stack
after line 5
integer1
integer2
sum
10
XXXX
XXXX
#include <stdio.h>
<=
/div>
int main() {
int integer1;=
13;
int integer2;=
13;
int sum;
=
b>
integer1 =3D 10=
;
integer2 =3D 20=
;
sum =3D integer=
1 +
integer2;
printf(“\=
nSum
is %d”, sum);
return 0;
<=
/b>
}
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0022_image020.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_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0022_image021.gif
Content-Transfer-Encoding: base64
Content-Type: image/gif
R0lGODlhWwBTAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAABa
AFEAgQAAAAAAAMz/zAECAwLejI+py+0Po5i02ouz3rxv44XiSHpgiaaqdq7uS7bwTGNyjdN3zq97
D4wFgkTUr4jMHJNMyrLJfEKR0imxagVis7wtF+f96obiZrj8OqN95HVR7Ta249o5vRvJ6/f8/T0I
9xcSKNhBWPhhhwhzuGij6MgWOTY501g5cYmpWck56RkJ6ii6SIpoWogqqPrHeudKBxsn60a7ZovW
p7vLm4eZBvk7gltGLGb8hcylnMVs5TwFDSVtFiw8aH1tmK2d2C33XUIdxR1+MZ6ETlVuXqH+xt6e
GS//fkXf3qu/31sAADs=
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0023.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 7
10/11/2006
CSE 303 Lecture 7
Execution Example
1
=
span>
2
=
span>
3
=
span>
4
=
span>
5
=
span>
6
=
span>
7
=
span>
8
=
span>
9 =
Stack
after line 6
integer1
integer2
sum
10
20
XXXX
#include <stdio.h>
<=
/div>
int main() {
int integer1;=
13;
int integer2;=
13;
int sum;
=
b>
integer1 =3D 10=
;
integer2 =3D 20=
;
sum =3D integer=
1 +
integer2;
printf(“\=
nSum
is %d”, sum);
return 0;
<=
/b>
}
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0023_image022.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_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0023_image023.gif
Content-Transfer-Encoding: base64
Content-Type: image/gif
R0lGODlhWwBTAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAABa
AFEAgQAAAAAAAMz/zAECAwLejI+py+0Po5i02ouz3rxv44XiSHpgiaaqdq7uS7bwTGNyjdN3zq97
D4wFgkTUr4jMHJNMyrLJfEKR0imxagVis7wtF+f96obiZrj8OqN95HVR7Ta249o5vRvJ6/f8/T0I
9xcSKNhBWPhhhwhzuGij6MgWOTY501g5cYmpWck56RkJ6ii6SIpoWogqqPrHeudKBxsn60a7ZovW
p7vLm4eZBvk7gltGLGb8hcylnMVs5TwFDSVtFiw8aH1tmK2d2C33XUIdxR1+MZ6ETlVuXqH+xt6e
GS//fkXf3qu/31sAADs=
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0024.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 7
10/11/2006
CSE 303 Lecture 7
Execution Example
1
=
span>
2
=
span>
3
=
span>
4
=
span>
5
=
span>
6
=
span>
7
=
span>
8
=
span>
9 =
Stack
after line 7
integer1
integer2
sum
10
20
30
#include <stdio.h>
<=
/div>
int main() {
int integer1;=
13;
int integer2;=
13;
int sum;
=
b>
integer1 =3D 10=
;
integer2 =3D 20=
;
sum =3D integer=
1 +
integer2;
printf(“\=
nSum
is %d”, sum);
return 0;
<=
/b>
}
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0024_image024.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_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0024_image025.gif
Content-Transfer-Encoding: base64
Content-Type: image/gif
R0lGODlhWwBTAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAABa
AFEAgQAAAAAAAMz/zAECAwLejI+py+0Po5i02ouz3rxv44XiSHpgiaaqdq7uS7bwTGNyjdN3zq97
D4wFgkTUr4jMHJNMyrLJfEKR0imxagVis7wtF+f96obiZrj8OqN95HVR7Ta249o5vRvJ6/f8/T0I
9xcSKNhBWPhhhwhzuGij6MgWOTY501g5cYmpWck56RkJ6ii6SIpoWogqqPrHeudKBxsn60a7ZovW
p7vLm4eZBvk7gltGLGb8hcylnMVs5TwFDSVtFiw8aH1tmK2d2C33XUIdxR1+MZ6ETlVuXqH+xt6e
GS//fkXf3qu/31sAADs=
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0025.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 7
10/11/2006
CSE 303 Lecture 7
Execution Example
1
=
span>
2
=
span>
3
=
span>
4
=
span>
5
=
span>
6
=
span>
7
=
span>
8
=
span>
9 =
10
20
30
Stack during execution
of printf
integer1
integer2
sum
activation record
for printf
#include <stdio.h>
<=
/div>
int main() {
int integer1;=
13;
int integer2;=
13;
int sum;
=
b>
integer1 =3D 10=
;
integer2 =3D 20=
;
sum =3D integer=
1 +
integer2;
printf(“\=
nSum
is %d”, sum);
return 0;
<=
/b>
}
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0025_image026.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_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0025_image027.gif
Content-Transfer-Encoding: base64
Content-Type: image/gif
R0lGODlhWwCYAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAABa
AJcAgQAAAAAAAMz/zAECAwL/jI+py+0Po5i02ouz3rxv44XiSHpgiaaqdq7uS7bwTGNyjdN3zq97
D4wFgkTUr4jMHJNMyrLJfEKR0imxagVis7wtF+f96obiZrj8OqN95HVR7Ta249o5vRvJ6/f8/T0I
9xcSKNhBWPhhhwhzuGij6MgWOTY501g5cYmpWck56RkJ6ii6SIpoWogqqPrHeudKBxsn60a7ZovW
p7vLm4eZBvk7gltGLGb8hcylnMVs5TwFDSVtFiw8aH1tmK2d2C33XUIdxR1+MZ6ETlVuXqH+xt6e
GS//fkXf3qu/ry+P7W8Cnzl7gASGI1gH4DaFHBD2cIiHoTeJSgx+g5gDIxiLfd001vBIieIjkSNJ
WgBpiaM2lIxUXmMJzORJl8JgurApSaYTmr9wqvCZAig4nfOIFjUqVBzPTUs7Nf30NFTUUVNLVT11
NVXWVVtbdX31NVbYWWNrlb11NlfaYmuPtU32dlncZnOf1Y12d1reakYFJBXS9++wveT4GT7sAEAB
ADs=
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0015.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 7
10/11/2006
CSE 303 Lecture 7
Activation Records
Return
Address (code)
Address
for returned value
Argument
1
Argument
2
…
Local
Variable 1
Local
Variable 2
…
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0015_image028.gif
Content-Transfer-Encoding: base64
Content-Type: image/gif
R0lGODlh4gFRAXcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg
AU8BgQAAAAAAAAAAmcz/zAL/lI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+
DwwKh8Si8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8P
GCg4SFhoeIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ub
q7vL2+v7CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8v
P09fb3+Pn6+/z9/v/w8wYAgABAsaPIgwocKFDBs6fAgxosSJFCtavIgxo8aN/xw7evwIMqTIkSRL
mjyJMqXKlSxbunwJM6bMmTRr2ryJM6fOnTx7+vwJNKjQoUSLGj2KNKnSpUybOn0KNarUqVSrWr2K
NavWrVy7ev0KNqzYsWTLmj2LNq3atWzbun0LN67cuXTr2r2LN6/evXz7+v0LOLDgwYQLGz6MODHM
AIwbO34MObLkyZQrW76MObPmzZw7e/4MOrNipwEGmD6NOrXq1axbu34NO7bs2bRr276NO7fu2AFG
Ny29O7jw4cSLGz+OXHdv30uBJ38OPbr06dRvL2ee1Hn17dy7e/8u+zr2o9rBmz+PPj1x8eOLllcP
P778+QPYtx/6nr7+/fyh2/+/H1R+/Q1IYIG1/QfgTwIayGCDDiKYYE8LOkhhhfpBGOFOE1rIYYfm
YZhhTht6SGKJ0oEY4k0jmshii8OhmGJNK7pIY420wRjjTDPayGOPquGYY0w7+kgkj0AG+dKQRS7Z
4pFItqQkk1J66OSTK0U5ZZYUVmllSlhqCWaBXHZ50pdhnrnfmGSWZCaabsan5pojtflmnefFKWdI
dNrJZ3d45vnRnn0OOt2fgHYkKKGKJmfooRslumik6zmqo6SWptcopRhBemmntmWqqUWcekoqb6Eu
Flqqqq7KaquuvgprqqcmWWqthc7q0qi27ooaqLhGpCuvvPr660PBCmsrscX/NnQssqUqu+xCzTrr
KbTRJjQttZdae+1B2WorKbfdFvQtuIuKOy4A5ZpLKLrjrstun+52C2+8ds57bb32volvtPrui2a/
y/4LcJgCF0twwVoe/GvCCk/JMK4OP8xkxLNOTHGRFp+KccY+bhxqxx4bmS6bI+8LsqYin0xjypSu
zHKTJZMEc8wmuuxozTaTiPOhOu/cYc+A/gy0hULnSXTRW848p9LOHi1nrFJPTXXVVl8dGtMiJe00
g1CvyXXXYmqtp9jDkg1S2Gb39zWZaq+dJtqBwl1r212+Tfd8dluJd95wyu1R336rt/eTgg+OXuFI
Ho74h4Aj2riligfJeOTe/02eY+WWc4d5jJpvXl3nKX4O+q2PP1p6u6ejnrq8q2tEeuvPiR5i7LIj
R3uGtt9uXO4R7s77pK9vGjy/wxNffMDHXwR88rv5nmDzzucGPYDST2/d8qJiD2b1913P/Y3aVwR+
+OGNTxHW6q/Pfvvud4b+ROWbD5v37c1Pv2v2j4d//qztj53++e9H8ZOIAAfYqwICC4FEAiBzDsjA
+igQIhBkoAN9U0EEXnA0GRzgBhXTQf99MDEhzN8IEVNC+p3wMCk03woN08LwvbAwMeTeDAlTQ+zd
cDA5nN4OBdND5/0wMEFM3hABU8TiHfEvSQzeEv3SRN49sS9RvN0U+VJF2f9dcS9ZbN0W9dLF1H0x
L2Es3RjxUkbQnfEuadzcGu3yvjjKcY50lNoEjRXBHr2xLm203B7p0sfI/XEugWzcIOVSSMQdMi6J
HNwi4dJIvz3yLZHM2yTdUkm6XbItmYTbJtnSybV9ci2hNNso1VJKsZ0yLans2irR0kqnvfIssVTa
LM1Sy6Ldsiy5BNouydLLnf1yLMG02TDFUsyYHTMsyWTZMsHSzJM98yvRHNk0vVJNj12zK9nM2Da5
0k2KfXMr4XzYOLVSToWdMyvpLNg6sVLHeMpznvSUzB0d0k6AvfMq+UTZPZmVR5L9U1oBtdE+rdJP
ex20KgmN10Kp0lB2PXT/KhE110SlUlFwXTQqGdXWRqHSUWp99CkhfdpACVrQlp1UISVF1khJk1KV
rhQhLRXWS38TUxfdlCk1PdtMvZVTmf3UID3d1U6bE1QWHVUpRU3WUIma1Js9lVxRLdFSs1NVnk2V
IE2t21bVlVUqfbWrzxprWINm1rMabaz1bKtb37q+tKp1aVslK6muihS7Vkuuc20QXsnTV7pOVa+d
+qtRCLstvgZ2bHVdrF8V61i2QTaycWssZQlkWPdcFrOT3ax8MksUxEqus56FD2jxU1r+nFYoog0X
aVObuNfC1nGWne1nZWvby+E2t5zbLW9D59vfmm6wwiVccIvrn+Mil1HKoF3ucVYbIOfSdrBwra51
r6uq5kpXeMTdrm5r693tQBcorY3UeBUUXj9pN73KWS97cXNen5T3XO5976fqa1/xgTe/s8Mvf021
3/8+178C1h+BC/y/AyOYgAFesHDiKyEHD7jBEm4vhSsMXwVjGMI8ma+iOKwhDHP3qR5W3YVFfCAN
VxjEOinxoFgsIhQ/WMUShjFOXOy6umJ3xzzu8WTYUgAAOw==
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0026.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 7
10/11/2006
CSE 303 Lecture 7
Introduction to Pointers
=
8226; Pointer
=3D variable that holds an address
=
8226; Declaring
a pointer
– <=
span
style=3D'font-family:"Courier New";color:#339933'>int *mypointer;
<=
/b>
=
8226; Assigning
an address to a pointer
– <=
span
style=3D'font-family:"Courier New";color:#339933'>mypointer =3D
&integer1;
=
8226; Accessing
data pointed to by a pointer
– <=
span
style=3D'font-family:"Courier New";color:#339933'>*mypointer
=
span>
–
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0026_image029.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_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0028.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 7
10/11/2006
CSE 303 Lecture 7
Pointer Execution Example
1
=
span>
2
=
span>
3
=
span>
4
=
span>
5
=
span>
6
=
span>
7
=
span>
8
=
span>
9 =
#include <stdio.h>
<=
/div>
int main() {
int integer1;=
13;
int* mypointer;=
integer1 =3D 10=
;
mypointer =3D
&integer1;
printf(“\=
nValue
is %d”, integer1);
printf(“\=
nValue
is %d”, *mypointer);
return 0;
<=
/b>
}
XXXX
XXXX
Stack
after line 3
integer1
mypointer
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0028_image030.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_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0028_image031.gif
Content-Transfer-Encoding: base64
Content-Type: image/gif
R0lGODlhUgA4AHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAABR
ADcAgQAAAAAAAMz/zAECAwKbjI+py+0PkZi02ouz3rwL44XiSFZgiabqqbYux77y/AX0/cb4Pur8
D7MBh0GiMeM7GpPKIbP5e0J30umtap1hszkhF7j9rrxiKrl8PaO16nXXjQvDQ5G6/Y5nzGnyfdH/
BujSJ4hBWGhxiEihuFjjiNK4KIlIWWgpiAmo6ce55zkHCifqRrpmioZapirG+uXKBZsla5Vne4uL
UAAAOw==
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0029.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 7
10/11/2006
CSE 303 Lecture 7
Pointer Execution Example
1
=
span>
2
=
span>
3
=
span>
4
=
span>
5
=
span>
6
=
span>
7
=
span>
8
=
span>
9 =
#include <stdio.h>
<=
/div>
int main() {
int integer1;=
13;
int* mypointer;=
integer1 =3D 10=
;
mypointer =3D
&integer1;
printf(“\=
nValue
is %d”, integer1);
printf(“\=
nValue
is %d”, *mypointer);
return 0;
<=
/b>
}
10
XXXX
Stack
after line 4
integer1
mypointer
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0029_image032.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_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0029_image033.gif
Content-Transfer-Encoding: base64
Content-Type: image/gif
R0lGODlhUgA4AHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAABR
ADcAgQAAAAAAAMz/zAECAwKbjI+py+0PkZi02ouz3rwL44XiSFZgiabqqbYux77y/AX0/cb4Pur8
D7MBh0GiMeM7GpPKIbP5e0J30umtap1hszkhF7j9rrxiKrl8PaO16nXXjQvDQ5G6/Y5nzGnyfdH/
BujSJ4hBWGhxiEihuFjjiNK4KIlIWWgpiAmo6ce55zkHCifqRrpmioZapirG+uXKBZsla5Vne4uL
UAAAOw==
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0030.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 7
10/11/2006
CSE 303 Lecture 7
Pointer Execution Example
1
=
span>
2
=
span>
3
=
span>
4
=
span>
5
=
span>
6
=
span>
7
=
span>
8
=
span>
9 =
#include <stdio.h>
<=
/div>
int main() {
int integer1;=
13;
int* mypointer;=
integer1 =3D 10=
;
mypointer =3D
&integer1;
printf(“\=
nValue
is %d”, integer1);
printf(“\=
nValue
is %d”, *mypointer);
return 0;
<=
/b>
}
10
=
Stack
after line 4
integer1
mypointer
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0030_image034.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_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0030_image035.gif
Content-Transfer-Encoding: base64
Content-Type: image/gif
R0lGODlhUgA4AHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAABR
ADcAgQAAAAAAAMz/zAECAwKbjI+py+0PkZi02ouz3rwL44XiSFZgiabqqbYux77y/AX0/cb4Pur8
D7MBh0GiMeM7GpPKIbP5e0J30umtap1hszkhF7j9rrxiKrl8PaO16nXXjQvDQ5G6/Y5nzGnyfdH/
BujSJ4hBWGhxiEihuFjjiNK4KIlIWWgpiAmo6ce55zkHCifqRrpmioZapirG+uXKBZsla5Vne4uL
UAAAOw==
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0030_image036.gif
Content-Transfer-Encoding: base64
Content-Type: image/gif
R0lGODlhRgAnAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAABwBB
AB0AgAAAAAAAAAJchI+pyxD/mpy0Joih3Xxm3IXi8QXj2X3ouqns24ARTF8medf0jOu+kvv9eEId
sVgLIndL37G5ekJP0qmoak0ps9ctV/tFecMWLNlzvqa1JXPY3HYhNa+4/S4/FAAAOw==
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0027.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 7
10/11/2006
CSE 303 Lecture 7
Why C is Dangerous
• C deals with variables,
functions, etc …
• But Programmer must ke=
ep bits
straight!
– arr is array of 10
elements: arr[30] is what?
• Could be anything
=
– Writing 3263827 to a
return address
• Program could start
running from anywhere
• Why would anyone work =
like
this?
– Fast: No
“unnecessary” overhead
– Need to for
embedded/operating systems
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0027_image037.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_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0018.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 7
10/11/2006
CSE 303 Lecture 7
Summary
<=
span
class=3DBB style=3D'position:absolute;left:-4.43%'>• C Memory
Model
<=
span
class=3DBB style=3D'position:absolute;left:-4.43%'>• Simple C
Programs
<=
span
class=3DBB style=3D'position:absolute;left:-4.43%'>• Introduct=
ion to
Pointers
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0018_image038.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_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0016.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 7
10/11/2006
CSE 303 Lecture 7
Reading
=
8226; Skim
Sections that look familiar!
=
8211; Author
does not assume you know Java
&=
#8211; C++
book does assume you know Java
=
8226; Programming
in C
&=
#8211; Chapter
1: Introduction
&=
#8211; Chapter
2: Fundamentals
&=
#8211; Chapter
3: Compiling and Running
&=
#8211; Chapter
11: (pp235-240) Pointers
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0016_image039.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_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0003.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 7
10/11/2006
CSE 303 Lecture 7
29
Next Time
<=
span
class=3DBB style=3D'position:absolute;left:-4.43%'>• C Program
Structure
<=
span
class=3DBB style=3D'position:absolute;left:-4.43%'>• Expressio=
ns
<=
span
class=3DBB style=3D'position:absolute;left:-4.43%'>• Local
Variables
<=
span
class=3DBB style=3D'position:absolute;left:-4.43%'>• Left vs. =
Right
expressions
<=
span
class=3DBB style=3D'position:absolute;left:-4.43%'>• Dangling =
Pointers
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/slide0003_image040.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_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_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_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_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_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_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_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_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=3D29, 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("=
slide0006.htm",1,-1,1),new hrefList("slide0009.htm",1,-1,1),new hrefList("s=
lide0010.htm",1,-1,1),new hrefList("slide0011.htm",1,-1,1),new hrefList("sl=
ide0007.htm",1,-1,1),new hrefList("slide0012.htm",1,-1,1),new hrefList("sli=
de0013.htm",1,-1,1),new hrefList("slide0017.htm",1,-1,1),new hrefList("slid=
e0008.htm",1,-1,1),new hrefList("slide0019.htm",1,-1,1),new hrefList("slide=
0020.htm",1,-1,1),new hrefList("slide0014.htm",1,-1,1),new hrefList("slide0=
021.htm",1,-1,1),new hrefList("slide0022.htm",1,-1,1),new hrefList("slide00=
23.htm",1,-1,1),new hrefList("slide0024.htm",1,-1,1),new hrefList("slide002=
5.htm",1,-1,1),new hrefList("slide0015.htm",1,-1,1),new hrefList("slide0026=
.htm",1,-1,1),new hrefList("slide0028.htm",1,-1,1),new hrefList("slide0029.=
htm",1,-1,1),new hrefList("slide0030.htm",1,-1,1),new hrefList("slide0027.h=
tm",1,-1,1),new hrefList("slide0018.htm",1,-1,1),new hrefList("slide0016.ht=
m",1,-1,1),new hrefList("slide0003.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_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/fullscreen.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_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_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/frame.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
CSE 303 - Autum 2006 - Lecture 7
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/outline.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
No=
tes
1
Richard C. Davis
UW CSE – 10/11/2006
Lecture 7 – Introduction to C
2
Extra Office Hours
Richard: Thursday (10/12), CSE 210
3
ACM Student Chapter Tutorials
Accessible from CSE 303 “Comp. Resources”
Fast way to find way around Linux
Printing
Lists of common commands
Emacs tutorials
Language tutorials
Tool Tutorials (
4
Before: Shell
Now: C and C++ (for “processes”)
5
Comparing to Java:
Lower Level: good for compiler, bad for you
Unsafe: wrong programs can do anything
“Standard Library” is smaller
Similar Syntax: pan help or confuse
Procedural: Not “object oriented”
Java-like thinking can get you in trouble!
6
Learn “C Style” Programming
Syntax
Pointers & Memory Management
Good idioms
Why use C?
Later
“C++ Style” Programming
Development Tools
7
We’ll Look at How C Programs Run
Not promised by C’s definition
Allows reasoning about the implementation
Know why C does what it does
Avoid this in general!
But sometimes need to debug programs
Note: Text does not cover this in detail
8
C Memory Model
Simple C Programs
Introduction to Pointers
9
10
Read an unused part of memory?
May cause “segmentation fault” (crash)
Code: instructions for program (read only)
Static Data: usually global variables
Stack: local variables and code addresses
Grows and shrinks as program executes
Heap: data (like objects from Java’s new)
11
#include <stdio.h>
/*
* First C program
*/
int main() {
// Print to the stream
"stdout"
fputs("Hello
World\n",stdout);
return 0;
}
12
Compiling and running hello.c
Compile: gcc –g –Wall –o hi hello.c
Run:./hi
Compile Command Meaning
gcc : Gnu C Compiler
-g : include debugging information
-Wall : show all warnings (good for learning)
-o hi : specifies program name
Omit? Program is named a.out
13
#include <stdio.h>
Directive to C Preprocessor (more later)
Finds stdio.h and includes entire contents
stdio.h is a “header” file
stdio.h describes fputs and stdout
14
fputs
Function that sends characters to a stream
\n is an escape sequence for “newline”
main
Every C program starts execution here
Functions like Java methods, but…
Not part of a class
Not associated with an object (no “this)
15
Load Code/Static Data into memory
Store current “Stack Frame”
Address of current instruction
Local variables
Calling “Functions” (like Methods in Java)
Creates new stack frame
Current instruction becomes “return address”
On exit, delete all memory
16
17
18
19
20
21
22
Pointer =3D variable that holds an address
Declaring a pointer
Assigning an address to a pointer
Accessing data pointed to by a pointer
23
24
25
26
C deals with variables, functions, etc…
But Programmer must keep bits straight!
arr is array of 10 elements: arr[30] is what?
Writing 3263827 to a return address
Program could start running from anywhere
Why would anyone work like this?
Fast: No “unnecessary” overhead
Need to for embedded/operating systems
27
C Memory Model
Simple C Programs
Introduction to Pointers
28
Skim Sections that look familiar!
Author does not assume you know Java
C++ book does assume you know Java
Programming in C
Chapter 1: Introduction
Chapter 2: Fundamentals
Chapter 3: Compiling and Running
Chapter 11: (pp235-240) Pointers
29
C Program Structure
Expressions
Local Variables
Left vs. Right expressions
Dangling Pointers
------=_NextPart_01C6ED4D.25D50520
Content-Location: file:///C:/0D7C54D7/cse303-06au-lecture7_files/filelist.xml
Content-Transfer-Encoding: quoted-printable
Content-Type: text/xml; charset="utf-8"
------=_NextPart_01C6ED4D.25D50520--