1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng lập trình .dotNET doc

372 4,8K 11
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Bài Giảng Lập Trình .NET
Trường học Trường Đại Học Công Nghệ Thông Tin - Đại Học Quốc Gia Hà Nội
Chuyên ngành Lập trình .NET
Thể loại Bài giảng
Thành phố Hà Nội
Định dạng
Số trang 372
Dung lượng 3,53 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Kiến trúc của .NET Framework•FCLFramework Class Library là thư viện kiểu dữ liệu có thể tái sử dụng gồm các class, structure, … dành cho các ứng dụng thực thi trong .NET.. Các bước thực

Trang 2

CHƯƠNG I

Trang 3

Giới thiệu

• NET Framework là môi trường tích hợp để đơn giảnhóa việc phát triển và thực thi các ứng dụng trênInternet, desktop và các thiết bị di động

Trang 4

Kiến trúc của NET Framework

Trang 5

Kiến trúc của NET Framework

•CLR (Common Language Runtime): Quản lý sựthực thi mã lệnh và tất cả các tác vụ liên quan đếnnó: biên dịch, quản lý bộ nhớ, bảo mật, quản lýtuyến đoạn

Mã lệnh thực thi trong CLR chia làm 2 loại:

- mã được quản lý

- mã không được quản lý là mã lệnh không cài đặt

những yêu cầu để thực thi trong CLR – chẳng hạnnhư COM hoặc các thành phần dựa trên Windows API

Trang 6

Kiến trúc của NET Framework

•FCL(Framework Class Library ) là thư viện kiểu dữ liệu có thể tái sử dụng (gồm các class, structure, …) dành cho các ứng dụng thực thi trong NET

•Tất cả các ngôn ngữ hỗ trợ NET Framework đều sử dụng thư viện lớp dùng chung này.

Trang 7

Các bước thực hiện của Ct

Code Executed

R U N T I M E

Trang 8

Các bước thực hiện của Ct

truyền thống

• Các ngôn ngữ trước đây có chương trình dịch riêng và có môi trường chạy riêng của nó.

• Trong NET, chương trình dịch dịch mã nguồn vào một "Intermediate Language (IL)“ và runtime được thay thế bởi CLR (Common Language Runtime).

Trang 9

Các bước thực hiện của các ct NET

MSIL + Metadata

CLR Machine

code

Code executed

C ác chương trình NET được dịch 2 lần: lần đầu chậm, lần thứ 2 tương

đối nhanh hơn.

Trang 10

Các bước thực hiện của các ct NET

• Chương trình nguồn trước hết sẽ được biên

dịch và đóng gói thành một khối gọi là assembly (là tập hợp các thành phần được đóng gói trong

file exe hoặc dll) Khối này sẽ chứa các mã lệnh

ngôn ngữ trung gian (IL) và các metadata mô tả

thông tin cần thiết cho sự hoạt động của khối

• Mỗi khi có yêu cầu thực thi assembly nói trên,

CLR sẽ dùng trình biên dịch JIT (Just-in-Time)

của môi trường thực thi để chuyển đối IL chứa

trong nó sang dạng mã lệnh cụ thể của máy khi

ứng dụng thực sự thực thi

Trang 11

Các bước thực hiện của các ct NET

Trang 12

Các kiểu dữ liệu cơ sở của CTS

Trang 14

Nội dung

• Giới thiệu

• Môi trượng soạn thảo và chạy

• Biến và các kiểu dữ liệu

• Các cấu trúc điều khiển: if, switch

• Các cấu trúc lặp; for, while, do while, foreach

• Mảng, ArrayList, File văn bản.

• Bài thực hành

Trang 16

GIỚI THIỆU VỀ C#

- “bài toán” cần giải quyết là một solution.

- Một solution bao gồm một hoặc nhiều project.

- Một solution, nếu có nhiều project thì nên được tạo ra trong một thư mục riêng để có thể chứa các project trong nó

Trang 17

Cú pháp đơn giản của 1 Project

Trang 18

Dịch và chạy 1 chương trình C# trên Console

• Soạn mã: Người sử dụng có thể dùng bất kỳtrình soạn thảo nào như:

– Notepad

– Microsoft Visual Studio

– ….

• Lưu lại thành file có phần mở rộng cs

• Start|Programs|Microsoft NET Framework SDK v2.0|SDK Command Prompt

– Gõ csc [ổ đĩa:]\[ đường dẫn]\<tên file cs> cần dịch

– Gõ tên file cần chạy

• Chú ý: file csc.exe định vị ở:

– "C:\Program Files\Microsoft Visual Studio 8\ SDK\ v2.0\“ đối với 2005

– C:\WINNT\Microsoft.NET\Framework\v1.1.4322 đối với 2003

Trang 19

Ví dụ chương trình đơn giản

Trang 20

Sử dụng IDE Microsoft Visual Studio 2005

• Khởi động Microsoft Visual Studio 2005 File Æ

New Æ Project để tạo mới một project

Trang 21

• Khai báo theo cú pháp:

Mức truy cập Kiểu Tên biến

Trang 22

short System.Int16 Số nguyên có dấu 16-bit -2 15 :2 15 -1

int System.Int32 Số nguyên có dấu 32-bit -2 31 :2 31 -1

long System.Int64 Số nguyên có dấu 64-bit -2 63 :2 63 -1

byte System.Byte Số nguyên không dấu 8-bit 0:2 8 -1

ushort System.UInt16 Số nguyên không dấu 16-bit 0:2 16 -1

uint System.UInt32 Số nguyên không dấu 32-bit 0:2 32 -1

ulong System.UInt64 Số nguyên không dấu 64-bit 0:2 64 -1

Trang 23

Kiểu số thực, Boolean, ký tự

• Kiểu số thực: float, double

• Kiểu Boolean: bool: true|false

• Kiểu ký tự: char

– Biểu diễn 1 ký tự 16-bit (Unicode) Các hằngkiểu ký tự được gán bằng cách đóng trongcặp dấu nháy đơn, ví dụ 'A'

Trang 24

Kiễu dữ liệu tham chiếu được định nghĩa sẵn

Tên Kiểu CTS Mô tả

object System.Object Kiểu dữ liệu gốc, mọi kiểu dữ liệu khác

trong CTS đều kế thừa từ đây (kể cả các kiểu dữ liệu giá trị)

string System.String Chuỗi ký tự Unicode

Trang 26

Các phương thức trên chuỗi

using System;

class ThaoTacTrenString

{static void Main(string[] args)

{ string st1= " Nguyen Anh Trung ";

string st2 = "le Tien Tang";

st1 = st1.Trim();

Console.Write( "Chieu dai chuoi la {0}:\n", st1.Length);

Console.WriteLine( "Ky tu tai chi so thu 3 la {0}", st1[3]);

string ten1=st1.Substring(st1.LastIndexOf(' ')+1);

string ten2 = st2.Substring(st2.LastIndexOf( " ")+1, st2.Length - st2.LastIndexOf(" ")-1);

Console.WriteLine( "Ten2=ten1:{0}",ten2.Equals(ten1));

Console.WriteLine( "so sanh ten1 voi ten 2: {0}",

ten1.CompareTo(ten2));

Console.ReadLine();

}

}

Trang 27

Các phương thức trên chuỗi

using System;

class ThaoTacTrenString

{

static void Main(string[] args)

{ string st1= "Nguyen Anh Trung ";

Console.WriteLine( "Tim chuoi con {0}", st1.Contains("yen")); st1=st1.Replace("Nguyen", "Le");

} ….

Trang 28

Indexing (cho array và các indexers) []

Thông tin về kiểu Sizeof(Kiểu)

Điều khiển Overflow exception checked unchecked

Trang 29

Luồng điều khiển của chương trình

Trang 30

Console WriteLine ( "less than 10" );

Trang 32

Console WriteLine ( s );

}

}

Trang 33

C âu lệnh For [2]

Phạm vi của biến đếm: chỉ có tác dụng trong vòng lặp

using System ;//V í dụ lỗi

s += i ; }

Console.WriteLine(i); //Error statement

Console WriteLine ( s );

} }

Trang 34

while ( i <= 10 ) {

Trang 38

Console WriteLine ( students [ i ]); }

}

}

Trang 39

int[][] a = new int[ 5 ][];

for (int i = 0 ; i < a Length ; i ++) {

a [ i ] = new int[ i + 1 ];

for (int j = 0 ; j < i + 1 ; j ++) {

a [ i ][ j ] = j ; }

}

Trang 40

Console WriteLine ();

} }

}

Trang 42

Khởi tạo mảng 1 chiều [6]

Console WriteLine ( i );

}

Trang 43

Khởi tạo mảng 2 chiều [7]

int[,] b = new int[ 2 , 3 ] {{ 1 , 2 , 3 },{ 4 , 5 , 6 }};

foreach (int i in b ) {

Console WriteLine ( i );

}

Trang 44

Khởi tạo mảng jagged [8]

//jagged array

int[][] c = new int[ 2 ][]

{ new int[ 2 ] { 0 , 1 }, new int[ 3 ] { 2 , 3 , 4 }};

for (int i = 0 ; i < c Length ; i ++)

for (int j = 0 ; j < c [ i ] Length ; j ++) {

Console WriteLine ( c [ i ][ j ]);

} }

}

Trang 45

• Là mảng động, mỗi phần tử là một object

• Namespace: System.Collections

• Khai báo:

ArrayList <tenmang> = new ArrayList();

ArrayList <tenmang> = new ArrayList(Số phầntử);

Trang 46

Các phương thức trên ArrayList

• Add(object): Chèn thêm 1 phần tử vào cuối

mảng

• Clear(): Xoá tất cả các phần tử

• Contains(object): Tìm object trong mảng

• IndexOf(object): Tìm chỉ số của object trong

mảng (-1)

• RemoveAt(index): Xoá phần tử thứ index

• Thuộc tính: count: cho biết số phần tử trong

mảng

• …

Trang 47

ArrayList a = new ArrayList();

a.Add( "main");a.Add('m');a.Add(5);a.Add( DateTime.Now); test t = new test(); a.Add(t);

for(int i=0;i<a.Count;i++)

if (a[i] is test) { test tt =(test) a[i];

Trang 48

Thao tác trên File

• Namespace: System.IO;

• Các đối tượng thao tác trên File: Stream,

StreamReader, StreamWriter, FileStream

• Thao tác trên file văn bản: StreamReader,

StreamWriter

• Mở file văn bản để đọc:

StreamReader <tênbiến> = new StreamReader(“dd"[,Encoding]);

• Mở file văn bản để ghi:

StreamWriter <tênbiến> = new StreamWriter (“dd“[, bool append][,Encoding])

Trang 49

Các phương thức trên StreamReader

• Close(): đóng file

• Peek(): Trả về ký tự tiếp theo, -1;:EOF

• Read(): Đọc ký tự tiếp theo

• ReadBlock(…): Đọc dãy các byte

• ReadLine(): Đọc 1 dòng

• ReadToEnd(): Đọc hết file

• …

Trang 50

Các phương thức trên StreamWriter

• Close(): đóng file

• Write

• WriteLine: ghi file

static void Main(string[] args)

Trang 52

Bài tập thực hành

• Thực hành các bài 1,2,3,4,5 trong giáo trình

• Giải pt bằng Gaussian:

– Vào ma trận hệ số A, vector B

– Giải thuật để chuyển ma trận về tam giác trên:

for(i = 0; i < n-1; i++)/* Trừ hàng đầu tiên */

Trang 53

Bài tập thực hành về ArrrayList

• Nhập vào danh sách họ tên và đtb của 1 lớp, số lượng

sv không hạn chế, quá trình nhập dừng khi nhập họ tên rỗng:

Ht1 đtb1 Ht2 dtb2 … …

• Hiển thị họ tên và Đtb của các sinh viên lên lớp

•Nhập vào 1 họ tên, tìm xem có sv nào có họ tên này hay không

•Tính Trung bình cộng của ĐTB

•Xoá các sinh viên có đtb ra khỏi mảng

Trang 58

protected Biến hoặc phương thức chỉ có thể truy xuất từ bên

trong kiểu dữ liệu mà nó thuộc về, hoặc các kiểu dữ liệu dẫn xuất

protected

internal

Biến hoặc phương thức có thể được truy xuất trong phạm vi assembly hiện tại, hoặc từ các kiểu dữ liệu dẫn xuất từ kiểu dữ liệu chứa nó

private Biến hoặc phương thức chỉ có thể được truy xuất từ

bên trong kiểu dữ liệu mà nó thuộc về

Trang 59

Class_b t2 = new Class_b();

Class_b.Class_b1 t21 = new Class_b.Class_b1();

Class_b.Class_b2 t22= new Class_b.Class_b2(); }

}

Trang 60

Hàm dựng (Constructors)

• Là một loại đặc biệt của phương thức trong một lớp

• Được gọi khi một lớp được tạo

• Thường được sử dụng để khởi tạo các giá trị trongmột lớp

• Tên trùng với tên lớp

• Không trả về giá trị

• Nếu không tạo ra hàm dựng C# sẽ tạo ra hàm dựngngầm định

• Một lớp có thể có nhiều hàm dựng nhưng khácnhau về số lượng hoặc kiểu của tham số

Trang 61

Ví dụ về Constructors using System;

public class Person

{

string Ten,dc=“Khong co”;

public Person (string Ten )

}

Trang 63

//MathConstant m = new MathConstant();

Console WriteLine ( MathConstant Pi );

}

}

Trang 64

Static Constructors

• Được gọi tự động (chỉ 1 lần) trước khi thực thể đầu tiên của đối tượng được tạo hoặc các thành viên tĩnh được tham chiếu.

• Không có tham số

Trang 65

public class Bus

{

static Bus() // Static constructor:

{ System Console.WriteLine( "Ham tinh duoc goi"); }

public static void Drive()

{ System Console.WriteLine( "Phuong thuc Drive duoc goi"); } }

class TestBus

{ static void Main()

{ Bus.Drive();

Bus b = new Bus();

Bus c= new Bus(); }

}

Trang 66

• Destructors trong C# gọi là bộ thu gom rác Garbage Collectors.

• Bộ thu gom rác sẽ giải phóng bộ nhớ khi

đối tượng không còn yêu cầu hoặc tham

chiếu.

• Destructors khai báo như sau:

~<tên hàm huỷ>()//giống tên lớp {

//các cài đặt của người lập trình }

Trang 67

Các trường (Fields)

• Lưu trữ giá trị

• Cú pháp: <Mứctruycập> <Kiểu> <tênfields>

• Mức truy cập: public, private, protected,

internal, protected internal

• Kiểu:

– Kiểu giá trị được định nghĩa sẳn (int,char …)

– Kiểu tham chiếu: lớp, struct, mảng, chuỗi,…

Trang 68

{ public string hoten;

private bool GioiTinh;

protected DateTime NgaySinh;

internal float[] DsDiem = new

static void Main(string[] args) {

SinhVien sv =new SinhVien(); sv.hoten = "Nguyen Nam";

//sv.GioiTinh = false;

//sv.NgaySinh = DateTime.Parse("12/10/79"); sv.DsDiem[0] = 5;

}

} }

Trang 69

Trường tĩnh [1]

• Được khai báo trong 1 lớp

• Khi sử dụng không cần phải tạo ra lớp chứa trường tĩnh

• Khi khai b áo chỉ cần dùng static trước tên biến

• Truy xuất: <tênlớp>.tên trường tĩnh

Trang 70

Ví dụ trường tĩnhusing System ;

public class List

{

public static int Dem = 0 ;

public List ()//H àm dựng: được gọi khi tạo lớp

Console WriteLine ( List Dem );

List n1 = new List ();

Console WriteLine ( List Dem );

List n2 = new List ();

Console WriteLine ( List Dem );

}

}

Trang 71

Trường chỉ đọc

• Sử dụng readonly khi khai báo

• Chỉ có thể gán giá trị khi khai báo hoặc trong hàm dựng

class test

{

public readonly int a = 10;

public readonly int b;

Trang 72

• Khai báo hàm dùng bổ từ const.

• Không thể thay đổi giá trị của hằng.

• Hằng sử dụng như trường tĩnh.

Trang 73

Ví dụ về Constants

using System ;

public class Gender

{

public const int male = 1 ;

public const int female = 2 ;

Console WriteLine ( "male = {0}" ,Gender male);

Console WriteLine ( "female = {1}" , Gender female ); }

}

Trang 74

Phương thức(method)

• Là tập hợp các câu lệnh

• Được khai báo trong lớp hoặc cấu trúc, phải chỉ rõ mức truy cập, tên, kiểu trả về,danh sách các tham số Nếu không có tham số phải có cặp dấu ngoặc

• Phương thức không trả về giá trị có kiểu trả về là void

• Dùng return để trả về giá trị của phương thức

Trang 76

Tham chiếu ref and out [1]

public void GetPoint (int x ,int y )

{

x = this x ;

y = this y ; }

}

Trang 77

Tham chiếu ref and out [2]

class Test

{

public static void Main ()

{

int x = 0 ; //int x; > Error

int y = 0 ; //int y; > Error

Point p = new Point ( 100 , 200 );

Trang 78

Tham chiếu ref and out [3]

public void GetPoint ( ref int x , ref int y ) {

x = this x ;

y = this y ; }

}

Trang 79

Tham chiếu ref and out [4]

class Test

{

public static void Main ()

{

int x = 0 ; // int x; > Error

int y = 0; // int y; > Error

Point p = new Point ( 100 , 200 );

p GetPoint ( ref x , ref y );

Trang 80

Tham chiếu ref and out [5]

public void GetPoint ( out int x , out int y ) {

x = this x ;

y = this y ; }

}

Trang 81

Tham chiếu ref and out [6]

Point p = new Point ( 100 , 200 );

p GetPoint (out x ,out y );

•Không cần khởi tạo giá trị cho các tham số

•Khi xây dựng và gọi phương thức phải dùng out

Trang 82

Danh sách các tham số có chiều dài thay đổi [1]

• C# cho phép khai báo 1 tham số nhưng khi gọi phương thức thì số lượng tham số có thể thay đổi

• Ví dụ như WriteLine(…)

• Sử dụng từ khoá params để khai báo tham

số có chiều dài thay đổi.

Trang 83

Variable-Length Parameter Lists [2]

Trang 84

Variable-Length Parameter Lists [3]

class Test

{

public static void Main ()

{

MyClass a = new MyClass ();

Console WriteLine ( a Sum ( 1 , 2 ));

Console WriteLine ( a Sum ( 1 , 2 , 3 ));

a Write ( "John Smith" , 100 );

}

}

6 John Smith 100

Trang 85

• Xây dựng lớp Sinhvien bao gồm: ht,dc, mảngchứa điểm thi và các hàm sau.

– Xây dựng hàm dựng:

• public Sinhvien(string ht, string dc, int somon) – Xây dựng hàm:

• public void Nhapdiem() để nhập vào danh sách điểm của 1 sv

• public double Dtb(): Tính ĐTB của 1 sv

• public void XuatSv(): Xuất các thông tin của 1 sv

• Xây dựng lớp Lop để:

– Nhập vào danh sách các SV (Dùng ArrayList)

– Xuất ra thông tin các SV

– In ra họ tên các sinh viên lên lớp

– Xây dựng hàm để tìm ĐTB cao nhất và thấp nhất (Dùng ref hoặc out)

Bài tập

Trang 87

N ội dung

• Giới thiệu

• Hàm nạp chồng (Overloading)

• Hàm ghi đè (Overriding)

• Hàm ảo (Virtual Functions)

• Lớp trừu tượng (Abstract Classes)

• Lớp Sealed

• Giao diện

Trang 88

class LopCon : LopCha

{ Cai dat lop con}

Trang 89

Ví dụ về kế thừa [1]

using System ;

public class Person

{

protected string name ; //protected Field

public Person (string name ) //Function as a Constructor {

this name = name ; }

public void SayName () //Member function

{

Console WriteLine ( "Person name is {0}" , name );

}

}

Trang 91

Ví dụ về kế thừa [3]

• Person là lớp cơ sở (lớp cha).

• Employee là lớp dẫn xuất (lớp con) từ lớp

Person , vì thế:

– Nó kế thừa tất cả các dữ liệu và hàm thành

viên của lớp cha (trừ private)

– Constructors không tự động kế thừa lên lớp

cha, do đó người sử dụng phải chỉ rõ:

public Employee ( string name ) :base ( name ){…}

Trang 93

Hàm nạp chồng (Overloading )

• Hàm nạp chồng là hàm trùng tên trong một lớpnhưng khác nhau về số lượng và kiểu của cáctham số

• Không nạp chồng dựa vào tên tham số và kiểu trả

về của các tham số

Trang 94

} public double Dt(double a,double b)

{ return a*b;

} public double Dt(double a,double b,double c)

{ double p=(a+b+c)/2;

return Math.Sqrt(p*(p-a)*(p-b)*(p-c));

}

Trang 95

}

Trang 96

ErrorClass err = new ErrorClass ();

Console WriteLine ( err Increase ( 10 )); }

}

Ngày đăng: 11/03/2014, 18:20

HÌNH ẢNH LIÊN QUAN

• Tạo ra Truy vấn chọn: đưa 2  bảng PhanLoai và Sach tham gia vào truy vấn - Bài giảng lập trình .dotNET doc
o ra Truy vấn chọn: đưa 2 bảng PhanLoai và Sach tham gia vào truy vấn (Trang 287)
Ví dụ: Hiển thị dữ liệu của 2  bảng: Phân loại,Sách - Bài giảng lập trình .dotNET doc
d ụ: Hiển thị dữ liệu của 2 bảng: Phân loại,Sách (Trang 305)
• Nạp 2  bảng PhanLoai và Sach vào DataSet ds - Bài giảng lập trình .dotNET doc
p 2 bảng PhanLoai và Sach vào DataSet ds (Trang 320)

TỪ KHÓA LIÊN QUAN