for(初始化表达式;循环条件表达式;循环后的操作表达式)
{
//循环体语句;
}
最开始先执行“初始化表达式”(只是执行一次),然后循环执行:先判断“循环条件表达式”。如果为ture。则执行“循环体语句”,然后执行循环后的操作表达
A3第三章第3节For循环案例:1加到n(震撼的算法)第3节
方法1: int n=Console.ToInt32(textBox1.Text);//普通方法
int sum=0;
for(int i=1;i<=n;i++)
{
sum=sum+i;
}
MessageBox.Show(sum.ToString());//时间复杂度为O(n)
MessageBox.Show(convert.ToString(sum));//另一种写法
方法2:
int sum=n*(n+1)/2;//时间复杂度为O(1)//面试经常考试
MessageBox.Show(sum.ToString());
A3第三章第5节while循环第5节
while(条件表达式)
{
循环体;
i++;//循环后的操作表达式
}
每次循环前判断“条件表达式”,如果为true,则执行“循环体”,然后在进行下一次循环判断。
for和while在实现上可以互相代替,一般for用的频率比while高,在io、ADO.Net中用到while
A3第三章第6节dowhile和break、continue 第6节
1、do
{
循环体;
i++;
}
while(条件表达式);
2、先执行一次“执行语句”再判断“条件表达式”决定是否进入下次循环。
演示,使用do while实现打印五遍“如鹏网”
int x=0;
do
{
Console.WriteLine(“如鹏网”);
x++;
}
while(x<5);
3、do...while和while的主要区别:do...while的执行语句至少执行一次,while的执行语句可能一次都不执行。do...while用的更少。
4、break终止最近的循环------------------------------------------------------------
5、终止本次循环之后的代码,接着进行下一次循环。----------------------
A3第三章第7节数组的声明和使用
第三章第7节
1、数组是存储多个数组的容器
2、类型[ ] 数组名=new 类型[ 个数]
3、比如:int [] arr=new int[5];
string[] s2=new string[3];
4、读写方式:读:int x=arr[0];int y=arr[3];
写: arr[2]=9;
5、在读写的时候,数组名后的[ ]叫序号,又叫下标。指的是对第一个元素进行操作,从0开始,所以最后一个元素序号是 “个数-1”
6、第二种定义的方法,适应定义时就确定元素个数和内容,用的较少:int[]={2,34,5,6,4,45};
7、同样盘算一个字符串也是从0开始到Length-1
例如:
检查一串字符是否为全是数字
string a1="123213423dsafas";
for(int i=0;i<a1.Length;i++)
{
char c=a1[i];
if(char.IsDigit(c))
{
console.WriteLine("是数字");
}
else
{
console.WriteLine("不是数字");
}
}
A3第三章第8节数组的遍历及案例
第三章 第8节
1、对于int 、double、float等数组,没有赋值的元素被初始化为0;对于string等引用类型初始化为null
2、数组下标越界异常。不要超过数组的大小。不要去length
3、能否动态增加数组的大小?不能,要用List等。
4、可以通过arr.Length获取数组的长度,改写如下,这样避免了5写死的问题
(避免魔法数)
如:
FOR(int i=0;i<arr.Length;i++)//写成这样!!!
{
Console.WriteLIne(arr[i]);
}
FOR(int i=0;i<5;i++)//而不是这样的。。。
{
Console.WriteLIne(arr[i]);
}
5、
A3第三章第12节方法入门
第三章第12节
1、如果程序跟多地方都要计算一个数组的最大值,难道每次都要写一堆代码吗?抽象出方法(Method)/函数(函数);
2、方法主要的格式:
static 返回值类型 方法名(参数类型 参数1,参数类型 参数2.......)
{
}//返回值类型,与参数类型不一定是一样的
3、目前所有的方法都加上static,以后将why
4、封装一下getMax
A3第三章第14节数组案例讲解和练习说明
第三章第14节
1、方法就是一堆可以重复使用(复用)的代码段,执行过程中无法确定的数据以参数形式传递:方法的执行结果以返回值进行返回。不能在方法中定义方法;
2、方法可以没有参数;方法可以没有返回值(加void);方法中用return返回处理结果。执行return之后方法内部的代码就执行结束了;
3、如果没有返回值,则在需要执行结束的地方return;如果没写return,则在最后一句return;
4、方法中的局部变量,不能被调用的方法访问。如果真要访问只能通过参数传递值,并且只是相当于变量赋值,方法内部对参数的赋值不会影响调用者。方法也不能调用调用者的局部变量;
5、一个问题:不是所有的路径都有返回值。
A3第三章第16节可变长度数组params
第三章第16节
1、使用关键字params这样就可以自由调用
如:
int i=sum(32,23,3,4,343,443);
//这些参数其实还是以数组形式传递过去的,在sum看来,也是数组,只不过编译器会自动将这些,参数封装为数组,简化了调用,通过ILSpy可以看出来。
而不需要再通过先声明一个数组样式;
如:
int [] arr={32,23,3,4,343,443};
int i=sum(arr);
2、可变参数前边还可以有其他参数,只是保证可变参数是最后一个就行,
如:
sum(int name,params string[] data )
A3第三章第17节封装MessageBox及文档注释
第三章第17节
1、DialogResult Show(string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon); buttons为要显示的按钮,icon为显示的图标, DialogResult 为用户点击了哪个按钮
2、定义一个弹窗的方法以及调用该方法
如下:
if (ShowYesNo("真的要删除吗?"))
{
MessageBox.Show("开始删除");
}
else
{
MessageBox.Show("取消删除");
}
static bool ShowYesNo(string msg)
{
DialogResult ret = MessageBox.Show(msg, "询问", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
/*
if (ret == DialogResult.Yes)
{
return true;
}
else
{
return false;
}*/
return ret == DialogResult.Yes;
}