본문 바로가기

IT自主学習 (2023.05.23~)/Java(2023.05.23~)

プログラミング自主学習 6日目 プログラミング/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);

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の後ろに.を入力すると、そのClassMethodを呼び出す(call)。


デバッガ(Debugger)

意図したプロセスどおり実行しないバッグをなくすためデバッグをする。
デバッガを使ってバッグを見つけだし、デバッグをすることができる。

そのため、まずプログラムを止める必要があり、止めたいところの左をダブルクリックする。

すると、小さい・青い円が表示され、これを「ブレーキポイント(Break Point)という。

 

参照:Youtube '생활코딩,JAVA1 - 10. 디버거

 

次にWindowのperspectiveあるいはrunボタンの左にある緑色の虫のアイコンをクリくし、

デバッガを呼び出す。

perspective:ある作業のため必要なviewを表示するテンプレート(レイアウト)。


F6(Step over)を押すとブレーキポイントにあったが下に降り、一行ずつコードを実行する。

この機能を使って、変数の名前と値(Value)を観察できる。



 

コードが多い場合、一行ずつ見るのは時間がかかる。
その場合は、次のブレーキポイントを設定し、
F8(return)を押すと次のブレーキポイントまで一気に実行することができる。




F5(Step into)
を押せばより詳細なコードの構成を見ることができる。
F7(Step return)
はまた本来のコードに戻す。

終わったらCtrl+F2(Terminate)でデバッカを終わらせる。

 

<まとめ>
▶ : Resume : ブレーキポイントまでデバッグを実行
■ : terminate : デバッグを終了
step over : 次の行を実行
step into : 行に繋がったことを観察

step return : step intoから観察したコードから元の行に戻る。


入出力

 

参照:Youtube '생활코딩, JAVA1 - 11.1. 입력과 출력

プログラムを作動させるたび、いちいちコードを修正することは効率が引い。

プログラムに何かのデータを入力(Input)するだけで、プログラムを実行させ、
意図した結果を出力する(output)こともできる。

これは入力値を入れる表現し、実行して出た結果を出力値という。

何十万人が利用するサイトの会員登録を考えると分かりやすい。

一人一人の情報は入れ、会員登録をさせるため、コードを変えることは不可能である。

 

この状況を解決できるのは入力の活用である。
以下はコードではなく、GUIにデータを入力するとうにプログラムを組むコードである。

String Address = JOptionPane.showInputDialog("이름을 입력해주세요");

String型変数AddressはJOptionPaneのShowInPutDialog("이름을 입력해주세요")を呼び出して出る値だ。


찰리박님의 자취방의 엘레베이터 위치(현재 고장) -> Elevator callForDown : 24
찰리박님 자취방의 도어락 전원 -> Security off
찰리박님 조명전원 -> Lighting off
찰리박님 방범알람 스피커 -> Speaker on : 굉장히 크게 울리는 중
찰리박님 자취방의 현재 온도 -> Aircon on : 40.0
찰리박님 자취방의 냉장고 전원 -> Refrigerator off
찰리박님 자취방의 무드등 밝기 -> DimmingLights bright : 0.0
찰리박님 자취방의 무드등 밝기 -> Lighting on

 

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();

 


実引数と仮引数

先ほど入力値を入れられるプログラムを作ることで、ソースを修正する手間を減らした。

しかし、いつも入力値を入れることも効率が下がる場合がある。

例えば、ログイン画面の場合、いつも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