background image

CSE1301 Sem 2-2003

Lecture 3: C Primitives 1

1

Basic Structure of a C Program

output “Hello World!”

Algorithm:

#include <stdio.h>

int main()

{

printf(“Hello World!”);

return 0;

}

C Program:

Example: Hello World

Basic Structure of a C Program (cont)

#include <stdio.h>

int main()

{

printf(“Hello World!”);

return 0;

}

C Program

Example: Hello world

Includes 

standard 

input/output library

of 

procedures.

Read: “Hash-include”

background image

CSE1301 Sem 2-2003

Lecture 3: C Primitives 1

2

Basic Structure of a C Program

#include <stdio.h>

int main()

{

printf(“Hello World”);

return 0;

}

C Program: 

Curly braces mark the 

beginning

and 

end

of a 

block of instructions.

Example: Hello World

Basic Structure of a C Program

#include <stdio.h>

int main()

{

printf(“Hello World”);

return 0;

}

C Program: 

Instruction (

function call

to output “Hello World”

Example: Hello World

background image

CSE1301 Sem 2-2003

Lecture 3: C Primitives 1

3

Basic Structure of a C Program

#include <stdio.h>

int main()

{

printf(“Hello World”)

;

return 0

;

}

C Program: 

“Statements” (lines of 

instructions) always end 

with a 

semi-colon

(;)

Example: Hello World

Values and Variables

• Basic  Types:

– Integers

– Floating point numbers

– Characters

– Character Strings

background image

CSE1301 Sem 2-2003

Lecture 3: C Primitives 1

4

Basic Types: int and float

• Integers (

int

)

0   1   1000   -1   -10    666

• Floating point numbers (

float

)

1.0   .1   1.0e-1   1e1

Basic Types: char

• Characters (

char

)

’a’ ’z’ ’A’ ’Z’ ’?’ ’@’ ’0’ ’9’

- Special Characters: preceded by \

’\n’ ’\t’ ’\0’ ’

\’

’ ’

\\

etc.

background image

CSE1301 Sem 2-2003

Lecture 3: C Primitives 1

5

Basic Types: character string

• Character Strings (a string of 

char

-s)

• Examples:

– ”Hi there!”

– ”Line 1

\n

Line 2

\n

Line 3”

– ””

– 

\”

\”

Arithmetic Expressions

• take arithmetic (numerical) values and

• return an arithmetic (numerical) value

• Are composed using the following operators:

+

(addition)

-

(subtraction)

*

(multiplication)

/

(division or quotient)

%

(modulus or remainder)

background image

CSE1301 Sem 2-2003

Lecture 3: C Primitives 1

6

More on precedence

• *

,  /,  %

are at the same level of precedence 

• +

, - are at the same level of precedence 

• For operators at the same “level”, left-to-right 

ordering is applied.

2 + 3 – 1 = (2 + 3) – 1 = 4

2 – 3 + 1 = (2 – 3) + 1 = 0

2 * 3 / 4 = (2 * 3) / 4 = 6 / 4

2 / 3 * 4 = (2 / 3) * 4 = 0 / 4

int

-s and float-s

• float

is a “communicable” type

• Example:

1 + 2 * 3 -

4.0

/ 5

= 1 + (2 * 3) - (

4.0 / 5

)

= 1 + 6 -

0.8

6.2

background image

CSE1301 Sem 2-2003

Lecture 3: C Primitives 1

7

Increment and decrement 

operators

• ++

is the increment operator 

i++;

is equivalent to

i = i + 1;

• --

is the decrement operator

j--;

is equivalent to

j = j - 1;

Function Calls

• Tell the computer to execute a series of C 

commands and (maybe) return a value

– In algorithm-speak: An invocation of a named 

sequence of instructions

• Example: printf, scanf, sqrt

background image

CSE1301 Sem 2-2003

Lecture 3: C Primitives 1

8

Example -- Find the square root (cont)

#include <stdio.h>

#include <math.h>

/* 

Find square root */

int main()

{

/* 

declare variables */

float x,myResult;

/* 

output ”Enter a number: " */

printf(“Enter a number\n”);

/* 

input x */

scanf(“%f”,&x);

/* 

set myResult to result of squareRoot(x)  */

myResult=sqrt(x); 

/* 

output myResult */

printf(“Result is %f\n”,myResult);

return 0;

}

Comments

• Essential for documenting programs

• Run from a 

/*

to the next 

*/

• Examples:

/*

THIS IS A COMMENT 

*/

/*

So is

this

*/

/*

** ...and this.

**

*/

background image

CSE1301 Sem 2-2003

Lecture 3: C Primitives 1

9

Comments (cont)

• Comments do not “nest”

/*

Comments start with a “/*”

and end with a “

*/

but they don’t nest!  */

Components of a C Program

background image

CSE1301 Sem 2-2003

Lecture 3: C Primitives 1

10

Topics

• Type

• Variables

• Keywords and Identifiers

• Assignments

• Constant Variables

Type

• Built-in types: 

char

int

float

• Type 

modifiers

long

short

const

• User-defined types (arrays and records)

• What about “strings”?

– Strings are arrays of 

char 

(discussed later)

background image

CSE1301 Sem 2-2003

Lecture 3: C Primitives 1

11

Character Representation

• The ASCII values range from 

0

to 

127

– value 0: special character 

’\0’

(a.k.a. NUL character)

– value 127: special character <DEL>

– other special characters: 

’\n’

’\t’

’\’’

’\\’

etc.

– various “extended” sets from 128 to 255

background image

CSE1301 Sem 2-2003

Lecture 3: C Primitives 1

12

Variable

• Is  a  logical 

name

for a container 

– (an actual piece of computer memory for 

values)

• Has a type associated with it

– tells the computer how to interpret the bits

• Must be declared before use:

int i;

float result;

int i=0;

char  initial=

K

;

Variable Declaration: Examples

int myID;

myID

background image

CSE1301 Sem 2-2003

Lecture 3: C Primitives 1

13

Variable Declaration: Examples

int myID;

char myInitial = 

J

;

Single “forward quotes” or 

apostrophe (

) rather than 

“back quotes” (‘)

Variable Declaration: Examples

float commission = 0.05;

short int myHeight = 183; /* cm */

long int mySalary = 100000000000000000000;

long float chanceOfADate = 3e-500;

double chanceOfA2ndDate = 1.5e-500;

background image

CSE1301 Sem 2-2003

Lecture 3: C Primitives 1

14

float

commission = 0.05;

short int

myHeight = 183; /* cm */

long int

mySalary = 100000000000000000000;

long float

chanceOfADate = 3e-500;

double

chance_of_a_2nd_date = 1.5e-500;

Variable Declaration: Examples

Keyword

• ...has a special meaning in C

• ...is “case-sensitive”

• ...cannot be used as variable names

• Examples:

int, char, long, main, float, 

double, const, while, for, if, 

else, return, break, case, 

switch, default, typedef, 

struct, 

etc. (see D&D 2/e Appendix A or 

D&D 3/e page 545, Figure 15.4)

background image

CSE1301 Sem 2-2003

Lecture 3: C Primitives 1

15

Identifier

• ...is a series of characters consisting of 

letters, digits and underscores  ( 

_

• ...cannot begin with a digit

• ...must not be a keyword

• ...is “case-sensitive”

• Examples:

sUmoFA, x1, y2, _my_ID_, Main

(careful!)

Assignment

• Puts a specified value into a specified 

variable

• Assignment operator:  

=

<variable name> <expression> ;

not to be 

confused 

with  

==

background image

CSE1301 Sem 2-2003

Lecture 3: C Primitives 1

16

Assignment: Examples

float x = 2.5 ;

char  ch ;

int

number ;

ch = ’\n’ ;

number = 4 + 5 ;

/* current value of number is 9. */

number = number * 2;

/* current value of number is now 18. */

#include <stdio.h>

/* Do various assignment 

statements */

int main()

{

int

integer;

char   character;

float  floatingPoint;

integer = 33;

character = 33;

floatingPoint = 33;

integer = 'A';

character = 'A';

floatingPoint = 'A';

integer = 33.33;

character = 33.33;

floatingPoint = 33.33;

integer = floatingPoint;

floatingPoint = integer;

return 0;

}

various.c

background image

CSE1301 Sem 2-2003

Lecture 3: C Primitives 1

17

Constant Variables

• ...are variables that don’t vary

• ...may not be assigned to.

• ...must be initialized

const float Pi = 3.14159;

const int classSize = 100;

Example: Constants

“Global”

constant variable

“Local” variables

more on this later...

#include <stdio.h>

/* Converts an angle in degrees to 

radians. */

const float PI = 3.1415926;

int main()

{

float angleInDegs;

float angleInRads;

printf("Enter angle in degrees: ");

scanf("%f", &angleInDegs);

angleInRads = PI/180*angleInDegs;

printf("%f\n", angleInRads);

return 0;

}

background image

CSE1301 Sem 2-2003

Lecture 3: C Primitives 1

18

scanf()

Example:

scanf(“%d”, &x);

printf()

Example:

printf(“The value of x is %d\n”, x); 

#include <stdio.h>

Input/Output

Boolean

• A special “type” with only two values: 

– false

and 

true

.

• Used to implement conditions 

– for selection and looping in an algorithm

• Boolean expressions 

– represent statements which are either strictly 

true or strictly false

background image

CSE1301 Sem 2-2003

Lecture 3: C Primitives 1

19

Type int as Boolean

• In C, integers are used as Booleans

• Integer value 

0

is 

false

.

• Any 

non-zero

integer value is 

true

.

Functions 

background image

CSE1301 Sem 2-2003

Lecture 3: C Primitives 1

20

User-Defined Functions

• Create your own functions, similar to 

printf()

or 

sqrt()

• Recall a procedure in an algorithm - a 

named collection of instructions

– InviteToParty

– RingUp

– MakeToParty

• A function implements the  procedure or 

function parts of an algorithm.

Writing User-defined Functions

• Need to specify:

– the 

name

of the function

– its 

parameters

– what it 

returns

– block

of statements to be carried out when the 

function is called

• The block of statements is called the 

function body

background image

CSE1301 Sem 2-2003

Lecture 3: C Primitives 1

21

Example: hello1.c

Function 

definition

Function call

#include <stdio.h>

/*

* Print a simple greeting.

*/

void sayHello ( void )

{

printf(“Hello World!\n”);

}

/*

* Call a function which 

* prints a simple greeting.

*/

int main(void)

{

sayHello();

return 0;

}

Example: hello1.c

Function name

Function body

#include <stdio.h>

/*

* Print a simple greeting.

*/

void sayHello ( void )

{

printf(“Hello World!\n”);

}

/*

* Call a function which

* prints a simple greeting.

*/

int main(void)

{

sayHello();

return 0;

}

background image

CSE1301 Sem 2-2003

Lecture 3: C Primitives 1

22

Example: hello1.c

Return type

Formal 

Parameter List

#include <stdio.h>

/*

* Print a simple greeting.

*/

void sayHello ( void )

{

printf(“Hello World!\n”);

}

/*

* Call a function which 

* prints a simple greeting.

*/

int main(void)

{  

sayHello();

return 0;

}

Parameters (cont.)

• Parameters are passed by 

copying

the value 

of the actual parameters to the formal 
parameters.

• Changes to formal parameters do not affect 

the value of the actual parameters.

background image

CSE1301 Sem 2-2003

Lecture 3: C Primitives 1

23

Parameters (cont.)

• If a function does not take parameters, 

declare its formal argument list 

void

.

void sayHello ( 

void

)

{

printf(“Hello World!\n”);

}

sayHello();

Function call:

Declaration:

Return Values

• Values are returned by copying a value 

specified after the 

return

keyword

background image

CSE1301 Sem 2-2003

Lecture 3: C Primitives 1

24

/* Returns the larger of two 

numbers. */

int

max (int a, int b)

{

int result;

if (a > b)

{

result = a;

}

else

{

result = b;

}

return result;

}

Example: max.c

Return type

Return Values (cont.)

• If a function does not return a value, declare 

its return type 

void

.

void

sayHello ( void )

{

printf(“Hello World!\n”);

}

sayHello();

Function call:

Declaration:

background image

CSE1301 Sem 2-2003

Lecture 3: C Primitives 1

25

Pointers

char ch = ’A’;

’A’

0x2000

ch:

Memory Address of a Variable

The 

value

of the 

variable ch

The 

memory 

address

of the 

variable ch

background image

CSE1301 Sem 2-2003

Lecture 3: C Primitives 1

26

The  

&

Operator

• Gives the memory address of an object

• Also known as the “

address operator

&ch

yields the value 0x2000

char ch = ’A’;

’A’

0x2000

conversion specifier

” for 

printing a memory address

char ch;

printf(“%p”, &ch);

Example:

background image

CSE1301 Sem 2-2003

Lecture 3: C Primitives 1

27

Pointers

ch

0x1FFF

0x2000

0x2001

0x2002

0x1FFE

etc

‘B’

0x2000

chPtr

0x3A15

A variable which can store 
the 

memory address

of 

another variable

Pointers

• A pointer is a 

variable

• Contains a 

memory address

• Points to a specific 

data type

• Pointer variables are usually named 

varPtr

background image

CSE1301 Sem 2-2003

Lecture 3: C Primitives 1

28

cPtr:

char* cPtr;

Example:

• We say cPtr is a 

pointer

to char

0x2004

Can store an 

address

of 

variables of type 

char

Pointers and the

&

Operator

Example:

A

c:

0x2000

char c = ’A’;

char *cPtr;

cPtr:

0x2004

cPtr = &c;

0x2000

Assigns the 

address of

c

to 

cPtr

background image

CSE1301 Sem 2-2003

Lecture 3: C Primitives 1

29

Notes on Pointers

int*

numPtr;

float*  xPtr;

Example:

• We can have pointers to any data type

int

*numPtr;

float * xPtr;

Example:

• The 

*

can be anywhere between the

type and the variable

Notes on Pointers (cont)

• You can print the address stored in a pointer

using the  

%p

conversion specifier

printf(“%p”, numPtr);

Example:

• You can assign the address of a variable to a

compatible

” pointer using the  

&

operator

int

aNumber;

int

*numPtr;

numPtr = 

&

aNumber;

Example:

background image

CSE1301 Sem 2-2003

Lecture 3: C Primitives 1

30

Notes on Pointers (cont)

int

*numPtr;

Beware of pointers 

which are not 

initialized!

???

numPtr

Notes on Pointers (cont)

int

*numPtr = NULL;

NULL

numPtr

When declaring a pointer, it is a good

idea to always initialize it to

NULL

(a special pointer constant)

background image

CSE1301 Sem 2-2003

Lecture 3: C Primitives 1

31

A

c:

0x2000

B

Pointers and the

Operator

Example:

char c = ’A’;

char *cPtr = NULL;

cPtr = &c;

*cPtr = ’B’;

Changes the value of 

the variable which 

cPtr

points to

cPtr:

0x2004

NULL

0x2000

Pointers and Function Arguments

• Change the value of an actual parameter 

variable

• scanf

demystified

char ch;

int

numx;

float numy;

scanf(“%c %d %f”, 

&

ch, 

&

numx, 

&

numy);