Amiga C for Beginners

Embed Size (px)

Citation preview

  • 7/25/2019 Amiga C for Beginners

    1/308

  • 7/25/2019 Amiga C for Beginners

    2/308

  • 7/25/2019 Amiga C for Beginners

    3/308

    A m i g a

    r B e g i n n e r s

    S c h a u n

    D a t a B e c k e r B o o k

  • 7/25/2019 Amiga C for Beginners

    4/308

    F o u r t h P r i n t i n g 1 9 9 0

    P r i n t e d U . S . A .

    C o p y r i g h t

    1 9 8 9 1 9 9 0

    A b a c u s

    5 3 7 0 5 2 n d S t r e e t S E

    G r a n d R a p i d s

    M I

    4 9 5 1 2

    C o p y r i g h t

    1 9 8 7 1 9 8 8

    D a t a B e c k e r G m b H

    M e r o w i n g e r s t r a s s e 3 0

    4 0 0 0 D u e s s e l d o r f W e s t G e r m a n y

    T h i s b o o k c o p y r i g h t e d N o

    p a r t

    t h i s b o o k m a y r e p r o d u c e d s t o r e d r e t r i e v a l

    s y s t e m

    t r a n s m i t t e d a n y f o r m

    b y m e a n s e l e c t r o n i c

    m e c h a n i c a l

    p h o t o c o p y i n g

    r e c o r d i n g o r o t h e r w i s e w i t h o u t t h e p r i o r w r i t t e n p e r m i s s i o n o f A b a c u s

    D a t a

    B e c k e r

    G m b H

    E v e r y e f f o r t b e e n m a d e e n s u r e c o m p l e t e a n d a c c u r a t e i n f o r m a t i o n c o n c e r n i n g

    m a t e r i a l p r e s e n t e d

    t h i s b o o k H o w e v e r A b a c u s n e i t h e r g u a r a n t e e n o r b e h e l d l e g a l l y

    r e s p o n s i b l e

    m i s t a k e s

    p r i n t i n g

    f a u l t y i n s t r u c t i o n s

    c o n t a i n e d

    t h i s

    b o o k

    T h e

    a u t h o r s a l w a y s

    a p p r e c i a t e r e c e i v i n g

    n o t i c e e r r o r s

    m i s p r i n t s

    A m i g a B A S I C t r a d e m a r k r e g i s t e r e d t r a d e m a r k M i c r o s o f t C o r p o r a t i o n

    A m i g a

    5 0 0

    A m i g a

    1 0 0 0 A m i g a 2 0 0 0 A m i g a C 6 4

    t r a d e m a r k s r e g i s t e r e d t r a d e m a r k s

    C o m m o d o r e A m i g a L a t t i c e C L a t t i c e t r a d e m a r k s o r r e g i s t e r e d t r a d e m a r k s

    L a t t i c e C o r p o r a t i o n

    A z t e c C A z t e c t r a d e m a r k s r e g i s t e r e d t r a d e m a r k s

    M a n x

    S o f t w a r e S y s t e m s I B M t r a d e m a r k r e g i s t e r e d t r a d e m a r k o f I n t e r n a t i o n a l B u s i n e s s

    M a c h i n e s I n c A t a r i

    S T t r a d e m a r k

    r e g i s t e r e d

    t r a d e m a r k

    A t a r i C o r p o r a t i o n

    I S B N

    1 5 5 7 5 5 0 4 5 X

  • 7/25/2019 Amiga C for Beginners

    5/308

    T a b l e

    o f C o n t e n t s

    I n t r o d u c t i o n

    P r o g r a m

    E x e c u t i o n

    4

    C o m p i l e r I n t e r p r e t e r

    B e g i n n i n g

    T h e

    E d i t o r

    T h e C o m p i l e r

    T h e L i n k e r 1 2

    P u t t i n g

    T o g e t h e r

    T h e F i r s t P r o g r a m

    U s i n g

    E

    C o m p i l i n g

    E r r o r M e s s a g e s

    T h e o r y P r a c t i c e

    P r o g r a m F o r m a t

    D e f i n i n g F u n c t i o n

    p r i n t f a n d E s c a p e S e q u e n c e s

    C o m m e n t s

    V a r i a b l e s A r i t h m e t i c

    I n t e g e r s

    T h e

    i f

    s t a t e m e n t

    4 5 3 C a l c u l a t i n g

    w i t h

    F l o a t i n g

    P o i n t N u m b e r s

    C h a r a c t e r s C h a r a c t e r S t r i n g s

    L o o p s

    4

    w h i l e L o o p s

    f o r L o o p s 4 8

    d o w h i l e L o o p s

    M o r e

    E r r o r C h e c k i n g

    A N D

    O R

    S t r i n g s

    B a c k t r a c k i n g

    C a l c u l a t i n g C

    V a r i a b l e s

    V a r i a b l e

    N a m e s

    D a t a

    T y p e s

    T y p e

    C o n v e r s i o n 7

    T h e c a s t O p e r a t o r . . . . . . . . . 7 1

    H i

  • 7/25/2019 Amiga C for Beginners

    6/308

    p r i n t f a n d s c a n f 7 3

    M o r e E s c a p e S e q u e n c e s 7 5

    F o r m a t

    S p e c i f i c a t i o n 7 7

    O c t a l

    a n d

    H e x a d e c i m a l 8

    9 . 3 . 1

    C o n v e r s i o n

    P r o g r a m 8 2

    C h a r a c t e r

    C o d e s 8 4

    9 . 4 . 1 A b o u t B a c k s l a s h 8 5

    9 . 4 . 2 G o i n g O t h e r D i r e c t i o n 8 6

    T h e

    P r e p r o c e s s o r

    1 0 . 1 d e f i n e

    8 9

    1 0 . 2 i n c l u d e

    A b b r e v i a t i o n s 9 3

    1 1 . 1

    I n c r e m e n t D e c r e m e n t 9 7

    1 1 . 2 I n i t i a l i z a t i o n

    D e f i n i t i o n

    D e c l a r a t i o n

    9 9

    1 1 . 3

    M u l t i p l e

    A s s i g n m e n t s

    a n d

    D i r e c t i v e

    V a l u e

    C

    F u n c t i o n s

    1 2 . 1 F u n c t i o n s w i t h A r g u m e n t s

    1 2 . 2 F u n c t i o n s w i t h o u t R e t u r n V a l u e s

    1 2 . 3

    O t h e r F u n c t i o n s

    1 2 . 3 . 1

    s t r c p y V e r s i o n

    1 2 . 3 . 2

    s t r l e n

    A r r a y s

    1 3 . 1

    M u l t i - d i m e n s i o n a l

    A r r a y s 1 1 6

    M o r e

    a b o u t

    L o o p s

    1 4 . 1 M o r e a b o u t

    f o r

    L o o p

    1 4 . 2 b r e a k

    1 4 . 3

    c o n t i n u e

    1 4 . 4 T h e s w i t c h D i r e c t i v e

    P o i n t e r s a n d A d d r e s s e s

    1 5 . 1

    A d d r e s s e s

    1 5 . 2 P o i n t e r s 1 3 3

    1 5 . 2 . 1 T h e E x c h a n g e F u n c t i o n w i t h P o i n t e r

    1 5 . 2 . 2

    s t r c o p y V e r s i o n 2

    1 5 . 2 . 3 s t r c o p y V e r s i o n

    1 5 . 3 P o i n t e r w i t h o u t S t o r a g e 1 3 8

    S t o r a g e C l a s s e s

    1 6 . 1 u t o

    1 6 . 2 S t a t i c

    1 6 . 3

    E x t e r n a l

    1 6 . 4 R e g i s t e r

    1 6 . 4 . 1

    F a s t s t r c p y

    R o u t i n e 1 4 7

    1 6 . 5

    L o c a l

  • 7/25/2019 Amiga C for Beginners

    7/308

    U s e r d e f i n e d L i b r a r i e s .

    1 7 . 1

    T h e s t r c m p F u n c t i o n .

    . 1 5 1

    . 1 5 4

    1 7 . 2

    I t o a

    1 7 . 3 R e v e r s e

    C F e a t u r e s

    1 8 . 1 T h e ? : O p e r a t o r

    T h e s i z e o f F u n c t i o n

    M a n i p u l a t i o n

    1 8 3 1

    A N D 1 6 5

    1 8 . 3 . 2 O R

    6 6

    1 8 3 3

    B i t w i s e S h i f t O p e r a t o r s

    A 1 6 7

    1 8 3 4 E X C L U S I V E O R

    1 8 . 3 . 5 O n e s C o m p l e m e n t

    1 8 . 4 G o t o

    . 1 6 8

    . 1 6 9

    C o m p l e x

    D a t a

    T y p e s

    1 9 . 1

    S t r u c t

    B i t F i e l d s

    1 9 . 3

    U n i o n s

    1 9 . 4

    n u m

    I . . . . 1 7 7

    1 9 . 5 T y p e d e f A 1 7 8

    I m p o r t a n t C o n c e p t s

    D e c l a r a t i o n s

    \

    2 0 . 2 I n i t i a l i z a t i o n

    2 1 . P o i n t e r

    A r r a y s

    U s e f u l M a c r o s

    2 2 . 1 M a c r o

    E r r o r S o u r c e s

    A

    2 2 . 2

    L i b r a r y M a c r o s

    A

    C o m m u n i c a t i o n

    Y

    2 0 1

    2 3 . 1

    P a s s i n g D a t a

    w i t h c l i \

    B u f f e r e d I n p u t / O u t p u t X 2 0 6

    M o r e B u f f e r e d I n p u t / O u t p u t

    \ .

    U n b u f f e r e d I n p u t / O u t p u t \ .

    D i r e c t A c c e s s . V 2 1 6

    R e a d i n g

    C h a r a c t e r

    2 1 8

    2 3 6 1 S t a n d a r d I n p u t / O u t p u t \

    2 3 . 7

    U s e r W i n d o w

    2 3 7 1 T h e T h r e e W i n d o w s . \

    2 3 . 8

    R e d i r e c t i o n

    2 4 . T r i c k s

    T i p s . 2 2 5

    2 4 . 1 S t a r t i n g

    f r o m W o r k b e n c h 2 2 7

    2 4 . 2

    O t h e r

    P r e p r o c e s s o r D i r e c t i v e s

    2 4 . 3 F i n d i n g R e m o v i n g E r r o r s

  • 7/25/2019 Amiga C for Beginners

    8/308

    S y s t e m P r o g r a m m i n g 2 3 3

    T h e I n t u i t i o n P r i n c i p l e 2 3 5

    W i n d o w u n d e r I n t u i t i o n 2 3 6

    2 5 2 1 T h e W i n d o w

    R a g s

    2 3 7

    2 5 2 2

    O p e n i n g

    W i n d o w

    2 3 8

    2 5 2 3

    W i n d o w P r o g r a m 2 3 9

    S c r e e n s 2 4 2

    2 5 3 1

    S c r e e n P r o g r a m 2 4 3

    2 5 4 T e x t G r a p h i c

    W i n d o w

    D i s p l a y 2 4 6

    2 5 4 1 T e x t 2 4 6

    2 5 4 2

    M o v e 2 4 6

    2 5 4 3 D r a w 2 4 7

    2 5 4 4 S m a l l D r a w i n g P r o g r a m 2 4 8

    2 5 4 5 L o w R e s o l u t i o n a n d I n t e r l a c e M o d e s 2 5 2

    2 5 4 6

    P i x e l P r o c e s s i n g 2 5 3

    D O S

    2 5 7

    S e t

    o m m e n t

    2 5 8

    R e a d

    D i r e c t o r y 2 5 9

    C o n c l u s i o n

    2 6 2

    A p p e n d i c e s 2 6 3

    F u n c t i o n s 2 6 5

    T h e H i s t o r y o f 2 7

    C

    T h e

    L a t t i c e

    C o m p i l e r 2 7 2

    D T h e

    A z t e c C o m p i l e r 2 7 3

    R e s e r v e d

    W o r d s 2 7 6

    F O p e r a t o r

    P r e c e d e n c e

    2 7 7

    G S t o r a g e

    C l a s s e s

    2 7 8

    H T y p e C o n v e r s i o n s 2 7 8

    M o d e s f

    o p e n

    2 7 9

    I n d e x

  • 7/25/2019 Amiga C for Beginners

    9/308

    n t r o d u t i o n t

  • 7/25/2019 Amiga C for Beginners

    10/308

  • 7/25/2019 Amiga C for Beginners

    11/308

    A b a c u s I n t r o d u c t i o n t o

    I n t r o d u c t i o n t o

    S o

    y o u w a n t l e a r n C . T h a t s o b v i o u s , y o u w o u l d n t b e

    r e a d i n g

    t h i s b o o k . T h e g o a l t h i s

    b o o k

    h e l p y o u l e a r n p r o g r a m

    o n

    A m i g a l i t t l e t i m e p o s s i b l e .

    A m i g a

    B e g i n n e r s

    w r i t t e n s h o r t

    c o u r s e l a n g u a g e a n y o n e

    w h o w t s

    l e a r n

    a b o u t

    l a n g u a g e f r o m s c r a t c h ,

    w i t h o u t a t e c h n i c a l

    j a r g o n .

    T h i s b o o k d i v i d e d r o u g h l y i n t o t w o p a r t s . T h e f i r s t p a r t i n t r o d u c e s

    r e a d e r b a s i c

    s t r u c t u r e s

    p r o g r a m m i n g t h r o u g h o p e r a t i n g

    e d i t o r , c o m p i l e r l i n k e r . a l s o c o n t a i n s m a n y s a m p l e p r o g r a m s .

    Y o u l l

    a b l e

    w r i t e

    y o u r

    o w n

    s h o r t

    p r o g r a m s

    o n l y

    f e w

    h o u r s .

    T h i s f i r s t p a r t

    a l s o t a k e s

    b e g i n n i n g p r o g r a m m e r t h r o u g h

    e s s e n t i a l s o f C c a l c u l a t i o n s , s t r i n g

    h a n d l i n g ,

    l o o p s a n d m o r e . e v e n

    h e l p s y o u

    f i n d

    e r r o r s m a d e m o s t o f t e n b y n e w

    p r o g r a m m e r s

    T h e s e c o n d p a r t , w h i c h b e g i n s C h a p t e r e x p l a i n s

    b a c k g r o u n d

    a n d p e c u l i a r i t i e s e a c h s t a t e m e n t a n d f u n c t i o n . T h e s e i n c l u d e

    p r e p r o c e s s o r c o m m a n d s a r r a y s ,

    l o o p s ,

    p o i n t e r s , a d d r e s s e s a n d m e m o r y

    c l a s s e s . I f t h e s e w o r d s d o n t m e a n a n y t h i n g y o u n o w t h e y w i l l w h e n

    y o u s t a r t r e a d i n g s e c o n d s e c t i o n .

    T h e s e c o n d p a r t a l s o

    d i s c u s s e s

    m a c r o s , i n t e r f a c i n g y o u r A m i g a

    o u t s i d e w o r l d , t r i c k s a n d t i p s f o r t h e l a n g u a g e a n d g r a p h i c

    g r a m m i n g

    T h e a p p e n d i c e s

    d e s c r i b e h i s t o r y

    a n d d e v e l o p m e n t l a n g u a g e ,

    w e l l o p e r a t i n g

    i n s t r u c t i o n s f o r

    n u m b e r p o p u l a r

    c o m p i l e r s

    y o u r

    c o m p i l e r s

    i n s t r u c t i o n

    m a n u a l , s i n c e

    m a n y c o m p i l e r s

    c o n s t a n t l y b e i n g u p g r a d e d ) . I n a d d i t i o n , y o u l l f i n d n u m b e r p r a c t i

    C f u n c t i o n s , m a t h e m a t i c a l p r e c e d e n c e , r e s e r v e d C k e y w o r d s ,

    m e m o r y c l a s s e s a n d t y p e c o n v e r s i o n s .

    T h i s c h a p t e r d e s c r i b e s g e n e r a l n a t u r e

    C . Y o u l l s e e

    a d v a n t a g e s

    d i s a d v a n t a g e s

    c o m p a r e d

    i n t e r p r e t e d

    l a n g u a g e s , w e l l a d v a n

    t a g e s

    d i s a d v a n t a g e s c o m p a r e d

    o t h e r c o m p i l e d l a n g u a g e s .

    Y o u l l

    a l s o w h y

    s t a n d s a b o v e m a n y o t h e r

    c o m p u t e r l a n g u a g e s .

  • 7/25/2019 Amiga C for Beginners

    12/308

    I n t r o d u c t i o n C m i g a C B e g i n n e r s

    1 1 P r o g r a m E x e c u t i o n

    B e f o r e s t a r t i n g w e n e e d

    q u e s t i o n :

    W h a t

    C ?

    T h e r e t w o

    k i n d s

    c o m p u t e r l a n g u a g e s .

    F i r s t ,

    t h e r e a r e i n t e r p r e t e d

    l a n g u a g e s s u c h B A S I C a n d L O G O S e c o n d , t h e r e a r e c o m p i l e d

    l a n g u a g e s s u c h P a s c a l o r M o d u l a 2 . S e c t i o n

    c o n t a i n s d e t a i l e d

    i n f o r m a t i o n a b o u t

    a d v a n t a g e s d i s a d v a n t a g e s

    i n t e r p r e t e r s a n d

    c o m p i l e r s .

    C o m p i l e r s

    C o m p i l e r s p r o g r a m s

    w h i c h

    t r a n s l a t e l a n g u a g e s t a t e m e n t s

    i n t o

    f o r m

    u n d e r s t a n d a b l e c o m p u t e r . T h i s

    f o r m

    c o n s i s t s

    n u m b e r s 0 a n d n u m b e r s u s e d i n t h e b i n a r y s y s t e m ) . S i n c e p e o p l e

    c a n t r e m e m b e r

    l o n g s t r i n g s z e r o s o n e s , t h e c o m p u t e r t o l d

    i n t e r p r e t

    w o r d s a n d o t h e r n u m b e r

    s y s t e m s b i n a r y

    n u m b e r s .

    F o r

    e x a m p l e , a

    t y p i c a l

    m a c h i n e

    l a n g u a g e i n s t r u c t i o n

    L D m e a n s L o a d

    A c c u m u l a t o r ,

    w h i c h

    e a s i e r

    r e m e m b e r

    t h a n b i n a r y n u m b e r

    1 0 0 1 1 1 0 1 .

    T h e c o m p u t e r m u s t c o n t a i n a c e n t r a l p r o c e s s i n g u n i t C P U )

    r e s p o n d

    m a c h i n e l a n g u a g e i n s t r u c t i o n a v a i l a b l e r e s p o n s e e v e r y

    k e y w o r d .

    P r o g r a m m i n g w i t h b i n a r y

    n u m b e r s

    c a l l e d m a c h i n e

    l a n g u a g e

    p r o g r a m m i n g .

    U s i n g m a c h i n e

    l a n g u a g e m n e m o n i c s

    i n s t r u c t i o n s c a l l e d

    a s s e m b l y

    l a n g u a g e . T h e i n s t r u c t i o n w h i c h

    e x e c u t e s o n o n e c o m p u t e r m a y e v e n e x i s t o n a n o t h e r c o m p u t e r .

    w o u l d e a s i e r f o r t h e p r o g r a m m e r c o m p u t e r c o u l d t o l d i n

    p l a i n E n g l i s h

    w h a t N e e d l e s s t o s a y , c o m p u t e r l a n g u a g e s h a v e n t

    r e a c h e d

    l e v e l

    D W I M D o

    W h a t

    M e a n )

    i n t e r f a c e

    T h i s t y p e

    l a n g u a g e m a y e x i s t f e w

    y e a r s

    f r o m

    n o w , w h e n

    t e c h n o l o g y p r o d u c e s

    m o r e h e l p f u l d e v e l o p m e n t s

    u s i n g

    a r t i f i c i a l i n t e l l i g e n c e .

    H i g h l e v e l l a n g u a g e s

    c o m p r o m i s e

    b e t w e e n m a c h i n e

    l a n g u a g e

    h u m a n l a n g u a g e . T h e s e l a n g u a g e s c o n t a i n l i m i t e d n u m b e r

    s t a t e m e n t s

    k e y w o r d s w h i c h

    t u r n

    e x e c u t e

    s p e c i f i c

    t a s k s

    U n l i k e

    a s s e m b l y l a n g u a g e , m a n y

    t h e s e

    l a n g u a g e s a r e n t t a i l o r e d t o s p e c i f i c

    c o m p u t e r . T h e c o m p u t e r m u s t e x e c u t e s e v e r a l h u n d r e d m a c h i n e

    i n s t r u c t i o n s f o r

    e v e r y s i n g l e s t a t e m e n t h i g h l e v e l l a n g u a g e . A n

    e x a m p l e w o u l d B A S I C c o m m a n d L O A D F i l e n a m e , w h i c h

    t e l l s c o m p u t e r

    l o a d a

    f i l e

  • 7/25/2019 Amiga C for Beginners

    13/308

    A b a c u s

    2 C o m p i l e r I n t e r p r e t e r

    1 2

    C o m p i l e r v s .

    I n t e r p r e t e r

    A n

    i n t e r p r e t e r

    A s

    p r e v i o u s l y

    m e n t i o n e d , t w o t y p e s o f h i g h e r l e v e l l a n g u a g e s e x i s t :

    I n t e r p r e t e d c o m p i l e d . A n i n t e r p r e t e r

    s e a r c h e s

    k e y w o r d s

    p r o g r a m t e x t o r s o u r c e , v e r i f i e s

    t h a t c o m m a n d l e g a l

    o n e a n d

    e x e c u t e s e q u i v a l e n t m a c h i n e

    l a n g u a g e

    i n s t r u c t i o n s . T h e n

    i n t e r p r e t e r s e a r c h e s

    n e x t

    c o m m a n d

    t e s t s

    e x e c u t e s

    m a c h i n e i n s t r u c t i o n , e t c .

    T h i s t r a n s l a t i o n p r o c e s s p e r f o r m e d i n t e r p r e t e r b e c o m p a r e d

    w o r k h u m a n

    f o r e i g n

    l a n g u a g e

    i n t e r p r e t e r .

    A n i n t e r p r e t e r

    t r a n s l a t o r

    w h i c h

    t r a n s l a t e s

    w o r d s

    h i g h e r

    l e v e l

    l a n g u a g e

    i n t o

    m a c h i n e

    l e v e l i n s t r u c t i o n s n e e d e d .

    A

    c o m p i l e r

    A c o m p i l e r t r a n s l a t e s

    s o u r c e p r o g r a m

    o n c e

    i n t o

    e x e c u t a b l e f o r m .

    T h i s

    s i m i l a r

    s o m e o n e w h o

    t r a n s l a t e s

    f o r e i g n l a n g u a g e l i t e r a t u r e

    i n t o h i s / h e r

    o w n

    l a n g u a g e . T h i s t r a n s l a t o r t a k e s t h e t i m e t o s e l e c t

    p r o p e r

    c h o i c e w o r d s

    f o r t h e

    t e x t , u n l i k e

    i n t e r p r e t e r

    w h o

    m e d i a t e s

    a c o n v e r s a t i o n b e t w e e n

    t w o p e o p l e

    f r o m d i f f e r e n t l a n g u a g e b a c k

    g r o u n d s .

    T h e i n t e r p r e t e r e x e c u t e s p r o g r a m s i m m e d i a t e l y .

    i n t e r p r e t e r a l s o

    s t o p p e d u s e r

    c h e c k c e r t a i n

    v a l u e s

    s t o r e d c e r t a i n v a r i

    a b l e s . I n t e r p r e t e d p r o g r a m e x e c u t i o n u s u a l l y c o n t i n u e d w i t h o u t

    c a u s i n g

    p r o b l e m s . T h e m a i n a d v a n t a g e s o f i n t e r p r e t e d l a n g u a g e s

    f l e x i b i l i t y a n d s p o n t a n e i t y .

    T h e c o m p i l e r t r a n s l a t e s p r o g r a m s o u r c e o n l y o n c e . T h e c o m p i l e r

    m a y s p e n d

    m i n u t e s c o m p i l i n g

    p r o g r a m b e f o r e

    e x e c u t e d .

    A f t e r w a r d s ,

    c o m p i l e d

    p r o g r a m e x e c u t e s

    m u c h f a s t e r t h a n

    i n t e r p r e t e d

    p r o g r a m , s i n c e t h e

    c o m p i l e r d o e s n t

    h a v e

    r e - t r a n s l a t e

    s o u r c e p r o g r a m .

    T h i s

    a d v a n t a g e b e c o m e s

    m o s t

    e v i d e n t

    p r o g r a m

    l o o p s w h i c h c o m m a n d

    e x e c u t e d s e v e r a l

    t h o u s a n d t i m e s . T h e

    i n t e r p r e t e r

    t r a n s l a t e s c o m m a n d i n t o m a c h i n e l a n g u a g e , r e p e a t i n g

    t h i s

    p r o c e s s

    t h o u s a n d

    t i m e s .

    T h e

    c o m p i l e d

    p r o g r a m

    a l r e a d y

    k n o w s w h a t

    w i t h o u t

    r e p e a t i n g

    t r a n s l a t i o n .

    T h e a d v a n t a g e s

    c o m p i l e d l a n g u a g e s s h o r t e r e x e c u t i o n

    t i m e s

    c o m p i l e d

    p r o g r a m s

    I n t e r p r e t e r s ,

    b e c a u s e

    o f e a s y a c c e s s

    t h e i r

    p r o g r a m s ,

    p r o g r a m

    m e r e n t e r c o r r e c t i o n s m o d i f i c a t i o n s f l y . T h e y a l s o

    p r o g r a m m e r e n t e r

    e x e c u t e

    p r o g r a m c o d e u n t i l

    e r r o r

    o c c u r s .

    T h i s

    r u n - u n t i l - i t - b r e a k s - t h e n - f i x - i t

    a t t i t u d e

    c a u s e s

    l a z y , u n s t r u c t u r e d p r o -

    g r a m m i n g s t y l e .

  • 7/25/2019 Amiga C for Beginners

    14/308

  • 7/25/2019 Amiga C for Beginners

    15/308

    B e g i n n i n g

  • 7/25/2019 Amiga C for Beginners

    16/308

  • 7/25/2019 Amiga C for Beginners

    17/308

  • 7/25/2019 Amiga C for Beginners

    18/308

    B e g i n n i n g

    C A m i g a

    C f o r B e g i n n e r s

    2 . 1 T h e

    E d i t o r

    Y o u n e e d s o m e

    s o r t t e x t e d i t o r

    e n t e r

    p r o g r a m

    f r o m

    k e y b o a r d . A n e d i t o r n o t h i n g

    m o r e

    t h a n s i m p l e w o r d

    p r o c e s s o r .

    u s u a l l y c o n t a i n s o n l y

    m i n i m a l

    t e x t p r o c e s s i n g c a p a b i l i t i e s .

    T h e

    p r o g r a m u s u a l l y

    o n l y

    a l l o w s

    y o u t y p e

    l o a d ,

    s a v e a n d e d i t t e x t

    s o u r c e

    c o d e : N o t h i n g

    f a n c y l i k e b l o c k f u n c t i o n s o r s a v e

    r e p l a c e

    c a p a b i l i t i e s .

    M o s t w o r d p r o c e s s o r p r o g r a m s b e u s e d t y p i n g t e x t

    p r o g r a m . y o u w o r d p r o c e s s o r , y o u m a y e n t e r s p e c i a l

    c o n t r o l c h a r a c t e r s

    ( e . g . ,

    b o l d

    f o n t s

    t e x t

    f o r m a t t i n g

    b e c a u s e

    C

    c o m p i l e r w o u l d r e c o g n i z e

    t h e m . M a n y

    w o r d

    p r o c e s s o r s p r o v i d e

    o p t i o n

    l e t t i n g y o u

    s a v e f i l e

    A S C I I

    f i l e .

    w o r d p r o c e s s o r e d i t o r ,

    m u s t

    a l l o w e n t e r

    s p e c i a l

    c o n t r o l

    c h a r a c t e r s n e e d e d

    C

    s o u r c e c o d e s .

    C p r o g r a m s

    b r a c e s

    ( { } ) , b r a c k e t s

    ( D ) , b a c k s l a s h n u m b e r s i g n p i p e

    c h a r a c t e r t i l d e c h a r a c t e r ( ~ ) .

    M a y b e c a n t a f f o r d w o r d p r o c e s s o r ,

    m a y b e y o u r

    w o r d p r o c e s s o r

    d o e s n t

    h a v e n e c e s s a r y c h a r a c t e r s . T h e W o r k b e n c h d i s k

    w h i c h c o m e s

    w i t h y o u r A m i g a c o n t a i n s e d i t o r n a m e d E D b a s i c t e x t

    e d i t o r ,

    w h i c h

    f i n d

    W o r k b e n c h

    d i s k

    A m i g a

    f r o m

    C L i

    I n v o k e e d i t o r

    e n t e r i n g t h e

    C L i t y p i n g

    e d

    n a m e

    f i l e

    y o u w a n t

    l o a d / e d i t , p r e s s

    < R e t u r n >

    k e y .

    T h e e d i t o r l o a d e d a n d t h e n

    C

    p r o g r a m t y p e d T h i s

    t e x t ,

    c a l l e d C s o u r c e c o d e , s t o r e d o n d i s k u n d e r a f i l e n a m e . T h e c h a r a c

    t e r i s t i c t h a t s e t s

    t h i s

    a p a r t f r o m n o r m a l

    w o r d

    p r o c e s s i n g f i l e s a p p e a r s

    f i l e

    e x t e n s i o n : C s o u r c e c o d e s m u s t

    c o n t a i n f i l e

    e x t e n s i o n

    E x a m p l e s n a m e s

    s o r t c a r c h i v e c ;

    n o t e t h a t t h e s e

    n a m e s

    i n d i c a t e c o n t e n t s e a c h

    f i l e .

    m e a n i n g f u l

    n a m e s

    l i k e

    t h i s i n s t e a d c r y p t i c

    n a m e s l i k e

    t h i s . c .

    T h e

    e x t e n s i o n

    e s p e c i a l l y

    i m p o r t a n t , s i n c e

    s e v e r a l

    f i l e s w i t h

    s a m e n a m e

    d i f f e r e n t

    e x t e n s i o n s

    g e n e r a t e d b y C c o m p i l e r . A f t e r f i l e i s c r e a t e d

    s a v e d ,

    y o u

    t h e n

    c a l l C c o m p i l e r

    c o m p i l e

    C s o u r c e

    c o d e .

    1 0

  • 7/25/2019 Amiga C for Beginners

    19/308

    A b a c u s T h e o m p i l e r

    2 2 h e

    C o m p i l e r

    C a l l i n g c o m p i l e r

    l o a d s C

    c o m p i l e r i n t o

    m e m o r y T h e

    c o m p i l e r

    r e a d s

    s o u r c e

    c o d e b e g i n s

    c o n v e r t

    s o u r c e

    c o d e i n t o

    c o m p i l e d m a c h i n e l a n g u a g e . M o s t c o m p i l e r s r e a d s o u r c e c o d e t w i c e

    p a s s

    c o m p i l e r ) . D u r i n g f i r s t p a s s , e n c o u n t e r s i n v a l i d

    e x p r e s s i o n k e y w o r d s t o p s c o m p i l i n g

    a n d d i s p l a y s e r r o r

    m e s s a g e o n s c r e e n w r i t e s t h e e r r o r d i s k m e s s a g e f i l e

    W h e n e v e r

    e r r o r f o u n d , y o u m u s t r e l o a d

    e d i t o r

    a n d c o r r e c t t h e

    s o u r c e c o d e . O n c e y o u v e f i x e d e r r o r s y o u s a v e s o u r c e c o d e f i l e

    e x i t e d i t o r

    a n d

    r e s t a r t

    c o m p i l e r .

    c o m p i l e r

    f i n d s

    e r r o r s

    a g a i n , y o u m u s t r e p e a t a b o v e p r o c e d u r e s .

    B e f o r e

    g o i n g f a r t h e r

    y o u s h o u l d

    r e a l i z e

    o n e t h i n g .

    W r i t i n g

    s o u r c e c o d e r e q u i r e s p r o p e r p r e p a r a t i o n . y o u j u s t e n t e r s o u r c e c o d e

    w i t h o u t

    g i v i n g a n y t h o u g h t

    w h a t y o u r e t y p i n g y o u l l s p e n d

    m o r e t i m e l e a r n i n g a b o u t e r r o r m e s s a g e s e d i t o r t h a n w i l l

    s p e n d l e a r n i n g a b o u t

    l a n g u a g e . I n t h e b e g i n n i n g , p r e p a r e

    p l e n t y

    e r r o r s a n d b e

    p a t i e n t w i t h y o u r s e l f

    y o u g o

    f r o m

    c o m p i l e r

    e d i t o r c o m p i l e r .

    W h e n y o u v e c o r r e c t e d t h e e r r o r s s o u r c e

    c o d e , c o m p i l e r

    f i n i s h f i r s t p a s s w i t h o u t s t o p p i n g a n d p e r f o r m s s e c o n d p a s s .

    T h i s s e c o n d p a s s d o e s f i n a l t r a n s f o r m a t i o n i n t o o b j e c t c o m p i l e d )

    c o d e .

    T h e

    c o m p i l e r s a v e s

    t h e o b j e c t

    c o d e d i s k

    u n d e r

    s a m e

    n a m e

    a s t h e

    s o u r c e

    c o d e , w i t h e x t e n s i o n

    e x a m p l e , s o u r c e

    c o d e

    n a m e d

    s o u r c e c g e n e r a t e s o b j e c t c o d e f i l e

    n a m e d s o u r c e o

    T h e

    o b j e c t

    f i l e

    n e e d s

    m o r e

    s t e p

    b e f o r e

    b e c o m e

    e x e c u t a b l e

    p r o g r a m c o d e t h i s l i n k e r .

    1 1

  • 7/25/2019 Amiga C for Beginners

    20/308

    B e g i n n i n g

    C

    A m i g a

    C

    f o r B e g i n n e r s

    2 . 3 T h e L i n k e r

    W e r e d o n e

    q u i t e

    T h e o b j e c t f i l e

    m u s t s t i l l

    r u n t h r o u g h

    l i n k e r .

    T h e l i n k e r s e a r c h e s

    f u n c t i o n s

    u s e d

    b y

    p r o g r a m f r o m

    l i b r a r i e s , a n d

    l i n k s n e c e s s a r y f u n c t i o n s

    i n t o p r o g r a m .

    F u n c t i o n s

    f u n c t i o n

    s u b r o u t i n e s i m i l a r a p r o c e d u r e P a s c a l .

    F u n c t i o n s

    c a p a b l e s o l v i n g s m a l l t a s k s

    s u c h d r a w i n g l i n e

    d i s p l a y i n g

    c h a r a c t e r o n s c r e e n . T h e l i b r a r i e s c o n t a i n e d m o s t C c o m p i l e r

    p a c k a g e s

    i n c l u d e f r e q u e n t l y u s e d f u n c t i o n s s t o r e d o b j e c t c o m p i l e d )

    f o r m . T h e s e f u n c t i o n s

    c o u l d

    i n p u t / o u t p u t

    f u n c t i o n s ,

    g r a p h i c

    t i n e s ,

    s o u n d

    r o u t i n e s

    e v e n

    t r i g o n o m e t r i c

    f u n c t i o n s .

    T h e l i n k e r i d e n t i f i e s f u n c t i o n s

    r e q u i r e d

    a c o m p l e t e p r o g r a m

    a n d

    a d d s t h e m m a i n p r o g r a m . T h i s s a v e s p r o g r a m m e r o f w o r k .

    T h e f u n c t i o n s s i m p l y r e q u i r e p a s s i n g

    v a l u e s

    i n s t e a d

    r e t y p i n g

    s o u r c e

    c o d e

    e a c h f u n c t i o n f r o m

    s c r a t c h .

    T h e

    l i n k e r

    p e r m i t s

    d e v e l o p m e n t l a r g e p r o g r a m s

    m o d u l a r

    f o r m . T h i s

    m n s

    t h a t s e v e r a l

    p a r t s

    o f t e n a r e

    d e v e l o p e d

    s e p a r a t e l y . T h e u s e r c a n c o m p i l e t e s t

    e v e r y

    m o d u l e s e p a r a t e l y .

    T h i s

    a d v a n t a g e

    t h a t

    c o m p l e t e

    p r o g r a m d o e s n t h a v e

    l o a d e d r e c o m p i l e d e v e r y t i m e c o m p i l e r

    d e t e c t s

    e r r o r .

    T h e

    l i n k e r e v e n t u a l l y l i n k s c o m p i l e d m o d u l e s i n t o c o m p l e t e ,

    e x e c u t a b l e

    p r o g r a m .

    T h e l i n k e r

    c a n n o t h a n d l e n o n - c o m p i l e d s o u r c e c o d e .

    o n l y l i n k

    c o m p i l e d f u n c t i o n s t o g e t h e r . S o u r c e c o d e s l o a d o t h e r s o u r c e c o d e s

    d u r i n g c o m p i l a t i o n ,

    w e l l

    m o r e o n t h i s l a t e r .

  • 7/25/2019 Amiga C for Beginners

    21/308

    A b a c u s

    P u t t i n g t o g e t h e r

    4 P u t t i n g I t

    A l l

    T o g e t h e r

    T h e C L I T h e A m i g a s C L I C o m m a n d L i n e I n t e r f a c e ) u s e d s p e c i f y t h e

    p a r a m e t e r s

    e d i t o r ,

    C c o m p i l e r C

    l i n k e r . e x a m p l e ,

    e n t e r i n g

    t h e f o l l o w i n g l i n e i n

    C L I c a l l s

    L a t t i c e

    C l i n k e r :

    A L I N K

    f i l e l o f i l e o

    T O

    c o m p l e t e

    Y o u a l r e a d y k n o w t h a t p r o g r a m m a y h a v e b e c o m p i l e d s e v e r a l

    t i m e s

    b e f o r e f r e e

    e r r o r s

    s y n t a x e r r o r s ,

    l o g i c a l

    e r r o r s .

    Y o u

    m u s t e n t e r t h e

    a b o v e l i n e e x a c t l y

    w r i t t e n .

    E n t e r i n g l i n e

    i n c o r r e c t l y

    c a u s e

    e r r o r s i n

    i t s e l f .

    T h e

    d e v e l o p e r s

    m o s t

    C

    c o m p i l e r s t o o k

    t h i s

    i n t o

    c o n s i d e r a t i o n , a n d

    a d d e d

    s p e c i a l f e a t u r e

    a l l o w e a s y

    l i n k e r

    a c c e s s

    f r o m

    t e x t f i l e s .

    T h e M A K E

    f i l e

    T h e i n p u t s r e q u i r e d

    c o m p i l e a n d

    l i n k C

    s o u r c e

    c o d e

    b e

    w r i t t e n

    f i l e c a l l e d a m a k e f i l e . T h i s m a k e f i l e c a l l s n e c e s s a r y

    p r o g r a m s s u c h a s t h e c o m p i l e r l i n k e r . T h e C s y s t e m r e a d s f i l e

    j u s t

    u s e r h a d

    i n p u t

    t e x t d i r e c t

    r o

    k e y b o a r d .

    e a s y

    c r e a t e

    m a k e f i l e .

    I n s t e a d

    e x e c u t i n g , t h e C c o m p i l e r

    c a l l s d i r e c t l y . Y o u i n v o k e t h e e d i t o r w r i t e c a l l s s c r i p t f i l e .

    O n c e y o u s a v e t h i s f i l e t o d i s k , y o u n o w h a v e a M A K E f i l e .

    A m i g a D O S E x e c u t e c o m m a n d r e a d s

    t h i s f i l e

    a n d p a s s e s i n f o r m a

    t i o n t o

    C

    c o m p i l e r s e c t i o n s n e e d e d

    m a k e f i n a l e x e c u t a b l e

    p r o g r a m .

    A p p e n d i x C o n e e x a m p l e m a k e f i l e

    c o n t e n t s .

    1 3

  • 7/25/2019 Amiga C for Beginners

    22/308

  • 7/25/2019 Amiga C for Beginners

    23/308

    h e F i r s t r o g r a m

  • 7/25/2019 Amiga C for Beginners

    24/308

  • 7/25/2019 Amiga C for Beginners

    25/308

    A b a c u s T h e

    F i r s t

    P r o g r a m

    3

    T h e F i r s t P r o g r a m

    T h e

    f o l l o w i n g c o d e f i r s t C

    l a n g u a g e p r o g r a m . D o n t e n t e r

    y e t y o u l l t y p e f e w m i n u t e s

    s t a r t i n g

    S e c t i o n 3 . 1 .

    H e r e s

    s o u r c e c o d e y o u w h a t l o o k s l i k e :

    # i n c l u d e < s t d i o . h >

    v o i d m a i n )

    p r i n t f ( H e l l o ,

    h e r e ) ;

    T o

    w h a t p r o g r a m

    p r o d u c e s

    t e x t

    m u s t

    b e

    e n t e r e d u s i n g

    a n

    e d i t o r .

    W h e n y o u

    e d i t o r

    p l e a s e e n t e r t h e t e x t e x a c t l y

    p r i n t e d h e r e a n d S e c t i o n 3 . 1 . T h i s a v o i d s

    e r r o r

    m e s s a g e s

    w h i c h

    w i l l

    c a u s e p r o b l e m s . O n c e y o u v e b e c o m e

    m o r e

    c o m f o r t a b l e w o r k i n g

    y o u

    c a n

    c h a n g e

    p r o g r a m s a r o u n d t o s u i t y o u r o w n n e e d s . B u t d o n t

    c h a n g e a n y t h i n g u n t i l a f t e r p r o g r a m c o m p i l e s a n d l i n k s e x a c t l y a s

    h e r e .

    A s t e p b y s t e p p r o c e d u r e f o l l o w s .

    y o u r e

    o n W o r k b e n c h , y o u

    m u s t s t r t C L I b e f o r e a n y t h i n g e l s e

    T h e C L I

    b e f o u n d

    S y s t e m d r a w e r

    l o c a t e d

    o n W o r k b e n c h d i s k .

    W o r k b e n c h

    u s e r s

    s h e l l

    p r o g r a m

    w h i c h e n h a n c e d v e r s i o n C L I .

    W o r k b e n c h u s e r s

    w h o

    c a n t f i n d C L I m a y

    h a v e s w i t c h e d

    w i t h

    s e t t i n g s P r e f e r e n c e s

    1 . 2 . U s i n g

    P r e f e r e n c e s 1 . 2 y o u m u s t

    c l i c k o n O N g a d g e t n e x t

    w o r d C L I .

    O n c e y o u c l o s e

    a n d

    r e o p e n W o r k b e n c h

    d i s k

    i c o n C L I i c o n s h o u l d a p p e a r

    w i n d o w .

    A f t e r y o u

    i n v o k e C L I s h e l l n e w w i n d o w a p p e a r s .

    T h i s

    w i n d o w p r o m p t s i n p u t w i t h m e s s a g e :

    a s u p e r c o m p u t e r

    s u c h

    a s t h e

    A m i g a t h i s

    p r o g r a m s o m e t h i n g

    u n u s u a l . N o

    i c o n s

    a p p e a r m o u s e

    o n l y

    u s e d

    m o v e

    s i z e

    w i n d o w C L I o n l y a c c e p t s

    i n p u t

    f r o m k e y b o a r d .

    m o u s e

    e n l a r g e C L I

    w i n d o w

    m a x i m u m s i z e E v e r y t h i n g

    o c c u r s f r o m n o w w i l l

    d i s p l a y e d

    C L I

    w i n d o w . N o w

    m o u s e a s i d e y o u w o n t b e n e e d i n g w h i l e .

    1 7

  • 7/25/2019 Amiga C for Beginners

    26/308

  • 7/25/2019 Amiga C for Beginners

    27/308

    A b a c u s

    C o m p i l i n g

    3 . 2

    C o m p i l i n g

    L a t t i c e

    A z t e c C

    S t a r t L a t t i c e c o m p i l e r w i t h t h e f o l l o w i n g :

    l c L h e l l o

    F o r L a t t i c e C 4 . 0 , f o l l o w i n g s h o u l d n o w a p p e a r

    o n

    s c r e e n . Y o u r

    s c r e e n

    m a y

    d i f f e r s l i g h t l y

    y o u e r r o r

    m e s s a g e s ,

    s e e S e c t i o n

    1 > l c L h e l l o

    L a t t i c e A m i g a D O S C C o m p i l e r V e r s i o n

    C o p y r i g h t 1 9 8 7 S A S I n s t i t u t e

    I n c .

    r i g h t s r e s e r v e d

    C o m p i l i n g

    h e l l o . c

    M o d u l e s i z e P = 0 0 0 0 0 0 1 4 D = 0 0 0 0 0 0 1 2 U = 0 0 0 0 0 0 0 0

    T o t a l

    f i l e s : C o m p i l e d

    L i n k i n g h e l l o

    B L i n k V e r s i o n 7 . 2

    C o p y r i g h t 1 9 8 6 T h e S o f t w a r e D i s t i l l e r y .

    C o p y r i g h t

    1 9 8 7 S A S

    I n s t i t u t e

    I n c .

    r i g h t s r e s e r v e d

    B o x 8 0 0 0 S A S C i r c l e , C a r y 2 7 5 1 1 - 8 0 0 0 T e l e x 8 0 2 5 0 5 9 1 9 ) 4 6 7 - 8 0 0 0

    B l i n k

    c o m p l e t e

    M a x i m u m c o d e s i z e 5 4 8 8 0 0 0 0 1 5 7 0 ) b y t e s

    F i n a l o u t p u t f i l e s i z e = 5 3 1 2 0 0 0 0 1 4 c 0 ) b y t e s

    T o

    c o m p i l e

    p r o g r a m u s i n g z t e C c o m p i l e r r e q u i r e s t w o s t e p s .

    T h e A z t e c s y s t e m f i r s t

    c o m p i l e s s o u r c e c o d e

    t h e n

    a s s e m b l e s

    a n d

    l i n k s A

    m a k e f i l e b e q u i t e

    u s e f u l .

    E n t e r

    f o l l o w i n g

    A z t e c C c o m p i l e r :

    l > c c L h e l l o

    T h e a b o v e s e q u e n c e m a y f u n c t i o n

    s o m e

    c a s e s . n o t , e n t e r

    s a m e

    l i n e o m i t + L . z t e C

    s h o u l d

    d i s p l a y f o l l o w i n g o n

    s c r e e n .

    Y o u r s c r e e n m a y d i f f e r s l i g h t l y . I f y o u e r r o r m e s s a g e s ,

    s e e S e c t i o n 3 . 3 .

    1 > c c + L h e l l o

    A z t e c C 6 8 K 3 . 6 a

    1 2 - 1 8 - 8 7

    1 9 8 2 - 1 9 8 7 b y

    M a n x S o f t w a r e

    S y s t e m s , I n c .

    A z t e c 6 8 0 0 0 A s s e m b l e r 3 . 6 a

    1 2 - 1 8 - 8 7

    N o w e n t e r

    l > l n h e l l o . o

    l m

    l c

    1 9

  • 7/25/2019 Amiga C for Beginners

    28/308

    T h e F i r s t P r o g r a m A m i g a C f o r B e g i n n e r s

    A z t e c

    C

    s h o u l d d i s p l a y f o l l o w i n g

    o n

    s c r e e n .

    Y o u r

    s c r e e n m a y

    d i f f e r

    s l i g h t l y .

    l > l n

    h e l l o . o

    A z t e c C 6 8 K L i n k e r

    3 . 6 a 1 2 1 8 8 7

    B a s e :

    0 0 0 0 0 0

    C o d e :

    0 0 1 4 4 4

    D a t a :

    0 0 0 2 a 0 U d a t a : 0 0 0 0 5 0 T o t a l : 0 0 1 7 3 4

    S u c c e s s D i d e v e r y t h i n g w o r k e x p e c t e d ? y o u d i d n t g e t a n e r r o r

    t y p e

    d i r c o m m a n d C L I t h e c u r r e n t d i s k s d i r e c t o r y . T T i e

    c u t a b l e p r o g r a m

    s t o r e d t h e r e

    u n d e r

    n a m e h e l l o . N o t i c e t h a t t h i s

    f i l e n o e x t e n s i o n . T h e r e m a y a l s o b e o t h e r f i l e s w i t h e x t e n s i o n s

    . m a p . l n k a n d o f c o u r s e T h i s

    s h o w s

    t h a t e x t e n s i o n h e l p s

    i d e n t i f y t h e f i l e C a l l

    e x e c u t a b l e

    p r o g r a m b y e n t e r i n g t h e f o l l o w i n g

    l i n e

    h e l l o

    O n s c r e e n a p p e a r s t e x t

    H e l l o a m

    h e r e

    T h e p r o g r a m i s n t e a r t h - s h a t t e r i n g t h i s

    b e g i n n i n g .

    2 0

  • 7/25/2019 Amiga C for Beginners

    29/308

    A b a c u s

    3 3

    E r r o r

    M e s s a g e s

    3 3

    E r r o r M e s s a g e s

    L a t t i c e

    A z t e c

    T h e m o s t c o m m o n m i s t a k e

    a

    n e w C p r o g r a m m e r m a k e s o m i t t i n g

    s e m i c o l o n f o l l o w i n g t h e c l o s i n g p a r e n t h e s i s p r i n t f f u n c t i o n .

    T h i s s e m i c o l o n o n e

    m o s t

    w i d e l y u s e d c h a r a c t e r s

    C

    p r o g r a m s s i n c e

    i n d i c a t e s e n d

    s t a t e m e n t . F o r t h i s

    r e a s o n

    a l m o s t e v e r y C s t a t e m e n t f u n c t i o n e n d s w i t h a s e m i c o l o n . u s e r

    o m i t s c o m p i l e r r e p o r t s m a n y e r r o r m e s s a g e s . Y o u

    m i g h t

    l i k e

    e d i t h e l l o c f i l e a g a i n

    a n d r e m o v e

    s e m i c o l o n . S a v e f i l e

    c o m p i l i n g f i l e a g a i n .

    y o u

    f o r g o t

    t y p e

    s e m i c o l o n

    f o l l o w i n g

    p r i n t

    f

    f u n c t i o n ,

    t h e L a t t i c e C c o m p i l e r d i s p l a y s t h e f o l l o w i n g m e s s a g e :

    h e l l o c E r r o r s e m i c o l o n e x p e c t e d

    C o m p i l e r r e t u r n c o d e

    T h e A z t e c C c o m p i l e r d i s p l a y s t h e f o l l o w i n g

    m e s s a g e

    s e m i c o l o n

    m i s s i n g :

    h e l l o c : 5 E R R O R

    m i s s i n g

    s e m i c o l o n

    e r r o r s

    L e t s

    d e t e r m i n e

    f r o m

    t h i s

    c o m p i l e r

    m e s s a g e w h a t

    w r o n g

    w i t h

    f i l e . T h e f i r s t l i n e

    s t a t e s

    f i l e n a m e w h i c h t h e e r r o r a p p e a r e d :

    h e l l o c

    T h a t f i l e n a m e s p e c i f i c a t i o n

    u s e f u l l a t e r

    o n m o r e o n

    t h i s

    l a t e r . T h e n f o l l o w s l i n e n u m b e r e r r o r n u m b e r a n d e r r o r

    d e s c r i p t i o n

    E n g l i s h . T h i s i n d i c a t e s t h a t

    a s e m i c o l o n

    w a s e x p e c t e d

    l i n e

    T h e u s e r m u s t n o w r e l o a d e d i t o r t o c o r r e c t t h e e r r o r :

    E D H E L L O C

    Y o u m u s t

    i n c l u d e e x t e n s i o n

    t o e d i t

    C

    s o u r c e

    c o d e .

    T o r e a c h l i n e

    y o u c o u n t

    d o w n l i n e s f a s t e s t m e t h o d

    p r o g r a m t h i s

    s h o r t ) .

    Y o u a l s o

    p r e s s

    < E s c x M > < 5 x R e t u r n >

    t o l i n e T h e e d i t o r t h e n m o v e s c u r s o r l i n e i n d i c a t e d .

    L i n e 5 c o n s i s t s

    o n l y o f

    c l o s i n g b r a c e t h i s

    e x p e c t e d

    s i n c e

    t h e e r r o r

    a c t u a l l y o c c u r r e d

    p r e v i o u s l i n e . T h e s e m i c o l o n

    p r e v i o u s l i n e m i s s i n g . T h e e r r o r m e s s a g e s o f

    C

    c o m p i l e r s h o u l d

    n e v e r

    b e

    t a k e n l i t e r a l l y , s i n c e t h e s e a r c h

    f o r t h e e r r o r m a y

    h a v e

    t a k e s u r r o u n d i n g c o d e l i n e s i n t o c o n s i d e r a t i o n .

    2 1

  • 7/25/2019 Amiga C for Beginners

    30/308

    T h e

    F i r s t P r o g r a m m i g a

    f o r B e g i n n e r s

    A f t e r p l a c i n g s e m i c o l o n w h e r e b e l o n g s f o l l o w i n g

    p r i n t f

    f u n c t i o n ,

    s a v e

    f i l a g a i n

    a n d

    t r y t o

    c o m p i l e

    s o u r c e c o d e

    a g a i n .

    s h o u l d w o r k

  • 7/25/2019 Amiga C for Beginners

    31/308

    T h e o r y a n d

    P r a c t i c e

  • 7/25/2019 Amiga C for Beginners

    32/308

  • 7/25/2019 Amiga C for Beginners

    33/308

  • 7/25/2019 Amiga C for Beginners

    34/308

    T h e o r y a n d P r a c t i c e A m i g a C f o r B e g i n n e r s

    N o o t h e r s t a t e m e n t s f o l l o w l i n e a f t e r p r i n t f T h i s m e a n s t h a t

    m a i n

    f u n c t i o n

    a l s o r e a c h e d e n d p r o g r a m e n d s T h e

    c o m p u t e r

    r e t u r n s t o

    C L I

    a d d i t i o n a l

    c o m m a n d s e n t e r e d

    T h e

    p r o g r a m

    t h e r e t u r n C L I

    r e p r e s e n t t e r m i n a

    t i o n m a i n

    f u n c t i o n T h e

    u s e r s h o u l d

    n o t e

    h o w

    i m p o r t a n t t h i s

    f u n c t i o n r e p r e s e n t s t h e C p r o g r a m

    i t s e l f ;

    p r o g r a m e x e c u t i o n s t a r t s

    a n d

    e n d s w i t h

    m a i n

    f u n c t i o n

  • 7/25/2019 Amiga C for Beginners

    35/308

    A b a c u s P r o g r a m F o r m a t

    4

    . 1

    P r o g r a m F o r m a t

    L e t s d i s c u s s t h e

    f o r m a t p r o g r a m .

    T h e C

    c o m p i l e r

    i g n o r e s

    s p a c e s , l i n e f e e d s a n d e n d o f p a r a g r a p h m a r k s a d d e d l i s t i n g b y

    u s e r . I n d e n t i n g l i n e s

    a d d i n g

    b l a n k l i n e s h e l p s

    m a k e s o u r c e c o d e s

    m o r e r e a d a b l e

    u s e r .

    F o r m a t t i n g h a s n o e f f e c t o n e x e c u t i o n

    s p e e d t h e l e n g t h f i n a l p r o g r a m . T h e p r o g r a m e n t e r e d

    C h a p t e r c o u l d

    h a v e b e e n f o l l o w i n g f o r m a t s :

    v o i d

    m a i n

    p r i n t f ( H e l l o ,

    a m h e r e ) ;

    v o i d m a i n

    p r i n t f ( H e l l o , a m h e r e ) /

    v o i d

    m a i n

    ( ) { p r i n t f ( H e l l o ,

    h e r e ) ; }

    u s e r

    s e l e c t

    v e r s i o n w h i c h a p p e a r s

    m o s t

    r e a d a b l e . O n c e y o u v e s e l e c t e d s t y l e , s t i c k w i t h H o w e v e r , l a s t

    v e r s i o n a b o v e i l l u s t r a t e s h o w e v e n s m a l l

    p r o g r a m

    m a d e

    u n r e a d a b l e b y f o r m a t t i n g

    N o t e : A l l s t a t e m e n t s f u n c t i o n s m u s t e n t e r e d l o w e r c a s e

    s i n c e

    C

    c a s e - s e n s i t i v e d i f f e r e n t i a t e s b e t w e e n u p p e r l o w e r c a s e l e t t e r s ) .

    e n t e r e d P r i n t f p r i n t f i n s t e a d p r i n t f , l i n k e r

    r e p o r t s

    e r r o r s i n c e

    c a n n o t

    f i n d t h i s f u n c t i o n a n y w h e r e .

    2 7

  • 7/25/2019 Amiga C for Beginners

    36/308

  • 7/25/2019 Amiga C for Beginners

    37/308

    A b a c u s 4 3 p r i n t f a n d E s c a p e S e q u e n c e s

    4 . 3

    p r i n t f a n d E s c a p e

    S e q u e n c e s

    T h e t e x t a t S e c t i o n 4 . 2 a p p e a r s t h e s c r e e n a s a p p e a r s

    s o u r c e c o d e ,

    w i t h t h r e e

    e x c e p t i o n s . T h e

    t h r e e \ n

    c h a r a c t e r s

    d o

    a p p e a r . T h e

    \ n

    c h a r a c t e r

    c a l l e d t h e

    n e w l i n e c h a r a c t e r ,

    m a n y

    e s c a p e

    s e q u e n c e s

    u s e d f o r c o n t r o l l i n g f o r m a t o f t e x t T h e \ n

    c h a r a c t e r

    t e l l s

    c o m p i l e r t o i n s e r t l i n e f e e d t h a t p l a c e t e x t

    j u s t y o u p r e s s e d < R e t u r n > k e y .

    A n y e s c a p e s e q u e n c e r e c o g n i z e d b y

    b a c k s l a s h

    p r e c e d i n g

    T h e c h a r a c t e r f o l l o w i n g

    i n d i c a t e s w h i c h

    e s c a p e s e q u e n c e

    s h o u l d

    e x e c u t e d .

    F o r e x a m p l e ,

    n

    s i g n i f i e s

    a

    l i n e f e e d :

    T h e

    c o m p u t e r

    s t a r t s

    t e x t

    a f t e r \ n

    b e g i n n i n g

    n e x t l i n e

    T h i s n e w l i n e ( \ n ) e s c a p e

    s e q u e n c e i m p o r t a n t , s i n c e

    p r i n t f

    f u n c t i o n d o e s n t a u t o m a t i c a l l y l i n e f e e d s a f t e r d i s p l a y s

    t e x t Y o u l l

    r e m e m b e r

    t h a t

    w h e n y o u

    p r o g r a m C h a p t e r p r o m p t

    a p p e a r e d r i g h t a f t e r t e x t B a s i c a l l y C w r i t e s c h a r a c t e r s s e q u e n t i a l

    o n t h e s c r e e n , e v e n t h e y a r e w r i t t e n w i t h d i f f e r e n t f u n c t i o n c a l l s

    T h e

    u s e r

    m u s t p r o g r a m

    f u n c t i o n

    a d v a n c e

    l i n e

    T h e u s e r o b l i g a t e d p l a c e e s c a p e

    s e q u e n c e s

    c h a r a c t e r s t r i n g T h e y b e p l a c e d b e t w e e n o t h e r n o r m a l

    c h a r a c t e r s

    e v e n

    b e g i n n i n g o f

    t e x t

    d e s i r e d ,

    t h r e e

    l i n e s

    w r i t t e n w i t h i n o n e p r i n t f

    f u n c t i o n :

    p r i n t f ( H e l l o , h a v e q u e s t i o n \ n D o b e l i e v e l i f e

    w i t h o u t

    e l e c t r i c i t y ? \ n N o t m e \ n ) ;

    T h i s l i n e

    r a t h e r

    d i f f i c u l t r e a d . y o u c o n s i s t e n t l y

    p l a c e n e w l i n e

    ( \ n )

    c h a r a c t e r e n d s s t r i n g s , p r o g r a m s w i l l b e m u c h e a s i e r

    r e a d .

    T h e

    n e w l i n e c h a r a c t e r o n l y m e t h o d

    f o r m a t t i n g

    t e x t . T h e

    p r i n t f

    c o m p a r a b l e P R I N T c o m m a n d B A S I C

    w r i t e

    s t a t e m e n t

    P a s c a l .

    T h e

    f

    p r i n t f

    i n d i c a t e s t h a t t e x t

    b e o u t p u t s p e c i f i e d f o r m a t T h i s f u n c t i o n c a n p r o c e s s

    a n d

    p l a y c h a r a c t e r

    s t r i n g s o t h e r v a l u e s s p e c i f i e d

    b y

    p r o g r a m m e r .

    S i n c e t h e s e c a p a b i l i t i e s q u i t e e x t e n s i v e , w e l l i n t r o d u c e t h e m

    r e a d e r a s n e e d e d .

    2 9

  • 7/25/2019 Amiga C for Beginners

    38/308

    T h e o r y a n d P r a c t i c e A m i g a C f o r B e g i n n e r s

    4 . 4

    C o m m e n t s

    T h e

    C l a n g u a g e l e t s p r o g r a m m e r i n s e r t

    c o m m e n t s

    s o u r c e

    c o d e . T h i s u s e d

    t e l l r e a d e r w h a t

    s o u r c e

    c o d e

    s u p p o s e d

    C o m m e n t s h a v e n o e f f e c t o n s p e e d s i z e

    c o m p i l e d p r o g r a m .

    C o m m e n t s

    s t a r t w i t h / * c h a r a c t e r s a n d e n d w i t h

    c h a r a c t e r s . T h e c o m p i l e r s k i p s o v e r e v e r y t h i n g b e t w e e n

    c o m m e n t d e l i m e t e r s . U s e c o m m e n t s

    l i b e r a l l y , s i n c e

    t h e y n e v e r a f f e c t

    f i n a l

    p r o g r a m a n d a d d

    r e a d a b i l i t y s o u r c e

    c o d e .

    v o i d

    m a i n O

    T h i s p r o g r a m o u t p u t s t e x t w h i c h s t a r t s

    p r i n t f ( C o m m e n t s d e s i r e d

    s t o p

    \ n

    h e r e A a n d e n d s

    o v e r

    t h e o p p o s i t e

    e n d *

    N o w , t h i n k

    y o u r f i r s t p r o g r a m f r o m C h a p t e r

    y o u

    a d d e d

    c o m

    n t s t e l l f u t u r e r e a d e r e x a c t l y w h a t t h i s p r o g r a m a n d w h e n ,

    r e s u l t c o u l d l o o k s o m e t h i n g l i k e

    t h i s :

    P r o g r a m f r o m C h a p t e r S c h a u n ' s b o o k

    A m i g a

    B e g i n n e r s

    f r o m A b a c u s 1 9 8 8

    T h i s p r o g r a m p r i n t s

    t h e w o r d s H e l l o ,

    h e r e

    t h e

    s c r e e n .

    N o t h i n g e l s e .

    # i n c l u d e

    < s t d i o . h > c a l l s t a n d a r d

    h e a d e r

    f i l e

    v o i d

    m a i n ( ) m a i n f u n c t i o n

    s t a r t

    f u n c t i o n

    p r i n t f ( H e l l o , a m h e r e ) / s h o w

    t e x t s c r e e n

    e n d f u n c t i o n

    T h i s

    a v e r y e x a g g e r a t e d e x a m p l e .

    d o e s n t

    m a t t e r y o u

    c o m m e n t

    p r o g r a m

    t h i s c l e a r l y ,

    t h o u g h t h e

    c o m m e n t s

    i g n o r e d

    b y c o m

    p i l e r .

    3 0

  • 7/25/2019 Amiga C for Beginners

    39/308

    A b a c u s

    V a r i a b l e s A r i t h m e t i c

    4 . 5

    V a r i a b l e s a n d

    A r i t h m e t i c

    s n f

    V a r i a b l e t y p e s

    O u r k n o w l e d g e

    C

    l a n g u a g e s t i l l r a t h e r s m a l l . R i g h t n o w y o u

    d i s p l a y t e x t o n s c r e e n a n d i n s e r t c o m m e n t s s o u r c e c o d e .

    w o u l d n i c e a b l e

    h a v e

    p r o g r a m a c c e p t

    i n p u t

    f r o m

    k e y b o a r d .

    T h e s c a n f

    f u n c t i o n o p p o s i t e

    p r i n t

    f

    f u n c t i o n i t r e a d s

    i n p u t

    i n s t e a d

    d i s p l a y i n g

    o u t p u t m o r a b o u t

    s c a n f l a t e r

    C o n s i d e r h o w p r o g r a m w o u l d e x e c u t e q u e s t i o n s a n d a n s w e r s . F i r s t

    p r i n t

    f u n c t i o n d i s p l a y s q u e s t i o n

    o n

    t h e s c r e e n .

    N e x t

    s c a n f

    f u n c t i o n

    r e a d s

    u s e r s

    i n p u t .

    e x a m p l e , p r e t e n d

    t h a t

    n u m b e r

    w i l l b e

    i n p u t a s r e s p o n s e . T h e

    f o l l o w i n g

    q u e s t i o n a s k s a n u m b e r

    A r e y o u

    w e l l ?

    = Y E S ,

    N u m b e r :

    T h e n u m b e r m u s t

    s t o r e d

    s o m e w h e r e . C p r o v i d e s

    s e r i e s v a r i a b l e

    t y p e s w h i c h b e

    u s e d .

    V a r i a b l e s

    a l l o w c e r t a i n t y p e s

    i n f o r m a t i o n

    b e

    s t o r e d

    c o m p u t e r .

    T h e

    v a r i a b l e

    t y p e d e p e n d s

    o n t y p e

    i n f o r m a t i o n y o u

    w a n t

    s t o r e d .

    T h e r e

    v a r i a b l e s f o r c h a r a c t e r s ; v a r i a b l e s f o r

    s t r i n g s ;

    v a r i a b l e s f o r

    d i f f e r e n t k i n d s s i z e s o f n u m b e r s ; v a r i a b l e s f o r c o m b i n a t i o n s o f

    n u m b e r s .

    4 . 5 . 1

    I n t e g e r s

    T h e i n t v a r i a b l e t y p e r e p r e s e n t s

    i n t e g e r

    w h o l e ) n u m b e r s . V a r i a b l e s

    t y p e i n t a c c e p t w h o l e n u m b e r s f r o m a p p r o x i m a t e l y ) - 3 2 , 7 6 8

    + 3 2 , 7 6 7 . T h e f o l l o w i n g p r o g r a m u s e s i n t e g e r v a r i a b l e s , a n d i n t r o d u c e s

    p r a c t i c a l

    a p p l i c a t i o n

    s c a n f f u n c t i o n :

    s c a n l . c s e c t i o n

    v o i d m a i n )

    i n t i n p u t ;

    p r i n t f A r e

    w e l l ? \ n ) ;

    p r i n t f D

    = Y E S ,

    N O \ n \ n ) ;

    3 1

  • 7/25/2019 Amiga C for Beginners

    40/308

    T h e o r y a n d P r a c t i c e A m i g a C

    B e g i n n e r s

    p r i n t f ( N u m b e r :

    s c a n f ( d ,

    & i n p u t ) ;

    p r i n t f ( \ n \ n Y o u r i n p u t

    w a s :

    d \ n , i n p u t ) ;

    T h e

    f i r s t

    l i n e

    m a i n

    f u n c t i o n , i n t

    i n p u t ; , t e l l s

    c o m p i l e r

    w h a t

    d o

    w i t h

    v a r i a b l e s . T h i s l i n e a s s i g n s n a m e v a r i a b l e .

    T h e p r o g r a m

    u s e s

    t h i s v a r i a b l e n a m e a c c e s s v a r i a b l e ' s

    c o n t e n t s . T h i s v a r i a b l e n a m e ( i n p u t )

    i n d i c a t e s

    p u r p o s e . V a r i a b l e

    d e f i n i t i o n

    e n d s w i t h s e m i c o l o n .

    F o r m a t T h e

    f o l l o w i n g

    l i n e s

    p r i n t f

    f u n c t i o n s . N e x t ,

    s c a n f

    s p e c i f i c a t i o n f u n c t i o n

    a s k s f o r t h e

    u s e r ' s i n p u t r e s p o n s e

    t e x t N u m b e r :

    S i n c e a l a r g e n u m b e r d a t a t y p e s e x i s t s , i n p u t

    r o u t i n e

    m u s t

    b e

    t o l d w h a t d a t a c a n

    b e

    e x p e c t e d . T h e f o r m a t s p e c i f i c a t i o n d s p e c i f i e s

    d a t a t y p e . F o r m a t s p e c i f i c a t i o n s a r e s i m i l a r t o t h e e s c a p e s e q u e n c e s

    ( t h e

    c h a r a c t e r s

    p r e c e d e d

    b y b a c k s l a s h ) . T h e p e r c e n t

    s i g n

    i n d i c a t e s

    f o r m a t s p e c i f i c a t i o n ; d

    t e l l s

    s c a n f t h a t v a l u e b e r e a d

    m u s t

    b e

    t y p e

    i n t . T h e n a m e

    d e s i r e d v a r i a b l e

    f o l l o w s

    s t r i n g q u o t e s , s e p a r a t e d f r o m s t r i n g

    b y c o m m a .

    A n a m p e r s a n d

    p r e c e d e s

    t h e v a r i a b l e n a m e . T h i s i m p o r t a n t : s y s t e m

    c r a s h e s

    u s e r s h o u l d f i r s t e x a m i n e

    s c a n f

    f u n c t i o n p a r a m e t e r s m a k e

    s u r e

    t h e y a r e c o r r e c t .

    s c a n f c o n t a i n s t h e c o r r e c t i n f o r m a t i o n , u s e r e n t e r t h e i n p u t

    r u n n i n g

    p r o g r a m . E n t e r

    n u m b e r a n d

    p r e s s t h e < R e t u r n >

    k e y .

    T h i s v a l u e b e f o u n d t h e v a r i a b l e i n p u t . T h e p r o g r a m n o w

    t h i s

    n u m b e r .

    T h i s p r o g r a m a c c e p t s t h e i n p u t

    t h e n

    d i s p l a y s t h e v a r i a b l e u s i n g

    p r i n t f

    f u n c t i o n . T h e

    p r i n t f

    f u n c t i o n

    m u s t a l s o

    b e t o l d

    w h a t

    k i n d

    d a t a

    m u s t p r o c e s s .

    A

    f o r m a t

    s p e c i f i c a t i o n

    i d e n t i c a l

    o n e

    w h i c h a p p e a r s s c a n f s e r v e s t h i s

    p u r p o s e .

    B e c a u s e

    t h i s

    p r i n t f

    k n o w s t h a t i n t e g e r n u m b e r

    w i l l

    p a s s e d , w h i c h m u s t b e p l a c e d

    t h e l o c a t i o n o c c u p i e d b y f o r m a t s p e c i f i c a t i o n t e x t . T h e

    v a r i a b l e n a m e i n p u t f o l l o w s

    s t r i n g

    q u o t e s , s e p a r a t e d f r o m

    s t r i n g

    b y

    c o m m a .

    T h e

    i n p u t a p p e a r s

    o n s c r e e n i n p u t

    w a s

    2

    a n d t e x t

    ( t e x t a l l o w e d

    h e r e ) .

    y o u e n t e r t e x t

    i n p u t

    b e c o m e s

    l a r g e

    r a n d o m

    n u m b e r L a t t i c e e v e n

    t h o u g h

    t h i s n u m b e r

    n e v e r

    a p p e a r e d

    i n p u t l i n e . I f y o u e n t e r

    n o

    i n p u t s c a n f s c r o l l s

    s c r e e n o n e l i n e u p w a r d a n d w a i t s n e w m o r u s e f u l ) i n p u t .

    4 . 5 . 2

    T h e i f s t a t e m e n t

    r a t h e r b o r i n g

    j u s t c o m p u t e r

    r e p e a t i n p u t .

    w o u l d b e

    b e t t e r r e s p o n d

    i n p u t .

    e x a m p l e ,

    h a v e c o m p u t e r r e s p o n d

    e n t r y

    w i t h

    m e s s a g e ,

    ' T h a t v e r y

    g o o d , o r

    e n t r y

    w h e r e m e s s a g e

    c o u l d

    a m

    s o r r y

    h e a r

    t h a t

    T h e

    3 2

  • 7/25/2019 Amiga C for Beginners

    41/308

    A b a c u s V a r i a b l e s a n d A r i t h m e t i c

    c o m p u t e r m u s t b e c a p a b l e o f c o m p a r i n g v a l u e s t o r e d

    i n p u t

    w i t h o t h e r n u m b e r s . D e p e n d i n g

    o n

    r e s u l t s t h i s t e s t m u s t

    s e l e c t o n e

    t e x t

    o t h e r

    t e x t p r o g r a m m i n g

    t h i s

    k n o w n

    i f . . . t h e n c o n s t r u c t . A s m a n y o t h e r l a n g u a g e s , C a l s o t h i s

    c a p a b i l i t y

    ( C

    d o e s n ' t

    r e q u i r e t h e

    t h e n ) .

    T h e

    v a r i a b l e c o m p a r e d

    w i t h c o n d i t i o n

    f o u n d b e t r u e ,

    s t a t e m e n t f o l l o w i n g

    i f

    c o m m a n d e x e c u t e s . H e r e

    a n

    e x a m p l e :

    i f ( i n p u t

    = =

    p r i n t f ( T h a t v e r y

    g o o d \ n ) ;

    i f ( i n p u t = =

    p r i n t f ( I a m s o r r y t o h e a r t h a t \ n ) /

    T h e c o n d i t i o n s a p p e a r i n s i d e t h e p a r e n t h e s e s t h a t f i r s t p r i n t f

    s t a t e m e n t o n l y

    o c c u r s

    w h e n

    i n p u t

    e q u a l s T h e s a m e t r u e o f

    f o l l o w i n g s t a t e m e n t , w i t h d i f f e r e n c e t h a t

    t e x t

    e x e c u t e s

    i n p u t e q u a l s

    S e m i c o l o n s

    n e v e r f o l l o w

    T h e u s e r w h o

    w a n t s

    e x p e r i m e n t c a n s e m i c o l o n

    a f t e r s e c o n d

    i f .

    y o u

    d o p r o g r a m

    a c t s l i n e i f ( i n p u t

    = = 2 ) ;

    d o e s n ' t

    e x i s t A f t e r

    e a c h

    i n p u t a m s o r r y

    h e a r

    t h a t

    a p p e a r s .

    A d d i n g f o u r l i n e s a b o v e m a k e s p r o g r a m p r o p e r l y ,

    c o u l d b e

    i m p r o v e d .

    S o m e u s e r s m a y

    b e

    f a m i l i a r w i t h

    B A S I C

    s t a t e m e n t :

    A = l T H E N P R I N T T h a t

    v e r y

    g o o d :

    E L S E P R I N T a m s o r r y

    t o

    h e a r t h a t

    e l s e T h e

    C

    l a n g u a g e a l s o e l s e s t a t e m e n t w h i c h c a n o n l y b e u s e d

    t o g e t h e r w i t h i f s t a t e m e n t . T h e e l s e s t a t e m e n t e x e c u t e s o n l y

    w h e n c o n d i t i o n

    b e e n

    m e t . T h i s e l i m i n a t e s t h e

    s e c o n d

    t e s t

    i f ( i n p u t

    p r i n t f ( T h a t

    v e r y

    g o o d \ n ) ;

    e l s e

    p r i n t f ( I a m s o r r y t o h e a r t h a t \ n ) ;

    T h e s e c o n d t e s t n o w i m p r o v e d . A m o d i f i e d v e r s i o n C p r o g r a m

    n o w

    a p p e a r s

    a s f o l l o w s :

    s c a n 2 . c 4 . 5 . 2

    v o i d m a i n ( )

    i n p u t ;

    p r i n t f ( A r e w e l l ? \ n )

    p r i n t f ( ( 1 ) = Y E S , N O \ n \ n ) ;

    p r i n t f ( I n p u t N u m b e r :

    s c a n f ( % d , & i n p u t ) /

    i f ( i n p u t

    p r i n t f ( T h a t v e r y g o o d \ n ) ;

    e l s e

    3 3

  • 7/25/2019 Amiga C for Beginners

    42/308

    T h e o r y a n d P r a c t i c e A m i g a C

    B e g i n n e r s

    p r i n t f

    s o r r y t o

    h e a r

    t h a t \ n ) ;

    s e v e r a l c o m m a n d s

    s h o u l d b e e x e c u t e d a f t e r i f e . g . , t w o

    p r i n t f

    f u n c t i o n s ) , s e c o n d

    l i n e c a n n o t b e w r i t t e n i m m e d i a t e l y

    a f t e r

    T h e f o l l o w i n g e x a m p l e w o u l d n t w o r k :

    i f ( i n p u t

    p r i n t f ( T h a t

    v e r y

    g o o d \ n ) ;

    p r i n t f ( H o p e

    s t a y h e a l t h y \ n ) ; / * N o t

    l i k e t h i s

    e l s e

    p r i n t f ( I

    a m s o r r y h e a r t h a t \ n ) ;

    S t a t e m e n t S i n c e o n l y l i n e e x e c u t e d a f t e r s o m e t h i n g e l s e m u s t

    b l o c k d o n e .

    U p

    n o w o n l y o n e

    s t a t e m e n t

    b e e n

    d e s c r i b e d .

    t i m e

    d e s c r i b e s t a t e m e n t b l o c k . P l a c i n g

    s e v e r a l

    s t a t e m e n t s i n s i d e b r a c e s

    c r e a t e s

    s t a t e m e n t

    b l o c k

    w h i c h

    v a l i d u n i t . T h i s

    b l o c k

    b e

    p l a c e d f o l l o w i n g i f

    s t a t e m e n t

    w i t h o u t

    p r o b l e m s :

    i f ( i n p u t = =

    p r i n t f ( T h a t

    v e r y g o o d \ n ) / R i g h t

    p r i n t f ( H o p e

    y o u s t a y h e a l t h y \ n ) ;

    e l s e

    p r i n t f ( I a m s o r r y t o h e a r t h a t \ n ) ;

    T h e

    A m i g a d o

    t h i n g s , w h a t

    d o e s b e s t c a l c u l a t e

    f a s t ) . L e t s s t a r t w i t h a d d i t i o n . T o a d d t w o

    v a l u e s

    p l u s s i g n

    s u m =

    n u m b e r l

    n u m b e r 2 ;

    T h e r e s u l t t h i s e x a m p l e s t o r e d v a r i a b l e s u m . T h i s v a r i a b l e

    m u s t d e f i n e d b e g i n n i n g o f t h e f u n c t i o n , j u s t l i k e v a r i a b l e s .

    U s i n g

    t y p e

    i n t , f o l l o w i n g d e f i n i t i o n r e s u l t s :

    n u m b e r l

    n u m b e r 2

    C a l a n g u a g e l a z y p e o p l e . M o s t e v e r y t h i n g b e c h a n g e d

    a b b r e v i a t i o n s

    d o w n

    k e y b o a r d

    u s e .

    T h o s e

    w h o

    w a n t

    b e c o m e

    g o o d C p r o g r a m m e r s s h o u l d u s e t h i s c a p a b i l i t y . T h e s e t h r e e v a r i a b l e s

    d e f i n e d a s s a m e d a t a t y p e . Y o u o n l y n e e d e n t e r i n t o n c e ;

    i n t e g e r v a r i a b l e s l i s t e d f o l l o w i n g t h e s i n g l e

    i n t :

    i n t s u m , n u m b e r l , n u m b e r 2 ;

    A l l v a r i a b l e s a r e

    s e p a r a t e d

    b y c o m m a s l i s t t e r m i n a t e d

    w i t h

    s e m i c o l o n .

    W i t h t h i s

    i n f o r m a t i o n

    p o s s i b l e

    w r i t e

    p r o g r a m t h a t a d d s

    t w o

    n u m b e r s . T h e s c a n f f u n c t i o n

    p e r m i t s d a t a i n p u t , t h i s t i m e

    3 4

  • 7/25/2019 Amiga C for Beginners

    43/308

    A b a c u s

    V a r i a b l e s

    a n d A r i t h m e t i c

    n u m b e r s w i l l r e a d

    T h i s

    w i l l

    d o n e w i t h

    t w o s e p a r a t e

    f u n c

    t i o n

    c a l l s

    t h i s

    w o u l d a l s o p o s s i b l e ,

    a s e c o n d

    f o r m a t

    s p e c i f i c a

    t i o n w r i t t e n

    i n t o

    s t r i n g

    s c a n f c a l l . c o n t a i n s % d % d

    n o t i c e

    n o s p a c e s w h i c h

    r e a d s s e c o n d p a r a m e t e r . A n d n o w

    l i s t i n g :

    s c a n 3 . c 4 . 5 . 2

    v o i d m a i n

    i n t s u m ,

    n u m b e r 1 ,

    n u m b e r 2 ;

    p r i n t f ( P l e a s e

    i n p u t

    t w o

    n u m b e r s \ n ) ;

    s c a n f ( % d % d ,

    & n u m b e r l , & n u m b e r 2 ) ;

    s u m n u m b e r 1 n u m b e r 2 ;

    p r i n t f ( % d % d % d \ n , n u m b e r l , n u m b e r 2 , s u m ) ;

    T h e u s e r f a m i l i a r w i t h o t h e r l a n g u a g e s s u c h

    B A S I C c o m p a r e

    l i s t i n g s o t h e r

    l a n g u a g e

    i m p l e m e n t a t i o n s s a m e

    p r o g r a m .

    T h e

    l a s t

    p r i n t f

    f u n c t i o n w i t h t h r e e

    f o r m a t

    s p e c i f i c a t i o n s a p p e a r

    c o n f u s i n g . T h e f o l l o w i n g B A S I C

    e q u i v a l e n t :

    P R I N T

    P l e a s e i n p u t

    t w o n u m b e r s

    I N P U T N 1 , N 2

    S U M

    P R I N T N l ; + ; N 2 ; = ; S U M

    4 . 5 . 3 C a l c u l a t i n g w i t h C

    T h e

    r e a d e r g u e s s w t w o u l d h a v e b e c h a n g e d p e r f o r m m u l t i

    p l i c a t i o n

    i n s t e a d a d d i t i o n . T h e

    p l u s

    s i g n r e p l a c e d b y a s t e r i s k

    A

    h y p h e n

    u s e d s u b t r a c t i o n a n d s l a s h p e r f o r m s

    d i v i s i o n .

    C a l c u l a t i o n s m a y b e p e r f o r m e d w i t h c o n s t a n t v a l u e s w e l l

    v a r i a b l e s . B o t h c o n s t a n t s a n d v a r i a b l e s m i x e d . S o m e e x a m p l e s

    f o l l o w i l l u s t r a t e . a s s u m e d

    t h a t v a r i a b l e s

    d e f i n e d

    a n d

    c o n t a i n m e a n i n g f u l v a l u e s :

    r e s u l t

    n u m b e r

    s u m v a r v a r 2 v a r 4 ;

    r e s u l t

    = 4 5 - 7 /

    v a r ;

    v a l u e ( n u m b e r

    r e s u l t

    = 4 5 3 - 2 ;

    c o u n t e r c o u n t e r

    E v a l u a t i n g

    f o r m u l a

    s i m p l e

    a s e n t e r i n g i n t o p o c k e t c a l c u l a

    t o r . C

    r e c o g n i z e s l a w s m a t h e m a t i c a l p r e c e d e n c e :

    3 5

  • 7/25/2019 Amiga C for Beginners

    44/308

    T h e o r y a n d P r a c t i c e A m i g a

    C

    f o r B e g i n n e r s

    r e s u l t

    = 4 5 3 - 2 ;

    T h e

    r e s u l t T h e

    p r o d u c t

    c a l c u l a t e d

    f i r s t a f t e r

    w h i c h 4 a d d e d a n d 2 s u b t r a c t e d .

    T h e c o u n t e r

    =

    c o u n t e r + e x a m p l e

    a b o v e d e s e r v e s

    s p e c i a l

    a t t e n t i o n . T h i s

    e q u a t i o n

    u n s o l v a b l e n o r m a l p e r s o n , n o

    p r o b l e m f o r t h e c o m p u t e r . t a k e s t h e c o n t e n t o f t h e v a r i a b l e

    c o u n t e r ,

    a d d s

    o n e

    a n d s t o r e s

    r e s u l t i n

    c o u n t e r .

    T h i s

    o p e r

    a t i o n i n c r e m e n t s

    c o n t e n t t h e v a r i a b l e

    b y

    o n e e v e r y c a l l

    L e t s

    w r i t e

    a c o m p r e h e n s i v e

    p r o g r a m

    p e r f o r m i n g m a t h e q u a t i o n s .

    T h e a s s u m p t i o n s t h a t b a s i c

    f o u r m a t h e m a t i c a l

    f u n c t i o n s a r e

    f o r m e d w i t h t w o v a r i a b l e s . A s c a n f

    f u n c t i o n

    r e a d s n u m b e r s . T h e n

    n u m b e r s a r e t e s t e d w i t h s e v e r a l i f s t a t e m e n t s d e t e r m i n e w h i c h

    m a t h e m a t i c a l f u n c t i o n s h o u l d b e p e r f o r m e d . T h e

    r e s u l t

    c a l c u l a t e d

    a c c o r d i n g l y . i n v a l i d

    c o d e

    i n p u t ,

    m e s s a g e

    a p p e a r s .

    H e r e

    f i n i s h e d

    v e r s i o n o f s u c h a p r o g r a m :

    m a t h l . c

    4 . 5 . 3

    v o i d m a i n ( )

    n u m b e r l , n u m b e r 2 ,

    r e s u l t ,

    o p e r a t o r ,

    e r r o r ;

    p r i n t f ( P l e a s e

    i n p u t

    t w o n u m b e r s \ n ) ;

    s c a n f

    ( % d % d 1 1 , S n u m b e r l ,

    & n u m b e r 2 ) ;

    p r i n t f ( A n d

    c o d e

    o p e r a t i o n \ n ) ;

    p r i n t f ( l = A d d , 2 = S u b t r a c t , 3 = M u l t i p l y , 4 = D i v i d e \ n ) ;

    s c a n f ( d , ^ o p e r a t o r ) ;

    e r r o r

    i f ( o p e r a t o r A d d i t i o n

    r e s u l t n u m b e r l n u m b e r 2 ;

    e r r o r

    i f ( o p e r a t o r S u b t r a c t i o n

    r e s u l t n u m b e r l n u m b e r 2 ;

    e r r o r

    i f ( o p e r a t o r M u l t i p l i c a t i o n

    r e s u l t n u m b e r l n u m b e r 2 ;

    e r r o r

    i f ( o p e r a t o r

    D i v i s i o n

    r e s u l t n u m b e r l n u m b e r 2 ;

    e r r o r

    i f ( e r r o r N o n e t h e a b o v e c o n d i t i o n s

    p r i n t f ( W r o n g C o d e I n p u t o n l y n u m b e r s

    4 \ n ) /

    e l s e

    3 6

  • 7/25/2019 Amiga C for Beginners

    45/308

    A b a c u s

    V a r i a b l e s

    a n d

    A r i t h m e t i c

    p r i n t f T h e r e s u l t d \ n ,

    r e s u l t ) ;

    h e p r o g r a m v e r y

    e a s y

    t o r e a d .

    A f t e r v a l u e s h a v e

    b e e n

    e n t e r e d ,

    v a r i a b l e

    e r r o r

    a s s i g n e d v a l u e

    D u r i n g

    e v e r y

    o p e r a t i o n

    t h a t

    f o l l o w s ,

    a d d i t i o n ,

    s u b t r a c t i o n ,

    e t c . ,

    e r r o r v a r i a b l e

    z e r o .

    T h i s m a k e s

    p o s s i b l e

    d e t e r m i n e w h e t h e r f o u r

    o p e r a t i o n s

    w a s

    p e r f o r m e d .

    I f t h i s w a s t r u e , v a l u e

    o p e r a t o r

    i l l e g a l .

    B e f o r e

    o u t p u t ,

    r e s u l t t e s t e d d e t e r m i n e

    w a s

    c a l c u l a t e d .

    T h i s

    b e

    s e e n

    t h e v a r i a b l e

    e r r o r .

    T e s t t h i s p r o g r a m t h o r o u g h l y w i t h v a r i o u s v a l u e s .

    P l e a s e n o t e t h a t

    i n t e g e r v a r i a b l e s a r e o n l y p e r m i t t e d t o s t o r e v a l u e s

    b e t w e e n

    + 3 2 , 7 6 7

    - 3 2 , 7 6 8 . F u r t h e r m o r e ,

    d i v i s i o n

    s h o u l d

    a v o i d e d .

    T h i s w o u l d

    c a u s e a s y s t e m

    c r a s h

    a n d

    a

    G u r u

    M e d i t a t i o n .

    4 . 5 . 4

    F l o a t i n g

    P o i n t

    N u m b e r s

    l o t

    P e r h a p s

    y o u h a v e n o t i c e d

    s o m e t h i n g

    e l s e .

    d i v i d i n g

    b y

    T h e

    r e s u l t

    d i s p l a y e d b y c o m p u t e r

    w h i c h i n c o r r e c t

    w o u l d

    r i g h t ) .

    I s n t

    t h i s

    e x p e n s i v e

    c o m p u t e r c a p a b l e o f p e r f o r m i n g c o r r e c t d i v i

    s i o n ?

    T h e

    e r r o r

    t r a c e d t h e v a r i a b l e t y p e . T h e i n t v a r i a b l e t y p e

    o n l y c a p a b l e p r o c e s s i n g w h o l e

    n u m b e r s

    b e t w e e n 3 2 , 0 0 0 .

    T h e

    v a l u e

    f l o a t i n g

    p o i n t

    n u m b e r ,

    w h o l e

    n u m b e r . d u r i n g

    d i v i s i o n r e m a i n d e r t h e f r a c t i o n a f t e r d e c i m a l

    p o i n t )

    o c c u r s ,

    i g n o r e d . T h i s d o e s m e a n t h a t

    d i v i s i o n

    c a n n o t p e r f o r m e d

    A m i g a

    c o m p u t e r .

    T h e o n l y t h i n g r e q u i r e d t h a t t h e v a r i a b l e

    t y p e c a p a b l e o f s t o r i n g f l o a t i n g p o i n t n u m b e r s . N o p r o b l e m

    s i n c e C e q u i p p e d

    t h i s .

    T o

    c o n v e r t

    t h e c u r r e n t p r o g r a m t h i s n e w d a t a t y p e , t h e v a r i a b l e s

    n u m b e r n u m b e r 2 a n d r e s u l t m u s t c h a n g e d . T h i s

    p r o c e s s

    c o n s i s t s o n l y o f

    r e p l a c i n g i n t w i t h f l o a t .

    T h e f i r s t l i n e s

    a p p e a r

    f o l l o w s :

    m a i n

    f l o a t n u m b e r 1 , n u m b e r 2 , r e s u l t ;

    i n t o p e r a t o r , e r r o r ;

    T h i s a l o n e s u f f i c i e n t s i n c e s c a n f p r i n t f f o r m a t

    s p e c i f i c a t i o n d w h i c h e x p e c t s i n t e g e r v a l u e . T h i s n o l o n g e r

    c a s e . T h e d m u s t r e p l a c e d w i t h a T h e m e n s f l o a t i n g p o i n t

    3 7

  • 7/25/2019 Amiga C for Beginners

    46/308

  • 7/25/2019 Amiga C for Beginners

    47/308

  • 7/25/2019 Amiga C for Beginners

    48/308

    T h e o r y a n d P r a c t i c e A m i g a C B e g i n n e r s

    A f t e r

    s m a l l

    c h a n g e s ,

    c o m p a r e t h i s v e r s i o n

    f i n a l p r o g r a m

    b e l o w

    w h i c h s o m e

    o t h e r

    c o s m e t i c

    c h a n g e s

    w e r e

    m a d e .

    T h e r e a d e r

    s h o u l d

    n o w b e

    a b l e

    u n d e r s t a n d t h e a d d i t i o n s m d e

    D u r i n g

    t h e i n p u t

    s m a l l i t e m h a s c h a n g e d .

    U n t i l

    n o w

    < R e t u r n >

    k e y

    h a d

    b e p r e s s e d ( b u t r e q u i r e d )

    a f t e r

    i n p u t t i n g e a c h n u m b e r .

    N o w e n t i r e i n p u t m u s t o n e

    l i n e

    T h e r e a s o n t h i s f a c t

    t h a t

    s i n g l e

    c h a r a c t e r r e a d

    w i t h c . T h i s c o u l d

    < R e t u r n >

    s p a c e .

    F o r

    t h i s

    r e a s o n f i r s t

    n u m b e r f o l l o w e d

    i m m e d i a t e l y

    b y

    o p e r a t o r

    a f t e r w h i c h

    < R e t u r n > k e y m a y b e p r e s s e d , d e s i r e d .

    F i n a l l y

    s e c o n d n u m b e r a p p e a r s t h i s l i n e :

    1 5 . 5 0 0 0 0 0 1 2 . 5 0 0 0 0 0 1 9 3 . 7 5 0 0 0 0

    H e r e f i n a l v e r s i o n t h i s p r o g r a m :

    m a t h 3 . c

    4 . 5 . 5 * /

    v o i d m a i n ( )

    f l o a t n u m b e r 1 , n u m b e r 2 , r e s u l t ;

    c h a r o p e r a t o r ;

    e r r o r ;

    p r i n t f ( I n p u t F o r m a t : N u m b e r ,

    O p e r a t o r , N u m b e r

    s p a c e s ) \ n ) ;

    s c a n f ( % f % c % f , & n u m b e r l , S o p e r a t o r , & n u m b e r 2 ) ;

    e r r o r

    i f ( o p e r a t o r A d d i t i o n

    r e s u l t

    n u m b e r l

    n u m b e r 2 ;

    e r r o r =

    i f ( o p e r a t o r - ) S u b t r a c t i o n

    r e s u l t n u m b e r l n u m b e r 2 ;

    e r r o r

    i f ( o p e r a t o r

    M u l t i p l i c a t i o n

    r e s u l t

    n u m b e r l

    n u m b e r 2 ;

    e r r o r

    i f ( o p e r a t o r D i v i s i o n

    r e s u l t

    n u m b e r l

    n u m b e r 2 ;

    e r r o r

    =

    i f ( e r r o r

    N o n e t h e c o n d i t i o n s a b o v e

    s a t i s f i e d ?

    p r i n t f ( W r o n g O p e r a t o r % c \ n , o p e r a t o r ) ;

    e l s e

    p r i n t f ( % f % f \ n ,

    n u m b e r l , o p e r a t o r ,

    n u m b e r 2 ,

    r e s u l t ) ;

    4 0

  • 7/25/2019 Amiga C for Beginners

    49/308

    b a c u s V a r i a b l e s a n d r i t h m e t i c

    L a t t i c e T h e l i b r a r y m a t h e m a t i c a l f u n c t i o n s f l o a t i n g p o i n t n u m b e r s m u s t

    b e l i n k e d s t a n d a r d

    l i b r a r y E x a m p l e :

    l c L m m a t h 3

    z t e c

    y o u w o r k w i t h

    A z t e c C

    c o m p i l e r

    l i b r a r y m a t h e m a t i c a l

    f u n c t i o n s

    f l o a t i n g

    p o i n t

    n u m b e r s m u s t b e

    l i n k e d w i t h

    s t a n d a r d

    l i b r a r y c l i b F o r e x a m p l e :

    c c

    L

    m a t h 3 . c

    m a t h 3 . o

    l m l c

    4 1

  • 7/25/2019 Amiga C for Beginners

    50/308

  • 7/25/2019 Amiga C for Beginners

    51/308

    p s

  • 7/25/2019 Amiga C for Beginners

    52/308

  • 7/25/2019 Amiga C for Beginners

    53/308

    A b a c u s L o o p s

    5

    L o o p s

    T h e p r o g r a m s p r e s e n t e d

    u n t i l

    n o w

    e x e c u t e

    s t r a i g h t f r o m b e g i n n i n g

    e n d .

    A n i f

    s t a t e m e n t m a y s k i p

    o v e r

    s o m e

    s p o t s ,

    w e h a v e n t

    j u m p e d

    e a r l i e r

    s t a t e m e n t s .

    L o o p s

    b r a n c h

    e a r l i e r

    s e c t i o n s

    p r o g r a m .

    5 . 1 w h i l e L o o p s

    T h e

    w h i l e

    s t a t e m e n t

    f o l l o w e d b y p a r e n t h e s e s w h i c h s u r r o u n d

    d e s i r e d a r g u m e n t s . A n x m p l m a k e s t h i s c l e a r :

    v o i d

    m a i n ( )

    i n t c o u n t e r ;

    c o u n t e r = 1 5 ;

    w h i l e ( c o u n t e r

    p r i n t f ( C o u n t e r

    d \ n ,

    c o u n t e r ) ;

    c o u n t e r = c o u n t e r

    T h e

    b l o c k w h i c h a p p e a r s a f t e r w h i l e s t a t e m e n t e x e c u t e s u n t i l

    c o n d i t i o n s i n s i d e t h e p a r e n t h e s e s a r e

    t r u e .

    I n t h e b e g i n n i n g , t h e v a r i a b l e

    c o u n t e r s e t t o 1 5 . W h i l e c o n d i t i o n c o u n t e r > b e e n

    m e t , f o l l o w i n g b l o c k e x e c u t e d

    w h i c h

    o u t p u t s t h e c u r r e n t v a l u e

    c o u n t e r a n d

    t h e n

    d e c r e m e n t s b y o n e . t h i s c a s e p r i n t f

    f u n c t i o n c a l l e d

    t i m e s

    u n t i l c o u n t e r

    b e e n

    r e d u c e d T h e

    c o n d i t i o n a l s t a t e m e n t s b e f o r m e d b y

    u s i n g

    t e s t s

    e q u a l i t y

    = = ) ,

    g r e a t e r

    t h a n

    > , l e s s

    t h a n

    g r e a t e r

    t h a n

    o r e q u a l

    > = ) ,

    l e s s

    t h a n

    e q u a l

    < = ) . T h e

    c o m p a r i s o n h e r e

    c o u n t e r

    g r e a t e r t h a n

    T h e

    c o m p a r i s o n

    o p e r a t o r s

    C a r e s i m i l a r t h o s e f o u n d m o s t

    p r o g r a m m i n g l a n g u a g e s .

    4 5

  • 7/25/2019 Amiga C for Beginners

    54/308

    L o

    o

    A m i g a C f o r B e g i n n e r s

    g r e a t e r t h a n

    > =

    g r e a t e r t h a n

    e q u a l

    = =

    e q u a l

    u n e q u a l

    I n s t e a d

    w h i l e ( c o u n t e r

    f o l l o w i n g c o u l d b e w r i t t e n :

    w h i l e ( c o u n t e r

    T h e l a t t e r p r e f e r r e d s i n c e t h e l i m i t e x p l i c i t l y p r o v i d e d . T o c o n s t r u c t

    a l o o p

    w h i c h

    c o u n t s v a l u e

    1 0 0 ,

    r e c o m m e n d e d

    t h i s

    n u m b e r

    t e s t

    w h i l e ( c o u n t e r

    1 0 0 )

    I n t h e c o m p a r i s o n

    o p e r a t o r s

    < =

    e q u a l s i g n

    a l w a y s

    a p p e a r s t h e e n d .

    F a c t o r i a l s A

    p r a c t i c a l e x a m p l e t h e c a l c u l a t i o n

    f a c t o r i a l

    n u m b e r t h r o u g h

    c o n s t a n t m u l t i p l i c a t i o n . A f a c t o r i a l i n m a t h e m a t i c s p r o d u c t

    w h o l e n u m b e r s u p v a l u e .

    T h e f a c t o r i a l

    4 t h e r e f o r e

    = 2 3 4 =

    H e r e e x a m p l e p r o g r a m :

    f a c t o r i a l . c

    v o i d

    m a i n

    n u m ,

    f l o a t

    f a c t o r i a l ;

    p r i n t f ( P l e a s e

    i n p u t n u m b e r :

    s c a n f ( d , & n u m ) ;

    n u m ;

    f a c t o r i a l / * I n i t i a l i z e

    w h i l e ( i

    f a c t o r i a l f a c t o r i a l

    p r i n t f ( % d % f \ n , n u m , f a c t o r i a l ) ;

    4 6

  • 7/25/2019 Amiga C for Beginners

    55/308

  • 7/25/2019 Amiga C for Beginners

    56/308

    L o o p s

    A m i g a

    C f o r B e g i n n e r s

    5 2 f o r L o o p s

    A n o t h e r

    l o o p b e

    c o n s t r u c t e d u s i n g f o r s t a t e m e n t B A S I C

    c o m m a n d u s e d

    a s f o l l o w s :

    F O R

    S T E P

    N E X T

    C t h i s a p p e a r s a s f o l l o w s :

    f o r i < = 1 0 0 ;

    C

    d o e s n t

    r e q u i r e n e x t B A S I C , s i n c e o n l y

    s t a t e m e n t b l o c k

    f o l l o w i n g l o o p

    h e a d e r

    e x e c u t e d . W i t h i n

    p a r e n t h e s e s

    s o m e

    i n t e r e s t i n g i t e m s T h e r e a r e t h r e e i n d i v i d u a l s t a t e m e n t s s e p a r a t e d

    f r o m

    e a c h o t h e r b y s e m i c o l o n s . A s e m i c o l o n d o e s n o t f o l l o w l a s t e n t r y

    T h e l o o p b o d y e n d s h e r e w i t h c l o s i n g p a r e n t h e s i s T h e f i r s t e n t r y

    =

    a s s i g n s s t a r t i n g v a l u e

    t h e v a r i a b l e w h i c h

    m o d i f i e d

    w i t h i n

    t h e l o o p T h e

    s t a t e m e n t < = 1 0 0 r e p r e s e n t s t h e

    e n d i n g c o n d i t i o n

    U n t i l

    s a t i s f i e d

    l o o p e x e c u t e s . T h e l a s t

    p a r t l o o p

    b o d y

    i n c r e m e n t s d e c r e m e n t s

    c o n t r o l

    v a r i a b l e s w h i c h w e r e

    p r e v i o u s l y

    i n i t i a l i z e d

    w i t h

    s t a r t i n g

    v a l u e .

  • 7/25/2019 Amiga C for Beginners

    57/308

    A b a c u s 5 3 w h i l e

    L o o p s

    5 3 d o

    w h i l e

    L o o p s

    T h e

    l a s t

    t y p e

    l o o p d o

    w h i l e l o o p . T h e

    r e a d e r a l r e a d y r e a d

    a b o u t w h i l e

    l o o p ; t h i s l o o p q u i t e s i m i l a r .

    P l e a s e c o m p a r e

    t w o p r o g r a m s e c t i o n s b e l o w :

    f i r s t

    p r o g r a m s e c t i o n

    w h i l e

    p r i n t f i d \ n ,

    s e c o n d p r o g r a m s e c t i o n

    p r i n t f i

    d \ n ,

    w h i l e i

    T h e d o b e g i n s d o w h i l e l o o p , a n d w h i l e e n d s t h e l o o p .

    T h i s

    l e a d s

    s m a l l s i g n i f i c a n t d i f f e r e n c e p r o r m

    e x e c u t i o n . I n

    f i r s t e x a m p l e p r o g r a m c h e c k s v a r i a b l e s t i l l g r e a t e r

    t h a n 0

    t h e n e x e c u t e s

    l o o p o n l y t h e c o n d i t i o n s m e t . s e c o n d

    e x a m p l e

    t e s t

    e x e c u t e d

    o n l y a f t e r l o o p h a s a l r e a d y b e e n

    e x e c u t e d

    o n c e . c o n t a i n s

    v a l u e w h i l e

    l o o p s k i p p e d ,

    u n l i k e d o w h i l e

    l o o p

    w h i c h

    e x e c u t e s

    a t l e a s t o n c e .

    P l e a s e n o t i c e t h e s e m i c o l o n

    w h i c h

    m u s t f o l l o w w h i l e . I t i s o f t e n

    f o r g o t t e n s i n c e n o r m a l w h i l e l o o p s d o n t s e m i c o l o n s .

    t h i s m a t e r i a l c l e a r w i t h o u t f u r t h e r e x a m p l e p r o g r a m s , t h e u s e r

    e n c o u r a