ブログ

高度情報システム科ブログ一覧 (全8件中 7件目~8件目を表示)

  • 2018.12.07

    プロジェクト開発演習のこれまでの記事はこちらから

    プロジェクト開発演習スタート(11月1日)

    プロジェクト開発演習は詳細設計中!(11月14日)

     

    いよいよ演習も実装工程、つまり実際にプログラミング作業を行う段階に入ってきました。

    今回の演習は株式会社コア様と連携して演習を行っており、同社の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では、変数名は第三者が見てもすぐ分かるようにオブジェクトの意味を直接表す名前にするのが作法です。今回はコンテスト用だと思ってください。


    これで処理の準備は整いました。

    このあとどうするのか?興味のある人は考えてみてください。

    続きは次回までのお楽しみとしたいと思います。

     

1 2 3
↑