計算機言語:lecture3
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
計算機言語:lecture3 [2022/08/25 11:23] – 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; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
; 定数 | ; 定数 | ||
: プログラム実行中に変化することのない「値」を保持するユーザ定義名前付オブジェクト | : プログラム実行中に変化することのない「値」を保持するユーザ定義名前付オブジェクト | ||
行 6: | 行 57: | ||
<code pascal> | <code pascal> | ||
- | const 定数名 = 定数値; program文の後、変数宣言文の前 | + | (* program文の後、変数宣言文の前 *) |
- | 複数の定数を定義する場合 | + | const 定数名 = 定数値; |
- | const 定数名 = 定数値; | + | const 定数名 = 定数値; 定数名 = 定数値; 定数名 = 定数値; {複数の定数を定義する場合} |
+ | </ | ||
+ | <code fortran> | ||
+ | C program文の後、変数宣言文の前簡単な演算も可能 | ||
+ | | ||
+ | C 複数の定数を定義する場合 | ||
+ | | ||
+ | PARAMETER(N = 10, M = N + 1) | ||
+ | PARAMETER(N = 10) | ||
+ | PARAMETER(M = N + 1) | ||
+ | |||
+ | </ | ||
+ | <code c> | ||
+ | /* 定数定義はマクロにより行う */ | ||
+ | # | ||
+ | #ifdef __小学生__ | ||
+ | #define PI 3.14 | ||
+ | #else | ||
+ | #define PI 3.141592 | ||
+ | #endif | ||
+ | </ | ||
+ | <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プログラム名 (入出力); const定数名=定数; | ||
+ | 実行すべき処理 | ||
+ | end. | ||
+ | PROGRAMプログラム名 PARAMETER(定数名=定数定義)変数の型変数名実行すべき処理 | ||
+ | STOP END | ||
+ | # | ||
+ | 変数の型変数名; | ||
+ | } | ||
+ | Pascal | ||
+ | read(変数名, | ||
+ | FORTRAN | ||
+ | READ (5, *) 変数名, 変数名 | ||
+ | c言語 | ||
+ | scanf(" | ||
+ | Pascal | ||
+ | writeln(変数名, | ||
+ | FORTRAN | ||
+ | WRITE(6, 書式文番号) 変数名, 変数名 | ||
+ | c言語 | ||
+ | printf(" | ||
+ | |||
</ | </ |
計算機言語/lecture3.txt · 最終更新: 2022/08/25 11:45 by kimi