情報 (Informatics) コース/人工知能・通信ネットワーク (AICN) コース向の「プログラミング」の情報を掲載します。 (シラバス(抜粋) カダサポ)
演習科目であるため、全回の出席を前提とする。毎週の課題(30%)、小テスト(クイズ)(20%)、 中間試験 (10%)、期末試験(40%)で採点し、授業の目標達成が確認できた者に単位を認定する。
必須課題すべてと、選択(発展)課題の平均提出率分を完璧に解けば満点とする。
演習時間(通常、金曜日 4限)内は、原則として自分の力で解く。(TA・教員に聞くのは良い。)
(ただし、解いている問題に特有ではない C 言語一般に関する質問などは許容範囲とする。)
なお、一部の事前に公開した課題は、演習時間開始 10 分後を締切とすることがある。
演習時間終了後は、人!に相談して解いても良い。 (ただし人の解答のコピペは絶対禁止(コピーさせた側も同罪))
たとえ演習終了後でも、問題を掲示板などに投稿して、不特定多数の人に相談することは禁止する。
この授業は、原則対面で実施しますが、6201 と 6202 に分かれて実施するため、説明の画面を Teams で共有します。
(音声はワイヤレスマイクを使うので、Teams では共有しません。)
(この授業の
Teams のチャネル)
2025 年度期末テスト問題(ペーパー)、 2025 年度期末テスト問題(オンライン)、 同解答例、
オンライン試験については、他人との通信が禁止事項となっていますが、 人間と区別がつかないもの (AI など) についても通信は禁止です。
WebCLint (ページが落ちているときは連絡を下さい。) … C 言語初学者向けの静的解析(インデンテーションのチェックなど)用ツールです。
誤って「do の閉じブレースの後は改行せずに while を書いてください。」と指摘することがあります。
「とても短い文で敢えてブレースに囲まない場合(if の対象のなる文を追加するということが考えにくい、イディオム的なカタチの場合)は、改行せず、
if, while などと同じ行に書く。」という例外には対応していません。
sqrt, sin などの関数呼び出しが、double 型であると認識できず、
%f 書式指定に対して使うと間違いだと指摘します。
「原則として、一行には文を一つしか書かない。」は守っていなくても検知しません。
「閉じブレースの行には閉じブレース以外には何も書かない。(ただし、else … や do 〜 while 文の while …
は除く)」をたまに検知しないときがあります。
皆さんのノート PC には「Microsoft Visual Studio Community」
というコンパイラーがインストールされているはずです。
インストールされていない場合は、
Visual Studio
のダウンロードのページから、コミュニティ・エディションをインストールしてください。
なお、Mac の人は gcc を使いましょう。
インストールするときに、
「C++ によるデスクトップ開発」にチェックをするのを、
忘れないようにしてください。
(Visual Studio のバージョンは 2012 以降をインストールしてください。
2010 以前はデフォルトの文字コードが異なるため、UTF-8
で保存されたソースコードをコンパイルできない可能性があります。)
インストール後「ヘルプ」—「Microsoft Visual Studio のバージョン情報」で、
「インストールされている製品」に
「Visual C++ 20??」が入っていることを確認しておいてください。
エディターは notepad++, サクラエディタ などがありますが Visual Studio Code を推奨します。
C のプログラムの作成とコンパイルの手順というページに、 コマンドプロンプトでのコマンドなどの使用法の説明をまとめました。
Visual Studio Code から cl コマンドを使う方法をまとめました。
コマンドプロンプトの使い方 (竹原先生作成)
演習用サーバーでのコンパイル方法 (何らかの事情で自分の PC でコンパイルできないとき参考にしてください。 竹原先生作成)
C コンパイラーがインストールされていない、借り物の PC で受講しなければいけないときなどは、 いくつかのオンライン実行環境が利用可能です。
ここにリンクをはっていないファイルや、公開日前のファイルは 公開日までに変更する可能性があるので注意してください。
なお、紙での配布はしません。(PDF のみの配布です。)
連絡: 10/07 の正午ころに、「2 章のまとめ」以降の PDF を更新しました。 (オンラインで文字を入力しやすく改訂しました。)10/07 の午前までにダウンロードしていた人は、改めてダウンロードをお願いします。 なお、印刷する分には違いはありません。
1 〜 8 章のまとめ、グラフィックス関数解説、プログラミング言語 Python、 をまとめた PDF(両面印刷版、片面印刷版)
授業用ページは独自のアカウント・パスワードは現在使用していません。 Microsoft アカウント(大学でメールを読むときなどに使うアカウント)で認証してください。
注意: 設定が変更されたのに、変更が反映されないときは、 いったんログアウトして、 再度アクセスを試みて下さい。
必ず各自で提出したファイルのバックアップを取っておいて下さい。 (自分のノート PC だけではなく、stfile などの大学のサーバのどこかにもバックアップしておいて下さい!!)
提出するファイルを間違えないように、Windows はファイル名の拡張子を表示する設定にしておいてください。
エクスプローラーのウインドウで「表示」—「表示」を選択し、 「ファイル名拡張子」に ✔ してください。 (ついでに「隠しファイル」も ✔ しておいてください。)
この授業で提出してもらうファイルは、基本的にバイナリーファイルではないはずです。
バイナリーファイルとは、テキストエディターで読むことができなくて、 専用のソフトウェアで読む必要があるファイル(画像、音声、ワード、エクセルなど)です。 拡張子では .exe, .obj, .class, .docx, .xlsx, .pptx, .pdf, .jpg, .png, .gif, .zip, .rtf などです。
テキストファイルとは、テキストエディターで読むことができるファイルです。 拡張子では .c, .h, .java, .py, .txt, .md, .html, .js, .css, .svg, .xml, .json などです。
この授業の課題提出システムでは、テキストファイルは、文字コードの変換を行って UTF-8 で保存します。 バイナリーファイルは全く変換しません。
つまり、テキストファイルを誤ってバイナリーファイルとして提出すると、サーバー側で文字化けする可能性があります。 一方、バイナリーファイルを誤ってテキストファイルとして提出すると壊れます。
テキストファイルの提出時に、タブ (Tab) 文字が正しく解釈されているか確認してください。
タブ文字とはタブ (Tab) キーで入力できる特殊な文字です。 この文字は、環境により何文字分の空白と解釈するかが変わります。 課題提出システムの提出先ではタブ文字は 8 文字分の空白として解釈します。 タブ文字を 4 文字と解釈している環境で、タブ文字と空白が混じったソースコードを作成すると、 提出サーバー側で字下げ(インデント)がガタガタになってしまいます。
Tab: でタブ文字の解釈を選択して、インデントが揃うようにしてください。各個人へのメッセージ を適宜確認して下さい。課題を再提出するときも、最初に提出したときと同じアップロードのページからアップロードしてください。
注意: 以下のプログラムのソースへのリンクで List 99-99 のような Bold 書体は重要な例題、 List 88-88 のような影付き書体は、真似してはいけない例題を表す。
10/02 は一旦全員 6201 に入ってください。
授業ページ・ログインの確認
予習について
10 月の予定について
Visual Studio Community のインストールの確認(または GCC)
Visual Studio Code のインストール
C/C++ for Visual Studio Code のインストール
(ただし、大勢が一斉に無線 LAN …)
クイズ(10/02 は試験運用です。)、
List 1-1
List 1-2
List 1-3
List 1-4
List 1-5
List 1-6
List 1-7
List 1-8
List 1-9
List 1-10
List 1-11
List 1-12
List 1-13
List 1-14
最初から、情報コースの人は 6201、 人工知能・通信ネットワークコースの人は 6202 に入ってください。
C 言語用のソフトウェアのインストールの確認の仕方をまとめたページ(ソフトウェアのインストールの確認) を作成しました。
評価(再確認)
コンパイル・実行の方法(再確認)
&の書き方
(このページの情報をもとに Gemini に作ってもらいました)
着席位置、
課題
(一部の課題は 10/07 16:10 に公開されます)、
アップロード、 コンパイルはできて実行はできるけれども、何か問題点がある、そういうプログラムをチェックするためのプログラムです。
模範解答と比較するので、出題側の想定していない解法によるプログラムは、正しくても問題点があると判定される場合があります。
もちろん、チェックできない問題点もたくさんありますが、つまらない問題点はできるだけチェックしようとします。
できるだけ一度試してから提出するようにしてください。 現時点では、メッセージがぶっきら棒でわかりにくいですが、この点は今後改良していく予定です。 試験運用中です。しばしば、ダウンしていることがありますので、そういうときは少し待ってから試してください。 主に、if 文、for 文などの数で単純にチェックするので、単元が進むにつれて問題点があっても指摘できない場合が増えます。
課題チェック用リンク(
1, 4 番用、
2 番用、
5 番用)、
課題チェック用リンクとは
10/14 は月曜振替日のため「プログラミング」の授業はありません。
List 2-1
List 2-2
List 2-3
List 2-4
List 2-5
List 2-6
List 2-7
List 2-8
List 2-9
List 2-10
List 2-11
List 2-12
コンパイル・実行の方法(再確認)
文字化けについて(再確認)
課題 (一部の課題は 10/16 16:10 に公開されます)、 アップロード、
10/30 は大学祭前日のため休講です。
先に 8 章をやります。
01/15 は共通テスト前日のため、休講です。
以下の教科書の、おおむね第 1 〜 8 章に相当する部分を扱います。
新・明解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年生以降の各授業で必要に応じて紹介します。)