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