The Art and Science of C

592
T h e   T h e   T h e a r t   a r t  a r t a n d    a n d   a n s c i e n c e    s c i n c e    s c i n c e o f    o f   o f C    C    C    P a r t   P a r t   P a r t O n e    O n e   O n e t h e    t h e   t h e B a s i c s   B a s i c s   B a s i c s o f    o f   o f C    C    P r o g r a m m i n g    P r o g r a m i g    P r o g r a m i g    V E R V I E W       V E R V I E W       V E R V I E W        L e a r n i n g     C ,  o r a n y p r g r a m m i n g l a n g u a g e , i s     i n    m a n y r e s p e c t s l i k e l e a r n i n g      t o   c o m m u n i c a t e     i n a    f o r e i g n a n g u a g e .   Y o u    n e e d      t o    a c q u i r e     a    v o c a b u l r y     t o    k n o w h a t t h e    o r d s m e a n .   Y o u    n e e d      t o    s t u d y s y n t a x s o t h a t y o u c a n a s s e m b l e t h o s e w r d s i n t o     s e n t e n c e s . A n    d     y o u m u s t c o m e     t o    r c o g n i z e c m m o n i d i o m s s o t h a t y o u c a n u n d e r s t a n d     h a t p e o p l e a c t u a l l y     s a y .   T h e r e f o r , P a r t e n t r o d u c e s y o u      t o    t e o c a b u l a r y , s y n t a x ,  n d i i o m a t i c s t r u c t u r e     f .   B u t m a s t e r i n g t h e s e c o n v e n t i o n s i s     n o t   e n o u g h .   A s i n     a n y   a n g u a g e , y o u m u s t h a v e s o m e t h i n g      t o    s a y .   T h e s s e n c e     o f    p r g r a m m i n g i s s o l v i n g      p r o b l e m s . W h i l e k n o w i n g h o w      t o    e x p r e s s h e m i s i m p o r t a n t , l e a r n i n g h o w       t o    f i n d      s o l u t i o n s i s t h e g r e a t e r c h a l l e n g e . T h u s , P a r t O n e f    o    c u s e s o n s t r a t e g i s f o r p r o b l e m       s o l v i n g ,  t o    e n a b l e y o u      n o t   j u s t     t o    w r i t e     u t t o     t h i n k l k e     a    p r o g r a m m e r .  r t   r t   a r t T w o    T w o   T w o L b r a r i e s   L i r a r i e s   L i r a r i e s a n    a n d   a n d M o d u l a r    M o d u l a r    M o d u l a r    D e v e l o p m e n t   D e v e l o p m e n t   D e v e l o p m e n t   V E R V E W       V E R V E W       V E R V E W        I f y o u s o m e d a y t a k e a j o b i n t h e s o f t w a r e i n d u s t r y , y o u w i l l f i n d t h a t y o u w r i t e   e r y f e w p r o g r a m s e n t i r e l y o n y o u r o w n . I n m o s t c o m p a n i e s , p r o g r a m m e r s w o r k a s    e r m s t o b u l d a p p l i c a t i o n s t h a t     a r e    m u c h l a r g e r t h a n t h o s e a n y p e r s o n c o u l d m a n a g e    n d i v i d u a l     y .  M a k i n g i t p o s s b l f o r m a n y p r o g r a m m e r s t o o r k t o g e t h e r     i s    a      f u n d a m e n t a l c h a l l e n g e o f m o d e r n s o f t w a r e e n g i n e e r i n g . T h e f o u r c h a p t e r s i n P a r t   T w o    t e a c h y o u h o w t o b r e a k l a r g e p r o g r a m s d o w n i n t o i n d e p e n d e n t m o d u l e s a n d h o w      o e s i g n t h o s e o d u l e s s o h a      t   t h e y c a n e u s e d s i r a r i e s f o r t h e r a p p l i c a t i o n s .  r t   r t   r t T h r e e    T h r e e    T h r e e C o m p o u n d    C o p o u n d    C o p o u n d D a t a    D a t a    D a t a T y p e s   T y p e s   T y p e s   V E R V I E W       V E R V E W       V E R V I E W        A l t h o u g h y o u k n o w t h a t p r o g r a m s m a n i p u l a t e d a t a , t h e e a r l i e r p a r t s o f t h i s t e x t   h a v e f o c u s e d o n t h e c o n t r l s t r u c t u r e s t h a t p e r f o r m t h e m a n i p l a t i o n , n o t t e    u n e r l y i n g d a t a . I n h a p t r s     1 1    t h r o u g h 1 7 , y o u l s e e t h a t , l k e o n t r l s t r u c t u r e s ,  d a s t r u c t u r e s     a r e    c e n t r a l t p r o g r a m m i n g . B y l e a r n i n g t o a s s e m b l e d a t a i n t o l a r g e r     s t r u c t u r s , y o u c a n e x t e n d y o u r p r o g r a m m i n g c a p a b i l i t i e s c o n s i d e r a b l y a n d w r i t e    p r o g r a m s t h a t    a r e    b o t h m o r u s e f u l a n d m o r e x c i t i n g .  

Transcript of The Art and Science of C

 
T h e   T h e   T h e a r t    a r t  a r t a n d      a n d   a n d s c i e n c e      s c i e n c e      s c i e n c e o f      o f   o f C    C    C    
P a r t    P a r t    P a r t O n e      O n e   O n e t h e      t h e   t h e B a s i c s    B a s i c s    B a s i c s o f      o f   o f C    C    C P r o g r a m m i n g      P r o g r a m m i n g      P r o g r a m m i n g      
O V E R V I E W            O V E R V I E W            O V E R V I E W            
 L e a r n i n g      C ,   o r a n y p r o g r a m m i n g l a n g u a g e , i s        i n     m a n y r e s p e c t s l i k e l e a r n i n g          t o    c o m m u n i c a t e        i n a     f o r e i g n l a n g u a g e .    Y o u     n e e d          t o     a c q u i r e        a     v o c a b u l a r y        t o     k n o w w h a t t h e       w o r d s m e a n .    Y o u     n e e d          t o     s t u d y s y n t a x s o t h a t y o u c a n a s s e m b l e t h o s e w o r d s i n t o      
 s e n t e n c e s . A n     d      y o u m u s t c o m e        t o     r e c o g n i z e c o m m o n i d i o m s s o t h a t y o u c a n u n d e r s t a n d         w h a t p e o p l e a c t u a l l y        s a y .    T h e r e f o r e , P a r t O n e i n t r o d u c e s y o u          t o     t h e v o c a b u l a r y , s y n t a x ,   a n d i d i o m a t i c s t r u c t u r e        o f C .    B u t m a s t e r i n g t h e s e c o n v e n t i o n s i s        n o t    e n o u g h .    A s i n        a n y    l a n g u a g e , y o u m u s t h a v e s o m e t h i n g          t o     s a y .    T h e e s s e n c e        o f     p r o g r a m m i n g i s s o l v i n g        
 p r o b l e m s . W h i l e k n o w i n g h o w       t o     e x p r e s s t h e m i s i m p o r t a n t , l e a r n i n g h o w            t o     f i n d         s o l u t i o n s i s t h e g r e a t e r c h a l l e n g e . T h u s , P a r t O n e f    o     c u s e s o n s t r a t e g i e s f o r p r o b l e m            s o l v i n g ,   t o     e n a b l e y o u          n o t    j u s t        t o     w r i t e        b u t t o        t h i n k l i k e        a     p r o g r a m m e r .  
P a r t    P a r t    P a r t T w o      T w o   T w o L i b r a r i e s    L i b r a r i e s    L i b r a r i e s a n d      a n d   a n d M o d u l a r      M o d u l a r      M o d u l a r      
D e v e l o p m e n t    D e v e l o p m e n t    D e v e l o p m e n t    
O V E R V E W            O V E R V E W            O V E R V E W            
 I f y o u s o m e d a y t a k e a j o b i n t h e s o f t w a r e i n d u s t r y , y o u w i l l f i n d t h a t y o u w r i t e    v e r y f e w p r o g r a m s e n t i r e l y o n y o u r o w n . I n m o s t c o m p a n i e s , p r o g r a m m e r s w o r k a s       t e r m s t o b u i l d a p p l i c a t i o n s t h a t        a r e     m u c h l a r g e r t h a n t h o s e a n y p e r s o n c o u l d m a n a g e      
i n d i v i d u a l l       y .    M a k i n g i t p o s s i b l e f o r m a n y p r o g r a m m e r s t o w o r k t o g e t h e r        i s     a       f u n d a m e n t a l c h a l l e n g e o f m o d e r n s o f t w a r e e n g i n e e r i n g . T h e f o u r c h a p t e r s i n P a r t   
T w o     t e a c h y o u h o w t o b r e a k l a r g e p r o g r a m s d o w n i n t o i n d e p e n d e n t m o d u l e s a n d h o w           t o d e s i g n t h o s e m o d u l e s s o t h a          t    t h e y c a n b e u s e d a s l i b r a r i e s f o r o t h e r a p p l i c a t i o n s .  
P a r t    P a r t    P a r t T h r e e      T h r e e      T h r e e C o m p o u n d      C o m p o u n d      C o m p o u n d D a t a      D a t a      D a t a T y p e s    T y p e s    T y p e s    
 
 
 
A    A    A L i b r a r y - B a s e d      L i b r a r y - B a s e d      L i b r a r y - B a s e d I n t r o d u c t i o n      I n t r o d u c t i o n      I n t r o d u c t i o n t o      t o   t o   
C o m p u t e r      C o m p u t e r      C o m p u t e r S c i e n c e      S c i e n c e      S c i e n c e      
I n   I n   I n l o v i n g      l o v i n g      l o v i n g m e m o r y      m e m o r y      m e m o r y o f      o f   o f G r a c e      G r a c e      G r a c e E . B l o o m          E . B l o o m          E . B l o o m ( 1 9 2 4 - 1 9 9 4 )    ( 1 9 2 4 - 1 9 9 4 )    ( 1 9 2 4 - 1 9 9 4 ) f o r      f o r   f o r h e l p i n g      h e l p i n g      h e l p i n g m e      m e   m e a p p r e c i a t e      a p p r e c i a t e      a p p r e c i a t e t h e      t h e   t h e   
v a l u e      v a l u e      v a l u e o f      o f   o f i d e a s    i d e a s    i d e a s a n d      a n d   a n d t h e      t h e   t h e i m p o r t a n c e      i m p o r t a n c e      i m p o r t a n c e o f      o f   o f w r i t i n g      w r i t i n g      w r i t i n g c l e a r l y      c l e a r l y      c l e a r l y a b o u t    a b o u t    a b o u t t h e m .    t h e m .    t h e m .    
A b o u t    A b o u t    A b o u t t h e      t h e   t h e a u t h o r      a u t h o r      a u t h o r      
I f i r s t b e g a n t e a c h i n g i n t r o d u c t o r y c o m p u t e r s c i e n c e m o r e t h a n 2 0 y e a r s a g o w h i l e I                                                
w a s s t i l l a s t u d e n t a t H a r v a r d . S i n c e r e c e i v i n g m y P h . D . i n 1 9 8 0 , I h a v e t a u g h t c o m p u t e r                                                      
s c i e n c e a t H a r v a r d , W e l l e s l e y , a n d S t a n f o r d , w h e r e I a m A s s o c i a t e C h a i r o f                                                                      t h e    C o m p u t e r                                                      
S c i e n c e D e p a r t m e n t . I n t h a t c a p a c i t y , I a m r e s p o n s i b l e f o r                                                        t h e    u n d e r g r a d u a t e p r o g r a m i n                                                                              
c o m p u t e r s c i e n c e . A l t h o u g h I h a v e t a u g h t a d v a n c e d c o u r s e s i n c o m p u t e r s c i e n c e a n d h a v e                                                                  
a l s o w o r k e d i n                                                                                t h e    r e s e a r c h i n d u s t r y                                                                                ,    m y g r e a t e s t j o y c o m e s f r o m o p e n i n g u p                                                                            t h e    e n o r m o u s                                                        
 p o w e r o f c o m p u t e r s t o s t u d e n t s w h o                                       a r e     j u s t b e g i n n i n g t o l e a r n a b o u t t h e m . I n t h e i r                                                      
e x c i t e m e n t , m y o w n l o v e f o r c o m p u t e r s c i e n c e i s c o n s t a n t l y r e n e w e d .                            
I n a d d i t i o n t o m y t e a c h i n g a t S t a n f o r d , I h a v e s e r v e d s i n c e 1 9 9 0                                                                            a s t h e      p r e s i d e n t o f                                                                    
C o m p u t e r P r o f e s s i o n a l s f o r S o c i a l R e s p o n s i b i l i t y , a p u b l i c - i n t e r e s t a s s o c i a t i o n o f c o m p u t e r                                                      
 p r o f e s s i o n a l s w i t h 2 0 0 0 m e m b e r s i n 2 2 c h a p t e r s t h r o u g h o u t                        t h e    U n i t e d S t a t e s . C o m p u t e r s                                                        
a f f e c t o u r s o c i e t y i n m a n y d i f f e r e n t w a y s . J u s t                                              a s     i t i s i m p o r t a n t t o l e a r n a b o u t                                              t h e  
t e c h n o l o g y , i t i s c r i t i c a l t h a t w e a l s o                                                                            t a k e      t h e    r e s p o n s i b i l i t y t o e n s u r e t h a t c o m p u t e r s                                                          a r e  
u s e d f o r                                                        t h e    b e n e f i t o f a l l . I f y o u h a v e s u g g e s t i o n s                                                          a s    t o h o w I m i g h t m a k e t h                                                                                e    p r e s e n t a t i o n                                                                              
m o r e c l e a r , o r y o u e n c o u n t e r e r r o r s i n t h i s t e x t , p l e a s e l e t                                              m e    k n o w .                              Y o u     c a n r e a c h                                                                                m e    b y                                       
e l e c t r o n i c m a i l a t e r i c r @ a w . c o m .                            
E r i c S . R o b e r t s                                                        
D e p a r t m e n t o f C o m p u t e r S c i e n c e                                                                  
S t a n f o r d U n i v e r s i t y                                                                              
T o   T o   T o t h e      t h e   t h e S t u d e n t    S t u d e n t    S t u d e n t    
 
C o m p u t e r s                                                          a r e    a p r o f o u n d l y e m p o w e r i n g t e c h n o l o g y . T h e a d v a n c e s w e h a v e s e e n u p                                                                          
t o n o w                                                                                                                    a r e    s m a l l c o m p a r e d t o w h a t w e w i l l s e e i n                                                                                t h e    n e x t c e n t u r y . C o m p u t e r s w i l l p l a y a                                                                      
m a j o r r o l e i n s h a p i n g t h a t c e n t u r y , j u s t                                              a s    t h e y h a v e                                                                    t h e    l a s t 5 0 y e a r s . T h o s e o f y o u w h o                                                                            a r e  
s t u d e n t s t o d a y w i l l s o o n i n h e r i t                                              t h e    r e s p o n s i b i l i t y o f g u i d i n g t h a t p r o g r e s s . A s y o u d o s o ,                              
k n o w i n g h o w t o u s e c o m p u t e r s c a n o n l y h e l p .                            
L i k e m o s t s k i l l s t h a t                                              a r e     w o r t h k n o w i n g , l e a r n i n g h o w c o m p u t e r s w o r k a n d h o w t o                                                                          
c o n t r o l t h e i r e n o r m o u s p o w e r t a k e s t i m e .                              Y o u     w i l l n o t u n d e r s t a n d i t a l l a t o n c e . B u t y o u                                                                                
m u s t s t a r t s o m e w h e r e . T w e n t y - f i v e c e n t u r i e s a g o                                                                            t h e     C h i n e s e p h i l o s o p h e r L a o - t z u                                                                                
o b s e r v e d t h a t                                              t h e     l o n g e s t j o u r n e y b e g i n s w i t h a s i n g l e s t e p . T h i s b o o k c a n                                                                                b e     y o u r                                                      
 b e g i n n i n g .              
F o r m a n y o f y o u , h o w e v e r ,                                t h e    f i r s t s t e p c a n                                                                                b e    t h e    h a r d e s t t o t a k e . M a n y s t u d e n t s f i n d                                                                                
c o m p u t e r s o v e r w h e l m i n g a n d i m a g i n e t h a t c o m p u t e r s c i e n c e i s b e y o n d t h e i r r e a c h .                            
L e a r n i n g                                                                              t h e    b a s i c s o f p r o g r a m m i n g , h o w e v e r , d o e s n o t r e q u i r e a d v a n c e d m a t h e m a t i c s o r a                                                                      
d e t a i l e d u n d e r s t a n d i n g o f e l e c t r o n i c s . W h a t m a t t e r s i n p r o g r a m m i n g i s w h e t h e r y o u c a n                                                                              
 p r o g r e s s f r o m                                                                t h e    s t a t e m e n t o f a p r o b l e m t o i t s s o l u t i o n .                              T o     d o s o , y o u m u s t                                              b e    a b l e t o t h i n k                                                                                
l o g i c a l l y                                                                                .   Y o u     m u s t h a v e                                                                    t h e    n e c e s s a r y d i s c i p l i n e t o e x p r e s s y o u r l o g i c i n a f o r m t h a t                                              t h e  
c o m p u t e r c a n u n d e r s t a n d . P e r h a p s m o s t i m p o r t a n t l y , y o u m u s t                                              b e    a b l e      t o s e e                                                                    t h e     t a s k                                                                                
t h r o u g h t o i t s c o m p l e t i o n w i t h o u t g e t t i n g d i s c o u r a g e d b y d i f f i c u l t i e s a n d s e t b a c k s . I f y o u                                                                                
s t i c k w i t h                                                                                t h e    p r o c e s s , y o u w i l l d i s c o v e r t h a t r e a c h i n g                                                                              t h e    s o l u t i o n i s s o e x h i l a r a t i n g t h a t                                              i t  
m o r e t h a n m a k e s u p f o r a n y f r u s t r a t i o n                                                                                s    y o u e n c o u n t e r a l o n g                                                                              t h e    w a y .                            
T h i s b o o k i s d e s i g n e d t o t e a c h y o u                                                                                  t h e    f u n d a m e n t a l s o f p r o g r a m m i n g a n d                                                                                  t h e    b a s i c s o f                                                                    
C , w h i c h i s                                                          t h e    d o m i n a n t p r o g r a m m i n g l a n g u a g e i n                                                                                t h e    c o m p u t i n g i n d u s t r y t o d a y .                              I t     t r e a t s                                                        
t h e    w h y s        o f p r o g r a m m i n g                                                                              a s     w e l l                                          a s t h e      h o w s        ,    t o g i v e y o u a f e e l f o r                                                        t h e     p r o g r a m m i n g                                                                            
 p r o c e s s                              a s    a w h o l e .                              I t    a l s o i n c l u d e s s e v e r a l f e a t u r e s t h a t w i l l h e l p y o u f o c u s o n                                                                                t h e    e s s e n t i a l                                        
 p o i n t s a n d a v o i d e r r o r s t h a t s l o w y o u d o w n . T h e n e x t f e w p a g e s s u m m a r i z e t h e s e f e a t u r e s                            
a n d e x p l a i n h o w t o u s e t h i s b o o k e f f e c t i v e l y                                                                                a s    y o u b e g i n y o u r j o u r n e y i n t o                                                                            t h e    e x c i t i n g                                                                            
w o r l d o f c o m p u t e r s c i e n c e .                            
U s i n g      U s i n g      U s i n g t h e      t h e   t h e A r t    A r t  A r t a n d      a n d   a n d S c i e n c e      S c i e n c e      S c i e n c e o f      o f   o f C    C    C    
T o     m a k e                                                                    t h e    b e s t p o s s i b l e u s e o f t h i s t e x t b o o k f o r l e a r n i n g                                                                              t h e    C l a n g u a g e ,                                b e    s u r e t o                                                                          
t a k e a d v a n t a g e o f                                                                      t h e    t o o l s i t p r o v i d e s .                            
F o r   F o r   F o r C h a p t e r      C h a p t e r      C h a p t e r R e v i e w        R e v i e w        R e v i e w        
E a c h c h a p t e r i n c l u d e s e a s i l y a c c e s s i b l e m a t e r i a l t o g u i d e y o u r s t u d y a n d f a c i l i t a t e                                                                  
r e v i e w o f                                                                      t h e    c e n t r a l t o p i c s .                            
T h e l i s t o f                                                                      o b j e c t i v e s    o b j e c t i v e s    o b j e c t i v e s      p r e v i e w s                                                          t h e    k e y t o p i c s c o v e r e d b y                                                                                t h e    c h a p t e r . B e c a u s e e a c h                                                                              
o b j e c t i v e i d e n t i f i e s a c o n c r e t e s k i l l ,                                t h e    c h a p t e r o b j e c t i v e s h e l p y o u t o a s s e s s y o u r m a s t e r y                                                                              
o f                                    t h e    e s s e n t i a l m a t e r i a l .                            
T h e S u m m a r y d e s c r i b e s , i n m o r e d e t a i l , w h a t y o u s h o u l d h a v e l e a r n e d i n c o n n e c t i o n                                                                              
 
L e a r n i n g      L e a r n i n g      L e a r n i n g t o      t o   t o P r o g r a m          P r o g r a m          P r o g r a m          
P r o g r a m m i n g i s b o t h a s c i e n c e a n d a n a r t . L e a r n i n g t o p r o g r a m w e l l r e q u i r e s m u c h                                                                              
m o r e t h a n m e m o r i z i n g a s e t o f r u l e s .                              Y o u     m u s t l e a r n t h r o u g h e x p e r i e n c e a n d b y r e a d i n g                                                                            
o t h e r p r o g r a m s . T h i s t e x t i n c l u d e s s e v e r a l f e a t u r e s t o a i d i n t h i s p r o c e s s .                            
T h e t e x t i n c l u d e s a l a r g e n u m b e r o f                                                                      P r o g r a m          P r o g r a m          P r o g r a m e x a m p l e s    e x a m p l e s    e x a m p l e s      t h a t i l l u s t r a t e h o w i n d i v i d u a l                                        
C c o m p l e t e                                                                    a r e    u s e d t o c r e a t e c o m p l e t e p r o g r a m s . T h e s e e x a m p l e s a l s o s e r v e                                                                    a s    m o d e l s f o r                                                      
y o u r o w n p r o g r a m s ; i n m a n y c a s e s , y o u c a n s o l v e a n e w p r o g r a m m i n g p r o b l e m b y m a k i n g                                                                            
s i m p l e m o d i f i c a t i o n s t o a p r o g r a m f r o m                                                                                                                              t h e    t e x t .                            
S y n t a x      S y n t a x      S y n t a x b o x e s    b o x e s    b o x e s      s u m m a r i z e k e y r u l e s o f C s y n t a x , f o r a n a t - a - g l a n c e r e v i e w o f k e y                                                                              
 p r o g r a m m i n g c o n c e p t s .              
T o   T o   T o A v o i d      A v o i d      A v o i d E r r o r s    E r r o r s    E r r o r s    
A l l p r o g r a m m e r s , e v e n                                                                                t h e    b e s t o n e s , m a k e m i s t a k e s . F i n d i n g t h e s e m i s t a k e s , o r b u g s ,                              
i n y o u r p r o g r a m s i s a c r i t i c a l l y i m p o r t a n t s k i l l . T h e f o l l o w i n g f e a t u r e s w i l l h e l p y o u t o                                                                          
 b u i l d t h i s s k i l l .              
T o     h e l p y o u l e a r n t o r e c o g n i z e a n d c o r r e c t b u g s , t h i s t e x t i n c l u d e s s e v e r a l b u g g y                                                                              
 p r o g r a m s t h a t i l l u s t r a t e t y p i c a l e r r o r s .                 T o     m a k e s u r e y o u d o n o t u s e t h e s 3 p r o g r a m s                                                          a s  
m o d e l s , s u c h i n c o r r e c t p r o g r a m s                                                          a r e    m a r k e d w i t h a s u p e r i m p o s e d i m a g e o f a b u g .                            
C o m m o n      C o m m o n      C o m m o n P i t f a l l s    P i t f a l l s    P i t f a l l s      p r o v i d e h a n d y r e m i n d e r s a b o u t m i s t a k e s                                                          a l l    b e g i n n i n g p r o g r a m m e r s                                                        
a r e    l i k e l y t o m a k e , a n d h o w t o a v o i d t h e m . F a u l t y l i n e s o f c o d e                                                                    a r e    h i g h l i g h t e d w i t h a b u g                                                                            
i m a g e a n d a n n o t a t e d i n c o l o r .                            
A f t e r      A f t e r      A f t e r t h e      t h e   t h e C h a p t e r      C h a p t e r      C h a p t e r      
L e a r n i n g t o p r o g r a m r e q u i r e s c o n s i d e r a b l e p r a c t i c e .                              T o     m a k e s u r e t h a t y o u g e t                                              t h e  
n e c e s s a r y e x p e r i e n c e , e a c h c h a p t e r i n c l u d e s a n e x t e n s i v e s e t o f e x e r c i s e s a n d q u e s t i o n s t h a t                                            
t e s t y o u r m a s t e r y o f                                                                      t h e    m a t e r i a l .                            
E a c h c h a p t e r c o n c l u d e s w i t h a w e a l t h o f                                                                      R e v i e w        R e v i e w        R e v i e w Q u e s t i o n s    Q u e s t i o n s    Q u e s t i o n s      ,    w h i c h r e q u i r e b r i e f                                                                    
a n s w e r s t o c h a p t e r c o n t e n t q u e s t i o n s , c o d e a d o p t i o n s , o r d e b u g g i n g e x e r c i s e s .                            
P r o g r a m m i n g      P r o g r a m m i n g      P r o g r a m m i n g E x e r c i s e s    E x e r c i s e s    E x e r c i s e s      c a l l      f o r y o u t o t r y y o u r h a n d a t m o r e e x t e n s i v e p r o g r a m m i n g                                                                            
 p r o j e c t s .              
T o   T o   T o t h e      t h e   t h e I n s t r u c t o r      I n s t r u c t o r      I n s t r u c t o r      
I n 1 9 9 1 - 9 2 , S t a n f o r d d e c i d e d t o r e s t r u c t u r e i t s i n t r o d u c t o r y c o m p u t e r s c i e n c e                                                                  
c u r r i c u l u m t o u s e A N S I C i n s t e a d o f P a s c a l .                              W e    c h o s e t o a d o p t A N S I C i n o u r i n t r o d u c t o r y                                                                              
c o u r s e s f o r                                                        t h e    f o l l o w i n g r e a s o n s :                              
 
n e w s p a p e r e m p l o y m e n t s e c t i o n , o u r s t u d e n t s b e g a n t o q u e s t i o n                                                                                t h e    r e l e v a n c e o f t h e i r                                                      
e d u c a t i o n .                            
         O u r P a s c a l - b a s e d c u r r i c u l u m t a u g h t s t u d e n t s t o p r o g r a m i n a l a n g u a g e t h a t t h e y w o u l d                                                                                
n e v e r a g a i n u s e .                              W e    d i s c o v e r e d t h a t m a n y o f t h o s e s t u d e n t s , w h e n t h e y a b a n d o n e d                                                                                
P a s c a l f o r m o r e m o d e r n l a n g u a g e s , o f t e n f o r g o t e v e r y t h i n g t h e y h a d l e a r n e d a b o u t                                            
 p r o g r a m m i                     n g     s t y l e a n d                                                                                  t h e     d i s c i p l i n e o f s o f t w a r e e n g i n e e r i n g . H a v i n g n o w t a u g h t                                            
t h e s e s k i l l s i n                                                                                t h e     c o n t e x t o f a l a n g u a g e t h a t                                              t h e     s t u d e n t s c o n t i n u e t o u s e , w e h a v e                                                                  
f o u n d t h a t t h e y e n d u p w r i t h i n g m u c h b e t t e r p r o g r a m s .                            
         M a n y o f o u r a d v a n c e d c o m p u t e r s c i e n c e c o u r s e s , p a r t i c u l a r l y i n                                                                                t h e     s y s t e m s a r e a ,                              
r e q u i r e s t u d e n t s t o p r o g r a m i n                                                                                C .    W o r k i n g w i t h C f r o m                                                                                                                              t h e    b e g i n n i n g g i v e s s t u d e n t s                                                        
m u c h m o r e e x p e r i e n c e b y                                                                                t h e    t i m e t h e y r e a c h                                                                                t h e    a d v a n c e d c o u r s e s .                            
         L e a r n i n g C e a r l y p a v e s                                                          t h e     w a y t o l e a r n i n g C + + a n d                                                                                  t h e     o b j e c t - o r i e n t e d p a r a d i g m .                            
B e c a u s e o u r s t u d e n t s h a v e a s t r o n g b a c k g r o u n d i n C p r o g r a m m i n g a f t e r t h e i r f i r s t y e a r                                                      
o f s t u d y , w e h a v e b e e n a b l e t o o f f e r o u r c o u r s e o n o b j e c t - o r i e n t e d s y s t e m d e s i g n m u c h                                                                              
e a r l i e r i n                                                                                t h e    c u r r i c u l u m .                            
 
d e v e l o p m e n t . S t u d e n t s l e a r n h o w t o u s e t h e s e t e c h n i q u e s e f f e c t i v e l y b e f o r e t h e y                                                                              
l e a r n a b o u t a r r a y s .                            
2 . T h e t e x t d e m o n s t r a t e s                                                          t h e    p o w e r o f l i b r a r i e s b y u s i n g t h e m .                              I t    i s                              o n e     t h i n g t o t e l l                                        
s t u d e n t s t h a t l i b r a r i e s m a k e                                                                    i   t    p o s s i b l e t o h i d e c o m p l e x i t y .                              I t     i s q u i t e a n o t h e r t o                                                                          
d e m o n s t r a t e t h a t c o n c e p t . T h i s t e x t i n t r o d u c e s s e v e r a l n e w l i b r a r i e s t h a t h i d e                                                                  
d e t a i l s f r o m                                                                                                                              t h e    s t u d e n t s u n t i l t h e y                                                                                a r e    r e a d y t o a s s i m i l a t e t h e m . T h e l i b r a r i e s g i v e                                                                  
s t u d e n t s                                                          t h e    p o w e r t o w r i t e u s e f u l p r o g r a m s t h a t t h e y c o u l d n o t d e v e l o p o n t h e i r                                                      
o w n . L a t e r c h a p t e r s r e v e a l                                          t h e     i m p l e m e n t a t i o n o f t h o s e l i b r a r i e s , t h e r e b y                                                                              
a l l o w i n g s t u d e n t s t o a p p r e c i a t e                                                                    t h e    p o w e r o f a b s t r a c t i o n .                            
I n     1 9 9 2 ,                                I     a t t e m p t e d t o t e a c h                                                                                t h e    i n t r o d u c t o r y c o u r s e u s i n g o n l y                                                                                t h e    A N S I l i b r a r i e s .                            
T h e r e s u l t s w e r e n o t e n c o u r a g i n g . E a c h n e w t o p i c r e q u i r e d t h a t                                              t h e    s t u d e n t u n d e r s t a n d s o                                                                          
m u c h a b o u t                                              t h e     r e s t o f C t h a t t h e r e w a s n o e f f e c t i v e w a y t o p r e s e n t                                              t h e     m a t e r i a l . F o r                                                      
e x a m p l e , s t u d e n t s h a d t o u n d e r s t a n d                                                                                  t h e     m e c h a n i c s o f a r r a y s , p o i n t e r s , a n d a l l o c a t i o n                                                                              
 b e f o r e t h e y c o u l d u s e s t r i n g d a t a i n a n d \ y i n t e r e s t i n g w a y , e v e n t h o u g h s t r i n g m a n i p u l a t i o n                                       
i s s i m p l e r c o n c e p t u a l l y . M y b e s t s t u d e n t s m a n a g e d t o u n d e r s t a n d w h a t w a s g o n g o n b y                                                                                t h e  
e n d o f                                                                      t h e    q u a r t e r . M o s t , h o w e v e r , d i d n o t . S i n c e w e i n t r o d u c e d                                                                                  t h e    l i b r a r y - b a s e d a p p r o a c h                                                                              
i n e a r l y 1 9 9 3 , s t u d e n t s h a v e a s s i m i l a t e d                                                                                  t h e    m a t e r i a l m o r e e a s i l y a n d l e a r n e d m u c h m o r e                                                                  
a b o u t c o m p u t e r s c i e n c e .                            
T h e l i b r a r y i n t e r f a c e s a n d a s s o c i a t e d i m p l e m e n t a t i o n s u s e d i n t h i s t e x t                                              a r e    r e p r i n t e d i n                                                                              
A p p e n d i x B , w h i c h a l s o g i v e s i n s t r u c t i o n s f o r o b t a i n i n g                                                                              t h e     s o u r c e c o d e e l e c t r o n i c a l l y                                                                              
t h r o u g h a n o n y m o u s F T P ( F i l e T r a n s f e r P r o t o c o l ) .                            
T h e   T h e   T h e o r d e r      o r d e r      o r d e r o f      o f   o f p r e s e n t a t i o n      p r e s e n t a t i o n      p r e s e n t a t i o n      
T h i s b o o k p r e s e n t s t o p i c s i n                                                                                t h e    s a m e o r d e r                                                        a s    S t a n f o r d                                                                                  ’  s    i n t r o d u c t o r y c o u r s e , e x c e p t                                            
f o r                             t h e    m a t e r i a l i n C h a p t e r 1 7 , w h i c h w e c o v e r i n                                                                                t h e     s e c o n d c o u r s e . D e p e n d i n g o n y o u r                                                      
a u d i e n c e a n d                                                                                  t h e    g o a l s o f y o u r c o u r s e , y o u m a y w a n t t o v a r y                                                                                t h e    o r d e r o f p r e s e n t a t i o n . T h e                                                                  
f o l l o w i n g n o t e s p r o v i d e a n o v e r v i e w o f                                                                      t h e     c h a p t e r s a n d i n d i c a t e s o m e o f                                                                      t h e     m o r e                                                                  
i m p o r t a n t d e p e n d e n c i e s .                            
C h a p t e r 1 t r a c e s                                                          t h e    h i s t o r y o f c o m p u t i n g a n d d e s c r i b e s                                                          t h e    p r o g r a m m i n g p r o c e s s . T h e                                                                  
c h a p t e r r e q u i r e s n o p r o g r a m m i n g p e r                                                        s e    b u t p r o v i d e s                                                          t h e    c o n t e x t u a l b a c k g r o u n d f o r                                                        t h e    r e s t                                            
o f                                    t h e    t e x t .                            
 
C h a p t e r 5 i n t r o d u c e s f u n c t i o n s a n d p r o c e d u r e s .                              I t     b e g i n s w i t h s i m p l e e x a m p l e s o f                                                                    
f u n c t i o n s a n d t h e n c o n t i n u e s w i t h i n c r e a s i n g l y s o p h i s t i c a t e d e x a m p l e s . T h e m e c h a n i c s o f                                                                    
 p a r a m e t e r p a s s i n g                                        a r e     d i s c u s s e d i n a s e p a r a t e s e c t i o n t h a t i n c l u d e s m a n y d i a g r a m s t o h e l p                                                                          
s t u d e n t s f o l l o w                                                                                                                    t h e     f l o w o f d a t a f r o m                                                                                                                              o n e     f u n c t i o n t o a n o t h e r . T h e c h a p t e r e n d s w i t h a                                                                      
s i g n i f i c a n t p r o g r a m m i n g e x a m p l e t h a t i l l u s t r a t e s                                                          t h e    c o n c e p t o f s t e p w i s e r e f i n e m e n t .                            
T h e a l g o r i t h m i c c o n c e p t s p r e s e n t e d i n C h a p t e r 6                                                                            a r e    f u n d a m e n t a l t o c o m p u t e r s c i e n c e                                                                  
 b u t m a y n o t                        b e    r e q u i r e d f o r                                                        a l l    s t u d e n t s . I f y o u r a u d i e n c e c o n s i s t s o f e n g i n e e r s                                                        o r    p o t e n t i a l                                        
c o m p u t e r s c i e n c e m a j o r s                                                          t h e     m a t e r i a l w i l l p r o v e e x t r e m e l y v a l u a b l e . F o r l e s s t e c h n i c a l                                        
a u d i e n c e s , h o w e v e r , y o u c a n e l i m i n a t e m u c h o f t h i s m a t e r i a l w i t h o u t d i s t u r b i n g