面向对象程序设计
description
Transcript of 面向对象程序设计
03 流程控制窗体
面向对象程序设计
面向对象程序设计 3郑捷[email protected] www.lzj.name
编程基础——变量和表达式
• 变量• 输出语句• 运算符和表达式• 输入语句• 简单的类型转换• 常量,字面值• 布尔型• CTS 通用类型体系
面向对象程序设计 4郑捷[email protected] www.lzj.name
变量的定义
• 变量的基本概念• 声明语法
• 简单变量类型– 整数 (long, int, short, byte)– 浮点数 (float, double, decimal)– 字符 (char) 、布尔 (bool) 、字符串 (string)
面向对象程序设计 5郑捷[email protected] www.lzj.name
变量的赋值
• 变量可以在声明的时候直接初始化,也可以单独赋值。
• 赋予变量的值必须是和变量类型相同的,或者能够被隐含转换成变量类型的值
面向对象程序设计 6郑捷[email protected] www.lzj.name
控制台变量的输出
• Console.WriteLine(xxxxx);• Console.Write(xxxxx);
• Console 是控制台对象,用于输入输出WriteLine 和 Write 是它的方法,用于输出内容
• 输出的可以是各种数据类型
面向对象程序设计 7郑捷[email protected] www.lzj.name
窗体变量输出
• MessageBox.Show(xxxxx);
• MessageBox 是消息框对象,用于显示消息框与用户交互Show 是其主要方法,用来将消息框显示出来最简单的用法是显示一个字符串,还可以指定不同的图标、按钮等
• 输出的内容必须被转换成字符串!
面向对象程序设计 10郑捷[email protected] www.lzj.name
常量
• 常量是和变量相对的,不可改变数值的标识符• 取代 C 语言的 #define• 定义方式:在一般变量的定义前加 const• 不能修改常量的值
面向对象程序设计 11郑捷[email protected] www.lzj.name
数据类型综述
• C# 是强类型语言,所有值、变量、表达式等有唯一的类型
• char 、 bool 等类型,不再可以和 int 进行相互转换
• 在 DotNet 平台的不同语言之间,类型具有共性
面向对象程序设计 12郑捷[email protected] www.lzj.name
CTS通用类型体系
• 不同语言之间要进行数据交流,数据的类型必须一致
• DotNet 平台使用 CTS 类定义一套统一、通用的数据类型
• C# 中的每种数据类型都可以在 CTS 中找到对应的标准类型
• 例如: int 对应 System.Int32
面向对象程序设计 13郑捷[email protected] www.lzj.name
编程基础——变量和表达式
• 变量• 输出语句• 运算符和表达式• 输入语句• 简单的类型转换• 常量,字面值• 布尔型• CTS 通用类型体系
面向对象程序设计 14郑捷[email protected] www.lzj.name
窗体程序设计介绍
• 窗体程序设计,分为界面设计、代码编写两部分• 界面设计就是在界面上根据需要布局各种控件• 代码编写则是编写代码对控件的各种事件进行响
应• 现代界面编程的原则是事件驱动:即界面控件在
发生事件(如被点击、被输入等)之后,进行响应操作。而传统程序,则是流程控制驱动,按照写好的流程顺序执行。
面向对象程序设计 15郑捷[email protected] www.lzj.name
常用控件
• 按钮– 用于接受用户的点击,并且对点击进行响应
• 文本框– 用于接收用户输入的文本信息– 可以在程序中读取用户的输入,也可以设置内容
• 标签– 用于显示静态信息– 也可以在程序运行中去设置信息,进行显示
面向对象程序设计 16郑捷[email protected] www.lzj.name
属性
• 控件的属性分为设计时属性和运行时属性• 设计时属性在设计界面的阶段填写,直接反应在
界面上• 运行时属性在程序中通过代码进行设置,并且在
设置后直接反馈在界面上• 大部分属性都是既是设计时,也是运行时的
面向对象程序设计 17郑捷[email protected] www.lzj.name
常用事件
• Click 点击事件一般在按钮上对此事件进行编程,进行点击后的操作
• 会自动生成 btnXXX_Click 这样的函数,在本函数中编程
• 注意观察控件、事件、函数之间的关联关系
面向对象程序设计 18郑捷[email protected] www.lzj.name
实验
• 设计一个窗体界面,有一个按钮、两个文本框、一个标签等点击按钮时,将文本框输入的内容转换成整数,计算其和,并转换成字符串显示在标签上
• 要求:– 控件必须合理命名– 在事件中进行操作编程– 注意进行数据类型的转换
面向对象程序设计 19郑捷[email protected] www.lzj.name
面向对象程序设计 19郑捷
目录
回顾变量和表达式
bool类型
流程控制
窗体控件使用
实验
1
2
3
4
5
面向对象程序设计 21郑捷[email protected] www.lzj.name
流程
• 顺序执行– 正常的代码遵循顺序执行的原则– 每一条命令执行完成后,执行下一条命令– 直至出现流程的转向,或者到停机指令
• 转向流程– 遇到转向指令时,程序不是直接执行下一条指令,而
是根据转向指令,跳转到指定的位置继续执行– 转向指令往往带有条件
面向对象程序设计 22郑捷[email protected] www.lzj.name
条件和布尔型
• 布尔型( bool )是新增的数据类型,取值只能是true 或 false ,用于表达条件的结果
• 布尔型出现后,条件判断和 int 类型不再相关• 几个规定:– 比较运算( >, <, >=, <=, ==, != )的结果是 bool– 逻辑运算( ||, &&, ! )的运算数和结果都是 bool– 条件运算符( ?: )中的条件必须是 bool
面向对象程序设计 23郑捷[email protected] www.lzj.name
bool练习
• 闰年的判断标准:– 如果年份不能被 4 整除,则不是闰年– 如果能被 4 整除,但是不能被 100 整除,是闰年– 如果能被 100 整除,但是不能被 400 整除,不是闰年– 如果能被 400 整除,是闰年
• 写出判断的条件
面向对象程序设计 24郑捷[email protected] www.lzj.name
if语句
• if 是根据条件,决定其后的语句是否执行• 基本语法:– if (条件 )– 语句 1– [else– 语句 2]
面向对象程序设计 26郑捷[email protected] www.lzj.name
语句嵌套
• 编程经常使用嵌套,语句之间可以层层嵌套• 嵌套要求内层必须完全被嵌套在外层之中• 内层对于外层而言,被视为一个独立的物体
• 编程中大量使用嵌套
面向对象程序设计 27郑捷[email protected] www.lzj.name
嵌套 if
• 输入成绩,判定成绩的等级– 成绩≥ 90 ,为“优秀”– ≥80 且 <90 ,为“良好”– ≥70 且 <80 ,为“中等”– ≥60 且 <70 ,为“及格”– <60 ,为“不及格”
面向对象程序设计 28郑捷[email protected] www.lzj.name
switch语句
• if 语句负责判断一个分支,但是如果是一个表达式的多种取值,那么可以用 switch 语句
• switch (表达式 ){ case 值 1: 语句块 1; break; case 值 2: 语句块 2; break; default: 语句块 n; break;}
面向对象程序设计 30郑捷[email protected] www.lzj.name
多个 case对应相同指令
• 多个 case 可以对应相同的指令• 但是这些 case 之间,不能有其他指令• 这比 C 语言要求更严格
面向对象程序设计 31郑捷[email protected] www.lzj.name
循环程序设计循环程序设计
• 循环指重复地执行某一段程序,直到某个预设的情况出现为止
• C# 中的循环,都是“当”型循环,即当条件满足时,循环继续。不满足时,退出。
• “直到”• 被重复执行的部分,称作循环体• 循环通常分为 while 循环和 for 循环,但是其本质
是一样的
面向对象程序设计 32郑捷[email protected] www.lzj.name
whilewhile 和和 do-whiledo-while 循环循环
• while ( 条件 ) 循环体
• do 循环体while ( 条件 );
• 二者差异在于,首次进入循环体之前,是否进行条件的检查
面向对象程序设计 33郑捷[email protected] www.lzj.name
whilewhile 循环特点循环特点
• 可以是任意条件• 在循环体中必须有语句使条件变得不满足• 循环的次数事先无法确定• 用 while 可以模拟出其他循环方式
面向对象程序设计 34郑捷[email protected] www.lzj.name
forfor 循环循环
• for 循环是一种计数循环,通常是对循环控制变量进行增减,使其从初值变化到终值的一种过程
• for ( 初始设置 ; 结束条件 ; 自增 ) 循环体
• for 循环通常在开始之前就已经确定了循环的次数• for 循环分为递增循环和递减循环两大类
面向对象程序设计 35郑捷[email protected] www.lzj.name
forfor 循环的特例循环的特例
• For 循环的初始化表达式、结束条件、自增表达式等均可以省略
• for (;;)• For 循环可以被当做 while 循环使用
• 这些特例,都不建议在编程中使用
面向对象程序设计 36郑捷[email protected] www.lzj.name
forfor 循环案例循环案例
• Fibonacci 数列是一个很有趣的序列:• 第一個月有一對剛誕生的兔子 • 第二個月之後牠們可以生育 • 每月每對可生育的兔子會誕生下一對新兔子 • 兔子永不死去 • 假設在 n 月有新生及可生育的兔子總共 a 對, n+1 月就總共有
b 對。在 n+2 月必定總共有 a+b 對:因為在 n+2 月的時候,所有在 n 月就已存在的 a 對兔子皆已可以生育並誕下 a 對後代;同時在前一月 (n+1 月 ) 之 b 對兔子中,在當月屬於新誕生的兔子尚不能生育。
面向对象程序设计 38郑捷[email protected] www.lzj.name
循环的中断循环的中断
• break 语句– 中断循环,不检查条件,直接跳到循环外的下一条语
句• continue 语句– 用于中断当前循环,跳过循环体中剩余的语句,直接跳到检查循环条件处
– 注意:它不会结束循环,只是提前结束本轮的循环而已!
面向对象程序设计 39郑捷[email protected] www.lzj.name
面向对象程序设计 39郑捷
目录
回顾变量和表达式
bool类型
流程控制
窗体控件使用
实验
1
2
3
4
5
面向对象程序设计 41郑捷[email protected] www.lzj.name
面向对象程序设计 41郑捷
目录
回顾变量和表达式
bool类型
流程控制
窗体控件使用
实验
1
2
3
4
5
面向对象程序设计 42郑捷[email protected] www.lzj.name
上机与练习
• 编写一个简单的窗体程序,让用户输入自己的一些个人信息(如姓名、性别、年龄、身高等等),并根据用户的输入,做出综合性的评价。评语应根据输入内容自动调整
• 例如:– 在指定文本框中输入的信息为:张三,男, 1.85– 输出评价:张三先生,你很高大