ユニット演習 I - 神奈川大学 能登研究室

◆2009年度◆
ユニット演習 I
(Exercises in Programming Language)
能登正人 著
(Masato Noto)
神奈川大学工学部
(Faculty of Engineering, Kanagawa University)
電 子 情 報 フ ロ ン テ ィ ア 学 科
(Department of Electronics and Informatics Frontiers)
ユニット演習 I(1回目・2回目)
演習環境
• 演習室
• OS
情報処理演習室(23 号館 109 教室/ 111 教室)
• ソフトウェア
• コンパイラ
Cygwin
gcc
• エディタ
秀丸
Windows XP
Cygwin と基本 UNIX コマンド
Cygwin は,GNU プロジェクトによる開発ツール群を Windows 環境用に移植したソフトウェア
であり,フリーソフトウェアであることからも広く普及しています.そのため,UNIX で使われて
いる豊富な機能や各種コマンドを Windows 上でも使用することができます.演習では,必要に応
じて以下の表に示すような UNIX コマンドを使用しなければいけませんので,最低限の操作はで
きるように,操作方法をよく覚えてコマンドの内容を理解してください.
内 容
コマンド
カレントディレクトリを表示する.
pwd
カレントディレクトリを変更する.
ファイル一覧を表示する.
cd
ls
ファイルをコピーする.
cp
main 関数
Cのプログラムは関数の集まりで構成されています.最も簡単なプログラムは main 関数だけか
ら成り立っています.プログラムの実行は,この関数から始まり,この関数の終わりで終了します.
したがって,プログラムには main という名の関数がなければなりません.
関数の本体は { と } で囲み,本文の先頭で,その関数の中で使用する変数の型宣言を行います.
関数の呼び出しは,ただ「関数名 ( )」と書くだけでよく非常にコンパクトな表現です.( ) 内に
書くデータのことを引数と呼び,関数間のデータの授受に使います.
1
フリーフォーマットとインデント
まず,Cのプログラムをみて気づくことは,
• BASIC のような行番号がない.
• 大文字でなく小文字ベースで書かれている.
• プログラムの書き出しが左端にそろっていない.
ということです.
Cのプログラムを書く場合,物理的な行に制約されません.つまり,
void main(void)
{
printf(" 神奈川大学工学部電子情報フロンティア学科");
}
は,
void main(void) { printf(" 神奈川大学工学部電子情報フロンティア学科"); }
と書いてもかまいません.ただ,後者の書き方より前者の書き方を使うのは,人がプログラムを見
たときに,その構造がわかりやすいからです.
ある単一の仕事を記述したものを文と呼びますが,Cでは文の終わりにセミコロン (;) を置き,
それで文の区切りを示しています.BASIC のように行末記号(リターン )が文の終わりでないこ
とが,上のような物理的な行に制約されないプログラムを書ける理由です.このように,物理的な
行に制約されず,自由にプログラムを記述することをフリーフォーマット(自由書式)といいます.
Cのプログラムはどこから書き出しても良いので,慣習的には,空白やタブを適当に入れ,書き
出す先頭位置を右に下げて書きます.これをインデント(字下げ)といいます.インデントの間隔
は何文字でもかまいませんが,タブの位置を考え,この演習の中で作成するプログラムではインデ
ントは 4 文字にしています.
コメント
コメントは,人がプログラムを見たときに,その内容がわかるように書く注釈のことです.Cに
おけるコメントは「/*」と「*/」に囲まれた文字列であり,行のどこから書いても良く,複数の行
に渡って書くこともできます.ただし,ここで気をつけなければならない点としては,注釈の中に
さらに注釈を書いてはいけないということです.
2
コメント例
/*******************************************************
(ファイル名)
__________________
(プログラマ名)
神奈川大学工学部電子情報フロンティア学科
__年__組__________ 番
__________________
(作成日)
__________________
*******************************************************/
データの型
データを表すのに型という概念があります.例えば,10 のような小数点を含まないものを整数
型,10.0 のように小数点を含むものを実数型といいます.一般にC言語では以下の表に示すような
データ型を扱うことができます.
表:型
基本型
文字型
char
unsigned char
整数型
short
unsigned short
int
unsigned int
long
実数型
unsigned long
float
double
long double
enum 型
配列型
ポインタ型
構造体
共用体
void 型
基本型のサイズと範囲
文字型は 1 バイトのサイズで構成されており,それを符号付き(char)と考えれば,−128∼127
の値を表現でき,符号なし(unsigned char)と考えれば,0∼255 の値を表現することができます.
3
整数型は短い整数(short),自然長整数(int),倍長整数(long)と,それぞれの符号なし
(unsigned ...)とがあります.short は 2 バイト,long は 4 バイトですが,int はマシンに依存する
ことになっています.ここでは仮に 4 バイトとしておきます.
実数型は,単精度実数(float),倍精度実数(double),長い倍精度実数(long double)があり
ます.float は 4 バイト,double は 8 バイトですが,long double は「double の精度と同じかそれ
より高くなければならない」と決められているだけで,具体的な数値については決められていませ
ん.ここでは仮に 10 バイトとしておきます.
以下の表に基本型のサイズと範囲の一覧表を示します.一般にデータサイズが小さければ,メモ
リを余分に食いませんが,表現できる範囲は狭くなります.逆に,データサイズが大きければ,メ
モリを余分に食いアクセススピードも落ちますが,表現できる範囲は広くなります.
表:基本型(文字型・整数型・実数型)のサイズ(byte)と範囲
型
サイズ
範囲
char
(符号付き文字)
1
−128
∼
127
unsigned char
(符号なし文字)
1
0
∼
255
short
unsigned short
(符号付き短い整数)
2
2
−32768
0
∼
32767
65535
int
unsigned int
(符号付き自然整数)
4
4
−2147483648
0
∼
long
unsigned long
(符号付き倍長整数)
−2147483648
0
∼
(符号なし倍長整数)
4
4
∼
2147483647
4294967295
float
(単精度実数)
4
−3.4E38
∼
3.4E38
double
long double
(倍精度実数)
8
10
−1.7E308
−1.1E4932
∼
1.7E308
1.1E4932
(符号なし短い整数)
(符号なし自然整数)
(長い倍精度実数)
4
∼
∼
∼
2147483647
4294967295
型宣言
BASIC でプログラムを組んでいた人がCを使うとき,まずやっかいに思うことは,使用する変
数を全て型宣言しておかなければならないことです.変数の型宣言は先に示した型宣言子(char,
int など)を用いてプログラムの先頭(すべての実行文に先行して)で宣言します.
型宣言
宣言する変数で同じ型であるものは,カンマ
( , )で区切って並べるのが一般的ですが,一
void main(void)
{
行ずつ宣言してもかまいません.また,宣言の
中でその変数の初期値を与えることができます.
int i,j,k;
double x;
double y;
double z=0;
.
..
}
名前のきまり
変数名,関数名,記号定数名などにつける名前は,次のような規則に従わなければなりません.
• 使用できるキャラクタは,A∼Z,a∼z,0∼9, (アンダースコア),$(ドル記号)です.
• 名前はアルファベットまたはアンダースコアで始まらなければなりません.したがって,
「2A」
は名前としては誤りです.
• 名前の長さに制限はありませんが先頭から 32 文字までが有効です.
• 予約語(if,for など)は使用できませんが,名前の一部にそれらが入ってもかまいません.
例えば,for は認められませんが force は認められます.
• 大文字と小文字は異なるものとして扱います.例えば,eof と EOF は異なります.
簡単なCプログラム
C言語の細かい文法については,今はあまり考えずに次のプログラムを作成してみよう.
(下線
部には適当なコメントを入れましょう.
)
5
プログラム (ex01.c)
/*******************************************************
(ファイル名) ex01.c
(プログラマ名)
神奈川大学工学部電子情報フロンティア学科
___________________
__年__組__________ 番
(作成日)
__________________
*******************************************************/
#include <stdio.h>
int main(void);
int main(void)
{
int
x;
float y;
printf(" 整数型の数値を入力してください.\n");
scanf("%d",&x);
printf(" 実数型の数値を入力してください.\n");
scanf("%f",&y);
printf("\n****************************************************\n");
printf(" 整数型\t: %d\n",x);
printf(" 実数型\t: %f\n",y);
printf("****************************************************\n");
return(0);
}
作成プログラムのコンパイルおよび実行
エディタで作成したソースプログラムを実行するためには,ファイルにデータを格納・保存(セー
ブ)し,コンパイラを使ってコンパイルしなければいけません.上記のプログラム(ex01.c)をコ
ンパイルしたいときは,
例2
% gcc ex01.c
とします.そうすると,プログラムを実行するのに必要なファイル「a.exe」が作られます.これ
は,以下の例のように「-o」オプションを使用し,実行ファイル名(この場合,ex01.exe)を指定
することもできます.
例3
% gcc -o ex01.exe ex01.c
6
作成プログラムを実行するときは,作成したプログラムのカレントディレクトリから,
「./実行
ファイル名」とすることにより,実行することができます.例えば,実行ファイルが「a.exe」の
場合は,以下のようにします.
例4
% ./a.exe
7