รูบิค

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

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

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


ฟังก์ชั่น printf()
ฟังก์ชั้นนี้เราได้ทดลองใช้อย่างง่ายๆ มาแล้ว โดยใช้สำหรับแสดงข้อความหรือตัวแปร
ฟังก์ชั่น printf() มีชื่อเต็มว่า print format เป็นฟังชั่นใช้พิมพ์ข้อความต่างๆออกทางจอภาพโดยมีรูปแบบดังนี้
รูปแบบคำสั่ง printf



ตัวกำหนดชนิดข้อมูล

%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 "stdio.h"
#include "conio.h"
main()
{
int x,y;
x=5;
y=6;
printf("%d\n",x);
printf("%c\n",x);
printf("%d %d\n",x,y);
printf("%d\n"125);
printf("%c\n"125);
printf("The total is $ %6.2f\n",12.5);
printf("The total is $ %6.3f\n",12.5);
}


ฟังก์ชัน scanf()

ฟังก์ชั่นนี้จะตรงข้ามกับฟังก์ชั่น printf() โดยจะใช้อ่านค่าจากการกดป้นพิมพ์ที่อยู่ในรูปรหัส ASCII ไปเก็บในตัวแปรที่กำหนด และสามารถใช้เป็นรหัสควบคุมหรือ Control stringระบุชนิดของข้อมูลที่จะเก็บในตัวแปรได้

รูปแบบของคำสั่งนี้เป็นดังนี้



ตัวอย่าง

#include "stdio.h"
#include "conio.h"
main()
{
int feet,inches;
printf("Enter number of feet");
scanf("%d",&feet);
inches = feet*12;
printf("%d inches ",inches);
}



ฟังก์ชัน getchar()

getchar() รับข้อมูลตัวอักขระหนึ่งตัวเมื่อป้อนข้อมูลแล้วต้องกดรูปแบบของคำสั่งเป็นดังนี้



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

ตัวอย่าง



#include"stdio.h"
#include"conio.h"
main()
{
int number1,number2;
printf("please input number1:");
scanf("%d",&number1:);
printf("please input number2:");
scanf("%d",&number2:);
printf("%d+%d=%d",number1,number2,number1+number2);
getchar();
getchar();
}


ฟังก์ชัน getche() และ getch()
รูปแบบของฟังก์ชั่น

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



ฟังก์ชัน 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/3

About this blog