程序的结构--for和数组
程序的三种:
一、顺序结构
二、选择结构
三、循环结构
这三种结构能够解决目前已知任何问题。
这三种结构的出现是通过研究人类行为得出的结论。
顺序结构(一个人的一生)
可以称为:开弓没有回头箭。
人一旦出生则终点以现。放在程序中就是一个大的顺序结构。
例如:操作系统,你一开机就意味着一段时间的开始。如果你一关机,就表示系统重新再来一次。
大的顺序结构。
放到自己的程序中则是从程序开始执行到程序结束,就是一个大的顺序结构。
就是从Main函数执行开始到执行结束。
选择结构
依托于顺序结构不能单独存在。
以人来说,每天每时每刻你都要做出无数种选择。这些选择会改变非常小的流程
选择结构改变流程是指内部小的流程而不是整体大流程。
C#程序中选择结构帮助我们对内部的执行流程做出一定的改变。
C#为了达到改变内部小流程的目的,创造了if语句和switch语句来达到目标
if语句是C#提供的选择结构的操作语句
if语句的四种形势:
1;单分支结构
2;双分支结构
3;多分支结构
4;嵌套结构
语法:
1,单分支
if(bool表达式)
{
//表达式结果为真时要执行语句
}
2,双分支
if(bool 表达式)
{
//表达式结果为真时要执行语句
}else
{
//表达式结果为假是要执行语句
}
3,多分支
if(bool 表达式)
{
//表达式结果为真时要执行语句
}else if(bool 表达式)
{
//表达式结果为真时要执行语句
}。。。。。。
else
{
//表达式结果为假是要执行语句,这个else语句并不是必须的
}
4,嵌套
if(bool 表达式)
{
//表达式结果为真时要执行语句
if(bool 表达式)
{
//表达式结果为真时要执行语句
}
}else
{
//表达式结果为假是要执行语句
if(bool 表达式)
{
//表达式结果为真时要执行语句
}
}
-----------------------
以上就是if语句的四种结构形势。
如何选择中间的哪一种呢?
如果你只需要做一个判断,但是后面任然是继续执行并不影响其他,那么使用单分支即可。
如果你需要无论判断成立还是不成立都要做不同的事情,那么使用双分支即可
如果你需要在多种情况下选一个执行,那么使用多分支即可。
如果你需要层层递进的判断,那么使用嵌套即可
----------------------------------------------------
多分支语句的简洁形势:
switch语句
语法:
switch(表达式)
{
case 常量表达式:
break;
case 常量表达式:
break;
......
default:语句块;
break;
}
同样实现多分支语句的功能,但是switch只能进行相等的比较,不能进行范围比较,而且case后面只能是常量表达式。switch还有一个高级用法就是“贯穿”,
贯穿用法:几种情况不同但是处理方式是相同的,此时可以使用“贯穿”
switch(表达式)
{
case 常量表达式:
case 常量表达式:
case 常量表达式:
case 常量表达式:
break;
case 常量表达式:
break;
......
default:语句块;
break;
}
switch语句结构不能完全取代if多分支,因为switch不能判断复杂的条件,只能判断相等的关系。
-----------------------------------------------------------------------------------------
循环结构
C#中提供了四种循环语句来实现循环的功能。
while 循环
do...while 循环
for 循环
foreach 循环
---------------------------
while循环语句
是用来针对于不知道循环次数但是知道终止条件的情况下使用的一种很方便的语句。
while语句的特点是开始进行是否循环的判断,因此while循环可能出现一次都不循环的情况。
语法:
while(bool表达式)
{
//循环语句块,循环体
}
---------------------------------
do...while循环语句
和while循环是差不多的,但是它的特点是无论如何都会先执行一次循环然后再去判断是否继续循环。
语法:
do
{
//循环语句,循环体
}while(bool表达式);//<-----就这一个循环需要分号结束
---------------------------------------------
跳转语句:
C#中提供了四种跳转语句
1、goto语句
2、break语句
3、continue语句
4、return语句
-------------------
goto语句是和标签一起使用,用于改变程序执行流程,
程序在执行过程中一旦遇到goto语句则会立刻跳转到goto语句后面指定的标签处。执行标签后面的语句。
语法:
标签名://<---标签一般独占一行
代码行//<---跳转后要执行的代码
goto 标签名处;//<---goto 到指定的标签
例如:
label1:
Console.WriteLine("goto跳转到这里");
goto label1;
以上的示例可以形成死循环。
goto语句由于是无条件跳转所以容易照成代码结构的混乱不易阅读,因此在应用层开发中一般禁止使用goto语句。但是在底层开发受到设备的限制所以使用goto会更加方便。
-------------------
break语句主要使用在两个地方
1、switch语句中用于结束case语句
2、循环语句中用于终止break语句所在的循环
----------------------------------------
continue语句主要用于循环中
作用:结束本次循环直接进入下次循环,可以加速循环。
循环中一旦遇到continue语句则后面的语句将不再执行而立刻从头再次执行循环
for
for循环语句
又称为计数器循环,它主要用于知道循环次数的循环。
语法:
for(表达式1;表达式2;表达式3)
{
//循环体语句
}
for(int i=0;i<count;i++)
{
//循环体语句
}
表达式1用于定义并初始化循环的控制变量(也就是循环的起点)
表达式2用于指定循环结束的条件(循环的终点【循环是否终止的判断】)
表达式3用于每次循环后变量的重新赋值(循环从起点到终点的方式)
for语句特点:
1、非常灵活
2、使用最广泛
3、for形式有很多种
-------------------
for语句的几种形式
1、标准形式
for(int i=0;i<count;i++)
2、变量在外的形式
int i=0;
for( i=0;i<count;i++)
3、变量在外,变量赋值在内
int i=0;
for(;i<count;){ i++;}
4、变量在外,变量赋值和循环终止在内
for(;;)
{
if(i<count)
break;
i++;
}
------------------------
通过上面的for的几种形式说明for语句是很灵活和很广泛
--------------------------
使用for循环时要注意的
1、变量的初始值
2、终止条件
3、变量的重新赋值
=======================================
数组:
一组相同类型的数据用一个变量来表示,这个表示就是数组。
数组可分为:一维数组、二维数组以及多维数组
数组相对于其他集合来说的特点:访问速度极快。
数组的定义
1、数组的声明
语法:
数据类型[] 数组名称;//声明
2、数组的创建
语法:
数组名称 = new 数据类型[数组的长度];//这里的数据类型要和声明的数据类型一致
3、数组的初始化
数组名称[数组的索引] = 同类型的值;
-----------------------------------
示例:
int[] age;//声明整型数组
age=new int[3];//数组的创建(分配内存空间)
age[0]=12;age[1]=16;age[26];//数组的初始化赋值
-------------------------------------
数组声明创建的简化语法
数据类型[] 数组名称 = new 数据类型[]{值1,值2,,....值n};//动态初始化
数据类型[] 数组名称 = {值1,值2,,....值n};//静态初始化
-----------------------------------
数组的遍历一般使用循环进行
对于类似于数组这种集合C#中提供了特别语句
foreach语句针对于集合的遍历
语法:
foreach(集合的数据类型 item in 集合){循环体语句;}
其他学过的任何循环都可以对数组进行遍历。
只不过由于数组的遍历是通过索引完成的因此,for循环是最适合的。
------------------------------------
数组排序:
排序的算法有很多,但是我们要求的主要是冒泡排序,
核心思想:
将相邻的两个元素进行比较,然后交换两个元素的位置,依次这样直到结束。
目的:将杂乱的数组元素按照一定规则排列(升序/降序),方便后面的查找。

浙公网安备 33010602011771号