วันพุธที่ 8 กรกฎาคม พ.ศ. 2552

คำสั่งเบื่องต้นของภาษา C

รูปแบบคำสั่งในภาษาซี มีกฏเกณฑ์ในการเขียนคำสั่ง ดังนี้
คำสั่งทุกคำสั่งต้องเขียนด้วยอักษรตัวเล็กเสมอ เช่นคำสั่ง printf , scanf , for
ทุกคำสั่งจะใช้เครื่องหมาย ; แสดงการจบของคำสั่ง เช่น printf(“Hello”) ;
การเขียนคำสั่ง จะเขียนได้แบบอิสระ (Free Format) คือ สามารถเขียนหลายๆคำสั่ง
Function
หรือฟังก์ชัน เป็นแนวความคิดที่สำคัญในภาษาซี ซึ่งจะมีทั้งฟังก์ชันมาตรฐานและฟังก์ชันที่สร้างขึ้นเอง แต่ฟังก์ชันที่สำคัญที่สุดในภาษาซี คือ ฟังก์ชัน main ซึ่งภาษาซีจะเริ่มต้นทำงานในชุดคำสั่งที่อยู่ในฟังก์ชัน main ก่อน ฟังก์ชันในภาษาซีแบ่งได้เป็น 2 ส่วน ได้แก่ ฟังก์ชันที่เป็นโปรแกรมหลักหรือฟังก์ชันหลักที่ถูกกำหนดให้มีเพียงฟังก์ชันเดียวเท่านั้น นั่นก็คือ ฟังก์ชัน main สำหรับฟังก์ชันในส่วนที่ 2 เป็นฟังก์ชันที่ไม่ใช่ฟังก์ชันหลัก ซึ่งมีกี่ฟังก์ชันก็ได้

1.ฟังก์ชั่น printf()
รูปแบบ
เป็นฟังก์ชันหนึ่งที่เก็บไว้ในไฟล์ stdio.h ใช้สำหรับแสดงผลข้อมูล เนื่องจาก Turbo C ไม่มีฟังก์ชันเฉพาะในการแสดงผลข้อมูล จึงจำเป็นต้องเรียกใช้ฟังก์ชันที่อยู่ใน Library ออกมาใช้งาน ดังนั้นจึงอาจกล่าวได้ว่า ฟังก์ชัน printf() เป็นโปรแกรมย่อยสำหรับการพิมพ์ข้อมูล ตัวแปร นิพจน์ หรือ ข้อความต่าง ๆ ที่กำหนดไว้ในพารามิเตอร์ภายในวงเล็บ ( ) ออกทางจอภาพ
ตัวอย่าง printf()
เป็นสตริงที่มีข้อความและรูปแบบของการพิมพ์โดยอยู่ในเครื่องหมาย " " แบ่งออกเป็น 2 ส่วน คือ
1. ข้อความที่จะพิมพ์เพื่อแสดงให้ทราบ เช่น printf("Hello");
2. รูปแบบการพิมพ์หรือแสดงผล โดยมีเครื่องหมาย % หรือ \ กำกับไว้หน้าตัวอัขระ เช่น printf("You are %d years old. \n",age);

2.ฟังก์ชัน scanf()
รูปแบบ
เมื่อโปรแกรมทำงานถึงฟังก์ชันนี้จะหยุดเพื่อให้ป้อนข้อมูล  โดยข้อมูลที่ป้อนจะแสดงบนจอภาพ เมื่อป้อนข้อมูลเสร็จกด Enter ข้อมูลทั้งหมดจะเก็บในตัวแปร var ชนิดของข้อมูลที่กำหนดให้กับตัวแปร var จะถูกกำหนดโดยตัวกำหนดชนิดข้อมูลซึ่งระบุในส่วนของ format code ตัวกำหนดชนิดข้อมูลของฟังก์ชัน scanf()  จะเหมือนกับของฟังก์ชันprintf()   ฟังก์ชัน  scanf()  จะทำให้เคอร์เซอร์ ขึ้นบรรทัดใหม่หลังจากกด Enter
ฟังก์ชัน getchar()
รหัสรูปแบบ ชนิดตัวแปร ลักษณะการแสดงผลออกจอภาพ
%d int ใช้แสดงข้อมูลที่เป็นเลขจำนวนเต็มฐานสิบ
%ld long int ใช้แสดงข้อมูลที่เป็นเลขจำนวนเต็มฐานสิบแบบ long
%u unsigned int ใช้แสดงข้อมูลที่เป็นเลขจำนวนเต็มฐานสิบแบบ unsigned
%c char ใช้แสดงข้อมูลที่เป็นตัวอักษร
%s string ใช้แสดงข้อมูลที่เป็นตัวแปรสตริงหรือชุดตัวอักษร
%o int (octal) ใช้แสดงข้อมูลที่เป็นเลขฐานแปด
%x int (hexa) ใช้แสดงข้อมูลที่เป็นเลขฐานสิบหก
%f float ใช้แสดงข้อมูลที่เป็นเลขทศนิยม ที่ไม่มีเลขยกกำลัง
%e float, double ใช้แสดงข้อมูลที่เป็นเลขทศนิยม ที่มีเลขชี้กำลัง
%lf double ใช้แสดงข้อมูลที่เป็นเลขทศนิยมแบบ double
ตัวอย่าง scanf ()
โปรแกรมแสดงการใช้ฟังก์ชัน scanf () และใช้รูปแบบ %dในการรับข้อมูลจากแป้นพิมพ์2 จำนวน
#include
main()
{
int x1, x2 ;
scanf("%d %d",&x1,&x2);
}

เมื่อเครื่องทำฟังก์ชัน scanf() เครื่องจะรอรับค่า 2 ค่าที่เป็นจำนวนเต็มจากแป้นพิมพ์แล้วเก็บลงตัวแปร x1 และ x2 การป้อนข้อมูลจะต้องเป็นชนิดข้อมูลที่สอดคล้องกลับรูปแบบ และต้องมีการเว้นระยะระหว่าง รูปแบบให้สอดคล้องกับส่วนควบคุมด้วย ข้อมูลที่ป้อนจะต้องมีช่องว่าง 1 ช่องระหว่างเลข 2 จำนวนเพื่อให้ สอดคล้องกับที่ได้กำหนดไว้ในส่วนควบคุม ดังเช่น 123 145
และถ้าส่วนควบคุมมีคอมม่าคั่นระหว่างรูปแบบ เช่น
scanf ("%d,%d",&x1,&x2); การป้อนข้อมูลก็จะต้องมีคอมม่าคั่นระหว่างเลข 2 จำนวน ดังเช่น 123,145


  3.ฟังก์ชัน getchar()
ใช้สำหรับป้อนตัวอักษรผ่านทางแป้นพิมพ์โดยจะรับตัวอักษรเพียง 1 ตัวเท่านั้น และแสดงตัวอักษรบนจอภาพรูปแบบ ch = getchar(); เมื่อโปรแกรมทำงานถึงคำสั่งนี้จะหยุดเพื่อให้ป้อนตัวอักษร 1 ตัว หลังจากนั้นกด Enter ตัวอักษรที่ป้อนจะถูกเก็บไว้ในตัวแปร ch  ซึ่งเป็นชนิดตัวอักษรและเคอร์เซอร์จะขึ้นบรรทัดใหม่  ฟังก์ชัน getchar()กำหนดในไฟล์ stdio.h เช่นเดียวกับฟังก์ชัน scanf()
ฟังก์ชัน getchar() ใช้สำหรับป้อนตัวอักษรผ่านทางแป้นพิมพ์โดยจะรับตัวอักษรเพียง 1 ตัวเท่านั้น และแสดงตัวอักษรบนจอภาพ
รูปแบบ

กำหนดในไฟล์ stdio.h เช่นเดียวกับฟังก์ชัน scanf()

ตัวอย่างฟังก์ชัน getchar()
#include
#include
main()
{
clrscr()
int itsaret
printf("itsaret);
getchar();
getchar();
}

4.ฟังก์ชัน getche()  และ getch()
รูปแบบ


ฟังก์ชัน getche() จะรับตัวอักษร 1 ตัวที่ป้อนทางแป้นพิมพ์  และจะแสดงตัวอักษรบนจอภาพ เมื่อป้อนข้อมูลเสร็จไม่ต้องกด Enter  และเคอร์เซอร์จะไม่ขึ้นบรรทัดใหม่ ฟังก์ชัน getch()  จะคล้ายกับฟังก์ชัน getche()  ต่างกันตรงที่จะไม่แสดงตัวอักษรขณะป้อนข้อมูล  ฟังก์ชัน getche() และ getch()  กำหนดในไฟล์ conio.h ดังนั้นจะต้องระบุไฟล์ดังกล่าวในโปรแกรม
ตัวอย่างฟังก์ชัน eetche() และgetch()
#include
#include
main()
{
clrscr()
int itsaret
printf("itsaret);
getch();
}

5.ฟังก์ชัน gets
ฟังก์ชัน gets() ใช้สำหรับข้อมูลชนิดสตริงก์หรือข้อความซึ่งป้อนทางแป้นพิมพ์  
รูปแบบ


 เมื่อโปรแกรมทำงานถึงคำสั่งนี้จะหยุดเพื่อให้ป้อนข้อความ  เมื่อป้อนเสร็จแล้วกด Enter ข้อความ ทั้งหมดจะถูกเก็บไว้ในอาร์เรย์สตริงก์ str โดย carriage return (จากการกด Enter) จะแทนด้วยสตริงก์ศูนย์ ฟังก์ชัน gets() จะทำให้เคอร์เซอร์ขึ้นบรรทัดใหม่ หลังจากกด Enter กำหนดในไฟล์   stdio.h
ตัวอย่างฟังก์ชัน gets
char ตัวแปร[จำนวนตัวอักษร];
get(ตัวแปร);

ประวัติความเป็นมาของภาษา ซี

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

ภาษาซีเป็นภาษาที่ถือว่าเป็นทั้งภาษาระดับสูงและระดับต่ำ ถูกพัฒนาโดยเดนนิส ริดชี (Dennis ritche) แห่งห้องทดลองเบลล์ (Bell laboratories) ที่เมอร์รีฮิล มลรัฐนิวเจอร์ซี่ โดยเดนนิสได้ใช้หลักการของภาษา บีซีพีแอล (BCPL : Basic Combine Programming Language) ซึ่งพัฒนาขึ้นโดยเคน ทอมสัน (Ken tomson) การออกแบบและพัฒนาภาษาซีของเดนนิส ริดชี มีจุดมุ่งหมายให้เป็นภาษาสำหรับใช้เขียนโปรแกรมปฏิบัติการระบบยูนิกซ์ และได้ตั้งชื่อว่า ซี (C) เพราะเห็นว่า ซี (C) เป็นตัวอักษรต่อจากบี (B) ของภาษา BCPL ภาษาซีถือว่าเป็นภาษาระดับสูงและภาษาระดับต่ำ ทั้งนี้เพราะ ภาษาซีมีวิธีใช้ข้อมูลและมีโครงสร้างการควบคุมการทำงานของโปรแกรมเป็นอย่างเดียวกับภาษาของโปรแกรมระดับสูงอื่นๆ จึงถือว่าเป็นภาษาระดับสูง ในด้านที่ถือว่าภาษาซีเป็นภาษาระดับต่ำ เพราะภาษาซีมีวิธีการเข้าถึงในระดับต่ำที่สุดของฮาร์ดแวร์ ความสามารถทั้งสองด้านของภาษานี้เป็นสิ่งที่เกื้อหนุนซึ่งกันและกัน ความสามารถระดับต่ำทำให้ภาษาซีสามารถใช้เฉพาะเครื่องได้ และความสามารถระดับสูง ทำให้ภาษาซีเป็นอิสระจากฮาร์ดแวร์ ภาษาซีสามารถสร้างรหัสภาษาเครื่องซึ่งตรงกับชนิดของข้อมูลนั้นได้เอง ทำให้โปรแกรมที่เขียนด้วยภาษาซีที่เขียนบนเครื่องหนึ่ง สามารถนำไปใช้กับอีกเครื่องหนึ่งได้ ประกอบกับการใช้พอยน์เตอร์ในภาษาซี นับได้ว่าเป็นตัวอย่างที่ดีของการเป็นอิสระจากฮาร์ดแวร



ภาษาซีเป็นภาษาที่มีลักษณะเด่นพอสรุปได้ดังนี้

- เป็นภาษาคอมพิวเตอร์ที่มีการพัฒนาขึ้นใช้งานเพื่อเป็นภาษามาตรฐานที่ไม่ขึ้นกับโปรแกรมจัดระบบงานและไม่ขึ้นกับฮาร์ดแวร์

- เป็นภาษาคอมพิวเตอร์ที่อาศัยหลักการที่เรียกว่า "โปรแกรมโครงสร้าง" จึงเป็นภาษาที่เหมาะกับการพัฒนาโปรแกรมระบบ

- เป็นคอมไพเลอร์ที่มีประสิทธิภาพสูง ให้รหัสออบเจ็กต์สั้น ทำงานได้รวดเร็ว เหมาะกับงานที่ต้องการ ความรวดเร็วเป็นสำคัญ

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

- มีความคล่องตัวที่จะประยุกต์เข้ากับงานต่างๆ ได้เป็นอย่างดี การพัฒนาโปรแกรม เช่น เวิร์ดโพรเซสซิ่ง สเปรดชีต ดาตาเบส ฯลฯ มักใช้ภาษาซีเป็นภาษาสำหรับการพัฒนา

- เป็นภาษาที่มีอยู่บนเกือบทุกโปรแกรมจัดระบบงาน มีในเครื่องไมโครคอมพิวเตอร์ตั้งแต่ 8 บิต ไปจนถึง 32 บิต เครื่องมินิคอมพิวเตอร์ และเมนเฟรม

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

จุดเริ่มต้นของภาษาซี

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

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

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