プログラミング言語

科目基礎情報

学校 熊本高等専門学校 開講年度 平成28年度 (2016年度)
授業科目 プログラミング言語
科目番号 0003 科目区分 専門 / 必修
授業形態 授業 単位の種別と単位数 履修単位: 2
開設学科 人間情報システム工学科 対象学年 3
開設期 通年 週時間数 2
教科書/教材 林晴比古,新訂 新C言語入門 シニア編,ソフトバンククリエイティブ社
担当教員 大隈 千春

到達目標

プログラミング言語の一つであるC言語に習熟し,構造化プログラミング技法に心がけ,よりよいプログラムが書けるようになることを目標とする.ライブラリ関数の挙動や制御構造の概念を理解して,与えられた問題を解決する方法を設計してプログラムで実現できるようになる.基本的なアルゴリズムとして探索や整列に関するアルゴリズムなどを学び,効率も考慮したプログラムの作成に配慮できるようになる.

ルーブリック

理想的な到達レベルの目安標準的な到達レベルの目安未到達レベルの目安
プログラミングの基本構造化プログラミングにおける注意すべき点を説明でき,配慮したプログラムを作成できる. 関数や関数の引数を利用して計算結果を関数の外側に伝えることが効率的にできる.構造化プログラミングにおける注意すべき点を説明できる. 関数や関数の引数を利用して計算結果を関数の外側に伝えるプログラムを作成できる.構造化プログラミングにおける注意すべき点を理解できない. 関数や関数の引数を利用したプログラムを作成できない.
文字・文字列・ファイル処理文字・文字列・ファイルについて説明でき,文字と文字列処理標準関数を利用したプログラミングが的確にできる. ユーザーインターフェースにも配慮して使いやすいプログラムを作成できる.文字・文字列・ファイルについて説明でき,文字と文字列処理標準関数を利用したプログラミングができる. ユーザーインターフェースに配慮したプログラムを作成できる.文字・文字列・ファイルについて説明でき,文字と文字列処理標準関数を利用したプログラミングができない. ユーザーインターフェースに配慮することができない.
構造体・チェーン構造体の宣言や構造体型の変数の種々の宣言方法,構造体の初期化と入出力とメンバの参照について理解できる. 自己参照構造体の意味を理解できる.静的チェーンや動的チェーンを生成操作した応用プログラムを作成できる.構造体の宣言や構造体型の変数の基本的な宣言方法,構造体の初期化と入出力とメンバの参照について理解できる. 自己参照構造体の意味を理解できる.静的チェーンや動的チェーンを生成操作することができる.構造体の宣言や構造体型の変数の基本的な宣言方法,構造体の初期化と入出力とメンバの参照について理解できない. 自己参照構造体の意味を理解できない.
再帰再帰の意味と仕組みを理解でき,再帰関数を用いたプログラミングができ,再帰関数を効果的に用いることができる再帰の意味と仕組みを理解でき,再帰関数を用いたプログラミングができる.再帰の意味と仕組みを理解できない.
アルゴリズム理解問題を解決するための考え方を整理することができ,それを解決する基本的なアルゴリズムを理解することができ,応用的なプログラムに適用することができる.問題を解決するための考え方をすることができ,それを解決する基本的なアルゴリズムを理解することができ,プログラムの挙動を理解できる.授業内で学習するアルゴリズムの挙動を理解することができない.

学科の到達目標項目との関係

本科(準学士課程)での学習・教育到達目標 2-1 説明 閉じる
本科(準学士課程)での学習・教育到達目標 3-2 説明 閉じる

教育方法等

概要:
2年次「情報処理」で学習したプログラミング言語C言語についてさらに習熟する.新たに構造的なデータ(配列)や動的な変数(構造体とポインター)の取り扱い方,関数の組み方と使い方,再帰などのプログラミング手法を学習し,探索や整列など基本的なアルゴリズムを学び,簡単な実技演習を通して自力でプログラムが作成できるようになる.プログラミング言語は,C言語とする.構造的プログラミング技法の習得にも心がけ,よりよいプログラムが書けるようになる.
授業の進め方・方法:
本科目は,2年生「情報処理」に続く科目である.プログラミング言語はC言語とし,プログラミングは主にUNIX環境で行う.本科目では講義主体で進めるが,簡単な演習を通じて実際のプログラムの挙動を確認しながら内容理解を深める.前期には2年次の学習内容の定着の確認を含め,その後新たな内容として構造体や自己参照構造体,ファイルの取り扱いなどを学ぶ.
注意点:
本科目は2単位であり規定授業時数は60時間である。
試験は,筆記による試験と一定の期間を定めて実技課題による試験を行う.
授業内で行う演習については,期限内に報告書を提出する.

授業計画

授業内容 週ごとの到達目標
前期
1stQ
1週 2年学習内容の確認
2年時に学習した内容を確認し,各自が自身の学習状況を把握できる.
2週 関数(1)
関数の作り方(定義)と利用(呼び出し),関数の値引数と戻り値,関数のポインター引数と配列引数を利用して計算結果を関数の外側に伝える方法が応用できる.
3週 関数(2)
前週に同じ
4週 関数(3) 前週に同じ
5週 文字・文字列(1) 文字と文字列処理関数の作り方,文字列配列(2次元文字配列)の定義と宣言,入出力関数(文字列配列引数),文字列配列における探索と整列についてプログラミングできる.文字と文字列処理標準関数の利用できる.
6週 文字・文字列(2)
前週に同じ
7週 中間試験
8週 中間試験の解説
2ndQ
9週 配列(1)-整列アルゴリズム 整列アルゴリズム(選択ソートやバブルソート)の挙動や時間計算量などによる違いを理解し,プログラムへの適用を理解できる.
10週 配列(2)-整列アルゴリズム 前週に同じ
11週 配列(3)-整列アルゴリズム 前週に同じ
12週 配列(4)-探索アルゴリズム 探索アルゴリズム(番兵や,二分探索)の挙動を理解し,プログラムへの適用ができる.
13週 配列(5)-探索アルゴリズム 前週に同じ
14週 配列(6)-探索アルゴリズム 前週に同じ
15週 コマンドライン コマンドライン引数を利用したプログラムを作成できる.
16週 定期試験の解説
後期
3rdQ
1週 ファイル処理(1) ファイルに対する入出力を含むプログラムを書ける
2週 ファイル処理(2) 前週に同じ
3週 ファイル処理(3) 前週に同じ
4週 構造体(1) 構造体の考え方,構造体の宣言と構造体型の変数のいろいろな宣言方法,構造体の初期化と入出力とメンバの参照について理解できる.構造体を関数引数としての受け渡し,入れ子の構造体の応用ができる.
5週 構造体(2) 前週に同じ
6週 構造体(3) 前週に同じ
7週 中間試験
8週 中間試験の解説
4thQ
9週 自己参照構造体(1) 自己参照構造体の意味を理解できる.自己参照構造体を用いて静的チェーンについて理解できる.また,チェーンを作成するにおける動的なメモリを割り当て,動的チェーンを組み立て,動的チェーンを操作する関数をプログラミングができる.
10週 自己参照構造体(2)-チェーン 自己参照構造体を用いた単方向チェーン,双方向チェーンの構造を理解でき,実装できる.
11週 自己参照構造体(3)-チェーン 前週に同じ
12週 自己参照構造体(4)-チェーン 前週に同じ
13週 再帰(1) 再帰の意味と仕組みを理解でき,再帰関数を用いたプログラミングができる.
14週 再帰(2) 前週に同じ
15週 再帰(3) 前週に同じ
16週 定期試験の解説

モデルコアカリキュラムの学習内容と到達目標

分類分野学習内容学習内容の到達目標到達レベル授業週
専門的能力分野別の専門工学情報系分野プログラミング変数とデータ型の概念を説明できる。2前1,前5,前6,前7,前9,前14,後1,後7,後8
代入や演算子の概念を理解し、式を記述できる。2前1
制御構造の概念を理解し、条件分岐や反復処理を記述できる。2前1,前5,前6,前7,前9,後12
プロシージャ(または、関数、サブルーチンなど)の概念を理解し、これらを含むプログラムを記述できる。2前2,前3,前4
与えられた問題に対して、それを解決するためのソースプログラムを記述できる。2前6
ソフトウェア生成に必要なツールを使い、ソースプログラムをロードモジュールに変換して実行できる。2前1
主要な言語処理プロセッサの種類と特徴を説明できる。2前1
ソフトウェア開発に利用する標準的なツールの種類と機能を説明できる。2後1
プログラミング言語は計算モデルによって分類されることを説明できる。2
主要な計算モデルを説明できる。2
要求仕様に従って、標準的な手法により実行効率を考慮したプログラムを設計できる。3前9,前10,前13
ソフトウェアアルゴリズムの概念を説明できる。2前9,前10,前11,前12,前13,後14
与えられたアルゴリズムが問題を解決していく過程を説明できる。2前9,前10,前11,前12,前13
同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることを説明できる。2前9,前10,前11,前12,前14,前15
時間計算量や領域計算量などによってアルゴリズムを比較・評価できることを理解している。2前9,前10,前11,前12,前14,前15
整列、探索など、基本的なアルゴリズムについて説明できる。3前9,前10,前11,前12,前13,前14,前15

評価割合

筆記試験実技課題演習合計
総合評価割合602020100
基礎的能力30101050
専門的能力30101050