วันอังคารที่ 21 มิถุนายน พ.ศ. 2554

สรุปบทที่ 1 Review


 บทที่ 1  ทบทวนการออกแบบโปรแกรม

Objective (จุดประสงค์)
1. บอกขั้นตอนการพัฒนาโปรแกรมได้
2. เข้าใจหลักการพื้นฐานด้านกรรมวิธีการออกแบบโปรแกรมในรูปแบบต่างๆ
3. บอกความแตกต่างระหว่างการเขียนโปรแกรมแบบ Procedural (วิธีการดำเนินการ) และ Object-Oriented (มุ่งเน้น วัตถุ) ได้
4. ทราบวัตถุประสงค์ของเทคนิคการออกแบบโปรแกรมเชิงโครงสร้างฆ
5. บอกความหมายของอัลกอลิทึ่ม และซูโดโค้ดได้
6. เข้าใจหลักปฏิบัติการพื้นฐาน 6 ประการของคอมพิวเตอร์ เพื่อนำไปสู่การเขียนซูโดโค้ดได้อย่างถูกหลักวิธี


Contents (เนื้อหา)
- Steps in Program Development (ขั้นตอนการพัฒนาโปรแกรม)
- Program Design Methodology (วิธีการออกแบบโปรแกรม)
- การเขียนโปรแกรมแบบ Procedural (วิธีการดำเนินการ) และ Object-Oriented (มุ่งเน้นวัตถุ)
- Objective of Structured Program Design Techniques (วัตถุประสงค์ของการใช้เทคนิคการออกแบบ
       
โปรแกรมโครงสร้าง)
- Introduction to Algorithm and Pseudo Code (ความรู้เบื้องต้นเกี่ยวกับอัลกอริทึมและซูโดโค้ด)
- Six Basic Computer Operations (การใช้งานคอมพิวเตอร์ขั้นพื้นฐาน 6 ประการ)
- The Three Basic Control Structures (การควบคุมโครงสร้างพื้นฐาน 3 วิธี)



Steps in Progarm Development (ขั้นตอนการพัฒนาโปรแกรม)
Define the Problem (การกำหนดปัญหา) ประกอบด้วย
      - Inputs (การนำเข้า)
      - Outputs (การแสดงผล)
      - Processing (การประมวลผล)

Outline the Solution (การร่างรายละเอียดแนวทางการแก้ไขปัญหา)
       - แตกงานให้เป็นชิ้นงานย่อยๆ หรือเป็นขั้นตอน (หลังจากกำหนดปัญหา)
    - การร่างรายละเอียดแนวทางการแก้ไขปัญหาต่างๆ ประกอบด้วย
            * ขั้นตอนการประมวลผลส่วนหลักๆ
            * ส่วนหลักของงานที่มีการแตกย่อย (Subtask)
            * ส่วนความสัมพันธ์กับผู้ใช้งาน
            * โครงสร้างที่ใช้ควบคุม เช่น การวนซ้ำ หรือการกำหนดทางเลือก
            * ตัวแปรและโครงสร้างของเรคอร์ด
            * ตรรกะโปรแกรม (Logic)

Develop and Algorithm    การพัฒนาอัลกอริทึม
- ขั้นตอนที่ใช้อธิบายลำดับการทำงาน และหากได้ปฏิบัติตามขั้นตอนของอัลกอริทึมที่ออกมา
- ซูโดโค้ด (Pseudo Code) เป็นตัวแทนอัลกอริทึมเพื่อใช้แก้ไขปัญหาทางคอมพิวเตอร์

Test the Algorithm for Correctness (การตรวจสอบความถูกต้องของอัลกอริทึม)
- เป็นขั้นตอนที่สำคัญที่สุด
- ตรวจสอบทั้งตรรกะของอัลกอริทึม ตัวแปรหลัก และการนำข้อมูลทดสอบเข้าไปประมวลผลในแต่ละขั้นตอน
Programming   การเขียนโปรแกรม
   - นำอังกอริทึมที่ได้รับการออกแบบ อย่างสมบูรณ์ มาพัฒนาโปรแกรม(ชุดคำสั่ง)
   - เลือกใช้ภาษาระดับสูง(High Language) เพื่อเขียนโปรแกรม เช่น C,PASCAL เป็นต้น

Testing
- นำข้อมูลเข้าไปเพื่อทดสอบบนเครื่องกับโปรแกรมที่เขียนขึ้นว่าถูต้องหรือไม่
- การตรวจสอบ
     * รูปแบบชุดคำสั่ง
     * โปรแกรม
- ข้อมูลทดสอบต้องมีความแต่ต่างกันออกไปตามแต่ลพสถานการณ์

คุณสมบัติของอัลกอริทึมที่ดีใครการแก้ไขปัญหา

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

คอมพิวเตอร์สามารถคำนวณได้
 - สัญลักษณ์ที่ใช้ในการคำนวณ
       * สัญลักษณ์ + ใช้แทนการบวก (add)
       * สัญลักษณ์  -  ใช้แทนการลบ (subtract)
       * สัญลักษณ์ *  ใช้แทนการคูณ (multiply)
       * สัญลักษณ์ /  ใช้แทนการหาร (divide)
       * สัญลักษณ์ ( ) ใช้แทนวงเล็บ เปิด ปิด
- คำกริยาที่ใช้ในการคำนวณ ใช้คำว่า pompute และ calculate

คอมพิวเตอร์สามารถกำหนดตัวแปรได้
ทำได้ 3 รูปแบบ คือ
 1. ใช้คำกริยา initialize หรื่อคำว่า set เพื่อกำหนดค่าเริ่มต้นให้ตัวแปร
 2. ใช้สัญลักษณ์เครื่องหมาย = หรือเครื่องหมาย < เพื่อกำหนดค่าให้กับตัวแปร
 3. ใช้คำกริยา store  ในการจัดเก็บข้อมูลให้กับตัวแปร


คำสั่งวนลูป

ความหมายของลูป(loop)
ลูป(loop)ในที่นี้มีความหมายว่า การวนซ้ำซึ่งการวนซ้ำในทางภาษาคอมพิวเตอร์ คือ การทำคำสั่งหรือชุดคำสั่งนั้นซ้ำกันหลายๆครั้ง
รูปแบบของลูป
ในการตรวจสอบว่าจะให้ลูปนั้นจบการทำงานเมื่อไรนั้น จะมีรูปแบบของการตรวจสอบเงือนไขอยู่ 2 แบบ
1.Pretest Loop ลูปประเภทนี้จะทำการตรวจสอบเงื่อนไขก่อนว่าเป็นจริง หรือเป็นเท็จถ้าเป็นจริงก็ให้เข้าไปทำคำสั่งหรือชุดคำส่งต่อไป และเมื่อทำคำสั่งหรือชุดคำสั่งเสร็จแล้วก็จะกลับมาทำการตรวจสอบเงื่อนไขอีกครั้ง แลดะจะทำเช่นนี้ไปเรื่อยๆจนกว่าเงื่อนไขจะเป็นเท็จ ก็จบการทำงานของลูป
2.post-Test loop ลูปประเภทนี้จะทำคำสั่งหรือชุดคำสั่งก่อน เมื่อเสร็จแล้วถึงจะมาตรวจสอบเงื่อนไขว่าเป็นจริงหรือเป็นเท็จ ถ้าเป็นจริงก็จะกลับไปทำคำสั่งหรือชุดคำสั่งเดิมอีกครั้งแลดะจะทำจนกว่าเงื่อนไขจะเป็นเท็จเช่นเดียวกัน
การกำหนดและปรับปรุง
ในการใช้ลูป จะมีการกระทำที่สำคัญอยู่ 2 อย่าง ที่จะขาดไม่ได้เลยซึ่งถ้าขาดไปจะทำให้ลูปนั้นไม่ทำงาน หรือลูปทำงานแบบไม่มีวันจบ
 1.การกำหนดค่า ก่อนที่เริ่มใช้ลูปจะต้องมีการกำหนดค่าที่นะใช้เป็นตัวควบคุมลูปก่อนซึ่งตัวควบคุมนี้จะทำหน้าที่ในการตรวจอบว่าลูปนั้นได้ทำงานจนจบ
 2.การปรับปรุง หลังจากที่ทำคำสั่งหรือชุดคำสั่งไปแล้วไม่มีการปับปรุงค่าของตัวควบคุมลูปก็จะทำให้ลูปนั้นกลายเป็นลูปไม่มีวันจบได้เพราะฉะนั้นจะต้องทำการปรับปรุงค่าของตัวควบคุมลูปทุกครั้งเพื่อจะได้นำค่าของตัวควบคุมไปตรวจสอบกับเงื่อนไขเพื่อจบการทำงานของลูป

 

แสดงการกำหนดค่าและการปรับปรุง
  ความแตกต่างระหว่าง Pretest Loop และ Post – Test Loop


Pretest Loop

Post-Test loop
                                                  การกระทำ
การกำหนดค่า                                        1
จำนวนครั้งในการตรวจสอบ               n+1
จำนวนครั้งในการทำคำสั่ง                    n
จำนวนครั้งในการปรับปรุง                  n
จำนวนครั้งที่น้อยที่สุดในการวน         0
                                                 การกระทำ
การกำหนดค่า                                       1
จำนวนครั้งในการตรวจสอบ                n
จำนวนครั้งในการทำคำสั่ง                   n
จำนวนครั้งในการปรับปรุง                 n
จำนวนครั้งที่น้อยที่สุดในการวน         1

n คือ จำนวนของการวนซ้ำ

คำสั่งวนลูปในภาษา C

คำสั่งลูปในภาษา C นั้นจะมีอยู่ 3 คำสั่ง คือ คำสั่ง While คำสั่ง for และคำสั่ง do…while ซึ่งสองคำสั่งแรกเป็นลูปแบบ Pretest loop ส่วนคำสั่งสุดท้ายจะเป็นแบบ Post-test loop
 

 แสดงคำสั่งวนลูปในภาษา C

While loop

คำสั่ง While จะใช้เงื่อนไขเป็นตัวควบคุมลูป ซึ่งลูป while นี้จะเป็นลูปแบบ pretest loop ซึ่งจะทำการตรวจสอบเงื่อนไขก่อนที่จะเข้าไปทำคำสั่งในลูป ผังการทำงานและชุดคำสั่งเบื้องต้นของ while ได้แสดงในรูป
 


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

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


I = 1;                                                                                                      
Sum = 0;
While(I<=20)
{
scanf(“%d”,&a);
Sum+=a;
I++;
}/*while*/

Do…while loopคำสั่ง do…while เป็นลูปแบบ Post-Test Loop ดังทีได้กล่าวไปแล้วในข้างต้น ว่าลูปแบบนี้จะมีคำสั่งก่อนทีจะไปทำการตรวจสอบตัวควบคุมลูป ซึ่งผังการทำงานและชุดคำสั่งเบื้องต้นได้แสดงใน
                ซึ่งในตัวของคำสั่ง do….while นั้นจะมีคำสั่งได้เพียงคำสั่งเดียว ซึ่งถ้าต้องการเขียนเป็นชุดคำสั่งจะต้องเขียนชุดคำสั่งแบบ Compound Statement

 

 แสดงผังการทำงานและชุดคำสั่งเบื้องต้นของคำ
สั่ง do….while
จากรูปจะเห็นได้วาคำสั่ง do…while นั้นจะมีการทำคำสั่งในลูปอย่างน้อยหนึ่งครั้ง ถึงแม้จะตรวจสอบตัวควบคุมลูปแล้วเป็นเท็จก็ตาม คำสั่ง do…while นี้จะเหมาะสำหรับงานที่ต้องมีการทำคำสั่งอย่างน้อยหนึ่งครั้ง
เป็นการใช้คำสั่ง do…while ในการรับค่าตัวเลขแล้ว เมื่อต้องการจะหยุดให้กดปุ่ม Ctrl + Z จากนั้นนำตัวเลขทั้งหมาดมารวมกัน
โปรแกรมบวกตัวเลข โดยใช้คำสั่ง do…while


                         ----------------------  จบ  ----------------------
Sum= 0;
For (I = 1;I<=20;I++)
{
scanf(“%d”,&a);
Sum +=a;
}


                                               

ไม่มีความคิดเห็น:

แสดงความคิดเห็น