အခြေခံ ကွန်ပျူတာပရိုဂရမ် ရေးသားနည်း - 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

Popular posts from this blog

စာသင်ကြားရန် အသုံးပြုသည့် ဆော့ဖ်ဝဲများ

အခြေခံ ကွန်ပျူတာပရိုဂရမ် ရေးသားနည်း - Objected-Oriented Programming

သင့်ရဲ့ ပထမဉီးဆုံးသော ကွန်ပျူတာ ပရိုဂရမ် (Hello, World!)