C言語プログラミングの初歩

今回からC言語プログラミングのトピックスに入ります.

今後の授業における評価方針は,授業中の作業成果,授業時間外で取り組む提出課題の成果,ペーパー試験の3つとなりますので,注意してください.

また,提出課題やペーパー試験は「抜き打ち」があります.心して「予習・復習・授業への集中」を心がけてください.

C言語プログラムの作成と実行

C言語は一般にコンパイル型プログラミング言語に分類され,その作成と実行には3つの段階がある.

  1. ソースプログラムの作成:
    これは,人間が理解しやすい高級言語であるC言語を用いて表現されたプログラムをテキストファイル(文字情報で作られたファイル)として作成することを意味する.ソースプログラムにはEmacsなどのテキストエディタを利用する.作成するC言語ソースプログラムのファイル名は,末尾(拡張子)が".c"で終わる約束になっているので,ソースプログラムを作成する時には注意すること.尚,ソースプログラムの事をソースコードと呼ぶことも多いので知っておこう.
  2. コンパイル:
    C言語で書かれたソースプログラムは,計算機は直接には解釈・実行できないので,計算機が実行できる形式(機械語,又は,実行可能形式とかバイナリプログラムと呼ばれる)に変換したものを作成する作業を行う.この変換を行ってくれるソフトウェアをコンパイラと呼び,コマンドとしてUNIX標準ではccが用意されている.本実習ではccコマンドの代わりに gccコマンドを用いるが機能的には全く変わりない.
  3. コンパイル済み実行形式プログラムの実行:
    コンパイルが完了すると,実行形式プログラムがファイルとして作成される.
    実行形式プログラムを実行するには   ./ファイル名  をキーボードからタイプする.

C言語ソースプログラム作成練習

まず,ターミナルのウィンドウを一枚開き,C言語実習用ディレクトリ(例えばC_langなど)を作成して,そのディレクトリに移動せよ.Emacsを用いて以下の簡単なCプログラムhello.cを作成して,そのディレクトリに保存せよ.但し,漢字以外の英数字文字は全ては半角文字(1バイト文字,ASCII文字)であることに注意のこと.また,"\" (back slash)は"¥"と同じ文字を表わすことにも気を付けよう.(C言語における英数字の取り扱いに関しては,以前に学んだ「日本語漢字コード」に関する資料を参照のこと.)

また,C言語のソースプログラムはフリ−フォ−マットと呼ばれ,改行や空白(又はTAB)の有無を殆ど気にしない(ダブルクォ−トで囲まれた文字列は別)で無視するので,プログラム中の空白文字の有無に神経質にこだわらなくても良いが,プログラムコードの見やすさを考えれば,行頭位置を適切に字下げ(インデント)するように意識すべきである..Emacs上でインデントさせるには,TABキーをタイプすれば,自動的に適切にインデントされる.「見やすいプログラム」とは「理解しやすいプログラム」であり,すなわち「間違いの少ないプログラム」となる.

/******				
    学生番号:123456				
    氏名: 山田太郎			
    ソースプログラム作成練習
    hello.c
******/

#include <stdio.h>
#include <stdlib.h>

main() {

    printf("Hello World!¥n");

    exit(0);

}

ソースプログラム作成時の注意事項

今後,提出課題としてC言語ソースプログラムの提出が求められてきます.ソースプログラムを作成する際には以下の事項に十分留意するようにしてください.

変数名

変数名はいい加減に場当たり的な名前を付けると,プログラムの理解を妨げる事が知られています.カッコいい英語名でなくて「ローマ字書き」でも構わないので,「何の目的の変数か?」を考えながら,適切な変数名を選びなさい.変数名の詳細は教科書pp. 26-27を参照してください.

インデント(字下げ)

教科書の例題ソースプログラムを見ると,インデント(字下げ)が適切に行われていて,プログラムコードの「構造・骨格」がハッキリ分かるようになっています.プログラムの構造がハッキリすると,その結果としてプログラムの動作や意味が理解しやすくなるという効果があります.伊達とか単なる見栄えだけでインデントするわけではありません.

早くプログラミングを上達するためには,速くプログラムコードの内容や動きを理解する必要があるので,このインデントを絶対におろそかにしてはなりません.インデントの詳細については教科書pp. 43を参照してください.

尚,ソースプログラムに適切に字下げを施すにはEmacsの支援機能を利用するとよいです.

Emacsでソースプログラムを編集中に,字下げすべき箇所にカーソルを置いた状態で TAB キーを押すと自動的に程よい位置に字下げしてくれます.また,この機能を使うと { } などの入れ忘れなどの間違いがあった時には字下げが予想と食い違ってくるので,「あれ?どこか間違ってるかも?」と早く間違いに気付く手掛かりにもなります.是非ともEmacsの自動インデント機能を上手に活かしましょう.

但し,Emacsの自動インデントの「規則」が自分の好みと合わない場合は,少しイライラするかも知れない.その場合には「Emacsをカスタマイズ」すれば,いくらでも変更できるが,その先には「Emacsオタク」あるいは「カスタマイズ地獄」というディープで楽しい世界が待っている.Goog Luck!

尚,各課題の変数名の付け方,及び,字下げ(インデント)の扱いが極端に悪い場合には,大幅な減点対象(最悪0点,或いは,マイナス点)としますので,十分注意してください.

コンパイル

C言語を用いて作成されたプログラム(ソースプログラム)を計算機は直接実行できないため,それを翻訳して実行可能形式(機械語プログラム,ロードモジュール)に変換する必要がある.この変換の作業をコンパイルと呼び,コンパイルを行ってくれるソフトウェアをコンパイラと呼ぶ.UNIXではccというコマンドが標準のC言語コンパイラであるが,本実習ではccのかわりにgccを用いる.使用方法は以下のとおりである.

gcc -o 実行形式ファイル名 ソースプログラムファイル名

例: gcc -o hello hello.c

上記の例ではhello.cというソースプログラムを翻訳して,実行可能形式プログラムファイルhelloが作成される.lsコマンドを実行してファイル名一覧を確認して,実行可能形式ファイルhelloが正しく作成されている事を確認してみよう.

作成された実行可能形式はUNIXのコマンドと同じように,起動するにはファイルのパス名をキーボードからタイプする,すなわち

./hello<return>

と入力すると実行される.

コンパイルする際に-oオプション,つまり,-o hello省略するとa.outという名前の実行可能形式プログラムが作成される.その例は以下の通りである.

gcc ソースプログラムファイル名

この場合には,a.outという実行可能形式プログラムが作成されているはずなので,キーボードから

./a.out<return>

と入力すると,それが実行される.

自分で作成するプログラムの編集・コンパイル・実行手順

  1. Emacsを用いてソースプログラム編集する.編集し終えたらファイルを保存して,2へ進む.
  2. コンパイルしてみて,作成したプログラムに間違い(バグ)があった場合は1に戻り,エラー無くコンパイル出来た場合は,3へ進む.
  3. コンパイル出来て実行可能形式プログラムが作成されたら,それを実行してみる.プログラムの動作がおかしい場合は1へ戻る.

注: プログラミングを学ぶには「根気」が必要である.なかなか上手く出来るようにならないが,間違いの原因を根気よく探して直すことが大切である.上手く出来ないのは,コンピュータが悪いのでなく自分自身の操作やプログラムの間違いに原因がある場合が殆どなので,常に自分自身が何か間違ってないかな?と自分自身を疑ってかかること.

ソースプログラム作成・修正作業の能率的作業方法

  1. ターミナルを開いておく.
  2. Emacsを起動しておき,ソースプログラムを必要に応じて編集し,編集し終えたらC-x C-sとタイプして必ず保存する
  3. ターミナル上でgccコマンドを用いて,編集したソースプログラムをコンパイルする.
  4. エラーメッセージが表示された場合: 一般にコンパイラが出すエラ−メッセ−ジは,プログラムの間違いを的確に指摘していることは少なく,あまり当てにならない(但し,プログラムが間違っていることだけは確実).エラ−が表示されたときは,指摘された行番号の近辺(やや手前)で間違っているはずである.Emacsでは,ウィンドウ下部のエコーラインにカーソルが位置している行数が(例えば L32 といったように)表示されている.或いは,Emacs上でM-x goto-line とタイプすると,カーソルを移動させる行番号を訊ねてくるから,エラーメッセージが表示されている行番号をタイプすると,その行へカーソルが移動する.その行より上にあるはずのエラー原因となっている行を探して修正した後,再度保存してからコンパイルをやり直す.

exit()関数におけるコンパイラのウォーニングについて

現在のMacOS Xでは,exit()関数を使って終了するようにC言語プログラムを作成すると,コンパイル時にWaring (ウォーニング,警告)が発せられる.この警告はXcode付属のgccコンパイラの警告基準が厳しくなっているためなので,無視しても実害はないが気持ちのよいものではない.この警告が出ないようにするには,次のいずれかの対策方法がある.(教科書pp.13参照)

Finder上でC言語ソースプログラムを開く時の振る舞いの調整

CSE環境では,FinderからC言語ソースプログラムのアイコンをダブルクリックして開くと,Carbon Emacsが起動するように調整されている.

しかし,ローカルブートした状態でXcodeが導入済みの場合,同じようにダブルクリックにてファイルを開こうとするとXcodeが起動して開いてしまう.Xcodeは非常に高機能なプログラム開発ツールであるが,初心者がC言語の初歩を勉強する程度の作業を行うには大掛かり過ぎるので,CSE環境ではEmacsが起動するように調整している.

ローカルブートしている時もCSE環境と同じようにEmacsでC言語ソースプログラムを開くようにFinderを調整するには,以下の手順で行う.

  1. Finder上でC言語ソースプログラムのアイコンをどれか一つクリックして選ぶ(ダブルクリックして開かないように!)
  2. Finderの「ファイル」メニューから「情報を見る」を選択する.
  3. 表示されたウィンドウの「このアプリケーションで開く」にあるメニュー項目から選択する事で,そのアイコンが示すファイルを開くアプリケーションを指定できるので,Emacs.appを選択し,さらに「すべてを変更」ボタンをクリックする.これにより,全てのC言語ソースプログラムをFinder上で開く時にEmacsで開く事が出来るようになる.
  4. ウィンドウを閉じる.

C言語以外のプログラミング言語(例えばJava言語など)のソースプログラムも標準ではXcodeで開かれるが,Emacsで開くように変更したければ全く同じ手順で調整出来る.

C言語コンパイル練習

提出課題

 上のコンパイル練習の例題プログラムex2_1.cを元にして,これに修正を加えて,12+3,12−3,12×3,12÷3という4つの計算結果をそれぞれ画面表示するプログラム shisoku.c を作成し,そのソースプログラムをmoodle学習支援システムにて提出しなさい(各計算に用いる演算子は教科書2.3.2節を参照のこと).

尚,提出するのは「ソースプログラム」であり,各ソースプログラムのプログラムヘッダには各自の学生証番号と氏名を記入しておくこと.

ちなみに「ソースプログラムって何ですか?」という質問はしないでください.このページ内,及び,教科書にちゃんと書いてあります.

締切: 教員の指示による

基礎プログラミング演習Iの表紙ページへ戻る