\documentclass[a4j,11pt]{jarticle}
% ファイル先頭から\begin{document}までの内容（プレアンブル）については，
% 教員からの指示がない限り， { } の中を書き換えるだけでよい．

% ToDo: 提出要領に従って，適切な余白を設定する
\usepackage[top=25mm, bottom=30mm, left=25mm, right=25mm]{geometry}
% bxjsarticleを利用する場合：以下のように設定する．
%\geometry{top=25mm, bottom=30mm, left=25mm, right=25mm}

% ToDo: 提出要領に従って，適切なタイトル・サブタイトルを設定する
\title{プログラミング演習1 \\
       中間レポート}

% ToDo: 自分自身の氏名と学生番号に書き換える
\author{氏名: 原 直 (HARA, Sunao) \\
        学生番号: 0941xxxx}

% ToDo: 教員の指示に従って適切に書き換える
\date{出題日: 20xx年xx月xx日 \\
      提出日: 20xx年xx月xx日 \\
      締切日: 20xx年xx月xx日 \\}  % 注：最後の\\は不要に見えるが必要．

% ToDo: 図を入れる場合，以下の1行を有効にする
%\usepackage[dvipdfmx]{graphicx}

\begin{document}
\maketitle
% 目次つきの表紙ページにする場合はコメントを外す
%{\footnotesize \tableofcontents \newpage}

%==================================================================%
\section{はじめに}

%==================================================================%
\section{作成した関数の説明}

%------------------------------------------------------------------%
\subsection{\texttt{subst}関数}
% 参考：sectionの中では verb が使えない．そんな時は？

%------------------------------------------------------------------%
\subsection{\texttt{split}関数}

%------------------------------------------------------------------%
\subsection{\texttt{get\_line}関数}
% 参考：verb以外の場所でアンダーバーを使うには？

%------------------------------------------------------------------%
\subsection{\texttt{mystrlen}関数　※参考}
% このsubsectionは提出用のレポートでは必ず消すこと
\textbf{\small※執筆上の注意：書き方の例として教科書 p.~48の
    \texttt{strlen}を改造した\texttt{mystrlen}関数を説明する．
    （以降含め，本レポート例に書かれている注意文は全て消すこと）\\}

\subsubsection{関数の概要}
\textbf{\small※執筆上の注意：(1) まず，関数の概要について簡潔にまとめよ．}

\verb|mystrlen|関数の概要は以下のとおりである．
\begin{description}
  \item[関数] % 関数のプロトタイプ宣言を書く．
    \verb|int mystrlen(char s[])|
  \item[ソースコード] % ここは直接ソースコードを書かずに，5章のソースコードの行番号を参照するに留めること．
    \ref{sec:sourcecode}~章のソースコードの6行目から15行目に記述してある．
  \item[概要] % 関数の機能の概要として，1～2行程度で引数と戻り値の簡単な関係が理解できる程度の説明を書く
    引数として与えられた文字列 \verb|s| の長さを返す．
  \item[戻り値] % 戻り値の型と説明
    整数型で引数 \verb|s| の文字数を返す．ただし，引数\verb|s|が\verb|NULL|の場合，\verb|-1|を返す．
  \item[引数] % 引数の型と説明（複数引数の場合は，分けて1つずつ説明すること）
    \verb|char s[]| には長さを測りたい文字列を与える．
    %% 参考：strcpy関数のような複数引数の場合は以下のようにitemizeを使って書くのもよいだろう
    % \begin{itemize}
    % \item \verb|char *src| コピー先の文字列バッファの先頭アドレスを与える
    % \item \verb|char dst[]| コピー元の文字列を与える
    % \end{itemize}
  \item[使用例] % 関数に具体的な引数を与えて，実行時に得られる結果を示す
    以下に，使用例を示す．各行のコメント文は，該当行における\verb|mystrlen|関数実行後の変数の値を示している．
    \begin{verbatim}
    int n, m, l;
    n = mystrlen("momotaro");  // n = 8
    m = mystrlen("");          // m = 0
    l = mystrlen(NULL);        // l = -1
    \end{verbatim}
    %% 参考：引数に与えた変数が変化するような関数であれば，戻り値だけではなく，その変数の変化についても説明するべきである．
\end{description}

\subsubsection{考察}
\textbf{\small※執筆上の注意：(2-1) 次に，その関数の作成や設計にあたって，
        検討したこと，注意すべきこと，考察したこと，などを述べよ．
        少なくとも，講義資料では様々な検討をしている．\\}
\textbf{\small※執筆上の注意：(2-2) 考察は感想文ではない．
        例えば，「・・・と思った．」という文は考察としては不適切な表現である．\\}
\verb|mystrlen|関数の作成にあたっては・・・である．
特に，\verb|"\0"|と\verb|\0|の違いに注意する必要がある．
そのため，今回の実装では引数が・・・の時には・・・とすることで・・・を・・・した．

そのほかの実装方法として・・・や・・・も考えられる．
しかし，・・・の理由から今回の実装に至った．

・・・（省略）・・・

\textbf{\small※執筆上の注意：これは執筆例なので，詳細は省略している．}


%==================================================================%
\section{感想}

%==================================================================%
\section{作成したプログラム} \label{sec:sourcecode}
%% プログラムのソースコードは verbatim 環境の中に書く．
%% ここでは，追加で波括弧の内部 {...} だけ文字サイズ等を設定している．
%% 以下の例はフォントサイズ：10pt 行送り：11pt
{\fontsize{10pt}{11pt} \selectfont
\begin{verbatim}
     1  #include <stdio.h>
     2  #include <stdlib.h>
     3  #include <string.h>
     （サンプルのため，以下略）
\end{verbatim}
}  % <-- !!IMPORTANT!! This line is end of {\fontsize...}
%% 注：行送りの変更は"指定箇所を含む段落”に効果があらわれる．
%%     fontsizeコマンドを用いて，行送りを変える場合は，
%%     その {...} の前後に空白行を入れ，段落を変えるようにすること．
%%     なお，行先頭がコメントから始まる行は空白行とは扱われない．

\end{document}
