មេរៀនទី២: Expression,Statement

មេរៀនទី២: Expression,Statement

I. ប្រភេទទិន្នន័យ
I.1. និយមន័យ ទិន្នន័យ (Data) គឺជាបណ្ដាពត៌មានដែលមានពិតដូច ជា អត្ថបទ តំលៃលេខ  សំលេង និង រូបភាព សំដែងក្រោមទំរង់មួយ ដែលកុំព្យូទ័រ អាចធ្វើការប្រាស្រ័យទាក់ទង ឬអនុវត្ដន៍ ការងារ ណាមួយជាមួយវាបាន។ I.2. ប្រភេទទិន្ន័យ   (Data Type) ក្នុងភាសា  C មានប្រភេទទិន្នន័យមួយចំនួនដូចបាន បង្ហាញ ខាងក្រោមនេះ ៖
C C++

ប្រភេទទិន្នន័យត្រូវបានគេអោយនិយមន័យដោយពីរចំនុចខាងក្រោមគឺ ៖
+       ជាប្រភេទ និងដែនកំណត់នៃតំលៃ  ដែលក្រោយពេល អថេរ មួយ បានប្រកាសជាមួយប្រភេទទិន្នន័យនោះរួច វាអាចទទួលយក តំលៃ នោះ បាន។

+       ក្នុងប្រភេទទិន្នន័យនីមួយៗអាចមានកំណត់ប្រមាណវិធីមួយ ចំនួនជាក់លាក់។

I.3. ប្រភេទចំនួនគត់  ( Integer ) យើងដឹងហើយថា ក្នងុ

គណិតវិទ្យា ចំនួនគត់ធមμជាតិមានតំលៃចាប់ពី –N រហូតដល់ N

និងធាតុទាំងអស់រួមចូលគ្នាបង្កើតបានជាសំនុំចំនួនគត់។  នៅក្នុង កុំព្យូទ័រវាពុំមានលទ្ធភាព សំដែងតំលៃលេខ បានតាំង ពី រហូតដល់ +∞ នោះទេ  គឺវាអាចសំដែងបានតែនៅចន្លោះ កំណត់ណាមួយនៃ (-∞, +∞)ប៉ុណ្ណោះ។      ដូច្នេះចំនួនគត់       (Integer)      នៅក្នុងកុំព្យូទ័រគឺមាន        ការបែងចែកជាប្រភេទចំនួនគត់ ផ្សេងៗពីគ្នា ទៀត អាស្រ័យទៅតាមដែនតំលៃរបស់វាដូច ខាងក្រោម  ៖

 ប្រភេទទិន្នន័យ                             ពាក្យគន្លឹះ                  ចំនួន  ពយតេ                     ដែនតំលៃ

Character                                char                  1              -128 ដល់ 127

Integer                                     int                    2                -32768 ដល់

32767

Short integer                          short                  2                -32768 ដល់

32767

Long integer                           long                  4           -2147483648 ដល់

2147483647

Unsigned character             unsigned char

1                 0 ដល់ 255

Unsigned intger                unsigned int            2               0 ដល់ 65535

Unsigned short intger         unsigned short

 Unsigned long intger          unsigned long


2               0 ដល់ 65535

4                    0 ដល់

4294967295

 

ចំណាំ  ៖ ប្រភេទទិន្នន័យ char ភាពពិតជាប្រភេទអក្សរ ក៏ប៉ុន្ដែក្នុងភាសា C បានអនុញ្ញាតអោយប្រើប្រភេទ

char    នេះជាចំនួនគត់មួយដែលមានតំលៃអាចសំដែងបាន   ដូច ក្នុងតារាងខាងលើ។ នេះគឺជាភាពរស់រវីករបស់ C ដែល នៅ ពេល ធ្វើប្រមាណវិធីនព្វន្ដ នោះប្រភេទទិន្នន័យ char ត្រូវ បានចាត់ ទុក ជាចំនួនគត់     តែដល់ពេលធ្វើប្រមាណវិធីជាមួយ តួអក្សរ នោះវា ចាត់ទុក char ជាប្រភេទតួអក្សរវិញ។

I.3.1. សំដែងចំនួនគត់ដោយលេខគោល  16 និងគោល 8

នៅក្នុងការសរសេកមμវិធីដោយភាសា  C  ក្រៅអំពីការសរសេរលេខ ក្រោមទំរង់ Decimal (លេខគោល 10) វាបានផ្ដល់លទ្ធភាពអោយ យើងអាចសរសេរលេខក្រោមទំរង់ គោល  16 (hexa) ថែមទៀត។ ប្រព័ន្ធលេខគោល 16 រួមមាន  16 តួលេខគឺ  ៖ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F ដែលក្នុងនោះ A, B, C, D, E, F តំណាងអោយ 10, 11, 12, 13, 14, 15។

ក្នុងភាសា  C ដើម្បីសរសេរលេខក្រោមទំរង់ Hexa នោះត្រូវសរសេរ តាមលំនាំ ខាងក្រោម  ៖

Ox41មានន័យថា 41 hexa ដែលសើμនឹង 65 decimal
OxFមានន័យថា F hexa ដែលសើμនឹង 15 decimalក្រៅពីការ សរសេរលេខក្រោមទំរង់ជាប្រព័ន្ធ   Hexa         នោះក្នុង ភាសា    C   នៅ អនុញ្ញាតអោយយើងអាចប្រើប្រាស់ លេខក្រោមទំរង់   Octal   បានថែមទៀតផង។   ប្រព័ន្ធលេខ    Octal

(ប្រព័ន្ធលេខគោល   8)   រួមមាន    8   តួលេខសំរាប់ប្រើគឺ   0,   1,   2,   3,   4,   5,   6,   7។ ដើម្បីសំដែងលេខណាមួយក្រោមទំរង់  Octal  នោះក្នុងភាសា  C  ត្រូវសរសេរចាប់ផ្ដើម ឡើងដោយលេខសូន្យ 0 (លេខសូន្យ  )។

]TahrN_ ៖        013 មានន័យថា 13 Octal ដែលសើμនឹង 11 decimal 07 មានន័យថា 7 Octal ដែលសើμនឹង 7 decimal

I.3.2. ភា្ជប់តំលៃចាប់ផ្ដើមអោយអថេរប្រភេទចំនួនគត់ ឧបមាថាយើងភ្ជាប់តំលៃ 5 អោយអថេរ x នោះយើងអាចសរសេរបានពីររបៀប ដូចខាងក្រោម ៖

int x;

x = 5;

ឬសរសេរ ៖

int x = 5;

I.3.3. ចំនួនថេរប្រភេទចំនួនគត់

ពេលខ្លះយើងត្រូវការសរសេរចំនួនថេរដើម្បីភ្ជាប់អោយអថេរ ឬបរិមាណអ្វីមួយ។ ដើម្បីទទួលបាននូវ កំរិតសុក្រិតខ្ពស់   គប្បី យើងត្រូវសរសេរបញ្ជាក់បន្ថែមនូវតួអក្សរបញ្ជាក់   មួយនៅផ្នែក    ខាងក្រោយ បំផុតរបស់ បណ្ដាតួលេខនៃតំលៃនោះ។

ឧទាហរណ៍   ៖

1000U បានន័យថាជាចំនួនថេរចំនួនគត់ unsigned int ដែលមានតំលៃ 1000

1000L បានន័យថាជាចំនួនថេរចំនួនគត់ប្រភេទ  long ដែលមានតំលៃ 1000

1000UL ជាចំនួនថេរចំនួនគត់ប្រភេទ unsigned long ដែលមានតំលៃ 1000

0100L ជាចំនួនថេរចំនួនគត់ប្រភេទ long សរសេរក្រោមទំរង់លេខប្រព័ន្ធគោល 8

0x1000U      ជាចំនួនថេរចំនួនគត់ប្រភេទ        unsigned       int       ដែលសរសេរក្រោមទំរង់

ប្រព័ន្ធលេខគោល 16។

I.4. ចំនួនពិត   (Real )

ដូចគ្នាជាមួយនឹងប្រភេទ ទិន្នន័យចំនួនគត់ដែរ   ក្នុងកុំព្យូទ័រវាពុំមាន លទ្ធភាពសំដែង   តៃំ លលេខរបស់ សំនុំចំនួនពិតបានទាំងអស់នោះទេ គឺបានតែផ្នែកណាមួយនៃសំនុំតែប៉ុណ្ណោះ។ ក្នុងភាសា  C ប្រភេទចំនួន ពិតត្រូវបានចែកចេញជាបីប្រភេទផ្សេងៗទៀតគឺ ៖ ប្រភេទ float, double និង long dougle។ នៅពេលដែលអ្នកសរសេរ តំលៃលេខ សំដែងក្រោមទំរង់ប្រព័ន្ធ លេខគោល 16 ឬគោល  8 នោះក្នុងភាសា C ពុំអនុញ្ញាតអោយអ្នកប្រើសញ្ញាក្បៀស (.) បានឡើយ។ការសរសេ លេខដូចខាងក្រោមនេះមានកំហុស ៖

0x5.5   ខុស

05.5              ពេលនេះកុំព្យូទ័រពុំបានយល់ថាលេខនេះជាលេខគោល      8     ទេ     វាបែជាយល់

ថានេះជាលេខគោល 10 ដែលមានតំលៃសេμី 5.5។

នុងស្ទើរគ្រប់ភាសាសរសេរកមμវិធីទាំងអស់    ពេលសរសេរ ក្បៀសទសភាគ

នោះតែងត្រូវបានគេប្រើសញ្ញា (.) ពុំមែនសញ្ញា (,) ទេ។

I.4.1. របៀបសរសេរតំលៃនៃចំនួនពិតក្នុងភាសា  C

3.1416      ត្រូវ 3.      ត្រូវ 5 ខុស
3.0            ត្រូវ 0.5    ត្រូវ 5E-2 ត្រូវ
-12.345     ត្រូវ .50    ត្រូវ 5,00 ខុស
+0.00050 ត្រូវ

ជាមួយគ្នានេះ យើងក៏អាចសរសេរចំនួនទសភាគ តាមទំរង់ ដូចខាងក្រោម ៖

ឧទាហរណ៍

2

512.34567 = 5.1234567.10

ក្នុងភាសា  C យើងអាចសរសេរ ៖

3
= 0.51234567.10

 +2

5.1234567E+02 (ត្រូវសរសេរជាប់គ្នាទាំងអស់) មានន័យថា 5.1234567*10 ដូចគ្នានេះដែរ តំលៃ -0.001234 យើងអាច សរសេរបានថា ៖ -12.34E-4

I.4.3. ចំនួនថេរប្រភេទចំនួនគត់

ដើម្បីសរសេរតំលៃចំនួនថេរប្រភេទចំនួនពិតអោយមានភាពសុក្រិតខ្ពស់                            នោះយើង ត្រូវភ្ជាប់ពីខាងក្រោយតំលៃចំនួនពិតនោះនូវតួអក្សរបញ្ជាក់ F (float) ឬ L (long)។

ទាហរណ៍   0.12345E-33L ជាចំនួនថេរប្រភេទ long double

5.50123E+10F ជាចំនួនថេរប្រភេទ float.12345Fជាចំនួនថេរប្រភេទ float

I.4.4. ភ្ជាប់តំលៃចាប់ផ្ដើមអោយអថេរប្រភេទចំនួនគត់

យើងអាចភ្ជាប់តំលៃចាប់ផ្ដើមអោយអថេរប្រភេទចំនួនពិត តាមលំនាំដូចខាងក្រោម ៖

ឧទាហរណ៍

float   x; x = .50; ឬក៏អាចសរសេរ ៖

float x = .50;

 I.5. ទិន្នន័យប្រភេទ  Char (Character Type)

កុំព្យូទ័រវាពុំត្រឹមតែធ្វើការជាមួយទិន្នន័យជាតំលៃលេខប៉ុណ្ណោះទេ ថែមទាំងវាអាចធ្វើ ការជាមួយបណ្ដាតួអក្សរ  (Letters)  តួលេខ   (Numerals)  និងអាចលាយជាមួយបណ្ដា  សញ្ញាផ្សេង (Sign) ទៀតផង ដែលធាតុនីមួយៗរបស់សំនុំទាំងនេះអាចត្រូវបានគេហៅថា ជា Character។ បណ្ដា Character ដែលយើងតែងតែជួបប្រទះ និងប្រើប្រាស់សព្វថ្ងៃមាន ដូចជា  a, b, c, …, z, A, B, C, …, Z, 0, 1, 2, …, 9, !, ?, \។ល។

ក្នុងភាសា      C     ដើម្បីសរសេរចំនួនថេរនៃ       Character     យើងត្រូវសរសេរ      Character

នោះនៅក្នុងចន្លោះសញ្ញា ‘ ’ (single quote) ឧទាហរណ៍ដូចជា ‘a’, ‘0’, ‘?’, ‘2’, ‘z’ ជាដើម។

Character   ទាំងអស់សុទ្ធតែត្រូវបានគេកំណត់កូដតំណាងអោយវា   ដើម្បីងាយស្រួល ក្នុងការរក្សាទុក និងអនុវត្ដន៍ប្រមាណវិធីលើវា។ ក្នុងនោះដែរ  ASCII (American Standard Code

 

for Information Interchange) បានកំណត់កូដសំរាប់ 256 character និងប្រើមួយ Byte memory

ដើម្បីរក្សាទុកទិន្នន័យ 1 character។

តារាង  ASCII ខាងក្រោមនេះបានបង្ហាញ 128 character ដំបូង ចំណែក 128 ក្រោយទៀត នឹងត្រូវបានបង្ហាញនៅក្នុង សេចក្ដី បន្ថែម នៃសៀវភៅនេះ។ 32 តួដំបូង  (ដែល មានកូដចាប់ពី 0 ដល់ 31) ជាបណ្ដា     character     បញ្ជា      ជាក់ស្ដែងដូចជាកូដ     7     ជា      ASCII     របស់      BELL

បានន័យថាពេលដែលកុំព្យូទ័រទទួលបានតំលៃនេះ វានឹងបញ្ចេញ សំលេងជួង  (Bell)។  ចំណែកឯកូដ  13 (CR-Carriage Return) និង 10 (LF-Line Feed) វិញគឺជា  character បញ្ជាអោយ  screen អនុវត្ដន៍កាចុះបន្ទាត់ និងត្រឡប់មកដើមបន្ទាត់វិញ។ ចាប់ពី ASCII 32 រហូតដល់ 127 ជាបណ្ដា character ដែលអាចបង្ហាញលើអេក្រង់ និង បោះពុម្ពចេញក្រៅបាន។

C C++ក្នុងភាសា   C  យើងអាចសរសេរបណ្ដា character បញ្ជាបានដោយ ប្រើ Constance character ដែលគេបានកំណត់ជាស្រេច ដូចតារាង ខាងក្រោម ៖

Constance character ASCII

មុខងារ

‘\a’                         7            បញ្ចេញសំលេងជួង (BELL)‘\b’                         8            លប់មកឆ្វេងមួយតួអក្សរ (Back Space)‘\t’                         9            Character Tab

‘\n’                        10           ចុះបន្ទាត់ថμី (Line Feed)

‘\r’                        13           ត្រឡប់ទៅដើមបន្ទាត់ (Carriage

Return)

 

ក្រៅពីបណ្ដា     Character     ខាងលើនេះ      ដើម្បីសរសេរសញ្ញា      ឬ     Character     ពិសេស មួយចំនួនដូចក្នុងតារាងខាងក្រោម នោះត្រូវដាក់ Character ‘\’ ពីខាងមុខសិនដូចជា ៖

របៀបសរសេរ                                 Character

 

‘\‘’                                                   ‘

‘\“’                                                   “

‘\\’                                                   \

‘\0’                                          \0 ឬ NULL

 

 

ចូរប្រយ័ត្នចំពោះ Character ‘\0’ និង ‘0’ :

+       Character ‘\0’ គឺជា  Character ដែលត្រូវបានគេហៅម្យ៉ាងទៀតថា NULL និងមាន

ASCII =  0។

+       Character ‘0’ គឺជាតួលេខសូន្យដែលមាន ASCII = 48 decimal។

ការភ្ជាប់តំលៃចាប់ផ្ដើមអោយអថេរប្រភេទ char :                                                                                                    យើងអាចកំណត់ ឬភ្ជាប់តំលៃចាប់ផ្ដើមអោយអថេរប្រភេទ char បានដូចឧទាហរណ៍ ខាងក្រោម ៖

ឧទាហរណ៍char x = ‘5’;

ឬក៏

char x ;x = ‘5’ ;

កមμវិធីខាងក្រោមនេះជាឧទាហរណ៍បង្ហាញអំពីការប្រើប្រាស់បណ្ដា Character បញ្ជា។ ចូរអ្នកវាយកូដកមμវិធីនេះក្នុងមជ្ឈដ្ឋានម្របូលផ្ដុំ TURBO C រួចហើយដំណើរការវា ជាមួយនឹងការពិនិត្យមើល គ្រប់ ដំណាក់កាលនៃការប្ដូរ ឬលុប Character បញ្ជាណាមួយ។ កមμវិធី Prog2_1.C ខាងក្រោមនេះមានការប្រើ Character បញ្ជាមួយចំនួនដូចជា ‘\n’, ‘\t’, ‘\a’, ‘\’’, ‘\”’

។ល។
#include <stdio.h>

#include <conio.h>

void main( )

{

clrscr( );

printf(“Hello every body ! \nThis is a program”); printf(” Showing about the Escape sequence.”); printf(“\nThis program just output text onto

screen\n\n\a\a”);

printf(“\t1.\tGood morning !\n”); printf(“\”Build Bright University\”  \’BBU\'”); getch( );

}

លទ្ធផលលើអេក្រង់គឺ ៖

Hello every body !

This is a program Showing about the Escape sequence. This program just output text onto screen

1.         Good morning ! “Build Bright University”  ‘BBU’

I.6. ទិន្នន័យប្រភេទ  String

ក្នុងភាសា  C String គឺជាស៊េរីនៃ Character ដែលត្រូវបានគេសរសេរ ដាក់ ក្នុង ចន្លោះសញ្ញា “ ” (double quotes) ឧទាហរណ៍ដូចជាឃ្លា “Cambodia”។ ធាតុនីមួយៗ  របស់ String ត្រូវបានដំរៀប ជាប់ៗ គ្នាអស់ពីមួយទៅមួយក្នុង Memory ហើយផ្នែកខាង ចុងបំផុតនៃ ធាតុ របស់ String ត្រូវបានគេផ្ទុក Character NULL ឬ ‘\0’ ដែលនេះជា សញ្ញាមួយប្រើសំរាប់បញ្ញាក់ថា String ត្រូវបានបញ្ញប់ត្រឹមនេះ។

ដូច្នេះឃ្លា “Cambodia” នឹងត្រូវបានរក្សាទុកក្នុង Memory ដូចខាងក្រោម ៖ភាពខុសគ្នារវាង String “A” ជាមួយនឹង  Character ‘A’ គឺ ៖

“A” ត្រូវបានរក្សាទុកក្នុង 2 Byte Memory គឺ ៖                    A       \0

ចំណែក ‘A’ វិញត្រូវបានរក្សាទុកក្នុង 1 Byte Memory គឺ ៖     A

យើងអាចសរសេរ ៖ ‘A’ + ‘b’ + 5 មានន័យថា 65 + 98 + 5

តែយើងពុំអាចសរសេរ ៖

“A” + “b” + 5 (មានកំហុសព្រោះ “A” និង “b” សុទ្ធតែជា  String)

I.7. ទិន្នន័យប្រភេទ  Boolean ទិន្នន័យប្រភេទ   Boolean   ជាប្រភេទទិន្នន័យសំដៅទៅលើតែតំលៃពីរប៉ុណ្ណោះ       គឺ   1   នឹង   0

ដែលនេះជាតំលៃតក្កតំណាងអោយលទ្ធផលរបស់សំណើរមួយ ពិត (TRUE) ឬ មិនពិត (FALSE)។

ឧទាហរណ៍

សំណើរ 5 < 1 នោះលទ្ធផល = FALSE ឬ 0

5 > 1 នោះលទ្ធផល = TRUE ឬ 1

 

យោងតាមឧទាហរណ៍ខាងលើយើងឃើញថា លទ្ធផលរបស់សំណើរ ខាងលើគឺជា ចំនួនគត់ដែលអាចមានតែពីរតំលៃប៉ុណ្ណោះគឺ 0 និង 1។

 II.ចំនួនថេរ និង  អថេរ  (Constance & Variable)

II.1. ចំនួនថេរ

 នៅក្នុងការសរសេរកមμវិធី គេប្រើចំនួនថេរដើម្បីជួយសំរួល អោយ មានភាពងាយស្រួល ក្នុងការប្រើតំលៃ ជាក់ស្ដែងណា មួយដែល នឹង ពុំត្រូវបានប្រែប្រួលក្នុងដំណើរការនៃកមμវិធី។ យើងអាចកំណត់ ឈេμាះ ណាមួយ ដើម្បីតំណាងអោយ តំលៃនៃ ចំនួនថេរ ប្រភេទ ណាមួយ ដោយប្រើពាក្យគន្លឹះ const ពីខាងមុខ។

ឧទាហរណ៍ដូចជា     ³

const int a = 300;

const float b = 3.50;

const char ch = ‘A’, k = ‘5’;

ក្រោយការប្រកាសដូចខាងលើ ពេលនេះយើងទទួលបាន ៖

a ជាចំនួនថេរប្រភេទ integer ដែលមានតំលៃ 300 b ជាចំនួនថេរប្រភេទ float ដែលមានតំលៃ 3.50

ch និង kជាចំនួនថេរប្រភេទ charដែលមានតំលៃ ‘A’ និង ‘5’

ក្រោយពេលប្រកាសបណ្ដាឈេμាះខាងលើនេះជាចំនួនថេររួច                       នោះយើងនឹងពុំអាច

នឹងធ្វើប្រមាណវិធីណាមួយ ដែលបណ្ដាលអោយមានការប្រែ ប្រួល ដល់តំលៃរបស់ចំនួនថេរ ទាំងនោះឡីយ។ ទំរង់នៃការប្រកាសចំនួនថេរ ៖

const ប្រភេទទិន្នន័យ  ឈេμាះចំនួនថេរ = តំលៃនៃចំនួនថេរ

 II.2. អថេរ

នៅក្នុងភាសាសរសេរកមμវិធីកុំព្យូទ័រ   អថេរគឺជាឈេμាះនៃបណ្ដុំ    Memory    (ចាប់ពី   Address ណាមួយទៅ)  ដែលត្រូវបានគេ ប្រើ សំរាប់ រក្សាទុកទិន្នន័យប្រភេទណាមួយនៅក្នុង  Memory  នៃកុំព្យូទ័រ។

ទិន្នន័យទាំងអស់សុទ្ធតែមានប្រភេទរបស់វា      ដូច្នេះដើម្បីប្រើអថេរ     សំរាបផ់ជាដំបូងយើងត្រូវប្រកាសអថេរនោះជាមួយប្រភេទ ទិន្នន័យ ដែល នឹងត្រូវផ្ទុកជាមុនសិន។
របៀបប្រកាសអថេរ

 ប្រភេទទិន្នន័យ      អថេរ1,     អថេរ2, …,    អថេរn;

ឧទាហរណ៏     ៖

int  m,n ;

float  x ;

ក្រោយពេលប្រកាសដូចខាងលើ ពេលនេះយើងទទួលបាន m និង n គឺជាអថេរ  ប្រភេទ int ដូច្នេះយើងអាចយក m និង n ប្រើដើម្បីផ្ទុក ទិន្នន័យប្រភេទ int បាន។ ចំនែកឯ  x វិញត្រូវបានប្រកាសជាមួយ float ដូច្នេះយើងបានវាជាអថេរប្រភេទ float ដែលអាច  ប្រើសំរាប់ផ្ ទុកទិន្នន័យប្រភេទ float បាន។

III. ប្រមាណវិធី
III.1. បណ្ដាសញ្ញាដែលប្រើក្នុងប្រមាណវិធីនពន្ដ

សញ្ញា

អត្ថន័យ

ឧទាហរណ៏

+

បូក

a+b

ដក

a-b

*

គុណ

a*b

/

ចែក

a/b

%

ចែកយកសំណល់

a%b

សញ្ញា    ,               

+       ប្រសិនបើចែកលេខរវាងពីរចំនួនគត់ នោះយើងនឹងទទួលបានផលចែកជា ចំនួនគត់។


ឧទាហរណ៍ ៖

10/3 = 3 (លទ្ធផលគឺ  3ពុំមែន 3.333 ទេ)

+       បើចែកលេខរវាងចំនួនពិត         និងចំនួនពិត        ឬចំនួនពិត       និងចំនួនគត់        នោះយើង នឹងទទួលបានផលចែកជាចំនួនពិត។

ឧទាហរណ៏ ៖

10.00/3      =    3.333333

10/3.0        =    3.333333

សញ្ញា    5               ៖


នេះគជឺាសញ្ញាចែកយកសំណល់ វាត្រូវបានអនុវត្ដតែលើការចែកចំនួនគត់ជាមួយ ចំនួនគត់ប៉ុណ្ណោះ។

ឧទាហរណ៍ ៖

10%3 = 1

10.0%3  ករណីនេះមានកំហុស

កមμវិធីឧទាហរណ៍  ៖

កមμវិធីខាងក្រោមនេះជាឧទាហរណ៍បង្ហាញអំពីការប្រើសញ្ញាចែកយកផលចែក                           និង ការប្រើសញ្ញាចែកយកសំណល់។ កមμវិធី Prog2_2.C

#include<stdio.h>
#include<conio.h>

void main()

{    int a, b; /*— ប្រកាសអថេរ a និង b ជាអថេរប្រភេទ int —*/

float x; /*— ប្រកាសអថេរ x ជាអថេរប្រភេទ float —*/

a = 10 ;

b = 3;

x = a/b; /*— ចែកចំនួនគត់ a អោយ b —*/

clrscr(); /*— លុបបណ្ដាអក្សរដែលកំពុងមានលើអេក្រង់ —*/

printf(“x = %f”,x); /*— បង្ហាញតំលៃ  x លើអេក្រង់  —*/ x = 10.0/3; /*— ចែកចំនួនទសភាគ 10.0 អោយ 3 —*/ printf(“\nx = %f”,x);

x = a % b;

printf(“\nx = %f”,x);

a = 20 % 7; /* ចែកយកសំណល់ ហើយភ្ជាប់លទ្ធផលអោយ a */

printf(“\nA = %d”,a);

getch(); /*— រង់ចាំ  Press Key ណាមួយ  —*/

}

លទ្ធផលលើអេក្រង់គឺ ៖

x = 3.000000 x = 3.333333 x = 1.000000 x = 6

 III.2. អាទិភាពក្នុងប្រមាណវិធីនពន្ដ

នៅក្នុងការធ្វើប្រមាណវិធីនព្វន្ដ ការគណនាត្រូវចាប់ចេញ ដំណើរ ពីឆ្វេងទៅស្ដាំ និងសញ្ញាប្រមាណ វិធីនីមួយៗអាចមាន អាទិភាព ផ្សេងៗគ្នា ដូចជា  ប្រមាណវិធីបូក និងដក គឺមានអាទិភាពសេμីគ្នា ក៏ប៉ុន្ដែវាត្រូវទាបជាងអាទិភាពរបស់ប្រមាណវិធីគុណ ចែក និងចែក  យកសំណល់ (តែប្រមាណវិធីទាំងបី នេះមានអាទិភាពសេμីគ្នា)។

ក្នុងកន្សោមមួយ វាអាចមានការធ្វើប្រមាណវិធីច្រើន  ហើយ ប្រមាណ វិធីនីមួយៗអាចមានអាទិភាពផ្សេងៗគ្នា  ដូច្នេះក្នុងកន្សោម នោះនឹង ត្រូវមានប្រមាណវិធីខ្លះបានអនុវត្ដ  មុននិងខ្លះទៀតត្រូវអនុវត្ដ តាម ក្រោយ។

ឧទាហរណ៏ការគណនាកន្សោម ៖       5+10/3

លទ្ធផលនៃការគណនាកន្សោមខាងលើនេះគឺ 8 ពីព្រោះសញ្ញាចែក មាន អាទិភាព ខ្ពស់ជាងសញ្ញាបូកដូច្នេះត្រូវអនុវត្ដប្រមាណវិធីចែក មុន បានលទ្ធផលហើយទើបអនុវត្ដ ប្រមាណវិធីបូកតាមក្រោយ។ ដើម្បី ជៀស វាង កំហុសក្នុងប្រមាណវិធី   ឬក្នុងកន្សោមប្រមាណវិធី   នោះយើងត្រូវ

ប្រើសញ្ញារង្វង់ក្រចក ( ) ដើម្បីបញ្ញាក់អំពីអាទិភាពនៃប្រមាណវិធី។ ឧទាហរណ៍ដូចជា ៖ (5+10)/3    យើងបានលទ្ធផលគឺ 5

5+(10/3)    យើងបានលទ្ធផលគឺ 8

III.3. ប្រមាណវិធីប្រៀបធៀប  និង  ប្រមាណវិធីតក្ក

លទ្ធផលរបស់ប្រមាណវិធីប្រៀបធៀប    និងប្រមាណវិធីតក្ក    មានតែពីរតំលៃប៉ុណ្ណោះ    គឺពិត    (1) ឬមិនពិត (0) ដូច្នេះលទ្ធផល របស់ប្រមាណវិធីនេះជាទិន្នន័យប្រភេទ Boolean។

សញ្ញា

អត្ថន័យ

ឧទាហរណ៍

>

ធំជាង  ឬទេ?

a > b

>=

ធំជាង  ឬសើμ ឬទេ? a > = b

<

តូចជាង  ឬទេ?

a < b

<=

តូចជាង  ឬសើμ ឬទេ? a < = b

==

សើμគ្នា ឬទេ?

a = = b

!=

ខុសគ្នា  ឬទេ?

a ! = b

 

4         សញ្ញាប្រមាណវិធីដំបូងមានអាទិភាពសេμីគ្នា  ប៉ុន្ដែវា ខ្ពស់ជាងអាទិភាពរបស់ពីរសញ្ញាប្រមាណវិធី ចុងក្រោយ     (គឺ    ==    និង    !=    )    តែក្នុងនោះប្រមាណវិធី     (==)    និង    (!=)

មានអាទិភាពសេμីគ្នាវិញ។គ្រប់បណ្ដាសញ្ញាប្រមាណវិធីប្រៀបធៀប ទាំងអស់ សុទ្ធតែមានអាទិភាពទាបជាងបណ្ដាសញ្ញាប្រមាណ វិធីនព្វន្ដ    ឧទាហរណ៍ដូចជាកន្សោម          m     <     (n-1)     នោះកុំព្យូទ័រនឹងអនុវត្ដ

សញ្ញា

អត្ថន័យ

ឧទាហរណ៍

!

បដិសេធន៍ (NOT)

!a

&&

ប្រមាណវិធី (AND) a && b

||

ប្រមាណវិធី (OR)

a || b

ខាងក្រោមនេះ ជាតារាងឧទាហរណ៍បង្ហាញអំពីការប្រើប្រាស់បណ្ដាសញ្ញាប្រមាណ  វិធីតក្ក។

a       b      !a      !b        a&&b        !(a&&b)         a || b           !(a || b)

0       0       1       1            0                 1                  0                 1

0       1       1       0            0                 1                  1                 0

1       0       0       1            0                 1                  1                 0

1       1       0       0            1                 0                  1                 0

 

cMNaM   ³     ក្នុងប្រមាណវិធីតក្ក a និង b អាចជាចំនួនគត់ ឬចំនួនពិត បណ្ដាសញ្ញាប្រមាណវិធីប្រៀបធៀបទាំងអស់ សុទ្ធតែមាន អាទិភាព ទាបជាងសញ្ញា  ប្រមាណវធិ  ី NOT ក៏ប៉ុន្ដែវាមានអាទិភាព ខ្ពស់ជាង សញ្ញាប្រមាណវិធី AND និង OR វិញ។ ឧទាហរណ៏កន្សោម (a<b)&&(c>d) យើងអាចសរសេរបានថា a<b&&c>d ពេលនោះការធ្វើប្រមាណវិធីលើកន្សោមនេះគឺត្រូវអនុវត្ដប្រមាណវិធី a < b រួចហើយទើប គណនា c > d និងជាចុងក្រោយទើបយក លទ្ធផល ពីរ ប្រមាណវិធីមុននេះទៅអនុវត្ដប្រមាណ វិធី AND។ ខាងក្រោមនេះ បង្ហាញ អំពីលំដាប់អាទិភាពក្នុងប្រមាណវិធីប្រៀបធៀប និងប្រមាណ វិធីតក្ក ៖

!

>> =                   <<=

= =                      ! =

&&                     ||

ប្រមាណវិធីទាំងនេះ ជាធមμតាវាតែងត្រូវបានគេប្រើដើម្បីបង្កើតលក្ខខណ្ឌសំរាប់ ជ្រើស រើសការងារ ឬក៏បញ្ចប់ការងារនៅក្នុងរង្វិល (Loop) ណាមួយ។

កមμវិធីខាងក្រោមនេះ                         ជាឧទាហរណ៍បង្ហាញអំពីរបៀបប្រើប្រាស់បណ្ដាសញ្ញាប្រៀប ធៀបខាងលើនៅក្នុងការសិក្សាលក្ខខណ្ឌដើម្បីជ្រើសរើសការងារមកអនុវត្ដ។កមμវិធី Prog2_3.C

#include <stdio.h>

#include <conio.h>

void main()

{

int n;

printf(“\nInput an integer between 0 and 10 :”);

scanf(“%d”,&n);

if(n>5)

printf(“\nYou entered %d which is greater than 5”,n);

if(n<5)

printf(“\nYou entered %d which is smaller than 5”,n);

if(n==5)

printf(“\nYou entered 5”);

getch();

}

លទ្ធផលលើអេក្រង់គឺ ៖

Input an integer between 0 and 10 : 6

 

III.4. ប្រមាណវិធីលើ  BIT

ខាងក្រោមនេះជាបណ្ដាការងារដែលតែងតែបានជួបជាញឹកញាប់នៅក្នុងភាសា កំរិត ទាប តែពុំសូវជាបានជួបនៅក្នុងភាសាកំរិតខ្ពស់ឡើយ។ វាមាន មុខ ងារ សំរាប់ ធ្វើប្រមាណ វិធីទៅលើ  Bit នីមួយៗរបស់ចំនួនគត់  (បណ្ដាសញ្ញាប្រមាណវិធីខាងក្រោមនេះ  ពុំអាច   អនុវត្ដបានចំពោះ ប្រភេទទិន្នន័យ float និង double ឡើយ) :

សញ្ញា

អត្ថន័យ

ឧទាហរណ៍

&

ប្រមាណវិធី AND ចំពោះ  Bit នីមួយៗ

a & b

|

ប្រមាណវិធី OR ចំពោះ  Bit នីមួយៗ

a | b

^

ប្រមាណវិធី XOR ចំពោះ  Bit នីមួយៗ

a ^ b

<<

រំកិលឆ្វេង a << b

>>

រំកិលស្ដាំ a >> b

~

ប្រមាណវិធីបដិសេធន៍ Bit នីមួយៗ

~ a

ឧទាហរណ៍ ៖

a

b

a & b a | b

a^b

1

1

1

1

0

1

0

0

1

1

0

1

0

1

1

0

0

0

0

0

N

a << N = a*2

a >> N =    a  

2N

~1     = 0

~0     = 1

សំណួរ

1.      ចូរនិយាយអំពីភាពខុសគ្នារវាង Character ‘\0’ និង ‘0’ ?

2.      ចូរនិយាយអំពីភាពខុសគ្នារវាង “A” និង ‘A’ ?

3.      តើអថេរ និងចំនួនថេរគឺជាអ្វី? និងត្រូវបានគេប្រើសំរាប់ធ្វើអ្វី?

4.      ចូរកំណត់តំលៃរបស់កន្សោមខាងក្រោម ៖

x1 = 10%3

x2 = 10/3 x3 = 10/3.0 x4 = 10.0/3 x5 = 10.0/3.0

5.      ចូរកំណត់តំលៃកន្សោមខាងក្រោម ៖ a).            5.6 + 2.7 + 20/6 + 8.0 b).        5.6 + 2.7*20/6 – 8

6.      ចូរគណនាកន្សោមប្រៀបធៀបខាងក្រោម ៖

a).     x1 = (6+5*3/2) <= (7/4*2+10/4)

b).     x2 = (6+5*3/2) == (7/4*2+10/4)

c).     x3 = (6+5*3/2) != (7/4*2+10/4)

7.      ចូរគណនាប្រមាណវិធីខាងក្រោម ៖

a = 10;       b = 5;         c = 7;

x = (((a+b) <= (a-c)) || (a+b+c) >= 1000)

y = (!(a+b) <= 4 || (a-c) > 2) && (a+b+c < 100)

8.      ចូរកំណត់តំលៃរបស់បណ្ដាកន្សោមខាងក្រោម ៖

x1 = 10 & 5

x2 = x1 | 25 – 5 x3 = x1 ^ x2

x4 = (10 << 2) + (20 >> 4)

9.      ចូរបង្ហាញបណ្ដាកន្សោមដែលមានលក្ខណៈត្រឹមត្រូវ ៖

a).     (i = j)++                          b).     i+j++

c).     ++(i+j)                            d).     ++i+++j