授業日一覧

その他

11月14日

関数の使い方の例(プリントp2)

  • 注意:***の部分は、プリントを確認して正しいものを入れること。4か所あり。
//
//     add.cpp 関数の使い方の例
//                足し算する関数を作る
//
//        written by Naohiko Takeda (2000.5.23)

#include	<iostream.h>

***     // 足し算関数のプロトタイプ宣言

main()
{
   int x, y, result ;

   while( 1 ){
            cout << endl << "2つの整数を入力(ともに0で終了) >> " ;
            cin >> x >> y ;
       if( x == 0 && y == 0 ){
           cout << endl << "プログラムを終了します。" ;
	    break ;
	}
	***    // xとyの和を求める
                                            // 結果の表示
	cout << endl << x << " + " << y << " = " << result  ;
	cout << endl ;
   }
        return 0;
}

//	ad 整数の和を求める関数
//
//       int a, int b  和を求める2つの整数
//       int 2数の和
//

***   //関数宣言
{
   int  wa ;

   wa = a + b ;   // 和を求める
   ***   // 結果(2数の和)を返す
}

11月21日

例題のプログラム(1p)

  • 注意:***の部分は、自分で考えられるなら自分で、難しければプリントを見て入力すること。2か所あり。
  //  2つの整数値を与え、その商と余りを求める関数(値呼び出し版)のテスト
  //    註:  関数内では正しい結果が出るが、mainでは正しい結果が得られない
  //      composed by Naohiko Takeda (2000.5.31)
  //      modified by Takeyuki Takahashi(2007.11.14)
 
  #include  <iostream.h>
 
  ***     // 割り算関数のプロトタイプ宣言
 
  main()
  {
    int  x, y ;
    int  n = 0, d = 0 ;
          
      cout << "\n\n2つの整数の商と余りを求める関数のテストプログラム\n\n" ;
 
     for( ; ; ){				// 無限ループ
         cout << "2つの数を入力して下さい(ともに0で終了します) >> " ;
         cin >> x >> y ;
         if( x == 0 && y == 0 ) {              // x と y がともに0で終了
             break ;
          }
          ***              // 商・余りを計算する関数
 
          // 以下は、関数内で変更した引数の値が、main では変更されて
          // いないことを確認するために値の出力を行っている
          cout << "\nmainでの計算結果:\n" ;
          cout << x << " ÷ " << y << " = " ;
          cout << n << " … " <<  d <<  endl << endl ;
      }
      cout << "\nプログラムを終了します\n";
      return 0;
  }
  
  //  2つの整数値を与え、その商と余りを求める関数
  //       割られる数  (整数  入力)
  //       割る数      (整数  入力)
  //    shou   商      (整数値:  )
  //    amar   余り    (整数値:  )
  
  void  warizan ( int a, int b, int shou, int amari )
  {
      // 商と余りを求める
      shou  = a / b ;
      amari = a % b ;
      cout << "\nwarizan内での計算結果:\n" ;
      cout << a << " ÷ " << b << " = " ;
      cout << shou << " … " <<  amari <<  endl << endl ;
  }

局所変数の例(3p)

  #include <iostream.h>
 
  void   func( void ) ;
 
  main()
    {
       int   a = 20 ;
       cout << "main での a の値=" << a << endl ;
       func() ;
       cout << "main での a の値=" << a << endl ;
    }
  
  void   func( void )
    {
         int   a ;
  
          a = 10000 ;
          cout << "func での a の値=" << a << endl ;
    }

11月28日

例題プログラム(2p)

  • 先週の例題プログラム(1p)を参照引数に書き換えただけ。
  • ***の部分をプリントを見て修正すること。
  //  2つの整数値を与え、その商と余りを求める関数(値呼び出し版)のテスト
  //    註:  関数内では正しい結果が出るが、mainでは正しい結果が得られない
  //      composed by Naohiko Takeda (2000.5.31)
  //      modified by Takeyuki Takahashi(2007.11.14)
 
  #include  <iostream.h>
 
  ***     // 割り算関数のプロトタイプ宣言
 
  main()
  {
    int  x, y ;
    int  n = 0, d = 0 ;
          
      cout << "\n\n2つの整数の商と余りを求める関数のテストプログラム\n\n" ;
 
     for( ; ; ){				// 無限ループ
         cout << "2つの数を入力して下さい(ともに0で終了します) >> " ;
         cin >> x >> y ;
         if( x == 0 && y == 0 ) {              // x と y がともに0で終了
             break ;
          }
          ***              // 商・余りを計算する関数
 
          // 以下は、関数内で変更した引数の値が、main では変更されて
          // いないことを確認するために値の出力を行っている
          cout << "\nmainでの計算結果:\n" ;
          cout << x << " ÷ " << y << " = " ;
          cout << n << " … " <<  d <<  endl << endl ;
      }
      cout << "\nプログラムを終了します\n";
      return 0;
  }
  
  //  2つの整数値を与え、その商と余りを求める関数
  //       割られる数  (整数  入力)
  //       割る数      (整数  入力)
  //    shou   商      (整数値:  )
  //    amar   余り    (整数値:  )
  
  void  warizan ( *** )
  {
      // 商と余りを求める
      shou  = a / b ;
      amari = a % b ;
      cout << "\nwarizan内での計算結果:\n" ;
      cout << a << " ÷ " << b << " = " ;
      cout << shou << " … " <<  amari <<  endl << endl ;
  }

12月5日

1次元配列と関数の例(p1)

//  複数の整数値を入力する関数(1次元配列を用いる)
//
//      composed by Takeyuki Takahashi
//          ver. 1.00.  2007.12.1.
//

#include  <iostream.h>

void   in_data( *** ) ;     //配列を引数とする関数の宣言

main()
{
   int prog[5];
      
   cout << "\n\n複数の整数値を入力する関数のテストプログラム\n\n" ;

   in_data( *** );

   cout << "\n\n入力された値を表示します\n\n" ;
   
   for(int i = 0; i < 5; i++ ){
       cout << i+1 << " 番目の入力値 : " << prog[i] << endl;
   }
}

//  複数の整数値を入力する関数
//    tensu : 入力される数値  (整数の配列:出力)

void in_data ( int *** )
{
  // 値を個数分入力する
   for(int i = 0; i < 5; i++ ){
     cout << i+1 << " 番目の整数を入力してください : ";
     cin  >> tensu[i];
   }
}

文字列と関数のプログラム例(p3)

//  文字列を複写する関数
//      composed by Takeyuki Takahashi
//          ver. 1.00.  2007.12.1.
//

#include  <iostream.h>

void   string_copy( *** ) ;

main()
{
   const  int  Max_Length = 80 ;   // 入力文字列の最大値  
   char in_char[Max_Length];          // 複写元文字列
   char out_char[Max_Length] = "" ;   // 複写先文字列

   cout << "\n\n文字列を複写する関数のテストプログラム\n\n" ;

   // 文字列の入力
   cout <<  "\n文字列を入力して下さい (英数字のみ) >> " ;
   cin.getline( *** ) ;

   // 複写前の状態
   cout << "\n複写元文字列:" << in_char << ":\n";
   cout << "\n複写先文字列:" << out_char << ":\n";

   string_copy( *** );

   cout << "\n\n複写後の状態を表示します\n\n" ;
   // 複写後の状態
   cout << "\n複写元文字列:" << in_char << ":\n";
   cout << "\n複写先文字列:" << out_char << ":\n";
}

//  文字列を複写する関数
//    in_c  : 複写元の文字列  (文字列:入力)
//    out_c : 複写先の文字列  (文字列:出力)

void string_copy ( *** )
{
   int i = 0;              // 文字列のカウンタ
   
   while(in_c[i] != '\0')  // 複写元文字列のNULL 文字まで,複写先文字列に複写する
   {
     out_c[i] = in_c[i];
     i++;
   }
}

12月12日

成績処理プログラムのモジュール分割

//
//  成績処理プログラム:プログラミング3教科の成績の出力
//
//      file name : seiseki4.cpp (2次元配列・文字列配列版)
//                         written by N. Takeda (2000.7.18)
//                         modified by T. Takahashi (2007.12.12)
//

#include  <iostream.h>
#include  <iomanip.h>

const  int Member_Max = 90 ;    // 受講生の人数
const  int Kyouka_Max = 3 ;     // 科目数
const  int Name_Len =  20 ;     // 名前の長さ

void   input_data( char [][Name_Len], int [][Kyouka_Max] ) ;  // 素点入力関数
void   calc_data( const int [][Kyouka_Max], int [], double [] ) ;   // 成績処理関数
void   disp_data( const char [][Name_Len], const int [][Kyouka_Max], const int [], const double [] ) ;                                         // 成績表表示関数

main()
{
    int    seiseki[Member_Max][Kyouka_Max] ;  // 3教科の成績
    char   name[Member_Max][Name_Len] ;       // 学生の氏名

    int      total[Member_Max] ;      // 各人の合計点
    double   ave[Member_Max] ;        // 各人の平均点

    // 成績処理プログラムの説明
    cout << "\n------ 成績処理プログラム --------\n\n" ;
    cout << "プログラミングの成績を入力し、一覧表を出力します\n" ;

    // 学生の氏名と成績の入力
    input_data( name, seiseki ) ;

    // 各個人の合計点と平均点を求める
    calc_data( seiseki, total, ave ) ;

    // 成績表の出力
    disp_data( name, seiseki, total, ave ) ;

    return 0 ;
}

// 素点入力関数
void input_data( char shimei[][Name_Len], int ten[][Kyouka_Max] )
{

}


// 成績処理関数
void  calc_data( const int ten[][Kyouka_Max], int gr[], double av[])
{

}

// 成績表表示関数
void  disp_data( const char shimei[][Name_Len], const int ten[][Kyouka_Max], const int gr[], const double av[])
{

}

仕様・プログラム作成時の注意点

仕様書

  1. 目的
    • 目的は,プログラムを主語にして記入すること。
  2. データ
    • データは型と範囲を明記すること。
    • 定数データだけでなく,変数データについても記入すること。
  3. 機能
    • 機能は処理の流れを書くのではなく,プログラム内で行われる作業の意味的なまとまりごとに記入すること。
    • 作業のまとまりに名前をつけ,その作業でやる内容について説明を記入すること。
    • 例外処理は,どの機能についての例外処理なのかが分かるように書くこと。
    • 機能の書き方(例)
      機能
       1. ユーザからの値の入力
          ユーザに○○や▲▲の値を入力してもらう。
       2. ■■の計算
          ユーザから入力された値を使って,■■を計算する。
          計算式は…のようにする。
       3. 結果の出力
          計算結果を表示する。その際に,ユーザが入力した値も合わせて表示する。
       例外処理
          1.の例外処理として,ユーザが範囲外の入力をした場合は…。
          2.の例外処理として,....。
  4. 画面表示
    • 例外処理(入力間違いなど)も含めて画面表示を書くこと。

プログラム

  1. 変数・定数の使い分け
    • 定数は大文字,変数は小文字
  2. 変数,定数,関数,返値,引数の説明 プログラムにコメントをつける
  3. 演算子の前後にスペースを入れる
    • wa = ○ + ○;
  4. 型変換を使う
    • データは適切な変数を使う

cin.getline()についての補足

  • cinとcin.getlineを混在させたりすると,入力ストリーム(入力されたデータを入れておく部分)に改行などが残ってしまい,cin.getline()がうまく動かないことがあります。
  • その時は,cin.getline()の前にcin.ignore()を入れるとよいでしょう。
  • cin.ignore()は,入力ストリームに残っているデータを消去するものです。

最終課題に関するImportant Dates

日程は変更されることがあります。教員の連絡をきちんと確認してください。

  • 1/10(火) 仕様書の提出
    • メールに添付して中西先生、齋藤に送付すること。
  • 2/1(水) 面接開始
    • この日から面接を受け付けます(1/30から予約受付)
    • 面接予約ページ: http://svr2009.ics.aichi-edu.ac.jp/reserve/
      • センターのID,パスワードでログインしてください。
      • 予約できるのは面接希望日の3日前から前日までです。
      • 予約の際に,プログラムを添付してください。
    • 面接時には,いつものレポートのように,表紙,プログラム,仕様書,疑似コードを持参すること。
  • 2/21(火) 1回目面接締め切り←締め切りを延長しました。
    • この日までに必ず1回目の面接を受けてください。
  • 重要!!面接予約について(2/23)
    • 面接予約のサーバーが利用できなくなっています。予約を希望される人は,直接教員にメールで日時の希望(第3希望まで)を連絡して下さい。
  • 3/7(水)面接締め切り←締め切りを1週間延長しました。
    • この日までに合格をもらうこと
  • 齋藤の面接予約状況
    時間2/272/282/293/1
    10:00
    10:30
    11:00予約
    11:30
    13:00予約
    13:30
    14:00
    14:30予約
    15:00×
    15:30××

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-02-28 (火) 09:58:41 (2037d)