付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、程序调试(演示S)设置断点(在行号前点击空白处)单步运行(F11逐语句调试)观察变量(鼠标放在变量名上观察)F10逐过程调试程序的调试必须会 而且还经常用,晚上回去把今天作业调试一下 另外把程序走到哪一步写出来交给我For(S)连续输出100次我下次一定细心.比较用for和while,哪种更好?语法:for(表达式1;表达式2;表达式3)循环体;问题1:求1-100间的所有偶数和?问题2:找出100-999间的水仙花数?问题3:输出九九乘法表(循环的嵌套)练习:让用户输入一个数显示下面内容break(S)break用于循环中,退出当前循环.int.Parse把用户输入的数字转换成我们想要的数字
2、类型,如何做?可以用Convert.ToInt32(“3”);还可以用int.Parse(“3”);还有其他的方法吗?int num=0;int.TryParse(“3”, out num)练习:练习1:循环录入5个人的年龄并计算平均年龄,如果录入的数据出现负数或大于100的数,立即停止输入并报错.练习2:在while中用break实现要求用户一直输入用户名和密码,只要不是admin、88888就一直提示要求重新输入,如果正确则提登录成功.1100之间的整数相加,得到累加值大于20的当前数(比如:1+2+3+4+5+6=21)结果6Continue(S)立即结束本次循环,判断循环条件,如果成立
3、,则进入下一次循环,否则退出循环.举例:运动员跑步喝水的例子比如:我编写代码的时候,上个厕所,回来继续写代码练习1:用 while continue实现计算1到100(含)之间的除了能被7整除之外所有整数的和。找出1000内所有的素数/让用户输入一个数,三元表达式语法:表达式1?表达式2 :表达式3举例: bool result = 5 3 ? true : false;会用就可以了随机数产生Random r=new Random();Int number=r.Next(1,11);产生1-10的数输入名字随机显示这个人上辈是什么样的人总节顺序结构:语句顺序执行 分支结构:语句在满足条件下执行
4、if, if-else, if-else if, switch-case 表1?表2 :表3(三元) 循环结构:语句在满足条件下循环执行多次while, do-while, for foreach跳转语句break(跳出当前循环), continue(大家观察),常量枚举结构(S)确定数量、确定值的几个取值:东西南北、男女、上中下。enum Gendermale,femaleenum QQStatusonline,offline,hidden枚举的用法,QQStatus status = QQStatus.online;和用字符串比起来,用枚举的好处就是限定了变量的取值范围,程序处理起来更方便
5、。const 类型 常量名 = 常量值 static void Main(string args) const int PI = 3.14; PI = 3.20;字符串与枚举的转换public enum Gender male,famale/Console.WriteLine(你的性别:0.,Gender.male.ToString();(Gender)(Enum.Parse( typeof(Gender),“male”);(会用就行)每一个值都对应一个数字典型的枚举类型:MessageBox.Show的参数(后面会学到)自己查看”神器”看看枚举最终是怎么回事?public struct Pe
6、rson public string Name; public int Age; public string Hobby; public int Popularity; public void SayHi() / . 一次声明多个不同类型的变量结构的语法:访问修饰符 struct 结构名 定义结构成员结构体(S)为什么要使用结构,例如c#中Color Point都是结构练习:1 定义一个结构叫MyColor,有三个成员,分别定义为int类型的red,green,blue声明一个 MyColor类型的变量,并对其成员赋值.使MyColor可以表示成一个红色.2 定义一个结构类型Person,有三
7、个成员,分别为姓名,性别,年龄声明两个Person类型的变量,分别表示 张三 男 18岁/ 小兰 女 16岁数组(S)一次语文测试后,老师让班长统计每一个学生的成绩并计算全班(全班共60人)的平均成绩,然后把所有成绩显示出来.如果我让你输入一个就显示一个(或者输入完后再显示每个成绩),并且比较大小,平均值 总成绩有何方法?如何声明变量?好的解决方法,使用数组.数组保存多个值;几乎任意类型都可以声明数组; int nums = new int3; int nums = 5,3,8;innums=new int31,2,3;intnums=new int2,3,5;数组的声明:以上四种int nu
8、ms = new int35,3,8/个数和声明数必须一致int nums = new int55,3,8/错误int nums = new int5,3,8/正确,可以省略数组个字使用索引器访问指定编号位置的元素,访问数组元素:nums0、nums1。索引从0开始。取到的元素的类型就是数组元素的类型。还可以对数组元素进行赋值数组的赋值与取值常见问题:求平均值,求最大值,求和,排序Array排序 和反序练习:练习1:从一个整数数组中取出最大的整数,最小整数,总和,平均值练习2:计算一个整数数组的所有元素的和。练习3:数组里面都是人的名字,分割成:例如:老杨|老苏|老邹”(老杨,老苏,老邹,老虎
9、,老牛,老蒋,老王,老马)练习4:将一个整数数组的每一个元素进行如下的处理:如果元素是正数则将这个位置的元素的值加1,如果元素是负数则将这个位置的元素的值减1,如果元素是0,则不变。练习5:将一个字符串数组的元素的顺序进行反转。“我”,“是”,”好人” “好人”,”是”,”我”。第i个和第length-i-1个进行交换。try-catch的使用(简单用法)try有可能出现错误的代码;catch如果try中的代码出现异常,则进去catch中finally最后执行的代码在 try 块中获取并使用资源,在 catch 块中处理异常情况,并在 finally 块中释放资源。 throw:方法(函数)介
10、绍(S)函数就是将一堆代码进行重用的一种机制。函数就是一段代码,这段代码可能有输入的值(参数),可能会返回值。一个函数就像一个专门做这件事的人,我们调用它来做一些事情,它可能需要我们提供一些数据给它,它执行完成后可能会有一些执行结果给我们。要求的数据就叫参数,返回的执行结果就是返回值。string s=Console.ReadLine()就是一个有返回结果的函数;Console.WriteLine(hello)就是一个有执行参数的函数,只有告诉WriteLine被打印的数据它才知道如何打印;int i=Convert.ToInt32(22)则是一个既有参数又有返回值的函数。有了函数写代码就像拼
11、积木,C#中的各种各样的技术其实就是通过for、if等这些基础的语法将不同的函数按照一定的逻辑组织起来。方法(S)方法的定义:看见static就是静态方法访问修饰符 static 返回值类型 方法名()方法体;命名规则:方法名开头大写,参数名开头小写,参数名、变量名要有意义方法的调用,对于静态方法,调用有两种方式如果在同一个类中,直接写名字调用就行了.或者类名.方法名();return可以立即退出方法.常用的已经学过的方法:Console.WriteLine();Console.Write();Console.ReadLine();Console.ReadKey();int.Parse(str
12、ing);Convert.ToInt32(string);对于由static修饰的方法,使用:类名.方法名()调用.如果在类中调用自己的由static修饰的方法,可以省略类名.变量的作用域(只讲局部变量)阅读下面的程序,说一下输出结果是多少?变量的作用域在方法中定义的变量称为局部变量,其作用域从定义开始,到其所在的大括号结束为止.在一个方法中想要访问另一个方法中的变量,怎么办?两种解决方法:参数和返回值举例:写一个方法,判断一个年份是否是润年.方法中的return语句导致函数立即返回。在返回值为void的函数中return,在返回值非void的函数中return 值练习,自己写一个方法1 读取
13、输入的整数,定义成方法,多次调用(如果用户输入的是数字,则返回,否则提示用户重新输入)2 还记得学循环时做的那道题吗?只允许用户输入y或n,请改成方法3查找两个整数中的最大值:int Max(int i1,int i2)4计算输入数组的和:int Sum(int values)思考:即然Console.WriteLine()是方法,那么为什么WriteLine的参数可以是字符串类型,也可以是数字类型,还可以是布尔类型char类型呢?(重载-重写)为什么要有方法的重载?函数重载(函数重名S)函数的重名:static void SayHello(string name) Console.Write
14、Line(我是0,name);static void SayHello(string name) Console.WriteLine(I am0,name);static void SayHello(string name) Console.WriteLine(我是0,name);static void SayHello(int age) Console.WriteLine(我的年龄0,age);static void SayHello(string name) Console.WriteLine(我是0,name);static int SayHello(string name) retur
15、n 10;static void SayHello(string name) Console.WriteLine(我是0,name);static void SayHello(string name,string nickname) Console.WriteLine(我是0,昵称是1,name,nickname);构成重载的条件:参数类型不同或者参数个数不同(不严谨的),与返回值无关。思考:方法只能返回一个值,当需要返回多个值时怎么办?例如:写一个方法,计算一个int类型数组中每个元素的总和 和 最大值与最小值?试试 能不能返回个数组呢?(自己试试)如果类型不同呢?如何解决方法的out参数和
16、ref参数(*)函数参数默认是值传递的,也就是“复制一份”,例子:int age=20;IncAge(age);Console.WriteLine(age=0,age);out则是内部为外部变量赋值,out一般用在函数需要有多个返回值的场所。例:int.TryParse。方法的练习:重复让用户输入一个数,判断该数是否是质数,输入q结束?质数的判断用方法来实现bool IsPrime(int number)将一个字符串数组输出为|分割的形式,比如“梅西|卡卡|郑大世”(用方法来实现此功能)string JoinString(stringnames)用方法实现找出一个int类型数组中最大值和最小值
17、FindNumber(intnums,out int max,out int min)写一个方法,实现MyTryParse的功能bool MyTryParse(string s,out int result)用户只能输入0到100之间的数写一个方法,否则提示超出范围params数组面向对象概念(S)世界是由什么组成的:数学家,摄影家.画家程序员万物皆对象试着描述赵老师和学生张三的特征和行为属性对象具有的各种特征每个对象的每个属性都拥有特定值例如:赵老师和张三的年龄不一样.属性:姓名,性别,年龄属性的值:方法: 行为,动作.执行的操作.方法:杨老师的行为,上课. 学生的行为,学习听老师讲课练习:
18、说说教室里有哪些对象?这些对象有哪些属性和方法?比如:电脑/灯/音箱等等桌子,椅子一切皆对象 找出下列对象共性张三(一个学生)杨老师邻居售货员张阿姨李四的爸爸李四的妈妈门口停的奔驰S320汽车/老师开的QQ汽车/杨老师的解放牌大货车,牛老师开的宝马自行车类:类是模子,确定对象将会拥有的特征(属性)和行为(方法)类是对象的类型人类 张三; int number;类和对象的区别类是抽象的概念,仅仅是模板,比如说:“人”类对象是一个你能够看得到、摸得着的具体实体人类都有:姓名性别年龄 属性,有说话的方法.张三是一个对象,他的姓名属性的值:张三 性别的属性的值:男 年龄属性的值:20 张三会说话对象可
19、以叫做类的实例(Instance)类不占内存,对象才占内存.类的定义定的定义语法:访问修饰符 class 类名成员;.类中可以包含变量的定义、方法。请练习定义一个人类.人类分别用三个变量来表示姓名性别年龄,有一个打招呼的方法,有一个走路的方法.类的实例化(S)类的实例化,用关键字new 语法: 类 实例名 = new 类();类的成员的访问: 实例名.属性 实例名.方法名();字段、方法、属性(后面讲)都可以叫做类的成员Member,它们都需要定义访问级别。访问级别的用处在于控制成员在哪些地方可以被访问,这样达到面向对象中“封装”的目的.访问修饰符:public private (intern
20、al protected)属性字段用public修饰的问题用private属性的定义.get;set;属性是为了保护与之相对应的字段的.保证对字段的读取和赋值符合要求.属性可分为:读写、只读、只写。允许外部访问的变量一定要声明为属性。类的练习:Student定义一个学生类,有六个属性,分别为姓名、性别、年龄、语文、数学、英语成绩。有2个方法:一个打招呼的方法:介绍自己叫XX,今年几岁了。是男同学还是女同学。两个计算自己总分数和平均分的方法。显示:我叫XX,这次考试总成绩为X分,平均成绩为X分实化两个对象并测试:张三 男 18 三科成绩为:90 95 80小兰 女 16 三科成绩为:95 85
21、100类的构造方法(S)构造方法用来创建对象,并且可以在构造函数中对对象进行初始化。构造函数是用来创建对象的特殊方法,方法名和类名一样,没有返回值,连void都不用。构造函数可以有参数,new对象的时候传递函数参数即可如果不指定构造函数,则类有一个默认的无参构造函数。如果指定了构造函数,则不再有默认的无参构造函数,如果需要无参构造函数,则需要自己来写。构造函数可以重载,也就是有多个参数不同的构造函数。认识类图c#中的类图和通用类图- age:int- name:string+ Name:string类名Student+SayHi():void析够函数(*) 不能在结构中定义析构函数。只能对类使
22、用析构函数。一个类只能有一个析构函数。无法继承或重载析构函数。无法调用析构函数。它们是被自动调用的。析构函数既没有修饰符,也没有参数。练习1给前面写的学生类添加构造方法.使在实例化学生类的时候可以通过构造方法对姓名性别年龄语数英等属性赋值,也可以只对姓名和性别赋值.年龄默认为18岁,语数英成绩默认为0分.张三 男 18 三科成绩为:90 95 80小兰 女 16 三科成绩为:95 85 100练习2:写一个Ticket类,有一个距离属性(本属性只读,在构造方法中赋值),不能为负数,有一个价格属性,价格属性只读,并且根据距离distance计算价格Price (1元/公里):0-100公里 票价
23、不打折101-200公里 总额打9.5折201-300公里 总额打9折300公里以上 总额打8折有一个方法,可以显示这张票的信息.测试上面的类.临时回忆(温故而知新)参数中使用out 和 ref的区别(传出/传入传出)数组做为参数(讲过了)params,看Console.WriteLine();可变数组 我也可以做到命名空间namespace(命名空间),用于解决类重名问题,可以看做“类的文件夹”。如果代码和被使用的类在一个namespace则不需要using。在不同命名空间下的类调用有两种方法:写全称 命名空间.类名先using引用命名空间,再调用字符串的处理(S)string可以看做是ch
24、ar的只读数组。char c = s1;。例子:遍历输出string中的每个元素。C#中字符串有一个重要的特性:不可变性,字符串一旦声明就不再可以改变。所以只能通过索引来读取指定位置的char,不能对指定位置的char进行修改。如果要对char进行修改,那么就必须创建一个新的字符串,用s. ToCharArray()方法得到字符串的char数组,对数组进行修改后,调用new string(char)这个构造函数(暂时不用细研究)来创建char数组的字符串。一旦字符串被创建,那么char数组的修改也不会造成字符串的变化。例子:将字符串中的A替换为a。字符串练习一:随机输入你心中想到的一个名字,然
25、后输出它的字符串长度 Length:可以得字符串的长度练习二:两个学员输入各自最喜欢的课程名称,判断是否一致,如果相等,则输出你们俩喜欢相同的课程.如果不相同,则输出你们俩喜欢不相同的课程.上题中两位同学输入 c#和 C#代表同一门课,怎么办?字符串的连接+,两边只要有一个是字符串类型,另一个也会被自动转换成字符串类型一切类型都可以调用.ToString()方法转换成字符串类型.String类常用方法(S)ToLower():得到字符串的小写形式。注意字符串是不可变的,所以这些函数都不会直接改变字符串的内容,而是把修改后的字符串的值通过函数返回值的形式返回。s.ToLower()与s=s.To
26、Lower()ToUpper():得到字符串的大写形式; Trim()去掉字符串两端的空白。s1.Equals(s2, parison.OrdinalIgnoreCase),两个字符串进行比较不区分大小写的比较。s1=s2常见疑问谁说字符串不可变?string s = abc;s=123,s这不是变了吗要区分变量名和变量指向的值的区别。程序中可以有很多字符串,然后由字符串变量指向他们,变量可以指向其他的字符串,但是字符串本身没有变化。字符串不可变性指的是内存中的字符串不可变,而不是变量不变。string s10 = s1;/s10指向s1指向的字符串,而不是s10指向s1,哪怕s1以后指向了其
27、他内存,那么s10还是指向helloabcadmin888888s1s1字符串的分割(S)string Split(params char separator):将字符串按照指定的分割符分割为字符串数组;string Split(char separator, StringSplitOptions options)将字符串按照指定的char分割符分割为字符串数组( options 取RemoveEmptyEntries的时候移除结果中的空白字符串);练习:从日期字符串(2008-08-08)中分析出年、月、日;2008年08月08日。让用户输入一个日期格式如:2008-01-02,你输出你输入
28、的日期为2008年1月2日字符串函数详解字符串替换:string Replace(string oldValue, string newValue)将字符串中的出现oldValue的地方替换为newValue。例子:名字替换。取子字符串:string Substring(int startIndex),取从位置startIndex开始一直到最后的子字符串;string Substring(int startIndex, int length),取从位置startIndex开始长度为length的子字符串,如果子字符串的长度不足length则报错。bool Contains(string val
29、ue)判断字符串中是否含有子串valuebool StartsWith(string value)判断字符串是否以子串value开始;bool EndsWith (string value)判断字符串是否以子串value结束;int IndexOf(string value):取子串value第一次出现的位置。Int IndexOf(string value,int startIndex)字符串常用方法:学习查看msdnStringBuilder 和 String 的区别?(*)答:String 在进行运算时(如赋值、拼接等)会产生一个新的实例,而 StringBuilder则不会。所以在大量
30、字符串拼接或频繁对某一字符串进行操作时最好使用 StringBuilder,不要使用 String如果要操作一个不断增长的字符串,尽量不用String类,改用StringBuilder类。两个类的工作原理不同:String类是一种传统的修改字符串的方式,它确实可以完成把一个字符串添加到另一个字符串上的工作没错,但是在.NET框架下,这个操作实在是划不来。因为系统先是把两个字符串写入内存,接着删除原来的String对象,然后创建一个String对象,并读取内存中的数据赋给该对象。这一来二去的,耗了不少时间。而使用System.Text命名空间下面的StringBuilder类就不是这样了,它提供的Append方法,能够在已有对象的原地进行字符串的修改,简单而且
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建立培训制度流程
- 高速质量教育培训制度
- 代理内部培训制度
- 理工社区工作站培训制度
- b超规范工作制度
- 生产线下培训班管理制度
- 社区全科医生培训制度
- 2025福建龙岩上杭县殡仪馆有限公司招聘工作人员2人笔试历年参考题库附带答案详解
- 外国公司新员工培训制度
- 2025浙江嘉兴市海宁长河水务有限责任公司招聘3人笔试历年参考题库附带答案详解
- 黑龙江省哈尔滨市五区2025-2026学年八年级(五四学制)上学期期中语文试题(含答案)
- 2026年宁夏贺兰工业园区管委会工作人员社会化公开招聘备考题库及参考答案详解1套
- 黄芪中药课件
- 赤峰市敖汉旗2025年网格员考试题库及答案
- 船舶除锈涂装课件
- 天猫店主体变更申请书
- 亚马逊运营年终总结
- 幼儿园老师面试高分技巧
- 航空运输延误预警系统
- DLT 5142-2012 火力发电厂除灰设计技术规程
- 文化艺术中心管理运营方案
评论
0/150
提交评论