電算機応用 (2)

2012年度から東京大学文学部で私(寺尾敦)が担当している, 「電算機応用 (2)」についての情報をまとめたページです.

1. シラバス

公開されているシラバスを転載します.

1.1. 授業概要

C言語の基礎を習得し, 基本的なプログラムを読み書きできるようになることが, この授業の目標である. プログラミング経験がないことを前提としている. C言語は長い歴史を持ち, 非常によく普及したプログラミング言語である. 汎用性が高く, 数多くのプログラマがこの言語を用いて日々の仕事をしている. プログラミングの初心者にとっては習得が難しい言語であると言われることもあるが, 近年は初心者向けの良著も多く出版されており, 最初に学ぶプログラミング言語としても適切である. この授業でもそういった良著のひとつを教科書に選んだ. 授業ではなるべく多くの時間を実習に費やす.

1.2. 授業計画

A1 ターム

内容
第1回 ガイダンス,プログラミング環境の用意
第2回 テキスト第1章:まずは慣れよう
第3回 テキスト第2章:演算と型
第4回 テキスト第3章:プログラムの流れの分岐
第5回 テキスト第4章:プログラムの流れの繰返し
第6回 テキスト第5章:配列
第7回 テキスト第6章:関数

A2 ターム

内容
第8回 テキスト第7章:基本型
第9回 テキスト第8章:いろいろなプログラムを作ってみよう
第10回 テキスト第9章:文字列の基本
第11回 テキスト第10章:ポインタ
第12回 テキスト第11章:文字列とポインタ
第13回 テキスト第12章:構造体

1.3. 授業の方法

授業形態:対面

対面授業を実施するが,教科書と,以下に示す授業ウェブ教材の学習により,教室(演習室)での授業に出席しなくても単位を取得できるようにする.教室での授業に出席して学習してもよいし,自分の好きな時間と場所で学習してもよい.自分の Windows PC あるいは Mac でプログラミング環境を構築する方法は授業ウェブに示してある.

実習が中心となる. 教科書を読み,例として示されているプログラムを実行しながら, C言語プログラミングの概念と方法を学ぶ. 学習が順調に進んで,教科書で飽き足らなくなった人は, 参考書として挙げてある書籍にもチャレンジするとよい.

1.4. 成績評価方法

筆記形式の期末試験を行い,その結果に基づいて成績評価を行う(100%). 試験問題は「基本情報技術者試験」で出題されていたC言語プログラミングの問題を参考に作成する. 試験時間は60分,持ち込みなし.

新型コロナウイルスの国内感染状況が悪化し,筆記試験が実施できなくなった場合には,試験のかわりとなる課題を実施する(100%).

1.5. 教科書

柴田望洋『新・明解C言語 入門編 第2版』(SBクリエイティブ)

第2版は2021年の発行です. 2014年発行の第1版は第2版とそれほど違いませんので, すでに第1版を持っている人はあらためて第2版を入手しなくても問題ありません.

1.6. 参考書

教科書の演習問題の解答はすべて以下の書籍に掲載されている. 教科書には解答は掲載されていないので,必要であればこの書籍を参照すること.

  • 柴田望洋『新・解きながら学ぶC言語 第2版』(SBクリエイティブ)

以下の参考書は教科書と同じ著者によるもので, 教科書をマスターした人が次の段階で取り組むのに適している.

  • 柴田望洋『新・明解C言語 中級編 第2版』(SBクリエイティブ)
  • 柴田望洋『新・明解C言語 実践編 第2版』(SBクリエイティブ)

1.7. 履修上の注意

1回の授業で1章分の学習を行う.授業時間内だけでは, 1章分の学習は終わらないだろう.授業時間以外にも, テキストを読んでプログラミングの練習をする時間をとってほしい.

1.8. その他

C言語は「基本情報技術者試験」で選択できるプログラミング言語のひとつである. 例年,4月の第3日曜日に試験が実施されるので(秋にも受験機会がある), 春休みに試験勉強をして,チャレンジしてほしい.

2022年度まで,C言語は「基本情報技術者試験」で選択できるプログラミング言語のひとつだった. 試験の改訂により、2023年度から個別言語の選択はなくなった. それでも、C言語の学習はこの試験の準備として有効であると考える. 試験はCBT方式で随時実施されているので,チャレンジしてほしい.

2. プログラミング環境の準備

演習室の Mac では,Mac OS および Windows の両方が使えます. この授業では Mac OS の環境で実習を行うことにします. 演習室の Mac にインストールされている Mac OS は, 2023年10月の時点では, macOS Ventura 13.5.2 です.

授業を始めるにあたって,授業用ディレクトリ(フォルダ)の作成と, 授業用ディレクトリへのパスの設定をしておきます. 以下のリンク先に手順を示してあります.

パスの設定には Emacs というエディタを使用します.

macOS Venture では,Emacs の起動時に Invalid image type 'svg' というエラーが出るようになりました. プログラムを書くことには何も問題ありませんが, 気になるのであれば対処可能です. Emacs の起動時に読み込まれる設定ファイルの中に, エラーを回避する設定を書きます. 最も簡単な設定は,ファイルの先頭に


(setq image-types (cons 'svg image-types))

と書くことです. このページ を参照しました. 設定ファイルの作成方法については

を見てください. このページは,Emacs でバックスラッシュがうまく入力できないという問題が2015年度に生じたとき, その解決策を示したものです. Emacs の起動時に読み込まれる設定ファイルの中に, 円マークキーでバックスラッシュを入力するという設定を書きました. もしこの問題が生じる人がいれば,この設定を行ってください.

3. プログラムの作成と実行

テキストでも説明されているように, C言語のプログラムを書いてから実行するまでには, 以下の手順を踏みます.

  1. ソースプログラムを書く.

  2. ソースプログラムをコンパイルして, 実行プログラムを作る.

  3. 実行プログラムを実行する.

ソースプログラムの作成には Emacs というエディタを使います. ソースプログラムのコンパイルと,実行プログラムの実行は, ターミナルから行います. 以下のリンク先で,これらの方法を説明します.

Cプログラムの作成と実行

4. ファイルの整理

授業用ディレクトリの下にソースファイルと実行ファイルを保存していくと, このディレクトリはやがてファイルだらけになってしまいますね. テキストの1章分を学習するごとに整理するとよいでしょう. 以下のリンク先で,この方法を説明します.

ファイルの整理

5. 個人所有の Mac/PC でのプログラミング環境構築

個人所有の Mac あるいは Windows PC で C言語のプログラミングを構築すれば, 大学に来なくてもプログラミングの学習ができますね. 環境構築の一例を説明します.

6. 教科書の補足説明

教科書『新・明解 C言語 入門編』での記述を補足して解説します. 解説のウェブページを章ごとに作成しています.

7. Emacs コマンド

この授業では, ソースプログラムの作成に Emacs を使います. Emacs にはたくさんのコマンドが用意されています. 基本的でよく使うコマンドは, ショートカットキーで実行できます. この授業でよく用いるコマンド(ショートカット)を以下にまとめておきます. ここに示しているのは最小限のコマンドです. Emacs のコマンドのもっと詳しい一覧や解説は, ウェブで容易に見つけられます.

C-x は,コントロール [Ctrl] キーを押しながら, [X] キーを押すという操作を意味します. M-x は,エスケープ [Esc] キーを押して指を離し, 続いて [X] キーを押すという操作を意味します.

最重要コマンド

キー入力動作
C-g 途中まで入力しているコマンドを中断
C-x u 直前の操作の取り消し(Undo)

ファイル操作

キー入力動作
C-x C-f ファイルを開く(新規ファイルの作成も同じ)
C-x C-v 別のファイルを開く(開くファイルを間違えたときに)
C-x C-s ファイルを上書き保存
C-x C-w ファイル名を指定(変更)して保存
C-x C-c Emacs の終了

文書編集

キー入力動作
C-f カーソルを次の文字に移動(forward)
C-b カーソルを前の文字に移動(backward)
C-n カーソルを次の行に移動(next)
C-p カーソルを前の行に移動(previous)
C-a カーソルを行の先頭に移動
C-e カーソルを行の末尾に移動
M-x goto-line カーソルを指定の行に移動(行番号の入力を求められる)
M-< カーソルをファイル先頭に移動(Esc に続いて Shift + <)
M-> カーソルをファイル末尾に移動(Esc に続いて Shift + >)
C-d カーソルのある文字を削除
C-k カーソル位置から行末までを削除
C-Space 範囲指定の開始位置をマーク(この後で終了位置にカーソルを移動)
M-w 範囲指定をコピー
C-w 範囲指定を切り取り
C-y コピーあるいは切り取りした範囲を張り付け
C-c C-q インデントのやり直し