c programming: variables, expressions part ii. data types of arithmetic expressions relational...

36
C programming: Variables, Expressions part II

Upload: priscilla-reynolds

Post on 26-Dec-2015

262 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: C programming: Variables, Expressions part II. Data Types of Arithmetic Expressions Relational Expressions Logical Expressions Multiple Assignments Compound

C programming: Variables, Expressions part II

Page 2: C programming: Variables, Expressions part II. Data Types of Arithmetic Expressions Relational Expressions Logical Expressions Multiple Assignments Compound

Data Types of Arithmetic Expressions

Relational Expressions

Logical Expressions

Multiple Assignments

Compound Assignment OperatorsIncrement/Decrement Operators

Operator Precedence Table

Exercises

Contents

Page 3: C programming: Variables, Expressions part II. Data Types of Arithmetic Expressions Relational Expressions Logical Expressions Multiple Assignments Compound

Data Type of an Arithmetic Expression

• Data type of an expression depends on the type of its operands – Data type conversion is done by the compiler

• If operators are *, /, +, or – , then the type of the result will be:– integer, if all operands are integer.– float, if all operands are integer and floats• If at least one operand is float and there is no double

– double, if at least one operand is double

Page 4: C programming: Variables, Expressions part II. Data Types of Arithmetic Expressions Relational Expressions Logical Expressions Multiple Assignments Compound

Data Type of an Arithmetic Expression

Example

int * int;

int + float;

double / float;

int – double;

int*int/float;

float*int-int*double;

int*(float+double);

int/int;

result int

result float

result double

result double

result double

result double

result float

result int

Page 5: C programming: Variables, Expressions part II. Data Types of Arithmetic Expressions Relational Expressions Logical Expressions Multiple Assignments Compound

Data Type of an Arithmetic Expression : (Continued)

• The data type of the target variable is also important

• If the result is a real number and the target variable is declared as integer, only the integer part of the result will be kept, and decimal part will be lost.

Example

The result is calculated as 16.66667

But avg will be 16

on the left hand side of the assignment operator (‘=‘)

int avg;float sum=100.0, cnt = 6.0;avg = sum / cnt;

Page 6: C programming: Variables, Expressions part II. Data Types of Arithmetic Expressions Relational Expressions Logical Expressions Multiple Assignments Compound

Data Type of an Arithmetic Expression : (Continued)

• Division operation is normally expected to give a real result but actually it may produce an integer result.

ExampleThe result of the division will be 16avg will be 16.0

float avg;int sum=100, cnt =

6;avg = sum / cnt; • Only the integer part of the result will be considered if

two operands are integer • Even when the target variable is float

Page 7: C programming: Variables, Expressions part II. Data Types of Arithmetic Expressions Relational Expressions Logical Expressions Multiple Assignments Compound

Data Type of an Arithmetic Expression : (Continued)

#include <stdio.h>int main(){

int i=5, j=2, rm;float dv;j=j+1;rm= i%j;

dv= i/j; printf(“%d %f”,rm,dv);} 

Example :

Page 8: C programming: Variables, Expressions part II. Data Types of Arithmetic Expressions Relational Expressions Logical Expressions Multiple Assignments Compound

Data Type of an Arithmetic Expression : (Continued)Type Casting

#include <stdio.h>int main(){

int i=5, j=2, rm;float dv;j=j+1;rm= i%j;

dv= (float)i/j; printf(“%d %f”,rm,dv);} 

Example :

Type cast: tells the compiler to treat i as a floating point number

Because of the type cast the result of the arithmetic operation is float and the target is also float.This means, we will see the correct result on the output.

Page 9: C programming: Variables, Expressions part II. Data Types of Arithmetic Expressions Relational Expressions Logical Expressions Multiple Assignments Compound

Data Type of an Arithmetic Expression : (Continued)Type Casting

#include <stdio.h>int main(){

int i=5, j=2, rm;float dv;j=j+1;rm= i%j;

dv= i/(float)j;printf(“%d %f”,rm,dv);

Example :

Type cast: tells the compiler to treat j as a floating point number

It does not matter whether the first or the second operand is float. If an arithmetic operation contains integer and floating point operands the result will be float.

dv= i/j;

Page 10: C programming: Variables, Expressions part II. Data Types of Arithmetic Expressions Relational Expressions Logical Expressions Multiple Assignments Compound

Relational Expressions:

• Relational expression is an expression which compares 2 operands and returns a TRUE or FALSE answer.Example : a >= b , a == c , a >= 99 , ‘A’ > ‘a’

• Relational expressions are used to test the conditions in selection, and looping statements.

== Equal To

!= Not Equal To

< Less Than

<= Less Than or Equal To

> Greater Than

>= Greater Than or Equal To

The operator that tests for equality is “= =”, not “=”.

“=” is the assignment operator.

Page 11: C programming: Variables, Expressions part II. Data Types of Arithmetic Expressions Relational Expressions Logical Expressions Multiple Assignments Compound

Relational Expressions: (Continued)

int k=7;if ( k = 5) printf(“ k is 5”);

Example

OutputA very common mistake is to use assignment (=) operator

instead of the relational comparison operator (==)

This is an assignment statement. It actually assigns 5 to the variable k.Assignment statements are always evaluated to TRUE!!!!.

Page 12: C programming: Variables, Expressions part II. Data Types of Arithmetic Expressions Relational Expressions Logical Expressions Multiple Assignments Compound

Relational Expressions: (Example)

• Write a program which will prompt the user to enter 2 integer numbers, ‘num1’, ‘num2’.

• The program would then compare these 2 numbers and display one of the following 3 options:

num1 > num2num1 < num2num1 = num2

Page 13: C programming: Variables, Expressions part II. Data Types of Arithmetic Expressions Relational Expressions Logical Expressions Multiple Assignments Compound

START

NUM1 , NUM2

?NUM1 ==NUM2

NUM1 = NUM2?

NUM1 < NUM2

NUM1 < NUM2

NUM1 > NUM2

STOP

FALSE FALSETRUE

Relational Expressions: (Example)Flowchart

Page 14: C programming: Variables, Expressions part II. Data Types of Arithmetic Expressions Relational Expressions Logical Expressions Multiple Assignments Compound

Relational Expressions: (Continued)#include <stdio.h>int main(){ int num1, num2; printf("Enter the Number 1 :"); scanf("%d",&num1); printf("Enter the Number 2 :"); scanf("%d",& num2); if (num1 == num2) printf("\n Number1 is equal to Number

2"); else if (num1<num2) printf("\n Number 1 is smaller then

Number 2"); else printf("\n Number 1 is greater then

Number 2"); }

Page 15: C programming: Variables, Expressions part II. Data Types of Arithmetic Expressions Relational Expressions Logical Expressions Multiple Assignments Compound

Logical Expressions

• Logical Expressions are used to carry out logical operations on – logical operands or – relational expression results.

• Logical Operators: Operator Meaning

! Not (Highest Priority)&& And|| Or (Lowest Priority)

. ______.

Page 16: C programming: Variables, Expressions part II. Data Types of Arithmetic Expressions Relational Expressions Logical Expressions Multiple Assignments Compound

Logical Expressions: (Continued)

A B A || BF F F

T F T

F T T

T T T

OR ( || ) TABLE

Page 17: C programming: Variables, Expressions part II. Data Types of Arithmetic Expressions Relational Expressions Logical Expressions Multiple Assignments Compound

Logical Expressions: (Continued)

A B A && B

F F FT F FF T FT T T

AND ( && ) TABLE

Page 18: C programming: Variables, Expressions part II. Data Types of Arithmetic Expressions Relational Expressions Logical Expressions Multiple Assignments Compound

Logical Expressions: (Continued)

A !AF TT F

NOT ( ! ) TABLE

Page 19: C programming: Variables, Expressions part II. Data Types of Arithmetic Expressions Relational Expressions Logical Expressions Multiple Assignments Compound

Logical Expressions: (Example)

• Write an expression to check whether num1 is between 1 and 100 (inclusive)

if ( (num1 >= 1) && (num1 <=100) )…

• Here two conditions (num1 >= 1), and (num1 <=100) will be tested.

• Since the conditions are connected with && (And) logical operator, the overall result of the condition will be true only for the case when both of the conditions are true.– the action part of the “the overall result of the condition will be true

if” statement will be executed only when both conditions are satisfied

Page 20: C programming: Variables, Expressions part II. Data Types of Arithmetic Expressions Relational Expressions Logical Expressions Multiple Assignments Compound

Logical Expressions: (Example)#include <stdio> /* Calculate the Letter Grade of a student*/ void main() { int result; char grade; printf("\n Enter the exam result :";

scanf(“%d”,&result);if (result < 50)

printf("\n Student got F“); if ((result < 60) && (result >= 50))

printf("\n Student got D“);if ((result < 70) && (result >= 60))

printf("\n Student got C“);if ((result < 80) && (result >= 70))

printf("\n Student got B“);if (result >= 80)

printf("\n Student got A“);

} /* End of main()*/

Page 21: C programming: Variables, Expressions part II. Data Types of Arithmetic Expressions Relational Expressions Logical Expressions Multiple Assignments Compound

Multiple Assignment Statements• It is sometimes necessary to assign the same value to two or more

variables. This can be achieved in a single statement.• All targets must be variables• The value to be assigned must at the r i g h t m o s t positionExample:

sum = 0;count = 0;

Can be written as sum = count = 0;

sum = 0=count = 0; 0=sum=count ; sum = 0=count; sum,count = 0;

Page 22: C programming: Variables, Expressions part II. Data Types of Arithmetic Expressions Relational Expressions Logical Expressions Multiple Assignments Compound

The Compound Assignment Operators

Example

Operator Meaning

+ = is increased by

– = is decreased by

* = is multiplied by

/ = in divided by

k = k + 5; k += 5;

m = m - 100 ; m – = 100 ;

j = j * m ; j * = m ;

p = p \ r ; p / = r ;

Page 23: C programming: Variables, Expressions part II. Data Types of Arithmetic Expressions Relational Expressions Logical Expressions Multiple Assignments Compound

Increment and Decrement Operators

Example

Operator Meaning

+ + Increment by one

– - Decrement by one

k = k + 1; k ++; or ++k;

k = k - 1; k ++; or ++k;

k = k++;

k = k--;

or

or

or

or

k = ++k;

k = --k;

Postfix Operators Prefix Operators

Page 24: C programming: Variables, Expressions part II. Data Types of Arithmetic Expressions Relational Expressions Logical Expressions Multiple Assignments Compound

Increment and Decrement Operators

• If the value produced by ++ or – – is not used in an expression, it does not matter whether it is a pre or a post increment (or decrement).

• When ++ (or – –) is used before the variable name, the computer

first increments (or decrements) the value of the variable and then uses its new value to evaluate the expression.

• When ++ (or – –) is used after the variable name, the computer uses the current value of the variable to evaluate the expression, and then it increments (or decrements) the value of the variable.

Page 25: C programming: Variables, Expressions part II. Data Types of Arithmetic Expressions Relational Expressions Logical Expressions Multiple Assignments Compound

Increment and Decrement OperatorsExamplesFor each expression given below assume

a = 5; b = 7; c = 3;

d = ++b - a++; d = 8 – 5 = 3, b = 8, a=6After execution

d = a-- - --c; d = 6 – 2 = 4, a = 5, c=2After execution

d = a-- + c--; d = 5 + 2 = 7, a = 4, c=1After execution

d = --a + --c ; d = 3 + 0 = 3, a = 3, c=0After execution

d += ++d ; d = d + (d+1) = 3 + 4 = 7After execution

Page 26: C programming: Variables, Expressions part II. Data Types of Arithmetic Expressions Relational Expressions Logical Expressions Multiple Assignments Compound

Operator PrecedenceOperators Associatively Type[ ] ( ) Left to right Highest++ -- ! Right to left Unary* / % Left to right Multiplicative+ - Left to right Additive< <= > >= Left to right Relational== != Left to right Equality&& Left to right Logical and|| Left to right Logical or?: Right to left Conditional= += -= *= /= %= Right to left Assignment

Page 27: C programming: Variables, Expressions part II. Data Types of Arithmetic Expressions Relational Expressions Logical Expressions Multiple Assignments Compound

ExercisesWrite a program which will prompt the user to input the length and the with of a triangle. The program would then calculate and display the area.

#include <stdio.h>main(){ float height, base, area; printf(“Enter the height = ”); scanf(“%f”,&height); printf(“Enter the base = ”); scanf(“%f”,&base); area = 0.5*height *base; printf(“The area is %f”,area);} /* End of Program*/

Page 28: C programming: Variables, Expressions part II. Data Types of Arithmetic Expressions Relational Expressions Logical Expressions Multiple Assignments Compound

ExercisesWrite a program which will prompt the user to input the temperature in Fahrenheit. The program will then convert the Fahrenheit value to Centigrade using the following formula and display the result.

C = 9 / 5 ( f – 32 ).

# include <stdio.h>main(){ float c, f; printf(“Enter the Fahrenheit temperature= ”); scanf(“%f”,&f); c = ( float ) 5/9 * (f – 32); printf(“The Celsius temperature is %f”,c);}

Page 29: C programming: Variables, Expressions part II. Data Types of Arithmetic Expressions Relational Expressions Logical Expressions Multiple Assignments Compound

ExercisesWrite a C program code which will prompt the user to input integer values to X and Y. It will then calculate and display X2+Y2 .

# include <stdio.h>main(){ int x, y, result; printf(“Enter X :”); scanf(“%d”,&x); printf(“Enter Y :”; scanf("%d”,&y); result = x*x + y*y; printf(" x*x + y*y =”); printf(“%d”,result);}

# include <stdio.h>main(){ int x, y; printf(“Enter X :”); scanf("%d”,&x); printf(“Enter Y :”; scanf("%d”,&y); printf(" x*x + y*y =”); printf( “%d”,x*x + y*y);}

Page 30: C programming: Variables, Expressions part II. Data Types of Arithmetic Expressions Relational Expressions Logical Expressions Multiple Assignments Compound

ExercisesWrite a C program code which will prompt the user to input 3 characters. The program would then display these characters from last to first.

# include <stdio.h>main(){ char ch1=‘ ’, ch2=‘ ’, ch3=‘ ’; printf(“\n Enter a character string 3 characters long = ”); scanf(“%c%c%c”,&ch1,&ch2,&ch3); printf(“The reverse of your string is ”); printf(“%c %c %c”,ch3,ch2,ch1);}

Page 31: C programming: Variables, Expressions part II. Data Types of Arithmetic Expressions Relational Expressions Logical Expressions Multiple Assignments Compound

ExercisesWrite a C program code which will prompt the user to input a value for hours. The program would then transform and display this value of hours in minutes and seconds.

# include <stdio.h>main(){

int hours, min;long sec;printf(“Hours = “);scanf(“%d”,&hours);min = hours * 60; sec =(long) min * 60;printf(“ hours =%d minutes=%d seconds= %ld“, hours, min, sec);

}

Page 32: C programming: Variables, Expressions part II. Data Types of Arithmetic Expressions Relational Expressions Logical Expressions Multiple Assignments Compound

Exercises

Write a C program that reads in an integer value and then display it in float data type.

# include <stdio.h>main(){ int x; float y; printf(“Enter an Integer = ”); scanf(“%d”,&x); y=x; printf(“Now your value is a real number = %f”, y);}

Page 33: C programming: Variables, Expressions part II. Data Types of Arithmetic Expressions Relational Expressions Logical Expressions Multiple Assignments Compound

ExercisesWrite a C program that reads in radius (r) and height (h) of a cone and then calculates and displays the volume of the cone. (Hint: Vcone = 1/3*3.14*r2 * h)

# include <stdio.h>main(){ float r, h; /*r=radius, h=height*/ float v; /*v=volume*/ printf(“\n Enter the radius = ”); scanf(“%f”,&r); printf(“\n Enter the height = ”; scanf(“%f”,&h); v = 1 / 3* 3.14 * r * r * h; printf(“\n The volume of the cone is %f”,v);}

Page 34: C programming: Variables, Expressions part II. Data Types of Arithmetic Expressions Relational Expressions Logical Expressions Multiple Assignments Compound

ExercisesWrite a C program that reads two resistance values (R1 and R2) that are connected as parallel on a circuit, and it calculates the equivalent resistance of the circuit. [ Hint:Equivalent resistance Re = R1R2 / (R1 + R2) ]

# include <stdio.h>main(){ int r1, r2; float re; printf(“\n Enter the resistance 1=” ); scanf(“%d”,&r1); printf(“\n Enter the resistance 2=” ); scanf(“%d”,&r2); re = (float) r1 * r2 / (r1 + r2); printf("\n The equivalent Resistance is “,re);;}

Page 35: C programming: Variables, Expressions part II. Data Types of Arithmetic Expressions Relational Expressions Logical Expressions Multiple Assignments Compound

Exercises

Write a C program that reads in an integer (x) and then calculates and displays its square (x2) and its cube (x3).

# include <stdio.h>main(){ int x, x2, x3; printf(“ X = ”); scanf(“%d”,&x); x2 = x * x; x3 = x2 * x; printf(“\n Square of X is %d cube of X is %d”,x2,x3); }

Page 36: C programming: Variables, Expressions part II. Data Types of Arithmetic Expressions Relational Expressions Logical Expressions Multiple Assignments Compound

THAT’S IT FOR NOW!