C#OOP之三 控制结构
控制结构的意义
通常,程序中的语句按编写的顺序一条一条的执行,称为顺序执行。程序员可以用一些不同的C#语句指定下一个要执行的语句不是紧邻其后的语句,这成为控制转移。
20世纪60年代,人们发现,软件开发小组遇到的许多困难都是由于控制转移造成的,因此提出了结构化编程的思想。
为了使程序更容易开发和维护,程序员开始认真考虑结构化编程,因为结构化编程更清晰,更易调试与修改并且不容易出错。
经Bohm和Jacopini研究表明,在结构化编程中,所有程序只有三种控制结构,即顺序结构、选择结构和循环结构。术语“控制结构”来自计算机科学领域。
视频:https://edu.csdn.net/course/detail/27107
顺序结构
顺序结构是C#内置的,除非另外指定,计算机总是按编写的顺序一条一条执行。
上图演示了典型的顺序结构,按顺序进行了两次运算。
分支结构
在C#中选择分支结构有三种
If语句称为单选则语句,因为它选择一个一个操作
If ………else语句称为双选择语句,因为它在两个或多个不同的操作中选择,
Switch语句称为多选语句,因为它在多个不同操作中选择
u If …单选择语句
上述伪代码的If语句可以写成如下C# 语句
确定“成绩大于或等于60分“为真或为假。如果是真,则打印“pass”字样,并且执行下一条语句。
u If ………else双选择语句
上述伪代码的If ………else结构可以写成如下的C#代码
在成绩大于或等于60分时打印“Passed”,否则打印“Failed”
u 嵌套If ………else语句
程序可以嵌套If ………else语句,将一个If ………else语句放在另外一个If ………else语句中。
上述伪代码的对应C#代码为:
成绩在90以上打印A,在80到89之间打印B,在70到79之间打印C
n Switch………..case结构
执行Switch………..case时,评估switch中的语句中给出的条件并与每个case常量比较。如果有一个case常量等于switch语句中给定的变量值,则语句转到相匹配的标签下的语句,执行后用break退出switch语句;如果没有匹配的case语句,则调用default语句。
int var;//声明变量
var=500;
switch(var)
{
case100:
Console.WriteLine(“100”);break;
case 200:
Console.WriteLine(“200”);break;
case 300:
Console.WriteLine(“300”);break;
default:
Console.WriteLine(“值不匹配”);break;
}
在一些情况下,可以用Switch………..case结构代替复杂的If ………else结构。
例:1
上述代码输出
例:2
上述例子输出
例:3
上述例子输出
例:4
上述例子输出
项目1:使用条件结构的计算器
问题描述:
编写一个模拟计算器的程序。计算器应该能够执行以下算数操作:
n 加法
n 减法
n 乘法
n 除法
解决方案:
任务1:选择开始à所有程序à附件à记事本。
任务2:在记事本中编写一下程序:
任务3:选择文件à保存以保存该程序文件,出现另存为对话框。
任务 4:在文本框中输入JISUANQI.cs。
任务 5:在另存为对话框中单击保存按钮。
任务 6:在C#编译器中编译该文件。
任务 7:验证执行后的输出。
实践问题1:
填空题
1.所有程序可以用三种控制结构编写:_________ _________ _________。
2. __________ 选择结构用于在条件为真时执行一个操作,条件为假时执行另一个操作。
3. __________结构是C#内置的,默认情况下,语句按这个顺序执行。
4. 判断这条语句的对错,入错错误,指出错误在哪里。
使用循环结构
循环结构用于重复执行一行或多行代码。C#支持以下的循环结构:
· while 循环
· do…while 循环
· for 循环
While循环
while循环结构根据条件来执行一定次数的语句块。while语句在执行循环中的语句时总是要检查条件。当执行到while循环中最后一条语句时,控制权交回给循环的开始部分。如果条件仍然为真,则再次执行循环中的语句。将一直执行循环中的语句,直到条件为假时为止。
以下代码是while循环结构的语法:
While(条件)
{
循环体语句;
}
以下代码是while循环结构的示例:
while (n< 200)
{
Console.WriteLine("我爱C#!");
n++;
} }
While后面括号里面的条件和if语句后面括号里的条件一样都是关系表达式。
对于while语句的执行顺序是:先判断循环条件,条件为真则进入循环体,完成一次操作语句后,再判断循环条件,符合后,再进入,直到条件表达式为false,退出循环;
您可以使用break语句退出while循环结构。以下代码是break语句的示例:
int var;
var = 100;
while(true)
{
Console.WriteLine("变量值:"+ var);
var = var +10;
if (var >= 200)
break;
do…while循环
}
do…while循环结构类似于while循环结构。两个结构都要重复执行语句直至指定的循环条件为false。但是,在do…while循环中,循环的主体至少执行一次,并且为以后的重复执行评估条件。
以下代码是do…while循环结构的语法:
do
{
循环体语句;
} while(条件);
请注意do…while循环结构的示例:
int n;
n = 100;
do
{
Console.WriteLine("我爱c#!");
n = n + 1;
}
while (n < 200);
在上述代码中,执行do…while循环结构中的语句后,检查条件。因此,无论条
件是true还是false,do…while循环中的语句至少执行一次。
do…while循环 while循环
do…while循环与while循环的区别
for 循环
下面我们来研究for循环,事实上,fro循环是最常用的一种循环,它最大的就是直观和简洁,但使用for循环的语句都可以被while循环代替,而使用while循环的地方有时却不能被for循环替换。For循环一般用于实现固定次数的循环,相对于while循环来讲,用它实现固定次数的循环比较直观易读,这也是使用for循环的原因;
下面是for循环的语法和使用示例:
for(表达式1;表达式2;表达式3)
{
循环体语句;
}
for(int n=0;n<10000;n++)
{
Console.Write(“我爱c#!”);
}
对于for循环,表达式1通常用来初始化循环变量,一般是赋值表达式;表达式2
是循环条件,是关系表达式,如果为true则执行循环体语句;表达式3用来修改循
环变量控制循环次数,一般为递增或递减表达式;
注意:for循环使用分号来隔开三个表达式,这三个表达式的执行顺序是:表达
式1→表达式2→循环体语句→表达式3→表达式2→循环体语句→表达式3→表达
式2…..如此,知道循环条件为false时,退出循环;
如果用while来写上面循环,它就等效于:
int n=0;
while(n<10000)
{
Console.Write(“我爱c#!”)
; n++;
}
示例:
using System;
class Test
{
static void Main(string[]args)
{
int sum=0;
for (int i=0;i<100;i++)
{
sum=sum+i;
}
Console.WriteLien(“从1加到100的和是{0}”,sum);
}
}
上面的程序是从1加到100的和,执行进入for循环后,首先给 i 赋值0,然后比较i
是否小于100,如果小于就进入循环体,在循环体中将 i 的值累加到sum后,执行
i++,然后判断此时的i是否小于100;这样操作直到i=100,此时i 不满足小于100
的条件,退出for循环,打印结果;
for循环的三个表达式可以省略,但两个分号却不能省,如:
for(;i<10;)
或for(;;)
或for(i=0;;i++)
或for(;i<10;i++) 注意:切忌将括号内的分号写成中文格式的!!其他的标点也一样!!!!
这些都是合法的,凡是省略了表达式2的,都被认为是死循环:
for (int n=0;;n++)
{
Console.WriteLine(“我爱你!!”);
/ /这将是死循环,说到死人家也不会嫁给你,
/ / 直到 n 的值超出 int 的范围出现异常强行退出,否则一直循环;
}
另外,for循环也可以嵌套,如:
using System;
namespace Test
{
static void Main(string[]args)
{
for(int i=0;i<0;i++)
{
for (int j=0;j<60;j++)
{
Console.WriteLine(“{0}分{1}秒”,i,j);
}
}
}
}
运行结果:
1分1秒
1分2秒
1分3秒
1分4秒
1分5秒
1分6秒
………
对于嵌套循环来说,一般最多使用两层嵌套,也就是上面这一种嵌套,对于两层的
嵌套外循环每循环一次,内部将循环全部,所以上面这个最终会显示3600条数据;
for 循环语句省略大括号的规则和if ,while一样,当循环体内只有一个语句时可以省
略大括号,但最好不要省略,因为这样会是程序的可读性变差;
实践问题2:
1. 寻找下列代码的错误并说明如何纠正
小结:
在本章中,我们主要学习了:
u 什么是控制结构
u 控制结构的种类及意义
u If…….else结构
u Switch….case结构
u 为什么要用循环,循环 的好处;
u 如何使用循环;
英语词汇:
英文 全文 中文
if 如果
else 其他的
switch 开关; 翻转; 转移
case 情形, 情况
Result 结果
If 如果
Else 否则
Statement 内容,声明
Leap leapYear (闰年) Year 年
Number 数字
Switch switch---case 开关、转向
Case 情况、状况
Constant constantExpression 常量
Expression 表达式
Break 终止、停止、退出
Default 默认
Calculate 计算器、计算
Menu 菜单
Enter 输入
Addition 加法
Subtraction 减法
Multiplication 乘法
Division 除法
Invalid 无效的
Option 选择
While 当
True 真的
False 假的
For for循环
Initialization 初始化
Termination 终止
Increment 增量
Decrement 减量
Fibonacci 斐波那契
Continue 继续
Convert 转为
Positive 正数
Sum 和
Character 符号、字
练习项目:
1.编写一个程序以确定用户输入的数是奇数还是偶数
2..猴子吃桃问题:一个猴子去山上吃桃,桃子 原来总数不变,猴子每天吃一半,走的时候还带走一个,到第5天还有11个,问你原来有几个?
3.打印正三角形(等边三角形) (使用循环)
*
***
*****
*******
*********
4. 用for循环作出九九乘法表;
文档来源:51CTO技术博客https://blog.51cto.com/u_2096101/3186668
页:
[1]