今回からC言語プログラミングのトピックスに入ります.
今後の授業における評価方針は,授業中の作業成果,授業時間外で取り組む提出課題の成果,ペーパー試験の3つとなりますので,注意してください.
また,提出課題やペーパー試験は「抜き打ち」があります.心して「予習・復習・授業への集中」を心がけてください.
C言語は一般にコンパイル型プログラミング言語に分類され,その作成と実行には3つの段階がある.
".c"
で終わる約束になっているので,ソースプログラムを作成する時には注意すること.尚,ソースプログラムの事をソースコードと呼ぶことも多いので知っておこう.cc
が用意されている.本実習ではcc
コマンドの代わりに gcc
コマンドを用いるが機能的には全く変わりない.まず,ターミナルのウィンドウを一枚開き,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>
と入力すると,それが実行される.
注: プログラミングを学ぶには「根気」が必要である.なかなか上手く出来るようにならないが,間違いの原因を根気よく探して直すことが大切である.上手く出来ないのは,コンピュータが悪いのでなく自分自身の操作やプログラムの間違いに原因がある場合が殆どなので,常に自分自身が何か間違ってないかな?と自分自身を疑ってかかること.
L32
といったように)表示されている.或いは,Emacs上でM-x goto-line とタイプすると,カーソルを移動させる行番号を訊ねてくるから,エラーメッセージが表示されている行番号をタイプすると,その行へカーソルが移動する.その行より上にあるはずのエラー原因となっている行を探して修正した後,再度保存してからコンパイルをやり直す.現在のMacOS Xでは,exit()関数を使って終了するようにC言語プログラムを作成すると,コンパイル時にWaring (ウォーニング,警告)が発せられる.この警告はXcode付属のgccコンパイラの警告基準が厳しくなっているためなので,無視しても実害はないが気持ちのよいものではない.この警告が出ないようにするには,次のいずれかの対策方法がある.(教科書pp.13参照)
CSE環境では,FinderからC言語ソースプログラムのアイコンをダブルクリックして開くと,Carbon Emacsが起動するように調整されている.
しかし,ローカルブートした状態でXcodeが導入済みの場合,同じようにダブルクリックにてファイルを開こうとするとXcodeが起動して開いてしまう.Xcodeは非常に高機能なプログラム開発ツールであるが,初心者がC言語の初歩を勉強する程度の作業を行うには大掛かり過ぎるので,CSE環境ではEmacsが起動するように調整している.
ローカルブートしている時もCSE環境と同じようにEmacsでC言語ソースプログラムを開くようにFinderを調整するには,以下の手順で行う.
C言語以外のプログラミング言語(例えばJava言語など)のソースプログラムも標準ではXcodeで開かれるが,Emacsで開くように変更したければ全く同じ手順で調整出来る.
上のコンパイル練習の例題プログラムex2_1.c
を元にして,これに修正を加えて,12+3,12−3,12×3,12÷3という4つの計算結果をそれぞれ画面表示するプログラム shisoku.c を作成し,そのソースプログラムをmoodle学習支援システムにて提出しなさい(各計算に用いる演算子は教科書2.3.2節を参照のこと).
尚,提出するのは「ソースプログラム」であり,各ソースプログラムのプログラムヘッダには各自の学生証番号と氏名を記入しておくこと.
ちなみに「ソースプログラムって何ですか?」という質問はしないでください.このページ内,及び,教科書にちゃんと書いてあります.
締切: 教員の指示による