欢迎来到装配图网! | 帮助中心 装配图网zhuangpeitu.com!
装配图网
ImageVerifierCode 换一换
首页 装配图网 > 资源分类 > DOC文档下载
 

一个完全的PASCAL程序结构框架如下

  • 资源ID:161622286       资源大小:91.50KB        全文页数:17页
  • 资源格式: DOC        下载积分:10积分
快捷下载 游客一键下载
会员登录下载
微信登录下载
三方登录下载: 微信开放平台登录 支付宝登录   QQ登录   微博登录  
二维码
微信扫一扫登录
下载资源需要10积分
邮箱/手机:
温馨提示:
用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

一个完全的PASCAL程序结构框架如下

一个完全的PASCAL程序结构框架如下: PROGRAM 程序名(程序参数表);CONST  常量声明;TYPE  类型声明;VAR  变量声明;FUNCTION 函数名(参数表):函数类型;  函数声明;PROCEDURE 过程名(参数表);  过程声明;BEGIN  程序主体;END. 一、变量定义方法VAR  变量名1:变量类型1;  变量名2:变量类型2;  变量名3,变量名4:变量类型3;二、变量命名规则    1、首字符必须是英文    2、只能由英文、数字和下划线组成。 三、变量类型    常用的几个变量类型如下表:类型名含义取值范围占字节数shortint短整型-1281271integer整型-32768327672longint长整型-231231-14real实数2.9×10-391.7×10386single单精度1.5×10-453.4×10384double双精度5.0×10-3241.7×103088extended扩展实数1.9×10-49511.1×10493210char字符单个ASCII字符1string字符串最多255个字符字符个数boolean布尔型True, False1一、输出语句格式    Writeln(项目1,项目2,项目n);  输出内容后换行    Write(项目1,项目2 ,项目n);  输出内容后不换行二、输入语句格式   Read(变量1,变量2,变量n);    从键盘输入n个数据,以空格格开   Readln(变量1,变量2 ,变量n); 从键盘输入n个数据,以空格格开,读完后换行 三、赋值语句用法    变量名:表达式;     把右边表达式的值计算出来,结果赋给左边的变量        举例:        a:=3;        a:=a+1;        s:=(a+b)*(c+d);一、装配文件    assign(input,文件路径);  文件路径一般为相对路径,相对程序的工作目录    reset(input);    assign(output,文件路径);    rewrite(output);二、输入输出方法    read(x);    write(x);三、关闭文件    close(input);    close(output);  输出文件必须关闭,否则可能不能正确保存共四级(同一级优先级相同,按照从左到右的顺序执行) 一、单目运算符:(最高优先级)   取变量或函数的地址(返回一个指针)    not 逻辑取反或按位取反 二、乘除及按位运算符    * 相乘或集合交集    / 浮点相除    div 整数相除    mod 取模 (整数相除的余数)    as 程序运行阶段类型转换 (RTTI运算符)    and 逻辑或按位求和    shl 按位左移    shr 按位右移 三、加减运算符   + 相加、集合并集、字符串连接或指针增加一个偏移量    - 相减、集合差集或指针减少一个偏移量    or 逻辑或按位或运算    xor 逻辑或按位异或运算 四、关系及比较运算符(最低优先级)    = 判断是否相等    <> 判断是否不相等    < 判断是否小于    > 判断是否大于    <= 判断是否小于或等于,或是否是一个集合的子集    >= 判断是否大于或等于,或是否是一个集合的父集    in 判断是否是集合成员    is 判断对象是否类型兼容 (又一个RTTI运算符)程序的基本控制结构一、顺序结构的程序按照书写顺序依次执行begin  语句1;  语句2;end;二、实例输入两个整数x,y,计算x,y的差并输出。Program example;var  x,y,s:integer;begin  read(x,y);  s:=x-y;  writeln(s);end.一、分支结构又叫选择结构或条件结构If 条件   then 语句1     注意这里不可以加分号,因为IF语句到这里没有结束,后面还有ELSE语句   else 语句2;二、没有ELSE的IF语句If 条件   then 语句1; 三、实例输入3个整数,输出最大的数。Program bijiao;var  a,b,c,max:integer;begin  readln(a,b,c);  if a>=b     then max:=a     else max:=b;  if c>max then max:=c;  writeln(max);end. 四、IF 语句的嵌套If 条件   Then Begin          If 条件            Then 语句1            Else 语句2;        End   Else  Begin          If 条件            Then 语句3            Else 语句4;        End;一、For循环    For 循环变量:=初值 to 终值 do         循环体;    若循环体有多条语句,则必须用beginend复合语句括起来。【典型例题1】计算s=1+2+3+.+n,n由键盘输入。Program example;var  s,i,n:integer;begin  readln(n);  s:=0;  For i:=1 to n do    s:=s+i;  writeln(s);end.   【典型例题2】从键盘输入一个数,判断它是不是素数。PROGRAM sushu;VAR  a,i:integer;  flag:boolean;BEGIN  readln(a);  flag:=true;  FOR i:=2 to trunc(sqrt(a) do    IF a mod i=0       THEN BEGIN flag:=false;BREAK;END;  IF flag    THEN writeln(Y)    ELSE writeln(N);END. 二、While循环    While 条件 Do       循环体;     同样,若循环体有多条语句,则必须用beginend复合语句括起来。【典型例题】求最大公约数program HCF;var  a,b,r:integer;begin  r:=a mod b;  while r<>0 do    begin      a:=b;      b:=r;      r:=a mod b;    end;writeln(b);end. 三、Repeat循环   Repeat     循环体;   Until 条件;    即使循环体有多条语句,也不必用beginend复合语句。【典型例题】求自然对数e的近似值,直到最后一项小于10-5为止。           program e1;var  i:integer;  e,s,t:real;begin  e:=1;  t:=1;  i:=1;  repeat    t:=t*i;    e:=e+1/t;    i:=i+1;  until 1/t<=10e-5;  writeln(e);end.函数和过程 一、标准函数(内置函数)函数名含义abs(a)求a的绝对值sqr(a)求a的平方sqrt(a)求a的平方根sin(a)求a的正弦值,a是弧度cos(a)求a的余弦值,a是弧度arctan(a)求a的反正切值,结果为弧度exp(a)自然对数e的a次方ln(a)求a的自然对数值trunc(a)求a的整数部分round(a)四舍五入取整ord(a)求字符a的ASCII码chr(a)根据ASCII码换成相应的字符random(a)求小于a的随机整数二、自定义函数Funtion 函数名(参数1:参数类型,参数2:参数类型,.):函数值类型;  VAR    函数内变量定义;  BEGIN    函数体;  END;【典型例题】自定义一个判断素数的函数Function prime(a:longint):Boolean;  Var    i:longint;  Begin    prime:=true;    for i:=2 to trunc(sqrt(a) do      if a mod i=0         then begin prime:=false;break;end;  End;一、标准过程  inc(a)     等价于a:=a+1  inc(a,i)   等价于a:=a+i  dec(i)     等价于a:=a-1  dec(a,i)   等价于a:=a-i二、自定义过程Procedure 过程名(参数1:参数类型,参数2:参数类型,.);  VAR    过程内变量定义;  BEGIN    过程体;  END;【典型例题】随机产生10个100以内不重复的随机数存入数组并输出,然后从小到大排序再输出。Program example;Const  n=10;Var  a:array1.n of integer;  i,x,temp:integer;Function find(x:integer):boolean;  自定义查找函数  var   i:integer;  begin   find:=false;   for i:=1 to n do     if ai=x then begin find:=true;exit;end;  end;Procedure writea;             自定义输出数组元素的过程  var    i:integer;  begin    for i:=1 to n do      write(ai,' ');    writeln;  end;Procedure selectsort;  var    i,j,k:integer;  begin   for i:=1 to n-1 do    begin      k:=i;      for j:=i+1 to n do        if ak>aj then k:=j;        if k<>i then begin temp:=ai;ai:=ak;ak:=temp;end;    end;  end;Begin  主程序开始  randomize;  x:=random(100);  for i:=1 to n do    begin     while find(x) do        x:=random(100);     ai:=x;    end;  writea;       调用输出数组过程  selectsort;   调用选择排序过程  writea;       调用输出数组过程end.【典型例题1】求阶乘n!    求n!我们可以使用For循环来做,这里我们换一个思路,使用递归的方法来做。看下面的数学递推表达式。               我们可以看出为求n!,必先求出(n-1)!,同理,要求出(n-1)!,必先求出(n-2)!,则如此递推下去,最终当n=0时我们就可以马上得出结果1,然后我们从1开始再逐步返回到n来求出n!【演示课件】请用右键目标另存为命令保存下来再观看Program jiecheng;Var  n:integer;Function jc(n:integer):longint;  Begin   If n = 0      Then jc = 1     Else jc = n * jc(n - 1)  End;Beginmain  readln(n);  writeln(jc(n);End.【典型例题2】汉诺塔问题    有三根柱A、B、C,在柱A上有N块盘片,所有盘片都是大的在下面,小片能放在大片上面。现要将A上的N块盘片移到C柱上,每次只能移动一片,而且在同一根柱子上必须保持上面的盘片比下面的盘片小,输入任意的N,输出移动方法。    (注意:这是一个古老的传说,传说是如果把64个盘子由A柱移到了C柱的话,那么世界末日就到了,事实上如果要把64个盘子从A柱移到C柱的话,即使用计算机运算,也要计算数亿年,所以这个预言未必不是真实。)【分析】    我们可以这样考虑,当n=1时,我们只要直接将A柱的盘子移到C柱,当n>1时,我们可以先把n-1个盘子由A柱通过C柱移到B柱,此时就可以把A柱剩下的最后一个盘子直接移到C柱,这样接下来只要把n-1个盘子通过A柱移到C柱即可,如果就构成了递归的思路,我们可以定义个移动过程mov(n,a,b,c)表示将n个盘子从a通过b移到c【程序】Program hannuota;Var  n:integer;Procedure move(n,a,b,c:integer);  begin   if n=1     then writeln(a,'->',c)     else begin           move(n-1,a,c,b);              把n-1个盘子从a柱经由c柱移到b柱           writeln(a,'->',c);            把剩下的第n个盘子直接移到c柱           move(n-1,b,a,c);              把在b柱上的n-1个盘子经由a柱移到c柱         end;  end;Begin  readln(n);  move(n,1,2,3);End.【典型例题3】求公约数问题    利用递归函数的方法求a,b的公约数。Program gongyueshu;Var  a,b:longint;Function hcf(a,b:longint):longint;  Begin    if a mod b=0      then hcf:=b      else hcf:=hcf(b,a mod b);  End;Beginmain  readln(a,b);  writeln('hcf=',hcf(a,b);End.数组一、数组定义方法VAR  数组名:Array下标起点.下标终点 Of 数组元素类型;例如:定义一个存储10个整数的数组a     a:array1.10 of integer;赋值方法:a1:=0;定义数组后计算机会在系统内存内划出一块连续的区域供存放数组元素一、键盘输入数据存入数组过程PROCEDURE reada;  VAR   i:INTEGER;  BEGIN   FOR i:= 1 TO n DO     READ(ai);  END;二、随机产生n个数据存入数组过程PROCEDURE randoma(max:integer;); VAR  i:INTEGER; BEGIN  RANDOMIZE;  FOR i:= 1 TO n DO    ai:=RANDOM(max);  END;三、输出数组过程PROCEDURE writea;  VAR    i:INTEGER;  BEGIN    FOR i:=1 TO n DO      WRITE(ai,' ');    WRITELN;  END;一、自定义查找函数,在数组中查找x,若有返回x的下标, 若无则返回0。FUNCTION find(x:INTEGER):INTEGER;  VAR    i:INTEGER;  BEGIN    find:=0;    FOR i:=1 TO n DO      IF ai=x        THEN BEGIN  find:=i;break;END;  END;二、在数组的p位置插入一个元素xPROCEDURE inserta(p,x:INTEGER);  VAR    i:INTEGER;  BEGIN    FOR i:= n DOWNTO p DO      ai+1:=ai;    ap:=x;    n:=n+1;  END;注意:因为要插入一个元素,所以首先必须保证数组有空余的单元,否则会出现下标越界错误。三、从数组中把下标为p的元素删除掉PROCEDURE deletea(p:INTEGER);  VAR    i:INTEGER;  BEGIN    FOR i:=p TO n-1 DO      ai:=ai+1;    n:=n-1;  END;约瑟夫问题】    编号为1,2,.,n的n个人按照顺时针方向围坐一圈。从第一个人开始顺时针方向自1开始报数,报到m时停止报数。报m 的人出列,从他在顺时针方向的下一个人开始重新报数,如此下去,直到所有人全部出列为止。设计一个程序来求出出列顺序。其中n,m由键盘输入。【思路1】    利用数组存放n个人,数组下标等于他的编号,然后模拟报数过程,报到m时输出该位置的人编号,然后该位置的值清0,继续报数并判断是否为0,是0则跳过。直到n个人全部出列为止。【参考程序】Program yueshefu;Var  a:array1.100 of integer;  n,m,i,j,p:integer;Begin  write('Input n,m:');  readln(n,m);  for i:=1 to n do    ai:=i;  p:=1;                     p用于记录报数的位置  for i:=1 to n do    begin      j:=0;                  j用于记录报到的人数      while j<m do        begin          if ap<>0 then j:=j+1;          if p=n then p:=1 else p:=p+1;  处理边界情况        end;      if p<>1           then begin write(ap-1,' ');ap-1:=0;end       处理边界情况           else begin write(an,' ');an:=0;end;    end;end.【思路2】    建立一个循环数组,数组元素的每一个值保存的是它的下一个元素的编号,如果报到m后只要修改m前面的元素的编号为m后面的元素的编号,这样就跳过了第m个元素,如此下去直到n个人全部出列。【参考程序】Program yuesefu;Var  a:array1.100 of integer;  n,m,p,i,j:integer;Begin  readln(n,m);  for i:=1 to n-1 do   ai:=i+1;  an:=1;  p:=n;  for i:=1 to n do    begin      for j:=1 to m-1 do         p:=ap;      write(ap,' ');      ap:=aap;   end;End.自定义数据类型TYPE   枚举类型标识符=(枚举值1,枚举值2 ,枚举值3, );VAR    枚举类型变量表:枚举类型标识符;【实例】 TYPE   weekday=(Sun,Mon,Tue, Wed,Thu,Fri,sat);   month=(Jan,Feb,Mar,Apr,May,Jun,Jul,Aug, Sep,oct,nov,dec);VAR   d:weekday; m:month;TYPE  子界类型标识符=常量1.常量2;VAR  子界类型变量表:子界类型标识符;【实例】 TYPE  age=0.100;  letter=a.z; VAR   a:age; l:letter;TYPE   集合类型标识符=SET OF 基类型;VAR   集合类型变量表:集合类型标识符;【实例】 TYPE  digit=Set of 0.10;VAR  a,b:digit;Begin   a:=1,3,5,7,9;   b:=0,2,4,6,8;End.【集合运算】1.空集合:2.集合并交差   并:用+表示,例如1,3,4+1,2,4=1,2,3,4   交:用*表示,例如1,3,4*1,2,4=1,4   差:用-表示,例如1,3,4*1,2,4=33.关系运算:集合可以进行>,<,=,<>等运算,规则是元素多的大于元素少的。4.包含判断:IN,例如1 in 1,3,4是True; 2 in 1,3,4是False。5.集合运算中元素的次序是不重要的。 TYPE   记录类型标识符=RECORD                  域标识符表:类型;                   域标识符表:类型;                                    End;VAR   记录类型变量表:记录类型标识符;【实例】 一个学生包括学号、姓名、性别、年龄、成绩五个域。TYPE  student=RECORD           num:integer;           name:string;           sex:(male,female);           age:0.100;           score:real;          END;VAR   s:student;   a:array1.100 of stuent;【赋值方法】s.num=9601;s.name=li min;s.sex=male;s.age=18;s.score=91;a1.num=9601;a1.name=li min;a1.sex=male;a1.age=18;a1.score=91;1、字符串用于存放整批的字符数据。字符串可以看作是特殊的字符串数组来处理。字符串定义的格式:var  s:string; s1:string15;  字符串长度固定为15    字符串定义时,如不指定长度,则按该类型的最大长度(255个字符)分配空间,使用时最大可用长度为255个;如果在中括号中给出一个具体的值(1255之间),则按这个值的大小分配空间。使用时,最大的可用长度即为该值。 2、字符串的输入、输出:    字符串类型既可按数组方式输入、输出,也可直接输入、输出:readln(s);writeln(s);多个字符串输入时以回车作为数据间的分隔符;每个readln语句只能读入一个字符串。 3、有关字符串的操作: 操作 类型 作用 返回值 例子 length(s)函数 求字符串s的长度整型s:='123456789'l:=length(s);l的值为9copy(s,w,k)函数 复制s中从w开始的k位字符串s:='123456789's1:=copy(s,3,5);s1的值是'34567'val(s,k)过程 将字符串s转为数值,存在k中; s:='1234'val(s,k);write(k);k=1234str(i,s)过程 将数值i转为字符串s i:=1234;str(i,s);write(s);s='1234'Delete(s,w,k)过程 在s中删除从第w位开始的k个字符 s := 'Honest Abe Lincoln'Delete(s,8,4);Writeln(s); 'Honest Lincoln' Insert(s1,S,w)过程 将s1插到s中第w位 S := 'Honest Lincoln'Insert('Abe ', S, 8);  'Honest Abe Lincoln' Pos(c, S)函数 求字符c在s中的位置整型S := ' 123.5'i :=Pos(' ', S);i的值为1   +运算符 将两个字符串连接起来 s1:='1234's2:='5678's:=s1+s2;'12345678'一、指针类型是一种动态数据结构,它随着程序的执行而改变长度。定义方法:TYPE    point=node;   node=RECORD         data:<数据类型>;         link:point;        End;VAR   p,q,r:point;二、空间分配     new(p);     new(q);三、赋值方法     p.data:=10;     p.link:=q;     q.data:=100;     q.link:=NIL;  NIL表示空指针17

注意事项

本文(一个完全的PASCAL程序结构框架如下)为本站会员(无***)主动上传,装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知装配图网(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!