Presentation is loading. Please wait.

Presentation is loading. Please wait.

C/C++ Basics (I) Variables, Expressions and Assignments Berlin Chen 2003 Textbook: Walter Savitch, "Absolute C++," Addison Wesley, 2002.

Similar presentations


Presentation on theme: "C/C++ Basics (I) Variables, Expressions and Assignments Berlin Chen 2003 Textbook: Walter Savitch, "Absolute C++," Addison Wesley, 2002."— Presentation transcript:

1 C/C++ Basics (I) Variables, Expressions and Assignments Berlin Chen 2003 Textbook: Walter Savitch, "Absolute C++," Addison Wesley, 2002

2 2 Introduction to C++ Programming Languages –Low-level languages Machine, assembly –High-level languages B, C, C++, ADA, COBOL, FORTRAN –Object-Oriented-Programming in C++ C++ Terminology –Programs and functions –Basic Input/Output (I/O) with cin and cout

3 3 Introduction to C++ C++ is thought of C with classes (and other modern features added), is a high level language C is first developed by Dennis Ritchie of AT&T in the 1970s for the UNIX system Bjarne Stroustrup of AT&T developed C++ in the early 1980s Most C is a subset of C++, and so most C programs are also C++ programs ( The reverse is not true! )

4 4 C++ and Object-oriented Programming (OOP) The main characteristics of OOP –Encapsulation ( 資料封裝 ) A form of information hiding and abstraction –Inheritance ( 繼承 ) Has to do with writing reusable code –Polymorphism ( 多形 ) Refers to a way that a single name can have multiple meanings in the context of inheritance –OOP provides classes, a kind of data type combining both data and algorithms( 演算法 ) –C++ tempers its OOP features

5 5 Outline Basic Characteristics Identifiers –Keywords or Reserved Words –Variables Data types –Assigning Data for Variables Literal Data or Constants Console Input/Output Escape Sequences Arithmetic Operators Type Casting

6 6 Basic Characteristics of C/C++ … void main(void) { cout << “Hello World ! \n”; … } 00100000 01101010 ….. 01101010 C/C++ Language (Text Files) xxx.cpp Compiler 編譯器 VC++, gcc Machine Language (Binary Files) High level language - readable -machine independent (portable) Low level language - unreadable -machine dependent

7 7 Basic Characteristics of C/C++ C/C++ is case-sensitive ( 注意大小寫 ) A program composed of one to several functions ( 函數 ) – 每個 C/C++ 都需有一個稱為 main() 的函數 int main(void) { statement_1; statement_2; … statement_n; return 0; // 結束函數 } 函數標題 函數主體 函數定義 函數名稱 結束函數 註解 (comment) 以 “//” 為起始 敘述 (statement) 以 分號結束

8 8 Basic Characteristics of C/C++ Program Style - Readability – 儘可能每行寫一個敘述 (statement) – 函數開始與結束之左右大括號各佔一行 – 函數主體之敘述從大括號處往內 ( 右 ) 縮 – 函數名稱與之後的左右括號不需要有空白

9 9 An example of C++ program #include using namespace std; void main (void) { const double RATE=6.9; double deposit; cout << "Enter the amount of your deposit $"; cin >> deposit; double newBalance; newBalance= deposit+ deposit*(RATE/100.0); cout << "In one year, the deposit will grow to\n" <<"$"<< newBalance; } Enter the amount of your deposit $ 100 In one year, the deposit will grow to $106.9 輸入 C++ 程式 程式 執行 過程 標頭檔名及 名稱空間

10 10 Identifiers ( 識別字 ) Identifiers are items defined/used in a program –Keywords ( 關鍵字 )or Reserved Words ( 保留字 ) –Variables ( 變數 ) 、 function names ( 函數名稱 ) 、 labels (標記) Identifiers must start with either a letter (A-Z, a- z) or the under score symbol(_), and the remaining characters must be letters (A-Z, a-z), digits(0-9), or the underscore symbol(_) Identifiers are case sensitive and have no limit to their length ( 大小寫有別、長度不受限 )

11 11 Identifiers Valid ( 合法的 ) Identifiers: x, x1, x_1, ABC123z7,… Invalid ( 不合法的 ) Identifiers: 12, 3x, %change, data-1, myfirst.c Identifier started with underscore are informally reserved for system (should avoid using it) – 以底線為首的命名方式通常保留給系統使用,因此我們在變數、函 數等命名時儘量不要使用 Identifier are usually spelled with their first letter in lowercase topSpeed, bankRate1, bankRate2, timeOfArrival, … 儘量使用有意義的名稱

12 12 Keywords or Reserved Words A special class of identifiers which have predefined meaning in C/C++ and cannot be used as names for variables or anything else – 關鍵字或保留字是 C/C++ Compiler 本身所使用的 – 如 : break case char float do goto long double if else.. … …. – 我們只能使用它們,不能重新定義它們 Some predefined words, such as cin and cout are not keywords, because they are not the core of C/C++ language 在某些編輯 環境下保留字 會以特別的 顏色顯示

13 13 Variables A memory location to store data for a program Must declare all data (variables) before use in program –Tell the compiler/computer what kind of data you will be storing in variables int numberOfBeans; double oneWeight, totalWeight; Variables can be declared any place –Declared either just before they are used or at the start of a block “{” (or a function/procedure) – 通常在程式或每個函式開頭宣告,也可以在程式任意 位置用到時才宣告

14 14 Variables 599 399.14 1000 numberOfBeans 1004 2108 2112 oneWeight Memory

15 15 Variables Declaring ( 宣告 ) and Defining ( 定義 ) –Declaring: the name of a variable is introduced int numberOfBeans; // 整數宣告 char nKey; // 字元宣告 –Defining: the storage for the named variable is allocated numberOfBeans=10000; nKey=‘A’; A variable declaration both declares and defines the variable int numberOfBeans=10000; char nKey=‘A’;

16 16 Basic Data Types TYPE NAME MEMORY USED SIZE RANGEPRECISION short2 bytes-32768 ~ +32767- int4 bytes-2,147,483,648 ~ +2,147,483,647 - float4bytes±10 -38 ~ ± 10 38 7digits double8 bytes± 10 -308 ~ ± 10 308 15digits char1byteAll ASCII All ASCII characters - bool1 bytetrue, false- 整數 型態 浮點數 型態 字元或字串 型態 布林數 型態 有效位數及指數範圍不同

17 17 Assigning Data for Variables Initializing data in declaration statement int myValue = 0; or int myValue(0); Assigning data during execution myValue = 0; –Lvalues (left-side) & Rvalues (right-side) –Lvalues must be variables, Rvalues can be any expression ( 運算式 ) –Example: distance = rate * time; Lvalue: ‘distance’, Rvalue: ‘rate * time’

18 18 Assigning Data for Variables Assigning data during execution (cont.) – 將等號 (=) 右邊的運算式的值指定給左邊的變數 VarName= Expression; ( 變數=運算式 ;) 敘述 (a statement)

19 19 Assigning Data for Variables Compatibility of data assignments –Type mismatches –General Rule: Cannot place value of one type into variable of another type e.g.: int intVar; … intVar = 2.99;// 2 is assigned to intVar! Only integer part ‘fits’, so that’s all that goes Called ‘implicit’ or ‘automatic type conversion’

20 20 Assigning Data for Variables Example: char( 字元 ) vs. short ( 整數 ) #include using namespace std; void main() //Relation Between char and short { char testChar='X'; short testShort=testChar; cout << "The ASCII for "<<testChar<<" is "<<testShort<<"\n"; testChar=testChar+1; testShort=testChar; cout << "The ASCII for "<<testChar<<" is "<<testShort<<"\n"; testChar=122; cout << "New testChar is "<<testChar<<"\n"; }

21 21 Assigning Data for Variables bool –C++ assigns nonzero values to true and zero value to false bool start= true; bool start= false; bool start= 100 ; //start assigned true bool start= 0 ; //start assigned false int ans = true ; //start assigned 1 int ans = false; //start assigned 0

22 22 Literal Data or Constants ( 常數 ) Cannot change values during execution Examples: 2 // Literal constant int 整數 575.34 // Literal constant double 浮點數 5.7534e2 // Literal constant double 浮點數 3.4e-2 // Literal constant double (0.034) ‘Z’ // Literal constant char 字元 “Hello World” // Literal constant string 字串 Called ‘literals’ ( 實字 ) because you ‘literally typed’ them in your program!

23 23 Literal Data or Constants ( 常數 ) Naming of constants –Literal constants provide little meaning e.g.: seeing 24 in a program, tells nothing about what it represents –Use named constants instead Meaningful name to represent data const double = 6.9; –Called a ‘declared constant’ or ‘named constant’ Now use it’s name wherever needed in program –Added benefit: changes to value result in one fix 若程式中數個地方 用到同一個常數, 要修改其值,只要 修改符號定義一處 即可

24 24 An example of C++ program #include using namespace std; void main (void) { constant double RATE=6.9; double deposit; cout << "Enter the amount of your deposit $"; cin >> deposit; double newBalance; newBalance= deposit+ deposit*(RATE/100.0); cout << "In one year, the deposit will grow to\n" <<"$"<< newBalance; } Enter the amount of your deposit $ 100 In one year, the deposit will grow to $106.9 輸入 C++ 程式 程式 執行 過程

25 25 Escape Sequences ( 逸出順序、控制碼 ) Backslash,( 背斜線 ) \ preceding a character ( 字元 ) Instructs compiler: a special ‘escape character’ ( 逸出字元 ) is coming – 逸出字元 : 字串及字元中無法顯示之字元 ESCAPE SEQUENCESMEANING \n 換行 / 新列 (New line) \'\' 單引號 (single quote) \"\" 雙引號 (double quote) \a 響鈴 (bell)

26 26 Escape Sequences #include using namespace std; void main() //escape sequence { cout <<'\a'<<"This is a test for escape sequences\n"; cout <<"How about you \"computer course\"?\n"; }

27 27 Arithmetic Operators ( 算數運算子 ) Arithmetic Operators MEANING + 相加 - 相減 * 相乘 / 相除 % 餘數 ( 模數 ) 使用模數運算子時,必須兩個運算元都是整數才行 5 arithmetic operators Precedence ( 優先權 ) rules – standard rules 如 *,/,% 優先於 +,- ; 由左至右之結合律 (associative) float logs=120/4*5; //150 ? 6?

28 28 Arithmetic Operators ( 算數運算子 ) #include using namespace std; void main() { int numA, numB, finalResult; cout > numA; cout > numB; finalResult=numA+numB; cout << " 相加的結果 : " <<"$"<< finalResult<<"\n"; finalResult=numA-numB; cout << " 相減的結果 : " <<"$"<< finalResult<<"\n"; finalResult=numA*numB; cout <<" 相乘的結果 : " <<"$"<< finalResult<<"\n"; finalResult=numA/numB; cout <<" 相除的結果 : " <<"$"<< finalResult<<"\n"; finalResult=numA%numB; cout <<" 相除的餘數 : " <<"$"<< finalResult<<"\n"; }

29 29 Arithmetic Precision ( 算數運算精確度 ) ‘Highest-order operand’ determines type of arithmetic ‘precision’ performed –Common pitfall! Examples: –17 / 5 evaluates to 3 in C++! (Both operands are integers) Integer division is performed! –17.0 / 5 equals 3.4 in C++! Highest-order operand is ‘double type’ Double ‘precision’ division is performed! –int intVar1 =1, intVar2=2; intVar1 / intVar2 equals 0 in C++! Performs integer division!

30 30 Arithmetic Precision Calculations done ‘one-by-one’ –1 / 2 / 4.0 / 8 performs 3 separate divisions First  1 / 2 equals 0 Then  0 / 4.0 equals 0.0 Then  0.0 / 8 equals 0.0! –What if 1 / 4.0/ 2 / 8 ?

31 31 Type Casting ( 型態轉換 ) Implicit – also called ‘Automatic’ –Done for you by C++ automatically 17 / 5.5 ‘implicit type cast’ to take place, casting the 17  17.0 Explicit type conversion –Programmer specifies conversion with cast operator (double)17 / 5.5; or double(17 )/ 5.5; (double) myInt / myDouble; old C syntax old C++ syntax

32 32 Shorthand Operators Increment (++)& Decrement (--) Operators –Just short-hand notation Increment operator,++ intVar++; is equivalent to intVar = intVar + 1; Decrement operator, -- intVar--; is equivalent to intVar = intVar – 1;

33 33 Shorthand Operators Post-Increment in Action Post-Increment in Expressions: int n = 2, valueProduced; valueProduced = 2 * (n++); cout << valueProduced << "\n"; cout << n << "\n"; –This code segment produces the output: 4 3 –Since post-increment was used

34 34 Shorthand Operators Pre-Increment in Action Now using Pre-increment: int n = 2, valueProduced; valueProduced = 2 * (++n); cout << valueProduced << "\n"; cout << n << "\n"; –This code segment produces the output: 6 3 –Because pre-increment was used

35 35 Console Input/Output I/O objects: cin, cout Defined in the C++ library called –Must have these lines (called pre-processor directives) near start of file #include using namespace std; –Tells C++ to use appropriate library so we can use the I/O objects cin, cout

36 36 Console Input/Output Console Output –What can be outputted? –Any data can be outputted to display screen Variables Constants or Literals Expressions (which can include all of above) –cout << numberOfGames << " games played."; ( 2 values are outputted: ‘value’ of variable numberOfGames, literal string “ games played.”) Cascading: multiple values in one cout

37 37 Console Input/Output Formatting Output –Formatting numeric values for output –Values may not display as you’d expect! cout << " The price is $ " << price << "\n"; –If price (declared double) has value 78.5, you might get: The price is $78.500000 or: The price is $78.5 –We must explicitly tell C++ how to output numbers in our programs!

38 38 Console Input/Output Formatting Output –‘Magic Formula’ to force decimal sizes: cout.setf(ios::fixed); cout.setf(ios::showpoint); cout.precision(2); –These statements force all future continued values: To have exactly two digits after the decimal place –Example: cout << “The price is $” << price << endl; –Now results in the following: The price is $78.50

39 39 Console Input/Output Input Using cin –‘>>’ (extraction operator) points opposite –No literals allowed for cin. Must input ‘to a variable’ cin >> num; –Waits on-screen for keyboard entry –Value entered at keyboard is ‘assigned’ to num

40 40 Program Style Bottom-line ( 底線 ): Make programs easy to read and modify Comments, two methods: –// Two slashes indicate entire line is to be ignored –/*Delimiters indicates everything between is ignored*/ Identifier naming –ALL_CAPS for constants –lowerToUpper for variables –Most important: MEANINGFUL NAMES!

41 41 Libraries C++ Standard Libraries #include ( 標頭檔 ) –Directive to ‘add’ contents of library file to your program –#include is called ‘preprocessor directive’ ( 前 端處理程式指令 ) –Executes before compiler, and simply ‘copies’ library file into your program file C++ has many libraries –Input/output, math, strings, etc.

42 42 Namespaces ( 名稱空間 ) Namespaces defined: –Collection of name definitions Examples: –Includes entire standard library of name definitions #include using namespace std; –Can specify just the objects we want #include using std::cin; using std::cout;

43 43 Summary 1 C++ is case-sensitive Use meaningful names –For variables and constants Variables must be declared before use –Should also be initialized Use care in numeric manipulation –Precision, parentheses, order of operations #include C++ libraries as needed

44 44 Summary 2 Object cout –Used for console output Object cin –Used for console input Use comments to aid understanding of your program –Do not overcomment

45 45 ASCII 碼

46 46 擴充字元集 (Extended Character Set)

47 47 如何使用 MS Visual C++ 6.0 之 整合程式設計環境 (IDE) 打開 Microsoft Visual C++ 6.0 打開 MS Visual C++ 6.0

48 48 如何使用 MS Visual C++ 6.0 之 整合程式設計環境 (IDE) 產生一個 Console mode project ( 專案 )-1 1 選擇 下拉視窗 File 下的 New 選項

49 49 如何使用 MS Visual C++ 6.0 之 整合程式設計環境 (IDE) 產生一個 Console mode project - 2 3 2 選擇 Console 模式的 project 輸入 project 的名稱

50 50 如何使用 MS Visual C++ 6.0 之 整合程式設計環境 (IDE) 產生一個 Console mode project -3 4

51 51 如何使用 MS Visual C++ 6.0 之 整合程式設計環境 (IDE) 產生一個 Console mode project -4 5 新增檔案到 Project

52 52 如何使用 MS Visual C++ 6.0 之 整合程式設計環境 (IDE) 產生一個 Console mode project -5 6 7 選擇新增檔案的類型 為.cpp 即 C++ 程式 輸入新增檔案為.cpp 即 C++ 程式

53 53 如何使用 MS Visual C++ 6.0 之 整合程式設計環境 (IDE) 產生一個 Console mode project -5 8 9 10 按兩下即可在 右邊視窗編輯 選擇程式視窗 編輯你的程式

54 54 如何使用 MS Visual C++ 6.0 之 整合程式設計環境 (IDE) 產生一個 Console mode project -6 11 編輯你的程式

55 55 如何使用 MS Visual C++ 6.0 之 整合程式設計環境 (IDE) 產生一個 Console mode project -7 12 產生程式的執行檔

56 56 如何使用 MS Visual C++ 6.0 之 整合程式設計環境 (IDE) 產生一個 Console mode project -8 13 Compile 的結果

57 57 如何使用 MS Visual C++ 6.0 之 整合程式設計環境 (IDE) 產生一個 Console mode project -9 14 執行程式

58 58 如何使用 MS Visual C++ 6.0 之 整合程式設計環境 (IDE) 產生一個 Console mode project -10 15 執行程式


Download ppt "C/C++ Basics (I) Variables, Expressions and Assignments Berlin Chen 2003 Textbook: Walter Savitch, "Absolute C++," Addison Wesley, 2002."

Similar presentations


Ads by Google