永发信息网

求pascal语言中记录和函数一章总结

答案:2  悬赏:30  手机版
解决时间 2021-05-09 01:13
  • 提问者网友:锁深秋
  • 2021-05-08 14:23
记录 。函数。详细点
最佳答案
  • 五星知识达人网友:北方的南先生
  • 2021-05-08 14:49
 

8.1 过程
1.过程的定义

procedure 过程名(形式参数:参数说明);{也可以不带参数}
var 
begin 
...
end;

2.过程的调用

过程名(实在参数表);

例1:求n个自然数的最大公约数;

program gcd1;
const maxn=100;

var n,i,gcd:integer;
    a:array[1..maxn] of integer;
procedure enter;
begin
 write('n=(<100)');readln(n);
 for i:=1 to n do
 repeat
 write('a[',i,']=');readln(a[i]);
 until a[i]>0;
end;

procedure find_gcd(x,y:integer);{定义过程}
var r:integer;
begin
 r:=x mod y;
 while  r<>0 do 

  begin x:=y;y:=r;r:=x mod y; end
 gcd:=y;
end;


procedure print;
begin
 writeln('GCD=' ,gcd);
end;
begin
 enter;
 gcd:=a[1];
 for i:=2 to n do
 find_gcd(gcd,a[i]);
 print;
end.

8.2 函数

 1.函数的定义
function 函数名(形参表):函数类型; { ————函数首部}
var {————局部变量说明部分}
begin {————函数体}
... {————函数语句}
...
函数名:=表达式
end;
2.函数的调用:

函数在语法上相当于一个表达式,所以,调用时,函数不能独立成为一个语句;它可以出现在任何表达式可以出现的地方。
例如赋值语句的右边:
X:=函数名(实在参数表); {————X的类型与函数类型必须一致}
又,如果函数类型是boolean,则还可以出现在条件语句中,充当条件表达式:
if 函数名(实在参数表) then ……
例3:编一程序,求从10名同学中选出3名代表,有几种不同的选法。

 (公式:C(m,n)=m!/n!*(m-n)!从m中选n)

program zohe1;
var m,n:integer;
    c:longint;
function factor(x:integer):longint;{定义}
 var i:integer;
 p:longint;
 begin
 p:=1;
  for i:=1 to x do p:=p*i;
  factor:=p;{这个语句必须}
 end;
begin
 write('m,n=');readln(m,n);
 c:=factor(m) div (factor(n)*factor(m-n));{调用}
 writeln('c(',m,',',n,')=',c);
end.

8.3全局变量和局部变量

    在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。全局变量作用域是整个程序;局部变量作用域是定义该变量的子程序。当全局变量与局部变量同名时:在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。

例4:全局变量和局部变量。

program local_global;
var i,k:integer;
procedure sub1;
var i,j:integer;
 begin
  i:=17;
  writeln('i in sub=',i);
  writeln('k in sub=',k);
 end;
begin
 i:=2;k:=9;
 writeln('i in main=',i);
 writeln('k in sub=',k);
 sub1;
 writeln('i in main=',i);
 writeln('j in main=',j);
 readln;
end.

上述程序运行时将出现Unknown Identfier;因为变量j在主程序中没定义。

当删除本语句时。运行结果如下:

i in main=2

k in main=9

i in sub=17

k in sub=9

i in main=2

8. 4 值参和变量参数

值形参——传值:调用时可用表达式代替形参,不该变实在参数的值。
变量形参——传地址:调用时必须用变量代替行参变量,改变实在参数的值。

例4:请看下列程序的运行结果。

program li3_10;
var  a,b,c:integer;
procedure sub(x,y:integer;var z:integer);
 begin
 x:=x+1;y:=y+1;z:=x+y;
 writeln('sub:x=',x:2,'y=',y:2,'z=',z:2);
 end;
begin
 a:=1;b:=4;c:=9;
 writeln('main:a=',a:2,'b=',b:2,'c=',c);
 sub(a,b,c);
 writeln('main:a=',a:2,'b=',b:2,'c=',c);
 sub(c+5,b*b,a);
 writeln('main:a=',a:2,'b=',b:2,'c=',c);
 readln;
end.

main:a=1 b=4 c=9

sub:x=2 y=5 z=7

main:a=1 b=4 c=7

sub:x=13 y=17 z=30

main:a=30 b=4 c=7


10.1 记录

1.记录的定义:
  type 类型标识符=record
     字段名1:类型1;
     字段名2:类型2;
      ...
     字段名n:类型n;
    end;
  如:
   type
    studata=record
     num:string[6];
     name:string[8];
     sex:boolean;
     s:array[1..5] of real;
    end;
   var
    student:studata;
    students:array[1..10] of studata;
2.记录的运用:
  (1)对记录中和个域的引用,要写出记录名和域名,如:student.num
  (2)开域语句:with。
    with 记录名 do 语句;
   或
    with 记录名1,记录名2,... do 语句;
   注意:
   1. 在do后面语句中使用的记录的域时,只要简单地写出域名就可以了, 域名前的记录变量和"."均可省略。
   2. 在关键字with后面,语句可以是一个简单语句,了可以是一个复合语句。
    3. 虽然在with后可以有多个记录变量名,但一般在with后只使用一个记录变量名。
祝你能学好pascal,望采纳,O(∩_∩)O非常感谢!

全部回答
  • 1楼网友:笑迎怀羞
  • 2021-05-08 15:17
高质量C++/C编程指南 http://www.codeguru.cn/CPP/AdvanceC++-CProgramGuide/ 应用C++技术构建优质软件 http://www.codeguru.cn/CPP/AppliedCpp/ C++编码规范与指导 http://www.codeguru.cn/CPP/C++CodingGuide/ C++PrimerPlus4th http://www.codeguru.cn/CPP/C++PrimerPlus4th/ C语言函数示例集 http://www.codeguru.cn/CPP/CFunctionExamples/ C语言技术文章 http://www.codeguru.cn/CPP/CLanguageArticle/ C++疑难解答 http://www.codeguru.cn/CPP/CppAQ/ C++实践之路 http://www.codeguru.cn/CPP/CppInAction/ C++应用程序例解 http://www.codeguru.cn/CPP/CppProgramLiJie/ C++参考 http://www.codeguru.cn/CPP/cppreference/ C语言编程宝典之一 http://www.codeguru.cn/CPP/Cprogramdict/ C语言学习和精华文摘 http://www.codeguru.cn/CPP/CStudyAndArticle/ Effective C++ http://www.codeguru.cn/CPP/EffectiveCpp/ GenericProgramming http://www.codeguru.cn/CPP/GenericProgramming/ TheCprogrammingLanguage http://www.codeguru.cn/CPP/TheCprogrammingLanguage/ 用VC开发ACTIVEX http://www.codeguru.cn/VC&MFC/ActiveXProgramingWithVC/ 用DirctX9进行高级3D游戏程序设计 http://www.codeguru.cn/VC&MFC/Advanced3DGameProgrammingwithDirectX9/ 21天学会VC数据库编程 http://www.codeguru.cn/VC&MFC/DatabaseProgrammingWithVisualC6In21Days/ STL轻松入门 http://www.codeguru.cn/VC&MFC/EasySTL/ COM+组件服务技术内幕 http://www.codeguru.cn/VC&MFC/InsideCOM+/ OGRE手册 http://www.codeguru.cn/VC&MFC/OGREManual/ OpenGL基础图形编程 http://www.codeguru.cn/VC&MFC/OpenGLJiChuTuXingBianCheng/ MFC程序设计 http://www.codeguru.cn/VC&MFC/progmfc2/ VC技术内幕 http://www.codeguru.cn/VC&MFC/ProgramingVC/ Windows核心编程 http://www.codeguru.cn/VC&MFC/ProgrammingApplicationsforMicrosoftWindows/ VC编程经验总结 http://www.codeguru.cn/VC&MFC/VCBianChengJianYanZongJie/ VC编程资料 http://www.codeguru.cn/VC&MFC/VCBianChengZiliao/ VC高级编程 http://www.codeguru.cn/VC&MFC/VCGaoJiBianCheng/ vchome图形图像编程技术篇 http://www.codeguru.cn/VC&MFC/vchomeGraph/ VC知识库 http://www.c
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯