Lesson 3
Simple C program with Integer(int)and Variable (Memory
Location)
1 #include<stdio.h>
2 #include<conio.h>
3
4 int main(void) {
5 int number1 = 0;
6 int number2 = 0;
7 int total = 0;
8 printf_s("Please
enter first number:\n");
9 scanf_s("%d",
&number1);
10 printf_s("Please
enter second number:\n");
11 scanf_s("%d",
&number2);
12 total = number1 +
number2;
13 printf_s("Total
number is %d\n",total);
14
15 _getch();
16 return 0;
17 }
Line number 1,2,3,4 က ကြ်န္ေတာ္ အရင္ သင္ခန္းစာေတြ မွာ ရွင္းထား ျပီးသားျဖစ္တဲ့ အတြက္ အခု line
number 5 ကေနျပီးေတာ့ စရွင္းပါမယ္ ခင္ဗ်ာ။ Line number 5 မွာ int
number1=0; ဆိုျပီးေတာ့ ေရးထားပါတယ္ သူ႕မွာ ရွင္းျပ ရမယ့္ အခ်က္ ၂ ခ်က္ ရွိပါတယ္..int
ဆိုိတဲ့ integer data type ရယ္ number1 ဆိုတဲ့
variable ရယ္ ျဖစ္ပါတယ္…Integer data type ကို မရွင္းခင္မွာ
ကြ်န္ေတာ္တို႕ေတြ တစ္ခု သိထားဖို႕လိုပါတယ္ အဲဒါကေတာ့ What are
integers? Integer ဆိုတာ ဘာလဲေပါ့..Integer ဆိုတာကို မသိခင္
Natural Numbers နဲ႕ Whole Numbers ေတြ ကို သိဖို႕လိုပါတယ္……..Natural
Numbers ဆိုတာကေတာ့ 1,2,3,4,5… etc တို႕ျဖစ္ပါတယ္…Whole
Numbers ေတြကေတာ့ 0,1,2,3,5,……..စ သည္တို႕ျဖစ္ပါတယ္…….integer
ဆိုတာကေတာ့ အေပါင္းကိန္းျပည့္ေတြ ေရာ အႏုတ္ကိန္းျပည့္ေတြေရာ
သုည ေရာပါမွာ ျဖစ္ပါတယ္………. …..,-3,-2,-1,0,1,2,3,……စသည္တို႕သည္
integers မ်ားျဖစ္ပါတယ္…… ..,-3,-2,-1 စသည္တို႕သည္
negative integers မ်ားျဖစ္ပါတယ္…. 1,2,3,….စသည္တို႕သည္
positive integers မ်ားျဖစ္ပါတယ္……. Zero(0) ကေတာ့ Neither
Positive Nor Negative ျဖစ္ပါတယ္ခင္မ်ာ…. ရႈပ္သြားရင္ ေအာက္က ပံုေလးမွာ
math concept ေလးနဲ႕ ေဖာ္ျပထားပါ တယ္…..
Computer programming ဘက္ကေန
သြားပါမယ္…… Data type ေတြမွာဆိုရင္
Standard C အရ အေျခခံ data type ေလးခုရွိပါ တယ္…int ,
char , float , double ရယ္ျဖစ္ပါတယ္။
data type 4 မ်ိဳးမွာ သူရဲ႕ ကိုယ္ပိုင္
ကိုင္တြယ္ျပီး သိုေလွာင္ တြက္ခ်က္ နိုင္တဲ့ ပမာဏ တန္ဘိုးရွိပါတယ္
….ေအာက္က ပံုေလးကို
တစ္ခ်က္ျကည့္ေပးပါ….
Integer data type ကို မရွင္းခင္မွာ
bit နဲ႕ byte ကို ကြဲျပားစြာ သိထားဖို႕လို ပါတယ္ bit ဆိုတာက binary
digit ကို ေျပာတာပါ binary ဆိုတာကေတာ့ 01 base 2 number system ကိုေျပာတာ ပါ..byte ကေတာ့
unit of digit Information ကို ေျပာတာပါ
သူကေတာ့ digit ေတြရဲ႕ unit ပါ…. 1 byte မွာ 8bit ရွိပါတယ္
ကြ်န္ေတာ္တို႕ အခု ေျပာသြားမွာက 32 bit ပါ 32 bit ဆိုတာ 2 to the
power 32 ကိုေျပာတာပါ (ပံုထဲမွာျကည့္ေပးပါ).. အဲေတာ့ 2 to the power 32
၇ဲ႕ တန္ဖိုးဟာ 4294967259 ျဖစ္ပါတယ္..
ဒါေပမယ္ ကြ်န္ေတာ္တို႕က သူ႕ကို
အေပါင္းကိန္းရယ္ အႏုတ္ကိန္းရယ္ ယူ ခ်င္တာပါ ထို႕ေျကာင့္ 32 ထဲကေန
1 နုတ္ေပးရပါတယ္….အဲဒါဆိုရင္ 2 power က 31ျဖစ္သြားျပီး
သူ႕ တန္ဖိုးက 214748367 ျဖစ္ပါတယ္…… Positive integer ရယ္ negative integer ရယ္ ျပန္ခြဲတဲ့ အခ်ိန္မွာ (Positive integer = +214748367)ျဖစ္ျပီးေတာ့ (Negative
integer= -214748367) ျဖစ္သြားပါတယ္……အခုဆိုရင္ ကြ်န္ေတာ္တို႕ Integer data type ထဲမွာ အေပါင္းကိန္း +214748367 ထိ သိုေလွာင္ႏိုင္သြားျပီးေတာ့ အနုတ္ကန္း-214748367 ထိ From -214748367 to +214748367 ထိသိုေလွာင္ကိုင္တြယ္ ႏိုင္သြားမွာ
ျဖစ္ပါတယ္ ….ဒါဆိုရင္ ပံုေလးနဲ႕ တြဲျကည့္ျပီး 32 ထဲကေန 1 ကို ဘာေျကာင့္ႏုတ္လိုက္ရတယ္
ဆိုတာကို နားလည္ လိမ့္မယ္လို႕ေမွ်ာ္လင့္ပါတယ္…. ဥပမာ ေပးရရင္ int ဆိုတဲ့ ဂ်က္ဖာဗူး
ထဲမွာ စာလံုးေပါင္း -214748367 to +214748367 ထိ ႏွစ္ခုေပါင္း 4294967259 ေလာက္ကို ထည့္ထားႏုိင္တယ္လို႕ ဆိုလိုခ်င္တာျဖစ္ပါတယ္……………. အထက္မွာ ရွင္းျပထားတာက 32 bit က int data type ကိုပဲ ရွင္းျပေပးထား
တာျဖစ္ပါတယ္…..64 bit မွာ 2 power 64 ဆိုရင္ေတာ့ သူ႕တန္ဖိုးက 18446744073709551616 ပါ အေပါင္းကိန္း
ရယ္
အနုတ္ကိန္းရယ္ ျပန္လုပ္ဖို႕ 2 to the power 63 ကေတာ့ 9,223,372,036,854,775,808 ျဖစ္ပါ
တယ္ negative integer -9,223,372,036,854,775,808 ကေန +9,223,372,036,854,775,808 ထိေပါင္း18446744073709551616 ကို ကိုင္တြယ္ သိုေလွာင္ႏိုင္သြားမွာျဖစ္ပါတယ္… ဒါဟာ
data type ေတြ အမ်ားျကီး ရွိတဲ့ ထဲက integer data type အေျကာင္းကို အျကမ္းျဖင္းေလး
ေျပာျပ တာပါ အခု ဆက္လက္ျပီး variable ဆိုတာကို ေျပာျပပါမယ္…..variable
ဆိုတာ memory ထဲမွာ ရွိတဲ့ location တစ္ခုကို လွမ္းျပီး ညႊန္းထားတာ ျဖစ္ပါတယ္..အဲဒိ
location ထဲမွာ သူနဲ႕ သက္ဆိုင္တဲ့ value တစ္ခုကို သိမ္းထားတာ ျဖစ္ပါတယ္…အဲဒိ သိမ္းထားတဲ့
value ကိုမွ ကြ်န္ေတာ္တို႕ program အလုပ္လုပ္ တဲ့ အခ်ိန္မွာ ေခၚသံုးမွာ ျဖစ္ပါတယ္….
ပံုမွာ ျကည့္မယ္
ဆိုရင္ ျမွား အ၀ါနဲ႕ ျပထားတဲ့ 0x0116FE74 ဆိုတာ number1 ဆိုတဲ့ Variable
name ရဲ႕ memory address ပါ ျမွား အနီေရာင္နဲ႕ ျပထားတာကေတာ့ သူရဲ႕ value ျဖစ္ပါတယ္ Variable ေတြမွာ အခ်က္သံုးခ်က္ မွတ္ထားရပါမယ္ အဲဒါကေတာ့
name ရယ္ type ရယ္ value ရယ္ျဖစ္ပါတယ္..line number 5 int number1 =
0; မွာ number1 ဆိုတာက variable name ျဖစ္ပါတယ္။integer data type နဲ႕ number1 ဆိုတဲ့ variable တစ္ခုကို ေျကျငာထားျခင္းျဖစ္ပါတယ္…line number 5 and 6 မွာ ကြ်န္ေတာ္တို႕ Program ထဲမွာ သံုးခ်င္တဲ့
variable
ကို သံုးခ်င္တဲ့ data
type နဲ႕ ေျကျငာထားပါတယ္ … တစ္ခု မွတ္ထားရမွာ program ထဲမွာ ေခၚမသံုးခင္ ကိုယ္သံုးခ်င္တဲ့ variable
ေတြကို ျကိုျပီးေျကျငာထားရမွာ ျဖစ္ပါတယ္ခင္မ်ာ။ ကြ်န္ေတာ္တို႕ variable
ေတြကို int
number1 = 0; and int number2=0; လို႕မေျကျငာဘဲ int number1,number2; ဆိုျပီးေတာ့လဲ ေျကျငာထားလို႕ရပါတယ္….ဒါေပမယ့္ ကြ်န္ေတာ္တို႕ေတြ int number1=0; လို႕မေျကျငာထားခဲ့ဘူးဆိုရင္
int
number1; ဆိုျပီး ရိုးရိုးပဲ ေျကျငာခဲ့ရင္
visual
studio နဲ႕ watch လုပ္ျကည့္တဲ့ အခ်ိန္မွာ သူ႕ထဲမွာ ဘယ္ကမွန္းမသိတဲ့ random
value ေတြ ၀င္ေနတာကို ေတြ႕ရပါတယ္..ဒါကေတာ့ မိမိတို႕
သေဘာအတိုင္း အဆင္ေျပသလို ေျကျငာလို႕ ရပါတယ္ ကိုကိုယ္တိုင္
ေလ့လာျပီး အသံုးျပဳတာက ေတာ့ အေကာင္းဆံုး ျဖစ္မွာပါ… အေပၚက program ေလးကို စျပီးေတာ့ ရွင္းျကရေအာင္…
5 int number1 = 0;
6 int number2 = 0;
7 int total = 0;
မွာဆိုရင္
integer data type ေတြနဲ႕ variable
ေတြေျကျငာ ထားလိုက္ပါ တယ္..အဲဒိ variable ေတြကိုမွ program
ထဲမွာ ေခၚသံုးမွာ ျဖစ္ပါတယ္..
8 printf_s("Please
enter first number:\n");
9 scanf_s("%d",
&number1);
10 printf_s("Please
enter second number:\n");
11 scanf_s("%d",
&number2);
Number 8 ကေတာ့ printf_s ဆိုတဲ့ function
ကိုသံုးျပီး user ဆီကို
Screen ေပၚမွာ ေပၚေအာင္
please enter first number:
ဆိုျပီး message တစ္ေျကာင္းေရးခိုင္းလိုက္တာပါ
promt လုပ္တယ္ လို႕လဲ ေခၚပါတယ္…
Please enter a number: ဆိုတဲ့ ေနာက္မွာ \n ဆိုတာေလး ပါ ပါေသးတယ္…\n ဆိုတာ ကိုသိဖို႕ ဆိုရင္ escape sequence ဆိုတာကို သိဖို႕
လိုပါတယ္ c
programming မွာဆို အေျခ ခံ အေနနဲ႕ escape sequence ၅ မ်ိဳး ရွိပါတယ္..
1. \n
2. \t
3. \a
4. \\
5. \”
\a ဆိုတာကေတာ့ Alert
ပါ ဆိုလိုခ်င္တာကေတာ့ အသံ သို႕မဟုတ္ သိသာတဲ့ အရာ
တစ္ခုခု နဲ႕ ေရာက္ေနတဲ့ cusor ေနရာမွာ alert လုပ္တာပါ.. ေအာက္က ပံုမွာျကည့္လို႕ရပါတယ္
…..
\\ ဆိုတာကေတာ့ Backslash ပါ ဆိုလိုခ်င္တာကေတာ့ ကြ်န္ေတာ္တို႕ စာေျကာင္းထဲမွာ \ ဆိုတဲ့ charater ကို ထည့္မယ္လို႕ ေျပာတာပါ… ေအာက္က ပံုမွာ ျပထားပါတယ္ ….
\* ဆိုတာကေတာ့ double
quote ပါ ဆိုလိုခ်င္တာကေတာ့ ကြ်န္ေတာ္တို႕ စာေျကာင္းထဲမွာ * ဆိုတဲ့ charater ကို ထည့္မယ္လို႕ ေျပာတာပါ… ေအာက္က ပံုမွာ ျကည့္ပါခင္မ်ာ…
ဒီေလာက္ဆိုရင္ c
programming ရဲ႕ escape
sequence အေျကာင္းကို အနည္းငယ္ သိသြားမယ္လို႔
ထင္ပါတယ္…ကြ်န္ေတာ္တို႕ program ေလးကို ဆက္သြားရေအာင္ line number8 က ေနာက္ဆံုး \n ကို ေတြ႕တာနဲ႕Cursor က ေအာက္တစ္ေျကာင္းကို
ဆင္းသြားပါတယ္ … ဒီေနရာမွာ သတိ တစ္ခုထားရမွာက ကြ်န္ေတာ္တို႕ promt
လုပ္ခ်င္တဲ့ စာေျကာင္း အစမွာေရာ အဆံုးမွာေရာ double
quote (“…….”) ကို ထည့္ဖို႕ မေမ့ပါနဲ႕ .. ျပီးရင္ေတာ့ Line အဆံုးမွာ (;) ဒီေကာင္ေလး ထည့္ေပးရပါတယ္….
9 scanf_s("%d",
&number1); Line number 9 မွာ scanf_s ဆိုတာကေတာ့
scan formatted ကို ဆိုလိုတာပါ…..scanf_s ဆိုတဲ့ function
မွာ argument နွစ္ခု ပါ ပါတယ္(ပထမ argument ကေတာ့ %d ဒုတိယ တစ္ခုကေတာ့ ampersand(&) သူ႕ကို address operator လို႕လဲ ေခၚပါတယ္… သူက user ဆီက ေနျပီး ထည့္လိုက္တဲ့ တန္ဘိုး(standard input,eg, keyboard) ကို ဖတ္လိုက္တာပါ…. %d ဆိုတာကေတာ့ integer နဲ႕ ဖတ္မယ္လို႕ ေျပာတာပါ (d ဆိုတာကေတာ့ decimal ကိုေျပာခ်င္တာပါ)…. သူ႕ကိုလည္း double quote ေလးေတြ ထဲထည့္ပါ… ျပီးရင္ေတာ့
(,) ေလးထည့္ဖို႕ မေမ့ပါနဲ႕ …. ေနာက္တစ္ခုကေတာ့ &number1(address of
number1) သူေျပာခ်င္တာက user ဆီက ရိုက္ထည့္လိုက္တဲ့ တန္ဘိုးကို %d ဆိုတဲ့ integer
နဲ႕ ဖတ္ျပီး number1 ဆိုတဲ့Address ရွိတဲ့ ေနရာမွာ သိမ္းမယ္လုို႕ေျပာလိုက္တာပါ… အခုဆိုရင္ line
number 8 and 9 ကို နားလည္ သြားလိမ့္မယ္လို႕ထင္ပါတယ္…အခုဆက္ဖတ္လိုက္ရင္ 10 and 11 ကိုလည္း နားလည္ သြားပါလိမ့္မယ္…
10 printf_s("Please
enter second number:\n");
11 scanf_s("%d",
&number2);
အခုဆက္ျပီး
အထက္မွာ
ျပထားတဲ့ ပံုကေတာ့ ကြ်န္ေတာ္တို႕ ေပးလိုက္တဲ့ number ကို Hexa decimal value နဲ႕ ေဖာ္ျပထားတာျဖစ္ပါတယ္…ျမားအနီေရာင္နဲ႕ ျပ ထားတဲ့ 0x008FFDE0 ဆိုတာကေတာ့ သူ႕ရဲ႕ address ျဖစ္ပါတယ္
12 total = number1 +
number2;
13 printf_s("Total
number is %d\n",total);
ကို ရွင္းပါမယ္…. Line number 12 ကေတာ့ number1 + number2
ေပါင္းလို႔ရလာတဲ့ တန္ဘိုးကို
assignment
operators ျဖစ္တဲ့ (=) ကို သံုးျပီး total
ဆိုတဲ့ variable ထဲကို ထည့္လိုက္တာ ျဖစ္ပါတယ္… ျပီးရင္ေတာ့ line number 13 မွာ total ရဲ႕ value ကို promt
လုပ္လိုက္ပါေတာ့တယ္….ေအာက္က ပံုတြင္ ျကည့္ပါ ခင္မ်ာ….
ေနာက္ထပ္ lesson ေတြကိုလည္း ဆက္လက္ျပီး ေဖာ္ျပေပးသြားပါဦးမယ္ ခင္ဗ်ာ ။
Green HackersTeam
No comments:
Post a Comment