%=====================================================================
% 秋田高専 2E 情報工学概論 テキスト
%　　テーマ　夏休み課題のプログラム例
%    本テキストの内容
%        ・
%        ・
%        ・
%        ・
%　　　 　・
%
% last updated 2005.9.6
%    created by  Masashi Yamamoto
%     e-mail yamamoto@akita-nct.jp
%=====================================================================
\documentclass[10pt,a4paper]{jarticle}
\usepackage{graphicx,amsmath,amssymb,ascmac,float}
\usepackage{html, listings, jlisting}
\oddsidemargin 0mm  %左の余白 25.4mm-0mm　奇数ページ
\evensidemargin 0mm %左の余白 25.4mm-0mm　偶数ページ
\textwidth 160mm
\newcommand{\command}[1]{「\texttt{#1}」}
\newcommand{\cl}[1]{\texttt{#1}}
\newcommand{\tw}[1]{\texttt{#1}}
%
\newcounter{ex_num}
\newcommand{\exercise}{\textbf{\texttt{[練習 \arabic{ex_num}]}}
   \addtocounter{ex_num}{1}}
%
\renewcommand{\lstlistingname}{リスト}
\lstset{language=C,%
        basicstyle=\footnotesize,%
        commentstyle=\textit,%
        classoffset=1,%
        keywordstyle=\bfseries,%
	frame=tRBl,framesep=5pt,%
	showstringspaces=false,%
        numbers=left,stepnumber=1,numberstyle=\footnotesize%
	}%
%
\begin{htmlonly}
\usepackage{verbatimfiles}
 \providecommand{\lstinputlisting}[2][]{\verbatimlisting{#2}}
\end{htmlonly}
%
\begin{document}
\title{夏休みの課題のプログラム例}
\author{山本昌志\thanks{独立行政法人　秋田工業高等専門学校　電気情報工学科}}
\date{2005年9月7日}
\maketitle
%
%
%=====================================================================
\section{前期末試験の内容と本日の講義}
%=====================================================================
前期末試験では、1年生から学習してきた内容、全てにわたって試験を行う。試験で出題す
るプログラムは、夏休みの課題が中心である。夏休みの課題のプログラムが全て、自力で
書けるように学習すること。

本日は夏休みの課題のプログラム全てを説明する。
%
%=====================================================================
\section{課題プログラムの解答}
%=====================================================================
%---------------------------------------------------------------------
\subsection{基本プログラム}
%---------------------------------------------------------------------
\setcounter{ex_num}{1}
\begin{list}{}{\leftmargin=5em \labelwidth=5em}
%
%---------------------------------
  \item[\exercise]以下の1文を表示する。
 \begin{quote}
  \setlength{\baselineskip}{12pt}
  \begin{verbatim}
	Hello World !!
  \end{verbatim}
 \end{quote}
%
\lstinputlisting[caption=1行表示,label=prog:1_1]
{program/1_1.c}
%
%---------------------------------
  \item[\exercise]以下の2行をを表示する。
   \begin{quote}
    \setlength{\baselineskip}{12pt}
    \begin{verbatim}	
	Hello World !!		
	from Akita National College of Technology.
    \end{verbatim}
   \end{quote}
%
\lstinputlisting[caption=2行表示,label=prog:1_2]
{program/1_2.c}
%
%---------------------------------
%
  \item[\exercise]2つの整数をキーボードから読み込んで、和と差、積を表示する。
%
\lstinputlisting[caption=整数の和と差、積,label=prog:1_3]
{program/1_3.c}
%
%---------------------------------
  \item[\exercise]2つの整数をキーボードから読み込んで、商と余りを表示する。
%
\lstinputlisting[caption=整数の商と余り,label=prog:1_4]
{program/1_4.c}
%
%---------------------------------
  \item[\exercise]2つの実数をキーボードから読み込んで、和と差、積、商を表示する。
%
\lstinputlisting[caption=実数の四則演算,label=prog:1_5]
{program/1_5.c}
%
%---------------------------------
  \item[\exercise]角度[deg]を読み込んで、それをラジアンに直して、
		  表示する。
%
\lstinputlisting[caption=度からラジアンへの変換,label=prog:1_6]
{program/1_6.c}
%
%---------------------------------
  \item[\exercise]角度[deg]を読み込んで、角度と三角関数の値を表示する。
%
\lstinputlisting[caption=三角関数の値の表示,label=prog:1_7]
{program/1_7.c}
%
%---------------------------------
\end{list}
%
%---------------------------------------------------------------------
\subsection{制御文}
%---------------------------------------------------------------------
\setcounter{ex_num}{1}
 \begin{list}{}{\leftmargin=5em \labelwidth=5em}
  \item[\exercise]\tw{if}と\tw{goto}文を使って、1〜1000までの整数の合計を求める。
%
\lstinputlisting[caption=tw{if}と\tw{goto}を使ったループ,label=prog:2_1]
{program/2_1.c}
%
%---------------------------------
  \item[\exercise]\tw{for}文を使って、1〜1000までの整数の合計を求める。
%
\lstinputlisting[caption=\tw{for}を使ったループ,label=prog:2_2]
{program/2_2.c}
%
%---------------------------------
  \item[\exercise]\tw{while}文を使って、1〜1000までの整数の合計を求める。
%
\lstinputlisting[caption=\tw{while}を使ったループ,label=prog:2_3]
{program/2_3.c}
%
%---------------------------------
  \item[\exercise]\tw{do〜while}文を使って、1〜1000までの整数の合計を求める。
%
\lstinputlisting[caption=\tw{do〜while}を使ったループ,label=prog:2_4]
{program/2_4.c}
%
%---------------------------------
  \item[\exercise]1〜100000までの素数を全て書き出す
%
\lstinputlisting[caption=繰り返し文を用いた素数の抽出,label=prog:2_5]
{program/2_5.c}
%
%---------------------------------
 \end{list}
%
%
%---------------------------------------------------------------------
\subsection{配列}
%---------------------------------------------------------------------
\setcounter{ex_num}{1}
 \begin{list}{}{\leftmargin=5em \labelwidth=5em}
  \item[\exercise] キーボードから10個の整数の値を読み込んで、それを配列に格納す
		   る。偶数の合計と奇数の合計を計算するプログラムを作成せよ。
%
\lstinputlisting[caption=配列の利用,label=prog:3_1]
{program/3_1.c}
%
%---------------------------------
  \item[\exercise] 数字を大きい、あるいは小さい順に並べることをソーティングと言
		   う。最も簡単な単純挿入法のプログラムを作成する。
%
\lstinputlisting[caption=単純挿入法,label=prog:3_2]
{program/3_2.c}
%
%---------------------------------
 \end{list}
%
%---------------------------------------------------------------------
\subsection{ファイル入出力}
%---------------------------------------------------------------------
\setcounter{ex_num}{1}
\begin{list}{}{\leftmargin=5em \labelwidth=5em}
 \item[\exercise] ファイルに、0〜360度の三角関数の値を書き込むプログラムを作成
		  する。ファイルの各行には、角度$\theta$[deg]と$\sin\theta$、
		  $\cos\theta$, $\tan\theta$の値をタブ区切りで書くものとする。
%
\lstinputlisting[caption=三角関数表の作成,label=prog:4_1]
{program/4_1.c}
%
%---------------------------------
 \item[\exercise] 前問で作成したファイルを読み込み、ディスプレイに表示するプロ
		  グラムを作成せよ。
%
\lstinputlisting[caption=三角関数表の読み込みと表示,label=prog:4_2]
{program/4_2.c}
%
%---------------------------------
\end{list}
%
%---------------------------------------------------------------------
\subsection{文字処理}
%---------------------------------------------------------------------
\setcounter{ex_num}{1}
\begin{list}{}{\leftmargin=5em \labelwidth=5em}
 \item[\exercise] キーボードから32文字いないのアルファベットを入力する。入力し
		  た順序と逆にディスプレイに表示するプログラムを作成せよ。
%
\lstinputlisting[caption=読み込んだ文字を逆に表示,label=prog:5_1]
{program/5_1.c}
%
\end{list}
%
%---------------------------------------------------------------------
\subsection{関数}
%---------------------------------------------------------------------
\setcounter{ex_num}{1}
\begin{list}{}{\leftmargin=5em \labelwidth=5em}
  \item[\exercise]三辺の長さ$(a, b, c)$をキーボードから入力して、面積を求めるプ
		  ログラムを作成する。
%
\lstinputlisting[caption=ヘロンの公式により三角形の面積を求める,label=prog:6_1]
{program/6_1.c}
%
\end{list}
%
%---------------------------------------------------------------------
\subsection{構造体}
%---------------------------------------------------------------------
\setcounter{ex_num}{1}
\begin{list}{}{\leftmargin=5em \labelwidth=5em}
  \item[\exercise] 以下のような50人分の成績のファイルがある。ファイルの各行には、名字、
		   名前、英語、数学、情報処理の成績が書かれている。
		   これらを構造体を使って管理し、平均点の高い順に学生の情報をディ
		   スプレイに表示する。表示する情報は、順位、平均点、名字、名前、
		   英語、数学、情報処理の成績とする。
%
\lstinputlisting[caption=成績を表示する,label=prog:7_1]
{program/7_1.c}
%
\end{list}
%
%---------------------------------------------------------------------
\subsection{ポインター}
%---------------------------------------------------------------------
\setcounter{ex_num}{1}
\begin{list}{}{\leftmargin=5em \labelwidth=5em}
 \item[\exercise] 整数型の変数、\tw{a, b, c}に入っている整数を、
		  \tw{a}$\rightarrow$\tw{b}、\tw{b}$\rightarrow$\tw{c}、
		  \tw{c}$\rightarrow$\tw{a}と入れ替えるプログラムを作成せよ。
		  %
\lstinputlisting[caption=変数の値をサイクリックに入れ替える,label=prog:8_1]
{program/8_1.c}
%
%---------------------------------
 \item[\exercise] 要素数が100$\times$100の2次元配列に\tw{a[i][j]=i*i+j}の値を代
		  入する。そして、\tw{a[i][j]}と\tw{a[j][i]}と入れ替えるプログ
		  ラムを作成せよ。
%
\lstinputlisting[caption=転置行列,label=prog:8_2]
{program/8_2.c}
%
%---------------------------------
 \end{list}
%
%
%
%
%=====================================================================
\end{document}
