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

bài giảng c# và ứng dụng pct - nguyễn hòang hà

367 1,2K 1

Đ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

Định dạng
Số trang 367
Dung lượng 3,97 MB

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ản hóa việc phát triển và thực thi các ứng dụng trên Internet, 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

thực thi mã lệnh và tất cả các tác vụ liên quan đến nó: 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ạn như 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

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

public

protected private

int string

Trang 22

Các kiểu số nguyên

Tên Kiểu trong

CTS Mô tả Vùng biểu diễn (min:max) sbyte System.SByte Số nguyên có dấu 8-bit -2 7 :2 7 -1

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

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ằng kiểu ký tự được gán bằng cách đóng trong cặ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

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

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 27

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

Trang 29

Console WriteLine ( "less than 10" );

Trang 30

Câu lệnh 2;

break ;

case n :

Câu lệnh n;

break ; [ default :

Câu lệnh n+1;

break;

] }

Trang 31

Console WriteLine ( "another value" );

break;

}

Trang 32

dsbt 2

T

F

Trang 33

Console WriteLine ( s );

}

}

Trang 34

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 38

Câu lệnh doclass Test

Trang 39

Cú pháp của for each

Trang 41

string SubString( int vt , int n)

int IndexOf( string s)

int LastIndexOf( string s)

int CompareTo( string s)

bool Equals ( string s)

bool Contains( string s)

string Replace ( string chuoicu, string chuoimoi)

string Remove( int vt , int n)

Trang 42

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 43

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 45

Console WriteLine ( students [ i ]); }

}

}

Trang 46

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 47

Console WriteLine ();

} }

}

Trang 49

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

Trang 50

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 51

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 52

• 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ần tử);

Trang 53

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 54

ArrayList a = new ArrayList();

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

Trang 55

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 56

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 57

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

• Close(): đóng file

• Write

• WriteLine: ghi file

static void Main(string[] args)

Trang 59

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 60

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 65

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 66

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 67

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ị trong mộ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ựng ngầm định

• Một lớp có thể có nhiều hàm dựng nhưng khác nhau

về số lượng hoặc kiểu của tham số

Trang 68

Ví d v ụ về ề Constructors

using System;

public class Person

{

string Ten,dc=“Khong co” ;

public Person ( string Ten )

}

Trang 70

Private Constructors

• Được sử dụng khi một lớp chỉ có các thành viên tĩnh và lớp không cần phải tạo ra.

public class MathConstant

// MathConstant m = new MathConstant();

Console WriteLine ( MathConstant Pi );

}

}

Trang 71

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 72

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 73

• 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 74

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 75

Ví dụ

namespace Vidu

{

class Class_Lop{ }

Public class SinhVien

{ 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 76

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 77

Ví dụ trường tĩnh

using 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 (); n1.Dem Console WriteLine ( List Dem );

List n2 = new List ();

Console WriteLine ( List Dem );

}

}

Trang 78

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 79

• 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 80

Ví d v ụ 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 81

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 83

Tham chi u ref and out [1] ếu ref and out [1]

public void GetPoint ( int x , int y )

{

x = this x ;

y = this y ; }

}

Trang 84

Tham chi u ref and out [2] ếu ref and out [1]

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 85

Tham chi u ref and out [3] ếu ref and out [1]

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

x = this x ;

y = this y ; }

}

Trang 86

Tham chi u ref and out [4] ếu ref and out [1]

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 87

Tham chi u ref and out [5] ếu ref and out [1]

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

x = this x ;

y = this y ; }

}

Trang 88

Tham chi u ref and out [6] ếu ref and out [1]

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 89

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 90

Variable-Length Parameter Lists [2]using System ;

public class MyClass

Trang 91

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 92

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

– 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

– Xay dung ham: double Tk(String ht): : Ham tra ve dtb cua sv co ho ten =ht

Bài tập

Trang 94

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 95

class LopCon : LopCha

{ Cai dat lop con}

Trang 96

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 );

}

}

Ngày đăng: 03/07/2014, 08:12

HÌNH ẢNH LIÊN QUAN

Bảng này chưa có quan hệ với nhau. - bài giảng c# và ứng dụng pct - nguyễn hòang hà
Bảng n ày chưa có quan hệ với nhau (Trang 314)
• Nạp  2  bảng  PhanLoai  và  Sach  vào  DataSet ds - bài giảng c# và ứng dụng pct - nguyễn hòang hà
p 2 bảng PhanLoai và Sach vào DataSet ds (Trang 315)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w