《C#面向对象程序设计》第4章:数组与方法.ppt
《《C#面向对象程序设计》第4章:数组与方法.ppt》由会员分享,可在线阅读,更多相关《《C#面向对象程序设计》第4章:数组与方法.ppt(31页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第4章章 数组与方法数组与方法主要内容与学习目标主要内容与学习目标4.1 数组数组4.2 多维数组多维数组4.3 值类型与引用类型值类型与引用类型4.4 方法方法主要内容与学习目标主要内容与学习目标l主要内容:主要内容:(1)声明数组、创建对象数组、数组元素的引用。声明数组、创建对象数组、数组元素的引用。(2)数组的数组的Length属性。属性。(3)数组初始化。数组初始化。(4)可变长度的数组的声明。可变长度的数组的声明。(5)foreach语句。语句。(6)数组对象的赋值运算。数组对象的赋值运算。(7)多维数组的声明和创建、多维数组初始化。多维数组的声明和创建、多维数组初始化。(8)二维
2、数组应用举例。二维数组应用举例。(9)值类型与引用类型。值类型与引用类型。(10)方法。方法。(11)传值方式、以传值方式传递值类型参数、以传值方式传递引用类型参数。传值方式、以传值方式传递值类型参数、以传值方式传递引用类型参数。(12)传引用方式、以传引用方式传递值类型参数、以传引用方式传递引用类型参数。传引用方式、以传引用方式传递值类型参数、以传引用方式传递引用类型参数。(13)值传递方式与引用传递方式比较。值传递方式与引用传递方式比较。l学习目标:学习目标:(1)使用方法,以模块方式构造程序。使用方法,以模块方式构造程序。(2)理解在方法之间传递信息的机制。理解在方法之间传递信息的机制。
3、(3)理解如何声明数组、初始化数组,以及引用数组的单独元素。理解如何声明数组、初始化数组,以及引用数组的单独元素。(4)声明和操纵多下标数组。声明和操纵多下标数组。4.1 数组数组l数组是同一类型的一组变量,数组允许你通过同一名称引用这一系列的变量,并使数组是同一类型的一组变量,数组允许你通过同一名称引用这一系列的变量,并使用一个称为用一个称为“索引索引”或或“下标下标”的数字来进行区分。数组中包含的变量的数字来进行区分。数组中包含的变量(又称数组又称数组的元素的元素)具有相同的类型,该类型称为数组的元素类型。具有相同的类型,该类型称为数组的元素类型。l如果程序中要存储一个月中每一天的日常开销
4、,可以创建一个含有如果程序中要存储一个月中每一天的日常开销,可以创建一个含有 30 个元素的数个元素的数组,而不必声明组,而不必声明30个变量。数组中的每个元素都存有一个值,可通过指定元素的索个变量。数组中的每个元素都存有一个值,可通过指定元素的索引进行访问。引进行访问。l例如,如果要用数组例如,如果要用数组number表示表示5个整数的集合个整数的集合(26,86,98,12,68),可以这样创,可以这样创建数组建数组number:int number=new int5;l任务任务4.1:计算月平均降雨量:计算月平均降雨量问题描述:编写程序,从输入对话框中输入问题描述:编写程序,从输入对话框
5、中输入12个月中每个月的实际降雨量,计算月平均降个月中每个月的实际降雨量,计算月平均降雨量及月实际降雨量与月平均降雨量的偏差。并将结果输出。雨量及月实际降雨量与月平均降雨量的偏差。并将结果输出。4.1.1 数组初始化数组初始化4.1.2 可变长度的数组的声明可变长度的数组的声明4.1.1 数组初始化数组初始化lC#通过将初始值括在大括号通过将初始值括在大括号()内,为在声明时初始化数组提内,为在声明时初始化数组提供了简单而直接了当的方法。特别要注意的是,如果声明时未初供了简单而直接了当的方法。特别要注意的是,如果声明时未初始化数组,则数组成员自动初始化为该数组类型的默认初始值。始化数组,则数组
6、成员自动初始化为该数组类型的默认初始值。l任务任务4.2:显示月名称:显示月名称 问题描述:修改计算月平均降雨量的程序,使命令窗口中的输入提问题描述:修改计算月平均降雨量的程序,使命令窗口中的输入提示是示是“一月一月”而不是而不是“1月月”,如图如图4.3所示所示。图4.3 从命令窗口中输入值4.1.2 可变长度的数组的声明可变长度的数组的声明l在前面的例子中,我们利用常数指定数组的大小,例如下面的语句中的常数在前面的例子中,我们利用常数指定数组的大小,例如下面的语句中的常数12:double difference=new double12;l利用常数声明数组大小不总占用有效的存储空间。例如,
7、假设我们声明大小为利用常数声明数组大小不总占用有效的存储空间。例如,假设我们声明大小为100的整数数的整数数组:组:int numbers=new int100;l我们把利用常数声明数组称为我们把利用常数声明数组称为“定长数组声明定长数组声明”。利用定长数组声明可能产生两个问题:第。利用定长数组声明可能产生两个问题:第1个问题是程序最多处理个问题是程序最多处理100个数,如果我们需要处理的数多于个数,如果我们需要处理的数多于100(例如,需要处理例如,需要处理101个数个数),则必须修改程序后重新编译,第,则必须修改程序后重新编译,第2个问题是可能产生未充分利用空间的问题,上面的声明个问题是可
8、能产生未充分利用空间的问题,上面的声明语句分配语句分配100个空间而忽略这些空间是否被使用。假设程序平均处理个空间而忽略这些空间是否被使用。假设程序平均处理20个数,那么该程序的个数,那么该程序的平均空间利用率只有平均空间利用率只有20%。C#并不限于定长数组声明,还可以在每次运行程序时声明不同长并不限于定长数组声明,还可以在每次运行程序时声明不同长度的数组。下面的代码提示用户输入数组的长度,然后创建指定长度的数组:度的数组。下面的代码提示用户输入数组的长度,然后创建指定长度的数组:int size;Console.WriteLine(请输入要创建的数组的元素的个数请输入要创建的数组的元素的个
9、数:);size=Int32.Parse(Console.ReadLine();numbers=new intsize;l任务任务4.3:创建数组:创建数组 问题描述:问题描述:在创建数组时,元素个数是否能为变量。在创建数组时,元素个数是否能为变量。数组的数组的Length属性。属性。编写一控制台应用程序,先输入要创建的数组的元素的个数,然后输入每个元素的值,最后将数组输编写一控制台应用程序,先输入要创建的数组的元素的个数,然后输入每个元素的值,最后将数组输出出(如图如图4.4所示所示)。图4.4 创建数组4.2 多维数组多维数组4.2.1 多维数组的声明和创建多维数组的声明和创建4.2.2
10、多维数组初始化多维数组初始化4.2.3 二维数组应用举例二维数组应用举例4.2.1 多维数组的声明和创建多维数组的声明和创建l除一维数组之外,除一维数组之外,C#还支持多维数组。一维数组由排列在一行中的所有还支持多维数组。一维数组由排列在一行中的所有元素组成,它只有一个索引。从概念上讲,二维数组就像一个具有行和元素组成,它只有一个索引。从概念上讲,二维数组就像一个具有行和列的表格一样。考虑以下考试成绩的表格列的表格一样。考虑以下考试成绩的表格(表表4.1),它有,它有5行行2列,列,5行代行代表表5个学生,个学生,2列代表列代表2次考试,第次考试,第1列代表第列代表第1次考试的成绩,第次考试的
11、成绩,第2列代表列代表第第2次考试的成绩。次考试的成绩。l我们可以用一个二维数组表示这个表。先声明并创建一个二维数组我们可以用一个二维数组表示这个表。先声明并创建一个二维数组Score:int,Score=new int5,2;l其中其中5表示行数,表示行数,2表示列数。二维数组有两个索引表示列数。二维数组有两个索引(索引号从索引号从0开始开始),其中一个表示行,一个表示列,如我们要将第,其中一个表示行,一个表示列,如我们要将第1行第行第2列列的元素赋值为的元素赋值为88,表示为:,表示为:Score0,1=88;lScore 0,1表示学生表示学生1的考试的考试2成绩,成绩,Score0,0
12、表示学生表示学生1的的考试考试1成绩。成绩。表4.1 学生考试成绩表4.2.2 多维数组初始化多维数组初始化l可以在声明数组时将其初始化,如下所示:可以在声明数组时将其初始化,如下所示:int,myArray=new int,1,2,3,4,5,6,7,8;l如果在声明数组时提供了初始值设定项,可省略如果在声明数组时提供了初始值设定项,可省略 new 语句:语句:int,myArray=1,2,3,4,5,6,7,8;l如果要声明一个数组变量但不将其初始化,必须使用如果要声明一个数组变量但不将其初始化,必须使用 new 运算运算符将数组分配给此变量,例如:符将数组分配给此变量,例如:int,m
13、yArray;myArray=new int,1,2,3,4,5,6,7,8;/正确正确myArray=1,2,3,4,5,6,7,8;/错误错误l可以给数组元素赋值,例如:可以给数组元素赋值,例如:myArray2,1=25;l也可以读取数组元素的值,例如:也可以读取数组元素的值,例如:int aNumber=myArray10,1;4.2.3 二维数组应用举例二维数组应用举例l任务任务4.4:二维数组:二维数组 主要知识点:主要知识点:二维数组的声明、创建、初始化。二维数组的声明、创建、初始化。输出二维数组输出二维数组每个元素的值。每个元素的值。将初始化的数组作为参数传递给方法。将初始化的
14、数组作为参数传递给方法。获得数获得数组每维的长度。组每维的长度。问题描述:创建一简单程序,演示二维数组的声明、创建、初始化,问题描述:创建一简单程序,演示二维数组的声明、创建、初始化,并将创建的数组对象以调用输出数组的方法输出。并将创建的数组对象以调用输出数组的方法输出。l任务任务4.5:学生考试成绩统计:学生考试成绩统计主要知识点:主要知识点:二维数组的应用。二维数组的应用。问题描述:假定问题描述:假定5个学生参加了两门课的考试,试统计出全部学生个学生参加了两门课的考试,试统计出全部学生的最高分和全部学生的最低分及每个学生的平均成绩,并输出的最高分和全部学生的最低分及每个学生的平均成绩,并输
15、出(如图如图4.6所示所示)。图4.6 成绩统计4.3 值类型与引用类型值类型与引用类型l前面讲的基本数据类型都是值类型,到目前为止学过的数组、前面讲的基本数据类型都是值类型,到目前为止学过的数组、String、类是引用类型。如果某个数据类型在自、类是引用类型。如果某个数据类型在自己的内存分配中包含数据,则该数据类型是己的内存分配中包含数据,则该数据类型是“值类型值类型”。“引用类型引用类型”含有指向包含数据的其他内存位置的地含有指向包含数据的其他内存位置的地址。也就是说,值类型变量的值是该变量包含的实际数据,该实际数据存储在值类型变量的存储位置中。引用址。也就是说,值类型变量的值是该变量包含
16、的实际数据,该实际数据存储在值类型变量的存储位置中。引用类型变量的值为一地址,该变量包含的数据存储在该地址指向的内存位置中。类型变量的值为一地址,该变量包含的数据存储在该地址指向的内存位置中。l下面我们介绍把一个变量的值赋给另外一个变量时发生的情况,考虑下列使用整数的赋值语句:下面我们介绍把一个变量的值赋给另外一个变量时发生的情况,考虑下列使用整数的赋值语句:int num1,num2;num1=14;num2=num1;num1+=5;其中,变量声明语句其中,变量声明语句int num1,num2;分配了存储了一分配了存储了一个类型为个类型为int的值的存储位置,同时命名这个位置的值的存储位
17、置,同时命名这个位置为为num1;分配了存储了一个类型为;分配了存储了一个类型为int的值的另一个存储位置,同时命名这个位置为的值的另一个存储位置,同时命名这个位置为num2(如图如图4.7所示所示)。l为了在存储位置为为了在存储位置为num1的存储位置存储一个整数值,即把一个整数值赋给变量的存储位置存储一个整数值,即把一个整数值赋给变量num1,我们写出的语句为:,我们写出的语句为:num1=14;l图图4.8说明了此赋值语句执行之后内存的状态。说明了此赋值语句执行之后内存的状态。l为了在存储位置为为了在存储位置为num2的地方存储一个与存储位置为的地方存储一个与存储位置为num1的地方所存
18、储的值同样的整数值,即把的地方所存储的值同样的整数值,即把num1变量变量的值赋给变量的值赋给变量num2,我们写出的语句为:,我们写出的语句为:num2=num1;l图图4.9说明此赋值语句执行之后内存的状态。说明此赋值语句执行之后内存的状态。l执行语句执行语句“num1+=5;”后内存的状态后内存的状态如图如图4.10所示所示。图图4.7 声明整型变量的结果声明整型变量的结果 图图4.8 整型变量赋值的结果一整型变量赋值的结果一图图4.9 整型变量赋值的结果二整型变量赋值的结果二 图图4.10 整型变量赋值的结果三整型变量赋值的结果三4.4 方法方法l方法是用来实现可以由对象或类执行的计算
19、或操作。方法是用来实现可以由对象或类执行的计算或操作。l在前面几章中,我们已经尝试过如何在自己定义的类中定义自己的在前面几章中,我们已经尝试过如何在自己定义的类中定义自己的Main方法,也定义过事件处理方法,用它们方法,也定义过事件处理方法,用它们指定我们在程序中发生的操作,在我们的方法中调用指定我们在程序中发生的操作,在我们的方法中调用.NET框架类库框架类库(FCL)中的一些类的方法以执行特定的任务,中的一些类的方法以执行特定的任务,如如MessageBox类的类的Show方法、方法、Int32类的类的Parse方法、方法、Math类的类的Pow方法等。方法等。l应用程序中的每行代码都必须
20、在某个方法的内部,如应用程序中的每行代码都必须在某个方法的内部,如Main、Calculate或或button1_Click。l可以把在一个程序中多次用到的某个任务定义为方法,如常用的计算、文本和控件的操作。方法对执行重复或可以把在一个程序中多次用到的某个任务定义为方法,如常用的计算、文本和控件的操作。方法对执行重复或共享的任务很有用,可以在代码中的许多不同位置调用方法,因此可以将方法作为应用程序的生成块。共享的任务很有用,可以在代码中的许多不同位置调用方法,因此可以将方法作为应用程序的生成块。l用方法构造代码有以下优点:用方法构造代码有以下优点:方法允许将程序分为不连续的逻辑单元。调试单独的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C#面向对象程序设计 C# 面向 对象 程序设计 数组 方法
限制150内