นิพจน์ ตวั แปร และฟังกช์ นั รายวชิ า การเขยี นโปรแกรมเชิงวตั ถุ Objected Oriented Programming
เน้ ือหา• การคานวณบนคอมพิวเตอร์• นิพจน์ ตวั แปร และลาดบั ความสาคญั• ประเภทตวั แปร• การอา่ นขอ้ มลู เขา้• ตวั อยา่ งการคานวณอยา่ งงา่ ย 2
เครื่องคิดเลข• เราสามารถใชค้ อมพวิ เตอรเ์ ป็ นเครื่องคิดเลขได้• พิมพใ์ น Python Shell Python 3.4 ILDE 3
Python Shell 3.4.3 Python Shell 4
เครื่องคิดเลข• ทดลองพิมพ์ ป้อนลงใน Python Shell คาตอบที่ไดร้ บั >>> 10 * 5 50>>> 1 + 2 + 3 + 410 ช่องว่างไม่มีผล>>> 1+2+3+410 คือการยกกาลงั>>> 1 * 4 + 5 ** 109765629 5
นิพจน์• ส่ิงท่ีเราป้อนเขา้ ไปใน Console ของไพธอนเรยี กวา่ นิพจน์ (expression)• ท่ี Console เมื่อคอมพิวเตอรไ์ ดร้ บั นิพจน์จะนาไป ประมวลผลโดยการคานวณ แลว้ พมิ พผ์ ลลพั ธอ์ อกมา 6
ทดลองคานวณ• วตั ถุช้ ินหน่ึงเคล่ือนท่ีดว้ ยความเรว็ ตน้ 10 เมตรต่อ วนิ าที มีความเรง่ 2 เมตร2/วนิ าที เมอื่ เคล่ือนที่ไป 5 วนิ าที วตั ถุจะอยหู่ า่ งจากจุดเรมิ่ ตน้ กเ่ี มตร? s = ut + at2/2 10 * 5 + 2 * (5*5) / 2 7
ตวั ดาเนินการ (1)• ในการเขียนนิพจน์ ในการคานวณขา้ งตน้ เราไดใ้ ช้ \"ตวั ดาเนินการ (Operator)\" เชน่ +, -, *, / เพ่ือนาขอ้ มลู มาประมวลผล• ตวั ดาเนินการระบุการประมวลผลที่เกิดข้ ึนกบั ตวั ถูก ดาเนินการ (Operand) ตวั ถกู ดาเนินการ 10 * 5ตวั ดาเนินการ 8
ตวั ดาเนินการ (2)• ตวั ดาเนินการมที ้งั แบบ ทวิภาค (binary) ท่ีทางานกบั ขอ้ มูลสองตวั เชน่ +, -, * 5 * 3 10 – 2 15*7 เอกภาค (unary) ที่ทางานกบั ขอ้ มลู ตวั เดียว เชน่ – -3 +2 -5 * 7 9
ตวั ดาเนินการ (3)• ตวั ดาเนินการทางคณิตศาสตรบ์ างสว่ นแสดงดงั ตารางตอ่ ไปน้ ีตวั ดาเนินการ ความหมาย ตวั อยา่ ง + บวก 3+5 - ลบ 4-2 * คณู 4.5*10 / หาร % หนา้ ถดั ไป ** หารเอาเศษ ยกกาลงั หนา้ ถดั ไป 3**4 10
การหารใน Python 3.6.2• ตวั ดาเนินการหารมีหลกั ๆ สองแบบหารเอาผลลพั ธ์ หารเอาเศษ นิพจน์ ผลลพั ธ์ นิพจน์ ผลลพั ธ์ 4/2 2.0 4%2 0 3/2 1.5 3%2 1 10/7 1.4286 10%7 33.0/2 1.5 3.0%210/7.0 1.4286 10%7.0 1.0 3.0 11
Type of Python• ขอ้ มลู ประเภทตวั เลขในไพธอนมี 2 แบบคือ จานวน เตม็ (integer) กบั จานวนจรงิ (floating point)จานวนเตม็ ผลรวม จานวนจริง ผลรวม 10 10 10.0 10.0 3-2 1 3.0-2 1.0 19*5 95 19*5.2 98.8 12
ทดสอบความเขา้ ใจ นิพจนท์ างคณิตศาสตร์ ผลรวม2+3*6 20(2+3) *6 303/5*2 1.23*5.0/2 7.5 13
สรุป: จานวนเต็ม - จานวนจรงิ• ถา้ เขียนจานวนโดยไมใ่ สจ่ ุดทศนิยม จะถือวา่ เป็ น จานวนเต็ม• ผลลพั ธ์ การดาเนินการระหวา่ งจานวนเต็มกบั จานวนเต็มได้ ผลลพั ธเ์ ป็ นจานวนเต็ม ยกเวน้ การหาร การหารจะใหผ้ ลลพั ธเ์ ป็ นจานวนจรงิ การดาเนินการท่ีเกย่ี วขอ้ งกบั จานวนจรงิ ไดผ้ ลลัพธเ์ ป็ น จานวนจรงิ 14
3/5*2• การคานวณทวั่ ไปจะกระทาจากซา้ ยไปขวา ((3/5)*2) ( 0.6 *2) 15
ลาดบั ความสาคญั ของตวั ดาเนินการ• แต่ตวั ดาเนินการมีความสาคญั ไม่เท่ากนั เช่น * หรือ / สาคญั กวา่ + หรอื - 2+3*6 2+(3*6) 16
ความสาคญั ของตวั ดาเนินการ• ตวั ดาเนินการท่ีสาคญั เท่ากนั จะทาจากซา้ ยไปขวา ยกเวน้ การยกกาลงัลาดบั ที่ ตวั ดาเนินการ ตวั อยา่ ง 1 () (3+4) 2 ** 2**3 3 -5, +10 -,+ (เอกภาพ) 4 3*4, 7%2 5 *,/,% 2+7, 3-4 -,+ 17
ทดลองคานวณ (1)2+5*6/3+(7-2*3) ผลลพั ธค์ ือ? 13.0 18
ทดลองคานวณ (2) 2 ** 2 ** 3 ผลลพั ธค์ ือ?2 ** (2 ** 3)28 = 256 19
ตวั แปร• เราสามารถใชต้ วั แปรในการอา้ งถึงผลลพั ธจ์ ากการ คานวณได้ a = 2.5/2.0a*1*1/2 a 1.25a*5*5/2a*15*15/2 20
ตวั แปรa = 2.5/2.0 1.25 a• ตวั แปรเป็ นสิ่งท่ีใชอ้ า้ งถึงขอ้ มลู ต่าง ๆ• กาหนดใหต้ วั แปรอา้ งถึงขอ้ มลู โดยใชเ้ คร่อื งหมาย =• หลงั จากน้ันเมือ่ อา้ งตวั แปรกจ็ ะไดข้ อ้ มลู น้ันกลบั มา 21
ตวั แปรเปลี่ยนคา่ ได้ (1)a = 10 50a*5b=3 13a+b 10a=7a+b 8a=b+5 11aa+b 22
ตวั แปรเปลี่ยนค่าได้ (2) a = 10 a=a+1 11 23
ตวั แปรเปลี่ยนค่าได้ (3) x = 10 x=x*2 20 24
ตวั แปรเปลี่ยนค่าได้ (4) x = 10x=x*2+5 25 25
คาสงั ่ พิมพ์• ในการพมิ พค์ า่ ของขอ้ มลู สามารถใชฟ้ ังกช์ นั printในการสงั่ พิมพไ์ ด้ 26
โปรแกรม• โปรแกรมคือรายการของคาสงั่ ท่ีเรียงต่อกนัa = 10 เพิ่มคาสงั ่b=a+5 printprint(a – b) ใหแ้ สดงผลลพั ธ์c = 12 ของนิพจนท์ ี่ตอ้ งการb=a+cc = a*bprint(a + b + c)print(1 + a – c) 27
เม่ือสงั ่ Run จะเห็นผลลพั ธ์ 28
การเรยี กฟังกช์ นั print(10) ช่ือฟังกช์ นัอารก์ ิวเมนท์ (argument) 29
การทางานในการเรยี กฟังกช์ นั print(a + b * 2)สมมติว่า 20 a=5 25b = 10 print(25)• จะมกี ารคานวณนิพจน์ท่ีถูกส่งใหก้ บั ฟังกช์ นั ใหเ้ สรจ็ กอ่ น ส่งค่าไปใหก้ บั ฟังกช์ นั น้ัน 30
โปรแกรมง่าย ๆ• เรามีเงินในกระเป๋ าดงั น้ ี มีเงินรวมท้งั ส้ ินกี่ บาท? เหรยี ญบาท 5 เหรยี ญ เหรียญสิบบาท 7 เหรยี ญ ธนบตั รใบละ 20 บาท 2 ใบ ธนบตั รใบละ 100 บาท 3 ใบsum1 = 1 * 5sum10 = 10 * 7sum20 = 20 * 2sum100 = 100 * 3sum = sum1+sum5+sum20+sum100print(sum) 31
โปรแกรมง่าย ๆ (2)• หรือสามารถเขยี นโดยไมต่ อ้ งใชต้ วั แปร sum กไ็ ด้ sum1 = 1 * 5 sum10 = 10 * 7 sum20 = 20 * 2 sum100 = 100 * 3 print(sum1+sum5+sum20+sum100) 32
พิจารณา ช่ือและความหมายโปรแกรมสอง โปรแกรมน้ ี a=1*5 b = 10 * 7 โปรแกรมท้งั c = 20 * 2 สองทางาน d = 100 * 3 เหมือนกนั e=a+b+c+d print(e) โปรแกรมใด ท่ีอ่านแลว้ sum1 = 1 * 5เขา้ ใจเป้าหมาย sum10 = 10 * 7 มากกว่า? sum20 = 20 * 2 sum100 = 100 * 3 sum = sum1+sum5+sum20+sum100 print(sum) 33
การใสห่ มายเหตุ (#)• เพอ่ื ทาใหโ้ ปรแกรมอ่านงา่ ยข้ ึน เราสามารถใส่หมาย เหตุ (comment) ท่ีเขียนอธิบายโปรแกรมได้• ทุกอยา่ งหลงั เคร่ืองหมาย # จะถือวา่ เป็ นหมายเหตุ 34
โปรแกรมพรอ้ มหมายเหตุ# โปรแกรมน้ีคำนวณเงินรวม# จำกจำนวนธนบตั รประเภทต่ำงๆsum1 = 1 * 5 # เงินรวมของธนบตั ร 1 บำทsum10 = 10 * 7sum20 = 20 * 2sum100 = 100 * 3print(sum1+sum5+sum20+sum100) 35
ขอ้ มูลประเภทขอ้ ความ• คอมพวิ เตอรน์ อกจากจะคานวณดา้ นตวั เลขไดแ้ ลว้ ยงั สามารถประมวลผลขอ้ มลู แบบอ่ืน ๆ ไดม้ ากมาย• ขอ้ ความ (string) กเ็ ป็ นขอ้ มลู อีกประเภทหนึ่งท่ี สามารถประมวลผลได้• สตริงเป็ นประเภทขอ้ มลู สาหรบั ลาดบั ของของอักขระ”Hello”Hello, world” 36
การระบุขอ้ มูลประเภทขอ้ ความ• ระบุภายในเครอื่ งหมายคาพดู คู่ ”Hello” หรอื ภายใน เครอ่ื งหมายคาพดู เดี่ยว ’World’• เครอ่ื งหมายคาพดู ที่ใชจ้ ะตอ้ งเปิ ด-ปิ ดแบบเดียวกนั• นอกจากน้ ียงั สามารถใส่เครือ่ งหมายพเิ ศษภายในได้ โดยข้ ึนตน้ ดว้ ยเครอ่ื งหมาย \ (ทบั กลบั ขา้ ง) 37
ตวั อยา่ งขอ้ มูลประเภทขอ้ ความ (1)print(\"hello\") helloprint('hello') helloprint(\"I'm 9\") I'm 9print('I'm 9')print('I\'m 9') Errorprint(\"I\'m 9\") I'm 9 I'm 9 38
ตวั อยา่ งขอ้ มูลประเภทขอ้ ความ (2)print(\"123\") 123print(123) 123print(\"12\" + \"3\") 123print(12 + 3) 15print(\"12\" + '3') 123print(\"12\" + 3) Error 39
โปรแกรมคานวณท่ีดดู ีข้ ึนsum1 = 1 * 5sum10 = 10 * 7sum20 = 20 * 2sum100 = 100 * 3sum = sum1+sum5+sum20+sum100print(\"The total is\",sum) The total is 415 40
โปรแกรมคานวณท่ีดดู ขี ้ ึนsum1 = 1 * 5sum10 = 10 * 7sum20 = 20 * 2sum100 = 100 * 3sum = sum1+sum5+sum20+sum100print(\"The total is\",sum,\"bath.\")The total is 415 bath. 41
print ไม่ข้ ึนบรรทดั ใหม่• สามารถสงั่ พิมพข์ อ้ มลู ดว้ ยฟังกช์ นั print• พิมพเ์ สรจ็ จะข้ นึ บรรทดั ใหม่• ถา้ ตอ้ งการยกเวน้ การข้ ึนบรรทดั ใหม่ ใหร้ ะบุ option end เพิ่มเติม ดงั ตวั อยา่ งดา้ นล่างprint(10) 10print(20) 20print(10,end='') 1020print(20)สว่ นน้ ีระบุใหฟ้ ังกช์ นั print พิมพส์ ตริงว่างแทนการข้ ึนบรรทดั ใหม่ทา้ ยการพิมพ์ 42
การรบั ขอ้ มูลจากผใู้ ช้• เราสามารถอ่านขอ้ มูลจากผูใ้ ชโ้ ดยใชฟ้ ังกช์ นั input• ฟังกช์ นั ดงั กล่าวจะคืนคา่ เป็ นขอ้ มลู ประเภท string 43
การแปลงประเภทขอ้ มูล• เรามฟี ังกช์ นั int, float, และ str สาหรบั แปลง ขอ้ มลู ใหเ้ ป็ นขอ้ มลู ประเภทต่าง ๆint(\"10\") 10float(\"10\") 10.0float(10) 10.0int(10.6) 10 44
การแปลงประเภทขอ้ มูลint(\"10\")+10 20float(\"10\")+10 20.0float(10)+int(5) 15.0str(10)+str(5) 105 45
การแปลงระหว่าง float และ intint(10.2) 10int(10.9) 10int(-10.1) -10ฟังกช์ นั int คืนจานวนเตม็ ที่ไดห้ ลงั จากการตดั สว่ นทศนิยมออก 46
Conversion between float and int (2)เราสามารถใชฟ้ ังกช์ นั round ทปี่ ัดคา่ ใหเ้ ป็ นจานวนเตม็ ที่ใกลท้ ่สี ุดได้round(10.2) 10round(10.9) 11round(-10.1) -10 47
ฟังกช์ นั ทีส่ าคญั อีกสองฟังกช์ นัฟังกช์ นั ความหมาย คืนคา่ สมั บรู ณข์ อง xabs(x) คืนคา่ xypow(x,y) 48
โปรแกรมบวกเลข# This program adds two numbersastr = input()a = int(astr)bstr = input()b = int(bstr)print(\"The result is\",a+b) 49
การสง่ คา่ ตอ่ เน่ืองในฟังกช์ นั (1)• พิจารณาส่วนของโปรแกรม astr = input() a = int(astr)• เราใชต้ วั แปร astr เพื่อรบั สตรงิ จากผูใ้ ชแ้ ลว้ นามาแปลง เป็ นจานวนเต็มเก็บไวท้ ี่ตวั แปร a เท่าน้ัน• เราสามารถละตวั แปร astr ออกไดโ้ ดยเขยี นเป็ น a = int(input()) 50
Search