วันพุธที่ 22 มิถุนายน พ.ศ. 2554

การพัฒนาโปรแกรม

บทที่  1. ขั้นตอนการพัฒนาโปรแกรม

1.ขั้นตอนการกำหนดปัญหา ( Define the Program)
  • Input
  • Outputs
  • Processing
2.ร่างรายละเอียดแก้ไขปัญหา (Outline the Solution)
  • แตกงานให้เป็นช้นย่อยๆหรือเป็นขั้นเป็นตอน(หลังจากกำหนดปัญหา)
  • การร่างรายละเอียดแนวทางการแก้ไขปัญหาต่างๆประกอบด้วย
  • ขั้นตอนการประเมณผลส่วนหลักๆ
  • ส่วนหลักของงานที่ได้มีการแตกย่อย(Subtask)
  • ส่วนความสัมพันธ์กับผู้ใช้งาน
  • โครงสร้างที่ใช้ควบคุม เช่น การวนซ้ำ หรือการกำหนดทางเลือก
  • ตัวแปรและโครงสร้างของเรคอร์ด
  • ตรรกะโปรแกรม(Logic) 
3.พัฒนาอัลกอลิทึ่ม (Develop and Algorithm)
  • ขั้นตอนที่ใช้อธิบายลำดับการทำงาน และหากได้ปฏิบัติตามขั้นตอนของอัลกิริทึมที่ออกมา
  • ซูโดโค้ดเป็นตัวแทนอัลกอริทึมเพื่อใช้แก้ไขปัญาหาทางคอมพิวเตอร์
4. ตรวจสอบความถูกต้องอัลกอลิทึ่ม (Test the Algorithm for Correctness)
  • เป็นขั้นตอนที่สำคัญที่สุด
  • ตรวจสอบทั้งตรรกะของอัลกอริทึมตัวแปรหลักและการนำข้อมูลทดสอบเข้าไปประมวลผลในแต่ละขั้นตอน
5. เขียนโปรแกรม (Programming)
  • นำอัลกอริทึมที่ได้รับการออกแบบอย่างสมบูรณ์มาพัฒนาด้วยการเขียนโปรแกรม(ชุดคำสั่ง)
  • เลือกใช้ภาษาระดับสูงเพื่อใช้เขียนโปรแกรม เช่น c,PASCAL เป็นต้น
6. ทดสอบโปรแกรม (Testing)
  • นำข้อมูลป้อนเข้าไปเพื่อทดสอบบนเครื่องกับโปรแกรมที่ได้เขียนขึ้นว่าถูกต้องหรือไม่
  • การตรวจสอบ
  • รูปแบบชุดคำสั่ง(Syntax Errors)
  • โปรแกรม(Logic Errors)
  • ข้อมูลทดสอบต้องมีความแตกต่างกันออกไปตามแต่ละสภาพแวดล้อม
7. จัดทำเอกสารและบำรุงโปรแกรม(Document and Maintain the Program)
  • การจัดทำเอกสารประกอบโปรแกรมจะต้องจัดทำขึ้นตั้งแต่ขั้นตอน การกำหนดปัญหาจนถึงขั้นตอน
    สุดท้าย คือการทดสอบผลลัพธ์
  • เอกสารประกอบโปรแกรมประกอบด้วย
  • เอกสารภายนอก(External document) เช่น ผังโครงสร้างอัลกอริทึมที่ใช้แก้ปัญหาและผลของการทดสอบข้อมูล
  • เอกสารภายใน(Internal document) คือ ชุดคำสั่งในโปรมแกรม
  • การบำรุงรักษาโปรแกรมจะเกี่ยวข้องกับการดูแลและปรับปรุงโปรแกรม
วิธีการออกแบบโปรแกรม
  • การออกแบบโปรแกรมแบบ Procedure-Driven
    แนวความคิด>>มีกระบวนการ(Processes)หรือฟังก์ชัน(Function)
  • การออกแบบโปรแกรมแบบ Event-Driven
    แนวความคิด>>เหตุการณ์หรือโต้ตอบจากภยนอกเป็นสำคัญ ที่ส่งผลต่อ
    โปรแกรมในด้านของการเปลี่ยนแปลงในแต่ละสถานะ
  • การออกแบบโปรแกรมแบบ Data-Driven
    แนวความคิด>>ข้อมูลในโปรแกรมมมากกว่ากระบวนการ โดยเริ่มต้นจากการวิเคราะห์ข้อมูล
    และความสัมพันธ์ระหว่างข้อมูล มีการกำหนดโครงสร้างข้อมูลเบื้องต้นและเมื่อโครงสร้างข้อมูล
    ได้ถูกกำหนดขึ้น ความต้องการในผลลัพธ์ของข้อมูลก็จะถูกพิจารณาในลำดับถัดไปว่า
    มีกระบวนการใดที่ทำการแปลงข้อมูลนำเข้าเพื่อไปสู่ผลลัพธ์หรือเอาต์พุตที่ต้องการ
การเขียนโปรแกรมแบบ Procedural และ Object-Oriented
  • การเขียนโปรแกรมแบบบนลงล่าง(Top-Down Development)
  • การออกแบบโปรแกรมในลักษณะโมดูล (Modular Design)
  • การโปรแกรมเชิงวัตถุ (Object-Oriented Programming)
วัตถุประสงค์ของการใช้เทคนิคการออกแบบโครงสร้างโปรแกรม
(Objective of Structured Program  Design Techniques)
  • ต้องการให้โปรแกรมมีคุณภาพและคาดหมายพฤติกรรมการทำงานของโปรแกรมได้ว่าจะเกิดผลลัพธ์อะไรขึ้นในเงื่อนไขกรณีต่างๆ
  • โปรแกรมสามารถที่จะแก้ไข ปรับปรุง หรือดัดแปลงได้ง่ายในอนาคต
  • ทำให้ขั้นตอนของการเขียนโปรแกรมเป็นไปอย่างมีระบบ มีความสะดวกและง่ายขึ้น
  • ลดเวลาในการพัฒนาโปรแกรม
ความรู้เบื้องต้นเกี่ยวกับอัลกอริทึมและซูโดโค้ด(Introduction to Algorithm and Pseud Code)
อัลกอริทึม (Algorithm) คือ กลุ่มของขั้นตอนหรือกฎเกณฑ์ที่จะนำพาไปสู่การแก้ไขปัญหาได้ หรือขั้นตอนวิธีซึ่งจะใช้อธิบายว่างานนั้นทำงานอย่างไร เมื่อได้ปฏิบัติตามขั้นตอนจนครบก็จะได้ผลลัพธ์ที่ถูกต้องตามต้องการ
คุณสมบัติของอัลกอริทึมที่ดีในการแก้ปัญหาทางคอมพิวเตอร์
  • ไม่กำกวม อ่านแล้วเข้าใจง่าย
  • ต้องมีความถูกต้องในผลลัพธ์ที่ใช้แก้ไขปัญหาในกรณีต่างๆ
  • กระบวนการหรือขั้นตอนที่ระบุไว้ในอัลกอริทึมต้องมีความเรียบง่ายเพียงพอต่อการดำเนินงานเพื่อประมวลผลในคอมพิวเตอร์ได้
  • อัลกอลิทึมต้องมีจุดสิ้นสุด
หลักวิธีการเขียนซูโดโค้ด
  • ถ้อยคำที่ใช้เขียน ใช้ภาษาอังกฤษที่เข้าใจง่าย
  • ในหนึ่งบรรทัด ให้มีเพียงหนึ่งประโยคคำสั่ง
  • ใช้ย่อหน้าให้เป็นประโยชน์ ในการแสดงการควบคุมอย่างเป็นสัดส่วน
  • แต่ละประโยคคำสั่งให้เขียนจากบนลงล่าง และมีทางออกทางเดียว
  • กลุ่มของประโยคคำสั่งอาจรวมเป็นหมวดหมู่แล้วเรียกใช้เป็นโมดูล
Six Basic Computer Operations
รับข้อมูลได้ (input device)
  • อุปกรณ์รับข้อมูล เช่น เทอร์มินัล คีย์บอร์ด หรือรับข้อมูลจากการอ่านไฟล์ข้อมูลบนสื่อจัดเก็บ ข้อมูล  เช่น ดิสก์ หรือเทป
  • ในการอ่านข้อมูลจะใช้ read และ get เพื่อใช้ในการเขียนซูโดโค้ด
    -read ใช้เมื่อมีการรับหรืออ่านเรคคอร์ดจากไฟล์ข้อมูล
    -get ใช้สำหรับรบข้อมูลจากแป้นคีย์บอร์ด
คอมพิวเตอร์สามารถแสดงผลลัพธ์ได้
การแสดงผลลัพธ์จะใช้คำกิริยา
  •      -print ใช้สำหรับการส่งผลลัพธ์ออกทางแป้นพิมพ์
  •      -write ใช้สำหรับการส่งออกเอาต์พุตเพื่อเก็บบันทึกลงในไฟล์
  •     -put,output หรือ display ใช้สำหรับการส่งเอาต์พุตออกไปแสดงผลทางจอภาพ
คอมพิวเตอร์สามารถคำนวณได้
สัญลักษณ์ที่ใช้ในการคำนวณ
          +   ใช้แทนการบวก (Add)
          -    ใช้แทนการลบ (subtract)
          *     ใช้แทนการคูณ (multiply)
          /     ใช้แทนการหาร (divide)
         ()     ใช้แทนเครื่องหมายวงเล็บเปิด/ปิด
คอมพิวเตอร์สามารถกำหนดค่าตัวแปรได้
ทำได้ 3 รูปแบบ 
  • ใช้คำกริยา initialize หรือคำว่า set เพือกำหนดค่าเริ่มต้นให้กับตัวแปร
  • ใช้สัญลักษณ์เครื่องหมาย = หรือเครื่องหมาย ←เพื่อกำหนดค่าให้กับตัวแปร
  • ใช้คำกริยา store ในการจัดเก็บข้อมูลให้กับตัวแปร
คอมพิวเตอร์สามารถเปรียบเทียบ และ เลือกการทำงานได้
  • ใช้คำ if…then…else และจบด้วย end if เสมอ
คอมพิวเตอร์สามารถทำงานซ้ำๆได้
  • ใช้คำ dowhile…enddo หรือ repeat..until
The Three Basic Control Structures
  • The Three Basic Control Structures
    แบบเรียงลำดับ (Sequence) ทำงานตามชุดคำสั่งแบบลำดับ จากบนลงล่าง
  • แบบเลือกการทำงาน (Selection)
    เปรียบเทียบเงื่อนไขโดยใช้คำสั่ง
    if…
    then….
    else ….
    end if
  • แบบทำงานซ้ำ (Repetition)
    dowhile จะทำงานซ้ำไปเรื่อยๆ เมื่อตรงกับเงื่อนไข
    จนกระทั่งเงื่อนไขเป็นเท็จ ก็จะหลุดออกจากลูป
    dowhile condition p is true
    statement block
    end do
    ส่วน repeat …. until จะทำการ execute statement
    ก่อนเช็คเงื่อนไข
    repeat
    statement
    statement
    until condition is true

    บทที่ 2 Review C Language

    1.Review C Language
    • คำสั่งพื้นฐานต่างๆ
            เช่น printf( “abc” );
                   printf( “%s”, ”abc” );
            เช่น scanf( “%d”,&x);
    • Format Code ใช้ในการแสดงผลที่นิยมใช้ ได้แก่
           %d   ใช้กับข้อมูลแบบ integer
           %c    ใช้กับข้อมูลแบบ character
           %f     ใช้กับข้อมูลแบบ floating
           %s    ใช้กับข้อมูลแบบ string
    2.Operator
    แบ่งออกเป็น 3 ชนิด คือ
    • Arithmetic Operators ได้แก่  +, - , *, /, % , -- , ++
    • Relational and Equality Operators ได้แก่ < , > , <= , >= , == , !=
    •    - Logical Operators ได้แก่ ! , && , ||
    3.selection/Condition
    • if statement
    • if - else statement
    • if - else statement (Nested if)
    • switch statement
    4.Repetition/Loop
    • while statement
    Format :
        while (expression) {                   statement-1;                   statement-2;                        ……                   statement-n;      }
    • for statement
      Format :
      for (expression -1; expression-2; expression-3 ) {                 statement -1 ;                 statement -2 ;                      …..                 statement -n ;   }
    • do-while statement
      Format :
             do {                 statement -1 ;                 statement -2 ;                   …..                  statement -n ;             } while (expression);
    5.Function ข้อดี
    • เขียนโค้ดครั้งเดียว แต่สามารถเรียกใช้ได้หลายครั้ง
      สามารถนำหลับมาใช้ใหม่ในโปรแกรมอื่นได้
      ถ้าต้องการเปลี่ยนแปลงแก้ไขเพียงที่เดียว
      ทำให้โปรแกรมมีความเป็นโครงสร้าง 
    • สามารถแบ่งเป็นโมดูลย่อยๆได้
      ฟังก์ชันแบ่งเป็น 2 ประเภท คือ

    • Library Function
      Format :
      #include<file-name>
      ตัวอย่าง   #include<stdio.h>   #include<conio.h >   etc. 
    วิธีเรียกใช้งาน Library Function

    • เรียกชื่อของฟังก์ชันที่ต้องการใช้งาน
    • เอาค่าที่จะส่งไปทำงานในฟังก์ชัน ใส่ลงในวงเล็บตามหลังชื่อฟังก์ชันนั้น
      ตัวอย่าง Library Function strcpy () –อยู่ในแฟ้มข้อมูล string.h   ทำหน้าที่ : คัดลอกข้อมูลจาก string หนึ่งไปยัง string หนึ่ง
      Format : 
      strcpy (str1, str2);

    6.User Defined Function
    คือ ฟังก์ชันที่ผู้เขียนโปรแกรมสามารถเขียนฟังค์ชันขึ้นใช้เอง โดยฟังก์ชันนี้อาจจะรวมอยู่กับโปรแกรมหลักเป็นแฟ้มเดียวกัน หรือยกฟังก์ชันเหล่านี้ไว้คนละแฟ้มข้อมูลก็ได้
    การสร้างฟังก์ชัน ประกอบด้วย
    • Function Definition
    • Function Prototype
    • Invocation
    Function Definition หรือนิยามฟังก์ชัน คือ รายละเอียดในการทำงานของฟังก์ชัน Format :
    clip_image001/*…………..*/  >> heading comment
      data-type function-name(type argument )    {       declaration;       statement;     return(value); }
    Function Prototype  เป็นตัวบอกให้ Compiler ทราบว่าการประกาศฟังก์ชันขึ้นและฟังก์ชันนั้นมีค่าที่ส่งกลับเป็นอะไร มีการรับพารามิเตอร์อะไรบ้าง มีประโยชน์ในการตรวจสอบข้อผิดพลาดระหว่างการเรียกใช้ฟังก์ชัน
    Invocation คือการเรียกใช้ฟังก์ชัน
    ลักษณะของฟังก์ชัน
    •  ฟังก์ชันที่ไม่มีการส่งค่ากลับ การเรียกใช้ทำได้โดยอ้างถึงชื่อฟังก์ชัน
                 ...........
        Print_banner () ;
    • ฟังก์ชันที่มีการส่งค่ากลับ การเรียกใช้ทำได้เหมือนแบบแรก แต่ต้องมีตัวแปรมารับค่าที่จะต้องส่งกลับด้วย
    int main(void) {
    int k, j;
       j = prompt ()
       k = prompt ();
    printf(“j = %d and k = %d”, j, k);
    • ฟังก์ชันที่มีการรับค่า argument
    การเรียกใช้ฟังก์ชันทำได้โดยอ้างถึงชื่อของฟังก์ชัน พร้อมทั้งส่งค่าของตัวแปร(parameter)ไปด้วย โดยจะ ต้องมีชนิดสอดคล้องกับ argument ของฟังก์ชัน ที่เรียกใช้
    • การผ่านค่า argument ให้ฟังก์ชัน ทำได้ 2 แบบ คือ
    Pass by Value คือ การส่งค่าไปยังฟังก์ชันที่ถูกเรียกใช้โดยส่งค่าของตัวแปรหรือค่าที่ส่งไปโดย ค่าคงที่ผ่านให้กับค่าฟังก์ชันจะถูกคัดลอกส่งให้กับ ฟังก์ชันและจะถูกเลี่ยนแปลงเฉพาะภายในฟังก์ชัน โดยค่าของ argumentในโปรแกรมที่เรียกใช้จะไม่เปลี่ยนแปลง   ตัวอย่าง :
    void swap(int num1, int num2) {
            int tmp;
    tmp = num1;
    num1 = num2;
    num2 = tmp;
    print(“A is %d B is %d\n”, num1, num2);
    }
    Pass by Reference
    คือ การส่งค่าไปยังฟังก์ชันที่ถูกเรียกใช้โดยส่งเป็นตำแหน่งที่อยู่ของตัวแปรไป ซึ่งหากภายในฟังก์ชันมีการเปลี่ยนแปลงค่าของ argument ที่ส่งไป ก็จะมีผลทำให้ค่าของ argument นั้นใน โปรแกรมที่เรียกใช้เปลี่ยนไปด้วย ตัวอย่าง :
    void swap(int * num1, int * num2) {
           int tmp;
    tmp = *num1;
    *num1 =* num2;
    *num2 = tmp;
    }

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

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