計算機言語:lecture3
差分
このページの2つのバージョン間の差分を表示します。
| 次のリビジョン | 前のリビジョン | ||
| 計算機言語:lecture3 [2022/08/25 11:21] – 作成 kimi | 計算機言語:lecture3 [2022/08/25 11:45] (現在) – [c] kimi | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| ====== 変数と定数 ====== | ====== 変数と定数 ====== | ||
| + | ===== 例題 ===== | ||
| + | 円柱の半径($r$)と高さ($h$)を読み込んで、その体積($V$)と表面積($S$)を表示するプログラムを作成せよ | ||
| + | $$ | ||
| + | V = \pi r^2 h | ||
| + | $$ | ||
| + | $$ | ||
| + | S = 2\pi r^2 + 2\pi rh = 2\pi r(r + h) | ||
| + | $$ | ||
| + | ==== Pascal ==== | ||
| + | <code pascal> | ||
| + | program cylind(input, | ||
| + | const pi = 3.141592; | ||
| + | var r, h, s, v: real; | ||
| + | begin | ||
| + | | ||
| + | writeln(r, h); | ||
| + | v := pi*r*r*h; | ||
| + | s := 2*pi*r*(r + h); | ||
| + | writeln(v, s); | ||
| + | end. | ||
| + | </ | ||
| + | ==== FORTRAN ==== | ||
| + | <code fortran> | ||
| + | PROGRAM CYLIND | ||
| + | PARAMETER (PI = 3.141592) | ||
| + | DOUBLE PRECISION R, H, S, V | ||
| + | READ (5, *) R, H | ||
| + | WRITE (6, *) R, H | ||
| + | V = PI*R*R*H | ||
| + | S = 2.0*PI*R*(R + H) | ||
| + | WRITE (6, *) V, S | ||
| + | STOP | ||
| + | END | ||
| + | </ | ||
| + | ==== c ==== | ||
| + | <code c> | ||
| + | #include < | ||
| + | #define PI 3.141592 | ||
| + | int main(void) { | ||
| + | double r, h, s, v; | ||
| + | scanf(" | ||
| + | printf(" | ||
| + | v = PI*r*r*h; | ||
| + | s = 2.0*PI*r*(r + h); | ||
| + | printf(" | ||
| + | return 0; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | |||
| + | ; 定数 | ||
| + | : プログラム実行中に変化することのない「値」を保持するユーザ定義名前付オブジェクト | ||
| + | ; 変数 | ||
| + | : プログラム実行中に変化する「値」を示すユーザ定義名前付オブジェクト | ||
| + | |||
| + | <code pascal> | ||
| + | (* program文の後、変数宣言文の前 *) | ||
| + | const 定数名 = 定数値; | ||
| + | const 定数名 = 定数値; 定数名 = 定数値; 定数名 = 定数値; {複数の定数を定義する場合} | ||
| + | </ | ||
| + | <code fortran> | ||
| + | C program文の後、変数宣言文の前簡単な演算も可能 | ||
| + | PARAMETER(定数名 = 定数値) | ||
| + | C 複数の定数を定義する場合 | ||
| + | PARAMETER(N = 10, M = 11) | ||
| + | PARAMETER(N = 10, M = N + 1) | ||
| + | PARAMETER(N = 10) | ||
| + | PARAMETER(M = N + 1) | ||
| + | |||
| + | </ | ||
| + | <code c> | ||
| + | /* 定数定義はマクロにより行う */ | ||
| + | #define 定数名 定数値 | ||
| + | #ifdef __小学生__ | ||
| + | #define PI 3.14 | ||
| + | #else | ||
| + | #define PI 3.141592 | ||
| + | # | ||
| + | </ | ||
| + | <code > | ||
| + | Pascal | ||
| + | const PI=3.141592; | ||
| + | FORTRAN | ||
| + | | ||
| + | # | ||
| + | |||
| + | </ | ||
| + | |||
| + | < | ||
| + | 円周率πを参照する定数 | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | 箱(変数)の在りか(アドレス)を入れる箱がポインタ変数 | ||
| + | 整数型 | ||
| + | 符号付き、符号なし(c) | ||
| + | 実数型 | ||
| + | 倍精度(c, | ||
| + | 複素数型 | ||
| + | 二つの実数の組(FORTRAN) | ||
| + | 文字型 | ||
| + | 文字符号化方法に依存する | ||
| + | 整数型変数(定数)の表現 2進数のビット列(例8ビット) | ||
| + | |||
| + | 通常16ビットか32ビット | ||
| + | 全てのビットを使用 | ||
| + | 0. 2n . 1 (符号なし整数) | ||
| + | |||
| + | 1の補数 | ||
| + | |||
| + | 0の定義が一意的でない(1111=0000) | ||
| + | 2の補数 | ||
| + | |||
| + | -1 + 1 = 0 | ||
| + | |||
| + | 減算を補数と加算で処理できる | ||
| + | 整数型変数(定数)の表現 nビット符号なし整数 0. 2n . 1 | ||
| + | nビット符号付整数(2の補数表現) .2n.1. 2n.1 . 1 | ||
| + | 固定小数点実数 | ||
| + | 24.5 | ||
| + | 浮動小数点実数 | ||
| + | 2.45× 101, 2450× 10.2 | ||
| + | 正規化された浮動小数点実数仮数部 0.245× 102指数部 | ||
| + | b3b2b1b0 . c1c2c3 = b3× 23 + b2× 22 + b1× 21 + b0 | ||
| + | + c1× 2.1 + c2× 2.2 + c3 × 2.3 | ||
| + | 例 | ||
| + | 101.0112 = (4+1+1/4 +1/8 )10 = 5.37510 | ||
| + | 先頭ビットで符号を表す指数部は2進整数仮数部は正規化された固定小数点 | ||
| + | 32.128ビット | ||
| + | |||
| + | 符指数仮数号 | ||
| + | 仮想的8ビット実数指数は10のべきを2の補数表現の整数仮数は正規化された2進小数 | ||
| + | |||
| + | 64.256ビット | ||
| + | |||
| + | 実部虚部 | ||
| + | var 変数名: 変数の型; | ||
| + | 複数の変数を宣言する場合 | ||
| + | var 変数名, 変数名, 変数名: 変数の型; | ||
| + | integer | ||
| + | 符号付き整数 | ||
| + | 多くの処理系が16ビットか32ビット real | ||
| + | 単精度実数多くの処理系は32ビット例 var height, radius: real; number: integer; | ||
| + | 変数の型変数名定数定義の後、最初の実行文の前暗黙の宣言も可能 | ||
| + | A-H, O-Z から始まる変数名は実数型 I, J, K, L, M, Nから始まる変数名は整数型 | ||
| + | 複数の変数を宣言する場合変数の型変数名 , 変数名, 変数名 | ||
| + | 符号付き整数、多くの処理系がか32ビット | ||
| + | REAL | ||
| + | 単精度実数、多くの処理系は32ビット | ||
| + | DOUBLE PRECISION (REAL*8) | ||
| + | 倍精度実数、多くの処理系で64ビット | ||
| + | COMPLEX*16 | ||
| + | 多くの処理系で128ビット複素数 | ||
| + | 変数の型変数名 ; | ||
| + | 複数の変数を宣言する場合変数の型変数名 , 変数名, 変数名; | ||
| + | int | ||
| + | 符号付き整数、多くの処理系がか32ビット | ||
| + | float | ||
| + | 単精度実数、多くの処理系は32ビット | ||
| + | double | ||
| + | 倍精度実数、多くの処理系で64ビット | ||
| + | Pascal | ||
| + | var r, h: real; | ||
| + | FORTRAN | ||
| + | | ||
| + | | ||
| + | 和・差・積変数名 := 変数(定数)名 + 変数(定数)名変数名 := 変数(定数)名 . 変数(定数)名変数名 := 変数(定数)名 * 変数(定数)名 | ||
| + | 商変数名 := 変数(定数)名 / 変数(定数)名変数名 := 変数(定数)名 div 変数(定数)名和・差・積・商変数名 = 変数(定数)名 + 変数(定数)名変数名 = 変数(定数)名 . 変数(定数)名変数名 = 変数(定数)名 * 変数(定数)名変数名 = 変数(定数)名 / 変数(定数)名 | ||
| + | 整数と実数の演算には型の変換を明示的に行うべし | ||
| + | programプログラム名 (入出力); | ||
| + | 実行すべき処理 | ||
| + | end. | ||
| + | PROGRAMプログラム名 PARAMETER(定数名=定数定義)変数の型変数名実行すべき処理 | ||
| + | STOP END | ||
| + | # | ||
| + | 変数の型変数名; | ||
| + | } | ||
| + | Pascal | ||
| + | read(変数名, | ||
| + | FORTRAN | ||
| + | READ (5, *) 変数名, 変数名 | ||
| + | c言語 | ||
| + | scanf(" | ||
| + | Pascal | ||
| + | writeln(変数名, | ||
| + | FORTRAN | ||
| + | WRITE(6, 書式文番号) 変数名, 変数名 | ||
| + | c言語 | ||
| + | printf(" | ||
| + | |||
| + | |||
| + | </ | ||
計算機言語/lecture3.1661394075.txt.gz · 最終更新: by kimi