Agenda - PowerPoint PPT Presentation

1 / 39
About This Presentation
Title:

Agenda

Description:

Makes compiler 'life' easier. 5. Data representation. Bit a binary digit: 0 or 1 ... %gn',y); // ERROR - do not relay on implicit cast in printf. printf('y ... – PowerPoint PPT presentation

Number of Views:14
Avg rating:3.0/5.0
Slides: 40
Provided by: csta3
Category:
Tags: agenda | for | life | relay

less

Transcript and Presenter's Notes

Title: Agenda


1
Agenda
  • Variables (Review)
  • Example
  • Input / Output
  • Arithmetic Operations
  • Casting
  • Char as a Number (if time allow)

2
Why 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

3
What 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

4
Why do we Need Different Types?
  • Saving memory
  • Execution speed
  • Makes compiler life easier

5
Data 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)

6
Data 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

7
Variable 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

8
Agenda
  • Variables (Review)
  • Example
  • Input / Output
  • Arithmetic Operations
  • Casting
  • Char as a Number (if time allow)

9
Example 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
10
Example Swap Two Variables
How to swap two variables without using a
temporary variable?
11
Example 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)
12
Agenda
  • Variables (Review)
  • Example
  • Input / Output
  • Arithmetic Operations
  • Casting
  • Char as a Number (if time allow)

13
printf 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

14
printf 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

15
scanf 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)

16
prinft/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)

17
Example
  • 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)

18
What 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 ?

19
Agenda
  • Variables (Review)
  • Input / Output
  • Arithmetic Operations
  • Casting
  • Char as a Number (if time allow)

20
Arithmetic operators
  • An operator is a mathematical action performed on
    constants and/or variables (operands)
  • Some operators
  • Braces ()
  • Assignment
  • Addition
  • Subtraction -
  • Multiplication
  • Division /
  • Modulo

21
Example 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)
22
Operations 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

23
Examples
  • 3 4 7
  • 3.0 4 7.0
  • 3 / 4 0
  • 3.0 / 4 0.75

24
Agenda
  • Variables (Review)
  • Input / Output
  • Arithmetic Operations
  • Casting
  • Char as a Number (if time allow)

25
Casting (????)
  • 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

26
Example 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

27
Alternatives
  • 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

28
More 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)))
29
Will 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

30
Summary 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

31
Agenda
  • Variables (Review)
  • Input / Output
  • Arithmetic Operations
  • Casting
  • Char as a Number (if time allow)

32
Char 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).

33
Text 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.

34
More 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

35
More 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

36
Example 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

37
Another 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

38
Exercise
  • 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)

39
Solution
  • / 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
Write a Comment
User Comments (0)
About PowerShow.com