วันอังคารที่ 7 สิงหาคม พ.ศ. 2555
วันจันทร์ที่ 6 สิงหาคม พ.ศ. 2555
การเขียนโปรแกรม
โครงสร้างข้อมูล (Data structure)
เป็นวิธีการจัดเก็บข้อมูลในคอมพิวเตอร์เพื่อให้สามารถใช้งานได้อย่างมีประสิทธิภาพ บ่อยครั้งที่การเลือกโครงสร้างข้อมูลที่เหมาะสมจะทำให้เราสามารถเลือกใช้อัลกอริทึมที่มีประสิทธิภาพไปพร้อมกันได้ การเลือกโครงสร้างข้อมูลนั้นโดยส่วนใหญ่แล้วจะเริ่มต้นจากการเลือกแบบชนิดข้อมูลนามธรรม โครงสร้างข้อมูลที่ออกแบบเป็นอย่างดีจะสามารถรองรับการประมวลผลที่หนักหน่วงโดยใช้ทรัพยากรที่น้อยที่สุดเท่าที่จะเป็นไปได้ ทั้งในแง่ของเวลาและหน่วยความจำอัลกอริทึม (Algorithm)
กระบวนการแก้ปัญหาที่สามารถเข้าใจได้ มีลำดับหรือวิธีการในการแก้ไขปัญหาใดปัญหาหนึ่งอย่างเป็นขั้นเป็นตอนและชัดเจน เมื่อนำเข้าอะไร แล้วจะต้องได้ผลลัพธ์เช่นไร ซึ่งแตกต่างจากการแก้ปัญหาแบบสามัญสำนึกรหัสเทียม หรือซูโดโค้ด (Pseudo Code)
รหัสจำลองที่ใช้เป็นตัวแทนของอัลกอริทึม โดยมีถ้อยคำหรือประโยคคำสั่งที่เขียนอยู่ในรูปแบบของภาษาอังกฤษที่ไม่ขึ้นกับภาษาคอมพิวเตอร์ใดภาษาหนึ่ง การแสดงขั้นตอนวิธีการที่ใช้ภาษาเขียนที่เข้าใจได้ง่าย อาจใช้ภาษาไทยหรือภาษาอังกฤษก็ได้ขึ้นอยู่กับความสะดวกของผู้เขียนและกิจกรรมที่จะนำเสนอ มักใช้รูปแบบคล้ายประโยคภาษาอังกฤษเพื่ออธิบายรายละเอียดของอัลกอริทึม
ผังงาน (Flowchart)
การแสดงขั้นตอนวิธีการที่ใช้สัญลักษณ์ที่เข้าใจได้ง่าย แต่ให้รายละเอียดได้น้อยกว่า
ตัวอย่าง
รหัสเทียม หรือซูโดโค้ด
ผังงาน
ขั้นตอนการพัฒนาโปรแกรม
ขั้นตอนการพัฒนาโปรแกรมประกอบด้วย1.การวิเคราะห์ปัญหา
การวิเคราะห์ปัญหา ประกอบด้วยขั้นตอนต่างๆ ดังนี้- กำหนดวัตถุประสงค์ของงาน เพื่อพิจารณาว่าโปรแกรมต้องทำการประมวลผลอะไรบ้าง
- พิจารณาข้อมูลนำเข้า เพื่อให้ทราบว่าจะต้องนำข้อมูลอะไรเข้าคอมพิวเตอร์ ข้อมูลมีคุณสมบัติเป็นอย่างไร ตลอดจนถึงลักษณะและรูปแบบของข้อมูลที่จะนำเข้า
- พิจารณาการประมวลผล เพื่อให้ทราบว่าโปรแกรมมีขั้นตอนการประมวลผลอย่างไรและมีเงื่อนไปการประมวลผลอะไรบ้าง
- พิจารณาข้อสนเทศนำออก เพื่อให้ทราบว่ามีข้อสนเทศอะไรที่จะแสดง ตลอดจนรูปแบบและสื่อที่จะใช้ในการแสดงผล
2. การออกแบบโปรแกรม
การออกแบบขั้นตอนการทำงานของโปรแกรมเป็นขั้นตอนที่ใช้เป็นแนวทางในการลงรหัสโปรแกรม ผู้ออกแบบขั้นตอนการทำงานของโปรแกรมอาจใช้เครื่องมือต่างๆ ช่วยในการออกแบบ อาทิเช่น คำสั่งลำลอง (Pseudocode) หรือ ผังงาน (Flow chart) การออกแบบโปรแกรมนั้นไม่ต้องพะวงกับรูปแบบคำสั่งภาษาคอมพิวเตอร์ แต่ให้มุ่งความสนใจไปที่ลำดับขั้นตอนในการประมวลผลของโปรแกรมเท่านั้น
3.การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์
การเขียนโปรแกรมเป็นการนำเอาผลลัพธ์ของการออกแบบโปรแกรม มาเปลี่ยนเป็นโปรแกรมภาษาคอมพิวเตอร์ภาษาใดภาษาหนึ่ง ผู้เขียนโปรแกรมจะต้องให้ความสนใจต่อรูปแบบคำสั่งและกฎเกณฑ์ของภาษาที่ใช้เพื่อให้การประมวลผลเป็นไปตามผลลัพธ์ที่ได้ออกแบบไว้ นอกจากนั้นผู้เขียนโปรแกรมควรแทรกคำอธิบายการทำงานต่างๆ ลงในโปรแกรมเพื่อให้โปรแกรมนั้นมีความกระจ่างชัดและง่ายต่อการตรวจสอบและโปรแกรมนี้ยังใช้เป็นส่วนหนึ่งของเอกสารประกอบ
4.การทดสอบและแก้ไขโปรแกรม
การทดสอบโปรแกรมเป็นการนำโปรแกรมที่ลงรหัสแล้วเข้าคอมพิวเตอร์ เพื่อตรวจสอบรูปแบบกฎเกณฑ์ของภาษา และผลการทำงานของโปรแกรมนั้น ถ้าพบว่ายังไม่ถูกก็แก้ไขให้ถูกต้องต่อไป ขั้นตอนการทดสอบและแก้ไขโปรแกรม
5.การทำเอกสารประกอบโปรแกร
การทำเอกสารประกอบโปรแกรมเป็นงานที่สำคัญของการพัฒนาโปรแกรม เอกสารประกอบโปรแกรมช่วยให้ผู้ใช้โปรแกรมเข้าใจวัตถุประสงค์ ข้อมูลที่จะต้องใช้กับโปรแกรม ตลอดจนผลลัพธ์ที่จะได้จากโปรแกรม การทำโปรแกรมทุกโปรแกรมจึงควรต้องทำเอกสารกำกับ เพื่อใช้สำหรับการอ้างอิงเมื่อจะใช้งานโปรแกรมและเมื่อต้องการแก้ไขปรับปรุงโปรแกรม เอกสารประกอบโปรแกรมที่จัดทำ ควรประกอบด้วยหัวข้อต่อไปนี้- วัตถุประสงค์
- ประเภทและชนิดของคอมพิวเตอร์และอุปกรณ์ที่ใช้ในโปรแกรม
- วิธีการใช้โปรแกรม
- แนวคิดเกี่ยวกับการออกแบบโปรแกรม
- รายละเอียดโปรแกรม
- ข้อมูลตัวแทนที่ใช้ทดสอบ
- ผลลัพธ์ของการทดสอบ
6.การบำรุงรักษาโปรแกรม
เมี่อโปรแกรมผ่านการตรวจสอบตามขั้นตอนเรียบร้อยแล้ว และถูกนำมาให้ผู้ใช้ได้ใช้งาน ในช่วงแรกผู้ใช้อาจจะยังไม่คุ้นเคยก็อาจทำให้เกิดปัญหาขึ้นมาบ้าง ดังนั้นจึงต้องมีผู้คอยควบคุมดูแลและคอยตรวจสอบการทำงาน การบำรุงรักษาโปรแกรมจึงเป็นขั้นตอนที่ผู้เขียนโปรแกรมต้องคอยเฝ้าดูและหาข้อผิดพลาดของโปรแกรมในระหว่างที่ผู้ใช้ใช้งานโปรแกรม และปรับปรุงโปรแกรมเมื่อเกิดข้อผิดพลาดขึ้น หรือในการใช้งานโปรแกรมไปนานๆ ผู้ใช้อาจต้องการเปลี่ยนแปลงการทำงานของระบบงานเดิมเพื่อให้เหมาะกับเหตุการณ์ นักเขียนโปรแกรมก็จะต้องคอยปรับปรุงแก้ไขโปรแกรมตามความต้องการของผู้ใช้ที่เปลี่ยนแปลงไปนั่นเอง
ประวัติภาษาซี
ภาษาซีเป็นภาษาระดับสูง( High-Level-Language) และภาษาโปรแกรมที่โปรแกรมเมอร์นิยมใช้กันมาก เนื่องจากเป็นภาษาที่มีความเร็วในการทำงานสูงใกล้เคียงกับภาษาเครื่อง มีโครงสร้างที่ชัดเจน เข้าใจง่าย สามารถเขียนโปรแกรมเพื่อติดต่อกับฮาร์ดแวร์ของเครื่องคอมพิวเตอร์ได้อย่างดี ภาษาซีเกิดขึ้นในปี ค . ศ .1972 ผู้คิดค้นคือนายเดนนีส ริทชี (Dennis Ritchi) การศึกษาภาษาซีถือว่าเป็นพื้นฐานในการศึกษาภาษาใหม่ ๆ ได้โครงสร้างของภาษาซี
1. ส่วนหัวของโปรแกรม
ส่วนหัวของโปรแกรมนี้เรียกว่า Preprocessing Directive ใช้ระบุเพื่อบอกให้คอมไพเลอร์กระทำการใด ๆ ก่อนการแปลผลโปรแกรมในที่นี่คำสั่ง #include <stdio.h> ใช้บอกกับคอมไพเลอร์ให้นำเฮดเดอร์ไฟล์ที่ระบุคือ stdio.h เข้าร่วมในการแปลโปรแกรมด้วย โดยการกำหนด preprocessing directives นี้จะต้องขึ้นต้นด้วยเครื่องหมาย # เสมอ
คำสั่งที่ใช้ระบุให้คอมไพเลอร์นำเฮดเดอร์ไฟล์เข้าร่วมในการแปลโปรแกรม สามารถเขียนได้ 2 รูปแบบ คือ
- #include < ชื่อเฮดเดอร์ไฟล์ > คอมไพเลอร์จะทำการค้นหาเฮดเดอร์ไฟล์ที่ระบุจากไดเรกทอรีที่ใช้สำหรับเก็บเฮดเดอร์ไฟล์โดยเฉพาะ ( ปกติคือไดเรกทอรีชื่อ include)
- #include “ ชื่อเฮดเดอร์ไฟล์ ” คอมไพเลอร์จะทำการค้นหาเฮดเดอร์ไฟที่ระบุ จากไดเร็คทอรีเดียวกันกับไฟล์ source code นั้น แต้ถ้าไม่พบก็จะไปค้นหาไดเร็คทอรีที่ใช้เก็บ เฮดเดอร์ไฟล์โดยเฉพาะ
2. ส่วนของฟังก์ชั่นหลัก
ฟังก์ชั่นหลักของภาษาซี คือ ฟังก์ชั่น main( ) ซึ่งโปรแกรมภาษาซีทุกโปรแกรมจะต้องมีฟังก์ชั่นนี้อยู่ในโปรแกรมเสมอ จะเห็นได้จากชื่อฟังก์ชั่นคือ main แปลว่า “ หลัก ” ดังนั้น การเขียนโปรแกรมภาษซีจึงขาดฟังก์ชั่นนี้ไปไม่ได้ โดยขอบเขตของฟังก์ชั่นจะถูกกำหนดด้วยเครื่องหมาย { และ } กล่าวคือ การทำงานของฟังก์ชั่นจะเริ่มต้นที่เครื่องหมาย { และจะสิ้นสุดที่เครื่องหมาย } ฟังก์ชั่น main( ) สามารถเขียนในรูปแบบของ void main(void) ก็ได้มีความหมายเหมือนกัน คือ หมายความว่า ฟังก์ชั่น main() จะไม่มีอาร์กิวเมนต์ (argument) คือไม่มีการรับค่าใด ๆ เข้ามาประมวลผลภายในฟังก์ชั่น และจะไม่มีการคืนค่าใด ๆ กลับออกไปจากฟังก์ชั่นด้วย
3. ส่วนรายละเอียดของโปรแกรม
เป็นส่วนของการเขียนคำสั่ง เพื่อให้โปรแกรมทำงานตามที่ได้ออกแบบไว้
ชนิดของข้อมูลในภาษาซี
ภาษาซีเป็นอีกภาษาหนึ่งที่มีชนิดของข้อมูลให้ใช้งานหลายอย่างด้วยกัน ซึ่งชนิดของข้อมูลแต่ละอย่างมีขนาดเนื้อที่ที่ใช้ในหน่วยความจำที่แตกต่างกัน และเนื่องจากการที่มีขนาดที่แตกต่างกันไป ดังนั้นในการเลือกใช้งานประเภทข้อมูลก็ควรจะคำนึงถึงความจำเป็นในการใช้งานด้วย สำหรับประเภทของข้อมูลมีดังนี้คือ
1. ข้อมูลชนิดตัวอักษร (Character) คือข้อมูลที่เป็นรหัสแทนตัวอักษรหรือค่าจำนวนเต็มได้แก่ ตัวอักษร ตัวเลข และกลุ่มตัวอักขระพิเศษใช้พื้นที่ในการเก็บข้อมูล 1 ไบต์
2. ข้อมูลชนิดจำนวนเต็ม (Integer) คือข้อมูลที่เป็นเลขจำนวนเต็ม ได้แก่ จำนวนเต็มบวก จำนวนเต็มลบ ศูนย์ ใช้พื้นที่ในการเก็บ 2 ไบต์
3. ข้อมูลชนิดจำนวนเต็มที่มีขนาด 2 เท่า (Long Integer) คือข้อมูลที่มีเลขเป็นจำนวนเต็ม ใช้พื้นที่ 4 ไบต์
4. ข้อมูลชนิดเลขทศนิยม (Float) คือข้อมูลที่เป็นเลขทศนิยม ขนาด 4 ไบต์
5. ข้อมูลชนิดเลขทศนิยมอย่างละเอียด (Double) คือข้อมูลที่เป็นเลขทศนิยม ใช้พื้นที่ในการเก็บ 8 ไบต์
การเลือกทำงานตามเงื่อนไข (คำสั่ง IF ELSE SWITCH)
คำสั่ง if
คำสั่ง if จะใช้ในกรณีที่มีทางเลือกให้ทำงานอยู่เพียงทางเลือกเดียว โดยถ้าตรวจสอบเงื่อนไขแล้วเป็นจริง จึงจะทำงานตามคำสั่ง
รูปแบบคำสั่ง if
if (เงื่อนไข )
{ คำสั่งที่ 1; } คำสั่งที่ 2; |
หากเงื่อนไขที่กำหนดเป็นจริงแล้ว คำสั่งต่าง ๆ ที่อยู่ภายในบล๊อคของเงื่อนไข if ก็จะได้รับการประมวลผล (ซึ่งมากกว่า1 คำสั่ง) แต่ถ้าตรวจสอบแล้วพบว่า เงื่อนไขเป็นเท็จ คำสั่งที่อยู่ภายในบล๊อคของเงื่อนไข if ก็จะไม่ได้รับการประมวลผล คือ จะข้ามไปทำการประมวลผลคำสั่งที่อยู่ถัดจากบล๊อคของ ifทันที
โฟลวชาร์ตแสดงการทำงานของคำสั่งเงื่อนไข if
ตัวอย่าง โปรแกรมแสดงการทำงานของคำสังเงื่อนไข if
1 :
|
#include <stdio.h>
|
2 :
|
#include <conio.h>
|
3 :
|
void main()
|
4 :
|
}
|
5 :
|
clrscr();
|
6 :
|
int age;
|
7 :
|
printf("How old are you = ");
|
8 :
|
scanf ("%d",&age);
|
9 :
|
if(age<18)
|
10 :
|
printf(" Your are young\n");
|
11 :
|
printf("You are %d years old");
|
12 :
|
getch();
|
13 :
|
{
|
ผลลัพธ์ของโปรแกรม
ผลการรันครั้งที่ 1
How old are you = 15
Your are young
You are 15 years old
ผลการรันครั้งที่ 2
How old are you = 18
You are 18 years old
อธิบายโปรแกรม
โปรแกรมทำการตรวจสอบเงื่อนไขว่า หากอายุน้อยกว่า 18 ปี ให้พิมพ์คำข้อความ Your are young ซึ่งสังเกตโปรแกรมบรรทัดที่ 9 เท่านั้นที่เป็นคำสั่งภายในบล๊อคของคำสั่งif ส่วนบรรทัดที่ 10 เป็นคำสั่งนอกบล๊อคของ if ดังจะเห็นได้จากผลลัพธ์ที่แสดง
>> หากเงื่อนไขที่ตรวจสอบเป็นจริง ข้อความในบรรทัดที่ 9 จะถูกพิมพ์ หลังจากนั้นก้จะทำคำสั่งที่อยู่นอกเงื่อนไข ifต่อไป คือพิมพ์ข้อความในบรรทัดที่ 10
>> แต่หากเงื่อนไขที่ตรวจสอบเป็นเท็จ ข้อความในบรรทัดที่ 9 ที่เป็นคำสั่งในส่วนของเงื่อนไข if ก็จะไม่ถูกประมวลผล แต่จะข้ามการทำงานไปประมวลผลในบรรทัดที่ 10เลย
คำสั่ง if-else
คำสั่ง if-else จะใช้ในกรณีที่มีทางเลือกให้ทำงาน 2 ทางเลือกขึ้นไป โดยการทำงานของคำสั่ง if-else จะเริ่มจากการตรวจสอบเงื่อนไข หถ้าผลออกมาเป็นจริงจะทำงานตามคำสั่งที่อยู่หลัง if แต่ถ้าการตรวจสอบเงื่อนไผลออกมาเป็นเท็จ ให้ทำงานตามคำสั่งที่อยู่หลัง else แทน
รูปแบบคำสั่ง if-else
if (เงื่อนไข)
{ คำสั่งที่ 1; } else { คำสั่งที่ 2; } คำสั่งที่ 3; |
เป็นคำสั่งที่ช่วยให้การตรวจสอบเงื่อนไขสมบูรณ์ขึ้น โดยหากตรวจสอบเงื่อนไขของคำสั่ง if แล้วเป็นเท็จ ก็จะเข้ามาทำงานภายบล๊อกของคำสั่ง else แทน กล่าวคือ หากตรวจสอบเงื่อนไขแล้วเป็นจริง ก็จะประมวลผลคำสั่งในบล๊อกของ if แต่หากเงื่อนไขและประมวลผลตามคำสั่งเงื่อนไข if-else เรียบร้อบแล้ว ก็จะทำงานตามคำสั่งที่อยู่ถัดจาก if-else นั้นต่อไป
โฟลวชาร์ตแสดงการทำงานของคำสั่งเงื่อนไข if-else
ตัวอย่าง
if (a % 2 = = 0)
| |
printf ("Even number");
|
ถ้าค่าของ a หารด้วย 2 ลงตัว (เหลือเศษ 0)ให้แสดงข้อความ Even number
|
else
| |
printf("Odd number");
|
แต่ถ้าเงื่อนไขของ if เป็นเท็จ (a หารด้วย 2ไม่ลงตัว) ให้แสดงข้อความ Odd number
|
โปรแกรมแบบวนซ้ำ (คำสั่งประเภท For , while,do while)
คำสั่งวนลูปเป็นคำสั่งที่สามารถควบคุมโปรแกรมให้ทำงานเป็นจำนวนรอบตามที่เรากำหนดไว้ หรือทำงานจนกว่าเงื่อนไขที่กำหนดไว้เป็นเท็จ จึงจะออกจากคำสั่งวนลูปได้
คำสั่ง for
for เป็นคำสั่งที่สั่งให้โปแกรมมีการทำงานซ้ำ ๆ วนลูปจนกว่าเงื่อนไขที่กำหนดไว้เป็นเท็จ จึงออกจากคำสั่ง for ไปทำคำสั่งถัดไป ควรใช้คำสั่ง for ในกรณีที่ทราบจำนวนรอบของการทำงาน
รูปแบบการใช้คำสั่ง for
for (expression1; expression2; expression3)
statement;
หรือ
for (expression1; expression2; expression3)
{
statement(s);
}
ลักษณะการทำงานของคำสั่ง for สามารถเขียนเป็นแผนผังได้ดังนี้
คำสั่ง while
while เป็นคำสั่งที่มีการทำงานซ้ำ ๆ เป็นลูป และมีลักษณะการทำงานของคำสั่งคล้ายกับคำสั่ง for แตกต่างกันตรงที่ การใช้ while ไม่ต้องทราบจำนวนรอบของการทำงานที่แน่นอน แต่ต้องมีเงื่อนไขที่เป็นเท็จจึงจะออกจากคำสั่ง while ได้
รูปแบบการใช้คำสั่ง while
while (expression) statement;
หรือ
while (expression)
{
statement(s);
}
ลักษณะการทำงานของคำสั่ง while สามารถเขียนเป็นแผนผังได้ดังนี้
คำสั่ง do while
do while เป็นคำสั่งที่มีการทำงานซ้ำ ๆ วนลูป คล้ายกับคำสั่ง while มาก แตกตางกันตรงที่คำสั่ง do while จะทดสอบเงื่อนไขหลังจากที่ได้ทำงานตามคำสั่งภายในลูปไปแล้ว 1 รอบ จากนั้นจึงค่อยย้อนกลับมาทดสอบเงื่อนไขอีกครั้งหนึ่ง ถ้าเงื่อนไขเป็นจริงก็จะทำงานตามคำสั่งภายในลูป แต่ถ้าเงื่อนไขเป็นเท็จจะออกจากคำสั่ง do while ทันที
do while เป็นคำสั่งที่มีการทำงานซ้ำ ๆ วนลูป คล้ายกับคำสั่ง while มาก แตกตางกันตรงที่คำสั่ง do while จะทดสอบเงื่อนไขหลังจากที่ได้ทำงานตามคำสั่งภายในลูปไปแล้ว 1 รอบ จากนั้นจึงค่อยย้อนกลับมาทดสอบเงื่อนไขอีกครั้งหนึ่ง ถ้าเงื่อนไขเป็นจริงก็จะทำงานตามคำสั่งภายในลูป แต่ถ้าเงื่อนไขเป็นเท็จจะออกจากคำสั่ง do while ทันที
รูปแบบการใช้คำสั่ง do while
|
ลักษณะการทำงานของคำสั่ง do while สามารถเขียนเป็นแผนผังได้ดังนี้
สมัครสมาชิก:
บทความ (Atom)