第2讲C程序设计基础(一)课件.ppt

上传人:牧羊曲112 文档编号:1488178 上传时间:2022-12-01 格式:PPT 页数:66 大小:267KB
返回 下载 相关 举报
第2讲C程序设计基础(一)课件.ppt_第1页
第1页 / 共66页
第2讲C程序设计基础(一)课件.ppt_第2页
第2页 / 共66页
第2讲C程序设计基础(一)课件.ppt_第3页
第3页 / 共66页
第2讲C程序设计基础(一)课件.ppt_第4页
第4页 / 共66页
第2讲C程序设计基础(一)课件.ppt_第5页
第5页 / 共66页
点击查看更多>>
资源描述

《第2讲C程序设计基础(一)课件.ppt》由会员分享,可在线阅读,更多相关《第2讲C程序设计基础(一)课件.ppt(66页珍藏版)》请在三一办公上搜索。

1、第二讲 C#程序设计基础(一),掌握C#的数据类型及常用运算符和优先级。 了解控制流程的两种方法。理解和掌握布尔逻辑的基本概念及布尔运算符的用法。掌握分支、循环流程控制语句的使用方法。重点和难点:C#的数据类型及常用运算符、布尔运算符的用法、分支结构及循环结构程序设计方法。,第二讲 C#程序设计基础(一),2.1 C#数据类型2.2 C#运算符与优先级2.3 C#流程控制语句,2.1 C#数据类型,2.1.1值类型 2.1.2引用类型 2.1.3值类型间的数据转换,C#数据类型,C#数据类型分为两类:值类型和引用类型。C#中把基本数据类型规定为值类型,而把一些较大的类型规定为引用类型,这种设计

2、方式是为了得到最佳的性能。 值类型包括整型数类型、布尔类型、浮点类型和小数型、结构类型和枚举类型。引用类型包括类类型、数组、接口类型和委托类型、字符串类型 。,值类型变量和引用类型变量的主要区别,存储位置值类型变量(定长)直接把变量的值保存在堆栈中。引用类型的变量(变长)把实际数据的地址保存在堆栈中,而实际数据则保存在堆中。赋值操作值类型变量在赋值时使用了内存复制的方式,一个变量的操作不会影响到其他变量。引用类型变量在赋值时,直接传递的是地址,不存在内存数据的复制,没有性能损失,对一个变量的操作会影响到引用同一个对象的另一个变量。,.NET基本类型,在.NET Framework中,被编译器直

3、接支持的数据类型称为基本类型,也被设计成类,每种数据类型都有属性和方法,在.NET Framework类库中都有对应的类名。 .NET基本类型包括:基本值类型:包括整型、浮点类型、小数型、布尔型、字符型。基本引用类型:包括Object类型(对象类型)、String类型。,2.1.1 值类型,声明一个值类型的语法形式为:数据类型名 变量名称 = n; 例如: int a = 100; /声明一个整型变量a,并赋初值为100; 注意,C#不允许使用未初始化的变量。,C#基本值类型,注:有效数字指从第一个不是零的数字起到最后一个数为止的数位。,关于基本值类型的说明(1):,如果对一个整数的数值没有作

4、出指示,编译器将其默认为int类型,若不是int型,要加相应后缀,如: uint ui=9000u; long l=9000L; ulong ul=9000L; 如果对一个非整数的数值没有作出指示,编译器将其默认为double类型,如果想指定为float型或小数型,数值要分别加后缀f或m, 如: float f=345.12f; decimal d=10.0m;bool类型的值和整数类型不能互相转换。,关于基本值类型的说明(2):,char类型的值是使用单引号括起来的,如A,汉。C#定义了一种特殊形式的字符数据,即以“”开头的转义字符,转义字符用于在程序中取代特殊的控制字符,如下表所示。,结构

5、类型,在实际生活中,经常把一组相关的信息放在一起。如,记录一本书的相关信息如书名、作者和内容等。如果按照简单的管理,每一条记录都要放到三个不同的变量中,这样的工作量很大,也不够直观。C#结构体可以解决这个问题。把一系列相关的变量组织成为一个单一实体的过程,称为生成结构的过程。这个单一实体的类型就叫做结构类型,每一个变量称为结构的成员。结构类型的变量采用struct来进行声明。声明形式如下: 访问修饰符 struct 结构名称 /主体 ,下面根据记录书中的信息定义一个结构体,代码如下:public struct centent public string title; public string

6、 author; public string content;,结构类型举例:,using System;namespace StructExample public struct Point public int x; public int y; public string s; class Program public static void Main() Point p; p.x = 3; p.y = 4; p.s = ok; Console.WriteLine(The result is 0,1,2, p.x, p.y, p.s); Console.ReadLine(); 运行结果:T

7、he result is 3,4,ok,枚举类型,枚举是值类型的一种特殊形式,为简单类型的常数值提供一种方便记忆的方法。枚举类型的定义形式一般为: enum:枚举数据类型 枚举名 枚举值表;每一种枚举类型都有一种基本类型,long、int、short和byte等整数类型均可作为枚举类型的基本类型,如果不指明数据类型,则默认为int型,且第一个元素的值为0,其后每一个连续元素的值加1递增,但是也可以给元素直接赋值定义。如:enum DaysMon,Tue,Wed,Fri,Sat,Sun; /Mon:0,Tue:1该枚举名为Days,枚举值共有7个,即一周中的7天,所有被声明为Days类型的变量,

8、其值只能是七天中的某一天。例如,当定义Days类型变量aDays后,变量aDay的值为如下形式:Days aDay;aDay=Days.Wed;又如:enum Data:long Min=255l,Mid=1024l,Max=32768l;,枚举类型举例,using System;namespace EnumExample class Program /定义枚举型数据days,并赋值,Sun到Sat的值分别对应于0到6 enum days Sun, Mon, Tue, Wed, Thu, Fri, Sat ; static void Main() Console.WriteLine(days.

9、Wed); Console.WriteLine(int)days.Wed); /定义days型变量myday,为其赋枚举中的值Fri days myday = days.Fri; Console.WriteLine(myday); Console.ReadLine(); 运行结果:Wed3Fri,2.1.2 引用类型,在基本类型里的引用类型有两个数据类型,即Object类型和String类型。,关于基本引用类型的说明,(1)Object类型 在C#中,Object类型是一切类型的最终父类型,所有内在的和用户定义的类型归根结底都是由它派生而来的。(2)String类型(字符串) C#提供了一个封

10、装良好的string类,可以方便地执行字符串相关的操作,如下所示: string string1=“你好”; string string2=“C#”; string string3=string1+string2;,(3)字符串在赋值方面像值类型,而不像引用类型。using System;class stringexamplestatic void Main()string s1=a string;string s2=s1;Console.WriteLine(s1 is + s1);Console.WriteLine(s2 is + s2);s1=another string;Console.

11、WriteLine(s1 is now +s1);Console.WriteLine(s2 is now + s2);Console.ReadLine();运行结果如下:s1 is a strings2 is a strings1 is now another strings2 is now a string,(4)String是Uncode字符串,即每个英文字母与汉字一样,均占两个字节,长度均为1。例如:string str=“ab张三cde”;Console.WriteLine(str.Length); /输出结果:7。(5)可以使用Format方法将字符串表示为规定格式。规定格式的一般形

12、式为:N,M:格式码其中, :表示其中的内容为可选项。N:从零开始的整数,表示第几个参数。M:可选整数,表示最小长度。若该参数的长度小于M的绝对值,就用空格填充,如果M为负,则左对齐;如果M为正,则右对齐。M默认为0。格式码:可选的格式化代码字符串(字母不区分大小写)。如:int i=123;double j=123.453;String s=String.Format(“i=0,-7:d5,j=1,7:f2”,i,j);Console.WriteLine(s);结果:i=00123 ,j= 123.45,部分格式码,2.1.3 值类型之间的数据转换,同类整数值类型之间有两种转换方式: 隐式转

13、换与显式转换;所有值类型之间的转换,都可以使用Convert类转换。,(1)同类整数值类型之间的数据转换-隐式转换,从低精度、小范围的数据类型转换为高精度、大范围的数据类型,可以用隐式转换。 例如: int k = 1; long i = 2; i = k; /隐式转换,(2)同类整数值类型之间的数据转换-显式转换,从大范围类型的数据转换为小范围类型的数据的时候,必须采用显式转换,而且特别谨慎,因为此时有丢失数据的危险。如: long k = 5000; int i = (int)k 所有的隐式转换也都可以采用显式转换的形式来表示。如: int i = 10; long j = (long)i

14、;,(3)使用Convert类进行所有值类型间的转换,Convert类示例,static void Main()double balance,interestRate;Console.WriteLine(请输入当前余额(元):);balance=Convert.ToDouble(Console.ReadLine();Console.WriteLine(请输入年利率:);interestRate=1+Convert.ToDouble(Console.ReadLine()/100.0;balance*=interestRate;Console.WriteLine(1年后的余额将达0:f2元。,ba

15、lance);Console.ReadLine();,2.2 运算符与优先级,C#运算符分为以下两大类:算术运算符数学运算符:+、-,*,/,%递增递减运算符:+,-(用于前缀); +,-(用于后缀)算术赋值运算符:=,*=,/=,%=,+=,-=布尔运算符 下面只讲算术运算符,第二节再讲布尔运算符。,数学表达式示例,int var1,var2=5,var3=6;var1=var2+var3;var1=var2-var3;var1=var2*var3;var1=var2/var3;var1=var2%var3;,递增递减运算符示例,int var1,var2=5;var1=+var2; /va

16、r1的值是var2+1,var2递增1var1=-var2; /var1的值是var2-1,var2递减1var1=var2+; /var1的值是var2,var2递增1var1=var2-; /var1的值是var2,var2递减1,算术赋值运算符示例,int var1,var2=5;var1=var2;var1+=var2;/ var1= var1+var2var1-=var2;/ var1= var1- var2var1*=var2;/ var1= var1* var2var1/=var2;/ var1=var1/var2var1%=var2;/ var1= var1% var2,算术运

17、算符(优先级高低),2.3 C#流程控制语句,2.3.1 布尔逻辑2.3.2 C#流程控制语句,流程控制的两种方法,分支 有条件地执行代码。条件取决于计算的结果。循环 重复执行相同的语句(重复执行一定的次数,或者在满足测试条件后停止执行)。 流程控制中要用布尔逻辑来控制流程的走向。,2.3.1 布尔逻辑,布尔逻辑的基本概念布尔运算符布尔表达式常用运算符的优先级,布尔逻辑的基本概念,布尔(bool)类型可以有两个值:true或false。布尔(bool)类型常常用于存储某些操作(如比较)的结果,以便操作这些结果。如:要根据变量myVal是否小于10,来确定是否执行代码,为此,需要确定“myVal

18、小于10”的真假。若为真,“myVal小于10”的布尔结果为true。若为假,“myVal小于10”的布尔结果为false。,布尔运算符,布尔比较运算符:根据比较关系的真假来确定true还是false。包括:=,!=,=。布尔条件运算符:用于判断一个或多个条件是否满足指定的规则,主要包括:!,&,|。,布尔比较运算符示例,bool var1int var2=8,var3=5;bool var1=(va2=var3);var1=(va2!=var3);var1=(va2var3);var1=(va2=var3);/以上var1必须是布尔型,var2、var3可以是各种类型。,布尔条件运算符示例,

19、bool var1,var2=true,var3=false;var1=!var2;var1=var2/条件或/var1、var2、var3必须是布尔型。,布尔表达式,布尔表达式是指结果为布尔值的表达式。如:bool var;int ix=3,iy=5;char cx=g,cy=h;string sx=abc,sy=def;var=ixiy=(sx!=sy);Console.WriteLine(“var=0”,var);运行结果:var=True,布尔运算及布尔表达式综合示例,bool var1,var2;int var12=8,var3=5,var4=-1,var5=100;var1=(va

20、r12var3)运行结果:var1=True var2=True,常用运算符优先级(优先级高低),2.3.2 C#流程控制语句,分支语句循环语句跳转语句,1.分支语句,分支是控制下一步要执行哪些代码的过程,要跳转到的代码行由某个条件语句来控制。这个条件语句使用布尔逻辑,将测试值和可能值进行比较来决定程序走向。 C#中的3种分支技术如下:三元运算符 ?:if语句switch语句,三元运算符,使用三元运算符是进行比较的最简单的方式。其语法如下:?: 其中, 计算可得到一个布尔值,三元运算符的结果根据这个值来确定是,还是。 三元运算符的示例如下:string resultStr=(myInteger

21、10)?”小于10”:”大于等于10”; 三元运算符比较适合于简单赋值语句,根据比较结果执行大量代码的情形应使用if语句。,if语句,功能:根据测试条件布尔表达式的值(true或false)选择要执行的语句序列。典型结构如下:if (测试条件布尔表达式) 测试条件布尔表达式为真时执行的语句序列else 测试条件布尔表达式为假时执行的语句序列注:以后,凡是一个语句序列包含多于一条的语句,就必须使用大括号 将语句序列括起来。,常见形式有: 1) 单独使用if语句,不加else语句if (布尔表达式) 布尔表达式为真时执行的语句序列 2) if语句和else语句配套使用的单条件测试if (布尔表达式

22、) 布尔表达式为真时执行的语句序列else 布尔表达式为假时执行的语句序列,3) else块中嵌套if语句的多条件测试if (布尔表达式1) 布尔表达式1为真时执行的语句序列else if (布尔表达式2) /注意,else和if之间有一个空格。 布尔表达式2为真时执行的语句序列else if (布尔表达式3) 布尔表达式3为真时执行的语句序列else 所有条件均为假时执行的语句序列,/ if语句举例: 任意输入一个整数i,,先判断合法性,再判断i是否为”1”, 为“1”打印“i is one”,不为”1”,打印“i is not one”。using System;namespace Con

23、soleAppIfExampleclass IfExamplestatic void Main(string args) int i; Console.Write(i=); i=Convert.ToInt32(Console.ReadLine(); if (i=1) Console.WriteLine(i is one); else Console.WriteLine(i is not one); Console.ReadLine(); ,switch 语句,switch 语句也叫case语句,可以一次将测试变量与多个可能值进行比较,这种测试仅限于可能值是离散的值类型常量。switch语句一般

24、形式为:switch (条件表达式) case 常量表达式1: 语句序列1 break; case 常量表达式2: 语句序列2 break; default: 语句序列 break;,switch语句注意事项:,a) 如果某个case块为空,则会从这个case块直接跳到下一个case块上。 b)在一个switch中,不能有相同的两个case标记。,switch (条件表达式) case 常量表达式1: 语句序列1 break; case 常量表达式2: 语句序列2 break; default: 语句序列 break;,Switch语句举例,using System;namespace Swi

25、tchExample public class Program public static void Main() Console.WriteLine(一年中你最喜欢那个季节?); string Season = Console.ReadLine(); /从键盘读取用户输入内容 Console.Write(你喜欢0 , Season); switch (Season) /switch分支 case 春天: Console.WriteLine(这样的天气最适合郊游了,相信你肯定喜欢!); break; case 夏天: Console.WriteLine(火辣的天气,去游泳馆会是一个不错的选择!

26、); break; case 秋天: Console.WriteLine(秋高气爽,带上你的家人去旅行吧!); break; case 冬天: Console.WriteLine(白雪茫茫的,去滑雪吧,绝对刺激!); break; default: Console.WriteLine(请确认你输入的季节); break; Console.Read(); ,2.循环语句,循环就是重复执行一些语句。循环语句包括:do-while语句while语句foreach语句for语句,do-while语句,do-while循环的结构如下: do 语句序列 while (条件); 注:while语句后面的分号

27、是必须的。 do-while循环先执行循环体内的语句序列,然后进行一个布尔测试,如果测试的结果为true,就继续循环。 如:int i=1;do Console.WriteLine(“0”,i+); while (i=10);,例2-3 do-while循环举例。给定当前余额、年利率及预期余额,计算几年后存款余额达到预期余额。,double balance,interestRate,targetBalance;Console.WriteLine(请输入当前余额(元):);balance=Convert.ToDouble(Console.ReadLine();Console.WriteLine(

28、请输入年利率:); interestRate=1+Convert.ToDouble(Console.ReadLine()/100.0;Console.WriteLine(请输入预期余额(元):);targetBalance=Convert.ToDouble(Console.ReadLine();int totalYears=0;do balance*=interestRate; +totalYears;while (balancetargetBalance);Console.WriteLine(在0年内,余额将达1元。,totalYears,balance);Console.ReadLine(

29、);,while语句,While循环的结构为:while (条件) 语句序列 while循环非常类似于do-while循环,区别在于:while循环中的布尔测试是在循环开始时进行,循环体可能一次都不执行,而do-while循环是在最后进行布尔测试,循环体至少执行一次。如:int i=1;while (i=10) Console.WriteLine(“0”,i+);,例2-4 while循环举例。给定当前余额、年利率及预期余额,计算几年后存款余额达到预期余额。,double balance,interestRate,targetBalance;Console.WriteLine(请输入当前余额(

30、元):);balance=Convert.ToDouble(Console.ReadLine();Console.WriteLine(请输入年利率:); interestRate=1+Convert.ToDouble(Console.ReadLine()/100.0;Console.WriteLine(请输入预期余额(元):);targetBalance=Convert.ToDouble(Console.ReadLine();int totalYears=0;while (balancetargetBalance) balance*=interestRate; +totalYears;Cons

31、ole.WriteLine(在0年内,余额将达1元。,totalYears,balance);Console.ReadLine();,foreach循环,foreach循环可以依次读取集合中的每一项,但不能修改集合中的任何一项。foreach的语法如下:foreach(类型 变量名 in 集合) 执行语句;类型为集合元素的类型,变量名表示集合中的每一个元素。每次执行一次循环语句,循环变量就读取集中的一个元素。,foreach举例,static void Main() string colors=Red,Blue,Green,White,Yellow; foreach(string c in c

32、olors) Console.WriteLine(0,c); Console.ReadLine();,for语句,do-while和while语句适于循环次数不定的情形。for语句用于循环次数一定的情形。 要定义for循环,需要下述信息: (1)初始化:给计数器变量(可以是多个)赋初值。 (2)循环条件:继续循环的条件,当计数器变量不满足测试条件时结束循环。 (3)循环控制:在每次循环的最后,对计数器变量执行增减操作。 for循环一般形式为: for (初始化;循环条件;循环控制) 语句序列 ,for语句简单举例,例:循环把1至10写到控制台上。int i;for(i=1;i=10;+i) c

33、onsole.writeline(“0”,i);,3.循环的中断-跳转语句,有时需要在循环代码的处理上使用跳转语句实现更精细的控制。如下:break语句 立即终止循环。continue语句 立即终止当前的循环,继续执行下一次循环。,break语句举例,int i;for (i = 1; i = 10; i+) if (i % 2) = 0) break; /break命令终止了整个循环。 Console.WriteLine(i);Console.ReadLine(); 运行结果:1,continue语句举例,int i;for (i=1;i=10;i+) if (i%2)=0) continu

34、e; Console.WriteLine(i);Console.ReadLine();/continue语句仅终止本次循环,继续下一次循环,而不是整个循环。运行结果:13579,数据类型与控制流程综合示例,class Program enum Data:long Min=255L,Mid=1024L,Max=32768L ; public struct MyPoint public int x, y; static void Main() System.Int16 aShort=new System.Int16(); byte aByte = new Byte(); decimal aDecimal = 100.5m; char aChar = y; Console.WriteLine(“值类型的初始化值:0,1,2,3, aShort,aByte,aDecimal,aChar); float aFloat = 123.123456f; bool aBool = (aFloat 121) ,作业:,1.编写并调试一个控制台应用程序,输出1到5的平方值,要求:1) 用for语句实现。2) 用while语句实现。 3) 用do-while语句实现。2.设有如下数学表达式,从键盘上输入x,用if语句编程输出y的值。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号