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

การเขียนโปรแกรมแบบ วนซ้ำ

การเขียนโปรแกรมแบบ วนซ้ำ (Repetition & Loop)

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

คำสั่ง if
คำสั่ง if จะใช้ในกรณีที่มีทางเลือกให้ทำงานอยู่เพียงทางเลือกเดียว โดยถ้าตรวจสอบเงื่อนไขแล้วเป็นจริง จึงจะทำงานตามคำสั่ง
รูปแบบคำสั่ง if
if (เงื่อนไข )
{
คำสั่งที่ 1;
}
คำสั่งที่ 2;


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

โฟลวชาร์ตแสดงการทำงานของคำสั่งเงื่อนไข 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");

}

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

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

1.ตัวอย่างการเขียนรหัสเทียม




2.ตัวอย่างการเขียนผังงาน

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

Code ตัวอย่างโปรแกรม

และหน้าตาโปรแกรมภาษาซี

ตัวอย่างที่ 1 แสดงตัวอย่างโปรแกรมภาษาซีเบื้องต้น

#include <stdio.h>

void main( ) {

/* Display message to standard output */

printf(“My first program.”);



ตัวอย่างที่ 2 แสดงตัวอย่างโปรแกรมภาษาซีเบื้องต้น

#include <stdio.h> void main( ) { /* Display message to standard output */ printf

(“My first program.”); }



ตัวอย่างที่ 3 แสดงตัวอย่างโปรแกรมภาษาซีเบื้องต้น

#include

<stdio.h>

void

main

()

{

/* Display message

to standard

output */

printf

(

My first program.”

)

;

}



ตัวอย่างที่ 4 แสดงตัวอย่างการใช้ค่าของตัวแปรชนิด char

#include <stdio.h>

void main( ) {

int no;

char ch;

ch = ‘J’;

printf(“char : %c, dec : %d, oct : %o, hex : %x”, ch, ch, ch, ch);

no = ch;

printf(“\nno : %d, ch : %c”, no, ch);

no = 68;

ch = no;

printf(“\nno : %d, ch : %c”, no, ch);

}

ผลการทำงานของโปรแกรม

char : J, dec : 74, oct : 112, hex : 4a

no : 74, ch : J

no : 68, ch : D



ตัวอย่างที่ 5 แสดงตัวอย่างการรับข้อมูลเพื่อนำมาแสดงผล

#include <stdio.h>

void main( ) {

char name[100];

printf("What is your name ?\n");

scanf("%s", name);

printf("Very glad to know you, ");

printf("%s.",name);

}

ผลลัพธ์ของการทำงาน

What is your name ?

Willy

Very glad to know you, Willy.



ตัวอย่างที่ 6 แสดงการกำหนดค่าจำนวนจริงให้กับตัวแปรจำนวนเต็ม

#include <stdio.h>

void main( ) {

int x;

x = 14.8328;

printf(“x value is %d”, x);

}

ผลการทำงานของโปรแกรม

x value is 14



ตัวอย่างที่ 7 โปรแกรมหาผลรวมของเลขจำนวนเต็ม 2 จำนวนที่รับข้อมูลจากผู้ใช้

#include <stdio.h>

void main( ) {

int x, y, z;

printf(“Enter X value : “);

scanf(“%d”, &x);

printf(“Enter Y value : “);

scanf(“%d”, &y);

z = x + y;

printf(“Summary of X and Y is %d”, z);

}

ผลการทำงานของโปรแกรม

Enter X value : 15

Enter Y value : 20

Summary of X and Y is 35



ตัวอย่างที่ 8 แสดงการใช้ตัวดำเนินการเพิ่มค่า

#include <stdio.h>

void main( ) {

int y, count;

count = 1;

y = count++;

printf(“y = %d, count = %d”, y, count);

count = 1;

y = ++count;

printf(“\ny = %d, count = %d”, y, count);

}

ผลการทำงานของโปรแกรม

y = 1, count = 2

y = 2, count = 2



ตัวอย่างที่ 9 แสดงการใช้ตัวดำเนินการเปลี่ยนชนิดข้อมูล

#include <stdio.h>

void main( ) {

int x;

x = 2.5 * 2;

printf(“x value is %d”, x);

x = (int)2.5 * 2;

printf(“\nx value is %d”, x);

x = (int)(2.5 * 2);

printf(“\nx value is %d”, x);

}

ผลการทำงานของโปรแกรม

x value is 5

x value is 4

x value is 5



ตัวอย่างที่ 10 แสดงของการเปรียบเทียบด้วยตัวกาํเนินการความสัมพันธ์

#include <stdio.h>

void main( ) {

int x, y

printf(“Enter X : “);

scanf(“%d”, &x);

printf(“Enter Y : “);

scanf(“%d”, &y);

printf(“X > Y is %d”, x>y);

}



ผลการทำงานของโปรแกรม

Enter X : 32

Enter Y : 24

X > Y is 1

โครงสร้างของภาษา C

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

โครงสร้างของภาษา C
ทุกโปรแกรมของภาษา C มีโครงสร้างเป็นลักษณะดังรูป

Int main (void)
{
เฮดเดอร์ไฟล์ (Header Files)
เป็นส่วนที่เก็บไลบรารี่มาตรฐานของภาษา C ซึ่งจะถูกดึงเข้ามารวมกับโปรแกรมในขณะที่กำลังทำการคอมไพล์ โดยใช้คำสั่ง
#include<ชื่อเฮดเดอร์ไฟล์> หรือ
#include “ชื่อเฮดเดอร์ไฟล์”
ตัวอย่าง
#include<stdio.h>
เฮดเดอร์ไฟล์นี้จะมีส่วนขยายเป็น .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)
เป็นส่วนที่ใช้สำหรับแสดงข้อความเพื่ออธิบายสิ่งที่ต้องการในโปรแกรม ซึ่งจะใช้เครื่องหมาย /*และ */ ปิดหัวและปิดท้ายของข้อความที่ต้องการ

ประเภทของข้อมูล

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

1. สารสนเทศที่ดีต้องมีความความถูกต้อง (Accurate) และไม่มีความผิดพลาด

2. ผู้ที่มีสิทธิใช้สารสนเทศสามารถเข้าถึง (Accessible) สารสนเทศได้ง่าย ในรูปแบบ และเวลาที่เหมาะสม ตาม

ความต้องการของผู้ใช้

3. สารสนเทศต้องมีความชัดเจน (Clarity) ไม่คลุมเครือ

4. สารสนเทศที่ดีต้องมีความสมบูรณ์ (Complete) บรรจุไปด้วยข้อเท็จจริงที่มีสำคัญครบถ้วน

5. สารสนเทศต้องมีความกะทัดรัด (Conciseness) หรือรัดกุม เหมาะสมกับผู้ใช้

6. กระบวนการผลิตสารสนเทศต้องมีความประหยัด (Economical) ผู้ที่มีหน้าที่ตัดสินใจมักจะต้องสร้างดุลยภาพ

ระหว่างคุณค่าของสารสนเทศกับราคาที่ใช้ในการผลิต

7. ต้องมีความยึดหยุ่น (Flexible) สามารถในไปใช้ในหลาย ๆ เป้าหมาย หรือวัตถุประสงค์

8. สารสนเทศที่ดีต้องมีรูปแบบการนำเสนอ (Presentation) ที่เหมาะสมกับผู้ใช้ หรือผู้ที่เกี่ยวข้อง

9. สารสนเทศที่ดีต้องตรงกับความต้องการ (Relevant/Precision) ของผู้ที่ทำการตัดสินใจ

10. สารสนเทศที่ดีต้องมีความน่าเชื่อถือ (Reliable) เช่น เป็นสารสนเทศที่ได้มาจากกรรมวิธีรวบรวมที่น่าเชื่อ ถือ หรือแหล่ง (Source) ที่น่าเชื่อถือ เป็นต้น

11. สารสนเทศที่ดีควรมีความปลอดภัย (Secure) ในการเข้าถึงของผู้ไม่มีสิทธิใช้สารสนเทศ

12. สารสนเทศที่ดีควรง่าย (Simple) ไม่สลับซับซ้อน มีรายละเอียดที่เหมาะสม (ไม่มากเกินความจำเป็น)

13. สารสนเทศที่ดีต้องมีความแตกต่าง หรือประหลาด (Surprise) จากข้อมูลชนิดอื่น ๆ

14. สารสนเทศที่ดีต้องทันเวลา (Just in Time : JIT) หรือทันต่อความต้องการ (Timely) ของผู้ใช้ หรือสามารถส่ง

ถึงผู้รับได้ในเวลาที่ผู้ใช้ต้องการ

15. สารสนเทศที่ดีต้องเป็นปัจจุบัน (Up to Date) หรือมีความทันสมัย ใหม่อยู่เสมอ มิเช่นนั้นจะไม่ทันต่อการ

เปลี่ยนแปลงที่ดำเนินไปอย่างรวดเร็ว

16. สารสนเทศที่ดีต้องสามารถพิสูจน์ได้ (Verifiable) หรือตรวจสอบจากหลาย ๆ แหล่ง ได้ว่ามีความถูกต้อง

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

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

การพัฒนาโปรแกรมภาษา C มีขั้นตอนดังนี้
1) เขียนโปรแกรมต้นฉบับ (source program) ด้วยภาษา C
ใช้โปรแกรม Turbo C/ C++ เพื่อเขียนโปรแกรมต้นฉบับด้วยภาษา C จากนั้นบันทึกโปรแกรมพร้อมกับตั้งชื่อแฟ้มไว้ แฟ้มที่ได้จะมีนามสกุล *.c หรือ *.cpp เช่น simple.c หรือ simple.cpp เป็นต้น นอกจากนี้ยังสามารถใช้โปรแกรม Turbo C/C++ เขียนโปรแกรมภาษา C++ ได้อีกด้วย
2) แปลโปรแกรมภาษา C ไปเป็นโปรแกรมภาษาเครื่อง (object program)
ใช้คำสั่ง compile เพื่อแปลโปรแกรมภาษา C ไปเป็นโปรแกรมภาษาเครื่อง แฟ้มที่ได้จะมีนามสกุล *.obj ซึ่งในขั้นตอนนี้โปรแกรมต้นฉบับอาจเกิดความผิดพลาดทางไวยกรณ์ภาษา (syntax error) ขึ้นได้ จึงต้องย้อนกลับไปแก้ไขโปรแกรมต้นฉบับในข้อ 1. ให้ถูกต้องเสียก่อน
3) เชื่อมโยง (link) โปรแกรมภาษาเครื่องเข้ากับ library function ของภาษา C จะได้เป็น execute program โดยใช้คำสั่ง link แฟ้มที่ได้จะมีนามสกุล *.exe
4) สั่งให้ execute program แสดงผลลัพธ์ออกมา โดยใช้คำสั่ง run
ในขั้นตอนนี้ผู้เขียนโปรแกรม ควรตรวจสอบผลลัพธ์ที่ได้จากโปรแกรมว่าตรงกับความต้องการของเราหรือไม่ ถ้าผลลัพธ์ที่ได้ไม่ตรงกับความต้องการให้กลับไปแก้ไขโปรแกรมต้นฉบับในข้อ 1. เสร็จแล้วทำขั้นตอน ข้อ 2. ถึง ข้อ 4. ซ้ำอีก ทำซ้ำเช่นนี้จนกว่าจะได้ผลลัพธ์ที่ต้องการ
หมายเหตุ ในทางปฏิบัติ การ compile/ link/ run ในโปรแกรม Turbo C/C++ สามารถทำให้พร้อมกันทั้ง 3 ขั้นตอน คือใช้คำสั่ง Ctrl + F9 (กดปุ่ม Ctrl และปุ่ม F9 พร้อมกัน)
โดยสรุปเราสามารถเขียนผังงานแสดงขั้นตอนการพัฒนาโปรแกรมภาษา C ได้ดังนี้

การเขียนผังงาน ( Flowchart )

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

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

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



 สัญลักษณ์ในการเขียนผังงาน



 

รหัสเทียม (Psuedocode)

รหัสเทียม (Psuedocode)

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

ชื่อ (Name)

มักขึ้นต้นด้วยคำว่า procedure ตามด้วยชื่อของขั้นตอนวิธี และลำดับและชนิดของตัวแปรที่ใช้รับข้อมูลนำเข้า เช่น
Procedure FindMax(a1, a2, …, an : integers)

คำสั่งกำหนดงาน (Assignment Statements)

ใช้เครื่องหมาย := (หรือบางครั้งใช้ ¬) สำหรับกำหนดค่าจากนิพจน์ทางขวาให้แก่ตัวแปรทางด้านซ้าย
เช่น
Variable := expression
b := 5
a := n + 10
d := sqrt(4)
z ¬ จำนวนที่มากที่สุดในลำดับ L
a ¬ สลับค่าของตัวแปร a กับ b

กลุ่มของคำสั่ง (Blocks of Statements)

คำสั่งอาจมีการรวมกลุ่มเพื่อให้ง่ายต่อการเข้าใจโดยขึ้นต้นกลุ่ม(Block) ด้วยคำว่า begin และสิ้นสุดด้วยคำว่า end ทั้งนี้แต่ละบรรทัดของคำสั่งจะมีการย่อหน้าที่เท่ากันด้วย
เช่น
begin
b:=i
n:=sqrt(b)
q:=b/n
end
ข้อบันทึกหรือคำอธิบาย
บันทึกในเครื่องหมาย {} เพื่อช่วยเตือนความจำหรืออธิบายขั้นตอนที่อาจเข้าใจยาก
เช่น
n := floor(x)
{floor function floor(1.5) = 1 and floor(-1.5) = -2}

คำสั่งควบคุม (control Statements)

แบ่งได้เป็น 2 ชนิด คือ
1. คำสั่งเงื่อนไข การทำงานเริ่มจากเงื่อนไขจะถูกตรวจสอบก่อน ถ้าเป็นจริงแล้วคำสั่ง(หรือกลุ่มของคำสั่ง) ที่กำหนดไว้จะถูกปฏิบัติต่อไป โดยอาจมีทางเลือกด้วยว่าถ้าเงื่อนไขไม่เป็นจริง จะปฏิบัติคำสั่ง(หรือกลุ่มของคำสั่ง) อื่นแทน คำสั่งเงื่อนไขมีรูปแบบคือ
IF(เงื่อนไข)then
คำสั่ง(หรือกลุ่มของคำสั่ง)ที่ต้องปฏิบัติเมื่อเงื่อนไขเป็นจริง
หรือ
IF(เงื่อนไข)then
คำสั่ง(หรือกลุ่มของคำสั่ง)ที่ต้องปฏิบัติเมื่อเงื่อนไขเป็นจริง
else
คำสั่ง(หรือกลุ่มของคำสั่ง)ที่ต้องปฏิบัติเมื่อเงื่อนไขไม่เป็นจริง
เงื่อนไขคือนิพจน์ที่เมื่อถูกตรวจสอบหรือคำนวณแล้วจะมีค่าความจริงเป็นจริงหรือเท็จเท่านั้น
เช่น
If (n<0) then
n := -n
ans := sqrt (n)
หรือ
If (a < b) then
smaller := a
else
smaller := b
บางครั้งเงื่อนไขที่ต้องการตรวจสอบอาจมีมากกว่าหนึ่งเงื่อนไข คำสั่งเงื่อนไขสามารถเขียนได้เป็นระบบ
เช่น
If (n > 80) then
Point := 4
Else If (n > 70) then
Point := 3
Else If (n > 60) then
Point := 2
Else If (n > 50) then
Point := 1
Else
Point := 0
2. คำสั่งทำซ้ำ แบ่งได้เป็น 2 แบบ คือ
a. คำสั่งทำซ้ำตามดัชนี(for loop) เริ่มต้นด้วยการกำหนดค่าของดัชนีให้มีค่าเท่ากับ ค่าเริ่มต้น แล้วจึงปฏิบัติคำสั่ง(หรือกลุ่มของคำสั่ง)จนสิ้นสุด จากนั้นค่าของดัชนีจะถูกเพิ่มขึ้นอีกครั้งละ 1 สลับกับการปฏิบัติคำสั่ง(หรือกลุ่มของคำสั่ง) 1 ครั้ง
คำสั่งทำซ้ำตามดัชนีจะสิ้นสุดก็ต่อเมื่อตัวแปรที่เป็นดัชนีมีค่ามากกว่าค่าสุดท้าย
คำสั่งทำซ้ำตามดัชนีมีรูปแบบคือ
For ตัวแปรที่เป็นดัชนี := ค่าเริ่มต้น to ค่าสุดท้าย do
คำสั่ง(หรือกลุ่มของคำสั่ง)ที่ต้องปฏิบัติ
เช่น
Power := n
For i:= 1 to 5 do
Power := power*n
หรือ
Sum := 0
For j := 1 to 10 do
Sum := sum + j
b. คำสั่งทำซ้ำในขณะที่เงื่อนไขเป็นจริง (While loop) - เริ่มต้นด้วยการตรวจสอบเงื่อนไขก่อนถ้าเป็นจริง คำสั่ง(หรือกลุ่มของคำสั่ง)ที่กำหนดไว้จะถูกปฏิบัติต่อไปจนสุด จากนั้นเงื่อนไขจะถูกตรวจสอบอีก ถ้าเป็นจริงแล้ว คำสั่ง(หรือกลุ่มของคำสั่ง)ที่กำหนดไว้จะถูกปฏิบัติต่อไปจนสิ้นสุดอีกครั้งหนึ่ง
คำสั่งทำซ้ำในขณะที่เงื่อนไขเป็นจริงนี้ จะสิ้นสุดก็ต่อเมื่อตรวจสอบเงื่อนไขแล้วพบว่าไม่จริง
คำสั่งทำซ้ำในขณะที่เงื่อนไขเป็นจริงมีรูปแบบคือ
While(เงื่อนไข)do
คำสั่ง(หรือกลุ่มของคำสั่ง)ที่ต้องปฏิบัติ
เช่น
N := 10000
While (n>1) do
Begin
N := n/10
end