知能情報工学演習I(岩村担当分)

演習後半ではC言語をやります。 林 晴比古著の 「新C言語入門 ビギナー編」 を参考にします。

授業の内容、課題

  1. 6月 1日:プログラミング環境(テキスト1,2章)
  2. 6月 8日:変数とデータ型(3章) 、演算子(4章)
  3. 6月15日:コンソール入出力(6章) 、配列(3章)
  4. 6月22日:制御文1 (テキスト5章)
  5. 6月29日:制御文2(テキスト5章)
  6. 7月13日:関数(テキスト7章)
  7. 7月20日:配列(3章) 、応用プログラム

おまけ


  1. 6月1日
  2. 6月8日
  3. 6月15日
  4. 6月22日
  5. 6月29日
  6. 7月13日
  7. 7月20日

デバッガーgdbの簡単な使い方

Segmentation faultが発生するプログラム:aaa.c
#include <stdio.h>
 
int main(void) {
  int a[2];
  a[0] = 10;
  a[1] = 20;
  a[100000] = 30;
 
  printf("a[0] = %d\n", a[0]);
  printf("a[1] = %d\n", a[1]);
  printf("a[100000] = %d\n", a[100000]);
 
  return 0;
}
  1. 「-g」をつけてコンパイルする。
     gcc aaa.c -g
    
  2. 実行形式(この場合はa.out)を指定してgdbを実行する。
    gdb a.out
    
  3. 画面にgdbのメッセージと「(gdb)」というプロンプトが表示される。
    GNU gdb Red Hat Linux (6.0post-0.20040223.17rh)
    Copyright 2004 Free Software Foundation, Inc.
    GDB is free software, covered by the GNU General Public License, and you are
    welcome to change it and/or distribute copies of it under certain conditions.
    Type "show copying" to see the conditions.
    There is absolutely no warranty for GDB.  Type "show warranty" for details.
    This GDB was configured as "i386-redhat-linux-gnu"...Using host libthread_db library "/lib/tls/libthread_db.so.1".
     
    (gdb)
    
  4. runと打つと、プログラムが実行され、エラーの箇所で止まる。 この場合は7行目でSegmentation faultが起こったことがわかる。
    (gdb) run
    Starting program: /home/nt/tmi00113/unix/a.out
     
    Program received signal SIGSEGV, Segmentation fault.
    main () at aaa.c:7
    7         a[100000] = 30;
    (gdb)
    
  5. 変数の値を表示する「print」や、エラーの場所を特定する「where」などのコマンドを必要に応じて使う(今回は省略)。
  6. 終了するときは「quit」と入力する。 「The program is running. Exit anyway? (y or n)」と聞かれる場合は「y」と入力すると終了する。
     (gdb) quit
    The program is running.  Exit anyway? (y or n) y
    

10進数、8進数、16進数の対応表

10進数 8進数 16進数
0 0 0
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
6 6 6
7 7 7
8 10 8
9 11 9
10 12 A
11 13 B
12 14 C
13 15 D
14 16 E
15 17 F
16 20 10