• 検索結果がありません。

基礎プログラミング演習

N/A
N/A
Protected

Academic year: 2021

シェア "基礎プログラミング演習"

Copied!
3
0
0

読み込み中.... (全文を見る)

全文

(1)

基礎プログラミング演習 II 教材 (#4)

■ 入力、scanf

pinrtf ( ) などによるプログラムからの結果の取り出し(人間に見える形にする)を出力と呼んでい

ます。これに対してプログラムに値や指示を与えることを入力と呼びます。

ここではそうした方法のうちの一つ、キーボードから文字入力を行う例を示します。

□ 実行時にデータを入力する

前回のプログラム(右)は「3+5を計算する」ものです が、毎回プログラムを修正・コンパイルして実行しな ければ結果が得られないのは不便です。

つまりプログラムの外からデータ(たとえば加算すべき二つの数値)を与えて実行できるようにす べきです。これを実現するために、プログラムで使われている変数に対して実行時に値を入力する 手段が提供されています。変数に値を入れ、その変数と変数を加算して結果を表示するのです。

★教科書 p.38 図 3.1 参照

まず変数(図では firstNum, secondNum)に値を入力し、それをもちいて計算処理(加算)を行い、

その結果を出力(printf による表示)させれば良い、というプログラムの構造を理解してください。

□ scanf による文字入力

scanf() 関数はキーボードからの入力を変数に

反映させる機能をもちます。

右のプログラムを入力して実行してください。

実行するとキーボードからの入力を待つ状態に なります。

右のように 123 と入力すると、変数に入った結 果をそのまま画面に出力します。

★教科書p.39 図 3.2 および 3.3 参照

scanf 関数の書式と機能について理解してください。

 

□ 課題 1.

教科書 p.40 の例題 3.1 のプログラムを作って下さい。

(scanf を用いて二つの値を入力し、それを加算するプログラムを作る。)

main(){

int answer;

answer=3 + 5;

prinf("answer=%d\n", answer);

exit(0);

}

main() { int value;

scanf("%d", &value);

printf("入力は %d でした\n", value);

exit(0);

}

$ ./scanf1 123

入力は 123 でした

$

(2)

□ プロンプト

scanf 関数は「いつ入力して良い状態になった」のか分かりません。

そこで以下のようにプロンプト(入力を促す表示)を出すことがよく行われます。

★教科書 p.41 図3.4 の実行例と、その上のプログラムを参照

改行なしの printf 関数が視覚的に良い目印になっていることを感じてください。

■ 補足:二つの値を入力する

一行の scanf 関数で二つの変数に値を設定したい場合は、以下のように書きます。

scanf("%d %d", &firstNum, &secondNum);

以下のように二行に分けて書いた場合も動作は変わりません。

scanf("%d", &firstNum);

scanf("%d", &secondNum);

つまりどちらでも実行時の入力は同じで、二つ並べて入力しても、二行に分けても構いません。

$ ./answer3 123 456 answer=579

$

% ./answer3 123

456

answer=579

$

printf("値を入力してください");

scanf("%d", &value);

printf("入力は %d でした\n", value);

(3)

■ 条件分岐

★教科書 p.42の3.2「if 文による条件分岐」参照

 

□ 単純な if 文

実験 :

絶対値を求めるプログラム(p.43 の例 3.3)を入力し、実行し、動作を確認してください。

押さえて欲しいポイント:

条件分岐の概念(プログラムの意味・動作)、関係演算子の種類、インデントのつけ方

□ else (それ以外)

実験 :

二数の差を求めるプログラム(p.45 の例 3.4)を入力し、実行し、動作を確認してください。

押さえて欲しいポイント:

else の概念、文法、流れ図(処理の流れといった概念)

 

□ インデントの意味   

プログラムには流れがあり、それは幾らかの「構造」を持っているのに、私たちがプログラミング するときにはこれを直線的に書き下さなければならないことに注意が必要です。

この結果、プログラムは「上から下」に進むだけでなく「飛ば」して実行されたりします。

インデントはこの「構造」をなんとか「人間が視覚的に把握しやすくするために」表現しようとす る試みの一つです。コンピュータ(C コンパイラ)はあくまで文法記述どおりに処理するだけで、

インデントについては関知しません。(少なくとも C言語では。インデントに文法的役割を与えて いる言語もあります。ex:Python.)

なお読みやすさの基準は様々なので、インデントの流儀は人によって異なります。

□ 複数の実行文を従えた if 文

実験 :

二数の商と余りを求めるプログラム(p.47 の例 3.5)を入力し、実行し、動作を確認してください。

押さえて欲しいポイント:

文とブロックの関係、インデント

□ 課題 2.

課題 1.のプログラム(scanf を用いて二つの値を入力し、和を求める)を以下の条件を満たすよう に修正してください。

・差・積・商を計算し、表示させる

・差はマイナスにならないように

・商は大きい方を小さい方で割った時の結果となるように

どのように書くのが最も分かりやすいプログラムとなるか、いろいろ試して吟味してやってくださ い。動けばよい、というわけではないのです。そのために課題をやっているわけでもありません。

参照

関連したドキュメント

ても情報活用の実践力を育てていくことが求められているのである︒

が前スライドの (i)-(iii) を満たすとする.このとき,以下の3つの公理を 満たす整数を に対する degree ( 次数 ) といい, と書く..

シートの入力方法について シート内の【入力例】に基づいて以下の項目について、入力してください。 ・住宅の名称 ・住宅の所在地

ユーザ情報を 入力してくだ さい。必要に 応じて複数(2 つ目)のメー ルアドレスが 登録できます。.

ているかというと、別のゴミ山を求めて居場所を変えるか、もしくは、路上に

パキロビッドパックを処方入力の上、 F8特殊指示 →「(治)」 の列に 「1:する」 を入力して F9更新 を押下してください。.. 備考欄に「治」と登録されます。

2021年9月以降受験のTOEFL iBTまたはIELTS(Academicモジュール)にて希望大学の要件を 満たしていること。ただし、協定校が要件を設定していない場合はTOEFL

基準の電力は,原則として次のいずれかを基準として決定するも