关于pascal的函数问题

现在学到函数,觉得有点困难,什么叫返回其结果制。函数和过程有什么区别?求一个易懂的教程。

上面那位,你理解错了‘函数’的意思了。
搂主,听着:
为了解决复杂问题,我们常常将一个较大的程序分为若干个相对独立的程序模块,每个程序模块用来实现一个特定的功能。这样的程序块,称为子程序。整个程序是通过一个主程序作为线索并调用若干个子程序来解决问题。下图为主程序调用子程序的关系图,我们应注意到当完成某子程序调用后,总是返回到调用点的下一个语句继续执行。在PASCAL中,子程序有两种形式:函数和过程。
自定义的函数必须放在它的主程序的说明部分。调用自定义函数就象调用标准函数一样。函数最终返回一个值,故函数可看成一个数据,并放入表达式中。
过程:说明部分又可以包括常量说明、变量说明、类型说明、还可以包括其它函数和过程说明。过程也可以没有说明。说明部分定义的变量称为局部变量,在过程结束并返回调用它的上一级程序后,这些局部变量将被全部释放,对主程序不产生任何影响。
温馨提示:内容为网友见解,仅供参考
第1个回答  2006-10-16
一、数学函数:

Inc(i) 使I:=I+1;
Inc(I,b) 使I:=I+b;
Abs(x) 求x的绝对值 例:abs(-3)=3
Chr(x) 求编号x对应的字符。例:Chr(65)=’A’ chr(97)=’a’ chr(48)=’0’
Ord(x) 求字符x对应的编号。例:ord(‘A’)=65 ord(‘a’)=97 另外:ord(false)=0 ord(true)=1
Sqr(x) 求x的平方。 例:sqr(4)=16
Sqrt(x)求x的开方. 例:sqrt(16)=4
round(x) 求x的四舍五入 例:round(4.5)=5
trunc(x) 求x的整数部分 例:trunc(5.6)=5 结果是integer型
int(x) 求x的整数部分 例int(5.6)=5.0 结果是real型
frac (x)求x的小数部分 例 frac(5.6)=0.6
pred(x) 求x的前导 pred(‘b’)=’a’ pred(5)=4 pred(true)=false
succ(x) 求x的后继 succ(‘b’)=’c’ succ(5)=6 succ(false)=true
odd(x) 判断x是否为奇数。如果是值为true,反之值为false. Odd(2)=false odd(5)=true
power(a,n) 求a的n次方 power(2,3)=8
random 取0~1之间的随机数(不能取到1)
randomize 随机数的种子函数,在每次设置随机数时都要把这个函数放在最前面.
Fillchar(a,size(a),0) 数组初始化,即把数组a的值全部置为0
SHR: x SHR n 把x换成二进制后向右移n位,相当于 把x 除以 2n
SHL: x SHL n把x换成二进制后向左移n位,相当于 把x 乘以 2n

二、字符串函数
1. 连接运算 concat(s1,s2,s3…sn) 相当于s1+s2+s3+…+sn.
例:concat(‘11’,’aa’)=’11aa’;
2. 求子串。 Copy(s,I,L) 从字符串s中截取第I个字符开始后的长度为l的子串。
例:copy(‘abdag’,2,3)=’bda’
3. 删除子串。过程 Delete(s,I,l) 从字符串s中删除第I个字符开始后的长度为l的子串。
例:s:=’abcde’;delete(s,2,3);结果s:=’ae’
4. 插入子串。 过程Insert(s1,s2,I) 把s1插入到s2的第I个位置
例:s:=abc;insert(‘12’,s,2);结果s:=’a12bc’
5. 求字符串长度 length(s) 例:length(‘12abc’)=5
6. 搜索子串的位置 pos(s1,s2) 如果s1是s2的子串 ,则返回s1的第一个字符在s2中的位置,若不是子串,则返回0.
例:pos(‘ab’,’12abcd’)=3
7. 字符的大写转换。Upcase(ch) 求字符ch的大写体。
例:upcase(‘a’)=’A’
8. 数值转换为数串。 过程 Str(x,s) 把数值x化为数串s.
例:str(12345,s); 结果s=’12345’
9. 数串转换为数值。 过程val(s,x,I) 把数串s转化为数值x,如果成功则i=0,不成功则I为无效字符的序数
例:val(‘1234’,x,I);结果 x:=1234
第2个回答  2006-10-01
返回其结果制就是把函数最后得到的值返回给调用它的程序。
函数一定返回给调用它的程序一个值,而过程不返回值给调用它的程序。过程更像一个子程序。

pascal函数问题
你要使用函数,应该用function来定义,并且要先定义后使用!program proje;function cs:integer;begin write('123');end;begin cs;end.

关于pascal的几个问题
mod与*的优先级是相同的,所以从左往右算。10*8=80 80 mod 5就是取80除以5的余数=0 0*2=0 0\/8=0 所以最后的结果是0。第二题:这些函数涉及ASCLL码的取值。在计算机系统中,每一个字符都对应一个ASCLL码,但每种编译器拥有不同的ASCLL码。其中,关于ASCLL码的函数有这些:ord('a')=97 o...

pascal过程与函数的问题
函数有返回值,过程没有。个人观点:过程是鸡肋,可被函数取代。举例:使用函数 program cs;var a,b:longint;function jiafa(c,d:longint):longint;begin jiafa:=c+d;end;begin readln(a,b);writeln(a,'+',b,'=',jiafa(a,b));end.看上面一个加法程序 输入两个数 如 1 2 输出 1+2=...

pascal难题,用递推谢谢,在线等
计算公式:s=2*(n-m)+(2*n-m+1)*m\/2 比如:n=3, m=1, 则 s=2*2+3=7 若 n=2, m=1, 则 s=2*1+2=4 === 分析:(一)n-m刀过圆心的蛋糕块数为 2*(n-m)(二)余下的m刀均按最大可能切:第1刀增加的块数:n-m+1 第2刀增加的块数:n-m+2 第3刀增加的块...

关于Pascal中的什么替换,循环的问题?
S是累加器,s:=0就是给S赋初值,s:=s+i就是用s累加i,前面的i就是从1到n;s就是等于s+i(1+2+3+4+5+6)一直循环

请问PASCAL中的INC函数问题
inc(a)等于a:=a+1;例:i := 100;inc(i);结果:i等于101 2.inc(integer,integer)inc(a,b)等于a:=a+b;例:i:=100;inc(i,20);结果:i等于120 参考资料:http:\/\/zhidao.baidu.com\/question\/14063651.html?si=3

关于pascal的函数问题
这样的程序块,称为子程序。整个程序是通过一个主程序作为线索并调用若干个子程序来解决问题。下图为主程序调用子程序的关系图,我们应注意到当完成某子程序调用后,总是返回到调用点的下一个语句继续执行。在PASCAL中,子程序有两种形式:函数和过程。自定义的函数必须放在它的主程序的说明部分。调用自...

【Pascal递归函数】计算ackerman函数值;
两个问题:1、Integer太小了,数据早就爆了;2、栈的调用过头了,“exitcode = 201”的意思就是栈溢出。事实上,阿克曼函数的值是极大的。Ackermann(0,n)=n+1 Ackermann(1,n)=n+2 Ackermann(2,n)=2*n+3 Ackermann(3,n)=2^(n+3)-3 Ackermann(4,n)=2^2^2^……^2-3,乘幂中共有...

我的PASCAL 选择排序 哪里出错了?
错误一:procedure temp(a,b:integer) ;var c :integer;begin c:=0;c:=a; a:=b; b:=c;end;这个函数有问题 pascal函数参数定义包括形参和实参 形参仅传递数值进函数,函数内部的修改不能改变原来的值,调用的时候可以用数值、表达式、变量都可以 而实参是传递变量的地址,函数内部修改可以修改其...

pascal 问题
1.(2070)16=2*16^3+7*16^1=(8304)10 (32)16=3*16^1+2*16^0=(50)10 8304+50=8354 故A,C不正确 8354转换十六进制 除以十六取余数倒读 8354\/16=522……2 522\/16=32……10(A)32\/16=2……0 2\/16=0……2 倒过来=20A2 所以BE不对 所以选D 2.(32)16=(50)10 解题过程...

相似回答
大家正在搜