鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所

Slides:



Advertisements
Similar presentations
主要内容 Java 的常用包 Java 的常用包 “ == ” 和 “ equals ” 的用法 “ == ” 和 “ equals ” 的用法 基本数据类型与引用类型 基本数据类型与引用类型 String 和 StringBuffer String 和 StringBuffer 对象的克隆( clone.
Advertisements

第3-2章 类与 对象 Java类的特性 教学内容: 类的私有成员与公共成员 方法的重载 构造方法 实例成员与静态成员 重点: 重载 难点:
单元二:面向对象程序设计 任务二:借书卡程序设计.
第三讲 面向对象(上).
JAVA 编 程 技 术 主编 贾振华 2010年1月.
项目7 面向对象高级.
项目6 通用堆栈.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
四資二甲 第三週作業 物件導向程式設計.
面向对象的程序设计(一).
南京理工大学 第2章 Java基本语法 本章我们将学习Java编程语言的基本语法,包括变量、操作符、表达式、语句、字符串、数组、控制流以及如何使用帮助文档。 使用下面的编程框架: public class Test{ public static void main(String []args){ //以下添加测试代码.
C#程序设计 10软件1、2班 王槐彬 计算机工程学院.
第二章 JAVA语言基础.
類別與物件 Class & Object.
C++程序设计 王希 图书馆三楼办公室.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
第5章 面向对象程序设计 本章要点 5.1 面向对象程序设计概述 5.2 Java语言的面向对象程序设计 5.3 方法的使用和对象数组
走向C++之路 WindyWinter WindyWinter感谢诸位前来捧场。
C#程序设计 c# programming 泛型 C#程序设计课程组.
第八章 C#高级编程.
物件導向程式設計 (Object-Oriented rogramming)
.NET 程式設計入門(使用 C#) 講師:鄧智鴻.
第二章 C# 基础知识.
第四章 在 C# 中实现 OOP 概念.
常用工具类.
程序與函數的類別方法 目的:模組化程式設計 方法:由上而下設計 注意事項:(1)獨立性 (2)結合問題 (3)子問題間的溝通.
本單元介紹何謂變數,及說明變數的宣告方式。
第三章 C#面向对象初级编程 面向对象得程序设计越来越受到编程人员的喜爱。类和对象是面向对象程序设计中的重要概念。封装性、继承性和多态性是面向对象的特点,本章旨在全面说明C#编写面向对象程序设计的方法。
程式設計實作.
抽象类 File类 String类 StringBuffer类
第2章回顾 标识符:不用记,动手 关键字:if, else, switch, for, while, do, break, continue, void, …… 局部变量和成员变量 ①变量作用域 ②内存布局 基本数据类型 ①4类8种 ②互相转换 流程控制语句 ①分支 if……else, switch.
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
C#程序设计基础 $3 成员、变量和常量.
第4章 数组和集合 4.1 一维数组 4.2 二维数组 4.3 Array类 4.4 交错数组 4.5 ArrayList类
C#面向对象程序设计 $7 继承和多态性.
第6章 继承和接口设计 6.1 继 承 6.2 多态性 6.3 抽象类 6.4 接口 6.5 接口在集合排序中的应用.
例外處理與 物件序列化(Exception Handling and Serialization of Objects)
3.1 数据类型 3.2 标识符与关键字 3.3 常量 3.4 变量 3.5 运算符与表达式 3.6 一个编程实例
第9讲 Java的继承与多态(一) 类的继承 子类的创建 方法覆盖.
Java程序设计 第2章 基本数据类型及操作.
Ch02-基礎語法.
C/C++/Java 哪些值不是头等程序对象
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C#程序设计基础 第二章 数据类型.
第六章 属性、索引器、委托和事件.
類別與物件 I (Classes and Objects I)
第三章 C# 基础知识.
劉崇汎 崑山科技大學 電腦與通訊系 DLL的建立與引用 劉崇汎 崑山科技大學 電腦與通訊系
第二章 Java基本语法 讲师:复凡.
C#程序设计基础 $3 成员、变量和常量.
第二章 Java基本语法 讲师:复凡.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
第四章 类 4.1 基础知识 4.2 构造函数 4.3 方法 4.4 属性与索引 4.5 String类
第三章 数据抽象.
第二章 Java语法基础.
第二章 类型、对象、运算符和表达式.
Review 1~3.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
第 9 章 建構函式與解構函式.
授课老师:龚涛 信息科学与技术学院 2016年3月 教材:《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
#include <iostream.h>
第二章 Java基本语法 讲师:复凡.
方法進階及物件導向基礎 Lecturer: 楊昌樺.
Class 2005/05/25.
JAVA 程式設計與資料結構 第三章 物件的設計.
第2章 Java语言基础.
對於成員(member)存取權的限制 成員的資料被毫無限制的存取,任誰都可以指定任意值給成員,Java語言為了防止這種現象的產生,規定:有一種成員的資料不能任由類別外部的任何人隨意存取。
基本資料型態 變數與常數 運算子 基本的資料處理 授課:ANT 日期:2014/03/03.
變數與資料型態  綠園.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
Presentation transcript:

鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所 C#核心命名空間 鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所

Math 類別 公用常數 公用函式 E PI 三角函數: Sin、Cos、Tan、Asin、Acos、Atan、Atan2 指數與對數:Log、Log10、Exp、Pow 代數:Abs、Ceiling、Floor、Round、Max、Min、Sign、Sqrt 雙曲函數:Sinh、Cosh、Tanh

Random 類別 公用建構式 公用函式 Random() Random(int seed) virtual int Next() virtual double NextDouble() virtual int Next(int maxValue) virtual int Next(int minValue, int maxValue)

UsingRandom.Program (1/2) using System; namespace UsingRandom { /* * 模擬擲骰子以示範Random類別之使用 * skj 5/21/2007 */ class Program static void Main(string[] args) Random dice = new Random(777); const int MAX_DICE_VALUE = 6; int[] accumulation = new int[MAX_DICE_VALUE];

UsingRandom.Program (2/2) for (int i = 0; i < MAX_DICE_VALUE; ++i) { accumulation[i] = 0; } const int N = 12000; int faceValue; for (int i = 0; i < N; ++i) { faceValue = dice.Next(1, MAX_DICE_VALUE+1); accumulation[faceValue-1]++; Console.WriteLine( "點數" + (i+1) + " 出現" + accumulation[i] + " 次");

練習 將0~1分為10個區間,檢查Random.NextDouble產生的亂數是否均勻分佈於這10個區間。

實值資料型別對應結構 byte : Byte int : Int32 long : Int64 float : Single double : Double bool : Boolean char : Char decimal : Decimal

數值結構欄位及函式 欄位 MaxValue MinValue 函式 Parse()

浮點數結構欄位與函式 const double NaN const double NegativeInfinity const double PositiveInfinity bool IsInfinity(double d) bool IsNaN(double d) bool IsNegativeInginity(double d) bool IsPositiveInfinity(double d)

CheckingInfinityAndNaN.Program (1/2) using System; namespace CheckingInfinityAndNaN { /* * 示範檢驗Infinity及NaN的方法 * skj, 5/21/2007 */ class Program static void Main(string[] args) Console.WriteLine("1.0/0.0為無限大? " + Double.IsInfinity(1.0/0.0)); Console.WriteLine("1.0/0.0非一數值? " + Double.IsNaN(1.0/0.0));

CheckingInfinityAndNaN.Program (2/2) Console.WriteLine("0.0/0.0為無限大? " + Double.IsInfinity(0.0/0.0)); Console.WriteLine("0.0/0.0非一數值? " + Double.IsNaN(0.0/0.0)); }

字元結構函式 bool IsDigit(char c) bool IsLetter(char c) bool IsLetterOrDigit(char c) bool IsPunctuation(char c) bool IsUpper(char c) bool IsLower(char c) char ToLower(char c) char ToUpper(char c)

練習 檢驗你的電腦中int、long、float、double等型別的數值範圍

Array 類別 提供建立、管理、搜尋和排序陣列的方法 做為所有陣列的基底類別

UsingArray.Program (1/3) using System; namespace UsingArray { /* 示範System.Array類別之函式的使用 * skj, 5/22/2007 */ class Program static void Main(string[] args) const int N = 6; string[] strArray = new string[N]; strArray[0] = "this"; strArray[1] = "is";

UsingArray.Program (2/3) strArray[2] = "a"; strArray[3] = "test"; strArray[4] = "array"; strArray[5] = "!!"; PrintArray(strArray, "原始陣列"); Array.Reverse(strArray); PrintArray(strArray, "反轉後陣列"); Array.Sort(strArray); PrintArray(strArray, "排序後陣列"); string[] anotherArray = new string[N]; Array.Copy(strArray, anotherArray, N); PrintArray(strArray, "複製陣列"); }

UsingArray.Program (3/3) static void PrintArray(string[] strArray, string arrayName) { Console.WriteLine("以下為{0} 內之元素", arrayName); foreach (string str in strArray) Console.Write(str + "\t"); } Console.WriteLine();

PassingArrayCopy.Program (1/4) using System; namespace PassingArrayCopy { /* * 示範Array.Copy的使用時機 * skj 5/22/2007 */ class Program static void Main(string[] args) Test test = new Test(); int[] a = test.GetArray(); PrintArray(a); test.ModifyArray();

PassingArrayCopy.Program (2/4) PrintArray(a); test.ResetArray(); a = test.GetArrayCopy(); test.ModifyArray(); } static void PrintArray(int[] a) { foreach (int ai in a) Console.Write(ai + "\t"); Console.WriteLine();

PassingArrayCopy.Program (3/4) public class Test { private int[] a; public Test(){ a = new int[3]; ResetArray(); } public int[] GetArray(){ return a; public void ModifyArray(){ a[0]++; a[1]++; a[2]++;

PassingArrayCopy.Program (4/4) public void ResetArray() { a[0] = 1; a[1] = 2; a[2] = 3; } public int[] GetArrayCopy() int[] b = new int[3]; Array.Copy(a, b, 3); return b;

複製建構式 (1/3) class Person { private string name; private int age; // Copy constructor. public Person(Person previousPerson) name = previousPerson.name; age = previousPerson.age; } // Instance constructor. public Person(string name, int age) { this.name = name; this.age = age;

複製建構式 (2/3) // Get accessor. public string Details { get return name + " is " + age.ToString(); }

複製建構式 (3/3) class TestPerson { static void Main() // Create a new person object. Person person1 = new Person("George", 40); // Create another new object, copying person1. Person person2 = new Person(person1); System.Console.WriteLine(person2.Details); }

CopyConstructor.Program (1/3) using System; namespace CopyConstructor { /* * 示範複製建構式之使用 * skj 5/24/2007 */ class Program static void Main(string[] args) double a = 5.0; Square sq0 = new Square(a); Square sq1 = sq0; Console.WriteLine("正方形sq1邊長為" + sq1.accessA);

CopyConstructor.Program (2/3) sq0.accessA = a + 1.0; Console.WriteLine("正方形sq1邊長為" + sq1.accessA); Square sq2 = new Square(sq0); Console.WriteLine("正方形sq2邊長為" + sq2.accessA); }

CopyConstructor.Program (3/3) public class Square { private double a; public Square(double a) { this.a = a; } public Square(Square sq){ a = sq.a; public double accessA get { return a; } set { a = value; }

練習 改寫Test類別,增加複製建構式,並予測試