Vous êtes sur la page 1sur 31

CS1100 – Introduction to Programming




• Programming.





• Model. History of a computing machine.

Lectures

• Representation of numbers. 
 1,2 and 3

• Started with C-programming.








• Data Types in C and representations, range 




of values for each type.



 Lectures


• Arithmetic operators, and operator
3, 4 and
precedence. 

 5.
• Formatting the Input and the Output with  


various data types.





Weighted sum of 2 numbers

• Recall x denotes marks in Maths, y denotes marks in Physics.


• We wish to calculate weighted total such that Maths marks
are given 30% weightage and Physics marks are given 70%
weightage.
30
• z = 100 70
x + 100 y.
Weighted sum of 2 numbers

#include <stdio.h>

/* weighted sum 2 integers */

main() {
int mathMarks = 98;
int phyMarks = 99;
int total;

total = (30/100)*mathMarks + (70/100)*phyMarks;


printf("%d\n", total);
}

• What is the output of the program?


• Is the variable total still guaranteed to be an integer?
Weighted sum of 2 numbers

#include <stdio.h>

/* weighted sum 2 integers */

main() {
int mathMarks = 98;
int phyMarks = 99;
float total; /* float variable */

total = (30/100)*mathMarks + (70/100)*phyMarks;


printf("%f\n", total); /* change here */
}

• What is the output of the program?


30
• 100 70
and 100 evaluate to 0 and therefore total is zero.
Weighted sum of 2 numbers – a correct program

#include <stdio.h>

/* weighted sum 2 integers */

main() {
int mathMarks = 98;
int phyMarks = 99;
float total;

total = (30.0/100)*mathMarks + (70.0/100)*phyMarks;


printf("%f\n", total);
}

• What is the output of the program?


Learnings so far..

• C allows different kinds of variables to be declared.


• C defines arithmetic operators, like +, -, *, /,...
• Have meaningful names for variables
mathMarks, phyMarks, total
choose variable names to be indicative – good programming practice

avoid reserved words like int, float, .. as variable names.

• C defines arithmetic operators, like +, -, *, /,...


• Assignment operator “=”: used to change contents of a
variable.
Exercise: Swap two integers

• Two integers x and y contain 10 and 20 respec.


• Need to exchange values in x and y .
swap two integers.
• Write a C program to do the same.
Swap – fill in correct code

#include<stdio.h>

main() {
int x, y;

printf("Enter x:");
scanf("%d", &x);
printf("Enter y:");
scanf("%d", &y);

/* Fill in code here */

printf("x = %d\n", x);


printf("y = %d\n", y);
}
Variable modification

• A C program is a sequence of commands that modify different


variables using different operators.
• Basic operators in C.
• Operator precedence and associativity.
• Basic data types in C.
• How much space does a particular data type take?
• How to input and output variables of a particular type?
Basic operators in C

• Arithmetic operators: +, -, *, /
• Modulus operator: %
x % y : remainder when x is divided by y .
• Assignment operator: =

Operator precedence:
• first: parenthesized sub-expression; inner-most to outer-most.
• second: *, /, % ; left to right.
• third: +, - ; left to right.
• total = 30 / 100 * mathMarks + 70 / 100 * phyMarks;
total = ((30 / 100) * mathMarks) + ((70 / 100) * phyMarks);

• z=a+b*c*d%e-f/g
z = a + (((b * c) * d) % e) - (f / g)
Increment / decrement operators

• ++, --
• prefix and post-fix only to a variable.

#include<stdio.h>

main() {
int x, y;

int n = 10;

x = n++;
y = ++n;
printf(" x = %d, y = %d\n", x, y);

}
Assignment operator =

Form: variable-name = expression


• z = x+y
• x+y = z Incorrect form
• Assignment between different data types.
• What happens if you assign float to int and vice versa?
• Multiple assignments.
• x = y = z = (a + b);
• evaluations happen right to left.
• x = x + 10 can be written as x += 10;
• instead of +, we can also have -, *, /, %
Exercises

Write a program that reads an integer from the input and prints 0
if the integer is even and 1 if the integer is odd.

Write a program that takes as input a 3 digit integer, separates the


digits of the integer and prints the individual digits separated by
spaces.
For example if the input is 194, then your program must print
194
Integers in C and Storage

• We have used int and float data types till now.


• An integer variable is assigned 2 bytes (16 bits) to be stored.
(Sometimes 4 bytes).
• In the 2s complement form this allows storage of values from

−215 to 215 − 1

−32, 768 to 32, 767


• There are limits to representation - we better choose the right
type.
• What other data type can we use to store integers?
• unsigned int, long, unsigned long.
unsigned int

• Typically 4 bytes storage.


• Output an unsigned int: printf(”%u”, x);
• Input an unsigned int: scanf(”%u”, &x);
• Storage: binary format.
The Integers - The detailed Chart
char

• Typically 1 byte storage.


• Every character has a unique code assigned to it (ASCII code).
A = 65, B = 66
• How do you find the code for a character?
#include<stdio.h>

main() {
printf ("%c\n", 65);
}
• Output a character: printf(”%c”, x);
• Input a character: scanf(”%c”, &x);
float

• Typically 4 bytes storage.


• Output an unsigned int: printf(”%f ”, x);
• Input an unsigned int: scanf(”%f ”, &x);
• How are fractions stored?
Binary vs decimal fractions

• (10.11)2 = (1 × 2) + (1 × 1) + (1 × 12 ) + (1 × 1
22
) = (2.75)10
• (0.90625)10 = ( )2
• (0.9)10 = ( )2
Decimal Fraction  Binary Fraction (1)
Convert (0.90625)10 to binary fraction
0.90625
2 0.90625 = ½(1+0.8125)
0.8125 + integer part = ½(1+ ½(1+0.625))
1 2 = ½(1+ ½(1+ ½(1+0.25)))
0.625 + integer part = ½(1+½(1+ ½(1+½(0+0.5))))
1 2 = ½(1+½(1+½(1+½(0+½(1+0.0)))))
0.25 + integer part = ½+1/22+1/23+0/24 +1/25
1 2 = (0.11101)2
0.5 + integer part
0 2
0 + integer part 1
Thus, (0.90625) = (0.11101)2
10
SD, PSK, NSN, DK, TAG – CS&E, IIT M 44
Decimal Fraction  Binary Fraction (2)
Convert (0.9)10 to binary fraction
0.9
2
For some fractions, we do
0.8 + integer part 1
2 not get 0.0 at any stage!
0.6 + integer part 1 These fractions require an
2 infinite number of bits!
0.2 + integer part 1 Cannot be represented
2 exactly!
0.4 + integer part 0
2
0.8 + integer part 0 Repetition
(0.9) = 0.11100110011001100 . . . = 0.11100
10
SD, PSK, NSN, DK, TAG – CS&E, IIT M 45
Binary vs decimal fractions

• (10.11)2 = (1 × 21 ) + (0 × 20 ) + (1 × 12 ) + (1 × 212 ) = (2.75)10


• (0.90625)10 = (0.11101)2
• (0.9)10 = (0.111001110011100..)2
Fixed point vs floating point representation

Fixed point
• Position of radix point is fixed and is same for all numbers.
• Lets say we have 3 digits after radix point.
• (0.120 × 0.120)10 = (0.014)10
• A digit is lost.

Floating point
• 1.20 × (10)−1 × 1.20 × (10)−1 = 1.44 × (10)−2
• Wider range of numbers can be represented.
• IEEE standard: 32 bits are split as follows:
• First bit for sign.
• Next 8 bits for exponent.
• Next 23 bits for mantissa.
• (−39.9)10 = (−100111.11100)2 = (−1.0011111100)2 × 25 .
Floats - different types
Output floats in C

printf(“ %w.p f ”, x);


• w.p is optional.
• w : total width of the field.
• p : precision (digits after decimal).

#include<stdio.h>
main() {

float x = 2.00123;
printf ("x = %5.4f\n", x);
printf ("x = %8.7f\n", x);
}
Circumference of circle

#include<stdio.h>

main() {
float radius;
float circum;

printf("Enter radius : ");


scanf("%f", &radius);
circum = 2* (22.0/7) * radius;

printf ("radius = %f, circum = %f\n", radius, circum);


}

• How to print output only upto 2 decimals?


Circumference of circle – formatted output

#include<stdio.h>

main() {
float radius;
float circum;

printf("Enter radius : ");


scanf("%f", &radius);
circum = 2* (22.0/7) * radius;

printf ("radius = %5.2f, circum = %5.2f\n", radius, cir


}
Output statement

printf (format-string, var 1 , var 2 , ..., var n )

Format string specifies


• How many variables to expect?
• Type of each variable.
• How many columns to use for printing? (width)
• What is the precision? (if applicable)
• Common mistakes:
• comma missing after the double quotes.
• mismatch in the actual number of variables given and those
expected in the format string.
Formatted output

printf (‘‘%w.pC", x);

• w, p and C are place holders, can take different values.


• w: width of the output. (optional)
• p: precision of the output. (optional)
• C: Conversion character.
• d : integer
• f : float
• c : character
• x : hexadecimal
• o : octal
• u : unsigned int
• e : real decimal in exponent form
Input Statement

scanf (format-string, &var 1 , &var 2 , ..., &var n )

Format string specifies


• How many variables to expect?
• Type of each variable.
• Common mistakes:
• comma missing after the double quotes.
• mismatch in the actual number of variables given and those
expected in the format string.
• & missing before the variable.
Learnings so far..

• Variables in C.
• Data types in C - how they are stored. Why a programmer
should be worried.
• Arithmetic operators. Precedence of operators.
• Assignment operator “=”
• Formatting the input and output - the printf and scanf
• What is coming up?
• Compilation and Exection of C-programs.
• More Programming.