プログラミングI 第2回 数理物理,総合理学等向け

Similar documents
char int float double の変数型はそれぞれ 文字あるいは小さな整数 整数 実数 より精度の高い ( 数値のより大きい より小さい ) 実数 を扱う時に用いる 備考 : 基本型の説明に示した 浮動小数点 とは数値を指数表現で表す方法である 例えば は指数表現で 3 書く

Microsoft PowerPoint - 説明2_演算と型(C_guide2)【2015新教材対応確認済み】.pptx

以上

PowerPoint Presentation

講習No.1

プログラミング実習I

目次

gengo1-2

PowerPoint プレゼンテーション

1. 関数 scanf() 関数 printf() は変数の値を画面に表示しますが それに対し関数 scanf() はキーボードで入力した値を変数に代入します この関数を活用することで対話式 ( ユーザーの操作に応じて処理を行う ) プログラムを作ることができるようになります 整数の和

Microsoft Word - Cプログラミング演習(1)_2012

ゲームエンジンの構成要素

PowerPoint プレゼンテーション

スライド 1

Microsoft PowerPoint - program.ppt [互換モード]

書式に示すように表示したい文字列をダブルクォーテーション (") の間に書けば良い ダブルクォーテーションで囲まれた文字列は 文字列リテラル と呼ばれる プログラム中では以下のように用いる プログラム例 1 printf(" 情報処理基礎 "); printf("c 言語の練習 "); printf

Microsoft PowerPoint - kougi2.ppt

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

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

cp-7. 配列

<4D F736F F D20438CBE8CEA8D758DC F0939A82C282AB2E646F63>

C プログラミング 1( 再 ) 第 4 回 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ 1

Microsoft Word - 3new.doc

kiso2-09.key

kiso2-03.key

ガイダンス

Microsoft Word - no02.doc

プログラミング方法論 II 第 14,15 回 ( 担当 : 鈴木伸夫 ) 問題 17. x 座標と y 座標をメンバに持つ構造体 Point を作成せよ 但し座標 は double 型とする typedef struct{ (a) x; (b) y; } Point; 問題 18. 問題 17 の

Microsoft Word - COMP-MATH-2017-FULLTEXT.doc

Cプログラミング1(再) 第2回

Microsoft PowerPoint - 3.ppt [互換モード]

Microsoft PowerPoint - 12.ppt [互換モード]

プログラミング基礎

Microsoft PowerPoint - 4.pptx

Microsoft PowerPoint - 13.ppt [互換モード]

C 言語第 3 回 2 a と b? 関係演算子 a と b の関係 関係演算子 等しい a==b 等しくない a!=b より大きい a>b 以上 a>=b より小さい a<b 以下 a<=b 状態 真偽 値 条件が満たされた場合 TRUE( 真 ) 1(0 以外 ) 条件が満たされなかった場合 F

Report#2.docx

PowerPoint プレゼンテーション

情報処理演習 B8クラス

Microsoft PowerPoint - 説明3_if文switch文(C_guide3)【2015新教材対応確認済み】.pptx

講習No.9

初歩のC言語ターミナル_2014_May.pages

Microsoft Word - no11.docx

02: 変数と標準入出力

講習No.10

Report#2.docx

ポインタ変数

Microsoft Word - no103.docx

Microsoft PowerPoint - prog03.ppt

Microsoft PowerPoint - å®�æ−•è©¦é¨fi3ㆮ対ç�Œ.pptx

Microsoft PowerPoint - 4.ppt [互換モード]

Microsoft PowerPoint - kougi4.ppt

C¥×¥í¥°¥é¥ß¥ó¥° ÆþÌç

情報工学実験 C コンパイラ第 2 回説明資料 (2017 年度 ) 担当 : 笹倉 佐藤

Microsoft PowerPoint - prog04.ppt

Prog1_2nd

Microsoft PowerPoint - lec10.ppt

Microsoft PowerPoint ppt

第2回講義:まとめ

プログラミング基礎

PowerPoint Presentation

プログラミングI 第2回 数理物理,総合理学等向け

4 分岐処理と繰返し処理 ( 教科書 P.32) プログラムの基本的処理は三つある. (1) 順次処理 : 上から下に順番に処理する ぶんきそろ (2) 分岐処理 : 条件が揃えば, 処理する はんぷく (3) 反復処理 : 条件が揃うまで処理を繰り返す 全てのプログラムは (1) から (3) の

講習No.12

プログラミング実習I

/*Source.cpp*/ #include<stdio.h> //printf はここでインクルードして初めて使えるようになる // ここで関数 average を定義 3 つの整数の平均値を返す double 型の関数です double average(int a,int b,int c){

8 / 0 1 i++ i 1 i-- i C !!! C 2

Prog1_15th

ポインタ変数

PowerPoint プレゼンテーション

Microsoft PowerPoint - C言語の復習(配布用).ppt [互換モード]

Microsoft PowerPoint - 第3回目.ppt [互換モード]

JavaプログラミングⅠ

Microsoft PowerPoint - kougi6.ppt

Microsoft PowerPoint - bp02.ppt

(2) 構造体変数の宣言 文法は次のとおり. struct 構造体タグ名構造体変数名 ; (1) と (2) は同時に行える. struct 構造体タグ名 { データ型変数 1; データ型変数 2;... 構造体変数名 ; 例 : struct STUDENT{ stdata; int id; do

Microsoft Word - java a.doc

Microsoft PowerPoint - prog06.ppt

C C UNIX C ( ) 4 1 HTML 1

Microsoft PowerPoint - lec4.ppt

第 1 回 C 言語講座 1. コンピュータって? だいたいは 演算装置 制御装置 記憶装置 入出力装置から構成されている 演算装置 CPU の一部で実際に計算を行う装置 制御装置 CPU の一部で演算装置や入出力装置 記憶装置の読み書きなどを制御する装置 記憶装置プログラムや情報 データを一時的

Microsoft PowerPoint - C4(反復for).ppt

Microsoft PowerPoint - CproNt02.ppt [互換モード]

プログラミング基礎

Microsoft PowerPoint - 12.ppt [互換モード]

プログラミング基礎

memo

Microsoft PowerPoint - 3.pptx

スライド 1

※ ポイント ※

Microsoft PowerPoint - class04.ppt

<4D F736F F F696E74202D2097D58FB089E6919C8B5A8F708A E B8CDD8AB B83685D>

02: 変数と標準入出力

プログラミングI 主に数理物理向け

関数の中で宣言された変数の有効範囲はその関数の中だけです さっきの rectangle _s で宣言されている変数 s は他の関数では使用できません ( 別の関数で同じ名前の変数を宣言することはできますが 全く別の変数として扱われます このように ある関数の中で宣言されている変数のことをその関数の

7 ポインタ (P.61) ポインタを使うと, メモリ上のデータを直接操作することができる. 例えばデータの変更 やコピーなどが簡単にできる. また処理が高速になる. 7.1 ポインタの概念 変数を次のように宣言すると, int num; メモリにその領域が確保される. 仮にその開始のアドレスを 1

講習No.8

C 言語固有の命令で全部で32 個 の関数C 言語第 1 回 C 言語って?( シラバス 1 2 回目 ) 関数型言語 コンピュータに実行してもらう命令はすべて関数の中に記述されている 関数がプロ グラム

CプログラミングI

Microsoft Word - Cプログラミング演習(3)

Transcription:

http://www0.info.kanagawa-u.ac.jp/~kaiya/p1/ dotcampus ショートコード 221137 プログラミング I 第 2 回数理物理, 総合理学等向け 2017 年 10 月 2 日 海谷治彦 1

目次 第 2 章 ( レ ) 2 章 ( 明 ) 数値の計算 と 3 章 ( レ ) 1-2 章 ( 明 ) 変数 の内容となります. 整数における加減乗除の計算 その結果を printf で表示する方法 数学の変数との違い 変数を定義 ( 宣言 ) する 型について 変数に値をしまう 変数の値を読む 実数の表示フォーマット (printf) ユーザーが入力した数値を変数に読み込む 2

四則演算の記号がちょっと違う 足し算 + + 例 3+2 引き算 - - 例 5-8 掛け算 * 3*4 アスタリスクと呼ばれる記号 割り算 / 7/3 3

演算子の結合度 どの演算子がくっつき具合が強いかは,( たぶん ) 通常の数学や算数と同じ 123 + 45 * 67 8 / 2 = 123 + (45 * 67) (8 / 2) すなわち * / のほうを - + よりも先に計算する. ( ) がついた場合,( ) の内側から計算する. 4

計算結果の表示 計算結果を表示するのにも,printf を用いることができる. そもそも,printf は, Print format の略語, 数値や文字列等のデータを整形 (format) して印字 (print) する. Decimal 十進法数のこと 5

List 2-1( レ ) 改 p.4-7 ( 明 ) 01: #include <stdio.h> 02: 03: 04: 05: int main(void) 06: { 07: printf( Kasan %d desu. n, 3+2); 08: printf( Genzan %d desu. n, 5-8); 09: printf( jouzan %d desu. n, 3*4); 10: printf( Jozan %d desu. n, 7/3); 11: return(0); 12: } 注意! 行番号がついたままでは, コンパイルできません. 6

結果は以下になる 01: #include <stdio.h> 02: 03: 04: 05: int main(void) 06: { 07: printf( Kasan %d desu. n, 3+2); 08: printf( Genzan %d desu. n, 5-8); 09: printf( jouzan %d desu. n, 3*4); 10: printf( Jozan %d desu. n, 7/3); 11: return(0); 12: } Kasan 5 desu. Genzan -3 desu. jouzan 12 desu. Jozan 2 desu. 7

%d に結果が埋め込まれる 01: #include <stdio.h> 02: 03: 04: 05: int main(void) 06: { 07: printf( Kasan %d desu. n, 3+2); 08: printf( Genzan %d desu. n, 5-8); 09: printf( jouzan %d desu. n, 3*4); 10: printf( Jozan %d desu. n, 7/3); 11: return(0); 12: } 8

割り算では結果は切り捨て 01: #include <stdio.h> 02: 03: 04: 05: int main(void) 06: { 07: printf( Kasan %d desu. n, 3+2); 08: printf( Genzan %d desu. n, 5-8); 09: printf( jouzan %d desu. n, 3*4); 10: printf( Jozan %d desu. n, 8/3); 11: return(0); 12: } Kasan 5 desu. Genzan -3 desu. jouzan 12 desu. Jozan 2 desu. 8/3 は 2.6 であるが,3 ではなく 2 9

%d は複数回使える (fig. 2-4 類似 ) ソースプログラム #include <stdio.h> main(){ printf("tasu %d hiku %d kake %d wari %d n", 3+2, 5-8, 3*4, 8/3); } 結果 tasu 5 hiku -3 kake 12 wari 2 10

表示ケタ数の指定 数値の桁数の幅を指定したい場合,%5d 等で,5 ケタ等が指定できる. // keta.c #include <stdio.h> main(){ printf("%8d miso n", 340); printf("%8d sato n", 45); printf("%8d wine n", 4321); } 340 miso 45 sato 4321 wine 11

変数について とりあえず数値のみ 12

復習 簡易な例題 ~ 二値の平均 メモリ 100 番地の数値を読め 101 番地の数値を読め数値を合計せよ 数値を2で割れ 102 番地の数値を書け 50 51 52 4 CPU 100 101 102 5 3 4 この XX 番地の数値 ってのを, プログラム中でどう表現するか, どう扱うかがメインテーマ 13

数学の変数とは違う 数学の変数 方程式の中の変数は, 同じシンボル ( 例えば x, y 等 ) なら, 同じ値を持つものとみなす. 例 x 2 +2=3x x は 1 もしくは 2 どちらかの値をとる. 定義式の変数も同様である. 例 f(x)=x 2-3x+2 f(1)=0, f(2)=0, f(3)=2 等 要は未知の値に便宜上, 名前をつけているモノである. C プログラムの変数 変数は値の保管場所の名前である. 保管してある値は, ある瞬間には 1 個である. 同じ変数でも, 実際の値はプログラムによって変わる. 14

C 言語の変数と基本操作 変数は値の保管箱なので, 以下の三種類の操作を行うことができる. 変数定義 : 値を保管する場所の確保 Declaration の訳語なので, 定義より宣言のほうが一般的. 代入 : 値を保管する 参照 : 保管してある値を見る, 使う 以降, それぞれについて解説する, その前に p.10-13 ( 明 ) 15

変数の型について 値の種類によって保管箱の大きさが異なる. 単なる整数, 例えば 124 よりも, 実数, 例えば 3.14159254 を保管する箱のほうが大きめじゃないと困るでしょ. よって, 型というもので変数の種類 ( 保管場所の大きさ ) を区別する. C 言語には多様な型があるが, 当面, 以下くらいを知っていればよい. int 整数を保管する変数の型, 英単語 integer に由来. float 実数を保管する箱の型 ( 通常 int と同じサイズなので精度が悪い, 浮動小数点と呼ばれる ) double 倍精度実数を保管する型 char 文字 1 個を保管する型, 英単語 character に由来. p.28-31 ( 明 ) 16

参考箱の大きさ 型によって一個の変数の大きさは異なる. char を 1 箱とすると, int 4 箱分 float 4 箱分 double 8 箱分が一般的. しかし,C 言語にはこの辺の明確な規定が無い. ハードウェアの効率にあわせてよいため. x 文字 15 整数 17

変数を作る ( 定義もしくは宣言 ) C では変数を使う前に必ず変数を定義しなければならない. 箱に値を入れる前に箱を準備するのと同じ理屈. 前述のように箱の大きさを定義時点で指定する. 以下, 例 18

変数に値を入れる ; 代入文 定義した変数に値を保管するには, 以下の構文を用いる, 例えば, x = 4; 数学の等式と見た目は同じだが意味は違うので注意! 必ず = の左には, 変数名が1 個でなければいけない. 繰り返しになるが, 代入文は等式では無い. 19

値は上書きすれば前のは消える 変数は値の保管場所なので, 新しい値を後から入れれば, 前に入っていた値は消えてしまう. 20

変数の値を見る ( 使う ) 宣言して値を入れた変数は, 通常の値と同様に使うことができる. 見るだけなので消えない. 21

コンピュータの代入文の解釈 コンピュータは以下の順番で代入文を処理する 1. = の右側の式を計算する. 2. 計算結果を = の左側の変数に保管する. よって, 以下のような構文は正しい ( 等式と思うと間違っているでしょ ) x=x+1; y=y-2; コンピュータは以下のような書き換えはできない, というか, 後者は C 言語としては, 構文エラー. x=x+1; x-1=x; // コレは文法的に間違い 22

#include <stdio.h> 例題 3-1 int main(void) { 4 int x; x x = 4; printf("%d n", 2*x+3); return 0; } 言い忘れたかもしれませんが, C 言語では, # で始まる行や // を含む行以外は, 空白文字や改行の位置は自由で結構です. ただし, 日本語の空白文字は, 絶対に使わないでください. ( むしろ日本語はつかわないで ) 23

例題 3-2 複数の変数を利用 #include <stdio.h> int main(void) { int x, y; x = 15; y = 32; printf("%d n", (x+y)/2); return 0; } 15 32 x y 24

例題 3-3 浮動小数 #include <stdio.h> int main(void) { float x, y; x = 15.0; y = 32.0; printf("%0.1f n", (x+y)/2); return 0; } 15.0 32.0 x y 実際,int の箱と float の箱の大きさは, 同じ場合が多いです. 単に, %f n とした場合 25

例題 3-4 浮動少数の表示法 #include <stdio.h> int main(void); int main(void) { float x=12.34; printf("%f n", x); printf("%6f n", x); printf("%6.0f n", x); printf("%6.1f n", x); printf("%0.1f n", x); return 0; } 26

printf の format について printf のフォーマット指定につかう %d 等は, かなり色々な表現ができます. しかし, 本授業ではそれを扱いません. 単に,%d %f 等で数値等を単純に表示するだけで結構です. 今時, 実用的なプログラムは GUI (Graphical User Interface) なので, このフォーマットに凝っても仕方が無い. 後述のキーボードからの読み込みについても同様. 27

キーボードから変数に整数を入力 キーボードから入力した整数値を変数に保存することができる.( まぁ, できないと困るよね.) まず, 保存するための変数を定義する. 以下に示すような,scanf という関数を用いると, キーボード入力を指定した変数に入れられる. 変数の前の & は忘れないように. 詳細は後日に. 教科書 ( レ ) には違うやり方が書いてありますが, 無視してく ださい. #include <stdio.h> int main(void){ int val; scanf("%d", &val); return 0; } p.14-15 ( 明 ) ( レ ) では複雑な方法を書いてるがお勧めしない 28

整数値入力の簡単な例 /* age.c input your age */ #include <stdio.h> int main(void){ int age; printf("input your age: "); scanf("%d", &age); } printf("your age is %d. n", age); return 0; 29

実数値入力の簡単な例 #include <stdio.h> int main(void){ float h, w; printf( input your weight: ); scanf( %f", &w); printf("input your height:"); scanf("%f", &h); Float は精度が悪い例 } printf("your weight %f and height %f n", w, h); return 0; 30

float でなく double なら平気 #include <stdio.h> int main(void){ double h, w; printf("input your weight: "); scanf("%lf", &w); printf("input your height:"); scanf("%lf", &h); } printf("your weight %lf and height %lf n", w, h); return 0; 31

プログラム中の注釈コメント文 プログラム中に, 人間が後から内容を確認するためのメモを書くことができる. これをコメント文と呼ぶ. コメント文はメモなのでコンパイル等のコンピュータの動作へは影響を及ぼさない. C 言語 (C99 以降 ) では二種類の書き方が可能 /* と */ の間に書く. 複数行にわたり記述可能. // から行末まで書く. 一行のみ. 本授業ではコメント文中だけには日本語を書いてもよい.( 日本語の空白文字は使わないように ) 32

参考全角スペースは無効化がベター 少なくとも日本語の空白文字はプログラムでは害悪しかないので, 無効化するのがよいと思います. まぁ, 氏名の区切りとかで全角スペースを強要する残念なサイトとかもありますが.orz 33

コメントの例 /* 平均値を計算 Author: kaiya Date: 18/10/2014 */ #include <stdio.h> int main(void){ float x, y; // float は精度が悪いのでお勧めしません x = 15.0; y = 32.0; printf( %0.1f n, (x+y)/2); return 0; } 34

プログラムの空白や改行について # で始まる行を除き, プログラムは改行や空白は自由に入れてかまいません. // でコメントがある行も注意してください. 以下は同じプログラムですが, 読みにくい右はお勧めしません. #include <stdio.h> int main(void) { #include <stdio.h> int x, y; int main(void){int x,y;x=15;y=32; x = 15; printf("%d n",(x+y)/2);return 0;} y = 32; printf("%d n", (x+y)/2); return 0; } 35

演習問題 2 半径を整数値でキーボードから入力すると, おおよその円の面積と円周の長さを表示するプログラムを作成せよ. 円周率は 3 を利用せよ.( おおよそ ゆえ) ソースプログラム名は circle.c としてください. dotcampusにアップしてね. 期待される結果の例 $ cc circle.c $./a 5 area = 75 circumference = 30 $ コレはユーザーが 5 と入力して, エンターを押すものとしてください. 36

本日は以上 37