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

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

ภาษา C คิดค้นขึ้นเป็นครั้งแรกโดย เดนนิส ริทชี่ [Dennis Ritchie] ที่ห้องแล็บเบล
[Bell Labs] ในปี ค.ศ.1972 โดยได้แนวคิดมาจากภาษา BCPL พัฒนาขึ้นโดย มาร์ติน ริชาร์ด [Martin Richards] และภาษา B ที่เขียนขึ้นโดย เคน ทอมพ์สัน [Ken Thompson] เพื่อนำมาพัฒนาต่อจนได้ภาษาใหม่ที่มีประสิทธิภาพการทำงานสูง หลังจากนั้นในปี ค.ศ.1978 ภาษา C จึงได้รับการเผยแพร่อย่างเป็นทางการโดยเคอร์นิกแฮน[Kernighan]และเดนนิสริทชี่เป็นภาษาที่เก่าแก่ถือกำเนิดมายาวนาน โดยแต่เดิมนั้นภาษา C ถูกพัฒนาขึ้นเพื่อให้เป็นภาษาสำหรับการสร้างระบบปฏิบัติการยูนิกซ์ เนื่องจากในขณะนั้นระบบปฏิบัติการยูนิกซ์เขียนด้วยภาษาแอสเซมบลี [Assembly] ซึ่งเป็นภาษาที่ยึดติดกับฮาร์ดแวร์ของเครื่อง ดังนั้นการที่จะย้ายระบบปฏิบัติการไปใช้ กับเครื่องอื่นจึงเป็นเรื่องที่เป็นไปไม่ได้เลยซึ่งนับเป็นข้อเสียใหญ่ของภาษาแอสเซมบลีดังนั้นภาษา C ซึ่งเป็นภาษาที่ไม่ยึดติดกับฮาร์ดแวร์จึงถูกพัฒนาขึ้นมาในปัจจุบันภาษาC ไม่ได้จำกัดอยู่เพียงแค่งานสร้างระบบปฏิบัติการเท่านั้น แต่สามารถนำไปใช้สร้างโปรแกรมเพื่องานในทุกประเภท เช่น งานเกี่ยวกับการคำนวณ ควบคุมการทำงานของอุปกรณ์/ฮาร์ดแวร์ชนิดต่างๆ การจัดการฐานข้อมูล หรือสร้างโปรแกรมสำหรับจัดพิมพ์เอกสาร เป็นต้น จุดกำเนิดของภาษา C นั้น เกิดมาจาก UNIX ผู้ออกแบบภาษา UNIX ต้องการให้ OS ของตัวเอง สามารถใช้งานได้บนเครื่องต่างๆ กัน แต่การที่จะต้อง Implement UNIX โดยใช้ภาษา Assembly ของแต่ละเครื่อง เป็นสิ่งที่ยุ่งยากเกินไป ผู้ออกแบบ UNIX จึงสร้างภาษากลางภาษาหนึ่ง ซึ่ง UNIX ทั้งตัวเขียน
จากภาษาดังกล่าว ดังนั้นเมื่อต้องการ ให้ UNIX ใช้งานได้บนเครื่องใด ก็ให้สร้างคอมไพเลอร์ของภาษากลางบนเครื่องนั้นก่อน คอมไพเลอร์จะแปล โปรแกรมให้เป็นภาษาเครื่อง ทำให้ลดความซับซ้อนลงมาก ภาษากลางดังกล่าวก็คือ ภาษา C นั่นเอง

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

1. คำสั่ง scanf() เป็นฟังก์ชันที่รับค่าจากอุปกรณ์นำเข้ามาตรฐาน และนำค่าที่ได้เก็บไว้ในตัวแปรในโปรแกรม
รูปแบบคำสั่ง

เมื่อโปรแกรมทำงานถึงฟังก์ชันนี้จะหยุดเพื่อให้ป้อนข้อมูล โดยข้อมูลที่ป้อนจะแสดงบนจอภาพ เมื่อป้อนข้อมูลเสร็จกด Enter ข้อมูลทั้งหมดจะเก็บในตัวแปร var ชนิดของข้อมูลที่กำหนดให้กับตัวแปร var จะถูกกำหนดโดยตัวกำหนดชนิดข้อมูลซึ่งระบุในส่วนของ format code ตัวกำหนดชนิดข้อมูลของฟังก์ชัน scanf() จะเหมือนกับของฟังก์ชันprintf() ฟังก์ชัน scanf() จะทำให้เคอร์เซอร์ ขึ้นบรรทัดใหม่หลังจากกด Enter
ตัวอย่าง
#include "stdio.h"
#include "conio.h"

void main()
{
int a,b,c;
clrscr();
printf("Enter three integer numbers : ");
scanf("%d%d%d",&a,&b,&c);
printf("a = %d b = %d c = %d \n",a,b,c);
}
เป็นการป้อนเลขจำนวนเต็ม 3 ตัวให้กับตัวแปร a,b และ c ในการป้อนตัวเลขให้เว้น ช่องว่างระหว่างตัวเลขแต่ละชุดซึ่ง scanf() จะข้อมช่องว่างไปจนกระทั่งพบตัวเลขจึงจะอ่านข้อมูลอีกครั้ง


2. ฟังก์ชั่น printf() เป็นฟังก์ชั่นใช้ พิมพ์ค่าข้อมูลไปยังหน้าจอคอมพิวเตอร์
รูปแบบคำสั่ง
control string อาจจะเป็นตัวอักษร ข้อความหรือตัวกำหนดชนิดข้อมูล (specifier) ซึ่งใช้กำหนดชนิดข้อมูลที่จะพิมพ์ ตัวกำหนดชนิดข้อมูล
ตัวกำหนดชนิดข้อมูล
%c แทนตัวอักษร
%d แทนเลขจำนวนเต็ม
%e แทนเลขในรูปเอกซ์โพเนนเชียล (exponential form)
%f แทนเลขทศนิยม
%0 แทนเลขฐานแปด
%s แทนสตริงก์
%u แทนเลขจำนวนเต็มไม่คิดเครื่องหมาย
%x แทนเลขฐานสิบหก
%p แทนข้อมูลแบบพอยน์เตอร์ (pointer)
%% แทนเครื่องหมาย %

สามารถดัดแปลงเพื่อใช้เป็นตัวกำหนดชนิดข้อมูลอื่นๆได้โดย โมดิฟายเออร์ (modifier) l,h และL โมดิฟายเออร์ l จะสามารถใช้กับตัวกำหนดชนิดข้อมูล %d, %o , %u และ %x เพื่อใช้กับข้อมูลชนิดยาวเช่น %ld หมายถึงข้อมูลชนิดเลขจำนวนเต็มยาวโมดิฟายเออร์ h จะใช้ในลักษณะเดียวกันกับข้อมูลชนิดสั้น เช่น %hd หมายถึง ข้อมูลชนิดเลขจำนวนเต็มสั้น
สำหรับข้อมูลชนิดทศนิยมจะมีโมดิฟายเออร์ l และ L โดย l จะหมายถึงข้อมูลชนิดเลขจำนวนจริงละเอียด 2 เท่า ส่วน L จะหมายถึงข้อมูลชนิดเลขจำนวนจริงรายละเอียด 2 เท่า เช่น %lf หมายถึงข้อมูลชนิดเลขจำนวนจริงละเอียด 2 เท่า
ตัวอย่าง
#include
#include
void main(void)
{
int n;
clrscr();
n=100;
printf("Number = %d",n);
getch();
}

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

void main()
{
char ch;
printf("Type one character ");
ch = getchar();
printf("The character you type is %c \n",ch);
printf("The character you typed is ");
putchar(ch);
}
การใช้ฟังก์ชัน putchar() แทน printf() จะพิมพ์ตัวอักษร 1 ตัว และเคอร์เซอร์จะไม่ขึ้นบรรทัดใหม่


4. คำสั่ง getche(); และ getch();
คำสั่ง getche(); จะรับตัวอักษร 1 ตัวที่ป้อนทางแป้นพิมพ์
รูปแบบคำสั่ง getche();
ความหมาย
ch หมายถึง ตัวแปรชนิดตัวอักษร

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

printf("\n");
printf("A Character is : %c\n",answer);
getch();
}


คำสั่งgetch(); คือฟังก์ชันที่ใช้สำหรับรับข้อมูลชนิดตัวอักษร ผ่านแป้นพิมพ์ 1 ตัวอักษร
รูปแบบคำสั่ง getch();
จะไม่แสดงตัวอักษรบนจอภาพ เมื่อป้อนตัวอักษรเสร็จแล้ว ไม่ต้องกด Enter และเคอร์เซอร์จะไม่ขึ้นบรรทัดใหม่ และเป็นฟังก์ชันที่กำหนดอยู่ในไฟล์ conio.h รูปแบบคำสั่ง ความหมาย
ตัวอย่าง คำสั่ง getch();
#include
#include
void main(void)
{
char answer;
clrscr();
printf("Enter A Character : ");
answer=getch();
printf("\n");
printf("A Character is : ");
putchar(answer);
getch();
}


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

#include”stdio.h”
main()
{
char message[50];
printf(“ Enter a message(less than 49 characters)\n”);
gets(message);
printf(“ The message you entered is %s\n”,message);
}

วันพฤหัสบดีที่ 2 กรกฎาคม พ.ศ. 2552

เขียน บอกฟ้า บอกน้ำ บอกอากาศ
เขียน บอกชาติ บอกเชื้อ บอกภาษา
เขียน บอกพี่ บอก ป้า บอกน้าอา
เขียน บอกว่า คน บ้า อ่านอยู่เอย......