作曲・指導・C言語・Linux

金沢音楽制作

金沢音楽制作では、楽曲・楽譜の制作と、作曲や写譜などレッスンを行っています。

筆者の成績とGPAの計算方法

成績は、優・良・可・―(不可)の4つに分類されます。試験がある科目では、試験結果が大きく作用するようです。また、GPAは、優が3で不可0になります。また、必須科目意外も評価対象になっています。つまり、学習しない方がGPAが高くなる傾向にあります。

成績表

成績の目安として、ぼくの成績を完全に公開します。つぎの最終結果には、受け取り拒否された科目の4*3=12単位が含まれています。

最終結果
科目種 単位数
総合教育科目 40
共通専門科目 82
専門科目 88
資格科目/教職 47
資格科目/学芸 27
資格科目/司書 20
合計 304
総合教育科目
コード 科目名 単位 課題 試験 授業 成績
0101 現代美術論 4 可可可良
0102 日本国憲法 2 優優
0103 人権問題論 2 優優
0104 文化人類学 4 可可優優
0105 哲学 4 優優
0106 保健体育概論 2 良優
0108 心理学 4 優優
0109 映画と文学 4 優優可良
0110 法と芸術 2 優優
0111 教職概論 2 優良
0112 英語1 2 優良
0113 スポーツ研究 2 優優
0114 情報機器の操作 2 良良
0115 英語2 2 優優
0117 レポートの書き方 2
小計 40
共通専門科目
コード 科目名 単位 課題 試験 授業 成績
0201 デザイン学概論 2
0204 写真概論 4 優良優
0205 工芸論 4 優優優優
0206 造形原理 4 優――― 放棄
0207 色彩学 4 良可
0208 デザイン史 4 優優
0209 ビデオ映像制作論 4 良優優優
0212 日本美術史 4 優優優優
0213 西洋美術史 4 優優
0217 映像概論 4 優良良可
0218 マンガ文化論 2 良優
0219 演劇概論 4 優優優優
0220 文芸概論 4 優良良良
0221 放送概論 4 良良
0222 日本文化史 4 優優良良
0223 音と芸術 4 可良優良
0224 20世紀の音楽 4 良優
0226 芸術情報論 4 優良優良
0227 比較文化論 4 優優優優
0228 映画史 4 優優優優
0250 アートプランニング(谷) 4 ―― 拒否
0251 アートプランニング(宮地 ) 4 優優
0261 マネージメント研究 2 優優
小計 82
専門科目
コード 科目名 単位 課題 試験 授業 成績
1901 音楽制作特論 4 優優優
1902 人間と音楽 4 優優優優
1903 情報音楽論 4 優優
1904 西洋音楽の歴史と理論 2
1905 日本音楽の歴史と理論 2
1906 情報音楽基礎演習 4 優優
1907 和声法1 4 良優良優優良 優優
1908 課題研究1 2 優優優
1909 ソルフェージュ 2 優優
1910 楽典 2 優良
1911 作品制作1 4 ――良優良優優優優優 優優
1912 サウンドスケープ論 4 良優
1913 コンピュータと音楽 4 優優優
1914 ポピュラー音楽論 2 良良
1915 和声法2 4 良良良優良 優優
1916 音楽データベース1 4 優優 優優
1917 課題研究2 2 優優
1918 作品制作2 4 優優優優――― 優優
1919 音楽データベース2 4 優優 優優
1920 課題研究3 2 優優
1941 作品制作3(クラシック) 4 良優 優優
1942 作品制作3(コンピュータ) 4 優優 優優
1943 作品制作3(ポピュラー) 4 優優良 優優
1997 卒業作品・発表(クラシック) 4 ―― 優優 拒否
1998 卒業作品・発表(コンピュータ) 4 優優優優優― 優優 拒否
1999 卒業作品・発表(ポピュラー) 4 優優優 優優
小計 88
資格科目/教職
コード 科目名 単位 課題 試験 授業 成績
5001 教育学概論 2 良良
5002 教育心理学 2 優優優
5003 教育社会学 2 良優
5004 特別活動指導法 2 良良
5005 教育方法論 2 良良
5006 生徒指導論 2 良優
5007 教育相談 2 優優
5008 教育実習1 1
5012 道徳指導法 2 優優
5013 教育実習2 4
5018 音楽科指導法1 4 良良
5019 音楽科指導法2 2 優優
5022 教職実践演習 2
1922 声楽1 2
1924 合唱 2 良良
1925 ピアノ1 2
1926 ピアノ2 2
1927 器楽合奏法 2 良優優
1928 伴奏法 2 良可
1929 指揮法 2 良優
1930 作曲法 4 優良
小計 47
資格科目/学芸
コード 科目名 単位 課題 試験 授業 成績
5201 生涯学習論 2 優良
5202 博物館学1 4 優優優優
5203 博物館学2 2 優優
5204 博物館実習 3
5205 教育メディア論 2 優良
5207 美術考古学 4 優良
5208 民俗学 4 優優
5210 博物館教育論 2 優優
5211 博物館資料保存論 2 可良
5212 展示技術論 2 優優
小計 27
資格科目/司書
コード 科目名 単位 課題 試験 授業 成績
5201 生涯学習論 (2) 優良
5301 図書館総論 4 優優可優
5302 図書館サービス論 2 ―― 放棄
5303 情報サービス論 4 不不不不 放棄
5304 情報検索演習 1
5305 レファレンスサービス演習 1
5306 図書館資料論1 2 可優
5307 図書館資料論2 2 優優
5308 資料組織概説 2 良可
5309 資料組織演習 2 優良
5310 児童サービス論 2 優優
5311 図書館情報技術論 2 優優
小計 20

GPA

GPAの計算、つまり成績の平均ポイントは次の式で求められます。

3.0 * 優の数 + 2.0 * 良の数 + 1.0 * 可の数 / 履修登録単位数

詳しくは、成績分布状況に記されています。有効数字については記載されていませんが、一般的に3桁(小数点第2位まで)のようです。

ぼくの成績からGPAを計算してみます。

各単位数
評価
単位数 72 20 7 6

以上の値を変数に代入して計算すると、GPAは2.50になりました。

3 * 72 + 2 * 20 + 1 * 6 / 105 = 2.50

GPAを計算するコード

GPAを計算してその結果を表示するプログラムをC99で書きました。また、各評価の取得割合も表示させました。引数に優から不可までの値4つを半角スペース区切りで入力します。対象の評価がない場合は0を入力します。なお、エラー処理は引数チェックのみ行います。

// C99
#include <stdio.h>
#include <stdlib.h>

enum {
  Val = 3,  // Max score for GPA
  Len = Val + 2,  // Len == argc
};

typedef struct {
  int point[Len];
  int totalPnt;
  int totalSbj;
  double gpa;
} _GPA;

static void initGPA(_GPA *data, const char *argv[]);
static void showGPA(_GPA *data);
static void showRatio(_GPA *data);
static double getRatio(int grade, int totalSbj);

int main(int argc, char *argv[])
{
  if (argc != Len) {
    fprintf(stderr, "Arguments error\n");
    exit(EXIT_FAILURE);
  }

  _GPA data;

  initGPA(&data, (const char**)argv);
  showGPA(&data);
  showRatio(&data);

  return 0;
}

static void initGPA(_GPA *data, const char *argv[])
{
  data->totalPnt = 0;
  data->totalSbj = 0;

  for (int i = 1; i < Len; i++) {
    data->point[i] = atoi(argv[i]);
  }
}

static void showGPA(_GPA *data)
{
  for (int i = 1, p = Val; i < Len; i++, p--) {
    int subject = data->point[i];

    printf("%d * %d\n", p, subject);
    data->totalSbj += subject;

    if (p != 0) {
      data->totalPnt +=  p * subject;
    }
  }

  data->gpa =  data->totalPnt / (double)data->totalSbj;

  puts("=================");
  printf("GPA: %.2f\n", data->gpa);
  puts("=================");
}

static void showRatio(_GPA *data)
{
  char *rank = "ABCF";

  for (int i = 1; i < Len; i++) {
    double ratio = getRatio(data->point[i], data->totalSbj);

    printf("%c ratings: %5.2f%%\n", *rank++, ratio);
  }
}

static double getRatio(int grade, int totalSbj)
{
  return 100 * grade / (double)totalSbj;
}
$ ./a.out 72 20 7 6
3 * 72
2 * 20
1 * 7
0 * 6
=================
GPA: 2.50
=================
A ratings: 68.57%
B ratings: 19.05%
C ratings:  6.67%
F ratings:  5.71%

時間のある時に、JavaScriptで動的に実行できるようにするつもりです。

更新情報