プログラミングの奥深さを淡々と書いていくスレ
[
1
]
おさつ◆P5O39P86HQ
2017/02/02/17:21
暇な時に書いていくかもな不定期スレ
みんなにもこの理不尽……面白さが分かってほしいな〜俺もな〜
あ、言語はjavaであります
まずはちょっと面白半分に作ったページをペタリ
640×510
[PNG]
[iPhone ios9.3.5]
編集
削除
コピー
前のページ
次のページ
▽
||
1-
||
投稿
||
更新
||
検索
559HIT
投稿数:25/1000
[
7
]
おさつ◆P5O39P86HQ
2017/02/02/23:26
みんな大好き「もしも」を表すif文。今回は文字列を扱うクラスStringを数を扱うクラスIntegerに変換してます。(引数だけでいうならstrをresにしてる。)この場合、数字以外を打ち込むと例外が発生したとIOException君がはりきります。
あとは字面を見ればなんとなく分かると思う。
647×553
[PNG]
647×553
[PNG]
[Chrome]
編集
削除
コピー
[
8
]
おさつ◆P5O39P86HQ
2017/02/02/23:53
無限ループって怖くね?(今回のは有限です。)
これはfor文(繰り返し文)と呼ばれる文。iを変数とし、0スタートのiが1ずつ足されていき、8より小さい間それを繰り返してます。それが終わったら次の処理に移ってるのがわかると思う。
i++ってのはインクリメントと言って変数に1ずつ足していく演算子。逆にi--は1を引いていくデクリメントっていう演算子。ちなみに++iとi++は異なります(白目)。しかもその違いは超重要という。
あと勘のいい人は分かったと思うけどある数値を変えると無限ループして大変なことになるよ(小声)
647×553
[PNG]
647×553
[PNG]
[Chrome]
編集
削除
コピー
[
9
]
おさつ◆P5O39P86HQ
2017/02/03/00:19
基礎のまとめみたいなもの。今回のはfor文にif文をネスト(いわゆる合わせ技)してます。コード見てどうなるか予想してみると面白いかも
というわけで第一回終了
647×553
[PNG]
647×553
[PNG]
[Chrome]
編集
削除
コピー
[
10
]
クラーケソ◆jWuG34jDLs
2017/02/03/03:54
C言語やってた頃「javaのが簡単」なんて言われてたけど、こう見るとたいして変わらへんね
[iPhone ios10.2.1]
編集
削除
コピー
[
11
]
名無し
2017/02/03/08:41
なるほどわからん
[SH-01H]
編集
削除
コピー
[
12
]
モナイン
2017/02/03/10:29
ホモと見るで動画家できそう
[Chrome]
編集
削除
コピー
[
13
]
おさつ◆P5O39P86HQ
2017/02/03/12:48
>>10
C言語はまだやってないからよく知らんけど根本的な部分は一緒らしいしね。片一方できたらもう片一方もスラスラ覚えられるって聞くし。
あと難しそうに見えるかもだけどシルバーの資格試験にこれくらいのレベルの問題もあったりするんやで。というわけで模擬試験の問題↓
647×554
[PNG]
[Chrome]
編集
削除
コピー
[
14
]
おさつ◆P5O39P86HQ
2017/02/04/15:23
↑ここまで基礎初級 ここから基礎上級↓
次は演算子や配列の話。基礎でやるにはあまりに難しい。本気で書くと20レスは軽く超えそうなのでほんの触りだけ。
5行目で行っているのが配列の生成。int型のnumberを割り振った新しい箱を5つ用意したような感じ。ちなみに配列を作ると添字([]の中身)は0からスタートする。
for文の繰り返し条件である式、num.lengthは作ったナンバーの数までやるという意味。この場合は2スタートで5より小さい間ってこと。
if式は箱の番号(num)がiになったときnum[i]を出力するようにプログラムしてる。もし条件をi<6にし、if文で i = 5 を増やすとArrayIndexOutOfBoundsExceptionという例外が発生する。num[5]の箱なんてないからね、しょうがないね。
647×554
[PNG]
647×554
[PNG]
[Chrome]
編集
削除
コピー
[
15
]
おさつ◆P5O39P86HQ
2017/02/04/16:14
二 次 元 配 列 。
5行目の配列は箱とそれにぶちこむ値を同時に生成している。FUCK!shine!shine!
ここに書くのはめんどいので詳しい説明は画像見て、どうぞ。もちろん三次元配列もありますあります。(試験には出ないので安心)
647×554
[PNG]
647×554
[PNG]
[Chrome]
編集
削除
コピー
[
16
]
おさつ◆P5O39P86HQ
2017/02/04/17:01
クラスの話。一番ややこしいくせに最も利用するので初心者キラー。
クラスがいくつあろうが、プログラムが処理されていくのは基本main()メソッドから。なのでこの場合始まりは14行目から。16行目では変数kzを作っている。これによってGOクラスのオブジェクトを扱うことができる。よくわからないと思うがここだけは数をこなして覚えるしかない。この時点でギャラはまだ発生していない。
次にkzを使ってfoo()メソッドを呼び出している。voidとは、このブロックの処理が終わったら君もう(元の処理に)帰っていいよ!みたいなもんです。じゃあ俺、guarに50000,strに人権という値を代入して帰るから……。
そして出力。kzがもつギャラと言葉を吐かせるためにkz.と書く。ここも数こなすしかない。ここの話は全体的にどうしようもないんだよね。それ一番言われてるから
647×552
[PNG]
647×553
[PNG]
[Chrome]
編集
削除
コピー
[
17
]
おさつ◆P5O39P86HQ
2017/02/04/17:57
迷路Lv1みたいなもの。最初にSZKクラスを扱えるfukuという変数を作り、この変数を用いてfoo()メソッドを呼び出している。その途中、MURクラスを扱えるtisyoという変数を作り、それぞれのメソッドを呼び出せるようにしている。
一見、意☆味☆不☆明、と思うかもしれないけどのちのち出てくるパッケージ化などと組み合わせるとスッキリ。長いプログラムになるとmain()メソッドにダラダラ書き込むよりは、こうやって分けたほうがいい時もある。短くて分かりやすいやろ?main()メソッド。
647×552
[PNG]
647×552
[PNG]
644×553
[PNG]
[Chrome]
編集
削除
コピー
[
18
]
おさつ◆P5O39P86HQ
2017/02/09/22:57
試験関連から一旦離れてアプリケーションの話。名前のとおり、Androidのゲームやブログなどが作れるプログラミング。案の定クッソ長いコードになるけどそれのほぼ八割が定型文みたいなもの。一割が今までの解説でやったこと。そして残りの一割が新しく覚えることとなるゾ。一個目の画像を上から順に解説していきますよ〜イクイク。
まず@のインポート文。アプリケーションを作るときにはjavafxと呼ばれるものから次々クラスを呼び出し、利用する必要がある。例えばscene.*;を書かないとコードのsceneの部分がが使えないってこと。やりたいことに応じて随時importを増やしてね。でも簡単なことだとこれくらいでいい。
次にAで付けたいコントロールをひたすら羅列。そしてBでコントロールの生成。("")で文字を添付できる。()だけだと文字なし。
Cでそれぞれのコントロールの配置を決定。Top,Left,Right,Center,Bottomと好きなのを選んでね。ンヒィー
残りは全部テンプレ。特殊な操作を増やさない限り、変わることはない。変わったとしてもちょっとコードを付け足すだけ。
そして二枚目の画像。こちらが確認の、画像です。(ホラー番組感)
569×591
[PNG]
602×432
[PNG]
[Chrome]
編集
削除
コピー
[
19
]
おさつ◆P5O39P86HQ
2017/02/09/23:36
今回は先に実行画像を見て、どうぞ。
今回やったのはボタンを押すとラベルが切り替わるって内容。スクショには写ってないけど左下のボタンを押すことによってラベルを切り替えた。これはアクションイベントといって、@でボタンにイベントを登録してAのクラスで変更する内容を書いている。例によってその変更内容以外は定型文。
何が言いたいかというとこのイベントの内容をいろいろ変えることによって様々なことができるよねって話。コードさえ書けば色を変えたり背景を変えたり違うページを開いたり。ちなみにマウスイベントというのもあって、そっちは大体お絵描きアプリに使う。mousePressedしたら線を描き始め、mouseReleasedしたら線を描き終える、みたいに。
602×432
[PNG]
602×432
[PNG]
566×591
[PNG]
566×591
[PNG]
[Chrome]
編集
削除
コピー
[
20
]
おさつ◇P5O39P86HQ
2017/02/16/20:17
オッスオッス。プログラミングが必修になるそうだから、将来のこと考えて簡単なことは分かるようになってたほうがいいかもしれないゾ。というわけで今回は新一……じゃないオーバーロードの話だゾ。
まずは@で変数を作るゾ。数値などを表す変数は一番最初に設定しておいたほうがわかりやすいゾ。
次にBを見て欲しいゾ。まずWord型の変数gorokuを作ってるゾ。そしてgoroku.setWord(24)とすることで「goroku内のローカル変数1つを有したメソッドを呼び出し」ているゾ。んまそ……よく分かんないですと思うかもしれないがその下2つも見ればなんとなくわかると思うゾ。
今回のコードで大切なことは2つ。まずは呼び出したメソッド名が3つとも同じことだゾ。通常同じ名前のメソッドは定義できないが、「引数の型、個数が異なっていれば定義できる」んだゾ。これをオーバーロードとよ、呼びますよ……。
もう一つは変数の種類だゾ。@はインスタンス変数、Aはさっきも言ったがローカル変数と呼ばれてますねえ!インスタンスはひとまず置いといてローカル変数だけ説明すると、「そのメソッド内のみで働く変数」だゾ。だから変数の英字が同じでも違う数値を代入できるんすねえ。詳しくはいつか話すかもな〜俺もな〜。
652×768
[PNG]
652×768
[PNG]
[Chrome]
編集
削除
コピー
[
21
]
おさつ◆P5O39P86HQ
2017/02/16/21:22
クラス継承の話に行きますよ〜イクイク。継承を言葉で説明するのもコードで説明するのも難しいからさっくりやるゾ。今回は先にコード文見て、次に実行結果を「じっくり」見てくれよな〜。
今までのコードと違うのはextendsというワード。意味は拡張。つまりおじさんの保護下にひでを入れたってことになるな。これを行うことでおじさんはスーパークラス、ひでをサブクラスに分類されるようになるゾ。
次に実行文。継承をすることで「ひで型の変数を使いおじさんクラスのメソッドを呼び出せる」ようになってるゾ。終わり!閉廷!
……ここでコードと実行結果に違和感を感じた人はやりますねえ!ここから先はその点について少し補足させてもらうゾ〜。
このコードではおじさんクラスを呼び出していない。なのにおじさんのセリフが最初に入ってるやん!ああもうやだあああああ!!って気づいた人はなってると思うゾ。実は継承をするとsuper();というメソッドが使えるようになる。これは「スーパークラスのコンストラクタを呼び出せる」便利なものなんだが、厄介な点もありますあります。なんとsuper();の記述がなかった場合、「サブクラスのコンストラクタの先頭で、暗黙的にスーパークラスの引数のないコンストラクタを呼び出す」行為をしてます。今回の場合@からAに飛んだ時、「見えないsuper();を使ってOZSNを召喚している」ってことです。だからおじさんが最初に発言してたんですねえ……FUCK!こいつのせいで皆困惑するんだよFUCK!
652×768
[PNG]
651×768
[PNG]
[Chrome]
編集
削除
コピー
[
22
]
おさつ◆P5O39P86HQ
2017/02/16/21:45
オーバーライドの話。「スーパークラスの人とサブクラスの人が同時に同じことを喋ろうとしたら、サブクラスの人の言葉が優先される。」という話だったのサ。それぞれのpublic void wordを見ればわかるんじゃないかな(適当)
652×768
[PNG]
651×768
[PNG]
[Chrome]
編集
削除
コピー
[
23
]
おさつ◆P5O39P86HQ
2017/02/16/22:25
抽象クラス(abstract)の話。実はオーバーライドの延長線上の話であり、またjavaで一番大事な話かもしれんゾイ。
この抽象クラス、及び抽象メソッドは「新しいオブジェクトを作成したり、処理内容を定義することができない」のだゾイ。new とか数値を代入したりとかが出来ないということゾイ。
じゃあ何のために使うか?オーバーライドではサブクラスの発言が優先されると言ったが、じゃあ「元々余計なことを喋らない奴をスーパークラスに」したらこき使えるんじゃないか?という話だゾイ。今回の場合漫画的に例えると、「KMRがフキダシを作り先輩のクズ二人がそれを使って言葉を発している」と思ってくれればいいゾイ。
これと次にやるインターフェイスは、javaを深く理解するには最重要といっても過言ではないゾイ。
652×768
[PNG]
651×768
[PNG]
[Chrome]
編集
削除
コピー
[
24
]
おさつ◆P5O39P86HQ
2017/02/16/23:11
今回のラストは、インターフェース態糞親父の話なんや。実はこれ、やってることは抽象クラスとほぼ変わらないんや。継承するときはextendsの代わりにimplementsを書くくらい。
唯一の違いはいくつでも継承していいことや。大勢を継承しまくると最高やで。そしてインターフェースはインターフェースを拡張できるんや。もうコード中、インターフェースまみれや。
import出来るやつなら最高や。わしは、package dokacyan;。おっさんはpackage furosya;や。糞まみれでやりたいやつ、至急implementsしてくれや。(次回の予告)
抽象メソッドだけでimplementsし合い、インターフェースまみれになろうや。
652×768
[PNG]
651×768
[PNG]
[Chrome]
編集
削除
コピー
[
25
]
おさつ◆P5O39P86HQ
2017/02/25/21:06
今回いくつかやってひとまず基礎は終わりや。あと少しだから暇な奴はいちぢく浣腸して見てってくれや。
まずはパッケージの話や。javaをしてるとフォルダの中がソースファイルやクラスファイルでいっぱいになってくる。この中でお目当てのモノを探し当てるのは面倒やで。
そこでパッケージフォルダを作ってファイルを整理するんや。今回作ったのはwashiというパッケージフォルダや。この中に土方関連のクラスとソースを全部突うずるっこむ。あ、でもmain()があるクラスは入れてはいけないぜ。これらをメインクラスにimport(輸入)することで「washiフォルダのクラスを扱える」ようになるんや。
importの書き方は@とAの二種類がある。@は使いたいクラスをピンポイントでimportしてるんや。Aは*(ワイルドカード)といって、そのフォルダ内のすべてのクラスをimportしてるんや。とりあえず最初のうちは*に突っ込んで腰をつかって居れば大丈夫やで。
652×768
[PNG]
652×768
[PNG]
652×768
[PNG]
652×768
[PNG]
[Chrome]
編集
削除
コピー
[
26
]
おさつ◇P5O39P86HQ
2017/02/25/21:45
次は例外(Exception)の話ですね……
これは基本try(試行)、catch(例外を受け取る)の2つによって成り立っています。try{}中に例外が発生した時点でcatch{}が呼び出されます。今回例外が発生しているのはArrayIndexOutOfBoundsExceptionと呼ばれるものですね。numの配列は{0,1,2,3,4}の5つしか作っていないのに5を呼び出そうとしたから発生しました。なので即座にcatchが呼び出されて先輩が驚いていますね。
throws Exceptionと書かれている部分は呼び出し元のメソッドに例外処理を任せるという意味です。かなりややこしい話なのでひとまず「例外が発生しそうな場所に書いとけ」という考え方でいいです。またfinallyは例外の有無関係なしに必ず実行されるブロックを意味しています。
#スレッドも書いとこうと思ったけど自分の開発環境じゃ無理っぽいからこれで基礎は終わり!閉廷!
652×768
[PNG]
652×768
[PNG]
[Chrome]
編集
削除
コピー
△
||
1-
||
投稿
||
更新
||
検索
前のページ
次のページ
スレッド一覧
日間
週間
月間