永发信息网

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

答案:2  悬赏:30  手机版
解决时间 2021-05-09 01:13
记录 。函数。详细点
最佳答案
 

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非常感谢!

全部回答
高质量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
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
幸福、它有颜色吗?
求今年好听的慢摇,节奏动感强一点的HI歌,
索爱W580是不是已经停产了?
嘴唇上火了怎么办?
CF打野战时不听脚步 听歌找节奏 应该听哪首歌
龙泉酒类经销部这个地址在什么地方,我要处理
为什么为什么为什么133路公交车总是很慢才来
怎么打纳尔,LOL诺手上单怎么打纳尔
3G网卡是什么?SONY本本可以用吗?
江苏无锡至杭州文三路做什么大巴可以直接到?
痘痘印多久才会消?
我从哈哈游戏盒下的魔兽争霸怎么才能下上地图
被别人伤害的句子,如何控制自己的阴暗面不发
鑫辉小吃地址有知道的么?有点事想过去
怎么用同一个电脑上 我的qq不显示我在用qq音
推荐资讯
家教费用怎么收 是一次一收还是一月一收 还是
在QQ书城里可以用手机下载书吗?
右胸下肋骨内疼痛是怎么回事
买双色球中奖怎么领奖,双色球中奖如何领奖
形容失眠的语录,描写半夜睡不着觉的唯美句子
想保持身材需要注意哪些方面?
求一个哥特式的英文单词(好的名字,我会加悬
DW做的 这个位置怎么这么宽呢
qq三国炫装阴阳穿的炫装豪杰可以穿吗?
农商银行账户里没有一定金额,是否每月被扣除
谁给饶雪漫《微雪》完整版全套TXT格式的小说
QQ象棋里对方不肯和棋怎么办?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?