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

ความรู้พื้นฐานเกี่ยวกับการออกแบบโปรแกรม

 บทที่ 1


1.Steps in program development
  กำหนดปัญหา
   - ร่างรายระเอียดการแก้ไขปัญหา
   - พัฒนาอัลกอลิทึ่ม
   - ตรวจสอบความถูกต้องของอัลกอลิทึ่ม
   - เขียนโปรแกรม
   - ทดสอบโปรแกรม
   - จัดทำเอกสารและบำรุงรักษาโปรแกรม

กำหนดปัญหาประกอบไปด้วย
   - Input
   - Output
   - Processing

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

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

Test the algorithm for Correctness
   - ตรวจสอบทั้งตรรกะของอัลกอลิทึ่ม ตัวแปรหลัก และการนำข้อมูลทดสอบเข้าไปประมวลผลในแต่ละขั้นตอน

Programming
   - นำอัลกอลิทึ่มที่ได้รับการออกแบบอย่างสมบูรณ์มาพัฒนาด้วยการเขียนโปรแกรม


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

Document and Maintain the Program
   - กาารจัดทำเอกสารประกอบโปรแกรมจะต้องจัดทำตั้งแต่ขั้นตอนการกำหนดปัญหาจนถึงขั้นตอนสุดท้าย คือ การทดสอบผลลัพธ์
   - เอกสารประกอบโปรแกรมจะประกอบไปด้วย
      - เอกสานภายนอก เช่น ผังโครงสร้าง
      - เอกสารภายใน คือ ชุดคำสั่งในโปรแกรม
   - การบำรุงรักษาโปรแกรมจะเกี่ยวข้องกับงานดูแลและปรับปรุงโปรแกรม

2.Program design Methodology
   - การออกแบบโปรแกรมแบบ Procedure-Driven
        - แนวความคิด>>มีกระบวนการ(Processes)หรือฟังก์ชัน(Function)
   - การออกแบบโปรแกรมแบบ Event-Driven
       - แนวความคิด>>เหตุการณ์หรือโต้ตอบจากภยนอกเป็นสำคัญ ที่ส่งผลต่อ
โปรแกรมในด้านของการเปลี่ยนแปลงในแต่ละสถานะ
   - การออกแบบโปรแกรมแบบ Data-Driven
       - แนวความคิด>>ข้อมูลในโปรแกรมมมากกว่ากระบวนการ โดยเริ่มต้นจากการวิเคราะห์ข้อมูล
และความสัมพันธ์ระหว่างข้อมูล มีการกำหนดโครงสร้างข้อมูลเบื้องต้นและเมื่อโครงสร้างข้อมูล
ได้ถูกกำหนดขึ้น ความต้องการในผลลัพธ์ของข้อมูลก็จะถูกพิจารณาในลำดับถัดไปว่า
มีกระบวนการใดที่ทำการแปลงข้อมูลนำเข้าเพื่อไปสู่ผลลัพธ์หรือเอาต์พุตที่ต้องการ

3. Procedural และ Object-Oriented
    - การเขียนโปรแกรมแบบบนลงล่าง(Top-Down Development)
   - การออกแบบโปรแกรมในลักษณะโมดูล (Modular Design 
   - การโปรแกรมเชิงวัตถุ (Object-Oriented Programming)


4.Objective of Structured Program  Design Techniques
  -  ต้องการให้โปรแกรมมีคุณภาพและคาดหมายพฤติกรรมการทำงานของโปรแกรมได้ว่าจะเกิดผลลัพธ์อะไรขึ้นในเงื่อนไขกรณีต่างๆ 
   - โปรแกรมสามารถที่จะแก้ไข ปรับปรุง หรือดัดแปลงได้ง่ายในอนาคต 
   -  ทำให้ขั้นตอนของการเขียนโปรแกรมเป็นไปอย่างมีระบบ มีความสะดวกและง่ายขึ้น
   -  ลดเวลาในการพัฒนาโปรแกรม


5.Introduction to Algorithm and Pseude Code
    -  อัลกอริทึม (Algorithm) คือ กลุ่มของขั้นตอนหรือกฎเกณฑ์ที่จะนำพาไปสู่การแก้ไขปัญหาได้ หรือขั้นตอนวิธีซึ่งจะใช้อธิบายว่า งานนั้นทำงานอย่างไร เมื่อได้ปฏิบัติตามขั้นตอนจนครบก็จะได้ผลลัพธ์ที่ถูกต้องตามต้องการ
   - คุณสมบัติของอัลกอริทึมที่ดี
       -ไม่กำกวม อ่านแล้วเข้าใจง่าย
       - ต้องมีความถูกต้องในผลลัพธ์ที่ใช้แก้ไขปัญหาในกรณีต่างๆ
       - กระบวนการหรือขั้นตอนที่ระบุไว้ในอัลกอริทึมต้องมีความเรียบง่ายเพียงพอต่อการดำเนินงานเพื่อประมวลผลในคอมพิวเตอร์ได้
       -ต้องมีจุดสิ้นสุด
     ซูโดโค้ด(Pseudo Code) สามารถนำมาใช้แทนอัลกอริทึมได้ โปรแกรมเมอร์สามารถนำอัลกอริทึมที่นำเสนอ ในรูปแบบซูโดโค้ดไปเขียนเป็นชุดคำสั่งภาษาโปรแกรมได้ทันที
หลักการเขียนซูโดโค้ด  
    - ถ้อยคำที่ใช้เขียน ใช้ภาษาอังกฤษที่เข้าใจง่าย 
    - ในหนึ่งบรรทัด ให้มีเพียงหนึ่งประโยคคำสั่ง
    - ใช้ย่อหน้าให้เป็นประโยชน์ ในการแสดงการควบคุมอย่างเป็นสัดส่วน  
    - แต่ละประโยคคำสั่งให้เขียนจากบนลงล่าง และมีทางออกทางเดียว 
    - กลุ่มของประโยคคำสั่งอาจรวมเป็นหมวดหมู่แล้วเรียกใช้เป็นโมดูล 

6.Six Basic Computer Operations 
    - รับข้อมูลได้ (input device) 
  -อุปกรณ์รับข้อมูล เช่น เทอร์มินัล คีย์บอร์ด หรือรับข้อมูลจากการอ่านไฟล์ข้อมูลบนสื่อจัดเก็บข้อมูล  เช่น ดิสก์ หรือเทป 
        -ในการอ่านข้อมูลจะใช้ read และ get เพื่อใช้ในการเขียนซูโดโค้ด 
            -read ใช้เมื่อมีการรับหรืออ่านเรคคอร์ดจากไฟล์ข้อมูล
            -get ใช้สำหรับรบข้อมูลจากแป้นคีย์บอร์ด
  ตัวอย่าง 
  read studentName
  get systemDate
  read number1,number2
  get taxCode

   - คอมพิวเตอร์สามารถแสดงผลลัพธ์ได้
      -print ใช้สำหรับการส่งผลลัพธ์ออกทางแป้นพิมพ์ 
      -write ใช้สำหรับการส่งออกเอาต์พุตเพื่อเก็บบันทึกลงในไฟล
      -put,output หรือ display ใช้สำหรับการส่งเอาต์พุตออกไปแสดงผลทางจอภาพ

  ตัวอย่าง
  print “Program Completed”
  write customer record to master file
  put name,address and postcode
  output totalTax
  display “End of data”

   - คอมพิวเตอร์สามารถแสดงผลลัพธ์ได้(Cont)
        -คำสั่ง prompt ที่ใช้สำหรับแสดงข้อความก่อนที่จะใช้คำสั่ง get,เพื่อจะได้สามารถสือสารโต้ตอบกับยูสเซอร์ได้อย่างสมบูรณ์ยิ่งขึ้น 
      -คำกริยาที่ใช้ในการคำนวณจะใช้ compute และ calculate 
  
สัญลักษณ์ที่ใช้ในการคำนวณ
                                                            +   ใช้แทนการบวก (Add)
                                                            -    ใช้แทนการลบ (subtract)
                                                           *     ใช้แทนการคูณ (multiply)
                                                            /     ใช้แทนการหาร (divide)
                                                           ()     ใช้แทนเครื่องหมายวงเล็บเปิด/ปิด
    ตัวอย่าง
   divide totalMarks by studentCount
   salesTax costPrice*0.10
   computeC=(F-32)*5/9
   - คอมพิวเตอร์สามารถกำหนดค่าตัวแปรได้สามารถทำได้ 3 รูปแบบ ดังนี้
       - ใช้คำกริยา initialize หรือคำว่า set เพือกำหนดค่าเริ่มต้นให้กับตัวแปร
       - ใช้สัญลักษณ์เครื่องหมาย = หรือเครื่องหมาย ←เพื่อกำหนดค่าให้กับตัวแปร 
       - ใช้คำกริยา store ในการจัดเก็บข้อมูลให้กับตัวแปร


 ตัวอย่าง
  initialize totalPrice to zero
  set studentCount to o
  totalPrice = costPrice+salesTax
  totalPrice ← costPrice+salesTax
  store customerId lastCustomerID

   - คอมสามารถเปรียบเทียบ หรือเลือกทำงานได้
        - ใช้คำ if…then…else และจบด้วย end if เสมอ

  ตัวอย่าง
  if employeeStatus is partTime then
   add to partTimeCount
  else
   add to fullTimeCount
  end if

    - คอมพิวเตอร์สามารถทำงานซ้ำๆได้
       -ใช้คำ dowhile…enddo หรือ repeat..until

  ตัวอย่าง
 dowhile file_flag<>”eof”
  read student record
  print studentName,address to report
  add 1 to studentTotal
 enddo

 7. The Three Basic Control Structures  

     - Repetition  Format
                            dowhile 
                  dowhile condition p is ture                       
                       statement block
                  enddo

   - Repetition Format (Cont)
                            repeat….until  

                            repeatstatement  
                                statement 
                                statement
                                     :
                                     : 
                            until condition is true

----------------------------------------------------------------------------

 บทที่ 2

1.Revew 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;
}
 








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

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