第2章 基本数据类型 王德俊 上海交通大学继续教育学院.

Slides:



Advertisements
Similar presentations
阻塞操作. 在 linux 里,一个等待队列由一个 wait_queue_head_t 类型的结构来描述 等待队列的初始化: static wait_queue_head_t testqueue; init_waitqueue_head(&testqueue);
Advertisements

第3-2章 类与 对象 Java类的特性 教学内容: 类的私有成员与公共成员 方法的重载 构造方法 实例成员与静态成员 重点: 重载 难点:
程序设计导论 ——第15讲 结构与结构数组.
程序设计导论 结构与结构数组.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
四資二甲 第三週作業 物件導向程式設計.
C#程序设计案例教程 第3章 程 序 结 构.
一维数组 乾坤以有亲可久; 君子以厚德载物。.
C语言程序设计.
C#程序设计 10软件1、2班 王槐彬 计算机工程学院.
第14章 c++中的代码重用.
全国计算机等级考试 二级基础知识 第二章 程序设计基础.
第5章 异常处理 王德俊 上海交通大学继续教育学院.
C#程序设计基础 $5 流程控制.
C#程序设计 c# programming 泛型 C#程序设计课程组.
.NET 程式設計入門(使用 C#) 講師:鄧智鴻.
第九章 结构体 主讲教师 :贾月乐 电话:
第二章 C# 基础知识.
第四章 在 C# 中实现 OOP 概念.
Hadoop I/O By ShiChaojie.
第三章 C#面向对象初级编程 面向对象得程序设计越来越受到编程人员的喜爱。类和对象是面向对象程序设计中的重要概念。封装性、继承性和多态性是面向对象的特点,本章旨在全面说明C#编写面向对象程序设计的方法。
程序设计专题 第2讲 - 结构 刘新国.
自定义数据类型 潘荣江 山东大学计算机科学与技术学院
第2章回顾 标识符:不用记,动手 关键字:if, else, switch, for, while, do, break, continue, void, …… 局部变量和成员变量 ①变量作用域 ②内存布局 基本数据类型 ①4类8种 ②互相转换 流程控制语句 ①分支 if……else, switch.
管理信息结构SMI.
第4章 数组和集合 4.1 一维数组 4.2 二维数组 4.3 Array类 4.4 交错数组 4.5 ArrayList类
走进编程 程序的顺序结构(二).
辅导课程六.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
快递单模板的制作.
第五讲 四则运算计算器(一) 精品教程《C#程序设计与应用(第2版)清华大学出版社 谭恒松 主编
第六单元 应用数组的程序设计 从现在开始,将详细讲述C语言的方方面面。第一章中的所有疑惑,都将一一消灭。
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
第二章 Java语言基础.
C#程序设计基础 第二章 数据类型.
第六章 属性、索引器、委托和事件.
第三章 C# 基础知识.
第7章 繼承/多型/介面 注意: 本投影片僅供本書上課教師使用,非經同意請勿上網轉載或供拷貝.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
普通高速模板的制作与调整.
第五章 介面/集合/泛型 注意: 本投影片僅供本書上課教師使用,非經同意請勿上網轉載或供拷貝.
第十一章 数组和集合对象.
C++大学基础教程 第7章 其它自定义数据类型 北京科技大学 信息基础科学系.
C#程序设计基础 $3 成员、变量和常量.
第二章 Java基本语法 讲师:复凡.
C语言程序设计 第一章 数据类型, 运算符与表达式 第二章 顺序程序设计 第三章 选择结构程序设计 第四章 循环控制 第五章 数组.
ES 索引入门
第4章 Excel电子表格制作软件 4.4 函数(一).
本节内容 类成员的访问控制 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
C++语言程序设计 C++语言程序设计 第四章 数组及自定义数据类型 C++语言程序设计.
第九节 赋值运算符和赋值表达式.
第二章 Java基本语法 讲师:复凡.
3.16 枚举算法及其程序实现 ——数组的作用.
本节内容 结构体 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Chapter 18 使用GRASP的对象设计示例.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
ASP.NET实用教程 清华大学出版社 第4章 C#编程语言 教学目标 教学重点 教学过程 2019年5月5日.
辅导课程十五.
第二章 Java基本语法 讲师:复凡.
第二章 Java基本语法 讲师:复凡.
C# 匿名委派 + Lambda + Func 建國科技大學 資管系 饒瑞佶.
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
基本知识 数据类型、变量、常量、运算符.
VB与Access数据库的连接.
JAVA 程式設計與資料結構 第三章 物件的設計.
数的简单处理 ——顺序结构、变量、数据类型、运算符
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
Presentation transcript:

第2章 基本数据类型 王德俊 上海交通大学继续教育学院

第2章 基本数据类型 2.1 一个简单的程序 2.2 基本数据类型 2.3 变量与常量 2.4 基本运算 2.5 数组的定义和使用 (数组类与数组列表类 结构 枚举)

数组类与数组列表类 用简单选择法对n个数排序 选择排序过程: (1)首先通过n-1次比较,从n个数中找出最小的,将它与第一个数交换---第一趟选择排序,结果最小的数被安置在第一个元素位置上 (2)再通过n-2次比较,从剩余的n-1个数中找出关键字次小的记录,将它与第二个数交换---第二趟选择排序 (3)重复上述过程,共经过n-1趟排序后,排序结束

数组类与数组列表类(续) static void Main(string[] args) { const int n = 10; int[] a=new int[n]; int i,j,k,x; Console.WriteLine("Input 10 numbers:"); for(i=0;i<=n-1;i++) a[i]=int.Parse(Console.ReadLine()); Console.WriteLine(); //输入数组元素

数组类与数组列表类(续) for(i=0;i<=n-2;i++) { k=i; //记录最小的数所在的位置 for(j=i+1;j<=n-1;j++) if(a[j]<a[k]) k=j; if(i!=k) { x=a[i];a[i]=a[k];a[k]=x;} } //简单选择排序 Console.WriteLine("The sorted numbers:"); for(i=0;i<=n-1;i++) Console.Write("{0} ", a[i]); Console.WriteLine(); Console.ReadLine(); } //输出数组元素

数组类与数组列表类(续) C#通过.NET框架中的System.Array数组类来支持数组,因此, 可以使用该类的属性与方法操作数组 数组列表类(ArrayList)是一个集合类,由该类声明的对象也 可以当做数组来使用

System.Array类 System.Array类提供创建、操作、搜索和排序数组的方法,因 而在CLR中用作所有数组的基类。列举常用属性和方法如下: 1)Length属性 2)IsReadOnly属性 3)Clone方法 4)CopyTo方法 5)Sort方法 6)Reverse方法

System.Array类(续) Length属性: 是数组对象的一个只读属性,表示数组包含多少个元素 int [ ]A=new int[10]; for(int i=0;i<A.Length;i=i+1) A[i]=i; IsReadOnly属性,此属性对于所有数组总是 false。

Clone方法 实现克隆数组功能,使用格式: 目标数组名=(数组类型名)源数组名.Clone( ); 例如: int [ ]A=new int[5]{10,8,6,4,2};// 声明并初始化数组A,该数组将作为源数组 int [ ]B; // 声明数组B,该数组将作为目标数组 B=(int [ ])A.Clone(); // 使用Clone方法 使用克隆方法时,将得到一个与源数组一模一样的数组,且目标数组不需要再实例化 Clone方法创建 Array的浅表副本。即仅复制 Array的元素(无论它们是引用类型还是值类型),但不复制这些引用所引用的对象。

CopyTo方法 实现数组拷贝功能,使用格式: 源数组名.CopyTo(目标数组名,起始位置); 例如: int [ ]A=new int[5]{6,7,8,9,10}; // 声明并初始化数组A,该数组将作为源数组 int [ ]B=new int[10]{1,2,3,4,5,1,2,3,4,5}; // 声明并初始化数组B,该数组将作为目标数组 A.CopyTo(B,5); 将数组A中的各元素值6、7、8、9、10合并到数组B中,合并后数组B中的各元素值为1、2、3、4、5、6、7、8、9、10 利用“起始位置”参数,可以将一个元素较少的数组中的元素值合并到一个元素较多的数组中

Sort方法 实现数组排序功能,使用格式为: Array.Sort(数组名); 例如: int [ ]A=new int[5]{10,8,6,4,2}; Array.Sort(A); 排序后,数组A中各元素值的排列顺序为:2、4、6、8、10

Reverse方法 将数组名对应的数组元素顺序反转,格式如下: Array.Reverse(数组名); 例如: Array. Reverse(A); 如果数组A中各元素值原来为:2、46、6、8、10,则反转后 为:10、8、6、46、2

示例ArraySort [例1] 创建Windows应用程序 在程序中声明包含10个元素的双精度型数组 为数组元素赋值为0~100之间的随机实数 单击“升序”按钮,数组按升序排序 单击“降序”按钮,数组按降序排序 输出排序前后数组的元素值

在Form1类定义中声明一个double类型的数组和一个string类型的变量: double [ ]A=new double[10]; string s;

窗体的Load事件代码: private void Form1_Load(object sender, System.EventArgs e) { Random rn=new Random( ); // 声明一个随机数生成对象 for(int i=0;i<A.Length;i=i+1) A[i]=Math.Round(rn.NextDouble( )*100,1); // 赋予数组各元素随机值 s+=A[i]+" "; // 将数组元素值的原顺序保存为一个字符串 } s+="\n\n"; label1.Text="数组原顺序为:\n"+s;

Array.Sort(A); “升序”按钮的Click事件代码: private void button1_Click(object sender, System.EventArgs e) // 升序 { Array.Sort(A); label1.Text="数组原顺序为:\n"+s; label1.Text+="数组升序排序:\n"; for(int i=0;i<A.Length;i++) label1.Text+=A[i]+" "; } // 升序处理结束

“降序”按钮的Click事件代码: private void button2_Click(object sender, System.EventArgs e) // 降序 { Array.Sort(A); Array.Reverse(A); label1.Text="数组原顺序为:\n"+s; label1.Text+="数组降序排序:\n"; for(int i=0;i<A.Length;i++) label1.Text+=A[i]+" "; } // 降序处理结束

在程序代码中使用了随机数生成对象rn的NextDouble方法,该方法能够生成一个0.0~1.0之间的实数 为了使生成的随机数只保留一位小数,使用了Math(数学)类中的Round方法以确定小数点后保留几位小数 Round方法的使用格式为: Math.Round(双精度类型数据,需要保留的小 数位数)

System.Collections.ArrayList类 ArrayList类属于System.Collections命名空间

System.Collections.ArrayList类 1) Count属性 2) IsReadOnly属性 3) Clone与CopyTo方法 4) Add 方法 5) BinarySearch 方法 6) Sort方法和Reverse方法

System.Collections.ArrayList类 ArrayList 对象名=new ArrayList(数组名); 其中,“数组名”为已经实例化的数组 例如: int [ ]A=new int[5]; // 声明并实例化数组 ArrayList AL=new ArrayList(A); // 声明并实例化数组列表 这样,AL相当于包含5个元素的整型数组

1 ) ArrayList类的Count属性 在数组列表ArrayList类中,表示包含元素个数的属性为Count, 其性质与用法与数组的Length属性相同

2) IsReadOnly属性 数组列表均具有IsReadOnly属性,利用该属性可以获知数组 列表中的元素是否为只读的 IsReadOnly属性值默认为false(假)

3) Clone与CopyTo方法 克隆(Clone)与拷贝(CopyTo)方法的功能均为数组复制操 作: 使用格式如下: 目标数组列表名=(ArrayList)源数组列表名.Clone( ); 源数组列表名. CopyTo(目标数组名) // Array必须具有从零开始的索引。

4 )Add 方法 将对象添加到 ArrayList的结尾处。使用格式: 数组列表名.Add(object对象); 如: ArrayList myAL = new ArrayList(); for (int i = 0; i <= 4; i++) myAL.Add(i * 2);

5)BinarySearch 方法 使用默认的比较器在整个已排序的 ArrayList中搜索元素,并返回该元素从零开始的索引,没找到则返回小于零的值。使用格式: 数组列表名. BinarySearch(object对象); 如: int myIndex = myAL.BinarySearch(6); if (myIndex < 0) Console.WriteLine("没找到"); else Console.WriteLine("找到{0}", myIndex);

ArrayList方法使用例子 for (int i = 0; i <= 4; i++) myAL.Add(i * 2); ArrayList myAL = new ArrayList(); for (int i = 0; i <= 4; i++) myAL.Add(i * 2); ArrayList myBL = (ArrayList)myAL.Clone(); int []A=new int[5]; myAL.CopyTo (A); int myIndex = myBL.BinarySearch(6); if (myIndex < 0) Console.WriteLine("没找到"); else Console.WriteLine("找到{0}", myIndex);

6) Sort方法和Reverse方法 Sort方法使用格式为: Reverse方法使用格式为: 数组列表名称.Sort( ); 例如: int [ ]A=new int[5]{5,4,3,2,1}; ArrayList AL=new ArrayList(A); AL.Sort( ); AL.Reverse(); 排序后,数组列表AL中各元素值的排列顺序为:1、2、3、4、5 反转后,各元素值的排列顺序为:5、4、3、2、1

4 自定义数据类型 自定义的数据类型包括结构与枚举 结构与枚举都属于值类型,而数组是引用类型 (1) 结构类型 (2) 枚举类型

(1) 结构类型 结构类型可以用来处理一组类型不同、内容相关的数据 1) 定义结构 2) 声明结构变量 3) 访问结构变量

1) 定义结构 结构的定义需要使用struct关键字,格式如下: struct 结构类型名 { public 类型名1 结构成员名1; ... } “结构类型名”表示用户定义的新数据类型名称 一对大括号之间定义结构成员 “类型名”可以是基本数据类型,也可以是另一个已定义的结构类型

例如: struct date { public uint year,month,day; } struct employee public string name; public bool sex; public date birthday; public string phone; public decimal pay;

2) 声明结构变量 定义结构后,可以用结构来声明变量 例如:date d1; // 声明一个结构变量d1 可以在声明结构变量的同时,为结构变量赋值,实质上是为结构变量中的成员赋值,如: date d1 = new date(); d1.year = 2012; d1.month = 10; d1.day = 8; date d2 = d1; // 用结构变量d1为d2赋值 又如: employee jerry; jerry=tom; // 用结构变量tom为结构变量jerry赋值 33

3) 访问结构变量 使用结构中的成员必须指出访问的结构变量 方法是在结构变量和成员之间通过运算符“.”连接在一起: 结构变量名.成员名 例如: tom.name="汤姆"; tom.sex=true; tom.birthday.year=1980; tom.birthday.month=5; tom.birthday.day=26; tom.phone="13868782069"; tom.pay=1500;

(2) 枚举类型 枚举类型是由用户定义的一组整型符号常量 使用枚举可以将一组相关的有限常量组织在一起,保证变量只能具有预定的值 由于常量都有名称,易于辨认,从而提高了程序的可读性 1) 定义枚举类型 2) 声明与访问枚举变量

1) 定义枚举类型 定义枚举类型使用关键字enum,定义枚举类型的一般格式为: enum 枚举类型名 { 符号常量1, 符号常量2, … } 枚举类型的成员均为符号常量,常量名之间用逗号分隔 例如: enum SolarSystem Sun,Earth,Moon

枚举常量成员的默认值为0、1、2…,可以在定义枚举类型时为成员赋予 特定的整数值 例如: enum SolarSystem { Sun=700000, // 太阳半径 Earth=6380, // 地球赤道半径 Moon=1740 // 月亮半径 }

2) 声明与访问枚举变量 声明枚举变量与声明基本类型变量的格式相同 SolarSystem S; // 声明一个枚举变量S 可以在声明枚举变量的同时为变量赋值 枚举变量的值必须是枚举成员,枚举成员需要用枚举类型引导 例如: SolarSystem S= SolarSystem.Sun; // 为枚举变量S赋值Sun 对枚举变量的访问同基本类型变量,例如: SolarSystem S= SolarSystem.Sun; int Num=S; // 将S的值赋给整型变量Num

本讲小结 数组类与数组列表类 结构 枚举