ホーム » 2016

年別アーカイブ: 2016

2024年11月
 12
3456789
10111213141516
17181920212223
24252627282930

検索・リンク

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図を見比べた場合の考察

JOINTフォーラム

1612111401_530x1280.jpg

2016年12月11日(第505回)

  • 高専カフェについて
  • 卒業生の前田さんに質問しよう!
  • まるよし Train Pops ~ 国語と遊ぼう! 第103便「学術用語」

ゲスト:卒業生 前田様

担当:田嶋(3C、MC)、植村(2E、MIX)、上野(F1)、越後(F5)

PCNプログラミングサミット

1612041809_640x640.JPG
1612041809_640x480.JPG
1612041809_640x396.jpg

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 ;
}

システム

最新の投稿(電子情報)

アーカイブ

カテゴリー