2003.6.7 改訂
このドキュメントは http://edu.net.c.dendai.ac.jp/ 上で公開されています。
MS-Windows では、ファイル名の最後にファイルの 属性に関する記号として、ピリオドに続き 3 文字以内の 文字を付加してファイルの管理をします。 これを拡張子と言います。 しかし、初期設定時には拡張子が見えないように設定されています。 一方、 MS-Windows では、システムに関わるが一般ユーザに関係ないファイル を表示しないようになっています。 これらの機能は、特定の業務をこなすだけで様々なファイルを作成しないユー ザーにとっては有用です。 しかし、プログラミングをしたり、様々なファイル形式を取り扱う立場では拡張子 を意識しないといけないので、基本的には全ての情報は隠されない方が望まし いです。 そこで、次の手順でエクスプローラの設定を変更します。
今回はコンピュータで行う清書のうち、マークアップ言語 pLaTeX による清書 を取り上げます。 Knuth は TeX を開発し、 Lamport はそれを改良した LaTeX を作りました。 Ascii はそれを日本語化(縦書き可能に)した pLaTeX を作りました。 HTML と比較した pLaTeX の特徴としては次のようなことが挙げられます。
platex システムをソ
フトウェアのページの指示に従ってインストールします。
基本的にはコマンドプロンプトで使用します。
コマンドプロンプトを起動したら c:\work にカレントディレクトリを移動し、
LaTeX の文書は拡張子 .tex のテキストファイルで作成します。
a.tex というファイルが出来たら
LaTeX の文書では、コマンドは「\(バックスラッシュ)」で始めます (日本語の MS-DOS や Windows では「¥(円記号)」に文字化けします)。 また、LaTeX でも HTML と同じように最初にパラメータを設定するために、本 文を書き始める前に設定用のコマンドを書く必要があります。
ここでは LaTeX の文書ファイルに必要な設定の基本的な書き方を説明します。 ここでは、最低限次のようなことを書く必要があります。
これは実際には次のようにします。
\documentclass{jarticle} \begin{document} ここに本文を書く \end{document}
これに、フォントの指定と、用紙の指定を加えると次のようになります。
\documentclass[12pt]{jarticle} \usepackage{vmargin} \setpapersize{A4} \setmargnohfrb{20mm}{20mm}{20mm}{20mm} \begin{document} ここに本文を書く \end{document}
LaTeX では文章をそのまま書くと、そのまま文章として扱われます。 但し、連続した空白や一つの改行は一つの空白として扱われます。さらに日本 語では改行や空白は無視されます。
なお % を書くとそれ以降の入力は無視されますので、ここには本文に出さな いコメントを書き込むことが出来ます。 他に #, $, & は特殊記号として使用します。 従って、 \ を表示させるには \backslash、% を表示させるには \%、 # を表 示させるには \#、 $ を表示させるには \$、& を表示させるには \& と書く必要があります。
これらの構造をマークアップする方法について説明します。
段落と段落の区切りは空行で行います。 また、段落の最初の部分は字下げされます。
\documentclass[12pt]{jarticle} \usepackage{vmargin} \setpapersize{A4} \setmargnohfrb{20mm}{20mm}{20mm}{20mm} \begin{document} これは第一段落です。 これは第二段落です。 \end{document}
文書の種類を jarticle に指定した場合、\section{表題}で番号付の表題が表 示されます。 小さい節に区切るには \subsection{表題} や \subsubsection{表題} が使え ます。 番号を付けたくない時は \section*{表題} と * を付けます。
\documentclass[12pt]{jarticle} \usepackage{vmargin} \setpapersize{A4} \setmargnohfrb{20mm}{20mm}{20mm}{20mm} \begin{document} \section{はじめに} これは第一章です。 \subsection{概略} 第一章第一節の内容を書きます。 \subsection{問題点} 第一章第二節の内容を書きます。 \section{背景} これは第二章です。 \end{document}
LaTeX では箇条書は三種類用意されています。 通し番号を自動的につけるもの、それぞれの項目の頭に同じマークをつけるも の、項目名を指定するものがあります。
\begin{enumerate} \item 内容 1 \item 内容 2 \end{enumerate}
とすると、次のようになります。
\begin{itemize} \item 内容 1 \item 内容 2 \end{itemize}
とすると、次のようになります。
\begin{description} \item[内容 1]内容 1 の説明 \item[内容 2]内容 2 の説明 \end{description}
とすると、次のようになります。
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)\]
次の数式を LaTeX で記述しなさい。
表の作り方は行列とほぼ同じです。罫線を指定できますが、指定の仕方は縦と 横で異なります。 縦線は表の列数を定義する部分に|を書きます。 横線は \hline コマンドを使用します。
\begin{tabular}{|l|c|r|} \hline 第一行一項&第一行二項&第一行三項\\ \hline 第二行一項&第二行二項&第二行三項\\ \hline 第三行一項&第三行二項&第三行三項\\ \hline \end{tabular}
表紙を作るには、題名、作者、日付を指定します。 日付の指定を省略すると、 dvi ファイルを作成した日付が表示されます。 日付を表示させないためには \date{} と空の日付を設定します。
\author{坂本直志} \title{コンピュータ基礎及び演習 I} \maketitle
また、ページを変えるには \clearpage コマンドを使用します。
\documentclass[12pt]{jarticle} \usepackage{vmargin} \setpapersize{A4} \setmargnohfrb{20mm}{20mm}{20mm}{20mm} \begin{document} \author{03kc999 名無しの権兵衛} \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}
Ctrl+C を押すと、実行しているプログラムが停止します。 プログラムミスなどによりプログラムが止まらなくなった場合は、まず Ctrl-C を押してみてください。
また、 Ctrl-S を押すと画面の表示が止まってしまうことがあります。 その時はもう一度 Ctrl-S を押して下さい。
他のアプリケーションに表示されている文字列の入力
コマンドプロンプト上の文字のコピー
直前に入力したコマンドは F3 キーで再入力できます。 ひと文字ずつ入力するには F1 キーを押します(F2, F4, INS, DEL キーも再入 力のための機能を持ちますが、ここでは省略します)。 また、Windows 2000 や Windows XP では上下矢印による、過去の入力の順次 呼びだし、左右矢印による入力行の編集などもできます。
コマンドプロンプト(MS-DOSプロンプト)では、コマンド文字列の入力により、 さまざまな指示が出せます。
次の指示に従ってコマンドを入れなさい。
前回次のようなプログラムを扱いました。
/* This program prints "Hello World!". */ #include <stdio.h> main(){ printf("Hello World!\n"); }
これから、このようなプログラムの実際の意味を少しずつ学習していきます。 C 言語には次のような基本的な構文があります。
コンピュータはデータをメモリーに記憶することができます。 表計算ではセルの中に様々なデータを入れることが出来ました。基本的にはセ ルの名前は A1, B2 など縦横の位置で指定していました。 一方、プログラミング言語の多くでは、これを行うのに変数と呼 ばれる概念を使います。 C 言語も変数を使えますが、 C 言語の変数には様々なデータを入れることは できません。 それは型という考え方があるからです。 プログラムの最初に変数の型を決めたら、その変数には同じ型のデータの出し 入れしか出来ず、他の型のデータは扱えません。 型には次のものがあります。
変数は a、 hensu など名前をつけて指定します。 C 言語ではプログラムの先頭で、使用する変数の型と名前を登録する必要があ ります(プログラムの途中ではできません)。 これを宣言文と言います。 宣言文はつぎのような構文になります。
型名 変数名1[, 変数名2[, 変数名3 ...]]
例えば単精度浮動小数点型の変数として、 a, b, x の三つの変数名を使う場 合は次のように宣言します。
float a,b,x;
変数の名前は先頭が英字、二文字目以降は英字または数字でなければなりませ ん。a, bb, c123 は変数名として使えます が、1a, a-b-c などは変数名として使用できません。 また、 C 言語では、一つの名前ではひとつのものしか指せません。 a という名前の変数を整数型で宣言したら、再度文字型で使用する ことはできません(cf. オブジェクト指向言語の関数名などは複数の型を取る ことが可能。BASIC 言語は同じ名前でも各型ごとに別々の値を持つことが可能)。 但し、変数名の大文字と小文字は区別しますので、 a と A は別の変数名にな ります。
データを変数に記憶させるには代入文を使います。
変数名 = 式 a = 2; b = a+3;
変数名は必ず左辺に来ます。また、式が計算されてから変数に代入されます。 従って次のような代入文を書くことも可能です。
i = i+1; j = 2*j;
この場合それぞれ、 i の内容は 1 増えて(i+1 の結果が i に代入される)、j の内容は 2 倍されます( 2*j の結果が j に代入される)。
整数を扱う型は整数型(int)と言います。 プログラム中に整数のデータを書く時は、通常の数字の記述法と同じになりま す(位取りのカンマは使用できません)。 なお、二進数、八進数、十六進数などの記入法もありますが、省略します。
int i; i=2;
文字型(char)の変数は一文字のみを記憶します。 後で出てくる配列を利用すると、文字列を表すことができます。 なお、他のプログラミング言語では大抵文字列型を取り扱うことができます。
プログラム中に文字データを書く場合は
char a,b; a='a'; b='\n';
浮動小数点型(float, double)は、数値計算など実数を使用するよう な計算に用います。 但し、真の意味での実数は取り扱えず、有限の桁の精度しかありません。 float に対して double は二倍の計算精度があります。
浮動小数点数のデータは、通常小数点を含む数の表記で表します。 また、 0.3×10-3のようなデータは 0.3e-3 と表します。
float x; double y; x=3.14; y=0.1e-5;
次の式を正しく計算するためには どのような宣言文が必要か答えなさい。
計算式を書く時、三角関数や平方根など、既に用意されている関数を使用する ことができます。 C 言語で使用できる主な数学的関数にはつぎのものがあります。
例:
a=sqrt(b*2);
なお、これらの関数を使用する場合、プログラムの先頭に次の行を書く必要が あります。
#include <math.h>
またこれらの関数の返す値の型は double です。但し、変数に float 型を使 用しても精度が低くなる他は問題ありません。
「フォーマットを示す文字列」の中に % と英字の組合せを入れると、最初の %+英 字が変数1 の値に、二番目の %+英字が変数2 の値にと、順に変数の値と置 き換わります。 %と英字の組合せには次のものがあります。 また、 % の指示以外の文字はそのまま画面に表示されます。
その他、 %s,%o, %x, %u, %e, %g, %p などありますが、ここでは特に取り上げま せん。
「フォーマットを示す文字列」はダブルクォーテーションマーク「" "」で括 ります。文字列は次回以降の講義で取りあげます。
なお、「%4.2f」など % と英字の間に数を入れると、「最小幅 4 桁、小数点 以下 2 桁」など表示する書式を表すことができます。詳しくは専門書を参照し てください。
次のプログラムを実行すると画面に「変数 x の値は 3 です。」と表示され、 改行されます。
#include <stdio.h> main(){ int x; x=3; printf("変数 x の値は %d です。\n",x); }
次のプログラムの最後に printf 文を書き、変数の内容を表示させなさい。
#include <stdio.h> main(){ int x; double y; char z; x=1; y=3.141592; z='a'; /* ここに printf 文を書き、変数の内容を表示させる */ }
一次方程式 ax+b=0 を解くプログラムを作成しましょ う。 あらかじめ、 a、b の値は分かっているとして、プロ グラムの中に埋め込みます。 そして、解は -b/a で求めます。 このようなプログラムは次のようになります。
#include <stdio.h> main(){ float a,b,x; a=10.0; b=20.0; x=-b/a; printf("%f x + %f = 0 の解は %f\n",a,b,x); }
このプログラムを使って次の方程式の解を求めなさい。
次の連立方程式を解くプログラムを作りなさい(ad-bc≠0 とする)。
できたプログラムで次の方程式を解きなさい。
直角三角形の直角をはさむ辺の長さ a, b が与えられ た時、斜辺の長さ c を求めるプログラムを書きなさい。
そして次の辺の組に対して、斜辺の長さを求めなさい。
三辺の長さが与えられた時、三角形の面積を求めるプログラムを作りなさい。 そして次の三辺を持つ三角形の面積を求めなさい。
三角形に垂線を引き、三平方の定理から連立方程式を立て、高さを求める。
余弦定理を使って公式を導く(ヘロンの公式)
Dynamic Draw と EPS Plugin をダウンロードしておいて下さい。