はじめてのC言語プログラミング

C言語をはじめとして,コンピュータ言語によるプログラミング(コーディング)では,コンピュータを「豪華な計算機」として使うことができる.
C言語に限らず,ほかのプログラミング言語においても,その処理には共通項多いため,まずC言語を身につけておけば,他のプログラミング言語を学ぶ際にも幅広く応用できる.

C言語の学習では,最初に画面に「Hello, World!」と表示するプログラムを書くのがならわしとなっている.
まずは,プログラム作成の全体的な手順を身につけよう.

ここでは「プログラミングを行う」という動作に慣れてもらうために,ソースファイル編集・保存と,コンパイル作業を体験してみよう.

プログラム作成から実行までの手順

開発環境のインストールが終わったら,いよいよプログラミングをはじめよう.
プログラミングにおける基本的な手順は,以下の通りである.

  1. テキストエディタを用いて,プログラムのソースファイル(ソースコードとも言う)を入力・編集・保存する.
  2. Cコンパイラにより,ソースファイルの文法チェックおよび機械語への翻訳(コンパイル)をおこなう.文法に問題がなければ,実行ファイル(.exeファイル)が生成される.
  3. 実行ファイルの実行(プログラムの実行)

一般にはプログラムの作成にはミスはつきもので,プログラム作成時に入力ミス,文法ミスがあると,コンパイル段階でエラーが出る.これを文法エラーという.
この場合,エラーメッセージをよく読んで,ソースコードを修正・保存ののち,再度コンパイル,という作業を繰り返す.

文法的には問題ない場合(=コンパイルはOK)であっても,意図した通りにプログラムが動作しない場合がある.(論理的なエラー

これらの過程を経て,最終的な機械語プログラムを完成させる.この作業を「デバッグ」と呼ぶ.

(1)プログラムの入力

エディタの起動

プログラムを作るにはまず,「ソースファイル」に「ソースコード」を書く必要がある.
ソースコードの作成には,テキストエディタ と呼ばれるソフトウエアを用いる.

授業で用いる推奨開発環境において,start.cmd をクリックして,VSCodium を起動する.

注:情報処理教室のPCにインストールされている開発環境を用いる場合の操作手順はこちらにまとめてある.
(Windows10での説明のため,操作画面が少々異なる.)

作業のはじめに,「フォルダを開く」(OpenFolder)で,作業フォルダを指定する必要がある.
USBメモリ内の,myprog フォルダを指定し,開いておこう.
逆に,「フォルダを閉じる」(Close Folder)で,作業フォルダの指定を解除することもできる.

次に,「ファイル」「新規作成」から,空のファイルを生成し,名前を付ける.
注1:実習課題で多くのソースファイルを作成するので,ファイル名は例えば 153Rxxxxxx-yy-z.cpp(xxxxxxは6桁の学籍番号,yyは授業の回数,zはその回の課題番号)や,0424-1.cppのように,規則的に命名するとよい.
注2:.cppの部分を拡張子と呼び,Windows はこれでファイルの種類を識別しているため,必ずつけること.
注3:ファイル名やフォルダ名に全角文字を用いるとコンパイルがうまく動作しないことがある.半角文字で指定しよう.

では,新規作成した.cppファイルに,以下に示すソースコード(プログラム)を,1字1句,間違いなくテキストエディタで入力してみよう.
行番号は入力不要である.
以下をマウスで領域選択しコピー&ペーストでも入力できるが,はじめのうちはタイピングの練習を兼ねて入力してみよう.

C言語プログラムの例
#include <stdio.h>
	
int main(void)
{
    printf("Hello, world! \n");
    return 0;
}
入力のヒント:

作成したファイルの保存方法

プログラムのソースコードの入力が終わったら,エディタのメニューから,[ファイル][保存]を選ぶ.
ショートカットキー(CTRL+Sなど)を使うほうが速い.

ファイルを保存しないと,ディスク上に更新が反映されないため,コンパイル前に保存する習慣をつけよう.
(VSCodiumでは,コンパイル前にファイルが自動保存される場合がある.)

参考:C++プログラムの例

以下は,C言語の改良版であるC++言語のHello Worldプログラムである.
こちらも試してみよう.

#include <iostream>
using namespace std;

int main(void)
{
    cout << "Hello, world!" << endl;
    return 0;
}

(2)プログラムのコンパイル(機械語への翻訳)

コンピュータは「ソースファイル」を実行することはできないため,コンピュータのわかる言葉(機械語)に翻訳する必要がある.
この翻訳を行うプログラムのことを,コンパイラと呼ぶ.
コンパイラには,無料版から商用版まで様々なものがある.

VSCodium(VSCode)の[Terminal][New Terminal],日本語化している場合は「ターミナル」「新しいターミナル」を開く.
エディタの下方に入力画面(ターミナル)が開くので,以下のようにコンパイラを起動し,コンパイルする.
(test-1.cpp のファイル名の部分は,各自で変更.)

> c++ test-1.cpp 

コンパイラが起動,ソースファイルの構文チェックがOKならば,最終的に実行ファイル(a.exe)が生成される.
何かエラーがあった場合は,その旨が表示されるので,よく読んで,再度編集・保存・コンパイルを行い,エラーが出なくなるまで繰り返す.(これが重要

プログラムの実行

エラーが出なくなり,コンパイルが成功すると,実行ファイル(Windowsでは .exeという拡張子がついたファイル)ができる. これがコンピュータが理解できる「機械語」のファイルである.

出来上がった機械語のファイルを実行させるためには,ターミナルから実行ファイル名を打ち込む.

(Windows,gcc)
>  .\a.exe

(Mac OS, Linux などUNIX系OS)
$  ./a.out

(Windows, bccコンパイラ)
>  test-1.exe

Enterキーを押して,自分で作ったプログラム実行してみよう. 画面に何か表示されたでしょうか.

便利な補完機能・ヒストリー機能

コマンドプロンプトで,以下のように数文字打ち込んで[TAB]キーを押すと,入力すべき文字列の候補が表示される.
たとえば,

c++ te[ここでTABキーを押す]

最初の何文字かを入力することで,いま作業しているディレクトリ内のファイル名の候補が自動的に追加され,キー入力時間を短縮できる.
これを補完機能という.

また,キーボードから何回かコマンドを打ち込んだ後に,キーボードの矢印[↑][↓]キーを押すと,今まで入力したコマンドライン文字列が順番に表示される.
これをヒストリー機能という.
コンパイル作業では同じコマンドを何度も何度も入力するので,この機能を知っているのと知らないのとでは,作業効率が大きく異なる.

よく使うコマンド (Windows)

コマンドプロンプトには非常に多くのコマンドがあり,様々なファイル・フォルダ操作がコマンドラインから可能である.

dir
ディレクトリ(つまりフォルダ)内にあるファイル及びディレクトリ一覧を表示.
ディレクトリー名には括弧がつく.
dirコマンドでは,ファイルの有無の確認だけでなく,更新日時,ファイルサイズなども一覧として示される.


ren (旧ファイル名) (新ファイル名)
ファイル名を変更する.renameの略.

del (ファイル名)
ファイルを消去する.deleteの略.
確認無しで,いきなりファイルが消去されるので注意.


md (ディレクトリ名)
ディレクトリの作成.make directory.

cd (ディレクトリ名)
ディレクトリ間の移動.change directory.
cd .. (ドット2つ)は,自分の親ディレクトリに移動する.

rd (ディレクトリ名)
ディレクトリを消去する.remove directory.ディレクトリが空でない場合は消去できない.



cls
画面に表示されている文字を消去する.clear screen.

いずれのコマンドも,コマンドのあとに /? をつけるとヘルプが表示される.


入力したプログラムにミスがあった場合

ソースコードに文法上の問題があれば,エラーメッセージ(ソースファイル名と行数)が出るので,表示される行数を参考にソースコードの該当部分を修正する.
プログラミングの手順は「ソースファイル編集」「コンパイル&エラー確認」の繰り返しである.
この作業のことをデバッグ(虫取りの意味)と呼ぶ. 英語では,プログラムの間違いのことをバグ(虫)という.

プログラミング初歩の文法の学習においては,まずエラーメッセージの出る場面や,その意味を理解できるようになることが,上達の第一歩である!

練習

課題1

(1)以下のソースコードを,エディタを用いて打ち込み,コンパイル・実行してみなさい.
ファイル名はtest-1.cppとせよ.

参考:[^]記号はタブ[TAB]記号である,[^]文字を入力しないこと!
各行右端の矢印は[改行]であり,エディタの設定によっては表示されない場合がある.


課題2

同様に,

(1)以下のソースコードを,エディタを用いて打ち込み,コンパイル・実行してみなさい.
ファイル名はtest-2.cppとせよ.