情報システム・セキュリティ (CSSS) コース/情報通信 (ICT) コース向の「プログラミング」の情報を掲載します。 (シラバス)
(02/09 New!) 2021 年度期末テスト問題(ペーパー) 2021 年度期末テスト解答例、
(01/26 New!) 期末テスト過去問 (ペーパー)、 期末テスト過去問 (オンライン)、 同解答例、
(11/17)
中間テスト過去問 (ペーパー)、
中間テスト過去問 (オンライン)、
同解答例、
cl
コマンドは大抵の場合、ソースファイルの文字コードが、UTF-8 や Shift_JIS
で問題ないですが、たまに文字化けしたり、不具合が起こることがあります。
そういう場合は、BOM 付きの UTF-8 で保存してください。
(BOM 付き、BOM なしにかかわらず)UTF-8 で保存したソースファイルをコンパイルして実行するとき、 出力される文字列が文字化けすることがあります。これは、 コマンドプロンプトのデフォルトの文字コードが Shift_JIS になっているのに、プログラムは UTF-8 で出力しているためです。
コンパイラーによって、日本語の文字列を Shift_JIS に変換しているもの(cl
? など)と UTF-8 のままにするもの(gcc
など)に別れるようです。
文字化けする場合は、次のコマンドを実行してコマンドプロンプトの文字コードを UTF-8 に変更してください。(▷
はプロンプトです。)
▷ chcp 65001
逆にコマンドプロンプトの文字コードを Shift_JIS に戻すときは次のコマンドを実行してください。
▷ chcp 932
一旦、文字化けした変な文字を表示すると、 コマンドプロンプト自体の状態が変になってしまうことがあるので、 念のため、コマンドプロンプトを開き直してください。
WebCLint … C 言語初学者向けの静的解析(インデンテーションのチェックなど)用ツールです。 (ページが落ちているときは連絡を下さい。)
「プログラミング」の Web ページは Firefox で確認しているので、Firefox で閲覧してください。
(← これ以前のお知らせの開閉)
演習科目であるため、全回の出席を前提とする。毎週の課題(30%)、小テスト(クイズ)と中間試験 (30%)、期末試験(40%)で採点し、授業の目標達成が確認できた者に単位を認定する。
なお、合格/不合格の判定については、単純な加算で 60 点以上を合格とするが、 秀・優・良・可の判定については、割合を考慮して調整をすることがある。
演習時間(通常、金曜日 4限)内は、原則として自分の力で解く。(TA・教員に聞くのは良い。)
(ただし、解いている問題に特有ではない C 言語一般に関する質問などは許容範囲とする。)
なお、一部の事前に公開した課題は、演習時間開始 10 分後を締切とすることがある。
演習時間終了後は、人に相談して解いても良い。 (ただし人の解答のコピペは絶対禁止(コピーさせた側も同罪))
たとえ演習終了後でも、問題を掲示板などに投稿して、不特定多数の人に相談することは禁止する。
(← 開閉)
皆さんのノート PC や大学の PC には「Microsoft Visual Studio Community」 というコンパイラーがインストールされているはずです。 インストールされていない場合は、 香川大学創造工学部学生向け Webサイトから、「ノートPC設定方法」というページを 見つけてインストールして下さい。 (C コンパイラの情報はここにあります。 Visual Studio のダウンロードのページに直接飛んでも構いません。) インストールするときに、 「C++によるデスクトップ開発」にチェックをするのを、 忘れないようにしてください。 (Visual Studio のバージョンは 2012 以降にしてください。 2010 以前はデフォルトの文字コードが異なるため、UTF-8 で保存されたソースコードをコンパイルできない可能性があります。) インストール後「ヘルプ」—「Microsoft Visual Studio のバージョン情報」で、 「インストールされている製品」に 「Visual C++ 20??」が入っていることを確認しておいてください。
エディターは notepad++, サクラエディタ, Atom などを推奨します。 サクラエディタの場合、「設定」−「共通設定」−「ファイル」−「ファイルの排他制御」 −「排他制御」を「しない」に変更しておくことをおすすめします。
以下では hello.c
という名前のソースファイルをエディターで作成したとします。
「開発者コマンド プロンプト」を「アプリ」画面の ─「Visual Studio 201?」 ─ 「開発者コマンド プロンプト (Developer Command Prompt) for VS201?」から起動します。
「開発者コマンド プロンプト (Developer Command Prompt)」で hello.c
を作成したディレクトリーに移動 (cd 〜
) し、
以下のコマンドでコンパイラーを実行します。
cl hello.c
これで、hello.exe
というファイルができているはずです。(dir
コマンドで確認できます。)
以下のコマンドで、このプログラムを実行します。
hello
なお、コマンドプロンプトではカーソルキー( ↑ , ↓ )を使うと、 以前に入力したコマンドを呼び出すことができます。
もう少し詳しい、コマンドプロンプトでのコマンドなどの使用法の説明を C のプログラムの作成とコンパイルの手順というページにまとめました。
Visual Studio Code からコンパイルする方法をまとめました。
授業用ページのパスワード発行は
このページで
行なって下さい。アカウントは s
学籍番号(途中の t
は小文字です。)
独自のアカウント・パスワードは現在使用していません。 Gmail アカウントか Microsoft アカウント(大学でメールを読むときに使うアカウント)で認証してください。
注意: 設定が変更されたのに、変更が反映されないときは、 いったんログアウトして、 再度アクセスを試みて下さい。
必ず各自で提出したファイルのバックアップを取っておいて下さい。 (自分のノート PC だけではなく、stfile などの大学のサーバのどこかにもバックアップしておいて下さい!!)
この授業で提出してもらうファイルは基本的にバイナリーファイルではないはずです。 バイナリーファイルとは、テキストエディターで読むことができないファイル(画像、音声、ワード、エクセルなど)です。
各個人へのメッセージ を適宜確認して下さい。
注意: 以下のプログラムのソースへのリンクで List 99-99 のような Bold 書体は重要な例題、 List 88-88 のような影付き書体は、真似してはいけない例題を表す。
(← ここ以前の課題の開閉)
List 6-17
List 6-18
List 6-19
List 8-7
hanoi.c
(ハノイの塔を試す)
tree.c
(グラフィックス作成ページ)
再帰の例 1
(問: このプログラムの出力結果はどうなるか?)
List 8-8
01/14 は共通テスト前日のため、休講です。
(1/17 New) 当初、1/19 は講義・演習半々で実施する予定でしたが、 進度が遅れ気味のため、演習はとりやめ、講義のみとします。
6201 教室で実施します。
クイズ (訂正あり)、
List 8-9
(第 2 版で 8-10 と 8-11 が入れ替わったため、第 2 版の 8-11 が第 1 版の 8-10 に対応します。)
List 8-10
List 8-11
List 7-1
List 7-2
List 7-3
List 7-4
List 7-5
sizeof.c
(第 2 版で 7-8 が新しく挿入されたため、第 2 版の 7-9 が第 1 版の 7-8 のように、これ以降 1 つずつ番号がずれます。)
List 7-10
List 7-11
クイズ、
Python 処理系のインストール(01/28 の演習までにインストールしておいてください。)、
TIOBE index,
GitHut,
Programming Languages
Influence Network,
List 7-12
(x <= 1.0
を x <= 1000.0
に変えてみよう)
List 7-13
printf("%.60f", 0.1)
クイズ、
(02/04 New!) 02/02 のクイズは出題数が多かったため、02/02 に欠席届を出していた人に対しては、 成績を計算する際に分母から除外する予定です。
「プログラミング言語 Python」の「高階関数とラムダ式」以降は自習しておいてください。 (「高階関数とラムダ式」以降は、演習の必須問題に出題せず、テスト範囲にも含めません。) プリントの空欄の部分の情報を掲載します。開閉→
svg.h svg.c は SVG 形式を生成する自家製グラフィックスライブラリーです。
svg.h svg.c polygon.c diamond.c graph.c FirstSample.c SimpleSample.c HSBGrad.c TurtleSample.c
グラフィックス関数を使ったプログラムのコンパイルと実行の仕方(まとめ): 開閉→
授業評価アンケート(学務係からメールが来ているはず)・カリキュラムアンケート(紙)・
教育評価アンケート(下の QR コードからもアクセス可能)
QR コード開閉→
以前の課題の追加提出・やりなおしも 2/08(火)23:59までに提出してください。
課題に対するコメント、※ ペーパーテストは、持込み不可、 (オンラインテストは、教科書・プリント・ノートなど持込み可)です。
※ オンラインテストは、教科書・プリント・ノートなど持込み可、 (ペーパーテストは、持込み不可) です。
プリント・ルーズリーフはバインダー・綴ひもなどで一冊に綴じること。 バラバラのプリントは持込み不可とする。
メール, チャット, Messenger, FTP, WinSCP, Slack, LINE などの通信系ソフトは使用禁止である。 (通知も切っておくこと—Windows 10/11 で通知設定を変更する)
通信系ソフトを起動していた場合は、不正行為とみなす。
期末試験で合格者が極端に少ない場合に、救済試験を実施する可能性があります。 実施する場合、日程は 2/21 〜 2/25 の間になります。
救済試験を実施する場合、対象者には 2/18(金) までに連絡する予定です。
日程調整はしません。こちらで日程を決定します。
(メールに注意してください。)
対象者が出席できない場合は、いかなる理由でも不可となります。
(それに対する救済措置はありません。)
救済試験を実施する場合でも、 期末試験を含む成績が著しく低い人は対象としません。
毎週の課題の追加提出・やり直しの締切を 2/18(金)23:59までに延長しました。 各個人へのメッセージをよく読んで、やり直して下さい。
(2/21 New) 2/21(月)の 13:23 頃に救済試験対象者にドリームキャンパスからメッセージを送信しました。 (クイズ・演習・中間・期末を総合して、45点以上60点未満の人が対象です。) そのメッセージを受け取っていない人は、合格(または不合格)が確定です。
※ ペーパーテストは、持込み不可、 (オンラインテストは、教科書・プリント・ノートなど持込み可)です。
※ オンラインテストは、教科書・プリント・ノートなど持込み可、 (ペーパーテストは、持込み不可) です。
※予定は変更の可能性があります。
(← ここ以降の予定の開閉)
以下の教科書の、おおむね第 1 〜 8 章に相当する部分を扱います。
新・明解C言語入門編
柴田 望洋 著
SBクリエイティブ
ISBN978-4-7973-7702-6
索引と全ソースプログラムは、 是非、ダウンロードページから入手して、 索引は印刷しておいてください。
新版が出ています。2021 年度の授業はどちらでも構いません。
新・明解C言語入門編 第 2 版
柴田 望洋 著
SBクリエイティブ
ISBN978-4-8156-0979-5
索引と
全ソースプログラム(Shift-JIS)
(UTF-8)
は、
是非、ダウンロードページから入手して、
索引は印刷しておいてください。
(注意:
5 章のプログラムの一部が int main(void)
とすべきところを
int main(aoid)
になっているようです。)
ただし、7-2 節 の中の「ビット単位の論理演算」、「シフト演算」、「ビット単位の論理演算の応用」、「オーバーフローと例外」、 8-1 節「関数形式マクロ」、8-2 節「ソート」、8-3 節「列挙体」を除きます。ただし、 8-1 節の中のコンマ演算子は扱います。
上記の教科書や C 言語の標準的な解説書:
プログラミング言語 C 第 2 版 B.W. カーニハン, D.M. リッチー 著 石田 晴久 訳 共立出版ISBN 978-4320026926
※原著 The C Programming Language, 2nd Edition Brian W. Kernighan, Dennis M. Ritchie Prentice HallISBN 978-0131103627
に書かれている事柄で、この授業で取り扱わない(主な)項目は以下のとおりです。
文字列、 ポインター、構造体 (struct)、ファイル入出力、(ここまでは2年生の「中級プログラミング」で扱います。)
ビット演算子、goto 文とラベル、 関数形式マクロ、列挙体 (enum)、 共用体 (union)、ビットフィールド、分割コンパイル、 動的メモリー割当て (malloc と free)、(これらは2年生以降の各授業で必要に応じて紹介します。)