SlideShare a Scribd company logo
1 of 29
cp-3. 計算
(C プログラミング入門)
URL: https://www.kkaneko.jp/pro/adp/index.html
1
金子邦彦
内容
例題1.自由落下距離
四則演算
例題2.三角形の面積
浮動小数の変数,入力文,出力文,代入文
例題3. sin 関数による三角形の面積
ライブラリ関数
2
目標
• プログラムを使って,自分の思い通りの計算がで
きるようになる
• 四則演算
• ライブラリ関数(三角関数,対数・指数関数など)
• 見やすいプログラムを書くために,ブロック単位
での字下げを行う
3
例題1.自由落下距離
• 自由落下距離を求めるプログラムを作る
• 地上で物を落とし始めた後の自由落下距離を求める
• 重力加速度 g は 9.8 とする
• 自由落下距離を求めるために,プログラム中に,計算
式 y = ( 9.8 / 2.0 ) * x * x を書く
4
#include <stdio.h>
#include <math.h>
#pragma warning(disable:4996)
int main()
{
double x;
double y;
char buf[256];
int i;
double start_x;
double step_x;
FILE* fp;
printf( "start_x =" );
fgets( buf, 256, stdin );
sscanf_s( buf, "%lfn", &start_x );
printf( "step_x =" );
fgets( buf, 256, stdin );
sscanf_s( buf, "%lfn", &step_x );
fp = fopen( "z:data.csv", "w" );
for( i = 0; i < 20; i++ ) {
x = start_x + ( i * step_x );
y = ( 9.8 / 2.0 ) * x * x;
printf( "x= %f, y= %fn", x, y );
fprintf( fp, "x=, %f, y=, %fn", x, y );
}
fprintf( stderr, "file createdn" );
fclose( fp );
return 0;
}
自由落下距離の
計算を行っている部分
5
実行結果例
start_x =0
step_x = 0.1
x= 0.000000, y= 0.000000
x= 0.100000, y= 0.049000
x= 0.200000, y= 0.196000
x= 0.300000, y= 0.441000
x= 0.400000, y= 0.784000
x= 0.500000, y= 1.225000
x= 0.600000, y= 1.764000
x= 0.700000, y= 2.401000
x= 0.800000, y= 3.136000
x= 0.900000, y= 3.969000
x= 1.000000, y= 4.900000
x= 1.100000, y= 5.929000
x= 1.200000, y= 7.056000
x= 1.300000, y= 8.281000
x= 1.400000, y= 9.604000
(以下続く) 6
四則演算のための演算子
• + 和
• - 差
• * 積
• / 商
7
例題2.三角形の面積
• 底辺と高さを読み込んで,面積を計算するプログ
ラムを作る
例) 底辺が2.5,高さが5のとき,
面積: 6.25
• 底辺,高さ,面積を扱うために,浮動小数の変数
を3つ使う
8
#include <stdio.h>
#pragma warning(disable:4996)
int main()
{
double teihen;
double takasa;
double menseki;
printf("teihen=");
scanf("%lf", &teihen);
printf("takasa=");
scanf("%lf", &takasa);
menseki = teihen*takasa*0.5;
printf("menseki=%fn", menseki);
return 0;
}
入力部分
出力部分
計算部分
9
実行結果例
x=2.5
y=5
z = 6.250000
10
プログラム実行順
printf("teihen=");
scanf("%lf", &teihen);
menseki = teihen * takasa * 0.5;
printf("menseki = %fn", menseki);
return 0;
メッセージ「teihen=」を表示
浮動小数データを読み込み
計算
計算結果を表示
終わり
printf("takasa=");
scanf("%lf", &takasa);
メッセージ「takasa=」を表示
浮動小数データを読み込み
11
プログラムとデータ
メモリ
takasa
menseki
3つの変数
scanf("%lf", &teihen);
teihen
①
浮動小数データを読み込み
printf("menseki = %fn", menseki);
④
計算結果を表示
menseki = tekhen * takasa * 0.5;
③
計算
scanf("%lf", &takasa);
②
浮動小数データを読み込み
12
変数宣言
• 変数は,データを入れるための容器
• 変数宣言とは,変数を使うために,名前と型を書い
て,変数の使用をコンピュータに伝えること
double teihen;
double takasa;
double menseki;
浮動小数データで,変数名は「teihen」
浮動小数データで,変数名は「takasa」
浮動小数データで,変数名は「menseki」
「double」とは,浮動小数データという
意味.
13
代入文
• 計算結果(teihen*takasa*0.5)を,変数 menseki
に格納する(このことを,代入という)
• 「=」は,変数に計算結果等を格納するという意
味.「両辺が等しい」という意味ではない
menseki = teihen*takasa*0.5;
14
入力,出力とは
• 入力
• データの読み込み
(読み込まれたデータは変数に格納される)
• 出力
• メッセージの表示
• データの表示
(変数に格納されたデータが表示される)
15
入力文
• 入力文とは,データを読み込むための文
• 書式と読み込むべき変数名を書く
• 書式: 浮動小数データを読み込む場合,書式は
「%lf」 と書くことになっている
• 変数名: 変数名の前には「&」を付けること
scanf("%lf", &teihen);
書式 読み込むべき変数名
&
16
いろいろな入力
double x;
scanf( "%lfn", &x );
double a;
double b;
scanf( "%lfn", &a );
scanf( "%lfn", &b );
浮動小数の変数
x への入力
浮動小数の変数
a と b への入力
17
出力文
• 出力文とは,データとメッセージを表示するため
の文
• 書式と表示すべき変数名を書く
• 書式: 浮動小数データを表示する場合,書式は
「%f」 と書くことになっている
• 変数名: 変数名の前には「&」を付けない (scanf と
は違う)
printf("menseki=%fn", menseki);
書式 表示すべき変数名
18
いろいろな出力
printf( "x= ?" ); メッセージ 「x= ?」の
表示
printf( "x= %f" );
printf( "y= %f" );
「x= 10.0000
y= 20.0000」
のように,メッセージ
と変数の中身を並べて
表示
19
¥n
次の行に進め(改行)という指示
printf 文などの中で用いる
(例)
printf("menseki=%fn", menseki);
20
浮動小数データの使い方
• 変数宣言:
double teihen;
double takasa;
double menseki;
• 書式:
%lf - scanf(入力)での書式
%f - printf (出力)での書式
21
例題3.sin 関数による三角形の面積
• 三角形の2辺の長さ a, b とその挟角 thetaを読み
込んで,面積 S を計算するプログラムを作る
• 面積を求めるために,sin関数を使う
• 円周率π=3.14159 とする

sin
2
1
ab
S 
22
#include <stdio.h>
#include <math.h>
#pragma warning(disable:4996)
int main()
{
double a;
double b;
double theta;
double S;
printf("a=");
scanf("%lf", &a);
printf("b=");
scanf("%lf", &b);
printf("theta=");
scanf("%lf", &theta);
S = 0.5 * a * b * sin( theta * 3.14159 / 180.0 );
printf("S = %fn ", S );
return 0;
}
入力部分
計算部分
出力部分 23
ライブラリ関数
• 指数,対数,平方根
• exp 指数関数(eを底とする指数zの累乗,eのz乗)
• log 対数関数(底をeとする自然対数の計算)
• sqrt 平方根
• 三角関数
• acos 逆コサイン
• asin 逆サイン
• atan 逆タンジェント
• cos コサイン
• sin サイン
• tan タンジェント
• その他
• fabs 絶対値
• fmod(x,y) 浮動小数データの剰余
• pow(x,y)べき乗(xのy乗)
24
いろいろな計算
y = sin( x );
y = sqrt( x );
d = sqrt( ( x * x ) + ( y * y ) );
sin x を計算し,y に格納
x を計算し,y に格納
√
x2 + y2 を計算し,d に格納
√
25
ライブラリ関数の利用
• 計算に関するライブラリ関数を利用するには,
を,プログラムの先頭部分に書くこと
#include <math.h>
26
三角関数では「ラジアン」を使う
#include <stdio.h>
#include <math.h>
#pragma warning(disable:4996)
int main()
{
double degree;
double s;
printf("degree=");
scanf("%lf", &degree);
s = sin( degree * 3.14159 / 180.0 );
printf("sin(%f) = %fn ", degree, s );
return 0;
}
• 180.0 の「.0」には意味がある(浮動小数での計算を行うべき
であることをコンピュータに教えている)
「度」から「ラジアン」への変換
27
課題1.Heron の公式
• 三角形の3辺の長さ a, b, c を読み込んで,面
積 S を計算するプログラムを作りなさい.
• Heronの公式を用いること
但し
)
)(
)(
( c
s
b
s
a
s
s
S 



2
/
)
( c
b
a
s 


28
課題2.四則演算
• 2つの数を読み込んで,和,差,積,商,
剰余を計算するプログラムを作りなさい
29

More Related Content

Similar to cp-3. 計算

Reflexの紹介
Reflexの紹介Reflexの紹介
Reflexの紹介Rie Nakau
 
統計環境R_データ入出力編2016
統計環境R_データ入出力編2016統計環境R_データ入出力編2016
統計環境R_データ入出力編2016wada, kazumi
 
Rプログラミング02 データ入出力編
Rプログラミング02 データ入出力編Rプログラミング02 データ入出力編
Rプログラミング02 データ入出力編wada, kazumi
 
初心者講習会資料(Osaka.R#5)
初心者講習会資料(Osaka.R#5)初心者講習会資料(Osaka.R#5)
初心者講習会資料(Osaka.R#5)Masahiro Hayashi
 
初心者講習会資料(Osaka.r#6)
初心者講習会資料(Osaka.r#6)初心者講習会資料(Osaka.r#6)
初心者講習会資料(Osaka.r#6)Masahiro Hayashi
 
つくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタつくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタ京大 マイコンクラブ
 
統計環境R_はじめの一歩2016
統計環境R_はじめの一歩2016統計環境R_はじめの一歩2016
統計環境R_はじめの一歩2016wada, kazumi
 
Scalaプログラミング・マニアックス
Scalaプログラミング・マニアックスScalaプログラミング・マニアックス
Scalaプログラミング・マニアックスTomoharu ASAMI
 
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)YoheiOkuyama
 
オブジェクト指向開発におけるObject-Functional Programming
オブジェクト指向開発におけるObject-Functional Programmingオブジェクト指向開発におけるObject-Functional Programming
オブジェクト指向開発におけるObject-Functional ProgrammingTomoharu ASAMI
 
Washingtondc b20161214 (2/3)
Washingtondc b20161214 (2/3)Washingtondc b20161214 (2/3)
Washingtondc b20161214 (2/3)Toshiyuki Shimono
 
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexprGenya Murakami
 

Similar to cp-3. 計算 (20)

cp-7. 配列
cp-7. 配列cp-7. 配列
cp-7. 配列
 
ji-2. 計算
ji-2. 計算ji-2. 計算
ji-2. 計算
 
Reflexの紹介
Reflexの紹介Reflexの紹介
Reflexの紹介
 
Python opt
Python optPython opt
Python opt
 
統計環境R_データ入出力編2016
統計環境R_データ入出力編2016統計環境R_データ入出力編2016
統計環境R_データ入出力編2016
 
Matlab講習2021
Matlab講習2021Matlab講習2021
Matlab講習2021
 
Rプログラミング02 データ入出力編
Rプログラミング02 データ入出力編Rプログラミング02 データ入出力編
Rプログラミング02 データ入出力編
 
初心者講習会資料(Osaka.R#5)
初心者講習会資料(Osaka.R#5)初心者講習会資料(Osaka.R#5)
初心者講習会資料(Osaka.R#5)
 
初心者講習会資料(Osaka.r#6)
初心者講習会資料(Osaka.r#6)初心者講習会資料(Osaka.r#6)
初心者講習会資料(Osaka.r#6)
 
講座C入門
講座C入門講座C入門
講座C入門
 
What is template
What is templateWhat is template
What is template
 
HiRoshimaR3_IntroR
HiRoshimaR3_IntroRHiRoshimaR3_IntroR
HiRoshimaR3_IntroR
 
つくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタつくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタ
 
統計環境R_はじめの一歩2016
統計環境R_はじめの一歩2016統計環境R_はじめの一歩2016
統計環境R_はじめの一歩2016
 
Scalaプログラミング・マニアックス
Scalaプログラミング・マニアックスScalaプログラミング・マニアックス
Scalaプログラミング・マニアックス
 
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
 
オブジェクト指向開発におけるObject-Functional Programming
オブジェクト指向開発におけるObject-Functional Programmingオブジェクト指向開発におけるObject-Functional Programming
オブジェクト指向開発におけるObject-Functional Programming
 
C#勉強会
C#勉強会C#勉強会
C#勉強会
 
Washingtondc b20161214 (2/3)
Washingtondc b20161214 (2/3)Washingtondc b20161214 (2/3)
Washingtondc b20161214 (2/3)
 
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
 

More from kunihikokaneko1

cs-8. 表計算ソフトウエアを用いたデータの扱い
cs-8. 表計算ソフトウエアを用いたデータの扱い cs-8. 表計算ソフトウエアを用いたデータの扱い
cs-8. 表計算ソフトウエアを用いたデータの扱い kunihikokaneko1
 
cs-7. 乱数,シミュレーション
cs-7. 乱数,シミュレーション  cs-7. 乱数,シミュレーション
cs-7. 乱数,シミュレーション kunihikokaneko1
 
cs-6. データベースとデータサイエンス
cs-6. データベースとデータサイエンスcs-6. データベースとデータサイエンス
cs-6. データベースとデータサイエンスkunihikokaneko1
 
cs-5. 人工知能の概要
cs-5. 人工知能の概要 cs-5. 人工知能の概要
cs-5. 人工知能の概要 kunihikokaneko1
 
cs-4. プログラミング入門
cs-4. プログラミング入門cs-4. プログラミング入門
cs-4. プログラミング入門kunihikokaneko1
 
cs-3. パノラマ画像,ストリートビュー,3次元コンピュータグラフィックス
cs-3. パノラマ画像,ストリートビュー,3次元コンピュータグラフィックスcs-3. パノラマ画像,ストリートビュー,3次元コンピュータグラフィックス
cs-3. パノラマ画像,ストリートビュー,3次元コンピュータグラフィックスkunihikokaneko1
 
cs-2. コンピュータによる画像制作,人工知能でできること,情報のコード化,デジタル画像,画素
cs-2. コンピュータによる画像制作,人工知能でできること,情報のコード化,デジタル画像,画素 cs-2. コンピュータによる画像制作,人工知能でできること,情報のコード化,デジタル画像,画素
cs-2. コンピュータによる画像制作,人工知能でできること,情報のコード化,デジタル画像,画素 kunihikokaneko1
 
cs-1. 無料ソフトウエア,無料データ,エコシステム,Scratch プログラミング,Scratch のキャラクタ
cs-1. 無料ソフトウエア,無料データ,エコシステム,Scratch プログラミング,Scratch のキャラクタcs-1. 無料ソフトウエア,無料データ,エコシステム,Scratch プログラミング,Scratch のキャラクタ
cs-1. 無料ソフトウエア,無料データ,エコシステム,Scratch プログラミング,Scratch のキャラクタkunihikokaneko1
 
mi-8. 人工知能とコンピュータビジョン
mi-8. 人工知能とコンピュータビジョンmi-8. 人工知能とコンピュータビジョン
mi-8. 人工知能とコンピュータビジョンkunihikokaneko1
 
mi-7. 学習と検証, 学習不足, 過学習, 学習曲線
mi-7. 学習と検証, 学習不足, 過学習, 学習曲線mi-7. 学習と検証, 学習不足, 過学習, 学習曲線
mi-7. 学習と検証, 学習不足, 過学習, 学習曲線kunihikokaneko1
 
mi-6. 画像分類システム
mi-6. 画像分類システムmi-6. 画像分類システム
mi-6. 画像分類システムkunihikokaneko1
 
mi-5. ディープラーニング
mi-5. ディープラーニングmi-5. ディープラーニング
mi-5. ディープラーニングkunihikokaneko1
 
mi-3. データサイエンス・AIの演習
mi-3. データサイエンス・AIの演習mi-3. データサイエンス・AIの演習
mi-3. データサイエンス・AIの演習kunihikokaneko1
 
mi-2. データサイエンス・AIの事例
mi-2. データサイエンス・AIの事例mi-2. データサイエンス・AIの事例
mi-2. データサイエンス・AIの事例kunihikokaneko1
 
mi-1. 人工知能の概要
mi-1. 人工知能の概要mi-1. 人工知能の概要
mi-1. 人工知能の概要kunihikokaneko1
 
Coding Standards of C++ について
 Coding Standards of C++ について  Coding Standards of C++ について
Coding Standards of C++ について kunihikokaneko1
 
co-3. サブクラス、継承
co-3. サブクラス、継承co-3. サブクラス、継承
co-3. サブクラス、継承kunihikokaneko1
 
co-2. メソッド定義と呼び出し
co-2. メソッド定義と呼び出しco-2. メソッド定義と呼び出し
co-2. メソッド定義と呼び出しkunihikokaneko1
 

More from kunihikokaneko1 (20)

cs-8. 表計算ソフトウエアを用いたデータの扱い
cs-8. 表計算ソフトウエアを用いたデータの扱い cs-8. 表計算ソフトウエアを用いたデータの扱い
cs-8. 表計算ソフトウエアを用いたデータの扱い
 
cs-7. 乱数,シミュレーション
cs-7. 乱数,シミュレーション  cs-7. 乱数,シミュレーション
cs-7. 乱数,シミュレーション
 
cs-6. データベースとデータサイエンス
cs-6. データベースとデータサイエンスcs-6. データベースとデータサイエンス
cs-6. データベースとデータサイエンス
 
cs-5. 人工知能の概要
cs-5. 人工知能の概要 cs-5. 人工知能の概要
cs-5. 人工知能の概要
 
cs-4. プログラミング入門
cs-4. プログラミング入門cs-4. プログラミング入門
cs-4. プログラミング入門
 
cs-3. パノラマ画像,ストリートビュー,3次元コンピュータグラフィックス
cs-3. パノラマ画像,ストリートビュー,3次元コンピュータグラフィックスcs-3. パノラマ画像,ストリートビュー,3次元コンピュータグラフィックス
cs-3. パノラマ画像,ストリートビュー,3次元コンピュータグラフィックス
 
cs-2. コンピュータによる画像制作,人工知能でできること,情報のコード化,デジタル画像,画素
cs-2. コンピュータによる画像制作,人工知能でできること,情報のコード化,デジタル画像,画素 cs-2. コンピュータによる画像制作,人工知能でできること,情報のコード化,デジタル画像,画素
cs-2. コンピュータによる画像制作,人工知能でできること,情報のコード化,デジタル画像,画素
 
cs-1. 無料ソフトウエア,無料データ,エコシステム,Scratch プログラミング,Scratch のキャラクタ
cs-1. 無料ソフトウエア,無料データ,エコシステム,Scratch プログラミング,Scratch のキャラクタcs-1. 無料ソフトウエア,無料データ,エコシステム,Scratch プログラミング,Scratch のキャラクタ
cs-1. 無料ソフトウエア,無料データ,エコシステム,Scratch プログラミング,Scratch のキャラクタ
 
mi-8. 人工知能とコンピュータビジョン
mi-8. 人工知能とコンピュータビジョンmi-8. 人工知能とコンピュータビジョン
mi-8. 人工知能とコンピュータビジョン
 
mi-7. 学習と検証, 学習不足, 過学習, 学習曲線
mi-7. 学習と検証, 学習不足, 過学習, 学習曲線mi-7. 学習と検証, 学習不足, 過学習, 学習曲線
mi-7. 学習と検証, 学習不足, 過学習, 学習曲線
 
mi-6. 画像分類システム
mi-6. 画像分類システムmi-6. 画像分類システム
mi-6. 画像分類システム
 
mi-5. ディープラーニング
mi-5. ディープラーニングmi-5. ディープラーニング
mi-5. ディープラーニング
 
mi-4. 機械学習
mi-4. 機械学習mi-4. 機械学習
mi-4. 機械学習
 
mi-3. データサイエンス・AIの演習
mi-3. データサイエンス・AIの演習mi-3. データサイエンス・AIの演習
mi-3. データサイエンス・AIの演習
 
mi-2. データサイエンス・AIの事例
mi-2. データサイエンス・AIの事例mi-2. データサイエンス・AIの事例
mi-2. データサイエンス・AIの事例
 
mi-1. 人工知能の概要
mi-1. 人工知能の概要mi-1. 人工知能の概要
mi-1. 人工知能の概要
 
kaneko202304.pptx
kaneko202304.pptxkaneko202304.pptx
kaneko202304.pptx
 
Coding Standards of C++ について
 Coding Standards of C++ について  Coding Standards of C++ について
Coding Standards of C++ について
 
co-3. サブクラス、継承
co-3. サブクラス、継承co-3. サブクラス、継承
co-3. サブクラス、継承
 
co-2. メソッド定義と呼び出し
co-2. メソッド定義と呼び出しco-2. メソッド定義と呼び出し
co-2. メソッド定義と呼び出し
 

cp-3. 計算