2025 年度 プログラミング演習1,2

基本情報

  • 科目名: プログラミング演習1,2 (Exercises on Programming1, 2)

  • 区分: 専門科目

  • 講義番号:2025098404(プログラミング演習1)2025098405(プログラミング演習2)

  • 担当: 原直,後藤佑介,魏博,上野史,小林諭,神保秀司

  • 主な対象: 情電数系(情報工学コース) 2年次生 / 情報工学先進コース 2年次生

  • 学期: 第1学期(プログラミング演習1),第2学期(プログラミング演習2)

  • 時限: 水曜1,2,3限

  • 講義室: 工学部4号館 5階 プログラミング演習室1 および プログラミング演習室2

  • 種別: 必修

  • 単位数: 各1単位,計2単位

  • 教科書: B.W. カーニハン/D.M. リッチー著 「プログラミング言語C」

  • 概要:本演習では,C言語そのものについて一通りの文法知識を持つ者を対象に,より実用的なプログラムの作成を通して,実践的なプログラミングの演習を行う.その際,ポインタや構造体といった,C言語において難解とされる項目,プログラム全体の組み立て方,よく利用されるアルゴリズムとデータ構造を使ったプログラミングの修得に重点を置く.

    具体的には,名簿管理プログラムを作成する中で,以下について体験的に学習する.

    1. プログラムの組み立てかた

    2. 文字/文字列,配列/ポインタ,構造体の取り扱い

    3. ソート,サーチなどのアルゴリズムとデータ構造

    4. テストとデバッグの手法

    受講者として想定しているのは,C言語の文法に関する基本的な知識を持ち,数十行程度の簡単なプログラムが作成できる者である.

単位と試験について

  1. 各演習について,レポート,試験もしくは口頭試問の成績,及び毎回の提出物で総合的に判断する.

  2. レポートの締め切りは,講義中で指示する.

  3. レポート未提出の場合,口頭試問の受験を認めない.

  4. 各演習について,レポート提出前後にプログラムの動作確認をおこなう.

  5. 各演習について,レポート提出後の講義時間中に口頭試問をおこなう.

演習内容

詳細は,以下に掲載する演習課題説明資料 (p2-theme-all.pdf) を読むこと.

重要な講義資料

その他にも (Moodle) にのみ掲載されている資料もある.担当教員の指示をよく聞いておくこと.

課題プログラム

以下の仕様を満たす名簿管理プログラムを作成しなさい.

  • 標準入力から「ID,氏名,誕生日,住所,備考」からなるコンマ区切り形式(CSV形式)の名簿データを受け付けて,それらをメモリ中に登録する.

  • ただし,%で始まる入力行はコマンド入力と解釈し,登録してあるデータを表示したり整列したりする.以下に実装すべきコマンドを示す.詳細な仕様は必ずPDFを参照すること.

    コマンド

    意味

    %Q

    終了(Quit)

    %C

    登録件数などの表示(Check)

    %P n

    先頭からn件表示 (Print)

    %R file

    fileから読み込み(Read)

    %W file

    fileへ書き出し(Write)

    %F word

    wordを検索(Find)

    %S n

    データをn番目の項目で整列(Sort)

課題プログラムの作成例 (db-sample; バイナリ)をもとに各コマンドの動作や表示方法を参考にしなさい.また,必要ならテスト用にこちらのサンプルデータ (sample.csv)を使用しなさい.

レポート

プログラミング演習1,プログラミング演習2で,それぞれレポート課題を設定している.

  1. 各レポートの章立てや執筆要領については,演習課題説明資料 (p2-theme-all.pdf)を熟読すること.

  2. レポート作成に当たっては,所定のテンプレートを使用すること. 2025.4.12追記

  3. レポート作成にあたって,教育用計算機のページの以下のページ群も読むこと.

  4. レポートは,MoodleからPDF形式で締め切りまでに提出すること.

口頭試問

各演習の最終回(通常,第7回)に,口頭試問をおこなう.

詳細はMoodle,あるいは,講義中に口頭で説明する.

練習課題とその解説

レポート作成のための練習課題を以下に示している.講義では,これら練習課題を順番に解きながら解説を加える.

全練習を終えることで課題プログラムを作成できるように意図している.いくつかの練習課題については,講義時間中に提出が求められることがあるので指示に従うこと.

講義日程(予定)

進捗等により,変更の可能性がある.

プログラミング演習1

日(1ー3限)

内容

備考

1

4月09日(水)

課題説明(1),C言語とLaTeXの復習

2

4月16日(水)

C言語基礎(1): ポインタと配列

3

4月23日(水)

C言語基礎(2): 標準入出力,型変換,構文解析の基本

4

4月30日(水)

C言語基礎(3): 構造体の配列,構造体へのポインタ

※a

-

5月07日(水)

授業なし(火曜講義日のため)

5

5月14日(水)

課題説明(2),課題プログラム実装(1): 仕様に基づく設計と実装

6

5月21日(水)

課題プログラム実装(2): 効率的なプログラムの動作確認手法

※b

7

5月28日(水)

試問,達成度確認,期末レポート修正

-

6月04日(水)

授業なし(試験期間中のため)

  • ※a 第5回の前日18:30 レポートA 提出期限(予定.確定日時はMoodle参照のこと)

  • ※b 第7回の前日18:30 レポートB 提出期限(予定.確定日時はMoodle参照のこと)

プログラミング演習2

日(1ー3限)

内容

備考

1

6月11日(水)

課題説明(3),検索機能(%F)の実装

2

6月18日(水)

ファイル操作機能(%R, %W)の実装(1): ファイルからの入力

3

6月25日(水)

ファイル操作機能(%R, %W)の実装(2): ファイルへの出力

※c

4

7月02日(水)

整列機能(%S)の実装(1): 整数と文字列のソート

5

7月09日(水)

整列機能(%S)の実装(2): 構造体のソート

6

7月16日(水)

独自コマンドの実装,プログラムの見直し,達成度確認 (1/2)

※d

7

7月23日(水)

試問,達成度確認 (2/2),期末レポート修正

-

7月30日(水)

授業なし(補講日)

-

8月06日(水)

授業なし(試験期間中のため)

  • ※c 第4回の前日18:30 小レポート 提出期限(予定.確定日時はMoodle参照のこと)

  • ※d 第6回の翌々日12:35 期末レポート 提出期限(予定.確定日時はMoodle参照のこと)

連絡先

Moodleを確認のこと