第二章 C# 基础知识.

Slides:



Advertisements
Similar presentations
JAVA 编 程 技 术 主编 贾振华 2010年1月.
Advertisements

项目6 通用堆栈.
第 4 章 PHP 基本語法.
C语言程序设计 主讲教师 :张群燕 电话:
第4章 條件判斷與迴圈 Java 2 程式設計入門與應用.
四資二甲 第三週作業 物件導向程式設計.
C#程序设计案例教程 第3章 程 序 结 构.
南京理工大学 第2章 Java基本语法 本章我们将学习Java编程语言的基本语法,包括变量、操作符、表达式、语句、字符串、数组、控制流以及如何使用帮助文档。 使用下面的编程框架: public class Test{ public static void main(String []args){ //以下添加测试代码.
编译原理上机实习
第 5 章 流程控制 (一): 條件分支.
第二章 JAVA语言基础.
第三章 控制结构.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
Ch07 PHP程式基礎 網頁程式設計.
C# 程式設計 第一部分 第1-4章 C# 程式設計 - 南華大學資管系.
BLANK overview.
程式設計實作.
2.1 基本資料型別 2.2 變數 2.3 運算式與運算子 2.4 輸出與輸入資料 2.5 資料型別轉換 2.6 實例
控制流程 邏輯判斷 迴圈控制.
Class 2 流程控制-選擇敘述與迴圈.
.NET 程式設計入門(使用 C#) 講師:鄧智鴻.
第四章 在 C# 中实现 OOP 概念.
C++Primer 3rd edition 中文版 Chap 5
常用工具类.
第3章 變數、資料型別與運算子.
流程控制結構 4-1 流程控制與UML活動圖 4-2 程式區塊與主控台基本輸入 4-3 條件控制敘述 4-4 迴圈控制敘述 4-5 巢狀迴圈
程式敘述執行順序的轉移 控制與重複、方法 Lecturer:曾學文.
第3章 語法入門 第一個Java程式 文字模式下與程式互動 資料、運算 流程控制.
本單元介紹何謂變數,及說明變數的宣告方式。
JAVA程序设计 第5章 深入理解JAVA语言----补充.
程式設計實作.
第2章回顾 标识符:不用记,动手 关键字:if, else, switch, for, while, do, break, continue, void, …… 局部变量和成员变量 ①变量作用域 ②内存布局 基本数据类型 ①4类8种 ②互相转换 流程控制语句 ①分支 if……else, switch.
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
第三章 C++中的C 面向对象程序设计(C++).
2 C++ 的基本語法和使用環境 親自撰寫和執行程式是學好程式語言的不二法門。本章藉由兩個簡單的程式,介紹C++ 程式的基本結構和開發環境,讓初學者能逐漸建立使用C++ 的信心。
PHP 程式流程控制結構.
第三章 流程控制與例外處理 資訊教育研究室 製作 注意:本投影片僅供上課使用,非經同意,請勿散播或轉載。
第3章 變數、資料型別與運算子 3-1 變數與資料型別的基礎 3-2 變數的命名與宣告 3-3 資料型別 3-4 運算式與運算子
實作輔導 3 日期: 4/14(星期六) 09:10~12:00、13:10~16:00
3.1 数据类型 3.2 标识符与关键字 3.3 常量 3.4 变量 3.5 运算符与表达式 3.6 一个编程实例
2019/1/17 Java语言程序设计-程序流程 教师:段鹏飞.
Java程序设计 第2章 基本数据类型及操作.
Ch02-基礎語法.
C#程序设计基础 第二章 数据类型.
第三章 C# 基础知识.
第1章 概述 本章要点: C语言程序结构和特点 C语言程序的基本符号与关键字 C语言程序的编辑及运行 学习方法建议:
第3章 Java語法的JSP程式 3-1 Java語言的基礎 3-2 JSP程式的基本架構 3-3 Java的變數與資料型態
第二章Java基本程序设计.
第三课 标识符、关键字、数据类型.
C语言概述 第一章.
Java變數 2014/6/24.
C#程序设计基础 $3 成员、变量和常量.
第二章 Java基本语法 讲师:复凡.
C++语言程序设计教程 第2章 数据类型与表达式 第2章 数据类型与表达式 制作人:杨进才 沈显君.
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
第二章 Java语法基础.
Review 1~3.
目标 流程控制 字符串处理 C# 的类和对象 C# 访问修饰符 C# 构造函数和析构函数.
#include <iostream.h>
第二章 Java基本语法 讲师:复凡.
PPT注意事项: 当前PPT课件文件必须和提供的源代码文件夹“代码”在同一目录中即不要移动文件夹“代码”的默认位置。
JAVA 程式設計與資料結構 第三章 物件的設計.
變數、資料型態、運算子.
第2章 Java语言基础.
第6章 PHP基本語法介紹.
判斷(選擇性敘述) if if else else if 條件運算子.
第二章 Java基础语法 北京传智播客教育
第六章 复合数据类型 指针的声明与使用 数组的声明与使用 指针与数组的相互引用 字符串及相关库函数 new与delete
第二章 Java基本语法 讲师:复凡.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
Presentation transcript:

第二章 C# 基础知识

目标 在C#中定义变量和常量 使用C# 中的基本数据类型 理解装箱和拆箱的概念 使用C#中的运算符,选择结构和循环结构 定义和使用数组,了解结构和枚举 了解C#中的预处理指令 理解C#中常用的字符串处理方法

C# 数据类型 C# 数据类型 大小 默认值 示例 int 有符号的 32 位整数 int rating = 20; float int rating = 20; float 32 位浮点数,精确到小数点后 7 位 0.0F float temperature = 40.6F; byte 无符号的 8 位整数 byte gpa = 2; short 有符号的 16 位整数 short salary = 3400; long 有符号的 64 位整数 0L long population = 23451900; bool 布尔值,true 或 false False bool IsManager = true; string Unicode 字符串 - string color = “Orange” Char 单个 Unicode 字符 ‘\0’ char gender = ‘M’;

变量 2-1 变量用于存储特定数据类型的值 int Public string Private Protected float …… 语法: 访问修饰符 数据类型 变量名 int Public string Private Protected float ……

变量 2-2 变量中存储的值取决于该变量的类型 static void Main(string[] args) { // 声明布尔型、字符串型、整型、短整型和浮点型变量 bool t = false; short n1 = 30; int n2 = 1200; string str = "jeny"; float n3 = 23.1f; // 显示变量值 Console.WriteLine ("布尔值 = " + t); Console.WriteLine ("短整型值 = " + n1); Console.WriteLine ("整型值 = " + n2); Console.WriteLine ("字符串值 = " + str); Console.WriteLine ("浮点值 = " + n3); } 变量中存储的值取决于该变量的类型

常量 2-1 常量用于在整个程序中将数据保持同一个值 语法: const 数据类型 常量名 = 常量值;

常量 2-2 const 关键字用于声明常量 声明常量 在表达式中使用常量 static void Main(string[] args) { // PI常量PI const float _pi = 3.1415169F; // 由地球引力引起的加速度常量,单位为 cm/s*s const float _gravity = 980; // 钟摆的长度 int length = 60; // 钟摆的周期 double period = 0; // 钟摆周期的计算公式 period = 2 * _pi * Math.Sqrt(length / _gravity); Console.WriteLine ("钟摆的周期为 {0} 秒", period); } 声明常量 在表达式中使用常量

C# 的基本数据类型 3-1 C#中的数据类型分为两个基本类别 值类型 表示实际数据 只是将值存放在内存中 值类型都存储在堆栈中 int、char、结构 引用类型 表示指向数据的指针或引用 包含内存堆中对象的地址 为 null,则表示未引用任何对象 类、接口、数组、字符串

C# 的基本数据类型 3-2 static void Main(string[] args) { // 声明一个值类型的整型数据类型 int value = 130; Console.WriteLine("该变量的初始值为 {0}", value); Test(value); // 由于该数据类型属于值类型,所以将恢复其初始值 Console.WriteLine("该变量的值此时为 {0}", value); } static void Test(int byVal) int t = 20; byVal = t* 30; 将value的初始值传递给Test()方法 不反映已经改变的val值,而保留原始值 被传递的value在 Test() 方法内被改变

将 DataTypeTest 的引用传递给 Test() C# 的基本数据类型 3-3 class DataType { public int Value; } static void Main(string[] args) { DataType objTest = new DataType (); objTest.Value = 130; // 传递属于引用类型的对象 Test(objTest); // 由于该数据类型属于引用类型,所以会考虑新处理的值 Console.WriteLine("变量的值为 {0}", objTest.Value); } static void Test(DataType data) int t = 20; data.Val = temp * 30; 将 DataTypeTest 的引用传递给 Test() 反映已经改变的value值 被传递的value在Test()中改变

装箱和拆箱 2-1 装箱是将值类型转换为引用类型 拆箱是将引用类型转换为值类型 利用装箱和拆箱功能,可通过允许值类型的任何值与 Object 类型的值相互转换,将值类型与引用类型链接起来

装箱和拆箱 2-2 装箱 拆箱 int value = 130; object o = value; 值类型 int value = 130; object o = value; Console.WriteLine (“对象的值 = {0}", o); 引用类型 拆箱 值类型 int value = 130; object o = value; int number = (int) o; Console.WriteLine ("num: {0}", number); 引用类型 值类型 注:被装过箱的对象才能被拆箱

Result = number 10 * 运算符和表达式 9-1 运算符 运算符和表达式 表达式 操作数 变量 变量 常量 操作数和运算符的组合 操作数

运算符和表达式 9-2 算 术 运 符 类别 运算符 说明 表达式 + 执行加法运算(如果两个操作数是字符串,则该运算符用作字符串连接运算符,将一个字符串添加到另一个字符串的末尾) 操作数1 + 操作数2 - 执行减法运算 操作数1 - 操作数2 * 执行乘法运算 操作数1 * 操作数2 / 执行除法运算 操作数1 / 操作数2 % 获得进行除法运算后的余数 操作数1 % 操作数2 ++ 将操作数加 1 操作数++或++操作数 -- 将操作数减 1 操作数-- 或--操作数 ~ 将一个数按位取反 ~操作数

运算符和表达式 9-3 类别 运算符 说明 表达式 三元运算符(条件运算符) ?: 检查给出的第一个表达式 expression 是否为真。如果为真,则计算 operand1,否则计算 operand2。这是唯一带有三个操作数的运算符 表达式? 操作数1: 操作数2

运算符和表达式 9-4 类别 运算符 说明 表达式 比较运算符 > 检查一个数是否大于另一个数 操作数1 > 操作数2 < 检查一个数是否小于另一个数 操作数1 < 操作数2 >= 检查一个数是否大于或等于另一个数 操作数1 >= 操作数2 <= 检查一个数是否小于或等于另一个数 操作数1 <= 操作数2 == 检查两个值是否相等 操作数1 == 操作数2 != 检查两个值是否不相等 操作数1 != 操作数2

运算符和表达式 9-5 类别 运算符 说明 表达式 成员访问运算符 . 用于访问数据结构的成员 数据结构.成员 赋值运算符 = 给变量赋值 操作数1 = 操作数2 逻辑运算符 && 对两个表达式执行逻辑“与”运算 操作数1 && 操作数2 || 对两个表达式执行逻辑“或”运算 操作数1 || 操作数2 ! 对两个表达式执行逻辑“非”运算 ! 操作数 ( ) 将操作数强制转换为给定的数据类型 (数据类型) 操作数

运算符和表达式 9-6 赋值运算符 (=) 变量 = 表达式; 例如: 身高 = 177.5; 体重 = 78; 性别 = “m”;

运算符和表达式 9-7 一元运算符 (++/--) Variable ++; 相当于 Variable = Variable + 1; 一元运算符 (++/--) Variable ++; 相当于 Variable = Variable + 1; Variable --; Variable = Variable - 1;

运算符和表达式 9-8 运算符 计算方法 表达式 求值 结果(设 X = 10) += 运算结果 = 操作数1 + 操作数2 X+= 2 12 -= 运算结果 = 操作数1 - 操作数2 X-= 2 X=X-2 8 *= 运算结果 = 操作数1 * 操作数2 X*= 2 X=X*2 20 /= 运算结果 = 操作数1 / 操作数2 X/= 2 X=X/2 5 %= 运算结果 = 操作数1 % 操作数2 X%= 2 X=X%2

运算符和表达式 9-9 C# 运算符的优先级 优先级 说明 运算符 结合性 1 括号 ( ) 从左到右 2 自加/自减运算符 ++/-- 从右到左 3 乘法运算符 除法运算符 取模运算符 * / % 4 加法运算符 减法运算符 + - 5 小于 小于等于 大于 大于等于 < <= > >= 6 等于 不等于 = != 7 逻辑与 && 8 逻辑或 || 9 赋值运算符和快捷运算符 = += *= /= %= -= C# 运算符的优先级

前置和后置自加/自减运算符 表达式 类型 计算方法 结果(假定 num1 的值为 10) num2 = ++num1; 前置自加 前置自减 num1 = num1 - 1; num2 = 9; Num1 = 9; num2 = num1--; 后置自减

问题 true 计算结果: 1、 int i = 0; bool result = true; result = (++i) + i == 2?true:false; result = true

算术运算符 将值赋给变量 在表达式中使用的算术运算符 static void Main(string[] args) { // x1 的系数 int co1 = 3; // x2 的系数 int co2 = -5; // 二次方程的常数值 int constant = 8; // 存放表达式 b2 - 4ac 的值 double exp = 0; double x1 = 0; double x2 = 0; Console.WriteLine("二次方程为: {0}x2 + {1}x + {2}", co1, co2, constant); exp = Math.Sqrt(co2 * co2 - (4 * co1 * constant)); x1 = ((-co2) + exp) / (2 * co1); x2 = ((-co2) - exp) / (2 * co1); Console.Write("x = {0:F2} ", x1); Console.Write(" 或 "); Console.WriteLine("x = {0:F2}", x2); } 将值赋给变量 在表达式中使用的算术运算符

选择结构 3-1 选择结构用于根据表达式的值执行语句 if … else 语法: if (<条件>) { <语句块> } else

选择结构 3-2 switch…case 语法: switch (选择变量) { case 值1: … break; case 值2: ... default : }

选择结构 3-3 switch…case 的其他特性 各个 case 标签不必连续,也不必按特定顺序排列 default 标签可位于 switch…case 结构中的任意位置 default 标签不是必选的,但使用 default 标签是一个良好的编程习惯 每两个 case 标签之间的语句数不限

循环结构 循环结构用于对一组命令执行一定的次数或反复执行一组命令,直到指定的条件为真。 循环结构的类型 while 循环 do 循环 for 循环 foreach 循环

while 循环 while 循环反复执行指定的语句,直到指定的条件为真 语法 : while (条件) { // 语句 } break 语句可用于退出循环 continue 语句可用于跳过当前循环并开始下一循环

do…while 循环 do…while 循环与 while 循环类似,二者区别在于 do…while 循环中即使条件为假时也至少执行一次该循环体中的语句。 语法 : do { // 语句 } while (条件)

for 循环 for 循环要求只有在对特定条件进行判断后才允许执行循环 这种循环用于将某个语句或语句块重复执行预定次数的情形 语法 : { //语句 }

foreach 循环 2-1 语法: foreach 循环用于遍历整个集合或数组 foreach (数据类型 元素(变量) in 集合或者数组) { //语句 }

foreach 循环2-2 为所有计数器设置初始值 接受输入 使用了所有输入的字符 之后,循环自动终止 对输入的每一个 字符都进行循环 static void Main(string[] args) { // 存放字母的个数 int Letters = 0; // 存放数字的个数 int Digits = 0; // 存放标点符号的个数 int Punctuations = 0; // 用户提供的输入 string instr; Console.WriteLine("请输入一个字符串 "); instr = Console.ReadLine(); // 声明 foreach 循环以遍历输入的字符串中的每个字符。 foreach(char ch in instr) // 检查字母 if(char.IsLetter(ch)) Letters++; // 检查数字 if(char.IsDigit(ch)) Digits++; // 检查标点符号 if(char.IsPunctuation(ch)) Punctuations++; } Console.WriteLine(“字母个数为: {0}", Letters); Console.WriteLine(“数字个数为: {0}", Digits); Console.WriteLine(“标点符号个数为: {0}", Punctuations); 为所有计数器设置初始值 接受输入 使用了所有输入的字符 之后,循环自动终止 对输入的每一个 字符都进行循环

数组 2-1 数组是同一数据类型的一组值 数组属于引用类型,因此存储在堆内存中 数组元素初始化或给数组元素赋值都可以在声明数组时或在程序的后面阶段中进行 语法: 数据类型[元素个数] 数组名称; int[6] arrayHere;

数组 2-2 数组声明 初始化数组元素的循环 显示输出的循环 static void Main(string[] args) { int count; Console.WriteLine(“请输入准备登机的乘客人数 "); count=int.Parse(Console.ReadLine()); // 声明一个存放姓名的字符串数组,其长度等于乘客人数 string[] names = new string[count]; // 用一个 for 循环来接受姓名 for(int i=0; i<count; i++) Console.WriteLine(“请输入第 {0} 个乘客的姓名 ",i+1); names[i]=Console.ReadLine(); } Console.WriteLine(“已登机的乘客有: "); // 用 foreach 循环显示姓名 foreach(string disp in names) Console.WriteLine("{0}", disp); 数组声明 初始化数组元素的循环 显示输出的循环

所有与 Student 关联的详细信息都可以作为一个整体进行存储和访问 结构 自定义数据类型 可以在其内部定义方法 无法实现继承 属于值类型 主要结构: struct student { public int stud_id; public string stud_name; public float stud_marks; public void show_details() //显示学生详细信息 } 数据成员 struct structEx { public int structDataMember; public void structMethod1() //structMethod1 实现 } 方法 所有与 Student 关联的详细信息都可以作为一个整体进行存储和访问

枚举 枚举(Enum,Enumerator 的缩写)是一组已命名的数值常量 用于定义具有一组特定值的数据类型 枚举以 enum 关键字声明 public class ColorTest { public enum Color Red, Blue, Green, Black, Yellow } public void SetColor (Color c) //处理颜色 static void Main() ColorTest c = new ColorTest(); c.SetColor (ColorTest.Color.Red); Red = 0

枚举(续) C# 中的枚举包含与值关联的数字 默认情况下,将 0 值赋给枚举的第一个元素,然后对每个后续的枚举元素按 1 递增 在初始化过程中可重写默认值 public enum Color { Red=1, Blue=2, Green=3, Black=4, Yellow=5 }

C#的预处理指令2-1 预处理指令是C#编译器在词法分析阶段读取的语句。这些语句可以指示编译器包含或不包含某些代码,甚至可以根据预处理指令的值终止编译。 预处理指令由字符#标识,并且字符#必须是该行的第一个非空字符。 预处理指令最常见的三个用途是:完成条件编译、增加诊断来报告错误和警告、定义代码域。

C#的预处理指令2-2 C#预处理命令 说明 #define #undef 用于定义一个符号,后取消对一个符号得定义。如果定义了一个符号,那么在#if指令中使用时这个符号计算为true。 #if #elif #else #endif 类似C#中得if、elseif和else语句 #line 改变行好序列,并且可以标识该行得源文件 #region #endregion 用于指定一个代码块,使用Visual studio.NET的大纲特性时可以展开或折叠这个代码块 #error 导致编译器报告一个致命错误 #warming 导致编译器报告一个警告,并继续处理

String常用方法 回顾:Java 中常用的字符串处理方法? C# 中常用的字符串处理方法: Equals() :比较两个字符串的值是否相等 Join():连接字符串 Split():分割字符串 IndexOf():查找某个字符在字符串中的位置 SubString():从字符串中截取子字符串 ToLower():将字符串转换成小写形式 Trim():去掉字符串两边的空格 …… 这些方法大多数在Java课程中已经讲过了

String 常用方法应用1 已有如下代码,按要求增加功能: static void Main(string[ ] args) { string email; // 电子邮件地址 Console.WriteLine("请输入你的邮箱:"); email = Console.ReadLine(); Console.WriteLine("你的邮箱是 {0}", email); } 需实现的功能: 1、 输入 yes 时,程序循环执行 2、 兼容以下各种形式 yes(YES、yes、 YeS …..) 3、 提取邮箱的用户名 该示例主要是帮助学员回顾在Java中已经学习过的字符串处理方法

String 常用方法应用2 输入一个字符串,输出每个单词,重新用下划线连接输出 使用 Split() 方法分割字符串 使用 Join() 方法连接字符串 该示例使用的两个方法是新接触的,要比上一个例子讲得更详细

代码分析 关键代码: Split()方法——分割字符串 splitStrings = inputString.Split(' '); 返回值为 字符串数组 字符串变量名 参数:分隔符(char型) Join()方法——连接字符串 // 将分割后的字符串使用下划线连接在一起 joinString = string.Join("_", splitStrings); 参数1:连接符 参数2:字符串数组 返回字符串 静态方法

Format() 方法 两种输出字符串的方式: string name = "李四"; Console.WriteLine(“My name is " + name + ",I am" + 18); string name = "李四"; Console.WriteLine(" My name is {0} ,I am {1} ", name,18); 格式字符串 变量列表 Format()方法是字符串这部分的重点 String 类的 Format() 方法用来格式化字符串

代码分析 关键代码: record = string.Format( "姓名:{0}\n出生年月:{1}\n身高:{2}\n name, birthday, height, bloodType, planet, favourFood); Console.WriteLine("\n这是你的个人档案:"); Console.WriteLine(record); 参数与 WritLine() 方法相似

Format() 的语法小结 string myString = string.Format("格式字符串", 参数列表); 包括占位符{x} 代表 主要让学员理解占位符和参数列表的对应关系 string myString = string.Format ("{0} 乘以 {1} 等于 {2} ", 2, 3, 2*3); 2乘以3等于6 格式字符串 参数列表

小结 补充下划线处的占位符,输出五个成语 string yi = "一"; string er = "二"; string san = "三"; string word = string.Format( "独 _ 无 _,_ 心 _ 意,垂涎 _ 尺,略知 _ _,举_ 反 _", yi, er, san); Console.WriteLine(word); string yi = "一"; string er = "二"; string san = "三"; string word = string.Format( "独{0}无{1},{2}心{1}意,垂涎{2}尺,略知{0}{1},举{0}反{2}", yi, er, san); Console .WriteLine(word);

总结 2-1 变量是存放特定数据类型的值的容器,而常量也存放特定数据类型的值,但常量在整个程序中都保持一致 装箱是将值类型转换为引用类型,而拆箱则是将引用类型转换为值类型 C# 提供了以下类型的选择结构: if if…else switch…case

总结 2-2 C# 提供了以下类型的循环结构: while 循环 do 循环 for 循环 foreach 循环 数组是可将同一类型的多个数据元素作为单个实体存放的一种数据结构 C# 中的结构可以在其内部定义方法并可包括一个构造函数 枚举是一组已命名的数值常量