Top Banner
មេមៀនទី១ អំពី 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
252

C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

Jan 23, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

មេម ៀនទ១ អពភាសា 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 ។

Page 2: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

-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

កា ែណាកកាលមនោះ េជាែណាកកាលច មពកាយ ននកា ែម ើ កា កេមវធ

ដែលែណាកកាលទបខាមលើ ែម ើ កាល បាន មដឋយមជាេ យ ។

Page 3: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

កបា ដនតកា ែណាកកាលមនោះ កមានភាព 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

Page 4: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

(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 ” _ ” ចនសកា ែកឃលេ

Page 5: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

ឧទ 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 េជាកា ពបកាសអមថ មដឋយផតលតនលេយមៅមោយអមថ មដឋយផទា ល

Page 6: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

មៅមពលមេពបកាសអមថ មនាោះ ។

ឧ.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

Page 7: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

–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

Page 8: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

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

Page 9: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

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);

មេម ៀនទ៣

បញច ល ន បមញចញទនានយ DATA Input &

Output

I. អន េេន printf ( ) and putchar ( ) :

+ printf ( ) : ជា Function សរាប Print ទនានយដែលមៅកា សញញា “ … ” េកមលើ Screen output ។ ពនតយឧទ ខាមពកាេ ៖

# include < stdio.h >

# include < conio.h >

main ( )

{

int n; float x; char ch;

Page 10: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

n = 5; x = 8.2; ch = ‘A’ ;

Note : + %d ដែល % ជា Format code ន d ជា Conversion code ។

+ មបើច print Expression (Variable ) មនាោះមយើពតវក ត Format

មោយតនលននកមនាេមនាោះ ។

តារា Format Code :

Format Code

អតានយ

%c Print បណាា ចននជា characters short, int

%d Print បណាា ចនន int , short

%u Print បណាា ចនន េμ ានសឭា ា, unsigned int,

%ld Print បណាា ចនន long

%X, %x Print បណាា ចននេតខាមពកាេរា hexa

%o Print បណាា ចននេតខាមពកាេរា Octab ( មគាល 8)

%f %lf Print float, double

%s Print string

Page 11: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

* មបើច print % ពតវស មស

printf (“ 50 %%” ); Æ 50%

+ print សមល Beep :

printf (“ \a\a Enter Value :”);

+putchar ( c) : ជា Function សរាប print character េយេកមលើ screen ។

ch = ‘a’; putchar (ch); Æ a

+ puts : សរាប Print string េកមលើ screen, ម ើយ Cursor នច ោះបនាា ត,

puts (“this is a character”) ;

II. Print Data into printer :

fprintf (stdprn, “ Print Data on printer!”); ន print ទនានយមៅកា printer ។ stdprn

:សរាបបញញា ក ពយទ មោយ print មៅ printer ។

III. scanf( ) function :

ជា Function សរាប Read data from keyboard

Page 12: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

Ex1: int n,p;

scanf (“%d%d”, &n, &p);

Ex2: char c;

int n;

scanf (“%c%d”,&c,&n);

មបើ ៖ Enter a25 Result

c = ‘a’ , n = 25

a^^25 c = ‘a’ , n = 25

ដតមបើ ៖ Ex3: char c;

int n;scanf (“ %d %c”, &n, &c);

Enter Result

12^a Æ n = 12; c = ‘^’; (េនដេន = ‘a’ មទ )

Ex4: char c;

int n;

scanf (“ %d %c”, &n, &c);

Enter Result

12^a Æ n = 12; c = ‘a’;

12^^a Æ n = 12; c = ‘a’;

* Macro getchar( ); សរាប Read character េយព Keyboard ។

Ex: c = getchar ( );

Ex: # include <stdio.h>

# include <conio.h>

main ( )

{ clrscr ();

int n,p;

printf (“ Enter n = ”); scanf (“ %d”, &n) ;

Page 13: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

while (getchar ( )! = ‘\n’);

printf (“ thank you for your Enter Value %d \n”, n) ;

printf (“ Enter P =”); scanf (“ %d”, &p) ;

while (getchar ( ) ! = ‘\n’) ;

printf (“thank you for your Enter Value %d \n”, p) ;

getch(); }

Statement : while (getchar ( ) != ‘n\’); មាននយថា ៖ Read character តែល Enter

មទើបឈប

Note : scanf (“%d”,&n); Readln (n) កា Pascal ។

<=>

while (getchar( ) ! = ‘\n’); (Read តនលម ើយច ោះបនាា តដតេា )

មយើោច នស while (getchar ( ) ! = ‘\n’); មដឋយ gets (ss);

scanf (“%d”, &n);

gets (ss);

មែើេប chear stdin មយើមពបើ Statemenut fflush(stdin);

* Control មតើមាន character Read បញច ល ឬអត ៖ kbhit ( ):

Function មនោះនពតតពនតយមេើល,មាន Read character ណាព Keyboard ឬអត,

ម ើយដែល Character កព សាតមៅកា memory ។ kbhit ( ) សេេល ន

keypressed កា Pascal ។ វាផា កកា <conio.h>

Ex:

Note :

Page 14: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

# include <conio.h>

# include <stdio.h>

int main (void )

{ clrscr () ;

cprintf (“\r\npress any key to continue :”); while(!kbhit ( ) ); /* No action */ cprintf

(“\r\n you have press a key ! \r\n”);

getch ( );

return (0);

}

-cprintf() :ជា Function <=> printf, កា cprintf => អតសាគ ល \n

ជាសញញា ច ោះមែើេបនាា តមទ, ពតវមពបើ\r\n មទើបសាគ លថា ច ោះមែើេបនាា ត ។

* getch ( ) Function (សេេលន Readkey កា Pascal )

getche ( ) Function ពបមេទ Macro Read character នេយៗព keyboard ។ character

Read ព keyboard ពតវបានសដែេកព screen ។

ចដ ក Function getch ( ) កជាពបមេទ Macro Read character ព keyboard ដែ ដត

,Character

ដែល Read ព keyboard មនាោះេនសដែេកមលើ screen មទ ។ ( សេេល ន Readkey

កា Pascal )

។ ែមចាោះមយើអន វតាន Function getch( ) កា កេμវធ Password ។

េាាមទៀតមយើមពបើ Functionមនោះមៅ ច ននពេបកេμវធទ អសមែើេបទប screen

output ។

+ Function getche( ) ន getch( ) ែចគាា ពត Read េយ character ព keyboard

មដឋយេនចា

Page 15: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

Enter, ដតខ សគាា ពត Function getche ( )នសដែ character ដែល Read ព keyboard

េកមលើ screen ។

+ Function getche( ) ន getche( ) : Read ពតព keyboard ដតេា,

មដឋយេនឆេកាត stdin មទ ។

មែើេប Read password, សេពនតយ Example ខាមពកាេដែលមានមពបើ Function get pass(

):

Ex: Read password :

# include < stdio.h>

# include <conio.h>

int main (void)

{

char *password; clrscr ();

password = getpass (“Enter password :”);

cprintf (“ password is : %s \r\n”, password);

getch( );

return (0);

}

* gets ( ) Function : ( សេេល Readln(st) កា Pascal )

gets ( ) សរាប Read string ព keyboard តែល Enter មទើបឈប ។ បនាា បព Read

ចវាដថេ

សញញា បញច ប បនាា ត (\0) មៅខាច String ។

Ex:

# include < stdio.h>

Page 16: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

# include < conio.h>

main ( )

{ clrscr ():

char name[80];

printf (“\n Enter your name :”);

gets (name);

printf (“\n your name is %s”, name );

getch ( );

return (0);

}

Note : Programmer មបើចភាា បកា ងា កា កា Readnumber ន String

េបបមពបើពបាស

ែណាក កា ខាមពកាេ ៖

+ Read ចននេត ៖ បនាា បព Enter;

gets (str );

i = atoi (str); /* a to int */

+ Read ចននពត ៖ បនាា បពច ច Enter;

j = atof (str); /* a to float */

Total Function input / output Data កា language :

+ getchar ( )and putchar( ): (macro) Read ន write character េយព keyboard ។

+ gets ( ) and puts ( ): Read ន write string ( េតទសញញា space ) ។

Page 17: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

+ scanf ( ): Read តាេ format Code ( %), តាេ Conversion code (d)

+ printf ( ): write Data តាេ format code, Conversion code ។

+ getche() ន getch( ): Read character ពតព Keyboard មដឋយេនចា Enter,

េនឆេកាត stdin ។

* gotoxy (int x, int y );

នា Cursor មៅទតា x, y នន screen output ។ x = 1 ែល 80 , y = 1 ែល 25 ។

Ex: # include < stdio.h>

# include <conio.h>

int main (void)

{

clrsrcr( )

gotoxy (35,12); cprintf (“Hello world !!!”);

getch ( );

return (0);

}

™ clrscr ( ); (clear screen )

ជា Function សរាបល បសោត screen output, បនាា បេកវានា Cursor មៅទតា (1, 1) ។

clreol ( ): (Clear end of line )

ជា Function ល បបណាា character ពចន ច Current cursor មៅច បនាា ត ។

textcolor (n) ន textbackground (n): ដឋកព text នព Background

តារា Colors :

Page 18: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

Const Value BLACK 0

BLUE 1

GREEN 2

CYAN 3

RED 4

MAGENTA 5

BROWN 6

LIGHT GRAY 7

DARKGRAY 8

LIGHT BLUE 9

LIGHT GREEN 10

LIGHT CYAN 11

LIGHT RED 12

LIGHT MAGENTA 13

YELLOW 14

WHITE 15

BLINK 128

Note: ចមរោះ textbackground តនល n េតព ( 0Æ 8 ) ។

Function lowvideo ( ) ន normvideo( ) : បញញា ពនេ Text, lowvideo( ) មធវើមោយពនេ បស

text មខាយៗមៅ normvideo( ) មធវើមោយពនេ បស text ធេμតាម ើវញ ។

Ex: ស មស រកយ WELCOME ( មនាោះអកស W E មានពនេ េេ )

# include < stdio.h>

# include <conio.h>

main( );

{ clrscr () ;

highvideo( ); cprintf (“W”); lowvideo( ); cprintf (“ ELCOM”); highvideo( ); cprintf

(“E”);

getch( );

return(0);

}

Page 19: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

wherex ន wherey : បញញា កពបាប កអ មដឋមន បស Current cursor ។

Ex: # include < stdio.h>

# include <conio.h>

int main (void)

{

clrscr ( );

gotoxy (10,10);

printf (“coordinate x :%d y :%d \n”, wherex, wherey);

getch( ); return(0);

}

window (int x1, int y1, int x2, int y2 );

ជា Function បមកើត text window ដែលមានកអ មដឋមន េ ដកខា មលើដផាកខាមឆវ

ជាចន ច (x1,y1) ន េ ដកខាមពកាេដផាកខាសាា (x2, y2) ម ើយ statement print data

on screen ន print data េកមលើ Text window ដែលមទើបនបមកើតមនោះ ។

Ex: # include <stdio.h>

# include <conio.h>

int main(void)

{

window (10, 10, 40, 11); textcolor (YELLOW);

textbackground (BLUE); clrscr ();

cprintf(“This is a test \n”);

getch( );

Page 20: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

return(0);

}

លហាតអន វតាន

1. ច ស មស Screen output នន program ខាមពកាេ ៖

# include <stdio.h>

# include <conio.h>

main ( )

{

int n = 345;

int p = 5;

float x = 34.5678 ;

printf (“A :%d %f \n”, n,x ); printf (“B :%4d %10f \n”, n,x ); printf (“C :%2d %3f \n”,

n,x );

printf (“D :%10.3f %10.3ef \n”, x,x );

printf (“E :%*d \n”, p,n ); printf (“F :%*.*f \n”, 12,5,x ); getch ( );

return (0);

}

2. ច ពបាបពតនលនន Variable ពបមេទ int េ n ន p មពកាយពអន វតាន Statement

ខាមពកាេៈ

scanf (“%4d %2d”, &n, &p ); ជាេយទនានយដែលវាយបញច លែចខាមពកាេ ៖

(សញញា ^ ជាសញញា ែកឃលេ )

a) 12^ 45 b) 123456

c) 123456^7 d) 1^458

Page 21: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

e) ^^^4567^^891

3. ច ស មស screen output ននកេμវធខាមពកាេ ៖

# include <stdio.h>

# include <conio.h>

main ( )

{

char firstname [ ]= “ Chan ” ; char lastname [ ] = “ Dara” ; float money = 5000 ;

clrscr ( ) ; gotoxy(10,10);

printf (“ %s %s, you will get $ %6.2f \n ”, firstname, lastname, money) ;

getch ( ) ;

return (0 ) ;

}

4. ច ស មស screen output ននកេμវធខាមពកាេ ៖

# include <stdio.h>

# include <conio.h>

main ( )

{ int letter ;

/* print Value of code ASCII of characters */

letter = ‘e’ ;

printf (“Code ASCII of %c is %d \n” , letter , letter );

getch ( );

return (0);

}

Page 22: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

5. ម ត អវមេនយេមពបើ Function gets ( ) ជា Function scanf ( )?

6. ច កកដនេខ សនន កេμវធខាមពកាេ ៖

main ( )

{

char str [ ] = {‘H’ , ‘e’ , ‘l’ , ‘l’ , ‘o’ };

puts (str);

getch ( );

return (0);

}

មេម ៀនទ២: Expression,Statement

I. ពបមេទទនានយ

I.1. នយេនយ ទនានយ (Data) េជាបណាា ពតមានដែលមានពតែច ជា អតាបទ

តនលមលខ សមល ន បភាព សដែមពកាេទ េយ ដែលក ពយទ ោចមធវើកា ពបាសសយទកទ ឬអន វតាន កា ងា ណាេយជាេយវាបាន។ I.2.

ពបមេទទនាយ (Data Type) កា ភាសា C មានពបមេទទនានយេយចននែចបាន

Page 23: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

បងាា ញ ខាមពកាេមនោះ ៖

ពបមេទទនានយពតវបានមេមោយនយេនយមដឋយព ចន ចខាមពកាេេ ៖

+ ជាពបមេទ នដែនក តននតនល ដែលមពកាយមពល អមថ េយ

បានពបកាសជាេយពបមេទទនានយមនាោះ ច វាោចទទលយក តនល មនាោះ បាន។

+ កា ពបមេទទនានយនេយៗោចមានក តពបមា វធេយ ចននជាកលាក។

I.3. ពបមេទចននេត ( Integer ) មយើែម ើយថា កា

េ តវទា ចននេតធេμជាតមានតនលចាបព –N តែល N

នធាត ទអស េចលគាា បមកើតបានជាសន ចននេត។ មៅកា

ក ពយទ វាព មានលទធភាព សដែតនលមលខ បានតា ព -∞ តែល +∞ មនាោះមទ

េវាោចសដែបានដតមៅចមនាេ ោះ ក តណាេយនន (-∞, +∞)បា មណាណ ោះ។

ែមចាោះចននេត (Integer) មៅកា ក ពយទ េមាន

កា ដបដចកជាពបមេទចននេត មផសៗពគាា មទៀត

ោសសយមៅតាេដែនតនល បសវាែច ខាមពកាេ ៖

ពបមេទទនានយ រកយេនេោះ ចនន ពយមត

ដែនតនល

Page 24: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

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 ដែល មៅ មពល មធវើពបមា វធនពវនា មនាោះពបមេទទនានយ

Page 25: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

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;

Page 26: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

ឬស មស ៖

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។ មៅមពលដែលអាកស មស តនលមលខ សដែមពកាេទ ពបពនធ មលខមគាល

Page 27: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

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

Page 28: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

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

Page 29: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

មនាោះមៅកា ចមនាេ ោះសញញា ‘ ’ (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 ដែលោចបងាា ញមលើមអពក ន

មបាោះព េពមចញមពៅបាន។

Page 30: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

កា ភាសា 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)

Page 31: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

មពៅពបណាា Character ខាមលើមនោះ មែើេបស មស សញញា ឬ Character

ពមសស េយចននែចកា តារាខាមពកាេ មនាោះពតវដឋក Character ‘\’

ពខាេ ខសនែចជា ៖

មបៀបស មស Character

‘\‘’ ‘

‘\“’ “

‘\\’ \

‘\0’ \0 ឬ NULL

ច ពបយតាចមរោះ Character ‘\0’ ន ‘0’ :

+ Character ‘\0’ េជា Character ដែលពតវបានមេមៅេាាមទៀតថា NULL នមាន

ASCII = 0។

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

Page 32: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

កា ភាា បតនលចាបមផាើេមោយអមថ ពបមេទ 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 !

Page 33: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

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)។

ឧទ

Page 34: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

សម ើ 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’

មពកាយមពលពបកាសបណាា មឈμ ា ោះខាមលើមនោះជាចននមថ ច

មនាោះមយើនព ោច

Page 35: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

នមធវើពបមា វធណាេយ ដែលបណាា លមោយមានកា ដពប ពបល

ែលតនល បសចននមថ ទមនាោះ យ។ ទ ននកា ពបកាសចននមថ ៖

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

Page 36: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

- ែក 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 ក មនោះមានក ស

Page 37: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

កេμវធឧទ ៖

កេμវធខាមពកាេមនោះជាឧទ បងាា ញអពកា មពបើសញញា ដចកយកផលដចក

ន កា មពបើសញញា ដចកយកស ល។ កេμវធ 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 ណាេយ —*/

}

លទធផលមលើមអពកេ ៖

Page 38: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

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

Page 39: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

>= ធជា ឬមសើμ ឬមទ? 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

Page 40: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

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);

Page 41: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

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

Page 42: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

ឧទ ៖

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)

Page 43: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

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

មេម ៀនទ៤: Control Structure

I. If …statement :

Syntax 1 :

if (Logic Expression ) statermen1 ;

if (កមនាេលកេខ ឌ Ð )

Statement1;

Syntax 2 :

if ( Logic Expression ) statement 1 ; else statement 2 ;

Page 44: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

if (កមនាេលកេខ ឌ )

Statement1;

else

Statement2;

ចមរោះ Syntax1: មបើ Expression មានតនល True (=1) មនាោះ Statement 1 ពតវបានអន វតា, ផា យេកវញ (Expression មានតនល False (= 0 ) មនាោះ Statement 2 ពតវបានអន វតា ។

ចមរោះ syntax 2 : មបើ Expression =1 មនាោះ Statement 1 ពតវបានអន វតា មបើ Expression

= 0 មនាោះ statement If … នពតវបញច ប ។ ចមរោះ Expression

ពតវដតស មស កា វពកចក () ។

ចមរោះ single statement មនាោះពតវបញច បមដឋយសញញា ( ប ។

ពនតយ ឧទ ខាមពកាេ ៖េ នាតនល Max, Min ននព ចនន Read from Keyboard :

Ex:

#include <stdio.h>

#include <conio.h>

main ( )

{

int n1, n2, min, max;

clrscr ( ) ; /* clear screen output */

printf (“Enter the first Value = ”); scanf (“%d”, &n1);

printf (“Enter the Second Value = ”); scanf (“%d”, &n2);

Page 45: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

if (n1 <n2)

{

min = n1 ;

max = n2 ;

}

else

{

min =n2 ;

max= n1 ;

}

printf (“maximum = %d”, max);

printf (“minimum = %d”, min);

getch(); return(0);

}

មយើោច នស statement if … else … បខាមលើមដឋយ statement

min = (n1 < n2) ? n1 : n2 ;

max = (n1 > n2) ? n1 : n2 ;

ឬមយើោចស មស ៖ (n1 < n2 ) ? (min = n1, max = n2 ) : (min = n2, max =n1 );

Ex 2: ក ត តនល n មតើមស μ សនយឬអត ? មបើ n =0 មនាោះពតវស មស េកមលើ screen ថា ៖ តនល n

= 0 ផា យេកវញ n< >0 .

#include <stdio.h>

Page 46: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

#include <conio.h>

main ( )

{

int n;

printf (“ Enter n =”); scanf (“%d”, &n);

if ( n !=0 )

printf (“ Value n < > 0 “);

else

printf (“ Value n = 0 “ );

getch ( ); return (0) ;

}

បណាា ឧទ ននពបមេទ Expression logic កា Statement If :

if ( count < =100)…

if ( sqrt ( a + b + c )> 0.005 )…

មបើ ch1 ឈ ពេ ខ ទ កា តារា Code ASCII )

if ( latter != ‘x’)…

if (( count <= 100) && (ch != ‘x’))…

if ( ! (copy >=100.0) && (status == ‘s’))…

Ex4:

#include <stdio.h>

#include <conio.h>

main ( )

{

float a, b;

Page 47: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

clrscr ( )

printf (“Enter a, b = ”); scanf (“ %f %f”, &a, &b );

if (b != 0 )

printf (“Result = %f ”, a/b);

else

printf (“Error ! Division by Zero” ) ;

gatch ( ); return 0 ; }

មយើោច នស Logic Expression if (b! = 0) មដឋយ if (b) .

Ex5: ស មស កេμវធមដឋោះសសាយឬសននសេកា ax² + bx +c =0 (a,b,c.: Read from

keyboard ):

#include <stdio.h>

#include <conio.h>

#include <math.h>

main ( )

{ float a, b, c ;

float x1 , x2, delta;

clrscr ( ) ;

printf (“a =”); scanf (“ %f”, &a);

printf (“b =”); scanf (“ %f”, &b);

printf (“c =”); scanf (“ %f”, &c);

delta =(b * b) – (4 *a * c );

printf (“ delta = %f ”, delta );

if (delta ==0)

Page 48: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

{ printf (“ Only One Root ” );

printf (“x = %f ”, -b/(2 *a));

}

if (delta >0 )

{ printf (Two Root ”);

x1 = (-b + sqrt (delta )) / (2 * a);

x2 = (-b – sqrt (delta )) / (2 * a);

printf (“ x1 = %f ”, x1 );

printf (“ x2 = %f ”, x2 );

}

if (delta < 0)

printf (“ No root”);

getch ( );

return (0);

}

មដឋោះសសាយវសេកា ax + b>0; (a,b :Read from keyboard )

#include <stdio.h>

#include <conio.h>

#include <math.h>

main ( ) { float a, b, x ; clrscr ( );

printf (“ Enter a,b =”); scanf (“%f %f”,&a, &b);

if ( a = 0)

if ( b > 0)

Page 49: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

printf (“Infinitive ”);

else

printf (“No Root ”);

if ( a > 0 )

printf (“x > %f ”, ( -b/a));

if ( a< 0 )

printf (“x < %f ”, ( -b/a));

getch ( );

return (0);

}

II. switch ( ) Statement :

រកយេនេោះ switch មពបើសរាបក តតនលកមនាេចននេត

ចាបមផាើេកា ងា (Statement) ដែលមានទ ែចខាមពកាេ ៖

switch (កមនាេចននេត)

{

case n 1 :

បណាា Statements;

case n 2 :

បណាា Statements;

………

case n k :

បណាា Statements;

Page 50: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

[default :

បណាា Statements;]

}

ដែល i ≤ 1 ≤ k) មៅទមនោះោចជាចននេត ោចជាចននមថ ពបមេទ

charឬោចជាកមនាេមថ ណាេយ។ ចមរោះកណាតកេ μវធស មស មៅកា ចមនាេ ោះ “

ន ” វញមៅថាជាតខេន បស switch ែមចាោះមពល ដែលមយើនោយថា ចាកមចញព

switchឬចាកមចញពតខេន បស switch មនាោះមាននយថាកេ μវធនមលាតមៅអន វតា Statement

ដែលសាតមៅមពកាយបនាា បព សញញា ” 9ដែលសញញា ” មនោះជាសញញា បញច ប switch).

ចមរោះ default វញេជាដផាកេយ បស switch ដតេនចាបាចដឋចខាតពតវដតមានវា

មនាោះមទ។

ែម ើ កា បសរកយេនេោះ switchែម ើ កា បស switchសញញា វពកចកជាបរកយេនេោះ swicth មនាោះ។េពដផែកមៅមលើតនល បស កមនាេ

ដែលសាតមៅកា មពលដែលតនលននកមនាេមនាោះមស μ n មនាោះក ពយទ

នមលាតមៅអន វតាបណាា Statement

iដែលសា តមៅជាបខាមពកាយសញញា ( : ) បសត ន ល n

មនាោះបនាមៅខាមពកាេ។មពលដែលតនលកមនាេខ សព n

មនាោះក ពយទ នមធវើកា ែចខាមពកាេ ៖

a. មបើមាន default មនាោះវានមលាតមៅអន វតា Statement ចាបព មពកាយសញញា ( : )

បស default.

b. មបើេ μ ាន default មទមនាោះក ពយទ នចាកមចញព switch.

ចាកមចញពរកយេនេោះ switch

Page 51: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

មាាស ននចាកមចញព switch មៅមពល បរកយេនេោះ break ឬ បសញញា បទ

ឃលា ប បស switch } 9សញញា បទបញច ប switch ច មពកាយបែស ប។ មយើកោចមពបើ រកយេនេោះ goto

មៅកា ខេន បស switch មែើេបមលាតមៅ ក Statement ណាេយមៅ ខាមពៅត switch.

មពលដែល switch ពតវបានមេមពបើមៅកា អន េេនណាេយមនាោះ

មយើោចមពបើរកយេនេោះ return មៅកា តខ ន បស switch

មែើេបចាកមចញពអន េេនមនាោះ។

ចណា ៖មពលែម ើ កា ប switch មនាោះក ពយទ នក តតនល

កមនាេកា សញញា វ ពកចក បស switch ចដសវ កតនលដែល

ក តបានមនាោះកា តខេន switch. មបើ កព ម ើញមទ វានចាក មចញពត switch

ដតមបើវា កម ើញមនាោះវានចាប មផាើេអន វតាកា ងា ចាបពសញញា ( : ) នន n i

ឧបមាថាតនល បសកមនាេេ n i

មនាោះតាេលដឋបពមឆវ មៅ សាា បបណាា រកយេនេោះ return, goto, break ឬក ប

សញញា បទឃលា បបញច ប switch មទើបក ពយទ ចាកមចញពត switch ម ើយមលាតមៅតាេ

កដនេដែលបណាា Keyword ខាមលើបានក តមោយមៅអន វតាបនា។

ច ស មស ព កេ μវធខាមពកាេ ម ើយពនតយមេើលភាពខ សគាា វា Statement ទព ៖

កេμធ

Prog4_3.C :

#include <stdio.h>

#include <conio.h>

void main()

{ int n;

clrscr();

printf(“Input n = “);

Page 52: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

scanf(“%d”, &n); /*បញច លតនលមោយអមថ n */

switch(n)

{ case 1 : printf(“year in BBU”);

break;

case 2 : printf(“year in BBU”);

break;

case 3 : printf(“year in BBU”);

break;

case 4 : printf(“year in BBU”);

break;

default : printf(“inputed %d”,n);

}

getch();

}

កេμវធ Prog4_4.C :

#include <stdio.h>

#include <conio.h>

void main()

{ int n;

clrscr();

printf(“Input n = “);

scanf(“%d”,&n);

switch(n)

Page 53: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

{ case 1 : printf(“year in BBU”);

break;

case 2 : printf(“year in BBU”);

case 3 : printf(“year in BBU”);

case 4 : printf(“year in BBU”);

default : printf(“inputed %d”,n);

}

getch();

}

ច ពាោេែម ើ កា ទព កេ μវធ ខាមលើមនោះ ជាេយនកា បញច លតនលមោយ

អមថ n មផសៗគាា ។

Ex3:

#include <stdio.h>

#include <conio.h>

main ( )

{ int n;

clrscr ( );

printf (“ Enter n = ”); scanf (“ %d”, &n );

switch (n);

{

case 0 : printf (“ number 0” ); Break;

case 1 : printf (“ number 1” ); Break;

case 2 : printf (“ number 2” ); Break;

Page 54: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

}

printf (“ Good by ”);

getch ( );

return (0)

}

តនលេយមៅមោយ n . ម ើយ statement switch ន ពនតយមេើលតនល បស

មតើសេេលនក ណា,

+ មបើ n = 0 មនាោះវា នអន វតា Statement ដែលមៅពមពកាយ Keyword Case 0…

+ មបើ n = 1 មនាោះវា នអន វតា Statement ដែលមៅពមពកាយ Keyword Case 1…

_ Statement break មាននាទសរាបមចញមពៅ statement switch ( ) ម ើយ មៅអន វតាន

នវបណាា statement ដែលមៅបនាបនាា បព statement switch . មែើេបយលចាសនវ Statement break, ច ពនតយ

ឧទ ខាមពកាេ ។

Ex4:

#include <stdio.h>

#include <conio.h>

main ( )

{ int n ; clrscr ();

printf (“ Enter n = ”);

scanf (“ %d”, &n );

switch (n)

{ case 0 : printf (“ number Zero”); break;

case 1 : printf (“ number One”); break;

Page 55: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

case 2 : printf (“ number Two”); break;

default : printf (“ Good by ! ”);

}

getch ( );

}

កា ឧទ មនោះ, មយើដថេ Statement default មៅខាច ។

មនាោះជាក សេេលនតនលមពៅព 0,1, 2, .

Ex5 : ក case េយដែលមានតនលមពចើន ៖

#include <stdio.h>

#include <conio.h>

main ( )

{ int n;

printf (“ Enter n = ”);

scanf (“ %d”, &n );

switch (n)

{

case 0 : printf (“ Number Zero ”); break;

case 1 : printf (“ Number One ”); break;

case 2 : printf (“ Small number ”); break;

case 3 : printf (“ Small number ”); break;

case 4 : printf (“ Average number ”); break;

case 5 : printf (“ Big number ”);

}

Page 56: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

printf (“ Good by ! );

getch ( );

return (0) ;

}

លហាតអន វតាន

មេមោយ 4ចនន a, b, c, d Read from Keyboard . ច កចនន Maximum ន Assignment

តនលមនាោះមៅមោយ Variable Max, ន print the Result on screen output

ស មស កេμវធមដឋោះសសាយ ពបពនាសេកា ខាមពកាេ ៖

ax + by = m

cx + dy = n

ស មស កេμវធមដឋោះសសាយសេកា ax +b >0

4. ស មស កេμវធ Read from keyboard នវបណាា ចននេត n (1≤ n ≤ 10 )ម ើយ

ស មស ភាសា អមេេសននចននទមនាោះេកមលើ screen .

ឧបមាថា ៖ មបើវាយបញច លមលខ 2 មនាោះពតវស មស េកមលើ screen : 2 Tow

.បណាា ពបមទសជាសមា កននអគកា ពេពមលាកេយ ៥។

ពតវបានដបដចកជា

% ពបមេទដែលមានមលខម ៀ ៖ 1, 2, 3, 4, 5,

ពបមទសនេយៗពតវបវភាេទនតាេកា ក តេយែចខាមពកាេ ៖

។ ម ៀរាលឆា ពបមទសទ 1, 2, 3, 4 ពតវប 1%, 0,7%, 0,5%, 0,1%

ននពបាកច លពបចាឆា ។ ពបមទសពបមេទទ5

ពតវប 1.000.000$ . ច ស មស កេ μវធ Read from keyboard នវមឈ μ ា ោះពបមទស,

ពបមេទពបមទស, ពបាកចនលពបចាឆា (មបើពតវកា ), ម ើយេ នា ន ស មស េកមលើ screen នវមឈ μ ា ោះ បមទស ន ពបាកដែលពតវបវភាេទ ។

Page 57: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

6. ស មស កេμវធ េ នាព a ននពតមកា ABC មបើមេសាគ លព b ព c ន េ B.

7. Read from keyboard នវកអ មដឋមនមែកាតនន4ចន ច A, B, C, D. .

ច ពតតពនតយមេើលបនចននខាមលើមនាោះោចបមកើតបានជាចត មកា មបាា

មបើបានច េ នាពកលានផាននចត មកា មបាា មនាោះ, ម ើយស មស េកមលើ screen .នថៃ, ដខ, ឆា នននថៃណាេយកា សតវតសទ2០, ម ើយេ នានថៃមនាោះជានថៃអវ

? (ចនា, អងាគ ,…,ោទតយ ) ដផែកមលើនថៃបចច បបនាដែល Read from keyboard .

9. Read from keyboard នវកអ មដឋមន3ចនន A, B, C, ម ើយ Read ដថេេយចន ច

មទៀតព

keyboard, ម ើយពតតពនតយ មេើលចន ច មនាោះ, សាតពតមកា ABC ឬ

មៅមពៅពតមកា

10. ស មស កេμវធ មដឋោះសសាយសេកា ax + bx + c >0

11. ស មស កេμវធ Read from keyboard នវតនល ខ ម ើយេ នា ៖

មេម ៀនទ៥: វល Control Loop

Page 58: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

I. វល For ( for……… Statement )

syntax :

for ([ Expression 1]; [Expression 2]; [Expression 3])

{

Block Statements ;

} ឬ

for (កមនាេ ១ កមនាេ 2; កមនាេ 3)

បណាា Statement;

េមានបកមនាេ នកា តខ ន បស for ោចមាន Statement េយ ឬក ប ា Statements មពចើន ដែលស មស មៅខា មពកាយ សញញា បទ វ ព

កចក បសរកយេនេ ោះ for. ចមរោះកមនាេ ទប ខា

មលើោចេμ ានកមនាេណាេយកបាន ដតពតវមានសញញា 9 ប មែើេប ខ ឌ ដចកពកមនាេេយមៅកមនាេេយមទៀតជា ដឋច ខាត។ ជាធេតា កមនាេ ១

េជាកមនាេភាា បតនលមែើេបបមក តតនលែបមោយអមថ loop កមនាេ 2

ជាទនាកទន logic ឬមពបៀបមធៀបមែើេបក ត តនល លកេខ ឌ សរាបបនា វល មទៀតឬោាណាចដនកឯកមនាេ 3 េជា កមនាេភាា បតនល េយមផសមទៀតមពបើមែើេប បមកើតកា ផទេ សបា តនលថ μ មោយ មៅអមថ loop. ែម ើ កា បសរកយេនេោះ for

for មធវើកា តាេ បណាា ហានខាមពកាេមនោះ ³

1. ក តតនលកមនាេទ 1

2. ក តតនលកមនាេទ 2

3. ោសសយមលើលកេខ ឌ ពត

ម ើសយកេយកា ចមណាេព ផេវខាមពកាេ ³ ឬេនពត បសកមនាេទ 2

មនាោះមាាស ននមព ើស មបើស នជាកមនាេទ 2 មានតនលសនយ 9លកេខ ឌ េ នពត ប

មនាោះមាាស ន នចាកមចញព វល for ម ើយ បនាអន វតាបណាា statement មៅខា

មពកាយតខេន បស for.

b. មបើសនជាកមនាេទ 2 មានតនលខ សពសនយ (លកេខ ឌ ពត ) មនាោះមាាស ន

Page 59: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

នអន វតាបណាា statements កា ខេន បស for. មៅមពល បសញញា បញច ប }

មពកាយបែស បស for ឬ ប រកយ េនេោះ

continueមនាោះមាាស នន តមៅមធវើកា មៅ ហានទ 4 9ចាបមផាើេ ថ μ ប បនាមទៀត។

4. េ នាកមនាេទ 3 ចម ើយពតលបមៅ ហានទ 2 វញមែើេប បនា វ ល ថ

។មែើេបដសវ យលអព ែម ើ កា បស មថៀ ដថេ មទៀតមនាោះ

មយើនមធវើកា ពនតយមៅមលើកេ μវធខាមពកាេមនោះ

ដែលកេμវធមនោះនបងាា ញតនល បសអមថ count ចាបពមពល ដែល count =

១ តែលមពល count ទទលបានតនល 10

Ex1:

/*កេμវធ Prog4_7.C */

#include <stdio.h>

#include <conio.h>

void main( )

{

}

int count;

clrscr( );

for(count = 1; count <= 10; ++count)

printf(“%d”, count);

printf(“have finished.”);

getch();

មយើោចសដែមោយលនាននែម ើ បសកេ μវធខាមលើមដឋយ F

Page 60: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

ជាេយ Flow Chart ដែលបានបងាា ញមនោះ មយើោចមេើល ម ើញ មដឋយងាយថា

កេμវធ Prog4_7. ខាមលើមនោះមពកាយមពល ពបកាសអមថ មចៀ នត មានពបមេទ

ទនានយជា int ច វាកបានមៅ អន េេន clrscr() េកសោតមអពក បនាា បេកមទៀតេ

ចលែល កា មពបើ វល for. មៅកា វ ល for មនាោះ ជាែប វាអន វតាកា ភាា បត ន

លមោយ អមថ count =1 សន ចម ើយមទើបអន វតា បណាា កា ងា ែចខាមពកាេ ³

a. ពនតយមេើលលកេខ ឌ ថាមតើ count តចជាឬមស μ 10 ដែ ឬមទ?

b. ពបសនមបើ count តចជាឬមស μ 10 9បាននយថាកមនាេ លកេខ ឌ ពត

មនាោះកេμវធពតវមចញតាេពចកសញញា ពពញពត មែើេបអន វតាកា បងាា ញតនល count

មលើមអពក ចម ើយមទើបបនាមៅ អន វតាកា បមកើនតនល ១ ដថេមោយមៅអមថ count

មទៀត នជាច មពកាយមនោះពតវពតលបមៅច ច a. ខាមលើវញ។ពបសន មបើ count

េនតចជាឬមស μ 10 មទ 9បាននយថាកមនាេលកេខ ឌ េនពត ប

មនាោះកេμវធពតវមចញតាេពចកសញញា ពពញេនពត មែើេបអន វតាកា បងាា ញ ឃលេ “We

have finished.”.

សនាដឋា ន កមនាេ ១ បានេ នា នពតវបានមពបើមៅកា ែប ដតេាេត។

កមនាេ ២ ប កមនាេ ៣ នខេន បស for ោចពតវបាន មធវើកា មពចើន ។

ក តសគាល

1. មបើេ μ ានកមនាេ ២ មទ មពលមនាោះវា នបាន ក តថា “លកេខ ឌ ពតជានចច”

ដែលកា ក មនោះ កា មចញផ តព វ ល បស for េពតវពដផែកមៅមលើរកយេនេ ោះ

break, goto ឬ returnដែលបានស មស កា តខេន បស for មនាោះ។

2. មៅកា សញញា វ ពកចកមពកាយរកយេនេោះ ដែលកមនាេ នេយៗ បានដចកដឋចព

េ ា ា មដឋយសញញា (;). កា កមនាេ នេយៗោច មានេយ

ឬមពចើនកមនាេកនដែលកមនាេកននេយៗ ពតវបានដចក ដឋចពគាា មដឋយសញញា (,)

ជាបនា មទៀត ជាេយនកា ក តតនល បសកមនាេ កននេយៗ េពតវបានអន វតាព

មឆវមៅសាា ។ឬេ នពត បសកមនាេមសេ កមនាេ កនដែលមានកា កមនាេ 2 មនោះ។

Page 61: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

3. មៅកា តខេន បសរកយេនេោះ មថៀ មយើោចមពបើរកយេនេោះ for មផសមទៀត

បានដែលតាេ មបៀបមនោះមយើោចបមក តបណាា វ លមៅកា វ លមផសមទៀត។

9ច មេើល កេμវធ Prog4_14.C

មៅទព ទ 107).

4. មពល បរកយេនេោះ break កា តខេន បស for ណាេយ មនាោះមាាស ន នចាកមចញព

for ដែលមានផា ករកយេនេោះ break មនាោះភាេ េ។

5. កា តខេន បស for ណាេយ មយើោចមពបើ goto មែើេបមលាតមចញ ពត ខេន បស for

មនាោះបាន 9មោយមលាតមៅកដនេ ដែលមយើ ច បាន ប ឬកមយើោចមពបើ return

កា តខេន for មែើេបចាកមចញព អន េេន ណាេយកបានដែ ។

6. កា ខេន for ោចមពបើ continue មែើេបពតលបមៅចាបមផាើេពខា មែើេ នន loop វញ

មាននយថាមពល ប continue មនាោះមាាស នន ឈប អន វតាបណាា សtatements

ដែលមៅសលកា តខេន បស for ម ើយ នមៅក តតនលកមនាេទ ៣ កា សញញា វពកចក បស for

មែើេបអន វតា ថ μ បនាមទៀត។

Ex2:

/*—- កេμវធ Prog4_8.C —–*/

#include <stdio.h>

#include <conio.h>

void main()

{ int count;

clrscr();

printf(“******************** ”); /* េសកពល បសពបអប ដែលមាន

សញញា 8 ចនន 20 */

for(count = 1; count<= 4; ++count)

Page 62: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

* ”); /* េសព សខា បស

ពបអប ដែលចមនាេ ោះសញញា 8 ទពមានចនន 18 SPACE */

printf(“******************** ”); /* េសបាត បសពបអប ដែលមាន

សញញា 8 ចនន 20 */

getch(); ,8 ចាច ច េមយ ណាេយសន 8/

}

មពកាយមពលែម ើ កា កេ μវធ ច លទធផលមលើមអពកន បងាា ញ បពបអបែ

ចខាមពកាេ ៖ ច ស មស កេ μវធ print េកមលើ screen output ែច ប ៖

# include <stdio.h >

A B C D…X Y

# include <conio.h >

main ( )

{ char ch;

for ( ch = ‘A’; ch <= ‘Z’; ch ++ ) printf (“%c”,ch);

printf (“ ”);

for (ch = ‘a’; ch <= ‘z’; ch ++) printf (“%c”, ch);

Printf (“”);

for (ch = ‘Z’; ch >= ‘A’; ch –) printf (“%c”, ch);

printf (“”);

for (ch = ‘z’; ch >= ‘a’; ch –) printf (“%c”, ch);

printf (“”);

getch ( ); return (0) ;

Page 63: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

}

a b c d…x y

z

ស មស កេμវធ

Ex4: Convert Character : Read

ជាអកស តច ។ព Keyboard នវ សវត character ច Convert មៅជា អកស ព េព, ម ើយ print

េកមលើ screen output :

# include <stdio.h >

# include <conio.h >

# include <ctype.h >

# define EOL ‘’

main ( )

{

char ch [80];

int sum , count ;

for (count = 0 ; (ch [count ] = getchar ( ) ) != EOL ; ++count )

sum += count;

for ( count = 0 ; count <= sum ; ++count)

putchar (toupper (ch [count] ));

geth ( );

return 0;

}

ផា កនវ Note : library < ctype.h> statement

ពអកស តចមៅអកស ធ (‘a’. ‘A’)

មាននាទសរាប toupper();Convert

ស មស កេμវធ Read ព Keyboard នវ ន ចនន េ នាផលបក ន

េធយេភាេននចននខាមលើ

Page 64: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

# include <stdio.h>

# include <conio.h >

main ( )

{int n , count;

float x , average, sum = 0 ; clrscr ();

printf (“ Enter n =” ); scanf (“ %d”, &n ) ;

for ( count = 1 ; count <= n ; ++ count )

{

printf (“ x [%d] =”, count ); scanf (“%f”, &x );

sum + =x;

}

average = sum /n ;

printf (“ Average = %f”, average);

getch ( );

return 0; }

វល

មនោះេជាពបមេទេយមផសមទៀត បស វ ល “មតើម ត អវចាបាចពតវ មាន វល

េយមនោះមទៀត មបើមយើបានមាន វល For Loop ចមៅ ម ើយមនាោះ ?”។

តាេកា ពតវាមានភាពខ សដបេកគាា បនា ច វា វ ល

វលទព ដែលបានសកា ចេកមនោះមៅដផាកខាមពកាេ ៖ដែលភាព ខ សដបេក

គាា មនាោះនពតវបានបកសសាយមយើបានែម ើយថា មពល ចាបមផា េែប វ ល

while ពតវមធវ កា ពន តយលកេខ ឌ េ នមពល សកេ μភាពកា ងា ពតវមកើតម ើ

ពបសនមបើលកេខ ឌ ពតមនាោះ មទើប កា ងា ពតវបាន អន វតាដតផា យមៅវញកា ងា ន

ព ពតវបាន អន វតា ម ើយ។ ច ពនតយមេើលកណាតកែកេ μវធ ខាមពកាេមនោះ ៖

int number = 4;

Page 65: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

while(number < 4)

{

printf(“= %d”, number);

++number;

}

កណាតកេ μវធមនោះមយើម ើញថាេ ានអវ ព តវបាន បងាា ញមលើមអពកមទ

ពមពរោះកមនាេ លកេខ ឌ

number < ៤ បានេនពតតាដតពមពលចាបមផា េែប ែមចាោះប ា Statement

ដែលថតកា តខេន while មៅមពលមនោះព ពតវបាន អន វតាេា ណាម ើយ។

ក ែចខាមលើមនោះ ពបសនមបើមយើមពបើ វល មែៀ- មល វញ មនាោះោាតចបផ

តកកា ងា ពតវបានអន វតាច ន នេយែដែ ។ ច ពនតយមេើលកា ដកដពប បសក

ណាតកេ μវធ ខាមលើ ៖

int number = 4;

do

{

printf(“= %d”, number);

++number;

}while(number < 4);

មពលមនោះមយើម ើញថាមលើមអពកបានបងាា ញបនាា ត “Number = 4” ដែលមនោះ

បានបញញា កមោយម ើញថា វ ល do-while ពន តយ កមនាេលកេខ ឌ ន េបម ព៤

មពកាយមពលដែល សកេμភាព កា ងា ពតវបានមកើតម ើ ច។ ទ ទមៅ បស វល

do-while េ ៖

do

{

Page 66: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

បណាា កា ងា ដែលពតវអន វតា (Statement)

}while(កមនាេលកេខ ឌ ?)

ជាែប េ នមពលពនតយកមនាេលកេខ ឌ វល do-while បាន អន វតាកា ងា (Statement ឬ Block

សន Statement) ចម ើយមទើបពនតយ មេើលកមនាេ លកេខ ឌ ជា

eRkay

ពបសនមបើកមនាេលកេខ ឌ មានតនលពត 9ធជាសនយ ប មនាោះ កា ងា ដែលពតវ អន វតា នពតវបានមធវើម ើវញេាមទៀត

ដតមបើេនពតមទមនាោះក ពយទ នចាកមចញព វល ដតេា។

ចណា ៖ កា ចាកមចញព វល do-whileមានតនលេន ពត 9តចជាឬមស μ សនយ ប

ដតបា មណាណ ោះ។េមៅមពលណា ដែលកមនាេលកេខ ឌ

េនសតាខាមពកាេមនោះែម ើ កា បស វល do-while :

នបងាា ញមោយអាកម ើញកានដតចាសដថេមទៀតអព

មែើេបជាឧទ សរាប វល do-while មយើសេដ នាកេ

μវធខាមពកាេមនោះស មស កេμវ

ធ Ex1: Read

េ នាផលបកននចននមនាោះ

# include <stdio.h>

# include <conio.h >

main ( )

{ clrscr ( ) ;

int a, s = 0 ;

Page 67: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

do

ព Keyboard

នវចននេត តែល បមលខ ០ មទើបឈប .

{ printf (“Enter a = ”); scanf (“%d”, &a );

s = s + a;

} while (a != 0);

printf (“ the sum = %d , s);

getch ( ); return 0;

}

អន វតាន Statement do { … } តែល ( while ) Expression Boolean ( a == 0 )

មានតនល

True (1) េ (a = 0 ) .

ស មស កេμវធ Read ព Keyboard នវបណាា character, តែល ប character ‘*’

មទើបឈប។ ស មស បណាា characters មនាោះេកមលើ screen output :

# include <stdio.h>

# include <conio.h >

main ( )

{char c ;

clrscr ( );

do

{

c = getchar ( ); printf (“ %c”,c);

Page 68: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

}

while ( c != ‘*’ ) ; /*do while (( c =getchar ( ) )! =’*’); */

getch ( );

return (0);

}

មបើបានម ៀន Pascal មនាោះ Statement do … while (… ) សេេលន Statement

repeat…until .

III. វល While កមានេ ខងា ែច for ដែ េវាពតវបានមេមពបើសរាប បវ លប ា Statement ណាេយមៅកា កេ μវធ មោយមធវើកា ម ើ វញតាេទ ែដែលៗ

មដឋយោសសយមៅតាេ តនល TRUE បស កមនាេ

លកេខ ឌ កា សញញា វពកចក បស while ដែលមានទ ែច ខាមពកាេ ៖

while (កមនាេលកេខ ឌ ពត ?)

អន វតាបណាា statements; /* តខេន while */

រកយេនេោះ while េមានកមនាេលកេខ ឌ េយ នតខេន while. តខេន while Statement

មទល ឬោចជាប ា Statements (Block statement).

ែម ើ កា បស whileឋ

while (អាកឃលេ នមទ? )

ញា បាយ

ផកទក

ោចជា

មយើម ើញថា ជាែប while មធវើកា ក តតនល បស កមនាេលកេខ ឌ ជាេ ន

សនពបសនមបើកមនាេ លកេខ ឌ ពត មនាោះ while នអន ញញា តមោយអន វតាបណាា

Statement មៅកា តខេនវា

Page 69: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

9ដែលក ខាមលើមនោះអន វតាកា ងា “ញា បាយ” ប

ដត មបើ េនពតមទ មនាោះវានមោយក ពយទ ចាកមចញពតខេន បសវាមៅ

អន វតាកា ងា ដែលមៅ មពកាយបនាា បពតខ ន បសវា ដែលក ខាមលើមនោះ

េបនាមៅអន វតាកា ងា “ផកទក” ប។ ពបសនមបើមពលចាបមផា េែប

កមនាេលកេខ ឌ មានតនលេនពតមទមនាោះ whileក ពយទ ល មៅ អន វតា កា ងា ខាមពកាយបនាា បតខេន បសវាដតេា ដែលក

ខាមលើនមោយមនោះេពតវ លមៅផកទក ដតេា ពបសនមបើអាកបាន មឆេើយថា

“េនឃលេ នមទ” សរាបស ែបមនាោះ ប។ែមចាោះ រកយ េនេោះ while

មធវើកា តាេបណាា ហានែចម ៀបរាបខាមពកាេ ៖

១។ កនតតនល បសកមនាេលកេខ ឌ 9ដែលស មស កា សញញា វ ពកចក ប

2. ោសសយមៅមលើតនលពត ឬេនពត បស កមនាេលកេខ ឌ ក ពយទ នមព ើស ម ើសយកផេវមែើ េយកា ចមណាេផេវមែើ ២ ខាមពកាេ

៖ពបសនមបើកមនាេលកេខ ឌ មានតនលតចជាឬមស μ សនយ ា។ េនពត ប

មនាោះមាាស ននចាកមចញពតខ ន បស while ម ើយមៅអន វតាបនាជាេយ

សតាតមេមនតដែលសាតមៅខាមពកាយ បនាា ប តខេន បស while មនាោះ។

b. ពបសនមបើកមនាេលកេខ ឌ មានតនលធជាសនយ (Bit ) មនាោះមាាស ន

នអន វតាបណាា Statements ដែលថតមៅកា តខេន បស

while តែល មពល បសញញា “”” មពកាយបែស បសតខ ន while

មទើបមាាស នពតលបមៅ ហាន ា វញ 9ក ដែលកា តខេន while មានដតេយ

Statement នេ μ ានសញញា ““” ន “”” មនាោះ ក ពយទ ន អន វតា Statement

មនាោះចបម ើយពតលបមៅ ហាន ា ដតេា ប។

សនាដឋា ន

តខេន បស while ោចពតវបានអន វតាដតេយែ ឬមពចើនែ

ឬកព ពតវបានអន វតាទលដតមសាោះពបសនមបើតនល បសកមនាេលកេខ ឌ េ

នពតតាពមពលចាបមផា េែបភាេ េ។

Page 70: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

កនតសគាល

ជាេយ while កែចជា មថៀ ដែ េកា សញញា វ ពកចកមពកាយ while

េនពតេដតោចស មស បានដតេយកមនាេបា មណាណ ោះមទ ដថេទោច

ស មស បានមពចើនកមនាេ មទៀតផមសេ ននកមនាេ ដែលកមនាេ

នេយៗពតវបានដចកដឋចពគាា ម ើយមពល មនាោះតនលពតឬេនពត បស

កមនាេលកេខ ឌ while ពតវបានក តមៅមលើតនល បស

កមនាេខាមពកាយមេបែសននមសេ កមនាេកា សញញា វពកចក ខាមពកាយ

រកយេនេោះwhile មនាោះ។

2. កា តខេន បស while អន ញញា តមោយមយើោចមពបើ វល មថៀ ឬ while

មផសមទៀតបាន។

3. មពល b break កា ខេន បស while មនាោះមាាស ននចាកមចញព while

ដែលមានផា ករកយេនេោះ break មនាោះភាេ េ។

4. កា ខេន បស while ោចមោយមយើមពបើ goto មែើេបមលាតមចញ ព វល while

(ខេន បស while) មៅកាន Label ណាេយដែលសាត មៅ ខាមពៅ while បាន។

ម ើយមយើកោចមពបើរកយេនេោះ

return កា ខេន បស while មែើេបចាកមចញពអន េេន ណាេយ កបានដែ ។

5. កា ខេន បស while

ោចមពបើ continue មែើេបពតលបមៅអន វតាកា ងា ថ μ ។មាននយថាមពល ប continue

មនោះមាាស នន លបណាា Statements ដែលមៅសលកា ខេន បស while ម ើយពតលប

មៅពនតយកមនាេលកេខ ឌ ម ើវញភាេ េ មែើេបអន វតា ថ μ ។

កេμវធ Prog4_15.C ខាមពកាេ ជាឧទ បងាា ញ អពកា មពបើ វល while

មែើេប េ នាផលបក count ចននេតវ ាមានែប ³ 1 + 2 + 3 + . . . + count.

#include <stdio.h>

#include <conio.h>

void main()

Page 71: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

ផលបកចននេតវ ាមាន */

/* មលខលដឋបចននេត */

/* អមថ រាបចននេតសរាបបក */

/* ល បមអពក */

/* បញច លចននមលខដែលពតវបក */

printf(“Enter the number of integers you want to sum : “);

scanf(“%d”, &count); បកចននេតវ ាមានចាបព ១ តែល count */

while(i<=count)

{

}

/*

sum = sum + i;

++i;

បងាា ញផលបក បស ចននេតធេ μជាតែបមលើមអពក count */

printf(“of the first %d numbers is %ld”, count, sum);

ចាកា បញច លតនល 1 Character ព Keyboard */

}

Page 72: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

មេម ៀនទ៦: អន េេន ន មាា ពក Function & Macro

I. សញញា ទមៅនន SubProgram

កា កា ស មស កេμវធ មយើដត បពបទោះដផាកេយ ចនន បស

កេμវធពតវបានស មស េាម ើយេាមទៀតជាមពចើនមលើក មពចើន

សា មៅតាេកដនេខ សៗគាា ។ មែើេបម ៀសវាកា ស មស មពចើន ែនវ កណាតកេμវធែដែលមនោះ មយើោចយកកណាតកេμវធទ មនោះមៅបមកើត

ជាកេμវធ (Subprogram) ម ើយយកមឈμ ា ោះ

បសកេμវធ មនាោះមៅ នសមៅតាេ កដនេដែលពតវមពបើកណាត កេμវធមនោះ។

មាននយថា មពលណាចាបាចពតវមពបើកណាតកេμវធ

េ នមនោះមយើពគានដតមៅមឈμ ា ោះ បសកេμវធ សេេលនវាេក

មពបើជាកា មសសច មដឋយ េនចាបាចស មស កណាតកេμវធទមនាោះ

ម ើវញជាមពចើនមលើកមពចើនសាម ើយ។ ឧទ ថាមពលមធវើ លហាត េ នា cos

ឬ sin មនាោះមយើពតវេ នាជាមពចើនមលើកមពចើន សានវ sin បសេ ណាេយ

ែមចាោះមយើពតវបមកើតកេμវធ េយ មាន មឈμ ា ោះថា sin នបាារាា ដេពត

សេេល បសវាេ x (ដែល x ទមនោះេ ជាេ ពតវេ នា)។

បណាា កេμវធ ទអសមនោះពតវ បានមេបមកើត ម ើ ចជា មសសច

នស មស ពបកាសវាមៅកា library file បស ភាសា ស មស កេμវធេយចននែចជា

C, Pascal, Basic។ល។ ែចមនោះមយើោចមៅកេμវធ

ទមនោះបានថាជាអន េេនដែល មាន សសាប ឬ Standard Subprogram ។ កា Turbo C

បណាា Subprogram ទមនោះពតវបានដបដចកមៅជាពកេ ម ើយទ កមៅកា file

មផសៗពគាា ែចជា stdio.h , conio.h , math.h ជាមែើេ។

ម ត ផលេយមទៀតដែលពតវបមកើតកេμវធ េ មៅមពលស មស កេμវធ ធេយមនាោះ

ភាពសμ ពេសμ ាញជាមពចើនបានមកើតម ើ

ម ើយមពលមនាោះកេμវធោចមានពបដវដវអនាេ យ ដែលបណាា ល

មោយមានកា ពបាកោាខាេ កា កា ដសវ កក ស នដកស ល។

Page 73: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

ែមចាោះមយើោចផទា ចបញញា សμ េសμ ាញទមនាោះមៅជាចដ កតចៗ

េបមកើតមៅជាកេμវធ ឬជា ប ា (Block) ឬជាេាឌ ល មែើេបងាយ

សសលកា កា ពតតពនតយ នដសវ កក ស តាេបដ កនេយៗ បសកេμវធ

បនាា បេកមទើបពបេលកេμវធ ទមនាោះ េកផគ គាា មែើេប បមកើតជាកេμវធធខាមលើវញ។ កេμវធ ពតវ បាន មេមពបើពបាសោាទលទលាយ

ែមចាោះចម ោះែអពកា មពបើ ន បមកើតកេμវធ េជាភាពចាបាចបផ តសរាបអាក

កា កា ស មស កេμវធ។ កា បណាា ភាសា ស មស កេμវធេយចននែចជា Basic ឬ

Pascal ជាមែើេ មានកា ដបដចកកេμវធ ជាពពបមេទេ Function ន Procedure

ដតកា C/C++ វញេមានដត Function េយេត។ II. អន េេន (Function )

កា ភាសាស មស កេμវធក ពយទ អន េេនេជាទ ដបបបទននកា ងា ណាេយ

ដែលពតវបានក ត មឈμ ា ោះ នពតវបាន កាទ កកា Memory

មែើេបមឆេើយតបមោយអាក មពបនវ នត លដែលមានពបមេទណាេយ ។

ឧទ ែចជា អន េេន NPV បស MS-Exel វាន ផាលមោយអាកនវតនលបចច បបនា (Present Value) េបា នμ ាន? មពកាយមពលដែលអកា បាន បញច ល

ទនានយមោយវាេយចននែចជា អ មពល (Period)

អពតាកា ពបាក (Rate) ន តនលអនាេត (Future

Value)។អន េេនពតវបានមេមពបជាេយបណាា កមនាេមផសៗបាន ដតព ោច

ចាតទ កវាថាជា Statement បានមទ។ អន េេនយក ទនានយ ចលតាេ យៈបាារាា ដេពត

នមបាោះតនលមចញេកខាមពៅវញ តាេ យៈមឈμ ា ោះ បសវា។ កា C

មយើោចមពបើអន េេន តាេ ដបបដផនមផសៗគាា ៖

• នត ល បសអន េេន មយើោចនព យកវាមពបើកបាន ជាដក សា ែចជាអនេ េន

printf ន scanfដែលអន េេនទមនាោះ ស ទធដតផាល

តនលេកវញមានពបមេទជាចននេត។

• អន េេនខេោះោចេμ ានតនលណាេយពតវបានភាា បមោយ មឈμ ា ោះ បសវា

(អន េេន ពបមេទ void)។

• មឈμ ា ោះអន េេន ោចផាលតនលជាោសយដឋា ន Memory ដែលវាបានកព

ដតចែ លមៅ ក(អន េេនពបមេទ Array ឬ Pointer)។

Page 74: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

• អន េេន ោចផទេ សបា ឬមធវើមោយដពបពបលតនលមែើេ បស ោេ យេា។

មទោះបជាមៅថាអន េេនដេន បា ដនា C េនបានក ត លកេខ ឌ នន មបៀបមពបើពបាស

មទ។ មពៅពមនោះមទៀត C មៅផាល លទធភាព មោយមយើោច Compile

េាឌ លនេយៗដឋច មដឋយដ ក ពគាា បាន ដែលបញញា មនោះមានសា ៈសខានបផ ត

មៅមពលដែល ចមណាទ ធេយ ពតវបានបដបកមៅជាេាឌ លតចៗ នស មស មដឋយឯករាក យ។

ឧទ ៖ េ នាអន េេនេ តវទាខាមពកាេ ៖

y = f(x) = f_ex(x) = x2 + bx + c

ដែលកា មនាោះ x ជាចននពត ចដ កឯ b ន c ជាចននេត នមាន មពបើ f_ex

ជាមឈμ ា ោះ បសអន េេន។

/*—– កេμវធ Prog5_1.C —–*/

#include <stdio.h>

#include <conio.h>

void main( )

{

float f_ex(float , int , int); /*ពបកាសទ អន េេនេ នមពលមពបើវា */

float x = 1.5;

float y , z ;

int n = 3 , p = 5 , q = 10;

/*មៅអន េេន f_ex មែើេបេ នា ចម ើយភាា បលទធផលមោយអមថ y */

y = f_ex(x, n, p);

clrscr( );

Page 75: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

printf(“Value of y = %f \n”, y); /* បងាា ញតនល បស y មលើមអពក */

/*មៅអន េេន f_ex មែើេបេ នា ចម ើយភាា បលទធផលមោយអមថ z */

z = f_ex(x+0.5 , q , n – 1);

printf(“Value of z = %f \n”, z); /* បងាា ញតនល បស z មលើមអពក */

getch();

}

/* ពបកាសអន េេន – Declaring Function */

float f_ex(float x , int b , int c )

{

float value ; /* ពបកាសអមថ ែបន */

2

/* េ នាអន េេន x +bx+c ចយកលទធផលភាា បមោយអមថ value */value = x*x +

b*x + c;

/*មបាោះតនលដែលកព ដតផា កកា អមថ value មោយមៅមឈμ ា ោះអន េេន */

return value ;

}

លទធផលមលើមអពកេ ៖

Value of y = 11.750000

Value of z = 26.000000

វភាេមលើកេμវធ Prog5_1.C

Page 76: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

អន េេន f_ex មានបបាារាា ដេពតសរាបយកទនានយចល មៅកា តអន េេន។

េ នមពលមៅអន េេនមពបើ ជាែបពតវស មស ពបកាស ទ អន េេន (Prototype) មៅ

ខាមែើេននកេμវធសន (ោចកា ត អន េេន main ឬកោចពបកាសពេ ខ main កបាន

ដែ ) ដែលកា ពបកាស មនោះ េមាន មឈμ ា ោះ បសអន េេនជាេយពបមេទទនានយ

នបណាា

បាារាា ដេពត បសអន េេន (សរាបកេμវធ Prog5_1.C មនោះ កា ពបកាស ទ អន េេន

េមៅបនាា ត float

f_ex(float , int , int); /*ពបកាសទ អន េេនេ នមពលមពបើវា */ )។

ចដ កឯកា ងា បសអន េេនវញមយើេនទនែមៅម ើយមទ

មៅខាច ននកេμវធ

មទើបមានកា ពបកាសអនេ េនពត ពបាកែ។ មៅកា តខេន បសអ

ន េេន main មយើបានមៅ អន េេន f_ex ចននព ែជាេយ Argument មផសៗគាា ៖

* កា មៅមលើកទ 1 :

y = f_ex(x, n, p);

កា កា មៅេយមនោះ Argument មានបេ x, n, p ដែល Argument ទបមនោះ

ពតវចលតនលមោយមៅបាារាា ដេាពត បស អន េេន តាេលដឋបេ ៖

Argument x ចលតនលមោយមៅបាារាា ដេពត x បសអន េេន

Argument n ចលតនលមោយមៅបាារាា ដេពត b បសអន េេន

Argument p ចលតនលមោយមៅបាារាា ដេពត c បសអន េេន

* កា មៅមលើកទ 2 :

y = f_ex(x+0.5 , q , n-1);

មពលមនោះ Argument មានបេ x+0.5 , q , n-1 ដែល Argument ទបមនោះ

ពតវចលតនលមោយមៅបាារាា ដេាពត បសអន េេន តាេ លដឋបេ ៖

Argument x+0.5 ចលតនលមោយមៅបាារាា ដេពត x បសអន េេន

Page 77: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

Argument q ចលតនលមោយមៅបាារាា ដេពត b បសអន េេន

Argument n-1 ចលតនលមោយមៅបាារាា ដេពត c បសអន េេន

ស បេកលនាននកា មៅអន េេន f_ex េកមពបើកា អន េេន main ពតវបានបងាា ញ

បដនាេមដឋយ បខាមពកាេ ៖

ចណា ៖

ច បនាា តេμ ានសញញា ច ចមកបៀស (;) មទ (េែចគាា ជា េយកា ពបកាស main ដែ )

នបណាា បាារាា ដេពត បសអន េេនពតវដចកដឋចពគាា មដឋយសញញា មកបៀស (,) ។

កេμវធដែលអាកបានស មស តាពេ ន តេកែលមពលមនោះ

ស ទធដតមានអន េេនេយជានចចមនាោះេ main ដែលេμ ានបាារាា ដេពត

នកេμ ានសញញា ច ចមកបៀសមៅខាច បនាា តដែ ។

Page 78: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

កា តខេនអន េេន f_ex មយើម ើញថា អមថ ដែលមេបានពបកាស សរាប ផា ក

លទធផលអន េេន (អមថ value) ពតវបានមេមៅថាជា អមថ ែបន (Local Variable)

មពរោះអមថ មនោះោចមពបើបានដតមៅកា ខេន បសអន េេន f_ex បា មណាណ ោះ។ អមថ value

មនាោះពតវបានមេមពបើសរាបផា ក លទធផល េ នា បសកមនាេ x*x + b*x +c

ជាបមណាា ោះ ោសនា មែើេប ភាា ប លទធផលមនាោះមោយមៅមμ

ោះ បសអន េេនតាេ យៈរកយេនេោះ return។

តនល បសអន េេនមានអតានយែចខាមពកាេ ៖

មឈμ ា ោះអន េេន = តនល

ឬមាននយថា ៖

f_ex = តនល = value

III. អន េេនកា ភាសា C

+ parameter ន Argument ៖

បណាា parameter មពបើមៅមពល Declaration Function មៅថា parameter ។ បណាា

parameter ដែលផាលមោយ Function (កា main program) មៅមពលមយើមៅ

Function មៅថា Argument ។ parameter ពតោចជាកមនាេេយកបាន, ដត parameter

បភាពេនោចជាកមនាេបានមទ ។

+ return Statement :

– return : ោចផាលតនលននកមនាេេយមៅមោយមឈμ ា ោះ Function បាន ែមចាោះ

Function

ខាមលើោចស មស ជា ៖

/ * Declaration */

float f_Exam (float x, int b, int c)

{

Page 79: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

return ( x * x + b * x + c );

}

បាននយថាមយើេនចាបាច Declaration local Variable មទ ។

– return ោចស មស មពចើនែកា Function ។

Example :

double tt (double a, double b )

{ double s ;

s = a + b

if ( s> 0 ) return (s) ;

else return (-s);

}

– មបើពបមេទ បសកមនាេកា return ផា យពពបមេទ បសមឈμ ា ោះ Function មនាោះ

Turbo C ន បា ពបមេទសេេលមោយវញ ។

– មយើោចេនមពបើតនលលទាផល បស Function បាន ។ Example printf ( ), scanf ( )

– ក Function េμ ានតនលតបតវញ (តនលផាលមោយ មឈμ ា ោះ

Function) Function

េយដែលេμ ានតនល តបតវញមនាោះមយើមពបើ Keyword void មែើេប Declaration វា ។

Example :

void Function_Name (int n);

– Function ពបមេទ Void មនោះេμ ាន Statement return មទ ។

– ក Function េμ ាន parameter :

Page 80: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

មាន Function េយចននេμ ាន parameter មទ ។ ែមចាោះ Declaration Function

មនាោះមយើមពបើ

Keyword void :

Ex: float Exam_para (void );

មៅមានក មផសមទៀតែចខាមពកាេ ៖

void Exam_display (void )

បាននយថា េμ ានតនលតបត, នេμ ាន parameter មទ ។

ច ពនតយបណាា Example ខាមពកាេ ៖

# include <stdio.h>

# include <conio.h>

main ( )

{ /* prototype */

void display_square ( int, int );

void ONError (void ); /* have got a Error */

int Start1 = 56, End1 = 10;

display_square (start1, End1);

if (…) ONError ( ); /* Error */

}

void display_square (int d, int f )

{ int i;

Page 81: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

for ( i = d, i <= f; i ++ )

printf (“%d square root is %d \n”, i, i * i );

}

void ONError (void ) /* Error */

{

printf (“*** Error *** \n”);

}

ក Function េμ ាន Declaration Value : មនាោះ Function, នមានតនល int ។

Ex: Declaration Function ដែលេμ ានពបមេទ Function Name (float x );

IV. Declaration នបណាា ឧទ ៖

+ លដឋបកា កា declaration :

ពនតយឧទ ខាមពកាេ ៖

Example :

# include <stdio.h>

# include <conio.h>

/* Declaration Function before Function main */

float f_Exam (float x, int b, int c)

{ float value ; /* Declaration local variable */

value = x * x + b * x + c;

return (value );

}

main ( )

Page 82: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

{

/* float f_Exam (float, int, int ); េនបាចមាន prototype មទ */

float x = 1.5;

float y , z;

int n = 3 , p =5, q =10 ;

y = f_Exam ( y, n, p ) ;

printf (” Value of y = %f \n”,y); z = f_Exam (x + 0.5, q , n-1); printf (“Value of y = %f

\n”,z ); getch ( );

return (0)

}

+ Example េ នា n! = 1.2.3…. .(n-1).n

# include <stdio.h>

# include <conio.h>

long int factorial (int n)

{ int i;

long int FF = 1;

if (n>1 )

for (i = 2; i < =n; i ++) FF * = i;

return (FF);

}

main ( )

{ int n;

/* Read number n */

Page 83: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

printf (“\n n = ”); scanf (“%d”, &n ) ;

/* printf the result */

printf (“\n n! = %ld \n “, factorial (n) );

getch ( );

return (0) ;

}

+ Example : បា ពអកស ធេμតាមៅជាអកស ព េព,មដឋយមពបើពបមា វធលកេខ ឌ ។

# include <stdio.h>

# include <conio.h>

char converttocapital (char ch )

{ char c2;

c2 = ( ch> = ‘a’ && ch < = ‘z’) ? ( ‘A’- ‘a’ + ch ): ch;

return (c2);

}

main ( )

{ char smallchar , capital;

clrscr ( );

printf (“Enter a character :”); scanf (“%c”, &smallchar );

capital = converttocapital (smallchar ); printf ( “\n the capital is %c \n \n”, capital); getch

( );

return (0 );

}

Page 84: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

Example : convert capitaltosmallchar : ( មដឋយមពបើ if statement )

# include <stdio.h>

# include <conio.h>

char converttosmallchar (char ch )

{

if (ch > = ‘a’&& ch < = ‘z’)

return ( ‘A’ – ‘a’ + ch );

else

return (ch);

}

Example : អន េេនមសស េ ៖ ក តចននេយ មតើជាចននមសស ឬ េ

even (n)

int n;

{

int result;

if ( (n %2 ) = = 0)

result = 1;

else

result = 0;

return ( result );

}

ឬេយក តចននេយជាចននេ ឬ ចននមសស, មយើអន វតាន ពបមា វធ AND

តាេ bit វញ ៖

Page 85: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

if ( (n&0 x 01 ) ==0 )

result = 0;

else

result = 1;

V. បញច ល parameter មោយ sub-program :

កា បញច ល parameter មោយ Function កា Turbo C ពតវបាន អន វតាន

តាេ មបៀបដតេយេត ៖

+ បញច ល Value parameter, មាននយថា តនល បស parameter ពត,

េ ននមពកាយមពលមៅ Function មនាោះេនដពបពបលតនលមទ ។

ពនតយឧទ ខាមពកាេ ៖

# include <stdio.h>

# include <conio.h>

main ( )

{ void swap ( int a, int b); /* prototype */

int n = 10, p = 20;

printf ( “\n Before call Function : %d %d \n”, n, p);

swap ( n, p);

printf ( “\ n After call Function: %d %d \n”, n, p);

getch ( );

return (0);

}

void swap (int a, int b);

{

Page 86: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

int t;

printf ( “Befor swap : %d %d \n”, n, b);

t = a; a = b; b = t;

printf (“After swap : %d %d \n”, a, b );

}

Before call Function : 10 20

Before swap : 10 20

After swap : 20 10

After call Function : 10 20 េនដពបពបលតនល មបើមធៀបនតនលេ នមពល Call

Function

+ វភាេ ៖ Function swap ទទលតនលព ព parameter ពត (n,p) ដែលសេេល

ន parameter បភាពព មទៀតេ (a, b) ។ វានអន វតានកា បាតនលព parameter (a, b)

ខាមលើ ។ ដតបនាា ប េកមយើម ើញថា មៅមពលពត បមៅ main program វញមនាោះ

តនល បស parameter ពតទព មៅែដែល មដឋយេនដពបពបល តនលមទ (n,p ) ។

– ែមចាោះមៅមពល call sub program, តនល n ន p នពតវបាន បញច ន មៅមោយ

parameter

បភាព a, b ជាបមណាា ោះោសនាសន, ម ើយ Function swap នបា តនល a ន b

ជាេយគាា មដឋយខច variable យកា កា បា តនលមនោះ ។ បនាា បេកតនល បស n, p

េនពតវបានដពបពបលមទ, មនោះជាលកេ ៈេនត វមៅតាេត វកា បសមយើ មពរោះមយើ

ចបា តនល n ន p េនដេនចបា តនល parameter បភាព a, b មនាោះមទ ។

– មយើនម ើញថាកា បា តនលននព (ឬមពចើន ) parameter មដឋយមពបើ Function ោចពបពពតមៅបាន តាេកា បញា នជាតនល Address បស parameter

ពតមៅមោយ parameter បភាព

Page 87: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

(េនដេនបញច ល Value មទ)។

មនាោះេកា ក Function scanf ។ មបើច Read តនល x មយើពតវមពបើ Address បស x

មែើេបបញា នមៅមោយ Function scanf : scanf ( “%f”, &x ); េ ននមពកាយកា call

Function scanf, តនល Address បស Variable េμ ានដពបពបល, ដតមយើមពបើតនល

Address មនោះមែើេបដពបពបលតនលខាកា វា ។ មយើន នោយ ម ើ វញ

នវបណាា បញញា មនោះ មៅមពលមយើម ៀន pointer ។ ដត មែើេប មោយមយើមចោះមពបើ Function swap ែមចាោះមយើស មស Function មនោះមៅកា Chapter មនោះមទោះបមានមពបើ pointer កមដឋយ ៖

Example : ស មស កេμវធបា តនលព Variable n,p មដឋយមពបើកា បញា ន Value

Address

មៅមោយ Function :

# Include <stdio.h>

# Include <conio.h>

main ( )

{ void swap (int *a, int *b );

int n = 10; p = 20;

clrscr ( ) ;

printf (” \n Before Call Function : %d %d \n”, n, p);

swap ( &n, &p);

printf ( “\n After Call Function : %d %d \n”, n, p );

getch ( );

return (0);

}

void swap (int *a, int *b)

Page 88: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

{ int t.

printf ( “\n Before swap : %d %d”, *a, *b);

t = *a;

*a = *b;

*b = t;

printf (“\n After swap : %d %d”, *a, *b);

}

Before Call Function 10 20

Before swap 10 20

After swap 20 10

After Call Function 20 10

មពលមនោះមទើបពតវបានបា តនលនន Variable n, p ពតពបាកែដេន ។

Note:*a ជាសញញា ននតនលដែល កាទ កកា Memory ន មាន Address a ។ &a

ជាសញញា នន Address memory ផា កតនល a .

IV. ដែនកនត បសអមថ ៖អមថ មពៅ (Global Variable)

េជាអមថ ដែលោចមោយមយើមពបើពបាសបានពេបទកដនេទអសកា កេμវធ។

ច ពនតយមេើលកេμវធ Prog5_7.C ខាមពកាេ ៖

/* កេμវធ Prog5_7.C */

#include <stdio.h>

#include <conio.h>

int n ; /*ពបកាសអមថ មពៅ n*/

void main()

{

Page 89: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

void myfunction(void); /* ពបកាសទ ទមៅ បស myfunction */

n = 1; /* ភាា បតនលមោយ n = 1 */

clrscr();

/* មពបើ វល while មែើេបមៅ myfunction ចនន 4 ែ */

while(n<5) myfunction();

/* បងាា ញតនល n មពកាយមពលមៅ myfunction */ printf(“\nAfter called myfunction n =

%d”, n); getch();

}

/* ពបកាស បរាពត បសអន េេន */

void myfunction(void)

{

/* បងាា ញតនល n មលើមអពក */

printf(“\n The value of global variable n = %d”,n);

n++; /* បមកើន n ម ើដថេេយតនលមទៀត */

}

លទធផលមលើមអពកេ ៖

The value of global variable n = 1

The value of global variable n = 2

The value of global variable n = 3

The value of global variable n = 4

After called myfunction n = 5

Page 90: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

កា កេμវធ Prog5_7.C ខាមលើមនោះមានអមថ n ជាអមថ មពៅ (Global Variable)

មពរោះវាពតវបានពបកាសមៅ ខាមពៅ អន េេន ទអស ដែល េទអន េេន main

ផដែ (េេμ ាន សាតមៅ កា អន េេនណាេយម ើយ)។ កា មនាោះ

អាកកបានម ើញដែ ថា អាកមាន លទធភាពោចមពបើអមថ n កា អន េេន myfunction

មដឋយេμ ាន ក សអវ ទអស ដែលមនោះេជាច ចលែផ នេនលែផ។ ច ច

លែពតថា មយើោចបា តនល បសអមថ មៅមពកាយមពលមៅ អន េេន េក មពបើ នេនលែពតថា មដឋយសា ដតភាពោច បា តនល បាន មៅពេបទកដនេ ដបបមនោះម ើយ

ដែលោចមធវើមោយមានបញញា មៅ មពលមពកាយ ជាពមសសកា កេμវធែធេយ

មបើសនជាអាកមពបើ n មៅ កា អន េេនណាេយ មនាោះ តនល បស n

នមានកា ដពបពបល ដែល មនោះជាម ត ោចនមៅែលកា មាន ក សកា កេμវធ

មដឋយ ព បានែថា មតើតនល n មពលមនោះពតវបានដពបពបលមដឋយសា អន េេន

េយណា។ ដែនកនត បសអមថ មពៅ ដែនក ត បសអមថ បាននយថា

ជាតបនដែលអមថ មនាោះោចមានសកេμភាពមៅ ែល បាន។

ដែនក ត បសអមថ មពៅេ មពញកេμវធ បសអាក មដឋយេត

ចាបពកដនេដែលបានពបកាសអមថ មនាោះ តមៅែលខាច បញច បនន កេμវធ។

ឧទ ៖

void main()

{

———-

———-

}

int n ; /* ពបកាសអមថ មពៅ */

float x ;

function1(—)

{

——–

Page 91: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

}

function2(—)

{

——–

}

សរាបមពលមនោះមយើម ើញថា អមថ n ន x ោចមពបើមៅកា function1 ន function2

បានដតព ោចមពបើមៅកា main បាន ម ើយ មពរោះវាពតវបានពបកាសមៅខា

មពកាយអន េេន main។

មយើោចពបកាសអមថ មពៅមៅពតកដនេណាេយននកេμវធកបាន

ដតមែើេបងាយសសលែលកា ពនតយមេើល នដសវ ក អាកស មស កេμវធ

េ ដតពបកាសអមថ មពៅមៅខា មែើេននកេμវធ (ដផាកខាមលើ ននកេμវធ

ដែលសាតមៅមពកាេកា ពបកាស header file)។

* អមថ ែបន (Local Variable) ជាអមថ ដែលមាន សកេμភាព (ឬោចមពបើបាន)

ដតមៅកា អន េេនដែលបានពបកាស

វាដតបា មណាណ ោះមពកាយមពលអន េេនពតវបានបញច ប មនាោះបណាា អមថ ែបនដែលបានពបកាស កា អន េនមនាោះកពតវបាន មដឋោះមចញព Memory

វញដែ ។ច ពនតយមេើលកេμវធ Prog5_8.C ខាមពកាេមនោះ

មានបងាា ញអពកា មពបើពបាសអមថ ែបន (Local Variable)។

/*—– កេμវធ Prog5_8.C—–*/

#include <stdio.h>

#include <conio.h>

/* ពបកាសអមថ មពៅ */

int x;

float y = 5.5;

Page 92: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

/* ពបកាសទ ទមៅ បសអន េេន */

void F1();

void F2();

void main()

{

clrscr();

x = 10;

printf(“x = %d y = %f”, x, y); F1();

F2();

printf(“\n\nAfter called functions x = %d”, x);

getch();

}

void F1()

{

printf(“\nCall in F1, x gloable = %d”, x);

printf(“\nCall in F1, y gloable = %f”, y);

}

void F2()

{ int a = 50;

printf(“\nCall in F2, a + x = %d + %d = %d”, a, x, a+x);

x = x + a; /* ផទេ សបា តនល បសអមថ មពៅ x */

}

លទធផលមលើមអពក ៖

Page 93: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

x = 10 y = 5.500000

Call in F1, x gloable = 10

Call in F1, y gloable = 5.500000

Call in F2, a + x = 50 + 10 = 60

After called functions x = 60

កា កេμវធខាមលើមយើម ើញថា អមថ មពៅ x ន y ោចយកមៅ មពបើបានពេបទ

កដនេ (បានពេបកា អនេេន) មដឋយដ កអមថ ែបន a

ដែលបានពបកាសកា អន េេន F2 វញ ព ពតវបានអន ញញា តមោយ យក

មៅមពបើមៅកា អន េេនមផសែចជា F1 ឬក main បានមទ េោចមពបើ បានដតកា អន េេនដែលបានពបកាសវាដតបា មណាណ ោះ កា ក មឈμ ា ោះ ែចគាា មតើអមថ ែបនោចពច ជាេយអមថ មពៅដែ ឬមទ?

មែើេបបកសសាយមោយស មនោះ ច ពនតយមេើលកេμវធ Prog5_9.C ខាមពកាេ

ដែលកា មនាោះមានកា ពបកាសអមថ m ន n ជាអមថ មពៅផ នជាអមថ ែបន បស

អនេេនមផសៗមទៀតផ។

/*—— កេμវធ Prog5_9.C ——*/

#include”stdio.h”

#include”conio.h”

/* ពបកាសអមថ មពៅ n ន m */

int n = 20;

int m = 50;

void main()

{

/* ពបកាសទ ទមៅ បសអន េេន */

Page 94: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

void fun1();

void fun2();

void fun3();

int m = 10; /* ពបកាសអមថ ែបន m */

clrscr();

printf(“\nm in main = %d”, m);

fun1(); fun2(); fun3(); getch();

}

void fun1()

{

int m = 11;

printf(“\nm in fun1 = %d”,m);

}

void fun2()

{ int n = 30;

printf(“\nn in fun2= %d”,n);

}

void fun3()

{

printf(“\nm globle = %d”,m);

printf(“\nn globle = %d”,n);

}

Page 95: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

លទធផលមលើមអពកេ ៖ m in main = 10 m in fun1= 11

n in fun2 = 30 m globle = 50 n globle = 20 តាេ យៈ ឧទ ខាមលើមនោះ អមថ n

ន m ដែលបានពបកាសកា អន េេន fun1

េមានឥទធពលដតកា អន េេនមនាោះដតបា មណាណ ោះ បាននយថាមយើព ោច

យកអមថ ទមនាោះមៅមពបើមៅខាមពៅដែនកនត បសវាបានម ើយ។ កា អន េេន

fun1 ន fun2 មានពបកាស អមថ m ែមចាោះមពល មនោះ ពេបមឈμ ា ោះ m កា អន េេន

fun1 េជាអមថ ែបន បស fun1

េន ដេនជាអមថ ែបន បសអន េេន main មទ ម ើយកេនដេន ជាអមថ មពៅ ដែ ។

មែើេបជាកា ងាយយលមយើោចនោយថា មៅកា សសកេយមានេន សសបនាក

ដែលមានមឈμ ា ោះែចគាា េ

“ក” ដត សមៅផាោះមផសគាា ឧបមាថាផាោះ A, B ន C។ មែ ចោះ ា ពបសន

មបើកា ផាោះ A មានកា មៅមឈμ ា ោះ “ក” មនាោះពបាកែជាសមៅមៅ មលើមឈμ ា ោះ

“ក” ដែល ស មៅកា ផាោះ A មនាោះម ើយ េេនដេន សមៅ

មៅមលើអាកដែល សកា ផាោះមផសមនាោះមទ។ កា កេμវធ ែច

ខាមលើ មតើអមថ មពៅ m នអមថ ែបន m ោចពច គាា បានដែ ឬមទ?

កា មៅមឈμ ា ោះ m េកមពបើកា ក មនោះ ពបសនមបើមឈμ ា ោះ m

មនាោះបានពបកាសកា អន េេនមនាោះនាមោយវានមពបើអមថ ែបន m មនាោះដតេា

(បាននយថាមពល Compile វាន នសកដនេ m

កា អន េេនមនាោះមដឋយោសយដឋា ន Memory បសអមថ ែបន m)

ជាកដសា ែចកា អន េេន fun1 ន fun2។ ពបសនមបើមាន មពបើ មឈμ ា ោះអមថ m

មនាោះ ដតេនបានពបកាសកា អន េនមនាោះមទ មនាោះ Compiler នពនតយ កមេើលថា

មតើមឈμ ា ោះ m មនាោះមាន ពបកាស ជាអមថ មពៅដែ ឬមទ មបើមានវានមពបើអ ថ មពៅ m

មនាោះ (ជាក ដសា ែច កា អន េេន fun3 មានមពបើអមថ m ន n) ដតមបើេμ ានមទវាន

ពបាបក សភាេ េ (undefined symbol m in module…)។

* អមថ ែបនសាា ទក (Static local variable)

Page 96: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

មយើោចមោយក ពយទ ផគតផគ Memory កា ែបន Static មោយមៅ អមថ ែបន

មដឋយពគានដតមពបើរកយេនេោះ static ពខាេ ខកា ពបកាស អមថ ែបនមនាោះដតបា មណាណ ោះ។ មពលមនោះទនានយ បសអមថ ែបនមនាោះ

នពតវបាន កាទ កកា Memory តមទោះជា អន េេនបាន បញច ប កមដឋយ។

មែើេបដសវ យលអពរកយេនេោះ static មនោះមោយកានដត ចាសលាស

មនាោះច មេើលកា ច ចទ I.3 ននមេម ៀនទ 12 (ទព ទ 482)។កេμវធ Prog5_10.C

ខាមពកាេមនោះ បងាា ញអពែម ើ កា បសអមថ ែបន សាា ទក (Static Local

Variable)។

/*——— កេμវធ Prog5_10.C ———*/

#include <stdio.h>

#include <conio.h>

void main()

{ void fun(void); /* ពបកាសទ ទមៅ បសអន េេន fun */

int n ; /* អមថ រាប វល for */

/* មពបើ វល for មែើេបមៅអន េេន fun ចនន 5 ែ */

for(n = 1 ; n <=5 ; n++)

fun();

getch( );

}

void fun(void)

{ static int i; /* ពបកាសអមថ ែបនសាា ទក i */

i++;

printf(“\nCall in the %d time”, i);

Page 97: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

}

លទធផលមលើមអពកេ ៖

Call in the 1 time

Call in the 2 time Call in the 3 time Call in the 4 time Call in the 5 time

កា កេμវធ Prog5_10.C ខាមលើមនោះ អមថ i ពតវបានពបកាសជា អមថ ែបន

សាា ទកកា អន េេន fun ែមចាោះម ើយបានជាមយើម ើញថា កា មៅអន េេន fun

ចនន 5 ែមដឋយអន េេន main

បានមធវើ មោយ តនល បសអមថ ែបនសាា ទក i ដពបពបលជានចច (មដឋយសា Statement

i++; កា អន េេន fun)។ ជាធេμតាចមរោះ អមថ ែបនកា អន េេនណាេយ

មពកាយមពលដែលអន េេន មនាោះ ពតវបានអន វតាចប មនាោះបណាា អមថ ែបន បសអន េេនមនាោះកពតវ បាន មដឋោះមចញព Memory មដឋយសវយពបវតាដែ ឬបាននយ ថា បណាា ទនានយដែលកព ដត កាទ កមដឋយបណាា អមថ ែបនទមនាោះ

ពតវបានបាតប។ ចមរោះអមថ ែបនសាា ទកវញ មានលកេ ៈ ខ សព

អមថ ែបនបនាចពតថា Memory ដែលបានផគតផគ មោយអមថ ែបន សាា ទក

នព ពតវបាន មដឋោះមចញវញម ើយ មទោះបជា អន េេនដែល បានពបកាស

អមថ ែបនសាា ទកមនាោះបានអន វតាចបកមដឋយ ឬបាន

នយថាទនានយដែលពតវបាន កាទ កមដឋយអមថ ែបនសាា ទក នព ពតវ បាតបម ើយកា ខ ៈដែលអន េេនដែល បានពបកាស

អមថ ែបនសាា ទកមនាោះព ពតវបានអន វតាកមដឋយ ម ើយក ពយទ ន កាទ កទនានយមនាោះែរាបណាកេμវធទេលពតវបានបញច ប។

ែចដែលអាកបានម ើញ លទធផល បសកេμវធ Prog5_10.C ខាមលើមនោះ មៅមពលដែល

i ពតវបានពបកាសជា អមថ ែបនសាា ទក

នេនទនបានភាា បតនលក តណាេយមោយវាមនាោះ រកយេនេោះ static

នភាា បតនលសនយមោយមៅ i មដឋយសវយ ពបវតា ល ោះែល មពល ប i++;

មនាោះតនល បស i ពតវបានមកើនម ើេយ តនលដថេ មទៀត (មពលមនោះ i=1)។

មពកាយកា មៅអន េេន fun មដឋយ main មៅ ទេយ តនល បស i

ពតវបានដពបពបលមសμ 1 ល ោះែល មពល បកា មៅ ជាថμ មទៀតមៅ ទព

Page 98: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

តនល បស i កពតវបកដថេ េយ មទៀត ដែលមពលមនោះមធវើមោយ i = 2

(មពរោះមពកាយកា មៅ មលើក ទេយ i = 1) ម ើយជាបនាបនាា បមៅ ទ 3, 4 ន 5 តនល

បស i កពតវបានមកើនម ើតាេលដឋបេ 3, 4, 5 ដែ ។ តនល បស i មពលមនោះេ 5

ម ើយ តនលមនោះន កាទ កកា Memory ត ែល មពលដែលកេμវធបានបញច ប។

ចណា ៖ អមថ មពៅោច កាទ កទនានយបានមពញែម ើ កា នន កេμវធ

ឬបាននយថា Memoryដែលបានផគតផគ មោយ អមថ មពៅ

ព ពតវបាន មដឋោះវញម ើយែរាបណាកេμវធ មៅដតែម ើ កា ។

មយើោចមពបើអមថ មពៅបានមៅពេបទកដនេ ទអសននកេμវធ

មដឋយ ចាបពកដនេដែលបានពបកាសវាមៅ។

* អមថ ែបនអន ញញា តមោយមពបើបានដតមៅកា តអន េេនដែលបាន

ពបកាសវាដតបា មណាណ ោះ ម ើយទនានយដែលវាបាន កាទ ក នពតវបាត

បមៅមពលណាដែលអន េេន ដែលបានពបកាសអមថ ែបនមនាោះ បាន បញច ប។*

អមថ ែបនសាា ទក អន ញញា តមោយមយើមពបើវាបាន ដតកា តអន េេនដែលបាន

ពបកាសវាដតបា មណាណ ោះនទនានយ ដែលវា កព កាទ កព ពតវបានបាតបម ើយ

េទនានយ មនាោះន

ពតវបាន កាទ ក តែលមពលណាដែលកេμវធទេលពតវបាន បញច ប។

VII. លកេ ៈ Recursion នន Sub-program :

Function ោចមៅខេនឯេកមពបើបាន, លកេ ៈមនោះមៅថា Recursion ។

ឧទ ៖ េ នាតនល N!

n ! = 1. 2. 3….(n-1) . n

ឬតាេនយេនយ

n ! =

1 មពល n = 0

(n-1) !.n

Page 99: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

មពល

n >= 1

ែមចាោះ Function Factorial ោចក តែចខាមពកាេ ៖

int Factorial (int n )

{

if ( n ==0 ) return (1);

else return ( n* Factorial (n-1));

}

Example:

# include < stdio.h>

# include <conio.h>

long int Factorial (int n ); /* Function prototype */

main ()

{ int n ;

printf (“\n

n =”); scanf (“%d”, &n) ;

printf (“ n! = %ld \n”, Factorial (n));

getch();

return (0 );

}

long int Factorial (int n)

{ if ( n == 0) return (1);

else return ( n* Factorial ( n – 1));

Page 100: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

}

*Note : លកេ ៈ Recursion ពតវមពបើ memory ពបមេទ

មែើេបផា កលទាផល បមណាា ោះោសនា ។

LIFO ( Last In, First Out, stack )

Example : េ នា PGCD ននព ចនន x, y តាេនយេនយខាមពកាេ ៖

PGCD (x, y) = x មបើ y = 0

= PGCD (y, x/y)

ែមចាោះ PGCD ោចេ នាែចខាមពកាេ ៖

int PGCD (int x, int y)

{

មបើ y < > 0

if ( y == 0) return (x) ;

else return (PGCD ( y, x %y));

}

ដត program ខាមពកាេមនោះមានលែជាខា Algorithme, មទោះបជាវាមានជាកមដឋយ

int PGCD (int x, int y )

{ int number;

while ( y != 0)

/* ស ល */

{ number = x %y;

Page 101: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

x = y;

y = number;

}

return (x);

};

+ ែមចាោះមយើព េេបមពបើ Recursion មៅមពលដែលមយើោចមពបើ looping

មែើេបេ នាលហាតមនាោះ ។

VIII. មាាពក (Macro)

មពៅពអន េេន ភាសា C មៅមានអគក តទស (Directive Compiler) េយ

ពបមេទដែលោច យ មោយមយើ ចាកផ តព ភាពសμ េសμ ាញ

នោចសនសបាននវមពលមវលា មនាោះ េកា មពបើមាា ពក។

VIII.1. នយេនយ(Macro) មាា ពកោចជាស នន Statement នកមនាេ

ដែលពតវបានតណាមដឋយមឈμ ា ោះ ណាេយ។ កា លនាននកា Compile

មបើសនជា Compiler បាន បប ា ា មឈμ ា ោះ មាា ពក មនាោះវាន នសកដនេមឈμ ា ោះ មាា ពកមនាោះ មដឋយបណាា Statement មែើេ បសវា

ចមទើប អន វតានកា Compile ជាមពកាយ។

VIII.2. មបៀបមពបើ មាាពក (How to Use Macro)

ទ ទមៅននកា ពបកាសមាា ពក ៖

#define9មឈμ ា ោះមាា ពក9ប ា នន

Statementច ពនតយមេើលបណាា ឧទ ខាមពកាេមនោះ

ស ទធដតជាកេμវធបងាា ញអព មបៀប មពបើពបាសមាា ពក។

/*—— កេμវធ Prog5_11.C ——-*/

#include <conio.h>

Page 102: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

#include <stdio.h>

/* ពបកាសមាា ពក Msg*/

#define Msg printf(“\nWelcome to you”)

/* ពបកាសមាា ពក Ext*/

#define Ext “\nPress any key to exit the program !”

void main()

{

clrscr();

Msg;

printf(“\nHow to use macro in C”);

printf(Ext);

getch();

}

លទធផលមលើមអពកេ ៖

Welcome to you

How to use macro in C

Press any key to exit the program !

មៅមពល C Compiler ចាបមផាើេកា Compile មនាោះ បជាេយ កា ពបកាសមាា ពក ព េ

Msg តណាមោយឃលេ printf(“\nWelcome to you”) ន Ext តណាមោយ “\nPress any

key to exit the program !”។ មៅមពល Compile េកែលកា អន េេន main

កបាន បជាេយកា មៅមឈμ ា ោះមាា ពកេកមពបើេ Msg; ន printf(Ext);។ មៅមពល

ប Msg មនាោះ Compiler ព ទន Compile មទ វាពតវ នសស Statement មែើេេ

Page 103: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

printf(“\nWelcome to you”); សន (ដែលស Statement ដែលបាន នសចលមពល

មនោះេជា Statement ដែលមានេ ខងា បងាា ញឃលេ

“Welcome to you” មលើមអពក) ច មទប

Compile បនាមទៀត។ កា ខ ៈដែល Compile

េកែលកា មពបើមាា ពក Ext មពលមនាោះ Compiler កពតវអន វតា ែច

មពល បមឈμ ា ោះមាា ពកេ នមនោះដែ

េ នសមឈμ ា ោះ Ext មដឋយស Statement មែើេ ដែលមពលមនោះេ “\nPress any key

to exit the

program !”។ មពកាយ មពល នសចល ចមទើប Compiler មធវើកា Compile Statement

មនាោះ។

មែើេបកានដត ចាសដថេមទៀតអពកា នសមាា ពកមដឋយស Statement មែើេមនាោះ

ច ពនតយមេើល ប ខាមពកាេមនោះ ៖

ខាមពកាេមនោះជាកេμវធេយមទៀត ដែលបងាា ញអពកា មពបើ មាា ពកកា ទ េយពបហាកពបដ លមៅនកា មពបើអន េេន។

/*—– កេμវធ Prog5_12.C ——*/

#include <stdio.h>

#include <conio.h>

#define num 3

#define print(a) printf(“The result of calculation is %d”, a)

#define calculate(y) ((y)*(y)*(y))

void main()

{ int x , z ; /* ពបកាសអមថ x ន z */

Page 104: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

x = num; /* មពលមនោះមយើបាន x = 3 */

z = calculate(x) ; /* មៅមាា ពក calculate មយើបាន z = 27 */

clrscr();

print(z) ; /* មៅមាា ពក printf */

getch();

}

លទធផលមលើមអពកេ ៖

The result of calculation is 27

មៅកា កេμវធ Prog5_12.C ខាមលើមនោះមានកា ពបកាសមាា ពកចននបេ num, print(a)

calculate(y)។ កា អន េេន main កា មៅមាា ពកមលើកទេយេ x = num ដែលមពលមនាោះ Compiler

ពតវ នសកដនេ num មនាោះមដឋយតនល 3 ចម ើយកភាា ប មោយមៅ x មទើបនាមោយ x

= 3។ ជាេយមាា ពកព មទៀតេ ៖

1. print(a)

Ö មនាោះអគក តទស #define នបដលមៅជា

printf(“The result of calculation is %d”, a)

ឧបមាថាមេមៅមាា ពកមនោះមពបើែចខាមពកាេ ៖

print(3)

មពលមនាោះអគក តទស #define នបដលមៅជា ៖

printf(“The result of calculation is %d”, 3)

Page 105: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

2. calculate(y)

Ö មនាោះអគក តទស #define នបដលមៅជា

((y)*(y)*(y))

ឧបមាថាមេមៅមាា ពកមនោះមពបើែចខាមពកាេ ៖

calculate(3);

មពលមនាោះអគក តទស #define នបដលមៅជា ៖

((3)*(3)*(3))

មពលមនោះមយើម ើញថា ជាេយនកា មពបើមាា ពកដបបមនោះ េមាន លកេ ៈពបហាក

ពបដ លមៅនកា មពបើពបាសអន េេនដែ កបា ដនា ច ក ចាតទ កថា

មនោះេជាអន េេនមោយ មសាោះ។ អាកកោច ពបកាសមពបើ មាា ពកបានែចទ ខាមពកាេមនោះ ៖

ឧទ ថា ៖

#define product(m, n) ((m)*(n))

ឧបមាថាមពកាយមពលពបកាស ច កា កេμវធអាកបានមពបើ ៖

result = product(x, y+1)

មៅមពលមនាោះអគក តទសនមោយ Compiler បដលមៅជា ៖

result = ((x)*(y+1))

ª ច ពបយតាកា កា មពបើពបាសមាា ពក ៖

មៅខាច បផ ត បសអគក តទស #define េμ ានសញញា ច ចមកបៀស (;) មទ។

* អាកពតវស មស ធាត នេយៗមៅកា វ ពកចកមោយបាន

ចាសមបើសនជាេនស មស កា វពកចកមទ មនាោះោចនាមោយ មានកា នសខ ស។

Page 106: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

ឧបមាថាអាកពបកាស ៖

#define calculate(y) (y*y*y)

បនាា បេកអាកមានមៅមពបើ ៖

calculate(a+b)

មៅមពលមនាោះអគក តទសបានបញញា មោយ Compiler បដលមៅជា ៖

a+b*a+b*a+b

ដែលលទធផលមនោះខ សពកា ចបាន បសអាក ពមពរោះលទធផល ដែលអាក ចាេ ៖

(a+b)*(a+b)*(a+b)

ª មាា ពកេយចននដែលមេមពចើនមពបើ ៖

កា កា ស មស កេμវធ មានមាា ពកេយចននដែលដត ដត ប ពបទោះញកញាបជាមេ

មនាោះ ពតវបានបងាា ញមៅខាមពកាេមនោះ ៖

#define ESC 0x1B /* បមកើតមាា ពក ESC តណាមោយ Key ESC មែលមាន ASCII =

0x1B Hex

= 27 Dec*/

#define TRUE 1 /* បមកើតមាា ពក TRUE តណាមោយ ភាពពត បសតកក */

#define FALSE 0 /* បមកើតមាា ពក FALSE តណាមោយភាព េនពត បសតកក */

#define PI 3.14159 /* បមកើតមាា ពក PI តណាមោយតនល 3.13159 */

#define ON 1 /* បមកើតមាា ពក ON តណាមោយសភាពមបើក បស Transistor */

#define OFF 0 /* បមកើតមាា ពក OFF តណាមោយសភាពបទ បស Transistor */

VIII.3. មតើេមពបើ អន េេន ឬ មាាពក

លកេ ៈែចគាា វាមាា ពក នអន េេន ៖កា មពបើមឈμ ា ោះ បស អន េេនឬកមាា ពក មធវើមោយអាកស មស កេμវធោចមធវើកា ងា បាន

Page 107: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

ោ ាដែលេនពតេដតសនសបាននវមពលមវលលា ដថេទោច ម ៀស វាបានក ស

េយចនន នេាាមទៀតវាមធវើមោយ កេμវធ មាន លកេ ៈ ងាយមេើល

ងាយយល។ល។

* ភាពខ សគាា វាមាា ពក នអន េេនមពចន

+ កេμវធដែលស មស ជាេយមាា ពក មនាោះពតវចណាយ Memory សរាប Code

Segment មពចើនជាកេμវធដែល ស មស ជា េយ អន េេន

ពមពរោះមពល បមឈμ ា ោះមាា ពក មៅកដនេណា មនាោះ Compiler

ន នសកដនេ មនាោះមដឋយបណាា Statement មែើេ បស វា។

ែមចាោះមបើកា កេμវធ បមឈμ ា ោះមាា ពក n ែ មនាោះកពតវ នស Statement

មែើេ បសវាចនន n ែដែ ដែលមនោះជាេល ម ត នា មោយមពកាយមពល Compile

ច កែ បសកេμវធមានពបដវ ដវជាកេμវធដែលស មស ជាេយអន េេន

ពមពរោះ អន េេន ពតវបាន Compile ដតេាេត

បនាា បេកមពល បកា មៅអន េេនមនាោះ Compiler

ពគានដត នសកដនេ មៅមឈμ ា ោះ អន េេនមនាោះ មដឋយ ោសយដឋា នកា Code

Segment បសវាជាកា មសសច។

+ កេμវធដែលមពបើមាា ពកែម ើ កា មលឿនជាកេμវធដែលមពបើ អន េេនបនាចពមពរោះវាេμ ានចណាយមពលសរាបកា មៅ ែច កេμវធ

ដែលមពបើអន េេន (ច ដសវ យលអពែម ើ កា បស CPU Instruction CALL

មនាោះអាកនបានម ើញថា មៅមពលមៅ អន េេន មតើ CPU មធវើកា ោាែចមេាច?

អាកោច កមេើលវាបានកា បណាា មសៀវមៅនោយ អពភាសា Assembly)។

+ ោាណាេញ អាកេ មពបើមាា ពកដតជាេយប ា Statement ងាយៗបានម ើយ

មបើប ា Statement ដវមពក មនាោះ #define នេμ ានឥទធពល (េនោចមពបើបាន)

ម ើយ។

IX. Statement library បស function

:កែចជាបណាា ភាសាស មស កេμវធមផសមទៀតដែ , Turbo C មានបណាា function

ជាមពចើនដែលពតវបានក ត នយេនយជា មសសចកា C ។ មេដចកបណាា Function

Page 108: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

ទមនាោះជាបណាា ពកេៗ ម ើយទ កវាកា បណាា file header, ខាមពកាេមនោះ ជាបណាា

file standard library : stdio.h library ននបណាា function Input / output math.h library

ននបណាា function េ តវទា stdlib.h library ននបណាា function update memory

string.h library ននបណាា function បស stringctype.h library ននបណាា function

convert character ។

X. បណាា អន េេន ដែលមានសសាប (Build-in Function)

X.1. random function

+ Syntax : int random (num) : ជា function បមកើតបណាា ចនន Random មៅចមនាេ ោះព០

ែល num–1

+ Syntax : rand ( ): បមកើតចនន Random មៅចមនាេ ោះ ០ ែល 32767

+ Syntax : randomize ( ): មធវើមោយបណាា function random ( ) ន rand (

)បមកើតនវបណាា មលខមផសៗគាា ។

Example :

# include <stdlib.h>

# include <stdio.h>

# include <time.h>

int main (void)

{ randomize ( ) ;

printf (” \n random in range ( 0 – 99 ): %d \n” random (100));

return (0);

}

X.2.

បណាា អន េេន នន យៈមពល (DateTime Function) ៖

ជា បណាា Function បមកើតន Read យៈមពល, បមកើតន Read នថៃ – ដខ ។ បណាា

Function

Page 109: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

មនោះផា ក កា <DOS.H> ។

កា Turbo C ក តនយេនយ ទ បសនថៃ, ដខន យៈមពលែច ខាមពកាេ ៖

* នថៃ, ដខ ៖

struct date

{

int year; /* Current year */

char date; /* date of the month */

char month; /* month ( 1 = Jan ) */

};

void getdate ( struct date * datep ); (យកនថៃ, ដខព System )

void setdate (struct date * datep ); ( កនតនថៃដខ )

Example : យកនថៃ, ដខព System បសក ពយទ ៖

# include < dos.h>

# include <stdio.h>

# include <conio.h>

int main (void )

{ struct date d ;

getdate (&d) ;

printf (“The current year is %d \n”, d.da_year );

printf (“The current date is %d \n”, d.da_day );

printf (“The current month is: %d \n”, d.da_mon );

getch ( );

Page 110: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

return (0);

}

Example : ក តនថៃ, ដខមោយក ពយទ ៖

# include <process.h>

# include <conio.h>

# include < dos.h>

int main (void)

{

struct date reset ;

struct date save_date ;

getdate ( &save_date);

printf ( “day, month source : \n”);

system ( “date”);

reset.da_year = 2001

reset.da_day = 1;

reset.da_month = 1;

setdate (&reset );

printf ( “day month have set : \n”);

system ( “date”);

setdate (&save_date );

printf (“return to day month source : \n”);

system ( “date”);

getch ( );

Page 111: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

return (0);

}

Note: Function System ជា Function call statement DOS ។

Example : System (“dir”) មពបើ call statement dir បស dos ។ Function ពតវ call :

# include <stdio.h>

# include <process.h>

10. c) ទ Variable នន យៈមពល ន បណាា Function ដែលមានទនាកទនជាេយ

struct time

{

unsigned char /* minutes */

unsigned char

/* hours */

unsigned char ti_hund; /*hundredths of seconds */

unsigned char ti_sec; /* Seconds */

};

ជាេយ Function Read ន set យៈមពល ៖

void gettime (struct time * timep ); (Read យៈមពល )

void settime (struct time * timep); ( Set យៈមពល )

Example : Function Read យៈមពល ៖

# include <conio.h>

# include <stdio.h>

# include <dos.h>

Page 112: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

int main (void )

{ struct time t ;

gettime (&t);

printf ( “Current time is : %2d : %02d : % 02d. %02d \n”), t.ti_hour, t.ti_min, t.ti_sec,

t.ti_hund );

getch ( );

return (0 );

}

Example : Function set time:

# include <stdio.h >

# include <conio.h>

# include <dos.h>

int main (void )

{

struct time t ;

gettime (&t)

printf (“current minutes is %d \n”, t.ti_min); printf (“current hour is %d \n”, t.ti_hour);

printf( “current seconds is %d \n”, t.ti_sec ); printf ( “hundredths of seconds \n”,

t.ti_hund);

/* add 1 minute and call setting */

t.ti_min ++; settime (&t); getch ( ). return (0);

}

លហាតអន វតាន

Page 113: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

1/ ច ស មស កេμវធមដឋយមពបើ Function, មដឋោះសសាយ សសេកា ែមពកទ ២ ax2 + bx

+ c = 0

Function សេេលនក delta positive, delta negative, delta zero ។

n n!

1 1

2 2

3 6

4 24

5 120

6 720

7 …

2/ ច ស មស កេμវធមដឋយមពបើ Functin, ស មស តារា n! ដែល n = 1…

14 មពកាយេកច សាកលបមេើលពបមេទ int មតើោចេ នាបាន បា នμ ានត ? មបើ long

int មតើោចេ នាបានបា នμ ានត ?

3/ ស មស កេμវធមដឋយមពបើ Function េ នា an ដែល a: Real; n :

ជាចននេតវ ាមាន, តាេព មបៀប ៖

+ េ នាមដឋយផទា ល, េនចាបាចមពបើ recursion

+ េ នាតាេ recursion

4/ ស មស កេμវធមដឋយមពបើ Function េ នាពកលានផាននបណាា កាម ា, វ,

ចត មកា ដក, មដឋយបមកើតជា

menu មែើេប select េ នាែចខាមពកាេ ៖

0. Exit program

1. េ នាពកលានផាកាម ា 2. េ នាពកលានផា វ 3. េ នាពកលានផាចត មកា ដកឧ

“press select ”

Page 114: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

5/ ច ស មស Function េ នា n! មពកាយេកស មស កេμវធ

មពញមលញមែើេបេ នា ៖

Cnk = n! / ( k! * (n-k)!)

6/ បមកើតសវត Fibonacci

សវត Fibonacci ជាសវត F1, F2, F3, … Fn ពតវបមកើតមដឋយមពបើ បេនា ៖

Fn = Fn-1 + F n-2

ដែល F1 = 1, F2 = 1

ឧទ 1, 1, 2, 3,5, 8, 13, 21

ច សម សកេμវធមដឋយមពបើ Function េ នា Maximum ន minimum នន 3ចនន

Read

from Keyboard

8/ មេមោយអន េេន f(x,t) = |a-b| (a³ + b-3)

កា មនាោះ

a = log3 (x² + Sin² (x) + |tg (x)| + s)b = ( ដផាកេត បស y)

ន x,y ជា Variable ពបមេទ Real ។

a. ច ស មស Function េ នា f(x,y)

b. េ នា f(x,y) ដែល x =1.234, y = 2. 345

9/ មតើកា បមកើតអន េេនកា កា ស មស កេμវធ មានពបមោ នោាែចមេាច?

10/ អវមៅដែលមៅថា បាារាា ដេពត នោេ យេា (Argument) ? ច នោយ

អពកា មដឋោះែ ទនានយ វាបាារាា ដេពត នោេ យេា។

11/ មតើរកយេនេោះ return មានេ ខងា ែចមេាចដែ ?

Page 115: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

12/ ច មោយនយេនយមៅមលើ ៖

* អមថ មពៅ (Gloable Variable)

ƒ អមថ ែបន (Local Variable)

ƒ អមថ ែបនសាា ទក (Static local variable)

13/ អវមៅេជាមាា ពកកា ភាសា C? មតើមាា ពកខ សពអន េេនែចមេាចដែ ?

14/ ច បមកើតអន េេនមែើេបមដឋោះសសាយពបពនធសេកា ព អញាតាខាមពកាេ ៖

⎧ax + by = c

⎨dx + ey = f

កា មនាោះ a, b, c, d, e, f េជាបាារាា ដេពតដែលពតវបញច លតនលមោយវា។

= = = = = * = = = = =

Posted in មេម ៀន, មេម ៀន C Programming |

មេម ៀនទ៧: Array & Pointer

Posted on by TEAV Chhun Nan (ទនាកទន ផាយរ ាកេម 077778647-

070778647)

មេម ៀនទ៨: Array & Pointer

Page 116: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

I. Array : អមថ េយោចផា កបានតនលដតេយេត នាមោយ មែើេប ផា កតនល បសសវ តេយ ឬតារា េយបានល ោះពតាដតមយើ មពបើមពចើន អមថ កបា ដនាមៅមពលមនាោះវាមានលកេ ៈសμ េសμ ាញខាេ ណាស។

ែមចាោះមែើេបម ៀសវាកា ពបកាសអមថ មពចើន ែចក ខាមលើ មនាោះមេមពបើ Array

វញ។

I.1. អវមៅជា Array : Array េជាមឈμ ា ោះននសន េយដែល មាន មពចើនធាត នធាត នេយៗ បសវាមាន ពបមេទទនានយែចគាា នោច

ផា កបានតនលេយម ៀៗខេន។ កា ពបកាស Array មែើេបមពបើ កមាន

លកេ ៈែចកា ពបកាសអមថ ធេμតាដែ ដតពតវចាថា ពបមេទ ទនានយ បស Array

េជាពបមេទទនានយ បសធាត នេយៗនន Array។ Array

ពតវបានពបកាសតាេទ ែចខាមពកាេ ៖

ពបមេទទនានយ មឈμ ា ោះ បស Array [ចននធាត បស Array]; Datatype

VariableName[size of array];

កា ពបកាស Array ោចមានមពចើនវមាពត ោសសយមៅតាេែ វកា ។ មែើេបដសវ

យលអពវមាពត បស Array ច ពនតយមេើលឧទ ខាមពកាេ ៖

int a[10], b[4][2];

float x[5], y[3][3];

ខាមលើមនោះជាកា ពបកាស Array ចនន 4 េ a, b, x, y ដែលមាន អតានយែចខា

មពកាេ ៖

– ចមរោះ Array ទ 1 មានពបមេទទនានយជា int, មឈμ ា ោះ a, ចននវមាពតេ 1,

ចននធាត េ 10។

Array a មានធាត 10 េ a[0], a[1], a[2],…, a[9] ដែលធាត នេយៗមនោះ

នពតវបានមេមពបើសរាបផា កតនលេយដែលមានពបមេទ ជា int។ ែមចាោះ Array a

មពលមនោះោចផា កបាន 10 តនលពបមេទ int។

– ចមរោះ Array ទ 2 មានពបមេទទនានយជា int, មឈμ ា ោះ b, ចននវមាពតេ 2,

ចននធាត េ 4

Page 117: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

េ ន 2 មសμ 8 (វមាពតទេយេ ជាេយវមាពតទព )។ Array b មាន 8

ធាត ែចខាមពកាេេ ៖

b[0][0] b[0][1] b[1][0] b[1][1] b[2][0] b[2][1] b[3][0] b[3][1]

ដែលធាត នេយៗ បស b េ b[i][j] ោចផា កបានតនលេយមាន ពបមេទជា int។ ែមចាោះ

Array b

ោចផា កចននេត int បានចនន 4 មែក ន 2 ឈ ។

– ចមរោះ Array ទ 3 មានពបមេទទនានយជា float, មឈμ ា ោះ x,

ចននវមាពតេ 1,

នចននធាត មាន 5 េ x[0], x[1]…,x[4]។ ធាត នេយៗ x[i] ោចមពបើសរាប

ផា កតនលពបមេទទនានយជា float ែមចាោះ Array x មពលមនោះោចផា កបានចនន

5

តនលចននពត float។

– ចមរោះ Array ទ 4 មានពបមេទទនានយជា float, មឈμ ា ោះ y,

ចននវមាពតេ 2,

នចននធាត មាន 9 េ ៖

y[0][0] y[0][1] y[0][2] y[1][0] y[1][1] y[1][2] y[2][0] y[2][1] y[2][2]

មពលមនោះ ធាត នេយៗ បស y េ y[i][j] ោចផា កបានេយតនលពបមេទ float ែមចាោះ

Array

y ទេលោចផា កបានចនន 9 តនលចននពត float។

I.2. កា មពបើពបាស Array :មែើេបយលមោយបានចាសអពកា មពបើពបាស Array

មយើពនតយ មេើលឧទ ខាមពកាេ ៖

I.2.1. បញចលតនល ន ោនតនលព Array : Ex1: Read បណាា តនលមៅមោយ Array x

ព Keyboard

Page 118: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

# include <stdio.h>

# include <conio.h>

# define SIZE 5 main ( )

{ int x [SIZE];

int i ;

for ( i = 0; i <=SIZE – 1; i ++ )

{ printf ( “x[%d] =”, i ); scanf (“%d”,&x[i]);

}

/* display Array on screen */ printf (“\n Display Array x : ”); for ( i =0; i <= SIZE –1; i

++)

printf ( “\n x[%d] = %d”, i, x[i]);

getch ( );

return (0);

}

x[0] = 12 x[1] = 34 x[2] = 56

Display Array x: x[0] = 12 x[1] = 34 x[2] = 56

ចណា ៖ កា ស មស កមនាេ <= SIZE – 1 ន < SIZE កា Loop for

មនាោះមាននយែចគាា ។ មយើោចស មស Access data មៅមោយ x

មៅមលើបនាា តដតេយបាន ៖

# include <stdio.h>

# include <conio.h>

# define SIZE 5 main ( )

{ int x[SIZE];

int i;

Page 119: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

printf (“\n Enter Value into Array on the one line :”);

for ( i = 0; i <SIZE ; i ++)

{ scanf (“%d”, &x[i]); }

printf (“\n Display Array on screen : ”);

for ( i = 0; i <SIZE; i ++ )

printf (“\n x[%d] = %d”; i, x[i]);

getch ( );

retune (0);

}

Enter Value into Array on one line :

12 34 56

Display Array on screen :

x[0] = 12 x[1] = 34 x[2] = 56

Ex2: បក One dimensional Array : C = A + B

# include <conio.h>

# include <stdio.h>

# define SIZE 5 main ( )

{ int A[SIZE], B[SIZE], C[SIZE];

int i; clrscr ( );

for ( i = 0 ; i <= SIZE – 1 ; i ++ )

{ printf (“A[%d] =”, i);

scanf (“%d”, &A[i]);

}

for ( i = 0; i <SIZE; i ++ )

Page 120: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

{ printf (“\n B[%d] =”, i);

scanf (“%d”, &B[i]);

}

for ( i = 0; i <SIZE ; i ++ )

{ C[i] =A[i] + B[i] }

getch ( );

return (0);

}

I.2.2. ក តតនលមោយ Array ជាេ ន ា

Array ោច Create Value មោយវាបានមៅមពលមយើ Declaration :

int x[3] = { 7, 4, 5 } ;

មាននយថាមពលមយើ Declaration, មនាោះមយើតាបណាា តនល មោយ Array ដតេា

x[0] = 7; x[1] = 4; x[2] = 5 ;

I.2.3. Array នន Characters : បពបមេទ Declaration ខាមពកាេមនោះសេេលនគាា ។

char text1 [5] = { ‘D’, ‘C’, ‘f’, ‘s’, ‘p’ };

char text2 [5] = “DCfsp”;

char text3 [ ] = “DCfsp”;

text[0] = ‘D’; text[1] = ‘C’; text[2] = ‘f’; text[3] = ‘s’; text[4] = ‘p’;

ដត Tucbo C កមពបើ Declaration Array of character ែចគាា ន array of string ។ string កា

turbo C ពតវបាន បញច បមដឋយ ធាត ច មពកាយមានតនលមសμ Character NULL, ជា

character ែបមាន Code = 0 in ASCII Table, ពតវតាកា Turbo C មដឋយ សញញា ‘\0’ ។

ែមចាោះ text1, text2 មានពេបលμេ ៥កដនេសរាប 5 characters,

ែមចាោះមៅខវោះេយកដនេមទៀតមោយ ‘\0’,

Page 121: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

ែមចាោះពតវ ស មស ម ើវញ

char text1 [6] = { ‘D’, ‘C’, ‘f’, ‘s’, ‘p’ };

char text2 [6] = “DCfsp”; មបើេនចរាបមទចល Declaration: char text3[ ] = “DCfsp”

Computer ផាលមោយមយើ ៦ដនេ, ៥កដនេសរាប Characters ន ១កដនេសរាបសញញា ‘\0’ ។

Ex3: Convert string ពអកស តចមៅអកស ធ ៖

# include <stdio.h>

# include <conio.h>

# include <ctype.h>

# define SIZE 80 main ( )

{

char text [SIZE];

int count;

for (count = 0; count <= SIZE –1; count ++ )

text[count] = getchar ( );

for (count = 0; count < SIZE; count ++ )

putchar (toupper (text[count]));

getch ( );

return (0);

}

Ex4: រាប Characters:

Page 122: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

ឧបមាមយើចរាបកា ១០០ែននកា ច ចបញច ល Character ព Keyboard,

ចននមលចមចញននបណាា character ព ‘A’ ែល ‘Z’ មានបា នាា ន ? Variable count

ពតវបាន Declaration ខាមពកាេមនោះ

# include <stdio.h>

# include <conio.h>

# include <ctype.h>

# define SIZE 80 main ( )

{ char text[SIZE];

int i, count[‘Z’ – ‘A’ + 1];

clrscr ( );

for ( i = 0; i <SIZE; i ++ )

text [i] = toupper (getchar ( ) );

for ( count = 0; count <SIZE, count ++ )

putchar (text [count] );

for ( i = 0; i < ‘Z’ – ‘A’ + 1; i ++)

count [i] = 0;

for (i = 0; i < SIZE; i ++)

{ printf (“%d”, count [text [i] – ‘A’] );

count [text [i] – ‘A’] ++;

printf (“%d”, count [text [i] – ‘A’]); }

for ( i = ‘A’; i <= ‘Z’; i ++)

if (count [i – ‘A’] )

printf (“\n number of characters %c = %d”, i, count[i – ‘A’]);

Page 123: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

getch ( );

return (0);

}

Note: កេμវធខាមលើមបើមយើ Run កេμវធមនាោះមយើពតវ Input character តែល

80 character

មទើបឈប។ ែមចμ ោះ មយើេបបស មស កេμវធមដឋយមោយ Read character

តែល ប Enter មទើបឈប ។

I.3. តម ៀប Arrayកា Sort ធាត Array តាេលដឋបមកើន ឬច ោះ មានសា ៈសខាន កា

កា េ នា Array ។ មនោះជា Algorithm ដែលពតវម ៀន ។ ខា

មពកាេមនោះនអធបាយព មបៀបម ៀបបណាា ធាត បស Array តាេឧទ ៖

Ex5: Sort Array

# include <stdio.h>

# include <conio.h>

# include <math.h>

# define SIZE 5 main ( )

{ int x[SIZE];

int i, j, temp;

for ( i = 0; i <= SIZE –1; i ++ )

{ printf (“x[%d] = ”, i);

scanf (“%d”, &x[i]);

}

/* sort Array */

for ( i = 0; i < SIZE –1; i++)

for ( j = i +1; j < SIZE; j++ )

Page 124: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

{ if (x [i] > x [j])

{ temp = x[i]; x [i] = x [j]; x [j] = temp

}

}

printf (“\n The Array After Sort: ”);

for (i =0; i < SIZE – 1; i++)

printf (“%7d”, x[i]);

getch ( );

return (0);

}

លទាផល Run program :

x[0] = -1 x[1] = 456 x[2] = 34 x[3] = -312 x[4] = -56

The Array After Sort :

ខាមពកាេមនោះជាកេμវធ Sort Array ពតវបានស មស មពកាេរា Function :

Ex6:

# include <stdio.h>

# include <conio.h>

# include <math.h>

# define SIZE 5

void Sort_Array ( int n, int x [ ] );

main ( )

{ int x[SIZE]

Page 125: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

int i;

for ( i =0; i <SIZE; i++)

{ printf (“x[%d] = ”, i);

scanf (“%d”, &x[i] );

}

Sort_Array (size, x);

printf (“\n Array x : ” ); for ( i =0; i <Size; i++ ) printf (“%7d”, x[i] );

getch ( );

return (0);

}

void Sort_Array (int n, int x [ ] )

{ int temp, i, j;

for ( i =0; i < n – 1; i++)

for (j = i + 1; j < n; j++ )

{ if (x[i] > x[j] )

{ temp = x[i]; x[i] = x[j]; x[j] = temp;

}

}

return ;

}

កា ឧទ ខាមលើមយើម ើញ មបៀបបញា ន Parameter ជា Array មោយមៅ

Function ។ មៅមពល Declaration Function, មយើពគានដតបញា ន Declaration Array

ដែលមាន [ ] មែើេបបញច ល Address ។ មបើមយើបញា ន Array មាន Index មនាោះេនដេនជា

Address េជា Value .

Page 126: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

void Sort_Array (int n, int x[ ]) ;

នមពល Call Function, មយើពគានដតបញា នមឈμ ា ោះ Array បា មណាណ ោះ Sort_Array

(size, x);

II. Pointer ន Linking with Array :

– ចន ចដែលពតវយកចតាទ កដឋកកា ឧទ ខាមលើេ មពកាយព Call Function

Sort_Array, statement ដែល print លទាផល េកមលើ Screen សាតមៅខាមពៅ Function

Sort_Array (កា main Function) ដតមៅដត print ពតវ ។ មយើែថា parameter

ដែលបញា នមោយ Function Sort_Array ជា Value parameter ។ តាេពតច print ពតវ មយើពតវដតស មស statement ដែល print លទាផលមនាោះមៅកា Function Sort_Array

ដតេា ។មនាោះេមដឋយ សា ដតមឈμ ា ោះ Array ជា Address, បាននយថា pointer point

មៅធាត តប បស Array ។ កា យលព អតានយ បស Array កា C ទេទមោយមយើ

ពតវមានេនតេលដឋា នអព Pointer ។ មយើមពបើ បណាា សញញា Operator pointer ន

Address ែចខាមពកាេ ៖

* p ជាទនានយដែលផា កកា Address p, នោយេយ មបៀបមទៀត p ជា memory ផា ក

address បស *p ឬជា Pointer point មៅ Variable ផា កតនល *p ។ &x ជា Address បស

Variable x ។ pointer ជា Variable ផា ក Address, េμ ានផា កតនលមទ ។ ឧបមាមយើ

Declaration variable x, p ន assignment ែចខាមពកាេ ៖

int x = 15; /* x ជា Variable មានតនល = 15 */

int *p; /* Declaration ទនានយជាចននេតមាន address េ p */

p = &x ; /* p ទទលតនល address បស x */

ែប pointer p េμ ាន Value មទ, ដតមពកាយមពលមាន assignment p = &x មនាោះ p ន

point មៅ x ។ មពលមនាោះ Pointer ជា Variable ផា ក តនល Address នន memory បស x ។

ម ើយ p ខេនឯកមាន address ផទា ល បសខេន ដែ េ &p ។ ដត address បស

p មយើេនយកចតាទ កដឋកមទ, ដតមយើេតមៅែល អតានយ memory េ address p ។

ច ពនតយ បខាមពកាេ ៖ ។ ច យក ចតាទ កដឋកអតានយ F0F4,

Page 127: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

េជាតនលស មស មពកាេរា Hexa, សេេលន 2 bytes ។ អាកេនចាបាចខវលេតថា

តនលមនាោះ បា ណាណ មទកា មលខមគាលែប ។ ចមរោះ variable p មនាោះ F0F4 ជាតនល បស

p ។ ចមរោះ x, វាជា address េ &x ។

មបើច p ជា pointer point to variable x, កា program មយើពតវ Assignment p = &x;

លកម ើវញបណាា បញញា ដែល មានទនាក ទនជាេយ Array : ជាេយ Declaration :

int x[SIZE];

មនាោះតាេពត x ជា address ននធាត តប បស Array ។ មយើោច ស មស x សេេល

ន &x[0]

Note : ចលចណាចន ចេយេ មានដតមឈμ ា ោះ បស Array មទដែលមានតនល

address, មរលេ pointer ។ ចដ កមពល ស មស ធាត បស Array,

មនាោះមឈμ ា ោះ បស Array ជាេយ សញញា [ ] ដែលមាន Index, មនាោះវាជា Variable

េយ, មាននយថា x ឬ x[ ] ជា variable pointer ចដ ក x[0], x[1] ជា Variable

ធេμតាវញ ។

Ex: ពនតយតនលបណាា pointer

# include <stdio.h>

# include <conio.h>

main ( )

{ int number ; int *pointer ; number = 10;

printf (“\n Address of number : %p”, &number );

printf (“\n value of number : %d”, number);

Page 128: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

pointer = &number; /* pointer point to number */

printf (“\n Address of pointer : %p”, &pointer );

printf (“\n value of pointer : %p”, pointer );

printf (“\n value have point to is : %d”, *pointer);

getch ( );

return (0);

}

The Result on screen :

Address of number : 8 EEA : OFFE Value of number : 10

Address of pointer : 8EEA : OFFA Value of pointer : 8EEA : OFFE Value have point to

is : 10

&number number &pointer pointer

* pointer

+ format សរាប print pointer េ %p ។

Ex : មបៀប Declaration នមពបើពបាស pointer :

static char *msg = “rose”;

C នផា ក String មៅកា Array េមាន៥ធាត ។ ជាេយមនាោះ C កម ៀបច memory

មែើេបផា ក pointer msg ។ pointer មនោះនពតវបានចាតទ កែចជា Variable េយ,

ែមចាោះវាកោចដពបពបលតនលបាន ។ ចលពនតយ Looping ខាមពកាេ ៖

while ( *(msg) != ‘\0’)

putchar (* (msg++));

ជាេយ Declaration

Void Sort_Array (int n, int x[ ]);

Page 129: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

មយើយលថា parameter x[ ] ជា Address បស Array x, េជា Address

ននធាត តប បស Array ។ Address មនោះេ ននមពកាយ Function Sort_Array ( )

អន វតាន, វាេនដពបពបល ។ Function នមធវើមោយដពប ពបល អតានយផា កពត Address

x, េនដេន មធវើ មោយ ដពបពបល Address x មទ ។ ច ពនតយបណាា ឧទ ខា

មពកាេ ៖

Ex 10:

# include <stdio.h>

# include <conio.h>

main ( )

{ int Array [4], *ptr1, index;

float Value [4], *ptr2;

ptr1 = Array;

ptr2 = Value;

for (index = 0; index < 4; index ++ )

printf (“base + %d : %10d %10d \n”, index, ptr1 + index, ptr2 +index );

getch ( );

return (0);

}

លទាផលន print េកព Screen ែចខាមពកាេ ៖

base + 0 : ^^^^^ 12345 ^^^^^ 31890

base + 1 : 346 913

base + 2 : 36 345

base + 3 : 28934 12891

ជាេយ Declaration :

Page 130: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

float value[4] , *ptr2;

Note: មយើែថា Value (array ផា ក Value ) ជា Array មាន ៤ធាត ម ើយ Value ជា

Address បសធាត តប ។ *ptr2 មាន នយ ថា ptr2 ជា pointer point មៅ float, *ptr2 ជា

Variable មាន ពបមេទ float, ពតវបានផា កកា memory, មាន Address េ ptr2 ។

មឈμ ា ោះ Array ោចស មស មដឋយេμ ានសញញា [ ]

បាន, មនាោះេ Address ននធាត តប ។

ptr1 = Array; /*ptr1 point to Array */

+ មានចន ចេយដែលពតវយកចតាទ កដឋក, េ កា Turbo C, Variable pointer

ពតវមកើនម ើ ១ នេន មកើនតនល Address ម ើ១មទ, ដតវា

មកើនម ើទ សេេលនទ ទនានយដែលវា point មៅមនាោះ។ មបើ មយើ ស មស ptr2++ មនាោះវានមកើនម ើ ៤ មពរោះពបមេទ float មាន ទ 4 byte ។

កា ឧទ ខាមលើ ៖

Array + 2 = = &Array[2]

*(Array +2) = = Array[2]

ពបមា វធអន វតានជាេយ pointer :

មានដតពបមា វធខាមពកាេមទដែលអន វតានជាេយ pointer បាន ៖

– ពបមា វធ Assignment (=)

– ពបមា វធមពបៀបមធៀប (= =) ឬ ( != )

+ ពបមា វធមកើនដថេ Address : ែចកា ឧទ ខាមលើ មយើមានពបមា វធេ នា Array + 2 មនាោះេ មយើពតវ យល

ថាពបមា វធមកើនដថេ Address, ម ើ២ធាត មទៀត, េេនដេនមកើន Value ម ើ 2មទ។

+ បណាា តនល បស Variable pointer, េនោច Read from Keyboard បានមទ ។

ដតមយើោច Print វាេក មលើ Screen មដឋយពតវ Format %p ។

Page 131: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

Constant NULL : NULL ជាតនល Const ពមសសេយមពបើមោយ បណាា Variable

pointer ម ើយវាពតវបានមពបើមែើេបបញញា កថា េμ ាន point មៅណាទអស ។ NULL

ោចតាមោយពេប Variable ពបមេទ pointer បានទអស ។ NULL ជា pointer

ពមសសេយ ផា កតនល ០ ។ ឧទ Declaration NULL ែចខាមពកាេ ៖

int n = 0, *pn = NULL;

III. Array មពចើនវមាពត (Multidimensional Array) :

Multidimensional Array, ជា Array ដែលមានបណាា ធាត មពចើន Rows, មពចើន Columns។

Ex: int x[3] [5]; បាននយថា Array ផា កបណាា ចននេត, មាន 3 Rows, 5Colunm ។

បណាា ធាត Array ពតវបានក ត

Index ែច បខាមពកាេ ៖

Ex:

Access ធាត Array x[1,3]; x[i +1, J +3] … Ex: Declaration Array មផស

float x [3] [5];

char x [3] [5];

បមកើនតនលមោយ Multidimensional Array : Multidimensional Array

ោចបមកើតតនលែបបាន ។ Ex: int x[3,2] = {(1,2), (3,4), (5,6) };

int x[3,2] = {1, 2, 3, 4, 5, 6};

បណាា ឧទ ៖

Ex1: program េ matrix កាម ាពជាេយេμ ា ៖

C = A * B

បណាា ធាត នន Array C, ពតវេ នាតាេ បេនា ៖

Page 132: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

n

Cij = ∑ Aik * Bkj

k =1

# include <stdio.h>

# include <conio.h>

# include <math.h>

# define N 3 main ( )

{ int i, j, k;

int A[N][N],B[N][N], C[N][N]; /* Matrix */

/* Read data into Array A */

for (i = 0; i <N; ++i)

for ( j = 0; j < N; j++)

{ printf (“A[%d, %d] =”, i, j );

scanf (“%d”, &A[i][j]);

}

/* Read data into Array B */

for ( i = 0; i < N; i++)

for ( j = 0; j < N; j++)

{ printf (“B[%d, %d] =”, i, j );

scanf (“%d”, &B[i][j]);

}

/* C = A * B */

for ( i = 0; i < N; i++ )

Page 133: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

for ( j = 0; j < N; j++)

{ C [i][j] = 0;

for ( k = 0; k < N; k++ )

C [i][j] = C [i][j] + A[i][k] * B[k][j];

}

/* Display Result on screen */

for ( i = 0; i < N; i++ )

{ for ( j = 0; j < N; j++ ) printf (“%4d”, C [i][j]); printf (“\n”);

} getch ( ); return (0);

}

Note: មបៀបេាាមទៀតមយើេនចាបាច Read data into matrix មទ,

ច ពនតយកណាតកេμវធខាមពកាេ មយើ បមកើតចនន Random ម ើយតាចនន

Random ទមនាោះមៅមោយធាត Matrix :

for ( i = 0; i < N; i++ )

for ( j = 0; j < N; j++ ) A[i] [j] = rand ( );

កា មនាោះ Function rand ( ) ជា Function បមកើតចនន Random ។

Ö កេμវធខាមលើមយើ Declaration N = 3, មយើោចដពបពបលតនល បស N បាន ។

Ex 2: បកព Matrix ជាេយគាា ៖

C = A + B

មយើមពបើ បេនា ៖ C[i][j] = A[i][j] + B[i][j]

ឧទ មនោះអធបាយ មបៀបមផសកា មពលស សម កេμវធ,

េ មបៀបដែលមានលកេ ៈពេបពគានជាេ ន ។

Page 134: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

មដឋយ មបៀបខាមពកាេ ៖

– Matrix A ន B ពតវមានធាត ែចគាា ៖ (Rows <= 20, Column <= 30 )

– Read Value into Array

– Display the Result on screen

# include <stdio.h>

# include <conio.h>

# define Max_Row 20

# define Max_Column 30

void read_input ( int a[ ][Max_Column], int num_Row, int num_Col );

void Sum (int a[ ][Max_Column], int b[ ][Max_Column], int c[ ][Max_Column], int

num_Row, int num_Col );

main ( )

{ int numRow , numCol ;

int a[Max_Row][Max_Column],b[Max_Row][Max_Column],

c[Max_Row][Max_Column]; printf (“Number of Rows :”); scanf (“%d”,

&num_Row );

printf (“Number of Column :”); scanf (“%d”, &num_Col);

printf (“\n\n Array A :\n”);

read_input (a, num_Row, num_Col );

printf (“\n\n Array B :\n”);

read_input (b, num_Row, num_Col ); sum (a, b, c, num_Row, num_Col ); printf (“\n\n

sum of 2 matrix : \n\n”);

write_output ( c, num_Row , num_Col); getch();

}

Page 135: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

*/ Function Read Array integer */

void read_input (int a[ ][Max_Col], int m, int n)

{ int i, j;

for (i = 0; i <m; i++)

{ printf (“\n please input data %2d \n”, i + 1);

for ( j = 0; j <n; ++j)

scanf (“%d”, &a[i][j] );

}

return ;

}

/* Calculate sum of to Array intege */

void sum ( int a[ ][Max_Column], int b[ ][Max_Column], int c[ ][Max_Column], int m,

int n)

{ int i, j;

for ( i = 0; i , m; i++)

for (j = 0; j < n; ++j )

c[i][j] = a[i][j] + b[i][j];

return ;

}

/* Display the Result on screen */

void write_output ( int a[ ][Max_column], int m, int n)

{ int i, j;

for ( i = 0; i <m; i++ )

{ for ( j = 0; j <n; ++j ) printf (“%4d”, a[i][j] ); printf (“\n”);

Page 136: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

}

return ;

}

ឧបមាមយើពតវបក 2 Matrix :

Matrix A Matrix B

1 2 3 4 10 11 12 13

5 6 7 8 14 15 16 17

9 10 11 12 18 19 20 21

មនាោះវាន Display the result on screen

លហាត

បណាា លហាតខាមពកាេេបបស មស ជា Function :

1) ស មស កេμវធ មដឋោះសសាយពបពនាសេកា ខាមពកាេៈ

a11 . x + a12 . y = C1

a21 . x + a22 . y = C2

2) ស មស កេμវធ បមកើតតារាមេមលខេ

3) បមកើត Matrix X[1..10] [a..10]

a. ស មស កេμវធបមកើត 1០០ តនល Random សាតមៅបមនាេ ោះតនលព 1..10 ។

b. េ នាផលបកននបណាា ធាត សាតមៅមលើអកតពទ

c. េ នាផលបកកាម ននបណាា មលខមៅមលើ Column េ

d. េ នាផលបក សកាម ាននបណាា មលខមៅមលើ Column មសស

e. មតើមានបា នμ ានធាត នន Array, ដែលមានតនលសាតមៅចមនាេ ោះ 4..6

Page 137: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

4) ស មស កេμវធេ នាផលបកកាម ាននបណាា ចននអវ ាមានកា Array Integer ។

5) ស មស កេμវធ កចននធបផ ត នចននតចបផ តនន Array R ដែលមានចនន

១៥ចននពត ។

6 ) ស មស កេμវធមដឋោះសសាយពបពនាសេកា ខាមពកាេ ៖

A11 . X + A12 . Y + A13 .Z = U1 ; A21 . X + A22 . Y + A23 .Z = U2 ; A31 . X + A32 .

Y + A33 .Z = U3 ;

7 ) ស មស កេμវធមដឋយមពបើ Sub-program, េ Matrix ន Matrix

– Matrix A មានធាត ៖ N * L

– Matrix B មានធាត ៖ L * M

– Matrix C មានធាត ៖ N * M

8) ស មស កេμវធមធវើកា ងា ខាមពកាេ ៖

a. Read បញច ល N ចននេតព Keyboard, N>5 ។ មាន Path ចាសលាសកា មពល

Read ។

b. ម ៀបបណាា មលខដែលមានតនលធជា ១០មៅខាមែើេ ។

c. ច ល បធាត ទ៣ បស Array នធាត ទ n ។ ស មស លទាផលេកមលើ Screen

9) សន បដនាេ ៖

1) មតើពតវកា បា នμ ាន byte សរាបមពបើមោយកា Declaration ែចខាមពកាេ ៖

char ch [ ] = “A”;

a. 0

b. 1

c. 2

d. 3

Page 138: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

10) មតើពតវកា បា នμ ាន byte សរាបមពបើមោយកា Declaration ែចខាមពកាេ ៖

char ch [ ] = “A”;

a. 0 b. 1 c. 2 d. 3

11) បនាា តទព ននលទាផលមពកាយពមយើ Run program :

# include <stdio.h>

main ( )

{ static char msg [ ] = “Hello!” ;

char * msgptr; msgptr = msg; puts (++msg); puts (msg);

msg [3] = ‘\0’;

puts (msg);

}

a. Hello

b. Welcome c. ch

d. េμ ាន a, b, c. កេμវធមានក ស

12) បនាា តតបននលទាផល បសេμវធខាមពកាេ ៖

# include <stdio.h>

main ( )

{ static char msg [ ] = “Hello!”

char * msgptr;

msgptr = msg + strlen (msg);

while ( – – msgptr >= msg )

puts (msgptr );

Page 139: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

}

a. 0 b. lo c. H

d. េμ ាន a, b, c. កេμវធមានក ស

13) កា កេμវធខាមពកាេ, មតើមានបា នμ ាន byte មពបើមោយកា Declaration ខាមពកាេ

char *ptr = “C”;

a. 0 b. 1

c. 3 ( 1សរាប pointer, 2 សរាប data )

d. 4( 2 សរាប pointer, 2 សរាប data )

14) មតើតនល បស *ptr កា ឧទ ខាមពកាេ ៖

char *ptr;

static char msg[ ] = “Test”;

ptr = msg [0];

a. េនក តបាន

b. T

c. Address បស character ែប

d. េμ ានចមលើយណាពតេពតវមទ

15) មតើតនល បស *(ptr + 2) កា ឧទ ខាមលើ

a. េនក តបាន

b. T

Page 140: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

c. Address បស character ែប

d. s

16) Declaration ptr ជា pointer នន Array 20 character

a. char ptr[20];

b. char (*ptr) [20];

c. *(ptr[20]);

d. េμ ានចមលើយណាពតេពតវមទ

17) Declaration ជា Array នន 20 pointer point to Array

a. char ptr [20];

b. char (*ptr)[20];

c. *(ptr [20]);

d. េμ ានចមលើយណាពតេពតវមទ

18) សញញា ណាជាធាត ទ៣ បស Array msg ដែលមាន 4 characters a. msg [3]

b. msg [2] c. *msg [3] d. msg [4]

19) សញញា ណាជា pointer បសធាត ទ៣ បស Array msg មាន 4 characters a.

*(msg + 3)

b. *(msg + 2)

c. *msg + 3 d. *msg + 2

20) មបើមាន Declaration ែចខាមពកាេ ៖

char msg [10];

char value;

មតើឃលេ ខាមពកាេណាេយដែលពតេពតវ ?

Page 141: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

a. msg [2] = Value;

b. msg = Value;

c. ឃលេ ទព ខាមលើពតេពតវ

d. េμ ានចមលើយណាពតេពតវ

21) មបើមាន Declaration ែចខាមពកាេ ៖

char *ptr; char [10]; char Value;

ឃលេ ខាមពកាេមនោះពតេពតវ ៖

a. ptr = Value;

b. ptr = msg;

c. ឃលេ ទព ខាមលើេនពតេពតវ

22) Pointer point to array មាន 3 character េ ៖

a. (*ptr) [4]; b. (*ptr) [3]; c. (*ptr [4]); d. (*ptr [3]);

23) តនលលទាផលជាេយ

static char msg [ ] = “Test”;

printf (“%d”, strlen (msg) );

េ ៖

a. 0

b. 6

c. 5

d. 4

Page 142: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

មេម ៀនទ៨: String & Text

I. មតើ String េជាអវ ? String េជាមសេ នន Character ដឋកកា ចមនាេ ោះ សញញា double

quote (“ ”) ដែល មានរាបបញច លទ Space នសញញា ពមសសមផសៗ (‘\0’) មទៀត

រាលមពលមយើបមញចញឃលេ េយ មលើ មអពកមដឋយមពបើ printf(), េមយើបានមោយ

នយេនយឃលេ មនាោះ ថាជា String Constant។

ឧទ ែចជា ៖

printf(“This is a string.”);

printf(“UC”);

printf(“UNIVERSITY”);

បណាា Character បស String េយ ពតវបានផា កកា Byte Memory េយមដឋយ តនល

ASCII បស Character មនាោះ។ ASCII បស Character នេយៗ ពតវបានែម ៀប ជាបៗគាា ពេយមៅេយកា Memory នមពលចប String មនាោះកា Memory ពតវផា ក ‘\0’

ដែលជាសញញា បញច ប String។ ច ពនតយមេើលថា មតើ String Constance

ននឧទ ទ 3 ខាមលើពតវបានទ កកា Memory ោាែមេាច? ច មេើលកា ប

ខាមពកាេ ៖

C មពបើសញញា ពមសស (\0) ដែល S μ សន សញា String ែមចាោះកា កា េយមៅកា

Memory មនាោះចនន Byt តវមពបើ ដតមលើស ចនន Character នន String េយ

ឧទ ៖

#include “stdio.h”

#include “conio.h”

void m

{

pr 0 is d to inate ing”); printf(“The character to t ate ng is e end trin

getch();

}

លទធផលមលើមអពកេ ៖

Page 143: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

The character

The character to terminate a string is at the end of string

បនាា តទ 1 វាបងាា ញដត The character មពរោះដតមានសញញា បញច ប String (‘\0’)

មៅចមនាេ ោះកណាា ល (ដែលមពលមនោះ (‘\0’) ពតវបានមយើដឋកមដឋយខេនឯ)។

បនាា តទ 2 វាបងាា ញទអស ពមពរោះសញញា បញច ប String (‘\0’) មៅខាច

មពកាយបែសនន

String (ដែលមពលមនោះ (‘\0’) ពតវបានដឋកបមពញមដឋយ Compiler)។

II. េមធាបាយមពបើពបាស String

II.1 កា ពបកាសអមថ String មដឋយ Array of char

char9មឈμ ា ោះអមថ [ចននតអកស ];

ឧទ ែចជា ៖

char str[20] ;

មពលមនោះមយើបាន អមថ str ោចផា កបាន តែល 19 Character ចដ កឯ េយ Byte

ច មពកាយសរាបទ ក ‘\0’។

កា ភាា បតនលចាបមផាើេមោយ String :

+ មយើោចភាា បតនលចាបមផាើេមោយអមថ String តាេ មបៀបែចខាមពកាេ ៖

char string[] = “This is a string”;

មនោះជាកា ពបកាស String ដែលមានមឈμ ា ោះ string , េμ ាន ក ត ចននតអកស ម ើយភាា បតនលចាបមផាើេមោយភាេ េមដឋយឃលេ This is a string។ មពលមនោះ Compiler

នផគតផគ

Page 144: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

Memory ចនន 17 byte មដឋយរាបបញច លទ ‘\0’ (សញញា បញច ប String) សរាបអមថ string។ កា ពបកាសតាេទ ខាមលើមនោះ

េេនោចេμ ានកា ភាា បតនលចាបមផា េបានមទ មបើសនជា

េμ ានកា ភាា បតនលចាបមផាើេមនាោះ Compiler នេនោច ក តចនន byte

ដែលពតវផគតផគសរាបអមថ មនោះបានម ើយ ដែលជាម ត នាមោយមានក សភាេ េ។

+ មយើោចភាា បតនលចាបមផាើេមោយដផាកេយ បស Array of char តាេ មបៀប

ែចខាមពកាេ ៖

char str[40] = “To do”;

Compiler នផគតផគ Memory ចនន 40 byte សរាបអមថ str កា មនាោះ 5

ធាត ែបចាបព str[0]…str[4] ពតវបានភាា ប តនលចាប មផាើេមដឋយរកយ To9do

ចដ កឯ បណាា ធាត ចាបព str[5] តែល str[39] ពតវបានផា កតនលសនយទអស

(ពតវចាថា សនយេជាតនល ASCII បសសញញា បញច ប String ‘\0’)

ដតធាត ទមនោះមយើោច

មពបើពបាសវាមោយផា កតនលមផសមៅមពលមពកាយបាន។ច ពនតយមេើលកេμវធខាមពកាេ ដែលមានកា ពបកាសអមថ string ជាេយនកា ភាា បតនលចាបមផាើេមោយវាមៅមពលពបកាសភាេ េ

បនាា បេកមយើោចមពបើអមថ ដែលបាន ភាា បតនលចាបមផាើេមនោះ មោយ កាទ ក String

ណាេយមផសមទៀតបាន។ កា មនាោះកមាន កា បងាា ញអព មបៀបមពបើ scanf

មែើេបបញច លទនានយមោយអមថ string ដែ ។

#include <stdio.h>

#include <conio.h>

void main()

{

char string[40] = “hello”; /* ភាា បតនលចាបមផាើេមោយអមថ string */

clrscr()

Page 145: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

printf(“\nstring : %s”, string); /* បងាា ញតនល បស string */ scanf(“%s”, string); /*

បញច លទនានយថμ មោយអមថ string */ printf(“\nstring : %s”, string); /*

បងាា ញទនានយថμ បស string */ getch();

}

មបើមយើបញច លថា abcdefghijkl មនាោះ លទធផល បសកេμវធេ ៖

string : hello abcdefghijkl._

string : abcdefghijkl

+ មយើោចភាា បតនលចាបមផាើេមោយ String Constant តាេទ ែចខាមពកាេ ៖

const char str[] = “Hello world”;

មពកាយមពលពបកាសមនោះ ច str េនោចផទេ សបា ទនានយបានមទ មពរោះវាពតវបាន

ពបកាសជាចននមថ មដឋយរកយេនេោះ const ចមៅម ើយ។

II.2 ទនានយមចញ នទនានយចលជា String

II.2.1 ទនានយោនចលមានពបមេទជា String

ខាមពកាេមនោះជាបណាា អន េេនសរាបោនយកទនានយពបមេទ String :

+ scanf(“%s”, str); អន េេនសរាបោន String ដែលេμ ាន Space, tab, \n ព

Keyboard។

ឧទ ថា មបើអាកវាយបញច លនវឃលេ Welcome to BBU មនាោះអន េេន scanf

នោនបានដតរកយ Welcome បា មណាណ ោះ។

+ gets(str) ជាអន េេនសរាបោនយកបណាា Character (String) ដែលបាន បញច លព

Keyboard ចភាា បមោយមៅបណាា ធាត នេយៗ បស str តែលមពលណា

ដែលអាកមពបើបានច ច Enter មនាោះមទើប ចប កា ោន។ ែមចាោះ gets មានលទធភាពោចោន

យកបានទ Space ន Tab។

Page 146: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

II.2.2. បងាា ញទនានយដែលមានពបមេទជា String

បណាា អន េេនដែលមានេ ខងា សរាបបងាា ញទនានយពបមេទជា String មលើមអពក

េមានែចជា ៖

printf(“Test string”);

puts(“Test string”);

អន េេនទ

ព ខាមលម នោះស ទធដតមានេខ ងា បងាា ញឃលេ Test string មលើមអពក

កបា ដនាវាមានលកេ ៈខ សគាា បនាចពតថា មពកាយមពលបងាា ញ String

ដែលសាតកា សញញា bouble quotមលើមអពក ច ម ើយ អន េេន puts នបញា ន Cursor

មោយច ោះមៅកាន មែើេបនាា តថμ ។

III. Array of String

អាកបានែ ចេកម ើយថា String ោចពតវបានមេ កាទ កមៅកា Array េយ វមាពត។

មៅកា ច ចមនោះ អាកនបានម ើញអព មបៀបមពបើ Array ព វមាពតមែើេប កា ទ ក

String ដែល មែក នេយៗ បសវាពតវបានផា ក String េយម ៀៗខេន។ ច ពនតយមេើល

ឧទ ខាមពកាេមនោះ ៖

#include <stdio.h>

#include <conio.h>

void main()

{

char str[2][50] = { {“To be or not to be , “},

{“that is the question”}

};

int count1 = 0; /* ពបដវ បស String ទ 1 */

int count2 = 0 ; /* ពបដវ បស String ទ 2 */

/* ក តពបដវ បស String ទ 1 */

Page 147: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

clrscr();

while(str[0][count1] != ‘\0′) /* ខ ៈដែលេនដេនជាសញញា ‘\0’ */

count1++; /* បមកើនតនលអមថ រាប */

/* ក តពបដវ បស String ទ 2 */

while(str[1][count2] != ‘\0′)

count2 ++;

/* ពនតយមេើលមតើ String str[0] មានទ ពេបពគានសរាបផា ក String

ទព ខាមលើដែ ឬមទ? */

if(sizeof(str[0]) < count1+count2 + 1)

printf(“\nNot enough space.”);

else

{ /* ចាបមផាើេតនលអមថ រាប count2 ជាថμ ម ើវញ */

count2 = 0;

/* ចលព String ទ 2 បដនាេមៅមលើ String ទ 1 */

while((str[0][count1++] = str[1][count2++]) != ‘\0′ );

/* បងាា ញ String ទ 1 មពកាយមពលចល ចមលើមអពក */

printf(“\n%s”,str[0]);

}

getch();

}

លទធផល បសកេμវធមលើមអពកេ ៖

Page 148: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

To be or not to be , that is the question

ឧទ ទ 2 : មពបើ Array 2 វមាពតមែើេបែម ៀប String

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#include<conio.h>

void arrange(int n, char x[][12]); /*ពបកាសទ អន េេន */

void main()

{

int i, n=0;

char x[10][12];

clrscr();

printf(“Input strings on the difference line \n\n”);

printf(“press \’end\’to finish\n\n”);

/* ោនយកបណាា String ព Keyboard */

do{

printf(“string %d:”, n+1);

scanf(“%s”, x[n]);

}while (strcmp(x[n++],”end”)); /* មពបៀបមធៀបមេើលថាមតើ String ដែល

បានបញច លេ នមនោះជា “end” ដែ ឬមទ? */

/* បនាយតនល n */

Page 149: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

n–;

/* មៅអន េេនមែើេបែម ៀបបណាា String ដែលបានបញច ល */

arrange(n, x);

/* បងាា ញបណាា String មពកាយមពលែម ៀបមលើមអពក */

printf(“\n\nString arranged:\n”);

for(i=0;i<n;++i)

printf(“\nString %d: %s”,i+1,x[i]);

getch();

}

/* ពបកាសអន េេនែម ៀបបណាា String */

void arrange(int n,char x[][12])

{

char temp[12];

int i,item;

for(item = 0;item <n-1;++item)

/* ក ត String តចជាមេមៅកា បណាា String ដែលមៅសល */

for(i = item+1; i<n; ++i)

if(strcmp(x[item], x[i])>0)/* បា ទតា */

{ strcpy(temp, x[item]);

strcpy(x[item], x[i]);

strcpy(x[i], temp);

}

Page 150: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

}

ឧបមាថា មបើអាកបញច ល ៖

hello._

abc._ efgh._ end._

លទធផលមលើមអពកេ ៖

abc

efgh hello

IV. អន េេនេយចននសរាបមពបើជាេយ String

1. strcat សរាបតភាា ប String

ទ អន េេន ៖

char *strcat(char *s1, char *s2);

េ ខងា ៖ សរាបតភាា ប String s2 ពមពកាយ String s1ម ើយភាា បមោយមៅ s1។

/*—— កេμវធ Prog7_1.C ——*/

#include <string.h>

#include <stdio.h>

#include <conio.h>

void main()

{

char destination[25];

char *blank = ” “, *c = “C++”, *turbo = “Turbo”;

clrscr();

Page 151: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

/* ចល String turbo មោយមៅ String destination */

strcpy(destination, turbo);

/* បដនាេ String blank ពមពកាយ String destination */

strcat(destination, blank);

/* បដនាេ String c ពមពកាយ String destination */

strcat(destination, c);

/* បងាា ញ String destination មលើមអពក */

printf(“%s\n”, destination);

getch();

}

លទធផលបងាា ញមលើមអពកេ ៖

Turbo C++

ទ អន េេន ៖

char *strchar(char *s , int ch)

េ ខងា ៖ ដសវ កតអកស ch ែបបផ តកា String s។ ពបសនមបើ កម ើញមនាោះ

អន េេននមបាោះោសយដឋា ន បសតអកស ch កា String s

ដតមបើផា យមៅវញអន េេនមបាោះ តនល NULL។

/*—— កេμវធ Prog7_2.C ——*/

#include <string.h>

Page 152: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

#include <stdio.h>

#include”conio.h” void main()

{

char string[25];

char *ptr, c = ‘r'; /* c ផា កតអកស ដែលពតវដសវ កកា String */

clrscr();

/* ចល String constance មោយមៅអមថ string */

strcpy(string, “hitr ssdferilsdkf”);

/* ដសវ កតអកស c មៅកា String string មបើម ើញ មនាោះភាា បោសយដឋា ន

បសតអកស កា string មនាោះមោយមៅ Pointer ptr */

ptr = strchr(string, c);

if (ptr) /* ពបសនមបើ ptr ខ សព NULL មនាោះបាននយថាបាន កម ើញ c */

printf(“The character %c is at position: %d\n”, c, ptr-string);

else /* ពបសនមបើ ក c កា string េនម ើញ */

printf(“The character was not found\n”);

getch();

}

លទធផលមលើមអពកេ ៖

The character ‘r’ is at position: 3

3. strrchr ដសវ កតអកស េយដែលមៅខាមពកាយបែសនន String

ទ អន េេន ៖

Page 153: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

char *strrchr(char *s , int ch);

េ ខងា ៖ ដសវ កតអកស ch ដែលសាតមៅច មពកាយបែសកា String s។ មបើ សន

មនាោះអន េេននមបាោះោសយដឋា ន បសតអកស ch កា String s ដតមបើផា យ

មៅវញមនាោះអន េេននមបាោះតនល NULL។

/*——- កេμវធ Prog7_3.C ——–*/

#include <string.h>

#include <stdio.h>

#include”conio.h” void main()

{

កម ើញ

char string[25];

char *ptr, c = ‘o'; /* c ផា កតអកស ដែលពតវដសវ កកា String */

clrscr();

/* ចល String constance មោយមៅអមថ string */

strcpy(string, “Welcome to cambodia”);

/* ដសវ កតអកស c មពកាយមេបផ តកា String string មបើម ើញ មនាោះភាា ប

ោសយដឋា ន បសតអកស កា string មនាោះមោយមៅ Pointer ptr */

ptr = strrchr(string, c);

if (ptr) /* ពបសនមបើ ptr ខ សព NULL មនាោះបាននយថាបាន កម ើញ c */

printf(“The character %c is at position: %d\n”, c, ptr-string);

else /* ពបសនមបើ ក c កា string េនម ើញ */

printf(“The character was not found\n”);

getch();

Page 154: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

}

លទធផលមលើមអពកេ ៖

The character o is at position: 15

4. strcmp មពបៀបមធៀប String ព មដឋយដបដចកអកស តច នអកស ធ

ទ អន េេន ៖

int strcmp(char *s1, char *s2);

េ ខងា បសអន េេន េសរាបមពបៀបមធៀប វា String ចននព េ String s1 ជា េយ

String s2 មដឋយមានកា ដបដចកអកស តច នអកស ធ។ ច ពនតយមេើលឧទ

ខាមពកាេមែើេបដសវ យល អព មបៀបមពបើអន េេន។

មពកាយមពលមពបើអន េេនមនោះ មបើមយើទទលបានតនលពអន េេនេ ៖

+ តនល < 0 ពបសនមបើ s1 < s2

+ តនល = 0 ពបសនមបើ s1 = s2

+ តនល > 0 ពបសនមបើ s1 > s2

/*——- កេμវធ Prog7_4.C ——–*/

#include <string.h>

#include <stdio.h>

#include <conio.h>

void main()

{

char *buf1 = “aaa”, *buf2 = “bbb”, *buf3 = “ccc”;

int ptr;

Page 155: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

clrscr();

/* មពបៀបមធៀប String buf2 ជាេយ buf1 */

ptr = strcmp(buf2, buf1);

if (ptr > 0) /* ពបសនមបើ buf2 ធជា buf1 */

printf(“buffer 2 is greater than buffer 1\n”);

else /* ផា យមៅវញពបសនមបើ buf2 តចជា buf1 */

printf(“buffer 2 is less than buffer 1\n”);

/* មពបៀបមធៀប String buf2 ជាេយ buf3 */

ptr = strcmp(buf2, buf3);

if (ptr > 0) /* ពបសនមបើ buf2 ធជា buf3 */

printf(“buffer 2 is greater than buffer 3\n”);

else /* ផា យមៅវញពបសនមបើ buf2 តចជា buf3 */

printf(“buffer 2 is less than buffer 3\n”);

getch();

}

លទធផល បសកេμវធមលើមអពកេ ៖

buffer 2 is greater than buffer 1

buffer 2 is less than buffer 3

5. strcmpi មពបៀបមធៀប String ព មដឋយេμ ានកា ដបដចកអកស តចធ

ទ អន េេន ៖

int strcmpi(char *s1 , char *s2);

Page 156: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

អន េេនមនោះកមធវើកា ែចគាា ជាេយ strcmp ដែ បា ដនាវាេនដបដចកអកស តចធមទ។

បាននយថាវាចាតទ ក “AbCd” កែចជា “ABCD” ន កែចជា “abcd” ដែ ។

6. strcpy ចល String េយមោយមៅ String េយមទៀត

ទ អន េេន ៖

char *strcpy(char *s1, char *s2);

េ ខងា បសអន េេនេ ចល String s2 មោយមៅ String s1 ដតមពកាយមពល ចល ច

String

s2 េនមានដពបពបលតនលម ើយ។ មពលមនោះទនានយចាស បស String s1

ពតវបាន នសមៅមដឋយទនានយថμ បស String s2 មែើេបងាយយល

ច អាកពតលបមៅ

ពនតយមេើលឧទ Prog7_2.C ន Prog7_3.C ននទព ទ 243 ន 244 ខាមលើ។

7. strcspn ក តទតាែប បសតអកស ណាេយកា String មេ

ទ អន េេន ៖

int strcspn(char *s, char *schild);

អន េេនមនោះមានេ ខងា ពនតយបណាា Character កា String s េាេយៗ ចាបព កាល

String s មៅ តែលខាច នន String s ដែលកា ខ ៈមនាោះ ពបសនមបើមាន ប

Character ណា េយដែល មានមៅកា String schild មនាោះកា ពនតយ ពតវបានបញឈប ភាេ េ បនាា បេកភាា បតនលទតា បស Character មៅមពលវាបាន បមនាោះ

មោយមៅមឈμ ា ោះ បសអន េេន។

/*—— កេμវធ Prog7_5.C ——-*/

#include <stdio.h>

#include <conio.h>

Page 157: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

#include <string.h>

#include <alloc.h>

void main()

{

char *string1 = “1234567890”;

char *string2 = “747DC8″;

int length;

clrscr();

/* ពនតយមេើលមតើតអកស បស string2 មានមៅកា string1 ដែ ឬមទ?

មបើមានមតើសាតមៅពតទតាទបា នμ ាននន string1 */

length = strcspn(string1, string2);

printf(“Character where strings intersect is at position %d\n”, length);

getch();

}

លទធផល បសកេμវធេ ៖

Character where strings intersect is at position 3

អន េេនមបាោះតនល 3 មពរោះមពល Scan string1 ែលទតាទ 3 បតមលខ ‘4’ មដឋយ ‘4’

មានកា string2 ែមចាោះវាកបឈឈបកា Scan ពតេមនាោះ ម ើយកមបាោះទតា

មនាោះមោយមៅអមថ length

ដតេា។

8. strspn ក តទតាែប បសតអកស ណាេយកា String មេ

ដែលេμ ានមៅកា String កន

Page 158: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

ទ អន េេន ៖

int strspn(char *s, char *schild);

អន េេននពនតយ String s េយតេា ៗ ពបសនមបើកា s វា បនវ Character

ណាេយដែលេμ ានមៅកា String schild មនាោះវាន បឈឈបកា Scan ពនតយភាេ េ

ម ើយ កមបាោះតនលទតាដែលវាបាន Scan ែលមៅមពលបញឈបមនាោះ

មោយមៅមឈμ ា ោះ បស អន េេន។

/*—– កេμវធ Prog7_6.C ——*/

#include <stdio.h>

#include <string.h>

#include <conio.h>

int main(void)

{

char *string1 = “1234567890”; char *string2 = “1234abcd567″; int length;

clrscr();

length = strspn(string1, string2);

printf(“Character where strings differ is at position %d\n”, length);

getch();

return 0;

}

លទធផលមលើមអពកេ ៖

Character where strings differ is at position 7

length ទទលបានតនល 7 ពមពរោះ មៅមពលវា Scan ែលទតាទ 7 នន string1

វាកបាន ប ‘8’ ដែល ‘8’ មនោះព មានមៅកា string2 មទ ែមចាោះវាកបឈឈបកា Scan

Page 159: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

ពតេមនោះ ម ើយមបាោះតនលទតា មពល បញឈបេ 7

មនាោះមោយមៅមឈμ ា ោះអន េេនដតេា ។

9. សត ែ ផ ចល String េយមៅទ កកា Memory ថμ ដែលបានផគតផគ

មដឋយអន េេន strdup ទ អន េេន

char *strdup(char *s);

អន េេនមនោះមានេ ខងា សរាបផគតផគ Memory មែើេបផា ក String ដែលចល បានព

String s។ មបើអន េេនអន វតាកា ងា បានមជាេ យ មនាោះអន េេននមបាោះ ោសយ-

ដឋា ន បសប ា Memory ដែលវាបានផគតផគមនាោះ មបើផា យមៅវញវានមបាោះតនល

NULL។

/*—– កេμវធ Prog7_7.C ——*/#include <stdio.h>

#include <string.h>

#include <alloc.h>

#include <conio.h>

void main()

{

char *dup_str, *string = “abcde”;

clrscr();

/* ផគតផគ Memory មោយមៅ dup_str មែើេបផា ក String ដែលចលមចញ ព String

string*/

dup_str = strdup(string);

/* បងាា ញ dup_str មលើមអពក */

printf(“%s\n”, dup_str);

/* បងាា ញោសយដឋា ន បស string */

Page 160: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

printf(“string address :%d\n”,string);

/* បងាា ញោសយដឋា ន បស dup_str */

printf(“New address :%d\n”,dup_str);

/* មដឋោះ Memory ដែល dup_str កព ដតមពបើពបាសមចញវញ */

free(dup_str);

getch();

}

លទធផល បសកេμវធេ ៖

abcde

string address : 170 new address : 1484

10. stricmp មពបៀបមធៀប String ព មដឋយេμ ានកា ដបដចកអកស តចធ

ទ អន េេន ៖

int stricmp(char *s1 , char *s2);

ែម ើ កា បសវាែចគាា មៅនែម ើ កា បសអន េេន strcmpi ដែ ចដ កឯ

លទធផល បសវាវញ េមោយែចគាា ជាេយ លទធផល បសអន េេន strcmp

បា ដនាអន េេន មនោះមពបៀបមធៀបមដឋយ េμ ានកា ដបដចកអកស តចអកស ធមទ។

/* កេμវធ Prog7_8.C */#include <string.h>

#include <stdio.h>

#include <conio.h>

void main()

{

char *buf1 = “BBB”, *buf2 = “bbb”;

Page 161: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

int ptr;

clrscr();

/* មពបៀបមធៀប String buf1 ជាេយន buf2 */

ptr = stricmp(buf2, buf1);

if (ptr > 0) /* ពបសនមបើ buf2 ធជា buf1 */

printf(“buffer 2 is greater than buffer 1\n”);

if (ptr < 0) /* ពបសនមបើ buf2 តចជា buf1 */

printf(“buffer 2 is less than buffer 1\n”);

if (ptr == 0) /* ពបសនមបើ buf2 ន buf1 ែចគាា */

printf(“buffer 2 equals buffer 1\n”);

getch();

}

លទធផល បសកេμវធមលើមអពកេ ៖

buffer 2 equals buffer 1

11. strlen kMNt;RbEvgrbs; String

ទ អន េេន ៖

int strlen(char *s);

អន េេនមនោះមានតនាទសរាបក តចនន Character ដែលមានកា String ដតវា

េនបានរាបទសញញា បញច ប String េ ‘\0’ មទ។

/*——- កេμវធ Prog7_9.C ——-*/

#include <stdio.h>

Page 162: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

#include <string.h>

#include <conio.h>

void main()

{

char *string = “Borland International”;

clrscr();

printf(“%d\n”, strlen(string));

getch();

}

លទធផល បសកេμវធមលើមអពកេ ៖21

12. strlwr បា ពអកស ធមៅជាអកស តចទអស

ទ អន េេន ៖

char *strlwr(char *s);

េ ខងា បសអន េេនេ បណាា តអកស ធកា String s ពតវបានបា មៅជាអកស តច

វញទអស។

/*—— កេμវធ Prog7_10.C ——–*/

#include <stdio.h>

#include <string.h>

#include”conio.h” void main()

{

char *string = “Borland International”;

clrscr();

Page 163: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

printf(“String prior to strlwr : %s\n”, string);

/* បា ពអកស ធមៅជាអកស តចវញទអស */

strlwr(string);

printf(“String after strlwr : %s\n”, string);

getch();

}

លទធផល បសកេμវធមលើមអពកេ ៖

String prior to strlwr : Borland International

String after strlwr : borland international

13. strncat បដនាេ n តអកស បស String source មោយមៅ String destination

ទ អន េេន ៖

char *strncat(char *s1 , char *s2 , int n);

េ ខងា បសអន េេន េភាា បបណាា Character ចនន n តែប បស String s2

មោយមៅ

String s1។ ពបសនមបើ n ធជាពបដវ បស s2 មនាោះវានភាា បតនល s2

ទេលបននាេពមពកាយ s1

ដតេា។

/*—— កេμវធ Prog7_11.C ——*/

#include <string.h>

#include <stdio.h>

#include <conio.h>

Page 164: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

void main()

{

char destination[25];

char *source = ” States in usa”;

clrscr();

/* ចល String Constance មោយមៅ destination */

strcpy(destination, “United”);

/* តភាា ប 7 តអកស ែប បស source មោយមៅ destination */

strncat(destination, source, 7);

/* បងាា ញ String destination មលើមអពក */

printf(“%s\n”, destination);

getch();

}

លទធផល បសកេμវធមលើមអពកេ ៖

United States

14. strncmp មពបៀបមធៀប n តអកស ែប បស; String ព ទ អន េេន ៖

int strncmp(char *s1 , char *s2 , int n);

អន េេនមនោះមានេ ខងា មធវើកា មពបៀបមធៀប n តអកស ែប បស String s1 ជាេយន

n តអកស ែប បស String s2 មដឋយមាន កា ដបដចកអកស តចធ។ តនល

បសអន េេនដែលនទទលបានេ ៖

– តនល < 0 ពបសនមបើ n តែប បស s1 តចជា n តែប បស s2

Page 165: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

– តនល = 0 ពបសនមបើ n តែប បស s1 ែចគាា ជាេយ n តែប បស s2

– តនល > 0 ពបសនមបើ n តែប បស s1 ធជា n តែប បស s2

/*—– កេμវធ Prog7_12.C —–*/

#include <string.h>

#include <stdio.h>

#include <conio.h>

void main()

{

char *buf1 = “aaabbb”, *buf2 = “bbbccc”, *buf3 = “ccc”;

int ptr;

clrscr();

/* មពបៀបមធៀប 3 តែប វា buf2 ន buf1 */

ptr = strncmp(buf2, buf1,3);

if (ptr > 0)

printf(“buffer 2 is greater than buffer 1\n”);

else

printf(“buffer 2 is less than buffer 1\n”);

/* មពបៀបមធៀប 3 តែប វា buf2 ន buf3 */

ptr = strncmp(buf2,buf3,3);

if (ptr > 0)

printf(“buffer 2 is greater than buffer 3\n”);

Page 166: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

else

printf(“buffer 2 is less than buffer 3\n”);

getch();

}

លទធផល បសកេμវធេ ៖

buffer 2 is greater than buffer 1

buffer 2 is less than buffer 3

15. strnicmp មពបៀបមធៀប n តែប បស String ព មដឋយេμ ានកា ដប

ដចកអកស តចធ

ទ អន េេន ៖

int strnicmp(char *s1 , char *s2 , int n);

មធវើកា ែចគាា ជាេយ strncmp ដែ ដតវាេμ ានកា ដបដចកអកស តច នអកស ធ

ម ើយ។

/*—– កេμវធ Prog7_13.C ——*/

#include <string.h>

#include <stdio.h>

#include”conio.h” void main()

{

char *buf1 = “BBBccc”, *buf2 = “bbbccc”;

int ptr;

clrscr();

ptr = strnicmp(buf2, buf1, 3);

if (ptr > 0)

Page 167: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

printf(“buffer 2 is greater than buffer 1\n”);

if (ptr < 0)

printf(“buffer 2 is less than buffer 1\n”);

if (ptr == 0)

printf(“buffer 2 equals buffer 1\n”);

getch();

}

លទធផល បសកេμវធេ ៖

buffer 2 equals buffer 1

16. strncpy ចល n តអកស ព String source មោយមៅ String destination

ទ អន េេន ៖

char *strncpy(char *s1 , char *s2 , int n);

អន េេនមនោះមានេ ខងា ចល n តែប បស String s2 មោយមៅ String s1

មដឋយទនានយចាស បស S1 ពតវបាតប។

/*——- កេμវធ Prog7_14.C ——-*/

#include <stdio.h>

#include <string.h>

#include <conio.h>

void main()

{ char string[10];

char *str1 = “abcdefghi”;

Page 168: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

clrscr();

/* ចល 3 តែប បស str1 មោយមៅ string */

strncpy(string, str1, 3);

/* ដឋកសញញា បញច ប String មៅធាត ទ 4 បស string */

string[3] = ‘\0′;

printf(“%s\n”, string);

getch();

}

លទធផលមលើមអពកេ ៖abc

17. strnset បា n តអកស ែប បស String eដឋយតអកស មផសវញ

ទ អន េេន ៖

char *strnset(char *s , int c , int n);

េ ខងា បសអន េេន strnset េពតវ នស n តែប បស string s មដឋយ Character c

វញ។

/*——- កេμវធ Prog7_15.C ———*/

#include <stdio.h>

#include <string.h>

#include <conio.h>

void main()

{

char *string = “abcdefghijklmnopqrstuvwxyz”;

char letter = ‘x';

Page 169: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

clrscr();

printf(“String before strnset: %s\n”, string);

/* នស 13 តែប បស string មដឋយអកស ‘x’ */

strnset(string, letter, 13);

printf(“String after strnset: %s\n”, string);

getch();

}

លទធផល បសកេμវធេ ៖

String before strnset: abcdefghijklmnopqrstuvwxyz

String after strnset: xxxxxxxxxxxxxnopqrstuvwxyz

18. strrev ពត បបញចញញច សតអកស បស String

ទ អន េេន ៖

char *strrev(char *s);

អន េេនមនោះមានេ ខងា បញចញញច សបណាា តអកស កា String s ពខាច េកខា

កាលវញ។ មបើបានអន វតាបានសម ច អន េេននមបាោះោសយដឋា ន បស string

ដែលបាន

បញចញញច ស ដតមបើផា យមៅវញមនាោះអន េេននមបាោះតនល NULL។

*—— កេμវធ Prog7_16.C ——*/

#include <string.h>

#include <stdio.h>

#include <conio.h>

Page 170: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

void main()

{

char *forward = “string”;

clrscr();

printf(“Before strrev(): %s\n”, forward);

/* បញចញញច ស String forward */

strrev(forward);

printf(“After strrev(): %s\n”, forward);

getch();

}

លទធផល បសកេμវធ ៖

Before strrev():string

After strrev():gnirts

19. strset នសបណាា Character បស String េយមដឋយ Character ch vij

ទ អន េេន ៖

char *strset(char *s,int ch);អន េេនមនោះមានេ ខងា បា បណាា តអកស ទអស បស

String s មដឋយតអកស ដែលមាន ASCII

ផា កមដឋយ ch វញ។

/*—— កេμវធ Prog7_17.C ——-*/

#include <stdio.h>

#include <string.h>

#include <conio.h>

Page 171: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

void main()

{ char string[10] = “123456789”;

char symbol = ‘c';

clrscr();

printf(“Before strset(): %s\n”, string);

/* បា បណាា តអកស បស string មដឋយ symbol វញ */

strset(string, symbol);

printf(“After strset(): %s\n”, string);

getch();

}

លទធផល បសកេμវធ ៖

Before strset(): 123456789

After strset(): ccccccccc

20. strstr ដសវ ក String េយកា String េយមផសមទៀត

ទ អន េេន ៖

char *strstr(char *s1,char *s2);

អន េេនមនោះនដសវ ក String s2 ដែលបានមលចម ើែប បែស ន String s1។

មបើសនជា កម ើញមនាោះអន េេន នោសយដឋា ន បស String s2 ដែលកព ដត

មៅកា String s1 មនាោះ ដតមបើផា យ មៅវញ វានមបាោះតនល NULL។

/*—— កេμវធ Prog7_18.C ——*/#include <stdio.h>

#include <string.h>

#include <conio.h>

Page 172: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

void main()

{

char *str1 = “Borland International”, *str2 = “nation”, *ptr;

clrscr();

/* ដសវ កមេើលមតើមាន s2 មៅកា s1 ដែ ឬមទ? */

ptr = strstr(str1, str2);

if(ptr==NULL)

printf(“\nNot found”);

else

printf(“The substring is: %s\n”, ptr);

getch();

}

លទធផល បសកេμវធេ ៖ The substring is: national

21. strupr បា ពអកស តចមៅអកស ធ

ទ អន េេន ៖

char *strupr(char *s);

បណាា តអកស តចកា String s នពតវបានបា មៅជាអកស ធវញទអស។ មពកាយ

មពលបា ច

អន េេននមបាោះោសយដឋា ន បស String s។

/*—– កេμវធ Prog7_19.C ——*/

#include <stdio.h>

#include <string.h>

Page 173: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

#include <conio.h>

void main()

{

char *string = “abcdefghijklmnopqrstuvwxyz”, *ptr;

clrscr();

/* បា បណាា តអកស បស String string មោយមៅជាអកស ធវញ */

ptr = strupr(string);

printf(“%s\n”, ptr);

getch();

}

លទធផល បសកេμវធមលើមអពកេ ៖

ABCDEFGHIJKLMNOPQRSTUVWXYZ

1. មៅកា String មតើសញញា ‘\0’េជាអវ? តនល ASCII េបា នμ ាន?

2. ច នោយអព ទ កាទ កទនានយននកា ពបកាសខាមពកាេ ៖char *str = “My

String”;

3. នោយអពភាពខ សគាា ននកា មពបើ scanf ជាេយ gets មែើេបោន String?

មេម ៀនទ៩: ទពេទនានយជាេយន Struct Keyword

េកែលមពលមនោះ អាកពបាកែជាបានែោាចាស ម ើយអព មបៀបពបកាសអមថ សរាបផា កពេបពបមេទទនានយ ែចជាពបមេទ ចននេត (Integer) ចននទសភាេ

(Floating -point) នពបមេទ តអកស ជាមែើេ (Character)។

េនដតបា មណាណ ោះអាកកបានែអពវ ធ បមតកមសេ ននចននទមនាោះ (Array) នមសេ នន

Page 174: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

Pointer ដែល ចែ លមៅកានទតាណាេយ នន Memory ដែលមានផា ក ទនានយ

ពបមេទណាេយដែលមយើចបាន។ ឧបមាថាអាកពតវកា ស មស កេμវធេយសរាបពេបពេពតមាន បសប េគលកពកេ េ ន “ក”

ម ើយពតមានដែល អាកពតវកា កតពតាព ប េគលក

មនាោះ េមានែចជា មឈμ ា ោះ អតាមលខ កា ពកេ េ ននថដ ៃ ខឆា កម

តោសយដឋា នសាា កមៅបចច បបនាជាមែើេ

ដែលកា មនាោះអាកបានម ើញថាមានពតមានខេោះមាន ពបមេទជា String

នខេោះមទៀតជាតនលមលខ។ ជាកា ពតណាស មពលមនោះមែើេប កាទ ក ទនានយ បស

ប េគលក ទមនាោះ េអាកោចបមកើត Array សរាបពបមេទទនានយនេយៗ ន

កាទ កពតមានទមនាោះ បាន ោាងាយ

កបា ដនាមធវើតាេលកេ ៈមនោះេមានភាពចមែៀតចែល ណាស ពមពរោះវាេនបានអន ញញា ត

មោយអាកោច ចលមៅែលកា ពនតយ មេើល ពតមានអព

ោសយដឋា នសាា កមៅ បសប េគលកមឈμ ា ោះ “សេ”

ឬកពតមានអពនថៃដខឆា កម ើ ត បស កញាញ មឈμ ា ោះ “េ”

បានមដឋយងាយសសលមនាោះមទ េពតវកា ោនពពេប Array ដែល

មានទនាកទនជាេយពតមានដែលមយើពតវកា ជាេយនមលខ លដឋប (Index)

ណាេយោាពតេ ពតវ។ កបា ដនា, កា ភាសា C

បានអន ញញា តមោយមយើមានលទធភាពោចមធវើកា ជាេយទ កា ងា ពបមេទមនោះមដឋយវធេយមផសមទៀតដែលមានលកេ ៈពបមសើជាកា មពបើ Array ែច

ដែលបានម ៀបរាប េ នមនោះ មនាោះេកា ម ៀបចទ ទនានយ ថμ េយ មដឋយរកយេនេោះ

struct។

I. Definition Structure មយើបានសាគ លបណាា ទនានយ មានទ ខេោះៗែចជា Array,

ដែលមានបណាា ធាត មានពបមេទទនានយែចគាា ។ Ex: int x[100];

បា ដនាមបើមយើចបមកើតទនានយមានទ , ដែល បណាា

ធាត បសវាមានពបមេទខ សគាា មនាោះមយើពតវ Declaration វាជាទនានយពបមេទ struct ។

ម ើយោចមៅទនានយពបមេទ struct ថា record កបាន ។

II. Declaration Struct: ទនានយពបមេទ structure ពតវ Declaration មដឋយ Keyword

struct, បនាា បេកជាបណាា

Page 175: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

field បស struct ។

Ex1: Address េមាន មលខផាោះ, មឈμ ា ោះផេវ, ទពក, ែមចាោះមយើោច Declaration

Address ជាេយ

keyword struct ែចខាមពកាេ ៖

struct Address

{ int home,

char street[20];

char city[15];

} A, B;

ឬេាាមទៀតេនបាចមានម ា ោះ បស ; struct មទ, េ Declaration មដឋយផទា ល បណាា

Variable A, B

ែចខាមពកាេ ៖

struct /* No Name */

{ int home; char street [20]; char city[15];

} A, B;

Note: ែមចាោះមយើមាន field បេ Home, Street, City ដែលមាន

ពបមេទទនានយមផសៗគាា ម ើយមានទនាក ទនជាេយគាា បមកើតបាន Address .

មពកាយេកមយើ Declaration Variable A, B ជា struct .

ª មយើោច Declaration struct ន Variable ដឋកមផសពគាា បាន ។

struct Address

{ int home;

char street[20];

Page 176: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

char city[15];

};

Declaration Variable :

struct Address A, B;

Ex2: មែើេប Declaration យៈមពល DATE មយើមាន 3field: នថៃ, ដខ, ឆា ។

struct Date {

unsigned char day; unsigned char month; unsigned int year;

} date1, deta2;

ឬ struct Date date1, date2

មដឋយនថៃ, ដខ, ឆា គាា ចននអវ ាមាន ែមចាោះមយើ Declaration ជា unsigned ។

Ex3: Declaration ពបវតា ប បសប េគលកមាា ក េមាន ៖ មឈμ ា ោះ, នថៃដខឆា កម ើ ត,

ោសយដឋា ន,

ពបាកដខ … struct Date {

unsigned char day; unsigned char month; unsigned int year;

};

struct people { char dat;

struct Date Dob;

unsigned char sex; /*girl = 0, boy = 1*/

struct Address addre;

float salary;

} peopleA, peopleB;

– កា Ex3, មយើសមកតម ើញថា Declaration struct កា struct ។

Page 177: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

– មបើចតាតនលមោយធាត Name មយើស មស ៖

peopleA.Name = “Dara”;

– មបើចតាតនលមោយធាត City េស មស ៖

peopleA.Address.City = “Phnom Penh”;

III. Access to ធាត បស struct:

ជាេយ Declaration :

struct Address

{ int home;

char street[20];

char city[15];

} A, B;

មយើោច Access មៅធាត បស struct ែចខាមពកាេៈ

A.home = 118; A.street = “sihanu”;

A.city = “Phnom Penh”;

ឬមពបើកា Function:

printf (“Enter Name Street:”); gets (A.street);

IV. Declaration Array of struct:

មយើោច declaration array of struct មែើេបផា កទនានយបានមពចើន

Ex: struct people a[100];

ជាកា declaration Array 100, a មានពបមេទជា people ។ កែចជាបណាា array

មផសមទៀតដែ ,array of struct កពតវមាន index ចាបពមលខ 0 មៅដែ ។

Page 178: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

ពនតយឧទ ខាមពកាេៈ

Ex:5 date

{ char Name[80];

int day;

int month;

int year;

}

static struct date dateofbirth [ ] = { “Data”, 10, 3, 1970,

“Bopha”, 22, 4, 1968,

“Vanna”, 11, 11, 1950 };

ឬ static struct date dateofbirth[5];

deteofbirth[2].Name = “Vanna”;

V. ឧទ អន វតាន ៖

ឧទ ខាមពកាេមនោះអន វតាននវអវៗដែលមយើបានម ៀនកនេេកែចជា

array, struct, function…

# include <stdio.h>

# include <conio.h>

# define MAX 100 struct Address {

char name[30];

int homenumber;

char street [20];

char city[15];

} addr[MAX];

Page 179: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

void init_list (void);

void enter (void);

int menu_select (void);

void delete1 (void);

void list (void);

int find_free (void);

main ( )

{ char choice;

init_list ( ); /* create array of struct */

for (, ,) /* loop have no condition */

{ choice = menu_select ( );

switch (choice)

{case 1: enter( ); break;

case 2: delete1 ( ); break;

case 3: list ( ); break;

case 4: exit (0);

}

} }

function init_list មែើេបបមកត

តនល បស array Address ។

/* create list of Address */

void init_list (void)

{ register int t;

Page 180: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

for (t = 0 ; t < MAX ; ++t)

addr[t].name[0] = ‘\0’;

}

/* create menu selete*/

int menu_select (void)

{ char s[80] ;

int c ;

printf (“1. Enter Name \n”); printf (“2. Delete Name \n”); printf (“3. List Name \n “);

printf (“4. Exit \n”);

do {

printf (“\n Please select your choose:”);

gets(s);

c = atoi(s);

} while (c< 0 || c > 4);

return (c);

}

/*Enter Address into list */

void enter (void)

{ int slot ;

char s[80] ;

/* find free space in array for access */

slot = find_free ( );

if (slot = = -1) {

printf (“\n list is full !”);

Page 181: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

return ;

}

printf (“Name :”); fflush(stdin); gets (addr[solt].name);

printf (“Home Number :”);

scanf (“%d”, &addr[solt].homenmber)

while (gecthar ( )!=’\n’;

prinft (“Name street :”); gets(addr[solt].street);

printf(“ City ; fflush(stdin); gets(addr[slot].city);

}

/*find free space */

int find_free (void)

{ register int t;

for(t = 0;addr[t].name[0] && t<MAX;t++)

if (t = =MAX) return (-1); /*No free space*/

return(t);

}

ចណា ៖ មយើមពបើតនល -1 មែើេបពបាបថាអស space ។ តនល-1 ជាតនលដែល array

េន មពបើពបាសជា Index។

/*Delete*/

void delete1 (void)

{ register int slot;

char s[80];

printf (“´Number of Record # :”); gets(s);

Page 182: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

slot = atoi (s);

if (solt >= 0&& slot <MAX)

addr[slot-1].name[0]= ‘\0’;

}

/* Display Data On Screen */

void list (void)

{ register int t;

for (t = 0; t <MAX ; ++t)

{ if (addr[t].name[0])

{ printf (“%s \n”, addr[t].name);

printf (“%d \n”, addr[t].homenumber);

printf (“%s \n, addr[t].street);

printf (“%s \n, addr[t].city);

}

}

printf (“\n\n”);

}

កា function enter( ), មយើមឈើញថា

scanf (“%d”, &addr[slot].homenumber);

while (getchar( ) !=’\n’);

មពលមយើ Read ផាោះមលខ, មយើពតវមពបើសញញា Address & មែើេប Read ។

ចន ចេយមទៀត មយើពតវមពបើ statement while (getchar( ) !=’\n’); មែើេប លសញញា Enter ម ើយមយើច ោះមែើេបនាា តថμ ។ មបើេμ ាន statement មនោះ, មនាោះ statement

Page 183: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

Read េាមទៀតនខ ស។ មបើមយើល ប statement while (gechar( ) !\n’);

មនាោះមពលមយើ Read មឈμ ា ោះ street នេμ ានអវទអស។

VI. បញផល parameter មពកាេម ៀ struct មៅមោយ function :

មពលបញផ ល parameter ពបមេទ struct មៅ function, មយើោចបញផ នបណាា filed

នេយៗ បស struct មៅមោយ struct ។ ឧទ

ខាមពកាេនអធបាយពបញញឌ មនោះ។

struct toto

{ char x; int y; float z;

char s[10];

}tata;

field នេយៗ បស struct នពតវបញផ នមៅមោយ function ែចខាមពកាេ :

func1 (tata.x);

func2 (tata.y);

func3 (tata.s); /*បញផ ន Address បស string s*/

func4 (tata.s[2]); /*បញផ ន value character */

/* មយើោចបញផ ន Address បសបណាា field មៅមោយ function */

func1 (&tata.x);

func2 (&tata.y);

func3 (tata.s) /*បញផ ន Address បស string*/

func4 (&tata.s[2]); /*បញផ ន character*/

+ បញផ ន parameter ជា struct : Ex7:

Page 184: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

#include <stdio.h>

struct type_toto {

int a, b;

};

void f1 (struct type_toto parm);

main ( )

{ struct type_toto arg;

arg. a= 1000;

f1 (arg);

}

void f1 (struct type_toto parm)

{ printf(“%d”, parm.a);

}

VII. Pointer of stuct :

កា Cអន ញញា តមោយមពបើ Pointer point to struct បាន។

Ex:

struct bal {

char name[80] ;

} person ;

strcut bal *p;

េជា Declaration pointer ពបមេទ bal (struct),. ដតេនទនមាន Address ជាកដសា មទ ។

មយើតា

p = &person ;

Page 185: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

មពលមនោះ p ផា ក Address ជាេយធាត បស struct តាេ យៈ pointer point to វាមនោះ,

មយើមពបើពបាស operator ដែលមានសញញា Æ។ ឧបមានច point to field

balance,មយើពតវស មស ៈ p Æbalance; Note: ចមរោះកា Access ជាេយធាត បស

struct តាេ យៈ pointer មនាោះមយើមពបើសញញា Æ ។

ចរោះ access ជាេយធាត បស struct តាេ យៈ variable ធេμតាមនាោះមយើមពបើសញញា (.) ។

Ex8: អធបាយពនា កា ៖

# include <stdio.h>

# define DELAY 128000 struct my_time { int hours;

int minutes; int seconds; int hunds;

};

void display (struct my_time *t); void update (struct my_time *t); void delay (void);

main ( )

{ struct my_time systime ;

systime.hours = 0; systime.minutes = 0;

systime.seconds = 0; systime.hunds = 0; textmode(C40); textbackground(1);

textcolor(14);clrscr ();

for (; /* loop have no condition */

{ update (&systime);

display (&systime);

}

return 0;

}

void display (struct my_time *t)

Page 186: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

{gotoxy(18, 12 ); cprintf (“%02d :”, tÆhours);

gotoxy(21,12); cprintf (“%02d :”, tÆminutes);

gotoxy(24,12) ; cprintf (“%02d :”, tÆseconds);

gotoxy(27,12); cprintf (“%02d ”, tÆhunds);

}

void update (struct my_time *t)

{ tÆhunds ++;

if (tÆhunds = = 100)

{ tÆhunds = 0;

t Æseconds ++;

}

if (tÆseconds = = 60)

{ tÆseconds = 0;

t Æminutes ++;

}

if ( tÆminutes = =60)

{ tÆminutes = = 0;

tÆhours ++;

}

if ( tÆhours = = 24) tÆhours = 0 ;

delay ();

}

void delay (void)

Page 187: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

{ long int t;

for (t = 1; t < DELAY; ++t);

}

Note : លទាផលែចខាមពកាេ ៖

14 : 02 : 55 : 50

– មយើោចដពបពបលតនល បស DELAY មែើេបកេμវធតម ើ កា យតៗ

– កា ដផាកខាមែើេននកេμវធ, មយើ Déclaration struct my_time ដតេនទនមាន

variable

ជាកដសា មទ ។ កា ដផាក main( ) មយើ Declaration systime ដែលមានតនលមែើេ 00:

00:00 ។ មាននយថា systime, ែម ើ កា ដតកា main ( ) ដតប ា មណាណ ោះ ។

– Function update ( ) មធវើមោយដពបពបលតាេ យៈមពល ន function display ( )

មពបើសរាប display result on screen ។ កា Function ទព ស ទាដតមាន parameter ជា

pointer point to my_time ។ In Function update() ន display(), ធាត នេយៗ បស systime ពតវបាន Access តាេ យៈ pointer ។ មដឋយវាោច update

តាេនល យៈមពល ។

VIII. union:union មបើមយើ Declaration variable មពចើនជា Function មនាោះវា មពបើដត block

memory

ដតេយបា មណាណ ោះ, មទោះជាមៅ យៈមពលខ សគាា កមដឋយ ៖ ឧទ

union table { int number; long address; char code;

}; union table a; union table b; union table c;

ែមចាោះ Declaration ជា union មធវ មោយមានកា សនសសនច memory ។

លហាតអន វតាន

Page 188: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

1.1. ច ស មស កេμវធអន វតានខាមពកាេ

a. Read form Keyboard នវ Data នន array of struct ដែលមានពបមេទជា point

ែចខាមពកាេ ៖

struct point { int num ; float x ; float y ;

}

ចននធាត នន array ពតវក ត មដឋយ statement # define b. Display the Result on

screen.

1.2. ស មស កេμវធខាមលើមពកាេរា Function : Funtion េយសរាប Read Data,

Function

េយមទៀតសរាប Display ។

2. សន បដនាេ ៖

union table a;

2.1. ច កចន ចខ សកា struct ខាមពកាេ ៖

struct parts

{ int partno;

char descript[20];

float price;

char *ptr;

2.2. មធវើែចមេាចមែើេបសដែធាត partno បស parts. struct inven

{ int partno ;

}

/* struct inven parts; */

Page 189: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

struct inven parts;

struct inven *ptr = &parts;

a. part.partno b. ptrÆpartno

c. partno d. a ន b

2.3. ច បមកើតមឈμ ា ោះេយមោយ character ទ៣ នន variable name បស address ។

struct fullname{

struct addr

char firstname[20];

char lastname[20];

};

{ struct fullname name ;

char address[60];

char city[4];

}

struct fullname

{ char firstname[20];

char lastname[20];

}

struct addr address;

struct addr *ptr = &address;

a. address.namefirstname[2];

Page 190: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

b. ptrÆname.firstname[2];

c. ចមលើយ a, b ស ទាដតពតវ

d. េμ ានចមលើយពតេពតវមទ ។

មេម ៀនទ១០: កា ទ កទនានយកា File

I. Definition file: File ជាស ននទនានយ ដែលមានទនាក ទន ជាេយគាា នមានពបមេទែចគាា ពតវបាន ផា បញច លគាា បមកើតបាន ជា array of data ។ file

ពតវបានផា កកា Disk … ។

II. Analysis file: បណាា ហាេ នមែើេប analysis file េមាន ៖

– Declaration file variable :

– Open file for read or write :

– Read file, write file :

– Close file.

II.1). Declaration file variable: មយើក តមពបើ fptr ជាមឈμ ា ោះ pointer file

មែើេបមធវើជាឧទ ។ កា ជាក ដសា ,

មយើោច នស fptr មដឋយមឈμ ា ោះណាមផសមទៀតកបាន ។

Statement Declaration មាន Syntax ែចខាមពកាេ ៖

FILE *fptr ;

– FILE ជា Keyword ជានចចជាកាលពតវដតមាន នស មស ជាអកស ធ។

– សញញា * បញញា កថា pointer ។

II.2). Open file for write or read : Syntax open file for write:

fptr = fopen (“filename” , “w” );

Syntax open file for read :

Page 191: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

fptr = fopen (“filename” , “r” );

ឧទ ៈ មបើក file ថμ មែើេប write data (មដឋយ file មានមឈμ ា ោះ ន path)

fptr = fopen (“c:\\TC\\ EXAM.TXT”, “w”);

+ ពបមេទ analysis file មានរាែចខាមពកាេ ៖

– ចមរោះ text file :

“r” : មបើក file ដែលមានសសាបសរាប read (“read only”) ។

“w” : មបើក file ថμ មែើេប write (“write only”), មបើមឈμ ា ោះ file ែចមឈμ ា ោះ file

ចាសមនាោះ file ចាសពតវបានលបមចាល ។

“a” : មបើក file ដែលមានសសាបសរាប write ដថេទនានយ ។

“r+” : មបើក file ដែលមានសសាបសរាប read ន write ។

“w+” : មបើក file ថμ មែើេប write ន read

“a+” : មបើក file ដែលមានសសាបសរាប read ន write ដថេទនានយឭ

– ចមរោះ binary file : “rb” : មបើក binary file ដែលមានសសាបសរាប read, “read

only,binary file”.

“ wb”: មបើក binary file ថμ មែើេប write, “writing only, binary file”

“ab” : មបើក binary file ដែលមានសសាបសរាប write data ដថេ “r+b” : មបើក binary file

ដែលមានសសាបសរាប read ន write “w+b”: មបើក binary file ថμ សរាប read ន

write

“a+b” : មបើក binary file ដែលមានសសាបមែើេប write ដថេទនានយថμ

II.3). Read file ន Write file កា ហាេ នមនោះមានភាព ខ សគាា វាបណាា ពបមេទ បស file នពបមេទ analysis file ។ែមចាោះមយើពតវ សកាកា ឧទ ជាេយបណាា function write, read ។

II.4). Close file: Close file ជាកា ងា ច មពកាយមេបែសកា កា analysis file ។

មានរា ៖

fclose (fptr);

# include <stdio.h>

Page 192: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

main ( )

{FILE *fptr;

fptr = fopen (“sample.dat”, “w”);

if (fptr = = NULL) printf (“\n ERROR – Cannot open”);

else { … /* analysis file */; … fclose (fptr);

}

}

III. Binary file :

III.1) មពកាយពមបើក file ថμ ជាេយ analysis file “w”(writing), ែបមនាោះ file ទមទ

មពរោះេនទន មានធាត ណាទអស, មពលមនាោះ pointer file ន point to ច file េ

(EOF) ខាមពកាយមនោះ ជា ឧទ បមកើត file មាន 1០០ ធាត ដែលមានតនលព 1

ែល 1០០ ។

ឧទ ៖ បមកើត file ននចននេត ៖

# include <stdio.h>

# include <conio.h>

main ( )

{ char filename[21];

int i;

long num; FILE *f1;

printf (“\n Name file:”); scanf (“%20s”, &filename);

f1 = fopen (filename, “wb”); /*open file for writing only */

/* write 100 number into file */

for ( i = 1; i <= 100; i ++)

fwrite (&i, sizeof (int), 1, f1);

fclose(f1);

Page 193: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

}

Note: fwrite (&i, sizeof (int), 1, f1);

– Function មនោះមានសកេμភាព writedataមៅកា file(file write) មានបណាា

parameters

ែចខាមពកាេ

+ &i: address of Variable i

+ ទ បស data ដែលពតវ write មៅកា file

+ Address of file

+ ច មពកាយេ pointer of file

– fwrite អន ញញា តាមោយ write data ជាមពចើនដែលមានទ បា នគាា , មៅកា file បាន ។

+ fopen ( ): ោចមានតនលមសμ NULL, កា ក មានក សែចជា disk full ។

Ex: printf (“Name file:”); scanf (“%20s”, filename);

f1 = fopen (filename, “wb”);

មយើោច នសមដឋយ statement:

f1 = fopen (“Integer.Dat”, “wb”);

III.2) Read binary file: មែើេប Read ធាត ណាេយ បស file ពតវមានលកេខ ៈ មតើ file

មនាោះមៅមានធាត សរាប Read ឬអត ?

(pointer Æ EOF) ។ Function feof ( ) នពបាបមោយែៈ មបើ Read ែលច file មនាោះ

feof ( ) =

True ផា យមៅវញ feof ()= False ។

វធានមែើេប Read file េយមយើមពបើ ៖

មពល Read file, ពតវ Read ធាត file ជាេ នមទើបពតតពនតយមេើល មតើធាត មនាោះជា EOF

ឬអត ?

if ((ch = getc (fp)) != EOF)…

កា មនាោះ function getc (fp) ជា function Read 1 character ឬ 1 byte បស file

Page 194: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

ដែលមាន pointer fileេ fp។ statement មនោះមាននយថា Read 1 character ព file fp

នពនតយមេើលតនល បសវាមសμ EOF ឬ អត ? ឬមពបើ Loop while មែើេបពតតពនតយ ពេបធាត ទអស បស file ដែលមយើ Read . while ((ch = getc (fp)) != EOF) …

មនាោះន Read ធាត ទអស បស file តែល EOF មទើបឈប ។

Ex: Read file of integer number :

#include <stdio.h>

main ( )

{ char filename[21];

int i;

FILE *f1;

printf (“”\n Name file:”); scanf (“%20s”, &filename);

f1 = open (filename, “rb”);

while (fread (&i, sizeof (int), 1, f1), !feof (f1))

printf (“\n%d”, i);

fclose (f1);

}

Note: Statement

while (fread(&i, sizeof(int),1, f1),!feof(f1))

printf(“\n%d”, i);

អន វតានកា Read តនល i, មពកាយេកពតតព នតយមេើល EOF ម ើយឬមៅ ។

syntax:

while (Expression 1, Expression2) <Actions>;

សេេលន

do { Expression 1;

Page 195: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

if (Expression2) <Action>;

} while (Expression2);

ែមចាោះកា កេμវធខាមលើោចស មស ែចខាមពកាេ ៖

do { fread (&i, sizeof (int), 1, f1);

if (!feof (f1))

printf (“\n%d”, i);

} while (!feof (f1));

– ឬ មបើមយើែចននធាត ជាេ ន មនាោះមយើស មស

for ( i = 1; i <= 100; i++)

fread (&i, sizeof (int), 1, f1);

– ក មេេច open file data ពបមេទ binary “rb” ។

* ឥ វមយើមធវើឧទ ជាកដសា : ឧបមាថាមាន file INTEGER.Dat ផា កចននព1

ែល1០០។ មយើ Read ធាត ទ1នទ3នន file ខាមលើម ើយតាមោយ Variable A,B។

Exam: Read 3ចននេត:#include<stedio.h>

#include<conio.h>

main( )

{ int A,B; long num; FILE *f1;

f1=fopen(“Integer.DAT”,”rb”); fread (&A, sizeof (int),1,f1); fread (&B, sizeof (int),1,f1);

fread (&B, sizeof (int),1,f1); printf (“\n A=%d”,A);

printf (“\n B=%d”,B);

fclose (f1); getgh( ); return 0;

}

Page 196: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

Example: Copy ព file ននចននេតមៅ file មផសមទៀត។ កេμវធស មស មពកាេរា

Function:

Ex: copy file of integer:

#include < stdio.h>

#include < conio.h>

main( )

{ char filename1 [21];

char filename2 [21];

int i;

FILE *f1,*f2;

printf (“Name file source:”); scanf (“%20s”,&filename1);

f1=fopen (filename1,”rb”);

prinf (“Name file destination :”); scanf (“%20s”,&filename2);

f2=fopen (filename2, “wb”);

while (fread(&i, sizeof(int),1,f1),! feof (f1))

{

fwrite (&i, sizeof(int),1,f2);

}

f close (f1); f close (f2); return 0;

}

III.3/ write-read file ដែលមាន Data ពបមេទ struct :

Example: បមកើត file ដែលមានទនានយជា struct:

#include<stdio.h>

Page 197: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

#include<conio.h>

#include<string.h>

#define TRUE 1

char ss[80];

typedef struct {

int day;

int month;

int year;

} date;

typedef struct {

char name[80] ;

int homenum;

char street[80] ;

char city[30] ;

float salary;

date dob;

} person;

person read_screen (person poeple);

FILE *fpt;

main( )

{int flag = TRUE;

person poeple;

fpt = fopen (“LIST.DAT”,”wb”);

Page 198: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

person. salary = 0;

while (flag)

{ printf (“\n Name:”); gets (people. name);

if (people. name[0]= = ‘\0’)

break;

people = read_screen(people);

fwrite (&people, sizeof (person),1,fpt);

}

fclose (fpt);

}

*/ ——————- */

person read_screen (person people)

{ printf (“Enter day/ month/ year : ”);

scanf (“%d%d%d”, &people.dob.day, &people.dob.month,

&people.dob.year);

printf (“Home number : ”); scanf (“%d”, &people.homenum);

gets (ss); /* or while (getch ( ) ! = ‘\n’); */

printf (“City : ”);

gets (people.city);

printf (“Street : ”).

gets (people.street);

printf (“Salary :”); scanf (“%f”, &people.salary);

gets (ss);

Page 199: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

return (people);

}

Exam: read data from file struct :

េ នន read file of struct មយើពតវែ struct មនាោះជាេ នៈ មាន field ណាខេោះ ?

ពបមេទទនានយ បស field នេយៗ …

# include <stdio.h>

# include <conio.h>

# include <string.h>

#define TRUE 1

typedef struct { int day;

int month;

int year;

} date;

typedef struct { char name[80]; int homenum; char street[80]; char city[30]; float salary;

date dob;

} person; void write_screen (person); FILE *fpt;

main ( )

{ person people;

fpt = fopen (“LIST.DAT”, “rb”);

while (fread (&people, sizeof(person), 1, fpt), !feof (fpt))

{ write_screen (people);

}

fclose (fpt);

return 0;

Page 200: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

}

void write_screen (person people)

{ printf (“Name :%s \n”, people.name);

printf (“Date of birth :%2d/ %2d/ %2d \n”, people.dob.day,people.dob.month,

people.dob.year);

printf (“Home number :%d \n”, people homenum);

printf (“Street :%s \n”, people.street);

printf (“City :%s \n”, people.city);

printf (“Salary :%8.2 f\n\n”, people.salary);

}

Note: កា ឧទ ខាមលើ, មយើេបបចណាកា Declaration ន open file មែើេប read ជាេយ

“rb”, ន open file មែើេប write ជាេយ “wb” ។

IV. Access មដឋយផទា លមៅធាត បស file binary :

កា C មែើេប access មដឋយផទា លមៅធាត ណាេយ បស file មយើមពបើ fseek :

fseek (fptr, No*sizeof(one_record), SEEK_SET);

Note:

+ fptr: ជា pointer file, វាោចមានមឈμ ា ោះមផសៗ …

+ No: ជាទតាននមលខម ៀ បសធាត កា file ។ (ធាត ទេយ បស file មានមលខម ៀ

(index) មសμ 0) ដតមពលមយើមពបើេ ចាប មផាើេពមលខ ១ ។

+ sizeof(onerecord), មពចើនដតអន វតានមដឋយ function sizeof ( ) ។ ែមចាោះកមនាេ ៖

No *sizeof(onerecord) ;

Page 201: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

+ parameter ច មពកាយកា statement មាន៣ ក ៈ

SEEK_SET (ឬ 0) កលេ នាទតា access ចាបពមែើេ file

SEEK_CUR (ឬ 1) កលេ នាពទតា current pointer file មៅច file ។

SEEK_END (ឬ 2) កលេ នាពច file េកវញ

* មយើនសសាវពជាវកា Access មដឋយផទា លមៅកា file

+ Read data from Keyboard ន create new

+ Read again data from file.

+ Update, data …

Ex: Access មដឋយផទា ល, file មែើេប Read : ឧបមាមយើមាន file ននបណាា ចននេត

នច

access មដឋយផទា លមែើេប Read ធាត ទ No :

# include <stdio.h>

#include <conio.h>

main ( )

{ char filename[21];

int n;

int No;

FILE *f1;

printf (“ Name file:”); scanf (“ %20s” , filename);

f1 = fopen (filename, “ r” );

while (printf (“No :”),scantf (“ %d”,&No)

{fseek (f1, size(int) *(No-1), SEEK_SET);

Page 202: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

fread (&n, sizeof (int), 1, f1);

printf (“ Value find is : %d \n”, n);

}

fclose(f1); getch();

}

Note: ឧទ ខាមលើអន ញញា តមោយមយើ Read មដឋយផទា ល Value

ននធាត ណាេយកា file ។

Ex: access មដឋយផទា លមែើេប update data:

# include <stdio.h>

#include <conio.h>

main ( )

{ char filename[21];

int n;

long num;

FILE *f1;

printf (“ Name file :” ); scanf (“ %20s”,filename)

f1 = fopen (filename,” w”);

while (printf (“No :”), scanf(“ %d”, &num),num)

{printf (“value update:” ); scanf (“ %d”, &n); fseek (f1,sizeof (int)*(num –1),

SEEK_SET); fwrite (&n, sizeof (int), 1,f1);

}

fclose(f1);

Page 203: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

}

Ex: access មដឋយផទា ល : write ន read:

# include <stdio.h>

#include <conio.h>

int main (vod)

{ FILE *strem;

char msg[ ] = “ this is a program for example !”;

char buf[20];

if ((stream = fopen (“ DUMMY.FIL”, “w+” )) == NULL)

{ fprintf (stderr, “cannot open output file.\n”);

return 1;

}

fwrite (msg,strlen (msg) +1, 1, stream);

fseek (streem, SEEK_SET, 0);

fread (buf,strlen(msg) +1, 1, stream);

printf (“ %s\n”, buf);

fclose (stream);

return 0;

}

Ex: update file struct ខាមលើៈ (file LIST.DAT) :

# include <stdio.h>

#include <conio.h>

# define TRUE 1

Page 204: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

typedef struct { int day;

int month;

int year;

} date;

typedef struct { char name[80];

int homenum;

char street[80];

char city[30];

float salary;

} person;

void write_screen (person);

FILE *fpt;

main ( )

{ person people;

int No;

long size, pos;

fpt = fopen (“LIST.DAT”, “rb”);

fseek (fpt, 0, SEEK_END);

size = ftell(fpt);

printf (“No :”); scanf (“%d”, &No);

pos = No *sizeof (person);

if (No < 0 || pos > size)

Page 205: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

printf (“\nHave no record in file”);

else

{ fseek (fpt, pos –1, 0);

fread (&people, sizeof (person), 1, fpt);

write_screen (people);

}

}

void write_screen (person people) {dUcxagelI}

IV.1. Text Files :

បណាា ធាត បស Text file េជាបណាា characters, string, text ។

បណាា Function write មៅកា text file :

putc (ch, fptr); write 1 character មៅកា text file

fputs (str, fptr); write string មៅកា text file

fprintf (fptr,…); សេេល printf ( )

Ex: write string ននបណាា អកស ធមៅកា file:

កេμវធមនោះ Read 1 បនាា ត character ព keyboard ន write មៅកា text file:

# include <stdio.h>

main ( )

{ FILE *fpt;

char c;

fpt = fopen (“c:\\tc\\sample.Dat”, “w”);

Page 206: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

do { putc (toupper (c = getchar ( ) ), fpt);

} while (c! = ‘\n’);

fclose (fpt);

}

ª ចណា មនោះជា Function េ នា text file. ។ Statement putc

ពបាបមោយមយើែថាមនោះជា

file text ។ ជា statement write 1 character មៅកា text file ។

ªStatement openfile :

fpt = fopen (“c:\\tc\\sample.dat”, “w”);

IV.2.Read data from text file : មែើេបមបើក file text :

fopen (…, “r”);

ចណា ៖ “r” មាននយថា Read only

Read data from text file :

កា Read បណាា ធាត ព file មពកាយពមបើក file ម ើយ ៖

getc (fptr); Read charater form text file

fgets (str, fptr); Read string str ព text file fptr ។

fscanf ( ); Read បណាា Value ព text file, សេេល scanf ( );

# include <stdio.h>

main ( )

{ FILE *fpt;

char c;

if ((fpt = fopen (“C:\\TC\\sample.DAT”, “r”)) == NULL)

Page 207: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

printf (“\a\n Erro, Cannot open file”)

else

do { putchar (c = getc (fpt));

} while (c! = ‘\n’);

fclose (fpt);

}

IV.3. លហាតអន វតា ៖

ឧទ ខាមពកាេអធបាយពកា write ន Read បណាា Record មៅកា text file ។

# include <stdio.h>

# include <conio.h>

# include <string.h>

# define TRUE 1

typedef struct { int day;

int month;

int year;

} date;

typedef struct { char name[80]; int homenum; char street[80]; char city[30]; float

salary; date dob;

} person;

Page 208: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

person read_screen (person people); void write_file (person people); FILE *fpt;

char ss[80];

main ( )

{ person people;

int flag = TRUE;

fpt = fopen (“LIST.DAT”, “w”);

people.salary = 0;

while (flag)

{ printf (“\n Name:”); gets (people.name);

if (people.name[0] == ‘\0’)

break;

people = read_screen (people);

write_file (people);

}

fclose (fpt);

}

person read_screen (person people)

{ printf (“Enter day /month/ year:”);

scanf (“%d%d%d”, &people.dob.day, &people.dob.month,

&people.dob.year) ;

printf (“home number :”);

scanf (“%d”, &people.homenum);

gets (ss); /* or while (getchar ( ) != ‘\n’);

Page 209: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

printf (“street:”); gets (people.street); printf (“city:”); gets (people.city); printf

(“salary:”);

scanf (“%f”, &people.salary);

gets (ss);

return (people); }

void write_file (person people).

{ fprintf (fpt, “%d%d%d\n”, people.dob.day, people.dob.month,

people.dob.year);

fprintf (fpt, “%d\n”, people.homneum);

fprintf (fpt, “%s\n”, people.street);

fprintf (fpt, “%s\n”, people.city);

fprintf (fpt, “%f\n”, people.salary);

}

IV.4. បណាា ឧទ េ នា text :

កា ដផាកមនោះមយើសកាពបណាា ឧទ េ នា file text ែចជា copy file,

រាបចននបនាា តមៅកា

text file :

Ex: រាបចននបនាា តមៅកា text file:

# define EOF –1

# define EOL 0x0A /* or ‘\n’ */

int ch, count;

ch = getch ( ); count = 0;

Page 210: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

while (ch != EOF)

{ while (ch != EOL) ch = getchar ( );

count ++;

ch = gatchar ( );

}

ឬស មស េាាមទៀតខេជា ៖

# define EOF –1

# define EOL 0x0A /* or ‘\n’ */

int ch, count = 0;

ch = getchar ( );

while ((ch = getchar ( )) != EOF)

while ((ch = getchar ( )) != EOL)

cout ++;

Ex: រាបចនន character ឬ េ នាទ បស file :

ច រាបមេើលកា file េយមានផា កបា នμ ាន character ?

# include <stdio.h>

# include <conio.h>

# include < stdlib.h>

main (int argc, char *argv[ ])

{ int ch;

char filename[20]; FILE *fp;

Page 211: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

long count = 0;

printf (“\n Name file :”); scanf (“%s”,&filename);

fp = fopen (filename, “r”);

while ((ch = getc(fp)) != EOF)

{ putc (ch, stdout); /*Display character on screen);

count ++;

}

fclose (fp);

printf (“file %s have got %ld character.”, filename, count);

return 0;

}

Note:

+ កេμវធខាមលើអន វតានដតចមរោះ text file ដែលផា ក character កា តារា code ASCII

+ ចនន character ដែល Display on screen តចជាចនន byte ជាកដសា បស file ។

មពរោះ

Function getc ( ) េនរាប character, មែើេបនាា ត ‘\r’ ។ function getc ( ) ចាតទ ក character

‘\r’ ន ‘\n’ ដតេយ character បា មណាណ ោះ ។

ែមចាោះមែើេបរាបមោយពតេពតវចនន byte កា file, មនាោះមយើពតវ openfile មែើេប Read ជា

“rb”:

if ((fp = fopen (argv[1], “rb”)) == NULL)

Page 212: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

មពលមនាោះ function getc ( ) នេនដបដចក character មទៀតវាេ នាពេប

character

ទអសនរាប ចនន byte ទអសកា file ។

VI. បណាា function េ នា file បស turbo C:

frewind( ): នា cursor file មៅទតាននធាត ែប បស file

Ex: ខាមពកាេន Display ម ើវញ អតានយ បស file

ដែលមទើបនបមកើតម ើ ។

មែើេបមធវើកា ងា មនោះ ែបពតវនា cursor file មៅទតាននធាត តប, បនាា បេកមពបើ function fgets ( )

មែើេប Read ម ើវញបណាា តនល បស file ។

# include <stdio.h>

# include <stdlib.h>

# include < conio.h>

# include <string.h>

main ( )

{ char str[80];

FILE *fp;

if ((fp = fopen (“TEST”, “w+”)) == NULL)

{ printf (“Cannot open file .\n”);

exit (1);

}

do { printf (“Enter string:”); gets(str);

strcat (str, ‘\n’); /* add new line */

Page 213: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

fputs (str, fp);

} while (*str != ‘\n’);

/* Now Read And Display Data of file */

frewind (fp);

while (!feof (fp))

{ fgets (str, 79, fp);

printf (str);

}

getch ( );

return 0;

}

+ ferror ( ):

Function ferror ( ) ក តកា េ នា file មានក ស ឬអត ?

– ផាលតនល TRUE មបើមាន error

– ផាលតនល FALSE មបើេμ ាន error

មយើេបបមពបើ ferror ( ) មពកាយព statement េ នា file :

– ch = getc (fp);

if (ferror (fp))…

– putc (ch,fp);

if (ferror(fp))…

+ remove ( ):

Page 214: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

Function remove ( ) ន delete file មចញព disk ។

fflush (stdin) ;

+ fflush ( ): មពបើសរាប clear stdin ។

VII. បញា ន parameter ជា file មៅមោយ function :

Ex: copy file ព ៈ

# include <stdio.h>

main (int argc, char *argv[ ])

{ FILE *fp;

void filecopy (FILE *, FILE *);

if (argc == 1)

filecopy (stdin, stdout);

else

while ( — argc > 0)

if ((fp = open (* ++ argv, “r”)) == NULL)

{ printf (“Cannot open %s \n”, *argv);

return 1;

} else { filecopy (fp, stdout);

fclose (fp);

}

return 0;

}

void filecopy (FILE *fpi, FILE *fpo)

Page 215: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

{ int c;

while ((c = getc (fpi)) != EOF)

}

មយើោចស មស មដឋយ មបៀបេាាមទៀតេ ៖

# include <stdio.h>

# include <stdlib.h>

main (int argc, char *argv[ ])

{ FILE *in, *out;

char ch;

if (argc != 3) { printf (“\n fore got namefile:”);

exit (1);

}

if ((in = fopen (argv[1], “rb”)) == NULL)

{ printf (“Cannot open source file \n”);

exit (1);

}

if ((out = fopen (argv[2], “wb”)) == NULL)

{ printf (“cannot open destination file.\n”);

exit (1);

}

while (!feof (in)) { ch = getc (in);

if (!feof (in)) putc(ch,out);

Page 216: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

}

fclose (in);

fclose (out); gatch ( );

return 0;

}

# include <stdio.h>

# include <stdlib.h>

main (int argc, char *argv[ ])

{ int ch;

FILE *fp;

long count = 0;

if (argc != 2) { printf (“use :%s name file, argv[0]);

exit (1);

}

if ((fp = fopen (argv[1], “r”)) == NULL)

{ printf (“Cannot open %s”, argv[1]);

exit (1);

}

while ((ch = getc(fp) != EOF)

{ putc (ch, stdout);

count ++;

}

fclose (fp);

Page 217: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

printf (“file% have %ld charaacter”, argv[1], count);

return 0;

}

សន

1). មតើោចមពបើ Function gets (fp,…) មែើេប Read បណាា ចននេតកា file F: int *F ?

2). ោចមពបើកេμវធ text Editor មែើេបមេើលអតានយបណាា file int *F, float *F មានឬអត

? មពរោះអវ?

3). command TYPE, PRINT បស Dos អន វតានជាេយ file ពបមេទណា ?

លហាត

1). ស មស កេμវធ create file F3, ផា កបណាា ចននេត, មដឋយ មបៀបភាា ប 2 file

ននចននេត F1 ន F2ជាេយគាា ។

2). ស មស កេμវធរាបចនន character កា text File េយមឈμ ា ោះ F ។

3). េសឬស មស កេμវធបមកើត file ននចននេយ, មដឋយ Read បណាា ចននេតព text

File េយមទៀត ។

បនាា ត នេយៗ បស text file ោចមានផា ក ឬេμ ានផា ក ចននេត,

ឬមានផា កបណាា ចននេតេយចនន ។

5). ស មស កេμវធបមកើត text file ផា កមឈμ ា ោះ, ោយ , ោសសយដឋា ន បសអាក ។

មពកាយេកកេμវធន

Read file មនោះម ើវញមែើេប print មៅ printer អតានយខាមលើ (មដឋយេន សសមាា កមៅមលើបនាា តដត១)។

Page 218: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

6). កា មពល open file ថμ មយើកព open, មនាោះ file

ចាសពតវបានលបមចាល ។

ច កវធានណាមែើេបមបើ ប ក

មនោះមោយវាពបាបមយើថា,fileមនោះមានសសាបមៅមលើ Disk

ម ើយ,អាកកចល បវាមចាល មែើេបបមកើត ថμ ឬអត ?

7). ស មស កេμវធេ នាចននបនាា តដែលមានកា text file េយ ។

8). ស មស កេμវធ Display បណាា file ទអស ។ មពកាយ េក មយើោចល ប

file ណាេយដែលមយើចល ប ។

9). ស មស កេμវធបា មឈμ ា ោះ file ។ មាននយថា ពតវស មស rename មាន Read

parameter ។

10). ឧបមាមាន file text, ដែលបណាា បនាា តនេយផា កព ១ែល ១០០ character

ច ស មស កេμវធបមកើត

file ថμ េយដែលបណាា បនាា ត បសវាផា កពតវ 100 character, បណាា character Read

from keyboard

មេម ៀនទ១១: Data Structures

I. Say about pointer again : pointer ជា variable ផា ក Address (េនដេនផា កតនលមទ)

ែមចាោះ *p ជាទនានយដែលផា កកា Address p. ឬនោយ េាាមទៀត p ជា pointer point

Page 219: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

to variable ដែលផា ក value *p ។

II. Dynamic variable: បណាា variable មានពបមេទទនានយ,

ដែលមយើធាេ បសកាកនេេកែចជា Array, int, float …

មៅថា static variable មពរោះវាពតវបានក តនយេនយជាសសាចេ នមពល

Declaration variable ។ យៈមពលកមកើត static variable េជា យៈមពលនន

កា កមកើតនវកណាតកេμវធដែលផា កវាដែ ។ ដតបណាា Variable

កោចពតវបានកមកើតមដឋយ មបៀប dynamic . មាននយថា កមកើត ម ើមៅមពលមយើ

Run កេμវធ ។ ែមចាោះ Variable មនោះេន ពតវ បានក តនយេនយជាេ នមទ ។ Variable

ពបមេទមនោះមៅថា Dynamic variable ។

Dynamic variable េμ ានមឈμ ា ោះមទ (មពរោះកា ដឋកមμ ោះកា ពត

េកា តាមោយវានវ Address ក តេយ) ។ កា បមកើត Dynamic variable

នល បវាមៅវញ ពតវអន វតានមដឋយដផាកបណាា function ែចជា malloc ( ) ន free ( )

ដែលមានសសាបកា Library <stdlib.h> ។ កា Access ជាេយ

Dynamic variable ពតវអន វតានមដឋយដផែកបណាា Variable ពបមេទ pointer (Pointer

Variable ) ។ បណាា pointer Variable ពតវ ក ត ទនានយ ែចជា Static Variable ដែ ។

(មាននយយថា មានមឈμ ា ោះ នពតវ Declaration ភាេ េមៅដផាកខាមែើេកា ដផាក

Declaration Variable នពតវបានមពបើមែើេបផាក Address បសបណាា Dynamic Variable

) ។Ex1: Declaration pointer នបមកើត Dynamic Variable:

int *pNumber; /*Declaration pointer variable*/

pNumber = (int*) malloc (100) ; /*Create Dynamic Variable*/

កណាតកេμវធខាមលើផាលមោយមយើ 100 bytes កា memory នតា Address of

memory មនោះមៅមោយ pNumber . 100 bytes មនោះមពបើសរាបផា ក 5០

ចននេត។ មបើច បាន memory

មោយពតេពតវសរាប 75 ចននេត, មយើស មស ែចខាមពកាេ ៖

int *pNumber;

pNumber = (int*) malloc (75*sizeof (int));

Page 220: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

ែចគាា ចមរោះបណាា កា Declaration មផស, មយើស មស ៖

char *cPtr;

cPtr = (char *) malloc (l50*sizeof (char));

float *fPtr;

fPtr = (float*) malloc (55*sizeof (float));

មយើនសកាឧទ សាអព malloc function ែចខាមពកាេ ៖

Ex2: មពបើ Function malloc (memory allocaion)

# include <stdio.h>

# include <conio.h>

# include <string.h>

# include <alloc.h>

# include <process.h>

int main (void)

{ char *str ; /*allocate memry for string*/

if ((str = ( char *) malloc (10) = = NULL)

{ printf (“\n there isn’t enough memory”)

exit (1);

}

/* copy “Hello” into string */

strcpy (str, “Hello”);

/* free memory */

free (str);

return 0;

Page 221: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

}

Note: កា ឧទ ខាមលើ, មយើបាន Declaration pointer string str ។

បនាា បេកកណាតកេμវធ

if ((str = (char*) malloc (10) = = NULL)

{ printf (“\n there isn’t enough memory”);

exit (1);

}

នម ៀបច dynamic memory សរាប 10 chapters នកា ែណាក

កាលមនោះមានកា ពតតពនតយមេើល computer មាន memory ពេប ពគាន ឬអត ?

មដឋយ មបៀបពតតពនតយមេើល លទាផល pointer str មានតនលជា NULL ឬអត ?

មយើោចមពបើ function farmalloc មែើេបផាលនវ memory ធជា malloc ។

Function exit (1) យកមចញព file < process.h> Statement (char *) malloc (10)

មយើយលថា ម ៀបចផាល dynamic memory ពបមេទ char ន លទាផល បសវាជា

Address តប បស memory . Function មនោះអន វតានចមរោះពបមេតទនានយ ៖ int,

float, long, char, double ….

លទាផល បស statement

មនោះជានចចជាកាល ជា address េយ នជា Address ែប បស memory ដែលពតវផាល,

កា មនាោះ data type ជាទនានយ ។

Syntax: (datatype*)

ជាពបមេទ pointer ។ ឧទ (float) n មាននយថា convert n

មោយមៅជាចននពត ។ (datatype *) convert ជាពបមេទ pointer point to datatype ។

ែមចាោះមយើោចស មស ែចខាមពកាេ ៖

pointer malloc(sizeof(memory))

Page 222: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

កា កា ចបមកើត Dynamic memory មោយពបមេទទនានយ េនដេនជា int, float,

long, double, មរលេពបមេទ ទនានយដែលមយើជាអាកបមកើត, មយើពតវមពបើ function

calloc ( ) .

Syntax:

(datatype*) calloc (n, sizeof (object));

Ex:

struct persont {

char name[80];

int age;

char Address[25];

};

struct person *ptr; /* Declaration pointer person */ ម ើយមយើបមកើត memory

សរាបមោយ 10 នាក ែចខាមពកាេ ៖

calloc (10, sizeof (struct person));

Ex3: មពបើ Function calloc មោយ string :

# include <stdio.h>

# include <alloc.h>

# include <string.h>

int main (void)

{ char *str = NULL ;

/* allocate memory for string */

str = (char *) calloc (10, sizeof (char));

/* copy “Hello” into string */

strcpy (str, “Hello”);

Page 223: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

/* display string */

printf (“\n String is %s \n”str);

/* free memory */

free (str);

return 0;

}

Function realloc ( ) ជា function បមកើតម ើវញនវ memory :

(datatype *) realloc (buf_ptr, newsize);

កា មនាោះ buf_ptr ជា pointer កព point to memory ដែលពតវ បានបមកើត

ផាលមោយពមលើកេ ន។ newsize ជាទ ថμ ដែលពតវ បមកើត នផាល ោចធជា

ឬតចជាេ ន ។

Ex4:

# include <stdio.h>

# include <conio.h>

# include <string.h>

int main (void)

{ char *str ;

/* allocate memory for string */

str = (char *) malloc (10);

strcpy (str, “Hello”);

printf (“ \n string %s \n Address %p \n”, str, str);

str = (char*) realloc (str,20);

printf (\n string %s \n New Address %p \n”str, str);

free (str);

Page 224: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

return 0;

}

III. Heap memory ន មបៀបបមកើត Dynamic variable :

បណាា dynamic variable ដែលបមកើតម ើមដឋយ malloc ពតវបាន C ម ៀបមៅកា Block

free memory មៅថា HEAP ។ ភាសា C ពេប ពេ Heap តាេ យៈ pointer of Heap េ

HeapPtr ។ pointer of Heap ជានចចជាកាល point to bype free ែប បស Block free

memory បស Heap ។ រាលមពល call malloc ( ), pointer of Heap ពតវបាន

ផទេ សទតាដផាកខាមលើនន block free memory បណាា byte េយចននសេេល

នទ បស dynamic variable ដែលមទើប បមកើត បាន។ ចមរោះអាកស មស កេμវធ,

Heap េជាេកដឋា នពេោះដែល ពតវកាា បមោយបាន ។

Ex5:

កចនន prime

# include <stdio.h>

# include <conio.h>

main ( )

{long *primes = NULL, *start = NULL, *open = NULL, trial = 0;

Page 225: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

int i = 0, found = 0; total = 0;

printf (“\n How many primes :”); scanf (“%d”, &total);

primes = (long*) malloc (total*sizeof (long));

if (primes = = NULL)

{printf (“\n there isn’t enough memory !!”);

return 0;

}

/* 3 primes តបដែលមយើែ */

*primes = 2;

*(primes+1) = 3;

*(primes+2) = 5;

open = primes + 3; /* យក Address free បនា បនាា បមទៀត */

trial = 5;

do { trial + =2; /* យកតន បនាបនាា បមទៀតមែើេបពតតពនតយ */

start = primes; /* start point to ដផាកែប បសprime */

found = 0;

for (i = 0; i < open-primes; i++)

if (found = (trial % *start ++) = = 0) break;

if (found = = 0) /* កម ើញចននថμ */

*open ++ = trial;

} while (open – primes < = total);

for (i = 0; i <5 *(total /5); i+ = 5) /*display 5 មលខេា */

Page 226: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

printf (“\n%12ld %12ld %12ld %12ld %12ld”, *(primes + i),

* (primes +i + 1), *(primes + i +2), *(primes +i +3),

*(primes +i + 4));

printf (“\n”);

for (i = total – (total%5); i < total; i++ )

printf (“%12d”, (primes +i )); /*display ដផាកមៅសល */

}

The Result is

IV. Linked List :

មពលមយើចបមកើត List េយ, ឧទ List of Employee, ម ើយមយើែចនន

េន សសពតពបាកែ មនាោះមយើោច មពបើ Array of struct មែើេបបមកើត

មពរោះវាមានលកេ ៈងាយសសល ។ ដតមបើមយើេនសាគ លចននេន សសជាេ នមនាោះ

មយើេបបមពបើ Dynamic Variable, មពរោះវាមានលកμ េ ៈ កា កា សនសសនច memory

(មពល ណាមយើពតវកា មទើបមយើបមកើតវាេកមពបើ) ។ Memory មពបើ សរាប static

Variable ទអសកា computer IBM_PC េមានដត 64KB មរលេេយ Segment ។

a/ Create a Linked List: ច ស មស កេμវធបមកើត Linked List នន employee េយ

Ex:

# include <stdio.h>

# include <conio.h>

# include <alloc.h>

struct employee { char name[30];

int age;

Page 227: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

struct employee *next;

};

main ( )

{ struct employee *last; struct employee *ptr; char name[30];

last = NULL;

/* Read form Keyboard to List */

do { printf (“\n name :”); gets (name);

if (name[0] != ‘\0’)

{ ptr = calloc (1, sizeof (struct employee ));

/*Read Value of employee */

strcpy (ptrÆname, name); /*ptrÆname = name */

printf (“\n Age :”); scanf (“%d”, &ptrÆage);

while (getchar ( ) != ‘\n’);

ptrÆnext = last;

last = ptr;

}

} while (name[0] != ‘\0’);

/* control and read again to list */ printf (“\n\n List of Employee :”); ptr = last;

while (ptr != NULL )

{ printf (“Name : %s \n”, ptrÆname);

printf (“Age : %d \n\n”, ptrÆage);

ptr = ptrÆnext; /* ptr point to next record */

} getch ( ); return 0;

Page 228: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

}

Explain: ឧបមាមយើ Read បញច លតាេលដឋប ៖ Mr one, 1 age, Mr two, 2 age…

last េជា pointer Variable, ជានចចជាកាល point to last of list ។ មពលចាបមផាើេ Run

program េមយើតា

last = NULL មាននយថា List Empty ។

+

Loop ទ២ ៈ ptr = calloc (1, sizeof (struct employye));

strcpy (ptrÆname, name);

printf (“Age :”), scanf (“%d”, &ptrÆage);

while (getchar ( ) != ‘\n’);

ptr Æ next =

last;

last = ptr;

Page 229: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

Linked List

ែចខាមលើមៅថា LIFO (Last In, First Out) មៅថា Stack(ចលេ នមចញមពកាយ,

ចលមពកាយមចញេ ន) ។

Name : MrOne

Age : 1

Name: Mr two

Age : 2

List of Employee: Name : Mr Two

Age : 2

Name : Mr One

Age : 1

b/ Insert : មពលមនោះមយើចដថេធាត ថμ ទ៣ (Mr Three, Age 3)

មៅកណាា លធាត ពេ នៈ (ឧបមាថាមយើមពបើ last មៅ pointer point to last of list

ែចខាមលើ )

struct employee *Q;

Q = calloc (1, sizeof (struct employee));

strcpy (QÆname, “Three”); QÆAge = 3;

/* find position to insert */

ptr = last;

while ((ptr != NULL) && (strcmp (ptrÆname, “Mr Two”)))

ptr = ptrÆnext;

Page 230: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

QÆnext = ptrÆnext;

ptrÆnext = Q;

c/

Function Create List : កា ដផាកខាមលើ, មយើបានបមកើត Linked List

ែចកា ឧទ , មយើច updat វាដថេ មទៀត មដឋយ មពបើ Function create List :

Void create_list (struct people ** first);

កា មនាោះមយើមពបើ first មៅ pointer point to pointer point to ធាត េយ បស list ។

មាននយថាមយើដថេធាត ថμ (New record) េយមៅកា list

បសមយើពតទតាដែល pointer first េ នមនោះ កព point to មនាោះ ។

Ex7: Function create list :

# include <stdio.h>

# include <conio.h>

# include <stdlib.h>

# include <alloc.h>

struct person {char name[30];

int age;

struct person *next;

};

void create_list (struct person **first);

Page 231: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

main ( )

{struct person *last;

create_list (&last);

printf (“\n\n List of Employee : \n”);

ptr = last;

while (ptr!= NULL)

{printf (“Name :%s \n”, ptrÆname);

printf (“age :%d \n\n”, ptrÆage);

ptr = ptrÆnext; /* ptr point to next record */

}

getch ( );

return 0;

}

void create_list (struct person **alast)

{ struct person *ptr;

char name[30];

*alast = NULL;

do {printf (“\n Name :”); gets(name);

if (name[0]; != ‘\0’)

{ ptr = colloc (1, sizeof(struct person));

strcpy (ptrÆname, name);

printf (“Age :”);

scanf (“%d”, &ptrÆage); while (getchar ( ) != ‘\n’); ptr Æ next = *alast;

Page 232: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

*alast = ptr;

}

}

while (name[0] != ‘\0’);

}

d/ Delete :

ផា យព insert, មរលេល បេយ Record មចញព List, ។ ឧទ ចល ប record

ដែលមានមឈμ ា ោះ Tree មចញព list មពលមនាោះ មយើពតវ មពបើ Q កា មពល ក Record

ដែលមានមឈμ ា ោះ Three ។ មពល កម ើញម ើយមយើល បវាមចញ មដឋយ មបៀប

ព ោាខ សគាា ។

Struct person *Q, *P;

/* Search record for delete */ P = last; name = “three”;

while ((P != NULL ) && (strcmp (PÆname, name )))

{ Q = P;

P = PÆnext ;

}

/* delete */

if ( P == last ) last = PÆnext;

else QÆnext = PÆnext;

e/ Parameter is a pointer dynamic :

dynamic Variable ោចមពបើជា Parameter បស subprogram បាន, ឧទ

មយើស មស Function Insert ែចខាមពកាេៈ

void insert (person * Q);

{ …

Page 233: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

} ;

មយើោចស មស Function េយដែលមានលទាផលជា pointer ។

* person TT (peron *last);

{ struct person *p1, *p2;

p1 = last;

last = NULL;

do { p2 = p1Ænext; p1Ænext = last; last = p1;

p1 = p2;

} while (p1 == NULL );

return last;

};

+ េ នមពលមៅ Q = TT (last);

+

មពកាយពមៅ Q = TT (last); Q

f/

ពបមេទទនានយ FIFO :FIFO (First In First Out) ជាពបមេទ Memory

ដែលទនានយណាចលេ ន មចញេ ន ចលមពកាយ មចញមពកាយ។

Page 234: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

Ex8:

# include <stdio.h>

# include <conio.h>

# include <alloc.h>

# include <stdlib.h>

struct person {char name[30];

int age;

struct person *next;

} people;

main ( )

{ struct person *last, *first, *ptr;

char name[30];

first = NULL;

do {prinf (“\n Name :”); gets (name);

if (strcmp (name, “”)) /* create new record */

{ptr = colloc (1, sizeof (struct person));

strcpy (ptr Æ name, name );

printf (“Age : “); scanf (“%d”, &ptr Æ age);

ptr Æ next = NULL;

if (first != NULL) last Æ next = ptr;

else first = ptr;

last = ptr;

while (getchar ( ) != ‘\n’);

Page 235: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

};

} while (name[0] != ‘\0’);

/* Record FIFO again */

ptr = first;

while (ptr != NULL)

{printf (“%s\n”, ptr Æ name);

printf (“%d\n”, ptr Æ age);

ptr = ptr Æ next;

};

}

សន

1. ឧបមាមាន x ន y មានពបមេទជា pointer ែចគាា ។ ស ថា ពបមា វធខាមពកាេ

x = y ;

ន *x = *y ;

មតើសេេលនគាា ឬអត ? (ច ពនយល ) ?

Page 236: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

2. អធបាយសកេμភាព បស FIFO មដឋយេសកនសបពពញជាេយ Algorithm

delete ន

insert ។

3. ច print Address បស Variable ណាេយេកមលើ screen ។

4. ស មស កេμវធអធបាយពកា បមកើត Linked list

5. ច ពនតយកេμវធខាមពកាេមានក សអវខេោះ ? ច ដកក ស ?

struct Myrecord { int Num; Myrecord *next;

};

struct Myrecord *Head, * Tail, *T;

{ /* ឧបមាមយើបានបមកើត linked list 20 node, ដែល Head ន Tail point to node

ែបន node ច មពកាយ ។ មយើពតវល ប node ទអសកា មពលដតេយ */

T = Head;

while (T != NULL)

{Dsiplose (Head);

Head = Head Æ Next; T = Head;

};

Head NULL; Tail NULL; T NULL;

}

Posted in មេម ៀន, មេម ៀន C Programming |

មេម ៀនទ១២: ពកាេច GRAPHIC

Page 237: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

Posted on by TEAV Chhun Nan (ទនាកទន ផាយរ ាកេម 077778647-

070778647)

មេម ៀនទ១២: ពកាេច GRAPHIC

I.

សញញា ទមៅនន GRAPHIC : កា សដែទនានយេកមលើ SCREEN កា Turbo C

មាន បបព េ ៖Text ModeនGraph Mode ។ Graph Mode

េនដេនជាខាា តេ បសពេបភាសា ន មាាស នក ពយទ មទ។ មពរោះកា េសពកា វចមលើ Screen, ោសសយ មដឋយ ពបមេទក ពយទ នេយៗ, ោសសយមដឋយពបមេទ Screen

នេយៗ ,,,,,។ មែើេបេស ប,

ផទតព បភាព,,,,មៅមលើក ពយទ ,មយើពតវបា ច នាអេគសនបញញា Screen ពText

ModeមៅGraph Mode។

ក ពយទ , IBM – PC/XT /AT សពវនថៃមានមពចើនពបមេទខ សគាា ែចខាមពកាេ ៖

– CGA : Color Graphic Adater : ច នាអេគសនបញញា Screen Color

+ (640 * 200) (មានោបស ស 640 Pixel, មានអ មដឋមន 200Pixel ) មានព ព

+ (320*200) មានបនព ។

– MGDA : Monochrome Graphic Display Adapter ឬ Hercule :

ច នាអេគសនបញញា Screenស-មខμម (monochrome),

+ 720 * 348 (មានោបស ស 720Pixel,មានអ មដឋមន 348Pixel )

− EGA : Enhanced Graphic Adapter : ច នាអេគសនបញញា Screen Color

Page 238: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

+ 640 * 350 នោចមព ើសម ើសបាន ១៦ព ។

– VGA : Video Graphic Array : 640 * 480

Super VGA : 1024 * 768 : ោចមព ើសម ើសបានែល ២៥៦ ព ។

II. បណាា FILE បស Graphic : មពលមពបើ Graphic ជាេយ Turbo C មៅមលើ Disk

មយើពតវ Copy បណាា File សខានៗ បស Graphic ែចខាមពកាេ ៖

*.TPU

*.BGI

*.CHR

នមៅមែើេកេμវធ មយើពតវ Proto Type មែើេបមពបើ GRAPH.TPU ែចខាមពកាេ ៖

# include<graphics.h>

+ បណាា File *.BGI (BGI : Borland Graphic Interface ) េជាបណាា File

ផា កបណាា ឃលេ បញញា Screen មផសគាា ែចជា ៖

CGA.BGI ; EGAVGA.BGI ; HERC.BGI ;

+ បណាា File *.CHR ជាបណាា File ផា កបណាា ឃលេ បញញា សរាបេសពបមេទអកស កា

Graphic។

ែចជាបណាា File ខាមពកាេមនោះ ៖

GOTH.CHR (អកស Gothic) LITT.CHR (Small Font) SANS.CHR (អកស Sons Serif)

TRIP.CHR (អកស ធជា៣ែ ,Triplex)

មែើេបងាយយល មបៀបមពបើពកា វច, មយើពនតយ ឧទ េស

បនាា តពេ ដកខាមលើដផាក ខាមឆវច ោះេក េ ដក ខាមពកាេ ដផាកខាសាា ៖

# include<graphics.h>

# include<conio.h>

main()

{ int gd=DETECT, gm ,errorcode ; initgraph(&gd,&gm,”C:\\TC\\BGI”); errorcode

=graphresult () ; if(errorcode != grOk())

{ printf(“ Graphics error : %s \n “,grapherrormsg(errorcode));

printf(“ Press any key to halt : “); getch();

exit(1);

Page 239: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

}

moveto(0,0) ; (* នា Cursor Graph មៅចន ចេ ដកខាមលើ,ដផាកខាមឆវ *)

lineto(getmaxx(),getmaxy() ) ; (* េសបនាា ត *)

getch();

closegraph();

}

Statement initgraph មានទ Declaration ែចខាមពកាេ ៖

initgraph( &graphdriver , &graphmode , driverpath ) ;

េជា Statement បមកើត (Greate Graphics) ពកា វច កា មនាោះ ៖

+ graphdriver ផា កតនលក តពបមេទ Screen :

0 DETECT 3 EGA 6 IBM8514 9 VGA

1 CGA 4 EGA 64 7 HercMono 10 PC3270

2 MCGA 5 RGAMono 8 ATT 400

+graphmode ផា កតនលក ត Mode ពកា វច ។

+driverpath ពបាបមោយ Turbo C សាគ ល Directory ដែលផា កបណាា File បញញា ពកា វច

។ តារាខាមពកាេមនោះបងាា ញមោះ បសបណាា តនល បស GraphDriver,graphMode :

graphdriver graphmode

CGA CGAc0,1,2,3,4 320 * 200 CGA

CGAHi 640 * 200 CGA

MCGA MCGA0,,1,,2,,3 320 * 200

MCGAMed 320 * 200

MCGAHi 640 * 480

EGA EGALo 640 * 200 Ù CGA

EGAHi 640 * 350

EGA64 EGA64 Lo 640 * 200 Ù CGA

EGA64 Li 640 * 350

EGAMono EGAMono Hi 640 * 350

VGA VGA Lo 640 * 200

VGA Med 640 * 350

VGA Hi 640 * 480

HercMono HercMonoHi 720 * 348

ATT400 ATT400 C0,1,2,3 320 * 200

ATT 400 Med 640 * 400

ATT 400 Hi 640 * 400

PC3270 PC 3270 Hi 720 * 350

IBM8514 IBM8514 Lo 640 * 480 ,, 256COLOR

IBM8514 Hi 1024 * 768 ,,

Page 240: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

256COLOR

Statement initgraph មាន Variable 2 េ : &gd, &gm ។េ នមនោះ មបើសនជា graphdriver

ពតវបានកនត មដឋយតនល DETECT មនាោះ initgraph នកនតយក graphdriver ន

graphmode ដែលលែ បផ ត (មេើលកា តារា ខា មលើ)។ លទធផលនផាលមោយ

&gd, &gm សេេលន graph diver, graphmode ។ កា ក Screen មាន Mode

មពចើនពបមេទខ សគាា , មយើោច មព ើសម ើស gaphdrver, GraphMode សេ េយ មដឋយេន

មពបើ មបៀបកនតតនលមោយ Gd = DETECT;ដតមយើក ត តនល សេ េយមោយ gd

ន gm េ នមពលមៅ initgraph ។

Ex : gd = EGA ; gm = EGAHi ;

initgraph(&Gd,&Gm, “ C:\\ TC\\BGI” ) ;

graphgesult េជា Function បស Tur bo C ,វាមោយមយើែ ព សាា នភាព បស Graphic

Function មានតនលែច កា តារាខាមពកាមនោះ ៖

មឈμ ា ោះ តនល RbePT kMhus

grOk() 0 OK, េμ ានក ស

grNoInitGraph() -1 េនទនែម ើ កា បាន

grNotDetected() -2 អតមានដផាក HardWareGraph

grFileNotFound() -3 អត កម ើញបណាា File បញញា

Graph

III. បណាា Statement មពបើជាេយGraph :

a, moveto(x,y) ;

េជា Statement បញា នទតា CP(Current-Position) មៅចន ច ដែលមានកអ មដឋមន

X,Y។ Cursor កា Screen graph ក ត មដឋយ កអ មដឋមន

វាអតមានចន ចេេមលាតេេបមេេតៗែចកា ScreenText មទ ។

Page 241: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

អន េេន getx(), gety()

ផាលនវកអ មដឋមននន Cursor-Graph.

b,lineto (x,y); េជា Statement េសបនាា តពតពទតា Cursor-Graph

បចច បបនាមៅចន ចដែលមានកអ មដឋមន (X,Y) បនាា បព េស ច Cursor-Graph

សាតមៅទតាថμ ដែលមានកអ មដឋមន (X,Y)

Function getmaxx(),getmaxy(),មពបើមែើេបេ នាចននចន ច អតប មាតាេអកស ោបស សនអកស អ មដឋមន ។ មាននយ ថា, ជាកអ មដឋមនចន ចនន េ ដកខា មពកាេ

ដផាកខាសាា ។

Ex ចមរោះ EGA Screen, មនាោះ getmaxx = 639, getmaxy = 349 ។

+មែើេប កា Screen-Graph កា កា ពនតយមេើលលទធផលមយើមពបើ Statement getch() ។

+មែើេបបញា ប Graph Mode មយើមពបើ Statement closesgraph() ;

IV. Function េសចន ច ៖

Function េសចន ចមានលកេ ៈជាេលដឋា ន, មពរោះចន ចបមកើតបាន

ជា បភាពមផសៗមទយត ។

putpixel(int x, int y ,int color) ;

េសចន ចេេពតទតាដែលមានកអ មដឋមន (X,Y) មានព ជា Color ។

getpixel( int x, int y ) ;

ជា Function បងាា ញពបាបព បចច បបនាពតចន ច (X,Y) ។

V. Function េសបនាា តពត ៖

Page 242: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

line(int x1, int y1, int x2, int y2 ) ;

ជា Function េសបនាា តពតពចន ចដែលមានកអ មដឋមន (X1,Y1) មៅចន ច (X2,Y2)។

វាេនោសសយមៅន ទតានន CP ( Current-Position) ។ មពកាយពេស ច

CPនសាតមៅពតចន ច (X2,Y2) , មពលមនាោះ LineTo(X,Y) ន េសបនាា តពទតា CP

មៅចន ច (X,Y) ។

linerel( int dx, int dy ) ;

ជា Function េសអកតពតពទតា CP មៅចន ចថμ ដែលមានកអ មដឋមន (X + dx, Y

+ dy)។

មពកាយពេស ច , CP សាតមៅចន ចថា (X+dx,Y+dy)។

VI. Function េស វ ៖

circle(int x, int y , int R ) ;

ជា Function េស វដែលមានផចតពតចន ន (X,Y), មានកា R ។

pieslice( int x, int y , int start, int end ,int R ) ;

ជា Function េសដផានន វ ។

ellipse(int x, int y , int start , int end ,int dx , int dy) ;

ជា Function េស Ellipse ។

VII. សដែអតាបទមលើ SCREEN GRAPH-MODE :

កា graphmode, Statement printf() ន cprintf() េនសសបន ScreenGraph

មទមពរោះវាមពបើខាា តកអ មដឋមន ជាចនន character ។

មយើមាន Function ព សរាបសដែអតាបទមលើ ScreenGraph :

– outtext (char *st) ;

Page 243: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

សដែអតានយ បស St ពតចន ច CP (Current Position) មៅមលើ ScreenGraph ។

– outtextxy ( int x, int y , char *st ) ;សដែអតានយ បស St ពតចន ច (X,Y)

មៅមលើ ScreenGraph ។ ែមចាោះ outtextxy

សេេលន Command ពខាមពកាេ ៖

+ moveto (x,y) ;

+ outtext (*st) ;

– settextstyle (font, direction, charsize) ;

ក តពបមេទអកស ជាេយ ៖

+ពបមេទ Font អកស ៖

- DefaultFont = 0 ;

-TriplexFont = 1 ;

- SmallFont = 2 ;

– SansSerifFont = 3 ;

- GothicFont = 4;

+Direction : HorizDir = 0 ; VertDir = 1 ;

+ CharSize :

CharSize ទទលតនលព ១ ែល ១០, ជាមេេ មែើេបពពកតអកស ។

– restorecrtmode() ;

Function មនោះមពបើសរាបពតលបមៅ TextMode បមណាា ោះអសនា ។

– setgraphmode() ;

Function មនោះមពបើសរាបពតលបមៅ GrapgMode វញ ។

Page 244: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

– closegraph() ;

Function មនោះមពបើសរាបបទ GrapgMode ម ើយពតលបមៅ TextMode វញ ។

VIII. Procedure េសចត មកា ដក ៖

– rectangle(int x1, int y1, int x2, int y2 ) ;

េសចត មកា ដកដែលមាន (X1,Y1) ជាកអ មដឋមនននចន ច េ ដក

ខាមលើដផាកខាមឆវ, ន

(X2,Y2) ជា កអ មដឋមនននចន ចេ ដកខាមពកាេដផាកខាសាា ។

– bar(int x1, int y1, int x2, int y2 ) ;

េសចត មកា ដកដតមានផទតព មៅនផាខាកា ។

bar() ខ សព rectangle() ពត rectangle() ពគានដតេស ព

បសចត មកា ដកបា មណាណ ោះវាអតផទតព ខា កា មទ ។- drawpoly( int

NumPoints ,int PolyPoints) ;

ជា Function េសព មកា , ពតមកា ……។

-polypoints : ជាបាារាា ដេពតអតពបមេទ, វាផា កកអ មដឋមន នន

បណាា កពល បសព មកា ។

-numpoints : បងាា ញចននកអ មដឋមនកា PolyPoints ( ជាចននកពល បសព មកា )

។ កអ មដឋមនេយមាន តនលព ជាពបមេទ int។ តនលេយជាោបស ស X,

នតនលេយមទយតជាអ មដឋមន Y។

ចណា ៖ មែើេបេសព មកា ដែលមាន N ព , មយើពតវផាល N+1 កអ មដឋមនមៅ

DrawPoly ។

Example :

# include<graphics.h>

Page 245: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

# include<stdlib.h>

#include<conio.h>

main()

{ int gd=DETECT, gm, errorcode;

int poly={20,240,620,20,590,460,320,240,20,240} ;

initgraph(&gd,&gm.”C:\\TC\\BGI”);

errorcode = graphresult();

if (errorcode != grOk())

{ printf(“Graphics error : %s\n”,grapherrormsg(errorcode));

printf(“ Press any key to halt “);

getch();

exit(1);

} drawpoly(5,poly); getch(); closegraph(); return 0;

}

IX. ក តព បភាព ៖

* setfillstyle ( int Pattern, int Color) ;

កា មនាោះ Pattern ជាចននេតព ០ ែល ១២ ដែលមានមឈμ ា ោះ

នតនលដែលបានក តនយេយេម ើយ ៖

EmptyFill = 0 ; { ព មនា } SolidFill = 1 ; { ព ពកម ាពបមផោះ }

LineFill = 2 ; { – – -}

LtSlashFill = 3 ; { / / / }

SlashFill = 4 ; {/ / / ដែលមានបនាា តតច } BkSlashFill = 5 ; {\ \ \

ដែលមានបនាា តពកាស}

Page 246: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

LtBkSlashFill = 6 ; {\ \ \ }

HatchFill = 7 ; {Light Hatch Fill} XHatchFill = 8 ; {Heavy cross hatch Fill}

InterLeaveFill = 9 ; {Interleaving line Fill} WideDotFill = 10 ; {widely spaced dot

Fill}

CloseDotFill = 11 ; {Closely Spaced dot Fill} UserFill = 12 ; {ផទតតាេព បស

User បមកើត}

Example :

# include<graphics.h>

# include<conio.h>

# include<stdlib.h>

main()

{int gd=0, gm maxx,maxy ;

char pattern[8]={0x00, 0x70, 0x20, 0x27, 0x25, 0x27,0x04,0x04} ;

initgraph(&gd, &gm, “C:\\TC\\BGI”); maxx=getmaxx(); maxy=getmaxy();

setcolor(getmaxcolor()); setfillpattern(pattern, getmaxcolor()); bar(0, 0, maxx, maxy);

getch(); getfillpattern(pattern); pattern[4] -= 1 ; pattern[5] -= 3 ; pattern[6] +=3 ;

pattern[7] -= 4 ;

setfillpattern(pattern,getmaxcolor());

bar(0, 0, max, maxy );

getch ();

closegraph();

}

* floodfill(int X, int Y, int Border) ;

មយើមពបើ function មនោះមែើេបផទតព មោយចត មកា , ពតមកា ,

ព មកា ……….,ចន ច (X,Y) ពតវសាត មៅកា នផា នន ចត មកា ។

Page 247: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

ព ដែលផទតមនាោះពតវបានបមកើតម ើមដឋយ setfillstyle ឬ setfillpattern ។ Border

(មានតនលព ០ ែល ១៥) ជាព បសព ។

មបើចន ច (X,Y) សាតមៅកា នផាចត មកា , មនាោះដផាកខាកា ចត មកា

ពតវបានផទតព ដតមបើច ច

(X,Y) មៅមពៅ ចត មកា វញមនាោះេដផាកខាមពៅចត មកា ពតវបានផទតព ។

* fillpoly( NumPoints , PolyPoints) ;

េសព មកា ម ើយមានផទតព ដផាកខាកា ។

+ PolyPoints : ជាបាារាា ដេពតគាា នពបមេទវា ផា កកអ មដឋមនបណាា កពល បសព មកា

+NumPoints: ពបាបចននកអ មដឋមនកា PolyPoints។ (េជាចនន

កពល បសព មកា ) ។ កអ មដឋមន េយ មាន តនលព (word : តនលX ន

តនលY) ។ FillPoly ផទតព ព មកា មដឋយមពបើ ព ដែលបមកើតមដឋយ

SetFillStyle ឬ SetFillPattern ។ ចដនកព បសព មកា , ពតវបានេសជាេយ

ពបមេទ បនាា ត ន ព ដែលបមកើតម ើមដឋយ SetLineStyle ។

X. ViewPort : Viewport ជាតបនចត មកា ដកេយមនាមលើ Screen

ដែលមយើោចអន វតាបណាា Procedure

បស Graphic មៅកា មនាោះ ហាកបែចជា Screen តចេយ ។

setviewport (int X1,int Y1,int X2,int Y2, Clip) ;

ជា Function ក ត ViewPort េយមៅមលើ Screen ជាេយ (X1,Y1,X2,Y2)

ជាកអ មដឋមន បស ViewPort ។ មពកាយ ពមៅ esetviewport , កអ មដឋមន (0,0)

ននបណាា Statement េសន កាេ យជាេ ដក ខាមលើ ដផាកខាមឆវ បស ViewPort េ

(X1,Y1) ។

Page 248: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

បាារាា ដេពត Clip ោចមានតនល True = clipon : អន ញញា ត

មោយមេើលម ើញបណាា បនាា តដែលេសមចញមពៅ

ViewPort , ចដ ក clipoff នេនោចមេើលម ើញ បនាា តដែល េសមចញមពៅ

ViewPort ។

មយើោចផទេ សបា ViewPort មៅពេបកននេកា កេμវធ មែើេប បានកអ មដឋមនេស ន

តបនេសសេសសប។

ឧទ េសពកា វច បសសេកា ដែលមានេ កអ មដឋមនមៅ កណាា ល SCREEN :

setviewport (getmaxx() / 2, getmaxy() / 2, getmaxx(), getmaxy(), 1

) ;

XI. បណាា អន េេនមផសមទៀត ៖

*setlinestyle(int LineStyle,int Pattern,int Thickness);

ជា Function សរាបកនតរាមោយបនាា ត

* bar3d (int x1, int y1 ,int x2 ,int y2, int depth, top );

ជា Function សរាបេសចត មកា មបាាកា ល ។

XII. កាត ប, បទ ប ន បមកើត បភាពដែលមានចលនា ៖

កាទ ក បភាព ៖

Page 249: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

មែើេប កាទ ក បភាពណាេយ, មយើពតវមពបើ Block Memory េយដែល មានរាជា

ចត មកា ដកពទធ វញ បភាពមនាោះ ។ មពកាយ

េកមយើ កានផាពកលាចត មកា ដកមនាោះ។មែើេបេ នាទ Block Memory រា

ចត មកា ដកផា ក បភាពមនាោះ, មយើមពបើ Function មានសសាប េ ៖

+ imagesize(int X1, int Y1,int X2 , int Y2 ) ;

មែើេបម យបច Memory កាទ ក បភាព,មយើមពបើ Function មនោះបមកើត Dynamic Variable

េនកនត ពបមេទ ។

+ getimage(int X1,int Y1,int X2, int Y2 , *PBitMap) ;

ជា Procedure មែើេប Copy បណាា ចន ចនន បភាពមៅមលើ Screen

ដែលសាតកា ចត មកា (X1,Y1,X2,Y2) ចលមៅ កា Memory ដែលពតវ PBitMap

ជាអាក Index, មដឋយមពបើ Procedure GetMem ខាមលើ ។

+ putimage(int X, int Y , *PBitMap , int CopyMode) ; មដឋោះ បភាពដែលមយើបាន

Copy មដឋយ GetImage, េកមលើ Screen ពតចន ច (X,Y)។ កា មនាោះ CopyMode

ជាពបមេទ Copy បភាពេកមលើ Screen :

Copy = 0

XORPut = 1

ORPut = 2

ANDPut = 3

NOTPut = 4

* មែើេបបមកើត បភាពមានចលនា កា GraphMode :

– េស ប, Copy បមនាោះចលមៅកា DynamicVariable :

– បមកើត (Delay) ។

Page 250: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

– ល ប បមនាោះ, មដឋោះ បភាពម ើវញមដឋយមពបើ putimage();

– េស បភាពមៅទតាថា ។

# include<graphics.h>

# include<conio.h>

# include<stdlib.h>

# include<alloc.h>

# include<stdio.h>

void save_screen(void far *buf[4]); void restore_screen(void far *buf[4]); int maxx,

maxy ;

int main(void)

{ int gd=DETECT, gm ,errorcode ;

void far *ptr[4];

initgraph(&gd,&gm,”c:\\tc\\bgi”); erorcode = graphresult(); if(errorcode != grOk())

{printf(“ Graphics error : %s\n”,grapherrormsg(errorcode));

printf(“Press any key to halt:“);

getch();

exit(1);

}

maxx=getmaxx(); maxy=getmaxy(); rectangle(0,0,maxx,maxy); line(0,0,maxx,maxy);

line(0,maxy,maxx,0); save_screen(ptr);

getch(); cleardevice(); restore_screen(); getch(); closegraph(); return 0;

}

void save_screen(void far *buf[4])

{ unsigned side;

Page 251: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

int ystart = 0 ,yend , yincr , block ;

yincr = (maxy+1)/4;

yend = yincr;

size = imagesize(0,ystart,maxx,yend);

for(block=0; block<=3;block++)

{

if ((buf[block]=farmalloc(size))== NULL)

{closegraph();

printf(“Error ! not enough heap space in save_screen()”);

exit(1);

}

getimage(0,ystart,maxx,yend,buf[block]);

ystart = yend + 1;

yend += yincr +1;

}

}

void restore_screen(void far *buf[4])

{

int ystart = 0 , yend, yincr , block;

yincr = (maxy+1)/4;

yend = yincr;

for (block=0;block<=3;block++)

{

Page 252: C/C++...ម ម នទ ៜ អ ព ភ ស C/C++ C ឬ C++ ជ Programming Language ដ លស មស ស រ ប បម ក ត ក មវធ ម ក មល ក ព ព *ទ ម នព

putimag(0,ystart,buf[block],COPY_PUT);

farfree(buf[block]);

ystart = yend + 1;

yend +=yincr + 1;

}

}