Borland 基础与应用开发课程认证试题整理集二
- 摘要:试题31记录变量是静态分配的,在栈中分配,所有的对象都是在堆中分配的。试题32集合类型typeTmyset=setof基类型最多256个元素,基类型为有序类型不但数量<=255且序号都必须0<=X<=255typemyset=setof5..256;不行,setof0..255正确File类型:无类型文件File(按128字节分块)文本文件TextFile试题33typeTnotifyEvent=procedure(sender:Tobject)ofobject
- 标签:Borland 应用开发
试题31 记录变量是静态分配的,在栈中分配,所有的对象都是在堆中分配的。
试题32 集合类型 type Tmyset=set of 基类型 最多256个元素,基类型为有序类型
不但数量<=255 且序号都必须0<=X<=255
type myset=set of 5..256; 不行,set of 0 .. 255 正确
File类型:无类型文件 File (按128字节分块) 文本文件 TextFile
试题33 type TnotifyEvent=procedure(sender:Tobject) of object;
//类中的过程指针
type TmyProcedure=procedure(s:string); //一般的过程指针
试题34 Type TdateTime=type double;
整数部分:表示日期 加1表示天数加1
小数部分:表示时间 0 表示午夜0点,0.5表示中午12点
1/24 一小时,1/(24*60) 一分钟 1/24*60*60 一秒钟 以此类推
从1899年12月30日午夜0点 开始计时 :0
试题34 数据类型转化
x mod y=x-(x div y)*y 求余看被除数的符号
10 mod 3=1 -10 mod 3=-1 -10 mod –3=-1 10 mod –3=1
试题35 Pascal中的语句知识,考小程序较多
语句以分号结束,程序或单元以点句号结束。
试题36 通常函数调用不应当单独构成语句,而应当用作表达式置于赋值语句的右侧。
设置工程选项对话框Compiler标签页的Extended Syntax为未选中,
可以禁止函数用作语句。同时,也禁止了Result预定义变量的使用。
试题37 注意Begin End 界定符的用法:end 之前的那条语句可以不用分号”;”,
end之后如果作为复合语句一般情况下有分号,但也可以没有分号如if else语句
试题38 with 语句的功能:用在记录、类和无名对象中如 with Tbitmap.Create do
嵌套的with语句的优先级问题:按照最接近原则处理.结果为Button2.caption变为dddd
with button2,button1 do
begin
caption:='ddd';
end;
with button1 do
begin
with button2 do
begin
caption:='ddddd';
end;
end;
试题39 注释语句:同级不可以嵌套,切记!!
If xxxx then dosomething
Else do else; 上述两句在Delphi中算一条语句
If xxxx then dosomething ; 算一条语句,对一条语句的理解
试题40 Case 语句:值表达式必须是有序类型
case 值表达式 of
valuei: 语句;//begin end; 复合语句
else 语句;//begin end; 复合语句 此处else 没有冒号
end; //有end 没有 begin
试题41 循环语句:for 循环中的循环变量在循环体中不能赋值,且为有序类型
I:Char;
for I:=’A’ to ‘Z’ do
只能在循环中使用的:continue(再度进入循环)和 break(退出循环);
试题42 exit 退出一段例程,如果为主例程则整个程序退出
repeat语句中有必要用begin end结束吗?可以/不可以,应该可以。
begin
end;
until 结束条件为真;
试题43 两种例程:procedure / function
声明:相同的连续的形参可以放在一条以逗号隔开的类型声明语句中
多个形参用分号隔开。
定义:只能在implementation部分
调用:调用的时候参数间全部用逗号分隔。
试题44 参数类型5种:值参,变参 var,常参 const,
in/out COM应用中:单纯的只(进)读和只(出)写,两个可合用
试题45 例程中的缺省参数的使用:注意从后往前缺省,中间不能跳跃
试题46 例程重载(overload)的使用:必须满足一下条件之一
参数个数不同;参数类型不同;相同个数情况下某个对应位置类型不同
记住:只要参数类型不同即可,返回值不同无效,
但是以下可以通过,
procedure swap(const A,B:Integer);overload;
begin
end;
function swap(const A,B:single):Integer;overload;
begin
end;
试题46 作用域问题
可见性:变量可以被访问的范围。
生命期:变量能在多长时间内保持其值和保持可见性。
试题47 记录与类的区别
记录中只能放数据,记录变量是在栈中分配内存,不能自动初始化,
所有的数据(域)不能对外隐藏。
试题48 type my=record
name:string; //4 实际 4 地址吗
age:single; //4 实际 4
bs:Boolean; //4 实际 1
end;
//如果Project Options的编译器中设置了对齐为1个字节则为9,4-8个字节为12
如果使用sizeof(my)则结果为:12,
如果声明变量 var dd:my 不管有没有赋值; sizeof(dd)则结果都为:12
试题49 类中可以包含数据外,还能包含处理数据的例程即方法,对于数据和方法的可见性的约束。
类类型变量(即对象)的存储分配方式为动态分配也不同于记录变量,类中还包括属性成员
试题50 ctrl+shift+c :自动代码完成针对:方法(定义)、属性(Private方法和域的自动添加)
Ctrl+shift+↑:回到代码声明处 Ctr+Shift+↓:进入代码定义处
Ctrl+J: 代码完成 Ctrl+Shift+U 整块左移,Ctrl+Shift+I整块右移
试题51 构造函数功能:实例化和初始化对象
var bb:Tbitmap; //此时只是个空指针,还没有创建实例
begin
listbox1.Items.Add(inttostr(Integer(bb))); //指针1
bb:=TBitmap.Create; //在heap中创建对象,
listbox1.Items.Add(inttostr(Integer(bb))); //指针2
指针1和2不一样,但是大小都是4个字节,用来存放指针。
End;
试题52 类的Free方法在Tobject中:间接调用了Destroy;
procedure TObject.Free;
begin
if Self <> nil then
Destroy;
end;
试题53 TPerson = class
Name: string;
BirthDay: TDate;
Sex: Boolean;
constructor Create(const N: string; B: TDate; S: Boolean); overload;
procedure Talk; virtual;
end;
procedure TForm1.Button2Click(Sender: TObject);
var b:Tperson;
begin
ListBox1.Clear;
ListBox1.Items.Add(b.Name);
if b.Sex then
ListBox1.Items.Add('男')
else
ListBox1.Items.Add('女');
//变量b的存储空间大小
ListBox1.Items.Add(IntToStr(SizeOf(b)));
//对象b的实例空间大小
ListBox1.Items.Add(IntToStr(b.InstanceSize));
//变量b所在的存储地址
ListBox1.Items.Add(IntToStr(LongInt(@b)));
//对象b所在的存储地址
ListBox1.Items.Add(IntToStr(LongInt(b)));
//对象b中第一个数据成员的存储地址
ListBox1.Items.Add(IntToStr(LongInt(@b.Name)));
//对象b中第二个数据成员的存储地址
ListBox1.Items.Add(IntToStr(LongInt(@b.BirthDay)));
//对象b中第三个数据成员的存储地址
ListBox1.Items.Add(IntToStr(LongInt(@b.Sex)));
b.Free; b:=nil; //特别要注意回收内存
end;
试题54 成员的讨论:重要
数据(域)成员:变量。
方法成员:前向分类——构造(器)方法、析构(器)方法、一般方法、类方法。
类方法:可以通过对象和类引用的方法含构造方法。
一般方法:只能通过对象引用
方法成员:后向分类——静态方法 尾巴干净的、虚拟方法Virtual、
动态方法dynamic、抽象方法abstract、覆盖override和重载overload的方法、处理消息的方法message 消息常量。
虚拟方法:用空间换时间,较快 动态方法:时间换空间,较慢
抽象方法:前缀必须是虚拟方法或动态方法,只需声明不用定义
Tobject.destroy 是虚拟的
属性成员:反映数据(域)的窗口,对数据处理。包括数据属性和事件属性。
试题55 所谓面向对象的语言OOP,就是同时具备抽象性、封装性、继承性和多态性的语言。
试题56 抽象性:建模考虑的问题
封装性 private protected public
private 除本单元外,完全不可见。C++中的友元问题。
注:在Delphi中,对友元概念的支持是通过放置在同一个单元来实现的。
Protected 除本单元及其子类外,不可见。
Public 如果类声明在单元接口部分,其它单元只需uses即可见。
Published 如果是组件,则不仅具有public的可见性,
而且在设计期的对象检视器可见。缺省的可见性为published。
试题57 编写组件的时候按可见性从小到大排列。
在每一种可见性中,先数据(域),后方法,再属性。
试题58 通常:数据(域)放在private部分;属性放在published(组件)