プログラミング技法I

科目基礎情報

学校 木更津工業高等専門学校 開講年度 令和06年度 (2024年度)
授業科目 プログラミング技法I
科目番号 d0040 科目区分 専門 / 必修
授業形態 演習 単位の種別と単位数 履修単位: 1
開設学科 電子制御工学科 対象学年 2
開設期 前期 週時間数 2
教科書/教材 内容に合わせて作成した講義資料を配布する;(補助教科書)林晴比古著、『明快入門C』、ソフトバンククリエイティブ、2013年、1900円(+税)、ISBN-13: 978-4797373264
担当教員 関口 明生

到達目標

卒業後にソフトウェアを作成または利用する業務を行う基礎として、プログラミングの基礎的知識と技能を身に付けることが目標である。目安として:
□ フローチャートで処理の順序を表現することができること。
□ ソースコードにインデントやコメントを用いてプログラムを作成できること。
□ 基礎的なC言語のプログラムの動作を説明できること。
□ 構造化プログラミングにおける順次構造・分岐構造・反復構造の構造化文を、C言語において正しく記述できること。

ルーブリック

理想的な到達レベルの目安標準的な到達レベルの目安未到達レベルの目安
処理内容を順序立てて扱う能力処理の順序を、正しく分かりやすいフローチャートで表現することができる。処理の順序を、フローチャートで表現することができる。処理の順序を、フローチャートで表現することができない。
他者と協調してプログラミングする基礎能力コメントの内容や変数名なども分かりやすいプログラムを作成することができる。ソースコードにインデントやコメントを用いてプログラムを作成することができる。ソースコードにインデントやコメントを用いてプログラムを作成することができない。
動作を理解して改良・デバッグする能力基礎的なC言語のプログラムの動作を説明することができるだけではなく、改良するための工夫ができる。基礎的なC言語のプログラムの動作を説明することができる。基礎的なC言語のプログラムの動作を理解することができない。
処理構造を系統立てて扱う能力 構造化プログラミングにおける順次構造・分岐構造・反復構造の構造化文を、C言語において正しく適切に工夫して記述できる。構造化プログラミングにおける順次構造・分岐構造・反復構造の構造化文を、C言語において正しく記述できる。 構造化プログラミングにおける順次構造・分岐構造・反復構造の構造化文の違いが説明できない。

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

準学士課程(R5までのDP) R5までDP_1 説明 閉じる
準学士課程(R5までのDP) R5までDP_4 説明 閉じる

教育方法等

概要:
コンピュータを用いてソフトウェアを作るためのプログラミングの基礎的知識と技能を、C言語を用いて学び演習する。
より具体的にはエディタ・UNIX操作などの基礎的な操作方法から、順次構造・分岐構造・反復構造・関数・ファイル操作・各種基礎的アルゴリズムなどを身につける。
授業の進め方・方法:
スライドを用いた講義をなるべく手短に受けた後で、演習課題によって学習内容を身に付ける。課題は、授業内容を十分に理解すればするほど、取り組みやすい。課題の内容を常に十分理解して、遅延や未提出なく出すことができれば、試験勉強に多くの時間を割かなくてもよいと考えられる。
原則毎回、授業用プリントを配布する。このプリントを教科書代わりとして授業を進める。このため、各自でA4のファイルを用意して整理しておくこと。もしも整理ができないと、本科目を履修する難易度を自ら高くすることになる。授業内容を身につけて単位という第3者評価をもらうかどうかは一人一人の判断に委ねられており、教員はこれを支援することができても強制することができないことは、ほかの科目と同様である。
補助教材「明快入門C」は、辞書あるいはハンドブックのように使用する。このため、人によって授業で用いることは多くないかもしれないが、自習や本科目履修以後にも用いることができる。
質問があれば、授業時間内や授業時間外に積極的に担当教員まで申し出ること。
注意点:
プログラミングの知識と技能は、実験実習・情報処理・制御工学・卒業研究ほか多くの専門科目の礎の一つである。すなわち、低学年の他科目や実験実習Iで実施したタッチタイピングと同様に、本科目が身につかないと卒業に支障をきたすことがある。
したがって、分からない個所があれば、積極的に質問するか、補助教科書などで調べること。卒業後の君が余計な苦労をしないために、タッチタイピングにより授業に臨むこと。本科目を習得して勉学を重ねると、たとえば簡単なゲームを作ることも可能となる。

授業の属性・履修上の区分

アクティブラーニング
ICT 利用
遠隔授業対応
実務経験のある教員による授業

授業計画

授業内容 週ごとの到達目標
前期
1stQ
1週 【プログラミングの技と法】
「フローチャート」
○シラバスの説明
○ガイダンス
○プログラミングの歴史
○構造化プログラミング
○フローチャート
☆課題(構造化プログラミング・フローチャート)
□プログラミングの技法をなぜ身に付けるべきであるのか考える。
□プログラミングの歴史的経緯を知る。
□【特に重要】プログラムの流れを順次構造、分岐構造、反復構造の組み合わせで表すことができる。
□フローチャートを正しい描き方で描く事ができる。
□コンパイラとインタプリタの違いを説明できる。
2週 「UNIX(入門編)」
○2進数・10進数・16進数・ASCII文字
○UNIX環境の操作方法
○エディタemacsの操作方法
○簡単なプログラムの作成
□コンピュータで整数や文字がどのように表されているか、知人や家族に説明できる。
□UNIX環境を基本的なコマンドで操作することができる。
□emacsでテキストファイルを編集することができる。
□キーボード操作における初歩的なミス(Caps LockやInsertなど)に対処することができる。
3週 【順次構造】
「C言語入門」
○プログラム作成の手順
○基本的なプログラムの作成
○コンパイラgccのはたらき
☆課題(適切な書式、画面表示)
□ソースファイルをコンパイル・デバッグして実行ファイルを作成する手順を実施できる。
□【特に重要】プログラムを適切な書式(インデント・コメント)で書くことができる。
□ソースファイルからどのような仕組みで実行ファイルが作成されるか、説明できる。
4週 「整数・文字と計算」
○整数や文字を表示する方法
○変数を使って計算する方法
○整数・文字のデータ型とバイト数
○変数のもつ値とアドレス
○数値や文字をキーボード入力する方法
☆課題(printf()、scanf()、変数、整数型、アドレス、sizeof演算子)
□表示したい内容に合わせてprintf()の書式を使い分けることができる。
□キーボード入力したい内容に合わせてscanf()の書式を使い分けることができる。
□整数と文字のデータ型の種類と、表せる範囲を理解する。
□整数型の変数と基礎的な演算子を使ったプログラムを作成することができる。
□【特に重要】メモリ上に割り当てられている変数のアドレス(番地)を求めることができる。
5週 「浮動小数点数と計算」
○固定小数点数と浮動小数点数
○丸め誤差
○浮動小数点数のデータ型とバイト数
○実数と整数の割り算にご用心
○キャスト演算子を用いた型変換
○定数に名前を付ける(constと#define)
☆課題(printf()、scanf()、変数、浮動小数点数型、定数、整数÷整数)
□浮動小数点数型の変数を用いて、実数を扱うプログラムを作成することができる。
□【特に重要】整数型と浮動小数点数型の違いを正しく理解して扱うことができる。
□キャスト演算子を用いて型変換を行うことができる。
□定数に名前を付ける二つの方法を使うことができる。
6週 【分岐構造】
「if-else文」
○if文・if-else文(条件式による分岐構文)
○条件式
○関係演算子・等価演算子・論理演算子
○演算子の優先順位
○time.hでUNIX時間を扱う
☆課題(if-else文、条件式、素数、★エラストテネスのふるい、割り算のあまり)
□if-else文による分岐構文を用いたプログラムを作成することができる。
□【特に重要】関係演算子・等価演算子・論理演算子を用いて適切な条件式を記述することができる。
□stdio.h以外のヘッダファイルを用いることで、利用可能な関数が増えることを理解する。
□素数を判定するための基礎的なアルゴリズムの仕組みを説明することができる。
7週 「演習」 □いままでの学習内容について身につけておりそれを活用できることを、自己点検することができる。
8週 「前期中間までの確認問題」
○プログラミング関連の英単語
○プログラミングに関する基礎用語
○基本操作・プログラム作成・デバッグ
○フローチャート
○if文、if-else文
いままでの内容を説明あるいは実践できる。特に:
□処理の順序をフローチャートで表現することができる。
□基礎的なC言語のプログラムの動作を説明することができる。
2ndQ
9週 ○前期中間までの確認問題の解答と解説 □試験で間違った内容から、何に集中して復習すれば効率的に知識・技術を身に付けることができるか、前向きに取り組むことができる。
10週 「switch文」
○switch文(整数・文字の値による分岐構文)
○if文とswitch文の違い
○stdlib.hで疑似乱数を扱う
○じゃんけんゲームのプログラム
○goto文
☆課題(switch文、break、default)
□switch文による分岐構文を用いたプログラムを作成することができる。
□goto文の使用が基本的に推奨されない理由を理解する。
11週 【反復構造】
「while文」
○while文(条件式による反復構文)
○インクリメント/デクリメント演算子
○break文とcontinue文
○do-while文
☆課題(while文、定数、乱数、UNIX時間、条件式、break、continue、ゲーム)
□while文による反復構文を用いたプログラムを作成することができる。
□break文とcontinue文の違いを理解して使い分けることができる。
□定数、条件式、乱数、UNIX時間など、以前に学習した内容が身についている。
12週 「for文」
○for文(C言語でよく使われる反復構文)
○for文と浮動小数点数
○C言語の分岐構文・反復構文のまとめ
☆課題(for文、定数、★最大・最小・合計・平均を求めるアルゴリズム)
□【特に重要】for文による反復構文を用いたプログラムを作成することができる。
□for文のカウント変数として浮動小数点数を用いてはいけない理由を理解する。
□【特に重要】最大・最小・平均を求めるための基礎的なアルゴリズムの仕組みを説明することができる。
13週 「数学関数の使用」
○math.hで数学関数を扱う
○無限(inf)と非数(nan)
☆課題(for文、定数、三角関数、度とラジアン)
□数学関数を用いたプログラムを作成できる。
□for文を用いて、表に近い形式で計算結果を表示することができる。
14週 「演習」 □いままでの学習内容について身につけておりそれを活用できることを、自己点検することができる。
15週 「前期定期試験」
○プログラミング関連の英単語
○プログラミングに関する基礎用語
○条件式の書き方
○プログラム作成
いままでの内容を説明あるいは実践できる。特に:
□構造化プログラミングにおける順次構造・分岐構造・反復構造の構造化文を、C言語において正しく記述できる。
16週 ○前期定期試験の解答と解説 □試験で間違った内容から、何に集中して復習すれば効率的に知識・技術を身に付けることができるか、前向きに取り組むことができる。

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

分類分野学習内容学習内容の到達目標到達レベル授業週
基礎的能力工学基礎情報リテラシー情報リテラシーコンピュータのハードウェアに関する基礎的な知識を活用できる。1前4
同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることを知っている。2前12
与えられた基本的な問題を解くための適切なアルゴリズムを構築することができる。2前12
任意のプログラミング言語を用いて、構築したアルゴリズムを実装できる。2前12
専門的能力分野別の専門工学機械系分野機械設計標準規格の意義を説明できる。1
ねじ、ボルト・ナットの種類、特徴、用途、規格を理解し、適用できる。1
歯車列の速度伝達比を計算できる。2
力学荷重が作用した時の材料の変形を説明できる。1
応力とひずみを説明できる。2
情報処理プログラムを実行するための手順を理解し、操作できる。3前3
定数と変数を説明できる。3前5
整数型、実数型、文字型などのデータ型を説明できる。3前4,前5
演算子の種類と優先順位を理解し、適用できる。3前6
算術演算および比較演算のプログラムを作成できる。3前4,前5,前6
データを入力し、結果を出力するプログラムを作成できる。3前4
条件判断プログラムを作成できる。3前6,前10
繰り返し処理プログラムを作成できる。3前11,前12
計測制御国際単位系の構成を理解し、SI単位およびSI接頭語を説明できる。3
自動制御の定義と種類を説明できる。2
フィードバック制御の概念と構成要素を説明できる。1
電気・電子系分野電気回路オームの法則を説明し、電流・電圧・抵抗の計算ができる。3
キルヒホッフの法則を用いて、直流回路の計算ができる。2
電子回路ダイオードの特徴を説明できる。1
電力直流機の原理と構造を説明できる。1
計測SI単位系における基本単位と組立単位について説明できる。3
情報系分野プログラミング変数の概念を説明できる。3前4,前5
データ型の概念を説明できる。3前4,前5
代入や演算子の概念を理解し、式を記述できる。3前4,前5
制御構造の概念を理解し、条件分岐を記述できる。3前6,前10
制御構造の概念を理解し、反復処理を記述できる。3前11,前12
プロシージャ(または、関数、サブルーチンなど)の概念を理解し、これらを含むプログラムを記述できる。2前3,前13
与えられた問題に対して、それを解決するためのソースプログラムを記述できる。2前7,前14
与えられたソースプログラムを解析し、プログラムの動作を予測することができる。2前7,前14
ソフトウェア生成に必要なツールを使い、ソースプログラムをロードモジュールに変換して実行できる。3前7,前14
主要な言語処理プロセッサの種類と特徴を説明できる。3前1
ソフトウェア開発に利用する標準的なツールの種類と機能を説明できる。3前1
要求仕様に従って、いずれかの手法により動作するプログラムを設計することができる。3前7,前14
要求仕様に従って、いずれかの手法により動作するプログラムを実装することができる。3前7,前14
要求仕様に従って、標準的な手法により実行効率を考慮したプログラムを設計できる。2前7,前14
要求仕様に従って、標準的な手法により実行効率を考慮したプログラムを実装できる。2前7,前14
ソフトウェアアルゴリズムの概念を説明できる。2前12
与えられたアルゴリズムが問題を解決していく過程を説明できる。2前12
同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることを説明できる。2前12
システムプログラムコンパイラの役割と仕組みについて説明できる。3前1
情報数学・情報理論コンピュータ上での数値の表現方法が誤差に関係することを説明できる。3前5,前12
その他の学習内容オームの法則、キルヒホッフの法則を利用し、直流回路の計算を行うことができる。2
トランジスタなど、ディジタルシステムで利用される半導体素子の基本的な特徴について説明できる。1

評価割合

試験発表相互評価課題と態度ポートフォリオその他合計
総合評価割合50005000100
基礎的能力0000000
専門的能力50005000100
分野横断的能力0000000