プログラミング基礎I: 第1回

C言語プログラムの作成・コンパイル・実行、printf関数による標準出力を学びます。

講義スライド: 20190930prog.pdf

情報教育棟のPCでプログラミングするときの手順

  1. 個人のECCSアカウントでログインする。
  2. プログラムを入れておくディレクトリ(フォルダ)を作る。
  3. プログラムのソースコードを作成する
  4. コンパイルする
  5. 実行する
  6. 手順3-6を繰り返す
  7. 手順2で作ったディレクトリ(フォルダ)をUSBメモリやクラウド上にバックアップする

本講義用のディレクトリ(フォルダ)を作成する

  1. ターミナルを起動する
    • Finderから、アプリケーション > ユーティリティ > ターミナル
  2. ターミナル上で、デスクトップ(任意の場所で良い)に移動する
    $ cd Desktop
  3. prog(名前は任意)という名前のディレクトリを作成する
    $ mkdir prog
  4. 作成したディレクトリへ移動する
    $ cd prog

ソースコード "hello.c"の作成

  1. hello.cという名前のファイルを作成してemacs(その他のエディタでも良い)を起動する
    $ emacs hello.c
  2. 以下のソースコードを入力する
    #include <stdio.h>
    int main(void)
    {
    printf("Hello.\n");
    return 0;
    }
  3. 保存する
    C-x C-s
    C-xは、「Ctrlキーを押しながらxを押す」。C-x C-sは、「C-xを押した後にC-sを押す」。

コンパイル

コンパイルとは、プログラムが記述されたソースコードを、計算機で実行可能な機械語に翻訳すること。gccというコンパイラを使ってソースコードをコンパイルする。

$ gcc hello.c

上記のようにコンパイルすると、a.outという実行ファイルが生成される。

実行

実行する

$ ./a.out
  • ターミナルでは、ファイル名などを途中までタイプして、Tabキーを押すと補完ができる。

ターミナル上でよく使うコマンド

コマンド 説明 使い方の例
man マニュアルを表示する man cd (cdコマンドのマニュアルを表示)
cd ディレクトリを移動する cd dir(dirディレクトリに移動)
pwd 現在のディレクトリの場所を絶対パスで表示する pwd
ls ファイルやディレクトリの情報を表示する ls -l(現在のディレクトリに含まれるファイル情報のリストを表示)
mkdir ディレクトリを作成する mkdir dir(dirという名前のディレクトリを作成)
cp ファイルやディレクトリをコピーする cp a.txt a_copy.txt(a.txtをa_copy.txtという名前のファイルにコピーする)
rm ファイルやディレクトリを削除する rm a.txt(a.txtというファイルを削除する)
rmdir 空のディレクトリを削除する rmdir dir(dirという名前の空のディレクトリを削除する)
emacs emacs(エディタ)を起動する emacs a.txt(emacsを起動してa.txtという名前のファイルを開く(無ければ作る))
gnuplot gnuplot(グラフ描画ソフトウェア)を起動する gnuplot
fg 中断している仕事の復帰 fg

emacsでよく使うコマンド

コマンド 説明
C-x C-s ファイルをセーブする
C-x C-w 別名にしてファイルセーブ
C-x C-f ファイルオープン
C-x C-c エディタの終了
C-g 編集への復帰
C-z エディタの中断 (復帰はターミナルでfgコマンド)

課題

課題1

テキストのプログラム(hello.c、hello2.c、fahren.c)をエディタで入力、コンパイルして実行してください。

課題2

hello.cのprintf文で、試しに、\nの記号をなくすとどうなるでしょうか?

課題3

fahren.cの3行のprintf文に対して、各行の意味がわかるようにコメント(/* ○○○○ */)を挿入してください。

課題4

printf文の書式は色々あります。Googleなどでprintfを検索して確認してみてください。例えば、"%f""%d"に書き換えたらどうなるでしょうか?

課題5

fahren.cで3行にわたって表示される数値を小数点の位置を揃えて表示することを考えます。"is"の部分を揃えるには、printf文中の空白を調整すれば良いのですが、数値部分を数値にかかわらず小数点揃えにするにはどうしたら良いでしょうか?