第三章 C# 基础知识.

Slides:



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

C语言程序设计 主讲教师 :张群燕 电话:
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
第4章 條件判斷與迴圈 Java 2 程式設計入門與應用.
四資二甲 第三週作業 物件導向程式設計.
C#程序设计案例教程 第3章 程 序 结 构.
第一章 C语言概述 计算机公共教学部.
南京理工大学 第2章 Java基本语法 本章我们将学习Java编程语言的基本语法,包括变量、操作符、表达式、语句、字符串、数组、控制流以及如何使用帮助文档。 使用下面的编程框架: public class Test{ public static void main(String []args){ //以下添加测试代码.
C#程序设计 10软件1、2班 王槐彬 计算机工程学院.
第二章 JAVA语言基础.
第三章 控制结构.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
BLANK overview.
程式設計實作.
2.1 基本資料型別 2.2 變數 2.3 運算式與運算子 2.4 輸出與輸入資料 2.5 資料型別轉換 2.6 實例
控制流程 邏輯判斷 迴圈控制.
Class 2 流程控制-選擇敘述與迴圈.
.NET 程式設計入門(使用 C#) 講師:鄧智鴻.
第二章 C# 基础知识.
第四章 在 C# 中实现 OOP 概念.
C++Primer 3rd edition 中文版 Chap 5
常用工具类.
程式語言 -Visual Basic 變數、常數與資料型態.
流程控制結構 4-1 流程控制與UML活動圖 4-2 程式區塊與主控台基本輸入 4-3 條件控制敘述 4-4 迴圈控制敘述 4-5 巢狀迴圈
第3章 C 語言的基本知識.
程式敘述執行順序的轉移 控制與重複、方法 Lecturer:曾學文.
第3章 語法入門 第一個Java程式 文字模式下與程式互動 資料、運算 流程控制.
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
本單元介紹何謂變數,及說明變數的宣告方式。
程式設計實作.
第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 程式流程控制結構.
第三章 流程控制與例外處理 資訊教育研究室 製作 注意:本投影片僅供上課使用,非經同意,請勿散播或轉載。
2019/1/17 Java语言程序设计-程序流程 教师:段鹏飞.
C++语言程序设计 第二章 C++简单程序设计.
Java程序设计 第2章 基本数据类型及操作.
Ch02-基礎語法.
C#程序设计基础 第二章 数据类型.
類別與物件 I (Classes and Objects I)
第1章 概述 本章要点: C语言程序结构和特点 C语言程序的基本符号与关键字 C语言程序的编辑及运行 学习方法建议:
第3章 Java語法的JSP程式 3-1 Java語言的基礎 3-2 JSP程式的基本架構 3-3 Java的變數與資料型態
第二章Java基本程序设计.
第三课 标识符、关键字、数据类型.
C语言概述 第一章.
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基本語法介紹.
基本資料型態 變數與常數 運算子 基本的資料處理 授課:ANT 日期:2014/03/03.
C#快速導讀 流程控制.
判斷(選擇性敘述) if if else else if 條件運算子.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
第二章 Java基础语法 北京传智播客教育
第二章 Java基本语法 讲师:复凡.
Summary
Presentation transcript:

第三章 C# 基础知识

回顾 Visual Studio .NET 2003 是用于创建、编写、运行和调试程序的集成开发环境 用户使用 VS.NET 中的“起始页”可以自定义 IDE。IDE 还包含许多有用的链接,如最近的项目、下载和联机新闻组等 VS.NET 中的程序组成项目和解决方案。项目是一组相关的文件,解决方案则是一组相关的项目 Visual Studio .NET 为用户提供了用于浏览文件的各种窗口 “动态帮助”窗口为用户提供了与当前光标所在位置相关的文章

目标 在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 2 盐 5.4 胡椒粉 “Test” 糖 float Protected …… 糖 盐 胡椒粉 int float string

变量 2-2 变量中存储的值取决于该变量的类型 static void Main(string[] args) { // 声明布尔型、字符串型、整型、短整型和浮点型变量 bool test = true; short num1 = 19; int num2 = 14000; string val = "Jamie"; float num3 = 14.5f; // 显示变量值 Console.WriteLine ("布尔值 = " + test); Console.WriteLine ("短整型值 = " + num1); Console.WriteLine ("整型值 = " + num2); Console.WriteLine ("字符串值 = " + val); Console.WriteLine ("浮点值 = " + num3); } 变量中存储的值取决于该变量的类型

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

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

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

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

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

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

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

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

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

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

问题 下面的运算结果是什么?  1、 27 % 5 =  2、 ~11 = 2 -12 为什么?

运算符和表达式 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 += 5 15 -= 运算结果 = 操作数1 - 操作数2 X -= 5 X = X - 5 5 *= 运算结果 = 操作数1 * 操作数2 X *= 5 X = X * 5 50 /= 运算结果 = 操作数1 / 操作数2 X /= 5 X = X / 5 2 %= 运算结果 = 操作数1 % 操作数2 X %= 5 X = X % 5

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

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

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

算术运算符 将值赋给变量 在表达式中使用的算术运算符 static void Main(string[] args) { // x2 的系数 int coefficient1 = 2; // x 的系数 int coefficient2 = -7; // 二次方程的常数值 int constant = 3; // 存放表达式 b2 - 4ac 的值 double expression = 0; double x1 = 0; double x2 = 0; Console.WriteLine("二次方程为: {0}x2 + {1}x + {2}", coefficient1, coefficient2, constant); expression = Math.Sqrt(coefficient2 * coefficient2 - (4 * coefficient1 * constant)); x1 = ((-coefficient2) + expression) / (2 * coefficient1); x2 = ((-coefficient2) - expression) / (2 * coefficient1); 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 循环 2-1 车上有几个座位? 检查! 停车! while (seat <= 25) 是! 否!

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

do…while 循环 2-1 车上有几个座位? do 检查! 停车! while (seat <= 25) 是! 否!

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

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

foreach 循环 对班上的每一个学生 计算分数 教 室 计算总分

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

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

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

数组 3-2 78 (0) 67 (1) 89 (2) 92 (3) 66 (4) 学生分数的整数数组 数组位置 Joe Tom Lee Jim Bill 职员姓名的字符串数组 23.5 18.9 27.3 21.4 29.6 室温的浮点数组

数组 3-3 数组声明 初始化数组元素的循环 显示输出的循环 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 Holiday { public enum WeekDays Monday, Tuesday, Wednesday, Thursday, Friday } public void GetWeekDays (String EmpName, WeekDays DayOff) //处理工作日 static void Main() Holiday myHoliday = new Holiday(); myHoliday.GetWeekDays ("Richie", Holiday.WeekDays.Wednesday); Wednesday = 2

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

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

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