プログラミング演習( 2 組) 第 4 回
DESCRIPTION
プログラミング演習( 2 組) 第 4 回. http://www.fit.ac.jp/~matsuki/PEB1.html. 今日の内容. 前回の課題の解説 演算の優先順位 整数型 ( int ) と実数型 (double) による計算 scanf 関数(入力関数) 今日の課題. 4 月 24 日のタイピング結果 ( S-Class ). 第 1 位 松本 君 第 2 位 シャイニングp・・・何でもない。 第 3 位 無名 第 4 位 真・喰人王 第 5 位 Mat. 4 月 24 日のタイピング結果 ( A-Class ). - PowerPoint PPT PresentationTRANSCRIPT
プログラミング演習( 2 組)第 4 回
http://www.fit.ac.jp/~matsuki/PEB1.html
今日の内容• 前回の課題の解説• 演算の優先順位• 整数型 (int) と実数型 (double) による計算• scanf 関数(入力関数)• 今日の課題
4 月 24 日のタイピング結果( S-Class )
第 1 位 松本 君 第 2 位 シャイニングp・・・何でもない。 第 3 位 無名 第 4 位 真・喰人王 第 5 位 Mat
4 月 24 日のタイピング結果( A-Class )
第 1 位 P ストーン 第 2 位 柊百合第 3 位 金子 第 4 位 がっちゃん 第 5 位 kpvy
4 月 24 日のタイピング結果( B-Class )
第 1 位 忍者 第 2 位 WALLY第 3 位 toshi 第 4 位 ふでばこ 第 5 位 JUN
1 ミュンヒハウゼン症候群 983,808 S
2 シャイニングp・・・何でもない。 977,800 S
3 無名 964,200 S
4 真・喰人王 962,948 S5 Mat 917,150 S6 P ストーン 894,745 A
7 柊百合 892,050 A
8 金子雅一 885,085 A
9 がっちゃん 881,574 A10 kpvy 854,048 A11 ガンデル 849,455 A
12 衝撃の白い稲妻 842,653 A13 picpnoir 790,274 A14 @のいぢ 787,025 A
15 ⊂(+ ^ω^)⊃ 769,063 A
16 刹那・ F ・セイエイ 724,430 B
17 トランプまん 721,671 B18 M.T 703,271 B19 忍者 696,069 B20 WALLY 690,442 B21 toshi 682,924 B22 ふでばこ 670,046 B23 JUN 665,875 B24 松木 _Love 663,742 B
25 ふでばこ 661,922 B26 toshi 639,654 B27 劉薇薇 540,986 B28 MASATO☆ 502,841 B
Rank
ニックネーム
SCOREClas
s
タイピング• 喰人王を使用して結果を記録する• ステージ:第一の店(中華)• Excel のシートにスコアを毎回記録してい
く– 残り時間⇒ FeedBack ページで報告– 総タイプ数– ミスタイプ数– 正確さ⇒ FeedBack ページで報告– 喰いっぷり ⇒ FeedBack ページで報告
前回の課題(1)三角形の面積を求めるプログラムを
作れ
(2)円の円周の長さ,円の面積を求めるプログラムを作れ
(3) scanf 関数を使ってキーボードから値を入力できるように,(1)と(2)を改造せよ.
課題1(解答例 金子君)#include<stdio.h>int main(){
// 変数の宣言int height=50; // 縦の長さ [cm]int base=30; // 底辺の長さ [cm]int area; // 面積 [cm^2]
// プログラムの処理内容を画面表示printf(" 以下のような三角形の面積を求めます \n");printf(" 縦の長さ: %d[cm]\n",height);printf(" 横の長さ: %d[cm]\n",base);
// 面積の長さを計算area=base*height/2;
// 結果の表示printf("\n この三角形の面積は %d[cm^2] です \n\n",area);
return 0;}
// 変数の宣言int height=50; // 縦の長さ [cm]int base=30; // 底辺の長さ [cm]int area; // 面積 [cm^2]
// プログラムの処理内容を画面表示printf(" 以下のような三角形の面積を求めます \n");printf(" 縦の長さ: %d[cm]\n",height);printf(" 横の長さ: %d[cm]\n",base);
// 面積の長さを計算area=base*height/2;
// 結果の表示printf("\n この三角形の面積は %d[cm^2] です \n\n",area);
int 型で宣言
「 %d 」は10進数の整数として表
示
課題2(解答例 近藤君)// 変数の宣言double radius; // 円の半径の長さ [cm]double length; // 円周の長さ [cm]double area; // 面積 [cm^2]
// 円周率を設定double pai = 3.145927;
// 円の半径の長さを設定radius = 10.0;
// 面積を計算area = pai * radius * radius;
printf(" この円の面積は %f [cm^2]\n\n",area);
double 型で宣言
「 %f 」は実数として表示
#include<stdio.h>
int main(){
// 変数の宣言double radius; // 円の半径の長さ [cm]double length; // 円周の長さ [cm]double area; // 面積 [cm^2]
// 円周率を設定double pai = 3.145927;
// 円の半径の長さを設定radius = 10.0;
// プログラムの処理内容を画面表示printf(" 以下のような円の周回の長さと面積を求めます \n");printf(" 使用する円周率は π= %f\n\n",pai);printf(" 円の半径の長さ : %f [cm]\n\n",radius);
// 周回の長さを計算length = 2 * pai * radius;
// 面積を計算area = pai * radius * radius;
printf(" この円の周回の長さは %f [cm]\n",length);printf(" この円の面積は %f [cm^2]\n\n",area);
return 0;}
全角を使った変数名について• Visual Studio では、変数名に全角文字を使
用することができます。int 半径 =30;double 面積 ;double ぱい = 3.14;面積 = 半径 * 半径 * ぱい ;
• ただし、これは Visual Studio の環境でしか動作しない、特殊なプログラムになります。
•ビルドも OK•実行も OK
変数名は、半角英数文字のみを使用する
課題3(解答例 和田見君)/* プログラムの処理内容を画面表示 */printf(" 以下のような円の円周の長さと面積を求めます。 \n");
printf(" 半径 :");scanf("%lf",&radius);
double 型の変数 radiusにキーボードから値を入力させる
scanf 関数(テキスト p.92 )• 機能:標準入力(キーボード)から値を入力さ
せる• 引数:書式(変換指定子)と,変数• 変換指定子:– %d : 10 進整数– %f : float 型浮動小数点数– %lf : double 型浮動小数点数– %c : 文字– %s: 文字列– %x : 16 進数整数
• 使い方:scanf(“ 変換指定子” , & 変数 );
scanf 関数• 例:int x;float y;double z;printf(“x に入力してください” );scanf(“%d”,&x);printf(“y に入力してください” );scanf(“%f”,&y);printf(“z に入力してください” );scanf(“%lf”,&z);
int 型の変数 x に入力
float 型の変数 y に入力
double の変数 z に入力
scanf 関数の警告メッセージ• warning C4996:『warning C4996: 'scanf' が古い形式として宣言されました。 c:\program files\microsoft visual studio 8\vc\include\stdio.h(295) : 'scanf' の宣言を確認してください。 メッセージ : 'This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.‘』
Visual Studio 2005では、セキュリティ上の配慮から、scanf関数の使用に対して警告が出されます(大量のデータ入力がなされた場合に、メモリ破壊を招く危険性があるため)。
• 対策1: この警告については無視する。
• 対策2:ソースファイルの最上部に以下の一文を追加#define _CRT_SECURE_NO_DEPRECATE 1
printf 関数
型 意味 例 結果d 整数を 10 進数で表示 a = 123; printf(“%d”,a); 123
x 整数を 16 進数で表示 a = 123; printf(“%x”,a); 7b
c 1文字を表示 a = ‘R’; printf(“%c”,a); R
s 文字列を表示 char *a=“ABC”; printf(“%s”,a); ABC
f 実数を 10 進数で表示 a = 123.45; printf(“%f”,a); 123.450000
• 変数の中身を表示することが可能• 書式指定を指定することが可能
printf 関数printf (“ 表示したい文字列” , 引数1 , 引数
2 , ・・ ); 文字列書式指定文字列エスケープシーケンス
書式指定文字列
“ ・・・・ % ― 0 5 d ・・・ “
型の指定表示する最大桁数
数値の場合( 0 :ゼロサプレス無)―:左詰め(省略値は右詰め)+:符号を表示
printf 関数(テキスト p.51 )• 浮動小数点型の値を表示する場合
double pi = 3.14159265358979323;//桁数指定なし(小数点以下 6桁で表示)printf(“ 円周率 = %f”, pi);// 全部で 5桁、小数点以下は 2桁で表示printf(“ 円周率 = %5.2f”,pi);
演算• 演算子
演算子 意味 優先順位
* 掛け算 高い
/ 割り算
% 剰余算
+ 足し算― 引き算
= 代入 低い
式の評価• 式は評価されて値を持つ
式 評価結果
7 7
3 + 2 5
20 / 10 2
X = 8 8
1 + 2 3
3 * 4 12(1 + 2) * 4; 3 * 4;
12;
データ型と計算(同じ型同士)#include <stdio.h>int main(){
int a = 10, b = 3;double c;c = a / b;printf(“%d ÷ %d = %f\n”, a, b, c);return 0;
}
10/3 = 3.33333 となるはずなのに…
結果:10 ÷ 3 = 3
同じ型同士の計算を行うと、結果も同じ型になる
データ型と計算(違う型同士)#include <stdio.h>int main(){
int a = 10;double pi = 3.14;printf(“%d × %.2f = %.2f\n”, a, pi, a*pi);return 0;
}
結果:10 × 3.14 = 31.40
違う型同士の計算では、結果は大きい型に合わせられる(格上げ)
今日の課題(締切: 5/14 )(1)車の速さ speed と、目的地までの距離
distance を入力させて、目的地までの所要時間を求めるプログラムを作成せよ。
(2) 2次方程式 a x2 + b x + c = 0 の解を求める
プログラムを作成せよ( a,b,c は入力させよ)x の平方根を求めるプログラムを参考にせよ。
平方根を求めるプログラム#include <stdio.h>#include <math.h>
int main(){
double x = 2;double y;y = sqrt(x);printf(“ x の平方根は %f です” ,y);
}
注意事項• ソースファイルについて
ソースファイルは添付ファイルで送るソースファイル以外は送らないソースファイルの名前は,半角のみ使用
• メールについて件名は,学籍番号+半角スペース+氏名
(例) S09F2099 松木裕二
本文にも短いカバーレター(説明)をつける
その他• 講義に関する質問・課題提出など:
• Feed back page :http://www.fit.ac.jp/~matsuki/cgi-bin/newpage11.htmlメールアドレスの入力は不要ですニックネームを決めてください( Ranking表示に使います)