KỸ THUẬT LẬP TRÌNH BÀI TẬP THỰC HÀNH

54 3 0
KỸ THUẬT LẬP TRÌNH BÀI TẬP THỰC HÀNH

Đ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

ĐẠI HỌC NGOẠI NGỮ - TIN HỌC TP.HCM KHOA CÔNG NGHỆ THƠNG TIN KỸ THUẬT LẬP TRÌNH BÀI TẬP THỰC HÀNH THÁNG 03/2021 NỘI DUNG Các kiểu liệu Các câu lệnh Kỹ thuật debug Buổi Tư logic tính tốn 13 Buổi Kỹ thuật xử lý bảng 17 Buổi Kỹ thuật giá trị lính canh đặt biến cờ 27 Buổi Kỹ thuật mảng đánh dấu mảng đếm 31 Buổi Kỹ thuật xếp tìm kiếm 35 Buổi Kỹ thuật đệ quy 39 Buổi Kỹ thuật Đóng gói 43 Buổi Kỹ thuật Thừa kế Đa hình 49 Buổi Kỹ thuật Operator overloading 53 Các kiểu liệu Các kiểu liệu thường hay sử dụng lập trình • Scalar • Danh sách (mảng chiều) • Bảng (matrix hay mảng hai chiều) Scalar Dữ liệu Miền giá trị int −2 tỷ đến tỷ double −1.79 × 10!"#$ → 1.79 × 10"#$ char Ký tự (0 → 65535) string Chuỗi double score; int num; string name; Danh sách Dãy 𝑛 phần tử 𝑎 = (𝑎# , 𝑎% , … , 𝑎&!% ) chứa • Số nguyên, số thực: dãy số • Chuỗi (string): danh sách họ tên sinh viên, danh sách sản phẩm, … double[] scores; int num; num = … scores = new int[num]; string[] names; int num; num = … names = new string[num]; Biên soạn: Tôn Quang Toại Trang Bảng • Dữ liệu dạng bảng (hay cịn gọi ma trận) chứa bảng số nguyên, số thực, … • Ký hiệu: 𝑎[𝑚 𝑥 𝑛] int[,] a; int m, n; m = … n = … a = new int[m, n]; … Biên soạn: Tôn Quang Toại Trang Các câu lệnh Các lệnh ngôn ngữ lập trình C# • Nhập xuất liệu, Xuất số lẻ • if • for • while • foreach • do…while Nhập/Xuất liệu • Nhập dòng giá trị int inputInt = Convert.ToInt32(Console.ReadLine()); double inputDouble = Convert.ToInt32(Console.ReadLine()); • Nhập dòng nhiều giá trị string[] tokens = Console.ReadLine().Split(); int a = Convert.ToInt32(tokens[0]); int b = Convert.ToInt32(tokens[1]); • Xuất liệu Console.Write(inputInt); Console.Write(inputInt + “ ” + inputDouble); Console.Write("Num {0} {1}", inputInt, inputDouble); Console.Write($"Text {inputInt} {inputDouble}"); Console.WriteLine(); • Xuất số lẻ Console.Write("Text {0:0.00}", num2); Biên soạn: Tôn Quang Toại Trang Câu lệnh rẽ nhánh if if (điều kiện) { } if (điều kiện) { } else { } • Phép tốn logic o So sánh: >, =, 0, 𝑛 ≥ 0) Viết hàm đệ quy tính 𝑎& theo cơng thức đệ quy sau 𝑎& = ž 𝑎× & 𝑎' &!% 𝑎 ' × 1, & × 𝑎' , &!% 𝑎 ' , 𝑛ế𝑢 𝑛 = 𝑛ế𝑢 𝑛 𝑐ℎẵ𝑛 𝑛ế𝑢 𝑛 𝑙ẻ Input • Dịng chứa hai số nguyên 𝑎 𝑛 Output • Giá trị 𝑎& Biên soạn: Tôn Quang Toại Trang 39 Ví dụ Input Output 64 Bài Tháp HaNoi Có cột đặt tên 𝐴, 𝐵, 𝐶 Cột 𝐴 chứa 𝑛 đĩa đĩa nhỏ đặt đĩa lớn (xem hình phía dưới) 𝑩 𝑨 𝑪 Ba cột cột A chứa 𝑛 = đĩa Hãy thực bước để chuyển 𝑛 đĩa từ cột 𝐴 sang cột 𝐶 với ràng buộc sau: • Mỗi lần di chuyển đĩa (đĩa nằm cột) từ cột sang cột khác (có thể từ cột 𝐴 sang 𝐵 hay sang 𝐶; từ cột 𝐵 sang 𝐴 hay sang 𝐶; từ cột 𝐶 sang 𝐴 hay sang 𝐵) • Sau bước chuyển, cột, đĩa lớn ln nằm dưới, đĩa nhỏ nằm Input • Dịng chứa số ngun 𝑛 Output • Gồm nhiều dịng, mơ tả bước di chuyển đĩa, theo định dạng: Chuyển đĩa từ cột X sang cột Y Trong 𝑋, 𝑌 ∈ {𝐴, 𝐵, 𝐶} Ví dụ Input Biên soạn: Tôn Quang Toại Output Chuyển đĩa từ cột A sang cột B Chuyển đĩa từ cột A sang cột C Chuyển đĩa từ cột B sang cột C Trang 40 Ví dụ Input Chuyển Chuyển Chuyển Chuyển Chuyển Chuyển Chuyển 1 1 1 đĩa đĩa đĩa đĩa đĩa đĩa đĩa từ từ từ từ từ từ từ Output cột A cột A cột C cột A cột B cột B cột A sang sang sang sang sang sang sang cột cột cột cột cột cột cột C B B C A C C Hướng dẫn: Sử dụng phương pháp chia để trị • Chuyển (𝑛 − 1) đĩa từ cột 𝐴 sang cột 𝐵, lấy cột 𝐶 làm cột trung gian • Chuyển đĩa từ cột 𝐴 sang cột 𝐶 • Chuyển (𝑛 − 1) đĩa từ cột 𝐵 sang cột 𝐶, lấy cột 𝐴 làm cột trung gian Bài Đọc số Cho số nguyên dương 𝑛 (0 ≤ 𝑛 ≤ × 10* ) Hãy chuyển số 𝑛 thành câu tiếng Việt Ví dụ: 123: trăm hai mươi ba 104: trăm lẻ bốn 1234: ngàn hai trăm ba mươi bốn Input • Dịng chứa số ngun 𝑛 Output • Dịng chứa chuỗi kết Ví dụ Input 123 Output trăm hai mươi ba Hướng dẫn: sử dụng kỹ thuật đệ quy phương pháp chia để trị Biên soạn: Tôn Quang Toại Trang 41 Buổi Kỹ thuật Đóng gói Sau hồn thành thực hành sinh viên có thể: Sử dụng kỹ thuật hướng đối tượng theo ngun tắc đóng gói: • Tạo lớp • Tạo đối tượng • Tạo danh sách đối tượng Bài Phân số Xây dựng lớp PhanSo để biểu diễn phân số với thuộc tính TuSo MauSo nguyên (chỉ truy cập bên lớp) Định nghĩa phương thức sau: • Khởi tạo phân số (phân số rút gọn sau khởi tạo) • Nhập giá trị phân số từ bàn phím • In giá trị phân số hình • Tính giá trị thập phân phân số • Cộng phân số • Trừ phân số • Nhân phân số • Chia phân số Viết chương trình nhập vào phân số In hình: • Giá trị phân số sau rút gọn • Giá trị thập phân phân số • Kết cộng, trừ, nhân, chia phân số Hướng dẫn: • Bước 1: Tạo Console App (.NET Framework) Visual Studio • Bước 2: Tạo Class cách click chuột phải vào tên Project Add Class Biên soạn: Huỳnh Thành Lộc Trang 43 • Bước 3: Đặt tên cho Class PhanSo Add Biên soạn: Huỳnh Thành Lộc Trang 44 • Bước 4: Định nghĩa lớp PhanSo theo cấu trúc sau: class PhanSo { private int tuSo; private int mauSo; //Ham tinh Uoc so chung lon nhat cua so nguyen a, b private int GCD(int a, int b) { } public PhanSo(int ts, int ms) { } public void Nhap() { } public void In() { } public double GiaTriThapPhan() { } public PhanSo Cong(PhanSo p) { } public PhanSo Tru(PhanSo p) { } public PhanSo Nhan(PhanSo p) { } public PhanSo Chia(PhanSo p) { } } • Bước 5: Quay trở lại hàm Main(…) Khai báo biến kiểu PhanSo thực thao tác tính tốn đối tượng kiểu PhanSo vừa tạo Biên soạn: Huỳnh Thành Lộc Trang 45 Bài Point2D Xây dựng lớp Point2D biểu diễn điểm không gian chiều với tọa độ nguyên Lớp Point2D cung cấp thao tác thông dụng điểm sau: • Các constructor khởi tạo: - Point2D(): khởi tạo điểm gốc tọa độ (0,0) - Point2D(int x, int y): khởi tạo điểm có hồnh độ x, tung độ y - Point2D(Point2D p): khởi tạo điểm vị trí điểm p • Nhập tọa độ cho điểm từ bàn phím: void Input() • Trả chuỗi biểu diễn tọa độ điểm dạng “(x, y)”: string ToString() • Di chuyển điểm đến tọa độ mới: void Move(int x, int y) • Kiểm tra xem điểm có phải gốc tọa độ (0,0) hay khơng: bool isOrigin() • Hàm tính khoảng cách từ điểm tới điểm p: double Distance(Point2D p) • Hàm tĩnh tính khoảng cách điểm p1 p2: static double Distance(Point2D p1, Point2D p2) Bài Triangle Xây dựng lớp Triangle biểu diễn thông tin tam giác không gian chiều với đỉnh kiểu Point2D Lớp Triangle cung cấp thao tác thông dụng điểm sau: • Constructor khởi tạo: - Triangle(Point2D p1, Point2D p2, Point2D p3) • Tính chu vi tam giác: void Perimeter(int x, int y) • Tính diện tích tam giác: double Area() Bài Rectangle Xây dựng lớp Rectangle để biểu diễn hình chữ nhật với thuộc tính mơ tả chiều dài chiều rộng Định nghĩa phương thức sau: • Các constructor khởi tạo có tham số khơng có tham số • Nhập thơng tin hình chữ nhật • Xuất thơng tin hình chữ nhật: “Rectangle[length=?, width=?]” • Tính chu vi hình chữ nhật • Tính diện tích hình chữ nhật • Tính đường chéo hình chữ nhật Biên soạn: Huỳnh Thành Lộc Trang 46 Bài Date Xây dựng lớp Date theo thiết kế sau: Bài Book Xây dựng lớp Author Book theo thiết kế sau: Biên soạn: Huỳnh Thành Lộc Trang 47 Biên soạn: Huỳnh Thành Lộc Trang 48 Buổi Kỹ thuật Thừa kế Đa hình Sau hoàn thành thực hành sinh viên có thể: Sử dụng kỹ thuật hướng đối tượng theo nguyên tắc thừa kế: • Tạo lớp cha • Tạo lớp • Overriding methods Bài Xây dựng lớp Person lớp Student, Staff kế thừa từ lớp Person thiết kế sau: Biên soạn: Huỳnh Thành Lộc Trang 49 Hướng dẫn: • Bước 1: Tạo lớp sở Person class Person { public virtual void toString() { } } • Bước 2: Tạo lớp Student kế thừa từ lớp Person - Tạo lớp đặt tên Student - Khai báo lớp Student kế thừa từ lớp Person class Student : Person { } - Khai báo thuộc tính riêng lớp Student - Xây dựng phương thức cho lớp Student - Overriding phương thức toString() class Student : Person { public override void toString() { } } • Bước 3: Tạo lớp Staff kế thừa từ lớp Person tương tự lớp Student Biên soạn: Huỳnh Thành Lộc Trang 50 Bài Xây dựng chương trình theo sơ đồ lớp đây: Biên soạn: Huỳnh Thành Lộc Trang 51 Buổi Kỹ thuật Operator overloading Sau hồn thành thực hành sinh viên có thể: Sử dụng kỹ thuật operator overloading Bài Số phức Xây dựng lớp Complex biểu diễn khái niệm số phức với hai thành phần liệu phần thực phần ảo • Định nghĩa phương thức xuất, nhập, cộng, trừ, nhân, chia hai số phức • Overriding operator +, -, *, / lớp số phức Viết chương trình cho phép nhập vào hai số phức, in kết phép toán cộng, trừ, nhân, chia hai số phức kể Bài Phân số Overloading operator +, -, *, /, ==, !=, >,

Ngày đăng: 21/07/2022, 06:41