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

本授業では,C言語のプログラミングを通して,コンピュータを「豪華な計算機」として使いこなすための技法を学ぶ.
C/C++言語に限らず,プログラミング言語での処理には共通項多いため,まずC言語を身につけておけば,他のプログラミング言語を学ぶ際にも幅広く応用することができる.

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

今日はまず細かな理屈は抜きにして,「プログラミングを行う」という動作に慣れてもらうために,まずソースファイル編集とコンパイル作業を体験してみよう.

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

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

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

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

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

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

全体の操作手順はこちらにまとめてある.(20240422追記:Windows10での説明のため,画面が少々異なる.)

(1)プログラムの入力

エディタの起動

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

VSCode(情報処理教室のPC) または VSCodium(USBの開発環境) を起動する.

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

USBメモリではなく,情報処理教室のPC内で作業する場合は,「ドキュメント」や「マイドキュメント」を選択する.データ紛失に注意.

次に,ファイルを新規作成し,空のファイルを生成し,名前を付ける.
実習では,ソースファイルを数多く作成するので,ファイル名は 153Rxxxxxx-yy-z.cpp のように規則的に命名するとよい.
(xxxxxxは6桁の学籍番号,yyは授業の回数,zはその回の課題番号)
例えば,153R000000-01-1.cpp とする.
.cppの部分を拡張子と呼び,Windows はこれでファイルの種類を識別しているため,必ずつけること.

では早速,新規作成した.cppファイルに,以下に示すソースコードの例(プログラム)を,1字1句,間違いなくテキストエディタで入力してみよう.行番号は入力不要.
(以下の様な枠に囲まれた等幅文字の箇所は,C言語のソースコードを意味する.)

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

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

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

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

参考: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],日本語化している場合は「ターミナル」「新しいターミナル」を開く.
エディタの下方に入力画面(ターミナル)が開くので,以下のようにコンパイラを起動し,コンパイルする.
(153R000000-01-1.cpp のファイル名の部分は,各自で変更.)

> c++ 153R000000-01-1.cpp 

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

プログラムの実行

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

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

(Windows,gcc)
>  .\a.exe

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

(Windows, bccコンパイラ)
>  153R000000-01-1.exe

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

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

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

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

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

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

よく使うコマンド (Windows)

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

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


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

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


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

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

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



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

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


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

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

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

練習

課題1

(1)以下のソースコードを,エディタを用いて打ち込み,コンパイル・実行してみなさい.
ファイル名は153Rxxxxxx-01-1.cppとせよ.xxxxxxは,各自の学籍番号とする.

(2)コンパイルして出来上がった.exeファイルを実行し,その時に画面表示された文字・数字をテキストファイルに転記(コピー&ペースト)して提出しなさい. テキストファイル名は153Rxxxxxx-01-1.txt とせよ.

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

課題2

同様に,

(1)以下のソースコードを,エディタを用いて打ち込み,コンパイル・実行してみなさい.
ファイル名は153Rxxxxxx-01-2.cppとせよ.xxxxxxは,各自の学籍番号とする.

(2)コンパイルして出来上がった.exeファイルを実行し,その時に表示された内容をテキストファイルに転記(コピー&ペースト)して提出する.
テキストファイル名は153Rxxxxxx-01-2.txt とせよ.