プログラミング自主学習 DAY6 プログラミング/ioTプログラム(練習)/デバッガ/入出力/実引数と仮引数
プログラミングとは?
プログラミングとはコード(code)を作成しソフトウェアの設計図を作ることであると説明したが、語源の由来は「コンサートの計画票(プレーリスト)」である。
簡単にいうと時間の順序にやることを順番に進むことだ。
要するに、ある目的を果たすため、コンピューターにある命令を順番にすすめることで、
時間の順序に実行させることだ。
例えば、「歯を磨く」 際には時間順にこのようなプロセスをに行う。
1.歯ブラッシュを左手で取り出す。
2.歯磨き粉を右手で取る。
3.歯磨き粉のふたを取る。
4.歯磨き粉を絞る。
5.絞られた歯磨き粉を歯ブラッシュの上にかける。
このように「歯磨き」だけでも、様々なプロセスをあり、それが時間順に実行することが分かる。
しかし、何百、何千個のプロセスがあれば、人間の時間とエネルギーが掛かりすぎる。
そのため、機械に委任し、自動化ことがプログラミングの目的であり、本質である。
ioT プログラム(練習)
お祖母ちゃんが買い物から帰るところだと想像してみよう。
いたずらっ子である私はお祖母ちゃんをびっくりさせたいため、
ioTを通じて、お化け屋敷のように得体不明の音楽が流れ、
暗くて、真冬のように寒い家の雰囲気を作ってみた。
(エアコンを付けて家の温度を-10度にする)
import org.opentutorials.iot.Elevator;
import org.opentutorials.iot.Security;
import org.opentutorials.iot.Lighting;
import org.opentutorials.iot.Speaker;
import org.opentutorials.iot.Aircon;
public class Ok_javaGoInHome {
public static void main(String[] args) {
String A ="CJ TOWN 301";
// Elevator call
Elevator myElevator = new Elevator(A);
myElevator.callForDown(1);
// Security off
Security mySecurity= new Security(A);
mySecurity.off();
// Light off
Lighting myLighting=new Lighting(A);
myLighting.off();
// Speaker on
Speaker mySpeaker = new Speaker(A);
mySpeaker.makeVoice(A);
// Aircon on
Aircon myAircon = new Aircon(A);
myAircon.on(-10);
<result>
CJ TOWN 301 -> Elevator callForDown : 1
CJ TOWN 301 -> Security off
CJ TOWN 301 -> Lighting off
CJ TOWN 301 -> Speaker on : CJ TOWN 301
CJ TOWN 301 -> Aircon on : -10.0
import address.class name; = classのある住所を入力し、特定のclassを取り込む。
importした後はclass名を入力するだけでもClassを認識できる。
また、Classの後ろに.を入力すると、そのClassのMethodを呼び出す(call)。
デバッガ(Debugger)
意図したプロセスどおり実行しないバッグをなくすためデバッグをする。
デバッガを使ってバッグを見つけだし、デバッグをすることができる。
そのため、まずプログラムを止める必要があり、止めたいところの左をダブルクリックする。
すると、小さい・青い円が表示され、これを 「ブレーキポイント(Break Point)」 という。
Youtube '생활코딩,JAVA1 - 10. 디버거
次に Window
の perspective
あるいは run
ボタンの左にある緑色の虫のアイコンをクリくし、デバッガを呼び出す。
F6(Step over)
を押すとブレーキポイントにあった➡が下に降り、一行ずつコードを実行する。
この機能を使って、変数の名前と値(Value)を観察できる。
コードが多い場合、一行ずつ見るのは時間がかかる。
その場合は、次のブレーキポイントを設定し、
F8(return)
を押すと次のブレーキポイントまで一気に実行することができる。
F5(Step into)
を押せばより詳細なコードの構成を見ることができる。
F7(Step return)
はまた本来のコードに戻す。
終わったら Ctrl+F2(Terminate)
でデバッカを終わらせる。
入出力
Youtube '생활코딩, JAVA1 - 11.1. 입력과 출력
プログラムを作動させるたび、いちいちコードを修正することは効率が引い。
プログラムに何かのデータを入力(Input) するだけで、プログラムを実行させ、意図した結果を出力(output) することもできる。
これは入力値を入れる表現し、実行して出た結果を出力値という。
何十万人が利用するサイトの会員登録を考えると分かりやすい。
一人一人の情報は入れ、会員登録をさせるため、コードを変えることは不可能である。
この状況を解決できるのは入力の活用である。
以下はコードではなく、GUIにデータを入力するとうにプログラムを組むコードである。
String Address = JOptionPane.showInputDialog("이름을 입력해주세요");
String型変数AddressはJOptionPaneのShowInPutDialog("이름을 입력해주세요")を呼び出して出る値だ。
import org.opentutorials.iot.Elevator;
import org.opentutorials.iot.Security;
import org.opentutorials.iot.Lighting;
import org.opentutorials.iot.Speaker;
import org.opentutorials.iot.Aircon;
import org.opentutorials.iot.Refrigerator;
import org.opentutorials.iot.DimmingLights;
import javax.swing.JOptionPane;
public class Ok_javaGoInHomeInput {
public static void main(String[] args) {
String Address = JOptionPane.showInputDialog("이름을 입력해주세요");
String brightness = JOptionPane.showInputDialog("원하는 조명 밝기를 입력해주세요");
// Elevator call
Elevator myElevator = new Elevator(Address+ "님의 자취방의 엘레베이터 위치(현재 고장)");
myElevator.callForDown(24);
// Security off
Security mySecrity= new Security(Address +"님 자취방의 도어락 전원");
mySecrity.off();
// Light off
Lighting myLightining =new Lighting(Address +"님 조명전원");
myLightining.off();
// Speaker on
Speaker mySpeaker = new Speaker(Address + "님 방범알람 스피커");
mySpeaker.makeVoice("굉장히 크게 울리는 중");
// Aircon on
Aircon myAircon = new Aircon(Address+"님 자취방의 현재 온도");
myAircon.on(40);
// Refrigerator off
Refrigerator myRefrigerator=new Refrigerator(Address + "님 자취방의 냉장고 전원");
myRefrigerator.off();
// DimmingLights
DimmingLights myDimmingLights= new DimmingLights(Address+"님 자취방의 무드등 밝기");
myDimmingLights.setBright(Double.parseDouble(brightness));
myDimmingLights.on();
<Result>
찰리박님의 자취방의 엘레베이터 위치(현재 고장) -> Elevator callForDown : 24
찰리박님 자취방의 도어락 전원 -> Security off
찰리박님 조명전원 -> Lighting off
찰리박님 방범알람 스피커 -> Speaker on : 굉장히 크게 울리는 중
찰리박님 자취방의 현재 온도 -> Aircon on : 40.0
찰리박님 자취방의 냉장고 전원 -> Refrigerator off
찰리박님 자취방의 무드등 밝기 -> DimmingLights bright : 0.0
찰리박님 자취방의 무드등 밝기 -> Lighting on
実引数と仮引数(パラメーター)
先ほど入力値を入れられるプログラムを作ることで、ソースを修正する手間を減らした。
しかし、いつも入力値を入れることも効率が下がる場合がある。
例えば、ログイン画面の場合、いつもIDとパスワードという同じ入力値を入力する。それを面倒だと思う人が多いため、
IDとパスワードをセーブする機能が備わっている。
このように、プログラムも事前によく使われる入力値を登録し、事前に登録することで
直接自分で入力値を入れることをスキップできる。
その事前に登録する入力値を 実引数(Argument)
という。
実引数はEclipse画面の上段にある Run
をクリックし、
Run configuration
-> Arguments
-> Program arguments
に登録することができる。
仮引数(parameter)
に事前に 実引数(argument)
を登録する
//before
String Name = JOptionPane.showInputDialog("이름을 입력해주세요");
String brightness = JOptionPane.showInputDialog("원하는 조명 밝기를 입력해주세요");
//after
String Name = args[0];
String brightness = args[1];
最後にRun configurationから作ったOk_javaGoInHomeInput -메이세이쿤
, 10.0
を
デバッガで実行すると以下の結果が出る。
(메이세이쿤
,10.0
を読み込めなかったため、途中に実引数の表記を메이세이쿤
,10.0
に現行した。)
메이세이쿤님의 자취방의 엘레베이터 위치(현재 고장) -> Elevator callForDown : 24
메이세이쿤님 자취방의 도어락 전원 -> Security off
메이세이쿤님 조명전원 -> Lighting off
메이세이쿤님 방범알람 스피커 -> Speaker on : 굉장히 크게 울리는 중
메이세이쿤님 자취방의 현재 온도 -> Aircon on : 40.0
메이세이쿤님 자취방의 냉장고 전원 -> Refrigerator off
메이세이쿤님 자취방의 무드등 밝기 -> DimmingLights bright : 10.0
메이세이쿤님 자취방의 무드등 밝기 -> Lighting on
Discussion