SST Lab Dokuwiki Header header picture

ユーザ用ツール

サイト用ツール


計算機言語:lecture3

変数と定数

例題

円柱の半径($r$)と高さ($h$)を読み込んで、その体積($V$)と表面積($S$)を表示するプログラムを作成せよ $$ V = \pi r^2 h $$

$$ S = 2\pi r^2 + 2\pi rh = 2\pi r(r + h) $$

Pascal

program cylind(input, output);
  const pi = 3.141592;
  var r, h, s, v: real;
  begin
     read(r, h);
      writeln(r, h);
      v := pi*r*r*h; 
      s := 2*pi*r*(r + h); 
      writeln(v, s); 
  end. 

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

#include <stdio.h> 
#define PI 3.141592 
int main(void) { 
    double r, h, s, v; 
    scanf("%lf %lf", &r, &h); 
    printf("%lf %lf\n", r, h); 
    v = PI*r*r*h; 
    s = 2.0*PI*r*(r + h); 
    printf("%lf %lf\n", v, s); 
    return 0; 
} 
定数
プログラム実行中に変化することのない「値」を保持するユーザ定義名前付オブジェクト
変数
プログラム実行中に変化する「値」を示すユーザ定義名前付オブジェクト
(* program文の後、変数宣言文の前 *)
const 定数名 = 定数値; 
const 定数名 = 定数値; 定数名 = 定数値; 定数名 = 定数値; {複数の定数を定義する場合}
C program文の後、変数宣言文の前簡単な演算も可能
      PARAMETER(定数名 = 定数値) 
C 複数の定数を定義する場合
      PARAMETER(N = 10, M = 11) 
      PARAMETER(N = 10, M = N + 1) 
      PARAMETER(N = 10) 
      PARAMETER(M = N + 1)
/* 定数定義はマクロにより行う */
#define 定数名 定数値 
#ifdef __小学生__ 
#define PI 3.14 
#else 
#define PI 3.141592 
#endif 
Pascal
 const PI=3.141592; 
FORTRAN
 PARAMETER (PI=3.141592)
 #define PI 3.141592 
円周率πを参照する定数




箱(変数)の在りか(アドレス)を入れる箱がポインタ変数
整数型
符号付き、符号なし(c)
実数型
倍精度(c, FORTRAN), 4倍精度(FORTRAN)
複素数型
二つの実数の組(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 変数名: 変数の型;定数定義の後、begin endの前
複数の変数を宣言する場合 
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ビット複素数
変数の型変数名 ;どこでも宣言と同時に初期化も可能変数の型変数名 = 変数の初期値; double radius = 0.25;
複数の変数を宣言する場合変数の型変数名 , 変数名, 変数名; 
int
符号付き整数、多くの処理系がか32ビット 
float
単精度実数、多くの処理系は32ビット 
double
倍精度実数、多くの処理系で64ビット
Pascal
 var r, h: real; 
FORTRAN
 REAL*8 HS, V
 double v, s; 
和・差・積変数名 := 変数(定数)名 + 変数(定数)名変数名 := 変数(定数)名 . 変数(定数)名変数名 := 変数(定数)名 * 変数(定数)名
商変数名 := 変数(定数)名 / 変数(定数)名変数名 := 変数(定数)名 div 変数(定数)名和・差・積・商変数名 = 変数(定数)名 + 変数(定数)名変数名 = 変数(定数)名 . 変数(定数)名変数名 = 変数(定数)名 * 変数(定数)名変数名 = 変数(定数)名 / 変数(定数)名
整数と実数の演算には型の変換を明示的に行うべし
programプログラム名 (入出力); const定数名=定数; var変数名:変数の型; begin
実行すべき処理 
end. 
PROGRAMプログラム名 PARAMETER(定数名=定数定義)変数の型変数名実行すべき処理 
STOP END 
#プリプロセッサ命令 #定数マクロ定義 int main(引き数) {
変数の型変数名;実行すべき処理; return 0; 
} 
Pascal 
read(変数名, 変数名) 
FORTRAN 
READ (5, *) 変数名, 変数名 
c言語
scanf("入力書式", &変数名, &変数名) 
Pascal 
writeln(変数名, 変数名) 
FORTRAN 
WRITE(6, 書式文番号) 変数名, 変数名 
c言語 
printf("出力書式", 変数名, 変数名) 

計算機言語/lecture3.txt · 最終更新: 2022/08/25 11:45 by kimi

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki