读程序基础

来源:互联网 发布:生死狙击矩阵图片 编辑:程序博客网 时间:2024/06/02 03:14

读程序写结果,大致可以考察学生几方面的能力:一是程序设计语言的掌握情况;二是相关算法的掌握情况;三是数学的知识面及运算能力;四是细心、耐心的心理品质。在NOIP初赛中所占的分值,近几年一直维持在(4 *8)分。对于参赛选手,又快又准地完成这类题,显得尤为重要。本系列文章将全面分析这类题的常用解题方法与技巧,敬请期待。
本讲,我们简要说明一下阅读程序写结果,或者说参与NOIP初赛,要了解并掌握的一些语言基础(以Pascal语言为例),以及解决此类型题目的最基本解法。
一、POSCOI相关知识备忘(以free Pascal 2.04为语言载体)
熟练掌握并灵活使用以下Pascal语言相关知识:
(一) 常用运算
1.算术运算:+ 、― *、 / 、DIV、MOD
2.字符串运算:+ (字符串连接)
1.集合运算:+ (并集)、*(交集)、一(差集)、in
2.关系运算:>、<、=、<>、、≤
1.逻辑运算:NOT , AND , OR , XOR
(二) 常用子程序
1. 求绝对值函数abs(x)如:abs(3)返回值为3;abs(-3.1)返回值为:3.1
2. 取整函数int (x)定义:function Int(X:Real):Real;如:int(3.6)返回值为:3.0; int(-3.6)返回值为:-3.0
3.截尾函数trunc(x) 定义:function Trunc (X:Real):Longint
如:trunc(3.6)返回值为:3;trunc(-3.6)返回值为:-3
4.四舍五入函数round(X)如:R:=round (123.456); {123}; R:=round (12.56);{13};R:=round(-123.456);{-123}; R:=round(-12. 56);{-13}
5.取小数函数frac(x)
如R:=Frac(123.456); {0.456?}; R:=Frac (-123.456);{-0.456}
6.求平方根函数sqrt(x)和平方函数sqr(x) 如:R:=?sqrt(4);{2.0}; R:=sqr(4);{16}
7.求以e为底幂函数exp(x):ex
8.求以e为底对数函数ln(x):logex
9. 随机数函数function random[(range:word)]:
randomize随机数初始化语句random返回之间的随机实数random(range)返回随机整数
10.求字符x对应序号函数ord(x)如R: =ord(‘A’);{65}
11.求序号x对应字符函数chr(x)如R: =chr(65);{‘A’}
12. 将字符串小写转换为大写函数upcase
(st)如R:=upcase(‘AbcD’);{‘ABCD’}
13. 求前趋函数pred (x)如R:=pred(‘B’);{‘A’}
14. 求后继函数succ(x)如R:=succ(‘B’);{‘C’}
15. 判断x是否为奇数函数odd(x)如R:=odd(7);{TRUE};如R:=odd(8);{FALSE}
16.字符转换为数值过程val(str,a,b)
如,执行语句val(‘2.4’,a,b);后,a值为:2.4 执行语句val(‘2c4’,a,b);后,a为:0 , b为:2
17.数值转换为字符过程Str(a,st)如,执行语句str(12, st);后,st值为:’12’
18. 求字串st长度函数length(st)如R:=length(‘ABC’); {3}
19.函数Pos(stl,st):查找stl在st里的起始位置,整型。如R:=pos(‘cd’,’abcde’); {3}
20.函数Copy(st,a,b):提取st里第a个位置的b个字符。如R:=copy(‘abcdef’ ,2,3);{‘bcd’}
21.过程Delete(st,a,b):删除st中第a个位置的b个字符如,执行语句:st=’abcdef ; delete(st,2,3); 后,st值为:’aef’
22. 过程Insert(stl,st,a):把stl插入st的第a个位置中如,执行语句:st=’abcdef’ ;insert(‘xy’,st,3); 后,st值为:’abxycdef’
23. 过程Fillchar(x,y,a):按字节填充。常用Fillchar(a,size (a),0)对数组的所有元素进行清零。
24. 过程Inc(i)使i:=i+l;Inc(I,b)使I:=I+b;
25. 过程dec(i)使i:=i-l;dec(I,b)使I:=I-b;
26. EOF:判断当前打开的文件是否已到文件尾
2.E0LN:判断是否为行尾
(三) 位运算
l.SHR:x SHR n把x换成二进制后向右移n位
2.SHL:x SHL n 把x换成二进制后向左移n位
3.and:位与。(1可视为真;0为假)。在其他领域可用符号∧表示。
4.or:位或。在其他领域可用符号V、+表示
5.xor:位异或。在其他领域可用符号⊕示
6.not:按位取反。在其他领域可用符号﹁表示
【例】Var i,j:byte;
begin
i:=10; {(10)10= (0000 1010)2 }
j:=12; {(12)10= (0000 1100)2}
writeln(i shr 2); {(0000 1010)2向右移两位,高位补零:(0000 0010)2,输出2}
writeln(i shl 2); {(0000 1010)2向左移两位,低位补零:(0010 1000)2,输出40}
writeln(i and j); {(0000 1010)2 (0000 1100) 2=(0000 1000)2 ,输出8}
writeln(i or j); {(0000 1010)2 V (0000 1100)2= (0000 1110)2,输出14}
writeln(i xor j); {(0000 1010)2⊕(0000 1100)2= (0000110)2 ,输出6}
writeln(not i); {(0000 1010)2 =(1111 0101)2, 输出245}
end.
(四) 几个语句及几个符号
1. break:退出循环
2.continue:直接回到循环体顶部执行
3.exit:退出当前子程序。若是主程序,结束运行。
4.halt:结束运行,回到操作系统
5.记录的定义及使用、开域语句with
6.指针的定义与使用:
^ :定义指向某类型的指针变量,该变量存放内存地址。
取出该变量存放的内存地址所指向内存变量的值
@ :取变量的内存地址。常用于对指针变量赋值。
这些最基本的语言基础是”读程序写结果”的立根之本。只有熟练掌握这些语言基础,才能看懂与之相关的程序。

原创粉丝点击