PowerPoint - ee.eng.cmu.ac.th

Download Report

Transcript PowerPoint - ee.eng.cmu.ac.th

Week 2
Variables, Constant,
and Operators
Objectives
• โครงสร้างของ C++ โปรแกรม (program structure)
• ตัวแปร (variables)
• ชนิดของข้อมูล (data types)
• การประกาศตัวแปร (declaration)
• ค่าคงที่ (constant)
• ตัวดาเนินการ (operators)
2
Structure of a C++ Program
Header file
Main function declaration
Comments
Main function definition
ประกอบไปด้วยชุดคาสัง่
(expression) ซึง่ กาหนด
การทางานให้โปรแกรม
ระบุวา่ โปรแกรมสามารถทางาน
จนกระทังจบโปรแกรมได้
่
ทุกคาสัง่ (expression) ต้องถูกปิดท้ายด้วยเครือ่ งหมาย semicolon ‘;’
3
How does a variable looks like?
1. ประกาศตัวแปรก่อนใช้งาน
2. กาหนดค่าให้ตวั แปร
3. ดึงค่าของตัวแปรมาใช้
ช่วยให้โปรแกรมสามารถจดจาข้อมูลเอาไว้ใช้ในภายหลังได้!!!
4
Fundamental Data Types
• C++ เป็ นภาษาทีต่ อ้ งมีประกาศตัวแปรก่อนจะนาตัวแปรไปใช้งานเสมอ
และในการประกาศตัวแปรต้องระบุชนิดของข้อมูลทีจ่ ะจัดเก็บด้วย
• ชนิดของตัวแปร สามารถแบ่งได้ตามชนิดของข้อมูลทีจ่ ะจัดเก็บ ได้แก่
• Character types - ข้อมูลอักขระ หรือการเก็บข้อมูลเป็ นตัวอักษร 1 ตัว
• ‘A’, ‘a’, ‘5’, ‘.’, ‘_’, ‘ ‘ (space)
• ‘\t‘ (tab), ‘\n’ (newline)
• หมายเหตุ: ‘5’ ไม่สามารถนาไปใช้ในการคานวณทางคณิตศาสตร์ได้
• Numerical Integer types - เลขจานวนเต็มทีส่ ามารถนาไปใช้คานวณได้
• 7, 1024, 65535, -127, 0
(unsigned int), 7l (long), 7ul (unsigned long)
0x4b, 0xFF (เลขฐาน 16 หรือ Hexadecimal)
0113, 0720 (เลขฐาน 8)
• 7u
•
•
5
Fundamental Data Types
• ชนิดของตัวแปร (ต่อ)
• Floating-point types - เลขทศนิยม หรือจานวนจริง ใช้ในการคานวณได้
• Default type - double
• 3.14159, 0.01
• 6.02e23, 1.75e-9
• 3.0
• 3.14159L
• 6.02e23f
(long double)
(float)
• Boolean type - ค่าความจริง ซึง่ มักใช้ในการทดสอบเงือ่ นไขต่างๆ
• true, false
6
Fundamental Data Types
7
Declaration of variables
• การประกาศตัวแปร (Declaration)
type identifier_list;
• เป็ นการจองพืน
้ ทีใ่ นหน่วยความจาของคอมพิวเตอร์ (RAM)
เพือ่ ใช้เก็บข้อมูลชนิดทีไ่ ด้ระบุไว้
• มีการตัง้ ชื่อให้กบั หน่วยความจาตาแหน่งนัน้ ๆ เพือ่ ความสะดวกในการอ้างอิง
• การกาหนดค่าเริม่ ต้นให้ตวั แปร (Initialization)
type identifier = initial_value;
int a = 1, b = 5;
char charp = ‘#’, at = ‘@’;
8
Example
• ตัวอย่าง - ผลลัพท์ทแ่ี สดงออกทางหน้าจอคือ? เกิดอะไรขึน้ ในหน่วยความจา?
a xxx
int a, b;
b yyy
result
zzz
int result;
a
5
a = 5;
b
2
b = 2;
result
zzz
a
6
b
2
result
4
a = a+1;
result = a-b;
9
Declaration of variables
• ชื่อตัวแปร (identifier) – CASE SENSITIVE
• ประกอบด้วยตัวอักษร ตัวเลข หรือเครือ่ งหมาย ‘_’ (underscore)
• ไม่ขน
้ึ ต้นด้วยตัวเลข ไม่มี “__” (double underscore) อยูใ่ นชื่อ
• ไม่ซ้ากับคาสาคัญ (reserved keyword) ที่ C++ ได้จองไว้ใช้งาน
IDE และ Compiler จะแจ้งให้เราทราบเมือ่ มีการตัง้ ชื่อไม่ถกู ต้อง
10
Declaration of variables
• ตัวอย่างการตัง้ ชื่อตัวแปร
• first_name
valid
• last-name
invalid – contains ‘-’
• include
invalid – match a keyword
• YearOne
valid
• 40days
invalid – starts with numeric character
• example#1
invalid – contains ‘#’
• _long
valid
• goto
invalid – match a keyword
• float__a
invalid – contains double underscores
• using
invalid – match a keyword
11
String
• String - จัดอยูใ่ นกลุ่มของตัวแปรประกอบ (compound type) ซึง่
จัดเก็บข้อมูลชนิดอักขระ (char) หลายตัวเข้าด้วยกัน
• ใช้จดั เก็บ คา และข้อความ
• ต้อง #include
<string>
ในส่วน preprocessor
12
String
• เราสามารถใช้งานตัวแปรชนิด String นี้ได้แบบเดียวกับตัวแปรชนิดอื่นๆ
• การกาหนดหรือไม่กาหนดค่าเริม่ ต้น
• การเปลีย่ นแปลงค่าระหว่างการทางานของโปรแกรม
13
Special Characters
• อักขระพิเศษ (special character หรือ escape code)
• อักขระซึง่ ยากทีร่ ะบุลงไปในโค้ดของโปรแกรม ปกติแล้วจะนาหน้าด้วย
escape character ( \ ) เช่น การขึน้ บรรทัดใหม่ การแท็บ การลบอักขระ
14
Typed Constant Expression
• การกาหนดค่าคงที่
• หน่วยความจาบริเวณทีใ่ ช้เก็บค่าคงที่ จะไม่อนุ ญาตให้แก้ไขข้อมูลได้
• โดยทัวไปจะต้
่
องระบุชนิดของข้อมูล (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
• 8%6=2
11 % 2 = 1
2%6=2
• Compound Assignment (+=, -=, *=, /=, %=, >>=, <<=, &=, ^=, |=)
ใช้เมือ่ ต้องการย่อคาสังที
่ ใ่ ช้ operator ทาง
คณิตศาสตร์ทก่ี าหนดให้สนั ้ ลง
17
Operators
• Increment และ Decrement Operators (++, --)
• คาสังทางคณิ
่
ตศาสตร์บางคาสังสามารถลดรู
่
ปให้สนั ้ ลงได้อกี
• Increment operator (++) ใช้เพิม่ ค่าให้กบั ตัวแปรขึน
้ ทีละ 1 เหมือนกับ +=1
• Decrement operator (--) ใช้ลดค่าตัวแปรลงทีละ 1 เหมือนกับ -=1
• ดังนัน้ ++x; มีคา่ เหมือนกัน x+=1; และ x=x+1;
• สามารถวาง operator ไว้ได้ทงั ้ ก่อนหน้า (prefix) หรือด้านหลัง (suffix) ตัวแปร
• y=++x; หรือ y=--x; (prefix) : เพิม
่ หรือลดค่า x ก่อนกาหนดค่า x ให้ y
• y=x++; หรือ y=x--; (suffix) : กาหนดค่า x ให้ y ก่อนเพิม
่ หรือลดค่า x
18
Operators
• Relational และ comparison operators (==, !=, >, <, >=, <=)
• ใช้ในการเปรียบเทียบค่าสองค่า โดยจะให้ผลลัพท์เป็ น true หรือ false
• ข้อสังเกตุ: = คือการกาหนดค่า (assign) ในขณะที่ == ใช้ในการเปรียบเทียบ
• หากกาหนดให้ a=2, b=3, c=6
19
Operators
• Logical Operators (!, &&, ||)
• ใช้สาหรับการคานวณทางตรรกะ โดยจะได้ผลลัพธ์เป็ น true หรือ false
• ! ใช้ในการหาค่านิเสธ (NOT) หรือค่าตรงข้าม
• && และ || ใช้คานวณหาค่าทางตรรกะของการ and และ or ตามลาดับ
20
Operators
• Logical Operators (ต่อ)
• Short-Circuit
• C++ จะประมวลผลคาสัง่ โดยเริม่ จากด้านซ้ายไปทางด้านขวา
• และจะประมวลผลเท่าทีจ่ าเป็ นเท่านัน้
((5 == 5) || (3 > 6))
ignored
true
true
หรือ
((5 != 5) && (3 > 6))
ignored
false
false
21
Precedence of Operators
• การจัดลาดับการทางานของตัวดาเนินการ
22
Example
Step 1.
y = 2 * 5 * 5 + 3 * 5 + 7;
(Leftm ost multip lic ation)
2 * 5 is 10
Step 2.
y = 10 * 5 + 3 * 5 + 7;
(Leftm ost multip lic ation)
10 * 5 is 50
Step 3.
y = 50 + 3 * 5 + 7;
(Multip lic ation before ad dition)
3 * 5 is 15
Step 4.
y = 50 + 15 + 7;
(Leftm ost ad dition)
50 + 15 is 65
Step 5.
y = 65 + 7;
(Last a dd ition)
65 + 7 is 72
Step 6.
y = 72;
(Last op era tio n—p la c e 72 in y)
23
Mathematical Operations with C++
• เป็ นการยากทีจ่ ะทาการคานวณทางคณิตศาสตร์ทซ
่ี บั ซ้อน โดยอาศัย
เพียงตัวดาเนินการทางคณิตศาสตร์ตามทีก่ ล่าวมาแล้ว
• C++ ได้เตรียมชุดคาสัง่ (หรือฟงั ก์ชนั ) ในการคานวณพืน
้ ฐานทีจ่ าเป็ น
ทางคณิตศาสตร์ไว้ให้นกั พัฒนาโปรแกรมได้เรียกใช้งาน
• คาสังเหล่
่ านี้ถกู จัดเตรียมไว้อยูใ่ น Header file ทีช่ ่อื ว่า cmath
#include <cmath>
• กลุ่มของชุดคาสังพื
่ น้ ฐานทางคณิตศาสตร์ท่ี 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) ถูกนามาใช้ในการช่วยจดจาข้อมูลเพือ่ ใช้งานใน
ภายหลัง ต้องอาศัยการจองพืน้ ทีใ่ นหน่วยความจา และมีการอ้างอิงโดย
ใช้ช่อื
• ชนิดของตัวแปร คือชนิดของข้อมูลทีจ่ ะถูกจัดเก็บไว้ในตัวแปร ได้แก่
• อักขระ (Character)
• เลขจานวณเต็ม (Numerical Integer)
• เลขทศนิยม (Floating-point)
• ค่าทางตรรกะ (Boolean)
• ค่าคงที่ (constant) สามารถพิจารณาได้เหมือนตัวแปรทีไ่ ม่สามารถ
เปลีย่ นแปลงค่าในภายหลังได้ อาศัยคาสาคัญ constant ในการประกาศ
• การตัง้ ชื่อตัวแปรและค่าคงที่ ต้องไม่ซ้ากับคาสาคัญทีไ่ ด้มกี ารกาหนดไว้
• ชื่อตัวแปรและค่าคงทีใ่ น C++ นัน้ เป็ นแบบ case sensitive
26
Summary
• ตัวดาเนินการ (operators) คือเครือ่ งหมายทีถ่ ูกใช้เพือ่ สังให้
่ โปรแกรม
ประมวลผล มีหลายชนิด ได้แก่
• กาหนดค่า (Assignment)
• คานวณทางเลขคณิต (Arithmetic)
• คานวณและกาหนดค่า (Compound Assignment)
• เพิม่ ค่าและลดค่า (Increment and Decrement)
• ความสัมพันธ์ และเปรียบเทียบ (Relational and Comparison)
• การคานวณทางตรรกะ (Logical)
• เมือ่ ภายในคาสังประกอบไปด้
่
วยตัวดาเนินการมากกว่า 1 ตัว ลาดับ
การประมวลผลตัวดาเนินการ (precedence) ก่อนหลังจะเป็ นไปตามที่
ได้มกี ารกาหนดไว้
27
Summary
• การคานวณทางคณิตศาสตร์ทซ
่ี บั ซ้อนมากขึน้ สามารถกระทาได้โดย
อาศัยชุดคาสัง่ (หรือฟงั ก์ชนั ) ที่ C++ ได้เตรียมไว้ให้เรียกใช้
• ต้อง #include <cmath> จึงจะเรียกใช้งานคาสังทางคณิ
่
ตศาสตร์เหล่านัน้ ได้
• ค่าทีป
่ ้ อนให้กบั ชุดคาสัง่ (input) และผลลัพธ์จากการคานวณ (output) จะต้อง
เป็ นเลขทศนิยม - float, double, …
• C++ จะแปลงค่าทีป
่ ้ อนชุดคาสังเป็
่ นค่าทศนิยมให้หากจาเป็ น
double output = sqrt(99);
//convert 99 to double (99.0)
• หากนาตัวแปรชนิด int มาเก็บค่าผลลัพธ์การคานวณ C++ จะทาการแปลงค่า
ผลลัพธ์ทไ่ี ด้จากชุดคาสังซึ
่ ง่ เป็ นทศนิยม ให้กลายเป็ นจานวณเต็มโดยการปดั ค่า
หลังจดทศนิยมทิง้ (rounding)
int output = sqrt(99);
// output = sqrt(82) = 9
28
Labs
• Lab 2.1: ทดลองเขียนโปรแกรมดังทีก่ าหนดให้
• Compile ผ่านหรือไม่?
• ผิดพลาดจุดใด แก้ไขอย่างไร
• ทางานได้ถกู ต้องอย่างทีค่ วรจะเป็ นหรือไม่ แก้ไขอย่างไร
29
Labs
• Lab 2.2: ทดลองเขียนโปรแกรมดังเพือ่ คานวณตามสมการ
ค่า e เป็ นค่าคงที่ เท่ากับ 2.71828
• Input: ค่า x โดยรับผ่านคียบ
์ อร์ดจากผูใ้ ช้
• Output: ค่า y ทีค่ านวณได้จากสมการ
• Test cases:
30
Labs
• Lab 2.3: เขียนโปรแกรมคานวณการเคลื่อนทีใ่ นแนวราบ
• ตัวแปรทีเ่ กีย่ วข้อง:
•
•
•
•
•
ความเร็วต้น (u)
ความเร็วปลาย (v)
อัตราเร่งในการเคลื่อนที่ (a)
ระยะทางในการเคลื่อนที่ (s)
เวลาในการเคลื่อนที่ (t)
หน่วยเป็ น เมตร/วินาที
หน่วยเป็ น เมตร/วินาที
หน่วยเป็ น เมตร/วินาที2
หน่วยเป็ น เมตร
หน่วยเป็ น วินาที
• กรณีท่ี 1 เคลื่อนทีจ่ ากหยุดนิ่ง ด้วยอัตราเร่ง และระยะเวลาทีก่ าหนด
• คานวณหาความเร็วปลาย (v) และระยะทางการเคลื่อนที่ (s)
• กรณีท่ี 2 เคลื่อนทีด่ ว้ ยความเร็วคงที่ ลดความเร็วด้วยอัตราเร่งคงที่ ได้
ระยะทางการเคลื่อนทีภ่ ายในระยะเวลาทีก่ าหนด
• คานวณหาความเร็วต้น (u) และความเร็วปลาย (v) หลังจากลดความเร็วแล้ว
31