Tải bản đầy đủ (.pdf) (63 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.18 MB, 63 trang )

Lê Viết Mẫn -
Cơ bản NNLT C#
v 1.0 - 10/2012
Cơ bản
ngôn ngữ lập trình C#
1
Monday, October 15, 12
Lê Viết Mẫn -
Cơ bản NNLT C#
chúng ta đã học
2
1. Lập trình là gì ?
2. C# và .NET
3. Thiết kế thuật toán
Monday, October 15, 12
Lê Viết Mẫn -
Cơ bản NNLT C#
Giải bài toán trên máy tính
3
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 ]
Monday, October 15, 12
Lê Viết Mẫn -
Cơ bản NNLT C#
Nội dung
1. Lập trình hướng đối tượng
2. Cách tạo ra một chương trình C#


3. Các thành phần của một chương trình C#
4. Biến, kiểu dữ liệu, Hằng
5. Toán tử
6. Lập trình chương trình đơn giản với C#
4
Monday, October 15, 12
Lê Viết Mẫn -
Cơ bản NNLT C#
Lập trình
hướng đối tượng
5
Monday, October 15, 12
Lê Viết Mẫn -
Cơ bản NNLT C#
.NET và hướng đối tượng
6

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

Các ngôn ngữ lập trình chấp nhận .NET (.NET-aware languages) cũng là
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
Monday, October 15, 12
Lê Viết Mẫn -
Cơ bản NNLT C#
Lớp & đối tượng
7

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

Nó định nghĩa khuôn dạng của các đối tượng

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
Monday, October 15, 12
Lê Viết Mẫn -

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
Cơ bản NNLT C#
Lớp & đối tượng
8
Document

name
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
Monday, October 15, 12
Lê Viết Mẫn -
Cơ bản NNLT C#
Ví dụ
9
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
Monday, October 15, 12
Lê Viết Mẫn -
Cơ bản NNLT C#
Lớp & đối tượng trong C#
10
Đị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ủa một lớp
Khai báo một biến có kiểu dữ liệu nào đó và ghi dữ
liệu vào biến đó
Sử dụng từ khoá new
Đặc tính
Các biến thành phần (gọi tắt là biến)
Thao tác
Phương thức / hàm
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 :");
Monday, October 15, 12
Lê Viết Mẫn -
Cơ bản NNLT C#
.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 để

Tạo các thể hiện (object)

Truy xuất các phương thức / hàm thành phần các lớp cung cấp

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ì

Sử dụng Object Browser

MSDN - />•
Bên cạnh các giải thích còn có các ví dụ hướng dẫn sử dụng
11
Monday, October 15, 12
Lê Viết Mẫn -
Cơ bản NNLT C#
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 đó
12
System.Console
System.Array
Monday, October 15, 12
Lê Viết Mẫn -
Cơ bản NNLT C#
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
13
YourCompanyName.ProjectName.ClassName
Monday, October 15, 12
Lê Viết Mẫn -
Cơ bản NNLT C#
Namespace (3/5)
14
.NET Namespace
Ý nghĩa
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
Monday, October 15, 12
Lê Viết Mẫn -
Cơ bản NNLT C#
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

Nên dùng cách 1, chỉ dùng cách 2 khi muốn tránh sự nhập nhằng về tên


Có thể dùng các alias cho các tên namespace dài
15
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;

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;
Monday, October 15, 12
Lê Viết Mẫn -
Cơ bản NNLT C#
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

Trong Visual Studio, trên ngăn Solution Explorer, nháy phải chuột
lên thư mục References, nháy mục Add References


Làm việc này rồi thì mới using được
16
Monday, October 15, 12
Lê Viết Mẫn -
Cơ bản NNLT C#
Cách tạo ra
một chương trình C#
17
Monday, October 15, 12
Lê Viết Mẫn -
Cơ bản NNLT C#
Chương trình C#
18

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
Monday, October 15, 12
Lê Viết Mẫn -
Cơ bản NNLT C#
Cấu trúc chương trình C#
19
Solution
Project 1 Project 2
File1.cs File2.cs File3.cs
namespace A { } namespace B { }
namespace A { }
class X { } class Y { } class Z { }
biên dịch
thành .dll
biên dịch
thành .exe
File1.cs
namespace C { }
Monday, October 15, 12
Lê Viết Mẫn -

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
Cơ bản NNLT C#
Namespace vs Assembly
20

namespace X {
"class A { }
}
namespace Y {
"class B { }
}
csc A.cs B.cs
file A.cs
file B.cs
file A.exe
chứa X.A và Y.B
namespace X {
"class C { }
}
file C.cs
csc C.cs
file C.exe
chứa X.C
Monday, October 15, 12
Lê Viết Mẫn -
Cơ bản NNLT C#
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
(AL)
21
A.cs
csc

sources
assembly
.exe
.dll

manifest
module
.netmodule
không có
manifest
executable
library
modules
C.netmodule
D.dll
libraries
chỉ đề giải quyết các tham chiếu
B.cs
Monday, October 15, 12
Lê Viết Mẫn -
Cơ bản NNLT C#
Chương trình đầu tiên
22
using System;
namespace Square
{
class Program
{
static void Main(string[] args)
{

double 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
{1}", n, Square.square(n));
Console.ReadKey();
}
}
}
Program.cs
using System;
namespace Square
{
class Square
{
public static double square(double n)
{
return n * n; // tinh binh phuong cua n
}
}
}
Square.cs
Monday, October 15, 12
Lê Viết Mẫn -

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

/reference : tham chiếu các Assembly .dll mà Assembly biên dịch cần sử dụng

Nên sử dụng Visual Studio 2010 Command Prompt để biên dịch
Cơ bản NNLT C#
Biên dịch chương trình
23
csc /out:Square.exe Program.cs Square.cs
csc /out:Square.exe *.cs
cmd.exe /k ""C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat""
Monday, October 15, 12
Lê Viết Mẫn -
Cơ bản NNLT C#
Assembly kiểu .dll
24
using System;
using SquareLibrary;
namespace Square
{
class Program
{
static void Main(string[] args)
{

double n;
Console.Write("Please enter a number:");
n = double.Parse(Console.ReadLine());
Console.WriteLine("The square of {0} is
{1}", n, SquareLibrary.Square.square(n));
Console.ReadKey();
}
}
}
Program.cs
using System;
namespace SquareLibrary
{
class Square
{
public static double square(double n)
{
return n * n;
}
}
}
Square.cs
csc /t:library /out:Square.dll Square.cs
csc /r:Square.dll /out:Square.exe Program.cs
Monday, October 15, 12
Lê Viết Mẫn -
Tên bài giảng
Các thành phần của
một chương trình C#
25

Monday, October 15, 12

×