- 本日の作業内容
- メンター学習室について
毎週水曜日の4コマ目にこの教室でメンター学習室を開設しています.実習や宿題についての質問や,今後の学習方法など,先輩学生がいろいろと相談に乗ってくれますので,活用してください.この授業に追い付けていないと思っている場合には,今のうちにメンター学習室やこの授業の演習の時間に相談してください.
- 前回の復習
- ヘッダファイル
C言語のプログラミングでは必ず main という名前の関数が必要です.
そして,結果を画面に表示するためには入出力のためのあらかじめ用意されてい
る道具を必要とします.画面のことを通常「標準出力」,キーボードからの入力
を「標準入力」と呼びますので,入出力を取り扱うための道具として「標準入出
力」(Standard Input Output)用のプログラムを
呼び込みます.そのようなプログラムを「ヘッダファイル」(Header
file)と言います.そこで標準入出力のためのヘッダファイルなので,
stdio.h というファイルを呼び込み(include)します.ですので,
画面に結果を表示するようなプログラムを組む場合,最初に必ず
を記述します.なお,命令である include とファイル名である
<stdio.h> の間にはスペースを入れます.無くても動作はしますが,
スペースは必ず入れてください.マナーです.
- printf
文字列を画面に表示するのに printf という命令を使用しました.二
重引用符で囲んだ範囲の文字列を画面に表示します.その際に,% 記
号を使用して,変数の値を埋め込むことが可能でした.また,画面上で改行する
ためにはバックスラッシュ記法を使用した改行文字 \n が必要なこと
も学習しました.今回さらに詳しく学習します.
- 四則演算
本日の授業でまず最初に扱うのは「整数」の演算です.計算機は2進数で内部処理している
のはみなさんもよく知っていると思いますが,2進数で小数点を持つ実数を扱う
のは,ちょっと面倒な処理が必要です.そのため,計算機の心臓部であるCPUで
は整数型と実数型の演算は別の機能として分けて行いますので,数値の「型」,
すなわち整数なのか実数なのかが重要なポイントです.教科書にあるように,変
数定義のときに,
のように int と指定すると変数の値が「整数型」になります.整数の
英語であるintegerから int は来ています.
- 除算の注意
整数型の演算ですから,扱える数は整数だけです.なので,4割る3は1,3割る4
は0です.ある数をそれよりも大きい数で割った場合,その答えは必ず0になるこ
とに注意してください.
- 浮動小数点数
教科書p.18から実数の計算が始まりますが,実数は正確には浮動小数点数
(Floating point number)と言います.小数点が移動可能な数ということですね.
扱える桁数が決まっているので,精度良く計算するためには「倍精度」の数で定
義する必要があります.また,有効数字を明確にするための指数表現が
printf で出力する場合に用意されていますので,必要に応じて使用しましょ
う.なお,この授業では浮動小数点数はあまり使用しません.基本的には整数
型の演算を最後まで行っていく予定です.
- 浮動小数点数を含む四則演算
浮動小数点数にも加減乗除の四則演算が可能です.ただし,剰余は使用できませ
ん.それと注意するのは,整数と実数の間の演算です.これらは基本的には実数
になります.
1 / 3 => 0
1 / 3.0 => 0.333333....
- 単項演算子
教科書には明確に書かれていないのですが,数値や変数の前に数学のように負号をつけることが可能です.この - の記号を単項演算子と言います.使い方はだいたいわかると思いますが,数学と異なるプログラミング言語独特の使用法もありますので,注意してください.
int a = 1, b = -2, sum, sub, minus;
sum = a + b;
sub = a - b;
minus = a + -b;
|
- 演算子の前後のスペース
教科書の例題を見ると分かるように,四則演算をプログラム中に記述する場合,
演算子ならびに代入記号の前後にスペースが入っています.前項のような単項演
算子の負号のような場合もありますので,必ずスペースを入れるようにしましょ
う.ただし, if 文の条件式などのように多くの人が入れないような場合もあ
ります.
- インデント
中括弧 { } で囲まれた範囲をブロックと呼びます.(教科書p.9参照)
このブロックを使用するときには,ブロックの構成要素であることを視覚的にわ
かりやすくする目的でインデント(字下げ)が行われます.教科書では4文字分の
字下げとなっていますので,geditのTAB設定を4文字にしておくと,TABキーを押
すだけで,規定の幅のインデントが可能になります.スペースを必要な回数入れ
る方法では,不揃いの字下げになる可能性がありますので,必ずTABを使用して
ください.
ちなみに,宿題や小テストでは,インデントの不備は-2点とするようにしていま
す.10点満点で-2点ですので,影響は大きいです.注意してください.
- 代入
教科書ではp.10のリスト1_1で「代入」を使用してしました.
等号の記号
= を使用することで変数に値を代入することが出来ます.これもこれから
何度も使用しますので,すぐに慣れると思います.
- エラーメッセージ
プログラミングを始めると,作ったプログラムに間違いがあってコンパイル時に
エラーが表示されることがよくあります.メッセージを良く読むとどこが間違っ
ているのかわかるのですが,ただ単に英語で書いてあるというだけで見ない人が
多くいるようです.基本的なパターンは決まっているので,これも慣れさえすれ
ばわかるようになるので,必ず見るようにしてください.
例えば,以下に示すメッセージは,行末のセミコロン( ; )を忘れた場
合に出てくるものです.閉じ括弧の忘れなども同じような形式で出てきます.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
|
/* error.c */
#include <stdio.h>
int main(void)
{
printf("test\n") ← ここのセミコロンが無い
return 0;
}
|
error.c: 関数 ‘main’ 内:
error.c:9:2: エラー: expected ‘;’ before ‘return’
return 0:
^
|
1行目は main の中でエラーが発生したことを警告していて,2行目で
不具合が生じた行が何行目かを示しています.また,内容が簡潔な英語で書いて
ありますが,意味は「return の前に期待される ; 」という
ことで,セミコロンが無いことを教えてくれています.なお,セミコロンが無いのは7行目ですが,それが無いために問題が生じるのは9行目の return になるので,エラーの生じた行が9行目とメッセージに出てきます.
C言語は「関数型」の言語なので,最初に記述する main というのも関
数です.
- 画面への出力
プログラムの実行結果を画面に出力することは基本ですし,非常に重要です.そのときに,どのように画面に表示させるかに関して,C言語では printf という便利な命令があります.これは書式を指定して文字列を出力できる大切な命令になっています.ここでは,教科書p.26のリスト2_3に従って, printf の使い方を見てみましょう.
printf("a - b = %d\n", c);
|
というのがその部分ですが,二重引用符に囲まれている部分が画面に出力されることを確認してください.そして,二重引用符の中に %d という記号が含まれていて,そこはカンマの後に書いてある変数 c の「値」を入れて出力してくれます.表2_1から2_3に printf で使用する各種記号が説明されていますので,よく見ておいてください.本日はこの部分を実習で扱います.
- 実習
実習の演習問題は予習用の部分はすでに見えますのでしっかり予習してください.
- 次回の予習範囲
教科書のp.38まで予習をしてきてください.
- 宿題
宿題についても当日ご案内します.ただし,
宿題の問題を見ることができるのは23日以降になりますので,注意してく
ださい.