Bài giảng Introduction to Computer Programming (C language) - Chapter 3: Variables and Basic Data Types - Võ Thị Ngọc Châu
Content
Introduction
Data and Data Types
enum Data Type
struct Data Type
Variables and Variable Declaration
Constant Definition
Expressions
Operators
Summary

Trang 1

Trang 2

Trang 3

Trang 4

Trang 5

Trang 6

Trang 7

Trang 8

Trang 9

Trang 10
Tải về để xem bản đầy đủ
Bạn đang xem 10 trang mẫu của tài liệu "Bài giảng Introduction to Computer Programming (C language) - Chapter 3: Variables and Basic Data Types - Võ Thị Ngọc Châu", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
Tóm tắt nội dung tài liệu: Bài giảng Introduction to Computer Programming (C language) - Chapter 3: Variables and Basic Data Types - Võ Thị Ngọc Châu
l variables
40
Variables and Variable Declaration
Variable names actually correspond to
locations in the computer‟s memory.
A variable name in C is any valid identifier.
a series of characters consisting of letters, digits
and underscores (_) that does not begin with a digit
: _minNumber, global_counter, i1, i2
X: min#, 123Iteration, ThisVar., @g_Variable
of any length, but only the first 31 characters are
required to be recognized by C standard compilers
not a keyword in C
C is case sensitive.
Global_counter is different from global_counter. 41
Variables and Variable Declaration
A data type of a variable is specified in its
declaration.
type_name variable_name_1 [= initial_value_1]
[, variable_name_2 [= initial_value_2]]
[, variable_name_n [= initial_value_n]];
A compiler allocates memory for declared
variables up to the data type and its storage
class at run time.
A compiler associates variable_name to the
allocated memory.
A compiler sets initial_value to the content of
the allocated memory if initial_value exists. 42
Variable
Declaration
000000000022FE36
0
i
memory43
Variables and Variable Declaration
Global variables
Declared outside of all the functions
Globally accessed inside of any functions
Hold values throughout the lifetime of a program
Initialized by the system once defined
Local variables
Declared and locally accessed inside a function
(main, others) or block between the brackets
Should be defined immediately after the left
bracket that begins the body of a function/block
Exist only as long as the function or block where
the variables are declared is still executing
Not initialized by the system once defined 44
A value of each local variable
Variables and Variablecan be set Declarationin its declaration.
Otherwise, local variables
start with random values in
their memory at run time.
45
Initialized values for global variables:
- char „\0‟ (i.e. NULL)
- int 0
- float 0
- double 0
? - pointer NULL
All the bytes in memory are filled with zeros.
46
Variables and Variable Declaration
The scope of a name is the part of the program within
which the name can be used.
A scope of a variable name is a region of the program
(function() {}, block {..}) where a variable can have
its existence. Beyond that, it cannot be accessed.
For a variable declared at the beginning of a function,
the scope is the function where the name is declared.
Local variables of the same name in different functions are
unrelated.
The same is true for the parameters of the function, which are
in fact local variables.
The scope of an external variable or a function lasts
from the point at which it is declared to the end of the
file being compiled. 47
Variables and
Variable Declaration
gChar2 is unable to be accessed
in the main function due to its
improper declaration place!
48
gChar
bChar
cChar
49
The most “local”
variables will take
precedence over the
others.
How to refer to them?
Naming!
Which aChar is printed?
50
Variables and Variable Declaration
Where are variable values stored?
Storage of data in variables and arrays is temporary in
(registers and) RAM. That is such data is lost when a
program terminates.
Storage classes for different distinct memory areas
Variable Type Keyword Storage class Scope
Local variables auto (redundant) Automatic (default) Declared function/block
Register local variables register Register if possible. Declared function/block
If not, automatic
Static local variables static Static Declared function/block
Global variables Static Program
Global variables extern Static Program
Static global variables static Static File
Variables with dynamically malloc(), calloc(), Dynamic Variable‟s scope: local,
allocated memory free(), realloc() global 51
Variables and Variable Declaration
Memory layout of a C program
Higher address
Command-line arguments
and environment variables
Local variables, arguments, Stack
grown/shrunk with function calls
Grown/shrunk with dynamic
allocation and de-allocation Heap
Uninitialized (static) global Uninitialized data Initialized to
variables, static local variables .bss zero by exec
Initialized (static) global variables, Initialized data Read from
static local variables, constants
.data program file
Machine code, often read-only Code by exec
.text
Lower address
bss = block started by symbol, better save space
Variables and Variable Declaration
Memory areas in C
Constant data area
Read-only memory for string constants and other data
whose values are known at compile time, existing for the
lifetime of the program
Static area
Read-writable memory for extern/static variables existing
for the lifetime of the program
Stack area
Read-writable last-in-first-out memory for a local variable,
existing from the point where/when the variable is defined
and released immediately as the variable goes out-of-scope
Heap area
Memory dynamically allocated explicitly by programmers 53
Constant Definition
Constants refer to fixed values that the
program may not alter during its
execution.
Constants can be of any of the basic data
types like an integer constant, a
floating constant, a character constant, a
string literal, or enumeration constants.
Constants are treated just like regular
variables except that their values cannot
be modified after their definition.
54
Constant Definition
Defined by:
Using #define preprocessor
#define identifier value
Using const keyword
const type_name variable_name = value;
Using enum type
Integer constants represented by identifiers
enum [type_name] {identifier [= value], };
55
Constant Definition
Defined by:
Using #define preprocessor
#define MAX 50
Using const keyword
const short MAX = 50;
Using enum type
Integer constants represented by identifiers
enum min_max {min=0, MAX=50};
enum {min=0, MAX=50}; 56
Expressions
An expression is simply a valid combination
of operators and their operands (variables,
constants, )
Each expression has a value and a type.
Primary expressions
Identifier (variable, function, symbolic constant)
Constant
involves only constants
evaluated at during compilation rather than run-time
used in any place that a constant can occur
String literal
(expression)
type and value are identical to the enclosed expression 57
Expressions
Expression values are determined by the
operations in a certain order based on
precedence and associativity of each operator.
Expressions are grouped by the operators
Arithmetic expressions
Logical expressions
Relational expressions
Bitwise expressions
Assignment expressions
Conditional expressions
58
Expressions
Valid expressions
12 + intVar – sqrt(23)*2
“This is an expression.”
„A‟ + 32
(12/4)%2 + 8 – floatVar
Invalid expressions
„ABC‟
0”Wrong”1
intVar*2# - 10
59
Operators
Arithmetic operators
Relational operators
Logic operators
Bitwise operators
Comma operator
Assignment operators
Type casting operator
Other operators
60
Arithmetic Operators
+, -, *, / All numeric types. Integer division yields integer results.
% Integer types (including enum) only.
61
Increment and Decrement
Operators
Increment and decrement operators: ++, --
preincrement
postincrement
predecrement
postdecrement
int x=4, y=5; int x=4, y=5;
++x – y = ?, x = ?, y = ? x++ – y = ?, x = ?, y = ?
x = x + 1 = 5, increment 4 – 5 = -1, use
5 – 5 = 0, use pre. x = x + 1 = 5, increment post.
y = 5 y = 5 62
Relational Operators
All numeric types.
!!! EQUALITY with ==
63
Logic Operators
Logic operators: &&, ||, !
corresponding to AND, OR, NOT
The C language has no boolean data type.
Zero (0) is used to represent FALSE.
Non-zero ( 0) is used to represent TRUE.
1 && 2 1 1 || 2 1 !1 0
1 && 1 1 1 || 1 1 !2 0
1 && 0 0 1 || 0 1 !-2 0
0 && 0 0 0 || 0 0 !0 1 64
Bitwise Operators
The binary bitwise operators are used to manipulate the bits of integral
operands (char, short, int and long; both signed and unsigned).
Unsigned integers are normally used with the bitwise operators.
Bitwise data manipulations are machine dependent. 65
Assignment Operators
Assignment operator: =
Assignment shorthand operators:
66
RHS = right hand side
Assignment Operators
Assignment operator: =
copies the value from its right hand side to the
variable on its left hand side
also acts as an expression which returns the
newly assigned value
1. Copy:
variable = RHS; int x=4, y=2;
x = y + 1;
2. return: RHS y = (x = x + 10);
Data type of the variable and data type of RHS x = ? y = ?
must be the same.
Result:
Otherwise, data type of RHS will be casted to
data type of the variable. x = 13, y = 13 67
Assignment Operators
Assignment operator: =
int x = 2, y = 3; int x = 2, y = 3;
float f = 1.5; float f = 1.5;
char c; char c;
y = 1.5 + 2*2 = 5.5 = 5;
y = f + x*2;
c = 5*20 + 2 + 8*1.5
c = y*20 + x + 8*f;
= 100 + 2 + 12.0 = 114.0 = 114;
f = (y = c - x*3); y = 114 – 2*3 = 108;
f = (y=108) = 108.0;
x = f/5.0;
x = 108.0/5.0 = 21.6 = 21;
x = ? y = ? f = ? c = ? x = 21? y = 108? f = 108.0? c = 114?
68
Assignment Operators
Assignment operator: =
int x = 2, y = 3; int x = 2, y = 3;
float f = 1.5; float f = 1.5;
truncation
char c; char c;
y = 1.5 + 2*2 = 5.5 = 5;
y = f + x*2;
promotion
truncation
c = 5*20 + 2 + 8*1.5
c = y*20 + x + 8*f;
= 100 + 2 + 12.0 = 114.0 = 114;
f = (y = c - x*3); y = 114 – 2*3 = 108;
f = (y=108) = 108.0; truncation
x = f/5.0;
x = 108.0/5.0 = 21.6 = 21;
x = ? y = ? f = ? c = ? x = 21? y = 108? f = 108.0? c = 114?
69
Assignment Operators
int x = 2, y = 3;
float f = 1.5;
char c;
y = f + x*2;
c = y*20 + x + 8*f;
f = (y = c - x*3);
x = f/5.0;
x = ? y = ? f = ? c = ?
70
Assignment Operators
Assignment shorthand operators:
variable operator= RHS; int x=4, y=5; Result:
variable = variable operator (RHS); x *= y – 2; x = 12;
x = x * (y-2); NOT: x = 18!71
RHS = right hand side
Comma Operators
Comma operator: ,
A pair of expressions separated by a comma is
evaluated left-to-right, and the value of the left
expression is discarded.
The type and value of the result are the type
and value of the right operand.
All side effects from the evaluation of the left-
operand are completed before beginning the
evaluation of the right operand. 72
Comma Operators
Comma operator: ,
The comma operator most often finds use
in the for statement.
The commas that separate function
arguments, variables in declarations, etc.,
are not comma operators, and do not
guarantee left to right evaluation.
73
Comma Operators
Comma operator: ,
int intVar1, intVar2, i;
char charVar1 = „A‟, charVar2 = „B‟, charVar3;
for (i=1, intVar1=1; i<charVar1 && intVar1<charVar1; i++) {}
intVar1 = (charVar3 = „C‟, intVar2 = 2 + charVar3);
intVar1 = ? intVar2 = ? charVar1 = ? charVar2 = ? charVar3 = ?
charVar3 = „C‟;
intVar2 = 2 + charVar3 = 2 + „C‟ = 2 + 67 = 69;
intVar1 = 2 + charVar3 = 69;
charVar1 = „A‟;
charVar2 = „B‟; 74
Conditional Operators
Conditional operator
? :
Evaluate
If the value of is true (non-zero),
evaluate and return .
Otherwise, evaluate and return .
int x = 1, y = 4; - Evaluate: x<=y 1 <= 4 1 ( 0)
- Evaluate: x
int min;
- Return: 1
min = (x<=y) ? x : y; - Copy 1 to the variable min
min = ? min = 1; 75
Type Casting Operators
Type casting operator: (type) expression
Produces the value of expression in the type
Provides an explicit type conversion
Has the highest precedence
Type casting vs. Type promotion vs. Truncation
char < short < int < long < float < double < long double
promotion
truncation
76
Operators and Expressions
77
Other Operators
Name Operator Description Example
sizeof sizeof(type), Returns the size (bytes) of sizeof(char)
sizeof(variable) a type or a variable
int anInt = 0;
sizeof(anInt);
address &Variable Returns the address of the char aChar;
memory named Variable char* ptrChar;
ptrChar = &aChar;
Dereferencing *Pointer Returns the value of the
aChar = *ptrChar + 1;
memory Pointer points to
Index Variable[..] Returns the element at the int intArray[3];
index
intArray[0] = 0;
intArray[1] = 1;
intArray[2] = 2;
anInt = intArray[1];
Structure Structure_ Refers to a member of a struct point pt;
member name.member particular structure pt.x = 10; 78
Higher
precedence
Lower
precedence
[2], pp. 53 79
Put them altogether
y
Write a program to describe a
rectangle by two opposite Vertex v2
vertices with the following
requirements: x
Each vertex has integer coordinates. Vertex v1
Input the description of a given
rectangle via its two opposite
vertices v1.x, v1.y ?
Calculate and print the area of a v2.x, v2.y ?
given aforementioned rectangle. If
there is no area, print -1 instead. ?
Calculate and print the length of the
diagonal line of a given
aforementioned rectangle
? 80
y
Vertex v2
x
Vertex v1
v1.x, v1.y ?
v2.x, v2.y ?
?
?
81
Summary
How to handle data in a C program
Data types
Built-in: char, int, float, double, , void
Derived: array, pointer, structure, union, enum
enum and structure for abstract data
More advanced types (array, pointer) come later.
Variables: declaration vs. definition
Naming
Storage
Type
Value
Scope 82
Summary
Constants
No change during the execution of the program
Known at the compile time
Defined with: #define, enum, const
Expressions: value, type
Operators
Assignment
Arithmetic
Bitwise
Logic
Relational and others
Type casting: explicit vs. implicit conversion 83
Summary
Data
“information, especially facts or numbers,
collected for examination and consideration and
used to help decision-making, or information in
an electronic form that can be stored and
processed by a computer” – Cambridge Dictionary
How to handle data in a C program
Under control!
84
Chapter 3: Variables and
Basic Data Types
85 File đính kèm:
bai_giang_introduction_to_computer_programming_c_language_ch.pdf

