week 2 variables, constant, and operators
DESCRIPTION
Week 2 Variables, Constant, and Operators. Objectives. โครงสร้างของ C++ โปรแกรม (program structure) ตัวแปร ( variables) ชนิดของข้อมูล ( data types) การประกาศตัวแปร (declaration) ค่าคงที่ (constant) ตัวดำเนินการ (operators). Structure of a C++ Program. Header file. - PowerPoint PPT PresentationTRANSCRIPT
Week 2Variables, Constant,
and Operators
Objectives• โครงสร�างของ C++ โปรแกรม (program structure)
•ตั�วแปร (variables)• ชนิ�ดของข�อม�ล (data types)• การประกาศตั�วแปร (variable declaration)
•ค�าคงที่�� (constant)•ตั�วด�าเนิ�นิการ (operators)
2
Structure of a C++ Program
3
Header file
Main function declaration
Main function definition ประกอบไปด�วยช#ดค�าส��ง (expression) ซึ่%�งก�าหนิด การที่�างานิให�โปรแกรม
Comments
ที่#กค�าส��ง (expression) ตั�องถู�กป)ดที่�ายด�วยเคร*�องหมาย semicolon ‘;’
ระบ#ว�าโปรแกรมสามารถูที่�างานิจนิกระที่��งจบโปรแกรมได�
How does a variable looks like?
ช�วยให�โปรแกรมสามารถูจดจ�าข�อม�ลเพื่*�อนิ�าไปใช�ในิภายหล�งได�!!!
4
1. ประกาศตั�วแปรก�อนิใช�งานิ2. ก�าหนิดค�าให�ตั�วแปร3. ด%งค�าของตั�วแปรมาใช�
Fundamental Data Types• C++ เป.นิภาษาที่��ตั�องประกาศตั�วแปรก�อนิจะนิ�าตั�วแปรไปใช�งานิเสมอ และในิการประกาศตั�วแปรตั�องระบ#ชนิ�ดของข�อม�ลที่��จะจ�ดเก0บด�วย
• ชนิ�ดของตั�วแปร สามารถูแบ�งได�ตัามชนิ�ดของข�อม�ลที่��จะจ�ดเก0บ ได�แก�• Character types - ข�อม�ลอ�กขระ หร*อการเก0บข�อม�ลเป.นิตั�วอ�กษร 1 ตั�ว• ‘A’, ‘a’, ‘5’, ‘.’, ‘_’, ‘ ‘ (space) • ‘\t‘ (tab), ‘\n’ (newline)• หมายเหตั#: ‘5’ ไม�สามารถูนิ�าไปใช�ในิการค�านิวณที่างคณ�ตัศาสตัร2ได�
• Numerical Integer types - เลขจ�านิวนิเตั0มที่��สามารถูนิ�าไปใช�ค�านิวณได�• 7, 1024, 65535, -127, 0• 7u (unsigned int), 7l (long), 7ul (unsigned long)• 0x4b, 0xFF (เลขฐานิ 16 หร*อ Hexadecimal)• 0113, 0720 (เลขฐานิ 8)
5
Fundamental Data Types• ชนิ�ดของตั�วแปร (ตั�อ)
• Floating-point types - เลขที่ศนิ�ยม หร*อจ�านิวนิจร�ง ใช�ในิการค�านิวณได�• Default type - double• 3.14159, 0.01• 6.02e23, 1.75e-9• 3.0• 3.14159L (long double)• 6.02e23f (float)
• Boolean type - ค�าความจร�ง ซึ่%�งม�กใช�ในิการที่ดสอบเง*�อนิไขตั�างๆ• false (0)• true (any values other than 0)
6
Fundamental Data Types
7
Declaration of variables• การประกาศตั�วแปร (Declaration)
type identifier_list;
• เป.นิการจองพื่*5นิที่��ในิหนิ�วยความจ�าหล�กของคอมพื่�วเตัอร2 (RAM) เพื่*�อใช�เก0บข�อม�ลชนิ�ดที่��ได�ระบ#ไว�
• ม�การตั�5งช*�อให�ก�บหนิ�วยความจ�าตั�าแหนิ�งนิ�5นิๆ เพื่*�อความสะดวกในิการอ�างอ�ง
• การก�าหนิดค�าเร��มตั�นิให�ตั�วแปร (Initialization)type identifier = initial_value;
int a = 1, b = 5;char charp = ‘#’, at = ‘@’;
8
Example• ตั�วอย�าง - ผลล�พื่ที่2ที่��แสดงออกที่างหนิ�าจอค*อ?
9
5
2
a
b
result
a = 5;
b = 2;
6
2
4
a
b
result
a = a+1;
result = a-b;
a
b
result
int a, b;
int result;
เก�ดอะไรข%5นิในิหนิ�วยความจ�า?
Declaration of variables• ช*�อตั�วแปร (identifier) – CASE SENSITIVE
• ประกอบด�วยตั�วอ�กษร ตั�วเลข หร*อเคร*�องหมาย ‘_’ (underscore)
• ไม�ข%5นิตั�นิด�วยตั�วเลข ไม�ม� “__” (double underscore) อย��ในิช*�อ
• ไม�ซึ่�5าก�บค�าส�าค�ญ (reserved keyword) ที่�� C++ ได�จองไว�ใช�งานิ
10
IDE และ Compiler จะแจ�งให�เราที่ราบเม*�อม�การตั�5งช*�อไม�ถู�กตั�อง
Declaration of variables• ตั�วอย�างการตั�5งช*�อตั�วแปร• first_name• last-name• include• YearOne• 40days• example#1• _long• goto• float__a• using
11
validinvalid – contains ‘-’invalid – match a keywordvalidinvalid – starts with numeric characterinvalid – contains ‘#’validinvalid – match a keywordinvalid – contains double underscoresinvalid – match a keyword
String• String - จ�ดอย��ในิกล#�มของตั�วแปรประกอบ (compound type) ซึ่%�งจ�ดเก0บข�อม�ลชนิ�ดอ�กขระ (char) หลายตั�วเข�าด�วยก�นิ• ใช�จ�ดเก0บ ค�า และข�อความ
• ตั�อง #include <string> ในิส�วนิ preprocessor
12
String• เราสามารถูใช�งานิตั�วแปรชนิ�ด String นิ�5ได�แบบเด�ยวก�บตั�วแปรชนิ�ดอ*�นิๆ• การก�าหนิดหร*อไม�ก�าหนิดค�าเร��มตั�นิ • การเปล��ยนิแปลงค�าระหว�างการที่�างานิของโปรแกรม
13
Special Characters• อ�กขระพื่�เศษ (escape code)
• อ�กขระซึ่%�งยากที่��ระบ#ลงไปในิโค�ดของโปรแกรม ปกตั�แล�วจะนิ�าหนิ�าด�วยescape character ( \ ) เช�นิ การข%5นิบรรที่�ดใหม� การแที่0บ การลบอ�กขระ
14
Typed Constant Expression• การก�าหนิดค�าคงที่��
• หนิ�วยความจ�าบร�เวณที่��ใช�เก0บค�าคงที่�� จะไม�อนิ#ญาตัให�แก�ไขข�อม�ลได�
• โดยที่��วไปจะตั�องระบ#ชนิ�ดของข�อม�ล (data type) ด�วยเสมอ
const type identifier = value;
15
Operators• ตั�วด�าเนิ�นิการ (operator)
• เราสามารถูนิ�าตั�วแปร (variable) และค�าคงที่�� (constant) มาใช�ในิการค�านิวณหร*อประมวลผลตั�างๆได�โดยอาศ�ยตั�วด�าเนิ�นิการตั�างๆ
• Assignment Operator (=)• ใช�ในิการก�าหนิดค�าให�ก�บตั�วแปร โดยค�ดลอกค�าจากด�านิขวา (right-hand side) ไปย�งตั�วแปรที่��อย��ด�านิซึ่�าย (left-hand side) ของเคร*�องหมาย =
16
Operators• Arithmetic Operators (+, -, *, /, %)
• ตั�วด�าเนิ�นิการที่างเลขคณ�ตั• Modulo (%) – ค�านิวณหาเศษของการหาร
• 10 % 2 = 0 11 % 2 = 1• 8 % 6 = 2 2 % 6 = 2
• Compound Assignment (+=, -=, *=, /=, %=, >>=, <<=, &=, ^=, |=)
17
ใช�เม*�อตั�องการย�อค�าส��งที่��ใช� operator ที่างคณ�ตัศาสตัร2ที่��ก�าหนิดให�ส�5นิลง
Operators• Increment และ Decrement Operators (++, --)• ค�าส��งที่างคณ�ตัศาสตัร2บางค�าส��งสามารถูลดร�ปให�ส�5นิลงได�อ�ก
• Increment operator (++) ใช�เพื่��มค�าให�ก�บตั�วแปรข%5นิที่�ละ 1 เหม*อนิก�บ +=1
• Decrement operator (--) ใช�ลดค�าตั�วแปรลงที่�ละ 1 เหม*อนิก�บ -=1
• ด�งนิ�5นิ ++x; ม�ค�าเหม*อนิก�บ x+=1; และ x=x+1;• สามารถูวาง operator ไว�ได�ที่� 5งก�อนิหนิ�า (prefix) หร*อด�านิหล�ง (suffix) ตั�วแปร• y=++x; หร*อ y=--x; (prefix) : เพื่��มหร*อลดค�า x ก�อนิ
ก�าหนิดค�า x ให� y• y=x++; หร*อ y=x--; (suffix) : เพื่��มหร*อลดค�า x หล�ง
ก�าหนิดค�า x ให� y18
Operators• Relational และ comparison operators (==, !=, >, <, >=, <=)• ใช�ในิการเปร�ยบเที่�ยบค�าสองค�า โดยจะให�ผลล�พื่ที่2เป.นิ true หร*อ false
• ข�อส�งเกตั#: = ค*อการก�าหนิดค�า (assign) ในิขณะที่�� == ใช�ในิการเปร�ยบเที่�ยบ
• หากก�าหนิดให� a=2, b=3, c=6
19
Operators• Logical Operators (!, &&, ||)
• ใช�ส�าหร�บการค�านิวณที่างตัรรกะ โดยจะให�5ผลล�พื่ธ์2เป.นิ true หร*อ false
• ! ใช�ในิการหาค�านิ�เสธ์ (NOT) หร*อค�าตัรงข�าม
• && และ || ใช�ค�านิวณหาค�าที่างตัรรกะของการ and และ or ตัามล�าด�บ
20
Operators• Logical Operators (ตั�อ)
• การประมวลผลแบบรวบล�ด (Short-Circuit)• โดยที่��วไป C++ จะประมวลผลค�าส��ง โดยเร��มจากด�านิซึ่�ายไปที่างด�านิขวา
• และจะประมวลผลเที่�าที่��จ�าเป.นิเที่�านิ�5นิ((5 == 5) || (3 > 6))
((5 != 5) && (3 > 6))
21
true
false
ignored
ignored
true
false
Precedence of Operators• การจ�ดล�าด�บการที่�างานิของตั�วด�าเนิ�นิการ
22
Example
23
Step 1. y = 2 * 5 * 5 + 3 * 5 + 7;
Step 2. y = 10 * 5 + 3 * 5 + 7;
Step 3. y = 50 + 3 * 5 + 7;
Step 4. y = 50 + 15 + 7;
Step 5. y = 65 + 7;
Step 6. y = 72;
2 * 5 is 10
10 * 5 is 50
3 * 5 is 15
50 + 15 is 65
65 + 7 is 72
(Leftmost multiplication)
(Leftmost multiplication)
(Multiplication before addition)
(Leftmost addition)
(Last addition)
(Last operation—place 72 in y)
Mathematical Operations with C++• เป.นิการยากที่��จะที่�าการค�านิวณที่างคณ�ตัศาสตัร2ที่��ซึ่�บซึ่�อนิ โดยอาศ�ยเพื่�ยงตั�วด�าเนิ�นิการที่างคณ�ตัศาสตัร2ตัามที่��กล�าวมาแล�ว
• C++ ได�เตัร�ยมช#ดค�าส��ง (หร*อฟั:งก2ช�นิ) ในิการค�านิวณพื่*5นิฐานิที่��จ�าเป.นิที่างคณ�ตัศาสตัร2ไว�ให�ผ��พื่�ฒนิาโปรแกรมได�เร�ยกใช�งานิ• ค�าส��งเหล�านิ�5ถู�กจ�ดเตัร�ยมไว�อย��ในิ Header file ที่��ช*�อว�า cmath
#include <cmath>
• กล#�มของช#ดค�าส��งพื่*5นิฐานิที่างคณ�ตัศาสตัร2ที่�� C++ ม�ให�เร�ยกใช�งานิ• Trigonometric functions – sin, cos, tan, asin, acos, …
• Exponential and Logarithmic functions – exp, log, log2, log10, …
• Power functions – pow, sqrt, …• Rounding functions – ceil, floor• Other functions – abs, …
24
Examples
25
Summary• ตั�วแปร (variable) ถู�กนิ�ามาใช�ในิการช�วยจดจ�าข�อม�ลเพื่*�อใช�งานิในิภายหล�ง ตั�องอาศ�ยการจองพื่*5นิที่��ในิหนิ�วยความจ�า และม�การอ�างอ�งโดยใช�ช*�อ
• ชนิ�ดของตั�วแปร ค*อชนิ�ดของข�อม�ลที่��จะถู�กจ�ดเก0บไว�ในิตั�วแปร ได�แก�• อ�กขระ (Character)• เลขจ�านิวณเตั0ม (Numerical Integer)• เลขที่ศนิ�ยม (Floating-point)• ค�าที่างตัรรกะ (Boolean)
• ค�าคงที่�� (constant) สามารถูพื่�จารณาได�เหม*อนิตั�วแปรที่��ไม�สามารถูเปล��ยนิแปลงค�าในิภายหล�งได� อาศ�ยค�าส�าค�ญ constant ในิการประกาศ
• การตั�5งช*�อตั�วแปรและค�าคงที่�� ตั�องไม�ซึ่�5าก�บค�าส�าค�ญที่��ได�ม�การก�าหนิดไว�
• ช*�อตั�วแปรและค�าคงที่��ในิ C++ นิ�5นิเป.นิแบบ case sensitive26
Summary• ตั�วด�าเนิ�นิการ (operators) ค*อเคร*�องหมายที่��ถู�กใช�เพื่*�อส��งให�โปรแกรมประมวลผล ม�หลายชนิ�ด ได�แก�• ก�าหนิดค�า (Assignment)• ค�านิวณที่างเลขคณ�ตั (Arithmetic)• ค�านิวณและก�าหนิดค�า (Compound Assignment)• เพื่��มค�าและลดค�า (Increment and Decrement)• ความส�มพื่�นิธ์2 และเปร�ยบเที่�ยบ (Relational and Comparison)
• การค�านิวณที่างตัรรกะ (Logical)• เม*�อภายในิค�าส��งประกอบไปด�วยตั�วด�าเนิ�นิการมากกว�า 1 ตั�ว ล�าด�บการประมวลผลตั�วด�าเนิ�นิการ (precedence) ก�อนิหล�งจะเป.นิไปตัามที่��ได�ม�การก�าหนิดไว� 27
Summary• การค�านิวณที่างคณ�ตัศาสตัร2ที่��ซึ่�บซึ่�อนิมากข%5นิสามารถูกระที่�าได�โดยอาศ�ยช#ดค�าส��ง (หร*อฟั:งก2ช�นิ) ที่�� C++ ได�เตัร�ยมไว�ให�เร�ยกใช�• ตั�อง #include <cmath> จ%งจะเร�ยกใช�งานิค�าส��งที่างคณ�ตัศาสตัร2เหล�านิ�5นิได�
• ค�าที่��ป<อนิให�ก�บช#ดค�าส��ง (input) และผลล�พื่ธ์2จากการค�านิวณ (output) จะตั�องเป.นิเลขที่ศนิ�ยม - float, double, …
• C++ จะแปลงค�าที่��ป<อนิช#ดค�าส��งเป.นิค�าที่ศนิ�ยมให�หากจ�าเป.นิ
double output = sqrt(99);
//convert 99 to double (99.0)
• หากนิ�าตั�วแปรชนิ�ด int มาเก0บค�าผลล�พื่ธ์2การค�านิวณ C++ จะที่�าการแปลงค�าผลล�พื่ธ์2ที่��ได�จากช#ดค�าส��งซึ่%�งเป.นิที่ศนิ�ยม ให�กลายเป.นิจ�านิวณเตั0มโดยการป:ดค�าหล�งจดที่ศนิ�ยมที่�5ง (rounding)
int output = sqrt(99);// output = sqrt(82) = 9
28
Labs• Lab 2.1: ที่ดลองเข�ยนิโปรแกรมด�งที่��ก�าหนิดให�
• Compile ผ�านิหร*อไม�?• ผ�ดพื่ลาดจ#ดใด แก�ไขอย�างไร• ที่�างานิได�ถู�กตั�องอย�างที่��ควรจะเป.นิหร*อไม� แก�ไขอย�างไร
29
Labs• Lab 2.2: ที่ดลองเข�ยนิโปรแกรมด�งเพื่*�อค�านิวณตัามสมการ
ก�าหนิดให�: e เป.นิค�าคงที่��ของ Euler
• Input: ค�า x โดยร�บผ�านิค�ย2บอร2ดจากผ��ใช�• Output: ค�า y ที่��ค�านิวณได�จากสมการ
• Test cases:
30
Labs• Lab 2.3: เข�ยนิโปรแกรมค�านิวณการเคล*�อนิที่��ในิแนิวราบ• ตั�วแปรที่��เก��ยวข�อง:
• ความเร0วตั�นิ (u) หนิ�วยเป.นิ เมตัร/ว�นิาที่�• ความเร0วปลาย (v) หนิ�วยเป.นิ เมตัร/ว�นิาที่�• อ�ตัราเร�งในิการเคล*�อนิที่�� (a) หนิ�วยเป.นิ เมตัร/ว�นิาที่�2 • ระยะที่างในิการเคล*�อนิที่�� (s) หนิ�วยเป.นิ เมตัร• เวลาในิการเคล*�อนิที่�� (t) หนิ�วยเป.นิ ว�นิาที่�
• กรณ�ที่�� 1 เคล*�อนิที่��จากหย#ดนิ��ง ด�วยอ�ตัราเร�ง และระยะเวลาที่��ก�าหนิด• ค�านิวณหาความเร0วปลาย (v) และระยะที่างการเคล*�อนิที่�� (s)
• กรณ�ที่�� 2 เคล*�อนิที่��ด�วยความเร0วคงที่�� ลดความเร0วด�วยอ�ตัราเร�งคงที่�� ได�ระยะที่างการเคล*�อนิที่��ภายในิระยะเวลาที่��ก�าหนิด• ค�านิวณหาความเร0วตั�นิ (u) และความเร0วปลาย (v) หล�งจากลด
ความเร0วแล�ว31