Title: Agenda
1Agenda
- Variables (Review)
- Example
- Input / Output
- Arithmetic Operations
- Casting
- Char as a Number (if time allow)
2Why do We Need Variables?
- Computer programs manipulate data
- Data is given as input or calculated throughout
the program - To be later accessed, variables must be
remembered - Thus, variables are stored in the memory
- Variable name ? memory address
3What is a Variable?
- A memory chunk that is linked to a name
- Stores data (of a predefined type)
- Read/write
- Definition type name
- Assignment name value
- Definition assignment type name value
4Why do we Need Different Types?
- Saving memory
- Execution speed
- Makes compiler life easier
5Data representation
- Bit a binary digit 0 or 1
- Bits are always grouped!
- Byte a group of 8 bits
- Therefore, a byte can represent up to 28256
values - The values can range from 0 to 255 or from -128
to 127 - The fundamental data unit of a computer
- Word a group of (usually) 4 (or 8) bytes
- 4 bytes 32 bits
- Value range 0 to 232 -1 (4,294,967,295 )
- Or, more often -231 to 231-1 (-2,147,483,648 to
2,147,483,647)
6Data Types
- char a single byte character
- Integer
- short int (or short) usually 2 bytes (rarely
used) - int - usually 4 bytes
- long int (or long) 4 or 8 bytes (rarely used)
- Real
- float a single precision real number usually
4 bytes - double a double precision real number usually
8 bytes - long double - a double precision real number
usually 8 bytes (rarely used) - Signed vs. unsigned
7Variable Naming Rules
- Letters, digits, underscores
- Legal i, CSE_5a, a_very_long_name_that_isnt_very_
useful, fahrenheit - Illegal
- 5a_CSE (first character cannot be a digit)
- my-var
- Case sensitive
- CSE_5a is different from cse_5a
- Variables names should have a meaning
8Agenda
- Variables (Review)
- Example
- Input / Output
- Arithmetic Operations
- Casting
- Char as a Number (if time allow)
9Example Swap Two Variables
/ Swap1 swaps two variables a,b using a
temporary variable / include ltstdio.hgt int
main() int a 2, b 5, temp temp a a
b b temp printf("a d, b
d\n",a,b) return 0
10Example Swap Two Variables
How to swap two variables without using a
temporary variable?
11Example Swap Two Variables
int a, b // User is requested to enter a and
b printf("Enter a ") scanf("d",
a) printf("Enter b ") scanf("d", b) a a
b // this way b is still "alive" b a - b //
a b - b a a a - b // a b - a
b printf("a d, b d\n", a, b)
12Agenda
- Variables (Review)
- Example
- Input / Output
- Arithmetic Operations
- Casting
- Char as a Number (if time allow)
13printf and scanf
- printf prints to the screen.
- Can also accept variables and print their values
- scanf gets values from the standard input and
assigns to corresponding variables
14printf can Print Variable Values
- printf ("zd\n", z )
- The sequence d is a special sequence and is not
printed - It indicates to printf to print the value of an
integer variable written after the printed string
15scanf Gets Input from the User
- scanf("lf", var)
- Wait for the user to type in a double value, and
store it in the variable var - var address of var (we shall deal with it
later on the course) - To get 2 doubles from the user, use scanf("lf
lf", var1, var2)
16prinft/scanf Conversion Codes
- A ltconversion codegt in the printf/scanf string
is replaced by a respective variable - c a character
- d an integer, u an unsigned integer
- f a float
- lf a double
- g a nicer way to show a double (in printf)
- - the character (in printf)
17Example
- int a 2, b 3, c, e
- double h
- c a b
- printf(d\n,c) // 6
- printf(d d d\n,a,b,c) // 2 3 6
- printf(d d d\n,a,b,ab) // 2 3 6
- printf(d\n,23) // 6
- scanf(d lf, e, h)
18What does the means?
- scanf("d", var)
- var value of var
- var address of var
- Our intension is to insert the input to the vars
cell in memory - What happens if we discard the ?
19Agenda
- Variables (Review)
- Input / Output
- Arithmetic Operations
- Casting
- Char as a Number (if time allow)
20Arithmetic operators
- An operator is a mathematical action performed on
constants and/or variables (operands) - Some operators
- Braces ()
- Assignment
- Addition
- Subtraction -
- Multiplication
- Division /
- Modulo
21Example Reverse a 3-digit Number
int number, newNumber int ones, tens,
hundreds printf("Please enter a 3-digit number
") scanf("d", number) // divide number to
ones, tens, hundreds ones number 10 tens
(number100)/10 hundreds number/100 //
calculate the new number newNumber ones 100
tens 10 hundreds printf("The reversed number
is d\n", newNumber)
22Operations on Different Types
- Operation on two different types (e.g., 5 6.5)
- The result is of the generalized operand (e.g.,
int is a float is a double) - 5/2.0 ? 2.5
- When the operands are of the same type, the
result is of that type as well - 5/2 ? 2
23Examples
- 3 4 7
- 3.0 4 7.0
- 3 / 4 0
- 3.0 / 4 0.75
24Agenda
- Variables (Review)
- Input / Output
- Arithmetic Operations
- Casting
- Char as a Number (if time allow)
25Casting (????)
- Sometimes it is desirable for a variable of one
type to be considered as belonging to another in
an operation - We say the variable is cast to the new type
- Syntax (type)operation/variable
26Example find whats wrong
- include ltstdio.hgt
- int main()
-
- int a 10
- int b 20
- printf("The average of d and d is d\n", a, b,
(a b) (1 / 2)) - return 0
27Alternatives
- include ltstdio.hgt
- int main()
-
- int a 10
- int b 20
- printf(Avg of d and d is g\n", a, b, (a b)
((double)1 / 2)) - printf(Avg of d and d is g\n", a, b, (a b)
(1.0 / 2)) - // will the following work?
- printf(Avg of d and d is g\n", a, b, (a b)
(double)(1 / 2)) - return 0
28More Examples
int a 11 int b 20 double x 4.5 int y
x // implicit cast printf("y g\n",y) //
ERROR - do not relay on implicit cast in
printf printf("y d\n",y) printf ("The average
of d and d is g\n", a, b, ((ab)
(1.0/2))) printf ("The average of d and d is
d\n", a, b, (int)((ab) (1.0/2))) printf
("The average of d and d is d\n", a,b, (a
b)(1.0 / 2)) // ERROR printf ("The average of
d and d is d\n", a,b, (int)((a b)(1.0 /
2)))
29Will this Work?
- include ltstdio.hgt
- int main()
-
- int a 10
- int b 20
- printf ("The average of d and d is d\n", a,b,
(a b)(1.0 / 2)) - return 0
30Summary on Implicit Cast (QA)
- int a 4.5 // implicit cast from double (4.5)
to int (4), it is legal but might cause problem,
thus usually results with a compilation warning
(possible lose of data) - double x 4 // implicit cast from int to
double, no compilation warning since "int is a
double" relation hold - printf("g\n", a) // printf/scanf is "dumb", in
this case there is no compilation warnings, but
the output will be wrong - printf("d \n", 2.5) // same here no warnings,
wrong output
31Agenda
- Variables (Review)
- Input / Output
- Arithmetic Operations
- Casting
- Char as a Number (if time allow)
32Char is also a number!
- A char variable is used to store a text
character - Letters.
- Digits.
- Keyboard signs.
- Non-printable characters.
- But also small numbers (0 to 255 or -128 to 127).
33Text as numbers
- Every character is assigned a numeric code
- There are different sets of codes
- ASCII (American Standard Code for Information
Interchange) most common - EBCDIC ancient, hardly used today
- Maybe others
- We will use ASCII
- The ASCII table.
34More about character encoding
- most of the time, you don't care what the
particular numbers are - The table above shows only 128 characters (7
bits). Some are non-printable - Extended ASCII code contains 256 characters
35More about character encoding
- ASCII code 0 (NULL character) is important we
will see it again - Note contiguous sets of numbers, upper case and
lower case characters
36Example of char as both a character and a small
number
- include ltstdio.hgt
- int main(void)
-
- char i 'b'
- printf("i as a character is c\n", i)
- printf("i as an integer is d\n", i)
- printf("The character after c is c\n", i, i
1) -
- return 0
37Another example
- / Get the position of a letter in the abc /
- include ltstdio.hgt
- int main(void)
-
- char letter
- printf("Please enter a lowercase letter\n")
- scanf("c", letter)
- printf("The position of this letter in the abc
is d\n", letter-'a'1) - return 0
38Exercise
- Write a program that accepts as input
- A lowercase letter
- and outputs
- The same letter in uppercase
- (e.g., if the input is g, the output should be
G)
39Solution
- / Convert a letter to uppercase /
- include ltstdio.hgt
- int main(void)
-
- char letter
- printf("Please enter a lowercase letter\n")
- scanf("c", letter)
- printf("This letter in uppercase is c\n",
letter-'a'A) - return 0