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

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

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

วงจรการพัฒนาโปรแกรม   (Program Development Life Cycle: PDLC)
วงจรการพัฒนาโปรแกรม (PDLC) คือ ขั้นตอนการทำงานที่โปรแกรมเมอร์ใช้สำหรับสร้างโปรแกรม  ประกอบด้วย 5 ขั้นตอน ดังนี้

  1. การวิเคราะห์ปัญหา (Program Analysis)
  2. การออกแบบโปรแกรม (Program Design)
  3. การเขียนโปรแกรม (Program Coding)
  4. การทดสอบโปรแกรม (Program Testing)
  5. การบำรุงรักษาโปรแกรม (Program Maintenance) 
 
1. การวิเคราะห์ปัญหา (Problem Analysis)
เป็นขั้นตอนแรกของวงจรการพัฒนาโปรแกรม ซึ่งเป็นการศึกษาถึงปัญหาที่เกิดขึ้นและค้นหาสิ่งที่ต้องการ เพื่อพิจารณาสิ่งต่อไปนี้

  1. ข้อมูลที่จะนำเข้าสู่คอมพิวเตอร์มีอะไรบ้าง
  2. วิธีการประมวลผลข้อมูลที่นำเข้าและผลลัพธ์ที่ต้องการ
  3. การแสดงผลที่ได้ ต้องการแสดงผลลัพธ์อะไรและมีหน้าตาเป็นอย่างไร
 
2. การออกแบบโปรแกรม (Program Design)
                  เป็นขั้นตอนที่ 2 ของวงจรการพัฒนาโปรแกรมซึ่งการออกแบบโปรแกรมเป็นขั้นตอนที่ต้องใช้เครื่อง มือช่วยในการออกแบบ เช่น ผังงาน (Flowchart) รหัสจำลอง (Pseudo code) เป็นต้น ซึ่งจะช่วยให้เข้าใจขั้นตอนการทำงานของโปรแกรมได้ดียิ่งขึ้น

ผังงาน (Flowchart) เป็นเครื่องมือชนิดหนึ่งที่ใช้รูปภาพแสดงถึงขั้นตอนการเขียนโปรแกรมและมีลูกศรแสดงทิศทางการไหลของข้อมูลจากจุดเริ่มต้นถึงจุดเส้นสุด
 
 
3. การเขียนโปรแกรม (Program Coding)
ซึ่งเป็นขั้นตอนหลังจากที่ได้มีการออกแบบโปรแกรมแล้ว ขั้นตอนนี้เป็นการเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์ เช่น ภาษา C ,ภาษา Pascal เป็นต้น ทั้งนี้แต่ละภาษาจะมีความเหมาะสมในการใช้งานแตกต่างกันออกไป

4. การทดสอบโปรแกรม (Program Testing)
เป็นการนำโปรแกรมที่ลงรหัสแล้วเข้าคอมพิวเตอร์ เพื่อตรวจสอบรูปแบบกฎเกณฑ์ของภาษา และผลการทำงานของโปรแกรมนั้น ถ้าพบว่ายังไม่ถูกก็แก้ไขให้ถูกต้อง   ซึ่งการเกิด Error ของโปรแกรมมักมีมาจาก 2 สาเหตุเท่านั้น คือ
1. Syntax Error คือ ข้อผิดพลาดที่เกิดจากการเขียนโค้ดคำสั่ง (Source Code) ที่ไม่ตรงกับ...ไวยากรณ์ (Syntax) ของภาษาโปรแกรมมิ่งนั้นๆ
2.  Logic Error เป็นข้อผิดพลาดที่เกิดจากการออกแบบอัลกอริทึมให้ทำงานผิดวัตถุประสงค
ข้อผิดพลาดของโปรแกรม เรียกว่า “Bug”                
ส่วนการแก้ไขข้อผิดพลาด เรียกว่า “Degug”                                       
โปรแกรมที่ทำงานไม่ได้ตามวัตถุประสงค์ เรียกว่ามี “Error”

5. การบำรุงรักษาโปรแกรม    (Program Maintenance)
เมื่อโปรแกรมผ่านการตรวจสอบตามขั้นตอนเรียบร้อยแล้ว และถูกนำมาให้ผู้ใช้ได้ใช้งาน ในช่วงแรกผู้ใช้อาจจะยังไม่คุ้นเคยก็อาจทำให้เกิดปัญหาขึ้นมาบ้าง ดังนั้นจึงต้องมีผู้คอยควบคุมดูแลและคอยตรวจสอบการทำงาน การบำรุงรักษาโปรแกรมจึงเป็นขั้นตอนที่ผู้เขียนโปรแกรมต้องคอยเฝ้าดูและหา ข้อผิดพลาดของโปรแกรมในระหว่างที่ผู้ใช้ใช้งานโปรแกรม และปรับปรุงโปรแกรมเมื่อเกิดข้อผิดพลาดขึ้น หรือในการใช้งานโปรแกรมไปนานๆ ผู้ใช้อาจต้องการเปลี่ยนแปลงการทำงานของระบบงานเดิมเพื่อให้เหมาะกับ เหตุการณ์ นักเขียนโปรแกรมก็จะต้องคอยปรับปรุงแก้ไขโปรแกรมตามความต้องการของผู้ใช้ที่ เปลี่ยนแปลงไปนั่นเอง 


ตัวอย่างการเขียนรหัสเทียมและผังงาน


ตัวอย่างการเขียนรหัสเทียมและผังงาน


ตัวอย่างการเขียนรหัสเทียม
 
Algorithm  การหาค่าเฉลี่ย
1. ตัวนับ = 0
2. ผลรวม = 0
3. รับค่าทางแป้นพิมพ์เก็บไว้ใน (ข้อมูล)
4. ถ้าข้อมูลมากกว่า 0
         เพิ่มค่าตัวนับขึ้นหนึ่งค่า
         ผลรวม = ผลรวม + ค่าข้อมูล
         ย้อนกลับไปทำขั้นตอนที่ 3
         ถ้าไม่มากกว่าไปทำขั้นตอนที่ 5
5. ค่าเฉลี่ย = ผลรวมหารด้วยตัวนับ
6. แสดงค่าเฉลี่ยทางจอภาพ โดยมีทศนิยมสองตำแหน่ง
7. จบ
         จะเห็นว่าขั้นตอนการหาค่าเฉลี่ยได้เขียนไว้อย่างเข้าใจ เราสามารถทราบได้ว่าในการทำงานต่างๆ จะต้องใช้ตัวแปรใดบ้าง แต่ละขั้นตอนมีการประมวลผลอย่างไร แต่โดยทั่วไปแล้วซูโดโค้ดจะถูกเขียนด้วยภาษาอังกฤษ ดังต่อไปนี้

รูปแบบ
         
Algorithm Avarage_Sum
1. count = 0
2. sum =0
3. INPUT (value)
4. IF value > 0 THEN
        count = count+1
        sum = sum+ value
        GOTO 3
    ELSE GOTO 5
5. avarage = sum/count
6. OUTPUT (avarage)
7. END

ตัวอย่างผังงาน


ตัวอย่าง 1 เขียนผังงานที่แสดงขั้นตอนการส่งจดหมาย


ตัวอย่างที่ 2 เขียนผังงานแสดงวิธีการรับประทานยา ที่แบ่งขนาดรับประทานตามอายุของผู้ทานดังนี้ 
• อายุมากกว่า 10 ปี รับประทานครั้งละ 2 ช้อนชา
• อายุมากกว่า 3 ปี ถึง 10 ปี รับประทานครั้งละ 1 ช้อนชา
• อายุมากกว่า 1 ปี ถึง 3 ปี รับประทานครั้งละ 1/2 ช้อนชา
• แรกเกิดถึง 1 ปี ห้ามรับประทาน


โครงสร้างการทำงานแบบมีการเลือก ( Selection ) เป็น โครงสร้างที่ใช้การตรวจสอบเงื่อนไขเพื่อการทำงานอย่างใดอย่างหนึ่ง โดยโครงสร้างแบบนี้จะมีอยู่ด้วยกัน 2 รูปแบบ คือ IF - THEN - ELSE และ IF - THEN

โครง สร้างแบบ IF - THEN - ELSE เป็นโครงสร้างที่จะทำการเปรียบเทียบเงื่อนไขที่ใส่ไว้ในส่วนหลังคำว่า IF และเมื่อได้ผลลัพธ์จากการเปรียบเทียบก็จะเลือกว่าจะทำงานต่อในส่วนใด กล่าวคือถ้าเงื่อนไขเป็นจริง ( TRUE ) ก็จะเลือกไปทำงานต่อที่ส่วนที่อยู่หลัง THEN แต่ถ้าเงื่อนไขเป็นเท็จ ( FALSE ) ก็จะไปทำงานต่อในส่วนที่อยู่หลังคำว่า ELSE
แต่ ถ้าสำหรับโครงสร้างแบบ IF - THEN เป็นโครงสร้างที่ไม่มีการใช้ ELSE ดังนั้น ถ้ามีการเปรียบเทียบเงื่อนไขที่อยู่หลัง IF มีค่าเป็นจริง ก็จะไปทำส่วนที่อยู่หลัง Then แต่ถ้าเงื่อนไขเป็นเท็จ ก็จะไปทำคำสั่งที่อยู่ถัดจาก IF - THEN แทน
                                 
ตัวอย่าง 3 การเขียนผังงานอ่านค่าข้อมูลเข้ามาเก็บไว้ในตัวแปร A และ B แล้วทำการเปรียบเทียบในตัวแปรทั้งสอง  
โดยมีเงื่อนไขดังนี้
• ถ้า A มากกว่า B ให้คำนวณหาค่า A - B และเก็บผลลัพธ์ไว้ในตัวแปรชื่อ RESULT
• ถ้า A น้อยกว่าหรือเท่ากับ B ให้คำนวณหาค่า A + B และเก็บผลลัพธ์ไว้ในตัวแปรชื่อ RESULT

อัลกอริทึม (Algorithm)

อัลกอริทึม (Algorithm)


อัลกอริธึม (Algorithm) คือ กระบวนการ การทำงานที่ใช้การตัดสินใจ โดยนำหลักเหตุผลและคณิตศาสตร์มาช่วยเลือกวิธีการหรือขั้นตอนการดำเนินงานต่อ ไป จนกระทั่งถึงขั้นตอนสุดท้าย เป็นวิธีการที่ใช้แยกย่อยและเรียงลำดับขั้นตอนของกระบวนการในการทำงานต่างๆ เพื่อเพิ่มประสิทธิภาพในการค้นหาและแก้ไขปัญหา
ที่มาของคำว่าอัลกอริธึม (Algorithm) คือ คำที่ตั้งให้เป็นเกียรติแก่ อแลน เดอะ กอริทึม ทิวริง (Alan The Gorithm Turing) ผู้ค้นพบว่าการพิสูจน์ทางคณิตศาสตร์หรือปัญหาทางตรรกะ สามารถหาคำตอบได้ด้วยชุดของขั้นตอนวิธีที่ถูกต้อง
ประโยชน์ของอัลกอริธึม (Algorithm) คือ ทำให้ไม่สับสนกับวิธีดำเนินงาน เพราะทุกอย่างจะถูกจัดเรียงเป็นขั้นตอนมีวิธีการและทางเลือกไว้ให้ เมื่อนำมาใช้จะทำให้การทำงานสำเร็จอย่างรวดเร็ว ทำให้ปัญหาลดลงหรือสามารถค้นหาต้นเหตุของปัญหาได้อย่างรวดเร็ว เนื่องจากกระบวนการถูกแยกแยะกิจกรรม ขั้นตอน และความสัมพันธ์ ออกมาให้เห็นอย่างชัดเจน


อัลกอริธึม (Algorithm) หรือขั้นตอนวิธีทางคอมพิวเตอร์ต้องมีการวัดประสิทธิภาพโดยนำความรู้ทางคณิตศาสตร์มาใช้ ดังนี้


1. การพิสูจน์โดยการเหนี่ยวนำเชิงคณิตศาสตร์ มีหลักการคือ กล่าวถึงว่าทฤษฎีนั้นถูกต้องสำหรับค่าตัวแรกเริ่มต้นหรือค่าต่ำสุด โดยแทนค่าดังกล่าวลงในทฤษฎีเพื่อแสดงให้เห็นว่า ทฤษฎีนั้นถูกต้อง จากนั้นสมมติให้ทฤษฎีนั้นยังถูกต้องเมื่อเพิ่มค่าตัวแปรจนถึงค่าที่ n-1 แล้วจึงนำสมมติฐานนั้นมาพิสูจน์ทฤษฎี โดยการทำให้ค่าของตัวแปรเพิ่มขึ้นอีกหนึ่งจำนวน


2. การหาผลบวกและผลคูณ


3. ทฤษฎีตัวเลข


4. การประมาณค่า


5. การหาสัมประสิทธิแบบ Binomial


6. การสรุปโดยการประมาณขอบเขตบนสุด

การประยุกต์ใช้อัลกอริธึม

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

ตัวอย่างกรณีศึกษาอัลกอริธึม “URL Prefix Check of SAP web.”

URL Prefix check of SAP web algorithm





รหัสเทียม หรือซูโดโค้ด (Pseudo Code)

คือ การแสดงขั้นตอนวิธีการที่ใช้ภาษาเขียนที่เข้าใจได้ง่าย อาจใช้ภาษาไทยหรือภาษาอังกฤษก็ได้ขึ้นอยู่กับความสะดวกของผู้เขียนและกิจกรรมที่จะนำเสนอ มักใช้รูปแบบคล้ายประโยคภาษาอังกฤษเพื่ออธิบายรายละเอียดของอัลกอริทึม

ผังงาน (Flowchart) 

         คือ การแสดงขั้นตอนวิธีการที่ใช้สัญลักษณ์ที่เข้าใจได้ง่าย แต่ให้รายละเอียดได้น้อยกว่า
 
ความแตกต่างของ Algorithm และ Pseudo Code  
 
คือ การแสดงความคิดที่ได้จากการจินตนาการถึงขั้นตอน ซึ่งขั้นตอนที่อยู่ในความคิดก็คือ Algorithm ที่ผ่านการแยก และจัดลำดับแล้ว เมื่อนำเสนอก็อาจใช้ภาษาง่าย ๆ แต่หากนำเสนอด้วยการเขียนเป็นภาษาที่สื่อให้ทุกคนเข้าใจตรงกันได้ง่ายก็คือ Pseudo Code นั้นเอง สำหรับหนังสือหลายเล่มแสดง Algorithm ด้วย Pseudo Code ก็ยังเรียกว่า Algorithm ได้เช่นกัน
 
            http://www.bestwitted.com/?p=561

โครงสร้างข้อมูล (Data Structure)

โครงสร้างข้อมูล (Data Structure)

แบ่งออกเป็น 2 ลักษณะ คือ
1. โครงสร้างเชิงกายภาพ (Physical Data Structure)
อธิบายวิธีการจัดเก็บข้อมูลในสื่อต่าง ๆ เช่น เทปแม่เหล็ก จานแม่เหล็กและดิสก์


2. โครงสร้างเชิงตรรกะ (Logic Data Structure)
อธิบาย การจัดเก็บข้อมูลและความสัมพันธ์ต่าง ๆ ของข้อมูลในระบบฐานข้อมูล แสดงให้เห็นถึงการจัดระเบียบการทำงานและการมีปฎิสัมพันธ์ภายในระบบฐานข้อมูล โดยมีลำดับขั้นจากหน่วยข้อมูลที่เล็กที่สุดไปยังฐานข้อมูล





โครงสร้างข้อมูล.(Data Structure)

ในการนำข้อมูลไปใช้นั้น เรามีระดับโครงสร้างของข้อมูลดังนี้

- บิต (Bit) คือ ข้อมูลที่มีขนาดเล็กที่สุด เป็นข้อมูลที่เครื่องคอมพิวเตอร์สามารถเข้าใจและนำไปใช้ งานได้ ซึ่งได้แก่ เลข 0 หรือ เลข 1 เท่านั้น

- ไบต์ (Byte) หรือ อักขระ (Character) ได้แก่ ตัวเลข หรือ ตัวอักษร หรือ สัญลักษณ์พิเศษ 1 ตัว เช่น 0, 1, …, 9, A, B, …, Z และเครื่องหมายต่างๆ ซึ่ง 1 ไบต์จะเท่ากับ 8 บิต หรือ ตัวอักขระ 1 ตัว เป็นต้น

- ฟิลด์ (Field) ได้แก่ ไบต์ หรือ อักขระตั้งแต่ 1 ตัวขึ้นไปรวมกันเป็นฟิลด์ เช่น เลขประจำตัว(ID) ชื่อพนักงาน(name) เป็นต้น

- เรคคอร์ด (Record) ได้แก่ ฟิลด์ตั้งแต่ 1 ฟิลด์ ขึ้นไป ที่มีความสัมพันธ์เกี่ยวข้องรวมกันเป็นเรคคอร์ด เช่น ชื่อ นามสกุล เลขประจำตัว ยอดขาย ข้อมูลของพนักงาน 1 คน เป็น 1 เรคคอร์ด

- ไฟล์ (Files) หรือ แฟ้มข้อมูล ได้แก่ เรคคอร์ดหลายๆ เรคคอร์ดรวมกัน ซึ่งเป็นเรื่องเดียวกัน เช่น ข้อมูลของประวัติพนักงานแต่ละคนรวมกันทั้งหมด เป็นไฟล์หรือแฟ้มข้อมูลเกี่ยวกับประวัติพนักงานของบริษัท เป็นต้น

- ฐานข้อมูล (Database) คือ การเก็บรวบรวมไฟล์ข้อมูลหลายๆ ไฟล์ที่เกี่ยวข้องกันมารวมเข้าด้วยกัน เช่น ไฟล์ข้อมูลของแผนกต่างๆ มารวมกัน เป็นฐานข้อมูลของบริษัท เป็นต้น



หน่วยในการวัดขนาดของข้อมูล

8 Bit = 1 Byte
1,024 Byte = 1 KB (กิโลไบต์)
1,024 KB = 1 MB (เมกกะไบต์)
1,024 MB = 1 GB (กิกะไบต์)
1,024 GB = 1TB (เทระไบต์)

credit :  http://www.bloggang.com/viewblog.php?id=numpuang&date=11-06-2009&group=8&gblog=9

Code ตัวอย่างโปรแกรม และหน้าตาโปรแกรมภาษาซี

Code ตัวอย่างโปรแกรม และหน้าตาโปรแกรมภาษาซี


โปรแกรมHello world  
#include<stdio.h>
/* This is my first program. */
main()
{
       clrscr();
       printf("Hello,world \n");
       printf("Press any key to stop \n");
       getch();
} /*end of main*/

 
โค้ดโปรแกรมคำนวณอายุ
#include
main()
{
char name[30];
int birth,current;
printf("Enter name : ");
scanf("%s",name);
printf("Enter Birth of Year : ");
scanf("%d",&birth);
printf("Enter Current Year : ");
scanf("%d",&current);
system("cls");
printf("%s is %d years old.",name,current-birth);
getch();
}

โค้ดโปรแกรมแปลงหน่วยอุณหภูมิ(จากฟาร์เรนไฮต์เป็นเซลเซียส)
#include
main()
{
float F,C;
printf("Enter degree in Farenhite (F) : ");
scanf("%f",&F);
C= (F-32)/1.8;
system("cls");
printf("Degree %.1fF equal %.1fC",F,C);
getch();
}

โปรแกรมหาพื้นที่วงกลม
#include
#define pi 3.14159
main()
{
float radius;
printf("Enter circle radius : ");
scanf("%f",&radius);
system("cls");
printf("Area of circle = %.2f\n", pi*radius*radius);
printf("Circumference of circle = %.2f\n", 2*pi*radius);
getch();
}

credit :  http://concord.exteen.com/20080424/entry-2

โปรแกรมแบบวนซ้ำ (คำสั่งประเภท For , while,do while)

โปรแกรมแบบวนซ้ำ (คำสั่งประเภท For , while,do while)
กระบวน การหนึ่งที่สำคัญในการออกแบบอัลกอริทึม ก็คือความสามารถในการวนลูปของการทำงานของกลุ่มคำสั่งตามที่นักพัฒนาต้องการ ดังนั้นสำหรับตอนนี้ ก็จะนำเสนอการพัฒนาโปรแกรมเพื่อให้บางส่วนของคำสั่งสามารถมีการวนซ้ำได้หลาย ครั้ง สำหรับคำสั่งที่สามารถใช้ในการเขียนโปรแกรมแบบวนซ้ำในภาษา C ได้แก่ While, Do-while และ For
ตัวอย่างของการใช้คำสั่ง while, for และ do-while สามารถเขียนให้เห็นได้ดังตาราง
ซึ่งผลลัพทธ์ของโปรแกรมทั้ง 3 ข้างต้นจะให้ผลลัพท์ที่เหมือนกัน คือจะแสดงผลบนหน้าจอเป็น
i = 0
i = 1
i = 2
i = 3
i = 4
i = 5
i = 6
คราวนี้เราลองมาดูโครงสร้างของการใช้งานแต่ละคำสั่งกัน
while ( condition ) // เมื่อ เงื่อนไข (condition) เป็นจริง ก็จะทำการวนซ้ำ ใน statement ถัดไป statement
ยกตัวอย่างเช่น
sum = 0.0;
x = 5;
while (x > 0.0)
   {
    sum += x;
    x = x – 1;
   }

ในที่นี้จะเห็นว่า ค่า x มีค่าเริ่มต้นเท่ากับ 5 ซึ่ง 5 > 0 เงื่อนไขของคำสั่ง while เป็นจริง จึงทำคำสั่งถัดมาคือ sum += x; หมายความว่า sum = sum + x = 5 จากนั้นค่า x ก็มีค่าลดลงไป 1 เหลือ 4 ก็จะทำการ check เงื่อนไขว่า 4 > 0 หรือไม่ เมื่อเงื่อนไขเป็นจริง ก็จะทำการวนซ้ำ sum ก็จะมีค่าเป็น 5 + 4 = 9 และ x ก็จะมีค่าลดลงเหลือ 3 และดำเนินการวนซ้ำเช่นนี้จนกระทั่ง x มีค่าเป็น 0 ซึ่งค่า 0 ไม่ได้มีค่ามากกว่า 0.0 เงื่อนไขจึงเป็นเท็จ โปรแกรมจึงจะจบการวนซ้ำ
คราวนี้เราลองมาดูตัวอย่างของการใช้คำสั่ง while ในการเขียนโปรแกรมแบบวนซ้ำ และผลลัพท์ที่ได้
x=0;
while( x <=2 ){
   printf("%d %d
",x, x*2);
}

ผลลัพท์ที่ได้จะได้ดังนี้
 0 0
 0 0
 0 0
 :   :
 0 0  (infinite loop)

การที่ผลลัพท์ออกมา เช่นนี้ ก็เนื่องจากว่า x มีค่าเริ่มต้น 0 และเงื่อนไข x <= 2 เป็นจริงตลอด โปรแกรมจึงทำการพิมพ์ค่า 0 0 ออกมา และเนื่องจากค่า x ไม่มีการเปลี่ยนแปลง เงื่อนไขจึงเป็นจริงตลอด โปรแกรมจึงแสดงผลบนหน้าจอโดยไม่หยุดนั่นเอง อีกตัวอย่างของการใช้งาน while ในการเขียนโปรแกรมแบบวนซ้ำ แสดงได้ดังนี้
scanf(“%d”,&n);
a = 10;
while (a > n) {
   printf(“%d
”,a);
   a = a-1;
}

ผลลัพท์ของโปรแกรมจะสามารถแสดงให้เห็นได้ดังนี้
10
 9
 8
 7

คราวนี้เราลองมาแก้ โจทย์ปัญหา การหาค่า ห.ร.ม (หารร่วมมาก) ของตัวเลข 2 ตัวใดๆ โดยอัลกอริทึม Euclidean โดยอัลกอริทึมดังกล่าว จะทำการแปลงค่าตัวเลข 2 ตัวเลขบวกใดๆ (m, n) เป็นค่า (d, 0) โดยการนำตัวเลขที่มีค่ามาก นำมาหารด้วยตัวเลขที่มีค่าน้อยกว่า นำค่าเศษที่หารได้มาแทนตัวเลขที่มีค่ามากกว่า ทำเช่นนี้จนกระทั่งได้ค่าเศษจากการหารมีค่าเป็น 0 ตัวเลขอีกตัวก็จะเป็นค่า ห.ร.ม. ยกตัวอย่างเมื่อเราทำการ Run โปรแกรม จะได้ผลดังนี้
Enter two positive integers: 532 112
The g.c.d. of 532 and 112 is 28
คราวนี้เราลองมาดูการเขียนโปรแกรมเพื่อแก้ปัญหาดังกล่าวข้างต้น สามารถเขียนได้ดังนี้
#include 
void main()
{
 int A, B, start;
     printf("Enter two positive intergers: ");
 scanf("%d %d", &A, &B);
 if(A < B) start = A;
 else start = B;
 while(((A%start) != 0)||((B%start) != 0))
 {
  start = start-1; 
 }
 printf("The g.c.d of %d and %d is %d
", A, B, start);
}

การดำเนินการทางคณิตศาสตร์ สามารถเขียนให้อยู่ในรูปแบบสั้นๆ ได้ ดังตัวอย่างในตารางดังนี้


ความแตกต่างระหว่าง i++ และ ++i
i++ และ ++i จะมีความหมายใกล้เคียงกันมาก จะแตกต่างเพียง การจัดลำดับในการคำนวณ เมื่อต้องนำไปใช้กับตัวแปรตัวอื่น
A = 10;
C = A++; // A= 11, C = 10
A = 10;
C = ++A; // A = 11, C = 11
A = 10;
C = A--; // A = 9, C = 10
A = 10;
C = --A; // A = 9, C = 9

โครงสร้างการเขียนโปรแกรมแบบวนซ้ำโดยใช้คำสั่ง For
คำสัง for สามารถเขียนให้อยู่ในรูปแบบได้ดังนี้
for ( เริ่มต้น ; เงื่อนไข ; เปลี่ยนแปลง ) statement;
เมื่อเริ่มต้น เป็นการกำหนดค่าตัวแปรเริ่มต้นที่ต้องการ ส่วนเงื่อนไขหากค่าลอจิกมีค่าเป็นจริง ก็จะทำตามในโครงสร้างของการวนซ้ำคือ run คำสั่ง statement แต่ถ้าเป็นเท็จก็จะออกจากโครงสร้างการวนซ้ำ ส่วนเปลี่ยนแปลง จะทำการปรับค่าของตัวแปรที่ต้องการ ยกตัวอย่างเช่น
for ( count=0 ; count < 10 ; count++)
  {
   printf(“count = %d
”,count);
  }

ใน code ข้างต้น ตัวแปร count จะเริ่มต้นจากค่า 0 ซึ่งค่า 0 มีค่าน้อยกว่า 10 ก็จะทำคำสั่ง print ค่าของตัวแปร count จากนั้นค่า count ก็จะเพิ่มค่าเป็น 1 เงื่อนไข count < 10 ก็ยังคงเป็นจริง ก็จะทำการพิมพ์ ค่าของตัวแปร count วนซ้ำเช่นนี้ จนกระทั่ง count มีค่าเพิ่มขึ้นจนเป็น 10 เงื่อนไขก็จะเป็นเท็จ และจบโครงสร้างของการวนซ้ำ
การเปลี่ยนแปลงค่าของตัวแปร อาจจะมีการเปลี่ยนแปลงมากกว่า 1 ค่า ยกตัวอย่างเช่น
for ( count=0 ; count < 10 ; count += 2)  // ตัวแปร count มีค่าเปลี่ยนแปลงเพิ่มขึ้นครั้งละ 2
{
   printf(“count = %d
”,count);
}
for ( count=10 ; count > 5 ; count -= 2)   // ตัวแปร count มีค่าเปลี่ยนแปลงลดลงครั้งละ 2
{  
   printf(“count = %d
”,count);
}

นอกจากนี้เรายังสามารถใช้ตัวแปร เป็นการกำหนด ค่าเริ่มต้น เงื่อนไข และ เปลี่ยนแปลงได้ ยกตัวอย่างเช่น
start = 0; end = 20; step=3;
for ( count=start ; count < end ; count += step)
{
   printf(“count = %d
”,count);
}

คราวนี้ เราลองมาทดลองเขียนโปรแกรม โดยให้โปรแกรม สามารถรับค่าตัวเลขใดๆ และแสดงค่าในรูปแบบดังตัวอย่างต่อไปนี้


Input the number > 4

0
0 1
0 1 2
0 1 2 3
0 1 2
0 1
0
เราสามารถแก้ปัญหาข้างต้น โดยใช้โครงสร้างการเขียนโปรแกรมแบบวนซ้ำดังต่อไปนี้
#include 
void main()
{
 int number, i, j;
     printf("Enter number: ");
 scanf("%d", &number);
 for(j= 0; j< number; j++)
 {
  for(i=0; i<= j; i++)
  {
   printf("%d ", i);
  }
  printf("
");
 }
 for(j= number-1; j>= 0; j--)
 {
  for(i=0; i< j; i++)
  {
   printf("%d ", i);
  }
  printf("
");
 }
}

โครงสร้างการเขียนโปรแกรมแบบวนซ้ำโดยใช้คำสั่ง do-while
รูปแบบของการเขียน code สำหรับโปรแกรมแบบวนซ้ำที่ใช้ do-while สามารถเขียนให้อยู่ในรูปทั่วไปได้ดังนี้

do statement while ( เงื่อนไข ); ตัวอย่างของโครงสร้าง do-while สามารถเขียนได้ดังนี้
sum = 0.0;
scanf(“%f”, &x);
do {
    sum += x;
    scanf(“%f”, &x);
  }
while (x > 0.0);

โปรแกรมข้างต้นจะทำ การอ่านค่าจะ keyboard เมื่อ User พิมพ์ค่าที่มีค่ามากกว่าศูนย์ ก็จะทำการบวกค่าเหล่านี้ไปที่ตัวแปร sum จนกระทั่ง User พิมพ์ ตัวเลข 0 หรือค่าที่น้อยกว่า ศูนย์ ทำให้เงื่อนไขเป็นเท็จ และโปรแกรมจึงจะออกจากโครงสร้าง do-while
คราวนี้เราลองมาเขียน โปรแกรมที่ใช้โครงสร้าง do-while โดยโจทย์กำหนดให้ว่า ให้โปรแกรมสามารถรับค่าตัวเลขใดๆ (X) และ แสดงผลของตัวเลข ระหว่าง 0 ถึง X ที่สามารถหารด้วย 4 ลงตัว
#include 
void main()
{  
 int number, i;
 printf("enter the number
");
 scanf("%d", &number);
            i = 0;
 do
 {
  if((i % 4) == 0) printf("%d ", i);
                       i++;
 }
            while(i <= number);
}

การเลือกทำงานตามเงื่อนไข (คำสั่ง IF ELSE SWITCH)

การเลือกทำงานตามเงื่อนไข (คำสั่ง IF ELSE SWITCH)

               คำสั่งควบคุมทิศทางการทำงานของโปรแกรม จะใช้ในกรณีที่เราพบโจทย์ปัญหาในลักษณะที่มีทางเลือก หรือมีเงื่อนไขในการเลือกทำงาน ยกตัวอย่างเช่น ถ้าสถานการณ์เป็น ก ให้ทำงานอย่างหนึ่ง ส่วนถ้าสถานการณ์เป็น ข ให้ทำงานอีกอย่างหนึ่งแทน หรือถ้าตัวเลขที่รับเข้ามาเป็นจำนวนคี่ ให้คูณจำนวนนั้นด้วย 2 แต้าถ้าตัวเลขที่รับเข้ามาเป็นจำนวนคู่ ให้เปลี่ยนเป็นหารจำนวนนั้นด้วย 2 เป็นต้น
คำสั่งควบคุม (Control Statement)
คำสั่งควบคุมเป็นคำสั่งที่สำคัญในการเขียนโปรแกรม คือ ช่วยควบคุมทิศทางการทำงานของโปรแกรมให้เป็นไปตามที่ต้องการ โดยแบ่งออกเป็น 2 ประเภท คือ คำสั่งเงื่อนไข (Condition Sratement) ได้แก่ if,if-else , switch-case และคำสั่งทำซ้ำ (Iteration Statement) ได้แก่ for,while,do-while
คำสั่ง if
คำสั่ง if จะใช้ในกรณีที่มีทางเลือกให้ทำงานอยู่เพียงทางเลือกเดียว โดยถ้าตรวจสอบเงื่อนไขแล้วเป็นจริง จึงจะทำงานตามคำสั่ง

รูปแบบคำสั่ง if
if (เงื่อนไข )
{
คำสั่งที่ 1;
}
คำสั่งที่ 2;


หาก เงื่อนไขที่กำหนดเป็นจริงแล้ว คำสั่งต่าง ๆ ที่อยู่ภายในบล๊อคของเงื่อนไข if ก็จะได้รับการประมวลผล (ซึ่งมากกว่า 1 คำสั่ง) แต่ถ้าตรวจสอบแล้วพบว่า เงื่อนไขเป็นเท็จ คำสั่งที่อยู่ภายในบล๊อคของเงื่อนไข if ก็จะไม่ได้รับการประวมลผล คือ จะข้ามไปทำการประมวลผลคำสั่งที่อยู่ถัดจากบล๊อคของ if ทันที

ตัวอย่างที่ 1 โปรแกรมแสดงการทำงานของคำสังเงื่อนไข 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 เลย
ตัวอย่างที่ 2 โปรแกรมแสดงการทำงานของคำสังเงื่อนไข 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 age less than 18 years old\n");
11 :printf("You are young\n");
12 :}
13 :printf("You are %d years old",age);
14 :getch();
15 :}
ผลลัพธ์ของโปรแกรม     
ผลการรันครั้งที่ 1
How old are you : 15
Your age less than 18 years old
You are young
You are 15 years old
ผลการรันครั้งที่ 2
How old are you : 18
You are 18 years old
อธิบายโปรแกรม
โปรแกรมที่ 2 ต่างจากโปรแกรมที่ 1 ตรงที่มีการนำเครื่องหมาย { } มาใช้คลุมคำสั่งที่อยู่ภายในบล๊อคของเงื่อนไข if มีคำสั่งที่ต้องทำงานเพียง 1 คำสั่งเหมือนโปรแกรมที่ 1 ก็ไม่จำเป็นต้องใน { } ให้กับบล๊อคของ if (แต่ถ้าจะใส่ก็ไม่ผิด) แต่สำหรับโปรแกรมที่ 2 เมื่อตรวจสอบว่าอายุน้อยกว่า 18 แล้ว จะมี 2 คำสั่งที่ต้องทำ คือ บรรทัดที่ 9 และ 10 ดังนั้นต้องใส่ { } คลุมด้วย (เมื่อบรรทัดที่ 9 และ 10 เรียบร้อยแล้ว ก็จะไปทำงานในบรรทัดที่ 12 ต่อไป) และหากอายุมากกว่าหรือเท่ากับ 18 ก็จะข้ามการทำงานในบล๊อคของ if ไปทำบรรทัดที่ 12 ทันที
คำสั่ง if-else
คำสั่ง if-else จะใช้ในกรณีที่มีทางเลือกให้ทำงาน 2 ทางเลือกขึ้นไป โดยการทำงานของคำสั่ง if-else จะเริ่มจากการตรวจสอบเงื่อนไข หถ้าผลออกมาเป็นจริงจะทำงานตามคำสั่งที่อยู่หลัง if แต่ถ้าการตรวจสอบเงื่อนไผลออกมาเป็นเท็จ ให้ทำงานตามคำสั่งที่อยู่หลัง else แทน
รูปแบบคำสั่ง if-else
if (เงื่อนไข)
{
คำสั่งที่ 1;
}
else
{
คำสั่งที่ 2;
}
คำสั่งที่ 3;

เป็นคำสั่งที่ช่วยให้การตรวจสอบเงื่อนไขสมบูรณ์ขึ้น โดยหากตรวจสอบเงื่อนไขของคำสั่ง if แล้วเป็นเท็จ ก็จะเข้ามาทำงานภายบล๊อกของคำสั่ง else แทน กล่าวคือ หากตรวจสอบเงื่อนไขแล้วเป็นจริง ก็จะประมวลผลคำสั่งในบล๊อกของ if แต่หากเงื่อนไขและประมวลผลตามคำสั่งเงื่อนไข if-else เรียบร้อบแล้ว ก็จะทำงานตามคำสั่งที่อยู่ถัดจาก if-else นั้นต่อไป

ตัวอย่างโปรแกรมที่ 1
if (a % 2 = = 0)
printf ("Even number"); ถ้าค่าของ a หารด้วย 2 ลงตัว (เหลือเศา 0) ให้แสดงข้อความ Even number
else
printf("Odd number"); แต่ถ้าเงื่อนไขของ if เป็นเท็จ (a หารด้วย 2 ไม่ลงตัว) ให้แสดงข้อความ Odd number
ตัวอย่างโปรแกรมที่ 2 โปรแกรมแสดงการรับข้อมูลเข้าทางแป้นพิมพ์ แล้วทำการตรวจสอบว่าถ้าค่าที่เรับเข้ามานั้นเท่ากับศูนย์ ให้พิพม์คำว่า "ZERO" แต่ถ้าไม่เท่ากับศูนย์ให้พิมพ์คำว่า "NON-ZERO"
#include<stdio.h>
#include<conio.h>
void main()
{
clrscr():
int i;
printf(" Enter your number = ");
scanf("%d",&i);
if (i= = 0)
{
prinft("ZERO");
}
else
printf("NON-ZERO");

}

ประเภทของข้อมูลภาษาซี

ประเภทของข้อมูลภาษาซี

ทำความรู้จักกับ ประเภทของข้อมูลในภาษา C

ข้อมูลใน C แบ่งชนิดข้อมูลออกเป็น 2 ประเภท คือ

1. Simple data type เป็นชนิดข้อมูลที่ใช้แสดงค่าของสิ่งใดสิ่งหนึ่งเพียงรายการเดียว เช่น
ค่าความสูง นํ้าหนัก จํานวนนักเรียน อุณหภูมิ ระดับคะแนน เป็นต้น

2. Structure เป็นข้อมูลชนิดใช้แสดงค่าของสิ่งใดสิ่งหนึ่งหลายรายการ เช่น ความสูงของนัก
เรียนใน ชั้น ม. 6, รายชื่อนักเรียนใน 1 กลุ่ม ต้องกําหนดเป็นข้อมูล
ชนิดโครงสร้างแบบ อาร์เรย์ (array) แบบโครงสร้าง(structure) หรือแบบยูเนียน(union) เป็นต้น
ข้อมูล Simple data type รายละเอียดชนิดของมูลและช่วงของข้อมูลประเภท Simple data type
แสดงได้ดังตารางต่อไปนี้

ชนิดข้อมูล ค่าตํ่าสุด ค่าสูงสุด ใช้พื้นที่หน่วยความจำ
char -128 127 1 byte
unsigned char 0 255 1 byte
int -32,768 32,767 2 byte
unsigned int 0 65,535 2 byte
short int -32,768 32,767 2 byte
long -2,147,483,648 2,147,483,647 4 byte
unsigned long 0 4,294,967,295 4 byte
float 3.4x10 ยกกำลัง -38 3.4x10 ยกกำลัง 38 4 byte
double 1.7x10 ยกกำลัง -308 1.7x10 ยกกำลัง 308 8 byte
long double 3.4x10 ยกกำลัง -4932 3.4x10 ยกกำลัง4932 10 byte


รูปแบบการเขียนโปรแกรมในภาษา C สำหรับการสร้างตัวแปรและกำหนดค่า เบื้องต้น

#include<stdio.h>
main()
{
int num1=10;
กำหนดตัวแปรชื่อ num1 เป็นจำนวนเต็มมีค่าเท่ากับ 10
int num2=10;
กำหนดตัวแปรชื่อ num2 เป็นจำนวนเต็มมีค่าเท่ากับ 10
int sum;
กำหนดตัวแปรชื่อ sum เป็นจำนวนเต็มมีค่า

sum = num1 + num2; ทำการบวกค่า sum
printf("Result Data = %d",sum);
แสดงผลค่าตัวแปร sum ออกไปที่หน้าต่าง
}
ทำการเขียน Source code

ทำการเขียน Source code ลงไปในโปรแกรม Borland Turbo C เพื่อทดสอบ 


credit :  http://www.prasansoft.com/C-programming-5.php

โครงสร้างของภาษาซี

โครงสร้างของภาษาซี

                ภาษา C เป็นภาษาคอมพิวเตอร์ที่ถูกค้นคิดขึ้นโดย Denis Ritchie ในปี ค.ศ. 1970
โดยใช้ระบบปฏิบัติการของยูนิกซ์ (UNIX) นับจากนั้นมาก็ได้รับความนิยมเพิ่มขั้นจนถึงปัจจุบัน ภาษา C สามารถติดต่อในระดับฮาร์ดแวร์ได้ดีกว่าภาษาระดับสูงอื่น ๆ ไม่ว่าจะเป็นภาษาเบสิกฟอร์แทน ขณะเดียวกันก็มีคุณสมบัติของภาษาระดับสูงอยู่ด้วย ด้วยเหตุผลดังกล่าวจึงจัดได้ว่าภาษา C เป็นภาษาระดับกลาง (Middle –lever language)
                ภาษา C เป็นภาษาคอมพิวเตอร์ชนิดคอมไพล์ (compiled Language) ซึ่งมีคอมไพลเลอร์ (Compiler) ทำหน้าที่ในการคอมไพล์ (Compile) หรือแปลงคำสั่งทั้งหมดในโปรแกรมให้เป็นภาษาเครื่อง (Machine Language) เพื่อให้เครื่องคอมพิวเตอร์นำคำสั่งเหล่านั้นไปทำงานต่อไป
โครงสร้างของภาษา C
                ทุกโปรแกรมของภาษา C มีโครงสร้างเป็นลักษณะดังรูป
 

เฮดเดอร์ไฟล์ (Header Files)
                เป็นส่วนที่เก็บไลบรารี่มาตรฐานของภาษา C ซึ่งจะถูกดึงเข้ามารวมกับโปรแกรมในขณะที่กำลังทำการคอมไพล์ โดยใช้คำสั่ง
                #include<ชื่อเฮดเดอร์ไฟล์> หรือ
                #include  “ชื่อเฮดเดอร์ไฟล์”
                เฮดเดอร์ไฟล์นี้จะมีส่วนขยายเป็น .h เสมอ และเฮดเดอร์ไฟล์เป็นส่วนที่จำเป็นต้องมีอย่างน้อย 1 เฮดเดอร์ไฟล์ ก็คือ เฮดเดอร์ไฟล์ stdio.h ซึ่งจะเป็นที่เก็บไลบรารี่มาตรฐานที่จัดการเกี่ยวกับอินพุตและเอาท์พุต
ส่วนตัวแปรแบบ Global (Global Variables)
                เป็นส่วนที่ใช้ประกาศตัวแปรหรือค่าต่าง ๆ ที่ให้ใช้ได้ทั้งโปรแกรม ซึ่งใช้ได้ทั้งโปรแกรม  ซึ่งในส่วนไม่จำเป็นต้องมีก็ได้
ฟังก์ชัน (Functions)
                เป็นส่วนที่เก็บคำสั่งต่าง ๆ ไว้ ซึ่งในภาษา C จะบังคับให้มีฟังก์ชันอย่างน้อย 1 ฟังก์ชั่นนั่นคือ ฟังก์ชั่น Main() และในโปรแกรม 1 โปรแกรมสามารถมีฟังก์ชันได้มากกว่า 1 ฟังก์ชั่น
ส่วนตัวแปรแบบ Local (Local Variables)
                เป็นส่วนที่ใช้สำหรับประกาศตัวแปรที่จะใช้ในเฉพาะฟังก์ชันของตนเอง ฟังก์ชั่นอื่นไม่สามารถเข้าถึงหรือใช้ได้ ซึ่งจะต้องทำการประกาศตัวแปรก่อนการใช้งานเสมอ  และจะต้องประกาศไว้ในส่วนนี้เท่านั้น
ตัวแปรโปรแกรม (Statements)
                เป็นส่วนที่อยู่ถัดลงมาจากส่วนตัวแปรภายใน ซึ่งประกอบไปด้วยคำสั่งต่าง ๆ ของภาษา C และคำสั่งต่าง ๆ จะใช้เครื่องหมาย ; เพื่อเป็นการบอกให้รู้ว่าจบคำสั่งหนึ่ง ๆ แล้ว ส่วนใหญ่ คำสั่งต่าง ๆ ของภาษา C เขียนด้วยตัวพิมพ์เล็ก เนื่องจากภาษา C จะแยกความแตกต่างชองตัวพิมพ์เล็กและพิมพ์ใหญ่หรือ Case Sensitive นั่นเอง ยกตัวอย่างใช้ Test, test หรือจะถือว่าเป็นตัวแปรคนละตัวกัน นอกจากนี้ภาษา C ยังไม่สนใจกับการขึ้นบรรทัดใหม่ เพราะฉะนั้นผู้ใช้สามารถพิมพ์คำสั่งหลายคำสั่งในบรรทัดเดียวกันได้ โดยไม่เครื่องหมาย ; เป็นตัวจบคำสั่ง
ค่าส่งกลับ (Return Value)
                คือ ค่าที่ส่งกลับเมื่อฟังก์ชันนั้นๆทำงานเสร็จ    ซึ่งเรื่องนี้ผู้เขียนจะยกไปกล่าวในเรื่องฟังก์ชั่นอย่างละเอียดอีกทีหนึ่ง
หมายเหตุ (Comment) / Remark
                ส่วนที่ไม่ต้องประมวลผลมักใช้ในการอธิบายการทำงานของโปรแกรม  ซึ่งจะใช้เครื่องหมาย /*และ */ ปิดหัวและปิดท้ายของข้อความที่ต้องการ


/* นี้คือ Comment */
/* ถ้ามี 2บรรทัด
     ในทำแบบนี้        */
/*
     ถ้ามีหลายบรรทัด
     ก็สามารถทำแบบนี้
    ได้เช่นกัน
*/
  
โปรแกรมที่ 2 – 1
 
                                                                                            
การตั้งชื่อ
            การตั้งชื่อ (Identifier) ให้กับตัวแปร ฟังก์ชันหรืออื่น ๆ มีกฎเกณฑ์ในการตั้งชื่อ ดังนี้
            1.  ตัวแรกของชื่อจะต้องขึ้นต้องด้วยตัวอักษรหรือเครื่องหมาย _ เท่านั้น
            2.  ตัวอักษรตั้งแต่ตัวที่ 2 สามารถเป็นตัวเลข หรือเครื่องหมาย_ก็ได้
            3.  จะต้องไม่มีการเว้นวรรคภายในชื่อ แต่สามารถใช้เครื่อง_คั่นได้
            4.  สามารถตั้งชื่อได้ยาไม่จำกัด แต่จะใช้ตัวอักษรแค่ 31 ตัวแรกในการอ้างอิง
            5.  ชื่อที่ตั้งด้วยตัวอักษรพิมพ์ใหญ่และพิมพ์เล็ก จะถือว่าเป็นคนละตัวกัน
            6.  ห้ามตั้งชื่อซ้ำกับคำสงวนของภาษา C
ชนิดข้อมูล
                        ในการเขียนโปรแกรมภาษา C นั้น ผู้ใช้จะต้องกำหนดชนิดให้กับตัวแปรนั้นก่อนที่จะนำไปใช้งาน โดยผู้ใช้จะต้องรู้ว่าในภาษา C นั้นมีชนิดข้อมูลอะไรบ้าง เพื่อจะเลือกใช้ได้อย่างถูก
ต้องและเหมาะสม ในภาษา C จะมี 4 ชนิดข้อมูลมาตรฐาน ดังนี้
ชนิดข้อมูลแบบไม่มีค่า หรือ Void Type (Void)
                        ข้อมูลชนิดนี้ จะไม่มีค่าและจะไม่ใช้ในการกำหนดชนิดตัวแปร แต่ส่วนใหญ่จะใช้เกี่ยวกับฟังก์ชั่น ซึ่งจะขอยกไปอธิบายในเรื่องฟังก์ชั่น
ชนิดข้อมูลมูลแบบจำนวนเต็ม หรือ Integer Type (int)
                        เป็นชนิดข้อมูลที่เป็นตัวเลขจำนวนเต็ม ไม่มีทศนิยม ซึ่งภาษา C จะแบ่งข้อมูลชนิดนี้ออกได้เป็น 3 ระดับ คือ short int , int และ long int ซึ่งแต่ละระดับนั้นจะมีขอบเขตการใช้งานที่แตกต่างกัน
ชนิดข้อมูลแบบอักษร หรือ Character Type (char)
                        ข้อมูลชนิดนี้ก็คือ ตัวอักษรตั้งแต่ A-Z เลข 0-9 และสัญลักษณ์ต่าง ๆ ตามมาตรฐาน ACSII (American Standard Code Information Interchange) ซึ่งเมื่อกำหนดให้กับตัวแปรแล้วตัวแปรนั้นจะรับค่าได้เพียง 1 ตัวอักษรเท่านั้น และสามารถรับข้อมูลจำนวนเต็มตั้งแต่ถึง 127 จะใช้ขนาดหน่วยความจำ 1ไบต์หรือ 8 บิต
ชนิดข้อมูลแบบทศนิยม หรือ Floating Point Type (flat)
                        เป็นข้อมูลชนิดตัวเลขที่มีจุดทศนิยม ซึ่งสามารถแบ่งออกเป็น 3 ระดับ คือ float, double และ long double แต่ละระดับนั้นจะมีขอบเขตที่แตกต่างกันในการใช้งาน ดังแสดงในตารางที่ 2-2
ตัวแปร
                        ตัวแปร คือ ชื่อที่ใช้อ้างถึงตำแหน่งต่าง ๆ ในหน่วยความจำ ซึ่งใช้เก็บข้อมูลต่าง ๆ ด้วยขนาดตามชนิดข้อมูล
การประกาศตัวแปร
                        การประกาศตัวแปรในภาษา C นั้นสามรถทำได้ 2 ลักษณะ คือ การประกาศตัวแปรแบบเอกภาพ หรือการประกาศตัวแปรแบบ Global คือ ตัวแปรที่จะสามารถเรียกใช้ได้ทั้งโปรแกรม และแบบที่สองการประกาศตัวแปรแบบภายใน หรือการประกาศตัวแปรแบบ Local ซึ่งตัวแปรแระเภทนี้จะใช้ได้ในเฉพาะฟังก์ชั่นของตัวเองเท่านั้น
#include<stdio.h>
#include<conio.h>
int total; /*การประกาศตัวแปรแบบ Global */
main()
{
                        int price, money; /*การประกาศตัวแปรแบบ Local*/
                        …
}
  

การกำหนดค่าให้กับตัวแปร
                    การกำหนดค่าให้กับตัวแปรนั้น จะสามารถกำหนดได้ตั้งแต่ตอนที่ประกาศตัวแปรเลยหรือจะกำหนดให้ภายในโปรแกรมก็ ได้ ซึ่งการกำหนดค่าจะใช้เครื่องหมาย = กั้นตรงกลาง
                    int total = 0;
                    ถ้ามีตัวแปรข้อมูลชนิดเดียวกัน ก็สามารถทำแบบนี้ได้
                    int total =0,sum
                    หรือ
                    int total =0,sum=0;
                    ถ้าเป็นการกำหนดภายในโปรแกรม ซึ่งตัวแปรนั้นได้ประกาศไว้แล้วสามารถทำแบบนี้
                    total = 50;
                    หรือ
                    total = total+sum
                    หรือกำหนดค่าจาการพิมพ์ข้อมูลเข้าทางคีย์บอร์ด
                    scanf(“%d”,&total);
โปรแกรมที่ 2-2  
 



การกำหนดชนิดข้อมูลแบบชั่วคราว
                    เมื่อผู้ใช้ได้กำหนดชนิดข้อมูลให้กับตัวแปรใด ๆ ไปแล้ว ตัวแปรตัวนั้นจะมีชนิดข้อมูลเป็นแบบที่กำหนดให้ตลอดไป บางครั้งการเขียนโปรแกรมอาจจะต้องมีความจำเป็นต้องเปลี่ยนชนิดข้อมูลของตัว แปรตัวนั้น ซึ่งภาษาซี ก็มีความสามารถที่จะทำเช่นนั้นได้
รูปแบบ
([ชนิดข้อมูล])[ตัวแปร]

โปรแกรมที่ 2-3
 


ชนิดข้อมูลแบบค่าคงที่ (Constants)
                    ชนิดข้อมูลประเภทนี้ ชื่อก็บอกอยู่ว่าเป็นชนิดข้อมูลแบบค่าคงที่ ซึ่งก็คือข้อมูลตัวแปรประเภทที่เป็น Constants ผู้ใช้จะไม่สามารถเปลี่ยนแปลงค่าของตัวแปรตัวนั้น ในขณะที่โปรแกรมทำงานอยู่
รูปแบบ
                    Const[ชนิดข้อมูล][ตัวแปร]=[ค่าหรือ นิพจน์]
โปรแกรมที่ 2-4
 
nstant นั้นสามารถแบ่งออกได้ ดังนี้
Integer Constants เป็นค่าคงที่ชนิดข้อมูลแบบตัวเลขจำนวนเต็มไม่มีจุดทศนิยม
                    const int a = 5;
Floating-Point Constants เป็นค่าคงที่ชนิดข้อมูลแบบตัวเลขที่มีจุดทศนิยม
                    const float b = 5.6394;
Character Constants เป็นค่าคงที่ชนิดตัวอักษร ซึ่งจะต้องอยู่ภายในเครื่องหมาย ‘’เท่านั้น
                    const char b = ‘t’;
String Constants เป็นค่าคงที่เป็นข้อความ ซึ่งจะต้องอยู่ภายใต้เครื่องหมาย “”เท่านั้น
                    “”
                    “h”
                    “Hello world\n”
                    “HOW ARE YOU”
                    “Good Morning!”

โปรแกรมที่ 2-5
 


Statements
                    statements ในภาษา c คือ คำสั่งต่าง ไ ที่ประกอบขึ้นจนเป็นตัวโปรแกรม ซึ่งในภาษา c นั้นได้แบ่งออกเป็น 6 แบบ คือ Expression Statement และ Compound Statement ณ.ที่นี้จะมีด้วยกัน 2 แบบ
Expression Statement   หรือเรียกอีกอย่างหนึ่งว่า Single Statement ซึ่ง Statement  แบบนั้นจะต้องมีเครื่องหมาย; หลังจาก statement เมื่อภาษา C พบเครื่องหมาย ; จะทำให้มันรู้ว่าจบชุดคำสั่งแล้ว แล้วจึงข้ามไปทำ Statement ชุดต่อไป
            a = 2;
            หรือ
printf(“x contains %d, y contains %d\n”,x,y);
Compound Statement คือ ชุดคำสั่งที่มีคำสั่งต่าง ๆ รวมอยู่ด้านใน Block ซึ่งจะใช้เครื่องหมาย {เป็นการเปิดชุดคำสั่ง และใช้} เป็นตัวปิดชุดคำสั่ง ตัวอย่างที่เห็นได้ชัดเจนสำหรับ Statement แบบนี้ คือ ตัวฟังก์ชั่น Main โดยทั่ว ๆ ไปในภาษา C Compound Statement จะเป็นตัวฟังชั่น
ผังงาน
            ผังงาน (Flowchart)  มีไว้เพื่อให้ผู้ใช้ออกแบบขั้นตอนการทำงนของโปรแกรมก่อนที่จะลงมือเขียน โปรแกรม ซึ่งจะช่วยให้ผู้ใช้เขียนโปรแกรมได้ง่ายขึ้นและไม่สับสนซึ่งผังงานที่นิยม ใช้มีมาตรฐานมากมายหลายแบบ  โดยมีสัญลักษณ์ของผังงานดังนี้
1. 
   Terminator                       สัญลักษณ์แทนจุดเริ่มต้นและจุดสิ้นสุด
    2.     Process   สัญลักษณ์กระบวนการต่าง ๆ เช่น การประกาศตัวแปร การบวก เป็นต้น
3        Decision        สัญลักษณ์เงื่อนไข
4    Data  สัญลักษณ์ติดต่อกับผู้ใช้โดยการรับข้อมูลหรือแสดงข้อมูล
5     Manual Input        สัญลักษณ์การรับข้อมูลจากผู้ใช
6 Display สัญลักษณ์การแสดงผลออกทางจอภาพ
7   Predefined Process สัญลักษณ์ระบุการทำงานย่อยหรือฟังก์ชั่นย่อย
8  Connect    สัญลักษณ์จุดเชื่อม
9      Arrow    สัญลักษณ์เส้นทางการดำเนินงาน
     
        โดยการออกแบบผังงาน จะมี 3 แบบ ดังนี้
                1.  แบบเรียงลำดับ จะเป็นลักษณะการทำงานที่เรียงกันไปเรื่อย ๆ โดยไม่มีการวนซ้ำ ดังรูป

 
                                                                 
                                                                      
                2.  แบบทางเลือก จะเป็นลักษณะการทำงานที่มีทางเลือก ซึ่งจะพบในเรื่องคำสั่งเงื่อนไข เช่น คำสั่ง if…else ดังรูป

               

NO
 
Yes
  

3.  แบบการทำงานซ้ำ จะเป็นลักษณะการทำงานที่วนการทำงานแบบเดิม จนครบตามจำนวนที่ต้องการ ซึ้งจะพบในเรื่องคำสั่ง วนลูป เช่น คำสั่ง do….while ดังรูป





credit : http://itd.htc.ac.th/st_it50/it5012/P_1/C/B2.htm#

วันอังคารที่ 7 สิงหาคม พ.ศ. 2555

ประวัติภาษาซี

ประวัติภาษาซี


       ภาษาซีเกิดขึ้นในปี ค.ศ.1972 โดย Dennis Ritchie แห่ง Bell Labs โดยภาษาซีนั้นพัฒนามาจาก ภาษา B และจากภาษา BCPL
ซึ่งในช่วงแรกนั้นภาษาซีถูกออกแบบให้ใช้เป็นภาษาการเขียนโปรแกรมในระบบ UNIX และเริ่มมีคนสนใจมากขึ้นในปี ค.ศ.1978 เมื่อ Brain Kernighan ร่วมกับ Dennis Ritchie พัฒนามาตรฐานของภาษาซีขึ้นมา คือ K&R (Kernighan & Ritchie) และทั้งสองยังได้แต่งหนังสือชื่อว่า "The C Programming Language" โดยภาษาซีนั้นสามารถจะปรับใช้กับเครื่องคอมพิวเตอร์รูปแบบต่างๆได้

ต่อ มาในช่วง ปี ค.ศ.1988 Ritchie และ Kernighan ได้ร่วมกับ ANSI (American National Standards Institute) สร้างเป็นมาตรฐานของภาษาซีขึ้นมาใหม่มีชื่อว่า "ANSI C"

ประวัติ ความเป็นมา ภาษา C-http://sorncomputer.com//picture/learning/programer/c/start/dennis-ritchie.gif
Dennis Ritchie

ภาษา ซีนั้นจัดเป็นภาษาที่ใช้ในการเขียน โปรแกรมที่นิยมใช้งาน ซึ่งภาษาซีจัดเป็นภาษาระดับกลาง (Middle-Level Language) เหมาะกับการเขียนโปรแกรมแบบโครงสร้าง (Structured Programming) โดยมีคุณสมบัติโดดเด่นอย่างหนึ่งคือ มีความยืดหยุ่นมาก กล่าวคือ สามารถทำงาน กับเครื่องมือต่างๆ สามารถปรับเปลี่ยนการเขียนโปรแกรมในรูปแบบต่างๆได้ เช่น สามารถเขียนโปรแกรมที่มีความยาวหลายบรรทัดให้เหลือความยาว 2-3 บรรทัดได้ โดยมีการผลการทำงานที่เหมือนเดิมครับ

จาก C สู่ C++
ถูกพัฒนาโดย Bjarne Stroustrup แห่ง Bell Labs โดยได้นำเอาภาษา C มาพัฒนาและใส่แนวคิดการเขียนโปรแกรมเชิงวัตถุ หรือ OOP (Object Oriented Programming) เข้าไปด้วย ซึ่งเป็นที่มาของ C++ ก็คือ นำภาษา C มาพัฒนาปรับปรุงให้มีประสิทธิภาพมากขึ้น

ประวัติ ความเป็นมา ภาษา C-http://sorncomputer.com//picture/learning/programer/c/start/bjarne-stroustrup.gif
Bjarne Stroustrup


ลักษณะโปรแกรมแบบโครงสร้าง
การเขียนโปรแกรมแบบโครงสร้าง (Structured Programming) ก็คือ การนำโครงสร้างของคำสั่งหลายๆ รูปแบบ นำมาใช้ในโปรแกรม โดยจะมีการใช้คำสั่้งลักษณะ goto ให้น้อยที่สุด ตัวอย่างการเขียนโปรแกรมแบบโครงสร้าง ก็มี ภาษา C, Pascal และ Cobol เป็นต้น

ประวัติ ความเป็นมา ภาษา C-http://sorncomputer.com/picture/learning/programer/c/start/structure.gif
ภาพ: โปรแกรมที่เขียนด้วยภาษาซีแบบง่ายๆ แสดงถึงโครงสร้าง

จากโปรแกรมข้างต้น สามารถแบ่งโครงสร้างตามลักษณะหน้าที่การทำงานได้ 3 ส่วนหลักๆ ก็คือ
ส่วนที่ 1 ประกาศค่าตัวแปร และ การกำหนดค่าให้กับตัวแปร (Declare)
ส่วนที่ 2 เพิ่มค่า และเก็บค่าไว้ในตัวแปร (Calculation)
ส่วนที่ 3 แสดงผลทางจอภาพ (Display)

ซึ่งการทำงานของโปรแกรมแบบโครงสร้างนั้นสามารถเข้าใจได้ง่ายและสามารถแก้ไขได้สะดวก



ภาษา ซี (C programming language)
เป็นภาษาโปรแกรมเชิงโครงสร้างระดับสูงที่ได้รับการพัฒนาขึ้นในช่วงทศวรรษ 1970 โดย เคน ธอมป์สัน (Ken Thompson) และ เดนนิส ริทชี่ (Dennis Ritchie) ขณะทำงานอยู่ที่ เบลล์เทเลโฟน เลบอราทอรี่ สำหรับใช้ในระบบปฏิบัติการยูนิกซ์ ต่อมาภายหลังได้ถูกนำไปใช้กับระบบปฏิบัติการอื่น ๆ และกลายเป็นภาษาโปรแกรมหนึ่งที่ใช้กันแพร่หลายมากที่สุด ภาษาซีมีจุดเด่นที่ประสิทธิภาพในการทำงาน เนื่องจากมีความสามารถใกล้เคียงกับภาษาระดับต่ำ แต่เขียนแบบภาษาระดับสูง โปรแกรมคอมพิวเตอร์ที่เขียนด้วยภาษาซีจึงทำงานได้รวดเร็ว ภาษาซีเป็นภาษาโปรแกรมที่นิยมใช้กันมากสำหรับพัฒนาระบบปฏิบัติการ,ซอฟต์แวร์ ระบบ , ควบคุมไมโครคอนโทรลเลอร์ และเป็นภาษาที่ใช้กันทั่วไปในหลักสูตรวิทยาการคอมพิวเตอร์

ประวัติ ความเป็นมา ภาษา C-http://sorncomputer.com//picture/learning/programer/c/start/thompson.jpg
Ken Thompson


ประวัติ ความเป็นมา ภาษา C++
ภาษา ซีพลัสพลัส (C++ programming language) เป็นภาษาโปรแกรมคอมพิวเตอร์อเนกประสงค์ มีโครงสร้างภาษาที่มีการจัดชนิดข้อมูลแบบสแตติก (statically typed) และสนับสนุนรูปแบบการเขียนโปรแกรมที่หลากหลาย (multi-paradigm language) ได้แก่ การโปรแกรมเชิงกระบวนคำสั่ง, การนิยามข้อมูล, การโปรแกรมเชิงวัตถุ, และการโปรแกรมแบบเจเนริก (generic programming) ภาษาซีพลัสพลัสเป็นภาษาโปรแกรมเชิงพาณิชย์ที่นิยมมากภาษาหนึ่งนับตั้งแต่ช่วงทศวรรษ 1990

Bjarne Stroustrup จากห้องวิจัยเบลล์ (Bell Labs) เป็นผู้พัฒนาภาษา C++ ขึ้น (เดิมใช้ชื่อ "C with classes") ในปีค.ศ. 1983 เพื่อพัฒนาภาษาซีดั้งเดิม สิ่งที่พัฒนาขึ้นเพิ่มเติมนั้นเริ่มจากการเพิ่มเติมการสร้างคลาสจากนั้นก็ เพิ่มคุณสมบัติต่างๆ ตามมา ได้แก่ เวอร์ชวลฟังก์ชัน การโอเวอร์โหลดโอเปอเรเตอร์ การสืบทอดหลายสาย เท็มเพลต และการจัดการเอ็กเซ็พชัน มาตรฐานของภาษาซีพลัสพลัสได้รับการรับรองในปีค.ศ. 1998 เป็นมาตรฐาน ISO/IEC 14882:1998 เวอร์ชันล่าสุดคือเวอร์ชันในปีค.ศ. 2003 ซึ่งเป็นมาตรฐาน ISO/IEC 14882:2003 ในปัจจุบันมาตรฐานของภาษาในเวอร์ชันใหม่ (รู้จักกันในชื่อ C++0x) กำลังอยู่ในขั้นพัฒนา



เหตุผลที่ควรเรียนภาษาซี
เนื่องจากภาษาซีเป็นภาษาแบบโครงสร้างที่สามารถศึกษาและทำความเข้าใจได้ไม่ ยาก อีกทั้งยังสามารถเป็นพื้นฐานในการเขียนโปรแกรมภาษาอื่นๆ ได้อีก เช่น C++, Perl, JAVA เป็นต้น

จำเป็นไหม? ที่ต้องเรียนภาษา C ก่อน เรียน C++
คำตอบก็คือ คุณจะเรียน C++ เลยก็ได้ โดยไม่ต้องศึกษาภาษา C มาก่อน แต่ถ้าคุณเข้าใจหลักการทำงาน และการเขียนโปรแกรมภาษา C แล้วจะสามารถต่อยอด C++ ได้เร็วกว่า อีกทั้งยังสามารถเข้าใจแนวคิดการเขียนโปรแกรมภาษาอื่นๆ ได้อีก

credit : http://www.sorncomputer.com/index.php?topic=217.0/

โปรเเกรมคำนวณเกรด

โปรเเกรมคำนวณเกรด

#include<stdio.h>
 main(){
 int x=0;
printf("Program by Setthawut Osothsinlp M.5-13 No.7");
printf("// Input Score : ");
 scanf("%d",&x);
 printf("\n");
 while(x>100){
 printf("\nInput must < 100\n// Input Score : ");
 scanf("%d",&x);
 printf("\n");
 }
 if(x>=80)
 printf("Grade A");
 else if(x>=70)
 printf("Grade B");
 else if(x>=60)
 printf("Grade C");
 else if(x>=50)
 printf("Grade D");
 else
 printf("Grade 0");

getch();
 }


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

ประวัติส่วนตัว

ประวัติส่วนตัว


ชื่อ  นายเสฏฐวุฒิ   นามสกุล  โอสถศิลป์
ชื่อเล่น  แก๊ป  ชั้น.5/13  เลขที่  7
โทรศัพท์  081-8554845 
เกิดวัน พุธ ที่ 27 กันยายน 2538  ปัจจุบันอายุ 16 ปี
E-mail : gapmu2000@hotmail.com
Facebook : Setthawut Osothsinlp
Line ID : gapmu2000 
วิชาที่ชอบ  เคมี  ฟิสิกส์  ภาษาอังกฤษ
วิชาที่ไม่ชอบ  คณิตศาสตร์
งานอดิเรก  เล่นฟุตบอล  ดูหนัง  ฟังเพลง  เล่นเกมส์  
ทีมฟุตบอลที่ชอบ  Chelsea 
นักฟุตบอลที่ชอบ  Frank Lampard , Fernando Torres
เกมส์ที่ชอบเล่น  PES 2012 , Crysis 2 ,Prototype 2 , Kinect Sport , Starcraft 2 , GRID , Final Fantasy XIII-2

Fernando Torres

Final Fantasy XIII-2