Lê Viết Mẫn -
Các cấu trúc điều khiển 1
v 1.0 - 10/2012
Các cấu trúc điều khiển
(phần 1)
1
Monday, October 22, 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
4. Những thành phần cơ bản của C#
Monday, October 22, 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 (Lập trình)
5. Kiểm tra / Bắt lỗi
6. [ Sửa lỗi ]
Monday, October 22, 12
Lê Viết Mẫn -
Tên bài giảng
Nội dung
4
1. Ôn tập Chủ đề Cơ bản Ngôn ngữ lập trình C#
2. Biểu thức
3. Câu lệnh điều kiện if
4. Câu lệnh lựa chọn switch
5. Kiểu dữ liệu Enum
Monday, October 22, 12
Lê Viết Mẫn -
Tên bài giảng
Cơ bản
ngôn ngữ lập trình C#
5
Monday, October 22, 12
Lê Viết Mẫn -
Cơ bản NNLT C#
Lớp & đối tượng trong C#
6
Đị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 22, 12
Lê Viết Mẫn -
Cơ bản NNLT C#
.NET Base Class Library
•
Để nghiên cứu về các lớp trong Base Class Library cung cấp
cái gì, lớp nó nằm ở assembly (tập tin .dll nào) nào, cách sử
dụng
•
Sử dụng Object Browser
•
MSDN - />7
Monday, October 22, 12
Lê Viết Mẫn -
Tên bài giảng
Các thành phần của c.t. C#
8
•
Các khai báo using
•
Các khai báo namespace
•
Các khai báo class
•
Các khai báo hàm và hàm
Main
•
Khai báo biến, sử dụng biến
•
Lời gọi hàm
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
Monday, October 22, 12
Lê Viết Mẫn -
Tên bài giảng
Các thành phần của c.t. C#
9
•
Các khai báo using
•
Các khai báo namespace
•
Các khai báo class
•
Các khai báo hàm và hàm
Main
•
Khai báo biến, sử dụng biến
•
Lời gọi hàm
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
Monday, October 22, 12
Lê Viết Mẫn -
Tên bài giảng
Các thành phần của c.t. C#
10
•
Các khai báo using
•
Các khai báo namespace
•
Các khai báo class
•
Các khai báo hàm và hàm
Main
•
Khai báo biến, sử dụng biến
•
Lời gọi hàm
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
•
Cần báo cho chương trình
Visual C# Express (hoặc trình
biên dịch) biết mình cần dùng
assembly nào
•
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
Monday, October 22, 12
Lê Viết Mẫn -
Tên bài giảng
Các thành phần của c.t. C#
11
•
Các khai báo using
•
Các khai báo namespace
•
Các khai báo class
•
Các khai báo hàm và hàm
Main
•
Khai báo biến, sử dụng biến
•
Lời gọi hàm
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
Trong môn CSLT, toàn bộ những
gì chúng ta code đều nằm trong
phần thân của lớp Program
Không cần quan tâm đến việc tạo
lớp mới
Monday, October 22, 12
Lê Viết Mẫn -
Tên bài giảng
Các thành phần của c.t. C#
12
•
Các khai báo using
•
Các khai báo namespace
•
Các khai báo class
•
Các khai báo hàm và hàm
Main
•
Khai báo biến, sử dụng biến
•
Lời gọi hàm
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
Monday, October 22, 12
Lê Viết Mẫn -
Tên bài giảng
Các thành phần của c.t. C#
13
•
Các khai báo using
•
Các khai báo namespace
•
Các khai báo class
•
Các khai báo hàm và hàm
Main
•
Khai báo biến, sử dụng biến
•
Lời gọi hàm
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
Monday, October 22, 12
Lê Viết Mẫn -
Tên bài giảng
Biến và kiểu dữ liệu
•
Phải được khai báo trước khi sử dụng
•
Tên của biến phải tuân theo quy tắc đặt tên
•
Khi khai báo mà không gán dữ liệu thì biến sẽ nhận giá trị mặc
định của kiểu dữ liệu đó
•
Kiểu dữ liệu được phân ra
14
int dollars;
int money = 217;
double x, pi = 3.14159;
char begin = ‘A’, end = ‘Z’;
0, .0, false, ‘\0’, null
i 17
j 17
s
s1 0x0a10
0x0a10
Hello
stack heapstack
Kiểu trị Kiểu tham chiếu
Monday, October 22, 12
Lê Viết Mẫn -
Tên bài giảng
Biến và kiểu dữ liệu
•
Kiểu dữ liệu cơ bản và kiểu dữ liệu người dùng định nghĩa
•
Lựa chọn kiểu dữ liệu cho biến phụ thuộc vào phạm vi dữ liệu
mà biến đó sẽ nhận
•
một biến dùng để lưu điểm thi thì cần dùng kiểu float
•
một biến dùng để lưu tuổi của một người thì chỉ cần dùng kiểu byte
•
Cách xác định kiểu số
15
float C, F = 68;
C = (5 / 9) * (F - 32);
C = (F - 32) * (5 / 9);
C = (F - 32) * 5 / 9;
C = (F - 32) * (5f / 9);
Monday, October 22, 12
Lê Viết Mẫn -
Tên bài giảng
Biến và kiểu dữ liệu
•
Tính tương thích giữa các kiểu dữ liệu
•
dùng khi gán dữ liệu kiểu này cho một biến có kiểu dữ liệu khác
•
(Chuyển đổi ngầm định - implicitly) theo chiều mũi tên thì gán được
•
(Chuyển đổi tường minh) ngược chiều thì phải thực hiện ép kiểu và có thể
xảy ra mất dữ liệu hoặc giá trị không mong muốn
•
Chú ý
•
Không thể khai báo nhiều biến cùng tên trong cùng một phạm vi
•
Có thể khai báo nhiều biến cùng tên trong các phạm vi khác nhau
16
short x = 5;
int y = x;
int i = (int)3.14159;
int i = (int)(3.14159 + 2.7);
uint i = (uint)75;
double x = (double)1f/3;
long i = 3000000000;
int j = (int)i; // -1294967296
Monday, October 22, 12
Lê Viết Mẫn -
Tên bài giảng
Phạm vi của biến
•
Phạm vi mà biến vẫn còn có thể được sử dụng
•
Thông thường, sẽ nằm trong một cặp dấu ngoặc nhọn
•
Hết phạm vi này, biến và vùng dữ liệu của biến đó sẽ bị huỷ
•
Đối với biến có kiểu dữ liệu tham chiếu, vùng dữ liệu trong heap sẽ bị huỷ sau một khoảng thời
gian không được sử dụng bởi Garbage Collector
17
Monday, October 22, 12
Lê Viết Mẫn -
Tên bài giảng
Hằng
•
Khai báo hằng trong phạm vi một lớp và bên ngoài các hàm
•
Hằng phải được gán giá trị khi khởi tạo
•
Chú ý
•
Không thể khởi gán hằng từ giá trị của một biến
•
Trong khai báo hằng không thể dùng từ khoá static
18
const float PI = 3.14159;
const char NewLine = '\n';
const int PathWidth = 100;
const int SquarePi = Pi * Pi;
Monday, October 22, 12
Lê Viết Mẫn -
Tên bài giảng
Các thành phần của c.t. C#
19
•
Các khai báo using
•
Các khai báo namespace
•
Các khai báo class
•
Các khai báo hàm và hàm
Main
•
Khai báo biến, sử dụng biến
•
Lời gọi hàm
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
Monday, October 22, 12
Lê Viết Mẫn -
Tên bài giảng
System.String
•
Cho đến hiện tại, chúng ta dùng các chuỗi ký tự với hai hàm :
•
Console.Write()
•
Console.WriteLine()
20
Console.Write(“Nhiet do C la ” + c);
Console.Write(“Nhiet do C la ” + c.ToString());
Console.Write(“Nhiet do C cua do {1} do F la {0}”, c, f);
Monday, October 22, 12
Lê Viết Mẫn -
Tên bài giảng
Xuất dữ liệu ra màn hình
•
Có thể xuất dữ liệu cho mọi kiểu dữ liệu sử dụng hàm Write
hoặc WriteLine của lớp Console
•
Cú pháp của token giữ chỗ
•
n - số thứ tự của token giữ chỗ, bắt đầu từ 0
•
width - độ rộng của vùng được dùng để in giá trị.
•
Giá trị này là dương - canh lề bên phải, là âm - canh lề bên trái
•
format - ký tự định dạng cho kiểu số
•
precision - số chữ số phần thập phân hoặc số chữ số của số
21
Console.Write(intVal);
Console.Write(intVal.ToString());
Console.Write(“Nhiet do C la ” + c);
Console.Write(“Nhiet do C la {0}”, c);
{n[,width][:format[precision]]}
{0,10:f2}
{1,-5}
{2:d}
{3:x}
Monday, October 22, 12
Lê Viết Mẫn -
Tên bài giảng
Ký tự định dạng cho số
22
d, D
Định dạng số thập phân (số nguyên với các số 0 được điền ở
đầu). precision = số chữ số
-xxxxx
f, F
Định dạng số dấu chấm động cố định (số thực)
precision = số chữ số phần thập phân (mặc định = 2)
-xxxxx.xx
n, N
Định dạng số cơ bản (dấu phẩy để phân cách phần ngàn).
precision = số chữ số phần thập phân (mặc định = 2)
-xx,xxx.xx
e, E
Định dạng số mũ khoa học
precision = số chữ số phần thập phân
-x.xxxE+xxx
c, C
Định dạng tiền tệ
precision = số chữ số phần thập phân
$xx,xxx.xx
x, X
Định dạng số thập lục phân
precision = số chữ số
xxx
Xem thêm trang 2-79, sách Lập trình Visual C# thế nào ? (Dương Quang Thiện)
Monday, October 22, 12
Lê Viết Mẫn -
Tên bài giảng
Biểu thức
23
Monday, October 22, 12
Lê Viết Mẫn -
Tên bài giảng
Biểu thức
24
•
Các câu lệnh trả ra một giá trị
•
Biểu thức số
•
Các toán hạng là có kiểu số hoặc ký tự
•
Riêng với toán tử ++ và thì toán hạng phải là kiểu số hoặc kiểu liệt kê
•
Kiểu của giá trị trả về là kiểu số lớn nhất trong các kiểu của các toán hạng,
nhưng ít nhất phải là int
myVariable = 57; // trả ra giá trị là 57
a = b = c = d = e = 20;
int + long => long
short + int => int
short + short => int
Monday, October 22, 12
Lê Viết Mẫn -
Tên bài giảng
25
Biểu thức điều kiện (1/2)
==
so sánh bằng
counter == 0
!=
so sánh khác
counter != 0
>
lớn hơn
counter > 0
<
nhỏ hơn
counter < 0
>=
lớn hơn hoặc bằng
counter >= 0
<=
nhỏ hơn hoặc bằng
counter <= 0
&&
phép AND
(0 < i) && (i < 10)
||
phép OR
(i <= 0) || (i >= 10)
!
phép NOT
!done
Các toán tử quan hệ và logic
E
1
E
2
E
1
&& E
2
FALSE
FALSE
FALSE
FALSE
TRUE
FALSE
TRUE
FALSE
FALSE
TRUE
TRUE
TRUE
E
1
E
2
E
1
|| E
2
FALSE
FALSE
FALSE
FALSE
TRUE
TRUE
TRUE
FALSE
TRUE
TRUE
TRUE
TRUE
E
!E
FALSE
TRUE
TRUE
FALSE
Kết quả trả về có kiểu bool
Monday, October 22, 12