วันอังคารที่ 25 ธันวาคม พ.ศ. 2555

Control Structure

            

                                   Control Structure

                                           หลักการเขียนโปรแกรมคอมพิวเตอร์

                    โครงสร้างควบคุม (Control structure)

โปรแกรมทุกโปรแกรมสามารถเขียนขึ้นได้โดยใช้โครงสร้างมาทำการควบคุมเพียง 3 ชนิดเท่านั้น คือ

             โครงสร้างตามลำดับ (Sequence structure)
             โครงสร้างทางเลือก (Selection structure)
             โครงสร้างการทำซ้ำ (Repetition structure)

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

                        

       โครงสร้างลักษณะนี้เป็นโครงสร้างพื้นฐานของผังงาน และเป็นลักษณะขั้นตอนการทำงานที่พบมากที่สุด คือทำงานทีละขั้นตอนลำดับ

        ตัวอย่างผังงานที่มีโครงสร้างแบบเป็นลำดับ



                              

               จากตัวอย่างผังงานการคำนวณดอกเบี้ย สามารถอธิบายเป็นขั้นตอนได้ดังนี้

                1.เริ่มต้นการทำงาน

                2.รับค่าเงินต้น และอัตราดอกเบี้ยเพื่อใช้ในการคำนวณหาดอกเบี้ย

                3.คำนวณหาดอกเบี้ยโดยใช้สมการต่อไปนี้

                        ดอกเบี้ย = เงินต้น * อัตราดอกเบี้ย

                4.แสดงค่าของดอกเบี้ยซึ่งคำนวณได้

                5.จบการทำงาน


   โครงสร้างแบบมีตัวเลือก (Selection Structure)



               


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




   ตัวอย่างผังงานที่มีโครงสร้างแบบมีการเลือก
        ผังงานการคำนวณดอกเบี้ยซึ่งมีอัตราดอกเบี้ย 2 อัตรา คือถ้าเงินต้นน้อยกว่า 1 ล้านบาท จะคิดดอกเบี้ยด้วยอัตราร้อยละ 4 แต่ถ้ามีเงินต้นมากกว่า 1 ล้านบาท จะคิดดอกเบี้ยด้วยอัตราร้อยละ 5

        จากผังงานสามารถอธิบายเป็นขั้นตอนได้ดังนี้
                1.เริ่มต้นการทำงาน

                2.รับค่าเงินต้น

                3.พิจารณาเงินต้นที่รับค่าเข้ามามากกว่า 1 ล้านบาทหรือไม่
-                        - ถ้าใช่ ให้คำนวณดอกเบี้ยในอัตราร้อยละ 5
                        ดังนั้น ดอกเบี้ย = เงินต้น * 0.05
-                        - ถ้าไม่ใช่ ให้คำนวณดอกเบี้ยในอัตราร้อยละ 5
                        ดังนั้น ดอกเบี้ย = เงินต้น * 0.04

                4.แสดงค่าดอกเบี้ยที่คำนวณได้

                5.จบการทำงาน

     โครงสร้างแบบทำซ้ำ (Iteration Structure)


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

        ตัวอย่างผังงานที่มีโครงสร้างแบบทำซ้ำ
        ผังงานการคำนวณยอดบัญชี (เงินต้นทบดอกเบี้ย)





       จากตัวอย่างผังงานสามารถอธิบายเป็นขั้นตอนได้ดังนี้

                1.เริ่มต้นการทำงาน

                2.รับค่าเงินต้น อัตราดอกเบี้ย และจำนวนปีที่ฝากเงิน ซึ่งเป็นข้อมูลที่จำเป็นในการคำนวณยอดบัญชี (เงินต้นทบดอกเบี้ยตามจำนวนปี ที่ฝากเงิน)

                3.กำหนดให้ n มีค่าเท่ากับ 0 ในผังงานนี้ n คือจำนวนรอบของการคิดดอกเบี้ย

                4.กำหนดยอดบัญชีเริ่มต้นให้เท่ากับเงินต้นที่รับค่าเข้ามา

                5.เปรียบเทียบว่า n น้อยกว่าจำนวนปีที่ฝากเงินหรือไม่

                        5.1 ถ้าใช่ให้ทำตามขั้นตอนต่อไปนี้
                                - คำนวณยอดบัญชีใหม่โดยทบดอกเบี้ยเพิ่มเข้าไปจากยอดบัญชีเดิม
                        โดยใช้สมการต่อไปนี้
                               ยอดบัญชี = ยอดบัญชี + (ยอดบัญชี * อัตราดอกเบี้ย)

                               - เพิ่มค่า n ไปอีก 1
                               กลับไปเปรียบเทียบเงื่อนไขในข้อ 5

                        5.2 ถ้าไม่ใช่ แสดงว่าคิดดอกเบี้ยทบต้นครบตามจำนวนปีที่ฝากเงินซึ่งรับค่าเข้ามาแล้วให้ทำตามขั้นตอนต่อไปนี้
                                - แสดงค่ายอดบัญชีสุดท้ายที่คำนวณได้
                                - จบการทำงาน











ไวยากรณ์ภาษาจาวา


               ไวยากรณ์ภาษาจาวา 




                         1.การประกาศ class
                         2.การประกาศ attributes
                         3.การประกาศ methods
                         4.การประกาศ object
                         5.การเรียกใช้ methods
                         6.การเรียกใช้ attributes


1.การประกาศ Class
       คลาสเปรียบเสมือนแม่พิมพ์ วัตถุเป็นผลิตผลที่เกิดจากแม่พิมพ์ ดังนั้น การที่จะสร้างวัตถุได้ จึงจำเป็นต้องอาศัยแม่พิมพ์หรือคลาสนี้ สำหรับการประกาศคลาสเริ่มต้นด้วยคำหลัก Class ตามด้วยชื่อของClass กำหนดขอบเขตด้วย {} และจบด้วยเครื่องหมาย เซมิโคลอน (;)
รูปแบบคำสั่ง


class ชื่อคลาส
{
// คำสั่ง
// คำสั่ง
}


ตัวอย่าง
public class person
{
.
.
}



2.การประกาศ attributes (คุณลักษณะ)
       คุณลักษณะของออปเจ็ค คือตัวแปรหรือค่าคงที่ซึ่งประกาศภายในออปเจ็ค โดยมีตัวอย่างการประกาศคือ

รูปแบบ
[modifier] dataType attributeName;

- Modifier คือ คีย์เวิร์ดของภาษาจาวาที่อธิบายคุณสมบัติต่างๆ ของตัวแปรหรือค่าคงที่
- dataType คือ ชนิดข้อมูลซึ่งอาจเป็นชนิดข้อมูลพื้นฐานหรือชนิดคลาส
- attributeName คือ ชื่อของคุณลักษณะ

ตัวอย่าง
public class person
{
private String id;
private String name;
public int number ;
}


3.การประกาศ methods
ภาษาจาวากำหนดรูปแบบของการประกาศเมธอดที่อยู่ในคลาสไว้ดังนี้

รูปแบบ

[modifier] return_type methodName ([argument]) {
[method body]
}

- Modifier คือ คีย์เวิร์ด ของภาษาจาวาที่ใช้ในการอธิบายระดับการเข้าถึง (Access modifier)
- Return_type คือ ชนิดข้อมูลของค่าที่จะมีการส่งกลับ
- methodName คือ ชื่อของเมธอด
- Arguments คือ ตัวแปรที่ใช้ในการรับข้อมูลที่ออปเจ็คส่งมาให้
- Method body คือ คำสั่งต่างๆ ของภาษาจาวาที่อยู่ในเมธอด

ตัวอย่าง
public class person
{
private String id;
private String name;
public int number ;
public void setData(String aId,String aName)
{
id = aId;
name = aName;
}
}


4.การประกาศ Object
       คำสั่งที่ใช้ในการสร้างออปเจ็คจะมีรูปแบบ ดังนี้

รูปแบบ
objectName = new ClassName ([arguments]);

- objectName  คือชื่อของออปเจ็ค
- new             คือคีย์เวิร์ดของภาษาจาวาเพื่อใช้ในการสร้างออปเจ็ค
- ClassName   คือชื่อของคลาส
- Arguments   คือค่าที่ต้องการส่งผ่านในการเรียก Contructor

ตัวอย่าง
s1 = new Student();


5.การเรียกใช้ methods
       แบบที่ 1 : เรียกใช้ Constructor และใช้พื้นที่ในหน่วยความจำ
class hello1 {
  public static void main(String args[]) {
    TAirPlane  abc = new TAirPlane();
  }
}

       แบบที่ 2 : แยกประกาศใช้คลาสและใช้พื้นที่ในหน่วยความจำ
class hello2 {
  public static void main(String args[]) {
    TAirPlane  abc;
    abc = new TAirPlane();
  }
}

       แบบที่ 3 : ใช้พื้นที่ในหน่วยความจำ และเป็นการเรียกใช้ constructor ซึ่ง class นี้ ต้องอยู่ใน Directory เดียวกัน
class hello3 {
  public static void main(String args[]) {
    new TAirPlane();
  }
}

       แบบที่ 4 : เรียกใช้ method Fly() แต่จะเรียก constructor มาก่อน ถ้า class นั้นมี constructor
class hello4 {
  public static void main(String args[]) {
    new TAirPlane().Fly();
  }
}

       แบบที่ 5 : เมื่อสร้างวัตถุขึ้นมา สามารถเรียกใช้ method อื่น โดย constructor ทำงานเฉพาะครั้งแรก
class hello5 {
  public static void main(String args[]) {
    TAirPlane  abc = new TAirPlane();
    abc.Fly();
    abc.Land();
  }
}

       แบบที่ 6 : แสดงตัวอย่างการเรียก main และต้องส่ง Array of String เข้าไป
class hello6 {
  public static void main(String args[]) {
    TAirPlane  abc = new TAirPlane();
    String a[] = {};   // new String[0];
    abc.main(a);
  }
}

       แบบที่ 7 : เรียกใช้ method ภายในคลาสเดียวกัน
class hello7 {
  public static void main(String args[]) {
    minihello();
  }
  static void minihello()   {
    System.out.println("result of mini hello");
  }
}

       แบบที่ 8 : เรียกใช้ method แบบอ้างชื่อคลาส ในคลาสเดียวกัน
class hello8 {
  public static void main(String args[]) {
    hello8 x = new hello8();
    x.minihello();
  }
  static void minihello()   {
    System.out.println("result of mini hello");
  }
}

       แบบที่ 9 : เรียกใช้ method แบบไม่กำหนด method เป็น Static พร้อมรับ และคืนค่า
:: ผลลัพธ์คือ 8
class hello9 {
  public static void main(String args[]) {
    hello9 xx = new hello9();
    System.out.println(xx.oho(4));
  }
  int oho(int x) { return (x * 2); }
}

       แบบที่ 10 : เรียกใช้ method ภายในคลาสเดียวกัน โดย method สามารถรับ และส่งค่าได้
:: เรียก method ใน static ตัว method ที่ถูกเรียกต้องเป็น static ด้วย
class hello10 {
  public static void main(String args[]) {
    System.out.println(oho(5));
  }
  static int oho(int x)   {
    x = x * 2;
    return x;
  }
}

       แบบที่ 11 : ใช้ extends เพื่อการสืบทอด (Inheritance)
:: Constructor ของ TAirPlane จะไม่ถูกเรียกมาทำงาน
class hello11 extends TAirPlane {
  public static void main(String args[]) {
    Fly();
    Land();
  }
}

       แบบที่ 12 : ใช้ extends เพื่อการสืบทอด (Inheritance) แบบผ่าน constructor
:: Constructor ของ TAirPlane จะถูกเรียกมาทำงาน
class hello12 extends TAirPlane {
  hello12() {
    Fly();
    Land();
  }
  public static void main(String args[]) {
    new hello12();
  }
}





6.การเรียกใช้ attributes
      

      การเรียกใช้แบบที่ 1
syntax:ClassName object = new ClassName().attributeName;
example:Person bamboo = new Person().name; 

       การเรียกใช้แบบที่ 2
syntax:ClassName object = new ClassName();
object.attributeName;
example:Person bamboo = new Person();
bamboo.name = "bamboolabcode";




คำศัพท์ Object- Oriented Programming

            

                คำศัพท์ Object- Oriented Programming


1. Abstraction

 Classification Abstraction เป็น กระบวนการที่ใช้แยกประเภทวัตถุต่าง ๆ ที่อยู่ในกรอบความคิด เพื่อให้ความคิดรวบยอดแก่วัตถุเหล่านั้น จนกระทั่งได้ Class พื้นฐานตามต้องการ
2.Aggregation Abstraction คือ กระบวนการที่นำเอา Class พื้นฐาน มารวมกัน หรือ ประกอบกัน เพื่อให้เกิด class ที่ใหญ่ขึ้น (แต่ยังไม่หมด)
3. Generalization Abstraction คือ กระบวนการในการนำ class ที่มีลักษณะเหมือนกันหรือคล้ายกันหรือมีสมบัติอย่างใดอย่างหนึ่งร่วมกัน มาจัดหมวดหมู่ เป็น class เดียวกัน ในทำนองกลับกัน ถ้ามี class 1 class แล้วจำแนกออก เป็นClass ย่อย ๆ เราเรียกวิธีการนี้ว่า Specialization
4.Association Abstraction
คือ กระบวนการในการสร้างความสัมพันธ์ ระหว่าง class ต่าง ๆ ใน Problem domain ที่เราสนใจ โดยเป็นการอธิบายความสัมพันธ์ ของ class ในเชิงกิจกรรม
Abstraction คือ กระบวนการการให้ความคิดรวบยอดกับวัตถุใด ๆ เพื่อสร้าง class ซึ่งแบ่งได้เป็น 4 กระบวนการ ดังต่อไปนี้
                                                        


  
 2. Encapsulation 

  คือ การรวม data และ method ทั้งหลายที่เกี่ยวข้องกัน และทำงานร่วมกันเอาไว้ใน object หนึ่ง  นอกจากนี้แล้วยังมีการซ่อนรายละเอียดของการทำงานของ methodต่างๆใน object เอาไว้ และไม่ให้ object อื่นๆสามารถที่จะเข้าไปแก้ไข data ได้โดยตรง
                                                 
3.Modularity

การออกแบบโปรแกรมที่ประกอบไปด้วยโปรแกรมย่อย ซึ่งเป็นส่วนประกอยย่อยๆ หลายๆ ส่วน นำมาประติดประต่อเข้าด้วยกัน 


                                                        


4.Hierarchy

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

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

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




                                  



5.Class

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

                                           

6. Object

   ก่อนที่เราจะเข้ามาดู ความหมายของ Object ให้เราลองมองดู สิ่งต่างๆที่อยู่ รอบๆ ตัวเรา อย่างเช่น สุนัข , คอมพิวเตอร์ , แม่ จะสังเกตุเห็นว่าทุกๆสิ่งจะประกอบไปด้วย 2 ส่วนคือ
ส่วนของข้อมูล เช่น สุนัข จะมีข้อมูลของ ชื่อสุนัข (ไข่ตุ๋น) , เพศสุนัข (ผู้) หรือ พันธ์สุนัข (โกลเด็น) อีกตัวอย่างนึง เคลื่องคอมพิวเตอร์ จะมีข้อมูลของ ชนิดของเครื่อง (โน้ตบุค) , ยี่ห้อ (lenovo) , รุ่น (ThinkPad T400) ลองพิจารณาซิครับว่าของทุกๆชิ้น จะต้องมีข้อมูล
ส่วนพฤติกรรม เช่น สุนัข จะมีพฤติกรรม เห่าได้ , กินข้าวได้ , วิ่งได้ หรือแม้นแต่เครื่องคอมพิวเตอร์ ของเรา จะมีพฤติกรรม สามารถ เล่นเกมร์ได้ , วาดรูปได้ , เขียนโปรแกรมได้ ของทุกชิ้นต้องมี พฤติกรรม