0% found this document useful (0 votes)
5 views

Data Types

The document provides an overview of data types, variables, and constants in the C programming language, including basic concepts, memory management, and arithmetic operations. It explains the structure of a simple C program, variable naming conventions, and the use of format specifiers for input and output. Additionally, it covers type conversion, operator precedence, and provides examples of arithmetic operations and programming tasks.

Uploaded by

fatinnehal5
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views

Data Types

The document provides an overview of data types, variables, and constants in the C programming language, including basic concepts, memory management, and arithmetic operations. It explains the structure of a simple C program, variable naming conventions, and the use of format specifiers for input and output. Additionally, it covers type conversion, operator precedence, and provides examples of arithmetic operations and programming tasks.

Uploaded by

fatinnehal5
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 51

Data types, variables, constants

Outline
2.1 Introduction
2.2 A Simple C Program: Printing a Line of Text
2.3 Memory Concepts
2.4 Naming Convention of Variables
2.5 Arithmetic in C
2.6 Type Conversion
Computer was modelled
after Human

Sensory Memory
( <1 sec)

Short Term Memory


(<1 minute)

Long Term Memory


(Life Time)

http://www.human-memory.net/types_sensory.html
A simple model of the computer
Short term
Main
Memory
Memory

Sensory
Memory

Output
Input Buffer Processor Devices
Devices

Permanent
Long term
Storage
Memory
Definition: Computer Program

A Computer program is a sequence of


instructions written to perform a specified
task with a computer.
Example: Computer Program
Computer tell me what would be my balance
after 1 year if my starting balance is 1,00,000
and interest rate is 10%.
Balance

New Balance
Rate
Processing
Year
OUTPUT
INPUT

COMPUTATION
Introduction

• C programming language
– Structured and disciplined approach to program design
– Story  Paragraph  Sentence
– Program  Function  Statement
A Simple C Program: Printing a Line of
Text
1 /* Fig. 2.1: fig02_01.c
2 A first program in C */
3 #include <stdio.h>
4
5 int main()
6 {
7 printf( "Welcome to CSE 115!\n" );
8
9 return 0;
10 }

Welcome to CSE 115!

• Comments
– Text surrounded by /* and */ is ignored by computer
– Used to describe program

• #include <stdio.h>
– Preprocessor directive - tells computer to load contents of a certain file
– <stdio.h> allows standard input/output operations
A Simple C Program: Printing a Line of
Text (II)
• int main()
– C programs contain one or more functions, exactly one of
which must be main
– Parenthesis used to indicate a function
– int means that main "returns" an integer value
– Braces indicate a block
• The bodies of all functions must be contained in braces
A Simple C Program: Printing a Line of
Text (III)
• printf( "Welcome to C!\n" );
– Instructs computer to perform an action
• Specifically, prints string of characters within quotes
– Entire line called a statement
• All statements must end with a semicolon
– \ - escape character
• Indicates that printf should do something out of the
ordinary
• \n is the newline character
A Simple C Program: Printing a Line of
Text (IV)
• return 0;
– A way to exit a function
– return 0, in this case, means that the program terminated
normally

• Right brace }
– Indicates end of main has been reached
Basic Data types

Type Example Size Range Format Code

char A B C..Z 8 bits, -128 to +127 “%c”


a b c..z 1 byte
@ $ % *
int 32, 3, 4 ,5 32 bits, -2,14,74,83,648 to “%d”
-4, -5, -6 4 bytes +2,14,74,83,647 “%i”
float 3.4, 5.25, 32 bits, 3.4E-38 to 3.4E+38 “%f”
-2.3, -6.7 4 bytes
double 3.4, 5.25, 64 bits, 1.7E-308 to “%lf”
-2.3, -6.7 8 bytes 1.7E+308
Float format

Single precision floating point:


Sign bit: 1
Exponent: 8 bits
Mantissa: 23 bits
Double format

Double precision floating point:


Sign bit: 1
Exponent: 11 bits
Mantissa: 52 bits
ASCII Values
Memory Concepts

• Variables
– Variable names correspond to locations in the
computer's memory.
– Every variable has a name, a type, a size and a value.
– Whenever a new value is placed into a variable
(through scanf, for example), it replaces (and
destroys) previous value
– Reading variables from memory does not change them
• A visual representation
integer1 45
Using Variables: Output

int a, b, c;
a = 3; Output:

b = 8;
11
c = a + b;
printf(“%d” , c);
Suppose we want……

int a, b, c;
a = 3; Output:

b = 8;
The value of c: 11
c = a + b;
printf(“%d” , c);
You can do……

int a, b, c;
a = 3; Output:

b = 8;
The value of c: 11
c = a + b;
printf(“The value of c:”);
printf(“The value of c: %d”,c);
printf(“%d” , c);
Or….

int a, b, c;
a = 3; Output:

b = 8;
The value of c: 11
c = a + b;
printf(“The value of c: %d”,c);
Using Variables: Output
Format specifier Variable

printf(type, what);

Type Format Code

char "%c"
int "%d"
"%i"
float "%f"
double "%lf"
Using Variables: Output
int a, b, c; float a = 8.958;

a = 3; printf("%f ", a);

b = 8; double a = -9.8;

c = a + b; printf("%lf ", a);

printf(“%d” , c); char a = ‘Z’;


printf("%c", a);
char a = 90; char a = ‘Z’;
printf("%c", a); printf("%d", a);
Data input

Format specifier Variable with & sign float b;

scanf(what, where); scanf("%f", &b);

int a; double c;
scanf("%i", &a); scanf("%lf", &c);
or char d;
scanf("%d", &a); scanf("%c", &d);
Little QUIZ (What is the output if user
enters 0)

int a; char a;
scanf("%i", &a); scanf("%c", &a);
printf("%d", a); printf("%d", a);
Naming convention of a variable

• Capital letters A-Z, lowercase letters a-z, digits 0-


9, and the underscore character
• First character must be a letter or underscore
• Usually only the first 31 characters are significant
• There can be no embedded blanks
• Keywords cannot be used as identifiers
• Identifiers are case sensitive
Key words in C

Keyw ord s

auto double int struct


break else long switch
case enum register typedef
char extern return union
const float short unsigned
continue for signed void
default goto sizeof volatile
do if static while
Same valid/invalid variable names

• First_tag
• char
• Price$
• group one
• average_number
• int_
• 8boys
Declaring variables

1 /* Fig. 2.1: fig02_01.c


2 A first program in C */
3 #include <stdio.h>
4
5 int main()
6 {
7 int interestrate;
8 char ch;
9 return 0;
10 }
Assigning values

• Two ways:
– Using scanf
int c;
scanf(“%d”,&c);
– Using assignment operator
int c;
c = 10;
Arithmetic operators on int and char

• Arithmetic operators:
C o p era tio n Arithm etic Alg eb ra ic C exp ressio n
o p era to r exp ressio n
Addition + f+7 f + 7
Subtraction - p–c p - c
Multiplication * bm b * m
Division / x/y x / y

Modulus % r mod s r % s

• Rules of operator precedence:


Operator(s) Operation(s) Order of evaluation (precedence)

() Parentheses Evaluated first. If the parentheses are nested, the


expression in the innermost pair is evaluated first. If
there are several pairs of parentheses “on the same level”
(i.e., not nested), they are evaluated left to right.
*, /, or % Multiplication Division Evaluated second. If there are several, they are
Modulus evaluated left to right.
+ or - Addition Evaluated last. If there are several, they are
Subtraction evaluated left to right.
Arithmetic (II)

• Arithmetic calculations are used in most programs


– Use * for multiplication and / for division
– Integer division truncates remainder
7 / 5 evaluates to 1
– Modulus operator returns the remainder
7 % 5 evaluates to 2
• Operator precedence
– Some arithmetic operators act before others (i.e., multiplication
before addition)
• Use parenthesis when needed
– Example: Find the average of three variables a, b and c
• Do not use: a + b + c / 3
• Use: (a + b + c ) / 3
Operator Precedence examples

• Find the values of the followings:

5+6*7-8/7 = 46

5*4/3 = 6

5/(6+7) – 8%8 = 0
Working with characters

• Take a character as input and print ASCII value.

• Convert uppercase to lower case and vice versa

• Write down a program that will take a capital


letter as input and will print n-th letter starting
from the letter given as input (wrap around).
Assume that n is a nonnegative integer less than
or equal to 25. Prompt the user to know the value
of n. (You can not perform condition checking to
solve this problem).
main( ){
int npos,cpos,n;
char ch,nch;
scanf("%c%d",&ch,&n);
cpos = ch - ‘A';
npos = (cpos +n)%26;
nch = npos + ‘A';
printf("%c",nch);
}
Working with int…examples
• To extract digits of a number:
– Given a 4 digit number, can you reverse it?
– Modulus (%) and division (/) operators are good enough.

• Interchange content of two variables:


 Using one additional variable
 Using no additional variable

• Time difference of two cities.


– Dhaka: 11:20
– Mumbai: 10:50
Military time to standard time
Increment and Decrement Operators

• Increment operator (++) can be used instead of c=c+1


• Decrement operator (--) can be used instead of c=c-1.
• Preincrement
– Operator is used before the variable (++c or --c)
– Variable is changed, then the expression it is in is evaluated
• Postincrement
– Operator is used after the variable (c++ or c--)
– Expression executes, then the variable is changed
Increment and Decrement Operators (II)

• When variable not in an expression


– Preincrementing and postincrementing have the same effect.
c = 20;
++c;
printf(“%d”,c);

and

c = 20;
c++;
printf(“%d”,c);

have the same effect.


both will print 21;
Increment and Decrement Operators (III)

• When variable in an expression


– Pre-incrementing and post-incrementing DOES NOT have the same
effect.
– Preincrement updates the variable first then evaluates expression
– Postincrement evaluates the expression first then updates the variable

c = 5;
printf( "%d", ++c); Prints 6
printf( "%d", c++); Prints 5

In either case, c now has the value of 6


Little Quiz for you (what is the output)

int a, b, c;
b = 10;
c = 20;
a = b+++--c;
printf("%d %d %d", a, b, c);

(a) Compilation error


(b) 30 10 20
(c) 30 11 19
(d) 29 11 19
(e) 29 10 20
Assignment Operators
(shorthand notations)
• Assignment operators abbreviate assignment expressions
c = c + 3;
can be abbreviated as c += 3; using the addition assignment
operator
• Statements of the form
variable = variable operator expression;
can be rewritten as
variable operator= expression;

• Examples of other assignment operators:


d -= 4 (d = d - 4)
e *= 5 (e = e * 5)
f /= 3 (f = f / 3)
g %= 9 (g = g % 9)
Arithmetic Operators for float or double

• Arithmetic operators:

C operation Arithmetic Algebraic C expression


operator expression
Addition + f+7 f + 7
Subtraction - p–c p - c
Multiplication * bm b * m
Division / x/y x / y

Integer division vs Fractional division

Example: Integer division: Example: Fractional division:


5/3 = 1 5.0/3.0=1.667

What about: 5.0/3 or 5/3.0?

Fractional division!!
Working with fractions: Example 1

Sonali Bank annually provides interests at a


certain rate to all its clients having a savings
account with the bank. Write down a program that
will take initial balance, and annual interest rates
and will determine and print: b = 1,00,000
(1) Balance after one year r = 10%
interest1 = 10,000
(2) Balance after two years b1 = 1,00,000 + 10,000
= 1,10,000
(3) Balance after n years where
n will also be input to your b1 = 1,10,000
r = 10%
program. interest2 = 11,000
b2 = 1,10,000 + 11,000
= 1,21,000
Type conversion

• Lower to higher auto-conversion (called auto-casting)


int x = 9;
float y = x; //OK no warning no error

• Higher to lower still auto-casting but generates warning


float x = 9.5;
int y = x; //OK but generates warning but no error
int y = (int) x // No warning called casting

• Work out the followings:


float x = 5/3; float x = 5.0/3;
int y = 5/3; int y = 5.0/3;

x = 1.0 y = 1 x = 1.6667 y = 1
Type conversion (example)

Floor(x) 

x 
 : The largest integer not exceeding x
Ceil(x)


x 
 : The smallest integer not less than x
Round(x)


x 
 : The nearest integer (in case of tie take greater one)

According to the above definition when x = 2.3,


floor(x) = 2, ceil(x) = 3 and round(x) = 2

Write down a program that will take a positive fractional number as input
and will print its floor, ceil and round.
Problem Solving Methodology

1. State the problem clearly


2. Describe the input/output information
3. Work the problem by hand, give example
4. Develop a solution (Algorithm Development)
and Convert it to a program (C program)
5. Test the solution with a variety of data
Working with fractions: Example 2
(x1,y1)

1. Problem statement (x2, y2)

Compute the straight line


distance between two points in a plane
2. Input/output description
Point 1 (x1, y1)
Distance between two points (distance)
Point 2 (x2, y2)
Example 2 (cont’d)

3. Hand example
distance  side12  side2 2
side1 = 4 - 1 = 3
side2 = 7 - 5 = 2
distance  side12  side22
2 2
distance  3  2
distance  13  3.61
Example 2 (cont’d)

4. Algorithm development and coding


a. Generalize the hand solution and list/outline the necessary
operations step-by-step
1) Give specific values for point1 (x1, y1) and point2 (x2,
y2)
2) Compute side1=x2-x1 and side2=y2-y1
3) Compute distance  side12  side2 2
4) Print distance
b. Convert the above outlined solution to a program using any
language you want (see next slide for C imp.)
Example 2 (cont’d)
Example 2 (cont’d)

5. Testing
• After compiling your program, run it and see if it
gives the correct result.
• Your program should print out
The distance between two points is 3.61
• If not, what will you do?
Modification to Example 2

How will you find the distance between two other points (2,5) and (10,8)?

x1=2, y1=5, x2=10, y2=8,

You might also like