C#面向组件的架构_第1页
C#面向组件的架构_第2页
C#面向组件的架构_第3页
C#面向组件的架构_第4页
C#面向组件的架构_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1c#程序基础程序基础本文档仅用于学习交流,严禁用于商业目的,版权所有2本章教学目标本章教学目标n掌握赋值语句、输入输出语句和输出格式控制方法n掌握利用if和switch实现分支结构的方法,熟练掌握条件表达式构建方法n理解循环语句的结构特点和语法规则,熟练掌握运用循环语句求解有规律重复运算问题的方法3程序的基本结构程序的基本结构n3.1 顺序结构n3.2 选择结构n3.3 循环结构 43.1 顺序结构顺序结构 n结构顺序,就是各语句按出现的先后顺序依次执行 n赋值语句 n输入/输出语句控制台输入输出语句 描述输出信息格式的Format函数 n消息框(MessageBox) 53.1.1 赋值语

2、句赋值语句(1)“=”左边只能是变量名,不允许出现常量或表达式(2)不要将赋值运算与代数方程的概念相混淆 (3)可以在同一个赋值语句中为多个变量赋值例如, int x, y; x = y = 5;变量x和y都赋值为5。6复合赋值语句复合赋值语句73.1.2 控制台输入输出语句控制台输入输出语句 nConsole.Read()方法方法 nConsole.ReadLine()方法方法 nConsole.Write()方法方法nConsole.WriteLine()方法方法 8实例实例3.2例3.2 通过控制台接收用户输入的一个字符串,并通过控制台输出这个字符串的内容。using System;cl

3、ass Program static void Main() string s; Console.Write(请通过键盘输入一个字符串:); s = Console.ReadLine();/等待用户键盘输入字符串 Console.Write(刚才输入的字符串是:); Console.WriteLine(s); 9实例实例3.3例3.3 计算圆的面积 using System;class circle static void Main() double r, pi, area; string s; Console.Write(“请通过键盘输入一个半径的值:); s = Console.ReadL

4、ine(); r = double.Parse(s); area = 3.14159 * r * r; Console.WriteLine(半径为0的圆面积 = 1, r,area); 103.1.3 输出格式控制输出格式控制 在控制台应用程序的Write()和WriteLine()方法中,可以用格式控制字符串来修饰数据输出格式,调用形式如下: Console.WriteLine(格式控制字符串, 输出数据项列表); 在Windows窗体应用程序中,可以通过String类的静态方法String.Format()实现输出格式控制,调用形式如下:String.Format(格式控制字符串, 输出数

5、据项列表);11表表3-2 格式控制字符的意义及应用举例格式控制字符的意义及应用举例123.1.4 消息框(消息框(MessageBox)消息框是Windows窗体应用程序中经常用于人机交互操作的对象之一,用来显示简短的提示信息和几个按钮。显示消息框之后,程序处于等待状态,用户必须单击消息框中的某个按钮之后,程序才会继续运行。13无返回值的消息框无返回值的消息框MessageBox.Show(text,title,buttons,icon);ntext 提示信息提示信息ntitle 标题栏上的提示信息标题栏上的提示信息nbuttons 按钮的组合样式按钮的组合样式nicon 图标样式图标样式1

6、4有返回值的消息框有返回值的消息框 DialogResult var = MessageBox.Show(text,Text, buttons,icon);15例例3.6 显示消息框中被选择按钮返回值显示消息框中被选择按钮返回值private void button1_Click(object sender, EventArgs e) DialogResult result = MessageBox.Show(“是否保存已修改过的内 容?, 保存文件, MessageBoxButtons.YesNoCancel); label1.Text = 您刚才选择的按钮是: + result; 16Me

7、ssageBoxButtons集合的枚举选项集合的枚举选项 17MessageBoxIcon集合的枚举选项集合的枚举选项 18DialogResult的枚举常量的枚举常量 193.2 分支结构分支结构3.2.1条件语句条件语句(If) 1If ( )单分支结构单分支结构2If( ) Else( )语句(双分支结构)语句(双分支结构) 20实例实例3.7例例3.7 在一个拥有“是”、“否”按钮组的消息框中,根据用户单击的按钮来决定是否结束程序运行。private void Form1_Click(object sender, EventArgs e) DialogResult r1; r1 =

8、MessageBox.Show(处理完成,结束程序运行吗?, 结束,MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (r1 = DialogResult.Yes) this.Close(); label1.Text = 程序继续运行; 21实例实例3.8例3.8 判断学生的成绩是否及格private void button1_Click(object sender, EventArgs e) double score = 0; score = double.Parse(textBox1.Text); if (score = 60) l

9、abel2.Text = 学生成绩为及格; else label2.Text = 学生成绩为不及格;223.2.2 switch语句语句switch(表达式) case 常量1:语句块1;break;case 常量2:语句块2;break;default:语句块 n+1;break;适用于分支较多的情况适用于分支较多的情况23switch语句的执行流程语句的执行流程n先计算switch后面的表达式n然后将结果值与case后面的常量依次进行比较n如果找到匹配的case子句,就执行该分支的语句块,直到break语句为止n如果所有case都不匹配,则执行default的语句块n如果省略了defaul

10、t子句,则跳过整个switch结构,执行后续语句。24使用使用switch语句注意的问题语句注意的问题(1)switch后面的表达式必须是整数类型;(2)case常量仅限于离散的值,不能指定取值范围,不得重复,而且必须与表达式类型相兼容;(3)执行了一个case分支的语句块之后,必须退出整个switch结构,不允许再执行另一个case分支的语句块,所以每个分支的语句块都必须以break作为结尾;(4)允许多个case指向相同的语句块。25例例3.11n根据在文本框内输入的百分制成绩score,利用switch语句转换成优、良、中、及格、不及格等五个等级,并在窗体上的标签内显示 26例例3.11

11、代码代码 private void button1_Click(object sender, EventArgs e) string grade; int score = int.Parse(textBox1.Text); switch (score / 10) case 10: case 9: grade = 优秀; break; case 8: grade = 良好; break; case 7: grade = 中等; break; case 6: grade = 及格; break; default: grade = 不及格; break; label2.Text = 学生成绩为 +

12、grade; 27例例3.12n从窗体上的文本框内输入一个17的整数,或者从“一”到“日”的汉字,在窗体上的标签内显示用英文表示的星期几(Sunday与数字7相对应) 28例例3.12代码代码 private void button1_Click(object sender, EventArgs e) char today = char.Parse(textBox1.Text); switch(today) case 一: case 1: label2.Text = Monday; break; case 二: case 2: label2.Text = Tuesday; break; cas

13、e 三: case 3: label2.Text = Wednesday; break; case 四: case 4: label2.Text = Thursday; break; case 五: case 5: label2.Text = Friday; break; case 六: case 6: label2.Text = Saturday; break; case 日: case 7: label2.Text = Sunday; break; default: label2.Text = Not a valid number!; break; 293.2.3 条件运算符条件运算符 n

14、result = 条件表达式 ? op1 : op2;条件表达式为条件表达式为true时的返回值时的返回值条件表达式为条件表达式为false时的返回值时的返回值30例3.9 百分制成绩转换成优、良、中、及格、不及格等五个等级 private void button1_Click(object sender, EventArgs e) double score = 0; string grade; score = double.Parse(textBox1.Text); if (score = 90) grade = 优秀; else if (score = 80) grade = 良好; el

15、se if (score = 70) grade = 中等; else if (score = 60) grade = 及格; else grade = 不及格; label2.Text = 学生成绩为 + grade; 实例实例3.931例例3.10(1)例例3.103.10判断最大值的位置判断最大值的位置private void button1_Click(object sender, EventArgs e) int a, b, c; string result=最大值的位置在最大值的位置在; a = int.Parse(textBox1.Text); b = int.Parse(tex

16、tBox2.Text); c = int.Parse(textBox3.Text);32例例3.10(2) if (a b) if (a c) result += 左边左边; else result += 右边右边; else if (b c) result += 中间中间; else result += 右边右边; label1.Text = result; 333.3 循环结构循环结构 循环结构:通过有限次数地重复执行同一段代码,完成运算 34哪些问题需要通过循环来求解?哪些问题需要通过循环来求解?n数据统计(求累加和、找最大值)n排序n资料检索(在成组数据中逐个比较查找)35循环语句的类

17、型循环语句的类型nwhilendowhilenfor363.3.1 while语句语句n语句格式while(条件表达式)循环体;n先判断后执行n循环体必须能够影响条件37实例实例3.15例3.15 已知银行一年期整存整取的储蓄年利率为4.14%,在利率保持不变的情况下,经过多少年后,1000元存款能增值到2000元以上?分析:在每年都将利息与本金一起继续存入的情况下,1年后的存款总数为 1000(1+0.0414)2年后的存款总数为 1000(1+0.0414)(1+0.0414)3年后的存款总数为 1000(1+0.0414)(1+0.0414)(1+0.0414)ndepositmoney

18、)0414. 01 ( 38程序代码程序代码 private void Form1_Click(object sender, EventArgs e) double deposit = 1000; int i=0; while (deposit = 2000) deposit *= 1.0414; i+; label1.Text = 经过 + i + 年后,存款总数达到 + deposit + 元; 判断条判断条件件393.3.2 do-while语句语句n语句格式 do 循环体; while(条件表达式);n先执行后判断n循环体必须能够影响条件40实例实例3.16例3.16 若全世界人口的年

19、平均增长率保持在0.8%,计算全世界人口从50亿增加到60亿需要多少年?private void Form1_Click(object sender, EventArgs e) double human=50, year=0; do human *= 1.008; year+; while (human 60); label1.Text = 经过 + year + 年后,世界人口达到 + human + 亿;判断条件判断条件413.3.3 for语句语句for (表达式1; 表达式2; 表达式3) 语句块;n表达式表达式1 完成循环变量的初始化完成循环变量的初始化n表达式表达式2 判断循环是否

20、继续执行判断循环是否继续执行n表达式表达式3 修改循环变量的值,控制循环条件修改循环变量的值,控制循环条件42实例实例3.17例3.17 编程计算100以内自然数的累加和private void Form1_Click(object sender, EventArgs e) int s = 0; for (int i = 1; i = 100; i+) s += i; label3.Text = 1100的累加和= + s; 保存累加和的变量保存累加和的变量43例例3.18例3.18 编程计算任意正整数n的阶乘。 private void Form1_Click(object sender,

21、EventArgs e) int f = 1, n = 8; /变量f用来保存计算阶乘的结果,初值应为1 for (int i = 1; i = n; i+) f *= i;/计算阶乘 label1.Text = n.ToString() + != + f.ToString();44实例实例3.19例3.19 编程判断x是否为素数(第一种写法)private void Form1_Click(object sender, EventArgs e) double x; int n; bool t; x = double.Parse(textBox1.Text); n = (int)Math.Sq

22、rt(x); t = true; for (int i = 2; i = n; i+) if (x % i = 0) t = false; if (t = true) label2.Text = textBox1.Text + 是一个素数; else label2.Text = textBox1.Text + 不是素数; 计算计算x的平方根的平方根45实例实例3.19例3.19 编程判断x是否为素数(第二种写法)private void Form1_Click(object sender, EventArgs e) double x; int n; bool t = true; x = dou

23、ble.Parse(textBox1.Text); n = (int)Math.Sqrt(x); for (int i = 2; i = n; i+) if (x % i = 0) t = false; label2.Text = (t = true) ? 是一个素数是一个素数 : 不是素数不是素数; 463.3.4 循环的嵌套循环的嵌套n嵌套的原则是:内层循环必须完整地包含在外层循环之内,循环体之间不得交叉。47例例3.21 在窗体上输出九九乘法表在窗体上输出九九乘法表 private void Form1_Click(object sender, EventArgs e) for(int

24、i=1;i=9;i+) for (int j = 1; j = i; j+) label1.Text += i + * + j + = + i * j + ; label1.Text += n; 48思考思考n怎样才能使输出结果排列得更整齐一些?49排列得更整齐一些排列得更整齐一些 private void Form1_Click(object sender, EventArgs e) for (int i = 1; i = 9; i+) for (int j = 1; j = i; j+) int mult = i * j; if (mult 10) label1.Text += i + *

25、 + j + = + mult + ; else label1.Text += i + * + j + = + mult + ; label1.Text += n; 50思考思考计算100到300之间的所有素数 核心程序:判断一个任意数是否为素数核心程序:判断一个任意数是否为素数 private void Form1_Click(object sender, EventArgs e) double x = double.Parse(textBox1.Text); int n = (int)Math.Sqrt(x); bool t = true; for (int i = 2; i = n; i

26、+) if (x % i = 0) t = false; label1.Text = (t = true) ? 是一个素数 : 不是素数; 51代码代码计算100到300之间的所有素数 private void Form1_Click(object sender, EventArgs e) for (double x = 101; x = 300; x+) int n = (int)Math.Sqrt(x); bool t = true; for (int i = 2; i = n; i+) if (x % i = 0) t = false; if(t=true) label1.Text +=

27、 x + n ; 52思考思考计算100到300之间的所有素数素数的个数较多,无法在label上显示成一列,怎么办?解决的办法:每一行上显示多个素数533.3.5 循环的退出和跳过循环的退出和跳过 n循环语句是整个程序中最耗费时间的部分,在运算目标已经实现的情况下,提前结束整个循环,或提前结束本次循环,会显著节省程序的运行时间。541循环的退出循环的退出n如果预设的循环次数尚未执行完,或者测试条件尚未满足,就已经得到了所需的计算结果。这时,就没有必要让循环再继续执行下去了。n当执行到循环体内的break语句,则退出当前循环,执行后续语句。 55例 3.22n例例 3.22 同一笼中有鸡和兔共3

28、6只,已知它们有100只脚,问鸡和兔各有多少只?n分析:运用二元一次方程,可以很快地求解这个问题。但对于本例来说,由于计算的次数不多,不妨采用穷举法,通过有限次数的试探得到答案。 56例 3.22代码private void Form1_Click(object sender, EventArgs e) int rabbit, chick,feet; for (chick = 1; chick = 36; chick+)/从鸡1,兔36-1开始试探 feet = chick * 2 + (36 - chick) * 4; if (feet = 100)/达到计算目标时,退出循环 break;

29、rabbit = 36 - chick; label1.Text = 鸡有 + chick + 只n; label1.Text += 兔有 + rabbit + 只;572.循环的跳过循环的跳过n在一次循环的执行中,执行完循环体内的部分语句之后,就发现剩余的语句已经没有必要继续执行,可以利用continue语句跳过剩余的语句,提前结束本次循环。 58例3.23n例例3.23 编写Windows窗体应用程序,计算并在窗体上输出100以内的所有素数 59例3.23代码private void Form1_Click(object sender, EventArgs e) for (int i = 2; i 2 & i % 2 = 0)/确认当前的i不是素数,提前结束本次循环 continue; bool b = true; for (int j = 2; j = Math.Sqrt(i); j+) if (i % j = 0) b = fal

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论