ភាសា C (C programming language)
ជាភាសាសម្រាប់សរសេរកម្មវិធីព័ត៌មានវិទ្យាដែលមានលទ្ធភាពអាចគ្រប់
គ្រង់និងដាក់ដំណើរការលើប្រព័ន្ធកុំព្យូទ័ររួមទាំងប្រព័ន្ធ
អេឡិចត្រូនិកបានទៀតផង។ ភាសា C ត្រូវបានបង្កើតឡើងដោយលោកដេនីស រីឈី
(Dennis Ritchie) នៅចន្លោះឆ្នាំ១៩៦៩ និង ១៩៧៣
នៅបន្ទប់ពិសោធរបស់Bell Telephone ។ ភាសា C
ដំបូងឡើយត្រូវបានបង្កើតឡើងដើម្បីបង្កើតប្រព័ន្ធប្រតិបត្តិការយូនិក (Unix)ហើយក៏ត្រូវបានប្រើប្រាស់ដើម្បីបង្កើតកម្មវិធីជាច្រើនដែលដំណើរការនៅលើប្រព័ន្ធប្រតិបត្តិការយូនិក
រួមទាំងកម្មវិធីបម្លែងកូដ(Compiler) ផងដែរ។ ដូច្នេះហើយ ភាសា C
ក៏ត្រូវបានគេទទួលស្គាល់ថាជាភាសាសម្រាប់បង្កើតប្រព័ន្ធ
ប្រតិបត្តិការ (system programming language )។
ប្រវត្តិ
ភាសា C បានបង្កើតឡើងដោយលោកដេនីស រីឈី (Dennis Ritchie) នៅចន្លោះឆ្នាំ ១៩៦៩ និង ១៩៧៣ នៅបន្ទប់ពិសោធរបស់Bell Telephone នឹងមានសន្ទុះខ្លាំងនៅឆ្នាំ ១៩៧២ នេះបើតាមសំដីរបស់លោកដេនីស រីឈី។ គេបានដាក់ឈ្មោះភាសានេះថាជា “ភាសា C” ព្រោះវាត្រូវបានបង្កើតឡើងដោយប្រើប្រាស់លក្ខណៈរបស់ភាសា B បង្កើតឡើងដោយលោក Ken Thompson។ ភាសា B គឺត្រូវបានបង្កើតឡើងដោយពឹងផ្អែកលើលក្ខណៈរបស់ភាសា BCPL ដែលបានបង្កើតឡើងដោយលោក ម៉ាធីន រីឆាត (Martin Richards)។ ដូច្នេះ ភាសា C ទទួលលក្ខណៈដោយប្រយោលអំពីភាសា BCPL តាមរយៈភាសា B។ភាសា C ត្រូវបានបង្កើតដោយមានលក្ខណៈជិតស្និតនឹងការបង្កើតប្រព័ន្ធប្រតិបត្តិការយូនិក (Unix) ដែលតំបូងឡើយប្រព័ន្ធប្រតិបត្តិការយូនិក (Unix)នេះបានបង្កើតដោយកូដបណ្ដុំ(assembly) ប៉ុណ្ណោះ សម្រាប់ដាក់ប្រតិបត្តិការម៉ាស៊ីន PDP-7 ហើយដែលក្រោយមកក៏ត្រូវបានប្រើប្រាស់ដើម្បីដាក់ប្រតិបត្តិការម៉ាស៊ីន PDP-11។ នៅឆ្នាំ ១៩៧៣ ភាសា C បានបន្ថែមនូវរចនាសម្ព័ន្ធ(struct type)និងត្រូវបានយកទៅប្រើប្រាស់សម្រាប់សរសេរស្នូលរបស់ប្រព័ន្ធប្រតិបត្តិការយូនិក (Unix Kenal) ហើយដែលបានក្លាយជាភាសាសរសេរកម្មវិធីព័ត៌មានវិទ្យាទីមួយដែល ត្រូវបានគេយកទៅប្រើប្រាស់សម្រាប់បង្កើតប្រព័ន្ធប្រតិបត្តិការ ជំនួសការសរសេរបែបកូដបណ្ដុំ (assembly)។
នៅឆ្នាំ ១៩៧៨ លោក ប្រ៊ីយ៉ាន ឃ័រនីញ៉ាន (Brian Kernighan) និង ដេនីស រីឆាត (Dennis Ritchie) បានបោះពុម្ពសៀវភៅ The C Programming Language លើកទីមួយ ដែលក្រោយមកបានគេហៅថា “K&R”។
នៅឆ្នាំ ១៩៨៣ វិទ្យាស្ថានបទដ្ឋានជាតិនៃសហរដ្ឋអាមេរិច American National Standards Institute (ANSI) បានបង្កើតបទដ្ឋានថ្មីសម្រាប់ភាសា C ហើយនៅឆ្នាំ ១៩៨៩ ក៏ត្រូវបានទទួលស្គាល់ជាបទដ្ឋាន ANSI X3.159-1989 “Programming Language C” ដែលត្រូវបានហៅជាទូទៅថា ANSI C ឫបទដ្ឋាន C, ឫ C89។
នៅឆ្នាំ១៩៩០ បទដ្ឋាន ANSI C ត្រូវបានទទួលស្គាល់ដោយសហព័ន្ធបទដ្ឋានអន្តរជាតិ ISO ហើយដែលត្រូវបានគេហៅថា “C89″ ឫ “C90″។
ក្រោយមកបទដ្ឋាន”C89″ ក៏ត្រូវបានកែប្រែនិងបញ្ចូលបន្ថែមលក្ខណៈថ្មី និងត្រូវបានទទួលស្គាល់ដោយប្រព័ន្ធបទដ្ឋានអន្តរជាតិ ISO (ISO/IEC 9899:1999)នៅឆ្នាំ ១៩៩៩ដែលត្រូវបានស្គាល់ថា C99 ។
លក្ខណៈ
ភាសា C មានលក្ខណៈជាលំដាប់នៃប្រតិបត្តិការ (Procedural) និងត្រូវបានបង្កើតឡើងអោយមានជាបទដ្ឋាន ដែលអាចដាក់អោយប្រតិបត្តិការនៅលើគ្រប់ប្រព័ន្ធប្រតិបត្តិការទាំង អស់ (Linux, Mac, Window)។ ភាសា C ត្រូវការប្រើប្រាស់កម្មវិធីបម្លែងកូដ (compiler) អោយទៅជាកូដម៉ាស៊ីនដែលអាចដាក់អោយប្រតិបត្តិការលើម៉ាស៊ីនបាន។ ដូច្នេះ ភាសានេះត្រូវបានចាត់ចូលក្នុងជំពូកភាសាកូដបម្លែង (compiler) ដែលខុសពីជំពូកភាសាកូដបកប្រែ (Interpreter)។ភាសាC មានលក្ខណៈពិសេសៗដូចជា
- មិនប្រកាន់ប្រភេទទិន្នន័យរវាង characters និង Interger ដែលមានន័យថាប្រភេទទិន្នន័យទាំងពីរនេះអាចប្រើប្រាស់ជំនួសគ្នាបាន
- អាចធ្វើការគណនាដោយផ្ទាល់ដល់អង្គចងចាំរបស់កុំព្យូទ័រ (computer memory) ដោយការប្រើប្រាស់ Pointer
- ធ្វើការជាមួយនិងលក្ខណៈ Polymorphism
- អាចបង្កើតបណ្ដុំទិន្នន័យ (array) ជំនួសការប្រើប្រាស់ pointer
- មានប្រព័ន្ធប្រតិបត្តិដែលអាចគ្រប់គ្រងច្រកចេញចូល Standard Input Output (I/O)
- មានប្រមាណវិធីសម្រាប់គណនាច្រើនដូចជា +=, -=, *=, ++ ។ល។និង។ល។
ឧទាហរណ៍:
កម្មវិធី Hello world
#include <stdio.h>
int main(void){
printf("Hello, World!\n"); /* បង្ហាញ Hello, World!*/
return 0;
}
ក្នុងឧទាហរណ៍ខាងលើនេះ#include <stdio.h>ប្រើប្រាស់ដើម្បីភ្ជាប់ទៅបណ្ណាល័យដែលមានស្រាប់ stdio ដែលបានបង្កើតប្រតិបត្តិការ printf។
លំហាត់ឧទាហរណ៍
(១). ចូរបង្កើតកម្មវិធីនៃប្រមាណវិធីបូក ដក គុណ ចែកនៃទិន្នន័យចំនួនពិត a និង b :កម្មវិធី
#include <stdio.h>
void main (void)
{
double a, b; /* តាង a និង b ជាអញ្ញតិនៃអថេរចំនួនពិត*/
printf("input the value of a and b");
scanf("%lf %lf",&a, &b); /*បញ្ជូលតំលៃ a និង b*/
printf("Addition = %lf\n",a+b); /*ធ្វើប្រមាណវិធីបូករវាង a និង b*/
printf("subtraction = %lf\n",a-b); /*ធ្វើប្រមាណវិធីដករវាង a និង b*/
printf("multiplication = %lf\n",a*b); /*ធ្វើប្រមាណវិធីគុណរវាង a និង b*/
printf("Division = %lf\n",a/b); /*ធ្វើប្រមាណវិធីចែករវាង a និង b*/
}
(២) សរសេរកូដដើម្បីរកមធ្យភាគពិន្ទុ សិស្សដែលរៀន៤មុខវិជ្ជា ហើយបង្ហាញលទ្ធផលជាប់ រឺធ្លាក់ :# include<stdio.h>
# include<conio.h>
# include<math.h>
void main(){
float a,b,c,d,average;/*ប្រកាសអថេរតាង a,b,c,d ជាប្រភេទមុខវិជ្ជានិមួយៗ និង average ជាមធ្យមភាគពិន្ទុ*/
printf("please input a:\n b:\n c:\n d:\n");
scanf("%f%f%f%f",&a,&b,&c,&d);
average=a+b+c+d/4;
if (average>=50){
printf("you are passed exam!!");
printf("your score is %.2f:",average);}
else{
printf("you are failed exam!!");
printf("your score is %.2f:",average);}
getch();/*សំរាប់ទប់screen មិនអោយback មកវិញ*/
}
(៣) សរសេរកម្មវិធីដោះស្រាយសមីការដឺក្រទី២ មានមួយអញ្ញាត:# include<stdio.h>
# include<conio.h>
# include<math.h>
void main(){
float a,b,c,delta,x1,x2;
printf("Please input value of a: "); scanf("%f",&a);
printf("Please input value of b: "); scanf("%f",&b);
printf("please input value of c: "); scanf("%f",&c);
delta =(b*b)-(4*a*c);
if (delta>0){
x1=-b-sqrt(delta)/2*a;//sqrt()ជាអនុគមន៍រឹសការេ
x2=-b+sqrt(delta)/2*a;
printf("result of x1 :%f\n",x1);
printf("result of x2 : %f\n",x2);}
else if (delta==o){
x1=-b/2*a;
printf("result of x1=x2=%f",x1);}
else
printf("no answer");
getch();
}
LOOP
Loop ត្រូវបានគេប្រើដើម្បីអនុវត្តនូវកិច្ចការដដែលៗតាមលក្ខខណ្ឌដែលគេបានកំនត់។ទំរង់ទូទៅរបស់ for loop គឺ:
for(initial ;condition ;update)for (តំលៃចាប់ផ្តើម;លក្ខខណ្ឌ;ការប្រែប្រួលតំលែ)
ឧទាហរណ៍ដូចជា:
for(i=1;i<5;i++)មានន័យថាតំលៃចាប់ផ្តើមរបស់i គឺ់i=1ហើយi នឹងកើនតំលៃរហុតដល់4។
ដោយសារi++ វាកើនតំលៃម្តង1ៗ iមិនអាចស្មើ 5 បានទេ ព្រោះi<5។
ឧទាហរណ៍ :
#include<stdio.h>
#include<conio.h>
void main(){
clrscr();
int i;
for(i=1;i<5;i++)
printf("%d ",i);
getch();
}
លទ្ធផលដែលទទួបានគឺ1 2 3 4
សរសេរកម្មវិធីបង្ហាញតំលៃy ដោយy=x * 2ដោយបង្ហាញចាប់ពី០ដល់8ដោយប្រើfor loop:
#include<stdio.h>
#include<conio.h>
void main() {
clrscr();
int x,y;
for(x=0;x<5;x++) //x++ មានន័យថាxបញ្ចេញតំលៃហើយទើបកើនតំលៃ
printf("y= %d ",x*2); //យើងអាចដាក់រូបមន្ត(x*2)ដោយមិនចាំបាច់សរសេរstatement(x=x*2)
getch(); //wait for input
}
លទ្ធផលដែលទទួលបានy=0 y=2 y=4 y=6 y=8សរសេរកម្មវិធីបញ្ចេញតំលៃដោយប្រើ while loop:
#include<stdio.h>
#include<conio.h>
void main(){
int count;
int answer;
count=1;
while (count<=5){
answer=count*2;
printf("%d*2 =%d;",count,answer);
count=count+1;
}
getch();
}
លទ្ទផលដែលទទួលបានគឺ1*2=2;2*2=4;3*2=6;4*2=8;5*2=10;ការប្រើប្រាស់ switch
switch ត្រូវបានគេប្រើ ដើម្បីជាជម្រើសក្នុងការជ្រើសយកមធ្យោបាយណាមួយ។ទំរង់ទូទៅរបស់ switch គឺ៖
switch(variable)
{case const'''1''': statement; break;
case const'''2''': statement; break;
...
case const'''n''': statement; break;
default : statement;
}
ឧទាហរណ៍ៈ កម្មវិធីដែលអាចឲ្យអ្នកវាយបញ្ចូលពិន្ទុ បន្ទាប់មកវានឹងបង្ហាញនិទ្ទេស: #include<stdio.h>
#include<conio.h>
void main() {
clrscr();
float score;
char grade;
printf("Input your score:");
scanf("%f",&score);
switch(score/10) { /*(score/10) យកពិន្ទុសរុបចែកនឹង១០ */
case 10:
case 9: grade='A'; break; /* 90-100 បង្ហាញនិទ្ទេសA ដោយមិនចាំបាច់ដាក់លក្ខខណ្ឌ នៅក្នុង case 10 ឡើយ*/
case 8: grade='B'; break; /* 80-89.99 បង្ហាញនិទ្ទេសB */
case 7: grade='C'; break; /* 70-79.99 បង្ហាញនិទ្ទេសC */
case 6: grade='D'; break; /* 60-69.99 បង្ហាញនិទ្ទេសD */
case 5: grade='E'; break; /* 50-59.99 បង្ហាញនិទ្ទេសE */
default: grade='F';
}
printf("Your score is %f\n",score);
printf("Your grade is %c",grade);
getch();
}
ដកស្រង់ចេញគេហទំព័រ វិគីភីឌាសព្វវចនាធិប្បាសេរី
Hello my name Miech Chamnan. I'm from Battambang, Cambodia. I'm a freshman of Computer Science at National Polytechnic Institute of Cambodia and the owner of this blog. The reason that I create this blog because I want to share tips, tricks,...and more about computer to all people...