การเขียนโปรแกรมภาษา C
posted on 14 Sep 2011 20:24 by premkaknaตัวแปรจะเป็นชื่อที่ใช้ในการบอกจำนวนหรือปริมาณ ซึ่งสามารถที่จะทำการเปลี่ยนแปลงจำนวนได้ด้วยโปรแกรมคอมพิวเตอร์ การตั้งชื่อตัวแปร จะต้องตั้งชื่อให้แตกต่างไปจากชื่อของตัวแปรอื่นๆ ยกตัวอย่างชื่อของตัวแปร ได้แก่ x, y, peter, num_of_points และ streetnum เป็นต้น โดยปกติการเขียนโปรแกรมที่ดี ควรจะตั้งชื่อตัวแปรให้สอดคล้องกับการทำงานหรือหน้าที่ของตัวแปรนั้นๆ เพราะเมื่อถึงเวลาต้องมาทำการปรับปรุงแก้ไขโปรแกรม จะสามารถทำได้โดยไม่ยากนัก
ในภาษา C หรือ C++ ได้มีกฏในการตั้งชื่อตัวแปรที่สามารถใช้งานได้ดังนี้
- ชื่อตัวแปรจะต้องขึ้นต้นด้วยตัวอักษร
- ชื่อตัวแปรจะประกอบไปด้วย ตัวอักษร ตัวแลข และ _ ได้เท่านั้น
- ชื่อตัวแปรจะต้องไม่ใช่ชื่อ reserved word (ชื่อที่มีการจองไว้แล้ว)
ตัวอย่างของชื่อตัวแปรที่สามารถนำมาใช้ตั้งชื่อได้ ได้แก่
length, days_in_year, DataSet1, Profit95, Pressure, first_one
และตัวอย่างของชื่อ ที่ไม่สามารถนำมาใช้เป็นชื่อตัวแปรได้ ยกตัวอย่างเช่น
day-in-year, 1data, int, first.val เป็นต้น
reserved word (ชื่อที่มีการจองไว้แล้ว)
Reserved words หรือตัวแปรที่ได้จองไว้แล้วนั้น จะประกอบไปด้วยตัวอักษรตัวเล็กทั้งหมด และจะมีความสำคัญสำหรับภาษา C++ และจะไม่นำมาใช้ด้วยวัตถุประสงค์อื่นๆ ตัวอย่างของ Reserved words ได้แก่ and, bool, break, case, catch, char, class, continue, default, delete, do, double, if , else, enum, export, extern เป็นต้น
นอกจากนี้ในภาษา C หรือ C++ ชื่อตัวแปร ที่ประกอบไปด้วยอักษรเล็ก หรือใหญ่ ก็มีความแตกต่างกัน หรือที่เรียกว่า Case sensitive ยกตัวอย่างเช่น
‘X’ และ ‘x’ เป็นตัวแปรต่างกัน
‘peter’ และ ‘Peter’ เป็นตัวแปรต่างกัน
‘bookno1’ และ ‘bookNo1’ เป็นตัวแปรต่างกัน
‘XTREME’ และ ‘xtreme’ เป็นตัวแปรต่างกัน
‘X1’ และ ‘x1’ เป็นตัวแปรต่างกัน
‘int’ และ ‘Int’ เป็นตัวแปรต่างกัน
การกำหนดชนิดของตัวแปร (Declaration of Variables)
ในภาษา C หรือ C++ (และโปรแกรมในภาษาอื่นๆ) ตัวแปรทุกตัวที่จะมีการเรียกใช้ในโปรแกรมจำเป็นต้องมีการกำหนดชนิดของตัวแปร นั้นๆ ก่อนที่จะทำการเรียกใช้ตัวแปร
การกำหนดชนิดของตัวแปรมีวัตถุประสงค์หลัก 2 ประการได้แก่
- เป็นการบอกชนิด และตั้งชื่อตัวแปรที่จะเรียกใช้ ชนิดของตัวแปรจะทำให้คอมไพเลอร์สามารถแปลคำสั่งได้อย่างถูกต้อง (ยกตัวอย่างเช่น ใน CPU คำสั่งที่ใช้ในการบวกตัวเลขจำนวนเต็ม 2 จำนวน ย่อมแตกต่างจากคำสั่งที่จะบวกจำนวนจริง 2 จำนวนเข้าด้วยกัน)
- ชนิดของตัวแปร ยังเป็นบ่งบอกคอมไพเลอร์ให้ทราบว่าจะต้องจัดเตรียมเนื้อที่ให้กับตัวแปรตัว นั้นมากน้อยเท่าใด และจะจัดวางตัวแปรนั้นไว้แอดเดรส (Address) ไหนที่สามารถเรียกมาใช้ใน code ได้
สำหรับในบทความนี้จะพิจารณาชนิดตัวแปร 4 ชนิดที่ใช้กันมากได้แก่ int, float, bool และ char
int ชนิดตัวแปรที่สามารถแทนค่าจำนวนเต็มได้ทั้งบวกและลบ โดยปกติสำหรับคอมพิวเตอร์ทั่วไป คอมไพเลอร์ จะจองเนื้อที่ 2 ไบต์ สำหรับตัวแปรชนิด int จึงทำให้ค่าของตัวแปรมีค่าตั้งแต่ -32768 ถึง +32768
ตัวอย่างของค่า int ได้แก่ 123 -56 0 5645 เป็นต้น
floatชนิด ของตัวแปรที่เป็นตัวแทนของจำนวนจริง หรือตัวเลขที่มีค่าทศนิยม ความละเอียดของตัวเลขหลังจุดทศนิยมขึ้นอยู่กับระบบคอมพิวเตอร์ โดยปกติแล้ว ตัวแปรชนิด float จะใช้เนื้อที่ 4 ไบต์ นั่นคือจะให้ความละเอียดของตัวเลขหลังจุดทศนิยม 6 ตำแหน่ง และมีค่าอยู่ระหว่าง -1038 ถึง +1038
ตัวอย่างของค่า float ได้แก่ 16.315 -0.67 31.567
bool ชนิดของตัวแปรที่สามารถเก็บค่าลอจิก จริง (True) หรือ เท็จ (False) ตัวแปรชนิดนี้ เป็นที่รู้จักกันอีกชื่อคือ ตัวแปรบูลีน (Boolean)
ตัวอย่างของตัวแปรชนิด bool ได้แก่ 1 0 true false (เมื่อ 1 = true และ 0 = false)
char เป็นชนิดตัวแปรที่เป็นตัวแทนของ ตัวอักษรเพียงตัวเดียว อาจเป็นตัวอักษร ตัวเลข หรือตัวอักขระพิเศษ โดยปกติตัวแปรชนิดนี้จะใช้เนื้อที่เพียง 1 ไบต์ ซึ่งจะให้ตัวอักษรในรูปแบบที่แตกต่างกันได้ถึง 256 ค่า การเขียนรูปแบบของ char หลายๆ ตัว โดยปกติ จะอ้างอิงกับ American Standard Code for Information Interchange (ASCII)
ตัวอย่างของตัวแปรชนิด char ได้แก่ '+' 'A' 'a' '*' '7'
การกำหนดชนิดของตัวแปร สามารถเขียนได้อยู่ในรูป type identifier-list;
เมื่อ type บ่งบอกชนิดของตัวแปร ส่วน identifier-list เป็นการกำหนดชื่อของตัวแปร ซึ่งอาจจะมีมากกว่า 1 ตัวแปร และจะแยกตัวแปรแต่ละตัวออกจากกันด้วยเครื่องหมาย comma (,)
ตัวอย่าง รูปแบบของการกำหนดชนิดของตัวแปร ได้แก่
int i, j, count;
float sum, product;
char ch;
bool passed_exam;
มาถึงตอนนี้ เราก็จะสามารถปรับปรุงการเขียนโปรแกรมแบบง่ายๆ ได้ดังนี้
#include
main()
{
int its_price;
printf("How much is that ? ");
scanf("%d", &its_price);
printf("oh! %d ?, hmmm...., too expensivenn",its_price);
}
จาก code ข้างบน ผู้อ่านจะเห็น %d เมื่อมีการเรียกใช้ฟังก์ชัน scanf และ printf ทั้งนี้ %d จะเป็น format ที่ใช้บ่งบอกชนิดของตำแหน่ง (Place Holders) ที่จะมีการส่งข้อมูล โดยในที่นี้ %d หมายถึงตำแหน่งของจำนวนเต็ม หรือ int นั่นเอง ตัวอย่างของ Place Holders อื่นๆ สามารถแสดงได้ดังตาราง
คราวนี้ลองมาดูตัวอย่างของการใช้ Place Holders
printf("C=%f, F=%f",cel,fah);
printf("He wants to score %d goals today",9);
เมื่อ % เป็นการบ่งบอกตำแหน่งเริ่มต้นของ Place Holder จากนั้น
ตัวอักษร f ตัวแรก จะบ่งบอกถึง ตัวแปรcel ว่ามีค่าเป็นจำนวนจริง (Float)
ส่วน f ตัวทีสอง จะบ่งบอกคอมไพเลอร์ว่า ตัวแปร fah ก็มีค่าเป็นจำนวนจริงเช่นกัน
นอกจากนี้ Place holder %d และ %f ยังสามารถใช้กับการกำหนดตำแหน่งตัวเลขตามต้องการได้ ยกตัวอย่างเช่น สมมุติให้ x=235; และ y=6.54321;

การให้กำหนดค่าตัวแปร (Variable Assignment)
เราสามารถกำหนดค่าให้กับตัวแปรได้ ด้วยเครื่องหมาย = ยกตัวอย่างเช่น
int name; // กำหนดตัวแปร name ที่เก็บค่าจำนวนเต็ม
name = 23; // กำหนดให้ตัวแปร name มีค่าเป็น 23
ในขณะเดียวกัน เราสามารถใช้เครื่องหมาย = ระหว่างตัวแปรกับตัวแปร หรือตัวแปรกับจำนวนใดๆ ได้ อาทิเช่น
change = x1 - x2;
mean = (x1 + x2)/2;
x = x + 1;
ตอนนี้เราลองมาเขียนโปรแกรมอย่างง่าย เพื่อทำการแก้ปัญหาทางคณิตศาสตร์ ด้วยการแปลงค่า อุณหภูมิ ในหน่วยของ ฟาเรนไฮต์ เป็น เซลเซียส เมื่ออุณหภูมิในหน่วยฟาเรนไฮต์ มีค่า = 85 และเป็นที่ทราบกันดีว่า ความสัมพันธ์ระหว่าง องศาฟาเรนไฮต์ และ เซลเซียส สามารถเขียนได้อยู่ในรูปของสมการ

การเขียนโปรแกรม เพื่อแก้ปัญหา การแปลงค่า 85 ฟาเรนไฮต์ให้เป็นเซลเซียส สามารถเขียนได้ดังนี้
#include
void main()
{
float F;
float C;
F = 85;
C = 5*(F-32)/9;
printf("the result is %f",C);
}
อีกตัวอย่าง ของโปรแกรม การบวกค่าจำนวนเต็ม 2 จำนวนเข้าด้วยกัน แล้วแสดงผลลัพธ์ออกทางหน้าจอ การเขียนโปรแกรมเพื่อแก้ปัญหานี้ สามารถเขียนได้ดังนี้
#include
void main()
{
int N1, N2, Sum;
printf("please input an integer number : ");
scanf("%d",&N1);
printf("please input another integer number : ");
scanf("%d",&N2);
Sum = N1 + N2;
printf("so, %d + %d = %d",N1,N2,Sum);
}
จากตัวอย่างการเขียนโปรแกรมข้างต้น จะเห็นว่ามีการคำนวณทางคณิตศาสตร์เข้ามาเกี่ยวข้อง คราวนี้เราลองมาดู การคำนวณในภาษา C กันว่าจะเขียนกันได้อย่างไรบ้าง

2.การเขียนโปรแกรมแบบมีทางเลือก (Selection Structures)
การเขียนโปรแกรมแบบมีทางเลือก จะสามารถทำให้โปรแกรมสามารถตัดสินใจหรือเปรียบเทียบ จากนั้นก็จะเลือกดำเนินการไปในทิศทางหนึ่งจากสองทิศทาง ขึ้นอยู่กับผลที่ได้จากการเปรียบเทียบนั้น
เงื่อนไข (Condition)
- เป็นตัวกำหนดเงื่อนไขที่ผู้พัฒนาโปรแกรมได้สร้างขึ้นมา
- ผลลัพธ์ที่ได้จากเงื่อนไข จะมีค่า จริงหรือ เท็จ
โครงสร้างของเงื่อนไข (Condition Control Structures)
ประโยคเงื่อนไขสามารถที่จะเขียนให้อยู่ในรูปภาษา C จะเขียนได้ดังนี้
if condition then A else B
ซึ่งหมายความว่า ถ้าเงื่อนไข (condition) มีค่าเป็นจริง ก็จะดำเนินการทำคำสั่ง A มิเช่นนั้นก็จะทำคำสั่ง B
ตัวอย่างของการเขียนโครงสร้างทางเลือกในภาษา C สามารถเขียนได้ดังนี้
if (x < y)
a = x * 2;
else
a = x + y;
ความหมายของ code ดังกล่าว หมายความว่า ถ้า ค่า x มีค่าน้อยกว่า y แล้ว a = x*2
แต่ถ้า x มีค่ามากกว่าหรือเท่ากับ y แล้ว a = x+y นั่นเอง
รูปแบบของเงื่อนไข ส่วนใหญ่จะอยู่ในรูป “ตัวแปร โอเปอเรเตอร์ ตัวแปร” โอเปอเรเตอร์ที่กล่าวถึงนี้จะมีอยู่ 2 แบบ ด้วยกันคือ โอเปอเรเตอร์สัมพันธ์ (Relational Operator) และ โอเปอเรเตอร์ลอจิก (Logical Operator)
โอเปอเรเตอร์สัมพันธ์ที่ใช้ในภาษา C มีดังต่อไปนี้

if ( condition1 )
statement1 ;
else
if ( condition2 )
statement2 ;
. . .
else if ( condition-n )
statement-n ;
else
statement-e ;
ยกตัวอย่างของโปรแกรม Nested if สามารถเขียนได้ดังนี้
if (x < 0.25)
count1++;
else if (x < 0.5)
count2++;
else if (x < 0.75)
count3++;
else
count4++;
นอกจากรูปแบบของ if-else แล้ว เรายังสามารถใช้เครื่องหมาย ? มาประยุกต์ในการเขียน code เพื่อให้ได้ความหมายเดียวกันกับ if-else ดังแสดงให้เห็นดังนี้
if (x < y)
a = x * 2;
else
a = x + y;
สามารถเขียนได้ในอีกรูปแบบหนึ่งคือ a = x < y ? x*2: x+y ; // ซึ่งจะให้ความหมายเดียวกันกับ code ข้างบนนั่นเอง
ในบางครั้งที่เราต้องเขียนโปรแกรมแบบมีทางเลือก โดยบางครั้งเราต้องการให้มีทางเลือกมากว่า 2 ทาง Nested if เป็นวิธีหนึ่งที่สามารถใช้แก้ปัญหาได้ แต่เพื่อให้ง่ายขึ้น ในภาษา C เราจึงสามารถใช้คำสั่ง switch ได้ โดยรูปแบบการเขียน คำสั่ง switch สามารถเขียนให้อยู่ในรูป
switch (selector)
{
case label1: statement1;
break;
case label2: statement2;
break;
...
case labeln: statementn;
break;
default: statementd; // optional
break;
}
โดยที่ selector จะต้องเป็นจำนวนเต็ม ตัวอักษร หรือผลลัพธ์ของการกระทำที่ให้เลขจำนวนเต็มหรือตัวอักษร ตัวอย่างของการเขียน code โดยมีการเรียกใช้คำสั่ง switch สามารถเขียนได้ดังนี้
switch (i)
{
case 1 : grade = 'A';
break;
case 2 : grade = 'B';
break;
case 3 : grade = 'c';
break;
default : printf("%c not in range", i);
break;
}
โดยหลักการของ switch คือ compiler จะทำการเปรียบเทียบค่าของ selector เทียบกับ label ถ้าไม่ตรงกับ label ใดๆ ก็จะเข้าไปทำในคำสั่งของ default นอกจากนี้ การใส่คำสั่ง break หรือไม่มีคำสั่ง break ก็จะให้ผลลัพธ์ที่แตกต่างกัน ดังแสดงให้เห็นดังตัวอย่างต่อไปนี้ (ทดลอง Run แล้วจะเห็นความแตกต่าง)


การเปรียบเทียบตัวอักษร
คุณผู้อ่านทราบกันหรือไม่ว่า ตัวอักษรสามารถเปรียบเทียบค่ากันได้ เบื้องต้นเราต้องทราบก่อนว่า ตัวอักษรมีค่าอย่างไรกันบ้าง
ตัวอักษรตัวเล็ก ‘a’ มีค่า 97 ไปจนถึง ‘z’ มีค่า 122
ตัวอักษรตัวใหญ่ ‘A’ มีค่า 65 ไปจนถึง ‘Z’ มีค่า 90
ตัวอย่างของการเปรียบเทียบตัวอักษร สามารถแสดงให้เห็นได้ดังนี้
‘9’ >= ‘0’ มีค่าเป็นจริง (1)
‘a’ < ‘e’ มีค่าเป็นจริง (1)
‘B’ <= ‘A’ มีค่าเป็นเท็จ (0)
‘a’ <= ‘A’ ขึ้นอยู่กับระบบ แต่ส่วนใหญ่ เป็นเท็จ
‘a’ <= ‘c’ && ‘c’ <= ‘z’ มีค่าเป็นจริง
คราวนี้เราลองมาดูโจทย์กัน สมมุติว่า เราจะเขียนโปรแกรม เพื่ออ่านค่าตัวอักษร 4 ตัว แล้ว เราต้องการที่จะเปลี่ยนตัวอักษรแต่ละตัว ให้เป็นตัวอักษรใหญ่ หรือเล็กที่ตรงข้ามกับค่าที่รับเข้าไป ยกตัวอย่างเช่น PooH ให้เปลี่ยนเป็น pOOh เราจะเขียนโปรแกรมอย่างไร
คำตอบ วิธีหนึ่งที่สามารถทำได้ คือใช้ Nested-if ดังนี้
#include
void main()
{
char A, B, C, D;
printf("Input 4 charactersn");
scanf("%c %c %c %c", &A, &B, &C, &D);
if((A <= 90)&&(A >= 65)) A = (A - 65) + 97;
else if ((A >= 97)&&(A <= 122)) A = (A-97) + 65;
else A = A;
if((B <= 90)&&(B >= 65)) B = (B - 65) + 97;
else if ((B >= 97)&&(B <= 122)) B = (B-97) + 65;
else B = B;
if((C <= 90)&&(C >= 65)) C = (C - 65) + 97;
else if ((C >= 97)&&(C <= 122)) C = (C-97) + 65;
else C = C;
if((D <= 90)&&(D >= 65)) D = (D - 65) + 97;
else if ((D >= 97)&&(D <= 122)) D = (D-97) + 65;
else D = D;
printf("The answer is %c %c %c %cn", A, B, C, D);
3.การเขียนโปรแกรมแบบ วนซ้ำ (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 %dn",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(“%dn”,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 %dn", 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 = %dn”,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 = %dn”,count);
}
for ( count=10 ; count > 5 ; count -= 2) // ตัวแปร count มีค่าเปลี่ยนแปลงลดลงครั้งละ 2
{
printf(“count = %dn”,count);
}
นอกจากนี้เรายังสามารถใช้ตัวแปร เป็นการกำหนด ค่าเริ่มต้น เงื่อนไข และ เปลี่ยนแปลงได้ ยกตัวอย่างเช่น
start = 0; end = 20; step=3;
for ( count=start ; count < end ; count += step)
{
printf(“count = %dn”,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("n");
}
for(j= number-1; j>= 0; j--)
{
for(i=0; i< j; i++)
{
printf("%d ", i);
}
printf("n");
}
}
โครงสร้างการเขียนโปรแกรมแบบวนซ้ำโดยใช้คำสั่ง 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 numbern");
scanf("%d", &number);
i = 0;
do
{
if((i % 4) == 0) printf("%d ", i);
i++;
}
while(i <= number);
}
ตอนนี้ผู้อ่านก็คงจะรู้จัก การเขียนโปรแกรมแบบวนซ้ำกันแล้วนะ ต่อไป เราก็จะไปเรียนรู้เกี่ยวกับการเขียนโปรแกรมแบบแยกเป็นโมดูลกัน
สำหรับนักพัฒนา ที่ได้ทำการพัฒนาโปรแกรมมามากๆ บางครั้ง จำเป็นต้องเขียนโปรแกรมที่มีขนาดใหญ่และมีความสลับซับซ้อน จึงจำเป็นต้องหาวิธีในการพัฒนาโปรแกรมที่ดี ซึ่งสามารถทำได้ด้วยการ แตกปัญหาใหญ่ออกเป็นปัญหาย่อยๆ แล้วแก้ปัญหาย่อยออกไปที่ละส่วนจนกว่าจะหมด ซึ่งจะช่วยให้แก้ปัญหาใหญ่ๆ ได้สำเร็จนั่นเอง ซึ่งเราเรียกกันว่า วิธีแบ่งแยกแล้วพิชิต (Divide and Conquer) ซึ่งจะเป็นแนวการแก้ปัญหาแบบจากบนลงล่าง (Top down approach) ดังแสดงให้เห็นดังภาพที่ 4.1

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

1) ส่วนรับข้อมูล (Input) ซึ่งจะเป็นไปตามความต้องการของผู้ใช้ เช่นการป้อนข้อมุล หรือ การอ่านไฟล์ข้อมูล
2) ส่วนการคำนวณ (CAL) ซึ่งประกอบด้วยฟังก์ชันที่ใช้กับการคำนวณ ได้แก่
i. AVG สำหรับคำนวณค่าเกรดเฉลี่ยสำหรับเทอมปัจจุบัน
ii. GPA สำหรับคำนวณเกรดเฉลี่ยสะสม
3) ส่วนการแสดงผล (Display) ซึ่งเป็นการแสดงผลบนจอภาพ หรือจะพิมพ์ผลออกมาก็ได้ตามความต้องการของผู้ใช้โปรแกรม ที่กำหนดให้ผู้เขียนโปรแกรมทำให้สำเร็จตามเป้าหมาย
วันเเม่เเห่งชาติ
posted on 04 Jul 2011 21:40 by premkaknaการศึกษา
ทรงหมั้น
พระราชโอรสธิดา
พระราชภารกิจใน 3 จังหวัดชายแดนภาคใต้
โครงการราษฎรอาสารักษาหมู่บ้าน
โครงการอันเนื่องมาจากพระราชดำริ ในสมเด็จพระนางเจ้าฯ พระบรมราชินีนาถ ใน 3 จังหวัดชายแดนภาคใต้โครงการหนึ่ง คือ โครงการราษฎรอาสารักษาหมู่บ้านเกิดจากเมื่อปี 2547 สมเด็จพระนางเจ้าฯพระบรมราชินีนาถเสด็จฯเยี่ยมราษฎร ราษฎรใน 5 หมู่บ้าน ได้ เข้ามาร้องไห้กับพระองค์ท่านแล้วบอกว่าอยู่ไม่ได้ แล้ว เพราะถูกรบกวนหนัก จนมีคนในตำบลตันหยงลิมอ ถูกตัดคอคามอเตอร์ไซด์ระหว่างไปกรีดยางตอนเช้ามืด ชาวบ้านบอกว่าเหตุการณ์อย่างนี้ไม่เคยเกิดขึ้น ชาวบ้านถามพระองค์ท่านว่าจะให้พวกฉันอยู่ที่นี่ หรือจะให้ไปจากที่นี่ สมเด็จพระบรมราชินีนาถรับสั่งว่าในเมื่อเราอยู่ที่นี่ เราทำมาหากินที่นี่มาตั้งแต่ปู่ย่าตายาย แล้วจะอพยพไปที่ไหนกัน
พระองค์ท่านก็ทรงพระกรุณาบอกทหารให้ส่งคนมาช่วยฝึกอาวุธให้ ตามที่ชาวบ้านได้ ถวายฎีกา และรับสั่งว่าที่ให้ฝึกนั้นเพื่อป้องกันตัวเอง ป้องกันทรัพย์สินพี่น้องเรากันเอง ไม่ได้ มีเจตนาให้พวกเธอเที่ยวเอาปืนไปไล่ฆ่าใครต่อใครเขา ขอให้ทำความเข้าใจกันให้ถ่องแท้ รับสั่งเสมอว่าผู้บริสุทธิ์มีสิทธิ์อยู่บนแผ่นดินนี้ มีทั้งพุทธ และมุสลิมไม่ได้ แยกเชื้อชาติศาสนา ใครขอมาก็ฝึกให้ ครูเองก็มาขอฝึก บอกว่าฝึกให้แต่ชาวบ้าน พวกครูยิ่งเสี่ยงอันตรายหนักเลย ฝึกลักษณะการรวมกลุ่มกัน ใช้อาวุธเข้าเวรยามในการรักษาหมู่บ้านซึ่งมีผลให้หมู่บ้านเกิดความปลอดภัย มากขึ้น ขณะนี้เป็นที่แน่ชัดว่ามีกลุ่มคนต้องการที่จะแบ่งแยกดินแดน เช่น มีการนำวิซีดีภำการตัดศีรษะไปแพร่ภาพในจังหวัดปัตตานี ซึ่งถือเป็นสิ่งที่น่าเป็นห่วง คนทำมีวัตถุประสงค์ให้ชาวบ้านหวาดกลัว และไม่อยากจะอยู่ในพื้นที่หากเราปล่อยเหตุการณ์ให้ลุกลามบายปลายบ้านเมืองก็ จะแย่
โครงการฟาร์มตัวอย่าง
จากการฝึกอาวุธ ทุกคนก็ระวังตัวหมด ไปไหนก็ไม่กล้าไป เมื่อก่อนเคยขายของในเมือง ไปรับจ้างในเมือง ตอนนี้จะไปคนเดียวก็ไม่กล้า เลยมีรับสั่งว่าจะช่วยเขาอย่างไรในเรื่องการทำมาหากินจึงได้ เกิดโครงการฟาร์มตัวอย่างขึ้นมา เพื่อจะสร้างงานให้กับชาวบ้าน คนไหนไม่กล้าไปทำงานในเมืองก็มาทำในฟาร์มทำการเกษตร ปลูกพืชผักสวนครัว เลี้ยงสัตว์ สัตว์ปีก เช่น เป็ด ไก่ และก็มีการทำประมงในครัวเรือน วันใดไม่มีกับข้าวก็สามารถช้อนปลาเป็นอาหาร นอกจากนั้นมีการเลี้ยงแพะนม ที่มีโปรตีนสูง ให้จ้างคนเข้ามาทำงาน เพื่อจะสอนให้เรียนรู้การทำเกษตรอย่างถูกหลักวิชาการ เมื่อทำเป็นแล้วก็จะได้ นำกลับไปทำในพื้นที่ของตัวเอง ได้ ผลผลิตเหลือจากรับประทานก็นำมาขายให้ฟาร์มรับซื้อ
การจัดตั้งฟาร์มนั้นอยู่ใกล้ๆกับแหล่งชุมชนเพื่อที่เขาจะได้ มาทำงานง่ายๆอย่างในบางแห่งเป็นกลุ่มของไทยพุทธอาศัยอยู่ท่ามกลางกลุ่มไทย มุสลิม ผู้ไม่หวังดีก็ใช้วิธียุยงให้ราษฎรแตกสามัคคีกัน พระองค์ท่านทรงลงไปช่วย 30 กว่าปี ช่วยให้เขาทำมาหากินได้ ทรงทำอย่างต่อเนื่อง เช่นเรื่องน้ำ บางบ้านน่าสงสานมาก เพราะขุดขึ้นมาน้ำเป็นสนิม ดีที่ช่วงนี้เป็นหน้าฝน จึงพอบรรเทาได้ บ้าง
พระองค์ท่านทรงยอมทำทุกอย่าง เหน็ดเหนื่อยพระวรกายเพื่อคนในชาติ ซึ่งเหมือนกับลูกของพระองค์ท่าน ไม่ว่าเดือดร้อนมีปัญหาอะไร เช่นโครงการปะการังเทียม อำเภอไม้แก่น จังหวัดปัตตานี ชาวบ้านร้องไห้ว่าทำมาหากินไม่ได้ เคยทำประมงอยู่ชายฝั่ง ตอนนี้ปลาไม่มีจากนั้นตี 3 พระองค์ท่านเรียกประชุม 2 ชั่วโมงว่าจะแก้ปัญหากันอย่างไร ซึ่งมีสาเหตุจากอวนลากอวนรุน ดร.ปลอดประสพ สุรัสวดี เสนอการกำหนดระยะของการทำประมง คือ ระยะ 5 กิโลเมตรจากชายฝั่งใช้เครื่องมือตกปลาขนาดเล็ก ระยะ 5 – 10 กิโลเมตร ให้ประมงปั่นไฟ และระยะ 10 – 15 กิโลเมตร อวนลากอวนรุนดำเนินการ แล้วก็ทิ้งปะการังเทียมเพื่อป้องกันการใช้อวนที่ระยะผิดประเภทไปในตัว และให้ปลาได้ อาศัยปะการังเทียมนี้เป็นที่หลบยามลมพายุแรงๆหรือใช้ชั้ง คือทางมะพร้ามถ่วงด้วยปูนซีเมนต์เพื่อให้ปลาเกาะอยู่ชายฝั่ง
พระองค์ท่านรับสั่งว่าอยากเห็นโครงการนี้เกิดขึ้นก่อนเสด็จฯกลับ ซึ่งตอนนั้นเป็นวันที่ 24 กันยายน พระองค์ท่านเสด็จฯกลับต้นตุลาคม ทุฝ่ายก็รีบดำเนินการ นี่คือการแก้ปัญหาให้ไทยมุสลิมโดยตรง ที่ปัตตานี ไม้แก่น สายบุรี หนองจิก อำเภอเมือง ปัตตานี จนถึงตากใบ นราธิวาสพอทิ้งไป 6เดือน ปลาก็มาวางไข่ ตอนนี้ปลาชุกมาก ชาวบ้านมีกินมีใช้ สามารถนำปลาไปขายได้ กฺโลกรัมละ 200 – 300 บาท นี่ก็ด้วยพระมหากรุณาธิคุณ
พระองค์ท่านรับสั่งว่าเขาขาดเสาหลัก ตอนเป็นข้าราชการชั้นผู้น้อยยังไม่ได้ สร้างหลักปักฐาน พอสามีตายก็บ้านแตกสาแหรกขาด ไม่รู้จะทำอย่างบางคนเป็นแม่บ้าน พระองค์ท่านก็ทรงเอื้อมพระหัตถ์ลงมาชุบชีวิตคนใกล้จมน้ำให้อยู่รอด ตัวอย่างอันนี้เป็นประจักษ์พยานอย่างเห็นได้ ชัด ประธานกลางมุสลิม OIC เห็นแล้วยังเทิดพระเกียรติว่าทรงช่วยเหลืออย่างเป็นธรรม ไม่เลือกชาติศาสนา
ทรงผ้าไทยเสด็จฯ ไปทั่วหล้า
สมเด็จพระนางเจ้าสิริกิติ์ พระบรมราชินีนาถทรงสนพระราชหฤทัยในผ้าซิ่นที่ชาวบ้านนุ่งอยู่ครั้งทรงเสด็จ ไปเยี่ยยมราษฎร จังหวัดนครพนม และทรงจะจัดตั้งให้มีการทอผ้าเป็นอาชีพเสริมให้แก่ชาวบ้าน พระองค์ท่านเสด็จฯไปทรงเยี่ยมราษฎรในฉลองพระองค์ด้วยผ้าที่พวกชาวบ้านทอชาว บ้านต่างตกใจ ว่านี่หรือเป็นผ้าที่เขาทอกันเอง จึงเป็นกำลังใจในการทอให้แก่ชาวบ้านมากยิ่งขึ้น
จาก สมัยก่อนที่มีความคิดอยู่ว่า ผ้าไหม โดยเฉพาะผ้าไหมมัดหมี่ ใส่แล้วจะดูแก่ ซึ่งความจริงไม่ได้เป็นอย่างนั้นเลย พระองค์ท่านก็โปรดฯให้ตัดฉลองพระองค์ถวายสมเด็จพระเจ้าลูกเธอฯ ทรงบ้าง ซึ่งปรากฏว่าก็งดงาม ปัจจุบันนี้ แม้กระทั่งพระเจ้าหลานเธอฯ ก็ทรง เป็นที่ยอมรับกันว่า ไม่ได้เหมือนอย่างที่คิดเอาไว้ แล้วก็เลยออกมาแพร่หลายมากมายเหมือนอย่างปัจจุบันนี้
พระองค์ท่านทรงสนับสนุนให้เขาทอมากขึ้น เปลี่ยนผืนให้ใหญ่ขึ้น จากนั้นตั้งเป็นมูลนิธิแล้วเอาผ้าที่รับซื้อมาจากชาวบ้านออกเผยแพร่ให้คน รู้จัก ชักชวนให้ช่วยกันสนับสนุนฝีมือชาวบ้าน เป็นที่นิยมมาก สุภาพบุรุษ สุภาพสตรีทั้งหลาย ซื้อมาตัดใส่กัน แล้วก็แพร่หลายออกไปเรื่อยๆ ทรงใช้ช่างไทยในการตัดฉลองพระองค์ นอกเสียจากสมัยที่เสด็จฯ ต่างประเทศ อากาศหนาวต้องใช้เสื้อแบบตะวันตก ก็จะมีช่างชาวต่างประเทศมาช่วยออกแบบบ้าง แล้วอีกประการหนึ่งที่พระองค์ท่านทรงใช้ดีไซเนอร์ต่างประเทศบ้าง นอกจากที่จะให้เขาออกแบบเพื่อให้เหมาะสมกับประเทศนั้นๆ ที่จะเสด็จฯไปแล้ว อีกประการหนึ่งก็คือการที่ทรงให้ดีไซเนอร์ผู้นั้นได้มีโอกาสมาเลือกผ้าไหม ไทย แล้วก็เอาไปออกแบบตัดเย็บในห้องเสื้อของเขา ก็นับว่าเป็นการเผยแพร่ผ้าไทยให้ได้มีโอกาสไปอวดโฉมอยู่ที่นั่นให้เป็นที่ รู้จักกันมากขึ้น
การประกวดผ้าไหม จะมีดีไซเนอร์จากต่างประเทศขอเข้ามาชมมากขึ้นทุกปี อย่างเช่น มาดามฮานาเอะ มอริ หลายคนขอมาเพื่อที่จะมาสัมผัสกับผ้าด้วยตนเอง แล้วเขาก็ตื่นเต้น เอาไปตัดเย็บไว้ในห้องเสื้อของเขา พอลูกค้ามาเห็น ลูกค้าชอบใจก็จะสั่งตัด แล้วก็สั่งผ้าเข้ามาเพิ่มขึ้นเรื่อยๆ
พระองค์ท่านมิได้ทรงช่วยให้ชาวไร่ชาวนาไทยมีรายได้เพิ่มมากขึ้นเท่านั้น หากทรงเผยแพร่ให้ชาวโลกได้รู้จักประเทศไทยอย่างกว้างไกลในหลายๆ ด้าน ผ้าไหมไทยเป็นสิ่งสูงค่าที่ผู้คนชื่นชอบไปทั่วโลก ก็ด้วยพระบารมี
กำเนิดโครงการศิลปาชิพ
ทรงริเริ่มโครงการหัตถกรรมเพื่อช่วยเหลือราษฎรเป็นครั้งแรกที่หมู่บ้านเขา เต่า จังหวัด ประจวบคีรีขันธ์ เมื่อเดือนเมษายน 2508 ทรงกรุณาโปรดเกล้าฯ ให้พลโท หม่อมเจ้าประเสริฐศรี ชยางกูร ราชคงรักษ์ เป็นผู้ควบคุมโครงการ โดยทรงชักชวนให้หญิงชาวบ้านเขาเต่า หัดทอผ้าฝ้ายขาย เพื่อเป็นอาชีพเสริม
โดย ช่วงระหว่างที่ประทับอยู่ณ พระราชวังไกลกังวล ทรงได้มีพระราชเสาวนีย์ให้ไปขอครูทอผ้าจากโรงงานทอผ้าบ้านไร่ จังหวัดราชบุรี มาสอนการทอผ้าให้แก่ราษฎรบ้านเขาเต่า พร้อมทั้งสร้างกี่ทอผ้าขึ้นท้ายวังไกลกังวล ทรงส่งรถไปรับชาวบ้านมาหัดทอผ้า เริ่มจากการทอผ้าขาวม้าและผ้าซิ่นเป็นส่วนใหญ่ พร้อมทั้งพระราชทานอาหารกลางวัน และค่าแรงแก่ผู้ทอ และโปรดเกล้าฯ ให้นางสนองพระโอษฐ์ช่วยกันดูแลเด็กเล็กลูกของราษฎร จนกระทั้งพระราชชดำเนินกลับกรุงเทพมหานคร จึงบ้ายกิจการไปอยู่ใต้ถุนศาลาวัดเขาเต่า โดยเจ้าอาวาสวัดเขาเต่าและครูใหญ่โรงเรียนเขาเต่าช่วยดูแลต่อ
ปัจจุบันโครงการทอผ้าฝ้ายที่เขาเต่าได้เปลี่ยนแปลงเป็นกิจการของกรมการพัฒนา ชุมชน โดยพัฒนากรอำเภอหัวหิน เป็นผู้ดูแลโครงการตั้งแต่ พ.ศ. 2511 มีการสอนการทอผ้า ย้อมสี ตัดเย็บ และสอนการประดิษฐ์ผลิตภัณฑ์ป่านศรนารายณ์
สมเด็จพระนางเจ้าฯ พระบรมราชินีนาถ จึงมีพระราชดำริให้ดำเนินโครงการอนุรักษ์เต่าทะเล โดยได้ พระราชทาน เกาะมันใน จังหวัดระยอง ซึ่งรัฐบาลในสมัยนั้นถวายให้เป็น ทรัพย์สินส่วนพระองค์ จัดเป็น ศูนย์กลางอนุรักษ์และ เพาะขยายพันธุ์เต่าทะเล พระราชทานชื่อว่า โครงการสมเด็จฯอนุรักษ์พันธุ์เต่าทะเล เริ่มเมื่อวันที่ 11 สิงหาคม พ.ศ.2522 ทรงพระกรุณาโปรดเกล้าฯให้ผู้แทนจากกรมประมง เข้าเฝ้าทูลละอองธุลีพระบาท รับพระราชทานพ่อพันธุ์แม่พันธุ์เต่าทะเล เพื่อนำไปใช้ในการแพร่ขยายพันธุ์ศูนย์อนุรักษ์และ เพาะขยายพันธุ์เต่าทะเลนี้
ต่อมาเมื่อโครงการสิ้นสุดลงได้ เปลี่ยนชื่อเป็น สถานีอนุรักษ์พันธุ์เต่าทะเล สังกัดกรมประมง กระทรวงเกษตรและ สหกรณ์ ตั้งอยู่ที่ตำบลกร่ำ อำเภอแกลง จังหวัดระยอง ห่างจากชายฝั่งอ่าวมะขามประมาณ 6 กิโลเมตร มีพื้นที่ประมาณ 137 ไร่ อันมีสภาพภูมิประเทศเป็น ชายฝั่งยาว 1,200 เมตร กว้าง 550 เมตร ประกอบด้วย หาดทรายและ โขดหินน้อยใหญ่จำนวนมาก เป็น แหล่งที่เต่าทะเลชอบขึ้นมาวางไข่ ทั้งเต่ากระและ เต่าตนุ ขณะเดียวกันก็ได้ มีการแก้ไขกฎหมายเพื่อการอนุรักษ์เต่าทะเล โดยห้ามการจับและ มีไว้ในครอบครองอีกด้วย
ศูนย์ฯ มีวัตถุประสงค์เพื่อศึกษาวิจัยชีววิทยาของเต่าทะเลอนุรักษ์ และ เพิ่มจำนวนโดยการเพาะขยายพันธุ์ปล่อยสู่ทะเลตามธรรมชาติ โดยวิธีนำไข่เต่าทะเล ซึ่งส่วนใหญ่ได้ จาก เกาะคราม อำเภอสัตหีบ จังหวัดชลบุรี ซึ่งเป็น พื้นที่ในความดูแลของกองทัพเรือ นำมาเพาะฟัก และ อนุบาล เมื่อลูกเต่ามีอายุประมาณ 6 เดือน จะ ติดเครื่องหมายเพื่อติดตามผล นำปล่อยลงสู่ทะเล ลูกเต่าส่วนหนึ่งนำไปเลี้ยงไว้เป็น แม่พันธุ์พ่อพันธุ์ต่อไป กรมประมงประกาศขอให้ผู้พบเต่าทะเลที่ติดเครื่องหมายนำส่งคืนศูนย์ เพื่อเป็น ข้อมูลศึกษาค้นคว้าวิจัย และ ยังทดลองเลี้ยงเต่าพ่อพันธุ์แม่พันธุ์ เพื่อให้ผสมพันธุ์และ วางไข่ ซึ่งประสบความสำเร็จ สามารถขยายพันธุ์ลูกเต่าให้มีจำนวนมากขึ้น นำมาอนุบาลแล้วปล่อยคืนสู่ท้องทะเล
สถานที่ดำเนินการอนุรักษ์เต่าทะเล มี 2 แห่ง คือ
1. เกาะมันใน ดำเนินการเลี้ยงเต่าทะเลตั้งแต่แรกเกิดจนโตขึ้น วัดขนาดตามที่กำหนดแล้วนำไปเลี้ยงไว้ในคอกในทะเลซึ่งมีเนื้อที่ขนาด 30 ไร่ แล้วศึกษาเก็บข้อมูล
2. เกาะคราม อยู่ในพื้นที่รับผิดชอบของกองทัพเรือ ศึกษาวิจัยเก็บข้อมูลความเปลี่ยนแปลงของเต่าทะเลตามธรรมชาติ โดยติดเครื่องหมายที่แม่เต่าทะเลที่ขึ้นมาวางไข่ประมาณเดือนพฤษภาคม-สิงหาคม พบว่าแม่เต่าตัวเดิมจะ กลับมาวางไข่ห่างกัน 2-3 ปี หรืออาจจะ ถึง 5 ปี และ เก็บข้อมูลแม่เต่าใหม่ที่ขึ้นมาวางไข่ และ ศึกษาพบว่ามีประชากรเต่าทดแทนกันพอสมควร
edit @ 4 Jul 2011 22:05:45 by Premkakna
!! ");