Chuyển đổi kiểu dữ liệu
Chuyển đổi ngầm (implicity): quá trình chuyển
đổi diễn ra tự động và đảm bảo không bị mất mát
dữ liệu
Ví dụ: short x=5;
int y=x;
Chuyển đổi tường minh (explicity) sử dụng
toán tử chuyển đổi (cast operator)
Ví dụ: double a = 34.5;
int b = (int) a;
49 trang |
Chia sẻ: maiphuongdc | Lượt xem: 3305 | Lượt tải: 6
Bạn đang xem trước 20 trang tài liệu Bài giảng Lập trình hướng đối tượng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
1Chương 1
2Mục tiêu
Cung cấp một số kiến thức cơ bản về .NET
Cơ bản về C#
3Nội dung
1.1. Microsoft .NET
1.2. Ngôn ngữ C#
41.1. Microsoft .NET
Cung cấp giao diện lập trình (API) cho các dịch vụ
(services) và các hàm API truyền thống của hệ
điều hành Windows.
Cung cấp một nền tảng phát triển chung cho nhiều
ngôn ngữ lập trình khác nhau của Microsoft: C#,
Visual J#, Visual Basic…
Microsoft .NET gồm 2 phần chính : Framework và
Integrated Development Environment (IDE).
5.NET Framework (1)
.NET Framework có hai thành phần chính: Bộ thực
thi ngôn ngữ chung (Common Language Runtime -
CLR) và thư viện lớp (Class Libraries).
6.NET Framework (2)
Sử dụng .NET Framework để phát triển những kiểu
ứng dụng và dịch vụ như sau:
• Ứng dụng Console
• Ứng dụng giao diện GUI trên Windows
(Windows Forms)
• Ứng dụng ASP.NET
• Dịch vụ XML Web
7.NET Framework (3)
Common Language Runtime
Base Framework Classes
Data and XML Classes
C#, VB.NET, J#, C++ …
XML Web
Services
Web
Forms
Windows
Forms
ASP.NET
8Ứng dụng Console
9Ứng dụng WinForm và WebForm
10
Biên dịch
.NET không biên dịch trực tiếp các chương trình
thành file thực thi.
.NET biên dịch các chương trình thành các
assembly, chứa các mã chương trình trung gian
của Microsoft (Microsoft Intermediate Language -
MSIL)
CLR sẽ dịch một lần nữa, sử dụng chương trình
biên dịch Just In Time (JIT) chuyển các mã MSIL
sang mã máy và thực thi
11
Biên dịch
12
Trình soạn thảo và biên dịch
Visual Studio .NET
Trình soạn thảo văn bản (Notepad, UltraEdit…) &
Trình biên dịch bằng dòng lệnh (Command-line
compiler)
13
Ví dụ chương trình HelloWorld
Mở chương trình Visual Studio .NET 2005
Tạo một dự án mới với kiểu ứng dụng console
(HelloWorld)
14
Chương trình HelloWorld (1)
15
Chương trình HelloWorld (2)
Chương trình sẽ tự
tạo một khung dự án
Thêm dòng code đơn
giản hiển thị thông
báo Hello World ra
màn hình
Bấm F6 để biên
dịch, F5 để chạy
16
Chương trình HelloWorld (3)
Kết quả khi chạy chương trình HelloWorld
17
1.2. Ngôn ngữ C#
C# được phát triển bởi nhóm tác giả điều hành bởi
Anders Hejlsberg và Scott Wiltamuth.
Ngôn ngữ C# là một ngôn ngữ được dẫn xuất từ C và
C++, nhưng nó được tạo từ nền tảng phát triển hơn.
C# là ngôn ngữ lập trình hướng đối tượng (Object
Oriented Language)
• Hỗ trợ định nghĩa và làm việc với lớp (class)
• Hỗ trợ đầy đủ ba cơ chế đặc trưng của lập trình
hướng đối tượng: đóng gói (encapsulation), kế
thừa (inheritance) và đa hình (polymorphism)
18
Cấu trúc chương trình C#
19
Chương trình HelloWorld
using System;
using System.Collections.Generic;
using System.Text;
namespace HelloWorld
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World");
}
}
}
Using statement
Namespace
class
Static function
Code statement
20
Một số khái niệm trong C#
Chú thích
• Chú thích trên một dòng dùng //…
• Chú thích trên nhiều dòng dùng /* … */
• Trình biên dịch bỏ qua chú thích
Namespaces (Không gian tên)
• Nhóm các tính năng có liên quan của C# vào một
loại
• Cho phép dễ dàng tái sử dụng mã
• Trong thư viện .NET framework có nhiều không gian
tên
• Phải tham chiếu tới để sử dụng
21
Các namspace cơ bản
22
Console nhập xuất (Console I/O)
Đọc ký tự văn bản từ cửa sổ console:
• Console.Read()
• Console.ReadLine()
Xuất chuỗi ký tự:
• Console.Write()
• Console.WriteLine()
23
Một số khái niệm trong C# (tt)
Từ khoá (Keywords)
• Các từ không được dùng làm tên biến, tên lớp
hay bất kỳ thứ gì khác
• Có các chức năng đặc biệt không thể thay đổi
trong ngôn ngữ
Ví dụ : class
• Tất cả các từ khoá đều được viết thường
24
Một số khái niệm trong C# (tt)
Lớp (class): định nghĩa một kiểu dữ liệu, mô tả
một nhóm các đối tượng với các phương thức và
thuộc tính
• Phương thức (Method)
• Thuộc tính (Property)
25
Kiểu dữ liệu (Types)
Phân loại dữ liệu
• Phân theo phương thức định nghĩa: build-in (có
sẵn) và user-defined (người dùng tự định nghĩa)
• Phân theo cách thức lưu trữ: value (tham trị) và
reference (tham chiếu)
26
Kiểu dữ liệu (tt)
Kiểu dữ liệu có sẵn
• C# hỗ trợ một số kiểu dữ liệu có sẵn, mỗi kiểu
dữ liệu này tương ứng với một kiểu dữ liệu hỗ
trợ bởi .NET CLS (Common Language System).
• C# có thể sử dụng đối tượng do các ngôn ngữ
khác trong bộ .NET tạo ra và ngược lại (Ví dụ:
VB.NET)
• Mỗi kiểu dữ liệu có kích thước xác định
27
Kiểu dữ liệu (tt)
28
Kiểu dữ liệu (tt)
Kiểu tham trị (value type)
• Lưu trữ trong vùng nhớ ngăn xếp (stack)
Kiểu tham chiếu (reference type)
• Địa chỉ lưu trữ trong ngăn xếp (stack)
• Dữ liệu thực được lưu trữ trong vùng nhớ Heap
29
Chuyển đổi kiểu dữ liệu
Chuyển đổi ngầm (implicity): quá trình chuyển
đổi diễn ra tự động và đảm bảo không bị mất mát
dữ liệu
Ví dụ: short x=5;
int y=x;
Chuyển đổi tường minh (explicity) sử dụng
toán tử chuyển đổi (cast operator)
Ví dụ: double a = 34.5;
int b = (int) a;
30
Chuyển đổi kiểu dữ liệu (tt)
Dùng Convert: Convert.ToDataType(Source value)
Ví dụ:
string s1 = “50.5”;
double x = Convert.ToDouble(s1);
int y = Convert.ToInt32(s1);
31
Biến và hằng số (Variables and Constants)
Biến (variable):
• Một vùng nhớ có định kiểu
• Có thể gán và thay đổi được giá trị
• Các biến phải được khởi gán trước khi sử dụng,
nếu không, trình biên dịch sẽ báo lỗi
32
Ví dụ
33
Biến và hằng số (tt)
Hằng số (Constant)
• Là biến số nhưng không thể thay đổi giá trị sau
khi khởi gán.
Ví dụ:
const int myConst=32;
myConst = 30;
34
Biến và hằng số (tt)
Trong C#, chúng ta nên đặt tên các biến, các
phương thức, các lớp theo khuyến cáo của
Microsoft
• Tên biến: bắt đầu bằng chữ thường (VD:
someName)
• Tên phương thức và các thành phần khác: bắt
đầu bằng chữ hoa (VD: SomeOtherMethod)
35
Các câu lệnh và cấu trúc điều khiển
Một chương trình C# là một dãy các câu lệnh
(statements)
Mỗi câu lệnh kết thúc bởi dấu “;”
Các câu lệnh được xử lý tuần tự theo chiều từ trên
xuống dưới (trừ các câu lệnh điều khiển: lệnh
nhảy, lệnh lặp…)
Ví dụ:
int x; // a statement
x = 23; // another statement
int y = x; // yet another statement
36
Lệnh nhảy không điều kiện
Có hai trường hợp phát sinh lệnh nhảy không điều
kiện:
• Có lời gọi một phương thức: dừng phương thức
hiện tại và chuyển sang (nhảy không điều kiện)
thực hiện phương thức vừa triệu gọi, sau khi
thực hiện xong, trở về phương thức trước đó.
• Sử dụng một trong số các lệnh nhảy không điều
kiện: goto, break, continue, return hoặc throw
37
Lệnh nhảy có điều kiện
Câu lệnh: if…else
Câu lệnh điều kiện lồng (Nested if)
Câu lệnh chọn: switch…case
38
Lệnh nhảy có điều kiện (tt)
Câu lệnh: if…else
if (Biểu thức điều kiện)
Công việc 1;
[else Công việc 2;]
Ví dụ: Nhập một số, cho biết tính chẵn lẻ của số
vừa nhập
39
Ví dụ 1.1
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
int n;
Console.Write("nhap so n:");
n=Convert.ToInt32( Console.ReadLine ());
if ((n % 2) == 0)
Console.WriteLine(n + " la so chan");
else
Console.WriteLine(n + " la so le");
Console.ReadLine();
}
}
}
40
Lệnh nhảy có điều kiện (tt)
Câu lệnh switch:
switch (biểu thức cần kiểm tra)
{
case trường_hợp:
{Các câu lệnh
Lệnh nhảy (break, continue)}
[default: Các câu lệnh cho trường hợp
mặc định]
}
Ví dụ: Nhập vào một số, in ra màn hình dạng chữ
của số đó.
41
Ví dụ 1.2
class Program
{
static void Main(string[] args)
{
int n;
Console.Write("nhap so n (0<n<5):");
n=Convert.ToInt32( Console.ReadLine ());
switch (n)
{
case 1: { Console.WriteLine(n + ": số một"); break; }
case 2: { Console.WriteLine(n + ": số hai"); break; }
case 3: { Console.WriteLine(n + ": số ba"); break; }
case 4: { Console.WriteLine(n + ": số bốn"); break; }
default:
{ Console.WriteLine(n + " số khác"); break; }
}
Console.ReadLine();
}
}
42
Các lệnh lặp
Vòng lặp for
Vòng lặp while
Vòng lặp do…while
Vòng lặp foreach : sử dụng để lặp qua các phần tử
của một mảng hay một tập hợp
43
Vòng lặp for
for ( [Khởi tạo]; [Biểu thức kiểm tra]; [Lệnh lặp])
Công việc
Ví dụ: In ra màn hình 10 số nguyên dương đầu tiên
44
Ví dụ 1.3
class Program
{
static void Main(string[] args)
{
Console.WriteLine("10 so nguyen duong dau tien");
for(int i=1;i<=10;i++)
{
Console.WriteLine(i);
}
Console.ReadLine();
}
}
45
Vòng lặp while
while (Biểu thức kiểm tra ) Công việc
class Program
{
static void Main(string[] args)
{
Console.WriteLine("10 so nguyen duong dau tien");
int i = 1;
while(i<=10)
{
Console.WriteLine(i);
i++;
}
Console.ReadLine();
}
}
46
Vòng lặp do… while
do Công việc while Biểu thức kiểm tra
class Program
{
static void Main(string[] args)
{
Console.WriteLine("10 so nguyen duong dau tien");
int i = 0;
do
{
i++;
Console.WriteLine(i);
} while (i < 10);
Console.ReadLine();
}
}
47
Các toán tử (Operators)
Toán tử được phân thành nhiều loại khác nhau
• Toán tử gán (assignment operator): =
• Toán tử số học (arithmetic operators): +, -, * …
• Toán tử tăng, giảm (increment and decrement
operators): ++, --, -=, *= …
• Toán tử quan hệ (relational operators): ==, !=
…
• Toán tử logic (logical operators): &&, || …
• Toán tử ba thành phần (Ternary Operator)
conditional-expression ? expression1 : expression2
48
Bài tập chương 1
Bài 1: Viết chương trình nhập vào 2 số thực a,b.
Tính tổng, hiệu, tích, thương của 2 số đó.
Bài 2: Nhập ba số thực a, b, c. In ra giá trị trung
bình cộng và trung bình nhân của chúng:
Bài 3: Viết chương trình giải và biện luận phương
trình bậc hai: ax2 + bx + c = 0, trong đó các hệ số
a, b, c ∈ R nhập từ bàn phím.
3:,
3
: abcTBNcbaTBC =++=
49
Bài tập chương 1 (tt)
Bài 4: Viết chương trình nhập ba số a, b, c. Kiểm
tra ba số đó có thoả mãn là độ dài 3 cạnh của một
tam giác? Nếu thỏa mãn tính chu vi và diện tích
của tam giác đó.
Bài 5: Viết chương trình tính
222
...21
...321
n
nS
+++
++++
=
n
nS
2...42
...21 333
+++
+++
=