วันจันทร์ที่ 25 พฤศจิกายน พ.ศ. 2556

ขั้นตอนการพัฒนาโปรแกรม

กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์

       กระบวนการแก้ปัญหาด้วยคอมพิวเตอร์  เป็นการนำคอมพิวเตอร์มาใช้งานซึ่งจะต้องมีโปรแกรมสำหรับทำงาน โดยผู้ที่พัฒนาโปรแกรมจะต้องเข้าใจงานเป็นอย่างดี จึงนำมาพัฒนาเป็นโปรแกรมเพื่อใช้ช่วยในการทำงาน ดังนั้นขั้นตอนการทำงานด้วยการแก้ปัญหาตามขั้นตอนดังนี้
       1. ขั้นตอนการพัฒนาโปรแกรม
       การเขียนโปรแกรมผู้เขียนโปรแกรมจะต้องรู้ว่าจะให้โปรแกรมทำอะไร มีข้อมูลอะไรที่จะต้องให้กับโปรแกรมบ้าง และต้องการผลลัพธ์หรือเอาต์พุตอย่างไรจากโปรแกรมรวมทั้งรูปแบบการแสดงผลลัพธ์  โดยทั่วไปขั้นตอนการพัฒนาโปรแกรมแบ่งได้ดังนี้
       1.1 กำหนดและวิเคราะห์ปัญหา (Peoblem Definition and Problem Analysis)
             ขั้นตอนแรกสำหรับนักเขียนโปรแกรม การแก้ปัญหาด้วยคอมพิวเตอร์จะต้องมีแนวทางที่แก้ไขปัญหาที่เหมาะสมให้กับคอมพิวเตอร์ เพื่อให้การทำงานเป็นไปอย่างมีประสิทธิภาพ  ถ้าผู้เขียนโปรแกรมไม่สามารถทำความเข้าใจกับปัญหาที่ต้องการแก้ไขได้ การนำคอมพิวเตอร์มาใช้ในการแก้ปัญหาต่าง ๆ ก็ไม่สามารถทำได้  การกำหนดและวิเคราะห์ปัญหามีขั้นตอนย่อย ๆ ดังนี้
             - กำหนดขอบเขตของปัญหา เป็นการกำหนดให้ชัดเจนว่าจะให้คอมพิวเตอร์ทำอะไร ตัวแปรค่าคงที่ที่จะต้องใช้เป็นลักษณะใด
             - กำหนดลักษณะของข้อมูลเข้าและออกจากระบบ(Input/Output Specification) โดยต้องรู้ว่าข้อมูลที่จะส่งเข้าไปเป็นอย่างไร มีอะไรบ้าง เพื่อให้โปรแกรมทำการประมวลผลและแสดงผลลัพธ์ เช่นการรับค่าจากคีย์บอร์ด การกำหนดค่าปุ่มต่าง ๆ ลักษณะการแสดงผลลัพธ์ทางหน้าจอว่าจะให้มีรูปร่างอย่างไร ตัวอย่างเช่นถ้าต้องการรับข้อมูลเข้าไปประมวลผล ก็ต้องพิจารณาว่าข้อมูลนั้นเป็นตัวอักษณหรือตัวเลข ถ้าเป็นตัวเลขก็พิจารณาต่อว่าเป็นจำนวนเต็มหรือทศนิยม ผลลัพธ์ที่แสดงหน้าจอจะให้แสดงเป็นทศนิยมกี่ตำแหน่งหรือปัดเศษ เป็นต้น
           - กำหนดวิธีการประมวลผล (Process Specification) ต้องรู้ว่าจะให้คอมพิวเตอร์ประมวลผลอย่างไรจึงจะได้ผลลัพธ์ตามต้องการ
ตัวอย่าง ถ้าต้องการออกแบบโปรแกรมให้คอมพิวเตอร์รับค่าข้อมูล 5 ค่า และแสดงค่าเฉลี่ยทางจอภาพ จะกำหนดและวิเคราะห์ปัญหาได้ดังนี้
          1. รับข้อมูลจากคีย์บอร์ด
              1.1 รับข้อมูลเฉพาะที่เป็นตัวเลขมาเก็บในตัวแปรจำนวน 5 ตัว
              1.2 ถ้าข้อมูลเท่ากับ 0 ให้รับค่าใหม่
          2. หาค่าเฉลี่ย
              2.1 รวมค่าทุกค่าที่รับมาเข้าด้วยกัน
              2.2 นำค่าผลรวมที่ได้หารด้วย 5
              2.3 นำค่าผลลัพธ์ไปเก็บในตัวแปร
          3. แสดงผลลัพธ์ทางจอภาพ
              3.1 แสดงคำว่าค่าเฉลี่ยเท่ากับ
              3.2 แสดงผลลัพธ์โดยมีทศนิยมสองตำแหน่ง
 
 
 

วันจันทร์ที่ 5 สิงหาคม พ.ศ. 2556

ความรู้เกี่ยวกับภาษา c

ประวัติภาษา C

     ภาษา C เป็นภาษาที่ถูกพัฒนาเพื่อใช้เขียนระบบปฏิบัติการ (Operating System) UNIX โดย Dennis  Ritchie จาก AT&T  Bell Laboratories ในปี พ.ศ.2515
     ภาษา C เป็นภาษาที่นิยมใช้ในการเขียนส่วนชุดคำสั่งระบบ (Systems  Software) เพราะสามารถใช้งานได้เหมือนภาษาระดับต่ำ เช่น เข้าถึงเลขที่อยู่ (address) ต่าง ๆ ได้ โดยที่ผู้เขียนโปรแกรมไม่จำเป็นต้องรู้ส่วนอุปกรณ์ของเครื่อง (hardware)   

ภาษาคอมพิวเตอร์ที่มีอิทธิพลต่อรูปแบบภาษา C

  •       Algol 60 (Algorithm Language) พัฒนาโดยกลุ่มคนจาก ACM และ GAMM ในปี พ.ศ.2503
  •      CPL (Combined Programming Language) พัฒนาที่มหาวิทยาลัย Cambridge และมหาวิทยาลัยลอนดอน ในปี พ.ศ.2506
  •      BCPL (Basic  Combined  Programming Language) พัฒนาโดย Martin Richards ในปี พ.ศ.2510
  •      B พัฒนาโดย Ken Thomson จาก Bell Laboratories ในปี พ.ศ.2513
  •      C พัฒนาโดย Dennis Ritchie จาก Bell Laboratories ในปี พ.ศ.2515

โปรแกรมภาษา C ประกอบด้วย

       ชุดคำสั่งแต่ละคำสั่งประกอบด้วย

องค์ประกอบของคำสั่ง

      คำสั่งอาจประกอบด้วย ชื่อตัวแปร และชื่อฟังก์ชัน (names)
  • ชื่อประกอบด้วย ตัวอักษร ตัวเลข และ _
  • ชื่อขึ้นต้นด้วยอักษร และจะมีความยาวเท่าไรก็ได้
     ชื่อตัวแปรและฟังก์ชัน 
     ตัวอย่างชื่อที่ถูกต้อง i , f4,  total, user_id 
     ตัวอย่างชื่อที่ไม่ถูกต้อง %_of_change,  57,  31flavors 

ค่าคงที่ (constants) แบ่งเป็น 2 ชนิด คือ ค่าคงที่ชนิดตัวเลข และค่าคงที่ชนิดอักขระ

ค่าคงที่ชนิดตัวเลข 

     เลขจำนวนเต็ม (integer) ฐานต่าง ๆ ได้แก่
  • เลขฐานสิบ (decimal) เช่น 63,  999,  - 40,   - 2
  • เลขฐานแปด (octal) ขึ้นต้นด้วย 0 เช่น 077,   040
  • เลขฐานสิบหก (hexadecimal) ขึ้นต้นด้วย 0X เช่น 0X37,  0XFFFF,   0X9A37
    เลขทศนิยม (floating-point) ได้แก่
  • เลขทศนิยมธรรมดา เช่น 1.5,  .001,  -12.34
  • เลขทศนิยมแบบเลขชี้กำลัง เช่น 1E-5(1* 10-5 )  , 1.23E+2(1.23*102โดยใช้ E หรือ e แทนด้วยคูณสิบยกกำลัง  

ค่าคงที่ชนิดอักขระ     

   แบบอักขระ (character constant) เช่น 'a'  , 'A'
   แบบสายอักขระ (string  constant) เช่น "help"  ,  "happy  day"

ช่องว่าง (whitespace)  ในการเขียนโปรแกรมภาษา C จะเว้นช่องว่างระหว่างคำสั่งเท่าไรก็ได้  คำสั่งจะอยู่ส่วนไหนของบรรทัดก็ได้

หมายเหตุ (comment)

จะต้องเริ่มด้วย /*  จบหมายเหตุด้วย */
หมายเหตุไม่ได้เป็นส่วนของคำสั่ง แต่เป็นข้อความที่อาจเขียนเพื่ออธิบายโปรแกรม  อธิบายชื่อตัวแปรต่าง ๆ โดยจะใส่หมายเหตุไว้ที่ส่วนไหนของโปรแกรมก็ได้  อาจจะมีหรือไม่มีในโปรแกรมก็ได้ เพราะเป็นการอธิบายเพิ่มเติมเท่านั้น

ตัวดำเนินการ (Operator)  ได้แก่

ตัวดำเนินการการคำนวณ (arithmetic  operators)

 
ตัวดำเนินการ
ความหมาย
ลบชนิดเอกภาพ (unary  minus)
+
บวก
ลบ
*
คูณ
/
หาร
%
มอดูโล (modulo operator) หรือเศษเหลือ (remainder)

ตัวดำเนินการสัมพันธ์ (relational  operators)


ตัวดำเนินการ
ความหมาย
< 
น้อยกว่า
<=
น้อยกว่าหรือเท่ากับ
> 
มากกว่า
>=
มากกว่าหรือเท่ากับ
==
เท่ากับ
!=
ไม่เท่ากับ

ตัวดำเนินการตรรกะ (logical  operators)



ตัวดำเนินการ
ความหมาย
&&
และ (and)
||
หรือ (or)
!
ไม่ (not)

ตัวดำเนินการอื่น ๆ


ตัวดำเนินการ
ความหมาย
[]
ดรรชนีกำกับของตัวแปรแถวลำดับ (array subscript)
->
ตัวชี้ของตัวแปรโครงสร้าง (structure  pointer)
.
สมาชิกของตัวแปรโครงสร้าง (structure  member)
++
เพิ่มค่าอีกหนึ่ง (increment)
--
ลดค่าลงอีก (decrement)
(type)
เปลี่ยนชนิดของข้อมูล
*
ตัวดำเนินการโดยอ้อม (indirect)
&
เลขที่อยู่ (address)
sizeof
ขนาดของตัวถูกดำเนินการ
?:
นิพจน์มีเงื่อนไข (conditional  expression)
=
กำหนดค่า
,
จุลภาค



    


















วันเสาร์ที่ 29 มิถุนายน พ.ศ. 2556

ใบความรู้ที่ 1

เรื่องหลักการเขียนโปรแกรม

ประกอบการเรียนรู้วิชาการเขียนโปรแกรมเบื้องต้น(เพิ่มเติม)

ผลการเรียนรู้

     1. อธิบายหลักการเขียนโปรแกรมได้
     2. วิเคราะห์วิธีการเขียนโปรแกรมได้
 
หลักการเขียนโปรแกรม
     ในการแก้ปัญหาโดยอาศัยวิธีการเขียนโปรแกรม ประกอบด้วยขั้นตอนต่าง ๆ ดังนี้
     1. การวิเคราะห์และกำหนดรายละเอียดของปัญหา
         รายละเอียดของปัญหาในเบื้องต้นอาจยังไม่ชัดเจน ในขั้นตอนนี้ ผู้เขียนโปรแกรมจะต้องวิเคราะห์ปัญหาเพื่อกำหนดรายละเอียดของปัญหาที่ชัดเจนซึ่งได้แก่ รายละเอียดของข้อมูลนำเข้า (input data) และรายละเอียดของข้อมูลส่งออก (output data) รายละเอียดของข้อมูลนำเข้า หมายถึง ข้อมูลที่สามารถนำมาใช้แก้ปัญหา ซึ่งอาจเป็นข้อมูลที่กำหนดให้หรือข้อมูลที่รับเข้ามา สำหรับข้อมูลส่งออก หมายถึง ข้อมูลซึ่งเป็นผลที่ได้จากการแก้ปัญหา การกำหนดรายละเอียดข้อมูลนำเข้าและข้อมูลส่งออก สามารถทำได้โดยไม่ยุ่งยากจนเกินไป
    2. การออกแบบโปรแกรม
        ขั้นตอนการออกแบบโปรแกรมเป็นการออกแบบลำดับการทำงานหรือแก้ปัญหาซึ่งจะต้องสอดคล้องกับรายละเอียดของปัญหา โดยจะต้องคำนึงถึงการออกแบบโครงสร้างข้อมูลที่เหมาะสมที่จะใช้จัดเก็บข้อมูลเพื่อประมวลผลและการออกแบบขั้นตอนที่ใช้ประมวลผลข้อมูลในเบื้องต้นเราจะจัดเก็บข้อมูลที่ใช้สำหรับประมวลผลไว้ภายใต้ชื่อตัวแปรเช่นเดียวกับที่เราคุ้นเคยในการกำหนดตัวแปรสำหรับแก้ปัญหาทางคณิตศาสตร์ สำหรับขั้นตอนการประมวลผลข้อมูลที่กำหนดเป็นลำดับที่แน่นอนต่อเนื่องกันเพื่อใช้แก้ปัญหา เรียกว่า ขั้นตอนวิธี(algorithms) ขั้นตอนวิธีที่ดีจะต้องมีระบบระเบียบที่แน่นอนและชัดเจนในการแก้ปัญหา ขั้นตอนวิธีและโปรแกรมที่เราออกแบบจะอาศัยโครงสร้างควบคุมการทำงาน 3 อย่าง คือ
    •  โครงสร้างแบบตามลำดับ (sequential  structure) เป็นขั้นตอนการทำงานที่เป็นไปตามลำดับก่อนหลัง และแต่ละขั้นตอนจะถูกประมวลผลเพียงครั้งเดียวเท่านั้น
    • โครงสร้างแบบมีทางเลือก (selection  structure) เป็นขั้นตอนการทำงานที่บางขั้นตอนจะได้รับหรือไม่ได้รับการประมวลผล ขึ้นอยู่กับเงื่อนไขบางประการ
    • โครงสร้างแบบทำซ้ำ (repetition  structure) เป็นขั้นตอนการทำงานที่บางขั้นตอนจะถูกประมวลผลซ้ำมากกว่า 1 ครั้ง ขึ้นอยู่กับเงื่อนไขบางประการ
    3. การเขียนโปรแกรม
        ในกรณีที่ได้วิเคราะห์ปัญหาและกำหนดรายละเอียดของปัญหา ตลอดจนออกแบบโปรแกรมอย่างครบถ้วนสมบูรณ์แล้วจะถึงขั้นตอนการเขียนโปรแกรม ในขั้นตอนนี้ก็สามารถทำให้สัมฤทธิ์ผลได้โดยง่าย ขั้นตอนการเขียนโปรแกรม หมายถึง กระบวนการใช้ภาษาคอมพิวเตอร์เพื่อกำหนดโครงสร้างของข้อมูลและกำหนดขั้นตอนวิธีเพื่อใช้แก้ปัญหาตามที่ได้ออกแบบไว้ โดยอาศัยหลักเกณฑ์การเขียนโปรแกรมภาษาคอมพิวเตอร์แต่ละภาษา หลังจากที่ผู้พัฒนาเขียนโปรแกรมภาษเสร็จแล้วจะต้องมีการตรวจสอบโปรแกรมที่เขียนว่าคำสั่งถูกต้องตามไวยกรณ์หรือกฎเกณฑ์ของภาษานั้นหรือไม่และแปลภาษาโปรแกรมให้เป็นรหัสที่เครื่องคอมพิวเตอร์สามารถเข้าใจ ซึ่งเราเรียกว่าการแปล (Compile) ซึ่งจะมีการสอบความถูกต้องของโปรแกรมตามกฎเกณฑ์การใช้ภาษาที่กำหนดขึ้นโดยตัวแปลภาษาหนึ่ง ๆ และแจ้งให้ผู้ใช้ทราบในกรณีที่ปรากฏข้อผิดพลาดขึ้น ข้อผิดพลาดที่ตรวจพบในขั้นตอนนี้เรียกว่า ข้อผิดพลาดทางไวยกรณ์ (Syntax Error) เมื่อผู้ใช้แก้ไขข้อผิดพลาดเรียบร้อยแล้ว จะต้องทำขั้นตอนการแปลใหม่อีกครั้งและทำเช่นนี้จนกว่าจะไม่พบข้อผิดพลาดทางไวยกรณ์ใดเลย จึงจะถือว่าโปรแกรมถูกต้อง และสามารถรันโปรแกรมเพื่อแก้โจทย์ปัญหาได้
    4. การตรวจสอบการทำงาน
        ข้อผิดพลาดจากการทำงานอาจเกิดขึ้นได้จากหลาย ๆ สาเหตุ เช่น ข้อผิดพลาดจากข้อมูลนำเข้า ข้อผิดพลาดจากโครงสร้างที่ใช้จัดเก็บข้อมูล ข้อผิดพลาดในขั้นตอนวิธีที่ใช้แก้ปัญหา เป็นต้น ซึ่งล้วนแต่ทำให้ผลลัพธ์ที่ได้จาการประมวลผลโปรแกรมไม่ถูกต้อง การตรวจหาและแก้ไขข้อผิดพลาดจึงเป็นขั้นตอนที่สำคัญขั้นตอนหนึ่งโดยในขั้นตอนนี้ผู้เขียนโปรแกรมจะตรวจสอบว่า ขั้นตอนวิธีและโปรแกรมที่เขียนขึ้นสอดคล้องกับรายละเอียดของปัญหาหรือไม่ นอกจากนี้จะต้องตรวจสอบว่าขั้นตอนวิธีและโปรแกรมสามารถทำงานได้อย่างถูกต้องและสมบูรณ์ โดยการประมวลผลโปรแกรมด้วยชุดข้อมูลทดสอบหลาย ๆ ชุด โดยคำนึงถึงทั้งชุดข้อมูลทดสอบที่ถูกต้อง และชุดข้อมูลทดสอบที่ไม่ถูกต้อง เพื่อให้เกิดความมั่นใจว่าโปรแกรมสามารถรองรับข้อมูลเข้าได้ทุกกรณี โดยไม่ทำให้เกิดการหยุดชะงักระหว่างการประมวลผลโปรแกรม ในกรณีที่พบข้อผิดพลาด ผู้เขียนโปรแกรมจะดำเนินการแก้ไขทั้งในส่วนของโปรแกรมและส่วนของรหัสลำลองหรือผังงาน ตามแต่ที่ผู้เขียนโปรแกรมเลือกใช้สำหรับเขียนขั้นตอนวิธีในขั้นตอนของการออกแบบโปรแกรม
     5. การบำรุงรักษาโปรแกรม
         เมื่อมีการนำโปรแกรมไปใช้งานระยะหนึ่ง เป็นไปได้ที่ว่ามีการเปลี่ยนแปลงเงื่อนไขในการแก้ปัญหา เช่น ในตัวอย่างการคำนวณรายได้ของบริษัทเคเบิลทีวี อาจมีการเปลี่ยนแปลงอัตราค่าติดตั้งอุปกรณ์รับสัญญาณเคเบิลทีวีาำหรับบ้านพักอาศัย ซึ่งได้กำหนดเป็นค่าคงที่ในโปรแกรมหรือบริษัทมีนโยบายในการให้ส่วนลดกับสมาชิกเก่า หรือบริษัทเพิ่มแผนโฆษณาเชิญชวนให้ลูกค้าสมัครเป็นสมาชิก โดยมีเงื่อนไขพิเศษมากมาย เป็นเหตุให้ผู้เขียนโปรแกรมจะต้องแก้ไขโปรแกรมให้สอดคล้องกับเงื่อนไขที่เปลี่ยนแปลงไป การแก้ไขในลักษณะนี้เรียกว่า การบำรุงรักษาโปรแกรม
     6. การทำเอกสารประกอบโปรแกรม
         การทำเอกสารประกอบโปรแกรมเป็นงานที่สำคัญของการพัฒนาโปรแกรม เอกสารประกอบโปรแกรมช่วยให้ผู้ใช้โปรแกรมเข้าใจวัตถุประสงค์ข้อมูลที่จะต้องใช้กับโปรแกรม ตลอดจนผลลัพธ์ที่จะได้จากโปรแกรม การทำโปรแกรมทุกโปรแกรมจึงควรต้องทำเอกสารกำกับ โดยรวบรวมรายละเอียดตั้งแต่การพัฒนาโปรแกรมจนถึงการทดสอบโปรแกรมเพื่อใช้สำหรับการอ้างอิง เมื่อจะใช้งานโปรแกรมและเมื่อต้องการแก้ไขปรับปรุงโปรแกรม
        เอกสารที่จัดทำขึ้นควรประกอบด้วย
        1. วัตถุประสงค์
        2. ประเภทและชนิดคอมพิวเตอร์และอุปกรณ์ที่ใช้ในโปรแกรม
        3. วิธีการใช้โปรแกรม
        4. แนวคิดเกี่ยวกับการออกแบบโปรแกรม
        5. รายละเอียดโปรแกรม
        6. ข้อมูลตัวแทนที่ใช้ทดสอบ
        7. ผลลัพธ์ของการทดสอบ
        จะเห็นได้ว่าแม้ผู้เขียนโปรแกรมจะดำเนินการนับจากขั้นตอนการวิเคราะห์และกำหนดรายละเอียดของปัญหา การออกแบบโปรแกรม การเขียนโปรแกรม ตลอดจนการตรวจสอบการทำงานในเวลาเพียงน้อยนิด แต่ในขั้นตอนการบำรุงรักษาโปรแกรมจะมีช่วงเวลานานไปตลอดอายุการใช้งานของโปรแกรม ซึ่งนับเป็นสัดส่วนที่มากกว่า 4 ขั้นตอนแรกอย่างมาก
        กล่าวโดยสรุป ขั้นตอนวิธีการเขียนโปรแกรมจะประกอบด้วยการวิเคราะห์และกำหนดรายละเอียดของปัญหา เป็นการวิเคราะห์ข้อมูลนำเข้าและข้อมูลส่งออก  การออกแบบโปรแกรม เป็นการออกแบบลำดับการทำงานหรือแก้ปัญหา กำหนดขั้นตอนวิธีที่มีระบบระเบียบและชัดเจน โดยอาศัยโครงสร้างควบคุมทั้งโครงสร้างแบบลำดับ หรือ โครงสร้างแบบมีทางเลือก หรือ โครงสร้างแบบทำซ้ำ  การเขียนโปรแกรม กระบวนการที่ใช้ภาาาคอมพิวเตอร์ กำหนดโครงสร้างข้อมูลและขั้นตอนวิธีเพื่อแก้ปัญหาตามที่ออกแบบ ตั้งใช้หลักเกณฑ์ของภาษานั้น ๆ โดยไม่พบข้อผิดพลาด โปรแกรมจึงถูกต้อง และแก้โจทย์ปัญหาได้ การตรวจสอบการทำงาน คำนึงถึงชุดข้อมูลทดสอบที่ถูกต้องและไม่ถูกต้อง เพื่อความมั่นใจของโปรแกรมสามารถรองรับข้อมูลเข้าได้ทุกกรณี โดยไม่เกิดการหยุดชะงักการประมวลผลโปรแกรม  การบำรุงรักษาโปรแกรม  การเปลี่ยนแปลงเงื่อนไขในการแก้ปัญหาต้องแก้ไขโปรแกรมให้สอดคล้องกับเงื่อนไข  การทำเอกสารประกอบโปรแกรม งานสำคัญของการพัฒนาโปรแกรม เมื่อต้องการแก้ไขปรับปรุง
******************
หนังสืออ้างอิง

อนงค์นาฎ  ศรีวิหค.การโปรแกรมเบื้องต้นด้วยภาษาปาสคาล. สาขาคอมพิวเตอร์ สถาบันส่งเสริม
        การสอนวิทยาศาสตร์และเทคโนโลยี.