高度情報システム科 ブログ
高度情報システム科のブログ一覧 (全201件中 160件目~162件目を表示)
2018.12.07
プロジェクト開発演習のこれまでの記事はこちらから
いよいよ演習も実装工程、つまり実際にプログラミング作業を行う段階に入ってきました。
今回の演習は株式会社コア様と連携して演習を行っており、同社のIoT関連製品である「GR-LYCHEE」(ジーアールライチ)を使用して開発を行っています。
なぜライチという名前なのか、企業の人に聞くのを忘れていました!
GR-LYCHEEはこんな感じの機器です。
いろいろな装置を付けられます。
実は右のほうに小さなカメラが接続されています。
GR-LYCHEE自体は名刺サイズでとても小さいのですが、写真だと分かりにくいでしょうか。
さて、今回は2つのプロジェクトに分かれて作業をしているので、今日は1つのチームの取り組みを紹介します。
チームSSGは、最終的にはラジコンのようなことをしたいようです。
「小さい」ということを生かして狭いところにも入って、ライトをつけて写真を撮ったりするような機能を考えています。
うまくいけば災害現場などで活躍できるようなものを・・・ということですが果たして?
いきなりそこまでの機能を実現させるのは大変なので、ひとまずカメラ機能を試します。
また、ラジコンを動かす代わりに、前進や後退のボタンが押されたときにLEDを光らせたり点滅させたりすることで、少しずつ動作確認しています。
プログラム言語は、CやC#を使っています。
GR-LYCHEEを動かすときはC言語を使用しますが、クラウド上で開発できるMbedというサービスを利用しています。
便利ですよね。
今日はスレッド処理が実現できたし、なかなか順調のようですね!
次回はもう一方のプロジェクトを紹介します。
2018.12.01
先日行われたJavaのプログラミングコンテストでは、高度ITエンジニア科2年の学生が2連覇を達成しました!
制限時間4時間という限られた時間内でのプログラミングのため、さすがに20問全問正解とはなりませんでしたが、それでも最優秀賞者のソースコードはレベルが違いました。
そこで彼のソースコードの一部を紹介していきたいと思います。
問題全体はここでは公開できませんが、例として、ネットワーク関連の問題の要点部分を紹介します。文字列 str にIPv4アドレスがサブネットマスクのサフィックス付きで与えられたときに、ネットワークアドレスとブロードキャストアドレスを表示することを考えます。
たとえば、str に 192.168.61.145/26 が与えられたとき、期待される表示結果は
192.168.61.128
192.168.61.191となります。
どのように処理したらいいでしょうか?方針は立てられますか?
まずはコードの冒頭だけ紹介します。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]);
str を分解して数値化しています。当然必要な処理ですね。
Stringクラスのsplitメソッドは区切り文字を指定して文字列の分割を行い、結果をString型の配列で返します。
はじめに / で分割し、次に . で分割、と二段階でやりたくなるところですが、split("[\\./]")のように一回でできてしまうんですね。
細かいところですが、スマートです。
なおバックスラッシュ(\)が2個並ぶのは、正規表現として . をエスケープするための \ を Java の文字列内で表現するにはさらに \ をつけてエスケープする必要があるからです。
IPアドレスを8ビット区切りで int 化してa~dに代入したわけですが、普通は(常人は?)配列を用意しループ処理なんかもしたくなるところ。でも要素は4つで固定だし、a、b、c、dという変数はかえって分かりやすいのかもしれませんね。
zという変数も、一番後ろ、という感じが出ています。
なおJavaでは、変数名は第三者が見てもすぐ分かるようにオブジェクトの意味を直接表す名前にするのが作法です。今回はコンテスト用だと思ってください。
これで処理の準備は整いました。このあとどうするのか?興味のある人は考えてみてください。
続きは次回までのお楽しみとしたいと思います。
2018.11.23
第2回となるJavaプログラミングコンテスト(2018)を、11/23(金)に実施しました。
雪が舞う寒い日となりましたが、競技は熱かったです!!
午前の部、午後の部合わせて4時間、20問の問題を解いていきます。
リアルタイムで順位が表示されるので、どうしてもテンションが上がります。
参加したのは学生部門9名、一般部門4名。
テキストを見たり、ネットで調べたり、何をしてもいいのですがそれでも難しい!
時間ぎりぎりまで粘り、少しでも点数を稼ごうとする人も・・。
そして結果発表。
総合優勝は、昨年に引き続き高度ITエンジニア科2年の堤晶吾君。
またしても断トツでした。
彼のソースコードを見ましたが、格が違いますねえ。
学生部門優勝者も、ラストスパートが素晴らしかったです。
最後に総評と問題の解説です。
とにかく楽しかった、という声がたくさん聞けました。嬉しいですね。
このモチベーションを維持していきましょう!
ひとまず速報でした。