week 2 variables, constant, and operators

31
Week 2 Variables, Constant, and Operators

Upload: olive

Post on 04-Jan-2016

25 views

Category:

Documents


3 download

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 Presentation

TRANSCRIPT

Page 1: Week  2 Variables, Constant,  and Operators

Week 2Variables, Constant,

and Operators

Page 2: Week  2 Variables, Constant,  and Operators

Objectives• โครงสร�างของ C++ โปรแกรม (program structure)

•ตั�วแปร (variables)• ชนิ�ดของข�อม�ล (data types)• การประกาศตั�วแปร (variable declaration)

•ค�าคงที่�� (constant)•ตั�วด�าเนิ�นิการ (operators)

2

Page 3: Week  2 Variables, Constant,  and Operators

Structure of a C++ Program

3

Header file

Main function declaration

Main function definition ประกอบไปด�วยช#ดค�าส��ง (expression) ซึ่%�งก�าหนิด การที่�างานิให�โปรแกรม

Comments

ที่#กค�าส��ง (expression) ตั�องถู�กป)ดที่�ายด�วยเคร*�องหมาย semicolon ‘;’

ระบ#ว�าโปรแกรมสามารถูที่�างานิจนิกระที่��งจบโปรแกรมได�

Page 4: Week  2 Variables, Constant,  and Operators

How does a variable looks like?

ช�วยให�โปรแกรมสามารถูจดจ�าข�อม�ลเพื่*�อนิ�าไปใช�ในิภายหล�งได�!!!

4

1. ประกาศตั�วแปรก�อนิใช�งานิ2. ก�าหนิดค�าให�ตั�วแปร3. ด%งค�าของตั�วแปรมาใช�

Page 5: Week  2 Variables, Constant,  and Operators

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

Page 6: Week  2 Variables, Constant,  and Operators

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

Page 7: Week  2 Variables, Constant,  and Operators

Fundamental Data Types

7

Page 8: Week  2 Variables, Constant,  and Operators

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

Page 9: Week  2 Variables, Constant,  and Operators

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นิในิหนิ�วยความจ�า?

Page 10: Week  2 Variables, Constant,  and Operators

Declaration of variables• ช*�อตั�วแปร (identifier) – CASE SENSITIVE

• ประกอบด�วยตั�วอ�กษร ตั�วเลข หร*อเคร*�องหมาย ‘_’ (underscore)

• ไม�ข%5นิตั�นิด�วยตั�วเลข ไม�ม� “__” (double underscore) อย��ในิช*�อ

• ไม�ซึ่�5าก�บค�าส�าค�ญ (reserved keyword) ที่�� C++ ได�จองไว�ใช�งานิ

10

IDE และ Compiler จะแจ�งให�เราที่ราบเม*�อม�การตั�5งช*�อไม�ถู�กตั�อง

Page 11: Week  2 Variables, Constant,  and Operators

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

Page 12: Week  2 Variables, Constant,  and Operators

String• String - จ�ดอย��ในิกล#�มของตั�วแปรประกอบ (compound type) ซึ่%�งจ�ดเก0บข�อม�ลชนิ�ดอ�กขระ (char) หลายตั�วเข�าด�วยก�นิ• ใช�จ�ดเก0บ ค�า และข�อความ

• ตั�อง #include <string> ในิส�วนิ preprocessor

12

Page 13: Week  2 Variables, Constant,  and Operators

String• เราสามารถูใช�งานิตั�วแปรชนิ�ด String นิ�5ได�แบบเด�ยวก�บตั�วแปรชนิ�ดอ*�นิๆ• การก�าหนิดหร*อไม�ก�าหนิดค�าเร��มตั�นิ • การเปล��ยนิแปลงค�าระหว�างการที่�างานิของโปรแกรม

13

Page 14: Week  2 Variables, Constant,  and Operators

Special Characters• อ�กขระพื่�เศษ (escape code)

• อ�กขระซึ่%�งยากที่��ระบ#ลงไปในิโค�ดของโปรแกรม ปกตั�แล�วจะนิ�าหนิ�าด�วยescape character ( \ ) เช�นิ การข%5นิบรรที่�ดใหม� การแที่0บ การลบอ�กขระ

14

Page 15: Week  2 Variables, Constant,  and Operators

Typed Constant Expression• การก�าหนิดค�าคงที่��

• หนิ�วยความจ�าบร�เวณที่��ใช�เก0บค�าคงที่�� จะไม�อนิ#ญาตัให�แก�ไขข�อม�ลได�

• โดยที่��วไปจะตั�องระบ#ชนิ�ดของข�อม�ล (data type) ด�วยเสมอ

const type identifier = value;

15

Page 16: Week  2 Variables, Constant,  and Operators

Operators• ตั�วด�าเนิ�นิการ (operator)

• เราสามารถูนิ�าตั�วแปร (variable) และค�าคงที่�� (constant) มาใช�ในิการค�านิวณหร*อประมวลผลตั�างๆได�โดยอาศ�ยตั�วด�าเนิ�นิการตั�างๆ

• Assignment Operator (=)• ใช�ในิการก�าหนิดค�าให�ก�บตั�วแปร โดยค�ดลอกค�าจากด�านิขวา (right-hand side) ไปย�งตั�วแปรที่��อย��ด�านิซึ่�าย (left-hand side) ของเคร*�องหมาย =

16

Page 17: Week  2 Variables, Constant,  and Operators

Operators• Arithmetic Operators (+, -, *, /, %)

• ตั�วด�าเนิ�นิการที่างเลขคณ�ตั• Modulo (%) – ค�านิวณหาเศษของการหาร

• 10 % 2 = 0 11 % 2 = 1• 8 % 6 = 2 2 % 6 = 2

• Compound Assignment (+=, -=, *=, /=, %=, >>=, <<=, &=, ^=, |=)

17

ใช�เม*�อตั�องการย�อค�าส��งที่��ใช� operator ที่างคณ�ตัศาสตัร2ที่��ก�าหนิดให�ส�5นิลง

Page 18: Week  2 Variables, Constant,  and Operators

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

Page 19: Week  2 Variables, Constant,  and Operators

Operators• Relational และ comparison operators (==, !=, >, <, >=, <=)• ใช�ในิการเปร�ยบเที่�ยบค�าสองค�า โดยจะให�ผลล�พื่ที่2เป.นิ true หร*อ false

• ข�อส�งเกตั#: = ค*อการก�าหนิดค�า (assign) ในิขณะที่�� == ใช�ในิการเปร�ยบเที่�ยบ

• หากก�าหนิดให� a=2, b=3, c=6

19

Page 20: Week  2 Variables, Constant,  and Operators

Operators• Logical Operators (!, &&, ||)

• ใช�ส�าหร�บการค�านิวณที่างตัรรกะ โดยจะให�5ผลล�พื่ธ์2เป.นิ true หร*อ false

• ! ใช�ในิการหาค�านิ�เสธ์ (NOT) หร*อค�าตัรงข�าม

• && และ || ใช�ค�านิวณหาค�าที่างตัรรกะของการ and และ or ตัามล�าด�บ

20

Page 21: Week  2 Variables, Constant,  and Operators

Operators• Logical Operators (ตั�อ)

• การประมวลผลแบบรวบล�ด (Short-Circuit)• โดยที่��วไป C++ จะประมวลผลค�าส��ง โดยเร��มจากด�านิซึ่�ายไปที่างด�านิขวา

• และจะประมวลผลเที่�าที่��จ�าเป.นิเที่�านิ�5นิ((5 == 5) || (3 > 6))

((5 != 5) && (3 > 6))

21

true

false

ignored

ignored

true

false

Page 22: Week  2 Variables, Constant,  and Operators

Precedence of Operators• การจ�ดล�าด�บการที่�างานิของตั�วด�าเนิ�นิการ

22

Page 23: Week  2 Variables, Constant,  and Operators

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)

Page 24: Week  2 Variables, Constant,  and Operators

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

Page 25: Week  2 Variables, Constant,  and Operators

Examples

25

Page 26: Week  2 Variables, Constant,  and Operators

Summary• ตั�วแปร (variable) ถู�กนิ�ามาใช�ในิการช�วยจดจ�าข�อม�ลเพื่*�อใช�งานิในิภายหล�ง ตั�องอาศ�ยการจองพื่*5นิที่��ในิหนิ�วยความจ�า และม�การอ�างอ�งโดยใช�ช*�อ

• ชนิ�ดของตั�วแปร ค*อชนิ�ดของข�อม�ลที่��จะถู�กจ�ดเก0บไว�ในิตั�วแปร ได�แก�• อ�กขระ (Character)• เลขจ�านิวณเตั0ม (Numerical Integer)• เลขที่ศนิ�ยม (Floating-point)• ค�าที่างตัรรกะ (Boolean)

• ค�าคงที่�� (constant) สามารถูพื่�จารณาได�เหม*อนิตั�วแปรที่��ไม�สามารถูเปล��ยนิแปลงค�าในิภายหล�งได� อาศ�ยค�าส�าค�ญ constant ในิการประกาศ

• การตั�5งช*�อตั�วแปรและค�าคงที่�� ตั�องไม�ซึ่�5าก�บค�าส�าค�ญที่��ได�ม�การก�าหนิดไว�

• ช*�อตั�วแปรและค�าคงที่��ในิ C++ นิ�5นิเป.นิแบบ case sensitive26

Page 27: Week  2 Variables, Constant,  and Operators

Summary• ตั�วด�าเนิ�นิการ (operators) ค*อเคร*�องหมายที่��ถู�กใช�เพื่*�อส��งให�โปรแกรมประมวลผล ม�หลายชนิ�ด ได�แก�• ก�าหนิดค�า (Assignment)• ค�านิวณที่างเลขคณ�ตั (Arithmetic)• ค�านิวณและก�าหนิดค�า (Compound Assignment)• เพื่��มค�าและลดค�า (Increment and Decrement)• ความส�มพื่�นิธ์2 และเปร�ยบเที่�ยบ (Relational and Comparison)

• การค�านิวณที่างตัรรกะ (Logical)• เม*�อภายในิค�าส��งประกอบไปด�วยตั�วด�าเนิ�นิการมากกว�า 1 ตั�ว ล�าด�บการประมวลผลตั�วด�าเนิ�นิการ (precedence) ก�อนิหล�งจะเป.นิไปตัามที่��ได�ม�การก�าหนิดไว� 27

Page 28: Week  2 Variables, Constant,  and Operators

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

Page 29: Week  2 Variables, Constant,  and Operators

Labs• Lab 2.1: ที่ดลองเข�ยนิโปรแกรมด�งที่��ก�าหนิดให�

• Compile ผ�านิหร*อไม�?• ผ�ดพื่ลาดจ#ดใด แก�ไขอย�างไร• ที่�างานิได�ถู�กตั�องอย�างที่��ควรจะเป.นิหร*อไม� แก�ไขอย�างไร

29

Page 30: Week  2 Variables, Constant,  and Operators

Labs• Lab 2.2: ที่ดลองเข�ยนิโปรแกรมด�งเพื่*�อค�านิวณตัามสมการ

ก�าหนิดให�: e เป.นิค�าคงที่��ของ Euler

• Input: ค�า x โดยร�บผ�านิค�ย2บอร2ดจากผ��ใช�• Output: ค�า y ที่��ค�านิวณได�จากสมการ

• Test cases:

30

Page 31: Week  2 Variables, Constant,  and Operators

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