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

Microsoft PowerPoint - C1(演算と変数).ppt

N/A
N/A
Protected

Academic year: 2021

シェア "Microsoft PowerPoint - C1(演算と変数).ppt"

Copied!
9
0
0

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

全文

(1)

式の計算と変数・配列の概念

(01) sowa ← 0, saiko ← 0, saitei ← 100 (02) 配列 TNin のすべての要素を 0 にする (03) bango を 1 から 50 まで 1 ずつ増やしながら, (04) s ← Tensu [bango] (05) sowa ← + (06) もし s > ならば (07) ← s (08) を実行する (09) もし s < ならば (10) ← s (11) を実行する (12) TNin [ ] を 1 増やす (13) を繰り返す (14) heikin ← sowa / 50 ア イ ウ エ オ カ キ 条件判定文 繰返し文 代入文: 変数に値を代入(格納)する ための文 sowa ÷ 50 の値を heikin に代入する (センター入試23年度数学 ② 「情報関係基礎」 第3問) 50人の生徒の点数の平均点,最高点・最低点を求めるプログラム

(2)

計算プログラム

/* と */ で囲まれた文字列 は注釈(コメント) 注釈はプログラムの実行に は関係しない プログラムを終了させる部分には return 0 ; と書く プログラムの本体(body)は 中括弧「{ 」ではじめ,中括弧 「}」で終える ※Cプログラムは文の列から なる。文末は 「; 」(セミコロン) をつける プログラムの先頭に必ず書く オマジナイ /* 台形の面積を求めるプログラム */ #include <stdio.h> int main(void) { puts("上底4,下底8,高さ6の台形の面積を求めます") ; printf("面積は %d です¥n", (4+8)*6/2) ; return 0 ; } 「面積は」 と表示して 「, 」以降に指定される式の値を10進整数で表示し, 最後に「改行」する(¥n) 「 %d 」の部分が式の値に置き換わって画面に表示される (%d は10進(decimal)整数で値を表示することを意味する) printf("面積は %d です ¥n" , (4+8)*6/2 ) ;

◆ 文字列 / 数値を表示する

puts (put string) 関数

• 表示したい文字列を 「"」(二重引用符) で囲む。表示後,自動的に 改行される。

printf (print with format) 関数

• 表示したい文字列を 「"」(二重引用符) で囲む。改行するには「¥n」と書く。 • 文字列のほかに,「式の値」も表示できる。

cf. printf(“面積は (4+8)*6/2 です ¥n” ) ; と書いてしまうと, 「面積は (4+8)*6/2 です」 と表示されます。

(3)

式の値を表示

9 20

printf ("%d %d¥n", 4+5, 4*5)

途中で改行して表示

1

2

printf("%d¥n%d", 1, 2)

整数と文字を表示

10 と -20

printf("%dと%d", 10, -20)

文字列と整数を表示

答 10

printf("答 %d",10)

整数を表示

10

printf("%d",10)

文字列を表示

Bye !

printf("Bye !")

説明

表示

◆ 演算子

加算 + 減算 – 乗算 * 除算 / 整数同士の除算結果は小数点以下切捨て又は四捨五入 剰余 % 整数同士の場合のみ演算可

◆ 演算の優先順位

z 加算,減算 < 乗算,除算,剰余 ← 算数で習う順序と同じ (同じ優先順位の場合は左から順に計算される) z 小括弧付きの式があれば,小括弧内の演算が優先される (小括弧のみ使用可。中括弧,大括弧は使用不可) (a+b) ×(c+d)

(u+v) ×(x+y) ⇒ (a + b)*(c + d) / ((u +v)*(x + y))

あるいは (a + b)*(c + d) / (u +v) / (x + y) a×b

u×v ⇒ a*b / u*v は間違い, a*b / u / v と表記する あるいは a*b / (u*v) と表記する

(4)

計算プログラム

このプログラムでは, 上底4,下底8,高さ6の台形 の面積しか計算できない ↓ 上底,下底,高さの値をキー ボードから入力できるようにす るには ? 「変数」の利用 /* 台形の面積を求めるプログラム */ #include <stdio.h> int main(void) { puts("上底4, 下底8, 高さ6の台形の面積を求めます") ; printf("面積は %d です¥n", (4+8)*6/2) ; return 0 ; }

「変数」の概念

z 「変数」 : 値を保存(格納)する場所

z 「変数」を使うには,「変数の宣言」 が必要

int a, b, h ;

int : integer(整数) の意味

z キーボードからの数値の入力

scanf(

"

%d

"

, &a) ;

キーボードから10進整数を読み込んで,その値を変数 a に格納する

int main(void) { int a,b,h; puts("台形の面積を求めます"); printf("上底は ?"); scanf("%d",&a) ; printf("下底は ?"); scanf("%d",&b) ; printf("高さは ?"); scanf("%d",&h) ; ・・・ キーボードから数値を読み 込むには scanf 関数を使う scanf関数では変数の前に &を付けることに注意! 変数宣言 1行に複数の文を書いてもよい (意味にまとまりがあれば,1行で書いたほうがよい)

(5)

scanf の働き

scanf("%d", &a) ; ① scanf("%d", &b) ; ② scanf("%d", &h) ; ③

int a, b, h ;

4 ?

a

b

① a の場所に4 が格納される ?

b

変数の値の保存場所がメモリ内に確保される キーボードから,最初に「 4」 と入力すると, 4 8

a

b

② b の場所に8 が格納される 次に「 8 」 と入力すると, ? : 不定値 注意 : scanf 関数では,変数名の前に必ず & を付ける ?

h

?

h

?

h

次に「 6 」 と入力すると, … 場所を確保した だけでは,どん な値になってい るかわからない

変数を使った計算プログラム

キーボードから数値を読み込 むには scanf 関数を使う scanf関数では変数の前に & を付けることに注意! 変数宣言 /* 台形の面積を求めるプログラム */ #include <stdio.h> int main(void) { int a, b, h ; puts("台形の面積を求めます") ; printf("上底は ?"); scanf("%d",&a) ; printf("下底は ?"); scanf("%d",&b) ; printf(“高さは ?"); scanf("%d",&h) ; printf("面積は %d です¥n", (a+b)*h/2) ; return 0 ; }

(6)

変数の値を使った計算

printf("面積は %d です¥n", (a+b)*h/2) ; 4 8

a

b

z 式 (a + b)*h/2 はそれぞれの変数(a,b,h)の値を使って計算される 6

h

変数を使った計算プログラム

/* 台形の面積を求めるプログラム */ #include <stdio.h> int main(void) { int a, b, h ; puts("台形の面積を求めます") ; printf("上底は ?"); scanf("%d", &a ) ; printf("下底は ?"); scanf("%d", &b ) ; printf(“高さは ?"); scanf("%d", &h ) ;

printf(“面積は %d です¥n”, ( a + b ) * h / 2 ) ;

return 0 ; }

(7)

配列(array)

変数:

一つの変数には一つの値を保持する

配列:

一つの配列に複数の値を保持することができる

例 : A という名前の5個の要素をもつ整数型の配列

整数

整数

整数

整数

整数

第0要素 第1要素 第2要素 第3要素 第4要素

A [0]

A [1]

A [2]

A [3]

A [4]

C言語での整数型配列の宣言

int A[5] ;

添え字(subscript) 配列名 配列の添え字は 0から始まる

配列を使った計算プログラム

キーボードから数値を読み 込むには scanf 関数を使う scanf関数では変数の前に & を付けることに注意! 配列の宣言 /* 台形の面積を求めるプログラム */ #include <stdio.h> int main(void) { int A[3] ; puts("台形の面積を求めます") ; printf(“上底は ?”); scanf(“%d”, &A[0]) ; printf(“下底は ?”); scanf(“%d”, &A[1]) ; printf(“高さは ?”); scanf(“%d”, &A[2]) ;

printf(“面積は %d です¥n”, (A[0]+A[1])*A[2] / 2 );

return 0 ; }

(8)

課題

(1-1) 平成元号年を入力して,西暦年を表示するプログラムを作成し,正しく動作すること を確認せよ。 例えば,23 と入力したら,『平成23年は西暦2011年です』と表示させ る。(「平成23年は」という部分も表示させることに注意) (ヒント:平成の元号年を a とすると,西暦年は1988+a ) (1-2) 鶴と亀の頭の数の合計と足の数の合計を入力して, 鶴が何羽,亀が何匹いるかを 表示するプログラムを作成し,正しく動作することを確認せよ。 (ヒント:頭の数と足の数を変数として,鶴の数と亀の数について連立方程式を作り, 解を与える式の値を表示させればよい) 【考察事項】 頭の数の合計を9,足の数の合計を28としたとき,どのような結果が 得られるか。その結果は正しいか。 また,頭の数の合計を5,足の数の合計を28 とした場合にはどのような結果が得られるか。その結果は正しいか,正しくないと するとなぜ正しくないか,考察せよ。 (1-3) キーボードから入力される5個の整数を配列に格納し,総和と平均を表示するプロ グラムを作成し,正しく動作することを確認せよ。

課題

z 作成したプログラム(ソースプログラム)とその実行結果をメールで送る。 メール本文中には,必ずプログラムが正しくできていることの根拠を示すこと。 (例えば,『△△のテストデータを与えてプログラムを実行させたら,○○の結果 が得られた。したがってプログラムは正しいことが確認できた。』といったような 形式で報告すること。(1-2)については,【考察事項】の内容について報告すれ ばよい。 ) z今日の授業についての自分の理解の程度,難しかった点,感想/コメントなどがあれば 書いてください。 z上記により作成したメールを,[email protected]宛に送る。 zメールの【件名】欄は[11/28課題△時限](△は自分の授業時限)とする。 zメールの文末に自分の「署名」を付けること。(11/7授業課題(2))

(9)

頭の数を a, 足の数をb として,鶴の数を x,亀の数を y とすると 次の連立方程式が成り立つ。 x + y = a ① 2x + 4y = b ② ①,②を x と y について解くと, x = ○○○○ y = △△△△ ○○○○ と △△△△ の式の値を表示すればよい。 「①と②の式をプログラム中に書いて,x と y の 値 を 表 示 さ せ る 」 と い う の は ダ メ 。 (コンピュータはそれほど賢くない) scanf(“%d”, &a); scanf(“%d”,&b); x + y = a ; 2*x + 4*y =b ; printf(“鶴は%d羽,亀は %d匹”, x,y); これではダメ! aとbからなる式

プログラムが正しくできたことの確認

(プログラムの検証)

z テストデータを入力して合理的な結果が得られるかを確認する

正しいプログラムであることを確認することも,

プログラミング活動の一部

プログラムは人間が作るもの → 人間は間違いを犯す → 間違った考えで作られたプログラムは間違った結果をもたらす = 間違ったプログラムは何の役にもたたない! ※ コンパイラは,文法的なエラーは見つけてくれるが,人間の考えの誤りに よるプログラムの間違いまでは見つけてくれない。 (コンピュータは人間がプログラムしたことを忠実に実行する機械なのです)

参照

関連したドキュメント

 本資料作成データは、 平成24年上半期の輸出「確報値」、輸入「9桁速報値」を使用

 本資料作成データは、 平成26年上半期の輸出「確報値」、輸入「9桁速報値」を使用

 本資料作成データは、 平成29年上半期の輸出「確報値」、輸入「9桁速報値」を使用

 本資料作成データは、 平成27年上半期の輸出「確報値」、輸入「9桁速報値」を使用

 貿易統計は、我が国の輸出入貨物に関する貿易取引を正確に表すデータとして、品目別・地域(国)別に数量・金額等を集計して作成しています。こ

 本資料作成データは、 平成25年上半期の輸出「確報値」、輸入「9桁速報値」を使用

2011 (平成 23 )年度、 2013 (平成 25 )年度及び 2014 (平成 26 )年度には、 VOC

ことの確認を実施するため,2019 年度,2020