高度情報システム科 ブログ
高度情報システム科のブログ一覧 (全201件中 154件目~156件目を表示)
2018.12.30
先日、AKITA デジタルユース キャンプ 2018(地域ICTクラブ)の様子をお伝えしました。
4日間にわたって、中高生がWebサイトの制作を学んでいますが、本校学生が講師のサポートとしてお手伝いをさせてもらっています。
キャンプの様子が、さきがけ新聞のニュース記事として取り上げられていましたので紹介します。
中高生が熱心に取り組み、情報技術に興味を持ってもらえているようで嬉しいですね。
記事にもあるように、今回は株式会社トラパンツさんの講師が指導にあたっています。
トラパンツさんは秋田のIT企業を代表する魅力ある会社なので、こちらも紹介しておきます。
本校の卒業生も活躍しており、また在校生2名も現在アルバイトをしていて、1名は今度の4月から晴れて当社の社員になる予定です。
企業と大学、専門学校、高校、中学校がつながる機会はとてもありがたいです。
こうしたつながりが、何かを生み出していくような気がします!!
2018.12.27
冬休み、中高生向けプログラミング講座として、AKITA デジタルユース キャンプ 2018(地域ICTクラブ)が行われています。
本校では、情報システム科と高度職業実践科の学生1名ずつが、メンターとして講師のサポートをしています!!
4日間のうち、今日は2日目。
ちょっとずつ指導も慣れてきているようでした。
内容は秋田の魅力を発信するWebサイトの作成。
WordPressを使っています。
メンターも事前に内容指導してもらっているわけでなく、一緒に勉強しながらです。
他のメンターの秋大や県立大の学生らとも仲良くなっていました。
嬉しいですね。
今後も秋コアは、地域と連動した取り組みを行っていきます!!
2018.12.26
Javaプログラミングコンテスト最優秀賞者のプログラムを見てみよう、第3弾です。
残っている処理は、与えられたIPアドレスのブロードキャストアドレスを求めることです。
int型の変数ipには現在、IPアドレスが数値として入っています。またint型の変数zには、サブネットマスクのサフィックス値が入っています。
たとえばIPアドレスが192.168.61.145/26であるとき、ブロードキャストアドレスは上位26ビットはそのまま、残りの6ビットはすべて1にしたものになります。
では、最優秀者のコードを見ていきます。
前回の処理で既に
char[] ipc = Integer.toBinaryString(ip).toCharArray();
を実行しています。char型の配列ipcには、ipを2進数にしたものを1桁ずつ区切って0か1を文字にしたものが格納されています。
ネットワークアドレスのときは、
for (int i = 31; i >= z; i--) ipc[i] = '0';
としましたが、ブロードキャストアドレスのときは
for (int i = 31; i >= z; i--) ipc[i] = '1';
とします。
あとは表示するだけですが、これもネットワークアドレスのときと一緒。
a = b = c = d = 0; for (int i = 0; i < 8; i++) { a += (ipc[i] - '0') << (7 - i); b += (ipc[i + 8] - '0') << (7 - i); c += (ipc[i + 16] - '0') << (7 - i); d += (ipc[i + 24] - '0') << (7 - i); } System.out.println(a + "." + b + "." + c + "." + d);
ちなみに、サブネットマスクとIPアドレスの論理積をとればネットワークアドレスが求まりますが、ブロードキャストアドレスの場合はサブネットマスクの0と1を反転したものとIPアドレスの論理和をとればよいです。
しかし今回のコードでは、あまり難しく考えずにシンプルに処理されていますね。
今回紹介したコードを繋げたものは以下のようになります。
String[] sp = str.split("[\\./]"); int a = Integer.parseInt(sp[0]); int b = Integer.parseInt(sp[1]); int c = Integer.parseInt(sp[2]); int d = Integer.parseInt(sp[3]); int z = Integer.parseInt(sp[4]); int ip = (a << 24) + (b << 16) + (c << 8) + d; char[] ipc = Integer.toBinaryString(ip).toCharArray(); for (int i = 31; i >= z; i--) ipc[i] = '0'; a = b = c = d = 0; for (int i = 0; i < 8; i++) { a += (ipc[i] - '0') << (7 - i); b += (ipc[i + 8] - '0') << (7 - i); c += (ipc[i + 16] - '0') << (7 - i); d += (ipc[i + 24] - '0') << (7 - i); } System.out.println(a + "." + b + "." + c + "." + d); for (int i = 31; i >= z; i--) ipc[i] = '1'; a = b = c = d = 0; for (int i = 0; i < 8; i++) { a += (ipc[i] - '0') << (7 - i); b += (ipc[i + 8] - '0') << (7 - i); c += (ipc[i + 16] - '0') << (7 - i); d += (ipc[i + 24] - '0') << (7 - i); } System.out.println(a + "." + b + "." + c + "." + d);
とにかくコンテストの短い時間でここまで書けたのが驚きだったので、3回に分けて紹介しました!