410 likes | 560 Views
第 6 章 Web 应用程序开发技术. 信息科技学院. 学习要点:. 1 .掌握 C#.NET 语言编程技术 2 .了解 ASP.NET 的运行模式 3 .熟悉 ASP.NET 的服务器对象. 6.1 C# 编程基础. 6.1.1 C #编程语言特点 6.1.2 第一个 C# 程序 6.1.3 C# 基本知识 6.1.4 条件控制语句 6.1.5 循环控制语句. 6.1.1 C #编程语言特点. 微软公司对 C# 的定义是:“ C# 是一种类型安全的、现代的、简单的,由 C 和 C++ 衍生出来的面向对象”的编程语言。
E N D
第6章 Web应用程序开发技术 信息科技学院
学习要点: • 1.掌握C#.NET语言编程技术 • 2 .了解ASP.NET的运行模式 • 3.熟悉ASP.NET的服务器对象
6.1 C#编程基础 • 6.1.1 C#编程语言特点 • 6.1.2 第一个C#程序 • 6.1.3 C#基本知识 • 6.1.4 条件控制语句 • 6.1.5 循环控制语句
6.1.1 C#编程语言特点 • 微软公司对C#的定义是:“C#是一种类型安全的、现代的、简单的,由C和C++衍生出来的面向对象”的编程语言。 • C#支持快速程序开发(Rapid Application Development)功能,使开发效率成倍增加,从而从繁锁、重复的劳动中解放出来。 • C#具有面向对象编程语言所具有的一切特性,如封装、继承、多态等特点。
6.1.2 第一个C#程序 • 输入以下代码: • using System; • using System.Collections.Generic; • using System.Text; • namespace ConsoleApplication1 • { • class Program • { • static void Main(string[] args) • { • Console.WriteLine("My first C#"); • Console.Read(); • } • } • }
6.1.3 C#基本知识 • 6.1.3.1 命名空间命名空间就好比在文件系统中一个文件夹容纳多个文件一样,所以命名空间可以被看作某些类的一个容器。因为 .NET有很多类,所以命名空间也是必要的。通过把不同的类放入不同的命名空间可以把相关的类组织起来,并且可以避免命名冲突。 • 命名空间声明包含关键字namespace后面接空间名与主体。
6.1.3 类和Main函数 • “Main”为程序的起点。“Main”前面是个名为“static”的修饰符。“static”修饰符表明该方法仅仅在该特定的类中工作,而不是在在该类的实例中工作。这是必需的,因为一旦程序启动后,并不存在对象的实例。每个方法必须有个返回值类型。本例中,返回值类型是“void”,它表明“Main”函数没有返回值。每个方法名的后面思考可以跟参数表,参数表包含的参数并用括号括起来,在此程序中“Main”没有参数。
6.1.3 类和Main函数 • class Program 句是使用一个类,它可以包含了程序所要用到的数据,和所要执行的方法的定义。类在程序中是用来描述对象的,本例中的类不包含数据,只包含一个方法。 • “Console” 是“System” 名称空间中的类。“WriteLine(...)”是“Console” 类中的方法,在使用“.”这个句点操作符来标记程序中的从属元素。本语句的作用是在控制台上显示“My first C#”
6.1.3 基本数据类型 • C#支持两种基本的类型:一种是值(value types),另一种是引用(reference types)。值包括简单类型(char、int和float)、枚举(enum)和结构(struct)、引用包括类(class)、界面(interface)、代表(delegate)和数组(array)。 • 值与引用不同之处在于:值直接存储它的数据内容,而引用存储对象的引用。值和引用的区别可以引出一个重要特性。值的变量和变量存储的数据是—一对应的,是唯一的。而引用则不然,引用中不同的变量可以引用同一个对象的实例。
6.1.3 基本数据类型 • 在变量命名时必须遵循以下规则: • 1. 变量名只能由字母、数字与下划线组成。 • 6.1. 变量名第一个字符必须以字母开始。 • 3. 变量名不能包括空格、标点符号与运算符等。 • 4. 变量名不能与C#程序中所使用的关键字相同。 • 5. 变量名不能与C#程序中所使用库函数名相同。 • 如:不可使用string using,因为using是关键字。
6.1.3 基本数据类型 • 1.整数型 • 有Sbyte、Byte、Short、Ushort、Int、Uint、Long、Ulong。 • 表2-1 整数类型列表 • 6.1.实数型 • 有float、double、decimal 等 • 详见 表2-2 实数类型列表
6.1.3 基本数据类型 • 3.字符型 • char 一个字符 • String 多个字符 • 以上三种类型是常用的,还有如下的类型: • 布尔型、常量、结构类型、枚举类型 • 数组类型 等 • 详见书第28至30页
6.1.3 基本数据类型 • string类型 • string是C#中的特殊类型之一,专门用于对字符串的操作,例如: • string a1="Shanghai"; • 也能够使用 + 号合并两个字符串,例如: • string a2= "Welcome"+" to Shanghai"; • 两个字符串的比较可以使用 = = 比较操作符,例如: • bool a=(s1= = s2);
6.1.3 基本数据类型 • 4.布尔型 • bool是用于表示“真”与“假”的。在C#中,布尔型变量只有true与false二种,能够将true或false赋值给一个布尔型变量,也可以将一个逻辑表达式赋给一个布尔型变量。 • 例如: • bool a=(100>110); • bool a=1; 是错误的,只能写成 • bool a=true;
6.1.3 基本数据类型 • 5.常量 • 与变量相反,常量的值上固定不变的,在程序的执行期间,常量的值是不会发生变化。可以在代码的任何位置使用常量来代替实际值,如定义一个常量Pi的值为3.14159265的语句可以这样编写: • public const double Pi=3.14159265
6.1.3基本数据类型 • 6.结构类型 • 结构类型(struct)是一种复合数据类型,用于将某些相关的数据组织到一个新的数据类型中。C#中,结构类型可以包含构造函数、析构函数、方法、属性、索引、操作符和嵌套类型等,结构类型与类是不同的,尽管看起来似乎很相同,但结构是一个值的类型,而类是一个引用类型,结构类型不支持继承。
6.1.3 基本数据类型 • 结构类型举例: • using System; • // 结构类型Employee • struct Student { • public string Name; // 学生姓名 • public uint Age; // 年龄 • public string Phone; // 联系电话 • public string Address; // 通讯地址 • }
6.1.3 基本数据类型 • class Test • { • public static void Main() • { • Student e; // 声明结构类型Student的变量e • e.Name="朱月妹"; • e.Age=21; • e.Phone="021-50214150"; • e.Address="上海市金海路2236号"; • Console.WriteLine("学生姓名={0},年龄={1},电话={2},通讯地址={3}", • e.Name,e.Age,e.Phone,e.Address); • Console.Read(); • } • }
6.1.3 基本数据类型 • 枚举类型 • using System; • enum WeekDay { • Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday • }; • class Sample • { • static void Main() • { • WeekDay day; // 声明WeekDay的变量day; • day=WeekDay.Tuesday; • Console.WriteLine("day的值是{0}",day); • } • }
6.1.3 基本数据类型 • 数组类型 • 可以在定义时直接赋值,例如定义一维整数数组,初值是1、2、3、4、5 : • int[] a2=new int[] {1,2,3,4,5}; • 也可以单单声明一个数组,如: • int[] a1=new int[10]; • 表示定义一个包含10个元素的一维数组。 • 也可以定义字符串数组,例如: • string[] a3={“A”,”B”,”C”,”D”,”E”}; • 也可以定义二维、三维数组,例如: • int[,] a3={{2,4},{3,5}};
6.1.3 注释与转义符 • 单行注释标记是“// ”,表明从该注释符号的开始处到该行结束处,都是注释部分。 • 如果要注释多行,可以以符号“/* ”开始,以符号“*/ ”“结束,其中所包含的全部是注释。也可以在多行注释符号中包含单行注释。 • 但是,不能在单行注释符号后面放上多行注释符号。程序编译时,将忽略掉注释部分。
6.1.3 操作符优先级 • 操作符的优先级控制表达式运算的顺序。例如,表达式“x+y*z”要按“x+(y*z)”顺序运算,因为*比+有更高的优先级,下表列出了C#的运算符,优先级和结合性 • 表2-4 C#的运算符,优先级和结合性列表 • 左结合即运算符是从左到右进行运算的。右结合是所有的运算是从右到左进行的,如赋值运算符,要等到其右边的计算出来之后,才把结果放到左边的变量中。
6.1.4 条件控制语句 • 无论何种程序语言,编写时最重要的就是要了解应用程序的控制结构,控制结构是通过控制语句来实观的,控制语句包括条件语句和循环语句。 • 1. C#主要有三种基本的条件语句:if语句、?条件和switch语句。
6.1.4 条件控制语句 • if 语句有3种: • (1) if(条件) • { • 语句; • }
6.1.4 条件控制语句 • (2) if (条件) • { • 语句; • } • esle • { • 语句; • }
6.1.4 条件控制语句 • (3) if(条件1) • { • 语句1; • } • elseif(条件2) • { • 语句2 • } • else • { • 语句3; • }
6.1.4 条件控制语句 • C#中还可以使用?条件控制语句,可以使用程序更加精练 • 条件?语句1:语句2 • 等价于 • if(条件1) • 语句1; • else • 语句2;
6.1.4 switch语句 • (3) switch语句 • witch() • { • case 常量表达式 1: • 语句1; • break: • case 常量表达式 2: • 语句3; • break: • default: • 语句 N • break; • }
6.1.4 switch语句 • switch语句按以下顺序执行: • 控制表达式求值;如果case标签后的常量表达式符合控制语句所求出的值,内含语句被执行;如果没有常量表达式符合控制语句,在default标签内的内含语句被执行;如果没有一个符合case标签,且没有default标签,控制转向switch语段结束。
6.1.5 循环控制语句 • for语句; • for each语句; • while语句; • do语句。
6.1.5 for控制语句 • 6.1.5.1 for语句 • 当预先知道一个内含语句要执行多少次时,可以使用for语句。当条件为真时,常规语法允许重复地执行相关语句。 • for语句格式如下: • for(初始化;条件;循环) • 语句
6.1.5 for控制语句 • public static void Main() • { • int a,b; • for(a=2;a<101;a++) • { • for(b=2;b<=a/2;b++) • { • if(a%b= =0) • break; • } • if(b > a/2) • Console.Write("{0} ",a); • } • Console.Read();
for each是一个特殊形式的for循环,在Vsual Basic语言中存在了很久的一个功能是通过使用For Each语句收集枚举,C#通过for each语句,并对每个元素执行内嵌语句。 6.1.5 for each语句
6.1.5 for each语句 • foreach 语句为数组或对象集合中的每个元素重复一个嵌入语句组。foreach 语句用于循环访问集合以获取所需信息,但不应用于更改集合内容以避免产生不可预知的副作用。该语句的形式如下: • foreach (type identifier in expression)
6.1.5 for each语句 • 内含循环变量由类型和标识符声明,且表达式与收集相对应。循环变量代表循环正在为之运行的收集元素。例: • using System; • namespace C3 • { • public class CommandLine2 • { • public static void Main(string[] args) • { • Console.WriteLine("Number of command line parameters = {0}", args.Length);
6.1.5 for each语句 • foreach(string s in args) • { • Console.WriteLine(s); • } • } • } • }
6.1.5 for each语句 • 编译后,在DOS界面中输入c3 Mary Back John”回车,即显示出如图画面:
6.1.5 while语句主要语句示例 • static void Main() • { • int s=0; • int a=1; • while(a<=100) • { • s+=a; • a++; • } Console.WriteLine("1+2+3....至100之和是{0}",s); • Console.Read();
6.1.5 do语句 • do也是循环语句,它与while语句十分相似,不同的是经过最初的循环之后,条件才被验证。 • do • { • 内含语句 • } • while(条件);
6.1.5 do语句 do语句保证内含语句至少被执行过一次,而且只要条件求值等于真,它们将继续被执行。可以通过使用break语句,迫使程序退出do循环。如果要跳过一次循环,可以使用continue语句。
思考练习题: • 1.C#是一种什么样的程序设计语言? • 2.C#与C++有何相同与不同之处? • 3.编制一程序,求出1-5的阶乘之和并显示。 • 4.统计输入字符串中字母与数字与其他字符的个数 • 5.编制一程序,运行后输入两个整数,求其最大公倍数、最小公约数。