数値計算

Similar documents
数値計算

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

gengo1-2

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

プログラミング実習I

Microsoft Word - no02.doc

PowerPoint プレゼンテーション

Microsoft PowerPoint - 計算機言語 第7回.ppt

‚æ4›ñ

物質工学科 田中晋

PowerPoint プレゼンテーション

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

PowerPoint Presentation

JavaプログラミングⅠ

Java プログラミング Ⅰ 3 回目変 数 今日の講義講義で学ぶ内容 変数とは 変数の使い方 キーボード入力の仕方 変 数 変 数 一時的に値を記憶させておく機能 変数は 型 ( データ型 ) と識別子をもちます 2 型 ( データ型 ) 変数に記憶する値の種類変数の型は 記憶できる値の種類と範囲

Java プログラミング Ⅰ 3 回目変数 変数 変 数 一時的に値を記憶させておく機能型 ( データ型 ) と識別子をもつ 2 型 ( データ型 ) 変数の種類型に応じて記憶できる値の種類や範囲が決まる 型 値の種類 値の範囲 boolean 真偽値 true / false char 2バイト文

講習No.8

Microsoft Word - 3new.doc

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

ファイル入出力

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

JavaプログラミングⅠ

ファイル入出力

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

untitled

プログラミング実習I

計算機プログラミング

memo

Java講座

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

C 言語の式と文 C 言語の文 ( 関数の呼び出し ) printf("hello, n"); 式 a a+4 a++ a = 7 関数名関数の引数セミコロン 3 < a "hello" printf("hello") 関数の引数は () で囲み, 中に式を書く. 文 ( 式文 ) は

gengo1-12

Taro-ファイル処理(公開版).jtd

Microsoft PowerPoint - kougi6.ppt

gengo1-8

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

プログラミング基礎

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

<4D F736F F D20438CBE8CEA8D758DC F0939A82C282AB2E646F63>

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

4 月 東京都立蔵前工業高等学校平成 30 年度教科 ( 工業 ) 科目 ( プログラミング技術 ) 年間授業計画 教科 :( 工業 ) 科目 :( プログラミング技術 ) 単位数 : 2 単位 対象学年組 :( 第 3 学年電気科 ) 教科担当者 :( 高橋寛 三枝明夫 ) 使用教科書 :( プロ

情報処理演習 B8クラス

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

計算機プログラミング

Microsoft PowerPoint - prog04.ppt

Prog1_10th

第 2 章インタフェース定義言語 (IDL) IDL とは 言語や OS に依存しないインタフェース定義を行うためのインタフェース定義言語です CORBA アプリケーションを作成する場合は インタフェースを定義した IDL ファイルを作成する必要があります ここでは IDL の文法や IDL ファイ

第2回講義:まとめ

PowerPoint Presentation

PowerPoint プレゼンテーション

kiso2-06.key

02: 変数と標準入出力

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

sinfI2005_VBA.doc

講習No.12

PowerPoint プレゼンテーション

バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科

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

PowerPoint プレゼンテーション

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 今日の講義講義で学ぶ内容 switch 文 論理演算子 条件演算子 条件判断文 3 switch 文 switch 文 式が case のラベルと一致する場所から直後の break; まで処理しますどれにも一致致しない場合 def

ポインタ変数

gengo1-12

Microsoft PowerPoint - C_Programming(3).pptx

Microsoft Word - Training10_プリプロセッサ.docx

Microsoft PowerPoint pptx

Microsoft PowerPoint pptx

Microsoft PowerPoint - 09.pptx

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

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

02: 変数と標準入出力

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

解答編 第 7 章実数型の計算と標準数学関数 演習問題 7.1 文法事項 1 ) 暗黙の型変換とは何か答えなさい 代入演算子 (=) や算術演算子 (+,-,*,/,%) では 2 つの演算項のデータ型が揃っている事が必要です 2 つの演算項のデータ型が異なる場合 可能ならば 演算項のデータ型を変換

FORTRAN( と C) によるプログラミング 5 ファイル入出力 ここではファイルからデータを読みこんだり ファイルにデータを書き出したりするプログラムを作成してみます はじめに テキスト形式で書かれたデータファイルに書かれているデータを読みこんで配列に代入し 標準出力に書き出すプログラムを作り

本サンプル問題の著作権は日本商工会議所に帰属します また 本サンプル問題の無断転載 無断営利利用を厳禁します 本サンプル問題の内容や解答等に関するお問 い合わせは 受け付けておりませんので ご了承ください 日商プログラミング検定 STANDARD(C 言語 ) サンプル問題 知識科目 第 1 問 (

Taro-C言語の基礎Ⅰ(公開版).j

講習No.1

gengo1-12

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

問 2 ( 型変換 ) 次のプログラムを実行しても正しい結果が得られない 何が間違いかを指摘し 正しく修正せよ ただし int サイズが 2 バイト long サイズが 4 バイトの処理系での演算を仮定する #include <stdio.h> int main( void ) { int a =

gengo1-10

Prog1_2nd

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

02: 変数と標準入出力

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


Microsoft Word - java a.doc

プログラミング及び演習 第1回 講義概容・実行制御

演習1

プログラミング及び演習 第1回 講義概容・実行制御

gengo1-11

プログラミング基礎

ガイダンス

cp-7. 配列

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

02: 変数と標準入出力

PowerPoint プレゼンテーション

kiso2-09.key

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

Microsoft PowerPoint - ruby_instruction.ppt

Transcription:

プログラム作成から実行まで 数値計算 垣谷公徳 17 号館 3 階電子メール : kimi@ee.ous.ac.jp Source program hello.c printf("hello\n"); コンパイラ Library libc.a 0011_printf000101001 1101_getc00011100011 1011_scanf1110010100 コンパイル Object module hello.o 0110010100_main_000 110001100110_printf_0 リンカ リンク Executable module a.out 011001010000111000 011000110011001010 100111010101000001 1 2 プログラム作成 実行手順 原始プログラム (Source program) の作成原始プログラムをコンパイルし目的プログラム (Object module) に変換目的プログラムを連係編集 (link) し 実行可能プログラム (Executable module/load(able) moduleに変換リンク ( 連係編集 ) リンケージエディタ ( リンカ ) によって 目的プログラムのサブルーチン 関数のアドレス定義を行いライブラリなどと結合させて実行可能プログラムを作成する 実行可能プログラムをメモリ上にロードし実行する プログラム作成用語集 原始プログラム (source program/source code/source file) プログラム言語によって記述されたもの目的プログラム (object module/object code/object file) コンパイラによって変換されたものアドレスなどが未定義のため実行不可実行可能プログラム (executable file/load module/command) リンカ ( リンケージエディタ ) により プログラムの実行に必要なサブルーチンや関数などを含めた計算機で実行可能なもの 3 4 プログラミング言語 数値計算に用いられる主なプログラミング言語 FORTRAN 66/77/90/95 c (c++, java) python etc. FORTRAN 言語の特徴 最古の高水準言語汎用構造化言語 (FORTRAN77 以降 ) FORTRAN90 以降はオブジェクト指向数値計算に適した言語仕様 過去の豊富な資産 ( ライブラリ ) 数値計算の分野では圧倒的なシェア 5 6

c 言語の特徴 低水準な処理も可能な高水準言語汎用構造化言語オブジェクト指向言語 (c++, java) の基礎ソフトウェア技術者の教養的知識 c 言語 数値計算のための c 言語 (1) 2013 年 4 月 16 日 最新のライブラリ ( 過去の資産は使えない ) 数値計算には不向き (FORTRAN に比べて ) 7 8 Linux 等でコンパイル 実行する場合 $ gcc this_file.c -lm 用意されているキーワード ( 予約語 ) 特別な意味を持つ記号 9 10 ユーザ定義名前付きオブジェクト ユーザ定義リテラル 11 システムに依存するリテラル 標準入出力ライブラリ 標準数学ライブラリ 12

プリプロセッサにより1 行 ( レコード ) 毎 に処理される # キーワード のフィールドから始める 13 コンパイラで処理される ( ホワイトスペース ) ; { /* */ で区切られたバイト列 行の概念なし 14 文とブロック ブロック double x, y; printf( Hello, world.\n ); x = 0.1; y = sin(x); 文 printf( SIN(%lf) = %lf\n, x, y); return 0; # プリプロセッサ命令 # 定数マクロ定義 int main( コマンドライン引き数 ) { 変数の型変数名 ; /* 変数宣言 */ 実行すべき処理 ; return 0; 15 16 プログラミング言語の一般論 データ型 ( 定数と変数 配列 ) 代入 基本演算 ( 四則演算 ) 入出力 条件分岐 繰返処理 関数 外部手続き キーワード ( 予約語 ) データタイプ char int float double enum struct union typedef データタイプ修飾子 signed unsigned short long const void データ記憶クラス auto static extern volatile register 制御構造 if else do while for switch case break default return continue goto 演算子, 記号 sizeof + - * / % &, ; : [ ] ( ) { # 17 18

変数 データ ( ビット列 ) を入れることができる箱 名前がついている 大きさが決まっている 実行時に用意される ( 実行中ではない ) 'a' c 1026 n 3.141592 pi 文字型 [ 通常 8bit] 変数 char 整数型 [ 通常 16bit or 32bit] int 拡大整数型 [ 通常 32bit 以上 ] long int, long 実数型 ( 単精度浮動小数点数 )[ 通常 double と同一 ] float 倍精度実数型 ( 倍精度浮動小数点数 )[ 通常 64bit] double 19 20 変数 Local Rule.1: 変数は全て32bit 符号付き整数 (int or long int) と 64bit 実数 (double) を使う 32bit 符号付き整数 2147483648~2147483647 64bit 実数有効桁数約 16 桁の実数 21 変数宣言 データ型変数名 ; データ型変数名, 変数名,...; データ型変数名 = 初期値 ; 整数型倍精度実数型 int a; int a, b; int n=10; double x; double x, y, z; double pi = 3.141592; 22 整数 ( 拡大整数 ) 定数 0, -1, 1234,(123456789L) 倍精度実数型 ( 倍精度浮動小数点数 ) 0.0, 1., 123.4, 1.234e-3 1.234e-3 = 1.234 10 3 = 0.001234 文字列定数 ( 文字列リテラル ) "Hello world\n" 23 記号定数 ( マクロ置換 ) 表に名前 裏に値 ( 定数 ) の書かれたカード プリプロセッサの機能を利用する 厳密な意味ではユーザ定義名前付きオブジェ クトではない #define 記号名置換すべきテキスト #define N 1000 #define PI 3.141592 PI double pi2; 3.141592 pi2 = 2.*PI; 24

四則演算と代入 変数 = 変数 ( 定数 ) 演算子 変数 ( 定数 ) 和 y = a + b y = a + b 差 y = a b y = a - b 積 y = a b y = a * b 商 y = a b y = a / b 剰余 y = a mod b y = a % b 四則演算と代入 整数 = 整数 + 整数 ; 整数 = 整数 - 整数 ; 整数 = 整数 * 整数 ; 整数 = 整数 / 整数 ; 整数 = 整数 % 整数 ; 実数 = 実数 + 実数 ; 実数 = 実数 - 実数 ; 実数 = 実数 * 実数 ; 実数 = 実数 / 実数 ; Local Rule.2: 代入文の右辺と左辺の型を明示的に一致させる 自動的な型変換を用いず, 常に明示的にキャストを行う int n; double a, x; x = a / n; int n; double a, x; x = a / (double) n; 25 26 配列 配列名と数字 ( 添字 ) で指定される変数の集まり double a[100]; double b[10][5]; a[0] = 1.0; a[1] = 2.0; a[99] = 5.0; b[0][0] = 1.2; b[9][4] = 0.0; 'H' c[0] 'e' c[1] 'l' c[2] 'l' c[3] 'o' c[4] m[0][0] m[0][1] m[0][2] m[1][0] m[1][1] m[1][2] m[2][0] m[2][1] m[2][2] m[3][0] m[3][1] m[3][2] \0 c[5] 一次元配列とベクトル double b[3]; b[0] = 1.0; b[1] = 2.0; b[2] = 1.0; double b[3]={1.0, 2.0, 3.0; double b[3]= {1.0, 2.0, 3.0; B = 1 2 1 27 28 一次元配列と数列 #define N 100 二次元配列と行列 double a[2][2]; a[0][0] = 1.0; int n; double a, r, c[n]; c[n] = a*pow(r, n-1); c[0] = a; c[n] = r*c[n-1]; C n = ar n 1 { C0 = 0 C n = rc n 1 a[0][1] = -1.0; a[1][0] = -1.0; a[1][1] = 2.0; double a[2][2]={{1.0, -1.0, {-1.0, 2.0; double a[2][2]= {{1.0, -1.0, A = ( 1 1 1 2 ) {-1.0, 2.0 ; 29 30

XX00 x[0] XX06 x[1] XX00 x 配列に関する注意 int x[2][3] = { {0, 1, 2, {4, 8, 16 ; XX00 x[0][0] XX02 x[0][1] XX04 x[0][2] XX06 XX08 XX0A x[1][1] x[1][2] x[1][0] x[1][1] x[1][2] 0 1 2 4 8 16 XX0C Local rule: 配列の要素のアドレスを直接意識するようなプログラムにはしない 必ずすべての ( 二次元なら2つ 三次元なら3つ ) の添え字を指定する 31 入出力 入力関数 getchar, getc, fgetc ; 一文字入力 gets, fgets, fread ; 文字列 ( データ列 ) 入力 scanf, fscanf, sscanf ; 書式付入力 出力関数 putchar, putc, fputc ; 一文字出力 puts, fputs, fwrite ; 文字列 ( データ列 ) 出力 printf, fprintf, sprintf; 書式付出力 Local Rule.3: 入力は行わず, データはプログラム中に直接書く. 出力は printf のみ. 32 printf 関数 int printf (const char *, 変数, 変数,...); 書式制御文字列リテラル %\" 以外はそのまま出力 "%+ 数字 + 文字 " %d 整数を出力 %f 固定小数点実数を出力 %e 浮動小数点実数を出力 "%%" % 自体を出力 その他 %i %o %u, %c, %s %x, %X %E, %g, %G 書式制御文字列 int n = 578; 1 2 3 4 5 6 7 8 9 10 printf("%d\n", n); 5 7 8 printf("%8d\n", n); 5 7 8 printf("%08d\n", n); 0 0 0 0 0 5 7 8 printf("%2d\n", n); 5 7 8 33 34 書式制御文字列 double x = -57.89; 書式制御文字列 double x = -57.89; 1 2 3 4 5 6 7 8 9 10 printf("%f\n", x); - 5 7. 8 9 0 0 0 0 printf("%9.3\n", x); - 5 7. 8 9 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 printf("%e\n", x); - 5. 7 8 9 0 0 0 e + 0 1 printf("%15.7e\n", x); - 5. 7 8 9 0 0 0 0 e + 0 1 printf("%10.1e\n", x); - 5. 8 e + 0 1 printf("%6.3d\n", x); - 5 7. 8 9 0 printf("%6.1d\n", x); - 5 7. 9 printf("%27.20e\n", x); 5.78900000000000005684e+01 35 36

printf 関数 int printf (const char *, 変数, 変数,...); 書式制御文字列リテラル Local Rule.4 原則 %d 整数 %f 実数 %15.7e 実数を使用する 37