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

Ngôn ngữ lập trình c

409 275 0

Đ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 409
Dung lượng 7,37 MB

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

Nội dung

PHẦN I: Giới thiệu VC#• Mở đầu • Biến, toán tử, biểu thức • Viết phương thức và áp dụng phạm vi • Các câu lệnh lựa chọn • Phát biểu lặp • Quản lý lỗi và ngoại lệ... Viết chương trình đầu

Trang 2

Tài liệu tham khảo

• Nguyễn Thiên Bằng, Phạm Ngọc

Thạch, Hoàng Đức Hải Từng bước

học lập trình Visual C#.net Nhà xuất

bản lao động xã hội

• Phương Lan, Phạm Hữu Khang Kỹ

thuật lập trình ứng dụng C#.net toàn tập Tập 1,2,3 Nhà xuất bản lao

động xã hội.2002

• E-books

Trang 3

Nội dung môn học

Trang 4

PHẦN I: Giới thiệu VC#

• Mở đầu

• Biến, toán tử, biểu thức

• Viết phương thức và áp dụng phạm vi

• Các câu lệnh lựa chọn

• Phát biểu lặp

• Quản lý lỗi và ngoại lệ

Trang 5

PHẦN II: Ngôn ngữ C#

• Đối tượng và lớp

• Tham chiếu và tham trị

• Các kiểu giá trị với bảng liệt kê vàcấu trúc

Trang 6

PHẦN III: Tạo Component

• Truy xuất các thuộc tính

• Bộ chỉ mục

• Ủy nhiệm hàm và sự kiên

• Nạp chồng toán tử

Trang 9

Chương 1: Mở đầu

Nguyễn Hồng Phương

Trang 10

Nội dung chương 1

• Khởi động Microsoft Visual Studio

Trang 11

Khởi động Microsoft Visual Studio NET

• VS.NET là môi trường lập trình cung cấp rất nhiều công cụ cần thiết cho việc xây dựng các dự án lớn và nhỏ

• Cài đặt:

– Cài IIS

– Bộ VS.NET 2003 (3 đĩa CD)1→3→1→2 – Bộ VS.NET 2005 (4 đĩa CD)

– Cài bộ MSDN

Trang 12

Khởi động Microsoft Visual Studio NET

Trang 13

Khởi động Microsoft Visual Studio NET

Trang 14

Viết ứng dụng dòng lệnh với C#

Trang 15

Viết ứng dụng dòng lệnh với C#

Trang 16

Các tập tin trong khung cửa

• TextHello.sln: tập tin giải pháp cấp trên

cùng Nó gồm 1 hoặc nhiều tập tin dự án.

• TextHello.csproj: tập tin dự án của C# Nó gồm 1 hoặc nhiều tập tin nguồn (viết cùng

1 ngôn ngữ).

• Class1.cs: tập tin nguồn của C#.

• AssemblyInfo.cs:tập tin nguồn khác, dùng thêm một số thuộc tính vào chương trình.

• App.ico: icon xuất hiện trên thanh tác vụ

Trang 17

Viết chương trình đầu tiên

• Tập tin Class.cs định nghĩa một lớp

có tên Class1 chứa một phương thức Main

• Chú ý: C# là ngôn ngữ phân biệt

kiểu chữ

• Ta sẽ viết dòng chữ “Hello BK” ra

màn hình Console

Trang 18

Viết chương trình đầu tiên

Trang 19

Viết chương trình đầu tiên

Trang 20

Viết chương trình đầu tiên

Trang 21

Sử dụng không gian tên

(Namespace)

• Tranh chấp tên xảy ra khi:

– Chương trình lớn, chứa nhiều mã nguồn

– Sử dụng thư viện do tổ chức khác viết

• Chương trình sẽ rắc rối và khó bảo trì

• Hướng giải quyết ?

– Thêm tiền tố ứng với modul con

– Sử dụng không gian tên

Trang 22

Sử dụng không gian tên

(Namespace)

• Ví dụ: Thay vì tạo ra một lớp có tên

TextHelloGreeting , ta tạo lớp Greeting trong

không gian tên TextHello :

Trang 23

Sử dụng không gian tên

(Namespace)

• Tham khảo đến lớp Greeting : TextHello.Greeting

• Nên định nghĩa các lớp trong các không gian tên.

• VS.net sử dụng tên dự án làm không gian tên cấp ngoài cùng

• net Framework SDK cũng tuân theo quy định này

Ví dụ: lớp Console thuộc không gian tên System Viết tên tham khảo đầy đủ: System.Console Nếu

đã chỉ thị using System ở đầu tập tin thì không cần

viết Sysem nữa.

Trang 24

Tạo tài liệu dùng XML và các ghi chú

• Viết chương trình thường phải đi kèm tài

liệu

• Tình trạng không đồng bộ giữa tập tin nguồn

và tập tin tài liệu

• Bộ khung net đặc tả một bộ các tên thẻ

nhúng trực tiếp vào trong ghi chú mã nguồn

• Nó cũng cung cấp tùy chọn biên dịch dòng lệnh /doc để sinh tài liệu mã nguồn dạng

XML

Trang 25

Tạo tài liệu dùng XML và các ghi chú

• Trong cửa sổ Solution Explorer, chọn

Class1.cs, chọn Properties, đổi tên file

Class1.cs thành Greeting.cs

Trang 26

Tạo tài liệu dùng XML và các ghi chú

Trong file Greeting.cs gõ vào:

Trang 27

Tạo ứng dụng Windows Forms

• Tạo một form có chứa một ô text box, một nhãn và một nút nhấn.

• Nhập tên vào ô văn bản Khi nút được

nhấn, lời chào sẽ được hiển thị trên nhãn.

• Tiến hành:

– Chọn New Project từ trình đơn File

– Chọn Visual C# và template là Windows

Application

– Nhập tên dự án là WinFormHello

Trang 28

Tạo ứng dụng Windows Forms

Trang 29

Tạo ứng dụng Windows Forms

• Kéo thả các điều khiển lên trên form.

• Đặt tên lần lượt là:txtName, lblHello và

Trang 30

Tạo ứng dụng Windows Forms

• Chạy chương trình, kết quả là:

Trang 31

Chương 2:

Biến, toán tử và biểu thức

Nguyễn Hồng Phương Khoa CNTT - ĐHBKHN

Trang 33

Định danh

• Là tên để nhận ra các phần tử trong các chương trình

• Tuân theo nguyên tắc cú pháp:

Trang 34

Từ khóa

• C# có sẵn 76 từ khóa của chính nó

• Ví dụ: abtract, class, using,

namespace, break, continue, as, do, event, is, in, new, true, if, else, float, char, finally, protected, return,

string, default, for, while,…

• Trong cửa sổ mã nguồn, mặc định từ khóa có màu xanh da trời

Trang 35

Sử dụng biến

• Biến là nơi lưu trữ giá trị tạm thời.

• Tên biến phải là duy nhất.

• Đặt tên biến:

– Không dùng dấu gạch dưới (_)

– Không nên tạo tên biến chỉ khác nhau bởi chữ hoa và chữ thường

– Tên nên bắt đầu bằng ký tự chữ thường

– Nên đặt tên theo các chuẩn khuyến cáo

• Khai báo biến: chỉ ra kiểu giá trị mà nó sẽ giữ và khai báo tường minh Phát biểu

lệnh khai báo: int age;

Trang 36

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

thước (bit)

b = 0.42

Trang 37

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

thước (bit)

Trang 38

Toán tử số học

• Các phép toán: +, -, *, /, %

• Sử dụng các phép toán này trên các giá trị char, int, long, float, double, decimal

• Không dùng cho kiểu bool và string

• Ngoại lệ: dấu + dùng để nối các

chuỗi

Trang 39

Độ ưu tiên của toán tử

• Là thứ tự mà toán tử của biểu thức được đánh giá

• Ví dụ: 6+5*3

• Có thể sử dụng dấu ngoặc đơn để

quyết định độ ưu tiên

Trang 40

• Một toán tử logic là một toán tử có kết

quả đúng (true) hoặc sai (false).

• Kiểu dữ liệu bool

• Chú ý: các toán tử làm việc trên một toán hạng được gọi là toán tử một ngôi, làm

việc trên 2 toán hạng được gọi là 2 ngôi.

Trang 41

Các toán tử logic boolean

Trang 42

Các toán tử logic

• Toán tử AND, ký hiệu &&

• Toán tử OR, ký hiệu ||

• Toán tử NOT, ký hiệu !

• Mục đích các toán tử này là kết hợp các biểu thức logic lại thành biểu

thức lớn hơn

Trang 45

Toán tử gán kép

var= var + num var *=num

var= var - num var -=num

var= var * num var *=num

var= var / num var /=num

Các tóan tử này có độ

ưu tiên và tính kết hợp phải giống toán tử gán đơn giản

Trang 46

Tăng và giảm giá trị của biến

• Tăng 1 đơn vị cho biến:

Trang 47

Chương 3:

Viết phương thức và

áp dụng phạm vi

Nguyễn Hồng Phương Khoa CNTT, ĐHBKHN

Trang 48

Khai báo phương thức

• Phương thức là một trình tự các câu lệnh được đặt tên

• Tên của phương thức nên là một định danh có nghĩa

• Hầu hết các phương thức đều nhận

dữ liệu truyền vào (đầu vào) và trả

về kết quả (đầu ra)

Trang 49

Khai báo phương thức

• <Kiểu trả về>: int, string, void,….

• <tên phương thức>:dùng để gọi phương thức

• <ds tham số>: kiểu và tên tham số, ngăn cách nhau bởi dấu phẩy (nếu có nhiều)

• <thân phương thức>: các dòng mã và trả

Trang 50

Gọi phương thức

• Sử dụng tên của phương thức để gọi

• Truyền đủ tham số cho nó (nếu

Trang 52

Phạm vi (Scope)

• Biến khai báo bên trong phương thức thì có phạm vi trong phương thức đó

• Chúng được gọi là biến cục bộ,

không thể dùng để chia sẻ thông tin giữa các phương thức

• Biến khai báo bên trong thân của 1 lớp thì có phạm vi là lớp đó

• Những biến khai báo bên trong lớp

thì được gọi là trường hay thuộc tính

Trang 53

Phạm vi (Scope)

• Có thể sử dụng các thuộc tính trong các phương thức

• Chú ý: Trong phương thức, ta phải

khai báo biến trước khi sử dụng còn trong lớp, ta có thể khai báo biến sau các phương thức

Trang 54

Định danh chồng(Overload Identifier)

• Hai định danh mà có cùng tên thì ta bảo rằng chúng bị nạp chồng

• Nếu khai báo >=2 biến cùng tên

trong một phạm vi thì sẽ bị báo lỗi

Trang 55

Định danh chồng(Overload Identifier)

Trang 56

Chương 4:

Các câu lệnh lựa chọn

Nguyễn Hồng Phương Khoa CNTT, ĐHBKHN

Trang 60

Câu lệnh switch

• Chỉ sử dụng lệnh này trên các kiểu

cơ bản int và string

• Các nhãn sau từ khóa case là biểu thức hằng

• Các nhãn này phải là duy nhất

• Phải lặp lại cùng cú pháp cho các giátrị riêng lẻ để thực thi cùng các câu lệnh

• Câu lệnh break là bắt buộc, kể cả

trong phần default

Trang 61

Chương 5:

Phát biểu lặp

Nguyễn Hồng Phương

Khoa CNTT, ĐHBKHN

Trang 62

• Biểu thức điều kiện được đánh giá Nếu

đúng, câu lệnh sẽ được thực thi Cứ tiếp tục như vậy đến khi biểu thức điều kiện

không còn đúng thì dừng vòng lặp.

• Lưu ý: không có sự chuyển đổi từ dạng số nguyên sang đúng/sai như trong C/C++

Trang 63

• Có thể bỏ qua bất kỳ phần nào trong

3 phần phát biểu của for

• Nếu biến khai báo trong phần khởi

tạo của for thì nó sẽ mất sau khi

vòng for kết thúc

Trang 64

Phát biểu do

• Cú pháp:

do

statement while(<biểu thức điều kiện>)

Trang 65

break và continue

• Dùng break nhảy khỏi thân vòng lặp

• Continue buộc chương trình ngay tức thời đánh giá lại biểu thức đúng/sai

Trang 67

Vấn đề nảy sinh

• Các đoạn mã chương trình có thể

phát sinh các lỗi

• Làm thế nào? Dùng biến toàn cục

nhận các giá trị lỗi khác nhau từ các phương thức khác nhau → không

hiệu quả

• → sử dụng các ngoại lệ

Trang 68

Đón bắt ngoại lệ

• Ý tưởng: Phân cách mã thực thi và mã xử

lý lỗi → không nhập nhằng với nhau nữa.

• Hai bước:

– Viết mã chương trình bên trong khối try

– Viết một hoặc nhiều bộ xử lý catch ngay sau khối try.

try{

statement;

} catch(ObjectException obj){

process Exception }

Trang 70

Nếu không có bộ xử lý catchMethod 1

Method 2

Method n

Trang 75

Checked và unchecked

Trang 76

Checked và unchecked

Trang 77

Checked và unchecked

Trang 78

Checked và unchecked

Trang 79

Các biểu thức checked và unchecked

Trang 82

Chương 7

Nguyễn Hồng Phương

Khoa CNTT, ĐHBKHN

Trang 83

Khái niệm chung

• Sự phân loại (Classification): Sắp xếp

thông tin một cách có hệ thống vào trong một thực thể, một sự vật, hiện tượng.

• Đóng gói (Encapsulation): đặt một sự vật, hiện tượng vào trong gói Đóng gói liên

quan đến:

– Kết hợp dữ liệu và phương thức bên trong một lớp (hỗ trợ phân loại).

– Điều khiển khả năng truy cập dữ liệu và

phương thức bên trong 1 lớp.

Trang 84

}

Trang 85

Điều khiển khả năng truy cập

• Bên trong vs bên ngoài lớp

• Từ khóa public, private

• Một phương thức/trường là private

nếu nó chỉ có thể truy cập được từ

bên trong phương thức đó

• Một phương thức/trường là public

nếu nó có thể truy cập được từ cả

bên trong và bên ngoài của phương thức đó

Trang 86

Điều khiển khả năng truy cập

• Ví dụ:

class Circle {

private double radius;

public double Area() {

return 3.1415*radius*radius;

} }

• Nếu không nói gì thì mặc định là private

Trang 88

Phương thức khởi tạo (Constructor)

Trang 90

Xử lý trường hợp thứ hai

• Rõ ràng chỉ có các kiểu cơ bản là có thể có các giá trị thực sự, còn kiểu của c là một lớp.

• Ta dùng từ khóa new và gọi phương thức khởi tạo:

Circle c=new Circle();

Trang 91

Phương thức khởi tạo

• Phương thức khởi tạo (khởi dựng) làmột phương thức đặc biệt có tên

trùng với tên của lớp

• Nó khởi tạo các trường của một đối tượng mới

• Nếu ta không viết phương thức này cho lớp của chúng ta, trình biên dịch

sẽ tự động “viết hộ” 1 cái

Trang 92

Ví dụ phương thức khởi tạo

class Circle

{

private double radius;

public Circle() {

Trang 93

• Các trường mà ta không khởi tạo

trong phương thức khởi tạo vẫn được khởi đầu giá trị là 0, false hay null

• Gọi phương thức của lớp: c.Area()

• Một số khuyến cáo khi đặt tên:

– Các định danh toàn cục nên bắt đầu

bằng một kí tự hoa.

– Các định danh không phải toàn cục nên bắt đầu bằng một kí tự thường.

Trang 94

Nạp chồng phương thức khởi tạo

• Phương thức khởi tạo cũng là phương thức.

• Nó có thể được nạp chồng.

• Ví dụ:

class Circle {

private double radius;

public Circle(){

radius = 0.0;

} public Circle(double r){

Trang 95

y=0;

} public Point(int initialX, int initialY) {

x=initialX;

y=initialY;

} public double distanceTo(Point other) {

int xDiff=x-other.x ; int yDiff=y-other.y ; return Math.Sqrt (xDiff*xDiff+yDiff*yDiff);

Trang 96

Ví dụ: File Point.cs

class Application{

static void Entrance(){

Point origin=new Point();

Point bottomRight =new Point (600,800);

double distance=origin.distanceTo (bottomRight); Console.WriteLine ("Distance is :{0}",distance); }

static void Main(string[] args){

try{

Entrance();

} catch (Exception caught){

Console.WriteLine(caught.Message);

} }

}

}

Trang 99

• Ta có thể dùng từ khóa static để tạo trường chia sẻ giữa các đối tượng

• Để khai báo một trường là tĩnh mà

giá trị của nó không thay đổi, ta

dùng từ khóa const Ví dụ:

class Math{

public static double Sqrt(double d){…}

public const double PI = 3.141593;

}

Trang 100

Chương 8

Nguyễn Hồng Phương Khoa CNTT, ĐHBKHN

Trang 101

Kiểu giá trị vs kiểu tham chiếu

• Các kiểu cơ bản như int gọi là kiểu

giá trị vì một biến kiểu int giữ một

giá trị nguyên → kiểu trực tiếp

• Kiểu lớp như Circle gọi là kiểu tham chiếu vì một biến Circle không giữ

giá trị Circle mà nó tham chiếu tới

một đối tượng Circle → kiểu gián

tiếp

• “Kiểu giá trị giữ giá trị, kiểu tham

chiếu giữ tham chiếu”

Trang 102

Kiểu giá trị vs kiểu tham chiếu

Trang 103

param.Number = 42;

} }

Trang 106

Console.WriteLine(caught.Message); }

} }

}

Trang 107

Sử dụng tham số ref và out

static void Value(int param){

Trang 108

Tham số ref

• Đặt trước một tham số từ khóa ref thìtham số trở thành bí danh cho đối sốthực sự

• Thao tác được thực hiện trên tham sốcũng sẽ được thực hiện trên đối số

• Khi truyền một đối số cho một tham

số thì trước đối số này ta cũng phải đặt từ khóa ref

Trang 110

Chú ý:

• Phải gán giá trị cho một biến trước hi dùng

nó làm đối số ref truyền vào cho tham số ref Ví dụ sau báo lỗi:

static void Value(ref int param){

param++;

}

static void Main(){

int arg; // không khởi gán giá trị

Value(ref arg);

Console.WriteLine(arg);

}

Trang 111

Tham số out

• Từ khóa out cũng giống từ khóa ref

• Nếu ta đặt từ khóa out trước một

tham số thì tham số này sẽ trở thành

bí danh cho đối số

• Khi truyền đối số cũng phải đặt từ

khóa out trước đối số

• Sự khác nhau là, một phương thức

không phải gán giá trị cho tham số

ref nhưng phải gán một giá trị cho

tham số out

Trang 112

Tham số out (tiếp)

Lỗi vì phương thức Value không gán giá trị cho

Trang 113

Tham số out (tiếp)

static void Value(out int param){

param = 42;

}

static void Main(){

int arg; // chưa được khởi gán

Value(out arg);

Console.WriteLine(arg);// in ra 42

}

Trang 114

Stack và Heap

• Bộ nhớ máy tính được chia thành

một số đoạn Hai đoạn quan trọng:

– Stack: khi gọi phương thức, bộ nhớ

được yêu cầu cho các tham số và các

biến cục bộ Khi phương thức kết thúc, vùng nhớ được giải phóng.

– Heap: Khi tạo một đối tượng sử dụng từ khóa new và lời gọi phương thức khởi

dựng Nó sẽ được giải phóng một cách

tự động khi kết thúc.

Trang 115

Circle c

@

42

Trang 116

Lớp System.Object

• Lớp Object trong không gian tên

System là kiểu tham chiếu quan

trọng

namespace System {

class Object {

……

} }

Trang 118

Lớp System.Object

• Khái niệm kế thừa, chúng ta sẽ học trong chương 12

• Một biến kiểu Object có thể tham

chiếu tới một thể hiện của bất kỳ lớp

Trang 119

Cơ chế bao (boxing)

• Biến kiểu object có thể tham chiếu

tới bất kỳ đối tượng của kiểu tham

chiếu hoặc tham chiếu tới bản sao của kiểu giá trị

int i 42

int i = 42;

object o = i;

Trang 120

Không bao (Unboxing)

• Một biến kiểu đối tượng có thể tham chiếu tới một bản sao của một giá trị

đã được bao

object o = 42;

int i = o; // Lỗi biên dịch

STACK HEAP Unboxing

42 object o = 42;

int i = (int) o;

Trang 121

Chương 9

Nguyễn Hồng Phương Khoa CNTT, ĐHBKHN

Trang 122

Kiểu liệt kê

• Dùng từ khóa enum để tạo kiểu liệt

kê Toàn bộ giá trị của nó được giới hạn trong tập tên ký hiệu

• Ví dụ: khai báo kiểu enum có tên là

Season, giá trị chữ giới hạn trong các tên ký hiệu Spring , Summer, Fall,

Winter:

enum Season {Spring, Summer, Fall, Winter}

Trang 123

Kiểu liệt kê

• Các tên ký hiệu phải nằm trong cặp ngoặc nhọn, phân cách nhau bằng

Trang 124

• Được phép cho nhiều hơn một liệt kê chữ có cùng giá trị Ví dụ:

enum Season {Spring, Summer, Autumn = Fall, Winter}

• Chọn kiểu cơ sở cho kiểu liệt kê:

– Các liệt kê chữ có các giá trị kiểu int

Kiểu cơ sở mặc định là kiểu int.

– Ta có thể chọn kiểu cơ sở khác cho kiểu liệt kê, ví dụ:

enum Season:short {Spring, Summer, Fall, Winter}

Kiểu liệt kê

• Các kiểu cơ sở là 1 trong 8 kiểu

sau:byte, sbyte, short, ushort, int, uint, long,

Ngày đăng: 04/02/2015, 18:58

HÌNH ẢNH LIÊN QUAN

Bảng trong CSDL - Ngôn ngữ lập trình c
Bảng trong CSDL (Trang 388)

TỪ KHÓA LIÊN QUAN

w