冬雪雪冬 发表于 2017-6-17 23:06:28

结构化程序设计 - 零基础入门学习Delphi 008,009,0012,013

本帖最后由 冬雪雪冬 于 2017-6-17 23:26 编辑

为什么一下子把这么多课程放在一起呢,主要是这几节课都是讲述程序结构,虽然视频是将其分散在若干课程中,但笔记还是集中起来更合适。程序中除了前面我们用到的顺序结构外,还有选择结构和循环结构。任何复杂的程序都可分解成这三种结构。顺序结构是最常用的,按照程序的自然顺序自上而下的执行,程序的流程不会发生跳转。即使是选择结构和循环结构中顺序结构也是贯穿其中的。选择结构是根据特定的条件来判断执行哪些语句,可以是符合条件执行一些语句,也可以不符合条件执行一些语句。选择结构分为单分支选择结构、双分支选择结构和多双分支选择结构。 <单分支选择结构>:If 条件 then语句1/语句体1;分支后其他语句如果条件成立执行语句1/语句体1,然后执行其他语句,如果条件成不成立则跳过语句1/语句体1,然后执行其他语句。 <双分支选择结构>:If 条件 then:语句1/语句体1else语句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 条件 doBegin语句1;….语句n;end;while在循环前判断,条件成立便执行 <repeat循环>:repeat语句1;….语句n;until 条件;与while的差别是至少进入循环一次,循环后再判断,条件不成立便下次循环,强调一下为false时循环。不需要begin和end来包围。 <for循环>:for 变量:=初值 to(downto)终值 doBegin语句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。
运算符名称
=等于
<> 不等于
> 大于
< 小于
>=大于等于
<=小于等于
<=包含于
>=包含
in属于
最后3个是对元素操作的,现在暂时不讲。运算符两边的类型必须一致,优先级相同。 <逻辑运算符和逻辑表达式>是对布尔变量操作的,返回True和False。
运算符名称说明
Not逻辑非单目运算符,逻辑取反
And逻辑与双目运算符,两个都为True为True,否则为False
Or逻辑或双目运算符,两个都为Flae为False,否则为True
Xor逻辑异或双目运算符,两个不同时为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_RETRYCANCELThe message box contains two push buttons:Retry and Cancel.MB_YESNO      The message box contains two pushbuttons: Yes and No.MB_YESNOCANCELThemessage box contains three push buttons: Yes, No, and Cancel.小甲鱼还介绍了另一个弹出窗口的过程,MessageDlg,但我按照帮助中的例子编写时报错Too many actual parameters,不知是什么原因。3.      霓虹灯V2.0
与V1.0的变化是字体和背景的颜色随机改变,主要利用case语句,先生成随机数,再case随机数,根据其不同设置颜色值。其实利用以后的枚举类型就简单多了。

wuqing14 发表于 2017-7-8 08:53:32

辛苦版主了

hsj2017 发表于 2017-12-4 21:23:52

支持学习

naizhu 发表于 2018-3-15 20:49:37

{:10_256:}{:10_256:}

何长生 发表于 2023-6-6 21:42:11

谢谢版主,帮助很大!

星之波比 发表于 2023-11-22 14:43:19

版主 霓虹灯那个TForm1.FormCreate(Sender: TObject)和TForm1.FormKeyPress(Sender: TObject; var Key: Char)是手写的还是可以通过像按钮一样双击自动生成的
页: [1]
查看完整版本: 结构化程序设计 - 零基础入门学习Delphi 008,009,0012,013