บทที่2

ความหมายของอัลกอริทึม

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

รูปแบบการเขียนอัลกอริทึม

1.ลักษณะการบรรยาย (Narrative Description) ตัวอย่างโจทย์ ให้เขียนอัลกอริธึมเพื่ อหาคะแนนเฉลี่ยของการสอบทั้งหมด 5 วิชา โดยวัดผลจากคะแนน ถ้าคะแนน ต่ำกว่า 50 สอบไม่ผ่าน แต่ถ้าคะแนนมากกว่า 50 ขึ้นไป สอบผ่าน อัลกอริทึ่มแบบบรรยาย ใส่คะแนนสอบทั้ง 5 วิชา คอมพิวเตอร์คำนวนค่าเฉลี่ยโดยการบวกคะแนนทั้ง 5 วิชา แล้วหาร 5 ถ้าค่าเฉลี่ยต่ำกว่า 50 แสดงข้อความสอบไม่ผ่าน แต่ถ้าค่าเฉลี่ยสูงกว่า 50 แสดงข้อความสอบผ่าน 2.การเขียนผังงาน (Flowchart) คือ การใช้รูปภาพสัญลักษณ์ แทนขั้นตอนการเขียนโปรแกรม ประโยชน์ของผังงาน 1. ช่วยลำดับขั้นตอนการทำงานของโปรแกรม และสามารถนำไปเขียนโปรแกรมได้อย่างถูกต้อง 2. ช่วยในการตรวจสอบ และแก้ไขโปรแกรมได้ง่าย เมื่อเกิดข้อผิดพลาด 3. ช่วยให้การดัดแปลง แก้ไข ทำได้อย่างสะดวกและรวดเร็ว 4. ช่วยให้ผู้อื่นสามารถศึกษาการทำงานของโปรแกรมได้อย่างง่าย และรวดเร็ว มากขึ้น

เทคนิคการเขียนอัลกอริทึม

1. เรียงลำดับความสำคัญของงานที่จะทำ 
2. เขียนออกมาในลักษณะภาษาเขียนสามารถเข้าใจง่าย 
3. มีความละเอียดของโครงสร้างพอสมควร ตัวอย่างการเขียนอัลอกริทึม ในรูปคำสั่งเทียม คือ มีลักษณะเป็นการเขียนคำสั่งต่างๆ ที่ทำให้ผู้เขียนโปรแกรมสามารถเข้าใจ ง่าย ซึ่งคำสั่งที่ใช้จะเป็นคำพูดธรรมดา ไม่ยึดหลักไวยากรณ์ของภาษาคอมพิวเตอร์
 ตัวอย่างที่ 1 การหาผลรวมของตัวเลข N จำนวน Program : Sum รับค่าจำนวนตัวเลขทั้งหมดเก็บไว้ที่ตัวแปร N กำหนดให้ตัวแปรเก็บตัวนับเริ่มต้น I = 1 , เก็บผลรวมเริ่มต้น Sum = 0 Repeat รับค่าข้อมูลเก็บไว้ที่ X นำค่าข้อมูลที่อ่านได้บวกสะสมไว้ที่ตัวแปรเก็บผลรวม Sum เพิ่มค่าตัวนับ I ขึ้นอีก 1 Until เป็นเลขตัวสุดท้ายจริง ( I > N ) แสดงตัวแปรที่เก็บผลรวมสะสม Sum End Program ตัวอย่างที่ 2 หาค่าสูงสุด และ ต่ำสุดจากตัวเลขทั้งหมด N จำนวน Program : Max_Min รับค่าจำนวนตัวเลขทั้งหมดเก็บไว้ที่ตัวแปร N กำหนดให้ตัวแปรเก็บตัวนับเริ่มต้น I = 1 อ่านเลขตัวแรกเก็บไว้ที่ตัวแปร X กำหนดให้ตัวแปร X เป็นทั้งค่ามากที่สุดและน้อยที่สุด เก็บไว้ที่ตัวแปร Max และ Min Repeat อ่านเลขตัวถัดไป เก็บไว้ที่ X และเพิ่มค่าตัวนับ I อีก 1 If X > Max Then เปลี่ยนค่าใน Max ให้เก็บค่า X แทน Else If X < Min Then เปลี่ยนค่าใน Min ให้เก็บค่า X แทน End if End if ให้ค่า Max = Max , ค่า Min = Min Until I > n แสดง ตัวเลขในตัวแปร Max และ Min End Program

รูปแบบการเขียนโปรแกรมในภาษาจาวาพื้นฐานลักษณะโครงสร้างภาษาจาวาทั่วไป

ในบทนี้ คุณจะได้เรียนโครงสร้างพื้นฐานของภาษา Java และรูปแบบต่างๆ ในการใช้งานของภาษา เราจะมาเริ่มต้นกับโปรแกรมสุดคลาสสิค Hello World Program Hello word program Hello World Program เป็นโปรแกรมแรกที่โปรแกรมเมอร์ทุกคนจะได้เขียน มันเป็นโปรแกรมที่แสดงข้อความว่า "Hello World!" ออกทางหน้าจอคอมพิวเตอร์ของคุณ ถ้าคุณสร้างโปรเจ็คของคุณแล้ว ตอนนี้คัดลอกโปรแกรมข้างล่างไปรันได้เลยต่อไปลองเปลี่ยนข้อความเป็นข้อความใหม่ที่คุณต้องการ เพื่อดูผลลัพธ์ว่ามันน่าทึ่งแค่ไหน และจากตัวอย่างของโปรแกรมข้างบน มันมีส่วนประกอบที่สำคัญดังนี้ Package: เป็นกลุ่มของคลาสหรือไลบรารี่มาตรฐานของภาษา Java ที่มีฟังก์ชันต่างๆ ให้ใช้มากมาย ในตัวอย่างนั้นไม่มี เราจะพูดเกี่ยวกับเรื่องนี้ในภายหลัง Class: ในส่วนของการประกาศคลาส จะต้องประกาศคลาสให้ชื่อตรงกับไฟล์เสมอ นอกจาก Inner คลาสที่อยู่ในคลาสเดียวกัน โดยชื่อคลาสนั้นควรจะขึ้นต้นด้วยตัวใหญ่ และถ้ามีหลายคำให้ใช้ตัวพิมพ์ใหญ่แบ่ง ดังตัวอย่างด้านล่าง

การประกาศคลาส

รูปแบบ


ดังนี้ [modifier] class Class name { [class member] }
– Modifier คือคีย์เวิร์ด ของภาษาจาวาที่ใช้ในการอธิบายระดับการเข้าถึง (Access modifier)
– Class คือคีย์เวิร์ด ของภาษาจาวา เพื่อระบุว่าเป็นการประกาศคลาส
– Class name คือชื่อคลาส
– Class member คือเมธอดหรือคุณลักษณะ


กฎการระบุชื่อ (Identifier)

1. ตัวแรกของชื่อจะต้องขึ้นต้องด้วยตัวอักษรภาษาอังกฤษหรือเครื่องหมาย _ เท่านั้น
2. ตัวอักษรตั้งแต่ตัวที่ 2 สามารถเป็นตัวเลข หรือเครื่องหมาย_ก็ได้
3. จะต้องไม่มีการเว้นวรรคภายในชื่อ แต่สามารถใช้เครื่อง_คั่นได้
4. สามารถตั้งชื่อได้ยาวไม่จำกัด แต่จะใช้ตัวอักษรแค่ 31 ตัวแรกในการอ้างอิง
5. ชื่อที่ตั้งด้วยตัวอักษรพิมพ์ใหญ่และพิมพ์เล็ก จะถือว่าเป็นคนละตัวกัน
6. ห้ามตั้งชื่อซ้ำกับคำสงวนของภาษา C


การสร้างเอกสารในจาวา (Javadoc)

Javadoc คือ เครื่องมือที่สร้างเอกสารเป็น html คล้ายๆ กับการอ้างอิงที่ Java.sun.com
จากการคอมเมนต์แบบ Javadoc ในโค้ดใน Javadoc จะรู้จักรูปแบบการคอมเมนต์ด้วยสัญลักษณ์ /**
Java doc */Javadoc จะใช้อธิบายคลาส (Classes) อินเตอร์เฟส (Interfaces) คอนสตักเตอร์
(Constructor) คุณสมบัติ (Attribute หรือ Properties หรือ Variable)และเมธอด (Methods)ใน
การสร้างเอกสาร html โดยวางส่วนของ Javadoc ไว้ก่อนการระบุชื่อ เช่น


การคอมไพล์ Javadoc

การสร้างเอกสาร html จากคลิปส์สามารถสร้างได้โดย เลือก Project->Generate java doc..
อีคลิปส์สามารถคอมไพล์ Javadoc ตามรูปที่ระบุ Path ที่มี Javadoc.exe เลือก Path ปลายทาง (แต่ละเครื่องอาจไม่เหมือนกัน ขึ้นอยู่กับการติดตั้ง) อีคลิปส์ก็จะสร้างไฟล์ html ให้โดยอัตในมัติ


หลักสากลนิยมในการระบุชื่อ

หลักสากลนิยมในการระบุชื่อ

Class Names
กำหนดชื่อเป็นคำนาม,คำแรกและคำที่สองขึ้นต้นด้วยตัวพิมพ์ใหญ่ เช่น

                               public Class DogAndCat {
                                     / /  Class body
                                        
 }

เมื่อรวมแล้วคลาสดังกล่าวจะได้โครงสร้างคลาสดังนี้

                               package Openstandard .ch02 ;
                               public Class DogAndcat {
                               public int weight ;
                               public int LEG_NUMBER = 4 ;

                               public void canwalk ( ) {
                                      // Method body
                               }
}

ชนิดของข้อมูลในภาษาจาวา

ชนิดข้อมูลดั้งเดิม (Prrimitive data type)

ข้อมูลดั้งเดิมในภาษาจาวามีอยู่ 8 ประเภท ซึ่งเราสารถนำมาใช้งานได้
Integer Type คือ ข้อมูลชนิดเลขจำนวนเต็มโดยแบ่งออกเป็น Byte, Shot, lnt, Long ซึ่งชนิดเลขจำนวนเต็มแต่ละชนิดจะใช้หน่วยความจำที่แตกต่างกัน ฉะนั้น ขึ้นอยู่กับการนำไปใช้ประโยชน์ของโปรแกรมเมอร์ที่จะนำไปใช้ เช่น ใช้กับระบบปฎิบัติการชนิดต่างๆ




ข้อมูลคลาส(Class Type หรือ Reference Type) 

ในภาษาจาวานั้นคลาสประกอบไปด้วย ชนิดของคลาส, ชื่อของคลาส, ตัวแปรของคลาส และ methods ชนิดของคลาสนั้นอาจจะเป็น public หรือ private ถ้าเป็น Public class หมายถึงคลาสที่มองเห็นได้โดยคลาสที่อยู่ภายนอกหรือภายใน package แต่ถ้าเป็น Private class คลาสที่อยู่นอก package จะไม่สามารถเรียกใช้คลาสนี้ได้ คลาส Instructor จากโปรแกรมที่ 3 ข้างบนเป็นคลาสแบบ public ตัวแปรของคลาสนั้นก็แบ่งเป็นชนิดเหมือนกัน แบ่งได้สามชนิด ถ้าเป็นตัวแปรแบบ private ตัวแปรนั้นจะถูกมองเห็นภายในคลาสเท่านั้น ยกตัวอย่างเช่น method getClassSched() ของคลาส Scheduler ไม่สามารถอ้างถึงตัวแปร name ของคลาส Instructor ได้โดยตรงแต่ต้องเอาค่าของ name โดยผ่านการเรียก method getName() ของคลาสนั้น แต่ถ้าตัวแปร name ถูก declare ไว้เป็นแบบ public แล้วล่ะก็ Instructor จะสามารถอ้างถึง name ได้โดย


การใช้งานทางคณิตศาสตร์ในภาษาจาวา

นิพจน์ (Experssion)

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

ชนิดของตัวดำเนินงาน (Operator)

ตัวดำเนินการที่ใช้ในการกำหนดค่านั้นจะเป็นเครื่องหมาย = การทำงานของตัวดำเนินการนี้จะทำการนำค่าที่อยู่ทางด้านขวาของตัวดำเนินการไป เก็บไว้ในตัวแปรทางด้านซ้ายของตัวดำเนินการสิ่งที่อยู่ด้านขวาของตัวดำเนิน การนั้นอาจจะเป็นนิพจน์ทางคณิตศาสตร์ หรือจะเป็นตัวแปรก็ได้ รูปแบบ [ตัวแปร] = [นิพจน์] Simple Assignments (การกำหนดค่าแบบง่าย) Simple Assignments จะมีรูปแบบเหมือนกับรูปแบบด้านบน หรือเหมือนกับสมการทางคณิตศาสตร์ทั่วไป


ตัวอย่างที่ 2.17



ผลการรันโปรแกรมตัวอย่างที่ 2.17



ตัวดำเนินการเชิงเปรียบเทียบ (Relational Opeators)

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

ตัวดำเนินการทางตรรกะ (Logical Operators)

ตัวดำเนินการทางตรรกะ เป็นตัวดำเนินการเกี่ยวข้องกับนิพจน์ที่สามารถบอกค่าความจริงเป็นจริง(true) หรือเท็จ (false)ได้ หรือชนิดข้อมูลตรรกะ เช่น ตัวแปรประเภท boolean ผลลัพธ์ที่ได้จากการกระทำจะได้ค่าคงที่ตรรกะเป็น true หรือ false ตัวดำเนินการทางตรรกะได้แก่เครื่องหมาย !, &&, &, ||, |, ^ มีตัวอย่างการ

ตัวอย่างที่ 2.18





ตัวดำเนินการระดับบิต (Bitwise Operators)

คือกลุ่มของเครื่องหมายหรือสัญลักษณ์ที่ใช้ทำงานเหมือนกับฟังก์ชัน แต่แตกต่างกันตรงไวยากรณ์หรือความหมายในการใช้งาน ในภาษา Python นั้นสนับสนุนตัวดำเนินการประเภทต่างๆ สำหรับการเขียนโปรแกรม เช่น ตัวดำเนินการ + เป็นตัวดำเนินการทางคณิตศาสตร์ที่ใช้สำหรับการบวกตัวเลขเข้าด้วยกัน หรือตัวดำเนินการ > เป็นตัวดำเนินการเพื่อให้เปรียบเทียบค่าสองค่า




  การแปลงชนิดของข้อมูล

เมื่อเราเขียนโปรแกรมมักจะพบว่า ใช้ตัวดำเนินการกับตัวแปรของชนิดข้อมูลแตกต่างกัน เพื่ออำนวยความสะดวกในการเขียนโปรแกรมภาษา C จึงได้กำหนดกฎเกณฑ์ดังนี้ ถ้าค่าตัวแปร หรือค่าคงที่ต่างชนิดกัน ให้ทำการเปลี่ยนชนิดของข้อมูลที่มีขนาดเล็กให้เป็นชนิดของข้อมูลที่ใหญ่ขึ้น

การสร้างและใช้งานเมธธอด

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

การใช้งานเมธธอด

การใช้งานเมธธอดเป็นสิ่งสำคัญมาก แต่จะมีขั้นตอนที่แตกต่างจากการเขียนโปรแกรมแบบเดิม คือ จะต้องทำการสร้าง Object หรือ Instance ก่อนที่จะมีการเรียกใช้งานทั้งคุณสมบัติหรือเมธธอดต่างๆ ที่คลาสแต่ละคลาสสัมพันธ์กัน 

การส่งค่าไปยังเมธธอด

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


ขอบเขตของตัวแปร

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

 1.ตัวแปรแบบ Local
 2.ตัวแปรแบบ Public


ความคิดเห็น