intermediate - krujiw.com · บทที่4...
TRANSCRIPT
614185001เทคนคการสอนโปรแกรม Python งาย ๆ ใหไดใจนกเรยน
ระดบมธยมปลาย ตามหลกสตรใหม
Intermediate
รศ.ดร.ลญฉกร วฒสทธกลกจผศ.ดร.โปรดปราน บณยพกกณะ
ดร.นฤมล ประทานวณชดร.เอกพล ชวงสวนช
บทท 4 การเขยนโปรแกรมดวยภาษาไพทอน (2)
บทท 4 การเขยนโปรแกรมดวยภาษาไพทอน (2)
• เตาไพทอน
• การท างานแบบมทางเลอก
• การด าเนนการทางตรรกะ
• การท างานแบบวนซ าดวย for
• การท างานแบบวนซ าดวย while
• ฟงกชน
• แนวทางการสอนและการจดกจกรรม
บทท 4 การเขยนโปรแกรมดวยภาษาไพทอน (2)
• เตาไพทอน
• การท างานแบบมทางเลอก
• การด าเนนการทางตรรกะ
• การท างานแบบวนซ าดวย for
• การท างานแบบวนซ าดวย while
• ฟงกชน
• แนวทางการสอนและการจดกจกรรม
4.1 เตาไพทอน
• PyCharm Edu มค าสงใหใชมากมายใน โมดล turtleใชในการฝกเขยนโปรแกรม โดยใหเตาวาดรปตามค าสง
• ตวอยางการวาดรป
from turtle import *
shape("turtle")
speed(1)
forward(100)
done()
4.1 เตาไพทอน
• PyCharm Edu มค าสงใหใชมากมายใน โมดล turtleใชในการฝกเขยนโปรแกรม โดยใหเตาวาดรปตามค าสง
• ตวอยางการวาดรป
from turtle import *
shape("turtle")
speed(1)
forward(100)
done()
เพมค าสงจากโมดล turtle เขาสโปรแกรมของเรา
ท าใหสามารถเรยกใชค าสงได
4.1 เตาไพทอน
• PyCharm Edu มค าสงใหใชมากมายใน โมดล turtleใชในการฝกเขยนโปรแกรม โดยใหเตาวาดรปตามค าสง
• ตวอยางการวาดรป
from turtle import *
shape("turtle")
speed(1)
forward(100)
done()
ตงใหปากกาเปนรปเตารปอน ๆ ทใชไดเชน
shape("circle") เปนวงกลมshape("square") เปนสเหลยมshape("classic") เปนลกศร
4.1 เตาไพทอน
• PyCharm Edu มค าสงใหใชมากมายใน โมดล turtleใชในการฝกเขยนโปรแกรม โดยใหเตาวาดรปตามค าสง
• ตวอยางการวาดรป
from turtle import *
shape("turtle")
speed(1)
forward(100)
done()
ก าหนดความเรวในการวาด
4.1 เตาไพทอน
• PyCharm Edu มค าสงใหใชมากมายใน โมดล turtleใชในการฝกเขยนโปรแกรม โดยใหเตาวาดรปตามค าสง
• ตวอยางการวาดรป
from turtle import *
shape("turtle")
speed(1)
forward(100)
done()
ใหเตา (ปากกา)เดนหนา 100 หนวย
โดยเร มแรกเตาจะหนหนาไปทางขวา(ตามแนวแกน x)
4.1 เตาไพทอน
• PyCharm Edu มค าสงใหใชมากมายใน โมดล turtleใชในการฝกเขยนโปรแกรม โดยใหเตาวาดรปตามค าสง
• ตวอยางการวาดรป
from turtle import *
shape("turtle")
speed(1)
forward(100)
done()
สงใหรปทวาดยงคางไวบนหนาจอ
ตองอยเปนค าสงสดทาย
4.1 เตาไพทอน
• ค าสงอน ๆ ทนาสนใจ• color() ใชเปลยนสเสนทวาด การใชงานเชน color("red")
• pensize() ใชเปลยนความหนาของเสน การใชงานเชน pensize(5)
from turtle import *shape("turtle")speed(1)color("red")pensize(5)forward(50)color("blue")pensize(2)forward(50)done()
4.1 เตาไพทอน
• ค าสงอน ๆ ทนาสนใจ• left() ใชก าหนดองศาการหมนเตาไปทางซาย เชน left(90)
• right() ใชก าหนดองศาการหมนเตาไปทางขวา เชน right(90)
from turtle import *shape("turtle")speed(1)forward(50)left(90)forward(50)right(90)forward(50)done()
4.1 เตาไพทอน
• ค าสงอน ๆ ทนาสนใจ• home() ยายเตากลบมาทจดเร มตน
• penup() ยกปากกาขน เตาจะเคลอนทโดยไมลากเสน
• pendown() วางปากกาลง เตาจะเคลอนทโดยลากเสนไปดวย
• สามารถดค าสงและค าอธบายเพมเตมไดจาก
docs.python.org/3/library/turtle.html
4.1 เตาไพทอน
• ตวอยางการวาดดวยเตาไพทอน
from turtle import *shape("turtle")speed(1)forward(50)left(90)forward(50)left(90)forward(50)left(90)forward(50)left(90)done()
4.1 เตาไพทอน
• ตวอยางการวาดดวยเตาไพทอน
from turtle import *shape("turtle")speed(1)
forward(100)right(120)forward(100)right(120)forward(100)right(120)done()
• ตวอยางกจกรรม
4.1 เตาไพทอน
ใหนกเรยนดโปรแกรมตอไปนแลวคาดคะเนวา เตาวาดรปใด
• ตวอยางกจกรรม
4.1 เตาไพทอน
from turtle import *shape("turtle")speed(1)
left(45)forward(60)left(135)forward(100)right(135)forward(60)done()
• ตวอยางกจกรรม
4.1 เตาไพทอน
ใหนกเรยนลองวาดรปตาง ๆ ดวยเตาไพทอน ครอาจชวยนกเรยนค านวณมมและความยาวตาง ๆ
• ตวอยางกจกรรม
4.1 เตาไพทอนfrom turtle import *shape("turtle")speed(1)
forward(50)left(90)forward(50)left(30)forward(50)left(120)forward(50)left(30)forward(50)done()
• ตวอยางกจกรรม
4.1 เตาไพทอนfrom turtle import *shape("turtle")speed(1)
forward(100)right(144)forward(100)right(144)forward(100)right(144)forward(100)right(144)forward(100)right(144)done()
• ตวอยางกจกรรม
4.1 เตาไพทอน
ใหนกเรยนใชเตาไพทอนเขยนตวอกษรภาษาองกฤษตวแรก
ของชอตนเอง
บทท 4 การเขยนโปรแกรมดวยภาษาไพทอน (2)
• เตาไพทอน
• การท างานแบบมทางเลอก
• การด าเนนการทางตรรกะ
• การท างานแบบวนซ าดวย for
• การท างานแบบวนซ าดวย while
• ฟงกชน
• แนวทางการสอนและการจดกจกรรม
4.2 การท างานแบบมทางเลอก
• ชวตประจ าวนตองเจอกบ “ทางเลอก” อยเสมอ
ผงงานซอขนมรหสล าลอง ซอขนม
เร มตน1. รบเงนมาจากคณพอ2. ถา ไดเงนมากกวา 15 บาท ท า
2.1 ซอขนมสนสด
เร มตน
ไดเงนมากกวา 15 บาท
ซอขนม
สนสด
เทจ
จรง
รบเงนจากคณพอ
4.2 การท างานแบบมทางเลอก
• การเขยนโปรแกรมแบบม “ทางเลอก” ดวยค าสง if• หลงเงอนไข ตองใสเคร องหมาย colon (:)
• ชดค าสง ตองยอหนาเขาไปจากค าสง if
ผงงานของค าสง if
if เงอนไข :ชดค าสงทจะท าเมอเงอนไขเปนจรง
เงอนไข
ชดค าสงทจะท า
เทจ
จรง
4.2 การท างานแบบมทางเลอก
• เปรยบเทยบรหสล าลอง ผงงาน และโปรแกรม ทมทางเลอก
ผงงานซอขนมรหสล าลอง ซอขนม
เร มตน1. รบเงนมาจากคณพอ2. ถา ไดเงนมากกวา 15 บาท ท า
2.1 ซอขนมสนสด
เร มตน
ไดเงนมากกวา 15 บาท
สนสด
เทจ
จรง
รบเงนจากคณพอ
money = int(input("ใสจ านวนเงนทได "))if money > 15 :
print("ซอขนม")
ซอขนม
4.2 การท างานแบบมทางเลอก
• ผลของโปรแกรม• ถาใสจ านวน 20 โปรแกรมจะแสดงค าวา “ซอขนม”
• ถาใสจ านวน 10 โปรแกรมจะไมพมพอะไร
money = int(input("ใสจ านวนเงนทได "))if money > 15 :
print("ซอขนม")
ผงงานซอขนม
เร มตน
ไดเงนมากกวา 15 บาท
สนสด
เทจ
จรง
รบเงนจากคณพอ
ซอขนม
4.2 การท างานแบบมทางเลอก
• ตวด าเนนการเปรยบเทยบ
ชอตวด ำเนนกำร สญลกษณคณตศำสตร สญลกษณในภำษำไพทอน
เทากบ = ==ไมเทากบ ≠ !=มากกวา > >
มากกวาหรอเทากบ ≥ >=นอยกวา < <
นอยกวาหรอเทากบ ≤ <=
4.2 การท างานแบบมทางเลอก
• ตวอยางเงอนไขในภาษาไพทอน
ตวแปร weight มคานอยกวาหรอเทากบ 80if weight <= 80 :
print("คณมน าหนกนอยกวาหรอเทากบ 80")
ตวแปร number เปนเลขคif number % 2 == 0 :
print("จ านวนนเปนเลขค")
ตวแปร x และตวแปร y มคารวมกนมากกวา 9if x + y > 9 :
print("ผลรวมของ x และ y มากกวา 9")
4.2 การท างานแบบมทางเลอก
• ผลลพธในแตละกรณเปนอยางไร
กรณ weight = 45กรณ weight = 80กรณ weight = 93
กรณ number = 7กรณ number = 12กรณ number = 0
กรณ x = 3, y = 7กรณ x = 1, y = 8กรณ x = 9, y = -2
ตวแปร weight มคานอยกวาหรอเทากบ 80if weight <= 80 :
print("คณมน าหนกนอยกวาหรอเทากบ 80")
ตวแปร number เปนเลขคif number % 2 == 0 :
print("จ านวนนเปนเลขค")
ตวแปร x และตวแปร y มคารวมกนมากกวา 9if x + y > 9 :
print("ผลรวมของ x และ y มากกวา 9")
• ตวอยางกจกรรม
4.2 การท างานแบบมทางเลอก
ใหนกเรยนหาตวอยางเงอนไขในชวตประจ าวน เงอนไขเหลานนเขยนเปนภาษาไพทอนไดอยางไร
เงอนไขจะเปนจรงเมอใด เปนเทจเมอใด
4.2 การท างานแบบมทางเลอก
• ตวอยางโปรแกรมทมเงอนไข
x = int(input("ใสจ านวนเตม 1 จ านวน "))print("สวสด")if x == 13 :
print("คณเลอกเลข 13")print("เลข 13 เปนเลขน าโชค")
print("ลากอน")
เร มตน
x == 13
สนสด
เทจ
จรง
สวสด
คณเลอกเลข 13
ลากอน
เลข 13 เปนเลขน าโชค
รบคา x
4.2 การท างานแบบมทางเลอก
• โปรแกรมทมมากกวา 1 เงอนไข
score = int(input("ใสคะแนนของคณ "))if score >= 50 :
print("คณสอบผาน")if score < 50 :
print("คณสอบตก")
เร มตน
score >= 50
สนสด
เทจ
จรง
รบคา score
score < 50เทจ
จรง
คณสอบผาน
คณสอบตก
4.2 การท างานแบบมทางเลอก
• โปรแกรมทมมากกวา 1 เงอนไข
score = int(input("ใสคะแนนของคณ "))if score >= 50 :
print("คณสอบผาน")if score < 50 :
print("คณสอบตก")
กรณ score = 90
กรณ score = 35
กรณ score = 50
4.2 การท างานแบบมทางเลอก
• โปรแกรมทมมากกวา 1 เงอนไข
score = int(input("ใสคะแนนของคณ "))if score >= 50 :
print("คณสอบผาน")if score >= 80 :
print("คณไดคะแนนดมาก")
เร มตน
score >= 50
สนสด
เทจ
จรง
รบคา score
score >= 80เทจ
จรง
คณสอบผาน
คณไดคะแนนดมาก
4.2 การท างานแบบมทางเลอก
• โปรแกรมทมมากกวา 1 เงอนไข
score = int(input("ใสคะแนนของคณ "))if score >= 50 :
print("คณสอบผาน")if score >= 80 :
print("คณไดคะแนนดมาก")
กรณ score = 90
กรณ score = 35
กรณ score = 50
• ตวอยางกจกรรม
4.2 การท างานแบบมทางเลอก
ใหนกเรยนลองเขยนโปรแกรมทมเงอนไขเชน รบคาความสงของนดและนม
แลวตอบวาใครสงกวากน
• ตวอยางกจกรรม
4.2 การท างานแบบมทางเลอก
nid = int(input("ใสความสงของนด "))nim = int(input("ใสความสงของนม "))if nid > nim :
print("นดสงกวานม")if nim > nid :
print("นมสงกวานด")if nim == nid :
print("ทงสองคนสงเทากน")
4.2 การท างานแบบมทางเลอก
• เงอนไขทตรงขามกนรหสล าลอง ดผลสอบ
1. รบคาคะแนนสอบ2. ถา คะแนนมากกวาหรอเทากบ 50 ท า
2.1 แสดงผลวาสอบผาน3. ถา คะแนนนอยกวา 50 ท า
3.1 แสดงผลวาสอบตก
เร มตน
score >= 50
สนสด
เทจ
จรง
รบคา score
score < 50เทจ
จรง
คณสอบผาน
คณสอบตกscore = int(input("ใสคะแนนของคณ "))if score >= 50 :
print("คณสอบผาน")if score < 50 :
print("คณสอบตก")
4.2 การท างานแบบมทางเลอก
• เงอนไขทตรงขามกนรหสล าลอง ดผลสอบ
1. รบคาคะแนนสอบ2. ถา คะแนนมากกวาหรอเทากบ 50 ท า
2.1 แสดงผลวาสอบผานไมเชนนน
2.2 แสดงผลวาสอบตก
เร มตน
score >= 50
สนสด
เทจจรง
รบคา score
คณสอบผาน
???
คณสอบตก
4.2 การท างานแบบมทางเลอก
• การเขยนโปรแกรมแบบทม “เงอนไขตรงขามกน” ดวยค าสง if-else• หลงเงอนไข และ else ตองใสเคร องหมาย colon (:)
• ชดค าสง ตองยอหนาเขาไปจากค าสง if และ else
• ค าสง else ตองตรงกบ if ทคกนผงงานของค าสง if-else
if เงอนไข :ชดค าสงทจะท าเมอเงอนไขเปนจรง
else :ชดค าสงทจะท าเมอเงอนไขเปนเทจ
เงอนไขเทจจรง
ชดค าสงทจะท าเมอเงอนไขเปนจรง
ชดค าสงทจะท าเมอเงอนไขเปนเทจ
4.2 การท างานแบบมทางเลอก
• เงอนไขทตรงขามกนรหสล าลอง ดผลสอบ
1. รบคาคะแนนสอบ2. ถา คะแนนมากกวาหรอเทากบ 50 ท า
2.1 แสดงผลวาสอบผานไมเชนนน
2.2 แสดงผลวาสอบตก
เร มตน
score >= 50
สนสด
เทจจรง
รบคา score
คณสอบผาน คณสอบตก
score = int(input("ใสคะแนนของคณ "))if score >= 50 :
print("คณสอบผาน")else :
print("คณสอบตก")
4.2 การท างานแบบมทางเลอก
• โปรแกรมทมเงอนไขตรงขามกน
name = input("ใสชอของคณ ")if name == "Ploy" :
print(“สวสด พลอย")if name != "Ploy" :
print("สวสด ยนดทไดรจก")name = input("ใสชอของคณ ")if name == "Ploy" :
print("สวสด พลอย")else :
print("สวสด ยนดทไดรจก")
4.2 การท างานแบบมทางเลอก
• โปรแกรมทมเงอนไขตรงขามกน
name = input("ใสชอของคณ ")if name == "Ploy" :
print("สวสด พลอย")else :
print("สวสด ยนดทไดรจก")
กรณ name = "Cat"
กรณ name = "Ploy"
กรณ name = "ploy"
• ตวอยางกจกรรม
4.2 การท างานแบบมทางเลอก
ใหนกเรยนบอกเงอนไขในชวตประจ าวนทตรงขามกน และลองเขยนเปน
โปรแกรมภาษาไพทอน
4.2 การท างานแบบมทางเลอก
• โปรแกรมทมเงอนไขและการเลอกท าแบบซบซอน
เร มตน
ปลาหนกกวา2 กโลกรม
สนสด
เทจจรง
ปลาหนกกวา1 กโลกรม
รบน าหนกปลา
เปนปลาเกรด A
เปนปลาเกรด B
เปนปลาเกรด C
จรง เทจ
เร มตน1. รบน าหนกปลาเปนกโลกรม (จ านวนจรง)2. ถา ปลาหนกกวา 2 กโลกรม ท า
2.1 แสดงผลเปนปลาเกรด Aไมเชนนน
2.2 ถา ปลาหนกกวา 1 กโลกรม ท า2.2.1 แสดงผลเปนปลาเกรด B
ไมเชนนน2.2.2 แสดงผลเปนปลาเกรด C
สนสด
4.2 การท างานแบบมทางเลอก
• โปรแกรมทมเงอนไขและการเลอกท าแบบซบซอน
เร มตน1. รบน าหนกปลาเปนกโลกรม (จ านวนจรง)2. ถา ปลาหนกกวา 2 กโลกรม ท า
2.1 แสดงผลเปนปลาเกรด Aไมเชนนน
2.2 ถา ปลาหนกกวา 1 กโลกรม ท า2.2.1 แสดงผลเปนปลาเกรด B
ไมเชนนน2.2.2 แสดงผลเปนปลาเกรด C
สนสด
kg = float(input("ใสน าหนกปลา "))if kg > 2 :
print("ปลาเกรด A")else :
if kg > 1 :print("ปลาเกรด B")
else :print("ปลาเกรด C")
4.2 การท างานแบบมทางเลอก
• โปรแกรมทมเงอนไขและการเลอกท าแบบซบซอน
• ใช elif ในกรณทมทางเลอกมากกวา 2 ทาง (else + if = elif)
kg = float(input("ใสน าหนกปลา "))if kg > 2 :
print("ปลาเกรด A")else :
if kg > 1 :print("ปลาเกรด B")
else :print("ปลาเกรด C")
print("จบการท างาน")
kg = float(input("ใสน าหนกปลา "))if kg > 2 :
print("ปลาเกรด A")elif kg > 1 :
print("ปลาเกรด B")else :
print("ปลาเกรด C")print("จบการท างาน")
4.2 การท างานแบบมทางเลอก
• โปรแกรมทมเงอนไขและการเลอกท าแบบซบซอน
• ใช elif ในกรณทมทางเลอกมากกวา 2 ทาง (else + if = elif)
kg = float(input("ใสน าหนกปลา "))if kg > 2 :
print("ปลาเกรด A")else :
if kg > 1 :print("ปลาเกรด B")
else :print("ปลาเกรด C")
print("จบการท างาน")
kg = float(input("ใสน าหนกปลา "))if kg > 2 :
print("ปลาเกรด A")elif kg > 1 :
print("ปลาเกรด B")else :
print("ปลาเกรด C")print("จบการท างาน")
4.2 การท างานแบบมทางเลอก
• โปรแกรมทมเงอนไขและการเลอกท าแบบซบซอน
• ใช elif ในกรณทมทางเลอกมากกวา 2 ทาง (else + if = elif)
if เงอนไขท 1 :print(“ผลลพธท 1")
else :if เงอนไขท 2 :
print(“ผลลพธท 2")else :
if เงอนไขท 3 :print(“ผลลพธท 3")
else :print(“ผลลพธท 4")
if เงอนไขท 1 :print(“ผลลพธท 1")
elif เงอนไขท 2 :print(“ผลลพธท 2")
elif เงอนไขท 3 :print(“ผลลพธท 3")
else :print(“ผลลพธท 4")
4.2 การท างานแบบมทางเลอก
• การเขยนโปรแกรมทม “ทางเลอกหลายทาง” ดวยค าสง elif• หลงเงอนไขของ elif ตองใสเคร องหมาย colon (:)
• ชดค าสง ตองยอหนาเขาไปจากค าสง if elif และ else
• ค าสง elif ตองตรงกบ if ทคกน
• ม elif กครงกได
• ถาเขาเงอนไขบน ๆ แลว จะไมเขาเงอนไขขางลางอก
ผงงานของค าสง if-elif-else
if เงอนไข A :ชดค าสงทท าเมอเงอนไข A เปนจรง
elif เงอนไข B :ชดค าสงทท าเมอเงอนไข B เปนจรง
else :ชดค าสงทท าเมอเงอนไขทงหมดเปนเทจ
เงอนไข Aเทจจรง
เงอนไข Bจรง เทจ
ชดค าสงทจะท าเมอเงอนไข A เปนจรง
ชดค าสงทจะท าเมอเงอนไข B เปนจรง
ชดค าสงทจะท าเมอเงอนไขทงหมด
เปนเทจ
• ตวอยางกจกรรม
4.2 การท างานแบบมทางเลอก
ใหนกเรยนเขยนโปรแกรมดงน• ถามผใชวา “ฉนสวยไหมคะ”• ถาตอบ yes ใหบอก “ขอบคณคะ”• ถาตอบ no ใหบอก “เสยใจจงเลยคะ”• ถาตอบอยางอน ใหบอก “ไมเขาใจคะ”
4.2 การท างานแบบมทางเลอก
• ตวอยางกจกรรม
answer = input("ฉนสวยไหมคะ ")if answer == "yes" :
print("ขอบคณคะ")else :
if answer == "no" :print("เสยใจจงเลยคะ")
else :print("ไมเขาใจคะ")
answer = input("ฉนสวยไหมคะ ")if answer == "yes" :
print("ขอบคณคะ")elif answer == "no" :
print("เสยใจจงเลยคะ")else :
print("ไมเขาใจคะ")
4.2 การท างานแบบมทางเลอก
• ตวอยางกจกรรม
ผดอยางไร ?
answer = input("ฉนสวยไหมคะ ")if answer == "yes" :
print("ขอบคณคะ")if answer == "no" :
print("เสยใจจงเลยคะ")else :
print("ไมเขาใจคะ")
บทท 4 การเขยนโปรแกรมดวยภาษาไพทอน (2)
• เตาไพทอน
• การท างานแบบมทางเลอก
• การด าเนนการทางตรรกะ
• การท างานแบบวนซ าดวย for
• การท างานแบบวนซ าดวย while
• ฟงกชน
• แนวทางการสอนและการจดกจกรรม
4.3 การด าเนนการทางตรรกะ
• ประเภทตวแปรแบบ บลน (Boolean)• เราสามารถเกบคา “จรง” หรอ “เทจ” ในตวแปรได
• คาจรงใชค าวา True และคาเทจใชค าวา False
a = Trueprint(a)print( type(a) )
b = Falseprint(b)print( type(b) )
c = (5 != 6)print(c)print( type(c) )
d = 4 < 3print(d)print( type(d) )
4.3 การด าเนนการทางตรรกะ
• การใชตวแปรประเภท บลน (Boolean) ในค าสง if
if x == 3 :print("love")
b = (x == 3)if b :
print("love")
if y > 7 :print("python")
boo = y > 7if boo :
print("python")
4.3 การด าเนนการทางตรรกะ
• ตวด าเนนการทางตรรกะ
not and or
4.3 การด าเนนการทางตรรกะ
• ตวด าเนนการ not
not
คาของ x คาของ not x
True False
False True
4.3 การด าเนนการทางตรรกะ
• ตวด าเนนการ not
x = int(input())if x == 3 :
print("x มคาเทากบ 3")
x = int(input())if not x == 3 :
print("x มคาไมเทากบ 3")
y = int(input())if y > 7 :
print("y มคามากกวา 7")
y = int(input())if not y > 7 :
print("y มคาไมมากกวา 7")
4.3 การด าเนนการทางตรรกะ
• ตวด าเนนการ not
• เงอนไขทความหมายเหมอนกน• not x == y เหมอนกบ x != y
• not x != y เหมอนกบ x == y
• not x > y เหมอนกบ x <= y
• not x <= y เหมอนกบ x > y
• not x < y เหมอนกบ x >= y
• not x >= y เหมอนกบ x < y
4.3 การด าเนนการทางตรรกะ
• ตวด าเนนการ and
and
คาของ x คาของ y คาของ x and y
False False False
False True False
True False False
True True True
4.3 การด าเนนการทางตรรกะ
• ตวด าเนนการ and
x = 3y = 5if x < 3 and y > 5:
print("python")
x = 1y = 8if x < 3 and y > 5:
print("python")
x = 2y = 4if x < 3 and y > 5:
print("python")
x = 6y = 7if x < 3 and y > 5:
print("python")
4.3 การด าเนนการทางตรรกะ
• ตวด าเนนการ and
# x เปนจ านวนเตม 3 หลกx = int(input("ใสจ านวนเตม x "))if x >= 100 and x <= 999 :
print(x, "เปนจ านวนทม 3 หลก")
# x เปนจ านวนเตม 3 หลกx = int(input("ใสจ านวนเตม x "))if 100 <= x <= 999 :
print(x, "เปนจ านวนทม 3 หลก")
4.3 การด าเนนการทางตรรกะ
• ตวด าเนนการ and
# x เปนจ านวนเตม 3 หลกx = int(input("ใสจ านวนเตม x "))if x >= 100 and x <= 999 :
print(x, "เปนจ านวนทม 3 หลก")
# y หาร 2 ลงตวและหาร 3 ลงตวy = int(input("ใสจ านวนเตม y "))if y % 2 == 0 and y % 3 == 0 :
print(y, "หาร 2 และ 3 ลงตว")
4.3 การด าเนนการทางตรรกะ
• ตวด าเนนการ or
or
คาของ x คาของ y คาของ x or y
False False False
False True True
True False True
True True True
4.3 การด าเนนการทางตรรกะ
• ตวด าเนนการ or
x = 3y = 5if x < 3 or y > 5:
print("python")
x = 1y = 8if x < 3 or y > 5:
print("python")
x = 2y = 4if x < 3 or y > 5:
print("python")
x = 6y = 7if x < 3 or y > 5:
print("python")
4.3 การด าเนนการทางตรรกะ
• ตวด าเนนการ or
# ตรวจสอบเลขเดอน ตองมในชวง 1 ถง 12x = int(input("ใสเลขเดอน "))if x < 1 or x > 12 :
print(x, "เปนเลขเดอนทไมถกตอง")
4.3 การด าเนนการทางตรรกะ
• ตวด าเนนการ or
# ตรวจสอบเลขเดอน ตองมในชวง 1 ถง 12x = int(input("ใสเลขเดอน "))if x < 1 or x > 12 :
print(x, "เปนเลขเดอนทไมถกตอง")
# ตรวจสอบเลขเดอน ตองมในชวง 1 ถง 12x = int(input("ใสเลขเดอน "))if x < 1 and x > 12 :
print(x, "เปนเลขเดอนทไมถกตอง")
4.3 การด าเนนการทางตรรกะ
• ตวด าเนนการ or
# ตรวจสอบเลขเดอน ตองมในชวง 1 ถง 12x = int(input("ใสเลขเดอน "))if x < 1 or x > 12 :
print(x, "เปนเลขเดอนทไมถกตอง")
# y ลงทายดวย 8 หรอ 9y = int(input("ใสจ านวนเตม y "))if y % 10 == 8 or y % 10 == 9 :
print(y, "ลงทายดวย 8 หรอ 9")
4.3 การด าเนนการทางตรรกะ
• การด าเนนการทางตรรกะทซบซอน• สามารถใช not and or กระท ากบบลนหลายคาได
• ล าดบการท างานเรยงจากกอนไปหลงคอ not and or
• การด าเนนการทางตรรกะจะท าหลงการค านวณและการเปรยบเทยบ
• ควรใสวงเลบเพอความชดเจน
• ตวอยาง• A and B and C
• A and B or C เหมอนกบ (A and B) or C
• not A or B and not C เหมอนกบ (not A) or (B and (not C))
• x + y > z and not x < y เหมอนกบ ((x + y) > z) and (not (x < y))
• ตวอยางกจกรรม
4.3 การด าเนนการทางตรรกะ
ใหเขยนโปรแกรมรบคาวนทและเลขเดอนจากนนแสดงผลวา
เปนวนครสตมาสหรอไม(วนท 25 เดอน 12)
• ตวอยางกจกรรม
4.3 การด าเนนการทางตรรกะ
day = int(input("ใสวนท "))month = int(input("ใสเลขเดอน "))if day == 25 and month == 12 :
print("เปนวนครสตมาส")else :
print("ไมเปนวนครสตมาส")
• ตวอยางกจกรรม
4.3 การด าเนนการทางตรรกะ
ใหเขยนโปรแกรม ยามเฝาประตโดยรบชอเพอน 1 ชอ โปรแกรม
จะใหเพอนชอ “กง” กบ “สม” เขาหองไดโดยแสดงค าวา “ใหผานประตได”ถาเปนชอคนอนใหแสดง “หามผาน”
• ตวอยางกจกรรม
4.3 การด าเนนการทางตรรกะ
name = input("ใสชอของคณ ")if name == "กง" or name == "สม" :
print("ใหผานประตได")else :
print("หามผาน")
name = input("ใสชอของคณ ")if name == "กง" and name == "สม" :
print("ใหผานประตได")else :
print("หามผาน")
• ตวอยางกจกรรม
4.3 การด าเนนการทางตรรกะ
ใหเขยนเงอนไข ของจ านวนเตม x
ถา x มคาไมเทากบ 1, 2, 3ใหแสดงค าวา python
• ตวอยางกจกรรม
4.3 การด าเนนการทางตรรกะ
if x != 1 and x != 2 and x != 3 :print("python")
if not (x == 1 or x == 2 or x == 3) :print("python")
if x != 1 or x != 2 or x != 3 :print("python")
if not (x == 1 and x == 2 and x == 3) :print("python")
• ตวอยางกจกรรม
4.3 การด าเนนการทางตรรกะ
if x <= 0 or x >= 4:print("python")
if x < 1 or x > 3:print("python")
if not (x >= 1 and x <= 3) :print("python")
if not (1 <= x <= 3) :print("python")
• ตวอยางกจกรรม
4.3 การด าเนนการทางตรรกะ
ใหเขยนโปรแกรม ยามเฝาประตโดยรบชอเพอน 1 ชอ โปรแกรม
จะใหเพอนชอ “กง” กบ “สม” เขาหองไดโดยแสดงค าวา “ใหผานประตได”ถาเปนชอคนอนใหแสดง “หามผาน”
• ตวอยางกจกรรม
4.3 การด าเนนการทางตรรกะ
name = input("ใสชอของคณ ")if name == "กง" or name == "สม" :
print("ใหผานประตได")else :
print("หามผาน")
name = input("ใสชอของคณ ")if name == "กง" or "สม" :
print("ใหผานประตได")else :
print("หามผาน")
บทท 4 การเขยนโปรแกรมดวยภาษาไพทอน (2)
• เตาไพทอน
• การท างานแบบมทางเลอก
• การด าเนนการทางตรรกะ
• การท างานแบบวนซ าดวย for
• การท างานแบบวนซ าดวย while
• ฟงกชน
• แนวทางการสอนและการจดกจกรรม
4.4 การท างานแบบวนซ าดวย for
• การท างานแบบเดมซ าหลายครง
from turtle import *shape("turtle")speed(1)forward(50)left(90)forward(50)left(90)forward(50)left(90)forward(50)left(90)done()
from turtle import *shape("turtle")speed(1)forward(100)right(120)forward(100)right(120)forward(100)right(120)done()
4.4 การท างานแบบวนซ าดวย for
• การท างานแบบเดมซ าหลายครง
from turtle import *shape("turtle")speed(1)forward(50)left(90)forward(50)left(90)forward(50)left(90)forward(50)left(90)done()
from turtle import *shape("turtle")speed(1)for i in range(4) :
forward(50)left(90)
done()
4.4 การท างานแบบวนซ าดวย for
• การท างานแบบเดมซ าหลายครง
from turtle import *shape("turtle")speed(1)forward(100)right(120)forward(100)right(120)forward(100)right(120)done()
from turtle import *shape("turtle")speed(1)for i in range(3) :
forward(100)right(120)
done()
4.4 การท างานแบบวนซ าดวย for
• การเขยนโปรแกรมทมการ “วนซ า” ดวยค าสง for ... in range() :• ค าสง range(n) จะใหผลลพธเปนลสต (รายการ) ตวเลขตงแต 0 ถง n - 1เชน range(5) จะไดลสต 0, 1, 2, 3, 4
• ค าสง for จะท าการวนซ าโดยน าคาในลสตแตละตวมาใช
• ตวแปรทใชกบ for ไมควรตงชอซ ากบตวแปรทใชไปแลว
• ชดค าสงทจะท าซ า ตองยอหนาเขาไปจาก for ผงงานของค าสง for
for ตวแปร in range(จ านวนเตม) :ชดค าสงทจะท าการวนซ าโดยวนซ า 1 รอบ ตอคา 1 คาในลสต
ยงเหลอคาในลสต
ชดค าสงทจะท าซ า
เทจ
จรง
4.4 การท างานแบบวนซ าดวย for
• การท างานแบบเดมซ าหลายครง
from turtle import *shape("turtle")speed(1)for i in range(4) :
forward(50)left(90)
done()
from turtle import *shape("turtle")speed(1)forward(50)left(90)forward(50)left(90)forward(50)left(90)forward(50)left(90)done()
range(4) ไดลสต 0, 1, 2, 3 ไปใสในตวแปร i ในแตละรอบ
i = 0
i = 1
i = 2
i = 3
4.4 การท างานแบบวนซ าดวย for
• การท างานแบบเดมซ าหลายครง
from turtle import *shape("turtle")speed(1)for k in range(3) :
forward(100)right(120)
done()
from turtle import *shape("turtle")speed(1)forward(100)right(120)forward(100)right(120)forward(100)right(120)done()range(3) ไดลสต 0, 1, 2
ไปใสในตวแปร k ในแตละรอบ
k = 0
k = 1
k = 2
• ตวอยางกจกรรม
4.4 การท างานแบบวนซ าดวย for
ใหนกเรยนลองเปลยนโปรแกรมเหลานโดยใชค าสง for ในการท าซ า
4.4 การท างานแบบวนซ าดวย for
• ตวอยางกจกรรม
name = input("ใสชอของคณ ")print("จะพมพชอของคณ 5 ครง")print("คณชอ", name)print("คณชอ", name)print("คณชอ", name)print("คณชอ", name)print("คณชอ", name)
from turtle import *shape("turtle")forward(50)right(60)forward(50)left(60)forward(50)right(60)forward(50)left(60)forward(50)right(60)forward(50)left(60)done()
4.4 การท างานแบบวนซ าดวย for
• ตวอยางกจกรรม
name = input("ใสชอของคณ ")print("จะพมพชอของคณ 5 ครง")for i in range(5) :
print("คณชอ", name)
from turtle import *shape("turtle")for x in range(3) :
forward(50)right(60)forward(50)left(60)
done()
• ตวอยางกจกรรม
4.4 การท างานแบบวนซ าดวย for
ใหนกเรยนลองสงใหเตาวาดรปตาง ๆโดยใชค าสง for เพอท าซ า
นกเรยนลองคดดวาตองท าซ ากรอบ
• ตวอยางกจกรรม
4.4 การท างานแบบวนซ าดวย for
4.4 การท างานแบบวนซ าดวย for
• ตวอยางกจกรรม
from turtle import *shape("turtle")for x in range(6) :
forward(50)left(60)
done()
4.4 การท างานแบบวนซ าดวย for
• ตวอยางกจกรรม
from turtle import *shape("turtle")
for x in range(4) :left(90)forward(30)left(90)forward(30)left(180)
done()
from turtle import *shape("turtle")left(90)for x in range(4) :
forward(30)left(90)forward(30)right(90)
right(90)done()
4.4 การท างานแบบวนซ าดวย for
• การน าคาในตวแปรจากค าสง for ไปใช
range(4) ไดลสต 0, 1, 2, 3ไปใสในตวแปร x ในแตละรอบ
for x in range(4) :print("นคอบรรทดท", x)
นคอบรรทดท 0นคอบรรทดท 1นคอบรรทดท 2นคอบรรทดท 3
4.4 การท างานแบบวนซ าดวย for
• การน าคาในตวแปรจากค าสง for ไปใช
for x in range(5) :print(x, "ยกก าลงสองได", x * x)
n = int(input("จะพมพกบรรทด "))for i in range(n) :
print("นคอบรรทดท", i + 1, "จาก", n, "บรรทด")
4.4 การท างานแบบวนซ าดวย for
• การน าคาในตวแปรจากค าสง for ไปใช
n = int(input("คณมเพอนกคน "))for k in range(n) :
message = "ใสชอเพอนคนท " + str(k + 1) + " "name = input(message)print("สวสด", name)
print("ยนดทไดรจกเพอน ๆ ทกคน")
• ตวอยางกจกรรม
4.4 การท างานแบบวนซ าดวย for
ใหนกเรยนเขยนโปรแกรมแสดงสตรคณโดยรบแมของสตรคณ เชน แม 3 จะได
3 x 1 = 33 x 2 = 6... (แสดง 3 x 3 ถง 3 x 11)3 x 12 = 36
• ตวอยางกจกรรม
4.4 การท างานแบบวนซ าดวย for
n = int(input("ใสแมสตรคณ "))for i in range(12) :
j = i + 1print(n, "x", j, "=", n * j)
• ตวอยางกจกรรม
4.4 การท างานแบบวนซ าดวย for
ใหนกเรยนเขยนโปรแกรมหาผลบวก1 + 2 + 3 + ... + n
เชน ถา n = 5จะได 1 + 2 + 3 + 4 + 5 = 15
• ตวอยางกจกรรม
4.4 การท างานแบบวนซ าดวย for
n = int(input("ใสคา n "))sum = 0for i in range(n) :
sum = sum + (i + 1)print("ผลบวกคอ", sum)
4.4 การท างานแบบวนซ าดวย for
• การท างานแบบวนซ า ทมความซบซอน
for x in range(10) :if x % 2 == 0 :
print(x, "เปนเลขค")
for x in range(10) :print("เลขตอไปคอเลข", x)if x % 2 == 0 :
print(x, "เปนเลขค")else :
print(x, "เปนเลขค")
4.4 การท างานแบบวนซ าดวย for
• เพมเตมเกยวกบค าสง range
• สามารถใช range(คาเร มตน, คาสนสด โดยจะไมรวมคาน, คาทเปลยน)เชน range(0, 10, 2) จะสรางลสต 0, 2, 4, 6, 8
range(20, 1, -3) จะสรางลสต 20, 17, 14, 11, 8, 5, 2
for x in range(10) :if x % 2 == 0 :
print(x, "เปนเลขค")
for x in range(0, 10, 2) :print(x, "เปนเลขค")
บทท 4 การเขยนโปรแกรมดวยภาษาไพทอน (2)
• เตาไพทอน
• การท างานแบบมทางเลอก
• การด าเนนการทางตรรกะ
• การท างานแบบวนซ าดวย for
• การท างานแบบวนซ าดวย while
• ฟงกชน
• แนวทางการสอนและการจดกจกรรม
• การวนซ าทมเงอนไขการหยด
เร มตน
มขนมอยในจาน
สงเกตเหนจานขนม
กนขนม 1 ชน
สนสด
เทจ
จรง
ผงงานกนขนม
4.5 การท างานแบบวนซ าดวย while
4.5 การท างานแบบวนซ าดวย while
• การเขยนโปรแกรมการ “วนซ า” ทม “เงอนไขการหยด” ดวยค าสง while :• ค าสง while จะตามดวยเงอนไข และเคร องหมาย colon (:)
• หากเงอนไขของค าสง while เปนจรง จะมการท าซ า
• เมอถงค าสงสดทายของการวนซ า โปรแกรมจะกลบมาเชคเงอนไขอกครง
• เมอเงอนไขของค าสง while เปนเทจ จะหยดการท าซ า
• ชดค าสงทจะท าซ า ตองยอหนาเขาไปจาก while ผงงานของค าสง while
while เงอนไข :ชดค าสงทจะท าการวนซ า
เงอนไข
ชดค าสงทจะท าซ า
เทจ
จรง
4.5 การท างานแบบวนซ าดวย while
• เงอนไข การเลอกท า และการท าซ า
เร มตน
cookie > 0
cookie ← 4
กนขนม 1 ชน
สนสด
เทจ
จรง
1. ใสขนมในจาน 4 ชน2. ถา มขนมอยในจาน ท า
2.1 กนขนม 1 ชน2.2 กลบไปท าขนตอนท 2
แสดงคา cookie
แสดงคา cookie
ฉนกนไป 1 ชนcookie = 4print("ตอนนมคกก", cookie, "ชน")while cookie > 0 :
print("ฉนกนคกกไป 1 ชน")cookie = cookie – 1print("ตอนนมคกก", cookie, "ชน")
4.5 การท างานแบบวนซ าดวย while
• เงอนไข การเลอกท า และการท าซ า
1. มเงนในกระปก 0 บาท2. ถา ยงไมพอซอหนงสอ ท า
2.1 หยอดเงนเพม 10 บาท2.2 กลบไปท าขนตอนท 2
3. ไปซอหนงสอ
money = 0print("ตอนนมเงน", money, "บาท")while money < 35 :
money = money + 10print("ตอนนมเงน", money, "บาท")
print("ซอหนงสอไดแลว")
เร มตน
money < 35
money ← 0
ใสเงนเพม 10 บาท
สนสด
เทจ
จรง
แสดงคา money
ซอหนงสอไดแลว
แสดงคา money
• ตวอยางกจกรรม
4.5 การท างานแบบวนซ าดวย while
ใหนกเรยนลองยกตวอยางการท าซ าในชวตประจ าวน
ทท าไปเร อย ๆ จนหยดตามเงอนไข
4.5 การท างานแบบวนซ าดวย while
• ขอควรระวง หากเขยนเงอนไขผดหรอปรบคาตวแปรผดอาจท าใหโปรแกรมไมวนซ า หรอวนซ าโดยไมหยด
x = 0while x > 0 :
x = x + 1print("x มคา", x)
print("สนสดการท างาน")
y = 1while y != 10 :
y = y + 2print("y มคา", y)
print("สนสดการท างาน")
• ตวอยางกจกรรม
4.5 การท างานแบบวนซ าดวย while
บอกผลลพธของการท างานตอไปนการวนซ าในขอใด จะท าซ าโดยไมหยด
• ตวอยางกจกรรม
4.5 การท างานแบบวนซ าดวย while
a = 10while a <= 20 :
a = a + 2print("a มคา", a)
print("จบการท างาน")
b = 1while b < 20 :
b = b * 2print("b มคา", b)
print("จบการท างาน")
c = 10while c < 10 :
c = c + 1print("c มคา", c)
print("จบการท างาน")
d = 10while d <= 10 :
d = d - 1print("d มคา", d)
print("จบการท างาน")
4.5 การท างานแบบวนซ าดวย while
• while กบ for อาจน ามาใชแทนกนได
for x in range(4) :print("นคอบรรทดท", x)
for k in range(5) :print(k, "ยกก าลงสองได", k * k)
x = 0while x < 4 :
print("นคอบรรทดท", x)x = x + 1
k = 0while k < 5 :
print(k, "ยกก าลงสองได", k * k)k = k + 1
4.5 การท างานแบบวนซ าดวย while
• บางกรณอาจใช for แทนไมไดตรง ๆ
b = 1while b < 100 :
print("b มคา", b)b = b * 2
print("จบการท างาน")
b = 200while b > 0 :
print("b มคา", b)b = b // 3
print("จบการท างาน")
4.5 การท างานแบบวนซ าดวย while
• ระวงการเรยงล าดบค าสง
x = 0while x < 4 :
print("นคอบรรทดท", x)x = x + 1
x = 0while x < 4 :
x = x + 1print("นคอบรรทดท", x)
• ตวอยางกจกรรม
4.5 การท างานแบบวนซ าดวย while
ใหนกเรยนเขยนโปรแกรมแสดงสตรคณโดยรบแมของสตรคณ เชน แม 3 จะได
3 x 1 = 33 x 2 = 6... (แสดง 3 x 3 ถง 3 x 11)3 x 12 = 36
>> ใหใชค าสง while <<
• ตวอยางกจกรรม
4.5 การท างานแบบวนซ าดวย while
n = int(input("ใสแมสตรคณ "))i = 1 while i <= 12 :
print(n, "x", i, "=", n * i)i = i + 1
• ตวอยางกจกรรม
4.5 การท างานแบบวนซ าดวย while
ใหนกเรยนเขยนโปรแกรมหาผลบวก1 + 2 + 3 + ... + n
เชน ถา n = 5จะได 1 + 2 + 3 + 4 + 5 = 15
>> ใหใชค าสง while <<
• ตวอยางกจกรรม
4.5 การท างานแบบวนซ าดวย while
n = int(input("ใสคา n "))sum = 0i = 1while i <= n :
sum = sum + ii = i + 1
print("ผลบวกคอ", sum)
• ตวอยางกจกรรม
4.5 การท างานแบบวนซ าดวย while
ใหนกเรยนลองสงใหเตาวาดรปตาง ๆโดยใชค าสง while เพอท าซ า
ลองเปรยบเทยบกบโปรแกรมเดมทใชค าสง for
• ตวอยางกจกรรม
4.5 การท างานแบบวนซ าดวย while
from turtle import *shape("turtle")j = 1while j <= 3 :
forward(100)right(120)j = j + 1
done()
from turtle import *shape("turtle")k = 6while k > 0 :
forward(50)left(60)k = k - 1
done()
from turtle import *shape("turtle")i = 0while i < 4 :
forward(50)left(90)i = i + 1
done()
for x in range(10) :print("เลขตอไปคอเลข", x)if x % 2 == 0 :
print(x, "เปนเลขค")else :
print(x, "เปนเลขค")
4.5 การท างานแบบวนซ าดวย while
• การท างานแบบวนซ า ทมความซบซอน
x = 0while x < 10 :
print("เลขตอไปคอเลข", x)if x % 2 == 0 :
print(x, "เปนเลขค")else :
print(x, "เปนเลขค")x = x + 1
• ตวอยางกจกรรม
4.5 การท างานแบบวนซ าดวย while
โปรแกรมตอไปนแสดงคาอะไร
x = 0while x < 100 :
print("x มคา", x)if x < 10 :
x = x + 2else :
x = x + 20
• ตวอยางกจกรรม
4.5 การท างานแบบวนซ าดวย while
x = 0while x < 100 :
print("x มคา", x)if x < 10 :
x = x + 2else :
x = x + 20
x มคา 0x มคา 2x มคา 4x มคา 6x มคา 8x มคา 10x มคา 30x มคา 50x มคา 70x มคา 90
บทท 4 การเขยนโปรแกรมดวยภาษาไพทอน (2)
• เตาไพทอน
• การท างานแบบมทางเลอก
• การด าเนนการทางตรรกะ
• การท างานแบบวนซ าดวย for
• การท างานแบบวนซ าดวย while
• ฟงกชน
• แนวทางการสอนและการจดกจกรรม
4.6 ฟงกชน
• ฟงกชน เปนค าสงส าเรจรปทเราสามารถเรยกใชได
• ตวอยางฟงกชนทผานมาแลว เชน• print() ใชในการแสดงผลเชน print("สวสด") จะแสดงผลค าวาสวสด
• input() ใชในการรบขอความจากแปนพมพเชน name = input("ใสชอของคณ ")จะรบขอความจากแปนพมพ มาเกบไวในตวแปร name
• forward() ใชสงใหเตาเคลอนทไปขางหนา เปนฟงกชนทอยในโมดล turtleเชน forward(100) จะสงใหเตาเดนหนา 100 หนวย
4.6 ฟงกชน
• ประเภทของฟงกชน
print("สวสด") name = input("ใสชอของคณ ")
from turtle import *forward(100)
num = int("123")
ฟงกชนทไมมการคนคา ฟงกชนทมการคนคา
4.6 ฟงกชน
• การใชงานฟงกชน
• ฟงกชนตาง ๆ ทนาสนใจ• ฟงกชนทภาษาไพทอนมใหอยแลว
• ฟงกชนจากโมดล math
• ฟงกชนจากโมดล turtle
• ฟงกชนจากโมดล random
ชอฟงกชน(คาทสงใหฟงกชน) ตวแปร = ชอฟงกชน(คาทสงใหฟงกชน)
ฟงกชนทไมมการคนคา ฟงกชนทมการคนคา
4.6 ฟงกชน
• ฟงกชนทภาษาไพทอนมใหอยแลว
• ไมตอง import กอนใชงาน
• ตวอยางฟงกชน• print() ใชในการแสดงผล
คาทสงใหฟงกชน : ขอมลทจะแสดง ถามหลายตวใหคนดวยจลภาคคาทคนมาจากฟงกชน : ไมม
• input() ใชรบคาขอความจากแปนพมพคาทสงใหฟงกชน : ขอมลทจะแสดงขณะรบคา เปนประเภทสตรงคาทคนมาจากฟงกชน : คาทผใชปอนทางแปนพมพ เปนประเภทสตรง
4.6 ฟงกชน
• ฟงกชนทภาษาไพทอนมใหอยแลว
• ตวอยางฟงกชน• int() ใชแปลงขอมลใหเปนประเภทจ านวนเตม
คาทสงใหฟงกชน : ขอมลทตองการแปลงเปนจ านวนเตมอาจเปนประเภทจ านวนเตม จ านวนจรง สตรง หรอบลน
คาทคนมาจากฟงกชน : คาทแปลงเปนจ านวนเตมแลว
• min() ใชหาคาต าสดจากคากก าหนดใหทงหมดคาทสงใหฟงกชน : ขอมลทงหมดทจะหาคาต าสด ใหคนดวยจลภาคคาทคนมาจากฟงกชน : คาต าสดจากขอมลทงหมดตวอยางการใชงาน : y = min(4, 3, 6) ได y เกบคา 3
4.6 ฟงกชน
• ฟงกชนทภาษาไพทอนมใหอยแลว
• ไมใชฟงกชนไดไหม ? โปรแกรมใดอานงายกวากน ? เขยนเองอาจผดได ?
a = int(input("ใสคา a "))b = int(input("ใสคา b "))
x = min(a, b)
print("คาทนอยกวาคอ", x)
a = int(input("ใสคา a "))b = int(input("ใสคา b "))if a < b :
x = aelse :
x = bprint("คาทนอยกวาคอ", x)
• ตวอยางกจกรรม
4.6 ฟงกชน
ลองเขยนโปรแกรมทท างานเหมอนกบฟงกชน min ของ 3 คา เชน
x = min(2, 1, 3) ได x เกบคา 1
4.6 ฟงกชน
• ตวอยางกจกรรม
a = int(input("ใสคา a "))b = int(input("ใสคา b "))c = int(input("ใสคา c "))
x = min(a, b, c)
print("คาทนอยทสดคอ", x)
a = int(input("ใสคา a "))b = int(input("ใสคา b "))c = int(input("ใสคา c "))if a <= b and a <= c :
x = aelif b <= a and b <= c :
x = belse :
x = cprint("คาทนอยทสดคอ", x)
• ตวอยางกจกรรม
4.6 ฟงกชน
ใหนกเรยนลองใชงานฟงกชนทภาษาไพทอนมให
แลวสรปการท างานของฟงกชนa = max(2.3, 5, 1.4, 7)b = abs(-3)c = len("hello")d = pow(3, 4)e = round(3.14159265, 3)
4.6 ฟงกชน
• ฟงกชนจากโมดล math
from math import … ค าอธบาย ตวอยางการใชงาน
pi คาพายทมความละเอยดสง area = pi * r ** 2
e คาธรรมชาตทมความละเอยดสง k = 1 / e
exp ค าสงหาคา e ยกก าลง x p = exp(3) # e3
log ค าสงหาคา log(x, ฐาน) t = log(81, 3) # log3 81
sqrt ค าสงหาคารากทสอง q = sqrt(35)
sin ค าสงหาคา sine (รบคาเรเดยน) s = sin(pi)
cos ค าสงหาคา cosine (รบคาเรเดยน) c = cos(pi/2)
4.6 ฟงกชน
• ฟงกชนจากโมดล turtle
• ตวอยางการวาดรป
from turtle import *shape("turtle")speed(1)forward(50)left(90)forward(50)right(90)forward(50)done()
4.6 ฟงกชน
• ฟงกชนจากโมดล random
• ใชค าสง from random import * กอนใชงาน
• ตวอยางฟงกชน• random() ใชสมเลขจ านวนจรง
คาทสงใหฟงกชน : ไมมคาทคนมาจากฟงกชน : คาสม เปนจ านวนจรงในชวง 0 ≤ x < 1
• randint() ใชสมเลขจ านวนเตม คาทสงใหฟงกชน : ขอบเขตของคาทจะสม เปนจ านวนเตม 2 จ านวนคาทคนมาจากฟงกชน : คาสม เปนจ านวนเตมในชวงทก าหนด
4.6 ฟงกชน
• ฟงกชนจากโมดล random
from random import *coin = random()if coin >= 0.5 :
print("เหรยญออกหว")else :
print("เหรยญออกกอย")
from random import *dice = randint(1, 6)print("ลกเตาออกแตม", dice)
• ตวอยางกจกรรม
4.6 ฟงกชน
ใหนกเรยนเขยนโปรแกรมเพอสมเลขทาย 2 ตวและ 3 ตว
ของสลากกนแบงรฐบาล
• ตวอยางกจกรรม
4.6 ฟงกชน
from random import *two = randint(0, 99)print("เลขทาย 2 ตวคอ", two)three = randint(0, 999)print("เลขทาย 3 ตวคอ", three)
• ตวอยางกจกรรม
4.6 ฟงกชน
from random import *two = randint(0, 99)if two < 10 :
two = "0" + str(two)print("เลขทาย 2 ตวคอ", two)
three = randint(0, 999)if three < 10 :
three = "00" + str(three)elif three < 100 :
three = "0" + str(three)print("เลขทาย 3 ตวคอ", three)
• ตวอยางกจกรรม
4.6 ฟงกชน
จากฟงกชนทผาน ๆ มาใหนกเรยนลองพจารณาวา
ฟงกชนใดเปนฟงกชนทไมคนคาฟงกชนใดเปนฟงกชนทคนคาถาคนคา เปนขอมลประเภทใด
from turtle import *def draw() :
forward(100)left(90)forward(100)
4.6 ฟงกชน
• เขยนฟงกชนใชงานเอง• เร มดวย def
• ตามดวยชอฟงกชน (ใชกฎเดยวกนกบชอตวแปร)
• ตามดวยการระบขอมลทจะสงใหฟงกชน
• ตามดวยเคร องหมาย colon (:)
• ชดค าสงทจะท าในฟงกชน จะยอหนาเขาไป
• หากตองการคนคา ใหใชค าสง return
def add(x, y) :z = x + yreturn z
def ชอฟงกชน(ขอมลทจะสงใหฟงกชน) :ชดค าสงทจะท าในฟงกชนหากตองการคนคา ใหใชค าสง return
4.6 ฟงกชน
• การใชงานฟงกชนทเขยนเอง• ฟงกชนตองอยกอนสวนการท างานหลก
def add(x, y) :z = x + yreturn z
a = 3b = add(a, 5)print(b)
from turtle import *
def draw() :forward(100)left(90)forward(100)
shape("turtle")draw()done()
4.6 ฟงกชน
• การใชงานฟงกชนทเขยนเอง• สามารถใช if for while หรอเรยกฟงกชนอน ๆ ได
• ตวแปรในสวนการท างานหลกกบตวแปรในฟงกชน เปนคนละตวกน
def function(a) :a = a + 1return a
a = 3b = function(a)c = function(b)print(a, b, c)
def test(score) :if score >= 50 :
return "สอบผาน"else :
return "สอบตก"
result1 = test(75)result2 = test(80)result3 = test(10)print(result1, result2, result3)
4.6 ฟงกชน
• ประโยชนของการใชฟงกชน• ท าใหอานโปรแกรมไดงายขน
• เรยกใชงานซ าหลายครงได
• ผอนสามารถเรยกใชงานฟงกชนของเราได
• ควรศกษาการท างานของฟงกชนกอนใชงาน• ขอมลทสงใหฟงกชน มกตว อะไรบาง เปนประเภทขอมลอะไร
• คาทคนมาจากฟงกชน เปนคาอะไร เปนประเภทขอมลอะไร
• ตวอยางกจกรรม
4.6 ฟงกชน
ใหนกเรยนพจารณาวาฟงกชนนท าอะไรdef function(a, b, c) :
k = (a + b + c) / 3return k
• ตวอยางกจกรรม
4.6 ฟงกชน
ใหนกเรยนเขยนฟงกชนเพอแปลงอณหภมองศาฟาเรนไฮต
เปนองศาเซลเซยส
• ตวอยางกจกรรม
4.6 ฟงกชน
def F2C(F) :C = 5 * (F - 32) / 9return C
F = int(input("ใสอณหภม F "))C = F2C(F)print("อณหภม C คอ", C)
บทท 4 การเขยนโปรแกรมดวยภาษาไพทอน (2)
• เตาไพทอน
• การท างานแบบมทางเลอก
• การด าเนนการทางตรรกะ
• การท างานแบบวนซ าดวย for
• การท างานแบบวนซ าดวย while
• ฟงกชน
• แนวทางการสอนและการจดกจกรรม
4.7 แนวทางการสอนและการจดกจกรรม
• ทบทวนเนอหาในบทน• เตาไพทอน
• การเลอกท าดวย if, if-else, if-elif-else
• การเปรยบเทยบและด าเนนการทางตรรกะ
• การท าซ าดวย for, while
• ฟงกชน
4.7 แนวทางการสอนและการจดกจกรรม
• สงทนกเรยนควรท าไดเมอจบบทน• เขาใจวาค าสง if elif else for while def ท าหนาทอะไร
• ใชเคร องหมายเปรยบเทยบไดถกตอง และอธบายผลการเปรยบเทยบได
• เขาใจการด าเนนการทางตรรกะ
• สามารถไลการท างานของโปรแกรมได วาเงอนไขเปนจรงหรอเทจ ตองวนซ าหรอไม
• สามารถเขยนโปรแกรมทมการเลอกท าและการท าซ าได
4.7 แนวทางการสอนและการจดกจกรรม
• แนวทางการวเคราะหโจทยเพอเขยนโปรแกรม• พจารณาวาโจทยถามอะไร อะไรคอขอมลน าเขา อะไรคอผลลพธ
• พจารณาลกษณะของโจทยวามล าดบการท างานแบบเลอกท าหรอวนซ าหรอไม
• อาจใหนกเรยนอธบายการท างานดวยค าพดกอน จะท าใหนกเรยนเขาใจมากขนภาษาทนกเรยนใชอาจยงไมชดเจน ซงเปนเร องปกต ใหคณครชวยเรยบเรยงความคด
• อาจเขยนรหสล าลองหรอผงงานเพอใหน าไปสการเขยนโปรแกรมไดงาย
• ทดสอบโปรแกรมดวยขอมลน าเขาแบบตาง ๆ เพอใหแนใจวาโปรแกรมท างานถกตอง
4.7 แนวทางการสอนและการจดกจกรรม
• สงทตองพจารณาในการท างานแบบเลอกท า• มกทางเลอกทเปนไปได 1 (if), 2 (if-else) หรอมากกวา 2 (if-elif-else)
• เงอนไขในการตดสนใจคออะไร ตองใชตวด าเนนการทางตรรกะหรอไม
• ชดค าสงทจะท าใหแตละทางเลอกมค าสงอะไรบาง ล าดบเปนอยางไร
• สงทตองพจารณาในการท างานแบบท าซ า• ชใหเหนถงรปแบบการวนซ า โดยอาจเร มจากการเขยนค าสงซ า ๆ กนกอน
• จะใชค าสง for หรอ while ซงโจทยสวนใหญสามารถใชไดทง 2 แบบ
• ถาใชค าสง for จะตองไลคาจากคาใดถงคาใด
• ถาใชค าสง while จะมเงอนไขการหยดอยางไร การเปลยนคาในแตละรอบเปนอยางไร
• ชดค าสงทจะท าซ าในแตละรอบมค าสงอะไรบาง ล าดบเปนอยางไร
4.7 แนวทางการสอนและการจดกจกรรม
• แนวทางส าหรบคณคร• พยายามไลจากโจทยงายไปโจทยยาก
• หากนกเรยนไมเขาใจ อาจใชการยกตวอยางเพมเตม เพอใหนกเรยนเหนภาพ
• ใหนกเรยนเปรยบเทยบโปรแกรมของแตละคน เพอชใหเหนขอผดพลาดทควรระวงและวธการเขยนทแตกตางกน
• นกเรยนแตละคนอาจมความสามารถในการเรยนรทแตกตางกนและมความสามารถในการใชคอมพวเตอร การใชแปนพมพทแตกตางกน กลมทไปไดชา อาจใชการประกบอยางใกลชด คอย ๆ แนะน าวธการคดกลมทไปไดเรว อาจเพมเนอหา หรอเพมโจทยทมความซบซอน
• ตวอยางกจกรรม
4.7 แนวทางการสอนและการจดกจกรรม
ตวอยางโจทยเพมเตม
• ตวอยางกจกรรม
4.7 แนวทางการสอนและการจดกจกรรม
เขยนโปรแกรมค านวณราคาเขาชมพพธภณฑจากอายผเขาชม
เดกอายไมเกน 15 ปเขาชมฟร ผสงอายตงแต 60 ปขนไป จาย 20 บาท
บคคลทวไป จาย 50 บาท
• ตวอยางกจกรรม
4.7 แนวทางการสอนและการจดกจกรรม
เร มตน
age <= 15
สนสด
เทจ
รบคา age
เขาชมฟร จรง
age >= 60
เทจ
ราคา 20 บาท
15 < age < 60
เทจ
ราคา 50 บาท
จรง
จรง
4.7 แนวทางการสอนและการจดกจกรรม
• ตวอยางกจกรรม
age = int(input("ใสอาย "))if age <= 15 :
print("เขาชมฟร")if age >= 60 :
print("ราคา 20 บาท")if 15 < age < 60 :
print("ราคา 50 บาท")
age = int(input("ใสอาย "))if age <= 15 :
print("เขาชมฟร")elif age >= 60 :
print("ราคา 20 บาท")else :
print("ราคา 50 บาท")
• ตวอยางกจกรรม
4.7 แนวทางการสอนและการจดกจกรรม
เขยนโปรแกรมรบจ านวนดานของรปหลายเหลยมแลวสงใหเตาวาดรปหลายเหลยมนน
• ตวอยางกจกรรม
4.7 แนวทางการสอนและการจดกจกรรม
เร มตน1. รบจ านวนดานจากแปนพมพ2. วนซ าตามจ านวนดาน
2.1 เดนหนา 50 หนวย2.2 เลยวซายใหเปนมมของรปหลายเหลยม2.3 กลบไปท าขอ 2 จนครบทกดาน
สนสด
4.7 แนวทางการสอนและการจดกจกรรม
• ตวอยางกจกรรม
from turtle import *shape("turtle")n = int(input("ใสจ านวนดาน "))
for k in range(n) :forward(50)angle = 180 – (180 * (n - 2) / n)left(angle)
done()
from turtle import *shape("turtle")n = int(input("ใสจ านวนดาน "))angle = 360 / nk = 0while k < n :
forward(50)left(angle)k = k + 1
done()
• ตวอยางกจกรรม
4.7 แนวทางการสอนและการจดกจกรรม
เขยนโปรแกรมรบจ านวนขอมล เชนมขอมล 4 ตวและรบจ านวนเตมทละตวจนครบ
เชน 10, 7, 4, 5และตอบคาเฉลยของจ านวนทรบมา
• ตวอยางกจกรรม
4.7 แนวทางการสอนและการจดกจกรรม
เร มตน1. รบจ านวนขอมลจากแปนพมพ2. ให sum ← 0 เปนตวบวกสะสม3. วนซ าตามจ านวนขอมล
2.1 รบจ านวนเตมจากแปนพมพ2.2 น าจ านวนเตมนนไปบวกใสใน sum2.3 กลบไปท าขอ 2 จนครบทกตว
4. คาเฉลยคอ sum หารดวยจ านวนขอมลสนสด
4.7 แนวทางการสอนและการจดกจกรรม
• ตวอยางกจกรรม
n = int(input("ใสจ านวนขอมล "))sum = 0for i in range(n) :
msg = "ใสจ านวนท " + str(i + 1) + " "x = int(input(msg))sum = sum + x
if n <= 0 :print("ไมมขอมลใหหาคาเฉลย")
else :print("คาเฉลยคอ", sum / n)
n = int(input("ใสจ านวนขอมล "))sum = 0i = 1while i <= n :
msg = "ใสจ านวนท " + str(i) + " "x = int(input(msg))sum = sum + xi = i + 1
if n <= 0 :print("ไมมขอมลใหหาคาเฉลย")
else :print("คาเฉลยคอ", sum / n)
• ตวอยางกจกรรม
4.7 แนวทางการสอนและการจดกจกรรม
เขยนโปรแกรมรบจ านวนขอมลไปเร อย ๆ จนพบเลข 0
เชน 10, 7, 4, 5, 0แลวหาคาเฉลยของจ านวนทรบมา
(ไมรวมเลข 0 ตวสดทาย)
• ตวอยางกจกรรม
4.7 แนวทางการสอนและการจดกจกรรม
1. ให count ← 0 ไวนบจ านวนขอมล2. ให sum ← 0 เปนตวบวกสะสม3. รบจ านวนเตม ไปเกบไวใน x4. ถา x ไมเทากบ 0 ท า
4.2 น าจ านวน x ไปบวกใสใน sum4.1 เพมคา count ขน 14.1 รบจ านวนเตมจากแปนพมพ4.3 กลบไปท าขอ 4
5. คาเฉลยคอ sum หารดวย count
4.7 แนวทางการสอนและการจดกจกรรม
• ตวอยางกจกรรม count = 0sum = 0x = int(input("ใสจ านวนท 1 "))while x != 0 :
sum = sum + xcount = count + 1 msg = "ใสจ านวนท " + str(count + 1) + " "x = int(input(msg))
if count == 0 :print("ไมมขอมลใหหาคาเฉลย")
else :print("คาเฉลยคอ", sum / count)
• ตวอยางกจกรรม
4.7 แนวทางการสอนและการจดกจกรรม
ใหนกเรยนเขยนโปรแกรมแขงเปายงฉบกบคอมพวเตอร
โดยใหคอมพวเตอรสมสงทจะออก
4.7 แนวทางการสอนและการจดกจกรรม
• ตวอยางกจกรรม from random import *
print("ยนดตอนรบเขาสเกมเปายงฉบ")print("ให 1 แทนคอน, 2 แทนกรรไกร, 3 แทนกระดาษ")
me = int(input("ใสเลขแทนสงทคณเลอก "))com = randint(1, 3)
if me == 1 and com == 2 :print("คอมพวเตอรออกกรรไกร คณชนะ")
# เขยนกรณอน ๆ จนครบ
4.7 แนวทางการสอนและการจดกจกรรม
• เนอหาเพมเตมส าหรบคณครและนกเรยนทสนใจ• การเกบรายการขอมลดวย list
• การเกบขอมลดวย dictionary และ set
• การเขยน class
• การจดการไฟล อานไฟล สรางไฟล
• การเชอมตออนเทอรเนตและเรยกเวบไซต
• การใชคลงค าสง (library) ตาง ๆ เชน • numpy ใชในการค านวณทางคณตศาสตร เมทรกซ
• pandas ใชในการจดการตารางขอมล
• pygame ใชในการสรางเกม
4.7 แนวทางการสอนและการจดกจกรรม
• เนอหาเพมเตมส าหรบคณครและนกเรยนทสนใจ• สามารถอานรายละเอยดการใชงานภาษาไพทอนเพมเตมไดท
docs.python.org/3/index.html
จบบทท 4