Bài giảng Ngôn ngữ lập trình nâng cao - Bài 2 - Lý Anh Tuấn
Nội dung:
Các toán tử
Hàm xuất/nhập
Cấu trúc điều khiển
Cấu trúc lặp
Phương thức
Mảng một chiều/ ma trận
Chuỗi ký tự
Tóm tắt nội dung Bài giảng Ngôn ngữ lập trình nâng cao - Bài 2 - Lý Anh Tuấn, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
phương thức.
Tham số là tham chiếu
Slide 40 of 25 Ver. 1.0
Object-Oriented Programming Using C#
Dùng từ khóa ref bắt buộc phải khởi gán giá trị
ban đầu cho đối số trước khi truyền vào khi gọi
phương thức (Nếu dùng out thì không cần thiết)
Tham số là tham chiếu
Slide 41 of 25 Ver. 1.0
Object-Oriented Programming Using C#
Đánh giá kết quả khi viết chương trình với hai
trường hợp sau
1. Trường hợp không dùng tham chiếu
2. Trường hợp dùng tham chiếu: ref
Hoán vị 2 số nguyên a, b cho trước
Slide 42 of 25 Ver. 1.0
Object-Oriented Programming Using C#
static void HoanVi(int a, int b)
{
int tam = a;
a = b;
b = tam;
Console.WriteLine("Trong HoanVi: a = " + a + ";b = " + b);
}
static void Main(string[] args)
{
int a = 5, b = 21;
Console.WriteLine("Truoc HoanVi: a = {0}; b = {1}", a, b);
HoanVi(a, b);
Console.WriteLine("Sau HoanVi: a = " + a + ";b = " + b);
}
Không dùng tham chiếu
Slide 43 of 25 Ver. 1.0
Object-Oriented Programming Using C#
static void HoanVi(ref int a, ref int b)
{
int tam = a;
a = b;
b = tam;
Console.WriteLine("Trong HoanVi: a = " + a + ";b = " + b);
}
static void Main(string[] args)
{
int a = 5, b = 21;
Console.WriteLine("Truoc HoanVi: a = {0}; b = {1}", a, b);
HoanVi(ref a, ref b);
Console.WriteLine("Sau HoanVi: a = " + a + ";b = " + b);
}
Dùng tham chiếu
Slide 44 of 25 Ver. 1.0
Object-Oriented Programming Using C#
static void Nhap(out int a, out int b)
{
Console.Write("Nhap a: ");
a = int.Parse(Console.ReadLine());
Console.Write("Nhap b: ");
b = int.Parse(Console.ReadLine());
}
static int Tong(int a, int b)
{
return a + b;
}
static void Main(string[] args)
{
int a, b;
Nhap(out a, out b);
s=Tong(a, b);
Console.WriteLine(“{0}+{1}={2}”, a, b, s);
}
Ví dụ: sử dụng tham chiếu out
Slide 45 of 25 Ver. 1.0
Object-Oriented Programming Using C#
• Mảng là một tập hợp các phần tử cùng một
kiểu dữ liệu liên tiếp nhau và được truy xuất
thông qua chỉ số.
• Chỉ số bắt đầu từ 0.
Kiểu mảng
Slide 46 of 25 Ver. 1.0
Object-Oriented Programming Using C#
• Mảng một chiều
[]=new [Số phần tử];
• VD: Khai báo mảng số nguyên arr gồm 5
phần tử
int [] arr = new int [5];
Kiểu mảng
Slide 47 of 25 Ver. 1.0
Object-Oriented Programming Using C#
• Mảng hai chiều
[,]=new [Số dòng, số cột];
• VD: Khai báo ma trận số nguyên mt gồm 5 dòng và 3 cột
long [ ,] mt = new long [5, 3];
Kiểu mảng
Slide 48 of 25 Ver. 1.0
Object-Oriented Programming Using C#
• Khởi tạo mảng
int [] a = new int[5] {4, 7, 1, 21, 9};
hoặc: int [] a = {4, 7, 1, 21, 9};
• Truy xuất mảng: [vị trí];
Vị trí được đánh số từ 0 đến số phần tử -1
Ví dụ: a[4] sẽ cho giá trị là 9
Thao tác cơ bản trên mảng 1 chiều
Slide 49 of 25 Ver. 1.0
Object-Oriented Programming Using C#
Nhập xuất mảng một chiều:
public static void Main()
{
int n;
Console.Write("Nhap kich thuoc mang: ");
n = int.Parse(Console.ReadLine());
int[] a = new int[n];
Nhap(a, n);
Xuat(a, n);
}
}
Thao tác cơ bản trên mảng 1 chiều
Slide 50 of 25 Ver. 1.0
Object-Oriented Programming Using C#
static void Nhap(int[] a, int n)
{
for (int i = 0; i < n; i++)
{
Console.Write("Nhap phan tu thu {0}:", i);
a[i] = int.Parse(Console.ReadLine());
}
}
Thao tác cơ bản trên mảng 1 chiều
Slide 51 of 25 Ver. 1.0
Object-Oriented Programming Using C#
static void Xuat(int[] a, int n)
{
for(int i = 0; i < n; i++)
{
Console.Write(a[i] + "\t");
}
}
Thao tác cơ bản trên mảng 1 chiều
Slide 52 of 25 Ver. 1.0
Object-Oriented Programming Using C#
Hoặc
static void Xuat(int[] a)
{
foreach(int k in a)
{
Console.Write(k + "\t");
}
}
Thao tác cơ bản trên mảng 1 chiều
Slide 53 of 25 Ver. 1.0
Object-Oriented Programming Using C#
• Khởi tạo ma trận
int[,] mt = new int[3, 5] { {2, 4, 8, 9, 7},
{4, 8, 11, 10, 3},
{21, 7, 6, 5, 0}};
hoặc
int[,] mt = { {2, 4, 8, 9, 7},
{4, 8, 11, 10, 3},
{21, 7, 6, 5, 0}};
• Truy xuất ma trận: [vị trí dòng, vị trí cột];
Vị trí được đánh số từ 0
VD: mt[1, 3] sẽ cho giá trị là 10
Thao tác cơ bản trên ma trận
Slide 54 of 25 Ver. 1.0
Object-Oriented Programming Using C#
Nhập xuất ma trận:
public static void Main()
{
int d, c;
Console.Write("Nhap so dong: ");
d = int.Parse(Console.ReadLine());
Console.Write("Nhap so cot: ");
c = int.Parse(Console.ReadLine());
int[,] mt = new int [d, c];
Nhap(mt, d, c);
Xuat(mt, d, c);
}
Thao tác cơ bản trên ma trận
Slide 55 of 25 Ver. 1.0
Object-Oriented Programming Using C#
static void Nhap(int[,] mt, int d, int c)
{
for (int i = 0; i < d; i++)
for (int j = 0; j < c; j++)
{
Console.Write("Nhap phan tu [{0},{1}]: ", i, j);
mt[i,j] = int.Parse(Console.ReadLine());
}
}
Thao tác cơ bản trên ma trận
Slide 56 of 25 Ver. 1.0
Object-Oriented Programming Using C#
static void Xuat(int[,] mt, int d, int c)
{
for (int i = 0; i < d; i++)
{
for (int j = 0; j < c; j++)
Console.Write(mt[i,j] + "\t");
Console.WriteLine();
}
}
Thao tác cơ bản trên ma trận
Slide 57 of 25 Ver. 1.0
Object-Oriented Programming Using C#
• Kiểu string có thể chứa nội dung không giới
hạn, vì đây là kiểu dữ liệu đối tượng được
chứa ở bộ nhớ heap.
• Khai báo:
string s = “Nguyen Van A”;
String (kiểu chuỗi)
Slide 58 of 25 Ver. 1.0
Object-Oriented Programming Using C#
Ghép chuỗi: +
string a = "Xin";
string b = "chào";
string c = a + " " + b; // c = "Xin chào“
Hoặc
string.Concat(a, “ “, b); a = “Xin Chào”
Thao tác cơ bản trên chuỗi ký tự
Slide 59 of 25 Ver. 1.0
Object-Oriented Programming Using C#
Lấy chuỗi con: Substring()
string s;
s = "Lay chuoi con".Substring(4);
Lấy chuỗi con tính từ vị trí thứ 4 trở về sau: s = "chuoi
con“
s = "Lay chuoi con".Substring(4, 5);
Lấy chuỗi con từ vị trí thứ 4 và lấy chuỗi con có chiều
dài là 5:
s = "chuoi“
Thao tác cơ bản trên chuỗi ký tự
Slide 60 of 25 Ver. 1.0
Object-Oriented Programming Using C#
• Thay thế chuỗi con
Replace(chuỗi cần thay, chuỗi thay thế)
string s;
s = "thay the chuoi.".Replace('t', 'T');
s = "Thay The chuoi"
s = "thay the chuoi.".Replace("th", "TH");
s = "THay THe chuoi"
Thao tác cơ bản trên chuỗi ký tự
Slide 61 of 25 Ver. 1.0
Object-Oriented Programming Using C#
• Định dạng chuỗi:
Format (định dạng, đối số cần định dạng);
Thao tác cơ bản trên chuỗi ký tự
Slide 62 of 25 Ver. 1.0
Object-Oriented Programming Using C#
• Chiều dài chuỗi: Thuộc tính Length
string s = "Xin chao";
int n = s.Length; // n = 8
Thao tác cơ bản trên chuỗi ký tự
Slide 63 of 25 Ver. 1.0
Object-Oriented Programming Using C#
• Tách chuỗi con theo ký hiệu phân cách cho trước
string.Split(danh sách ký tự phân cách)
VD: In ra màn hình các từ trên từng dòng, mỗi từ cách
nhau bằng dấu phẩy (,) hoặc khoảng trắng
string s = "Hom nay, ngay 02 thang 03 nam 2010";
foreach (string tu in s.Split(' ', ','))
if (tu != "")
Console.WriteLine(tu);
Thao tác cơ bản trên chuỗi ký tự
Slide 64 of 25 Ver. 1.0
Object-Oriented Programming Using C#
VD: In ra từ có độ dài dài nhất trong chuỗi cho trước (từ
cách nhau bằng khoảng trắng hoặc dấu chấm câu)
string s = "Hom nay, ngay 02 thang 03 nam 2010";
string tumax = "";
foreach (string tu in s.Split(' ', ',', '.', '!', '?', ';'))
{
if (tu != "" && tu.Length > tumax.Length)
tumax = tu;
}
Console.WriteLine("Tu dai nhat: " + tumax);
Thao tác cơ bản trên chuỗi ký tự
Slide 65 of 25 Ver. 1.0
Object-Oriented Programming Using C#
1. Viết chương trình nhập vào thông tin:
• Mã số nhân viên
• Họ tên
• Hệ số lương (hs)
• Lương cơ bản (lcb)
• Phụ cấp (pc)
In tổng lương ra màn hình theo công thức:
Tổng lương = lcb*hs + pc
2. Nhập vào hai sô ́ nguyên a, b. In ra màn hình giá trị lớn nhất.
3. Cho ba số a, b, c đọc vào từ bàn phím. Hãy tìm giá trị lớn nhất
của ba sô ́ trên và in ra kết quả.
4. Viết chương trình đếm sô ́ ước số của sô ́ nguyên dương.
5. Viết một chương trình sinh ra dãy số Fibonacci lên tới 200.
Bài tập
Slide 66 of 25 Ver. 1.0
Object-Oriented Programming Using C#
6. Viết chương trình in ra màn hình hình chữ nhật đặc kích thước
(m, n nhập từ bàn phím).
Ví dụ: Nhập m=5, n=4
* * * * *
* * * * *
* * * * *
* * * * *
7. Viết chương trình tính diện tích và chu vi của hình chữ nhật.
8. Viết chương trình tính diện tích và chu vi hình tròn.
9. Nhập vào 3 sô ́ thực a, b, c và kiểm tra xem chúng có lập thành
3 cạnh của một tam giác hay không? Nếu có hãy tính diện tích,
chiều dài mỗi đường cao của tam giác và in kết quả ra màn
hình.
10. Viết chương trình nhập 2 sô ́ nguyên dương a, b. Tìm USCLN &
BSCNN.
Bài tập
Slide 67 of 25 Ver. 1.0
Object-Oriented Programming Using C#
11. Viết chương trình nhập số nguyên dương n, tính tổng các ước số
của n.
Ví dụ: Nhập n=6
Tổng các ước số từ 1 đến n: 1+2+3+6=12.
12. Nhập vào giờ, phút, giây. Kiểm tra xem giờ, phút, giây đó có hợp
lệ hay không?
13. Cho mảng 1 chiều số nguyên, hãy viết các hàm sau:
• Tìm phần tử có giá trị x
• Tìm phần tử có giá trị nhỏ nhất
• Tìm vị trí của phần tử có giá trị lớn nhất
Bài tập
Slide 68 of 25 Ver. 1.0
Object-Oriented Programming Using C#
14. Cho ma trận số nguyên, hãy viết các hàm sau:
• Tìm phần tử có giá trị x
• Tìm phần tử có giá trị nhỏ nhất
• Tìm vị trí của phần tử có giá trị lớn nhất
• Tính giá trị trung bình các phần tử trong ma trận
15. Viết hàm đếm số ký tự x cho trước trong chuỗi s
16. Viết hàm đảo các ký tự trong chuỗi s
17. Viết hàm đảo các từ của chuỗi s
18. Viết hàm xóa từ x có trong chuỗi s
Bài tập
File đính kèm:
bai_giang_lap_trinh_nang_cao_bai_2_ngon_ngu_lap_trinh_nang_c.pdf

