pascal的日常使用

大耗子 2020年03月04日 225次浏览

文章链接:https://codemouse.online/archives/2020-03-04-153117

标识符

  • 注意:不可以使用program、begin、end、const、var、read、write、if、then、else这些关键字作为名字

常量

  • 格式:const 常量名=表达式;

    const pi = 3.14;st = ‘t’;

变量

  • 格式:var 变量名:变量类型;

    var i,j:integer;

  • 变量类型

    1. 整型(integer)
    2. 实型(real)
    3. 字符型(char)
    4. 布尔型(boolean)

一维数组

  • var 变量名:array[1..想要的长度] of 变量类型;

    var stu:array[1..5] of integer;

多维数组

  • 例子:
type
 MonthTemps = array [1..24, 1..31] of Integer;
 YearTemps = array [1..24, 1..31, Jan..Dec] of Integer; 

运算符

  • 算术运算符

    +、-、*、/、mod、div

  • 关系运算符

    >、>=、<、<=、=、<>

  • 逻辑运算符

    not、and、or

声明语句

  • 常量声明

格式:const 常量名=表达式

  • 类型声明

格式:type 类型名= 类型定义

  • 变量声明

格式:var 变量列表:类型

  • 赋值语句

格式:标识符:=表达式

  • read语句

read(变量列表)

  • write语句

    write(输出列表)

分支语句

  • 格式
If 条件表达式 then
  语句1
[else 
   语句2 ;]
   
case 表达式 of
    值表1:语句1;
    值表2:语句2;
   ……
   end;

注意:如果if下只有一条语句,不需要加分号,else下的语句一定要加分号

例:

if x>0 then
    y :=1
else
    y:= 0;

case number of
    0:today:=sun;
    1:today:=mon;
    2:today:=tues;
    3:today:=wed,
    4:today:=thu;
    5:today:=fir;
    6:today:=sat;
    end;

循环语句

  • 格式
1:for循环
for 循环变量:= 循环初值
	to | downto 循环终值 do 
	循环体;
2:while循环
while 条件表达式 do 
    循环体
3:repeat循环
repeat
    循环体;
until 条件表达式
  • 例:
1:for循环
for i:= 1 to 10 do 
     data[i]:= 1;
    
2:while循环    
i:=0; sum :=0;
while i<100 do 
begin
        sum:= sum+i;
        i:= i+1;
end; 

3:repeat循环 
procedure NumString(n:integer, var s:array[1..10] of char);
var v,j:integer;
begin
    v:=abs(n);
    j:=2;
    repeat
        s[j]:= chr(v mod 10 + ord(‘0’)) ;
        v:= v div 10;
        j:=j+1;
    until v = 0;
    if n<0 then s[1]:=‘-’
    else s[1]:=‘ ‘
end;

过程

  • 位置:在变量声明之后,主程序之前。
  • 要求:实参的个数和类型要与形参匹配
  • 格式:
procedure 过程名(形式参数表);
常量定义;
类型定义;
变量定义;
过程或函数定义
begin
    过程语句体;
end;
  • 例:
procedure NumString(n:integer, var s:array[1..10] of char);
var v,j:integer;
begin
    v:=abs(n);
	 j:=2;
     repeat
          s[j]:= chr(v mod 10 + ord(‘0’)) ;
          v:= v div 10;
	       j:=j+1;
     until v = 0;
     if n<0 then s[1]:=‘-’
	  else s[1]:=‘ ‘
end;
  • 调用

    ...
    NumString(-10, str);
    ...

函数

  • 位置:在变量声明之后,主程序之前。
  • 要求:实参的个数和类型要与形参匹配
  • 格式:
function 函数名(形式参数表):类型;
常量定义;
类型定义;
变量定义;
过程或函数定义
begin
    函数语句体;
end;
  • 例:
function max(a,b:integer):real;
var  m:integer;
begin
    m:=a;
    if(b>a) then m:=b;
    max:= m;
end;
  • 调用

    ......

    x:=max(x,y);

    ......

枚举

  • 类型定义

    type day=(sun,mon,tues,wed,thu,fri,sta);

  • 变量定义

    var payday,today,firstday: day;

  • 例:

program todaytomorrow(input,output);
type
	day=(sun,mon,tues,wed,thu,fri,sat);
var
	today,tomorrow:day;
	number:integer;
begin
	read(number);
	case number of
		0:today:=sun;
		1:today:=mon;
		2:today:=tues;
		3:today:=wed,
		4:today:=thu;
		5:today:=fir;
		6:today:=sat;
	end;
	if today = sat
	then tomorrow =sun
	else tomorrow = succ(day)
end.

子界类型

  • 类型定义

    子界类型定义了某种类型的取值范围 ,这种类型必须是有序类型(如整型、字符型)

  • 说明

    • 定义子界类型时,你不需要指定基类的名字,而只需提供该类型的两个常数。

    • 所用基类必须是有序类型,定义结果将是另一种有序类型。

    • 赋给子界类型变量的值必须是子界定义范围内的值 。

  • 例子:

type
  Ten = 1..10;
  OverHundred = 100..1000;
  Uppercase = 'A'..'Z'; 

记录(结构体)

  • 概念

描述统一事物的不同属性

  • 定义格式
type 名字 = record
    属性1: 类型;
    属性2: 类型;
    属性3: 类型;
    ...
    ...
  end; 
  • 例子:
type
    Student = record
    name:string;
    age: integer;
    sex: integer;
    end;
var
    p:Student;
    
    
p.name := 'codemouse';
p.age := 18;
p.sex := 1; 

指针

  • 概念

    指针是存放指定类型(或未定义类型)变量内存地址的变量

  • 类型定义

    type PointerToInt = ^Integer;

  • 变量定义

    var

    ​ P: ^Integer;

    ​ X: Integer;

  • 使用

    指向某地址: P := @X; X := 10;

    修改地址的值: P^ := 20;

  • 释放与申请

    var
      P: ^Integer;
    begin
      New (P);
      P^ := 20;
      ShowMessage (IntToStr (P^));  
      Dispose (P);
    end;