Basic I/O, Data Types, Variables,
Operators, Expressions, Statements
ภาควิชาวิศวกรรมคอมพิวเตอร์
จุฬาลงกรณ์มหาวิทยาลัย
๒๕๖๒

โครงสร้างโปรแกรมและลักษณะการทำงาน

ลูกศรชี้ลง แสดงว่าโปรแกรมทำงานจากบนลงล่าง
ป้ายชี้ไปที่ comment ลูกศรชี้ขึ้นไปยังแนวเริ่มต้นของคำสั่ง
import matplotlib.pyplot
as plt
import math
n = int(input())
# data points
if n < 10:
n = 10
x = []
y = []
for k
in range(n):
x.append(k*16*math.pi/n)
y.append(0.1*k*math.sin(x[k]))
plt.plot(x, y)
plt.show()
ต้องเริ่มคำสั่งให้อยู่ในแนวเดียวกันกับคำสั่งอื่นในกลุ่ม
ทำงานทีละคำสั่ง
จากบนลงล่าง
บางคำสั่งก็
ทำงานเป็นวงวน
บางคำสั่งก็เป็น
แบบเลือกทำ
2110101 วิศวกรรมคอมพิวเตอร์ จุฬาฯ (14/09/67)
3

Basic Data Types: String and Number

•
String
–
"Hello"
–
"Hello Python"
–
"12345"
–
""
•
Number
–
integer
•
1234, 0
–
floating point
•
-1234.0, 1.5E-15
←
1.5 ×
10
-15
'Hello'
'Hello Python'
'12345'
''
2110101 วิศวกรรมคอมพิวเตอร์ จุฬาฯ (14/09/67)
4

Operator: plus

•
ข้อความ
บวก
กัน คือข้อความ
ต่อ
กัน
–
"Hello"
+
" "
+
"!"
ได้
"Hello !"
–
"1"
+
"1"
ได้
"11"
•
จำนวน
บวก
กัน
-
1
+
1
ได้
2
-
1
+
1.0
ได้
2.0
•
ข้อความบวกกับจำนวนไม่ได้
–
"1"
+
1
←
ผิด
2110101 วิศวกรรมคอมพิวเตอร์ จุฬาฯ (14/09/67)
5

print( … ) แสดงผลทางจอภาพ

2110101 วิศวกรรมคอมพิวเตอร์ จุฬาฯ (14/09/67)
6

ตัวแปร (Variables)

ลูกศรโค้งชี้ไปที่ตัวแปร name ลูกศรโค้งชี้ไปที่ตัวแปร lang
•
ตัวแปรเป็นที่เก็บข้อมูล
–
ต้องมีชื่อกำกับ
–
เปลี่ยนค่าในที่เก็บได้
name
= "Python"
lang
= name
นำค่า
"Python"
เก็บในตัวแปร
name
นำข้อมูลใน
name
เก็บในตัวแปร
lang
ทำให้
lang
กับ
name
เก็บค่าเหมือนกัน
a = 1 #
a = 1
b = 2 # a = 1;
b = 2
c = a # a = 1; b = 2;
c = 1
d = c + b # a = 1; b = 2; c = 1;
d = 3
d = d + 5 # a = 1; b = 2; c = 1;
d = 8
หลายคนเขียน
1+2 = a
ผิด
!!!
2110101 วิศวกรรมคอมพิวเตอร์ จุฬาฯ (14/09/67)
7

ชื่อตัวแปร

•
ประกอบด้วยตัวอักษร ตัวเลข หรือเครื่องหมายขีดเส้นใต้
•
ตัวอังกฤษใหญ่กับเล็กไม่เหมือนกัน
•
ห้ามขึ้นต้นชื่อด้วยดัวเลข
•
ไม่ซ้ำกับคำสงวนของภาษา
and
as
assert
break
class
continue
def
del
elif
else
except
exec
finally for
from
global
if
import
in
is
lambda
nonlocal not
or
pass
raise
return try
while
with
yield
True
False
None
first_name
= "John"
last_name
= "Wick"
2110101 วิศวกรรมคอมพิวเตอร์ จุฬาฯ (14/09/67)
8

Basic Data Types

•
str
ข้อความ
•
int
จำนวนเต็ม
•
float
จำนวนจริง (มีจุดทศนิยม)
•
bool
ค่าจริงกับเท็จเท่านั้น
(True
กับ
False)
•
list
ชุดข้อมูล เก็บเรียงเป็นลำดับ
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
["SU", "MO", "TU", "WE", "TH", "FR", "SA"]
[6230012021, [2110101, 2301107]]
[ ]
2110101 วิศวกรรมคอมพิวเตอร์ จุฬาฯ (14/09/67)
9

ตัวอย่าง: Variables & Data Types

first_name
= "Ranee" #
str
last_name
= "Campen" #
str
aka = "Bella" #
str
age = 29 #
int
height = 1.65 #
float
is_single
= True #
bool
birth_date
= [24, 12, 1989] #
list
tv_series
= ["Roy Marn", "Plerng
Boon",
"Bubphe
Sanniwat", "Krong
Kam"]
print("Name:", first_name, last_name)
print("Age:", age)
print("Aka:", aka, "or", aka[0:4:1])
d = birth_date[0]
m = birth_date[1]
y = birth_date[2]
print("Born:", str(d)+"/"+str(m)+"/"+str(y))
จะได้ศึกษาการจัดการข้อมูล
ประเภทต่าง ๆ ต่อไป
2110101 วิศวกรรมคอมพิวเตอร์ จุฬาฯ (14/09/67)
10

Type Conversions

•
ข้อมูลส่วนใหญ่แปลงเป็น
string
ได้ด้วย
str
•
ข้อมูลบางอย่างก็อาจแปลงเป็น
int
กับ
float
ได้
2110101 วิศวกรรมคอมพิวเตอร์ จุฬาฯ (14/09/67)
11

input() รับสตริงจากแป้นพิมพ์

ลูกศรชี้จากคำอธิบายมาที่คำสั่ง input()
Python
is a very easy language.
We use
Python
in our class.
Hello
Python
.
output
หลังจากสั่งทำงานแล้วกดคำว่า
Python
ก็จะได้ผลเป็น
input()
รอรับข้อมูลที่ป้อนทางคีย์บอร์ด
พอกด enter
ข้อมูลนั้นจะกลายเป็นสตริง
นำมาเก็บในตัวแปร
name
2110101 วิศวกรรมคอมพิวเตอร์ จุฬาฯ (14/09/67)
12

รับจำนวน คือ รับสตริงแล้วเปลี่ยนเป็นจำนวน

ลูกศรชี้ไปทางขวา
ลูกศรชี้ไปทางขวา
Perimeter of square = 48.0
output
หลังจากสั่งทำงานแล้วกด
12
ก็จะได้ผลเป็น
d
=
float(
input()
)
...
x
=
input()
d =
float(
x
)
...
d
=
int(
input()
)
...
x
=
input()
d =
int(
x
)
...
รับจำนวนจริง
รับจำนวนเต็ม
2110101 วิศวกรรมคอมพิวเตอร์ จุฬาฯ (14/09/67)
13

Basic Arithmetic Operations

+
บวก
-
ลบ
*
คูณ
/
หาร
//
หารปัดเศษ
%
เศษจากการหาร
**
ยกกำลัง
=
กาให้ค่า
a = 5 +
2 # 7
b = 5 -
2 # 3
c = 5 *
2 # 10
d = 5 **
2 # 25
e = 5 /
2 # 2.5
f = 5 //
2 # 2
g = 5 %
2 # 1
a,b,c
=
c,a,b
# a = 10
# b = 7
# c = 3
a,b
=
b,a
#
สลับค่า
a
กับ
b
2110101 วิศวกรรมคอมพิวเตอร์ จุฬาฯ (14/09/67)
14

Tips

a = float(input())
a = -a #
เปลี่ยนจำนวนลบเป็นบวก จำนวนบวกเป็นลบ
b = int(a) #
ปัดเศษของ
a
ทิ้ง
c = int(a + 0.5) #
ปัดเศษของ
a
แบบมีขึ้นหรือลง
d = a –
int(a) #
ค่าหลังจุดทศนิยมของ
a
d = a % 1 #
ค่าหลังจุดทศนิยมของ
a
e = b % 10 #
เลขหลักหน่วยของ
b
f = b // 10 % 10 #
เลขหลักสิบของ
b
g = b // 10**4 % 10 #
เลขหลักหมื่นของ
b
h = input() # h
เก็บสตริง
h = int(h) # h
เก็บจำนวนเต็ม (ใช้ตัวแปรซ้ำได้)
2110101 วิศวกรรมคอมพิวเตอร์ จุฬาฯ (14/09/67)
15

แบบฝึกหัด: รับเซลเซียส แสดงฟาเรนไฮต์

ลูกศรชี้ไปทางขวา
ลูกศรชี้ไปทางขวา
0
32
Input
Output
100
312
2110101 วิศวกรรมคอมพิวเตอร์ จุฬาฯ (14/09/67)
16

Augmented Assignments

a = 10
a = a + 5 # 15
a = a -
1 # 14
a = a * 2 # 28
a = a % 10 # 8
a = a ** 2 # 64
a = a // 10 # 6
a = 10
a += 5 # 15
a -= 1 # 14
a *= 2 # 28
a %= 10 # 8
a **= 2 # 64
a //= 10 # 6
2110101 วิศวกรรมคอมพิวเตอร์ จุฬาฯ (14/09/67)
17

math module

หน้าจอ Thonny แสดงรายการฟังก์ชันใน math module
import math
degree = float(input())
radian = degree * 3.14159 / 180
radian = degree * math.pi
/ 180
radian = math.radians(degree)
s = math.sin(radian)
c = math.cos(radian)
g = math.log(
1E100, 10 )
# g = 100.0
มีฟังก์ชันทางคณิตศาตร์
มากมายให้ใช้ใน
math
module
2110101 วิศวกรรมคอมพิวเตอร์ จุฬาฯ (14/09/67)
18

Built-in Functions

a = abs(-2)
# a = 2
b = round(2/3, 2)
# b = 0.67
c = max([4,1,5,3])
# c = 5
d = min([4,1,5,3])
# d = 1
e = sum([4,1,5,3])
# e = 13
f = len([4,1,5,3])
# f = 4
g = str(1234) # g = "1234"
h = int("123")
# h = 123
j = float("-123.4")
# j = -123.4
k = input()
print(a,b,c)
จะได้เรียนวิธีการเขียนฟังก์ชันใหม่ ๆ ไว้ใช้เองต่อไป
2110101 วิศวกรรมคอมพิวเตอร์ จุฬาฯ (14/09/67)
19

ใช้ฟังก์ชันซ้อน ๆ กันได้

print("x5 = " + str(1 + abs(int(input()))))
เขียนซ้อนมากชั้นเกินไป จะเข้าใจยาก
2110101 วิศวกรรมคอมพิวเตอร์ จุฬาฯ (14/09/67)
20

Operator Precedence: 2 + 3 * 4 = ?

•
ลำดับการคำนวณ จากก่อนไปหลังเป็นดังนี้
–
ในวงเล็บ
–
ยกกำลัง
–
ติดลบ
–
* / // %
–
บวก และ ลบ
–
ถ้าพบหลายตัวที่สำคัญเท่ากัน ให้ทำตัวซ้ายไปขวา
(ยกเว้นยกกำลัง ทำขวามาซ้าย เช่น
2**3**2 = 2**9 = 512
)
2 * 3 + 8 / -(2 –
4) –
2**2**3
2 * 3 + 8 / -( -2 ) –
2**2**3
2 * 3 + 8 / -( -2 ) –
2**8
2 * 3 + 8 / -( -2 ) –
256
2 * 3 + 8 / 2 -
256
6 + 8 / 2 -
256
6 + 4.0 -
256
10.0 -
256
PEMDAS
:
P
arentheses
E
xponential
M
ultiply
D
ivide
A
dd
S
ubstract
2110101 วิศวกรรมคอมพิวเตอร์ จุฬาฯ (14/09/67)
21

ตัวอย่าง: คำนวณพื้นที่และเส้นรอบวงของวงกลม

Area = 63.62
Circumference = 28.27
output
หลังจากสั่งทำงานแล้วป้อน
4.5
จะได้ผลเป็น
2110101 วิศวกรรมคอมพิวเตอร์ จุฬาฯ (14/09/67)
22

เลขประจำตัวนิสิต

ตารางความหมายของเลขหลักที่สามในรหัสนิสิต
ลูกศรชี้ไปที่สองหลักแรก ลูกศรชี้ไปที่หลักที่สาม ลูกศรชี้ไปที่สองหลักสุดท้าย
6 2 3 0 0 1 2 0 2 1
ปีที่เริ่มการศึกษา
21 คณะวิศวกรรมศาสตร์
22 คณะอักษรศาสตร์
23 คณะวิทยาศาสตร์
24 คณะรัฐศาสตร์
…
2110101 วิศวกรรมคอมพิวเตอร์ จุฬาฯ (14/09/67)
23

ตัวอย่าง: รหัสนิสิต → คณะอะไร เข้าปีอะไร ระดับใด

Student ID: 6230012021
Faculty code: 21
Enrollment year: 2562
Academic degree: 3
output
หลังจากสั่งทำงานแล้วป้อน
6230012021
จะได้ผลเป็น
2110101 วิศวกรรมคอมพิวเตอร์ จุฬาฯ (14/09/67)
24

แสดงเลขประจำตัวนิสิตทีละหลัก หลักละบรรทัด

เครื่องหมาย
;
คั่นคำสั่งที่ต้องการเขียนต่อกันในบรรทัดเดียวกัน
2110101 วิศวกรรมคอมพิวเตอร์ จุฬาฯ (14/09/67)
25

แบบฝึกหัด: Stirling Formula

สูตรของสเตอร์ลิง n! ใกล้เคียงกับ รากที่สองของ 2 pi n คูณ (n/e) ยกกำลัง n
2110101 วิศวกรรมคอมพิวเตอร์ จุฬาฯ (14/09/67)
26

แบบฝึกหัด: : รากของ ax2+bx+c = 0

สูตรหารากของสมการกำลังสอง
รับ
a b c
จากแป้นพิมพ์
คำนวณและแสดงสองรากจากสูตร
2110101 วิศวกรรมคอมพิวเตอร์ จุฬาฯ (14/09/67)
27