ေရးသူေဒၚေ၀လဲ့ရည္ (လက္ေထာက္ညႊန္ၾကားေရးမွဴး၊ စက္မႈႏွင့္သက္ေမြးပညာဦးစီးဌာန (ရံုးခ်ဳပ္)၊ သိပံႏွင့္နည္းပညာ၀န္္ၾကီးဌာန၊ ေနျပည္ေတာ္)
အပို္င္း (၁)
C++ နွင့္ Java ကုိ ေလ့လာပီးသားျဖစ္ပါက
C# ကုိေလ့လာရတာပုိပီး လြယ္ပါမယ္… C# ဟာ java
ဆီကေနပီးေတာ့ ဘာေတြညာေတြ ယူထားတယ္ စသျဖင့္ေျပာၾကေသာ္လည္း… C#နဲ့ GUI create
လုပ္ရတာပုိျပီးလြယ္ပါတယ္..
C# ကုိ Design လုပ္ရာမွာ
java တုိ့ vbတုိ့ c++တုိ့ဆီကေန ေကာင္းတာေတြကုိယူထားတဲ့ အျပင္ .Net Framework ကုိသံုးပါတယ္တဲ့……
ဒီေတာ့ .Net Framework ဆုိတာဘာလဲလုိ့
စပ္စုရေအာင္……
.Net Framework ဆုိတာ
Development Platform, Execution Environment ပါတဲ့.. သူ့မွာအဓိက ဘာေတြပါလဲဆုိေတာ့
(၁) Common Language
Runtime (CLR)
(၂) .Net Framework
class library တုိ့ျဖစ္ပါတယ္….
CLR
C# program တပုဒ္ကုိ compile လုပ္ပီးလုိ့ထြက္လာတဲ့
code က executable code မဟုတ္ပါဘူး.. Microsoft Interediate Language Code ဆုိတာအရင္ထြက္လာပါတယ္….MSIL
code .ကုိ executable code ျဖစ္ေအာင္ CLR ရဲ့ JIT (just in time compiler) ကေျပာင္းေပး ပါတယ္… . MSIL code ကုိ CLR ရွိတဲ့ဘယ္ေနရာမွမဆုိ
run လုိ့ရတာေၾကာင့္ JVM ရွိတဲ့စက္တုိင္းမွာ run လုိ့ရတဲ့ java ရဲ့ bytecode လုိမ်ိဳးပါပဲလုိ့ ေျပာၾကပါတယ္….
.Net Framework class
library
အသင့္ေရးထားတဲ့ class ေတြကုိ သိမ္းထားတာပါ…. Program ေရးတဲ့ေနရာမွာလုိအပ္တဲ့
method ေတြ ကုိ လွမ္းယူသံုးလုိက္ယံုပါပဲ.. ဥပမာ FirstApp.cs မွာဆိုရင္ Console ဆုိတဲ့
class ထဲက WriteLine() ဆုိတဲ့ method ကုိလွမ္းယူသံုးထားတာ
ျဖစ္ပါတယ္..အဲဒီ Console class ကုိေတာ့
System ဆုိတဲ့ namespace ထဲမွာ သိမ္းထားတာပါ…. အဲဒါေၾကာင့္ Program ရဲ့အစမွာ using
ဆုိတဲ့ keyword ကုိသံုးျပီး…using System.. ဆုိတာေရးခဲ့တာျဖစ္ပါတယ္
ဒါေပမဲ့ ဘယ္လုိ function
မ်ိဳးကုိေရးခ်င္တယ္ဆုိရင္ class library ထဲက ဘယ္ class ရဲ့ ဘယ္ method ကုိေခၚသံုးရမလဲဆုိတာကုိေတာ့
ေလ့လာထားရမွာျဖစ္ပါတယ္…………
C# Program ကုိ compile လုပ္ဖုိ့
run ဖုိ့ ဆုိရင္ေတာ့ ပထမဆံုး.. Visual Studio တင္ပါမယ္.. ရနုိင္တဲ့ version ေပါ့
2008 ျဖစ္ျဖစ္ 2010 ျဖစ္ျဖစ္..
ပထမဆံုး program ကုိ IDE
သံုးပီးေတာ့ရယ္.. Command Prompt ကေန csc.exe ကုိသံုးပီးေတာ့ ရယ္ ၂ မ်ိဳး run ၾကည့္ၾကမယ္…
/*
comment ေတြေရးဖုိ့ကုိ
java မွာလုိပဲ.. more than 1 line ဆုိရင္ /*
*/ နဲ့ေရးလုိ့ရပီးေတာ့
// 1 line
ဆုိရင္ //နဲ့ေရးလုိ့ရပါတယ္
ခု ပထမဆံုး
နမူနာ hello world ေလး တပုဒ္ ေလာက္စမ္းၾကည့္မယ္
*/
Notepad ထဲမွာ ေအာက္က
code သြားရုိက္ပီး FristApp.cs လုိ့ save ပါ…. ၾကိဳက္တဲ့ေနရာမွာ save လုိ့ရေပမဲ့ ဒီမွာေတာ့ D ထဲမွာ save ပါမယ္.......
using
System;
//ဒါက java မွာ import လုပ္သလုိပါပဲ System namespace ထဲက ယူသံုးဖုိ့ ေၾကညာတာ
class
FirstApp // class name
{
Static Void Main() // ဒါက
ထံုးစံအတုိင္းေရးတဲ့ Main Method
{
Console.WriteLine(“Hello World”);
}
}
/* statement တေၾကာင္းဆံုးရင္ ; နဲ့ပိတ္ . class တုိ့
method တုိ့က { နဲ့စ } နဲ့ပိတ္ စတဲ့ syntax ေတြက c++ တုိ့ java တုိ့နဲ့တူတူပါပဲ
*/
ရုိက္ပီးတဲ့ code ကုိ
csc.exe သံုးပီး compile လုပ္ပါမယ္…
ဒီေတာ့ csc.exe ရွိတဲ့ေနရာကုိ
class path ေပးပါမယ္.. csc.exe ရွိတဲ့ေနရာရဲ့
path ကုိ copy ကူး
C:\Windows\Microsoft.NET\Framework\v4.0.30319
Control
Panel\All Control Panel Items\System ရဲ့ Advanced tab ထဲက
Enviromental Variable ကုိ နွိပ္ပါ.. User Variable မွာ new ယူပီးေတာ့ variable
name မွာ path… variable value မွာ ခုန cs.exe ရွိတဲ့ေနရာ C:\Windows\Microsoft.NET\Framework\v4.0.30319 ကုိ paste လုပ္လုိက္ပါ..
ဒါဆုိ cmd prompt မွာ compile လုပ္လုိ့ runလုိ့ ရပါပီ..
ခုန program ကုိ D ေအာက္မွာထားခဲ့တာဆုိေတာ့ dir change လုိက္ပါ..
D:\csc FirstApp.cs // compile လုပ္လုိက္တဲ့အခါ error မရွိရင္
FristApp.exe ဖုိင္ထြက္လာပါမယ္…
D:\ FristApp // exe file ကုိ run တဲ့အခါ output ထြက္လာပါမယ္..
ကဲ.. ဒီတခါ IDE နဲ့စမ ္းၾကည့္မွာမုိ့
visual Studio ဆီကုိသြားၾကစုိ့့….
Start->All
Program->Microsoft Visual studio 2010->Microsoft Visual Studio 2010
New Project ကုိေရြးပါ.
Installed Tamplate ထဲက
Visual C# - Console Application ကုိေရြးပါ
Name, location name,
solution name, တုိ့ကုိ ျဖည့္ပါ
အဆင္သင့္ေရးပီးသား ပံုစံေလးေပၚလာရင္
ကုိယ္ျဖည့္ခ်င္တဲ့ code ကုိျဖည့္ပါ
ဒီမွာေတာ့
Console.WriteLine(“Hello World”); ရုိက္ထည့္ပါ
ပီးတာနဲ့ menu->
Build ကုိနွိပ္ပီး run နုိင္ပါပီ...........
(c# ကုိစေလ့လာတဲ့
programming အေျခခံရွိတဲ့သူမ်ားအတြက္ ရည္ရြယ္ပါတယ္…. ဒီအထိ စမ္းၾကည့္လုိ့ အခက္အခဲ ေတြ့ရင္ေမးနုိင္ပါတယ္)
အပိုင္း(၂)
C#
Overview
program
structure
using System;
namespace <project
name>
{
<modifier > class <class name>
{
static void Main()
{
[statements]
}
}
}
ဒါကေတာ့ C# program တစ္ပုဒ္ရဲ့
structure ပါ… java နဲ့မတူတာက ဒီမွာ namespace ဆုိတာပါ လာတာပါ.. အဲဒီမွာ .. using
System… ဆုိတာကလဲ System namespace ကုိ class library ထဲက ယူသံုးမယ္လုိ့ေျပာတယ္ ဆုိတာေၾကာင့္
namespace ဆုိတာဘာလဲလုိ့ ေလ့လာပါမယ္….
namespace: Declaration of classes, interfaces, structs, enums, delegates
namespace ဆုိတာ declaration space ပါ.. namespace ထဲမွာ class ေတြ
interface ေတြ delegates ေတြ ေနာက္ထပ္ namespace ေတြ(nested namespace)ကုိ ၾကိဳက္သေလာက္
ေၾကညာလုိ့ရပါတယ္…. အရင္တပတ္က example program ထဲမွာဆုိရင္ namespace ေၾကညာ မထားပါဘူး..
အဲဒါမ်ိဳးဆုိရင္…default က anonymos namespace ပါတဲ့… namespace ကုိ class ေတြၾကားမွာ
name ေတြ conflit မျဖစ္ေအာင္သံုးပါတယ္တဲ့… namespace ထဲက class ေတြ interface ေတြကို
ေခၚသံုးခ်င္တယ္ဆုိရင္ေတာ့… using ဆုိတဲ့ keyword နဲ့တြဲျပီးသံုးပါတယ္.. (eg….using
System)……
ေနာက္တခုက <modifier
> class <class name>
Class ဆုိတာလဲ
declaration space… class ထဲမွာ fields,, methods ေတြ ေၾကညာပါတယ္..
ေရွ့က modifier ဆုိတာလဲ ထံုးစံအတုိင္း
ကုိယ္သတ္မွတ္ခ်င္တဲ့ access modifier or access specifier (public, private,
protected) ကုိေပးဖုိ့ပါပဲ..
C# မွာ file
name နဲ့ class name နဲ့ တူစရာမလုိပါဘူး..J
static void Main()
ထံုးစံအတုိင္း program ရဲ့
entry point …… method မွာ M ကုိ စာလံုးအၾကီးနဲ့ေရးပါတယ္…
Statement ေတြေရးတဲ့ေနရာမွာ
syntax အေၾကာင္းနဲနဲေျပာပါမယ္..
C# က case-sensitive ျဖစ္ပါတယ္… statement တေၾကာင္းဆံုးရင္
; ေရးရမယ္.. block အဖြင့္ အပိတ္ေတြက {}…… comments ေတြက // ရယ္ /* */ရယ္ …..
ကဲ.. Data type ေတြအေၾကာင္းေျပာပါေတာ့မယ္….
C# Data
Types
Data
types ၂ မ်ိဳးရွိပါတယ္…. Value type ရယ္
reference type ရယ္ပါတဲ့… ဘာကြာသလဲဆုိ ေတာ့ variable တခုဟာ actual
value(eg.. 1,2,3,4) ကုိသိမ္းရင္ value type ျဖစ္ပီးေတာ့ reference value (eg….#00ffaa)
ကုိသိမ္းရင္ေတာ့ reference type ပါတဲ့…. း)
ရွင္းတယ္ေနာ္… ရွင္းသမွသိပ္ရွင္း…. :P
Reference
type… ၂ မ်ိဳးရွိပါတယ္… Predefined type နဲ့ User-defined type
Predefined
type မွာ Object ရယ္………String ရယ္ ပါျပီးေတာ့…..
User-defined
type မွာ Classes,
Interfaces, Delegates and Arrays တုိ့ပါ ပါတယ္….
Value
type ( simple type, primitive type.. အမ်ိဳးစံုေခၚတဲ့) ၁၃ မ်ိဳးရွိပါတယ္တဲ့ ….
Type
|
Meaning
|
bool
|
Represents
true/false values
|
byte
|
8-bit
unsigned integer
|
char
|
Character
|
decimal
|
Numeric type for financial
calculations
|
double
|
Double-precision
floating point
|
float
|
Single-precision
floating point
|
int
|
Integer
|
long
|
Long
integer
|
sbyte
|
8-bit
signed integer
|
short
|
Short
integer
|
uint
|
An
unsigned integer
|
ulong
|
An
unsigned long integer
|
ushort
|
An
unsigned short integer
|
Literals
Literals ဆုိတာ variable ထဲကုိ assigned လုပ္တဲ့
value ကုိေခၚပါတယ္…
Eg…
100 ဆုိတဲ့ value ဟာ literal ပါ…. Integer literal ေပါ့…
“hello” ဆုိရင္ String literal……ျဖစ္ပီးေတာ့
… ‘a’ ဆုိတာ character literal ပါ………..
ေနာက္တခုက…
Variables
Variable
ေတြ ေၾကညာတဲ့ format က
type
var_name; // type ဆုိတာ data type , var_name က variable
name
variable
ေတြမွာ create လုပ္တဲ့အခ်ိန္မွာ initialize လုပ္လုိ့ရသလုိ
eg…….
int a=5;
char ch=’a’;
အဲလုိမွမဟုတ္……initialize
မလုပ္ဘူးဆုိရင္လဲ default value ေတြကုိ auto assign လုပ္ေပးပါတယ္………
Type
|
Default
Value
|
All
integer types
|
0
|
char
type
|
‘\x000’
|
float
type
|
0.0f
|
double
type
|
0.0d
|
decimal
type
|
0.0m
|
bool
type
|
false
|
enum
type
|
0
|
All
reference types
|
null
|
Variable တခုရဲ့ scope နဲ့ life time ကေတာ့ block ပါပဲတဲ့
({ }) variable တခုကုိ class ထဲမွာေၾကညာခဲ့ရင္
သူ့ရဲ့ life time က အဲဒီ class ရဲ့ အဆံုး
} အပိတ္အထိပါပဲ… method တခုထဲ မွာေၾကညာခဲ့ရင္လဲ သူ့ရဲ့ life time က method အဆံုးထိပါပဲ..
class scope နဲ့ method scope ေပါ့ method ထဲမွာပါလာမဲ့ parameters ေတြကလဲပဲ
method scope ပါပဲ…တကယ္လုိ ့ scope ေတြဟာ Nested ျဖစ္ေနခဲ့ရင္ inner scope က
variable ကုိ outer scope မွာမျမင္ရပါဘူး.….. outer scope က variable ကုိေတာ့ inner scope မွာျမင္ရပါတယ္…… ေအာက္မွာပါတယ္
example ကေလးကုိ ၾကည့္ၾကည့္ပါ……………
//
Demonstrate block scope.
using
System;
class
ScopeDemo
{
static
void Main()
{
Int x; //
known to all code within Main()
x = 10;
if(x == 10)
{ // start new
scope
int y = 20; //
known only to this block
// x
and y both known here.
Console.WriteLine("x
and y: " + x + " " + y);
x = y * 2;
}
// y = 100; //
Error! y not known here.
// x is still
known here.
Console.WriteLine("x
is " + x);
}
}
အဲဒီေတာ့ကား…………… outer
scope မွာေပးထားတဲ့ variable name နဲ့ နာမယ္တူ variable ကုိ inner scope မွာ ထပ္ပီးေပးလုိ့မရပါဘူး….ဟုတ္တယ္ေနာ္…….
Flow Control
in C#
1.
Selection statement
i.
if
ii.
switch
2.
Iteration statement
i.
for
ii.
while
iii.
do-while
iv.
foreach
3.
Jump statement
i.
break
ii.
continue
iii.
return
iv.
goto
The if statement
if(condition)
{
statement sequence
}
else
{
statement sequence
}
if(condition)
statement;
else
if(condition)
statement;
else
if(condition)
statement;
...
else
statement;
if(condition)
{
if(condition)
{
statement sequence
}
}
if statement မွာ သံုးေနက်ျဖစ္တဲ့
ပုံစံကြဲေလးေတြပါ… ရုိးရုိး if else , nested if , နဲ့ if else if
else တုိ့ပါ…..ဘယ္လုိသုံးသလဲဆုိတာ သိပီးသားျဖစ္မယ္ထင္ပါတယ္……… အေပၚဆုံး if မွာ condition စစ္ပီး condition မွန္/မမွန္ေပၚမူတည္ပီး
ဆက္အလုပ္လုပ္သြားမွာျဖစ္ပါတယ္….
The switch
statement
switch
( expression ) // expression မွာ
numeric, enum, string, or char
{ // ထားနုိင္ပါတယ္….floating
point ထားလုိ့မရပါ…
case value-1:
block-1
break;
case value-2:
block-2
break;
……………..
default
:
default-block
break;
}
အလုပ္လုပ္တဲ့ပံုကေတာ့..
expression နဲ့ case value နဲ့တုိက္… match ျဖစ္ရင္ အဲဒီ case ရဲ့ block ကုိလုပ္ ပီးရင္
switch ကေန break နဲ့ထြက္………….expression နဲ့ match ျဖစ္္တဲ့ case တခုမွ မရွိဘူး ဆုိရင္
default block ကုိ အလုပ္လုပ္ပီး
break…………………………………..
The
for statement
for(initialization;
condition; iteration)
{
statement
sequence
}
Iteration မစခင္ condition
စစ္ပါတယ္….. statement sequence ကုိ condition မွန္ေနသေရြ့ အလုပ္လုပ္ေနပါမယ္……….
for(;;;)statement // ဒါကေတာ့ infinite loop ပါ…….
The while
statement
while(condition)
{
statement;
}
သူလဲပဲ
pre test loop ပါ……… Iteration မစခင္ condition စစ္ပါတယ္…..
statement sequence ကုိ condition မွန္ေနသေရြ့ အလုပ္လုပ္ေနပါမယ္……….
The do-while
statement
do
{
statements;
}
while(condition);
post
test loop ပါ……. condition မစစ္ခင္ statement ကုိ တၾကိမ္အရင္ execute လုပ္ပါတယ္… ပီးေတာ့မွ
condition စစ္ပီး match ျဖစ္တယ္ဆုိရင္ Loop ထပ္ပတ္ပါတယ္……..
The foreach statement
foreach
(type loopvar in collection) statement;
foreach
ကုိ array တုိ့ collection တုိ့ ထဲမွာရွိသေလာက္ data ေတြကို loop ပတ္ပီး အလုပ္လုပ္ခ်င္တဲ့အခါသံုးပါတယ္………..
အဲဒါေၾကာင့္ initialize လုပ္စရာ condition စစ္ပီး stop လုုပ္စရာမလုိပါဘူး…………..
array ထဲမွာ collection ထဲမွာရွိသေလာက္ အကုန္ အလုပ္လုပ္သြား မွာမုိ့လုိ့ပါပဲ…… ေအာက္က
demo program ေလးကုိ စမ္းၾကည့္ပါ…
using System;
class ForeachDemo
{
static
void Main()
{
int sum = 0;
int[] nums = new int[10];
// Give nums some values.
for(int i = 0; i < 10; i++)
nums[i] = i;
// Use foreach to display and sum the values.
foreach(int x in nums)
{
Console.WriteLine("Value
is: " + x);
sum += x;
}
Console.WriteLine("Summation: " + sum);
}
}
Output ထြက္လာတဲ့့အခါ ေတြ့မွာပါ…. foreach ဟာ array ထဲမွာရွိတဲ့
data ေတြ အကုန္လံုးကုိ အလုပ္လုပ္သြားတယ္ဆုိတာ……. Array nums ထဲက integer ေတြကုိ x ထဲကုိ
loop တခုခ်င္း assign လုပ္သြားတာကုိ ေတြ့ရမွာျဖစ္ပါတယ္…………
ဒီေတာ့ကား……………………….
Array ထဲမွာရွိတဲ့ အေရအတြက္အတုိင္း အလုပ္မလုပ္ခ်င္ဘူးဆုိ ရင္ေတာ့…. Condition စစ္္ပီး
break ကုိသံုးပီး loop ထဲက ထြက္ရမွာျဖစ္ပါတယ္………
ခုနက
demo program မွာ ထပ္ထည့္ပီးစမ္းၾကည့္ၾကရေအာင္……..
using System;
class ForeachDemo
{
static
void Main()
{
int sum = 0;
int[] nums = new int[10];
// Give nums some values.
for(int i = 0; i < 10; i++)
nums[i] = i;
// Use foreach to display and sum the values.
foreach(int x in nums)
{
Console.WriteLine("Value
is: " + x);
sum += x;
if(x==4) break;
}
Console.WriteLine("Summation: " + sum);
}
}
foreach loop ကို
searching လုပ္တဲ့အခါ………… max, min ရွာခ်င္တဲ့အခါ……………. Avg တြက္ခ်င္တဲ့အခါမ်ိဳးေတြမွာ….သံုးလုိ့ေကာင္းပါတယ္…………
The break statement
break
statement ကုိ ခုန prog မွာေတာင္သံုးပီးပီဆုိေတာ့ အထူးေျပာဖုိ့မလုိေတာ့ပါဘူး………
for, while, switch… စတဲ့ loop ကေန ထြက္ခ်င္တဲ့အခါမ်ိဳးမွာသံုးပါတယ္……..
The continue statement
လက္ရွိ Loop ကေန next loop ကုိ ဆက္သြားဖုိ့ force လုပ္ခ်င္တဲ့အခါမွာသံုးပါတယ္…………
using System;
class ContDemo
{
static
void Main()
{
// Print even numbers between 0 and 100.
for(int i = 0; i <= 100; i++)
{
if((i%2) != 0)
continue; // iterate
Console.WriteLine(i);
}
}
}
The return statement
Value return ျပန္ဖုိ့သံုး…………
public static int exampleMethod()
{
int i =0;
return i;
}
The goto statement
Unconditional jump
………
x = 1;
loop;
x++;
if(x < 100) goto loop1;
ကဲ.. ကဲ… ကဲ…. C# ရဲ့ program structure ေကာ, data types ေကာ, variables ေကာ, control
statement ေတြေကာ ေျပာလုိ့ အဲ… ေရးလုိ့ ျပီးသြားပါပီ…………. ေပ်ာ္စရာ ေကာင္းလုိက္တာ…..
ဒီတခါေတာ့ စာဖတ္သူရဲ့ အလွည့္ကုိ ေရာက္လုိ့လာပါပီ………… J assignment ေလး နဲနဲေပးပါမယ္… စမ္းေရးၾကည့္ၾကပါအုံးလုိ့…..
1.
Write a program
in C# to generate prime numbers between 1 and 1000
2.
Write
a C# program that will read the value of x and evaluate the following function
using
(a) nested if statements
(b) else
if statements
3. Admission to a professional course is subject to the
following conditions:
(a)
Marks in mathematics >= 60
(b) Marks
is physics >= 50
(c) Marks
in chemistry >= 40
(d) Total
in all three subjects >=200
(or)
Total
in mathematics and physics >=150
Given
the marks in the three subjects, write a program to process the applications to
list the eligible candidates.
4.
The straight-line method of computing the yearly depreciation of the value of
an item is given by
Write a
program to detemine the salvage_value of an item when the purchase_price, years
of service and the annual_depreciation are given.
Hints.. ေတြေပးရပါမယ္… အရင္တုန္းက print out လုပ္တဲ့
method ကုိသာေျပာဖူးတာမုိ့ပါ….
Keyboard ကေန read လုပ္တဲ့ Method က
Console.readLine();
Keyboard ကေနဖတ္သမွွ်ကုိ string လုိ့ယူဆမွာမုိ့ int ေျပာင္းခ်င္ရင္ int.parse(); ဆုိတဲ့ method ကုိသံုးပါတယ္…
int a = int.parse(Console.readLine());
No comments:
Post a Comment