第1回 はじめてのプログラミング


プログラミング言語 C

コンピュータを動作させる「手順」を記述するための言葉を,「プログラミング言語」と呼ぶ. 人間の言葉(自然言語)に,日本語,英語,ドイツ語,フランス語といろいろあるように,プログラミング言語にも,C言語をはじめとしてC++,Objective-C,BASIC,JAVA,COBOL,Perl,FORTRAN,Logo,Pascal,Prolog,Lispなど様々なプログラミング言語がある. 本演習では,機械の制御や信号・画像処理などに最も適したC言語の学習を通して,コンピュータのプログラミングを学ぶ.

C言語は1973年にAT&Tベル研究所の(Dennis M. Ritchie) が中心となって作ったプログラミング言語である. 同研究所の Ken Thompson が開発したB言語(BCPL)を改良して作られた. C言語を身につけておけば,他のプログラミング言語を学ぶ際にも応用することができる.

プログラミング言語に要求される機能

はじめてのプログラム

C言語の学習を始めて,最初に作ってみるプログラムは,画面に「Hello, World」と表示するのがならわしとなっている. 早速,C言語で作ってみよう.


#include <stdio.h>

void main()
{
    printf("Hello, World¥n");
}
これがC言語によるプログラムの一例である. これからこれを用いて作業を進めてみよう.

プログラム作成の手順

  1. エディタを用いて,プログラムを入力・編集する ? 「秀丸エディタ」の使い方
  2. プログラムのコンパイル ? 「コマンドプロンプト」,「Borland C」 の使い方
  3. プログラムの実行

エディタによるプログラムの入力

Windowsの[スタート]メニューから,[秀丸エディタ]を選んでクリックする.

秀丸エディタを起動したら,プログラムを入力する.


#include <stdio.h>

void main()
{
    printf("Hello, World¥n");
}


ここで,いくつか入力のヒント:



プログラムを入力する際に間違いやすい点についてまとめておくと,,,

 C言語のおもな予約語一覧

autobreakcasecharconst
continuedefaultdodoubleelse
enumexternfloatforgoto
ifintlongregisterreturn
shortsignedsizeofstaticstruct
switchtypedefunionunsignedvoid
volatilewhile

プログラムを入力したら,以下のようにして保存する.

秀丸エディタのメニューから,[ファイル]→[名前を付けて保存]を選ぶ.

保存する場所が,[マイ ドキュメント] になっていることを確認する.

ファイルの種類:の欄から[C言語ソースファイル(*.c)]を選ぶ.

これを選ばないと,.txtなどの拡張子が自動的に追加され,コンパイルがうまくいかなくなることがあるので注意.

ファイル名欄に自分でわかりやすいファイル名を入力する.

ファイル名に使える文字はa-z,A-Z,0-9,_(アンダーバー)などの文字の組み合わせ.スペースは入れないほうが良い.

Windows上ではファイル名は大文字,小文字は区別されないので,TEST.CPP と test.cpp と Test.Cpp はすべて同じとみなされる.

本演習では,たくさんのプログラムを作成するので,よく考えてファイル名をつけること.


プログラムの基本形

これから順にC言語の構文について勉強&実践してゆこう.

C言語のプログラムの基本形を,もう一度復習しよう.

C言語のプログラムは,関数の集まりである. プログラムにおける関数とは,「一連の処理のかたまり」のことを指し,数学の関数とは多少意味が違う.

関数には計算の過程を指示するおよび計算で使われる値を一時的に格納する変数が含まれる.上のプログラムでは,main(), printf() が関数である.また,プログラムの実行は,main関数から始まり,行の上から下に向けて順に処理が進められる.

1行目の,#include <stdio.h> は,すでに用意されている入出力を行うための関数(この例ではprintf())を使うための準備である.これら標準入出力関数には,画面に文字を表示する printf(),キーボードからデータの入力を受け取る scanf() などがある.

ここで,二重引用符"...."で囲まれた文字を,文字列と呼ぶ.

文字列の最後の ¥n という記号は改行をしなさいという特別な記号(エスケープシーケンスという)で,画面に直接 ¥ や n が表示されるわけではないので注意.

日本語環境では「¥(エン)」記号が表示されるが,英語圏では「\(バックスラッシュ)」が出力される場合がある.


プログラムのコンパイル

できあがったC言語のプログラムファイルのことを,ソースファイルと呼ぶ.
コンピュータはソースファイルを直接理解することはできない.
コンピュータのわかる言葉(機械語)に翻訳する必要があり,翻訳をするプログラムのことをコンパイラと呼ぶ.
コンパイラにもいろいろなものがあるが,本講義では,Borland C++ を用いる.
これまで,コンピュータの操作はほとんどマウスで行っていたが,ここではキーボードから命令を入力して実行していく.

[スタート][すべてのプログラム][コマンドプロンプト]と順にクリックし,コマンドプロンプトを起動.

(設定により,もし見つからなければ[スタート][すべてのプログラム][アクセサリ][コマンドプロンプト])

以下のコマンド(赤色文字の部分)をキーボードから入力してみよう.

cd .windows2000 (カレントディレクトリを .windows2000 に変更する)

dir (ディレクトリの中身の一覧を表示する.)

次のコマンドが実際のコンパイル作業である(ソースファイルを指定してコンパイラの起動).
コンパイラが起動,ソースファイルの構文チェックがOKならば実行ファイル(.exeファイル)が生成される

bcc32 hello.c (ここではファイル名として hello.c というソースファイルをコンパイルする)

コマンド入力を間違えると「'・・・' は,内部コマンドまたは外部コマンド,操作可能なプログラムまたは...」などのメッセージが出るので,よく見直すこと.

問題があればエラーメッセージ(ソースファイル名と行数)が出るので,それを参考にソースコードを修正する.
プログラミングの手順は「ソースファイル編集」「コンパイル&エラー確認」の繰り返し.

コンパイルが成功すると,hello.exeというファイルができるので(dirコマンドで確認!),hello.exeと入力して実行結果を確認する.

エラーが出なくなったら hello.exe と入力,Enterキーを押して,自分で作ったプログラム実行しよう.


入出力,変数,代入,四則演算

プログラミングの方法ができたら,早速,値の格納方法や四則演算,数値データの画面表示の方法について,演習しよう.

まず最初に,プログラムの重要な要素の一つ 変数,代入,演算 について学習する.


printf()関数の使い方・・・画面への表示,出力

計算機の内部でどんなに興味深い,意味のある計算を行っていても,人間が理解できる形で出力しなければ意味が無い.そこで,まずは画面に文字や数値を表示するprintf()関数について学ぶ.

printf()関数は,文字や値を画面に表示する際に用いる関数で,

・文字列をそのまま表示する

   printf("1234");

・書式指定して,文字列,数値を表示する

   printf("%d", 1234);

と,いろいろな使い方がある.

書式指定
意味
%d
整数を十進数で表示 1, 2, -35
%f
実数 0.1, 2.5
%c
文字

’で囲まれた1個の半角文字

’a’, ’B’
%s
文字列

”で囲まれた複数の文字

"ABC", "d"

複数のデータを続けて表示するときには,次のようにする.

この行が実行されると,単に画面に文字を出すprintf()の書き方

 printf("2は1より大きい");

と同じ出力になるが,計算結果など変数の中身を表示する方法としては意味が全く異なる!(「変数」の演習で再度確認する).


改行

文の途中やおしまいで「改行」を出力するためには,¥n を挿入する.


#include <stdio.h>

void main()
{
    printf("Hello! ¥n World ¥n ");
}

では,円記号¥ などの文字自身を表示するにはどうしたらよいか.
これも,エスケープシーケンスを用いる.

表示したい文字
エスケープシーケンス
¥
¥¥
%
%%
¥’
¥”
タブ
¥t
バックスペース
¥b
ベル(音が鳴る)
¥a
改行
¥n

変数,代入,四則演算

プログラムで,計算結果や,途中経過の数値や文字をしまっておく箱(メモリ)のようなものを 変数 と呼ぶ.

例:


#include <stdio.h>
void main()
{
    int a;
    a = 10;
    printf("変数の値は%dです¥n", a);
}

このプログラムを,一行ずつ見てみよう.

int a;

   整数型(integer) を格納する変数を用意し,a という名前を付ける と宣言している

a = 10;

   用意した変数 a に値 10 を 代入 している.(等号,等しいという意味ではない)

printf("変数の値は%dです¥n", a);

   変数の値を画面に表示する.%d には,変数 a の値 が割り当てられ,10進数で画面に表示される.

   


変数の型の種類(箱の種類と大きさ)

変数の扱える数の大きさを  とよび,大きく分けて,整数型 と 浮動小数点型 がある.

種類 名前 サイズ 範囲
整数型 int システムにより異なる
A307,A308室WindowsXP(32bit)ではlongと同じ
unsigned int
short 2バイト -32768〜32767
unsigned short 2バイト 0〜65535
long 4バイト -2147483648〜2147483647
unsigned long 4バイト 0〜4294967295
 浮動小数点型(実数)  float 4バイト -3.4E38〜3.4E38
double 8バイト -1.7E308〜1.7E308

どのような数値を扱うかをあらかじめ計画,設計し,適した型を宣言してから使う.

C言語では,「宣言」していない変数は使うことができない!コンパイルエラーとなる.


変数名 (箱の名前)

変数には,人間にわかりやすいように名前を付けます.ただし,名前の付け方にはルールがある.

正しい命名 誤った命名
a12 12a (数字から始まっている)
return_1 return (予約語は変数名には使えない)
ab_c ab-c (減算とみなされる)

いろいろな宣言の書き方

二つの同じ型の変数を宣言する int a;
int b;
int a, b;
一つの変数の宣言と初期化 int a;
a = 2;
int a = 2;
二つの同じ型の変数の宣言と初期化 int a; int b;
a = 2; b = 3;
int a=2, b=3;

代入

変数に値を記憶させることを 代入 とよび,記号 = で表す.


  a = 10 ;

これは,変数 a に値 10 を代入する という意味となる.
つまり,C言語の「代入」は数学の 等しい とは異なり,右辺から左辺への一方通行であり,次のような書式はエラーとなる.


  10 = a ;

たとえば,変数 a の値を 1 増やしたい場合はどうしたら良いか?

 

注意:これは a の値と a+1 とが等しいという意味ではない!
また,代入は数学の 定義 とも異なり,変数と値の「関係を定義」するものではない.
つまり,=が出現した行で代入が行われ,その後の行でまた別の代入が行われた場合は,値が上書きされる.

例:


#include <stdio.h>

void main()
{
    int a, b;

    a = 10;
    b = 20;

    printf("変数aの値は%dです¥n", a);

    a = b + 5;

    printf("変数aの値は%dです¥n", a);

    b = 1;

    printf("変数aの値は%dです¥n", a); 
}

どのように画面に表示されるか.


演算

コンピュータでは,数学で使う「+」,「×」などの算術演算子,値を比べる比較演算子,条件判断に使う論理演算子 などがあります. これら演算子の働きについて学習しよう.

算術演算子

数の計算に用いる演算子を下の表にまとめる.

 演算子   作用   使い方の例  意味
たす a = b + c; b と c をたした値を a に代入
ひく a = b - c; b から c をひいた値を a に代入
かける a = b * c; b と c をかけた値を a に代入
わる a = b / c; b を c でわった値を a に代入(c が 0 の時はエラー,整数/整数は切り捨て)
あまり a = b % c; b を c でわったあまりを a に代入

(1)式の値を表示する例:


#include <stdio.h>

void main()
{
    printf(" 1 + 2 は %d です¥n", 1+2);

    printf(" 3 x 4 は %d です¥n", 3*4);
}

(2)変数で計算し,値を表示する例:


#include <stdio.h>

void main()
{
    int a, b;

    a = 1 + 2;
    b = 3 * 4;

    printf("a = %d¥n", a);
    printf("b = %d¥n", b);
    printf("a+b = %d¥n", a+b);
}

代入演算子

代入で説明した,

    a = a + 1;

を,代入演算子を使って

    a += 1;

と書くこともできる.

演算子  使い方  意味
a = b; b の値を a に代入
+= a += b; a = a + b;
−= a -= b; a = a - b;
*= a *= b; a = a * b;
/= a /= b; a = a / b;
%= a %= b; a = a % b;

今日の演習課題

(1)画面に

  ¥100もらった 

  ”テンション30%上昇!”

と表示するようなプログラムを作ろう.例のように改行も行うこと.

(2)整数型の変数,a = 6, b = 5 とするとき,次の各計算結果を画面に表示するプログラムを作成しよう.

(3)以下の図のように,コマンドプロンプトに好きなアルファベットの大文字1文字を絵で表してみよう.

(4)掛け算九九の9の段を,以下のように式と答えを表すプログラムを作ろう.

課題提出

・授業終了時までのプログラムと完成した提出用プログラムを印刷して 年組番号氏名を記入して提出すること.
・時間内に演習課題が終わらなかったら宿題.締め切りは次回の授業開始時刻まで