您好,欢迎访问三七文档
北京传智播客教育编程基础讲师:杨中科.Net开发环境(*了解).NetFrameworkC#VB.NetF#……开发工具:VisualStudioCSharpIronPython使用.Net开发的程序必须运行在安装了.Net的机器上。.Net的各个版本;.Net向下兼容的实现。第一个C#程序•创建第一个控制台程序并且调试运行。•为什么要从控制台程序开始?不要把精力放到表现层,而是把精力放到写代码上。无论控制台还是Winform还是ASP.Net最难的是写代码,而不是拖控件。•唯一需要学的三条控制台指令:Console.WriteLine:打印输出、Console.ReadLine:从控制台读入一行、Console.ReadKey:控制台暂停。至于Console.是什么意思不用管。1+1=2的例子•占位符是个什么玩意儿?{0}的个数必须和参数的个数一样,是一一对应的关系。序号从0开始在后面学习String.Format的时候还会用到这个类。VS开发环境介绍•解决方案管理器:解决方案、工程、文件•拖动视图、关闭/打开视图、重置窗口布局•C#源文件一般以cs结尾。即使没有VS也能用记事本打开•C#程序的入口是Main函数,在Main中写代码就行,暂时不用关心其他部分是什么意思•错误列表。见到编译错误不用慌。错误排除演示。常见错误:结尾没有分号,大小写错误。•显示代码行号。工具→选项→文本编辑器→C#→显示→行号•修改文本编辑器字体。VS开发环境介绍2•设置启动项目,将当前项目自动设置为启动项目,如果运行结果很奇怪,看看是不是没有设置启动项目。•一个解决方案包含多个项目,同时只能打开一个解决方案;在解决方案上点击右键→属性→启动项目,“当前选定内容”是把当前编辑器所在的项目为启动项目,但启动项目就是右键设定启动项目设置的,多启动项目可以让多个项目同时启动,适合于开发客户端、服务器的程序C#语法•从上到下一条条的依次执行。过去的就让他过去吧,不会返回头执行:inti1=3;inti2=5;inti3=i1+i2;i1=9;。•大小写敏感。String和string都行是另外一个问题。•函数参数用()包围。错误:strings2=Console.ReadLine;Console.WriteLine=3,区分方法和属性,看图标颜色。•两句代码之间用分号(;)分割(易错:全角问题)•注释:单行注释、多行注释。批量注释、反注释。用VisualStudio的批量反注释:快捷键、工具栏图标两种方式。变量•把变量看成放数据的容器。•定义变量的方式:类型变量名;inti3;变量只是容器,必须放进去值才有意义,否则就是一个“杯具”。•strings1=null和strings1不一样。•变量的类型:不同类型的容器放不同的东西。不能在int类型的变量中放字符串。•变量不能放和变量类型不兼容的数据。•变量的名字不能重名(不严格)–//inti3=33;//定义一个变量i3,赋值为33–i3=33;//为已有变量i3赋值为33–变量只能声明一次,但是可以多次使用。–inti1=5;inti1=6;不可以。但是inti1=5;i1=6;是可以的。•问题–inti=10;Console.WriteLine(i);Console.WriteLine(i);常用基本数据类型•string、int、char、boollong等。bool的取值:true、false。int的表示范围。long有多long•为什么输出要用转义符\,因为编译器默认是遇到开始字符串,再遇到是结束字符串,但是如果遇到前面有\的就不把它当成有字符串起始意义的。\表示不要把\后的当成字符串的开始或者结尾•为什么要有转义符,就是要在程序中输出回车等特殊的字符,不能直接在字符串中打回车,所以必须转移。\n回车。string:\ab\、ab\nb、c:\\a.txt、@c:\a.txt(推荐)。@表示字符串中的\不当成转义符。@还可以定义多行文本。\\\\一命偿一命•\中\是告诉编译器不要把这个当成字符串的结束。•@是不把\当成转义符。@不是万能的,不能解决字符串中有双引号的问题,如果有双引号还是用转义符•‘a’是char,“a”是string。•strings=Console.ReadLine();•难点:问题:–Stringstr=Console.ReadLine();–Console.WriteLine(str);–用户输入a\nb,输出什么?转义符只针对在代码中直接写出的字符串,对于程序中读取出来没有这个问题。\n是给编译器看的。把“河蟹”翻译成“和谐”•简单的类型转换:Convert.ToString()、ToString()、Convert.ToInt32()。即可用中间变量,也可以不用。inti=Convert.ToInt32(Console.ReadLine());变量的命名•命名规则:第一个字符必须是字母或者下划线(_),其后的字符可以是任意个数字、字母、下划线。不能全部使用C#的关键字,比如class、namespace、new、void等。判断方式:VS中亮蓝色的就是关键字。•这也是类、函数等的命名规则。还可以使用中文变量名(类名、函数名),不推荐。•潜规则:C#中建议变量的开头用小写。专业的程序员一定要注意大小写的问题!和“命名规则”不一样不是强制性的规定•变量在声明后才能使用•变量的声明:inti;intx,y;inti=3;变量使用之前必须赋值。运算符、表达式•+、-、*(乘)、/(除)、%(求余)•+可以用作字符串连接,其他不可以。•++(自增)、--(自减)•(*)运算符优先级:i1+i2*i3、(i1+i2)*i3。不要变态,括号是王道。•变量可以和字面量混合运算。•练习:让用户输入两个数,打印出两个数的和。赋值•赋值运算符=,让左边变量的值等于右边的计算结果。这就能解释令人不解的i=i+1;•(*)+=、-=、*=、/=。•i2=i1++;i2=++i1;(了解)。--同理。•习题:inta=10;a++;a=a+a;Console.WriteLine({0},a);执行结果是什么?•inti=10;intj=i;i=5;j=?•intx=10;x+y=80;Console.WriteLine(y);x+y=80;//左边的必须是变量!!!不能是常量,不能是表达式•习题(重点,难点):交换两个变量的值。易错!!!布尔运算•相等判断:==,不要和=混淆。WriteLine({0},i==1);WriteLine({0},i=1);的区别。Console.WriteLine({0},i=1);//C#中赋值表达式也有值,它的值表示为赋值后变量的值•不等判断:!=•大小比较:、、=、=•取反:!•组合运算:&&(并且)、||(或者)。–&&并且:只有两边都为true的时候,表达式的值才为true,否则是false;–||或者:两边只要有一个为true的时候,表达式的值就是true,否则是false;–&&、||是短路运算,试验。ifif(i1){}if(i1){}else{}if(i100){}elseif(i10){}else{}单句的时候大括号可以省略,但是不建议省略,演示说明why。if()elseif()和if()if()是不一样的。if语句的嵌套if(i100||i10){}if(i100&&j10){}if((i0&&j0)||(i0&&j0)){}易错代码:if(i10);{Console.WriteLine(是);}课上练习•学编程不是看书,不是听老师讲,而是自己动手写。•作业1:提示用户输入密码,如果密码是“888888”则提示正确,否则提示错误。•作业2:提示用户输入密码,如果密码是“888888”则提示正确,否则要求再输入一次,如果密码是“888888”则提示正确,否则提示错误。•作业3:提示用户输入用户名,然后再提示输入密码,如果用户名是“admin”并且密码是“888888”,则提示正确,否则提示错误,如果用户名不是admin还提示用户用户名不存在。•注意:变量命名要用有意义的变量名,不要x、y、z。switchcase•类似于if...else...elseif...else,但是是离散值的判断。•switch一般都可以用if重写,但是if不一定能用switch重写•不要忘了break。C#中的break不写是不行的,除了合并case的情况switch(i)case1://break;case2://break;switch(i)case1://break;case2://break;default:break;case中的值必须是常量,不能是变量、表达式。switch(i)casea://break;switch(i)case1:case2://break;被判定的值进入满足条件的分支执行while循环while(i100){//打印ii++;}只要while后小括号中的表达式为true,就不断执行大括号中的代码while(不是终点){跑}do{//打印ii++;}while(i100)先做……如果满足则再来一次,直至while表达式为false。至少被执行一次。(*)易错while(i0);{练习1:用while计算1到100之间整数的和;(有更好的数学解法)练习2:要求用户输入用户名和密码,只要不是admin、888888就一直提示要求重新输入。练习3:不断要求用户输入一个数字,然后打印这个数字的二倍,当用户输入q的时候程序退出(return)。练习4:不断要求用户输入一个数字(假定用户输入的都是正整数),当用户输入end的时候显示刚才输入的数字中的最大值。设一个变量intmax,初始值为0,用户每输入一次就把用户输入的和max比较一下,如果输入的比max大,则让max等于用户输入。陷阱:判断end是在之前还是之后。循环的中断•break:立即终止整个循环。•continue:立即终止当前循环步骤,进行下一次循环步骤。•练习1:用whilecontinue实现计算1到100之间的除了能被7整除之外所有整数的和。•练习2:用whilebreak实现要求用户输入用户名和密码,只要不是admin、888888就一直提示要求重新输入。•returnfor循环•for(code1;code2;code3)。code1:循环的初始化代码,只在循环开始之前运行一次;code2,bool类型的表达式,每次循环完成前都判断一下是否为true,只有为true才会进行本次循环;code3在每次循环之后执行一次。•for的三段都可以省略,但是不能丢了“;”。•break、continue同样可以应用于for。•for和while代码之间都可以互相转换,究竟用哪种方式则取决于一些惯用用法和个人习惯,不用记,代码写多了自然就有感觉for(inti=0;i10;i++){}for(inti=100;i0;i--){}for中终止条件注意是还是=。只要想好了想要的最后一个数是什么、第一个数是什么即可用for实现计算1到100之间所有整数的和。用for实现计算200到300之间所有整数的和。枚举确定数量、确定值的几个取值:东西南北、男女、上中下。enumGender{male,female}enumQQStatus{online,offline,hidden}枚举的用法,QQStatusstatus=QQStatus.online;和用字符串比起来,用枚举的好处就是限定了变量的取值范围,程序处理起来更方便。数组•保存多个值。几乎任意类型都可以声明数组。int[]nums={5,3,8}int[]nums=newint[3]int[]nums=newint[3]{5,3,8}//个数和声明数必须一致int[]nums=newint[5]{5,3,8}//错误使用索引器访问指定编号位置
本文标题:net编程学习
链接地址:https://www.777doc.com/doc-3401865 .html