មេរៀនទី១: អំពីភាសា C/C++

មេរៀនទី១អំពី​ភាសា C/C++
C C++
C
C++ ជា Programming Language ដែលសរសេរ សំរាប់បង្កើត កម្មវិធីដំណើរការលើកុំព្រូទ័រ​ដ៏មានប្រសិទ្ធិភាព​ ដែលអនុញ្ញាតអោយ កុំព្រូទ័រ ធ្វើមួយជាក់លាក់និងត្រឹមត្រូវ ។​

1.  ប្រវត្តិសង្ខេប

-1960​ គេបានបង្កើតភាសាសរសេរកម្មវិធីមួយឈ្មោះ ALGOL​ដែលជា មូលដ្ឋានគ្រឹះនៃរចនាសម្ព័ន្ធរបស់​កម្មវិធី​។-
-1967​ លោក Martin Rechards បានបង្កើតភាសាសរសេរកម្មវិធី CPL បន្ទាប់មកលោក Martin Rechart បានបង្កើតភាសាមួយទៀតឈ្មោះ BCPL ដែលជា Version ថ្មីរបស់ CPL
-1970​ លោក​ Ken Tomson ជាបុគ្គលិកម្នាក់នៅមន្ទីរពិសោធន៍ Bell បានរកវិធីវឌ្ឍន៍ពីភាសា BCPL មក​បង្កើតភាសា B ដែលជា Version ថ្មីរបស់ BCPL ដែលមានលក្ខណះច្បាស់លាស់ដើម្បីប្រើប្រាស់ក្នុង System Programming
-1972 មានបុគ្គលិករួមការងារម្នាក់របស់លោក Ken Tomson ឈ្មោះ​ Dennis Ritchie បានយកការងារជាក់​ស្តែងជាច្រើនក្នុងការវិវឌ្ឍន៍ភាសា BCPL ទៅ B មកបង្កើតភាសាមួយ ដែលយើងបានស្គាល់មកដល់​បច្ចុន្បន្ន គឺភាសា C
-1983 វិទ្យាស្ថាន ANSI បានបង្កើតគណះកម្មាធិការមួយ ដើម្បីកំណត់ ភាសា C អោយមានលក្ខណះស្តង់ដា រួចកំណត់ឈ្មោះថា ANSI C
C / C++  ជាភាសាសរសេរកម្មវិធីមួយ ដែលមានភាពល្បី ល្បាញ ដូចដែលយើងបានដឹង ក៏ព្រោះតែ​ប្រពន្ធ័ដំណើរការ UNIX គឺបង្កើត ឡើងដោយភាសា Assembly ហើយស្ទើរតែទាំងអស់ ត្រូវបាន សរសេរ​ ឡើងដោយភាសា C / C++ ។​ ក្នុងអំឡុងចុងទសវត្ស 1970 នៅប្រទេសជឿនលឿនមួយចំនួន ភាសា​ C / C++ ត្រូវបានគេ ផ្សព្វ ផ្សាយនិងបញ្ចូោក្នុងកម្មវិធីសិក្សានៅតាមអនុវិទ្យាល័យ វិទ្យាល័យ និង មហាវិទ្យាល័យ ព្រោះវាជាភាសាមួយដែលនៅកៀក UNIX និងមាន C Compiler ដែលអាចអោយយើង Compile កូដដែលយើងបានសរសេរ ។

​​​2.  ការបង្កើតកម្មវិធីនៃភាសា C/C++

      *Editing
               ក្នុងដំណាក់កាលនេះគឺជាការបង្កើត Source Code របស់ C/C++ និងការដាក់ឈ្មោះអោយ Source Code ដែលបានសរសេររួច ។​ ជាទូទៅឈ្មោះរបស់ Source Code ដែលបានដាក់ឈ្មោះអោយ
មានលក្ខណះសំគាល់ ( xxxxxxx.c ) សំរាប់ C និង ( xxxxxx.cpp )​ សំរាប់ C++ ។
​​​​​​​               ក្នុងការសរសេរតំរូវអោយមានកម្មសរសេរកូដដូចជា Turbo C++/C , Code Block , Dev C++ …..
      *Compiling
               ក្នុងដំណាក់កាលនេះ Compiling បំលែង Source Code ទៅជា Machine Code ដែលកុំព្យូទ័រអាច​យល់បាន ព្រមទាំងស្វែងរក រួចបង្ហាញនូវភាព Error (ប្រសិនបើមាន) ។ ប្រសិបបើគ្មានភាព Error កើត​មានទេ នោះវានឹងបង្កើតបាន Object Code ដែលត្រូវផ្ទុកក្នុង File មួយផ្សេងទៀតគឺ Object File ដែលមានសំគាល់ ( xxxxxx.obj )
      *Linking
               ក្នុងដំណាក់កាលនេះ Linker បានផ្សំបញ្ចូលទៅ Object Code ជាមួយនិង​ Module Code ដែល​អានមកពី Program Library (ផ្នែកគាំ ទ្ររបស់ CPL) រួចបង្កើតជា Execut_able File ដែលមានលក្ខណះ​សំគាល់ ( xxxxxx.exe ) ។ ម្យ៉ាងវិញទៀត Linker ក៏អាចស្វែងរក និង បង្ហាញនូវភាព Error ផងដែរ​ ។
      *Execution
               ក្នុងដំណាក់កាលនេះ គឺជាដំណាក់កាលចុងក្រោយ នៃការ ដំណើរការកម្មវិធី ដែលដំណាក់កាលទាំងបីខាងលើ ដំណើរកាល បាន ដោយជោគជ័យ ។ ក៏ប៉ុន្តែក្នុងដំណាក់កាលនេះ ក៏មានភាព Error កើតមាន ផងដែរ ប្រសិនបើមានការខុសពីលក្ខខ័ណ្ឌកំណត់ណាមួយ ដូចជាការអោយតំលៃខុងពីលក្ខខ័ណ្ឌរបស់វា នេះគេហៅថា Logic Error ។

​​​​3.  ទំរង់ទូទៅនៃភាសា C/C++

ឧទាហរណ៍
​​​#include<stdio.h>  ជា Library Function សំរាប់ភាសា C
#include<iostream> ជា Library Function សំរាប់ភាសា C++
using namespace std;

int x = 10;     ជាការប្រកាសអញ្ញាតិប្រភេទ Global Declarations
int y = 15;

int main(){
int a = 50; ជាការប្រកាសអញ្ញាតិប្រភេទ Local Declarations
int b = 80;
printf(“value of x = %d\n”,x);
cout<<”value of x =”<<x<<endl;
……….
     return 0;
}

4.Data Type 
គឺជា Standard Type ដែលត្រូវបានគេប្រើសំរាប់ សំណត់ដែន តំលៃរបស់អថេរ ប្ញ ចំនួនថេរនោះនៅពេល​ដែលយើងប្រកាស់ ដើម្បី ប្រើប្រាស់ ។​ Standard Type សំខាន់ៗនៅក្នុងភាសា C++ មានដូចជា


ប្រភេទ

ការប្រើប្រាស់

ទំហំ

ដែនកំណត់

char

តាងអោយតួអក្សរ1តួអក្សរ

1byte

(signed)-128 to 127
short int

តាងអោយចំនួនគត់

2byte

(signed) -32768 to 32767
(unsigned) 0 to 65535
int

តាងអោយចំនួនគត់

4byte

(signed)-2147483648 to 2147483647
(unsigned)            0       to 4294967295
long int

 តាងអោយចំនួនគត់

4byte

(signed)-2147483648 to 2147483647
(unsigned)           0        to 4294967295
bool

តាងអោយតំលៃពី គឺ
True/False

1byte

true  or  false

float តាងអោយចំនួសទស្សភាគ

4byte

+/-3.4e +/-38(~7 digits)
double តាងអោយចំនួសទស្សភាគ

8byte

+/-1.7e +/-308(~15 digits)
long double តាងអោយចំនួសទស្សភាគ

8byte

+/-1.7e +/-308(~15 digits)
wchar_t តាងអោយតួរអក្សរច្រើនតួ

2 or 4byte

1 wild charater

5.Variable

អថេរគឺជាទំហំដែលអាចប្រែប្រួលតំលៃ ​ អថេររបស់កម្មវិធី​គឺជាឈ្មោះនៃតំបន់​ Memory រក្សារទិន្នន័យ​។​បណ្តាលអថេរត្រូវបានប្រកាស់ដោយរបៀបដាក់ឈ្មោះអថេរនៅផ្នែក​ Variable Declarition ។

​ ​​   ឈ្មោះអថេរ / Identifiers(Variable Name) : អថេរដែលត្រូវបាន ប្រកាស់សំរាប់ប្រើប្រាស់ក្នុងភាសាសរ​សេរកម្មវិធី ។​ យើងអាចកំណត់ ឈ្មោះអោយអថេរ បានតាមសេចក្តីត្រូវការ​ហើយឈ្មោះដែលប្រកាស់​រួចត្រូវបានរក្សាទុកក្នុងMemory ដែលមានទំហំ អាស្រ័យទៅ តាមប្រភេទ ទិន្នន័យរបស់អថេរនោះ។

  Identifiers ឈ្មោះដែលប្រើសំរាប់តាងអោយអញ្ញាតិណាមួយ ហើយការតាងឈ្មោះនេះ​មាន​លក្ខខ័ណ្ឌដូចតទៅ

​​​​​​​​                   -A,B,C….a,b,c…ជាតួអក្សរអង់គ្លេស រឺ underscore ” _ ” នាំមុខជានិច្ច
​​​​​​​​​​​​​​​                   -ហាមដកឃ្លា
-1,2,3,4,…9 អាចមានតួលេខតែមិនអាចនៅខាងមុខគេទេ
​                   -ហាមប្រើឈ្មោះជាន់នឹង Keyword
-ហាមប្រើ Symbol as  & % + – / ^ . \ | ……
-អាចប្រើ underscore ” _ ” ចំនួសការដកឃ្លា
ឧទាហរណ៍          int score_st1;  ត្រឹមត្រូវ
char 1s;​​​​​​​​​​​​​​​​​​​        មិនត្រឹមត្រូវ
float love-ss;​​​  មិនត្រឹមត្រូវ
int ss ee;       មិនត្រឹមត្រូវ      
   Keyword គឺជាពាក្យគន្លឹះដែលគេប្រើប្រាស់ញឹកញាប់ក្នុងការសរសេរកូដ ហើយមានអត្ថន័យ នៃការ​ប្រើប្រាស់ខុសប្លែកពីគ្នា ម្យ៉ាងទៀត Keyword ដែលមាននៅក្នុងភាសា C / C++ សុទ្ធសឹងតែជាអក្សរតូច​ទាំងអស់​ ដូចជា asm , auto , bool ,break , case , catch , char , class , const , const_cast , continue , default , delete , do , double , dynamic_cast , else , enum , explicit , export , extern , false , float , for , friend , goto , reinterpret_cast , return , short , signed , sizeof , static , static_cast , struct , switch , template , this , throw , true , try , typedef , typeid , typename , union , unsigned , using , virtual , void , volatile , wchar_t , while …..

  Declare Variable :    DataType Name_Variable ;
ឧទាហរណ៍
 int score ;              // ការប្រកាសអថេរដោយមិនកំណត់តំលៃតំបូង
int score = 0;           // កំណត់តំលៃតំបូងរបស់អថេរ ជាតួលេខចំនួនគត់ int
char charater;
char charater = ‘A’;     // កំណត់តួអក្សរ១តួតំបូង ដោយប្រើ ”
string name;
string name = “Jack”;    // កំណត់អក្សរតំបូង​ ដោយប្រើ “”
int score1,score2;       // ការប្រកាសអថេរលើសពីរក្នុងពេលតែមួយ
Variable Declaration គឺជាការប្រកាសអអថេរ
ការប្រកាសអថេរមួយត្រូវមាន DataType Identifier ដែលបព្ចាប់ដោយ ; ។
អថេរមាន 2 ប្រភេទធំៗ គឹ Global variable និង Local variable .
Global Variable : 
គឺជាអថេរដែលគេប្រកាសនៅក្រៅ Function សំរាប់អោយ Functions នានាយកទៅប្រើ ។
Local Variable :
គឺជាអថេរដែលគេប្រកាសនៅក្នុង Function សំរាប់អោយបានតែ Function
នោះយកទៅប្រើប៉ុណ្ណោះ ។
Initialization គឺជាការប្រកាសអថេរដោយផ្តល់តំលៃមួយទៅអោយអថេរដោយផ្ទាល់ នៅពេលគេប្រកាស់អថេរនោះ ។
ឧ.int x = 100;

6.Operator

Operator ក្នុងភាសា C / C++ គេបែងជាច្រើនផ្នែកដូចជា​ :

Arithmetic Operators  ពិជណិត

សញ្ញា

អត្តន័យ

ឧទាហរណ៍

+

បូក

c = a + b ;

-

ដក

d = e – d ;

*

គុណ

a = b * c ;

/

ចែក

a = b / c ;

%

សំណល់នៃការចែក

k = m % n ;

Compound Assignment :

សញ្ញា

ឧទាហរណ៍

អត្តន័យ

+=

 c += b;

c = c + b ;

-=

d -= e;

d = d -e ;

*=

a *= c;

a = a * c ;

/=

a /= c;

a = a / c ;

%=

k %= n;

k = k % n ;

Increase and decrease (++ , –)

 

ឧទាហរណ៍

អត្តន័យ

n++; ដំណើរការនូវតំលៃ n រួចហើយទើបបានបូក 1 បន្ថែមទៅលើតំលៃ n
++n; បូក 1 បន្ថែមទៅលើតំលៃ n ​រួចហើយទើបដំណើរការនូវតំលៃ n
n–; ដំណើរការនូវតំលៃ n រួចហើយទើបបានដក 1 ពីលើតំលៃ n
–n; ដក 1 ពីលើតំលៃ n​រួចហើយទើបដំណើរការនូវតំលៃ n

Relational and Equality Operators (==,!=,>,<,>=,<=)

ប្រើក្នុងលក្ខខ័ណ្ឌពិចារណា conditional

សញ្ញា

អត្ថន័យ

ឧទាហរណ៍

== ស្មើ if(a==5)..
!= មិនស្មើ if(a!=5)..
> ធំជាង if(a>5)..
< តូចជាង if(a<5)..
>= ធំជាងរឺស្មើ if(a>=5)..
<= តូចជាងរឺស្មើ if(a<=5)..

Logical Operators (!,&&,||)

a

b

a&&b

a||b

!a

True True True True False
True False False True False
False True False True True
False False False False True

 


ឧទាហរណ៍

!(5==5) // evaluates to false because the expression at its right (5==5) is true.
!(6<=4) // evaluates to true because (6<=4) is false.
!true // evaluates to false.
!false // evaluates to true.

Conditional Operator (?)

បើ​condition នេះ true នោះវានឹងមានតំលៃ result1 តែបើ false នោះវានឹងមានតំលៃ result2

Example

a = (7==5?4:3); // a = 3 cause 7==5 is false

 

Code

លទ្ធផល

//conditional operator#include <iostream>

using namespace std;

int main(){
int a,b,c;
a=2;
b=7;
c=(a>b)?a:b;
cout<<c;
return 0;
}

7

Comma Operator (,)

Example

a = ( b =​ 3 , b+2 );

ការតំណើរការនៃកម្មវិធីគឺកំណត់ b = 3 ហើយក៏ធ្វើការបូកបន្ថែម​2​ទៅលើ b បន្ទាប់មកទៀតបញ្ចូលតំលៃចុងក្រោយទៅក្នុង a លទ្ធផល​គឺ a = 5


7.Comment

Example

int number; // declare variable number as integer
char name; /* declare variable name
as charactor
*/
//………….​​​               ប្រើបានតែ១បន្ទាប់/*…………​​​       ប្រើបានច្រើនបន្ទាប់

…………….

………*/


8.Input / Output

For C++

Key word Meaning Example
cin បញ្ចូលទិន្នន័យ cin>>n;
cout បង្ហាញទិន្នន័យ cout<<n;

 

For C

Key word Meaning Example
scanf បញ្ចូលទិន្នន័យ scanf(“%d”,n);
printf បង្ហាញទិន្នន័យ printf(“%d”,n);