ホーム » 2014 (ページ 12)

年別アーカイブ: 2014

2025年6月
1234567
891011121314
15161718192021
22232425262728
2930  

検索・リンク

専攻科特別研究発表会

1402141405_640x480.JPG
1402141405-1_640x480.JPG

福井県を当てるクイズ問題、第一ヒント「歯みがきロボコン」…

そういえば、昨日のテレビ朝日のクイズ番組で、 写真や動画から県を当てる都道府県クイズ。 『福井県』を当てる問題で、 第1ヒントが「歯みがきロボコン」だったそうだ。
# 丁度その時間は、風呂に入っていて、見そこねた…(x_x;

第1ヒント:「歯みがきロボコン」 第2ヒント:「ペンギンの初詣」、 第3ヒント:「越前ガニ・ミュージアム」、 第4ヒント:「東尋坊」

ようやく第4ヒントで回答ボタンが押され、 一発目は「石川県」と答えられてしまったようだが…

2014年2月9日(第359回)

学生さんがテスト期間中につき、教員による収録でお送りしました。

  • まるよし Train Pops ~ 国語と遊ぼう! 第42回 「ごんぎつね」
    • ごんぎつねの「ごん」の最後の言葉は・・・
  • 後期期末試験について
  • 金田先生の恋愛相談「どんと来い」

担当:丸山先生、金田先生、川上先生、西

(授業アンケート)情報構造論

総合ポイントは、80.9 例年通りかな。 あっ、一昨年度と比べると、ちょいと落ちてる…(x_x;

相変わらずに板書のポイントが低いのよね…

ホワイトボードで、マーカーのペン濃いのつかうべしとの注文 もあって、まだまだ改善は必要かな。

1402071717_399x351.png

構造体の配列渡しの質問

構造体を使ったプログラムで、構造体のデータを配列全部を渡すのか、 配列の1つを渡すのか…の違いが判らずに混乱している人がいるので、 簡単なサンプルプログラムを示す。

// 構造体のサンプル
struct A {
int data ;
} ;
// 構造体の全部を渡す場合
void foo( struct A* p ) {
// struct A p[]
// 引数宣言は上のように書いても同じ。
for( int i = 0 ; i < 100 ; i++ ) {
p[i].data = ... ;
// 上の1行は下の2つでも同じ意味
// (*(p+i)).data = ... ;
// (p+i)->data = ... ;
}
}
// 構造体の1件を渡す場合
void baa( struct A* p ) {
p->data ....
}
void main() {
// 局所的な配列
struct A a[100] ;
// 配列全体を渡す(a[]の先頭アドレス)
foo( a ) ;
// 配列のi番目を渡す
for( int i = 0 ; i < 100 ; i++ ) {
bar( &a[i] ) ;
}
}

2年情報基礎演習の発表会

簡単なパズル系の問題の、解決プログラム作成の課題に取り組んだ結果報告を、発表会形式で行いました。

1402050946_320x240.JPG

技科大連携、力覚フィードバック

豊橋技科大の三好先生との、技科大、高専連携の力覚フィードバックシステムの実験で、三好先生に機材の持ち込みと、使い方の講習を受けました。

VPNで豊橋技科大と接続し、遠隔地とパドルを動かす操作で、その操作時の力をお互いに感じながら、8拠点で操作するシステムです。

このシステムでは、8拠点同時で綱引きゲームのような操作で、力覚を共有できるそうです。 今日は、その事前実験ということで、VPN接続テスト・3拠点での力覚フィードバックを行いました。 ネットワークの遅延なども制御系でうまく融和させ、リアルタイムに別拠点の操作の力のかけ具合が、 パドルに伝わってきます。

1402041758_640x480.JPG

2014年2月2日(第358回)

  • まるよし Train Pops ~ 国語と遊ぼう! 第41回 「ごんぎつね
  • 二十歳の話
  • STAP細胞について
  • 公衆電話の話
  • 節分の話

担当:前田勝(4EI)、山野(2C)、松島(2C)、西(教員)

コンテナクラスとテンプレート

例年より情報構造論が早く進んだので、STLとかBoostを少しだけ紹介するために、 その基本のコンテナとテンプレートを紹介する。

コンテナクラス

情報構造論の授業では、リストといった様々なアルゴリズムの説明では、 ひとまず整数でリストを…演習で名前と年齢の構造体で…といった 方式で進めてきたが、リストは次のデータのポインタと、実体のデータと考えれば、 実体データは、整数や名前と年齢といったように、必要に応じて変わってくる。

しかし、アルゴリズムが単純リスト・双方向リスト・2分木と変わっても、 実体データが違うだけで、自分自身で全てを記述することになる。 ただ、複雑なアルゴリズムになればなるほど、この作業が大変になる。

ここで、コンテナクラスという考え方が出てくる。 オブジェクト指向の派生・継承の考え方を使い、例えば単純リストを作りたい場合、 次のポインタだけの基本クラスを作り、そのリストを扱う処理をライブラリとして作っておく。 整数のリスト処理がしたければ、単純リストクラスに、整数を加えた派生クラスを作ったり、 名前と年齢を加えた派生クラスを作れば良い。

// 概念の説明用のクラス宣言であり、
// このままでは使いやすいクラスにはならない
class List {
private:
List* next ;
public:
List( List* n ) : next( n ) {}
} ;
class ListInt : public List {
private:
int data ;
:
} ;
class ListNameAge : public List {
private:
char name[20] ;
int  age ;
:
} ;

ただ、上記のプログラムでは、小さなオブジェクトでも仮想関数を使ったり、 肝心のアルゴリズムに相当する部分が記述が困難になるので、実際はもう少し 面倒な宣言になってしまう。 このため、C++などではテンプレートクラスがよく利用される。

テンプレート機能

C++でのテンプレート機能とは、型の部分を「仮の型名」としてプログラムを記述し、 そのプログラムを使用する時に具体的な型名を"<>"の中に記載する方式。 コンパイラ的には、異なる型でテンプレートが利用される度に、 その型用の機械語を生成するので、コードが肥大化する可能性があるのが問題ではある。

#include <stdio.h>
template <class T>
class List {
public:
T data ;
List<T>* next ;
public:
List<T>( T x , List<T>*n ) : data( x ) , next( n ) {}
} ;
int main() {
// 整数型のリスト処理
List<int>* p = new List<int>( 1 ,
new List<int>( 2 , NULL ) ) ;
for( ; p != NULL ; p = p->next ) {
printf( "%d\n" , p->data ) ;
}
// 実数型のリスト処理
List<double>*	r = new	List<double>( 1.2 ,
new List<double>( 2.3 , NULL ) ) ;
for( ; r != NULL ; r = r->next ) {
printf( "%f\n" , r->data ) ;
}
return 0 ;
}

このテンプレートクラスの考え方を、究極まで活用したものとして、STL(Standard Template Library)や、 Boostといったライブラリが有名である。

// Cの場合
#include <stdio.h>
int main() {
int* a ;
// 配列の作成
if ( (a = (int*)malloc( sizeof( int ) * 10 )) != NULL ) {
// 配列の初期化
for( int i = 0 ; i < 10 ; i++ )
a[ i ] = i ;
// 配列の合計
int sum = 0 ;
for( int i = 0 ; i < 10 ; i++ )
sum += a[ i ] ;
printf( "%d¥n" , sum ) ;
}
return 0 ;
}
// STLの場合
#include <numeric>
#include <vector>
#include <list>
using namespace std ;
int main() {
vector<int> a ; // 配列サイズはSTL任せ...
for( int i = 0 ; i < 10 ; i++ )
a.push_back( i ) ; // 配列末尾にiを追加
int sum = accumulate( a.begin() , a.end() , 0 ) ;
printf( "%d¥n" , sum ) ;
// 同じ処理を実数型の単純リストで...
list<double> b ;
for( int i = 0 ; i < 10 ; i++ )
b.push_back( (double)i ) ;
printf( "%f¥n" , accumulate( b.begin() , b.end() , 0.0 ) ) ;
return 0 ;
}

(企業技術者活用プログラム) iOS講習会(1)

企業技術者活用プログラムの一環で、 本校OBの中西氏を講師に招き、 「iOSプログラミング」の講習会を行いました。

iPhoneやiPadといった Apple の iOS での開発について、 4,5回の講習を予定しています。 今年度は、4EIから4名、F5の1年が1名の参加となりました。

今回は初回ということで、Xcode の使い方と、 最も基本的なプログラムの作成までを体験です。

1401300827_640x480.jpg

システム

最新の投稿(電子情報)

アーカイブ

カテゴリー