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

โปรแกรมแบบวนซ้ำ (คำสั่งประเภท 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

   คราวนี้เราลองมาดูโครงสร้างของการใช้งานแต่ละคำสั่งกัน

โครงสร้างการเขียนโปรแกรมแบบวนซ้ำโดยใช้คำสั่ง 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);
}
 
โครงสร้างการเขียนโปรแกรมแบบวนซ้ำโดยใช้คำสั่ง While
    คำสั่ง While จะใช้เงื่อนไขเป็นตัวควบคุมลูป ซึ่งลูป while นี้จะเป็นลูปแบบ pretest loop ซึ่งจะทำการตรวจสอบเงื่อนไขก่อนที่จะเข้าไปทำคำสั่งในลูป ผังการทำงานและชุดคำสั่งเบื้องต้นของ while ได้แสดงในรูปที่ 7-5]

 

รูปที่ 7-5 แสดงผังการทำงานและชุดคำสั่งเบื้องต้นของคำสั่ง while

ชุดคำสั่งเบื้องต้นที่แสดงในรูปที่ 7-5 ข จะเห็นได้ว่าในตัวลูปที่มีคำสั่งได้เพียงคำสั่งเดียวซึ่งถ้าต้องการให้มี หลายคำสั่ง ก็สามารถทำได้โดยเขียนชุดคำสั่งแบบ compound statement 


โปรแกรมที่ 7-1 โปรแกรมแสดงตัวเลขที่เรียงจากตัวเลขที่รับเข้ามาจนถึงศูนย์
 




โครงสร้างการเขียนโปรแกรมแบบวนซ้ำโดยใช้คำสั่ง 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);
}
 
 
 
คำสั่งอื่นๆที่ใช้ในลูป 
                ในการวนลูปนั้น บางครั้งการทำงานของลูปอาจจะทำให้ตัวควบคุมนั้น มี่มีค่าที่นำตรวจสอบเพื่อจบการทำงานได้ หรือเมื่อพบกรณีใดกรณีหนึ่งขึ้นมา ผู้ใช้ไม่ต้องการให้ทำคำสั่งต่อไปแลกะต้องการให้ข้ามคำสั่งนั้นไปเลย เพราะฉะนั้นภาษาC จึงมีคำสั่งที่ช่วยการทำงานในลักษณะนี้ขึ้น
                คำสั่งนี้จะพบแล้วในบทที่ 6 ในคำสั่ง switch เป็นคำสั่งในการกระโดดออกจากชุดคำสิ่ง switch และมันก็สามารถนำมาใช้ในคำสั่งวนลูปได้เหมือนกัน เพื่อให้กระโดดออกจากลูปในกรณีต่างได้ 

CONTINUE

                คำสั่งนี้จะไม่ได้กระโดดออกจากลูปเลย แต่จะกระโดดคำสั่งอื่นๆในลูปไปทำการตรวจสอบตามนิพจน์เลย ได้แสดงการทำงานของคำสั่ง Continue ในคำสั่งลูปทั้ง 3 คำสั่ง
โปรแกรมที่ 7-5 เป็นโปรแกรมที่แสดงการใช้คำสั่ง Continue ซึ่งเมื่อรับค่าเข้ามาจะใช้คำสั่ง continue เพื่อกระโดดข้ามคำสั่งที่เหลือไป แล้วจะกลับไปรับค่าตัวต่อไปเลย
ตัวอย่างโปรแกรมที่ 7-5 แสดงการใช้งานคำสั่ง Continue

 
 ตัวอย่างการใช้คำสั่งวนลูป 
                โปรเกรมที่ 7-6เป็นโปรแกรมคำนวณหาเงินลงทุน ซึ่งค่าที่ต้องกำหนดให้คือ จำนวน เงินที่ลงทุน ดอกเบี้ย และจำนวนปีที่ต้องการ

โปรแกรมที่ 7-6 พิมพ์สามเหลี่ยมขวา
 


โปรแกรมที่ 7-7 โปรแกรมบวกทุกตัวเลขทุกหลัก
 


การทำงานของโปรแกรมนี้คือ รับตัวเลขเข้ามา แล้วทำการตรวจสอบโดยมีเงื่อนไขว่าถ้าตัวเลขไม่เท่ากับ 0 ให้ทำการบวกค่าในตัวแปร Count ขึ้น 1 จากนั้นให้ตัวแปร sum เท่ากับ sum + (number หารเอาเศษด้วย 10) ซึ่งบรรทัดเผลของการหารเอาเศษจะได้เลขหลักสุดท้ายออกมา บรรทัดต่อไปให้ number หารด้วย 10 ก็ตัดเลขตัวสุดท้ายที่บวกเป็นแล้วออกไปทำจนกว่า number จะเท่ากับ 02

โปรแกรมที่ 7-8 โปรแกรมบวกทุกตัวเลขทุกหลัก 

 


 
ที่มา :
http://www.vcharkarn.com/lesson/view.php?id=9
http://itd.htc.ac.th/st_it50/it5012/P_1/C/B7.htm 

การเลือกทำงานตามเงื่อนไข (คำสั่ง 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 ทันที

โฟลวชาร์ตแสดงการทำงานของคำสั่งเงื่อนไข if

ตัวอย่างที่  1  โปรแกรมแสดงการทำงานของคำสังเงื่อนไข if
1 :#include
2 :#include
3 :void main()
4 :}
5 :   clrscr();
6 :   int age;
7 :   printf("How old are you = ");
8 :   scanf ("%d",&age);
9 :   if(age<18 td="td">
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
2 :#include
3 :void main()
4 :{
5 :clrscr();
6 :int age;
7 :printf("How old are you : ");
8 :scanf ("%d",&age);
9 :if(age<18 td="td">
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 นั้นต่อไป

โฟลวชาร์ตแสดงการทำงานของคำสั่งเงื่อนไข 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
#include
void main()
{
clrscr():
int i;
printf(" Enter your number = ");
scanf("%d",&i);
    if (i= = 0)
    {
      prinft("ZERO");
    }
  else
      printf("NON-ZERO");

}


ที่มา : http://www.lks.ac.th/kuanjit/c_page04.htm

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


ขั้นตอนการพัฒนาโปรแกรมประกอบด้วย
  1. การวิเคราะห์ปัญหา
  2. การออกแบบโปรแกรม
  3. การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์
  4. การทดสอบและแก้ไขโปรแกรม
  5. การทำเอกสารประกอบโปรแกรม
  6. การบำรุงรักษาโปรแกรม

การวิเคราะห์ปัญหา

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

การออกแบบโปรแกรม

การออกแบบขั้นตอนการทำงานของโปรแกรมเป็นขั้นตอนที่ใช้ เป็นแนวทางในการลงรหัสโปรแกรม ผู้ออกแบบขั้นตอนการทำงานของโปรแกรมอาจใช้เครื่องมือต่างๆ ช่วยในการออกแบบ อาทิเช่น คำสั่งลำลอง (Pseudocode) หรือ ผังงาน (Flow chart) การออกแบบโปรแกรมนั้นไม่ต้องพะวงกับรูปแบบคำสั่งภาษาคอมพิวเตอร์ แต่ให้มุ่งความสนใจไปที่ลำดับขั้นตอนในการประมวลผลของโปรแกรมเท่านั้น

การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์

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

การทดสอบและแก้ไขโปรแกรม

การทดสอบโปรแกรมเป็นการนำโปรแกรมที่ลงรหัสแล้วเข้า คอมพิวเตอร์ เพื่อตรวจสอบรูปแบบกฎเกณฑ์ของภาษา และผลการทำงานของโปรแกรมนั้น ถ้าพบว่ายังไม่ถูกก็แก้ไขให้ถูกต้องต่อไป ขั้นตอนการทดสอบและแก้ไขโปรแกรม อาจแบ่งได้เป็น 3 ขั้น
  1. สร้างแฟ้มเก็บโปรแกรมซึ่งส่วนใหญ่นิยมนำโปรแกรมเข้าผ่านทางแป้นพิมพ์โดยใช้โปรแกรมประมวลคำ
  2. ใช้ตัวแปลภาษาคอมพิวเตอร์แปลโปรแกรมที่สร้างขึ้นเป็นภาษาเครื่อง โดยระหว่างการแปลจะมีการตรวจสอบความถูกต้องของรูปแบบและกฎเกณฑ์ในการใช้ภาษา ถ้าคำสั่งใดมีรูปแบบไม่ถูกต้องก็จะแสดงข้อผิดพลาดออกมาเพื่อให้ผู้เขียนนำไป แก้ไขต่อไป ถ้าไม่มีข้อผิดพลาด เราจะได้โปรแกรมภาษาเครื่องที่สามารถให้คอมพิวเตอร์ประมวลผลได้
  3. ตรวจสอบความถูกต้องของการประมวลผลของโปรแกรม โปรแกรมที่ถูกต้องตามรูปแบบและกฎเกณฑ์ของภาษา แต่อาจให้ผลลัพธ์ของการประมวลผลไม่ถูกต้องก็ได้ ดังนั้นผู้เขียนโปรแกรมจำเป็นต้องตรวจสอบว่าโปรแกรมประมวลผลถูกต้องตามต้อง การหรือไม่ วิธีการหนึ่งก็คือ สมมติข้อมูลตัวแทนจากข้อมูลจริงนำไปให้โปรแกรมประมวลผลแล้วตรวจสอบผลลัพธ์ ว่าถูกต้องหรือไม่ ถ้าพบว่าไม่ถูกต้องก็ต้องดำเนินการแก้ไขโปรแกรมต่อไป การสมมติข้อมูลตัวแทนเพื่อการทดสอบเป็นสิ่งที่มีความสำคัญเป็นอย่างมาก ลักษณะของข้อมูลตัวแทนที่ดีควรจะสมมติทั้งข้อมูลที่ถูกต้องและข้อมูลที่ผิด พลาด เพื่อทดสอบว่าโปรแกรมที่พัฒนาขึ้นสามารถครอบคลุมการปฏิบัติงานในเงื่อนไข ต่างๆ ได้ครบถ้วน นอกจากนี้อาจตรวจสอบการทำงานของโปรแกรมด้วยการสมมติตัวเองเป็นคอมพิวเตอร์ที จะประมวลผล แล้วทำตามคำสั่งทีละคำสั่งของโปรแกรมนั้นๆ วิธีการนี้อาจทำได้ยากถ้าโปรแกรมมีขนาดใหญ่ หรือมีการประมวลผลที่ซับซ้อน

การทำเอกสารประกอบโปรแกรม

การทำเอกสารประกอบโปรแกรมเป็นงานที่สำคัญของการพัฒนา โปรแกรม เอกสารประกอบโปรแกรมช่วยให้ผู้ใช้โปรแกรมเข้าใจวัตถุประสงค์ ข้อมูลที่จะต้องใช้กับโปรแกรม ตลอดจนผลลัพธ์ที่จะได้จากโปรแกรม การทำโปรแกรมทุกโปรแกรมจึงควรต้องทำเอกสารกำกับ เพื่อใช้สำหรับการอ้างอิงเมื่อจะใช้งานโปรแกรมและเมื่อต้องการแก้ไขปรับปรุง โปรแกรม เอกสารประกอบโปรแกรมที่จัดทำ ควรประกอบด้วยหัวข้อต่อไปนี้
  1. วัตถุประสงค์
  2. ประเภทและชนิดของคอมพิวเตอร์และอุปกรณ์ที่ใช้ในโปรแกรม
  3. วิธีการใช้โปรแกรม
  4. แนวคิดเกี่ยวกับการออกแบบโปรแกรม
  5. รายละเอียดโปรแกรม
  6. ข้อมูลตัวแทนที่ใช้ทดสอบ
  7. ผลลัพธ์ของการทดสอบ

การบำรุงรักษาโปรแกรม

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

ที่มา : http://61.19.202.164/resource/courseware/problem/k02-02.html

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

การเขียน Pseudocode

ซูโดโค้ด (Pseudocode) หรือ ในภาษาไทย เรียกว่า รหัสจำลอง หรือ รหัสเทียม
คือ การจำลองการเขียนโปรแกรม โดยเขียนคำสั่งเป็นภาษาอะไรก็ได้ เช่น ไทย หรือ อังกฤษ ฯลฯ ที่ไม่ใช่ภาษาคอมพิวเตอร์ขั้นสูงอย่าง ภาษา C หรือ Java ซูโดโค้ดนี้จะไม่ขึ้นกับภาษาคอมพิวเตอร์ใดๆ โดยเฉพาะ ใช้อธิบายการทำงานของโปรแกรม เนื่องจากสื่อด้วยภาษาง่ายๆ อย่าง ไทย, อังกฤษ ทำให้ผู้อ่านเข้าใจได้ง่าย และตรงกัน โดยปกติแล้วมักใช้ภาษาอังกฤษ เนื่องจากสามารถแปลเป็นภาษาคอมพิวเตอร์ได้ง่าย


**************************************************
หัวใจหลักของการเขียน Pseudocode ==> สื่อให้ผู้อ่านเข้าใจได้ง่ายที่สุด
**************************************************

หลักในการเขียน Pseudocode

1. คำสั่งที่เขียนใช้ภาษาที่เข้าใจง่าย ไม่ต้องคำนึงถึงภาษาคอมพิวเตอร์
2. ในหนึ่งบรรทัด ให้มีเพียงหนึ่งคำสั่งเท่านั้น
3. ใช้ย่อหน้าในการแสดงกลุ่มของคำสั่ง ที่เป็นคำสั่งย่อยในคำสั่งพวกเงื่อนไข เช่น if-else, while, for ฯลฯ
4. ในการเขียนแต่ละคำสั่งให้เรียงการทำงานจากบนลงล่าง และมีทางออกหรือจุดสิ้นสุดเพียงจุดเดียว
5. กลุ่มคำสั่งอาจจะเขียนรวมกันเป็นโมดุล และเวลาเรียกใช้ก็เรียกใช้ผ่านชื่อโมดุล (คล้ายกับการเรียกใช้ฟังก์ชัน)


ตัวอย่างที่ 1 จงเขียน Pseudocode จากโปรแกรมหาผลรวมของตัวเลข 2 ค่า แล้วแสดงผลรวมออกมาทางหน้าจอ
1. read x , y
2. calculate sum = x + y
3. print sum


ตัวอย่างที่ 2 จงเขียน Pseudocode จากโปรแกรมรับตัวเลข 1 ค่าแล้วตรวจสอบว่าเป็นเลขคู่หรือเลขคี่
1. read x
2. if x % 2 = 0 <– ตรวจสอบว่าเศษจากการหาร x ด้วย 2 เท่ากับ 0 หรือไม่
1. then
1. print “even”
2. else
1. print “odd”


ตัวอย่างที่ 3 จงเขียน Pseudocode จากโปรแกรมหาค่าเฉลี่ยของตัวเลข 10 ค่า แล้วแสดงค่าเฉลี่ยออกมาทางหน้าจอ
1. for i = 1 to 10 <– เป็นคำสั่งวนรอบจำนวน 10 รอบ
1. read num
2. calculate sum = sum + num
2. calculate mean = sum / 10
3. print mean


ตัวอย่างที่ 4 จงเขียน Pseudocode จากโปรแกรมหาค่าเฉลี่ยของตัวเลข n ค่า แล้วแสดงค่าเฉลี่ยออกมาทางหน้าจอ
1. read n
2. for i = 1 to n <– เป็นคำสั่งวนรอบจำนวน n รอบ
1. read num
2. calculate sum = sum + num
3. calculate mean = sum / n
4. print mean


ตัวอย่างที่ 5 จงเขียน Pseudocode จากโปรแกรมเปรียบเทียบตัวเลข 2 ค่า แล้วแสดงความสัมพันธ์ออกมา
1. read x , y
2. if x > y
1. then
1. print “x > y”
2. else if x < y
1. then
1. print “x < y”
2. else
1. print “x = y”

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

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

วิธีการเขียนผังงานที่ดี • ใช้สัญลักษณ์ตามที่กำหนดไว้
• ใช้ลูกศรแสดงทิศทางการไหลของข้อมูลจากบนลงล่าง หรือจากซ้ายไปขวา
• คำอธิบายในภาพควรสั้นกระทัดรัด และเข้าใจง่าย
• ทุกแผนภาพต้องมีลูกศรแสดงทิศทางเข้า - ออก
• ไม่ควรโยงเส้นเชื่อมผังงานที่อยู่ไกลมาก ๆ ควรใช้สัญลักษณ์จุดเชื่อมต่อแทน
• ผังงานควรมีการทดสอบความถูกต้องของการทำงานก่อนนำไปเขียนโปรแกรม

ผังงานโปรแกรม ( Program Flowchart ) การเขียน ผังโปรแกรมจะประกอบไปด้วยการใช้สัญลักษณ์มาตรฐานต่าง ๆ ที่เรียกว่า สัญลักษณ์ ANSI ( American National Standards Institute ) ในการสร้างผังงาน ดังตัวอย่างที่แสดงในรูปต่อไปนี้


ผังงานกับชีวิตประจำวัน การทำงาน หลายอย่างในชีวิตประจำวัน จะมีลักษณะที่เป็นลำดับขั้นตอน ซึ่งก่อนที่ท่านจะได้ศึกษาวิธีการเขียนผังงานโปรแกรม จะแนะนำให้ท่านลองฝึกเขียนผังงานที่แสดงการทำงานในชีวิตประจำวันวันก่อน เพื่อเป็น การสร้างความคุ้นเคยกับสัญลักษณ์รูปภาพต่าง ๆ ที่จะมีใช้ในผังงานโปรแกรมต่อไป ดัง ตัวอย่าง 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

ตัวอย่าง 4 การเขียนผังงานเปรียบเทียบค่าข้อมูลที่เก็บอยู่ในตัวแปร X โดยมีเงื่อนไขดังนี้ • ถ้า X > 0 ให้พิมพ์คำว่า " POSITIVE NUMBER "
• ถ้า X < 0 ให้พิมพ์คำว่า " NEGATIVE NUMBER "
• ถ้า X = 0 ให้พิมพ์คำว่า " ZERO NUMBER "

โครงสร้างการทำงานแบบมีการทำงานซ้ำ เป็น โครงสร้างที่มีการประมวลผลกลุ่มคำสั่งซ้ำหลายครั้ง ตามลักษณะเงื่อนไขที่กำหนด อาจเรียก การทำงานซ้ำแบบนี้ได้อีกแบบว่า การวนลูป ( Looping ) โครงสร้างแบบการทำงานซ้ำนี้จะมีอยู่ 2 ประเภท คือ
• DO WHILE
• DO UNTIL
DO WHILE เป็นโครง สร้างที่มีการทดสอบเงื่อนไขก่อน ถ้าเงื่อนไขเป็นจริงก็จะเข้ามาทำงานในกลุ่มคำสั่งที่ต้องทำซ้ำ ซึ่งเรียกว่าการเข้าลูป หลังจากนั้นก็จะย้อนกลับไปตรวจสอบเงื่อนไขใหม่อีก ถ้าเงื่อนไขยังคงเป็นจริงอยู่ ก็ยังคงต้องทำกลุ่มคำสั่งซ้ำหรือเข้าลูปต่อไปอีก จนกระทั่งเงื่อนไขเป็นเท็จ ก็จะออกจากลูปไปทำคำสั่งถัดไปที่อยู่ถัดจาก DO WHILE หรืออาจเป็นการจบการทำงาน

สรุปข้อแตกต่างระหว่าง DO WHILE และ DO UNTIL มีดังนี้ 1. DO WHILE ในการทำงานครั้งแรกจะต้องมีการตรวจสอบเงื่อนไขก่อนทุกครั้ง ก่อนที่จะมีการเข้ลูปการทำงาน
2. DO UNTIL การทำงานครั้งแรกจะยังไม่มีการตรวจสอบเงื่อนไข แต่จะเข้าไปทำงานในลูปก่อนอย่างน้อย 1 ครั้งแล้วจึงจะไปตรวจสอบเงื่อนไข
3. DO WHILE จะมีการเข้าไปทำงานในลูปก็ต่อเมื่อตรวจสอบเงื่อนไขแล้วพบว่า เงื่อนไขเป็นจริง แต่เมื่อพบว่าเงื่อนไขเป็นเท็จ ก็จะออกจากลูปทันที
4. DO UNTIL จะมีการเข้าไปทำงานในลูปก็ต่อเมื่อตรวจสอบเงื่อนไขแล้วพบว่า เงื่อนไขเป็นเท็จ แต่เมื่อพบว่าเงื่อนไขเป็นจริง ก็จะออกจากลูปทันที
ตัวอย่าง 5 จงเขียนผังงานแสดงการเพิ่มของข้อมูลตัวเลขที่เก็บอย่ในหน่วยความจำที่แอดเด รส 1 โดยที่ค่าเริ่มต้นจาก 0 ให้ทำการเพิ่มค่าทีละ 1 เรื่อยไปจนกระทั่ง J มีค่าข้อมูลมากกว่า 100 จึงหยุดการทำงาน

ตัวอย่างนี้ เป็นตัวอย่างการทำงานแบบทำซ้ำ ซึ่งจะสามารถแสดงการเขียนได้ทั้งแบบ DO WHILE และ DO UNTIL ดังนี้





ที่มา :
http://www.clubprogramming.com/?p=66
http://www.nayoktech.ac.th/~vwinwin/BC21_49/page10.html

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

ภาษาซีเกิดขึ้นในปี ค.ศ.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”



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



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



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

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



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


ก๊อปมาจาก: http://www.sorncomputer.com/index.php?topic=217.0/

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


ในการเขียนโปรแกรมภาษา C นั้น ผู้ใช้จะต้องกำหนดชนิดให้กับตัวแปรนั้นก่อนที่จะนำไปใช้งาน โดยผู้ใช้จะต้องรู้ว่าในภาษา C นั้นมีชนิดข้อมูลอะไรบ้าง เพื่อจะเลือกใช้ได้อย่างถูก 
ต้องและเหมาะสม ในภาษา C จะมี 4 ชนิดข้อมูลมาตรฐาน ดังนี้ 
ชนิดข้อมูลแบบไม่มีค่า หรือ Void Type (Void)
ข้อมูลชนิดนี้ จะไม่มีค่าและจะไม่ใช้ในการกำหนดชนิดตัวแปร แต่ส่วนใหญ่จะใช้เกี่ยวกับฟังก์ชั่น ซึ่งจะขอยกไปอธิบายในเรื่องฟังก์ชั่น 
 ชนิดข้อมูลมูลแบบจำนวนเต็ม หรือ Integer Type (int)
เป็นชนิดข้อมูลที่เป็นตัวเลขจำนวนเต็ม ไม่มีทศนิยม ซึ่งภาษา C จะแบ่งข้อมูลชนิดนี้ออกได้เป็น 3 ระดับ คือ short int,int และ long int ซึ่งแต่ละระดับนั้นจะมีขอบเขตการใช้งานที่แตกต่างกัน ดังแสดงในตารางที่ 2-1 

ชนิดข้อมูล
คิดเครื่อง
หมาย
ขนาด(ไบต์)
จำนวนบิต
ค่าน้อยที่สุด
ค่ามากที่สุด
Short int
คิด
ไม่คิด
216
-32,768
0
32,768
65,535
Int
(16 บิต)
คิด
ไม่คิด
216
-32,768
0
32,768
65,535
Int
(32 บิต)
คิด
ไม่คิด
432
-2,147,486,643
0
2,147,486,643
4,294,967,295
Long int
คิด
ไม่คิด
432
-2,147,486,643
0
2,147,486,643
4,294,967,295
ชนิดข้อมูลแบบอักษร หรือ 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 
 ตารางที่ 2-2 แสดงรายละเอียดของชนิดข้อมูลแบบทศนิยม 
ชนิดข้อมูล
ขนาด(ไบต์)
จำนวนบิต
ค่าที่น้อยที่สุด
float432      -38                38
3.4-10    ถึง 3.4-10
double864      -308                308
1.7*10    ถึง 1.7*10
long double1080      -4932             4932
3.4*10    ถึง 1.1*10
ตัวแปร 
ตัวแปร คือ ชื่อที่ใช้อ้างถึงตำแหน่งต่าง ๆ ในหน่วยความจำ ซึ่งใช้เก็บข้อมูลต่าง ๆ ด้วยขนาดตามชนิดข้อมูล 
การประกาศตัวแปร 
การประกาศตัวแปรในภาษา C นั้นสามรถทำได้ 2 ลักษณะ คือ การประกาศตัวแปรแบบเอกภาพ หรือการประกาศตัวแปรแบบ Global คือ ตัวแปรที่จะสามารถเรียกใช้ได้ทั้งโปรแกรม และแบบที่สองการประกาศตัวแปรแบบภายใน หรือการประกาศตัวแปรแบบ Local ซึ่งตัวแปรแระเภทนี้จะใช้ได้ในเฉพาะฟังก์ชั่นของตัวเองเท่านั้น 

#include
int total; /*การประกาศตัวแปรแบบ Global */
main()
{
int price,money; /*การประกาศตัวแปรแบบ Local*/

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

/*คำสั่ง */ 
printf(“\nWelcome. This Program adds\n”);
printf(“threenumbers.Enter three numbers\n”);
printf(“in the form: nnn nnn nnn \n”);
scanf(“%d %d %d”,&a,&b,&c);
/* ทำการบวกค่าระหว่าง a,b และ c เข้าด้วยกันแล้วกำหนดค่าให้ sum*/
sum=a+b+c;
printf(“The total is: %d\n”,sum);
printf(“Thant you. Have a good day.\n”);
return 0;
}
ผลการทำงาน:
Welcome. This Program adds
Three numbers. Enter three number
In the form: nnn nnn nnn 
11 22 23
The total is: 56
Thank you. Have a good day.

การกำหนดชนิดข้อมูลแบบชั่วคราว 
เมื่อผู้ใช้ได้กำหนดชนิดข้อมูลให้กับตัวแปรใด ๆ ไปแล้ว ตัวแปรตัวนั้นจะมีชนิดข้อมูลเป็นแบบที่กำหนดให้ตลอดไป บางครั้งการเขียนโปรแกรมอาจจะต้องมีความจำเป็นต้องเปลี่ยนชนิดข้อมูลของตัว แปรตัวนั้น ซึ่งภาษาซี ก็มีความสามารถที่จะทำเช่นนั้นได้ 
รูปแบบ 
([ชนิดข้อมูล])[ตัวแปร]
ตัวอย่าง 
(float)a
(int)a
โปรแกรมที่ 2-3 แสดงการใช้ตัวแปรแบบชั่วคราว 
#include
int main(void)
{
float a= 25.3658;
printf(“Value of a : %\n”,a);
printf(“Value of a when set is integer : %d\n”,(int)a);
return 0;
}
ผลการทำงาน :
Value of a : 25.365801
Value of a when change is integer : 25
ชนิดข้อมูลแบบค่าคงที่ (Constants)
ชนิดข้อมูลประเภทนี้ ชื่อก็บอกอยู่ว่าเป็นชนิดข้อมูลแบบค่าคงที่ ซึ่งก็คือข้อมูลตัวแปรประเภทที่เป็น Constants ผู้ใช้จะไม่สามารถเปลี่ยนแปลงค่าของตัวแปรตัวนั้น ในขณะที่โปรแกรมทำงานอยู่ 
รูปแบบ 
Const[ชนิดข้อมูล][ตัวแปร]=[ค่าหรือ นิพจน์]
ตัวอย่าง 
const folat a = 5.23;
const int b = a%2;
โปรแกรมที่ 2-4 การใช้ตัวแปรชนิดข้อแบบค่าคงที่ 
#include
imt main(void)
{
const float pi = 3.14159;
float radius;
radius = 3;
printf(“Value of pi  : %f\n”,pi);
printf(“Value of area : %f\n”,pi*(radius*radius));
return 0;
}
ผลการทำงาน:
Value of pi : 3.141590
Value of area : 28.274311
constant นั้นสามารถแบ่งออกได้ ดังนี้ 
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 การใช้ตัวแปรชนิดข้อมูลแบบค่าคงที่แบบต่าง ๆ 
#includ
int main(void)
{
const int a = 3; /*Integer Constats*/
const flat b = 3.14159; /*Floating – Point Constants*/
const cahr c = ‘P’; /*Character Constants*/
printf(“Value of a: %d\n”,a);
printf(“Value of b: %d\n”,b);
printf(“Value of c: %d\n”,c);
printf(“Good Bye”); /*String Constants*/
return 0;
}
ผลการทำงาน 
Value of  a : 3
Value of  b : 3.141590
Value of  c : P
Good Bye
Statements
                    statements ในภาษา c คือ คำสั่งต่าง ไ ที่ประกอบขึ้นจนเป็นตัวโปรแกรม ซึ่งในภาษา c นั้นได้แบ่งออกเป็น 6 แบบ คือ Expression Statement และ Compound Statement ณ.ที่นี้จะมีด้วยกัน 2 แบบ
  1. 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 จะเป็นตัวฟังชั่น

ที่มา : http://itd.htc.ac.th/st_it50/it5016/nidz/Web_C/unit2.html