システムプログラミングI(System Programming I)
本科選択・必修開設時期単位数授業形態担 当
情報電子必修3年後1講義重村哲至 山本孝子
【授業の概要】
4年の「システムプログラミングII」に続く科目である。2つの講義で、ユーザ(プログラマ)の視点から特定のオペレーティングシステムを深く理解し、機能を使いこなせるようになることを目的としている。前半となる3年では、まず、システムプログラミングに必須のC言語の学習から始める。次に、C言語を用いたUNIXシステムプログラミングを学ぶ。
【授業の進め方】
講義では、理論や概念だけでなく、実際に動作している具体的なオペレーティングシステムのシステムコールを詳しく解説する。具体的なオペレーティングシステムとしては UNIX を用いる。学習内容は、実際に UNIX コマンドやプログラムミングを通して動作を確認することが可能である。宿題や演習で実際のシステムを用い学習した内容を確かめることにより、より確実な知識とする。
【授業計画】 【授業項目】 【内 容】
1 回 C言語入門 Javaとの実行方式の違いと、変数名、変数型、printf等の基本事項を習う。次に、プログラムの入力、コンパイル、実行を実際に試してみる。[演習:hello world]
2 回 摂氏華氏対応表 C言語のプログラム例を、同じ目的の数種類のプログラム例から学ぶ。[演習:摂氏華氏対応表プログラムの改造]
3 回 文字入出力 getchar, putchar を用い文字単位の入出力を学ぶ。また、文字データの表記方法も学ぶ。[演習:バックスラッシュを出力するプログラム]
4 回 配列、文字列 Javaと比較しながら、C言語の配列について学ぶ。[演習:各文字の出現回数をカウントするプログラム]
5 回 関数 自分で関数を作る方法を学ぶ。値引数の仕組みについて学ぶ。また、文字列の構造と関数引数での扱いについて学ぶ。[演習:入力行の左右を逆に印刷するプログラム]
6 回 外部変数、ポインタ 外部変数、自動変数の違い。ポインタとそれを応用した変数引数(ポインタ渡し)について学ぶ。[演習:複数の値(商と余り)を返す関数]
7 回 構造体 ディスプレイ上の座標を表す構造体を例に、構造体宣言、構造体変数、構造体ポインタ、構造体型関数、構造体型引数等を学ぶ。[演習:構造体の値渡し、ポインタ渡し]
8 回 中間試験 C言語の文法やプログラムの書き方に関する試験を行う。
9 回 動的なデータ領域の確保 malloc 関数、bzero 関数、sizeof 演算子について学ぶ。[演習:色々な型のバイト数を調べる。Javaのnewのような動作をする関数を作る]
10 回 コマンド行引数 argc、argvの使用方法を学ぶ。[演習:echoコマンドの作成]
11 回 高水準入出力 fopen、fgetc、fputc、fclose等を学習する。[演習:高水準I/Oを用いたcpコマンドの作成]
12 回 システムコールと低水準入出力 システムコールとは何か、open、read、write、closeシステムコールを例に学ぶ。
13 回 演習 低水準入出力を用いてcpコマンドを作成する。また、高水準版と性能の比較をする。
14 回 エラー処理 システムコールでエラーが発生したときのプログラム内での処理手順と、Usageメッセージについて学ぶ。[演習:cp コマンドの改良]
期末試験 学習したシステムコールを使用できるようになったか確かめる。
15 回 答案返却など 期末試験の解答を解説する。
【到達目標】UNIXコマンドを作成できるようになる。システムコールを使用したプログラムが記述できるようになる。
【徳山高専学習・教育目標】B1【JABEE基準1(1)】
【評価法】中間試験、期末試験の平均点を全体の[80%]、宿題・演習で作成したプログラムとレポートの評価を[20%]とする。
【テキスト】プログラミング言語C第2版、B.W.カーニハン他、共立出版
【関連科目】本 科:基礎プログラミング(1年)、プログラミング(2年)、システムプログラミングII(4年)、オペレーティングシステムI、II(4,5年)