ホーム » 2016
年別アーカイブ: 2016
2016年12月25日(第507回)
- クリスマスについての話
- 今年やり残したこと、達成したこと
- ジャズバー歴史 65杯目「不倫と離婚」
担当:水島(2C、MC)、田中(3B、MIX)、増永(F1)、中島(F2)、中村(教員)
構造体と実体について
構造体と実体の違いや、Javaに慣れている学生さんに あらためて、データ構造のイメージを持って欲しいので、 以下のコードを示す。
struct Complex { double re ; double im ; } ; struct Complex2 { double* pre ; double* pim ; } ; void main() { // メモリ確保失敗のNULLチェックは省略 struct Complex a ; struct Complex* p ; struct Complex2 b ; struct Complex2* q ; a.re = 1.2 ; a.im = 2.3 ; p = (struct Complex*)malloc( sizeof( struct Complex ) ) ; p->re = 1.2 ; p->im = 2.3 ; // in Java // p = new Complex ; // p.re = 1.2 ; // p.im = 2.3 ; b.pre = (double*)malloc( sizeof( double ) ) ; *(b.pre) = 1.2 ; b.pim = (double*)malloc( sizeof( double ) ) ; *(b.pim) = 2.3 ; q = (struct Comple2*)malloc( sizeof( struct Complex2 ) ) ; q->pre = (double*)malloc( sizeof( double ) ) ; *(q->pre) = 1.2 ; q->pim = (double*)malloc( sizeof( double ) ) ; *(q->pim) = 2.3 ; }
上記プログラムのメモリの格納イメージ図を以下に示す。
2016年12月18日(第506回)
- 今年の漢字について
- ジャズバー歴史 64杯目 「美のあり方」
- クリスマスに欲しいプレゼントは?
- 初雪の話
- 冬休みの予定
担当:木下(3EI、MC)、植村(2E、MIX)、川﨑(3EI)、佐々木(F4)
データベースの課題ER図の作成
課題
「卒業研究で扱うデータをER図で表現する」 実験系のテーマの人は、実験結果をデータベースに保存することを 想定してER図を作成すること。 どうしても、ER図で表現しづらいテーマの人は、身の回りのデータ をデータベースで扱うことをテーマにしてもいい。
内容
データベースを、トップダウンで設計した場合のER図、 ボトムアップで設計した場合のER図を作成すること。
提出物に記載すべき内容
- トップダウンで設計する場合の、要求仕様に相当するもの
- それから抽出した実体・関連・属性などの説明
- そこから作成したER図
- 正規形の条件を満たすために書き換えたER図の説明、および結果の図が正規形
の条件を満たしていることの確認
- ボトムアップ設計する場合の、もともとのデータ(帳票)に相当するもの
- その説明
- レベル分けやグループ分けをして作成したER図
- 正規形の条件を満たすために書き換えたER図の説明、および結果の図が正規形
の条件を満たしていることの確認
- 2つのER図を見比べた場合の考察
2016年12月11日(第505回)
- 高専カフェについて
- 卒業生の前田さんに質問しよう!
- まるよし Train Pops ~ 国語と遊ぼう! 第103便「学術用語」
ゲスト:卒業生 前田様
担当:田嶋(3C、MC)、植村(2E、MIX)、上野(F1)、越後(F5)
2016年12月4日(第504回)
- 今日は何の日
- 12月の話
- まるよし Train Pops ~ 国語と遊ぼう! 第102便「ウルトラマン」
担当:小藤(3B、MC)、西島(2EI、MIX)、西(教員)、中村(教員)
2016年11月27日(第503回)
高専ライブ500回記念月間の総仕上げ!!
教員による生放送でお送りしました。
- ジャズバー歴史の舞台裏
- 数学の部屋の思い出
- 英語の囃子の思い出 徳山からの長水先生、生電話
- 「まるトレ」からのお知らせ
- 12月9日の高専カフェでまるトレが再現
- 12月4日と11日の高専ライブで、まるトレ、復活!!
担当:吉田(英語科教員)、手嶋(社会科教員)、中村(国語科教員、MC)、西(電子情報工学科教員、MIX)
構造体を使ったプログラム例
今日はテスト前で、構造体の全体的な説明も終わり、演習の時間。 以下のようなオブジェクト指向の考え方を取り入れた、 構造体ポインタ渡しのスタンダードなプログラムを示す。
#include <stdio.h> #define SIZE 10 struct Person { char name[ 20 ] ; int age ; } ; int read_Person( struct Person* p ) { return scanf( "%s%d" , p->name , &(p->age) ) == 2 ; } void print_Person( struct Person* p ) { printf( "%s %d\n" , p->name , p->age ) ; } int main() { int i , size ; struct Person table[ SIZE ] ; // データの入力処理 for( i = 0 ; i < SIZE ; i++ ) { if ( !read_Person( &( table[i] ) ) ) break ; } size = i ; // データの出力処理 for( i = 0 ; i < size ; i++ ) print_Person( &( table[i] ) ) ; return 0 ; }
ファイル入出力にも慣れてもらおう
#include <stdio.h> #define SIZE 10 struct Person { char name[ 20 ] ; int age ; } ; int read_Person( struct Person* p , FILE* fp ) { return fscanf( fp , "%s%d" , p->name , &( p->age ) ) == 2 ; } void print_Person( struct Person* p , FILE* fp ) { fprintf( "%s %d\n" , p->name , p->age ) ; } int main() { int i , size ; struct Person table[ SIZE ] ; FILE* fp_in ; if ( (fp_in = fopen( "data.txt" , "rt" )) != NULL ) { for( i = 0 ; i < SIZE ; i++ ) if ( ! read_Person( &( table[i] ) , fp_in ) ) { size = i ; break ; } for( i = 0 ; i < size ; i++ ) print_Person( &( table[i] ) , stdout ) ; } return 0 ; }
オブジェクト指向っぽく
#include <stdio.h> #define SIZE 10 class Person { private: char name[ 20 ] ; int age ; public: int read() { return scanf( "%s%d" , name , &age ) == 2 ; } void print() { printf( "%s %d\n" , name , age ) ; } } ; int main() { int size ; Person table[ SIZE ] ; for( int i = 0 ; i < SIZE ; i++ ) if ( !table[i].read() ) { size = i ; break ; } for( int i = 0 ; i < size ; i++ ) table[i].print() ; return 0 ; }