コンピュータ演習(A)

Cプログラミング(1) プログラムの作成から実行まで


内容

0. 用語

C言語

GCC

Cygwin

1. プログラムの作成

  1. 今回の演習 C1 用のフォルダ作成
    • [マイドキュメント] (= [ライブラリ] → [ドキュメント]) を開く
    • 今日の授業用のフォルダ c1 (必ず半角) を作成
      • メニューの [新しいフォルダー] or フォルダ内で右クリック→[新規作成]→[フォルダ]
      • 名前は後から変えても良いし, 他のフォルダに移動させても良いが, 説明の都合上, 今はとりあえず c1 とする

  2. テキストエディタ TeraPad の起動
    • デスクトップに [TeraPad] のアイコンがあるかどうか見てみる
      なければ,
      [スタート] → [すべてのプログラム] → [04 Tool] → [TeraPad] を右クリックし,
      [送る] → [デスクトップ (ショートカットを作成)]
    • [TeraPad] のアイコンをダブルクリックして起動
    • [表示] → [編集モード] → [C/C++]

  3. プログラムの入力
    • 取り敢えず名前をつけて保存
      • [ファイル] → [名前をつけて保存]
      • [ライブラリ] → [ドキュメント] → [c1] に, ファイル名 c11.c (必ず半角) で保存
    • 次のようなプログラムを入力してみる
      • コピー&ペーストも可能だが, プログラムの入力に慣れるために, この通りに入力してみよ
      • 全て半角英数字で入力すること
      • 全角文字が入っているとコンパイル時にエラーになる (特に全角のスペースに注意)
      • 例 1.1

        c11.c
        #include <stdio.h>
        
        int main(void)
        {
        
          printf("Hello¥n");
        
          return 0;
        }
        

      • 茶色の部分以外は決まった書き方 (一種の「おまじない」)
      • #include <stdio.h> ... 標準の入出力 (standard I/O) を使用する
      • int main(void) ... { から } がプログラムの本体 (main)
      • printf("Hello¥n"); ... Hello と出力する (¥n は改行)
      • return 0; ... 終了して元に (OSに) 戻る; 0 は正常終了を表す
    • 入力が終わったら (作業が一段落したら) 上書き保存
      • フロッピーディスクのアイコンをクリック
      • [ファイル] → [上書き保存]
      • Ctrl+S
    • TaraPad は閉じないで最小化しておく (エラーがあったらまた修正しなければならないので)

2. Cygwin によるプログラムのコンパイルと実行

  1. Cygwin の起動
  2. c1 のフォルダ (ディレクトリ) に移動
      • Unix や Cygwin では, Windows のフォルダのことを「ディレクトリ (directory)」 と言う
      • $ 記号は, コマンドの入力待ちを表す (「プロンプト (prompt)」と言う)
    • cd c1 [Enter] と入力
      → ~/c1 と表示される (現在のディレクトリを表示している)
      • cd は "change directory" の略
      • Cygwin を起動したときのディレクトリを "home directory" という
      • 演習室の PC の設定では, home directory = マイドキュメントになっている
      • cd [Enter]だけ打ち込むと, home directory に戻る.

    • ls [Enter] と入力
      → c11.c が表示されれば OK. 表示されなければ, 助けを呼ぶ
      • ls は "list" の略で, 現在のディレクトリの内容一覧を表示する
    • ここで, Windows の [マイドキュメント] のフォルダ c1 を開いてみると, c11.c というファイルがあるはず
      • つまり, Cygwin のディレクトリは, Windows のフォルダは一対一に対応している

  3. プログラムのコンパイル
    • gcc c11.c [Enter] と入力
      → プログラムのコンパイルが行われる.
      • 入力したプログラムに間違いが無ければ, 何も表示されない
      • 間違いがあれば, エラーメッセージが表示されるので, 助けを呼ぶ
        間違いを TeraPad で修正して, 再度コンパイルする

    • ls [Enter] と入力
      → c11.c と a.exe が表示される.
      • a.exe がコンパイルの結果得られた実行可能な (機械語) プログラム

  4. プログラムの実行
    • ./a.exe [Enter] と入力
      → プログラムが実行されて, "Hello" と表示される (はず)
      • ./ は「現在のディレクトリを」意味し, ./a.exe は「現在のディレクトリにある a.exe」を意味する
      • 一般に, Windows では ".exe" は省略できるので, ./a [Enter] だけでもよい
      • ちなみに ../ は一つ上ののディレクトリを意味し, 一つ上のディレクトリに移動したければ, cd .. [Enter] というコマンドを入力する.

    • ここまで無事に終ったら, 一旦 TeraPad と Cygwin を閉じる.

3. プログラムの修正

課題 1.1
先程のプログラムを修正し, 日本語で 3 行程度のメッセージを出力するプログラムを作成せよ.

  1. 前に作ったプログラムを開く
  2. プログラムの修正
  3. コンパイルと実行
    • 先程と同様に, このプログラムをコンパイルし, 実行せよ.
    • この際, 同じコマンドを何度も打ち込むのは面倒
      • 上矢印カーソルキー (↑) を押すと, 前に打ち込んだコマンドが次々に表示される
      • 再実行したいコマンドが表示されたところで [Enter] を押す
      • ここでコマンドの修正も可能
    • また, コマンド入力の際に, ファイル名を全部打ち込むのは面倒
      • ファイル名は途中まで打ち込んで [Tab] を押すと, Cygwin のほうで補完してくれる
        例えば, gcc c [Tab] と打てば, 自動的に gcc c11.c にしてくれる

4. 計算をするプログラム

    次のプログラムを c12.c に入力して, コンパイル, 実行し, 正しい値が出力されることを確認せよ.

    例 1.2 y = ax+b を計算するプログラム

    ただし, /* から */ までの (灰色の) 部分は, 「コメント」なので, 入力しなくて良い
    c12.c
    #include <stdio.h>
    
    int main(void)
    {
      
      int a, b, x, y;  /* 変数 a, b, x, y が整数 (integer) であることを宣言 */
      a = -2; 
      b = 5; 
      x = 1; 
      y = a * x + b; 
      printf("x = %d のとき, y = %d x + %d の値は %d です¥n", x, a, b, y); 
      /* %d は10進数表示を意味し, 先頭から順に x, a, b, y の値が入る */
    
      return 0;
    }
    

課題 1.2 例 1.2 を書き換えて, 次のようなプログラム c12.c を作成せよ.

レポート課題 C1