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

Cơ bản ngôn ngữ lập trình C pptx

63 518 0
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 đề Cơ bản ngôn ngữ lập trình C#
Tác giả Lê Viết Mẫn
Trường học Học viện Công nghệ bưu chính Viễn thông
Chuyên ngành Lập trình
Thể loại Giáo trình
Năm xuất bản 2012
Thành phố Hà Nội
Định dạng
Số trang 63
Dung lượng 1,18 MB

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

Nội dung

• Một đối tượng là một thực thể trong miền xác định có một định danh riêng tên • Một tập những đặc tính attribute mô tả tình trạng của đối tượng type state nameBorrower dateBorrow date

Trang 1

v 1.0 - 10/2012

Cơ bản ngôn ngữ lập trình C#

Trang 3

Giải bài toán trên máy tính

1 Xác định bài toán

2 Thiết kế thuật toán

3 Phân tích thuật toán

4 Cài đặt thuật toán

5 Kiểm tra / Bắt lỗi

6 [ Sửa lỗi ]

Trang 5

Lập trình hướng đối tượng

Trang 6

.NET và hướng đối tượng

• Nền tảng NET hỗ trợ hướng đối tượng từ dưới lên trên

Trình biên dịch hỗ trợ hướng đối tượng

• Intermediate Language là hướng đối tượng

• Base Class Library hoàn toàn là hướng đối tượng

hướng đối tượng

• Ngôn ngữ lập trình C# là ngôn ngữ lập trình hướng đối tượng

• Cần hiểu hai khái niệm :

• Lớp

• Đối tượng

Trang 7

Lớp & đối tượng

• Lớp giống như một cái khuôn bánh

• Các đối tượng như các cái bánh

• Chúng là các instances (thực thể/thể hiện) của lớp

Trang 8

• Một đối tượng là một thực thể trong miền

xác định có một định danh riêng (tên)

Một tập những đặc tính (attribute) mô tả

tình trạng của đối tượng

type state nameBorrower dateBorrow dateReminder calculDateReminder

Một tập các thao tác (phương thức / hàm - methods) định nghĩa

các hành vi của đối tượng

Một đối tượng là một thể hiện (instance) của một lớp

• Lớp là kiểu dữ liệu trừu tượng, được mô tả bởi những thuộc tính

(đặc tính và phương thức) chung của các đối tượng và cho phép

tạo ra các đối tượng có những thuộc tính đó

Đặc tả UML của một lớp

Trang 9

Ví dụ

Car

mark color registering

start driver stop

twingo : Car

mark = Renault color = gray registering = 995 LKZ 75

Nhóm các dữ liệu và xử lý liên quan trong một lớp

Object : một thể hiện của lớp

Trang 10

Lớp & đối tượng trong C#

Định nghĩa lớp Sử dụng từ khoá class

Định nghĩa một kiểu dữ liệu mới Tạo một đối tượng

Có hai loại hàm với hai cách triệu gọi khác nhau :

• Hàm không tĩnh - Gọi từ đối tượng

• Hàm tĩnh (từ khoá static) - Gọi từ lớp

Bitmap bm = new Bitmap (20, 20);

Bitmap bm = new Bitmap (20, 20);

bm.Save( "bitmap.png" );

Console Write( "Please enter a number :" );

Trang 11

.NET Base Class Library

• Một tập hợp khổng lồ các đoạn mã lớp được giám quản

( managed code ) mà Microsoft đã viết ra, cho phép bạn làm bất

cứ việc gì với máy tính mà Windows API hỗ trợ

• Bạn có thể sử dụng các lớp cơ bản NET này để

• Cung cấp, truy xuất các dữ liệu của các thể hiện của lớp

• Để nghiên cứu về các lớp cung cấp cái gì

• MSDN - http://msdn.microsoft.com/en-us/library/gg145045%28v=vs.100%29.aspx

• Bên cạnh các giải thích còn có các ví dụ hướng dẫn sử dụng

Trang 12

Namespace (1/5)

• Là cách mà NET tránh né việc các định danh (tên lớp, tên

biến, tên hàm, ) choảng nhau vì trùng tên

• Là việc gộp lại những kiểu dữ liệu có liên hệ với nhau về mặt

ngữ nghĩa

• System.IO gộp các kiểu dữ liệu liên quan đến xuất nhập dữ liệu trên tập tin

• System.Data gộp các kiểu dữ liệu cơ bản về cơ sở dữ liệu

• Tên tất cả các kiểu dữ liệu trong phạm vi namespace sẽ tự động

được gán một tiền tố mang tên namespace

• Lớp Array nằm trong System, nên tên trọn vẹn của nó là System Array

• NET đòi hỏi các kiểu dữ liệu phải được định nghĩa trong một

namespace nào đó

System Console

System Array

Trang 13

Namespace (2/5)

• [Lời khuyên của Microsoft] Nên cung cấp ít nhất hai namespace

lồng nhau :

• namespace đầu : tên công ty

• namespace thứ hai : tên công nghệ, tên gói phần mềm, tên phần mềm hoặc

tên project

• Trong NET, hầu hết những namespace quan trọng đều xoay

quanh namespace System

• Namespace này cung cấp phần cốt lõi các kiểu dữ liệu

• Một chương trình C# ít nhất phải khai báo sử dụng namespace này

• Việc tìm hiểu từng kiểu dữ liệu được chứa đựng trong mỗi

namespace đòi hỏi thời gian

YourCompanyName.ProjectName ClassName

Trang 14

Namespace (3/5)

System Chứa các lớp cốt lõi liên quan đến các kiểu dữ liệu bẩm sinh,

tính toán số học

System.Collections Định nghĩa một số đối tượng như ArrayList , Queue , SortedList

System.Data System.Data.Common System.Data.SqlClient

Những namespace dùng trong việc thao tác với các cơ sở dữ liệu

System.Drawing System.Drawing.Drawing2D System.Drawing.Printing Chứa các kiểu dữ liệu về vẽ đồ hoạ, in ấn System.IO Chứa các kiểu dữ liệu lo việc xuất nhập dữ liệu System.Net Các kiểu dữ liệu liên quan đến lập trình mạng

System.Web Các kiểu dữ liệu cho việc triển khai những ứng dụng Web, kể

cả ASP.NET System.Windows.Form Các kiểu dữ liệu cho phép xây dựng giao diện đồ hoạ System.XML Các kiểu dữ liệu cho phép tương tác với dữ liệu XML

Trang 15

Namespace (4/5)

• Sử dụng từ khoá using để qui chiếu đến các namespace trong

chương trình

• Một khi đã qui chiếu các namespace , bạn tự do tạo ra những thể

hiện của những kiểu dữ liệu mà namespace đó chứa đựng

• Có thể dùng các alias cho các tên namespace dài

Bitmap bm = new Bitmap (20, 20); // Không cần viết tên lớp bao gồm cả namespace

System.Drawing Bitmap bm = new System.Drawing Bitmap (20, 20);

Cách 1 :

Cách 2 :

using WF = System.Windows.Forms;

Trang 16

Namespace (5/5)

• Một tập tin assembly (vd : mscorlib.dll ) có thể chứa một

lượng bất kỳ các namespace

• Cần phải báo cho trình biên dịch về tên của assembly chứa các

namespace có các kiểu được tham chiếu (được sử dụng)

• Tất cả các assembly được lưu trong GAC (Global Assembly Cache) -

C:\Windows\Assembly

• Làm việc này rồi thì mới using được

Trang 17

Cách tạo ra một chương trình C#

Trang 18

Chương trình C#

• Mỗi Project được đặt trong một Solution

• Mỗi Solution có thể chứa nhiều Project

• Một Project bao gồm một hoặc nhiều đơn vị biên dịch

(compilation units)

• Mỗi đơn vị là một file mã nguồn riêng biệt (.cs)

• Program.cs là tên mặc định của đơn vị biên dịch đầu tiên của project

• Mỗi Project được biên dịch thành một tập tin assembly ( exe

hoặc dll )

• Hai đơn vị biên dịch khác nhau có thể chứa cùng namespace

• Hai project khác nhau phải chứa hai namespace khác nhau

Trang 19

Cấu trúc chương trình C#

Solution

namespace A { } namespace B { } namespace A { }

class X { } class Y { } class Z { }

Trang 20

• Namespace là cấu trúc thời gian biên dịch ( compile-time )

• Assembly là cấu trúc thời gian chạy ( run-time )

• Có thể chứa các kiểu dữ liệu từ các namespace khác nhau

Trang 21

Assembly được tạo ra ntn ?

• Mỗi biên dịch tạo ra hoặc một assembly hoặc một module

• Các module khác có thể được thêm vào sử dụng trình assembly linker

có manifest

module

.netmodule không có manifest

executable library

Trang 22

Chương trình đầu tiên

// nhap mot so vao tu ban phim

Console Write( "Please enter a number:" );

n = double Parse( Console ReadLine());

// in ra binh phuong cua so do

Console WriteLine( "The square of {0} is

class Square

{ public static double square( double n) {

return n * n; // tinh binh phuong cua n

} } }

Square.cs

Trang 23

• csc.exe cung cấp vài tham số dòng lệnh sau :

• /out : chỉ định tên của Assembly

• /target:exe : (mặc định) Assembly kiểu .exe

• /target:library : Assembly kiểu .dll

• /target:module : Assembly kiểu .netmodule, dùng cho biên dịch Assembly

nhiều tập tin

• Nên sử dụng Visual Studio 2010 Command Prompt để biên dịch

Trang 24

Console WriteLine( "The square of {0} is

{1}" , n, SquareLibrary Square square(n));

public static double square(double n) {

return n * n;

} } }

Square.cs

csc /t:library /out:Square.dll Square.cscsc /r:Square.dll /out:Square.exe Program.cs

Trang 25

Các thành phần của một chương trình C#

Trang 26

Chương trình đầu tiên

// nhap mot so vao tu ban phim

Console Write( "Please enter a number:" );

n = double Parse( Console ReadLine());

// in ra binh phuong cua so do

Console WriteLine( "The square of {0} is

class Square

{ public static double square( double n) {

return n * n; // tinh binh phuong cua n

} } }

Square.cs

Trang 27

Chương trình đầu tiên

// nhap mot so vao tu ban phim

Console Write( "Please enter a number:" );

n = double Parse( Console ReadLine());

// in ra binh phuong cua so do

Console WriteLine( "The square of {0} is

class Square

{ public static double square( double n) {

return n * n; // tinh binh phuong cua n

} } }

Square.cs

• Các tập tin cs là các tập tin mã nguồn C#

Mỗi tập tin nên chứa cài đặt cho một và chỉ một lớp

• Program.cs là tập tin mặc định đầu tiên được tạo ra

trong Project để chứa đoạn chương trình là điểm bắt đầu của chương trình

Trang 28

Chương trình đầu tiên

// nhap mot so vao tu ban phim

Console Write( "Please enter a number:" );

n = double Parse( Console ReadLine());

// in ra binh phuong cua so do

Console WriteLine( "The square of {0} is

class Square

{ public static double square( double n) {

return n * n; // tinh binh phuong cua n

} } }

Square.cs

• Mỗi câu lệnh trong C# được

kết thúc bằng dấu chấm phẩy ( ; )

• Nhiều câu lệnh có thể được

gộp lại thành khối và đặt trong cặp dấu ngoặc nghéo { }

Trang 29

Chương trình đầu tiên

// nhap mot so vao tu ban phim

Console Write( "Please enter a number:" );

n = int Parse( Console ReadLine());

// in ra binh phuong cua so do

Console WriteLine( "The square of {0} is

class Square

{ public static double square( double n) {

return n * n; // tinh binh phuong cua n

} } }

Trang 30

Chương trình đầu tiên

// nhap mot so vao tu ban phim

Console Write( "Please enter a number:" );

n = double Parse( Console ReadLine());

// in ra binh phuong cua so do

Console WriteLine( "The square of {0} is

class Square

{ public static double square( double n) {

return n * n; // tinh binh phuong cua n

} } }

• Namespace có thể có hoặc không

Những kiểu dữ liệu thuộc namespace nào thì đặt trong cặp dấu ngoặc nhọn của

namespace đó

Có thể khai báo các namespace lồng nhau

Trang 31

Chương trình đầu tiên

// nhap mot so vao tu ban phim

Console Write( "Please enter a number:" );

n = double Parse( Console ReadLine());

// in ra binh phuong cua so do

Console WriteLine( "The square of {0} is

class Square

{ public static double square( double n) {

return n * n; // tinh binh phuong cua n

} } }

Square.cs

Khai báo một lớp bằng tên lớp theo sau từ

khoá class

Thân lớp được đặt trong cặp dấu ngoặc nhọn {}

Đối với C#, mọi biến và hàm đều phải được đặt trong một định nghĩa kiểu nào đó

Trang 32

Chương trình đầu tiên

// nhap mot so vao tu ban phim

Console Write( "Please enter a number:" );

n = double Parse( Console ReadLine());

// in ra binh phuong cua so do

Console WriteLine( "The square of {0} is

class Square

{ public static double square( double n) {

return n * n; // tinh binh phuong cua n

} } }

Square.cs

Trong C#, một chương trình luôn bắt đầu bằng hàm Main() :

• có thể có nhiều hàm Main để xử lý cho nhiều

trường hợp khởi động chương trình khác nhau

không thuộc về một lớp nào, global function

• là một hàm tĩnh (từ khoá static)

người ta có thể truyền tham số cho nó

có nhiều dạng giá trị trả về của hàm này

• ở đây là void , tức là không cần giá trị trả về

Trang 33

Chương trình đầu tiên

// nhap mot so vao tu ban phim

Console Write( "Please enter a number:" );

n = double Parse( Console ReadLine());

// in ra binh phuong cua so do

Console WriteLine( "The square of {0} is

class Square

{ public static double square( double n) {

return n * n; // tinh binh phuong cua n

} } }

Square.cs

Khai báo biến :

• có thể khai báo bất cứ đâu trong chương trình

Các tên biến, tên hàm, tên lớp gọi chung là các định danh và nên tuân theo qui tắc đặt tên :

C# phân biệt chữ hoa, chữ thường cho các định danh

Trang 34

Chương trình đầu tiên

// nhap mot so vao tu ban phim

Console Write( "Please enter a number:" );

n = double Parse( Console ReadLine());

// in ra binh phuong cua so do

Console WriteLine( "The square of {0} is

class Square

{ public static double square( double n) {

return n * n; // tinh binh phuong cua n

} } }

Square.cs

Xuất dữ liệu ra màn hình sử dụng lớp System.Console :

• Write - in chuỗi văn bản chỉ định ra

Trang 35

Chương trình đầu tiên

// nhap mot so vao tu ban phim

Console Write( "Please enter a number:" );

n = double Parse( Console ReadLine());

// in ra binh phuong cua so do

Console WriteLine( "The square of {0} is

class Square

{ public static double square( double n) {

return n * n; // tinh binh phuong cua n

} } }

Square.cs

Nhậ dữ liệu từ bàn phím sử dụng lớp System.Console :

• Kết quả đọc vào là một chuỗi ký tự Do đó, ta

phải dùng hàm Parse của kiểu double để chuyển từ chuỗi thành số

• Ở đây, chức năng của hàm này là dừng màn

hình để cho người sử dụng đọc các kết quả xuất ra màn hình

Trang 36

Chương trình đầu tiên

// nhap mot so vao tu ban phim

Console Write( "Please enter a number:" );

n = double Parse( Console ReadLine());

// in ra binh phuong cua so do

Console WriteLine( "The square of {0} is

class Square

{ public static double square( double n) {

return n * n; // tinh binh phuong cua n

} } }

Square.cs

Khi gọi một hàm, hàm này phải

thuộc về một lớp nào đó :

• Lời gọi hàm phải tuân theo qui định

của lời gọi hàm (Xem slide 10)

Trang 37

Chương trình đầu tiên

// nhap mot so vao tu ban phim

Console Write( "Please enter a number:" );

n = double Parse( Console ReadLine());

// in ra binh phuong cua so do

Console WriteLine( "The square of {0} is

class Square

{ public static double square( double n) {

return n * n; // tinh binh phuong cua n

} } }

Trang 38

Biến, kiểu dữ liệu, Hằng

Trang 39

Bộ nhớ của con người

1 Đầu tiên, yêu cầu bạn nhớ con số 5

2 Sau đó, yêu cầu bạn nhớ đồng thời

con số 2

3 Yêu cầu bạn cộng 1 vào con số đầu

tiên

4 Trừ hai số đó

Trang 40

• Máy tính có thể chứa hàng triệu số cùng lúc và thực hiện tính

Trang 41

Định danh

• Định danh là chuỗi các ký tự, số và dấu gạch chân và luôn bắt

đầu bằng ký tự, dấu gạch chân hoặc ký tự @

• Trong C#, định danh :

• Ký hiệu @ được sử dụng để chỉ một từ khoá là định danh

• if - từ khoá

• @if - định danh if

someNamesum_of3_10percent

@while𝛑

\u03c0b\u0061ck

Trang 42

Từ khoá

Có tất cả 77 từ khoá

Trang 43

Quy tắc đặt tên

• Các từ được viết hoa chữ cái đầu tiên (vd : ShowDialog)

• Ký tự đầu tiên được viết hoa, ngoại trừ tên biến

Trang 44

Hệ thống kiểu

• Tất cả các kiểu dữ liệu đều thừa kế từ System Object

Types

bool

char

sbyte short int long

byte ushort uint ulong

float double

Trang 45

Kiểu trị & kiểu tham chiếu

Ví dụ intint i = 17; j = i; stringstring s = “ s1 = s;Hello”;

i 17

j 17

ss1 0x0a10

0x0a10

Hello

Trang 46

Stack vs Heap

• stack được đặt trong bộ nhớ máy tính

chứa tất cả các biến được khai báo và khởi tạo trước thời gian chạy (runtime)

• heap là một phần của bộ nhớ máy tính

chứa tất cả các biến được tạo ra và khởi tạo trong thời gian chạy (các biến động - dynamic memory)

heap

main()int ymyobj = new Object()

Trang 47

Kiểu dữ liệu cơ bản

sbyte byte System.SByteSystem.Byte số nguyên có dấu 8 bit

số nguyên ko dấu 8 bit short

ushort System.UInt16System.Int16 số nguyên có dấu 16 bit

số nguyên ko dấu 16 bit int

uint System.UInt32System.Int32 số nguyên có dấu 32 bit

số nguyên ko dấu 32 bit long

ulong System.UInt64System.Int64 số nguyên có dấu 64 bit

số nguyên ko dấu 64 bit float

double decimal

System.Single System.Double System.Decimal

số thực 32 bit

số thực 64 bit

số thực 128 bit

bool char System.BooleanSystem.Char ký tự Unicodetrue, falseCác kiểu dữ liệu này đều có các hàm thành phần rất hữu ích Vd : int.MaxValue

Ngày đăng: 01/04/2014, 00:21

HÌNH ẢNH LIÊN QUAN

Hình để cho người sử dụng đọc các kết quả  xuất ra màn hình - Cơ bản ngôn ngữ lập trình C pptx
nh để cho người sử dụng đọc các kết quả xuất ra màn hình (Trang 35)

TỪ KHÓA LIÊN QUAN

w