အခြေခံ ကွန်ပျူတာပရိုဂရမ် ရေးသားနည်း - Input and Output
Input and Output
ယေဘူယျအားဖြင့် ကွန်ပျူတာဟာ စနစ်တကျ ခိုင်းစေထားတဲ့ instruction တွေကို process တွက်ချက်ပြီး output အဖြေထုတ်ပေးတဲ့ machine တစ်ခုဖြစ်တယ်။
Instruction တွေကိုတော့ input device တွေကနေ လက်ခံရရှိလေ့ရှိတယ်။
အစောပိုင်းကွန်ပျူတာတွေမှာ Graphical User Interface(GUI) လို့ခေါ်တဲ့ ဂရပ်ဖစ်ကို မတီထွင်နိုင်သေးခင်တုန်းက Command Line Interface(CLI) ကို အသုံးပြုခဲ့ကြတယ်။
Windows Operating System မှာ ပါတဲ့ Windows Command Prompt ဟာ Command Line Interface တစ်ခု ဖြစ်တယ်။ Mac နဲ့ Linux Operating System တွေမှာတော့ Terminal လို့ ခေါ်ကြတယ်။
Java မှာ Command Line Arguments တွေကို standard input အနေနဲ့ အသုံးပြုပြီး standard output ထုတ်ပေးတဲ့ Command Line Program တွေကို ရေးလို့ရတယ်။ Command Line Programming ဟာ ဒီနေ့ထိ အသုံးဝင်နေဆဲ အသုံးများနေဆဲပဲ ဖြစ်တယ်။
Command Line Arguments
Java Command Line ပရိုဂရမ် မှာ Class ရဲ့ မိန်းဆစ်ဂနေချာဖြစ်တဲ့ main() ထဲမှာ String arrays ကို argument အနေနဲ့ အမြဲထည့်တာ တွေ့ရတယ်။ အဲ့ဒီ String arguments array ဟာ ကျွန်တော်တို့တွေ Windows Command Prompt သို့မဟုတ် Terminal ကနေ ရိုက်လိုက်တဲ့ command line argumens ကို ရည်ညွန်းတာ ဖြစ်တယ်။
Command Line Arguments ဟာ String ဖြစ်တဲ့အတွက် integer, float, double စတဲ့ data type တွေကို operation တွေလုပ်ဖို့ အတွက်ဆို data type ကို convert သို့မဟုတ် cast လုပ်ပေးရတယ်။
For example :
double year = Double.parseDouble(args[0]);
float price = Float.parseFloat(args[0]);
long years = Long.parseLong(args[0]);
int age = Integer.parseInt(args[0]);
char firstCh = args[0].charAt(int position);
short number = Short.parseShort(args[0]);
byte day = Byte.parseByte(args[0]);
boolean isEqual = Boolean.parseBoolean(args[0]);
Standard Output
System.out.print() နဲ့ System.out.println() ဆိုတဲ့ method တွေဟာ standard output ဖြစ်ပြီး Windows Command Prompt သို့မဟုတ် Terminal တွေမှာ result ကို output ထုတ်ပေးတယ်။
Command-line Arguments Input Example
/**************************************************************
* Compilation: javac RandomSeq.java
* Execution: java RandomSeq 5
********************************************************/
public class RandomSeq {
public static void main(String[] args) {
// command-line argument
int n = Integer.parseInt(args[0]);
// generate and print n numbers between 0 and 1
for (int i = 0; i < n; i++) {
System.out.println(Math.random());
}
}
}
Redirecting Standard Output to a file
Output ကို Windows Command Prompt သို့မဟုတ် Terminal တွေမှာ ရိုက်ထုတ်လို့ရသလို file ဖိုင်အနေနဲ့လည်း သိမ်းလို့ရတယ်။
အောက်ဖော်ပြပါ ဉပမာမှာ “ > data.txt” ဆိုတဲ့ directive ဟာ output ကို “data.txt” အနေနဲ့ save လုပ်ပေးမှာဖြစ်ပါတယ်။
Redirecting Standard Input to a file
Input ကို Windows Command Prompt သို့မဟုတ် Terminal တွေမှာ String[] args အနေနဲ့ ယူလို့ရသလို file ဖိုင်တွေကနေလည်း ယူလို့ရတယ်။
အောက်ဖော်ပြပါ ဉပမာမှာ “ < data.txt” ဆိုတဲ့ directive ဟာ input ကို “data.txt” ကနေ ဖတ်ယူမှာ ဖြစ်ပါတယ်။
Average Example
ဒီ ဉပမာမှာ StdIn.java နဲ့ StdOut.java ကို အသုံးပြုထားတယ်။ ဒီစာမျက်နာရဲ့အဆုံးမှာ download link ထည့်ပေးထားပါတယ်။ Average.java, StdIn.java နဲ့ StdOut.java ဖိုင်တွေကို folder တစ်ခုထဲထည့်ပြီး compile လုပ်ပြီး run နိုင်ပါတယ်။
/**************************************************
* Compilation: javac Average.java
* Execution: java Average < data.txt
* Dependencies: StdIn.java, StdOut.java
**************************************************/
public class Average {
public static void main(String[] args) {
int count = 0; // number input values
double sum = 0.0; // sum of input values
// read data and compute statistics
while (!StdIn.isEmpty()) {
double value = StdIn.readDouble();
sum += value;
count++;
}
// compute the average
double average = sum / count;
// print results
StdOut.println("Average is " + average);
}
}
Connecting to two programs
ပထမ ပရိုဂရမ်က ထွက်တဲ့ Output ကို ဒုတိယ ပရိုဂရမ်ရဲ့ input အနေနဲ့ ယူသုံးလို့ ရတယ်။ အဲ့ဒီ mechanism ကို piping လို့ ခေါ်တယ်။
Filters
Operating System မှာပါတဲ့ filters တွေကို ပရိုဂရမ် execute လုပ်တဲ့အခါ ယူသုံးလို့ ရတယ်။ ဉပမာ sort filter ဟာ output ကို sort လုပ်ပေးပါတယ်။ more filter ဟာ output ကို screen တစ်ခုစာပဲ ပြပေးပြီး ကျန်တာတွေကို request လုပ်မှ screen တစ်ခုချင်းစီ ဆက်ပြပေးတယ်။
% java RandomSeq 5 | sort
0.035813305516568916
0.14306638757584322
0.348292877655532103
0.5761644592016527
0.9795908813988247
% java RandomSeq 1000 | more
Graphic Programming(Your first Drawing)
StdDraw.java ပရိုဂရမ်ကို ဂရပ်ဖစ်ကို output အနေနဲ့ ထုတ်ပြဖို့ အသုံးပြုမှာ ဖြစ်တယ်။ အောက်မှာ ဖော်ပြထားတဲ့ Triangle.java မှာ StdDraw.line() နဲ့ StdDraw.point() ကို အသုံးပြုထားတယ်။
Triangle Example
ဒီ ဉပမာမှာ StdDraw.java ကို အသုံးပြုထားတယ်။ ဒီစာမျက်နာရဲ့အဆုံးမှာ download link ထည့်ပေးထားပါတယ်။ Triangle.java နဲ့ StdDraw.java ဖိုင် တွေကို folder တစ်ခုထဲထည့်ပြီး compile လုပ်ပြီး run နိုင်ပါတယ်။
/**************************************************
* Compilation: javac Triangle.java
* Execution: java Triangle
* Dependencies: StdDraw.java
*
* Plot a triangle.
*
**************************************************/
public class Triangle {
public static void main(String[] args) {
// 5% border
StdDraw.setScale(-0.05, 1.05);
// draw the triangle
double t = Math.sqrt(3.0) / 2.0;
StdDraw.line(0.0, 0.0, 1.0, 0.0);
StdDraw.line(1.0, 0.0, 0.5, t);
StdDraw.line(0.5, t, 0.0, 0.0);
// draw the point; make pen radius large enough to see it
StdDraw.setPenRadius(0.01);
StdDraw.point(0.5, t/3.0);
}
}
Audio as Output
StdAudio ကို အသုံးပြုပြီး အသံဖိုင်တွေနဲ့ ပရိုဂရမ် ရေးလို့ရတယ်။
Playing The Tune Example
ဒီ ဉပမာမှာ StdAudio.java ကို အသုံးပြုထားတယ်။ ဒီစာမျက်နာရဲ့အဆုံးမှာ download link ထည့်ပေးထားပါတယ်။ PlayThatTune.java, StdAudio.java နဲ့ freebird.txt ဖိုင် တွေကို folder တစ်ခုထဲထည့်ပြီး compile လုပ်ပြီး run နိုင်ပါတယ်။
/**************************************************
* Compilation: javac PlayThatTune.java
* Execution: java PlayThatTune < freebird.txt
* Dependencies: StdAudio.java
**************************************************/
public class PlayThatTune {
public static void main(String[] args) {
// repeat as long as there are more integers to read in
while (!StdIn.isEmpty()) {
// read in the pitch, where 0 = Concert A (A4)
int pitch = StdIn.readInt();
// read in duration in seconds
double duration = StdIn.readDouble();
// build sine wave with desired frequency
double hz = 440 * Math.pow(2, pitch / 12.0);
int n = (int) (StdAudio.SAMPLE_RATE * duration);
double[] a = new double[n+1];
for (int i = 0; i <= n; i++) {
a[i] = Math.sin(2 * Math.PI * i * hz /StdAudio.SAMPLE_RATE);
}
// play it using standard audio
StdAudio.play(a);
}
}
}
Download Link for StdIn.java, StdOut.java, StdDraw.java, StdAudio.java
**********
Next : အခြေခံ ကွန်ပျူတာပရိုဂရမ် ရေးသားနည်း - Functions
Previous : အခြေခံ ကွန်ပျူတာပရိုဂရမ် ရေးသားနည်း - Arrays
Comments
Post a Comment