Bài giảng Cơ sở lập trình: Chương 8 - Lê Viết Mẫn

23 7 0
Bài giảng Cơ sở lập trình: Chương 8 - Lê Viết Mẫn

Đ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

Bài giảng Cơ sở lập trình: Chương 8 - Các cấu trúc dữ liệu khác. Nội dung chính trong chương này gồm có: Cấu trúc (struct), cấu trúc với bảng dữ liệu, một số thao tác với struct, truyền struct cho hàm, trả về struct, cấu trúc lồng nhau, tập tin (file),... Mời các bạn cùng tham khảo.

Các cấu trúc liệu khác v 1.0 - 11/2012 Lê Viết Mẫn - lvman@hce.edu.vn Monday, September 9, 13 CTDL khác học Programs = Data Structure + Algorithms Cấu trúc chương trình Tuần tự Rẽ nhánh Hàm Lặp Tổ chức liệu Kiểu liệu bool char short int long Lê Viết Mẫn - lvman@hce.edu.vn Monday, September 9, 13 float double string array CTDL khác học Programs = Data Structure + Algorithms Cấu trúc chương trình Tuần tự Rẽ nhánh Hàm Lặp Tổ chức liệu Kiểu liệu bool char short int long Lê Viết Mẫn - lvman@hce.edu.vn Monday, September 9, 13 float double string array struct file CTDL khác Nội dung Cấu trúc Tập tin Lê Viết Mẫn - lvman@hce.edu.vn Monday, September 9, 13 CTDL khác Cấu trúc struct Đây lý thuyết cấu trúc theo Lập trình Cấu trúc (sử dụng ngơn ngữ C#), nên có nhiều khác biệt so với cấu trúc theo Lập trình Hướng đối tượng C# Lê Viết Mẫn - lvman@hce.edu.vn Monday, September 9, 13 CTDL khác Cấu trúc • Tập hợp biến tham chiếu tên • Khai báo cấu trúc “khuôn” (không cấp phát nhớ) • Các cấu trúc khai báo class Program hàm struct Name { ! variable declarations; } • struct Point { ! public int X; public int Y; } • Các khai báo biến (variable declarations) có kiểu ngoại trừ kiểu struct khai báo • Mỗi biến gọi thành viên hay trường Trong C#, khai báo struct nghĩa định nghĩa kiểu trị Lê Viết Mẫn - lvman@hce.edu.vn Monday, September 9, 13 CTDL khác Cấu trúc vs bảng liệu records (bản ghi) fields (trường) modelnumber partnumber cost 1234 687 10.57 9673 108 57.03 4957 892 3.99 struct Part { ! public int modelnumber; ! public int partnumber; ! public float cost; }; Part p1, p2, p3; • • Trường ⟺ biến/thành phần cấu trúc Bản ghi ⟺ biến kiểu cấu trúc Lê Viết Mẫn - lvman@hce.edu.vn Monday, September 9, 13 CTDL khác Sử dụng • Bộ nhớ không cấp phát cho khai báo struct, mà cấp phát cho khai báo biến • • • • Một biến kiểu struct cấp phát stack Khi khai báo biến, thành phần không khởi gán giá trị Các thành phần truy xuất gán liệu Toán tử dấu chấm dùng để truy xuất thành phần struct } // khởi gán struct point.X = 10; point.Y = 12; Lê Viết Mẫn - lvman@hce.edu.vn Monday, September 9, 13 point thời gian static void Main() { ! Point point; point X un Y un X 10 Y 12 CTDL khác Một số thao tác struct Date { ! public int year; public int month; public int day; } • Khai báo biến, khởi gán • • Gán • Date today; today.day = 19; today.month = 11; today.year = 2012; Date when = today; Gán thành phần (chỉ chép số thành phần) when.year = today.year; when.day = today.day; Chỉ so sánh thành phần Lê Viết Mẫn - lvman@hce.edu.vn Monday, September 9, 13 CTDL khác Một số thao tác • Mảng kiểu struct • Danh sách kiểu struct Date[] dates = new Date[10]; dates[0].day = 1; dates[0].month = 1; dates[0].year = 2012; dates[1].day = 2; List dateList = new List(); Date now; now.year = 2012; now.month = 11; now.day = 19; dateList.Add(now); foreach (Date date in dateList) Lê Viết Mẫn - lvman@hce.edu.vn Monday, September 9, 13 10 CTDL khác Truyền struct cho hàm static void SetDate(ref int int int { ! d.year = year; d.month = month; d.day = day; } Main() static void PrintDate(Date d) { ! Console.WriteLine(d.year); ! Console.WriteLine(d.month); ! Console.WriteLine(d.day); } Date newYears; newYears.day = 1; newYears.month = 1; newYears.year = 2012; Date newYears; SetDate(newYears, 2012, 1, 1); PrintDate(newYears); PrintDate(newYears); Lê Viết Mẫn - lvman@hce.edu.vn Monday, September 9, 13 Date d, year, month, day) 11 CTDL khác Trả struct Main() static Date GetDate() { ! Date d; ! ! Console.Write("Enter a year : "); ! d.year = int.Parse(Console.ReadLine()); ! Console.Write("Enter a month : "); ! d.month = int.Parse(Console.ReadLine()); ! Console.Write("Enter a day : "); ! d.day = int.Parse(Console.ReadLine()); ! ! return d; } Date now; now = GetDate(); Lê Viết Mẫn - lvman@hce.edu.vn Monday, September 9, 13 12 CTDL khác Cấu trúc lồng • Cấu trúc chứa cấu trúc Range r; r.start.year = 1776; • Cấu trúc khơng thể chứa Lê Viết Mẫn - lvman@hce.edu.vn Monday, September 9, 13 13 struct Range { ! public Date start; ! public Date end; }; struct Date { ! public int year; public int month; public int day; ! Date end;! ! // error }; CTDL khác Tập tin File Lê Viết Mẫn - lvman@hce.edu.vn Monday, September 9, 13 14 CTDL khác Tập tin văn • Có hai loại tập tin • • Tập tin nhị phân Tập tin văn • Namespace System.IO cung cấp hai lớp StreamWriter • • Cả hai lớp làm việc với ký tự Unicode StreamReader để ghi đọc tập tin văn Các bước cần thiết để làm việc với tập tin nhị phân : • • • Mở tập tin Đọc/ghi tập tin Đóng tập tin Lê Viết Mẫn - lvman@hce.edu.vn Monday, September 9, 13 15 CTDL khác StreamWriter Close() Hàm đóng tập tin giải phóng tài nguyên Flush() Hàm thực ghi liệu đệm vào tập tin xố đệm ghi NewLine Thuộc tính ký tự xuống dòng đầu dòng Write() Hàm ghi liệu tập tin không xuống dòng WriteLine() Hàm ghi liệu tâp tin có xuống dịng Lê Viết Mẫn - lvman@hce.edu.vn Monday, September 9, 13 16 CTDL khác Ví dụ static void Main(string[] args) { // Mở tập tin StreamWriter writer = new StreamWriter("reminders.txt"); if (writer == null) return; // error // Ghi liệu vào tập tin writer.WriteLine("Don’t forget Mother’s Day this year "); writer.WriteLine("Don’t forget these numbers:"); for (int i = 0; i < 10; i++) writer.Write(i + " "); // Chèn ký tự xuống dịng writer.Write(writer.NewLine); // Đóng tập tin writer.Close(); } Lê Viết Mẫn - lvman@hce.edu.vn Monday, September 9, 13 17 CTDL khác StreamReader Peek() Hàm trả ký tự mà không thay đổi vị trí đầu đọc Trả giá trị -1 để báo kết thúc tập tin Read() Hàm đọc liệu từ tập tin ReadBlock() ReadLine() ReadToEnd() Hàm đọc số lượng ký tự xác định từ tập tin ghi vào đệm Hàm đọc dòng ký tự trả chuỗi ký tự string Hàm đọc tất ký tự từ vị trí đến cuối tập tin trả chuỗi ký tự Lê Viết Mẫn - lvman@hce.edu.vn Monday, September 9, 13 18 CTDL khác Ví dụ static void Main(string[] args) { // Mở tập tin StreamReader reader = new StreamReader("reminders.txt"); if (reader == null) return; // Đọc dòng văn tập tin string input = null; while ((input = reader.ReadLine()) != null) { Console.WriteLine(input); } // Đóng tập tin reader.Close(); } Lê Viết Mẫn - lvman@hce.edu.vn Monday, September 9, 13 19 CTDL khác Tổng kết Lê Viết Mẫn - lvman@hce.edu.vn Monday, September 9, 13 20 CTDL khác Cơ sở lập trình • • • Cái cốt lõi tư lập trình khơng phải ngơn ngữ Cái khác biệt ngơn ngữ • • • • Cấu trúc điều khiển Từ khoá Kiểu liệu Thư viện lập trình Cái chung mà tư lập trình phải có • • • • • Lập trình tuần tự, rẽ nhánh, lặp Biểu thức điều kiện Biến, hằng, kiểu liệu Hàm (chia nhỏ chương trình lớn) Cấu trúc liệu Lê Viết Mẫn - lvman@hce.edu.vn Monday, September 9, 13 21 CTDL khác Tư lập trình tư máy tính Cách máy tính thực chương trình Lê Viết Mẫn - lvman@hce.edu.vn Monday, September 9, 13 22 CTDL khác Cảm ơn ý Câu hỏi ? Lê Viết Mẫn - lvman@hce.edu.vn Monday, September 9, 13 23 CTDL khác ... reader.Close(); } Lê Viết Mẫn - lvman@hce.edu.vn Monday, September 9, 13 19 CTDL khác Tổng kết Lê Viết Mẫn - lvman@hce.edu.vn Monday, September 9, 13 20 CTDL khác Cơ sở lập trình • • • Cái cốt lõi tư lập trình... 13 21 CTDL khác Tư lập trình tư máy tính Cách máy tính thực chương trình Lê Viết Mẫn - lvman@hce.edu.vn Monday, September 9, 13 22 CTDL khác Cảm ơn ý Câu hỏi ? Lê Viết Mẫn - lvman@hce.edu.vn... viện lập trình Cái chung mà tư lập trình phải có • • • • • Lập trình tuần tự, rẽ nhánh, lặp Biểu thức điều kiện Biến, hằng, kiểu liệu Hàm (chia nhỏ chương trình lớn) Cấu trúc liệu Lê Viết Mẫn -

Ngày đăng: 21/05/2021, 14:57

Tài liệu cùng người dùng

Tài liệu liên quan