วันจันทร์ที่ 31 สิงหาคม พ.ศ. 2558

ทดลองเขียน class Stack และ ตัวอย่าง

Class Stack



*อ้างอิงข้อมูลใน class จาก http://docs.oracle.com/javase/7/docs/api/java/util/Stack.html
**เพิ่ม method show

ตัวอย่าง โปรแกรมพิสูจน์คู่วงเล็บ



Output



การสร้าง class ใน Python

Python ก็เป็นอีกภาษาหนึ่งที่เขียนโปรแกรมแบบ Object-Oriented ได้ แถมสามารถเขียนได้สั้น เพราะเป็นภาษา script

เริ่มต้นด้วยการสร้าง class

1. ตั้งชื่อ class
ตัวอย่าง



จะเห็นว่าใช้การย่อหน้าเพื่อแยก code ส่วนที่เป็น code ใน class 

2. ในส่วนของ constructure เราสามารถตั้งค่า attribute ให้กับ object นั้นๆได้เลย แต่ถ้ามีการเรียกใช้ค่า attribute ที่ไม่เคยประกาศมาก่อน จะถือว่า error
ตัวอย่าง



หรือเราจะให้มีการระบุค่าเริ่มต้นตอนสร้าง object เลยก็ได้ โดยเขียน method ที่ชื่อว่า __init__


Output



3. สร้าง Method
ตัวอย่าง



Output


หากเมธอดของเราต้องการให้ใช้ parameter จาก attribute ใน object นั้น เราจะใช้คำว่า self ในช่อง parameter และเมื่อเรียกใช้ ภายในเมธอดจะใช้คำสั่งว่า self.(attribute ที่ต้องการ)
   เวลาเรียกใช้ถ้าเป็น เมธอดที่มี self ในวงเว็บ จะต้องใส่วงเล็บด้วย ถ้าในวงเล็บไม่มี self เวลาเรียกใช้ไม่จำเป็นต้องใส่ก็ได้
 

การสืบทอด class (Extends)
ตัวอย่าง



Output


   การสืบทอด class จะทำให้สามารถใช้ attribute, constructure และ method ต่างๆใน class แม่ได้

วันพุธที่ 26 สิงหาคม พ.ศ. 2558

เขียนภาษา Python ด้วย NetBeans

1. สิ่งแรกที่คุณต้องมี คือ โปรแกรม NetBeans IDE 8.0.2 สามารถดาวน์โหลดได้ ที่นี่



ติดตั้งจนเสร็จสรรพแล้ว ในหน้า Desktop จะมี Icon ดังรูป


2. โหลด Python Plugins ที่นี่


จะได้ไฟล์ zip มา แตกเป็นโฟเดอร์ให้เรียบร้อย


3. เปิดโปรแกรม NetBeans ขึ้นมา แล้วไปเลือกแถบ Tool -->Plugins จะได้หน้าต่างดังรูป


4. ไปที่แถบ Downloads แล้วคลิ๊ก Add Plugins... แล้วเลือกที่อยู่ของโฟลเดอร์ ที่ได้จากข้อ 2 จากนั้นให้เลือกไฟล์ในโฟลเดอร์นั้นให้หมด กด open และกด Install


รอจน install เสร็จก็เป็นอันเรียบร้อย

5. เมื่อต้องการจะสร้าง Project ที่เป็นภาษา Python ให้เลือกหา โฟลเดอร์ที่เขียนว่า Python


เสร็จสิ้น


ขอบคุณข้อมูลจาก https://blogs.oracle.com/geertjan/entry/python_in_netbeans_ide_81

วันจันทร์ที่ 24 สิงหาคม พ.ศ. 2558

โจทย์(ครั้งที่ 1)

1.ในทะเลทรายแห่งหนึ่ง มีจิงโจ้ 3 ตัวกำลังเล่นบนเส้นจำนวน (จำนวนเต็ม) เริ่มต้นนั้นแต่ละตัวจะอยู่บนจำนวนที่แตกต่างกัน ในตาหนึ่ง จะมีจิงโจ้ตัวหนึ่ง กระโดดเข้าไปในตำแหน่งตัวเลขจำนวนเต็มที่อยู่ระหว่างจิงโจ้อีก 2 ตัว และไม่มีครั้งใดที่จิงโจ้จะกระโดดไปอยู่ในตำแหน่งจำนวนเดียวกับตัวอื่นเลย

โจทย์ จงเขียนโปรแกรมเพื่อรับตำแหน่งของจิงโจ้ทั้ง 3 ตัว และตอบว่าจะกระโดดได้มากที่สุดกี่ครั้ง ก่อนเกมจะจบลง (เล่นต่อไม่ได้แล้ว)

ข้อมูลนำเข้า บรรัดแรก จำนวนเต็ม 3 จำนวน A, B, C โดยที่ 0 < A < B < C < 100 คือตำแหน่งเริ่มต้นของจิงโจ้ทั้งสามตัว

ข้อมูลส่งออก บรรทัดเดียว จำนวนตาเล่นที่จิงโจ้สามารถเล่นได้มากที่สุด

ตัวอย่างข้อมูลนำเข้า            ตัวอย่างข้อมูลส่งออก
2 3 5                                         1

3 5 9                                         4

แนวคิด
   มีจิงโจ้อยู่สามตัว และต้องกระโดดอยู่ระหว่างตำแหน่งที่จิ้งโจ้ยืน ดังนั้นจะมี 2 ช่วง ที่มีที่ให้กระโดดไป เราจะหาว่าในแต่ละช่วงมีกี่ที่ และเอาสองช่วงมาบวกกัน

โค๊ดที่ได้




ทดลองโค๊ด



2. เว็บไซต์สังคมออนไลน์แห่งหนึ่งเป็นแหล่งรวมผู้นิยมการขัดผิวด้วยสมุนไพรต่างๆ เมื่อผู้ใช้คนใดมีข่าวสารในวงการเครื่องประทินผิว ก็จะนำมาเผยแพร่ทางเว็บไซต์แห่งนี้ หากผู้ใช้เว็บไซต์คนอื่นๆ เห็นว่าข่าวดังกล่าวเป็นประโยชน์ก็สามารถกดปุ่ม ลูบไล้เพื่อแสดงความชื่นชม และทุกครั้งที่ ลูบไล้ก็สามารถใส่ความคิดเห็นเพิ่มเติมลงไปได้ หากผู้ใช้เว็บไซต์คนอื่นๆ เห็นว่าการ ลูบไล้นั้นเป็นประโยชน์ก็สามารถกดปุ่ม ลูบไล้การ ลูบไล้นั้นได้ ทำให้เกิดเป็นการ ลูบไล้แตกแขนงไม่รู้จบสิ้น

นิตยาเพิ่งเข้าสู่วงการสมุนไพรประทินผิวได้ไม่นานและเห็นเว็บไซต์แห่งนี้เป็นครั้งแรก เนื่องจากเธอไม่อยากไล่อ่านข้อความทั้งหมดในเว็บไซต์ เธอจึงอยากให้คุณช่วงหาความคิดเห็นที่ถูก ลูบไล้มากที่สุด เพื่อที่จะนำความคิดเห็นนั้นไปใช้เสริมความงามของเธอเอง

งานของคุณ
รับข้อมูลการ ลูบไล้ทั้งหมด แล้วหาความคิดเห็นที่ถูก ลูบไล้มากที่สุด

ข้อมูลนำเข้า
บรรทัดแรกระบุจำนวนเต็ม N (2 ≤ N ≤ 1,000) แทนจำนวนการ ลูบไล้ทั้งหมด

บรรทัดถัดไประบุจำนวนเต็ม N จำนวน แทนหมายเลขความคิดเห็นที่ถูก ลูบไล้หมายเลขความคิดเห็นเป็นจำนวนเต็มตั้งแต่ 1 ถึง 10,000

ข้อมูลส่งออก
บรรทัดเดียว ระบุหมายเลขความคิดเห็นที่ถูก ลูบไล้มากที่สุด หากมีหลายความคิดเห็นที่ถูก ลูบไล้มากที่สุดเท่ากัน ให้พิมพ์หมายเลขความคิดเห็นเหล่านั้นจากน้อยไปมาก คั่นด้วยช่องว่างหนึ่งช่อง

                                     ตัวอย่างข้อมูลนำเข้า            ตัวอย่างข้อมูลส่งออก
                                     7
                                     4 3 9 8 3 3 8                       3
                                     7
                                     12 2 1 12 1 1 12                 1 12

แนวคิด
   สรุปคือ เป็นโปรแกรมที่จะนับจากประวัติการกดไลค์ว่า มีการกดไลค์โพสไหนบ้าง แล้วให้หาโพสที่มียอดไลค์สูงสุด ซึ่งอาจมีโพสที่เท่ากันอยู่ ให้แสดงผลทุกโพส

โค๊ดที่ได้



ทดลองโค๊ด




ขอบคุณโจทย์จาก http://www.programming.in.th/task/rev2_problemset.php?page=0

List in Python

List ในภาษา Python เปรียบได้กับ ArrayList ในภาษา Java เป็น Data Structure ที่ใช้เก็บตัวแปรหลายๆตัว โดยสามารถเพิ่มขนาดได้ตามต้องการ มีโครงสร้างการประกาศดังนี้

      list1 = ['physics', 'chemistry', 1997, 2000]
      list2 = [1, 2, 3, 4, 5 ]
      list3 = ["a", "b", "c", "d"]

ถ้าต้องการจะสร้าง List เปล่า (ไม่มีข้อมูลอยู่ข้างใน) ทำได้โดย

      list = []

สามารถไปดู Functions & Methods ของ List ได้ที่

https://docs.google.com/spreadsheets/d/1Dtu9S-cUN_UuVOZ_rklgkZ62C0CHNsOFNat3pZyT3e8/edit?usp=sharing




วันศุกร์ที่ 21 สิงหาคม พ.ศ. 2558

Loop(while-for) in Python

โครงสร้างการทำงานของ while loop
   เหมาะสำหรับใช้กับการทำงานซ้ำแบบจำนวนวนรอบไม่แน่นอน ได้แก่ การคำนวณค่าผลลัพธ์ จากการสร้างสมการต่าง ๆ ที่ต้องการวนซ้ำจนกระทั่งครบตามจำนวนที่เงื่อนไขกำหนด ซึ่งมีใช้ได้ยืดหยุ่นกว่า for loop

รูปแบบคำสั่ง

                                   while <เงื่อนไข> :
                                                 <คำสั่ง>

การทำงาน
   ในส่วนของ เงื่อนไข จะเปรียบเทียบนิพจน์ทางตรรกศาสตร์ และได้ผลลัพท์เป็นจริง หรือเท็จ ถ้าผลลัพท์ที่ได้เป็นจริง จะทำงานตาม คำสั่ง ด้านล่างไปเรื่อยๆ จนกว่า เงื่อนไขจะเป็นเท็จถึงจะเลิกทำ
 
ตัวอย่าง

โปรแกรมบวกตัวเลขไปเรื่อยๆ



ผลการทดลอง




โครงสร้างการทำงานของ for loop
   เหมาะกับการทำงานแบบวนที่มีจุดสิ้นสุดแน่นอน เช่น การทำอะไรบางอย่างกับข้อมูลทั้งหมดใน list

รูปแบบคำสั่ง

                                   for i in range(n) :
                                             <คำสั่ง>

การทำงาน
   จะพิจารณาก่อนว่า i มีค่าน้อยกว่า 1-n หรือไม่ ถ้าไม่ใช่จะข้ามการทำงานใน loop ไป แต่ถ้่ใช่จำทำงานโดยคำนวนรอบจากการนับ i ที่เพิ่มขึ้นทีละ 1 ถึง n

ตัวอย่าง

โปรแกรมบวกค่าเรียงลำดับจนถึง n



ทดลอง



Condition(if-else) in Python

โครงสร้างการทำงานของ if else statement

รูปแบบคำสั่ง

                                   if <เงื่อนไข> :
                                            <คำสั่ง1>\
                                   elif <เงื่อนไข>
                                            <คำสั่ง2>\
                                   else :
                                            <คำสั่ง3>

การทำงาน

   if  คือ เริ่มต้นคำสั่งการทำงานแบบมีเงื่อนไข ถ้าในเงื่อนไขเป็นจริง จะทำงาน คำสั่ง1 ถ้าเท็จจะข้ามไปบรรทัดต่อไป
   elif (else if) คือ การเพิ่มเงื่อนไขที่จะให้ทำงานอีกเงื่อนไขหนึ่ง สามารถเพิ่มได้หลายเงื่อนไข ถ้าในเงื่อนไขเป็นจริง จะทำงาน คำสั่ง2 ถ้าเท็จจะข้ามไปบรรทัดต่อไป
   else ถ้าในการเริ่มเรียกใช้ if แล้ว ไม่เข้าเงื่อนไขใดๆเลย จะทำ คำสั่ง3

ตัวอย่าง


โปรแกรมคิดเกรด



ทดลองโค๊ด





วันพุธที่ 19 สิงหาคม พ.ศ. 2558

Function in Python

การสร้างฟังก์ชัน

                การสร้างฟังก์ชันด้วยตนเอง สามารถเขียนด้วยคำขึ้นต้นว่า def และตามด้วยชื่อฟังก์ชัน ตามที่ต้องการให้ทำหน้าที่อะไร โดยชื่อจะต้องไม่ซ้ำกับคำสงวน ควรสื่อความหมายให้ตรงกับหน้าที่ของฟังก์ชัน จากนั้นให้ระบุชื่อตัวแปรสำหรับต้องการให้เป็นอาร์กิวเมนต์ ซึ่งอยู่ภายในวงเล็บ ตัวแปรอาจมีมากกว่า 1 ตัวแปรก็ได้ มีรูปแบบ หรือส่วนประกอบ ดังนี้

1.  def  functionName(arguments): 
    - def                      เป็นคำสำคัญสำหรับการสร้างฟังก์ชัน
    functionName    เป็นชื่อของฟังก์ชัน
    - arguments           คือ ตัวแปรหรือข้อมูลที่จะรับเข้ามาเพื่อนำไปประมวลผลภายในฟังก์ชัน อาร์กิวเมนต์ ต้องอยู่ภายในวงเล็บเสมอ ด้านหลังเครื่องหมายวงเล็บปิดจะ ต้องมีเครื่องหมาย : เพื่อบอกว่า สิ้นสุดบล็อกคำสั่งของการกำหนดชื่อและ อาร์กิวเมนต์ และเมื่อกดปุ่ม enter จะได้จัดย่อหน้าได้ถูกต้อง

2. “function document String”
   เป็นการสร้างคำอธิบายบอกสารสนเทศของฟังก์ชันนั้น  คำอธิบายฟังก์ชันอาจไม่เขียนบันทึกไว้ก็ได้  แต่เป็นการไม่เหมาะสม

3. function_suite
   คือ ส่วนคำสั่งหรือเงื่อนไขต่าง ๆ ของฟังก์ชันที่ต้องการให้ทำงาน หรือต้องการให้ประมวลผล กับอาร์กิวเมนต์ที่ส่งเข้ามา

4. return [expression]
   คือ การส่งค่าผลลัพธ์ใด ๆ ที่เกิดจากการประมวลผลภายในฟังก์ชัน การส่งค่ากลับจัดเป็นประเภททางเลือก บางฟังก์ชันอาจจะสั่งให้ทำงานเสร็จสิ้นภายในฟังก์ชัน นั้น ๆ ก็ได้

ตัวอย่างการสร้างฟังก์ชั่น 




                                   บรรทัดที่ 1 ด้วยการประกาศชื่อฟังก์ชัน และมีอาร์กิวเมนต์เป็นตัวแปร 2 ตัวแปร ได้แก่ a และ b                 
                          บรรทัดที่ 2 เป็นคำอธิบายถึงหน้าที่ของฟังก์ชันนี้
                          บรรทัดที่ 3 เป็นคำสั่งส่งค่ากลับ โดยค่าที่ส่งไป คือ ผลคูณเลขยกกำลังที่รับเข้ามาจากตัวแปร a และ b

ทดลองเรียกใช้ฟังก์ชั่น

Output ที่ได้

ขอบคุณข้อมูลจาก https://sites.google.com/site/dotpython/bth-thi-6/6-2






Variable in Python

การประกาศตัวแปร


   ตัวแปร (variable) เป็นการกำหนดชนิดข้อมูลของตัวแปร  เพื่อนำไปใช้ในการเขียนโปรแกรม  โดยที่โปรแกรมภาษาไพธอนไปจองพื้นที่ในหน่วยความจำ เพื่อใช้เก็บข้อมูลชนิดต่าง ๆ แล้วแต่ชนิดของตัวแปรที่ประกาศเอาไว้  อาจเป็นชนิดตัวเลข ตัวอักขระ หรือสายอักขระ ข้อมูลประเภทเหล่านี้จะถูกนำไปอ้างถึงเมื่อเขียนคำสั่งไปอ้างอิง ภาษาไพธอนมีการประกาศตัวแปรไม่เหมือนเหมือนภาษาซี หรือภาษาปาสกาล ดังนี้


จากตารางแสดงการเปรียบเทียบการประกาศตัวแปรของภาษาต่าง ๆ เปรียบเทียบกับภาษาไพธอน  ภาษาซีจะต้องบอกชนิดอย่างชัดเจน เช่น  int   i;  แต่ภาษาไพธอนสามารถกำหนดค่าให้กับตัวแปรนั้น ๆ ได้เลย ตัวแปรของภาษาไพธอนจะเรียนรู้จากข้อมูลที่เรากำหนดให้ เช่น i = 0  หมายถึง ตัวแปร i เก็บข้อมูลประเภทตัวเลขจำนวนเต็ม (integer) แต่การประกาศตัวแปรมีเงื่อนไขที่ต้องคำนึงตามกฏการตั้งชื่อตัวแปรของภาษาไพธอน มีดังต่อไปนี้

1. ต้องขึ้นต้นด้วยตัวอักษร ห้ามใช้ตัวเลขหรือสัญลักษณ์ใด ๆ

2. ห้ามมีช่องว่าง หรือเว้นวรรค

3. ห้ามใช้เครื่องหมายต่อไปนี้ในการตั้งชื่อตัวแปร !,@, #, $, %, ^, &, *, (, ), -, =, \, |, +, ~

4. ห้ามตั้งชื่อตัวแปรซ้ำกับคำสงวน

5. ควรตั้งชื่อตัวแปรที่สื่อความหมายให้ชัดเจน เพื่อผู้อื่นตีความหมายได้เข้าใจ แต่ถ้ามีความยาวมากให้ย่อ

เช่น student_name ควรใช้ st_name เป็นต้น

6. ตัวแปรที่มีตัวพิมพ์ใหญ่และตัวพิมพ์เล็กผสมกันจะมีความหมายต่างกับตัวพิมพ์เล็กเพียงอย่างเดียว เช่น St_Id  แตกต่างจากตัวแปร st_id เป็นต้น

ขอบคุณข้อมูลจาก https://sites.google.com/site/dotpython/installation/variable

Introduction to Python

      Python เป็นภาษา Dynamic Object-Oriented Programming ที่ถูกพัฒนาขึ้นโดย Guido von Rossum ในปี ค.ศ. 1990 ได้ออกแบบมาเพื่อให้ทำงานได้กับ Web Application และปัจจุบันถูกดูแลโดย Python Software Foundation (PSF) โดย Version ล่าสุดตอนนี้คือ Python 3.1 หรือเรียกอีกอย่างว่า Python 3000 หรือ Py3k  รายละเอียดเพิ่มเติมสามารถที่จะดูได้ที่ Official Site ที่ http://www.python.org

      สิ่งที่ดึงดูดสำหรับ Python ก็คือมันเป็นทั้ง Cross Platform กล่าวคือ สามารถที่จะเอาไปทำงานบน Operating System ได้หลากหลาย ไม่ว่าจะเป็น MS Windows, Linux, หรือ OS/X เป็นต้น โดยที่มีอิสระในการแก้ไข Library ต่างๆ ที่ Python และมี Open Source License คือ การนำ Software ที่พัฒนาขึ้นจาก Python ไปทำประโยชน์ทางธุรกิจได้อย่างเต็มที่ โดยไม่เสียเงิน             
      นอกจากนี้ตัวโครงสร้างและ Syntax ของภาษาค่อนข้างอ่านง่าย เข้าใจง่าย และมี Object ด้าน Data Structure รองรับอยู่หลายแบบ


จะขอยกตัวอย่างให้เห็นภาพดังนี้

ตัวอย่างที่ 1 โปรแกรม “Hello world !”


สำหรับ Java
public class
{
   public static void main(String[]args)
   {
         System.out.println("Hello, world!");
   }
}


สำหรับ Python

print "Hello, world!"


ตัวอย่างที่ 2 การประกาศตัวแปรและลักษณะการใช้ Conditional Statement

สำหรับ Java
int myCounter = 0;
String myString=String.valueOf(myCounter);
if (myString.equals(?0?))


สำหรับ Python
myCounter = 0
myString = str(myCounter)
if myString == ?0?:


    ใน Java และ C/C++ การประกาศตัวแปรจะต้องระบุชนิดของตัวแปรอย่างชัดเจน แต่ใน Python นั้น การใช้งานตัวแปรต่างๆ ไม่จำเป็นต้องมีการประกาศและกำหนดชนิดของตัวแปรก่อน นอกจากนั้นการเปรียบเทียบค่าของตัวแปรก็ใช้ operator แทนการใช้ method ทำให้เขียนอ่านเข้าใจง่ายกว่า

ข้อเสียของภาษา Python

1. Python เป็น Scripting Language ซึ่งทำงานโดยมี Interpreter แปลงคำสั่งในแต่ละบรรทัดของโปรแกรมให้เป็น machine code ในระหว่างที่โปรแกรมทำงาน โดยไม่มีการ compile ตัว source code ทั้งหมดเป็น machine code ก่อนเริ่มการทำงานของโปรแกรม ดังนั้นสิ่งที่จะพบแน่ๆ คือ มันจะทำงานช้ากว่า C/C++ (รวมถึง Java ด้วย )

2. ที่เป็นผลพวงตามมาจากข้อแรกคือ มันไม่มีการตรวจสอบความถูกต้องของการเรียกใช้ตัวแปรทั้งหมดของโปรแกรมก่อนเริ่มทำงาน ดังนั้นแล้ว ถ้าผู้เขียนขาดความระมัดระวังในระหว่างพัฒนาโปรแกรม จะทำให้โอกาสเกิด Runtime Error จากการเรียกใช้ตัวแปรที่ไม่ได้ประกาศหรือใช้งานตัวแปรผิดประเภทได้ง่าย (สาเหตุส่วนใหญ่ของกรณีพวกนี้เท่าที่ผมพบก็คือ พิมพ์ชื่อตัวแปรผิด) ซึ่งความผิดพลาดพวกนี้จะไม่ถูกค้นพบจนกว่าโปรแกรมจะถูกสั่งให้ทำงานจนถึงบรรทัดที่มีปัญหานั้น


ขอบคุณข้อมูลจาก http://www.ayarafun.com/2009/08/basic-python-programming-part1/

***<textarea cols="105" rows="10"></textarea>