Powered by SmartDoc

20 前期の復習その3(10/8,15,22)

20.1 小テストの講評

問題;次のような入出力をするプログラムを作りなさい.

定価を入力してください;800
割引率(%)を入力してください;5
定価が800円,割引率が5%ですから,売値は760円です.
リスト 20.1.1 解答例
#include <stdio.h>
#include <stdlib.h>

int main(void);

int main(void) {
  int teika, waribiki, urine;
  char buff[64];

  printf("定価を入力してください;");
  gets(buff);
  teika = atoi(buff);
  printf("割引率(%%)を入力してください;");
  gets(buff);
  waribiki = atoi(buff);
  urine = teika * ( 1.0 - waribiki/100.0 );
  printf("定価は%d円,割引率は%d%%ですから,売値は%d円です.\n", teika, waribiki, urine);
  return 0;
}

/* 変数の型は浮動点少数でも良い.整数同時の割り算をするときは注意が必要. */

20.1.1 プログラムの作り方

  1. 処理の流れ(アルゴリズム)を考える:入力は何か?どのような処理をすべきか?出力は何か?
  2. 必要な変数とその変数の型を考える.
  3. 使えるパターンを記憶の中や今までに書いたプログラムや教科書から探す.一致するパターンがなければ似ているパターンを修正して使う.似ているパターンがなければ自分で考える.
  4. printf文で「割引率(%)」のようにパーセント記号それ自身を出力する方法を見つける.
  5. プログラムを書いてコンパイルしてみる.
  6. コンパイルエラーが出たら,エラー行とエラーメッセージを参考にして,間違い探し(デバッグ)をする.ほとんどのエラーは単純なスペルミスが原因であるので,落ち着いてよく見る.
  7. 無事にコンパイルできたら実行してみる.いろいろな値を入れてみて,思い通りに動作することを確かめる.おかしな挙動を示すようなら,ソースコードに戻って原因を探す.

20.1.2 間違いのパターン

20.1.3 次回からの提出方法

20.2 復習その3

20.2.1 4,5章の復習;分岐(if文,switch文)

Webテキスト7章参照計算機科学入門「論理演算参照」Webテキスト8章参照Webテキスト9章前半参照

練習問題4-1改;現在の月(1-12)を入力すると季節(春夏秋冬)を表示するプログラムを作る.

ここから10/15

練習問題5-1改;キーボードから a, b, c, d, e のいずれかの文字を入力すると,それぞれ Alpha, Bravo, Charlie, Delta, Echo と表示するプログラムをswitch文を使って作る.これ以外の文字が入力された時は「その文字のphonetic読みは知りません」と表示する.

20.2.2 6,7章の復習;繰り返し(for文,while文)

Webテキスト9章後半参照Webテキスト10章参照Webテキスト11章参照Webテキスト12章前半参照

練習問題6-1改;画面に0から4の3乗のグラフを書くプログラムを作る

練習問題2-1改応用編;乗算とForループを使って以下のように表示するプログラムを作る.

012345678901234567
    0 x   0 =    0
    5 x   5 =   25
   10 x  10 =  100
(中略)
   90 x  90 = 8100
   95 x  95 = 9025
012345678901234567

ここから10/22

問題;List6-2をwhile文で書き直す.

List7-4改;小文字を大文字に変換するプログラムを作る.

問題;入力文字がaかbかcだったら大文字に変換し,それ以外はそのまま出力するプログラムを作る.

20.2.3 10/15の補足

まだ意味がよくわからない文がある;#include <stdio.h>char buff[256]など

Forループで制御変数iを5だけ増分させたい時にfor ( i = 0 ; i < 100 ; i+5 )と書いて無限ループになってしまった原因は何か?

2重Forループでiとjの使い分け方がわからない

テキストを見ながら書き換える形でないとプログラムを書けない,白紙の状態から書けるようになりたい;プログラミングの基本は既にあるプログラムを使ってそれを書き換えることですから,今はあまり気にしなくてよいと思います.

ここから10/29

20.2.4 10/22の補足

制御文字;\n(改行),\t(タブ),\f(改頁)など

剰余演算子

do-while文

if文とwhile文の関係

20.2.5 8章の復習;関数

Webテキスト12章後半参照Webテキスト13章参照

関数はブラックボックス;宣言と定義(関数の名前,引数,戻り値),呼び出し,

局所変数

#include <stdio.h>の意味

List8-2を改造して,定価を入力したら,定価の1割引の消費税込みの値段を出力するプログラムを作れ.

練習問題8-1改;xがマイナスのとき(-8から-1まで)は2乗,プラスのとき(1から8まで)は3乗のグラフを書くように練習問題8-1を改良する.

20.2.6 小テストその2->宿題

以下のようなプログラムを作成し,印刷して提出.但しプログラム先頭のコメント文に学生番号と名前を書いておくこと.九九の表の中身はfor文を用いること.(注;$はコンソールのプロンプト,0 [Enter]は0を入力してからEnterキーを押すこと,を示す)

図 20.2.6.1 実行例1
$ メニュー (1;掛け算,2;九九の表,0;終了)
0 [Enter]
図 20.2.6.2 実行例2
$ メニュー (1;掛け算,2;九九の表,0;終了)
1 [Enter]
2つの数の掛け算をします.
最初の数を入力してください;23 [Enter]
次の数を入力してください;40 [Enter]
	23 x 40 = 920 です.
図 20.2.6.3 実行例3
$ メニュー (1;掛け算,2;九九の表,0;終了)
2 [Enter]
九九の表
  |  1  2  3  4  5  6  7  8  9 
--+----------------------------
 1|  1  2  3  4  5  6  7  8  9
 2|  2  4  6  8 10 12 14 16 18
 3|  3  6  9 12 15 18 21 24 27
 4|  4  8 12 16 20 24 28 32 36
 5|  5 10 15 20 25 30 35 40 45
 6|  6 12 18 24 30 36 42 48 54
 7|  7 14 21 28 35 42 49 56 63
 8|  8 16 24 32 40 48 56 64 72
 9|  9 18 27 36 45 54 63 72 81
図 20.2.6.4 実行例4
$ メニュー (1;掛け算,2;九九の表,0;終了)
3 [Enter]
メニューの番号が違います.

11/5は小テスト改め宿題の復習と,関数の復習の残り.

11/12から配列に入ります.

20.3 後期の予定

配列,(構造体),ポインタ,ソースを読む練習,ジャンケンプログラムを強くする,アルゴリズムの計算量(整列アルゴリズムの比較),数値計算と誤差,(ファイル操作),プログラムの開発手法(make,デバッグ),オブジェクト指向プログラミング,グラフィカルなプログラミングなど