pascal

pascal

Intro

Pascal由瑞士苏黎世联邦工业大学的Niklaus Wirth教授于六十年代末设计并创立。1971年,以电脑先驱帕斯卡pascal的名字为之命名。

Pascal语言语法严谨,层次分明,程序易写,可读性强,是第一个结构化编程语言。

Pascal有6个主要的版本,分别是Action Pascal、Unextended Pascal、Extended Pascal、Object-Oriented Extensions to Pascal、Borland Pascal和Delphi Object Pascal。

Feature

  • strong-type
  • case-insensitive
  • functional
  • object pascal provide Object-Oriented

Annotation

{comment}
(*comment*)
//coment

Basic-Syntax

主程序

program     程序名;
uses        单元;
begin
        ...statement
end.

单元

unit        单元名;
interface
...
implementation
...
initialization
...
finalization
...
end.
label       标号;
type        类型;
const       常量;
var         变量;
function    函数;
procedure   过程;

Data-Type

boolean

  • Boolean
  • ByteBool
  • WordBool
  • LongBool

integer

  • Shortint
  • Smallint
  • Integer
  • Longint
  • Int64
  • Byte
  • Word
  • Longword
  • QWord

real

  • real
  • single
  • double
  • extended
  • comp

character

  • char
  • ansichar
  • widechar

string

  • string
  • ansistring

array

  • array[from...to] of <Data-Type>

pointer

  • Pointer
  • PChar
  • PInteger
// address-of, evaluate
type PInteger = ^integer;
var a,b:integer;
var pa:;PInteger;
a := 10;
pa := @a;
b := pa^

Expression

<unary> <rvalue>;
<lvalue> <binary> <rvalue>;

operator

arithmetic

  • +
  • -
  • *
  • /
  • div整除
  • mod取余

logical

  • and
  • or
  • not
  • xor

relational

  • =
  • <>不等于
  • <
  • >
  • <=
  • >=

bitwise

  • shl
  • shr

Statement

const
<identifier>[:Data-Type]=<value>;
var
<identifier1,identifier2...>:<Data-Type>;
type
<identifier>=<Data-Type>;

assign

<var>:=<value>;

if

if <exp> then <statement>;
if <exp> then <statement1>
                else <statement2>;
case <exp> of
        con1: statement1;
        con2: statement2;
        ...
        else statement
end;

loop

for <i>:=<init-value> to <end-value> do <statement>;
for <i>:=<init-value> downto <end-value> do <statement>;
while <exp> do <statement>;
repeat <statement> until <exp>;

jump

break;
continue;
goto <label>;

function

function func-name(param1;param2...):<return Data-Type>;
var
    <var1,var2...>:<Data-Type>;
begin
        statement;
        ...
        func-name := value;
end;

Input

read<var1,var2...>;
readIn<var1,var2...>;

Output

write<con1,val1...>
wirteIn<con1,var1...>

pascal VS c

data-type

pascal c
boolean bool
shortint char
smallint short
integer int
longint long
int64 long long
single float
double double
pointer void*
pchar char*
pinteger int*

var-def and func-def

// c
int min(int a, int b)
{
    if (a < b)
    {
        return a;
    }
    return b;
}

void swap(int* a, int* b)
{
    int tmp;
    tmp = *a;
    *a = *b;
    *b = tmp;
}

int main()
{
    int a,b,c;
    a = 1;
    b = 2;
    c = min(a,b);
    printf("%d\n", c);
    return 0;
}

// pascal
function min(a: integer; b: integer): integer;
begin
    if a < b then
    begin
        min := a;
        exit;
    end;
    min := b;
end;

procedure swap(a: pinteger; b: pinteger);
var
    tmp: integer;
begin
    tmp := a^;
    a^ := b^;
    b^ := tmp; 
end;

var
    a,b,c: integer;
begin
    a := 1;
    b := 2;
    c := min(a,b);
    writeln(c);
end.

dll

function func-name(params): <return-type>; <cdecl,stdcall>; <external 'some.dll' [name 'func-name']>;

diff

pascal c
var-def var identifier: data-type;
func-def function func(params): return-type;
params delim param1;param2
address-of @a
evaluate a^

猜你喜欢

转载自blog.csdn.net/GG_SiMiDa/article/details/81185108
今日推荐