1. Trang chủ
  2. » Tất cả

Báo cáo cuối kỳ môn kỹ thuật lập trình

50 7 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Tiêu đề Báo cáo cuối kỳ môn kỹ thuật lập trình
Tác giả Nguyễn Nhật Khánh
Người hướng dẫn GVHD: Bùi Thị Hoàng Anh
Trường học Trường Đại Học Hùng Vương
Chuyên ngành Kỹ Thuật Lập Trình
Thể loại Báo cáo
Năm xuất bản 2021
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 50
Dung lượng 332,09 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • Chương 1. Tổng quan (6)
    • 1.1. Bài toán và giải toán trên máy tính (8)
    • 1.2. Xác định bài toán (8)
    • 1.3. Cấu trúc dữ liệu và giải thuật (9)
    • 1.4. Chương trình (0)
  • Chương 2: Ngôn ngữ lập trình C# (0)
    • 2. Ngôn ngữ lập trình (0)
      • 2.1 Nội dung (0)
      • 2.2 Dữ liệu (0)
      • 2.3 Kiểu dữ liệu (0)
      • 2.4 Biến (0)
      • 2.5 Đặt tên biến (0)
      • 2.6 Kiểu biến (0)
      • 2.7 Các phép toán (15)
      • 2.8 Một số hàm có sẵn (0)
  • Chương 3: Câu lệnh điều khiển (0)
    • I. Các loại câu lệnh (0)
      • 2.1 Câu lệnh if (0)
      • 2.2 Câu lênh if…else (18)
      • 2.3 Câu lệnh if…else lồng nhau (18)
      • 2.4 Câu lệnh switch (19)
      • 3.1 Câu lệnh while (21)
      • 3.2 Câu lệnh do…while (21)
      • 3.3 Câu lệnh for (22)
      • 3.4 Câu lệnh foreach (22)
      • 4.1 Hàm (22)
      • 4.2 Tham số hình thức & tham số thực (23)
      • 4.3 Truyền tham trị và tham chiếu trong hàm (23)
      • 5.1 Hàm đệ qui (23)
      • 5.2 Đệ qui tuyến tính (23)
      • 5.3 Đệ qui nhị phân (24)
      • 5.4 Đệ qui phi tuyến (24)
      • 5.5 Đệ qui tương hỗ (25)
      • 5.6 Cơ chế hoạt đông của đệ qui (26)
      • 5.7 Khử đệ qui (26)
  • Chương 4: Mảng và chuỗi (26)
    • 7.1 Mảng (26)
    • 7.2 Khai báo mảng (26)
    • 7.3 Truy xuất từng phân tử mảng (26)
    • 7.4 Duyệt mảng (27)
    • 7.5 Duyệt mảng bằng foreach (27)
    • 7.6 Sao chép mảng (27)
    • 7.7 Đảo mảng (27)
    • 7.8 Sắp xếp mảng (27)
    • 7.9 Tìm kiếm trên mảng (28)
    • 7.10 Mảng đa chiều (28)
    • 7.11 Đánh giá mảng (28)
    • 8.1 Kiểu ký tự (28)
    • 8.2 Chuyển đổi kiểu ký tự (29)
    • 8.3 So sánh kiểu ký tự (29)
    • 8.4 Thao tác với ký tự (29)
    • 9.1 Chuỗi (30)
    • 9.2 Chuyển đổi sang chuỗi (30)
  • Chương 5: Kiểu dữ liệu cấu trúc (30)
    • 10.1 Struct là gì? (30)
    • 10.2 Đặc điểm của struct (30)
    • 10.3 Khai báo struct (30)
    • 10.4 Sử dụng struct (31)
  • Chương 6: File và FileStream trong C# (31)
    • 11.1 Các lớp I/0 trong C# (31)
    • 11.2 Đọc ghi file (File I/0) trong C#? (31)
  • Chương 7: Windows Form (32)
    • 12.1 Khái niệm windows form (32)
    • 12.2 Các ứng dụng của windows form (32)
    • 12.3 Môi trường thiết kế (32)
    • 12.4 Các control phổ biến (33)
    • 12.5 Label (33)
    • 12.6 Texbox (33)
    • 12.7 Button (33)
    • 12.8 Checkbox và radiobutton (33)
    • 12.9 Lisbox (33)
    • 12.10 RichTextbox (33)
  • Chương 8: Kết quả, kết luận và kiến nghị (33)

Nội dung

BỘ GIÁO DỤC – ĐÀO TẠO TRƯỜNG ĐẠI HỌC HÙNG VƯƠNG THÀNH PHỐ HỒ CHÍ MINH KHOA CÔNG NGHỆ BÁO CÁO CUỐI KỲ MÔN KỸ THUẬT LẬP TRÌNH GVHD Bùi Thị Hoàng Anh TP HCM, 26 Tháng 1 Năm 2021 BỘ GIÁO DỤC – ĐÀO TẠO TR[.]

Tổng quan

Bài toán và giải toán trên máy tính

 Để giải một bài toán trên máy tính, cần thực hiện các bước sau:

-2: Xác định cấu trúc dữ liệu để mô tả bài toán.

-4: Soạn thảo, kiểm tra và hoàn thiện chương trình.

Xác định bài toán

-Mọi bài toán đều có thể diễn đạt theo một sơ đồ chung như sau: A=>B

+A là giả thiết, điều kiện ban đầu, thông tin đã cho, đã biết.

+B là kết luận, là mục tiêu cần đạt hoặc cái phải tìm, phải làm ra khi kết thúc bài toán.

 Là suy luận, giải pháp cần xác đinh hoặc chuỗi các thao tác cần thực hiện để có được kết quả B từ cái đã có A.

-Bài toán trên máy tính: A => B

 Là chương trình máy tính cho kết quả B với đầu vào A.

-Việc xác định một bài toán trên máy tính thường gặp khó khăn sau:

+Thông tin về A, B thường không rõ ràng và không đầy đủ.

+Thông báo về điều kiện đặt ra cho cách giải ( => ) thường không được nêu ra một cách minh bạch.

 Việc xác định bài toán là rất quan trọng, nó ảnh hưởng tới cách thức và chất lượng của việc giải quyết bài toán.

Trong quá trình giải bài toán, dù bài viết có diễn đạt rõ ràng và chi tiết, chúng ta vẫn nên giả định rằng phần lớn thông tin về A và B đều nằm trong suy nghĩ của người giải Thông tin về A hoặc B thường chỉ đóng vai trò như những biểu tượng nhằm gợi nhớ các kiến thức và dữ liệu tiềm ẩn, giúp người giải suy luận và đưa ra phương án phù hợp một cách hiệu quả.

Bước đầu tiên để xác định một bài toán là phát biểu lại bài toán một cách chính xác theo ngôn ngữ của riêng bạn, giúp việc hiểu và tiếp cận bài toán trở nên rõ ràng hơn Việc này giúp xác định rõ mục tiêu và phạm vi của vấn đề, từ đó đưa ra các giải pháp phù hợp Phát biểu chính xác bài toán là bước quan trọng trong quá trình giải quyết, đảm bảo không bỏ sót các yếu tố quan trọng Đây là bước đầu tiên trong quá trình phân tích và định hướng giải pháp hiệu quả cho bài toán của bạn.

Trong quá trình học tin học, việc xét một số trường hợp cụ thể là rất cần thiết để hiểu rõ bài toán và các thao tác cần thực hiện Thực tế cho thấy, nhiều bài toán trong môn tin học chỉ có thể được mô phỏng và hiểu rõ hơn qua các ví dụ thực tế Việc xử lý các ví dụ cụ thể giúp học sinh nắm bắt các quy trình và vận dụng kiến thức một cách dễ dàng hơn Do đó, việc sử dụng ví dụ minh họa là phương pháp hiệu quả để nâng cao khả năng tiếp thu và ứng dụng kiến thức trong lĩnh vực tin học.

Cấu trúc dữ liệu và giải thuật

Cấu trúc dữ liệu là phương pháp tổ chức lưu trữ và truy cập dữ liệu trong máy tính một cách hiệu quả Việc sử dụng cấu trúc dữ liệu phù hợp giúp tối ưu hóa quá trình xử lý và truy xuất thông tin, góp phần nâng cao hiệu suất của các ứng dụng phần mềm Điều này còn phụ thuộc vào công cụ lập trình, vì mỗi ngôn ngữ và thư viện hỗ trợ sẽ có những lựa chọn cấu trúc dữ liệu phù hợp nhằm đạt hiệu quả tối đa.

 Ví dụ (trong C): Mảng (Array), Con trỏ (Pointer), Xâu kí tự (String), File, Stack,

 Một cấu trúc dữ liệu được chọn cẩn thận sẽ cho phép thực hiện thuật toán hiệu quả hơn.

Giải thuật là tập hợp hữu hạn các chỉ thị hoặc phương pháp rõ ràng để hoàn thành một nhiệm vụ từ trạng thái ban đầu Khi thực hiện đúng đắn các bước trong giải thuật, kết quả cuối cùng sẽ chính xác như dự đoán Điều này xác định tính rõ ràng và khả năng thực thi của giải thuật trong lập trình và các lĩnh vực công nghệ thông tin.

 Một thuật toán có các tính chất sau:

 Tính xác định: để đảm bao kết quả tính toán hay các thao tác mà máy tính thực hiện được là chính xác

 Tính rõ ràng: Thuật toán phải đươc thể hiện bằng các câu lệnh minh bạch; các cậu lệnh được sắp xếp theo thứ tự nhất định

 Tính khách quan: Một thuật toán dù được viết bởi nhiều người trên nhiều máy tính vẫn cho ra kết quả giống nhau.

Thuật toán có tính phổ dụng cao, có khả năng áp dụng cho nhiều bài toán khác nhau cùng loại, đặc biệt là các bài toán có đầu vào tương tự nhau, giúp tối ưu hóa quy trình giải quyết vấn đề một cách linh hoạt và hiệu quả.

 Tính kết thúc: Thuật toán phải gồm một số hữu hạn các bước tính toán.

Trình tự thực hiện các bước của thuật toán:

-Giải thuật được thiết kế theo 3 cấu trúc suy luận cơ bản sau:

 Tuần tự (Sequential): Các công việc được thực hiện một cách tuần tự, công việc này nối tiếp công việc kia.

 Cấu trúc lựa chọn (Selection): Lựa chọn một công việc để thực hiện căn cứ vào một điều kiện nào đó.

 Cấu trúc 1: Nếu (đúng) thì thực hiện .

 Cấu trúc 2: Nếu (đúng) thì thực hiện , ngược lại

(điều kiện sai) thì thực hiện .

 Cấu trúc 3: Trường hợp thực hiện .

 Cấu trúc lập (Repeating): Thực hiện lặp lại một công việc không hoặc nhiều lần căn cứ vào một điều kiện nào đó.

-Ngôn ngữ tự nhiên: Là ngôn ngữ của chúng ta đang sử dụng Có thể sử dụng ngôn ngữ tự nhiên để mô tả giả thuật như sau:

Ví dụ: Ta có thuật toán giải PT bậc nhất dạng ax + b = 0 như sau:

 Bước 1: Nhận giá trị của các tham số a, b.

 Bước 2: Xét giá trị của a xem có bằng 0 hay không?

Nếu a = 0 thì làm bước 3, nếu a ≠ 0 thì làm bước 4.

Nếu b = 0 thì ta kết luận phương trình vô số nghiệm.

Nếu b ≠ 0 thì ta kết luận phương trình vô nghiệm.

 Bước 4: (a ≠ 0) ta kết luận phương trình có nghiệm x = -b/a.

Lưu đồ thuật toán là ngôn ngữ đặc biệt dùng để mô tả giải thuật thông qua các sơ đồ hình khối Mỗi hình khối trong lưu đồ thể hiện một hành động cụ thể, giúp trực quan hóa quá trình giải quyết vấn đề Phương pháp này hỗ trợ dễ dàng hiểu và phân tích các bước của thuật toán, đồng thời thuận tiện cho việc lập trình và kiểm thử Đặc biệt, lưu đồ thuật toán đóng vai trò quan trọng trong giáo dục lập trình và thiết kế hệ thống, giúp làm rõ mạch logic của các giải pháp kỹ thuật.

Quyết định (Decision), sử dụng điều kiện.

Luồng xử lý (Flow lines).

Gọi CT con, hàm (Procedure, Function).

Bắt đầu, kết thúc (Begin, End). Điểm ghép nối (Connector).

 Ví dụ: so sánh 2 số

Số a có bằng số b không?

-Giả mã: Là mô tả giải thuật ngắn gọn sử dụng những quy ước có cấu trúc của một số ngôn ngữ lập trình (thường là Pascal) và bỏ đi các chi tiết không cần thiết để giúp hiểu rõ giải thuật hơn.

 Ví dụ: Thuật giải phương trình 2

Ra: Kết luận về nghiệm

Phương trình có nghiệm kép x=-b/(2*a); else begin

Phương trình có 2 nghiệm x1= (-b+sqrt (Delta)/(2*a) x2= (-b-sqrt (Delta)/(2*a) end; end;

1.4 Ch ng trình ươ Định nghĩa:

Chương trình máy tính là tập hợp các câu lệnh được viết bằng ngôn ngữ lập trình theo một trật tự nhất định để tự động thực hiện các nhiệm vụ hoặc chức năng cụ thể Nó giúp giải quyết các bài toán và tối ưu hóa quá trình xử lý thông tin Các chương trình này đóng vai trò quan trọng trong công nghiệp, kinh doanh, và công nghệ thông tin hiện đại Việc hiểu rõ về cấu trúc và cách xây dựng chương trình máy tính là chìa khóa để phát triển phần mềm hiệu quả và đáp ứng nhu cầu ngày càng cao của thị trường.

Ch ng 2: Ngôn ng l p trình C# ươ ữ ậ

Ngôn ngữ lập trình là công cụ dùng để viết các chương trình cho máy tính, giúp máy hiểu và thực thi các lệnh của chúng ta Có thể phân chia ngôn ngữ lập trình thành các loại chính gồm ngôn ngữ máy, hợp ngữ và ngôn ngữ cấp cao, mỗi loại có đặc điểm và ứng dụng riêng biệt trong lập trình máy tính.

Ngôn ngữ máy là các chỉ thị được thể hiện bằng mã nhị phân, can thiệp trực tiếp vào các mạch điện tử của máy tính Chương trình viết bằng ngôn ngữ máy có thể được thực thi ngay lập tức mà không cần qua bước trung gian nào, giúp tăng tốc độ vận hành Tuy nhiên, do sử dụng các mã số phức tạp và khó hiểu, ngôn ngữ máy dễ gây ra lỗi, cồng kềnh và khó đọc, đòi hỏi kỹ năng cao để lập trình và kiểm tra.

Hợp ngữ (assembly language) là ngôn ngữ lập trình cấp thấp, bao gồm tên các câu lệnh và quy tắc viết các câu lệnh đó Mỗi câu lệnh hợp ngữ gồm hai phần chính: phần mã lệnh (viết bằng tiếng Anh) thể hiện phép toán cần thực hiện và phần địa chỉ chứa toán hạng của phép toán đó.

Ngôn ngữ cấp cao (High level language) được phát triển để phản ánh cách tư duy và làm việc của người lập trình, giúp dễ dàng hơn trong quá trình viết mã Loại ngôn ngữ này gần gũi với ngôn ngữ tự nhiên của con người, như tiếng Anh, nhưng vẫn chính xác và rõ ràng như ngôn ngữ toán học, đảm bảo hiệu quả và độ chính xác cao trong lập trình.

-Các ngôn ngữ lập trình phổ biến hiện nay:

 Biến và khái báo biến

 Các hàm có sẵn của C#

 Dữ liệu trong quá trình xử lý

+Chương trình giải PT bậc 2 +Chương trình tính số tiền nhận được gửi tiết kiệm +Chương trình tính tiền điện

 Là tên gọi cho vùng nhớ (bên trong bộ nhớ máy tính khi chương trình được chạy) có khả năng được một giá trị = một dữ liệu

 Được khai báo và sử dụng để chứa dữ liệu của chương trình

 Kiểu_biến tên_biến [= giá trị];

 Tên biến phân biệt chữ hoa và chữ thường

 tenBien khác với TenBien và Tenbien

 Không bắt đầu bằng số

 Không chứa các ký tự đặt biệt như ~! @# $ % ^ & * ()

 Không đặt tên biến trùng với từ khóa

 String int, provate ← tên không hợp lê

Bool {true, false} Giá trị mặc đinh: fasle

Số nguyên không dấu 16 bít, thường dùng để lưu trữ mã ASCII Unicode của các ký tự

64 bít, lưu trữ các thông tin về ngày tháng và thời gian Giá trị mặc đinh 1/1/0001 – 0:00:00 decimal Số thực có dấu 128 bit (96 bít phần nguyên và 32 bít phần thập phân) Giá trị mặc đinh :0 double Số thực có dấu 64 bít

Giá trị mặc định: 0 int Số nguyên có dấu 32 bít [-2 31 ,2 31 )

Giá trị mặc định :0 string Mảng các ký tự thuộc kiểu Char

Giá trị mặc định: Nothing (không phải chuỗi rỗng)

 Hàm toán học cơ bản

 Hàm xử lý trên kiểu dữ liệu chuỗi

 Hàm xử lý trên kiểu dữ liệu ngày tháng

Ch ng 3: Câu l nh đi u khi n ươ ệ ề ể

2 Câu lênh chọn o If o If…else o If…else lồng nhau o Switch

3 Câu lệnh lặp o While o Do…while o For o Lệnh break và continue

 Câu lệnh / Phát biểu (statement) là một

 Biểu thức kết thúc bằng dấu chấm phẩy (;), hoặc

 Khối lệnh đặt giữa hai dấu {và}, hoặc

-Các cấu trúc dùng để điều khiển chương trình (conreol structures) có 3 loại: a) Tuần tự (sequence) b) Chọn (selection) c) Lặp (reprtition)

 Cú pháp câu lệnh if

 Expression, biểu thức có giá trị luận lý, (=, ==, !=, &&, ||, !)

 Statement câu lệnh rỗng, câu lệnh đơn hoặc khối lệnh true

 Sử dụng ghép gán (=) thay cho phép so sánh bằng nhau (==)

Console.Write(“X va y bang nhau”);

 Gõ dấu chấm phẩy sau biểu thức điều kiện

Console.Write(“x va y bang nhau”);

Câu lệnh if Câu lệnh if…else Câu lệnh if…else lồng nhau

If (expression) statement expression Statement

 Cú pháp câu lênh if-else

 Statement1, statement2: Câu lệnh rỗng, câu lệnh đơn hoặc khối lệnh.

2.3 Câu lệnh if…else lồng nhau

 Cú pháp câu lệnh if-else-if (nested if-else):

 Câu lệnh if-else có thể thực hiện nhanh hơn một chuỗi câu lệnh if rời nhau, bởi vì có thể thoát khỏi sớm hơn nếu thỏa một trong các điều kiện.

 Chương trình dịch C++ luôn hiểu else được kết nối với if ngay trước đó, vì vậy phải sử dụng cặp dấu ngoặc {và} khi cần thiết.

If (expression) statement1; else statement2; expression

? :

Nếu đúng thì thực hiện, ngược lạithực hiện.

 Là dạng rút gọn của if…else

 String a = (i % 2 == 0)? “so chan”: “so le”

-switch ()

;

không lệnh có beak

 Không dùng câu lệnh switch bới kiểu string.

 Không dùng một giá trị cho hai nhãn case.

 Có thể dùng nhiều nhãn case cho một trường hợp

 Không bắt buộc phải có default

 Thông thường trong mỗi case có lệnh break để thoát khỏi cấu trúc switch 3.Câu lệnh lặp

-Các loại câu lệnh lặp: o While o Do…while o For o Lệnh break và continue

 B2: Nếu kết quả là true thì statement thực thi và quay lại B1

 B3: Nếu kết quả là false thì thoát khỏi vòng lặp while

-Nếu expression là true thì quay lại bước 1

-Nếu expression là false thì thoát khỏi vòng lặp

 Để thoát khỏi vòng lặp: dùng break

 Để kết thúc sớm 1 bòng lặp: dùng continue

 Vòng lặp được chạy ít nhất 1 lần

-Exp 1: là biểu thức khỏi tạo được thực hiện

-Exp 2: là biểu thức điều kiện

-Exp 3: biểu thức điều kiện lặp

Foreach ( in )

 Hàm là một khối lệnh thực hiện một công việc hoàn chỉnh (module), được đặt tên và gọi thực thi nhiều lần tại nhiều vị trí trong chương trình

 Hàm còn gọi là chương trình con, phương thức, hành vi

 Hàm có thể được gọi là chương trình chính hoặc từ một hàm khác

 Hàm có giá trị trả về hoặc không

 Nếu hàm không có giá trị trả về gọi là thủ tục

( , …)

[return]:

 Tương tụ cách đặt tên biến

4.2 Tham số hình thức & tham số thực

Khi hàm cần nhận đối số để thực thi, ta phải khai báo danh sách các tham số trong phần định nghĩa hàm để nhận giá trị từ chương trình gọi Các tham số này được gọi là tham số hình thức, giúp hàm thực thi chính xác dựa trên dữ liệu đầu vào được truyền vào, đảm bảo tính linh hoạt và khả năng tái sử dụng của hàm.

Khi gọi hàm trong lập trình, bạn cung cấp các giá trị thật để truyền vào các tham số của hàm Những giá trị này sẽ được sao chép vào các biến tham số trong hàm, gọi là tham số thực, giúp hàm thực thi chính xác theo dữ liệu cung cấp Việc hiểu rõ cách truyền tham số là yếu tố quan trọng để viết mã hiệu quả và tối ưu hóa quá trình xử lý dữ liệu trong lập trình.

4.3 Truyền tham trị và tham chiếu trong hàm

-Sao chép giá trị của đối số vào tham số hình thức của hàm

-Những thay đổi của tham số không ảnh hưởng đến giá trị của đối số

-Sao chép địa chỉ của đối số vào tham số hình thức Do đó, những thay đổi đối với tham số sẽ có tác dụng trên đối số

 Sử dụng từ ref hoặc out

 Tham số kiểu đa trị mặc định là truyền theo tham chiếu

 Giải bài toán bằng cách rút gọn liên tiếp bài toán ban đầu thành bài toán cũng tương tự nhưng có dữ liệu đầu vào nhỏ hơn

Trong thân hàm có duy nhất một lời gọi hàm gọi là chính nó một cách tường minh:

tenham ()

//Trả về giá trị hay kết thúc công việc

//Thực hiện một số công việc (nếu có)

…tenham ();

//Thực hiện một số công việc (nếu có)

Trong thân của hàm có hau lời gọi hàm gọi là chính nó một cách tường minh:

tenham ()

//Trả về giá trị hay kết thúc công việc

//Thực hiện một số công việc (nếu có)

…tenham (); //Giải quyết vấn đề nhỏ hơn

//Thực hiện một số công việc (nếu có)

…tenham (); //Giải quyết vấn đề còn lại

//Thực hiện một số công việc (nếu có)

Trong thân của hàm có lời gọi hàm gọi lại chính nó được đặt bên trong vòng lặp:

tenham ()

//Thực hiện một số công việc (nếu có)

//Trả về giá trị hay kết thúc công việc

{//Thực hiện một số công việc (nếu có) tenham ();

Trong thân của hàm này có lời gọi hàm đến hàm kia và trong thân của hàm kia có lời gọi hàm tới hàm này

tenham2 ();

tenham1 ();

…//Thực hiện một số công việc (nếu có) tenham2 ();

…//Thực hiện một số công việc (nếu có)

tenham2 ();

…//Thực hiện một số công việc (nếu có) tenham1 ();

…//Thực hiện một số công việc (nếu có)

5.6 Cơ chế hoạt đông của đệ qui

 Hoạt động theo cơ chế LIFO

 Dùng stack để lưu vết dữ liễu và chỉ thị lệnh

Trong các thuật toán, việc sử dụng vòng lặp để thay thế cho đệ quy là giải pháp tối ưu để nâng cao hiệu suất Vì đệ quy thường tiêu tốn nhiều bộ nhớ và xử lý chậm hơn so với vòng lặp, do đó, các giải thuật có thể cài đặt bằng vòng lặp nên ưu tiên sử dụng để tăng tốc độ thực thi và tiết kiệm bộ nhớ Việc lựa chọn vòng lặp thay cho đệ quy giúp tối ưu hóa tài nguyên hệ thống và cải thiện hiệu quả của chương trình.

6.Viết hàm và viết chương trình

 Về đối tượng phục vụ:

 Đối tượng phục vụ của chương trình = người sử dụng

 Đối tượng phục vụ của hàm = lập trình viên

 Về cấu trúc (các giai đoạn trong thiết kế):

 Chương trình: nhập dữ liệu từ người sử dụng ⟶ xử lý⟶ xuất kết quả ra màn hình

 Hàm: qui đinh cú pháp hàm ⟶ xử lý⟶ trả về giá trị kết quả

- Là tập hợp nhiều phân tử có cùng kiểu dữ liệu

- Số phân tử trong mảng được xác định trước

- Mỗi phần tử được đánh số chỉ mục, ban đầu từ 0

- Mảng như là một tập hợp các biến cùng kiểu được lưu giữ tại các vị trí bộ nhớ kề nhau

Ngôn ngữ lập trình C#

Câu lệnh điều khiển

Mảng và chuỗi

Mảng

- Là tập hợp nhiều phân tử có cùng kiểu dữ liệu

- Số phân tử trong mảng được xác định trước

- Mỗi phần tử được đánh số chỉ mục, ban đầu từ 0

- Mảng như là một tập hợp các biến cùng kiểu được lưu giữ tại các vị trí bộ nhớ kề nhau

- Thay vì khai báo biến một cách rời rạc, như biến num0, num1, …, num99, ta có thể khai báo một mảng các giá trị như nums [0], nums [1], …, nums [99] để biểu diễn các giá trị riêng biệt

Khai báo mảng

 Kiểu_dữ_liệu được sử dụng để xác định kiểu của phần tử trong mảng

 [] xác định rank hay kích cỡ của mảng

 Tên_mảng xác định tên mảng

Truy xuất từng phân tử mảng

 xác định số phần từ của mảng

 truy xuất phần tử: tenmang[sothutu]

 Gán điểm thứ 3 của mảng diem là 10

 Gán điểm thứ 4 của mảng diem bằng điểm thứ nhất cộng 4

Duyệt mảng

Duyệt mảng bằng foreach

 Không nên dùng foreach khi:

 Cần duyệt một phần trong mảng

 Cần duyệt từ cuối về đầu mảng

 Cần biết chỉ số mảng trong vòng lặp

 Cần thay đổi giá trị của phần từ mảng

Sao chép mảng

 Mảng là kiểu tham chiếu ⟶ gán mảng là gán tham chiếu

 Tạo mảng mới và gán giá trị từ mảng cũ

 Int[] mangA = new int[diem.Length];

 Array.copy (diem, mangA, diem.Length);

Đảo mảng

Phương thức Reverse của lớp arry thực hiện việc đảo thứ tự các phần tử trong mảng Cú pháp thực hiện:

Sắp xếp mảng

Phương thức sort() của lớp array thực hiện việc sắp xếp các phần tử trong mảng

Tìm kiếm trên mảng

 Tìm kiếm trên mảng đã được sắp xếp

Phương thức BinarySearch của lớp Array thực hiện việc tìm kiếm một giá trị trong một mảng đã được sắp xếp trước, giúp xác định nhanh chóng vị trí của phần tử cần tìm Phương thức này trả về một số nguyên thể hiện chỉ số của phần tử tìm được trong mảng, hoặc -1 nếu không tìm thấy phần tử đó Cú pháp của phương thức BinarySearch rất đơn giản, giúp tối ưu tốc độ tìm kiếm trong các mảng đã sắp xếp Áp dụng binary search giúp nâng cao hiệu quả và tiết kiệm thời gian trong các ứng dụng yêu cầu tìm kiếm nhanh chóng trên dữ liệu đã được sắp xếp.

Int vitri = array.binarysearch (tenmang,giatricantim);

 Tìm kiếm trên mảng chưa được sắp xếp

 Giải thuật tìm kiếm tuyến tính

Xét phân tử từ đầu cho đến cuối một cách tuần tự

Tại vị trí thứ I nếu giá trị trong dữ liệu đúng với khóa cần tìm kiếm ⟶ tìm thấy Nếu không đúng tìm đến phần tử kế tiếp i+1

Nếu sau khi xét hết N phần tử mà không có giá trị khóa cần tìm ⟶ không tìm thấy

Mảng đa chiều

 C# hỗ trợ mảng đa chiều, ở đây ta xét mảng 2 chiều vì nó phổ biến nhất

 Mảng 2 chiều thực chất là mảng của những mảng 1 chiều Ta có thể xem mảng 2 chiều là 1 ma trận hồm các hàng và các cột

Kiểu_dữ_liệu[,] mang = new Kiểu_dữ_liệu [so_hang, so_cot];

Đánh giá mảng

 Ưu điểm chính của mảng: o Truy suất nhanh, dễ sử dụng với tập dữ liệu cố định không thay đổi trong quá trình thực thi

Mảng có nhược điểm chính là kích thước và số chiều cố định, gây khó khăn trong việc mở rộng ứng dụng Ngoài ra, các phần tử trong mảng được đặt và tham chiếu liên tiếp nhau trong bộ nhớ, làm cho việc xóa một phần tử khỏi mảng trở nên phức tạp và khó khăn.

Kiểu ký tự

 Lưu trữ ký tự Unicode 16-bit

 Kiểu trong.NET frameword: system.char

 Char ch2 = (char) 65; //ký tự ‘A’

 Sử dụng dấu nháy đơn để khai báo kiểu char

Chuyển đổi kiểu ký tự

 Chú ý: chuỗi đưa vào chuyển đổi chỉ có 1 ký tự

 Char ch1 = convert.Tochar(“a”); //ch1 = ‘a’

 Char ch1 = convert.Tochar(“aa”); //báo lỗi

So sánh kiểu ký tự

 So sánh 2 ký tự,trả về hiệu số giữa ký tự so sánh và ký tự được so sánh

 True: nếu 2 ký tự bằng nhau

 False: nếu 2 ký tự không bằng nhau

 Char.isdigit(ch): true nếu ch là chữ số

 Char.isletter(ch): true nếu ch là chữ số

 Char.isnumberic(ch): true nếu ch là chữ số Unicode

 Char.iswhilespace(ch): true nếu ch là khoảng trắng

 Char.islower(ch): true nếu ch là chữ thường

 Char.isupper(ch): true nếu ch là chữ hoa

Thao tác với ký tự

 Chuyển ký tự từ chữ hoa sang chữ thường

 Console.WriteLine (char.tolower(ch1));

 Chuyển ký tự từ chữ thường sang chữ hoa

 Console.WriteLine (char.toupper(ch1));

Chuỗi

 Mảng các ký tự thuộc kiểu char

 Kiểu trong NET framework: system.string

 Chuỗi với ký tự đặc biệt

 Khai báo nguyên văn: thêm dấu ‘@’

Chuyển đổi sang chuỗi

 Tostring(): trả về chuỗi ứng với nội dung của biến

Kiểu dữ liệu cấu trúc

Struct là gì?

Trong C#, Struct là một kiểu dữ liệu giá trị đặc biệt, cho phép bạn tạo ra các biến lưu trữ nhiều giá trị riêng lẻ có mối quan hệ chặt chẽ với nhau Struct thường được sử dụng để nhóm các dữ liệu liên quan thành một thể thống nhất, giúp tối ưu hóa bộ nhớ và cải thiện hiệu suất trong các chương trình Việc sử dụng Struct phù hợp khi bạn cần định nghĩa các đối tượng nhỏ gọn, có cấu trúc rõ ràng mà không cần kế thừa phức tạp như các class.

Đặc điểm của struct

 Dùng để đóng gói các trường dữ liệu cơ bản còn có các phương thức, các struct khác

 Muốn sử dụng phải khởi tạo cấp phát vùng nhờ cho đối tượng thông qua toán tử new

 Struct không được phép kế thừ

 Sử dụng struct khi bạn chỉ muốn lưu thông tin và hiển thị thông tin thôi

Khai báo struct

{ Public ;

Sử dụng struct

 Ta có thể truy xuất đến từng thành phần dữ liệu của struct thông qua toán tử

“.” Kèm theo tên thành phần muốn truy xuất

Vì struct là kiểu tham trị nên khi truyền vào các phương thức, giá trị của nó sẽ không thay đổi Để có thể cập nhật giá trị sau khi thực hiện các thao tác trong phương thức, cần sử dụng từ khóa out để truyền tham chiếu, từ đó cho phép thay đổi giá trị của struct khi kết thúc phương thức.

File và FileStream trong C#

Các lớp I/0 trong C#

File là một tập dữ liệu được lưu trữ trên ổ đĩa với tên file và đường dẫn thư mục cụ thể, giúp tổ chức và truy xuất dữ liệu dễ dàng Khi một file được mở để đọc hoặc ghi, nó sẽ trở thành một luồng (stream), cho phép truyền dữ liệu liên tục giữa phần mềm và bộ nhớ đệm Việc quản lý file và stream đóng vai trò quan trọng trong lập trình để đảm bảo dữ liệu được truy cập an toàn và hiệu quả.

 Luồng về cơ bản là chuỗi các byte đi qua đường truyền Có hai luồng chính: luồng đầu vào và luồn đầu ra

 Luồng đầu vào được sử dụng để đọc dữ liệu từ file và luồng đầu ra được sử dụng ghi vào file

Đọc ghi file (File I/0) trong C#?

Namespace System.IO chứa các lớp đa dạng được sử dụng để thao tác với file như tạo, xóa, đọc, ghi và đóng file một cách dễ dàng Các lớp này giúp lập trình viên xử lý file một cách hiệu quả và linh hoạt trong các ứng dụng của mình Việc hiểu rõ các chức năng của System.IO là cần thiết để quản lý dữ liệu một cách an toàn và tối ưu.

 Lớp FileStream trong namespace system.IO giúp đọc, ghi và đóng file Lớp này có nguồn gốc từ lớp trừu tượng Stream

 Bạn cần tạo một đối tượng FileStream để tạo một file mới hoặc mở một file hiện có

 Cú pháp khởi tạo đối tượng FileStream như sau: fileStream = new FileStream (, , , );

 Tham số kiểu enum trong phương thức khởi tạo của lớp FileStream là:

 FileMode: định nghĩa các phương thức khác nhau để mở file Các thành viên của enum FileMode:

 Append, Create, CreateNew, Open, OpenOrCreate, Truncate

 FileAccess: Enum FileAccess có các thành viên: Read, ReadWrite và Write

 FileShare: có các thành viên như sau:

 Inheritable, None, Read, ReadWrite, Write

Windows Form

Khái niệm windows form

 Windows form là môi trường giao diện đồ họa giúp việc tương tác giữa người dùng với chương trình diễn ra một cách thuật tiện và linh hoạt

Các ứng dụng của windows form

 Tạo những ứng dụng với giao diện đồ họa giao tiếp với người dùng

 Nhận thông tin nhập từ người dùng

 Phản ứng với những hoạt động của người dùng

 Phần mềm văn phòng Microsoft Office

 Phần mền quản lý dự án MS Project

 Phần mềm lập trình Visual Studio

 … các loại phần mềm tương tự khác

Môi trường thiết kế

 Để tạo ứng dụng windows form trong Visual Studio, chúng ta vào menu File, chọn New Project, chọn Template là windows Application.

 Trong C#, màn hình tương tác giữa người dùng và phần mềm được gọi là Form.

 Các thuộc tính quan trọng của form:

Name Tên form, thường bắt đầu bằng form

Forecolor Màu chữ trên form

Font Đinh dạng chữ trên form

Startposition Định vị trí form khi mới xuất hiện

Windowstate Đinh trạng thái form khi mới xuất hiện

Acceptbutton Chọn nút bấm được thực hiện khi nhấn enter

 Các sự kiện quan trọng của form:

Trong các sự kiện của giao diện người dùng, "Click" thực hiện lệnh khi người dùng nhấn chuột một lần, trong khi "Doubleclick" kích hoạt lệnh khi nhấn chuột hai lần liên tiếp "Load" được sử dụng để thực hiện các thao tác khi cửa sổ (form) được mở lần đầu tiên, đảm bảo khởi tạo dữ liệu hoặc thiết lập ban đầu cho giao diện Ngoài ra, "Formclosing" cho phép thực hiện các lệnh cần thiết trước khi cửa sổ đóng, giúp quản lý trạng thái và dữ liệu một cách hợp lý Những sự kiện này đều rất quan trọng trong việc xây dựng các ứng dụng tương tác, tối ưu hóa trải nghiệm người dùng và đảm bảo hoạt động mượt mà của phần mềm.

Các control phổ biến

 Control có thể hiểu là những thành phần được sắp xếp trên form Nó cho phép hiển thị dữ liệu, đồng thời giúp người sử dụng có thể tương tác với hệ thống phần mềm.

Label

Label là control dùng để thể hiện một chuỗi hoặc văn bản trên form

Texbox

Texbox được dùng để làm nơi cho người dùng nhập thông tin vào chương trình

Button

Button là nút bấm trên form, thường được dùng như một hiệu lệnh bắt đầu thực hiện một công việc nào đó

Checkbox và radiobutton

 Checkbox cho phép trên giao diện người sử dụng có thể chọn nhiều lựa chọn

 Radiobutton cho phép trên giao diện người sử dụng chỉ được chọn một lựa chọn Phải kết hợp với GruopBox để nhóm các Radiobutton

Lisbox

Lisbox tạo ra một danh sách để người dùng lựa chọn trên form Lisbox có sự kiện mặc định là SelectedlndexChanged

Các phương thức quan trọng của lstABC.Items.MethodXYZ()

RichTextbox

Richtextbox dùng để hiển thị dữ liệu theo nhiều dòng, có thể định dạng được dữ liệu trong control này.

Kết quả, kết luận và kiến nghị

Hoàn thành các kiến thức cơ bản về kỹ thuật lập trình và thực hiện 39 bài tập với tổng cộng khoảng 800 dòng mã lệnh, giúp em nâng cao kỹ năng viết mã và xác định bài toán để có thể lập trình chính xác Một số bài yêu cầu chỉnh sửa nhiều lần để phù hợp với yêu cầu đề bài, phản ánh trình độ còn hạn chế của em Em nhận thấy mình cần học thêm nhiều kiến thức nữa để vận dụng tốt vào thực tế Mong cô tiếp tục truyền đạt nhiều kiến thức mới và cung cấp thêm bài tập để em có thêm cơ hội rèn luyện và nâng cao kỹ năng lập trình của mình.

800 dòng code: using System; namespace _800

{ static void Main(string[] args)

//Bai1 xin chao sinh vien

// Console.WriteLine("Xin chao sinh vien khoa cong nghe thong tin-Lop CT04A"); // Console.OutputEncoding = Encoding.UTF8;

// Console.WriteLine("nguyen nhat khanh");

//Bai2 Giai phuong trinh bac nhat

//Console.WriteLine("Giai phuong trinh bac nhat");

// Console.Write("Phuong trinh co 1 nghiem:{0}", -b / a);

// Console.Write("Phuong trinh co vo so nghiem");

// Console.Write("Phuong trinh vo nghiem");

//Bai3 phuong trinh bang nhau

//Console.WriteLine("Than moi ban : Nguyen Van An"); //Console.OutputEncoding = Encoding.UTF8;

//Console.WriteLine("Den du tiec sinh nhat cua minh");

//Console.WriteLine("Vao luc 19h ngay 01/04/2017");

//Console.WriteLine("Tai 357 Nguyen Trai, Quan 5,Tp.HCM"); //Console.OutputEncoding = Encoding.UTF8;

//Console.WriteLine("Rat mong duoc don tiep!");

//Bai5 Chu vi va dien tich cua hinh tron

//Bai6 Chu vi va dien tich cua tam giac

//Console.Write("Nhap vo 3 canh cua tam giac");

// Console.WriteLine("Chu vi hinh tam giac:{0}", chuvi); // Double p = chuvi / 2.0;

// Console.WriteLine("Dien tich cua tam giac:{0}", dientich); //}

// Console.Write("Khong phai tam giac");

//Console.Write("NHAP MA ASCII");

//Console.WriteLine("Nhap ky tu");

//Char x = Convert.ToChar(Console.ReadLine());

//Console.WriteLine("ky tu vua nhap vao:" + x);

//Console.WriteLine("Ma ascii vua nhap:" + ascii);

//Console.WriteLine("Ky tu ke tiep la:" + (char)(ascii + 1)); //Console.ReadLine();

//Bai8 dao nguoc 1 so nguyen duong

//Console.Write("in so theo chieu dao nguoc trong C#:\n"); //Console.Write("\n\n");

//Console.Write("nhap so bat ky:");

//num = Convert.ToInt32(Console.ReadLine());

//Console.Write("So bi dao nguoc la:{0}\n", sum);

//Console.WriteLine("5 giai thua la:{0}", n);

//Console.WriteLine("5 giai thua la:{0}", n);

//Console.WriteLine("5 giai thua la:{0}", n);

//bai15 tao mang da chieu

//int[,] mang = new int[sodong, socot];

//Console.WriteLine("nhap so nguyen duong bat ki"); //int m = 0, n, g = 1;

//Console.WriteLine("so dao nguoc cua so vua nhap la:{0}", m); //Console.ReadLine();

//Bai17 chu so bat ki

//Console.Write("Nhap vao so bat ki");

//Console.WriteLine("So chu so cua so vua nhap la:{0}", b); //Console.ReadLine();

//Console.Write("Nhap vao so muon nhap");

//Console.WriteLine("tong cua cac chu so vua nhap la", c); //Console.ReadLine();

//Bai19 dien tich cua hinh tam giac

//int n, tam, sodu, ketqua;ketqua = 0;

//Console.WriteLine("so dao nguoc la:{0}",ketqua);

//Bai20 tinh giai thua cua a

//Console.WriteLine("giai thua cua so vua nhap la:{0}", r); //Console.ReadLine();

//bai 21 tinh tong so phan tu

//Console.Write("nhap tong so phan tu muon tinh vao day:"); //double n, r = 0;

//Console.WriteLine("tong cua tat ca phan tu la:{0}", r);

//bai22 tinh tong phan tu cua e

//Console.Write("nhap so phan tu muon tinh tong:");

//Console.WriteLine("tong cua so phan tu vua nhap la:{0}", e); //Console.ReadLine();

//bai23 kiem tra phep toan

//Console.Write("nhap vao so can kiem tra");

// Console.WriteLine("{0}khong phai la so nguyen to", a); // }

//Console.WriteLine("{0}la so nguyen to", a);

// Console.WriteLine("{0}!+{1}!={2}", n, m, tinhgiaithua(n) + tinhgiaithua(m)); // Console.ReadLine();

//Console.WriteLine("Dung ham de quy");

//Console.WriteLine("{0}!+{1}!={2}", n, m, tinhgiaithua_DQ(n) + tinhgiaithua_DQ(m)); //Console.ReadLine();

//bai25 tao ham tinh gia tri x va y

// Console.WriteLine("tao tinh gia tri cua x,y");

// Console.Write("nhap co so:");

// Console.Write("nhap luy thua:");

// Console.WriteLine("tinh gia tri {0}^{1}={2}", x, y, HamPow(x, y)); // Console.ReadKey();

//tao ham de tinh gia tri x va y

//public static int HamPow(int num,int y)

// ket_qua = ket_qua * num;

// Console.WriteLine("Nhap thong tin sinh vien");

// Console.WriteLine("Thong tin sinh vien vua nhap la");

// Console.WriteLine("DiemTB cua SV" + DiemTBSinhVien(SV1)); // Console.ReadLine();

////ham nhap thong tin cho struct

//static void NhapThongTinSinhVien(out Sinhvien SV)

// SV.Maso = int.Parse(Console.ReadLine());

// SV.DiemToan = int.Parse(Console.ReadLine());

// SV.DiemLy = int.Parse(Console.ReadLine());

// SV.DiemVan = int.Parse(Console.ReadLine());

//static void XuatThongTinSinhVien(Sinhvien SV)

// Console.WriteLine("Ma so" + SV.Maso);

// Console.WriteLine("Ho ten" + SV.Hoten);

// Console.WriteLine("Diem Toan" + SV.DiemToan);

// Console.WriteLine("Diem Ly" + SV.DiemLy);

// Console.WriteLine("Diem Van" + SV.DiemVan);

//static double DiemTBSinhVien(Sinhvien SV)

// return (SV.DiemToan + SV.DiemLy + SV.DiemVan) / 3;

//static void Main(string[]args)

// Console.WriteLine("Nhaop thong tin sinh vien:");

// Console.WriteLine("Thong tin sinh vien vua nhap la:");

// Console.WriteLine("DiemTB cuaSV:" + DiemTBSinhVien(SV1)); // Console.ReadLine();

//bai26 tinh gia tri cua phan tu thu n trong day Fibonacci // Console.Write("phan tu cua n:");

// int n = int.Parse(Console.ReadLine());

// private static int fibonacci(int n)

////bai27 tìm phân tử lớn,nhỏ của mảng

////tim phan tu lon nhat cua mang

//Console.Write("so phan tu cua mang a=");

//int n = int.Parse(Console.ReadLine());

// Console.Write("\nphan tu {0} cua mang a :", i + 1);

// manga[i] = int.Parse(Console.ReadLine());

//Console.WriteLine("\nphan tu lon nhat la: {0}", lon);

////tim phan tu nho nhat cua mang

//Console.WriteLine("\nphan tu nho nhat la: {0}", nho);

////bai28 tìm nguyên âm,số chẵn,không thuộc của mảng //mảng b chứa các số nguyên âm của a

//Console.Write("so phan tu cua a ");

// manga[i] = int.Parse(Console.ReadLine());

//Console.Write("\nso am cua mang a la\n ");

////mảng c chứa các số chẵn của a

//Console.Write("\ncac so chan co trong mang a la:\n"); //for (int i = 0; i < mangc.Length; i++)

////mảng d chứa các số nguyên của a không thuộc đoạn[1,10] //int[] mangd = new int[n];

//Console.Write("\ncac so trong mang a khong thuoc khoang 1 den 10 la:\n");

// if (manga[i] != 1 && manga[i] != 2 && manga[i] != 3 && manga[i] != 4 && manga[i] !5 && manga[i] != 6 && manga[i] != 7 && manga[i] != 8 && manga[i] != 9 && manga[i] != 10) // :) // {

//bai29 nhập vào 2 mảng số nguyên a,b

//Console.WriteLine("nhap so luong phan tu cua mang a");

// manga[i] = int.Parse(Console.ReadLine());

//Console.WriteLine("nhap so luong phan tu cua mang b");

// mangb[i] = int.Parse(Console.ReadLine());

//Console.WriteLine("cac so nguyen thuoc mang a la:");

//Console.WriteLine("\nso nguyen thuoc mang a va b:\n");

//bai30 nhập vào mảng số nguyên a và 2 số nguyên m,n

// Console.Write("phan tu cua mang a :", i + 1);

// manga[i] = int.Parse(Console.ReadLine());

//Console.WriteLine("tong cua mang a la:{0}", t);

//bai31 nhập vào mảng số nguyên a tính trung bình của số dương của a

//Console.Write("so phan tu cua mang a =");

//int n = int.Parse(Console.ReadLine());

// Console.Write("so thu {0} la:", i + 1);

// manga[i] = int.Parse(Console.ReadLine());

//Console.WriteLine("trung binh cong cua cac so duong tong mang a la:{0}", b); //Console.ReadLine();

//bai32 nhập vào 2 mảng số nguyên a,b và 1 số nguyên k

//tổng các số nguyên của cả a,b

//Console.Write("nhap so luong phan tu mang a ");

//int n = int.Parse(Console.ReadLine());

// Console.Write("phan tu thu {0} cua mang a :", i + 1);

// manga[i] = int.Parse(Console.ReadLine());

//Console.Write("nhap so luong phan tu mang b ");

//int m = int.Parse(Console.ReadLine());

// Console.Write("phan tu thu {0} cua mang b :", i + 1);

// mangb[i] = int.Parse(Console.ReadLine());

//Console.Write("nhap so nguyen k: ");

//int k = int.Parse(Console.ReadLine());

//Console.WriteLine("tong cac so nguyenla :{0}", a);

//// tổng các số nguyên nhỏ hơn k của a

//Console.WriteLine("tong cac so nguyen trong mang a nho hon k la :{0}", b); //Console.ReadLine();

////mảng c chứa các số nguyên của a>k và không chứa trong b

//Console.WriteLine("mang c chua cac so nguyen cua a");

// int e = Array.BinarySearch(mangb, manga[i]);

// Console.WriteLine("khong co phan tu nao");

//bai33 tìm độ dài của một chuỗi C#

//Console.Write("\ntim do dai cua chuoi trong c#:\n", str);

//foreach (char chr in str)

//Console.WriteLine("do dai cua mot chuoi :{0}", i);

//bai34 lấy chuỗi con với vị trí bắt đầu và độ dài chuỗi con xác định

//Console.Write("\nLay chuoi con trong C#:\n");

//Console.Write("Nhap mot chuoi: ");

//Console.Write("Nhap vi tri bat dau de lay chuoi con: ");

//Console.Write("Nhap do dai cua chuoi con: ");

//Console.Write("Chuoi con thu duoc tu chuoi ban dau la: ");

//bai35 nhập ký tự đầu tiên của mỗi chữ in hoa, các ký tự còn lại in thường //string str;

//Console.Write("\nky tu dau cua moi chu in hoa va cac ky tu con lai in thuong:\n"); //Console.Write(" -\n");

//Console.Write("Nhap mot chuoi: ");

//Console.Write("\nin hoa chu dau tien,in thuong ky tu con lai: ");

// Console.Write(Char.ToLower(ch));

// Console.Write(Char.ToUpper(ch));

//bai36 giải phương trình bậc 2

//float a = float.Parse(Console.ReadLine());

//float b = float.Parse(Console.ReadLine());

//float c = float.Parse(Console.ReadLine());

//Console.WriteLine("Phương trình nhập vào là:\n {0}x*x + {1}x + {2} = 0", a, b, c); //Console.WriteLine("Delta phẩy = {0}", delta);

//bai37 uoc chung lon nhat

//Console.WriteLine("UCLN cua " + k+ " va " + d + " la " + m);

//38 tìm m lớn nhất sao cho 1+2+3+ +m diemdv)

Ngày đăng: 25/03/2023, 14:52

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w