马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 冬雪雪冬 于 2017-6-17 23:26 编辑
为什么一下子把这么多课程放在一起呢,主要是这几节课都是讲述程序结构,虽然视频是将其分散在若干课程中,但笔记还是集中起来更合适。 程序中除了前面我们用到的顺序结构外,还有选择结构和循环结构。任何复杂的程序都可分解成这三种结构。 顺序结构 是最常用的,按照程序的自然顺序自上而下的执行,程序的流程不会发生跳转。即使是选择结构和循环结构中顺序结构也是贯穿其中的。 选择结构 是根据特定的条件来判断执行哪些语句,可以是符合条件执行一些语句,也可以不符合条件执行一些语句。选择结构分为单分支选择结构、双分支选择结构和多双分支选择结构。 <单分支选择结构>: If 条件 then 语句1/语句体1; 分支后其他语句 如果条件成立执行语句1/语句体1,然后执行其他语句,如果条件成不成立则跳过语句1/语句体1,然后执行其他语句。 <双分支选择结构>: If 条件 then: 语句1/语句体1 else 语句2/语句体2; 注意语句2之前都不能有分号。 上述的语句体即复合语句,复合语句用begin和end包围,在形式上可看作一个语句。Begin后面没有分号,end后面要有分号。End之前的一个语句可以没有分号,号称严谨的语言,在这里又不严谨了。 <多分支选择结构>: Case 表达式of 值1: 语句1; 值2: 语句2; …… 值n: 语句n; Else 语句n+1; End 表达式必须是整数,字符、布尔、子界和枚举型。语句后要有分号,这与if语句不同,每条语句可以是复合语句。Case语句可以用if语句实现,但反之可能不行,比如嵌套的if语句。 循环结构 循环语句分为while,repeat和for。 <while循环>: While 条件 do Begin 语句1; …. 语句n; end; while在循环前判断,条件成立便执行 <repeat循环>: repeat 语句1; …. 语句n; until 条件; 与while的差别是至少进入循环一次,循环后再判断,条件不成立便下次循环,强调一下为false时循环。不需要begin和end来包围。 <for循环>: for 变量:=初值 to(downto)终值 do Begin 语句1; …. 语句n; end; 递增递减值只能为1 在三种循环中可以有break和continue语句,break为跳出循环,continue为跳过其后的语句,直接进入下次循环。 举例计算累加1到100。 //while
var
i,j,s:integer;
begin
i:=1;
j:=100;
s:=0;
while i <= j do
begin
s:=s+i;
i:=i+1;
end;
end;
//repeat
var
i,j,s:integer;
begin
i:=1;
j:=100;
s:=0;
repeat
s:=s+i;
i:=i+1;
until i > j;
end;
//for1
var
i,s:integer;
begin
s:=0;
for i:=1 to 100 do
s:=s+i;
end;
//for2
var
i,s:integer;
begin
s:=0;
for i:=100 downto 1 do
s:=s+i;
end;
小甲鱼还讲到了一个调试方法,即在某个语句按F5下断点,当程序执行到断点时停下来,鼠标右键—debug—view cpu可以查看其汇编代码和寄存器的值,再按F8单步执行。不过这里让没学过汇编的我看的一头雾水,只好另想办法,在鼠标右键—debug--add watch at cursor(ctrl—F5),把需要观察的变量名加入,就可在F8单步执行时看到变量变化了。 再说说关系表达式和逻辑表达式 <关系运算符和关系表达式> 关系运算符是对两个表达式比较大小的,返回True和False。 最后3个是对元素操作的,现在暂时不讲。 运算符两边的类型必须一致,优先级相同。 <逻辑运算符和逻辑表达式> 是对布尔变量操作的,返回True和False。 运算符 | | | | | | | | 双目运算符,两个都为True为True,否则为False | | | 双目运算符,两个都为Flae为False,否则为True | | | 双目运算符,两个不同时为True,否则为False |
逻辑运算符优先级为:Not > And > Or / Xor 逻辑运算符与位运算符符号相同,对数值操作时为位运算符,对布尔值操作时为逻辑运算符。 设置程序的图标,菜单:Project—Options…--Application—Icon 如果报错是因为windows的操作系统的数据保护机制。计算机—右键—属性—高级系统设置—性能设置—数据执行保护,将delphi.exe加入。 程序实例: 1. 鱼C霓虹灯V1.0 程序窗口无规则的飘动,字体的大小也在随机变化。 1) Form1的BorderStyle设置为bsNone,这样窗体就没有标题栏和边框了。 2) 加入Timer控件,设置Interval属性为n,即n毫秒引发一次事件。这里设置为1000,即每秒钟调用一次。 基本程序如下: procedure TForm1.Timer1Timer(Sender: TObject);
begin
Label1.Font.Size := 20 + Random(30);
//随机改变字体大小从20到49,小甲鱼的是Random(50)从0开始过小了。
Form1.Left := Random(800);
Form1.Top := Random(600);
//随机设置窗体左上角的位置
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Label1.AutoSize := True;
//使Label的大小适应字符串所占长和高
Form1.AutoSize := True;
//使Form1的大小适应Label所占长和高,即与Label同大小
//这两个语句也可以在对象观察器中设置
end;
这个程序由于没有标题栏,只能在任务栏鼠标右键结束,这里增加个按键事件,有按键时程序就结束了。 procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
close;
end;
2. 鱼C验证系统V1.0 程序很简单,主要的知识点是: ShowMessage为delphi弹出信息窗口的过程,但其标题为Project名,不可改变,更灵活的是用windows的一个API,MessageBox。 语法是:MessageBox(handle, ‘内容’, ‘标题’, MB_OK) MB_OK为显示的按钮,当然也可以有其他的,如: MB_ABORTRETRYIGNORE The message box contains three pushbuttons: Abort, Retry, and Ignore. MB_OK The message box contains one push button:OK. This is the default. MB_OKCANCEL The message box contains two pushbuttons: OK and Cancel. MB_RETRYCANCEL The message box contains two push buttons:Retry and Cancel. MB_YESNO The message box contains two pushbuttons: Yes and No. MB_YESNOCANCEL Themessage box contains three push buttons: Yes, No, and Cancel. 小甲鱼还介绍了另一个弹出窗口的过程,MessageDlg,但我按照帮助中的例子编写时报错[Error]Too many actual parameters,不知是什么原因。 3. 霓虹灯V2.0
与V1.0的变化是字体和背景的颜色随机改变,主要利用case语句,先生成随机数,再case随机数,根据其不同设置颜色值。其实利用以后的枚举类型就简单多了。
|