版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《软件技术》专业剖析报告软件教研室李萍2006年5月
<可视化程序设计_C#>第3章C#程序设计语言讲课教师:周志德《软件技术》专业剖析报告软件教研室李萍11、了解C#程序组成中解决方案、项目、类、窗体、函数等基本概念和对应文件;2、了解C#的数据类型,变量和常量定义,公用函数、语句表达式与程序书写规则;3、掌握赋值、分支、循环等语句的格式与使用方法;4、掌握数组、数组列表、类、接口、委托、命名空间等概念与使用方法。5、学会用类与对象设计学生成绩管理程序(解决方案)。教学要求1、了解C#程序组成中解决方案、项目、类、窗体、函数等基本概21、采用类比教学法,即以C++中的程序组成、语法、语义与算法为例,引出C#中有关:(1)程序结构;(2)数据类型、表达式;(3)流程控制语句;(4)数组类型;(5)类、对象、接口与委托;(6)命名空间;的概念与使用方法。2、采用理实一体化的教学方法。教学方法1、采用类比教学法,即以C++中的程序组成、语法、语义与算法31、类与对象(1)类(Class):数据成员(属性)+成员函数(方法)Class<类>{<数据成员>;<成员函数>;}(2)对象(Object):<类><对象>;(3)对象成员调用:<对象>.<属性>;<对象>.<方法>();相关术语1、类与对象相关术语42、命名空间命名空间由若干个类的定义组成,如命名空间System由Math、String、DateTine、Double等类的定义组成。定义格式:namespace<命名空间名>{<类1>定义;…<类n>定义;}相关术语2、命名空间相关术语5C++工程文件(.dsw)源文件1(.cpp)源文件2(.cpp)源文件n(.cpp)……编译预处理命令函数1函数n……函数2函数说明部分函数体数据定义执行语句图3.1C++程序组成C++程序组成问题:C#程序如何组成?答:解决方案(.sln)3.1C#程序组成C++工程文件(.dsw)源文件1源文件2源文件n……编译预63.1C#程序组成图3.2C#程序(解决方案)的组成普通类1(*.cs)(class)……普通类m(*.cs)(class)窗体类1(*.cs)(Form)……窗体类k(.cs)(Form)引用命名空间(using)定义项目命名空间(namespace)定义类(class)定义成员函数(方法)定义数据成员(属性)解决方案(.sln)(solution)C#项目1(*.csproj)(classproject)……C#项目i(*.csproj)(classproject)……C#项目n(*.csproj)(classproject)定义窗体类(Form.cs)窗体设计类(.Designer.cs)窗体资源(.resx)函数声明变量声明函数体引用命名空间定义项目命名空间定义窗体类定义全局变量定义函数程序定义事件驱动程序3.1C#程序组成图3.2C#程序(解决方案)的组成普通7图3.3C#程序(解决方案)的组成引用命名空间定义窗体类定义事件驱动程序解决方案ex3_1.sln项目ex3_1.csproj引用命名空间定义窗体类(.cs)项目主程序.cs定义普通类.cs窗体设计类窗体资源类定义项目命名空间ex3_1图3.3C#程序(解决方案)的组成引用命名空间定义窗体类定83.1C#程序组成3.1.1C#程序组成1、解决方案(.sln)VisualStudio2005将C#应用程序称为解决方案。如:学生档案查询解决方案ex2_5.sln;由图3.2可知C#解决方案由一个或多个C#项目组成。在解决方案中添加新项目的方法:菜单|文件|添加|新建项目|在对话框中选择:VisualC#、Windows应用程序、位置,输入项目名称。3.1C#程序组成3.1.1C#程序组成93.1C#程序组成【例3-1(1)】创建解决方案ex3_1.sln,在ex3_1.sln中添加项目ex3_1_2。(1)创建解决方案ex3_1.sln菜单|文件|新建|项目|新建项目对话框,设置如下:项目类型:VisualC#,模板:Windows应用程序位置:c:\C#,名称:ex3_1|确定。(2)在窗体Form1中添加一个label与一个Butoon,双击按钮,编写事件驱动程序:
privatevoidbutton1_Click(objectsender,EventArgse){label1.Text="学习C#程序组成!";}3.1C#程序组成【例3-1(1)】创建解决方案ex3_1103.1C#程序组成(3)在ex3_1.sln中添加项目ex3_1_2菜单|文件|添加|新建项目|添加新项目对话框,设置如下:项目类型:VisualC#,模板:Windows应用程序,位置:c:\C#名称:ex3_2|确定。此时,解决方案ex3_1.sln中出现项目ex3_1与ex3_1_2,如图3.4所示,即解决方案ex3_1.sln由两个项目ex3_1与ex3_1_2组成。图3.4解决方案ex3_1.sln由项目ex3_1与ex3_1_2组成3.1C#程序组成(3)在ex3_1.sln中添加项目ex113.1C#程序组成2、项目(.csproj)(1)项目组成由图3.2可知C#项目由若干普通类(class)与窗体类(Form)组成。C#的项目是以命名空间的形式定义的。在项目中可以添加新窗体与新类。①添加新窗体的方法菜单|项目|添加Windows窗体|输入窗体名|添加②添加新类的方法菜单|项目|添加类|输入类名|添加。3.1C#程序组成2、项目(.csproj)123.1C#程序组成【例3-1(2)】在项目ex3_1添加一个新窗体Form2与一个类class1。(1)添加新窗体Form2:菜单|项目|添加Windows窗体|输入窗体名Form2|添加。(2)添加新类class1菜单|项目|添加类|输入类名class1|添加。添加后项目ex3_1由属性、引用、类class1.cs、窗体Form1.cs与Form2.cs、程序Program.cs组成。图3.5项目ex3_1添加窗体Form2与类class13.1C#程序组成【例3-1(2)】在项目ex3_1添加133.1C#程序组成(2)资源管理器中项目内容项目文件(.csproj),如:ex3_1.csproj属性:Properties引用:<命名空间>,如:System窗体(.cs),如:Form1.cs窗体设计类(.Designer.cs);如:Form1.Designer.cs窗体资源类(.resx);如:Form1.resx类(.cs),如Program.cs其它(*.config,*.xml,*.ico,……)3.1C#程序组成(2)资源管理器中项目内容14(3)项目命名空间的定义C#项目中所有类与窗体都被定义在项目命名空间内。如:打开项目ex3_1中类class1的代码编辑器可看ex3_1命名空间的定义代码如下:singSystem;//引用系统类组成的命名空间SystemusingSystem.Collections.Generic;usingSystem.Text;namespaceex3_1
//定义项目命名空间ex3_1{classClass1
//定义类Class1{}}3.1C#程序组成(3)项目命名空间的定义3.1C#程序组成153.1C#程序组成打开项目ex3_1中窗体Form1的代码编辑器可看ex3_1命名空间的定义代码如下:
usingSystem; //引用系统类组成的命名空间System…………usingSystem.Windows.Forms; //引用窗体类组成的命名空间Formsnamespaceex3_1
//定义项目命名空间ex3_1{ //由Form公有派生出窗体类Form1publicpartialclassForm1:Form{publicForm1() //定义窗体类Form1的构造函数{InitializeComponent();} //调用函数初始化窗体与控件} //该函数在Designer.cs文件中执行}3.1C#程序组成打开项目ex3_1中窗体Form1的代码163、命名空间(1)命名空间是类的定义集合如:系统命名空间System由Math、String、DateTine、Double等公共类的定义组成。在代码编辑器中输入System后用成员运算“.”可显示其所有公共类Math等,如图3.6所示。再如,项目命名空间ex3_1由Class1、Form1、Form2、Program类的定义组成。3.1C#程序组成图3.6System中的类3、命名空间3.1C#程序组成图3.6System中的类17(2)命名空间的定义格式namespace<命名空间名>{<类1>定义;…<类n>定义;}如:项目ex3_1的命名空间定义如下:namespaceex3_1{classClass1{}publicclassForm1:Form{}publicclassForm2:Form{}staticclassProgram{}}说明:实际类、窗体、程序的ex3_1命名空间的定义是分开。3.1C#程序组成(2)命名空间的定义格式3.1C#程序组成183.1C#程序组成4.引用定义在C++中,当要使用输入输出对象cin、cout时,必须先用#include将头文件iostream.h包含到程序中来。#include<iostream.h>voidmain(void){inta;cin>>a;cout<<“a=”<<a<<endl;}3.1C#程序组成4.引用定义193.1C#程序组成同样当使用命名空间中的类时,必须先引用命名空间后使用类。命名空间引用定义格式:using<命名空间名>如在项目ex3_1的命名空间定义前,定义引用:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;3.1C#程序组成同样当使用命名空间中的类时,必须先引用命20定义System等命名空间引用后,在后续代码中,可以使用System、……、System.Windows.Forms这些命名空间中的类。实验:在代码编辑器中,对下列引用定义语句作注解处理//usingSystem.Windows.Forms;则生成解决方案时:因为找不到基类Form,定义窗体类的语句:publicpartialclassForm1:Form出错!!!且Form1窗体设计器不能使用!!!3.1C#程序组成定义System等命名空间引用后,在后续代码中,可以使用S213.1C#程序组成5、窗体(1)窗体组成窗体由下列三个文件组成1)程序代码文件(*.cs)如:Form1.cs程序代码文件由引用定义、命名空间定义、窗体类定义、函数定义(控件事件驱动程序)、变量定义等组成。用户在此界面内的主要工作是编写事件驱动程序。3.1C#程序组成5、窗体223.1C#程序组成2)窗体设计类(*.Designer.cs)如:Form1.Designer.cs该程序主要用于窗体与控件的初始化工作,初始化工作主要由Form1.cs调用InitializeComponent()函数实现。在InitializeComponent()函数内有窗体与控件属性、方法初值的设置代码。一般不要用户管理。3)窗体资源(*.resx)如:Form1.resx该程序主要用于设置窗体与控件所需资料,如图像资源等。3.1C#程序组成2)窗体设计类(*.Designer.c23(2)添加新窗体C#项目中允许有多个窗体,添加新窗体的方法如下:方法一:菜单|项目|添加Windows窗体|Windows窗体|Form1|添加方法二:资源管理器|右击项目ex3_1|添加|Windows窗体|Form1|添加3.1C#程序组成(2)添加新窗体3.1C#程序组成243.1C#程序组成6、类文件类文件由引用定义、命名空间定义、类(或结构等)定义以及类函数组成。(1)主程序类Program.csC#项目中首先运行的是主程序类文件Program.cs该文件由引用定义、命名空间定义、主函数main()定义组成,用于对应用项目程序的初始化,及决定调用的启动窗体。3.1C#程序组成6、类文件253.1C#程序组成如:Program.cs:主程序类文件代码如下usingSystem;usingSystem.Collections.Generic;usingSystem.Windows.Forms;namespaceWindowsApplication1{staticclassProgram{ //应用程序的主入口点。
staticvoidMain() //主函数{Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Application.Run(newForm1());//运行Form1窗体程序} //当项目中有多个窗体时,
}
//该程序将决定先启动运行哪一个窗体}3.1C#程序组成如:Program.cs:主程序类文件代263.1C#程序组成(2)添加类方法一:菜单|项目|添加类|类|class1|添加方法二:资源管理器|右击项目ex3_1|添加|类|class1|添加3.1C#程序组成(2)添加类277.函数定义一个函数,包括函数的名称、参数、返回值等等,如下代码:privatevoidbtn_Find_Click(objectsender,EventArgse){函数体}函数体是在函数定义后的{……}之间包含的所有代码行,用于改变程序、窗体或类的对象的状态和行为、完成对相关信息进行处理等的代码。3.1C#程序组成7.函数3.1C#程序组成283.1.2C#代码行书写规则1.语句[语句定义符]<语句体>;2.注释格式1://注释内容;格式2:/*注释内容*/3.换行书写
当语句较长时,C#允许语句换行书写,语句用“;”结束。3.1C#程序组成3.1.2C#代码行书写规则3.1C#程序组成29//若中桥校区复选框被选中,则在文本框中赋“中桥校区”;if(rbtn_Zhongqiao.Checked){txt_Xiaoqu2.Text=“中桥校区”;}3.1C#程序组成//若中桥校区复选框被选中,则在文本框中赋“中桥校区”;3304.命名规范在C#程序中给常量、变量、类、函数等命名时应遵守命名规范,体现专业素养。(1)常量:用大写字母。例如:PI。当含有多个单词,用下划线“_”隔开。例如CIRCLE_RADIUS等。(2)变量:用首字母小写,之后每个单词首字母大写其余小写的方式。例如frm_StuFind、filename、errorHandler、peopleNumber。3.1C#程序组成4.命名规范3.1C#程序组成31
(3)类成员变量:加前缀“m”。例如:mFilename、mErrorHandler、mPeopleNumber。类名:一般使用每个单词首字母大写其余字母小写的方式。例如:FileAppender、StreamWriter等。(4)函数名:根据函数功能用动词+名词的单词组合进行命名,做到“见名知意”。如:btn_Find_Click,再如,打开文件的函数可以命名为OpenFile。(5)C#中的命名是区分大小写如,Name和name代表的是不同的变量。3.1C#程序组成(3)类成员变量:加前缀“m”。3.1C#程序组成325.使用缩进privatevoidbtn_Delete_Click(objectsender,EventArgse){intindex=lst_User.SelectedIndex;if(index>=0)//宝山认为c,c++,java都是以0为开始lst_User.Items.RemoveAt(index);elseMessageBox.Show("请选择用户后再删除!");}3.1C#程序组成5.使用缩进3.1C#程序组成331、C#程序组成,C#程序称为解决方案;解决方案由若干个项目组成,以命名空间形式定义项目;项目由若干个普通类、窗体类与主程序类组成;普通类由定义类的数据成员(属性)与成员函数(方法)组成;窗体类由窗体定义类(定义控件事件驱动程序等)、窗体设计类(定义窗体内的控件)、窗体资源类(定义窗体内的资源)等组成。主程序类由项目主函数等构成,用于创建启动窗体。2、代码行书写规则第1次课小结1、C#程序组成,C#程序称为解决方案;第1次课小结34作业:新建一个解决方案ex3_1.sln,在解决方案的Form1窗体内添加一按钮与图片框控件(装入黄金虎教师照片),单击按钮将金鱼图片装入图片框。(1)在代码编辑器中,阅读Form1.cs文件,写出引用、命名空间、窗体类、构造函数、事件驱动程序的定义代码;阅读Form1.Designer.cs文件,写出窗体、按钮控件变量的定义初始化设置代码。阅读Form1.resx文件,写出文件中的资源。阅读Program.cs文件,写出调用窗体Form1的代码。第1次课小结作业:新建一个解决方案ex3_1.sln,在解决方案的For35(2)在资源管理器中,写出项目、引用、窗体、类的名称。(3)在解决方案的目录中,写出解决方案文件、项目文件、窗体文件(程序代码文件、窗体设计类文件、窗体资源文件)、类文件的名称。(4)写出解决方案执行过程。第1次课小结(2)在资源管理器中,写出项目、引用、窗体、类的名称。第1次36C++数据类型基本类型导出类型整型实型字符型char无值型void短整型shortint整型int长整型longint单精度型float双精度型double数组指针结构体共同体类图3.4C++的数据类型3.2数据类型与表达式C++数据类型基本类型导出类型整型实型字符型c373.2数据类型与表达式C#数据类型值类型整型结构类型枚举类型引用类型类类型接口类型数组类型基本类型浮点型逻辑型字符型字符串型日期型图3.5C#的基本数据类型3.2数据类型与表达式C#数据值类型整型结构类型枚举类型383.2.1数据类型C#除保留C++的数据类型外,还新增了C#内置数据类型。1.内置数据类型(如表3-1所示)
Byteb=1; //定义C#新增的字节变量b
Int32i=2; //定义C#新增的32位整型变量i
intj=3; //定义C++整型变量j
Singlex1=4; //定义C#新增的单精度变量x1,
floatx2=5; //定义C++单精度变量x2
Doubley=1.234567;//定义C#新增的双精度变量y
Charc='a'; //定义C#新增的字符变量c
Booleana=true;//定义C#新增的布尔变量a在VS2005中蓝色多为C++数据类型,浅蓝色为C#新增数据类型
3.2数据类型与表达式3.2.1数据类型3.2数据类型与表达式39表3-1C#内置数据类型类别类名说明数据类型完整类名整型Byte8位的无符号整型byteSystem.ByteSByte8位的有符号整型sbyteSystem.SByteInt1616位的有符号整型shortSystem.Int16Int3232位的有符号整型intSystem.Int32Int6464位的有符号整型longSystem.Int64UInt1616位的无符号整型ushortSystem.UInt16UInt3232位的无符号整型uintSystem.UInt32UInt6464位的无符号整型ulongSystem.UInt64浮点Single单精度(32位)浮点floatSystem.SingleDouble双精度(64位)浮点doubleSystem.Double逻辑Boolean布尔值(真或假)boolSystem.Boolean字符CharUnicode(16位)字符charSystem.Char数值Decimal十进制值decimalSystem.Decimal表3-1C#内置数据类型类别类名说明数据类型完整类40【例3-2(1)】新建解决方案ex3_2.sln,在窗体中添加5个按钮与5个文本框控件,如图3-1所示,双击按钮1编写事件驱动程序如下:privatevoidbutton1_Click(objectsender,EventArgse){Byteb=1;Int32i=2;intj=3;Singlex1=4;floatx2=5;Doubley=1.234;Charc='a';Booleana=true;textBox1.Text=b.ToString();}3.2数据类型与表达式图3.6数据类型示例【例3-2(1)】新建解决方案ex3_2.sln,在窗体中412.字符串类型:String(C#新增)String属于值类型:System.String作用:定义字符串变量(对象)【例3-2(2)】在窗体中双击按钮2,编写事件驱动程序。
privatevoidbutton2_Click(objectsender,EventArgse){Strings1=“abcd”; //定义字符串变量s1strings2=“xyz”; //定义字符串变量s2System.Strings3=“”; //定义字符串变量s3s3=s1+s2; //字符串连接运算textBox2.Text=s3; //在文本框中显示s3值}3.2数据类型与表达式2.字符串类型:String(C#新增)3.2数据类型与42说明:在C#中同一种数据类型有时允许用首字母大写或小写两种表达方式。如:字符串类型有:String
与string两种表达方式。双精度类型有:Double与double两种表达方式。在VS2005中小写为蓝色,大写为浅蓝色。3.日期时间类型:DateTime(C#新增)作用:用于定义日期与时间变量。日期格式:2012-09-1810:45:50。3.2数据类型与表达式说明:在C#中同一种数据类型有时允许用首字母大写或小写两种表43DateTime值类型:System.DateTime取值范围:0001-1-124:00:00到9999-12-3123:59:59。例3-2(3)在窗体中双击按钮3,编写事件驱动程序。privatevoidbutton3_Click(objectsender,EventArgse){DateTimed1=Convert.ToDateTime("2012-09-1810:20:00");System.DateTimed2=Convert.ToDateTime(“2012-09-0310:20:00”); //定义日期时间变量d1、d2,并赋初值textBox3.Text=Convert.ToString(d1-d2);//计算日期相差天数}
3.2数据类型与表达式DateTime值类型:System.DateTime3.2443.2数据类型与表达式4.结构体类型(自定义数据类型)(1)定义结构体类型
<权限>struct<结构体名>{<权限><类型>数据成员;<权限><类型><函数>{函数体;}}(2)定义结构体变量:<结构体名><结构体变量>;(3)引用结构体变量:<结构体变量>.<数据成员>3.2数据类型与表达式4.结构体类型(自定义数据类型)453.2数据类型与表达式【例3-2(4)】在窗体类Form1中定义学生成绩结构类型Score。
publicstructScore//在窗体类Form1中定义成绩结构体类型{publicintno; //定义公有数据成员学号
publicstringname; //定义公有数据成员姓名publicfloatmath; //定义公有数据成员数学publicfloatphy; //定义公有数据成员物理publicfloateng; //定义公有数据成员英语publicfloatave; //定义公有数据成员均分}; 3.2数据类型与表达式【例3-2(4)】在窗体类Form1463.2数据类型与表达式在窗体内双击按钮4,编写按钮4事件驱动程序:用Score定义变量s,成绩赋给s,计算均分,输出姓名:均分。
privatevoidbutton4_Click(objectsender,EventArgse){Scores; //定义学生成绩结构变量ss.no=1001; //通过引用给数据成员赋值="zhou";s.math=90;s.phy=85;s.eng=80;s.ave=(s.math+s.phy+s.eng)/3; //计算均分textBox4.Text=+":"+s.ave.ToString();}3.2数据类型与表达式在窗体内双击按钮4,编写按钮4事件驱473.2数据类型与表达式5、类类型(自定义类型)(1)定义类类型<权限>class<类名>{<权限><类型>数据成员;<权限><类型><函数>(形参){函数体;}}(2)定义对象:<类名><对象>;(3)引用对象数据成员:<对象>.<数据成员>3.2数据类型与表达式5、类类型(自定义类型)48【例3-2(5)】在C#解决方案ex3_1.sln中定义矩形类Rectangle(1)在解决方案中添加矩形类Rectangle菜单|项目|添加类|选择:类|名称:Rectangle|添加|资源管理器中出现Rectangle.cs,如图3.7所示。3.2数据类型与表达式图3.7定义矩形类Rectangle【例3-2(5)】在C#解决方案ex3_1.sln中定义矩形49(2)在代码编辑器中编写定义类的代码classRectangle{privateintLeft,Top,Height,Width;//定义矩形数据成员
publicRectangle(intL,intT,intH,intW)//定义构造函数
{Left=L;Top=T;Height=H;Width=W;}publicintArea()//定义计算矩形面积成员函数
{returnHeight*Width;}}3.2数据类型与表达式(2)在代码编辑器中编写定义类的代码3.2数据类型与表达50(3)在Form1窗体中添加文本框5与按钮5(4)双击按钮5,在代码编辑器中输入事件驱动程序privatevoidbutton5_Click(objectsender,EventArgse){Rectangler; //定义矩形对象rr=newRectangle(10,10,10,10); //为r分配内存并初始化textBox5.Text=r.Area().ToString();//调用r的面积函数} //计算矩形面积,并在文本框中显示实验:完成解决方案ex3_1.sln的编程,体验C#数据类型使用方法。3.2数据类型与表达式(3)在Form1窗体中添加文本框5与按钮53.2数据类型513.2.2常量1.直接常量(常数)逻辑常量:true,false2.符号常量[访问权限]const[数据类型]<变量名>=<常量值>;例如:publicconstintDAY_OF_WEEK=7;publicconststringSHOW_TITLE="Helloworld!";3.2数据类型与表达式3.2.2常量3.2数据类型与表达式523.C#内部定义符号常量如:System.Math.PI(圆周率)System.Math.E(自然对数的底e)等等,这些常量在程序代码中可以直接使用。3.2数据类型与表达式3.C#内部定义符号常量3.2数据类型与表达式53【例3-2(6)】在Form1窗体中添加文本框6与按钮6,事件驱动程序:privatevoidbutton6_Click(objectsender,EventArgse){doubler=10.0; //定义半径r=10Doubles=r*r*System.Math.PI;//计算圆面积stextBox6.Text=s.ToString(); //显示圆面积s}3.2数据类型与表达式【例3-2(6)】在Form1窗体中添加文本框6与按钮6,543.2.3变量变量必须按照C#命名规则进行命名。对于变量,编译程序时,系统要为其分配与其类型相对应的若干个字节的存储单元,以存储变量的值。为变量赋值就是将值存放到为其分配的存储单元中;引用变量就是从变量的存储单元中取出数据。3.2数据类型与表达式3.2.3变量3.2数据类型与表达式551.变量定义语句(1)定义函数内局部变量:<类型><变量名>[,<变量名>]…;例如:privatevoidbtn_Delete_Click(objectsender,EventArgse){intindex=lst_User.SelectedIndex;if(index>=0)lst_User.Items.RemoveAt(index);elseMessageBox.Show("请选择用户后再删除!");}3.2数据类型与表达式1.变量定义语句3.2数据类型与表达式56(2)定义类的成员变量[作用域修饰符]<类型><成员变量名>[,<成员变量名>]…;namespaceWindowsApplication1{publicpartialclassForm1:Form//定义Form1类{publicForm1() //定义构造函数{InitializeComponent();}
intcount=0; //定义类的成员变量
privatevoidtimer1_Tick(objectsender,EventArgse){count++;textBox1.Text=Convert.ToString(count);}}}3.2数据类型与表达式(2)定义类的成员变量3.2数据类型与表达式57(3)定义控件变量(从工具箱将控件拖入窗体后自动定义)private<类型><变量名>[,<变量名>]…;例如:从工具箱将文本框、按钮控件拖入窗体后,在Fowm1.Designer.cs文件中出现控件定义语句:privateSystem.Windows.Forms.TextBoxtextBox1;privateSystem.Windows.Forms.Buttonbutton1;3.2数据类型与表达式(3)定义控件变量(从工具箱将控件拖入窗体后自动定义)3.258(4)定义静态变量[作用域修饰符]static<类型><变量名>[,<变量名>]…;例如:staticintcount;说明:静态变量只能定义函数外部,不能定义在函数内。3.2数据类型与表达式(4)定义静态变量3.2数据类型与表达式59(5)说明与C++变量初值为随机数所不同的是,C#值类型变量定义后,系统自动为该变量赋一个初值:整型:初值为0,逻辑型:初值为false;引用类型:初值为null。string类型:初值为null,而不是空字符串””。3.2数据类型与表达式(5)说明3.2数据类型与表达式603.2.4运算符与表达式1、C#运算符C#运算符与C++类似,分为:算术运算符:+、-、*、/、%、++、--逻辑运算符:!、&&、||、&(位与)、|(位或)关系运算符:>、>=、==、<=、<、!=条件运算符:?:赋值运算符:=、+=、-=、*=、/=字符串连接运算符:+等,运算符及优先级如表所示。3.2数据类型与表达式3.2.4运算符与表达式3.2数据类型与表达式61运算符类别运算符算术+-*/%逻辑&|^!~&&||truefalse字符串连接+递增、递减++--移位<<>>关系==!=<><=>=赋值=+=-=*=/=%=&=|=^=<<=>>=成员访问.索引[]转换()条件?:委托串联和移除+-创建对象new类型信息asissizeoftypeof溢出异常控制checkedunchecked间接寻址和地址*->[]&表3.2C#运算符一览表运算符类别运算符算术+-*/62
优先级类别运算符高↓低基本x.yf(x)a[x]x++x--newtypeofcheckedunchecked一元+-!~++x--x(T)x乘法*/%加法+-移位<<>>关系和类型检测<><=>=isas相等==!=逻辑AND&逻辑XOR^逻辑OR|条件AND&&条件OR||条件?:赋值=*=/=%=+=-=<<=>>=&=^=|=表3.3C#运算符一览表优先级类别运算符高基本x.yf(x)a[x]x632、C#表达式与C++类似,C#表达式也由常量、变量、函数用运算符连接而成。例如:Doublex=2.0,y;y=1+x+sin(x);3.2数据类型与表达式2、C#表达式3.2数据类型与表达式64
(1)数据类型内置基本数据类型:Boolean、Byte等字符串类型:String日期时间型:DateTime结构体类型(struct)与类类型(class)(首字母大写)(2)常量:大写字母,如PI
直接常量(常数):true,false符号常量:publicconstintDAY_OF_WEEK=7;C#内部定义符号常量:System.Math.PI第2次课小结(1)数据类型第2次课小结65(3)变量:首字母小写,单词首字母大写,如btn_Add函数内局部变量类的成员变量控件变量静态变量(static)(5)运算符与表达式作业:补充题:完成例3-1(1)~(6)的解决方案界面与事件驱动程序设计。习题三3.1,3.2第2次课小结(3)变量:首字母小写,单词首字母大写,如btn_Add第2663.2数据类型与表达式3.2.5C#中公共类及其函数C#提供许多公用类函数供用户使用,使用前必须先引用公共类所在命名空间,后调用类的公用函数。现介绍算术、字符串、转换、日期类中公有函数的使用方法。1.算术类:System.Math(见表3-4)算术类公用函数主要有:(1)三角函数:sin(x),cos(x),Tan(x),Asin(x),Acos(x)等(2)指数对数函数:Exp(x),pow(x,n),log(x),log10(x)等(3)最大小值函数:Max(x,y),Min(x,y),Ceiling(x),Floot(x)等(4)其它函数:Abs(x),Round(x,n),Sing(x)等3.2数据类型与表达式3.2.5C#中公共类及其67Math.函数(参数)函数作用Abs(x)|x|Acos(x)arccos(x)Asin(x)arcsin(x)Atan(x)arctg(x)Atan2(x,y)返回正切值为两个指定数字的商的角度BigMul(x,y)生成两个32位数字的完整乘积Ceiling(x)求≥x的最小整数Cos(x)cos(x),x为弧度单位Cosh(x)返回指定角度的双曲余弦值DivRem(x,y)返回两个数字的商,并将余数作为输出参数进行传递3.2数据类型与表达式表3-4
算术类函数表Math.函数(参数)函数作用Abs(x)|x|Acos(x68Exp(x)exFloor(x)求<=x的最大整数IEEERemainder返回一指定数字被另一指定数字相除的余数Log(x)Ln(x)Log10(x)Log(x)Max(x,y)Max(x,y)Min(x,y)Min(x,y)Pow(x,n)xnRound(x,n)对x第n位小数作四舍五入处理Sign(x)x的符号Sin(x)Sin(x),x为弧度单位Tan(x)tg(x),x为弧度单位表3-4
算术类函数表3.2数据类型与表达式Exp(x)exFloor(x)求<=x的最大整数IEEE69
【例3-3(1)】算术类公用函数示例。新建解决方案ex3_3.sln,在窗体Form1中添加2个按钮与2个文本框,如图3.8所示。3.2数据类型与表达式图3.8算术类公用函数示例【例3-3(1)】算术类公用函数示例。新建解决方案ex3_70双击按钮1,编写按钮1事件驱动程序:privatevoidbutton1_Click(objectsender,EventArgse){doublex1=-4.5,x2=4,x3=5.5,y1,y2,y3,y4,y5,y6;y1=System.Math.Abs(x1); //y1=|x1|=4.5y2=Math.Sin(Math.PI/2); //y2=sin(π/2)=sin(90)=1y3=Math.Asin(y2); //y3=arcsin(1)=π/2=1.5707y4=Math.Round(y3,2); //y4=round(1.5707,2)=1.57y5=Math.Sqrt(x2); //y5=sqrt(4)=2y6=Math.Sign(x1); //y6=sing(-4.5)=-1textBox1.Text="y1="+y1.ToString()+",y2="+y2.ToString()+",y3="+y3.ToString()+",y4="+y4.ToString()+",y5="+y5.ToString()+",y6="+y6.ToString();}3.2数据类型与表达式双击按钮1,编写按钮1事件驱动程序:3.2数据类型与表达式71【例3-3(2)】在窗体Form1中双击按钮2,编写按钮2事件驱动程序:
privatevoidbutton2_Click(objectsender,EventArgse){doublex1=4.5,x2=5.5,y1,y2,y3,y4,y5,y6,y7;y1=Math.Max(x1,x2); //y1=max(4.5,5.5)=5.5y2=Math.Min(x1,x2); //y2=min(4.5,5.5)=4.5y3=Math.Ceiling(x2); //y3=(6>=5.5)=6y4=Math.Floor(x2); //y4=(5<=5.5)=5y5=Math.Round(Math.Exp(1),3);//y5=ex=2.718y6=Math.Round(Math.Log(2.718));//y6=ln(2.718)=1y7=Math.Pow(2,3); //y7=23=8textBox2.Text="y1="+y1.ToString()+",y2="+y2.ToString()+",y3="+y3.ToString()+",y4="+y4.ToString()+",y5="+y5.ToString()+",y6="+y6.ToString()+",y7="+y7.ToString();}3.2数据类型与表达式【例3-3(2)】在窗体Form1中双击按钮2,编写按钮2事722.字符串类公用函数(方法):System.String(表3-5)(1)串连接、比较、串长等函数串连接运算符+:s3=s1+s2>s2;返回1串比较函数String.Compare(s1,s2)s1=s2;返回0<s2;返回-1测串s长度属性s.Length:返回串s长度,即字符个数。转大写方法s.ToUpper():将串s中字符转大写转小写方法s.ToLower():将串s中字符转小写3.2数据类型与表达式2.字符串类公用函数(方法):System.String(表73
String.函数(实参)函数作用Compare(s1,s2)按ASCII码比较字符串s1、s2的大小,s1>s2返回1,s1=s2返回0,s1<s2返回-1s.IndexOf(c)测串s中字符c的位置index,若s中无c则返回-1,有则返回indexs.Insert(n,s1)在串s的第n个位置处插入子串s1,返回插入后的串,但原串s不变!Join()在指定String数组的每个元素之间串联指定的分隔符String,从而产生单个串联的字符串。s.Remove(n,l)从串s的第n个位置开始删除l个字符,返回删除后的串,但原串s不变s.Replace(c1,c2)在串s中,用字符c2替换字符c1,返回替换后的串,但原串s不变s.Split标识此实例中的子字符串(它们由数组中指定的一个或多个字符进行分隔),然后将这些子字符串放入一个String数组中s.StartsWith(s1)当s=s1返回true,当s≠s1返回falses.Substring(n,l)从串s的第n个位置开始取出长度为l的子串,n=0~串长。s.ToLower()转小写s.ToUpper()转大写s.Trim(c1,c2)从串s开始和末尾删除与c1c2同名的字符,无参数则删除串s中前、后空格s.TrimEnd(c2)从串s的结尾删除与c2同名的字符,无参数则删除尾空格s.TrimStart(c1)从串s的开始删除与c1同名的字符,无参数则删除前空格s.Length串s的长度表3-5字符串类公用函数(表中s为字符串对象)String.函数(实参)函数作用Compare74【例3-4(1)】串连接、比较、串长函数应用示例。(1)新建解决方案ex3_4.sln,在窗体内添加7个文本框与3个按钮,如图3.9所示。3.2数据类型与表达式图3.9串连接、比较、串长函数应用示例【例3-4(1)】串连接、比较、串长函数应用示例。3.2数75(2)在Form1.cs文件中,定义全局字符串对象s1、s2、s3、s4、s5、s6。
Strings1="ABCF",s2="ABCD",s3,s4="ZhangYP",s5="LiuSW",s6="张飞飞";(3)双击按钮1,编写事件驱动程序如下:3.2数据类型与表达式(2)在Form1.cs文件中,定义全局字符串对象s1、s276privatevoidbutton1_Click(objectsender,EventArgse){s3=s1+s2; //串s1与s2连接到s3textBox1.Text="s1="+s1+",s2="+s2+",s3="+s3+",s4="+s4+",s5="+s5+",s6="+s6;intn=String.Compare(s1,s2); //串s1与s2比较:n=1
if(n==1)textBox2.Text="s1>s2";elseif(n==0)textBox2.Text="s1=s2";elsetextBox2.Text="s1<s2";textBox3.Text="s3.Length="+s3.Length.ToString();//测串s3长8
textBox4.Text="s3="+s3.ToLower();//s3转小写abcftextBox5.Text="s4="+s4.ToUpper(); //s4转大写ZHANGYP}单击按钮1,程序运行结果如图3.9所示。3.2数据类型与表达式privatevoidbutton1_Click(obj77(2)删除串中前后导字符与取子串方法s.Trim(c1,c2):删除串s中前导字符c1、后导字符c2方法s.TrimEnd(c2):删除串s后导字符c2方法s.TrimStart(c1):删除串s前导字符c1说明:若无c1、c2则删除串s中前、后导空格。s.Substring(n,l):从串s的第n个位置起获取长度为l的子串。3.2数据类型与表达式(2)删除串中前后导字符与取子串方法3.2数据类型与表达式78【例3-4(2)】删前后导字符、取子串方法的应用示例。双击按钮2,编写事件驱动程序如下:Strings1="ABCF",s2="ABCD",s3,s4="ZhangYP",s5="LiuSW",s6="张飞飞";privatevoidbutton2_Click(objectsender,EventArgse){textBox2.Text="s4="+s4.Trim();//删除s4前后导空格:”ZhangYP”textBox3.Text="s5="+s5.Trim('L','W');//删除s5前后导字符L、WtextBox4.Text="s4="+s4.TrimStart()+",s4="+s4.TrimEnd()+'!';textBox5.Text="s5="+s5.TrimStart('L');//删除s5前导字符L:"iuSW"
textBox4.Text="s6="+s6.Substring(0,1);//取s6第个汉字:"张";textBox5.Text="s5="+s5.Substring(1,3);//取s5的第~3个字符:"iuS"
}3.2数据类型与表达式【例3-4(2)】删前后导字符、取子串方法的应用示例。3.279图3.10删前后导字符、取子串方法的应用示例图3.11串比较、定位、插入、删除、替换方法的应用示例单击按钮2,程序运行结果如图3.10所示。单击按钮3,程序运行结果如图3.11所示。图3.10删前后导字符、取子串方法的应用示例图3.11串比较80(3)串比较、定位、插入、删除、替换方法串比较方法s.StartsWith(s1):当s=s1返回true, 当s≠s1返回false串定位方法s.IndexOf(c):若s中有c则返回c的序号Index 否则则返回-1插入子串方法s.Insert(n,s1):在s中第n个位置处插入子串s1删子串方法:s.Remove(n,l):删除s中第n个起长度为l的子串串替换方法:s.Replace(c1,c2):在s中用字符c2替换字符c13.2数据类型与表达式(3)串比较、定位、插入、删除、替换方法3.2数据类型与表81【例3-4(3)】串比较、定位、删除、替换方法的应用示例。双击按钮3,编写事件驱动程序如下:Strings1="ABCF",s2="ABCD",s3,s4="ZhangYP",s5="LiuSW",s6="张飞飞";privatevoidbutton3_Click(objectsender,EventArgse){textBox2.Text=s4.StartsWith(s3).ToString(); //s4与s3比较:falsetextBox3.Text=s5.IndexOf('L').ToString(); //返回s5中L的序号:0textBox4.Text="Add:s2="+s2.Insert(2,"FG")+",s2="+s2;
//s2中第个位置处插入字符串FG:"ABFGCD"textBox5.Text="Del:s1="+s1.Remove(2,2)+",s1="+s1;
//从s1中删除第个字符开始的长度为的子串:"AB"
textBox6.Text="Rep:s1="+s1.Replace('A','X')+",s1="+s1;}//用X替换s中的字符A:“XBCF"
3.2数据类型与表达式【例3-4(3)】串比较、定位、删除、替换方法的应用示例。3823.转换类公用函数(方法):System.Convert使用方法:Convert.To<数据类型>(表达式)作用:将表达式值转换成指定的数据类型。所有转换函数(方法)见表3-6。如:
floata,b,c;a=Convert.ToSingle(txt_a.Text);b=Convert.ToSingle(txt_b.Text);c=Convert.ToSingle(txt_c.Text);3.2数据类型与表达式3.转换类公用函数(方法):System.Convert3.83Convert.函数(表达式)转换函数(方法)作用ToBoolean(变量)将指定的值转换为等效的布尔值ToByte(变量)将指定的值转换为8位无符号整数ToChar(变量)将指定的值转换为Unicode字符ToDateTime(变量)将指定的值转换为DateTimeToDecimal(变量)将指定值转换为Decimal数字ToDouble(变量)将指定的值转换为双精度浮点数字ToInt16(变量)将指定的值转换为16位有符号整数ToInt32(变量)将指定的值转换为32位有符号整数ToInt64(变量)将指定的值转换为64位有符号整数ToSByte(变量)将指定的值转换为8位有符号整数ToSingle(变量)将指定的值转换为单精度浮点数字ToString(变量)将指定值转换为其等效的String表示形式ToUInt16(变量)将指定的值转换为16无符号整数ToUInt32(变量)将指定的值转换为32位无符号整数ToUInt64(变量)将指定的值转换为64位无符号整数表3-6转换类函数(方法)Convert.函数(表达式)转换函数(方法)作用ToBoo84【例3-5】整型、实型、字符型、日期型转换函数应用示例。新建解决方案ex3_5.sln,在窗体内添加标签、文本框与按钮控件,设计界面如图3.12所示。3.2数据类型与表达式图3.12程序设计界面【例3-5】整型、实型、字符型、日期型转换函数应用示例。新建85双击int按钮,编写整型数据类型转换事件驱动程序:
privatevoidbutton1_Click(objectsender,EventArgse){Int32a,b,c; //定义整型变量a,b,ca=Convert.ToInt32(textBox1.Text); //字符型转整型b=Convert.ToInt32(textBox2.Text); //字符型转整型c=a+b; //整型相加textBox3.Text=c.ToString(); //整型转字符型}3.2数据类型与表达式双击int按钮,编写整型数据类型转换事件驱动程序:3.286双击double按钮,编写实型数据类型转换事件驱动程序:
privatevoidbutton2_Click(objectsender,EventArgse){Doublex,y,z; //定义实型变量x,y,z
x=Convert.ToDouble(textBox4.Text); //字符型转实型y=Convert.ToDouble(textBox5.Text); //字符型转实型z=x+y; //实型相加textBox6.Text=z.ToString(); //实型转字符型}3.2数据类型与表达式双击double按钮,编写实型数据类型转换事件驱动程序:387双击String按钮,编写字符数据类型转换事件驱动程序:
privatevoidbutton3_Click(objectsender,EventArgse){Strings1,s2,s3; //定义字符型变量s1,s2,s3
s1=textBox7.Text;s2=textBox8.Text;s3=s1+s2; //串连接textBox9.Text=s3;}3.2数据类型与表达式双击String按钮,编写字符数据类型转换事件驱动程序:388双击Date按钮,编写日期数据类型转换事件驱动程序:
privatevoidbutton4_Click(objectsender,EventArgse){DateTimed1,d2; //定义日期型变量d1,d2
d2=Convert.ToDateTime(textBox10.Text);//字符转日期d1=Convert.ToDateTime(textBox11.Text);//字符转日期textBox12.Text=Convert.ToString(d2-d1);//数字转字符}3.2数据类型与表达式双击Date按钮,编写日期数据类型转换事件驱动程序:3.2894.日期与时间类函数与对象属性System.DateTime(表3-7)(1)获取今天日期:DateTime.Today;(2)获取当前日期与时间:DateTime.Now:(3)定义日期时间对象d:DateTimed=DateTime.Now;(4)获取d中的yyyy-mm-dd:d.Year,d.Month,d.day(5)获取d中的hh:mm:ss:d.Hour,d.Mi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 防水施工合同简单范本
- 二零二四年度股权转让与投资框架合同
- 医院精神科开放病房协议书范本(2篇)
- 卫生纸购销合同格式
- 解析指南利息借款合同的撰写技巧
- 面料采购销售合同
- 电梯设备安装合同协议范本
- 实习生实习保证协议
- 安全承诺我践行
- 医用防护服供货合同
- 2024年品牌授权合同:授权乙方使用甲方品牌进行产品生产与销售
- 2024年医院建设泥水工程合同
- 中国农业发展银行招聘考试笔试题库及答案解析
- 展览展示活动策划与执行标准
- (9篇)2024年《形势与政策》大作业:中华民族现代文明有哪些鲜明特质?建设中华民族现代文明的路径
- 大型机械运输服务方案
- 食品安全应急管理和突发事故报告制度
- 艺术学概论第一章-彭吉象
- 中药材现代仓储物流及交易中心融资投资立项项目可行性研究报告非常详
- 个人吊车维修合同模板
- 医院培训课件:《静脉中等长度导管临床应用专家共识》
评论
0/150
提交评论