プログラミング演習1, 2 レポートテンプレート

各レポートの章立てや執筆要領については,演習課題説明資料 (p2-theme-all.pdf)を熟読すること.

プログラミング演習1 レポートA

  • 生成PDFの例 (eop1_reportA_example.pdf)

  • ソースファイル (eop1_reportA_example.tex)

    ソースファイルのプレビュー(クリックして開く)
      1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
     16
     17
     18
     19
     20
     21
     22
     23
     24
     25
     26
     27
     28
     29
     30
     31
     32
     33
     34
     35
     36
     37
     38
     39
     40
     41
     42
     43
     44
     45
     46
     47
     48
     49
     50
     51
     52
     53
     54
     55
     56
     57
     58
     59
     60
     61
     62
     63
     64
     65
     66
     67
     68
     69
     70
     71
     72
     73
     74
     75
     76
     77
     78
     79
     80
     81
     82
     83
     84
     85
     86
     87
     88
     89
     90
     91
     92
     93
     94
     95
     96
     97
     98
     99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    % ファイル先頭から\begin{document}までの内容(プレアンブル)については,
    % 基本的に { } の中を書き換えるだけでよい.
    \documentclass[autodetect-engine,dvi=dvipdfmx,ja=standard,
                   a4j,11pt]{bxjsarticle}
    
    %%======== プレアンブル ============================================%%
    % 用紙設定:指示があれば,適切な余白に設定しなおす
    \RequirePackage{geometry}
    \geometry{reset,paperwidth=210truemm,paperheight=297truemm}
    \geometry{hmargin=25truemm,top=20truemm,bottom=25truemm,footskip=10truemm,headheight=0mm}
    %\geometry{showframe} % 本文の"枠"を確認したければ,コメントアウト
    
    % 設定:図の挿入
    % http://edu2024.sp.cs.okayama-u.ac.jp/info/tool_guide/tex.html#graphicx
    \usepackage{graphicx}
    
    % 設定:ソースコードの挿入
    % http://edu2024.sp.cs.okayama-u.ac.jp/info/tool_guide/tex.html#fancyvrb
    \usepackage{fancyvrb}
    \renewcommand{\theFancyVerbLine}{\texttt{\footnotesize{\arabic{FancyVerbLine}:}}}
    
    % 設定:ソースコードをfloat扱いするための環境の定義
    %       図1, 図2, ... のように,Listing 1, Listing 2, ... とすることができる.
    \usepackage{newfloat}
    \DeclareFloatingEnvironment[name=Listing, fileext=lol]{eopcode}
    
    %%======== レポートタイトル等 ======================================%%
    % ToDo: 提出要領に従って,適切なタイトル・サブタイトルを設定する
    \title{プログラミング演習1 レポートA\\        % タイトル
           |\Large{C言語による構文解析の基本}|}   % サブタイトル
    
    % ToDo: 自分自身の氏名と学生番号に書き換える
    \author{氏名: 原 直 (HARA, Sunao) \\
            学生番号: 0941xxxx}
    
    % ToDo: レポート課題等の指示に従って適切に書き換える
    \date{出題日: 20xx年xx月xx日 \\
          提出日: 20xx年xx月xx日 \\
          締切日: 20xx年xx月xx日 \\}  % 注:最後の\\は不要に見えるが必要.
    
    % Tips: \today マクロは,latex実行時の日付に自動置換される.
    
    %%======== 本文 ====================================================%%
    \begin{document}
    \maketitle
    % 目次つきの表紙ページにする場合はコメントを外す
    %{\footnotesize \tableofcontents \newpage}
    
    %% 本文は以下に書く.課題に応じて適切な章立てを構成すること.
    %% 章=\section,節=\subsection,項=\subsubsection である.
    
    \begin{center}\fbox{\begin{minipage}{140truemm}\small
      \textbf{※執筆上の注意※}
      \par 本書は空想上の課題に対するレポートの執筆例である.
      章の構成と書くべき内容の参考として提示するものであるため,
      課題内容やプログラムの仕様などは,実際の演習課題の指示に従って
      適切にまとめ直す必要がある.
      文や文の一部を「・・・」や「??」によって省略している箇所があるが,
      これに穴埋めをするだけで,レポートが完成するわけではない.
      なお,サンプルと同じ書き出しで文章を書く必要もない.
      \par(この注意書き部は提出用のレポートでは必ず消すか,コメントアウトすること)
      % Tips: Emacsのコメントトグルは,範囲選択してから M-;
    \end{minipage}}\end{center}
    
    %--------------------------------------------------------------------%
    \section{概要} \label{sec:abstract}
    
    \begin{center}\fbox{\begin{minipage}{140truemm}\small
      \textbf{※執筆上の注意※}
      \par 演習課題説明書を読み,本レポートとして実施した課題が分かるように書く.
      \par (この注意書きは提出用のレポートでは必ず消すか,コメントアウトすること)
    \end{minipage}}\end{center}
    
    本演習では・・・を作成する・・・.
    ・・・のため,・・・・をおこなう.
    
    本レポートでは,演習中に取り組んだ課題として,
    以下の課題??から課題??についての内容を報告する.
    
    \begin{description}
      \item[課題1] Linux環境におけるC言語プログラミング (\ref{sec:topic1}章)
      \item[課題2] 文字列操作・・・(\textbf{サンプルのため,省略}%本文の記述と矛盾しないように注意すること.
    \end{description}
    
    %--------------------------------------------------------------------%
    \section{Linux環境におけるC言語プログラミング} \label{sec:topic1}
    
    \begin{center}\fbox{\begin{minipage}{140truemm}\small
      \textbf{※執筆上の注意※}
      \par 少なくとも,(1) gccによるコンパイル方法,
      (2) コンパイルされたプログラムを実行する方法については記載すること.
      \par なお,\textbf{本講義では,Red Hat Linux は使っていない}.適切に書き直すこと.
      \par (この注意書きは提出用のレポートでは必ず消すか,コメントアウトすること)
    \end{minipage}}\end{center}
    
    本講義では,Linux環境におけるC言語プログラミングをおこなう.
    そこで,本章では・・・についてまとめる.
    
    以降のプログラムは,いずれも Red Hat Linux 3.2.2-5 で動作を確認しているが,
    一般的な UNIX で動作することを意図して作成している.
    なお,以降の実行例における,行頭の \verb|$| 記号は,
    Red Hat Linux 3.2.2-5におけるターミナルのプロンプトである.
    % 注:以降の課題において,実行結果を得るために利用した,実行環境のOS,
    %     ならびに,その環境におけるプロンプトを必ず書くこと.
    
    C言語で書かれたソースコードは,\verb|gcc|でコンパイルすることで,
    プログラムの実行ファイルを生成する.
    例えば,\verb|program1.c|であれば,
    
    % Verbatim environment
    % プリアンブルで \usepackage{fancyvrb} が必要.
    %   - numbers           行番号を表示.none 非表示.left 左に表示.
    %   - xleftmargin       枠の左の余白.行番号表示用に余白を与えたい.
    %   - numbersep         行番号と枠の間隙 (gap).デフォルトは 12 pt.
    %   - fontsize          フォントサイズ指定
    %   - baselinestretch   行間の大きさを比率で指定.デフォルトは 1.0.
    \begin{Verbatim}[numbers=none, xleftmargin=10mm, numbersep=6pt,
      fontsize=\normalsize, baselinestretch=0.8]
    $ gcc -Wall ・・・
    \end{Verbatim}
    %
    のようにコンパイルする.
    この時,生成されるプログラムの実行ファイルは・・・という名前になる.
    
    % Tips: Verbatim の後に空行を入れると,段落が変わってしまう.
    %       段落は変えたくないが,texソースでは隙間を空けて読みやすくしたいなら,
    %       上記例のように,%のみの行を置くとよい.
    
    ここで,\verb|-Wall|とは...するためのオプションであり,
    \verb|-o|とは・・・を指定するオプションである.
    これらのオプションをつけることで,・・・(略)
    
    生成されたプログラムを実行するには,以下のようにターミナルで入力する.
    
    \begin{Verbatim}[numbers=none, xleftmargin=10mm, numbersep=6pt,
      fontsize=\normalsize, baselinestretch=0.8]
    $ program1
    \end{Verbatim}
    
    % 上記は,ダメな説明の例である.正しく動かすことができるよう,書き直すこと.
    %
    % !もう一歩上へ!
    % 何が問題か理解しているならば,その旨をレポートに書くこともできよう.
    % 例えば,上記の実行例の後に,「ここで,xxxとしている点に注意が必要である.
    % xxxとすると,xxxになってしまう.そのため,xxxが必要なのである.」
    % といったことが書けると,レポートらしくなる.講義中に感じたちょっとした疑問は,
    % レポートを書くために,重要な気づきを与えてくれる.ただし,その疑問が「xxxは
    % 不思議だと思った.」で止まってしまうと,レポートではなく感想文になってしまう.
    % 「感想」は,最後の感想の章以外に書いてはいけない.
    
    %--------------------------------------------------------------------%
    \section{標準入力を受け付ける構文解析プログラムの作成} \label{sec:topic2}
    % Tips:
    % - section, subsectionなどでは verbが使えない.必要ならば texttt を使うとよい.
    
    %--------------------------------------------------------------------%
    \subsection{プログラムの説明}
    
    \begin{center}\fbox{\begin{minipage}{140truemm}\small
      \textbf{※執筆上の注意※}
      \par 変数や数値は$\backslash$verbや\$\$で囲い,適切な書体で記述する.
      また,章・節番号や図表番号の引用も,数字を直接書くのではなく,\LaTeX{} の
      機能を活用せよ.なお,このサンプルでは``わざと''一部の処理を省略している.
      見た目の違いを確認して,自分のレポートでは処理を忘れないようにすること.
      \par (この注意書きは提出用のレポートでは必ず消すか,コメントアウトすること)
    \end{minipage}}\end{center}
      
    % Tips:
    % - 最初の段落で,この課題で作成したプログラムの全体像を説明する.
    % - 次の段落で,プログラム内の関数や特に重要な変数等の名前や場所などを説明する.
    % - 以降の段落で,各関数や変数等に関する詳細を説明する.
    
    本課題で作成するプログラムは,・・・をするプログラムである.
    プログラムリストは・・・節に添付している.
    
    % Tips: \label を付けた直前の section 等に自動付与される数字は,
    %       \ref で参照できる.「概要」における利用例を再確認しよう.
    
    プログラムは全部で267行からなる.
    まず,文字列操作関数として,
    \verb|subst()|関数を11--25行目で宣言し, % この行は適切な書き方の例
    split()関数を27-44行目で宣言している.   % この行は不適切な書き方の例
    次に,これらの関数の動作を確認するため,・・・(省略)
    最後に,・・・において,・・・(省略)
    
    \verb|subst(STR, C1, C2)|関数は,
    \verb|STR|が指す文字列中の,文字\verb|C1|を文字\verb|C2|に置き換える関数である.
    プログラム中では,xxx関数の中で,入力文字列中の末尾に付く改行文字を
    ヌル文字で置き換えるために使用している.
    
    \verb|split(STR, ...)|関数は,・・・(※サンプルのため,いろいろと省略)
    
    %--------------------------------------------------------------------%
    \subsection{動作確認の方法}
    
    \begin{center}\fbox{\begin{minipage}{140truemm}\small
      \textbf{※執筆上の注意※}
      \par プログラムの使用法を説明する節である.
      入力データの準備,コマンドの実行方法,実行中のキーボード入力例,などを書く.
      ソースコードのファイルと,このレポートの記述通り実行すれば,
      報告者と同じ結果が再現できるように書いておく,という意識が必要である.
      なお,入力データの準備が不要なら無理に何かを準備する必要はない.
      \par また,このサンプルファイルでは,架空の課題に対する記載例を示しているに
      過ぎない.テンプレート文のように穴埋めするだけという意識では不十分である.
      \par (この注意書きは提出用のレポートでは必ず消すか,コメントアウトすること)
    \end{minipage}}\end{center}
    
    本課題で作成したプログラムは,・・・をするプログラムであり,・・・が必要である.
    そこで,まずは次の方法で・・・を準備する.
    
    (※サンプルのため,いろいろと省略)
    
    次に,以下の方法でプログラムを実行する.
    
    (※サンプルのため,いろいろと省略)
    
    実行結果として,次のような出力が得られる.
    
    (※サンプルのため,いろいろと省略)
    
    %--------------------------------------------------------------------%
    \subsection{動作確認の結果}
    
    \begin{center}\fbox{\begin{minipage}{140truemm}\small
      \textbf{※執筆上の注意※}
      \par 動作確認の観点から結果を述べる.
      すなわち,前節で記述した実行方法(や入力データ)と実験結果から,
      課題プログラムの動作として妥当かどうかの言及をする.
      想定外の動作を発見したなら,そのことも書いておくとよい.
      \par (この注意書きは提出用のレポートでは必ず消すか,コメントアウトすること)
      \end{minipage}}\end{center}
    
    前節における,入力1に対する結果1を見ると,・・・
    (※サンプルのため,いろいろと省略)
    
    入力3のように・・・では,結果3のような・・・となることがある.
    そのため,・・・関数を利用する際にxxxとならないように,注意する必要がある.
    
    (※サンプルのため,いろいろと省略)
    
    %--------------------------------------------------------------------%
    \section{感想}
    % 感想を書かないならコメントアウトしておくこと.
    % なお,感想に書かれた"感想と思われる内容"は,評価の対象外である.
    
    (※サンプルのため,いろいろと省略)
    
    %--------------------------------------------------------------------%
    \section{作成したプログラムのソースコード} \label{sec:eop1-repA-code}
    
    \begin{center}\fbox{\begin{minipage}{140truemm}\small
      \textbf{※執筆上の注意※}
      \par 余白にはみ出さないように注意.
      ソースコードは,1行あたり80文字以内に収めるのが無難.
      また,「??章」のように「??」が残った状態でレポートを提出しないように注意.
      \par(この注意書き部は提出用のレポートでは必ず消すか,コメントアウトすること)
    \end{minipage}}\end{center}
    
    本レポート課題のために作成したプログラムを以下に添付する.
    なお,\ref{sec:abstract}章に示した課題については,
    \ref{xxxx}章で示したようにすべて正常に動作したことを付記しておく.
    
    % Verbatim environment
    % プリアンブルで \usepackage{fancyvrb} が必要.
    %   - numbers           行番号を表示.left なら左に表示.
    %   - xleftmargin       枠の左の余白.行番号表示用に余白を与えたい.
    %   - numbersep         行番号と枠の間隙 (gap).デフォルトは 12 pt.
    %   - fontsize          フォントサイズ指定
    %   - baselinestretch   行間の大きさを比率で指定.デフォルトは 1.0.
    \begin{Verbatim}[numbers=left, xleftmargin=10mm, numbersep=6pt,
      fontsize=\small, baselinestretch=0.8]
    #include <stdio.h>
    
    int main()
    {
        char s[4] = {'A', 'B', 'C', '\0'};
        printf("s = %s\n", s);
        return 0;
    }
    // 以下は,はみ出し文字数を確認するためのダミーコメントです.
    //00000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999
    \end{Verbatim}
    
    % Tips: 
    % - 上記ソースコードのような,ダミーコメントは消すこと.
    % - latex処理後の warning に Overfull hbox が出ていないか注意しよう.
    %   cf. https://edu2024.sp.cs.okayama-u.ac.jp/info/tool_guide/tex.html#id5
    % - 「紙面に収める」とは,「余白があるように収める」という意味である.
    %   本節冒頭の注意書きの意味を再確認するとよい.
    
    %--------------------------------------------------------------------%
    %% 本文はここより上に書く(\begin{document}~\end{document}が本文である)
    \end{document}
    

プログラミング演習1 レポートB

  • 生成PDFの例 (eop1_reportB_example.pdf)

  • ソースファイル (eop1_reportB_example.tex)

    ソースファイルのプレビュー(クリックして開く)
      1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
     16
     17
     18
     19
     20
     21
     22
     23
     24
     25
     26
     27
     28
     29
     30
     31
     32
     33
     34
     35
     36
     37
     38
     39
     40
     41
     42
     43
     44
     45
     46
     47
     48
     49
     50
     51
     52
     53
     54
     55
     56
     57
     58
     59
     60
     61
     62
     63
     64
     65
     66
     67
     68
     69
     70
     71
     72
     73
     74
     75
     76
     77
     78
     79
     80
     81
     82
     83
     84
     85
     86
     87
     88
     89
     90
     91
     92
     93
     94
     95
     96
     97
     98
     99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    399
    400
    401
    402
    403
    404
    405
    406
    407
    408
    409
    410
    411
    412
    413
    414
    415
    416
    417
    418
    419
    420
    421
    422
    423
    424
    425
    426
    427
    428
    429
    430
    431
    432
    433
    434
    435
    436
    437
    438
    439
    440
    441
    442
    443
    444
    445
    446
    447
    448
    449
    450
    451
    452
    453
    454
    455
    456
    457
    458
    459
    460
    461
    462
    463
    464
    465
    466
    % ファイル先頭から\begin{document}までの内容(プレアンブル)については,
    % 基本的に { } の中を書き換えるだけでよい.
    \documentclass[autodetect-engine,dvi=dvipdfmx,ja=standard,
                   a4j,11pt]{bxjsarticle}
    
    %%======== プレアンブル ============================================%%
    % 用紙設定:指示があれば,適切な余白に設定しなおす
    \RequirePackage{geometry}
    \geometry{reset,paperwidth=210truemm,paperheight=297truemm}
    \geometry{hmargin=25truemm,top=20truemm,bottom=25truemm,footskip=10truemm,headheight=0mm}
    %\geometry{showframe} % 本文の"枠"を確認したければ,コメントアウト
    
    % 設定:図の挿入
    % http://edu2024.sp.cs.okayama-u.ac.jp/info/tool_guide/tex.html#graphicx
    \usepackage{graphicx}
    
    % 設定:ソースコードの挿入
    % http://edu2024.sp.cs.okayama-u.ac.jp/info/tool_guide/tex.html#fancyvrb
    \usepackage{fancyvrb}
    \renewcommand{\theFancyVerbLine}{\texttt{\footnotesize{\arabic{FancyVerbLine}:}}}
    
    % 設定:ソースコードをfloat扱いするための環境の定義
    %       図1, 図2, ... のように,Listing 1, Listing 2, ... とすることができる.
    \usepackage{newfloat}
    \DeclareFloatingEnvironment[name=Listing, fileext=lol]{eopcode}
    
    %%======== レポートタイトル等 ======================================%%
    % ToDo: 提出要領に従って,適切なタイトル・サブタイトルを設定する
    \title{プログラミング演習1 レポートB\\         % タイトル
           |\Large{適切なサブタイトルを付ける}|}   % サブタイトル
    
    % ToDo: 自分自身の氏名と学生番号に書き換える
    \author{氏名: 原 直 (HARA, Sunao) \\
            学生番号: 0941xxxx}
    
    % ToDo: レポート課題等の指示に従って適切に書き換える
    \date{出題日: 20xx年xx月xx日 \\
          提出日: 20xx年xx月xx日 \\
          締切日: 20xx年xx月xx日 \\}  % 注:最後の\\は不要に見えるが必要.
    
    
    %%======== 本文 ====================================================%%
    \begin{document}
    \maketitle
    % 目次つきの表紙ページにする場合はコメントを外す
    %{\footnotesize \tableofcontents \newpage}
    
    %% 本文は以下に書く.課題に応じて適切な章立てを構成すること.
    %% 章=\section,節=\subsection,項=\subsubsection である.
    
        \textbf{\small※執筆上の注意:本書は空想上の課題に対するレポートの
        執筆例である.章の構成と書くべき内容の参考として提示するもの
        であるため,課題内容やプログラムの仕様などは,
        実際の演習課題の指示に従って適切にまとめ直す必要がある.
        文や文の一部を「・・・」や「??」によって省略している箇所があるが,
        これに穴埋めをするだけで,レポートが完成するわけではない.
        なお,サンプルと同じ書き出しで文章を書く必要もない.
        (この注意書きは提出用のレポートでは必ず消すか,コメントアウトすること)※}
        % Tips: Emacsのコメントトグルは,範囲選択してから M-;
    
    %--------------------------------------------------------------------%
    \section{概要} \label{sec:abstract}
        \textbf{\small※執筆上の注意:
        演習課題説明書を読み,本レポートとして実施した課題が分かるように書く.
        (この注意書きは提出用のレポートでは必ず消すか,コメントアウトすること)※}
        % Tips: Emacsのコメントトグルは,範囲選択してから M-;
    
    % 繰り返す.以下は,架空の課題である.
    本演習では,名簿管理機能を有するプログラムを,C言語で作成する.
    このプログラムは,標準入力から「ID, 氏名, 誕生日, 住所, 備考」からなる
    コンマ区切り形式(CSV形式)の名簿データを受け付けて,
    それらをメモリ中に登録する機能を持つ.
    ただし,\%で始まる入力行はコマンド入力と解釈し,
    登録してあるデータを表示したり整列したりする機能も持つ.
    
    本レポートでは,演習中に取り組んだ課題として,
    以下の課題??から課題??についての内容を報告する.
    
    \begin{description}
      \item[課題4] xxxxxxx
      \item[課題5] xxxxxxx
      %本文の記述と矛盾しないように注意すること.
      %xxxxxxxは「サンプルのため省略」の意味で書いている.各自で適切に書き直すこと.
    \end{description}
    
    % 以下は,レポートB以降で必須の考察についての書き方の例.
    また,考察課題として,以下の観点での考察をおこない,\ref{}章にまとめた.
    
    \begin{description}
      \item[考察1] xxxxxxx (\ref{}節)
      \item[考察2] xxxxxxx (\ref{}節)
      %本文の記述と矛盾しないように注意すること.
    \end{description}
    
    %--------------------------------------------------------------------%
    \section{プログラムの作成方針} \label{sec:plan-of-programming}
        \textbf{\small※執筆上の注意:課題の理解を深めるため,課題説明書を見ながら
        書き写そう.コピペは非推奨.なお,追加仕様も,書いているほうが望ましいが,
        レポートの要件として必須とはしない.追加仕様を書く場合は,次節以降の説明や
        考察などを通して,その追加仕様の意義を説明するとより良い.
        (この注意書きは提出用のレポートでは必ず消すか,コメントアウトすること)※}
        % Tips: Emacsのコメントトグルは,範囲選択してから M-;
    
    本演習で作成したプログラムが満たすべき要件と仕様として,
    「(1) 基本要件」と「(2) 基本仕様」を示す.
    % 追加仕様も書くなら,書き変えを忘れずに
    
    \subsection*{(1) 基本要件}
    % ...ction* と,アスタリスクを入れている点に注意.数字無しの節や項目が作られる.
    
    \begin{enumerate}
      \item プログラムは,その実行中,・・・
      \item 名簿データは,・・・・
      \item プログラムとしての動作や名簿データの管理のために,・・・
      \begin{enumerate}
        \item プログラムの正常な終了
        \item 登録された・・・
        % サンプルのため省略.
        % レポートBでは,レポートBの時点で必要な機能だけ書いてあればよい
      \end{enumerate}
      \item 標準入力からのユーザ入力を通して,,,      % サンプルのため省略
    \end{enumerate}
    % Tips: enumerateの行間を調整するなら,以下の様に調整用のコマンドを入れる.
    % \begin{enumerate}
    %   \setlength{\parskip}{0em} \setlength{\itemsep}{0.25em}   % <--
    %   \item ...
    %   \item
    
    \subsection*{(2) 基本仕様}
    
    \begin{enumerate}
      \item 名簿データは,コンマ区切りの文字列(\textbf{CSV入力}と呼ぶ)で表されるものとし,%
            Listing~\ref{lst:csvdata}に示したようなテキストデータを処理できるようにする.%
            %CSV入力の詳細は,\ref{sec:sepc_csv}節に示す.  % <-- この1文は,レポートでは不要
      \item コマンドは,\%で始まる文字列(\textbf{コマンド入力}と呼ぶ)とし,表\ref{tab:commands}にあげたコマンドをすべて実装する
      \item 1つの名簿データは,C言語の構造体 (\texttt{struct}) を用いて,・・・   % サンプルのため省略
      % サンプルのため省略.仕様書の footnote は書かなくてよい.
    \end{enumerate}
    
    % 追加仕様も書くなら,書き変えを忘れずに
    %\subsubsection*{(3) 追加仕様}
    % \begin{enumerate}
    %   \item 
    % \end{enumerate}
    
    %========================= EXAMPLE CSV ================================%
    \begin{eopcode}[b]
    \centering % この1行はbegin~endの中を中央寄せにする,というコマンド
    % Verbatim environment
    % プリアンブルで \usepackage{fancyvrb} が必要.
    %   - frame         枠の設定.single 四角で囲う.none 囲わない.
    %   - xleftmargin   枠の左の余白.行番号表示用の余白も考慮が必要.
    %   - xrightmargin  枠の右の余白
    %   - numbersep     行番号と枠の間隙 (gap).デフォルトは 12 pt.
    %   - gobble        先頭n文字を無視.インデントを無視したい場合に利用する.
    %   - fontsize      フォントサイズ指定.\normalsize, \small, ...
    %   - numbers       行番号を表示.none 非表示.left 左に表示.
    %   - firstnumber   最初の行番号を指定.途中の行番号から指定したいなら数字を入れる.
    \begin{Verbatim}[frame=single, xleftmargin=3mm, xrightmargin=3mm, numbersep=6pt,
                    gobble=0, fontsize=\small, numbers=left, firstnumber=1]
    5100046,The Bridge,1845-11-2,14 Seafield Road Longman Inverness,SEN Unit 2.0 Open
    5100127,Bower Primary School,1908-1-19,Bowermadden Bower Caithness,01955 641225 ...
    5100224,Canisbay Primary School,1928-7-5,Canisbay Wick,01955 611337 Primary 56 3...
    5100321,Castletown Primary School,1913-11-4,Castletown Thurso,01847 821256 01847...
    \end{Verbatim}
      \caption{名簿データのCSV入力形式の例.1行におさまらないデータは...で省略した.}
      \label{lst:csvdata}
    \end{eopcode}
    %========================= EXAMPLE CSV ================================%
      
    %========================= COMMAND LIST ================================%
    \begin{table}[t]  %表の位置は原則として t または b.h や H は使わない.
    \centering % この1行はbegin~endの中を中央寄せにする,というコマンド
      \caption{実装するコマンド}
      \label{tab:commands}
      \begin{tabular}{|l|ll|l|}
      \hline
        \textbf{コマンド} & \textbf{意味} &        & \textbf{備考} \\
      \hline\hline
        \verb|%Q|   & 終了                & (Quit)  & \\
      \hline
        \verb|%P n| & 先頭から$n$件表示   & (Print) & $n$が$0$ $\to$ 全件表示,        \\
                    &                     &         & $n$が負 $\to$ 後ろから$-n$件表示 \\
      \hline
        *****       &(サンプルのため     & 省略)    & \\
      \hline
      \end{tabular}
    \end{table}
    %========================= COMMAND LIST ================================%
      
    % 以下の2行は提出用のレポートでは必ず消すこと
    \textbf{\small※執筆上の注意:繰り返すが,本書は空想上の課題に対するレポートの
        執筆例である.書くべき内容としては,課題書等を読んだうえで適切に執筆すること.
        (この注意書きは提出用のレポートでは必ず消すか,コメントアウトすること)※}
    
    %--------------------------------------------------------------------%
    \section{プログラムの説明} \label{xxxx}   % ToDo: 適切なラベルを付けておく.
    % およそ,以下のような内容が記載されていることが期待されている.
    % - プログラムの全体像の説明
    % - 課題4に関するプログラムの説明(3.1節)
    % - 課題5に関するプログラムの説明(3.2節)
    % - 課題6に関するプログラムの説明(3.3節)
    % - 課題7に関するプログラムの説明(3.4節)
    % LaTeXの機能(subsection, subsubsection, 他)を活用し,レポートとしての構成を考えること.
    % \verv, $ $, \textttなど,適切な書体を利用することも忘れずに.
    %   Tips:
    %   - section, subsectionなどの中では verbが使えない.texttt を使うとよい.
    
    
    本課題で作成するプログラムは,・・・をするプログラムである.
    プログラムリストは・・・節に添付している.
    
    プログラムは全部で267行からなる.
    課題4「テーマ名を書く」に関する機能は,主に10--100行目に記載されている.
    課題5「テーマ名を書く」に関する機能は,主に10--20, ならびに,101-200行目に記載されている.
    課題6・・・
    
    以下,課題4, 5, 6, 7のプログラムの詳細な説明を,
    それぞれ\ref{}節,\ref{}節,\ref{}節,\ref{}節に分けて,記載する.
    
    \subsection{????}   % 適切な見出しを考えること.空欄にして,数字のみ示すのもダメ.
    
    yyyy,zzzzという関数を作成した.
    yyyyは,xxxxxのための関数である.
    zzzzは,yyyyを利用しながらxxxxのための関数である.
    aaaa, bbbb, cccc 関数は,eeeee 関数から呼び出される関数である.
    
    yyyyの詳細について説明する.
    yyyyは,・・・
    
    zzzzの詳細について説明する.
    zzzzは,・・・
    
    aaa, bbbb, cccc, は,それぞれ,AAAA, BBBB, CCC のための関数である.
    これは,\ref{}章の仕様で述べた機能を将来的に実装するために用意している.
    ただし,今回のレポートBでは未実装である.
    
    \subsection{????}   % 適切な見出しを考えること.空欄にして,数字のみ示すのもダメ.
    
    (※サンプルのため,いろいろと省略)
    
    %--------------------------------------------------------------------%
    \section{プログラムの使用方法と実行結果} \label{xxxx}   % ToDo: 適切なラベルを付けておく.
    \textbf{\small ※執筆上の注意:変数や数値は$\backslash$verbや\$\$
    で囲って,適切な書体で記述することを忘れずに.また,章・節番号や
    図表番号の引用も,数字を直接書くのではなく,\LaTeX{} の機能を使うこと.
    なお,このサンプルでは``わざと''一部の処理を省略している.
    見た目の違いを確認して,自分のレポートでは処理を忘れないようにしよう.
    (この注意書きは提出用のレポートでは必ず消すか,コメントアウトすること)※}
        % Tips: Emacsのコメントトグルは,範囲選択してから M-;
    
    % およそ,以下の内容が記載されていることが期待されている.
    % - gccによるコンパイルとプログラムの実行方法(レポートAの2章の一部相当)
    % - 課題4に関する,使用方法,実行結果(入力と出力がわかるように),結果に対する妥当性
    % - 課題5に関する,使用方法,実行結果(入力と出力がわかるように),結果に対する妥当性
    % - 課題6に関する,使用方法,実行結果(入力と出力がわかるように),結果に対する妥当性
    % - 課題7に関する,使用方法,実行結果(入力と出力がわかるように),結果に対する妥当性
    % LaTeXの機能(subsection, subsubsection, 他)を活用し,レポートとしての構成を考えること.
    % \verv, $ $, \textttなど,適切な書体を利用することも忘れずに.
    %   Tips:
    %   - section, subsectionなどの中では verbが使えない.texttt を使うとよい.
    
    本レポート課題の実施にあたって,Linux環境におけるC言語プログラミングをおこなう.
    まずは,・・・についてまとめる.
    
    以降のプログラムは,いずれも Red Hat Linux 3.2.2-5 で動作を確認しているが,
    一般的な UNIX で動作することを意図して作成している.
    なお,以降の実行例における,行頭の \verb|$| 記号は,
    Red Hat Linux 3.2.2-5におけるターミナルのプロンプトである.
    % 注:以降の課題において,実行結果を得るために利用した,実行環境のOS,
    %     ならびに,その環境におけるプロンプトを必ず書くこと.
    
    C言語で書かれたソースコードは,\verb|gcc|でコンパイルすることで,
    プログラムの実行ファイルを生成する.
    今回作成したプログラムのソースコードは,\verb|xxxx.c|という名前で作成している.
    このソースコードは,
    
    % Verbatim environment
    % - プリアンブルで \usepackage{fancyvrb} が必要.
    % - オプションの説明は,冒頭のCSVの挿入例を参照
    \begin{Verbatim}[numbers=none, xleftmargin=8mm, numbersep=6pt,
      fontsize=\normalsize, baselinestretch=0.8]
    $ gcc -Wall ・・・
    \end{Verbatim}
    %
    のようにコンパイルする.
    この時,生成されるプログラムの実行ファイルは・・・という名前になる.
    
    % Tips: Verbatim の後に空行を入れると,段落が変わってしまう.
    % 段落は変えたくないが,texソースでは隙間を空けて読みやすくしたいなら,
    % 上記例のように,%のみの行を置くとよい.
    
    ここで,\verb|-Wall|とは...するためのオプションであり,
    \verb|-o|とは・・・を指定するオプションである.
    これらのオプションをつけることで,・・・(略)
    
    生成されたプログラム \verb|xxxxx| を実行するには,以下のようにターミナルで入力する.
    
    % Verbatim environment
    % - プリアンブルで \usepackage{fancyvrb} が必要.
    % - オプションの説明は,冒頭のCSVの挿入例を参照
    \begin{Verbatim}[numbers=none, xleftmargin=8mm, numbersep=6pt,
      fontsize=\normalsize, baselinestretch=0.8]
    $ xxxxx
    \end{Verbatim}
    
    % 上記は,ダメな説明の例である.正しく動かすことができるよう,書き直すこと.
    %
    % !もう一歩上へ!
    % 何が問題か理解しているならば,その旨をレポートに書くこともできよう.
    % 例えば,上記の実行例の後に,「ここで,xxxとしている点に注意が必要である.
    % xxxとすると,xxxになってしまう.そのため,xxxが必要なのである.」
    % といったことが書けると,レポートらしくなる.講義中に感じたちょっとした疑問は,
    % レポートを書くために,重要な気づきを与えてくれる.ただし,その疑問が「xxxは
    % 不思議だと思った.」で止まってしまうと,レポートではなく感想文になってしまう.
    % 「感想」は,最後の感想の章以外に書いてはいけない.
    
    以下,各課題に応じて・・・(※サンプルのため,いろいろと省略)
    
    % 以下は書くべき内容の流れをざっくり書いているだけで,穴埋めしろという意味ではない.
    % 主体をもってレポートを書いてほしい.
    課題xxxxについて述べる.
    xxxというファイルを作る.
    ・・・・の様に実行する.
    これにより・・・という結果となる.
    この結果は,・・・・ということである.
    これは・・・の仕様を満たした動作といえる.
    ただし,・・・・という追加仕様を必要としている点に注意が必要である.
    
    課題xxxxについて述べる.
    xxxという入力により,動作例を示す.
    ・・・・の様に実行する.
    これにより・・・という結果となる.
    この結果は,・・・・ということである.
    これは・・・の仕様を満たした動作といえる.
    ただし,・・・・という追加仕様を必要としている点に注意が必要である.
    
    課題xxxxについて述べる.
    xxxという入力ファイルを作り,動作例を示す.
    ・・・・の様に実行する.
    これにより・・・という結果となる.
    この結果は,・・・・ということである.
    これは・・・の仕様を満たした動作といえる.
    ただし,・・・・という追加仕様を必要としている点に注意が必要である.
    
    % いくつかの注意点を再掲する.
    % - レポートとして読みやすくすることもよく考えること.
    %   適切な節(subsection)や項(subsubsection)の利用は,読みやすさを向上させる.
    % - Web資料では改行をこまめに入れることで読みやすくする習慣があるが,
    %   印刷を前提としたレポートでは,意味のない箇所で改行をしてはならない.
    %   (意味のない改行は,LaTeXでは明示的に \\ を使わないと入れられない.)
    % - 適切な段落分け(LaTeXなら空行を入れる)は,話題を整理する意味がある.
    %   改行の件と合わせれば,意味のある個所で段落を分けるべき,ということである.
    %   全く段落を分けないで,レポートとしての長い文章を書くことは無い.
    
    %--------------------------------------------------------------------%
    \section{プログラム全体の考察} \label{xxxx}   % ToDo: 適切なラベルを付けておく.
    % 以下の通り,少なくとも2つの節に分けて,各考察を述べる.
    
    概要で述べたように,本レポートでは・・・・について述べる.
    
    %--------------------------------------------------------------------%
    \subsection{考察1: xxxxxxx} \label{xxxx}   % ToDo: 適切なラベルを付けておく.
    % 「感想」は,最後の感想の章以外に書いてはいけない.
    
    (※サンプルのため,いろいろと省略)
    
    (※以下,ソースコードを図表の様に掲載する場合の例)
    
    ここで,\ref{}のソースコードの 100--200 行目については,
    Listing~\ref{lst:program-8}の様に書くことも考えられる.
    この書き変えにより,・・・(※サンプルのため,いろいろと省略)
    
    \begin{eopcode}[tbp] % eopcode はプレアンブルで定義した独自の環境
    % Verbatim environment
    % - プリアンブルで \usepackage{fancyvrb} が必要.
    % - オプションの説明は,冒頭のCSVの挿入例を参照
    \begin{Verbatim}[frame=single,numbers=left, xleftmargin=10mm, numbersep=6pt,
        gobble=8, fontsize=\small, baselinestretch=0.8]
            char str = {'A', 'B', 'C', '\0'};
            char c1 = 'B';
    \end{Verbatim}
    % Tips:上記のようにソースコードの一部をコピペすると,レポートではインデントが
    % 気になるときがある.例の様に,gobble オプションで取り除くのも手である.
    \caption{xxxxxのソースコードの例}
    \end{eopcode}
      
    
    %--------------------------------------------------------------------%
    \subsection{考察2: xxxxxxx} \label{xxxx}   % ToDo: 適切なラベルを付けておく.
    % 「感想」は,最後の感想の章以外に書いてはいけない.
    
    (※サンプルのため,いろいろと省略)
    
    
    %--------------------------------------------------------------------%
    \section{感想}
    % 感想を書かないならコメントアウトしておくこと.
    % なお,感想に書かれた"感想と思われる内容"は,評価の対象外である.
    
    (※サンプルのため,いろいろと省略)
    
    %--------------------------------------------------------------------%
    \section{作成したプログラムのソースコード}
        \textbf{\small ※執筆上の注意:余白にはみ出さないように注意.
        ソースコードは,1行あたり80文字以内に収めるのが無難.
        また,??章のような状態でレポートを提出しないように注意すること.
        (この注意書きは提出用のレポートでは必ず消すか,コメントアウトすること)※}
        % Tips: Emacsのコメントトグルは,範囲選択してから M-;
    
    本レポートのために作成したプログラムを以下に添付する.
    なお,\ref{sec:abstract}章に示した課題については,
    \ref{xxxx}章で示したようにすべて正常に動作したことを付記しておく.
    
    % Verbatim environment
    % プリアンブルで \usepackage{fancyvrb} が必要.
    %   - numbers           行番号を表示.left なら左に表示.
    %   - xleftmargin       枠の左の余白.行番号表示用に余白を与えたい.
    %   - numbersep         行番号と枠の間隙 (gap).デフォルトは 12 pt.
    %   - fontsize          フォントサイズ指定
    %   - baselinestretch   行間の大きさを比率で指定.デフォルトは 1.0.
    \begin{Verbatim}[numbers=left, xleftmargin=8mm, numbersep=6pt,
      fontsize=\small, baselinestretch=0.8]
    #include <stdio.h>
    
    int main()
    {
        char s[4] = {'A', 'B', 'C', '\0'};
        printf("s = %s\n", s);
        return 0;
    }
    // 以下は,はみ出し文字数を確認するためのダミーコメントです.
    //00000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999
    \end{Verbatim}
    
    % 参考:
    % - 以下の様に Verbatim ではなく,VerbatimInput を利用すると,
    %   外部ファイル (例では subst_test.c) を,自動的に取り込むことができる.
    % - はみ出しが起こらないよう,ソースコードの1行あたりの文字数に注意しよう.
    % - PDF作成後に,正しいファイルを取り込んだか,よく確認すること.
    %   誤ったソースコードが記載されたレポートであったとしても,そのソースコードが,
    %   課題実施にあたって書かれたソースコードとみなして,成績評価される.
    %   (最悪の場合,課題未達成とみなされる場合もあり得る.)
    %
    %\begin{VerbatimInput}[numbers=left, xleftmargin=10mm, numbersep=6pt,
    %  fontsize=\small, baselinestretch=0.8]
    %{subst_test.c}
    %\end{VerbatimInput}
    
    %--------------------------------------------------------------------%
    % 参考文献
    %   以下は,書き方の例である.実際に,参考にした書籍等を見て書くこと.
    %   本文で引用する際は,\cite{book:algodata}などとすればよい.
    \begin{thebibliography}{99}
      \bibitem{book:algodata} 平田富雄,アルゴリズムとデータ構造,森北出版,1990.
      \bibitem{book:label2} 著者名,書名,出版社,発行年.
      \bibitem{www:label3} WWWページタイトル,URL,アクセス日.
    \end{thebibliography}
    %以下の注意書きは提出レポートでは不要なため消すこと.
    \textbf{\small ※執筆上の注意:
          これらは書き方の例である.実際に,参考にした書籍等を見て書くこと.
          読んでもいない本や存在しないウェブページを掲載してはならない.\\}
    
    %--------------------------------------------------------------------%
    %% 本文はここより上に書く(\begin{document}~\end{document}が本文である)
    \end{document}
    

プログラミング演習2 期末レポート

プログラミング演習1 レポートBを再利用すればよい.