このドキュメントは http://edu.net.c.dendai.ac.jp/ 上で公開されています。
MS-Windows では、ファイル名の最後にファイルの 属性に関する記号として、ピリオドに続き 3 文字以内の 文字を付加してファイルの管理をします。 これを拡張子と言います。 しかし、初期設定時には拡張子が見えないように設定されています。 一方、 MS-Windows では、システムに関わるが一般ユーザに関係ないファイル を表示しないようになっています。 これらの機能は、特定の業務をこなすだけで様々なファイルを作成しないユー ザーにとっては有用です。 しかし、プログラミングをしたり、様々なファイル形式を取り扱う立場では拡張子 を意識しないといけないので、基本的には全ての情報は隠されない方が望まし いです。 そこで、次の手順でエクスプローラの設定を変更します。
今回はコンピュータで行う清書のうち、マークアップ言語 pLaTeX による清書 を取り上げます。 Knuth は TeX(テックまたはテフ) を開発し、 Lamport はそれを改良した LaTeX を作りました。ASCII 社はそれを日本語化(縦書き可能に)した pLaTeX を作りました。 HTML と比較した pLaTeX の特徴としては次のようなことが挙げられます。
TeX とその派生である LaTeX, pLaTeX などを全て指す時、曖昧さがない場合 単に TeX と呼びます。 また pLaTeX も LaTeX も使い方はほとんど同じなので、pLaTeX の説明におい ても、LaTeX と共通の部分を指す時は LaTeX と呼ぶことがあります。
TeX パッケージ(pLaTeX システムを含む)を ソフトウェア のページの指示に従ってインストールします。 pLaTeX システムは基本的にはコマンドプロンプトで使用します。 c:\work にインストールされる starttex.bat を開くと TeX を利用できる コマンドプロンプトが起動します。
(p)LaTeX の文書は拡張子 .tex のテキストファイルで作成します。
a.tex というファイルに対して 「
LaTeX は HTML と同じように最初にパラメータを設定するために、本 文を書き始める前に設定用のコマンドを書く必要があります。 コマンドは「\(バックスラッシュ)」で始めます (日本語の MS-DOS や Windows では「¥(円記号)」に文字化けします)。
ここでは LaTeX の文書ファイルに必要な設定の基本的な書き方を説明します。 ここでは、最低限次のようなことを書く必要があります。
これは実際には次のようにします。
\documentclass{jarticle}
\begin{document}
ここに本文を書く
\end{document}
これに、フォントの大きさの指定と、用紙の指定を加えると次のようになります。
\documentclass[12pt]{jarticle}
\usepackage{vmargin}
\setpapersize{A4}
\setmarginsrb{20mm}{20mm}{20mm}{20mm}{5mm}{5mm}{5mm}{5mm}
\begin{document}
ここに本文を書く
\end{document}
なお、jarticle の代わりに jbook を指定すると本のモードになります。章立 ては chapter, section などを使います。
LaTeX も HTML 同様に文章の抽象的な構造に対して、マークアップを指定しま す。 とりあず以下の基本の構造について説明|します。!|
その後、数式など LaTeX で特徴的な機能を説明して行きます。
LaTeX では文章をそのまま書くと、そのまま文章として扱われます。 但し、連続した空白や一つの改行は一つの空白として扱われます。さらに日本 語では改行や空白は無視されます。
なお % を書くとそれ以降の入力は無視されますので、ここには本文に出さな いコメントを書き込むことが出来ます。 他に #, $, & は特殊記号として使用します。 従って、 \ を表示させるには \backslash、% を表示させるには \%、 # を表 示させるには \#、 $ を表示させるには \$、& を表示させるには \& と書く必要があります。
本文において、段落と段落の区切りは空行で行います。 また、段落の最初の部分は字下げされます。
なお、 HTML では段落は p エレメント、つまり <p> と </p> で 内容を囲みます。
\documentclass[12pt]{jarticle}
\usepackage{vmargin}
\setpapersize{A4}
\setmarginsrb{20mm}{20mm}{20mm}{20mm}{5mm}{5mm}{5mm}{5mm}
\begin{document}
これは第一段落です。
これは第二段落です。
単なる改行は連続した文と見なされます。
これは第三段落です。
\end{document}
文書の種類を jarticle に指定した場合、\section{表題}で番号付の表題が表 示されます。 小さい節に区切るには \subsection{表題} や \subsubsection{表題} が使え ます。 番号を付けたくない時は \section*{表題} と * を付けます。
HTML では H1, H2, ... エレメントがこれに対応します。 なお、 LaTeX は 自動的に連番の表示ができます (HTML では CSS で content, counter を使用して連番表示はできますが、ほ とんどのブラウザで対応していません)。
\documentclass[12pt]{jarticle}
\usepackage{vmargin}
\setpapersize{A4}
\setmarginsrb{20mm}{20mm}{20mm}{20mm}{5mm}{5mm}{5mm}{5mm}
\begin{document}
\section{はじめに}
これは第一章です。
\subsection{概略}
第一章第一節の内容を書きます。
\subsection{問題点}
第一章第二節の内容を書きます。
\section{背景}
これは第二章です。
\end{document}
LaTeX では箇条書は三種類用意されています。 通し番号を自動的につけるもの、それぞれの項目の頭に同じマークをつけるも の、項目名を指定するものがあります。
\begin{enumerate}
\item 内容 1
\item 内容 2
\end{enumerate}
とすると、次のようになります。
なお HTML では ol エレメントが対応します。
\begin{itemize}
\item 内容 1
\item 内容 2
\end{itemize}
とすると、次のようになります。
なお HTML では ul エレメントが対応します。
\begin{description}
\item[内容 1]内容 1 の説明
\item[内容 2]内容 2 の説明
\end{description}
とすると、次のようになります。
なお HTML では dl エレメントが対応します。
LaTeX では数式モードが二種類あります。 文章中に本文の中に他の文字と同じように入れるテキストモード と、行を改めて本文と分離するディスプレイモードがあります。 テキストモードでは数式を $x+y=z$ のように $ 記号で括ります。 一方、ディスプレイモードでは $$x+y=z$$ と $$ 記号で括ります。 $ で括る代わりに \( と \) が、 $$ で括る代わりに \[ と \] が使えます。
数式モードにおける基本となる式の書き方は次の通りです。
$ax^2+bx+c=0$
\[ F(x)=\frac{a_0}{2}+\sum_{n=1}^{\infty}\left[ a_{n} \cos 2 \pi n
\frac{x}{p} + b_{n}\sin 2 \pi n \frac{x}{p}\right]\]
\[\int \frac{dx}{\sqrt{a^{2}-x^{2}}} = \sin^{-1}\frac{x}{|a|}\]
\[\left( \begin{array}{cc}a & 0 \\ 0 & b \end{array}\right)^{n}
=
\left( \begin{array}{cc}a^{n} & 0 \\ 0 & b^{n}
\end{array}\right)\]
表の作り方は行列とほぼ同じです。 さらに罫線を指定できますが、指定の仕方は縦と 横で異なります。 縦線は表の列数を定義する部分に|を書きます。 横線は \hline コマンドを使用します。
\begin{tabular}{|l|c|r|} \hline 第一行一項&第一行二項&第一行三項\\ \hline 第二行一項&第二行二項&第二行三項\\ \hline 第三行一項&第三行二項&第三行三項\\ \hline \end{tabular}
表紙を作るには、題名、作者、日付を指定します。 日付の指定を省略すると、 dvi ファイルを作成した日付が表示されます。 日付を表示させないためには \date{} と空の日付を設定します。
\author{坂本直志} \title{コンピュータ基礎及び演習 I} \maketitle
また、ページを変えるには \clearpage コマンドを使用します。
コンピュータは CPU がメモリ上のプログラムを読んで実行することで動作し
ます。
CPU が実行できるプログラムを「オブジェクトコード」と呼びます。
オブジェクトコードを書くためのルールを「機械語」と言います。
機械語はコンピュータが解釈するため、0 と 1 の組合せ(2進法)により記述さ
れます。
機械語を使って人間が直接プログラムするのに、直接二進数で表された数一つ
一つに対して割り当てられた機能を対応させて覚えるのは大変です。
そこで、各二進数の列に割り当てられた機能に対応するような覚えやすい記号
(mnemonic ニーモニック)を割り振ってプログラムを組み、完成したニーモニッ
クによるプログラムに対して、後でそれを 0 と 1 の列に変換します。
たとえば
アセンブリ言語でプログラムを書く際、次のようなことが問題になります。
このような問題点を解決するために、(1)機械語とは直接関係ない人間の記述しや すい記述法でプログラムを書き、(2)それをコンピュータが理解する仕組みを 実現する必要があります。
機械語とは直接関係ない人間の記述しやすい記述法を高級言語と 言います。 代表的な高級言語には次のようなものがあります。
本講義では次のような理由から C 言語を学習します。
高級言語をコンピュータに理解させるプログラムを処理系と言います。 処理系には二種類あります。
高級言語で書かれたプログラムを読んで解釈しながら動作するプログラムを インタプリタと言います。 代表的なインタプリタは BASIC, LISP, Prolog, Perl などがあります。 インタプリタの長所は、複雑で高度な機能を持ち、開発時に部分的にプログラ ムを実行できるなど、開発コストが低い事があげられます。 一方短所は、完成したプログラムを実行するにも常にインタプリタ自身が必要であ り、また実行速度が遅い事が挙げられます。
高級言語で書かれたプログラムを機械語に翻訳するプログラムをコンパイ ラと言います。 翻訳前の高級言語で書かれたプログラムをソースプログラムや 原始プログラムと呼び、翻訳されたプログラムをオブジェク トプログラムと言います。 コンパイラの長所は、直接コンピュータが実行できるプログラムを作成できる 事と、実行速度がインタプリタと比較して速い事が挙げられます。 一方短所はプログラム中に一箇所でも誤りがあるとプログラムを実行できない ため、開発コストがかかる(工夫しなければならない)ことが挙げられます。 但し、これは対策が可能で、しかも慣れればそれほど苦にならなくなります。
MinGW プロジェクトでは GNU のフリーソフトウェアとして Windows 上の開発 環境を開発しています。 MinGW に含まれるプログラムのライセンスは GPL に従いますが、コンパイラ が出力するプログラムはマイクロソフトのライブラリを使用します。 したがって MinGW を利用して開発したソフトウェアには GPL のプログラムを 付属させる必要がないので、 GPL 以外のライセンスでも公開できます。 MinGW には gcc などのコンパイラの他にデバッガやアセンブラも含まれています。
Cygwin も Windows 上の開発環境ですが、 UNIX との互換性を高めるため、 GPL ライセンスのライブラリを使用します。 Cygwin では UNIX 用のプログラムが簡単に動きますが、公開する際は GPL ラ イセンスに基づき、自由なコピーを認め、ソースコードを提供する必要があり ます。
本講義では C言語のコンパイラを使用します。 始めに MinGW-jp をインストールして下さい。
インストールした MinGW を使用するには、 起動用バッチファイル mingw-jp.bat を開きます。
このパッケージをインストールすることで利用できるコマンドは次の通りです。 (c:\mingw-jp\bin )
本講義では、次のようにしてプログラムを作成、実行させます。
gcc test.c
.\a.exe
次のプログラムを作り、コンパイルして実行するまでの手順を示します。
/* This program prints "Hello World!". */ #include <stdio.h> main(){ printf("Hello World!\n"); }
次の数式を LaTeX で記述しなさい。
\documentclass[12pt]{jarticle} \usepackage{vmargin} \setpapersize{A4} \setmarginsrb{20mm}{20mm}{20mm}{20mm}{5mm}{5mm}{5mm}{5mm} \begin{document} \author{05kc999 名無しの権兵衛} \title{\LaTeX\ のテスト} \maketitle \clearpage \section{レポート課題} 方程式 $ax^{2}+bx+c=0$ の解を求める表計算シートを作成しなさい。 \section{問題の解説} $ax^{2}+bx+c=0$ は $a\neq 0$ の時は二次方程式として解ける。 $D=b^{2}-4ac$ とした時、解は次の式により与えられる。 \[ x = \frac{-b\pm\sqrt{D}}{2a} \] $D$ は根号の中に入るので、$x$ を実数の範囲で求める場合、$D$ の符号によ り解の存在条件が異なる。 一方、$a=0$ の時は二次式ではない。その時、$bx+c=0$ となり、さらに $b$ が $0$ と等しいか否かで解の存在条件が異なってくる。 \section{考え方} 出題された問題は次の手順を追って解く。 \begin{enumerate} \item $a\neq 0$ の時の処理 \begin{enumerate} \item 判別式の計算 \item 判別式の値による処理 \end{enumerate} \item ($a=0$ の時の処理) \item $b\neq 0$ の時の処理 \item $b=0$ の時の処理 \end{enumerate} \section*{付録} 作成したシートの内容は以下の通りである。 \begin{tabular}{|l|l|l|l|l|l|l|} \hline & A & B & C & D & E & F \\ \hline 1& 'a & 'b & 'c & 'D & 'x & \\ \hline 2& 10 & 20 & 30 & =B2*B2-4*A2*C2 & =(-B2+sqrt(D2))/2/A2 & =(-B2-sqrt(D2))/2/A2 \\ \hline \end{tabular} \end{document}
リンク先のサンプルファイル を保存し、次の修正 を加えなさい。。
3. 東京電機大学創立以来の『実学の精神』を尊重
例6-8のプログラムを改造して、「Hello New World!」を表示するプログラムを 作りなさい。
次のプログラムをコンパイル、実行しなさい。
#include <windows.h> int WINAPI WinMain(HINSTANCE progIns, HINSTANCE prevIns, LPTSTR cmdLine, int cmdShow) { MessageBox(NULL, TEXT("Hello World!"), TEXT("Hello"), MB_OK); return 0; }
演習6-5を改造して、画面に「Hello New World!」が表示されるようにしな さい。
次のプログラムを読んで、このプログラムが何をするか予想しなさい。 そして、プログラムをコンパイル、実行して、予想と一致するか調べなさい。
#include <stdio.h> main() { float a,b,c; a=2.0; b=3.0; c= a+b; printf("a=%f b=%f a+b=%f\n",a,b,c); }
演習6-7を改造して、a=5, b=2 に関して a+b, a-b, a*b, a/b をそれぞれ求めなさい。