1. Trang chủ
  2. » Cao đẳng - Đại học

Đề cương cơ sở kĩ thuật lập trình

120 36 0

Đ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

Cấu trúc

  • So sánh bằng nhau

Nội dung

trờng đại học s phạm kỹ thuật hng yên Khoa công nghệ thông tin đề cơng giảng Môn: Cơ sở kỹ thuật lập trình với C# Hng yên 07/2007 Nguyễn Hữu Đông Bộ môn Công nghệ phần mềm Đề cơng sở kỹ thuật lập trình Chơng 1: Tổng quan ngôn ngữ lập trình C# 1.1 Tổng quan ngôn ngữ lập trình C# Ngụn ng C# đơn giản, khoảng 80 từ khóa mười kiểu liệu xây dựng sẵn Tuy nhiên, ngơn ngữ C# có ý nghĩa cao thực thi khái niệm lập trình đại C# bao gồm tất hỗ trợ cho cấu trúc, thành phần component, lập trình hướng đối tượng Những tính chất diện ngơn ngữ lập trình đại phát triển Microsoft, phần khởi đầu cho kế hoạch NET họ Tên ngôn ngữ bao gồm ký tự thăng theo Microsoft theo ECMA C#, bao gồm dấu số thường Microsoft phát triển C# dựa C++ Java C# miêu tả ngơn ngữ có cân C++, Visual Basic, Delphi Java C# theo hướng ngơn ngữ lập trình phản ánh trực tiếp đến NET Framework mà tất chương trình NET chạy, phụ thuộc mạnh mẽ vào Framework Các loại liệu sở đối tượng, hay gọi garbage-collected, nhiều kiểu trừu tượng khác chẳng hạn class, delegate, interface, exception, v.v, phản ánh rõ ràng đặc trưng NET runtime So sánh với C C++, ngôn ngữ bị giới hạn nâng cao vài đặc điểm đó, khơng bao gồm giới hạn sau đây: Các trỏ sử dụng chế độ khơng an tồn Hầu hết đối tượng tham chiếu an toàn, phép tính kiểm tra tràn đệm Các trỏ sử dụng để gọi loại kiểu giá trị; đối tượng thuộc thu rác (garbage-collector) gọi cách tham chiếu + Các đối tượng giải phóng tường minh + Chỉ có đơn kế thừa, cài đặt nhiều interface trừu tượng (abstract interfaces) Chức làm đơn giản hóa thực thi thời gian thực thi + C# an-tồn-kiểu (typesafe) C++ + Cú pháp khai báo mảng khác nhau("int[] a = new int[5]" thay "int a[5]") + Kiểu thứ tự thay tên miền không gian (namespace) + C# khơng có tiêu 2 Ngun H÷u Đông Bộ môn Công nghệ phần mềm + Cú thêm Properties, phương pháp gọi Properties để truy cập liệu + Có reflection  Tại phải sử dụng ngôn ngữ C# Nhiều người tin khơng cần thiết có ngơn ngữ lập trình Java, C++, Perl, Microsoft Visual Basic, ngôn ngữ khác nghĩ cung cấp tất chức cần thiết Ngôn ngữ C# ngôn ngữ dẫn xuất từ C C++, tạo từ tảng phát triển Microsoft bắt đầu với công việc C C++ thêm vào đặc tính để làm cho ngơn ngữ dễ sử dụng Nhiều số đặc tính giống với đặc tính có ngơn ngữ Java Khơng dừng lại đó, Microsoft đưa số mục đích xây dựng ngơn ngữ Những mục đích được tóm tắt sau: - C# ngôn ngữ đơn giản - C# ngôn ngữ đại - C# ngôn ngữ hướng đối tượng - C# ngôn ngữ mạnh mẽ mềm dẻo - C# ngơn ngữ có từ khóa - C# ngơn ngữ hướng module - C# trở nên phổ biến  C# ngôn ngữ đơn giản C# loại bỏ vài phức tạp rối rắm ngôn ngữ Java C++, bao gồm việc loại bỏ macro, template, đa kế thừa, lớp sở ảo (virtual base class) Chúng nguyên nhân gây nhầm lẫn hay dẫn đến vấn đề cho người phát triển C++ Nếu người học ngơn ngữ chắn ta không trải qua thời gian để học nó! Nhưng ta khơng biết hiệu ngôn ngữ C# loại bỏ vấn đề Ngơn ngữ C# đơn giản dựa tảng C C++ Nếu thân thiện với C C++ hoậc chí Java, thấy C# giống diện mạo, cú pháp, biểu thức, toán tử chức khác lấy trực tiếp từ ngôn ngữ C C++, cải tiến để làm cho ngôn ngữ đơn giản Một vài cải tiến loại bỏ dư thừa, thêm vào cú pháp thay đổi Ví dụ như, C++ có ba tốn tử làm việc với thành viên ::, , -> Để biết dùng ba toán tử phức tạp v Nguyễn Hữu Đông Bộ môn Công nghệ phÇn mỊm dễ nhầm lẫn Trong C#, chúng thay với toán tử gọi (dot) Đối với người học điều việc cải tiến khác làm bớt nhầm lẫn đơn giản  Ghi chú: Nếu sử dụng Java tin đơn giản, tìm thấy C# đơn giản Hầu hết người không tin Java ngơn ngữ đơn giản Tuy nhiên, C# dễ Java C++  C# ngôn ngữ đại Điều làm cho ngơn ngữ đại? Những đặc tính xử lý ngoại lệ, thu gom nhớ tự động, kiểu liệu mở rộng, bảo mật mã nguồn đặc tính mong đợi ngơn ngữ đại C# chứa tất đặc tính Nếu người học lập trình cảm thấy đặc tính phức tạp khó hiểu Tuy nhiên, đừng lo lắng tìm hiểu đặc tính qua chương sách  Ghi chú: Con trỏ tích hợp vào ngơn ngữ C++ Chúng nguyên nhân gây rắc rối ngôn ngữ C# loại bỏ phức tạp rắc rối phát sinh trỏ Trong C#, thu gom nhớ tự động kiểu liệu an toàn tích hợp vào ngơn ngữ, loại bỏ vấn đề rắc rối C++  C# ngôn ngữ hướng đối tượng Những đặc điểm ngơn ngữ hướng đối tượng (Object-oriented language) đóng gói (encapsulation), kế thừa (inheritance), đa hình (polymorphism) C# hỗ trợ tất đặc tính Phần hướng đối tượng C# trình bày chi tiết chương riêng phần sau  C# ngôn ngữ mạnh mẽ mềm dẻo Như đề cập trước, với ngôn ngữ C# bị giới hạn thân trí tưởng tượng Ngơn ngữ khơng đặt ràng buộc lên việc làm C# sử dụng cho nhiều dự án khác tạo ứng dụng xử lý văn bản, ứng dụng đồ họa, tính, hay chí trình biên dịch cho ngơn ngữ khác  C# ngơn ngữ từ khóa C# ngơn ngữ sử dụng giới hạn từ khóa Phần lớn từ khóa sử dụng để mơ tả thơng tin Chúng ta nghĩ ngơn ngữ có nhiều từ khóa mạnh Điều khơng phải thật, trường hợp ngơn ngữ C#, tìm thấy ngụn ng ny cú th Nguyễn Hữu Đông Bộ môn Công nghệ phần mềm c s dng làm nhiệm vụ Bảng sau liệt kê từ khóa ngơn ngữ C#  C# ngơn ngữ hướng module Mã nguồn C# viết phần gọi lớp, lớp chứa phương thức thành viên Những lớp phương thức sử dụng lại ứng dụng hay chương trình khác Bằng cách truyền mẫu thông tin đến lớp hay phương thức tạo mã nguồn dùng lại có hiệu  C# ngôn ngữ phổ biến C# ngơn ngữ lập trình Vào thời điểm sách viết, khơng biết ngôn ngữ phổ biến Nhưng ngôn ngữ có số lý để trở thành ngơn ngữ phổ biến Một lý Microsoft cam kết NET Microsoft muốn ngôn ngữ C# trở nên phổ biến Mặc dù công ty làm sản phẩm trở nên phổ biến, hỗ trợ Cách khơng lâu, Microsoft gặp thất bại hệ điều hành Microsoft Bob Mặc dù Microsoft muốn Bob trở nên phổ biến thất bại C# thay tốt để đem đến thành công sơ với Bob Thật người công ty Microsoft sử dụng Bob công việc ngày họ Tuy nhên, với C# khác, sử dụng Microsoft Nhiều sản phẩm công ty chuyển đổi viết lại 5 Ngun H÷u Đông Bộ môn Công nghệ phần mềm C# Bng cách sử dụng ngôn ngữ Microsoft xác nhận khả C# cần thiết cho người lập trình Micorosoft NET lý khác để đem đến thành công C# .NET thay đổi cách tạo thực thi ứng dụng Ngồi hai lý ngơn ngữ C# trở nên phổ biến đặc tính ngôn ngữ đề cập mục trước như: đơn giản, hướng đối tượng, mạnh mẽ  Ngôn ngữ C# ngôn ngữ khác Chúng ta nghe đến ngôn ngữ khác Visual Basic, C++ Java Có lẽ tự hỏi khác ngôn ngữ C# ngôn ngữ Và tự hỏi lại chọn ngôn ngữ để học mà không chọn ngơn ngữ Có nhiều lý xem số so sánh ngôn ngữ C# với ngôn ngữ khác giúp phần trả lời thắc mắc Microsoft nói C# mang đến sức mạnh ngơn ngữ C++ với dễ dàng ngôn ngữ Visual Basic Có thể khơng dễ Visual Basic, với phiên Visual Basic.NET (Version 7) ngang Bởi chúng viết lại từ tảng Chúng ta viết nhiều chương trình với mã nguồn dùng C# Mặc dù C# loại bỏ vài đặc tính C++, bù lại tránh lỗi mà thường gặp ngơn ngữ C++ Điều tiết kiệm hàng hay chí hàng ngày việc hồn tất chương trình Chúng ta hiểu nhiều điều chương giáo trình Một điều quan trọng khác với C++ mã nguồn C# khơng địi hỏi phải có tập tin header Tất mã nguồn viết khai báo lớp Như nói bên NET runtime C# thực việc thu gom nhớ tự động Do điều nên việc sử dụng trỏ C# quan trọng C++ Những trỏ sử dụng C#, đoạn mã nguồn đánh dấu khơng an tồn (unsafe code) C# từ bỏ ý tưởng đa kế thừa C++ Và khác khác C# đưa thêm thuộc tính vào lớp giống Visual Basic Và thành viên lớp gọi toán tử “.” khác với C++ có nhiều cách gọi tình khác Một ngôn ngữ khác mạnh phổ biến Java, giống C++ C# phát triển dựa C Nếu định học Java sau này, tìm nhiều mà học từ C# áp dụng 6 Ngun Hữu Đông Bộ môn Công nghệ phần mềm im giống C# Java hai biên dịch mã trung gian: C# biên dịch MSIL cịn Java biên dịch bytecode Sau chúng thực cách thông dịch biên dịch just-in-time máy ảo tương ứng Tuy nhiên, ngôn ngữ C# nhiều hỗ trợ đưa để biên dịch mã ngôn ngữ trung gian sang mã máy C# chứa nhiều kiểu liệu Java cho phép nhiều mở rộng với kiểu liệu giá trị Ví dụ, ngơn ngữ C# hỗ trợ kiểu liệt kệ (enumerator), kiểu giới hạn đến tập định nghĩa trước, kiểu liệu cấu trúc kiểu liệu giá trị người dùng định nghĩa Chúng ta tìm hiểu kỹ kiểu liệu tham chiếu kiểu liệu giá trị trình bày phần sau Tương tự Java, C# từ bỏ tính đa kế thừa lớp, nhiên mơ hình kế thừa đơn mở rộng tính đa kế thừa nhiều giao diện  Các bước chuẩn bị cho chương trình Thơng thường, việc phát triển phần mềm, người phát triển phải tuân thủ theo quy trình phát triển phần mềm cách nghiêm ngặt quy trình chuẩn hóa Tuy nhiên phạm vi tìm hiểu ngơn ngữ viết chương trình nhỏ khơng địi hỏi khắt khe việc thực theo quy trình Nhưng để giải vấn đề cần phải thực theo bước sau Đầu tiên phải xác định vấn đề cần giải Nếu khơng biết rõ vấn đề ta khơng thể tìm phương pháp giải Sau xác định vấn đề, nghĩ kế hoạch để thực Sau có kế hoạch, thực thi kế hoạch Sau kế hoạch thực thi, phải kiểm tra lại kết để xem vấn đề giải xong chưa Logic thường áp dụng nhiều lĩnh vực khác nhau, có lập trình Khi tạo chương trình C# hay ngôn ngữ nào, nên theo bước sau: - Xác định mục tiêu chương trình - Xác định phương pháp giải vấn đề - Tạo chương trình để giải vấn đề - Thực thi chương trình để xem kết Ví dụ mục tiêu để viết chương trình xử lý văn đơn giản, mục tiêu xây dựng chương trình cho phép soạn thảo lưu trữ chuỗi ký tự hay văn Nếu mục tiêu khơng thể viết chương trình hiu qu Nguyễn Hữu Đông Bộ môn Công nghƯ phÇn mỊm Bước thứ hai định đến phương pháp để viết chương trình Bước xác địnhn thông tin cần thiết sử dụng chương trình, hình thức sử dụng Từ thông tin rút phương pháp để giải vấn đề Bước thứ ba bước cài đặt, bước dùng ngôn ngữ khác để cài đặt, nhiên, ngôn ngữ phù hợp để giải vấn đề cách tốt chọn Trong phạm vi sách mặc định dùng C#, đơn giản tìm hiểu nó! Và bước cuối phần thực thi chương trình để xem kết qu 1.2 Ví dụ mở đầu bt u cho việc tìm hiểu ngơn ngữ C# tạo tiền đề cho chương sau, chương trình bày chương trình C# đơn giản Ví dụ 1.2 : Chương trình C# class ChaoMung { static void Main( ) { // Xuat man hinh System.Console.WriteLine(“Hello World”); } } - Hello World - Sau viết xong lưu dạng tập tin có phần mở rộng *.cs (C sharp) Sau biên dịch chạy chương trình Kết chuỗi “Hello World” xuất hình Console 1.3 Cấu trúc chơng trình C# đơn giản T ví dụ ta nhận thấy chương trình C# đơn giản có lớp Mỗi lớp khố class kế tên lớp( tên lớp đặt phải tuân thủ theo nguyên tắc đặt tên, bên lớp ta khai báo biến(thành phần liệu) hàm(phương thức)) Trong số hàm bên lớp có hàm tên Main, hàm có đặc điểm chương trình C# gọi thực máy tiến hành thực hin t cõu lnh Nguyễn Hữu Đông Bộ môn Công nghệ phần mềm u tiờn ca hm Main Main kết thúc chương trình C# kết thúc Điều chứng tỏ hàm Main hàm chương trình C# Một chương trình C# muốn thực phải có hàm Main có hàm Main tồn hệ thống chương trình hàm gọi hàm khác để thực yêu cầu toán Hàm Main khai báo sau: static void Main( ) { // Các câu lệnh } Chú ý: - Hàm Main có dạng thể khác tìm hiểu sau - Nếu chương trình C# mà khơng có hàm Main đặt lớp chương trình C# khơng th thc hin c 1.4 Một số khái niệm b¶n  Ghi chú: Một chương trình viết tốt cần phải có thích đoạn mã viết Các đoạn thích khơng biên dịch khơng tham gia vào chương trình Mục đích làm cho đoạn mã nguồn rõ ràng dễ hiểu Trong ví dụ 1.2 có dịng thích : // Xuat man hinh Một chuỗi thích dịng bắt đầu ký tự “//” Khi trình biên dịch gặp hai ký tự bỏ qua dịng Ngồi C# cịn cho phép kiểu thích cho hay nhiều dòng, ta phải khai báo “/*” phần đầu thích kết thúc thích ký tự “*/” Ví dụ 1.4 : Minh họa dùng thích nhiều dòng class ChaoMung { static void Main() { /* Xuat man hinh chuoi ‘chao mung’ Su dung ham WriteLine cua lop System.Console */ System.Console.WriteLine(“Hello World”); } } Nguyễn Hữu Đông Bộ môn Công nghệ phần mềm Hellp World Ngoài hai kiểu thích giống C/C++ C# cịn hỗ trợ thêm kiểu thứ ba kiểu cuối cùng, kiểu chứa định dạng XML nhằm xuất tập tin XML biên dịch để tạo sưu liệu cho mã nguồn ///XML Chú thích tài liệu dịng định dạng theo XML /**XML Chú thích nhiều dịng định dạng theo XML**/  Ứng dụng Console: Là cách xây dựng ứng dụng giao tiếp với người dùng thông quan bàn phím khơng có giao diện người dùng (UI), giống ứng dụng thường thấy Windows Trong chương xây dựng ứng dụng nâng cao Windows hay Web ta dùng các giao diện đồ họa Cịn để tìm hiểu ngơn ngữ C# tuý cách tốt ta viết ứng dụng Console Trong hai ứng dụng đơn giản ta dùng phương thức WriteLine() lớp Console Phương thức xuất hình dịng lệnh hay hình DOS chuỗi tham số đưa vào, cụ thể chuỗi “Hello World”  Từ khóa using: Để làm cho chương trình gọn hơn, khơng cần phải viết namespace(ta tìm hiểu khai niệm sau) cho đối tượng, C# cung cấp từ khóa using, sau từ khóa namespace hay subnamespace với mô tả đầy đủ cấu trúc phân cấp Ta dùng dịng lệnh : using System; Ở đầu chương trình chương trình có dùng đối tượng Console khơng cần phải viết đầy đủ : System.Console mà cần viết Console thơi Ví dụ 1.4 Dùng khóa using using System; class ChaoMung { static void Main() { //Xuat man hinh chuoi thong bao Console.WriteLine(“Hello World”); }  10  NguyÔn Hữu Đông Bộ môn Công nghệ phần mềm { switch (ChonMenu()) { case 1: NhapDSSV(); break; case 2: DSDiem(); Console.ReadKey();break; case 3: DSSVDat();Console.ReadKey();break; case 4: TongDiemCaoNhat(); Console.ReadKey();break; case 5: SapXep(); Console.Write("Da sap xong !"); Console.ReadKey();break; case 6: Environment.Exit(0);break; /* Thoat khoi chuong trinh */ } Console.Clear(); } while(true); } } 5.5 Tập hợp danh sách liên kết(phần thảo luận tìm đọc tài liệu)  Các chủ đề tập hợp cần thảo luận - ArrayList - Hashtable - Queue - Stack - SorteList - List  Các chủ đề cần thảo luận danh sách liên kết - Lớp(class) - Lớp tự trỏ - Danh sách liên kết đơn, kép, - Các danh sách đặc biệt: Stack, Queue, 106 Nguyễn Hữu Đông Bộ môn Công nghệ phần mềm Chơng 6: Tệp, th mơc vµ I/O 6.1 Giới thiệu hệ thống nhập xuất C# Một chương trình thường xuyên làm việc với liệu, để lưu trữ lâu dài phải lưu trữ nhận lại liệu từ thiết bị lưu trữ ngồi, nguồn thơng tin ngồi không gồm liệu lưu trữ đĩa từ, đĩa CD mà liệu chương trình khác, lưu trữ mạng… dù chúng lưu trữ đâu chúng có số dạng như: đối tượng, kí tự, hình ảnh âm thanh, dù liệu lưu trữ hình thức nào, lưu trữ đâu C# trừu tượng hố thành luồng(Streams), điều tinh vi làm cho ta không cần phải quan tâm liệu lưu trữ đâu, dạng thức nào, đồng nguồn liệu với nhau: Để nhận thơng tin, chương trình mở luồng liên kết với đối tượng nguồn( tệp tin, nhớ, Socket) đọc thông tin Tương tự để ghi thơng tin thiết bị ngồi cách mở luồng đến đối tượng đích ghi thông tin cách Luồng trừu tượng hoá mức cao, liệu đọc vào từ đâu ghi đâu, thuật tốn đọc/ghi tựa sau: Nhiều người nhầm lẫn khác tập tin luồng Một luồng đơn giản luồng thông tin, chứa thông tin chuyển qua, cịn tập tin để lưu trữ thơng tin Một luồng sử dụng để gởi nhận thông tin từ nhớ, từ mạng, web, từ chuỗi, Một luồng sử dụng để vào với tập tin liệu Thứ tự việc đọc tập tin Khi đọc hay viết tập tin, cần thiết phải theo trình tự xác định Đầu tiên phải thực công việc mở tập tin Nếu tạo tập tin, việc mở tập tin lúc với việc tạo tập tin Khi tập tin mở, cần thiết phải tạo cho luồng để đặt thơng tin vào tập tin lấy thông  107 Nguyễn Hữu Đông Bộ môn Công nghệ phÇn mỊm tin từ tập tin Khi tạo luồng, cần thiết phải thông tin trực tiếp qua luồng Sau tạo luồng gắn với tập tin, lúc thực việc đọc ghi liệu tập tin Khi thực việc đọc thông tin từ tập tin, cần thiết phải kiểm tra xem trỏ tập tin tới cuối tập tin chưa, tức đọc đến cuối tập tin hay chưa Khi hoàn thành việc đọc ghi thơng tin tập tin tập tin cần phải đóng lại Tóm lại bước để làm việc với tậo tin là:  Bước 1: Mở hay tạo tập tin  Bước 2: Thiết lập luồng ghi hay đọc từ tập tin  Bước 3: Đọc hay ghi liệu lên tập tin  Bước 4: Đóng lập tin lại 6.2 Làm việc với tệp thư mục 6.2.1 Làm việc với thư mục Lớp Directory chứa đựng nhiều phương thức tĩnh cho phép tạo, dịch chuyển…thư mục Tất phương thức lớp Directory phương thức tĩnh Bởi gọi phương thưc mà không cần tạo thể lớp Lớp DirectoryInfo giống lớp Directory, phương thức lớp thực qua thể lớp Lớp DirectoryInfo xuất phát từ lớp FileSystemInfo Lớp FileSystemInfo có chứa số thuộc tính phương thức file thư mục Sau số phương thức lớp Directory Phương thức Cách sử dụng CreateDirectory( ) Creates all directories and subdirectories specified by its path parameter GetCreationTime( ) Returns and sets the time the specified directory was created GetDirectories( ) Gets named directories GetLogicalDrives( ) Returns the names of all the logical drives in the form :\ GetFiles( ) Returns the names of files matching a pattern GetParent( ) Returns the parent directory for the specified path 108 Nguyễn Hữu Đông Bộ môn Công nghệ phần mềm Phng thc Move( ) Cỏch sử dụng Moves a directory and its contents to a specified path Sau số phương thức thuộc tính lớp DirectoryInfo Phương thức thuộc tính Cách sử dụng Attributes Inherits from FileSystemInfo; gets or sets the attributes of the current file CreationTime Inherits from FileSystemInfo; gets or sets the creation time of the current file Exists Public property Boolean value, which is True if the directory exists Extension Public property inherited from FileSystemInfo; i.e., the file extension FullName Public property inherited from FileSystemInfo; i.e., the full path of the file or directory LastAccessTime LastWriteTime Public property inherited from FileSystemInfo; gets or sets the last access time Public property inherited from FileSystemInfo; gets or sets the time when the current file or directory was last written to Name Public property name of this instance of DirectoryInfo Parent Public property parent directory of the specified directory Root Create( ) Public property root portion of the path Public method that creates a directory  109  NguyÔn Hữu Đông Bộ môn Công nghệ phần mềm Phng thức thuộc tính Cách sử dụng CreateSubdirectory( ) Public method that creates a subdirectory on the specified path Delete( ) Public method that deletes a DirectoryInfo and its contents from the path GetDirectories( ) Public method that returns a DirectoryInfo array with subdirectories GetFiles( ) Public method that returns a list of files in the directory GetFileSystemIn fos( ) Public method that retrieves an array of FileSystemInfo objects MoveTo( ) Public method that moves a DirectoryInfo and its contents to a new path Refresh( ) Public method inherited from FileSystemInfo; refreshes the state of the object 6.2.2 Làm việc với tệp Để mở tập tin đĩa cho việc đọc viết tập tin văn bản, cần phải sử dụng hai lớp File FileInfo Làm để biết sử dụng lớp File xác sử dụng lớp FileInfo chúng chứa phương thức tương tự với Thật hai lớp có nhiều khác biệt Lớp File chứa tất phương thức tĩnh, thêm vào lớp File tự động kiểm tra permission tập tin Trong muốn dùng lớp FileInfo phải tạo thể lớp Nếu muốn mở tập tin lần tốt sử dụng lớp File, tổ chức việc sử dụng tập tin nhiều lần bên chương trình, tốt ta dùng lớp FileInfo Hoặc không chắn cách sử dụng sử dụng lớp FileInfo Sau số phương thức ca lp file 110 Nguyễn Hữu Đông Bộ môn Công nghệ phần mềm Phng thc AppendText( ) Copy( ) Create( ) CreateText( ) Delete( ) Exists( ) Cách sử dụng Creates a StreamWriter that appends text to the specified file Copies an existing file to a new file Creates a file in the specified path Creates a StreamWriter that writes a new text file to the specified file Deletes the specified file Returns true if the specified file exists GetAttributes(), SetAttributes( ) Gets and sets the FileAttributes of the specified file GetCreationTime( ), SetCreationTime( ) Returns and sets the creation date and time of the file GetLastAccessTime( ), SetLastAccessTime( ) Returns and sets the last time the specified file was accessed GetLastWriteTime( ), SetLastWriteTime( ) Returns and sets the last time the specified file was written to Move( ) Moves a file to a new location; can be used to rename a file OpenRead( ) Public static method that opens a FileStream on the file OpenWrite( ) Creates a read/write Stream on the specified path Sau số phương thức thuộc tính lp fileInfo 111 Nguyễn Hữu Đông Bộ môn Công nghệ phần mềm Phng thc v thuc tớnh Cách sử dụng Attributes( ) Inherits from FileSystemInfo; gets or sets the attributes of the current file CreationTime Inherits from FileSystemInfo; gets or sets the creation time of the current file Directory Public property that gets an instance of the parent directory Exists Public property Boolean value that is True if the directory exists Extension Public property inherited from FileSystemInfo; i.e., the file extension FullName Public property inherited from FileSystemInfo; i.e., the full path of the file or directory LastAccessTime Public property inherited from FileSystemInfo; gets or sets the last access time LastWriteTime Length Name AppendText( ) CopyTo( ) Create( ) Public property inherited from FileSystemInfo; gets or sets the time when the current file or directory was last written to Public property that gets the size of the current file Public property Name of this DirectoryInfo instance Public method that creates a StreamWriter that appends text to a file Public method that copies an existing file to a new file Public method that creates a new file  112 Nguyễn Hữu Đông Bộ môn Công nghệ phần mỊm Phương thức thuộc tính Delete( ) Cách sử dụng Public method that permanently deletes a file MoveTo( ) Public method to move a file to a new location; can be used to rename a file Open( ) Public method that opens a file with various read/write and sharing privileges OpenRead( ) Public method that creates a read-only FileStream OpenText() Public method that creates a StreamReader that reads from an existing text file OpenWrite( ) Public method that creates a write-only FileStream 6.3 Đọc ghi liệu Stream hỗ trợ đọc ghi liệu đồng không đồng .Net Framework cung cấp số lớp dẫn xuất từ lớp Stream, bao gồm FileStream, MemoryStream, NetworkStream Có lớp BufferedStream cung cấp vùng đệm I/O sử dụng cho luồng nhập xuất Sau lớp I/O Net Framework Lớp Cách sử dụng Stream Abstract class that supports reading and writing bytes BinaryReader/BinaryWriter Read and write encoded strings and primitive datatypes to and from streams File, FileInfo, Directory, DirectoryInfo Provide implementations for the abstract FileSystemInfo classes, including creating, moving, renaming, and deleting files and directories 113 Nguyễn Hữu Đông Bộ môn Công nghƯ phÇn mỊm Lớp Cách sử dụng FileStream For reading to and from File objects; supports random access to files Opens files synchronously by default; supports asynchronous file access Textreader,TextWriter, StringReader, StringWriter TexTReader and TextWriter are abstract classes designed for Unicode character I/O StringReader and StringWriter write to and from strings, allowing your input and output to be either a stream or a string BufferedStream A stream that adds buffering to another stream such as a NetworkStream BufferedStreams can improve performance of the stream to which they are attached, but note that FileStream has buffering built in MemoryStream A nonbuffered stream whose encapsulated data is directly accessible in memory, and is most useful as a temporary buffer NetworkStream A st QuickView mtdEVA 300.lnk ream over a network connection StreamReader Implements a TextReader that reads characters from a byte stream in a particular encoding StreamWriter Implements a TextWriter for writing information to a string The information is stored in an underlying StringBuilder Thao tác tệp văn Để đọc/ghi liệu vào tệp văn Net Framework cung cấp cho ta hai lớp dễ sử dụng lớp StreamWriter StreamReader có chừa phương thức để giúp ta dễ dàng thao tác tệp văn giống ta thao tác với việc đọc ghi liệu mà hình, bàn phím  114  Ngun Hữu Đông Bộ môn Công nghệ phần mềm Vớ dụ 1: Nhập vào từ bàn phím nội dung thơ ghi vào tệp văn using System; using System.IO; class ViDu { static void Main() { string fileName; string cauTho; string tenBaiTho; bool ok; ConsoleKeyInfo kt; do{ Console.Write("Nhap vao ten tep chua bai tho:"); fileName = Console.ReadLine(); ok = false; if(File.Exists(fileName)) { Console.WriteLine("Tep da ton tai ban co muon ghi de C/K?"); kt=Console.ReadKey(); if (kt.KeyChar == 'c' || kt.KeyChar == 'C') ok = false; else ok = true; } }while(ok); StreamWriter myfile=File.CreateText(fileName); Console.WriteLine("\t\tBAN HAY NHAP VAO MOT BAI THO BAN YEU THICH\n"); Console.Write("Nhap vao ten bai tho:");tenBaiTho = Console.ReadLine(); myfile.WriteLine("\t\t{0}", tenBaiTho); myfile.WriteLine(); int i=0; { Console.Write("Cau {0}:", ++i); cauTho = Console.ReadLine();  115 Nguyễn Hữu Đông Bộ môn Công nghệ phần mÒm myfile.WriteLine("{0}:{1}",i,cauTho); Console.WriteLine("Ban co muon nhap tiep C/K"); kt = Console.ReadKey(); } while (kt.KeyChar == 'c' || kt.KeyChar == 'C'); myfile.Close(); } } Ví dụ 2: Cho tệp văn có tên D:/tho.txt đọc nội dung tệp đưa hình using System; using System.IO; class Test { public static void Main() { try { using (StreamReader sr = new StreamReader("d:/tho.txt")) { string line; // Read and display lines from the file until the end of // the file is reached while ((line = sr.ReadLine()) != null) { Console.WriteLine(line); } } } catch (Exception e) { Console.WriteLine("Khong the doc duoc noi dung tep"); Console.WriteLine(e.Message); } Console.ReadKey(); } } 116 Nguyễn Hữu Đông Bộ môn Công nghệ phần mềm Vớ d 3: Cho mt tệp có tên d:\dulieu.txt lưu trữ thơng tin n dãy số Biết phần tử dãy lưu dòng, phần tử dãy đặt cách dấu cách Hãy đọc nơi dung tệp tìm giá trị lớn số phần tử dẫy ghi giá trị vào cuối tệp using System; using System.IO; class ViDu1 { static void Main() { string xau; int[][] a=new int[50][]; int d,n=0; StreamReader f1=File.OpenText("D:/dulieu.txt"); xau = f1.ReadLine(); do{ d = 0; foreach(string in xau.Split(' ')) if (con.Length > 0) { Array.Resize(ref a[n], ++d); a[n][d - 1] = int.Parse(con); } xau = f1.ReadLine(); n = n + 1; }while(xau!=null); f1.Close(); int j,i,max=a[0][0]; for (i = 0; i < n; ++i) for (j = 0; j < a[i].Length; ++j) if (max < a[i][j]) max = a[i][j]; StreamWriter f2 = File.AppendText("D:/dulieu.txt"); f2.WriteLine(); f2.WriteLine("Phan tu lon nhat cua cac day la {0}", max); f2.Close();  117  Ngun H÷u Đông Bộ môn Công nghệ phần mềm } } Thao tác tệp nhị phân Nếu sử dụng tập tin văn bản, lưu liệu kiểu số phải thực việc chuyển đổi sang dạng chuỗi ký tự để lưu vào tập tin văn lấy ta lấy giá trị chuỗi ký tự ta phải chuyển sang dạng số Đôi muốn có cách thức tốt để lưu trực tiếp giá trị vào tập tin sau đọc trực tiếp giá trị từ tập tin Ví dụ viết số lượng lớn số integer vào tập tin số nguyên, ta đọc giá trị số integer Trường hợp chúng viết vào tập tin với dạng văn bản, đọc ta phải đọc văn phải chuyển giá trị từ chuỗi đến số integer Tốt việc phải thực thêm bước chuyển đổi, ta gắn kiểu luồng nhị phân BinaryStream vào tập tin, sau đọc ghi thơng tin nhị phân từ luồng Ví dụ 1: Nhập vào dãy số nguyên sau ghi vào tệp với tên tệp D:/dayso.dat using System; using System.IO; class TepNhiPhan { static void Main() { FileStrean file =new FileStream("D:/Dayso.dat", FileMode.Create); BinaryWriter myfile =new BinaryWriter(file); int i=0, x; ConsoleKeyInfo kt; Console.WriteLine("Ban hay nhap vao day cac so nguyen"); { Console.Write("Ban hay nhap so nguyen thu {0}:", i++); x = int.Parse(Console.ReadLine()); myfile.Write(x); Console.Write("Ban co nhap tiep C/K"); kt = Console.ReadKey(); if (kt.KeyChar == 'K' || kt.KeyChar== 'k') break; } while (true); myfile.Close(); Console.WriteLine("Da thuc hien xong!!\nBan hay an phim bat ky de tiep tuc"); Console.ReadKey(); } 118 Nguyễn Hữu Đông Bộ môn Công nghệ phần mềm } thao tỏc vi nhị phân trước tiên tạo thể file lớp FileStream câu lệnh FileStrean file =new FileStream("D:/Dayso.dat", FileMode.Create); Đối đường dẫn tệp, đối thứ mode khác kiểu liệt kê FileMode cụ thể sau: Giá trị Append Create Định nghĩa Mở tập tin hữu tạo tập tin Tạo tập tin Nếu tập tin hữu, bị xóa tập tin tạo với tên CreateNew Tạo tập tin Nếu tập tin tồn ngoại lệ phát sinh Open Mở tập tin hữu OpenOrCreate Mở tập tin hay tạo tập tin tập tin chưa tồn Truncate Mở tập tin hữu xóa nội dung Sau tạo FileStream, cần thiết phải thiết lập để làm việc với liệu nhị phân câu lệnh: BinaryWriter bwFile = new BinaryWriter(myFile); Dòng thiết lập kiểu viết liệu nhị phân vào luồng cách khai báo kiểu BinaryWrite Đối tượng thể BinaryWrite myfile tạo file truyền vào khởi dựng BinaryWrite, gắn myfile với file Ví dụ 2: Đọc nội dung tệp D:/dayso.dat nhập ví dụ sau cho biết số nguyên lớn có tệp số nguyên using System; using System.IO; class ViDuTepNhiPhan { static void Main() { FileStream file = new FileStream("D:/Dayso.dat", FileMode.Open); BinaryReader myfile = new BinaryReader(file); int x, max; max = myfile.ReadInt32(); while (myfile.PeekChar() != -1) { x = myfile.ReadInt32(); if (x > max) max = x; }  119  Ngun H÷u Đông Bộ môn Công nghệ phần mềm Console.WriteLine("So nguyen lon nhat o tep la " + max); myfile.Close(); Console.Write("An phim bat ky de tiep tuc "); Console.ReadKey(); } } Ở có vài khác nhỏ, phương thức PeekChar lớp BinaryReader sử dụng Phương thức lấy ký tự luồng Nếu ký tự cuối tập tin giá trị -1 trả Ngược lại, ký tự trả Khi ký tự khơng phải ký tự cuối tập tin lệnh bên vòng lặp đọc số integer từ đối tượng BinaryStream myfile Phương thức sử dụng để đọc số nguyên ReadInt32, sử dụng kiểu tên Framework tốt kiểu C# đưa Nên nhớ rằng, tất lớp từ Framework điều gọi ngôn ngữ C# chúng phận ngôn ngữ C# Những lớp cịn sử dụng tốt ngơn ngữ khác C# Ngồi lớp BinaryReader cịn có phương thức khác để thực việc đọc kiểu liệu khác Những phương thức đọc sử dụng với cách mà ReadInt32 sử dụng chương trình Bảng sau liệt kê số phương thức dùng để đọc kiểu liệu  120  ...Nguyễn Hữu Đông Bộ môn Công nghệ phần mềm Đề cơng sở kỹ thuật lập trình Chơng 1: Tổng quan ngôn ngữ lập trình C# 1.1 Tổng quan ngôn ngữ lập trình C# Ngụn ng C# đơn giản, khoảng 80 từ khóa... nghĩa cao thực thi khái niệm lập trình đại C# bao gồm tất hỗ trợ cho cấu trúc, thành phần component, lập trình hướng đối tượng Những tính chất diện ngơn ngữ lập trình đại phát triển Microsoft,... phương pháp giải vấn đề - Tạo chương trình để giải vấn đề - Thực thi chương trình để xem kết Ví dụ mục tiêu để viết chương trình xử lý văn đơn giản, mục tiêu xây dựng chương trình cho phép soạn

Ngày đăng: 12/10/2020, 14:37

TỪ KHÓA LIÊN QUAN

w