Xây dựng website dạy ngôn ngữ lập trình C# dành cho người mới bắt đầu

Page 1

ĐẠI HỌC HUẾ TRƢỜNG ĐẠI HỌC KINH TẾ KHOA HỆ THỐNG THÔNG TIN KINH TẾ  KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC XÂY DỰNG WEBSITE DẠY NGÔN NGỮ LẬP TRÌNH C# DÀNH CHO NGƢỜI MỚI BẮT ĐẦU Sinh viên thực hiện: Trƣơng Thị Hồng Nhung Giảng viên hƣớng dẫn Lớp: K46 Tin học kinh tế ThS. Lê Viết Mẫn Niên khóa: 2012 2016 Huế, tháng 05 năm 2016 ĐạihọcKinhtếHuế https://mmotool.vn/

LỜI CÁM ƠN Để thực hiện khóa luận này, em xin gửi lời cảm ơn chân thành đến Trường Đại học Kinh tế - Đại học Huế, toàn bộ thầy cô giáo, bạn bè đã giúp đỡ em thực hiện đề tài này một cách thuận lợi nhất. Trước tiên, em xin cảm ơn Nhà trường đã tạo điều kiện thuận lợi nhất để em hoàn thành chương trình khóa luận của mình. Đây là cơ hội để em có dịp được học hỏi, tìm hiểu và quan trọng nhất là so sánh được sự khác biệt giữa lý thuyết được học ở nhà trường và thực tế. Điều này sẽ giúp cho em rất nhiều trong tương lai, khi em ra trường và muốn tìm kiếm nhiều cơ hội để phát huy khả năng.

Em cũng xin gửi lời cảm ơn chân thành đến Thạc sĩ Lê Viết Mẫn, giảng viên Khoa Hệ thống Thông tin Kinh tế đã tận tình hướng dẫn, giúp đỡ em rất nhiều từ những bước ban đầu cho đến khóa luận được hoàn thành tốt nhất có thể. Cuối cùng em xin cảm ơn đến tất cả các thầy

cô giáo trong Khoa Hệ thống Thông tin Kinh tế, đến gia đình người thân và tất cả bạn bè đã đóng góp ý kiến và giúp đỡ cho đề tài của em được hoàn thành tốt đẹp. Em xin chân thành cảm ơn! Huế, tháng 05 năm 2016 Sinh viên: Trương Thị Hồng Nhung ĐạihọcKinhtếHuế https://mmotool.vn/

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn Sinh viên thực hiện: Trương Thị Hồng Nhung 1 MỤC LỤC MỤC LỤC 1 DANH MỤC CÁC CHỮ VIẾT TẮT VÀ KÝ HIỆU..................................................3 DANH MỤC CÁC BẢNG BIỂU..................................................................................3 DANH MỤC CÁC HÌNH VẼ 4 MỞ ĐẦU.........................................................................................................................5 1. Lý do chọn đề tài 5 2.Mục tiêu của đề tài .....................................................................................................5 3.Đối tƣợng và phạm vi nghiên cứu.............................................................................6 3.1.Đối tƣợng nghiên cứu..............................................................................................6 3.2.Phạm vi nghiên cứu.................................................................................................6 4.Phƣơng pháp nghiên cứu 6 5.Nội dung khoá luận ....................................................................................................7 CHƢƠNG 1: THỰC TRẠNG GIẢNG DẠY NGÔN NGỮ LẬP TRÌNH C# VÀ PHƢƠNG PHÁP GIẢNG DẠY ĐIỆN TỬ.................................................................8 1.1.Ngôn ngữ lập trình C# ............................................................................................8 1.2.Thực trạng việc giảng dạy ngôn ngữ lập trình C# 12 1.3.Phƣơng pháp giảng dạy điện tử...........................................................................13 CHƢƠNG 2: THIẾT KẾ BÀI GIẢNG NGÔN NGỮ LẬP TRÌNH C# DÀNH CHO NGƢỜI MỚI BẮT ĐẦU...................................................................................18 2.1.Mục tiêu và nguyên tắc thiết kế bài giảng...........................................................18 2.2.Kết cấu loạt bài giảng 19 2.3.Nội dung một số bài giảng.....................................................................................22 2.3.1.Phần 1 Giới thiệu 22 2.3.2.Phần 2 Các khái niệm cơ bản.........................................................................23 ĐạihọcKinhtếHuế https://mmotool.vn/

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn Sinh viên thực hiện: Trương Thị Hồng Nhung 2 2.3.3.Phần 3 Biến số..................................................................................................24 2.3.4.Phần 4 Kiểu logic.............................................................................................26 2.3.5.Phần 5 Lệnh if else...........................................................................................27 2.3.6.Phần 6 Mảng 29 2.3.7.Phần 7 Chuỗi (string)......................................................................................30 2.3.8.Phần 8 Hàm 31 2.3.9.Phần 9 Vòng lặp...............................................................................................32 2.3.10.Phần 10: Cấu trúc.............................................................................................33 2.3.11.Phần 11: Kiểu liệt kê 35 CHƢƠNG 3: PHÂN TÍCH, THIẾT KẾ VÀ XÂY DỰNG WEBSITE DẠY NGÔN NGỮ LẬP TRÌNH C# DÀNH CHO NGƢỜI MỚI BẮT ĐẦU 37 3.1.Mô tả website dạy ngôn ngữ lập trình C# dành cho ngƣời mới bắt đầu..........37 3.2.Phân tích website dạy ngôn ngữ lập trình C# dành cho ngƣời mới bắt đầu ...39 3.2.1.Sơ đồ chức năng kinh doanh (BFD Business Function Diagram) 40 3.2.2.Sơ đồ ngữ cảnh (CD Context Diagram) ........................................................41 3.2.3.Sơ đồ luồng dữ liệu (DFD Data Flow Diagram) 42 3.2.4.Tích hợp ASPNETDB vào CSDL của website dạy ngôn ngữ lập trình C# dành cho ngƣời mới bắt dầu 44 3.3.Thiết kế và xây dựng website dạy ngôn ngữ lập trình C# dành cho ngƣời mới bắt đầu..........................................................................................................................46 KẾT LUẬN 55 TÀI LIỆU THAM KHẢO...........................................................................................56 PHỤ LỤC 57 ĐạihọcKinhtếHuế https://mmotool.vn/

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn Sinh viên thực hiện: Trương Thị Hồng Nhung 3 DANH MỤC CÁC CHỮ VIẾT TẮT VÀ KÝ HIỆU Ký hiệu Diễn giải CSDL Cơ sở dữ liệu IDE Integrated Development Environment SQL Structured Query Language DANH MỤC CÁC BẢNG BIỂU Bảng 1.1: Những điểm giống và khác nhau giữa C# với Java và C++...........................9 Bảng 1.2: Từ khóa của ngôn ngữ C#.............................................................................11ĐạihọcKinhtếHuế https://mmotool.vn/

Hình 3.9: Giao diện trang đăng ký ................................................................................47

Hình 3.1: Sơ đồ chức năng kinh doanh.........................................................................40

Hình 3.12: Giao diện trang nội dung bài học (2) 51

Hình 2.1: Giao diện tương tác với người dùng..............................................................19

ĐạihọcKinhtếHuế https://mmotool.vn/

Sinh viên thực hiện: Trương Thị Hồng Nhung

Hình 3.8: Giao diện trang chủ 47

Hình 3.6: Công cụ ASP.NET SQL Server Registration Tool.......................................45

Hình 3.16: Giao diện bảng thành tích 53

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

Hình 3.2: Sơ đồ ngữ cảnh..............................................................................................41

Hình 3.13: Giao diện trang trắc nghiệm vui (1)............................................................52

Hình 3.15: Giao diện trang trắc nghiệm vui (3)............................................................53

Hình 3.3: Sơ đồ luồng dữ liệu mức 0 42

DANH MỤC CÁC HÌNH VẼ

Hình 3.5: Sơ đồ phân rã chức năng 2.0.........................................................................43

Hình 3.7: Mô hình dữ liệu quan hệ (diagram) 46

Hình 3.11: Giao diện trang nội dung bài học (1)...........................................................51

4

Hình 3.14: Giao diện trang trắc nghiệm vui (2)............................................................52

Hình 3.10: Giao diện trang đăng nhập...........................................................................49

Hình 3.4: Sơ đồ phân rã chức năng 1.0 42

Hình 2.3: Giao diện bố cục phần trắc nghiệm...............................................................21

Hình 2.2: Giao diện bố cục nội dung bài giảng 20

Việc học ngôn ngữ lập trình C# với học sinh, sinh viên vẫn còn nhiều khó khăn. Khối lượng kiến thức tương đối nhiều, thời gian trên lớp học lý thuyết, thời gian thực hành hạn chế nên thường ít thu hút sự tập trung học tập của học sinh, sinh viên.

Mục đích của đề tài này là xây dựng một website dạy ngôn ngữ lập trình C# cho học sinh, sinh viên, những người mới bắt đầu học lập trình. Website giúp học sinh, sinh viên, những người mới bắt đầu học khám phá những kiến thức cơ bản của ngôn ngữ lập trình C# theo cách tương tác, trực quan và thú vị.

ĐạihọcKinhtếHuế https://mmotool.vn/

2. Mục tiêu của đề tài

1. Lý do chọn đề tài

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

Trong bối cảnh đó, nền giáo dục nước ta cần được đổi mới phương pháp dạy học theo hướng vận dụng công nghệ thông tin và các thiết bị dạy học nhằm phát huy kỹ năng thực hành và tăng hứng thú học tập của học sinh, sinh viên nhằm nâng cao chất lượng dạy học.

Trong thời đại ngày nay, sự phát triển như vũ bão của công nghệ thông tin đang ảnh hưởng tới mọi mặt của đời sống xã hội. Trong đó, giáo dục cũng chịu mọi sự tác động mạnh mẽ của công nghệ thông tin. Sự phát triển của công nghệ thông tin làm cho lượng tri thức của nhân loại tăng lên rất nhiều. Chính vì vậy, các phương pháp giáo dục truyền thống không thể nào truyền tải được hết nội dung tri thức. Do đó, việc thay đổi phương pháp dạy và học cho phù hợp với xu hướng phát triển của xã hội là rất cần thiết.

MỞ ĐẦU

Sinh viên thực hiện: Trương Thị Hồng Nhung

5

Với sự phát triển của công nghệ thông tin, kỹ năng lập trình và các công việc liên quan đến lập trình hiện nay đang rất phổ biến. Đã có nhiều website được xây dựng nhằm dạy ngôn ngữ lập trình nhưng với ngôn ngữ lập trình C# thì chưa phổ biến.

Chính vì những lý do trên, tôi chọn “Xây dựng website dạy ngôn ngữ lập trình C# dành cho ngƣời mới bắt đầu” làm hướng nghiên cứu cho đề tài.

+ Nghiên cứu tổng hợp ngôn ngữ lập trình C#, thực trạng giảng dạy ngôn ngữ lập trình C# và phương pháp giảng dạy điện tử.

Sinh viên thực hiện: Trương Thị Hồng Nhung

3.2. Phạm vi nghiên cứu

+ Thiết kế hệ thống bài giảng ngôn ngữ lập trình C# theo hướng tương tác, trực quan và thú vị

Phương pháp phân tích, đánh giá: quan sát, nhìn nhận vấn đề, sàng lọc những kiến thức cần thiết từ cơ bản đến nâng cao, từ đó hoàn thiện khoá luận.

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

Phương pháp phân tích, thiết kế hệ thống: tiến hành tổng hợp, phân loại thông tin. Dựa trên những thông tin thu thập được, kiến thức và nền tảng công nghệ có sẵn, tiến hành xây dựng website dạy ngôn ngữ lập trình C# dành cho người mới bắt đầu.

 Mục tiêu cụ thể:

Phương pháp lập trình hướng đối tượng: sau khi tiến hành phân tích, thiết kế website sẽ lựa chọn ngôn ngữ lập trình C# và ASP.NET với hệ quản trị CSDL Microsoft SQL Server để quản lý.

6

+ Xây dựng website dạy ngôn ngữ lập trình C# dựa trên các bài giảng đã thiết kế được.

Phương pháp nghiên cứu tài liệu: chủ động tìm kiếm, nghiên cứu các tài liệu, sách liên quan đến đề tài, các website tương tự để đánh giá những ưu nhược điểm, học hỏi cách thức hoạt động của website. Từ đó đề ra một mô hình website dạy ngôn ngữ lập trình C# có nội dung chính xác, khách quan.

3. Đối tƣợng và phạm vi nghiên cứu

3.1. Đối tƣợng nghiên cứu

Các cú pháp, kỹ thuật cơ bản của ngôn ngữ lập trình C#.

ĐạihọcKinhtếHuế https://mmotool.vn/

Đối tượng nghiên cứu của đề tài là phương pháp giảng dạy ngôn ngữ lập trình C#.

4. Phƣơng pháp nghiên cứu

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

ĐạihọcKinhtếHuế https://mmotool.vn/

Sinh viên thực hiện: Trương Thị Hồng Nhung

Chƣơng 1: Thực trạng giảng dạy ngôn ngữ lập trình C# và phƣơng pháp giảng dạy điện tử. Cụ thể, chương này trình bày khái quát khái niệm lập trình, ngôn ngữ lập trình, ngôn ngữ lập trình C#, lịch sử hình thành và phát triển của ngôn ngữ lập trình C#, các đặc điểm của ngôn ngữ lập trình C#, thực trạng giảng dạy ngôn ngữ lập trình C# và phương pháp giảng dạy điện tử.

Chƣơng 2: Thiết kế bài giảng ngôn ngữ lập trình C# dành cho ngƣời mới bắt đầu. Cụ thể, chương này trình bày nội dung các bài giảng ngôn ngữ lập trình C# dựa trên ngôn ngữ lập trình C#.

Chƣơng 3: Phân tích, thiết kế và xây dựng website dạy ngôn ngữ lập trình C# dành cho ngƣời mới bắt đầu. Đây là nội dung chính của khoá luận. Cụ thể, chương này trình bày các bước mô phỏng mô hình website, phân tích, thiết kế giao diện website và chạy thử website. Tên website là “Website dạy ngôn ngữ lập trình C# dành cho người mới bắt đầu”. Đây là website được cài đặt bằng ngôn ngữ C# và ASP.NET. Trong đó, ASP.NET được dùng để xây dựng giao diện tương tác với người dùng; còn C# là ngôn ngữ lập trình bên dưới. Website có thao các CSDL sử dụng Microsoft SQL Server.

Khóa luận này tập trung tìm hiểu thực trạng giảng dạy ngôn ngữ lập trình C#, phương pháp giảng dạy điện tử, các khái niệm liên quan đến ngôn ngữ lập trình C#, thiết kế bài giảng ngôn ngữ lập trình C# cho người mới bắt đầu, phân tích, thiết kế và xây dựng website dạy ngôn ngữ lập trình C# dành cho người mới bắt đầu Ngoài phần mở đầu và kết luận, khoá luận này gồm 3 chương:

5. Nội dung khoá luận

7

- Phương pháp tổng hợp: hoàn thiện khoá luận dựa trên những kiến thức cơ bản đã thu nhận được trong quá trình học tập và những tài liệu, kiến thức tích luỹ được trong quá trình chủ động học hỏi, tìm kiếm.

CHƢƠNG 1

Hồng Nhung 8

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

Lập trình máy tính (gọi tắt là lập trình; tiếng Anh: programming) là kỹ thuật cài đặt một hoặc nhiều thuật toán trừu tượng có liên quan với nhau bằng một hoặc nhiều ngôn ngữ lập trình để tạo ra một chương trình máy tính.

1. Phải dễ hiểu và dễ sử dụng đối với người lập trình, để con người có thể dùng nó giải quyết các bài toán khác

Sinh c hiện: Trương Thị

1.1.1. Khái niệm lập trình

2. Phải miêu tả một cách đầy đủ và rõ ràng các tiến trình (tiếng Anh: process), để có thể chạy được trên các máy tính khác.

VÀ PHƢƠNG PHÁP GIẢNG DẠY ĐIỆN TỬ

Ngôn ngữ lập trình (tiếng Anh: programming language) là một tập con của ngôn ngữ máy tính. Ngôn ngữ lập trình là một hệ thống được ký hiệu hoá để miêu tả những tính toán (qua máy tính) trong một dạng mà cả con người và máy đều có thể đọc và hiểu được. Một ngôn ngữ lập trình phải thỏa mãn được hai điều kiện cơ bản là:

1.1.3. Ngôn ngữ lập trình C# Ngôn ngữ lập trình C# là ngôn ngữ hướng đối tượng đơn giản, trong sáng, chỉ gồm khoảng 80 từ khoá và hơn 10 kiểu dữ liệu cơ sở. C# bao gồm tất cả những hỗ trợ cho cấu trúc, thành phần (component), lập trình hướng đối tượng. C# được xây dựng dựa trên nền tảng của ngôn ngữ C++ và Java. Ngôn

ngữ lập trình C# được phát triển bởi đội ngũ kỹ sư của Microsoft, trong đó, người dẫn đầu là Anders Hejlsberg và Scott Wiltamuth. Anders Hejlsberg là một kiến trúc sư website nổi tiếng với các sản phẩm Turbo Pascal, Delphi, J++, WFC. ĐạihọcKinhtếHuế https://mmotool.vn/

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

THỰC TRẠNG GIẢNG DẠY NGÔN NGỮ LẬP TRÌNH C#

1.1.2. Khái niệm ngôn ngữ lập trình

viên thự

C# được phê chuẩn bởi European Computer Manufacturers Association (ECMA) và International Standards Organization (ISO).

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn Sinh viên thực hiện: Trương Thị Hồng Nhung 9

N

C# được thiết kế cho Common Language Infrastructure (CLI), mà gồm Executable Code và Runtime Environment, cho phép chúng ta sử dụng các ngôn ngữ cấp độ cao (high level) đa dạng trên các nền tảng và cấu trúc máy tính khác nhau. gôn ngữ lập trình C# được phát triển dựa trên nền tảng của ngôn ngữ C++ và Java.

Trong đó 70% giống Java, 10% giống C++, 5% giống Visual Basic, 15% là mới. Bảng 1.1: Những điểm giống nhau giữa C# với Java và C++ Giống Java  Object-orientation (single inheritance)  Interfaces  Generics  Exceptions  Threads  Namespaces  Strong typing  Garbage collections  Reflection  Dynamic loading of code  ... Giống C++  Struct types  Operator oveloading  Pointer arithmetic in unsafe  Some syntactic details Nguồn: Pro C# 2010 and the .NET 4 Platform (Andrew Troelsen): Ch. 1: The Philosophy of .NET 1.1.4. Các đặc điểm của ngôn ngữ lập trình C# Ngôn ngữ lập trình C# có các đặc điểm sau đây: C# là ngôn ngữ đơn giản ĐạihọcKinhtếHuế https://mmotool.vn/

- C# là ngôn ngữ ít từ khóa

C# có các đặc tính của một ngôn ngữ hiện đại như là xử lý ngoại lệ, thu gom bộ nhớ tự động, những kiểu dữ liệu mở rộng và bảo mật mã nguồn

C# hỗ trợ các đặc tính của ngôn ngữ hướng đối tượng (Object oriented language) như là sự đóng gói (encapsulation), sự kế thừa (inheritance), và đa hình (polymorphism).

C# là ngôn ngữ sử dụng giới hạn những từ khóa (77 từ khoá). Phần lớn các từ khóa được sử dụng để mô tả thông tin. Bảng sau liệt kê các từ khóa của ngôn ngữ C#:

ĐạihọcKinhtếHuế https://mmotool.vn/

Con trỏ được tích hợp vào ngôn ngữ C++. Chúng là nguyên nhân gây ra những rắc rối của ngôn ngữ này. C# loại bỏ những phức tạp và rắc rối phát sinh bởi con trỏ dựa trên bộ thu gom bộ nhớ tự động và kiểu dữ liệu an toàn được tích hợp vào ngôn ngữ C#.

10

C# là ngôn ngữ hiện đại

Sinh viên thực hiện: Trương Thị Hồng Nhung

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

C# là ngôn ngữ hướng đối tượng

C# là ngôn ngữ mạnh mẽ và mềm dẻo

Với ngôn ngữ C#, chúng ta chỉ bị giới hạn ở chính bởi bản thân hay là trí tưởng tượng của chúng ta. Ngôn ngữ này không đặt những ràng buộc lên những việc có thể làm. C# được sử dụng cho nhiều các dự án khác nhau như là tạo ra ứng dụng xử lý văn bản, ứng dụng đồ họa, bản tính, hay thậm chí những trình biên dịch cho các ngôn ngữ khác.

C# loại bỏ một vài sự phức tạp và rối rắm của những ngôn ngữ như Java và C++, bao gồm việc loại bỏ những macro, những template, đa kế thừa, và lớp cơ sở ảo (virtual base class). Ngôn ngữ C# đơn giản vì nó dựa trên nền tảng Java và C++ nhưng nó đã được cải tiến để làm cho ngôn ngữ đơn giản hơn. Một vài trong các sự cải tiến là loại bỏ các dư thừa, hay là thêm vào những cú pháp thay đổi.

11

Mã nguồn C# có thể được viết trong các lớp, những lớp này chứa các phương thức thành viên của nó. Lớp và phương thức có thể được sử dụng lại trong ứng dụng hay các chương trình khác. Bằng cách truyền các mẫu thông tin đến những lớp hay phương thức chúng ta có thể tạo ra những mã nguồn dùng lại có hiệu quả.

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

abstract default foreach object sizeof unsafe as delegate goto operator stackalloc ushort base do if out static using bool double implicit override string virtual break else in params struct volatile byte enum int private switch void case event interface protected this while catch explicit internal public throw char extern is readonly true checked false lock ref try class finally long return typeof const fixed namespace sbyte uint continue float new sealed ulong decimal for null short unchecked

Bảng 1.2: Từ khóa của ngôn ngữ C#

C# là một ngôn ngữ phổ biến

Sinh viên thực hiện: Trương Thị Hồng Nhung

C# là một trong những ngôn ngữ lập trình mới nhất. Nhưng ngôn ngữ này có một số lý do để trở thành một ngôn ngữ phổ biến. Một trong những lý do chính là Microsoft và sự cam kết của .NET. Nhiều sản phẩm của công ty này đa chuyển đổi và viết lại bằng C#. Bằng cách sử dụng ngôn ngữ này, Microsoft đã xác nhận khả năng

ĐạihọcKinhtếHuế https://mmotool.vn/

Nguồn: https://vi.wikipedia.org

C# là ngôn ngữ hướng module

Sinh viên thực hiện: Trương Thị Hồng Nhung

Có rất nhiều trường lớp, trung tâm dạy ngôn ngữ lập trình C# với nhiều hình thức (học trên lớp, học trực tuyến, …) hay các phần mềm ứng dụng, các website ra đời hỗ trợ việc dạy ngôn ngữ lập trình C#.

Không yêu cầu con trỏ.

Sử dụng cú pháp tương tự khuôn mẫu trong C++ để lập trình các generic.

ĐạihọcKinhtếHuế https://mmotool.vn/

Ngoài các đặc điểm trên, C# còn có các đặc điểm tiến bộ sau:

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

của C# cần thiết cho những người lập trình. .NET là một sự thay đổi trong cách tạo và thực thi những ứng dụng Ngoài hai lý do trên, ngôn ngữ C# phổ biến do những đặc tính của ngôn ngữ này được đề cập trong mục trước như: đơn giản, hướng đối tượng, mạnh mẽ

Theo thống kê của Blog TopDev, trang web lớn về tìm kiếm cơ hội việc làm CNTT ở Việt Nam, có 15 nguồn học C# dành cho người mới bắt đầu là: Tutorial Point, C# Station, LearnCS.org, ZetCode, Microsoft C# Training, Udemy, Eduonix, EDX, O‟Reilly School of Technology, Channel9.msdn.com, Những nền tảng Programming with C#, Free Book Center, BookBoon, C# Programming, C# Essentials. Đây là các nguồn học rất nổi tiếng và hiệu quả. Tuy nhiên, những người

- Quản lý bộ nhớ tự động thông qua trình gom rác (Garbage Collector).

Cho phép chồng hàm cho các kiểu dữ liệu tự tạo.

Hiện nay, nhu cầu nhân lực ngành công nghệ thông tin rất lớn. Đây là ngành rất hấp dẫn và có nhiều trường đào tạo. Nhưng việc học ngôn ngữ lập trình C# với học sinh, sinh viên, những người mới bắt đầu học lập trình vẫn còn nhiều khó khăn. Việc dạy, truyền tải nội dung lý thuyết trên lớp chiếm nhiều thời gian, chủ yếu về nhà thực hành nên chưa thực sự hiệu quả, giảm sự hứng thú học tập của học sinh, sinh viên, những người mới bắt đầu học lập trình.

12

Cấu trúc cú pháp hình thức cho kiểu dữ liệu liệt kê (enumeration), cấu trúc (structure) và thuộc tính lớp (class properties).

1.2. Thực trạng việc giảng dạy ngôn ngữ lập trình C#

Hỗ trợ hoàn toàn cho các kỹ thuật lập trình dựa trên giao diện.

Sinh viên thực hiện: Trương Thị Hồng Nhung

mới bắt đầu học sẽ cảm thấy nhàm chán, bất tiện và khó khăn khi đọc các nguồn tiếng Anh, đặc biệt là người Việt Nam. Vậy nên, các nguồn học trên chưa thực sự gây hứng thú học tập cho học sinh, sinh viên, những người mới bắt đầu học ngôn ngữ lập trình C#.

Bên cạnh đó, các trang web dạy ngôn ngữ lập trình C# bằng tiếng Việt (ví dụ: vietjack.com, Myclass.vn, daynhauhoc.com, …), các video hướng dẫn (ví dụ: C# 101 của thầy Nguyễn Đình Hoa Cương, …), các blog hỗ trợ học tập (ví dụ: MSDN, C# Việt Nam) cũng phát triển mạnh. Nhưng nội dung vẫn còn nặng về lý thuyết, chưa có sự tương tác tốt với người học, khả năng khám phá trực tiếp trên bài học là còn yếu.

13

Dương Quang Thiện, Lập trình Visual C# thế nào? Tập 1: C# Căn bản và Visual Studio .NET IDE, Nhà xuất bản Tổng hợp TP.HCM, năm 2005.

ĐạihọcKinhtếHuế https://mmotool.vn/

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

Dương Quang Thiện, Lập trình Visual C# thế nào? Tập 2: C# và .NET Framework, Nhà xuất bản Tổng hợp TP.HCM, năm 2005.

 Qua nghiên cứu các tài liệu giảng dạy trên, khóa luận nhận thấy rằng đối với học sinh, sinh viên, những người mới bắt đầu học ngôn ngữ lập trình C#, người giảng dạy phải truyền tải được các kiến thức cơ bản, đầy đủ và dễ hiểu về ngôn ngữ lập trình C#. Các nội dung giảng dạy phải là các khái niệm cơ bản, các cú pháp, kỹ thuật cơ bản của ngôn ngữ lập trình C# như: C# là gì, cấu trúc chương trình C#, cách tạo một chương trình C# cơ bản, các cú pháp cơ bản, các kiểu dữ liệu, biến, toán tử, vòng lặp, hàm, mảng, chuỗi, struct, enum, … Đó chính là các nội dung được chú trọng thiết kế cho website dạy ngôn ngữ lập trình C# dành cho người mới bắt đầu trong đề tài này. 1.3. Phƣơng pháp giảng dạy điện tử

như:Đặng Quế Vinh, Giáo trình Kỹ thuật lập trình 1, Nhà xuất bản Thống kê, năm 2005.

Nhiều tài liệu, sách, giáo trình tiếng Việt được biên soạn nhưng chúng chưa thực sự đầy đủ như các tài liệu tiếng Anh. Hơn nữa, việc đọc hay tìm kiếm theo từng nội dung cũng làm giảm sự hứng thú với môn học và mất nhiều thời gian. Các tài liệu điển hình

 Bài giảng điện tử cần đảm bảo các tiêu chí sau: Về nội dung: Đảm bảo tính chính xác, phù hợp với chương trình đào tạo, với nội dung và tính đặc thù bộ môn; với phương pháp, kỹ thuật và hình thức tổ chức dạy học.

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

Sinh viên thực hiện: Trương Thị Hồng Nhung

Thực tế cho thấy, để chuẩn bị cho một bài giảng điện tử, người giảng dạy phải mất khá nhiều thời gian để chuẩn bị từ việc xây dựng ý tưởng, soạn nội dung bài giảng, thiết kế bài giảng và thiết kế hình ảnh sao cho phù hợp với nội dung bài giảng. Ngoài kiến thức căn bản về tin học, giáo viên còn cần có niềm đam mê thật sự với việc thiết kế vốn đòi hỏi sự sáng tạo, sự nhạy bén, tính thẩm mỹ để “săn tìm” tư liệu từ nhiều nguồn, chọn giải pháp cho sử dụng công nghệ, sau đó mới đi vào thiết kế Không lạm dụng công nghệ nếu chúng không tác động tích cực đến quá trình giảng dạy của giáo viên và kết quả học tập của học sinh, sinh viên. Công nghệ mô phỏng nếu không phản ánh đúng nội dung, giá trị nghệ thuật và thực tế thì không nên sử dụng

Dạy học bằng bài giảng điện tử là cách hiệu quả để thực hiện đổi mới giáo dục. Tuy nhiên, bài giảng điện tử chỉ là công cụ, còn việc sử dụng sao cho có hiệu quả là hoàn toàn phụ thuộc vào người giảng viên đứng lớp.

Với bài giảng điện tử, giáo viên được giảm nhẹ việc thuyết giảng, tăng cường đối thoại, thảo luận với học sinh, sinh viên. Học sinh, sinh viên được thu hút, kích thích khám phá tri thức, có điều kiện quan sát vấn đề, chủ động nêu câu hỏi và nhờ vậy quá trình học tập trở nên hứng thú, sâu sắc hơn. Tuy nhiên, vẫn còn không ít giáo viên gặp khó khăn trong việc thiết kế bài giảng điện tử.

Bài giảng điện tử là một hình thức tổ chức bài lên lớp mà ở đó toàn bộ kế hoạch hoạt động dạy học đều thực hiện thông qua môi trường multimedia do máy vi tính tạo ra. Multimedia được hiểu là đa phương tiện, đa môi trường, đa truyền thông. Trong môi trường multimedia, thông tin được truyền dưới dạng: văn bản (text), đồ họa (graphics), ảnh động (animation), ảnh tĩnh (image), âm thanh (audio) và phim video (video clip). Đặc trưng cơ bản của bài giảng điện tử là toàn bộ kiến thức của bài học, mọi hoạt động điều khiển của giảng viên đều được multimedia hóa.

ĐạihọcKinhtếHuế https://mmotool.vn/

14

Xác định rõ kiến thức cơ bản, kiến thức trọng tâm của bài học, các vấn đề đang còn tranh luận, các nội dung mà người học cần tích cực, chủ động, sáng tạo trong nghiên cứu, nhận thức và luyện tập.

Tiện ích trong tổ chức dạy học; thích ứng với điều kiện sẵn có; đa dạng các hình thức liên kết nội dung bài học với các nguồn học liệu đa phương tiện (các file âm thanh, hình ảnh, video clip, file trình diễn bài giảng có tích hợp video, …), với phần mềm giáo khoa và các công cụ chuyên biệt khác.

ĐạihọcKinhtếHuế https://mmotool.vn/

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

Sinh viên thực hiện: Trương Thị Hồng Nhung m bảo tính khoa học (nhất là nguồn tài liệu khai thác từ internet) và phù hợp với đối tượng dạy học.

Thiết kế các slide phù hợp (nên từ 20 25 slide /1 tiết); màu sắc hài hòa, giao diện thân thiện; thống nhất bảng mã Unicode, cỡ chữ vừa đủ quan sát (24 28), trình bày đẹp, diễn đạt ngắn gọn, làm nổi bật kiến thức trọng tâm.

Về hình thức:

15  Đả

Đảm bảo tính trực quan, tạo sự sinh động, hấp dẫn, thu hút sự chú ý, kích thích hứng thú học tập, nghiên cứu của học sinh, sinh viên.

Hiệu ứng chữ, hình ảnh, màu sắc, âm thanh, chuyển động được sử dụng có mức độ, hài hòa, hợp lý. Không lạm dụng kỹ thuật để thỏa mãn sự hiếu kỳ, phân tán chú ý của người học.

Cấu trúc chặt chẽ, logic, định hướng tư duy tích cực cho người học.

Khai thác lợi thế của công nghệ thông tin trong thiết kế các hình thức kiểm tra, đánh giá trắc nghiệm khách quan ở những mức độ khác nhau.

Lưu ý: màu sắc thiếu trực quan, mờ nhạt hoặc sặc sỡ dễ gây phản cảm; âm thanh ồn ào sẽ giảm hứng thú học tập của người học.

Về kỹ thuật:

 Dễ tạo các mối liên hệ tương tác (giữa người dạy với người học, giữa người học với người học) dạy học với tài liệu mở, dẫn dắt người học xây dựng bài, củng cố, khắc sâu kiến thức.

 Giúp người học hình thành các kỹ năng tự học, tự nghiên cứu, kỹ năng hợp tác, chia sẻ thông tin, vận dụng kiến thức vào thực tế, tự đánh giá kết quả học tập, hình thành tư tưởng, thái độ học tập đúng đắn.

Đánh giá được kết quả học tập của người học, hiệu quả bài học của người dạy.

 Bài giảng điện tử cần đảm bảo các yêu cầu sau:

Yêu cầu của một bài giảng điện tử là tích hợp các ứng dụng công nghệ thông tin sao cho phù hợp với nội dung, mục đích dạy học, đảm bảo đặc trưng bộ môn, góp phần tích cực hóa hoạt động học tập của học sinh, sinh viên, làm tăng hiệu quả dạy học. Có thể cụ thể hóa thành các yêu cầu sau:

Yêu cầu về nội dung: Cần trình bày nội dung bài giảng điện tử với lý thuyết cô đọng, được minh họa sinh động và có tính tương tác cao, rõ nét mà phương pháp giảng dạy bằng lời khó diễn tả. Để thực hiện yêu cầu này, giảng viên cần phải hiểu rất rõ vấn đề cần trình bày, phải thể hiện các phương pháp sư phạm truyền thống. Đồng thời, giảng viên cần phải có kỹ năng về tin học để thực hiện các minh họa, mô phỏng hoặc tận dụng chọn lọc từ tư liệu điện tử có sẵn. cầu về phần câu hỏi giải đáp: Kiểm tra, đánh giá người học có hiểu nội dung (từng phần, toàn bài) vừa trình bày không.

16

Thực hiện được mục tiêu bài học, người học hiểu bài, hứng thú học tập, nghiên cứu, phát triển các kỹ năng cần thiết, có thái độ đúng đắn.

Yêu

Phát huy được tác dụng nổi bật của bài giảng điện tử mà các bài giảng theo hình thức tổ chức khác khó đạt được.

ĐạihọcKinhtếHuế https://mmotool.vn/

Sinh viên thực hiện: Trương Thị Hồng Nhung

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

Thiết kế bài giảng đảm bảo cho người dạy thuận lợi, làm chủ kỹ thuật, thao tác nhuần nhuyễn, kết hợp nhịp nhàng trình chiếu với ghi chép, giữa các hoạt động dạy và học, giữa hướng dẫn nhận thức với quản lý, kiểm tra đánh giá người học. Về hiệu quả:

Các nội dung chuẩn bị của hai phần trên khi thể hiện trình bày cần được bảo đảm các yêu cầu sau:

-

ĐạihọcKinhtếHuế https://mmotool.vn/

Yêu cầu phần thể hiện khi thiết kế:

Đầy đủ: có đủ yêu cầu nội dung bài học.

Sinh viên thực hiện: Trương Thị H ng Nhung kết một chủ đề đã dạy trước với chủ đề hiện tại hay kế tiếp. Câu hỏi cần

được thiết kế sử dụng đa phương tiện để kích thích người học vận động trí não để tìm câu trả lời.

Chính xác: đảm bảo không có thông tin sai sót.

Trực quan: hình vẽ, âm thanh, bảng biểu trực quan, sinh động, hấp dẫn người học.

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

17  Liên

Từ những vấn đề trên, tôi thực hiện đề tài “Xây dựng website dạy ngôn ngữ lập trình C# dành cho ngƣời mới bắt đầu” nhằm tạo ra một website dạy ngôn ngữ lập trình C# theo hướng tương tác, vui vẻ, giúp học sinh, sinh viên, những người mới bắt đầu học lâp trình nắm vững những kiến thức cơ bản của ngôn ngữ lập trình C#. Từ đó, tạo động lực cho học sinh, sinh viên, những người mới bắt đầu học lập trình học tập, thực hành nâng cao.

CHƢƠNG 2

Hệ thống bài giảng ngôn ngữ lập trình C# được xây dựng theo hướng đơn giản, tương tác, trực quan.

18

Đơn giản: Mỗi bài giảng tập trung bám sát vào một nội dung cụ thể về ngôn ngữ lập trình C#. Nội dung được chắt lọc nhưng đảm bảo tính đầy đủ và chính xác cao. Điều này giúp học sinh, sinh viên nắm rõ bản chất, nội dung bài học một cách rõ ràng, cụ thể và dễ hiểu.

Trực quan: Bài giảng được trình bày rõ ràng, trực quan, sinh động, giúp người học dễ dàng thao tác, sử dụng, tránh gây nhàm chán.

Loạt bài giảng ngôn ngữ lập trình C# dành cho người mới bắt đầu sẽ cung cấp cho người học các kiến thức cơ bản về ngôn ngữ lập trình C# qua các khái niệm từ cơ bản đến nâng cao, được xây dựng cho người mới học để giúp họ hiểu các khái niệm cơ bản về lập trình C#.

Sinh viên thực hiện: Trương Thị Hồng Nhung

ĐạihọcKinhtếHuế https://mmotool.vn/

Tương tác: Website cho phép người dùng tương tác trực tiếp với bài học (hình 2.1). Người dùng lựa chọn và thay đổi đáp án đã chọn để hiểu rõ cách thức hoạt động, ý nghĩa bài học hơn; có thể quay lại, thực hiện lại một bài học nhiều lần.

THIẾT KẾ BÀI GIẢNG NGÔN NGỮ LẬP TRÌNH C#

Dựa trên những phân tích về thực trạng việc giảng dạy ngôn ngữ lập trình C# và phương pháp giảng dạy điện tử trong chương 1, chương này sẽ trình bày mục tiêu, nguyên tắc thiết kế bài giảng, kết cấu loạt bài giảng, nội dung một số bài giảng ngôn ngữ lập trình C# dành cho người mới bắt đầu mà tôi đã thiết kế được. 2.1. Mục tiêu và nguyên tắc thiết kế bài giảng

DÀNH CHO NGƢỜI MỚI BẮT ĐẦU

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

2.1:

Ph

Phần 2 C# cơ bản: giới thiệu một số khái niệm cơ bản của ngôn ngữ lập trình C# như mã nguồn, biến, các kiểu dữ liệu. ần 3 Biến: khái niệm, cách thức khai báo, khởi tạo biến. ần 4 Kiểu logic: khái niệm, các phép so sánh logic và các toán tử thường được sử dụng trong biểu thức logic. ần 5 Lệnh if else: khái niệm, các phép so sánh và các toán tử thông dụng.

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

2.2. Kết cấu loạt bài giảng

Hình Giao diện tƣơng tác dùng

với ngƣời

Ph

Sinh viên thực hiện: Trương Thị Hồng Nhung

Loạt bài giảng được chia thành nhiều phần, mỗi phần đảm nhiệm một nội dung khác nhau của ngôn ngữ lập trình C#. Sau mỗi bài giảng là bài “Trắc nghiệm vui” bao gồm các câu hỏi lý thuyết theo hình thức trắc nghiệm. Cụ thể, bài giảng được chia thành 11 phần như sau:

19

Phần 1 Giới thiệu: tạo, biên dịch và chạy chương trình minh họa. Phân tích ngắn gọn chương trình để giới thiệu cấu trúc chương trình C#, cách thức tạo ra một chương trình C#.

- Ph

ĐạihọcKinhtếHuế https://mmotool.vn/

- Phần 6 Mảng: khái niệm, cách thức khai báo, khởi tạo mảng và truy xuất vào phần tử của mảng.

20

Phần 11 Kiểu liệt kê: khái niệm, cách thức khai báo, nhập liệu kiểu liệt kê, giới thiệu lệnh lựa chọn switch case.

Phần 7 Chuỗi: khái niệm, cách thức khai báo, khởi tạo chuỗi, truy xuất vào phần tử của chuỗi, các thao tác cơ bản trong chuỗi.

Phần 9 Vòng lặp: giới thiệu cách thức hoạt động của các vòng lặp cơ bản như while, do while, for

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

 Bố cục bài giảng: Các bài giảng được trình bày trên website theo bố cục như trong hình 2.2 Hình 2.2: Giao diện bố cục bài giảng

Phần 8 Hàm: hàm và các định nghĩa liên quan đến hàm.

Sinh viên thực hiện: Trương Thị Hồng Nhung

Phần 10 Cấu trúc: định nghĩa, cách tạo một cấu trúc và các thao tác cơ bản trong cấu trúc.

ĐạihọcKinhtếHuế https://mmotool.vn/

Trong đó:

Khung 3: Kết quả biên dịch mã nguồn ở khung 2.

ĐạihọcKinhtếHuế https://mmotool.vn/

21

-

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

Khung 1: Giới thiệu nội dung bài giảng.

Khung 5: Các nút thao tác.

Khung 2: Mã nguồn minh họa cho nội dung bài giảng.

Khung 1: Nội dung câu hỏi. Khung 2: Danh sách các đáp án.

Sinh viên thực hiện: Trương Thị Hồng Nhung

 Bố cục phần trắc nghiệm: Phần trắc nghiệm được trình bày trên website theo bố cục như trong hình 2.3

Khung 4: Giải thích nội dung bài giảng.

Hình 2.3: Giao diện bố cục phần trắc nghiệm

Trong đó:

Mã nguồn (phần hiển thị trên website ở khung số 2 trong hình 2.2): Program.cs using {namespaceSystem;BaitapclassProgram{staticvoid

Trong phần này, khóa luận chỉ trình bày tóm tắt nội dung một số bài giảng. Nội dung đầy đủ tất cả các bài giảng có thể xem ở phần Phụ lục.

- Phần giới thiệu (phần hiển thị trên website ở khung số 1 trong hình 2.2): Mỗi project được đặt trong một solution. Mỗi solution có thể chứa nhiều project. Một project bao gồm một hoặc nhiều đơn vị biên dịch (compilation units) và được biên dịch thành một tập tin assembly (.exe hoặc .dll).

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

2.3.1. Phần 1 Giới thiệu

- Phần này giới thiệu khái quát về một chương trình C#, cách tạo, biên dịch và chạy chương trình minh họa.

Main(string[] args) { Console.Write ("Hello World"); Console.ReadKey (); } } }

- Khung 3: Giải thích nội dung câu hỏi. Phần giải thích đối với câu trả lời đúng và sai là khác nhau giúp người học nắm vững kiến thức hơn. Khung 4: Nút thao tác. Khi trả lời sai sẽ không được trả lời lại.

Sinh viên thực hiện: Trương Thị Hồng Nhung 22

Mã nguồn trên giới thiệu cấu trúc một chương trình C# Người học chỉ cần bấm nút “Chạy” (xem khung số 5 ở hình 2.2) để biên dịch chương trình.

ĐạihọcKinhtếHuế https://mmotool.vn/

2.3. Nội dung một số bài giảng

 Mục đích bài giảng

Phân tích ngắn gọn chương trình để giới thiệu về cấu trúc một chương trình C#, các khối lệnh, thư viện (using), không gian tên (namespace), lớp (class), hàm Main() và các kiểu chú thích trong C#.  Nội dung bài giảng

23

Sinh viên thực hiện: Trương Thị Hồng Nhung

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

"Học C#" "Học lập trình"

 Nội dung bài giảng Phần giới thiệu: Các biến được tạo ra bắt đầu với một kiểu dữ liệu, theo sau là tên biến và gán giá trị cho biến với phép gán “=”. Cú pháp khai báo biến: <kiểu_dữ_liệu> <tên_biến> = <giá_trị>; Mã nguồn: static void Main(string[] args) { string ten = "C#"; ten = ; Console.Write (ten); }

- Xây dựng bài “Trắc nghiệm vui” để kiểm tra kiến thức lý thuyết về các khái niệm cơ bản trong C# theo hình thức trắc nghiệm.

Đoạn mã nguồn trên giới thiệu về biến và cách khai báo biến trong C#. Người dùng có thể lựa chọn đáp án “Học C#” hoặc “Học lập trình” (xem hình 2.1 để rõ cách thao tác); sau đó, bấm nút “Chạy” để xem kết quả và lời giải thích cho từng trường hợp. Kết quả: Học C# (hoặc Học lập trình).

- Kết quả: Hello World Giải thích (phần hiển thị trên website ở khung số 3 trong hình 2.2): Các tập tin .cs là các tập tin mã nguồn C#. Mỗi tập tin nên chứa cài đặt cho một và chỉ một lớp. Program.cs là tập tin mặc định đầu tiên được tạo ra trong project để chứa đoạn chương trình, là điểm bắt đầu của chương trình. 2.3.2. Phần 2 Các khái niệm cơ bản  Mục đích bài giảng - Phần này giới thiệu khái quát các khái niệm cơ bản của ngôn ngữ lập trình C# Phân tích ngắn gọn chương trình để giới thiệu về mã nguồn; biến, cách khai báo biến; cách khai báo và sử dụng các kiểu dữ liệu cơ bản gồm kiểu chuỗi, các kiểu số và các toán tử cơ bản trong C# như toán tử cộng (+, ), toán tử nhân (*, /)

ĐạihọcKinhtếHuế https://mmotool.vn/

Cách kết thúc câu lệnh trong C#, giúp người học ghi nhớ rõ một câu lệnh hợp lệ được quy định như thế nào.

- Các phát biểu về biến trong C#, giúp người học nắm vững bản chất về biến như biến là gì, được dùng để làm gì và dùng như thế nào.

Nêu bản chất của biến kiểu số và biến kiểu chuỗi, giúp người học nhận biết được bản chất, cách sử dụng của biến với kiểu dữ liệu khác nhau một cách cụ thể hơn.

ĐạihọcKinhtếHuế https://mmotool.vn/

Sinh viên thực hiện: Trương Thị Hồng Nhung

Các cách in dữ liệu ra màn hình, giúp người học ghi nhớ đúng cú pháp câu lệnh in và đặc điểm của nó.

- Đưa ra một đoạn mã nguồn cụ thể, giúp người học có tư duy tốt hơn về bài toán. 2.3.3. Phần 3 Biến số

 Phần trắc nghiệm Phần trắc nghiệm của Phần 2 Các khái niệm cơ bản bao gồm 8 câu nhằm hệ thống các khái niệm sau:

 Mục đích bài giảng Phần này giới thiệu khát quát khái niệm về biến, cú pháp và cách thức khai báo, khởi tạo biến cũng như các phép toán cơ bản với biến trong C# như phép toán tăng/ giảm (++, ), phép gán kết hợp (+=, =). Xây dựng bài “Trắc nghiệm vui” để kiểm tra kiến thức lý thuyết về biến trong C# theo hình thức trắc nghiệm.

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

- Giới thiệu khái niệm mã nguồn, giúp người học có cái nhìn đúng đắn về mã nguồn trong C#.

24

- Giải thích: Có thể khai báo biến bất cứ đâu trong chương trình. Biến có kiểu dữ liệu và tên. Một biến sau khi đã khai báo thì có thể gán giá trị và sử dụng nó để tính toán.

Cách tạo ra một biến, giúp người học nắm vững cách khai báo biến có các kiểu dữ liệu khác nhau

Các phát biểu về ngôn ngữ lập trình C#, giúp củng cố kiến thức về khái niệm ngôn ngữ lập trình C#.

Phần trắc nghiệm của Phần 3 Biến số bao gồm 9 câu nhằm hệ thống các kiến thức sau:

ĐạihọcKinhtếHuế https://mmotool.vn/

- Cách khai báo biến, giúp người học nắm vững cú pháp khai báo cũng như các quy tắc trong khai báo biến.

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

Giải thích: Chúng ta có thể khởi tạo biến bất cứ lúc nào sau khi đã khai báo. Hoặc chúng ta có thể khai báo và khởi tạo biến cùng một lúc.

 Phần trắc nghiệm

Các phát biểu về khai báo và khởi tạo biến trong một bước duy nhất (xem lại cách khai báo biến y ở đoạn mã nguồn trên), giúp người học hiểu rõ bản chất về cách khai báo và khởi tạo biến.

Phần giới thiệu: Biến phải được khai báo và khởi gán giá trị trước khi có thể sử dụng nó để tính toán. Cú pháp khai báo và khởi gán giá trị: <kiểu_dữ_liệu> <tên_biến> = <giá_trị>; Dấu “=” được gọi là phép gán. Lưu ý rằng chúng ta không thể thay đổi kiểu dữ liệu của biến mà chỉ có thể thay đổi giá trị của biến mà thôi.

- Khái niệm khởi tạo biến, giúp người học hiểu rõ khở tạo là gì, nên khởi tạo biến khi nào, khởi tạo để làm gì, tránh việc sử dụng biến đề tính toán khi chưa khởi tạo giá trị cho biến.

 Nội dung bài giảng

Khái niệm khai báo biến, giúp người học biết được khai báo biến thực chất là việc tạo ra một biến hay xác định tên và kiểu dữ liệu của biến.

Mã nguồn: static void Main(string[] args) { int doublex; y = 1.21; x = 123; }

Đoạn mã nguồn trên giới thiệu khai báo biến theo 2 cách. Đó là, khai báo biến x rồi khởi tạo x có giá trị bằng 123; khai báo và khởi tạo giá trị cho y bằng 123 cùng lúc bằng một câu lệnh. Người học chỉ cần bấm nút “Chạy” để biên dịch chương trình.

Sinh viên thực hiện: Trương Thị Hồng Nhung

25

Các đặc điểm của biến, giúp người học có nhận thức đúng đắn về biến, tránh sai sót, nhầm lẫn trong quá trình học.

&&AND& ĐạihọcKinhtếHuế https://mmotool.vn/

26

Cách khởi tạo biến, giúp người học nắm vững cách khởi tạo cũng như các quy tắc khi khởi tạo biến.

Đoạn mã nguồn trên giới thiệu cách sử dụng toán tử AND. Người học có thể chọn 1 trong 3 đáp án là “&”, “AND” hay “&&” (dễ nhận thấy đáp án đúng ở đây là “&&”); sao đó, bấm “Chạy” để biên dịch chương trình.

Sinh viên thực hiện: Trương Thị Hồng Nhung

Đưa ra một đoạn mã nguồn cụ thể về phép toán tăng giảm, giúp người học tư duy và nắm chắc kiến thức hơn.

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

- Các phát biểu về việc khai báo một biến mà không cho nó một giá trị, giúp người học củng cố lại kiến thức về khai báo biến một lần nữa.

 Nội dung bài giảng

Phần này giới thiệu khái quát về kiểu logic, cách thức hoạt động của các phép so sánh logic (so sánh hơn, so sánh hơn hoặc bằng, so sánh bằng, so sánh khác) và các toán tử thường được sử dụng trong biểu thức logic (toán tử Not, toán tử And, toán tử Or).

- Xây dựng bài “Trắc nghiệm vui” để kiểm tra kiến thức lý thuyết về kiểu logic trong C# theo hình thức trắc nghiệm.

2.3.4. Phần 4 Kiểu logic

 Mục đích bài giảng

- Phần giới thiệu: Toán tử And được gọi là toán tử logic And (và). Nếu cả hai toán hạng đều có giá trị khác 0 thì điều kiện trở lên true. Mã nguồn: static void Main(string[] args) { bool b1 = false; bool b2 = 3 < 127; bool ketqua = b1 b2; Console.WriteLine(ketqua); }

Đưa ra một đoạn mã nguồn về cách khai báo và khởi tạo biến, giúp người học tư duy tốt hơn.

Đưa ra một đoạn mã nguồn cụ thể về phép so sánh hơn, giúp người học nắm chắc kiến thức hơn.

Phần trắc nghiệm của Phần 4 Kiểu logic bao gồm 9 câu nhằm hệ thống các kiến thức sau:

27

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

- Đưa ra một đoạn mã nguồn cụ thể về phép so sánh lớn hơn hoặc bằng (>=) kết hợp với toán tử điều kiện, giúp người học tư duy tốt hơn.

Sinh viên thực hiện: Trương Thị Hồng Nhung

 Phần trắc nghiệm

- Cách đảo ngược giá trị của biến.

- Các phát biểu về các ký hiệu liên quan đến bool, giúp người học nắm vững kiến thức, tránh việc nhầm lẫn trong quá trình học. 2.3.5. Phần 5 Lệnh if else  Mục đích bài giảng Phần này giới thiệu về lệnh điều kiện if else trong C#. Phân tích chương trình để làm rõ khái niệm về if else, cách thức hoạt động của lệnh, các phép so sánh (so sánh bằng, so sánh chuỗi) và các toán tử thông dụng (các toán tử logic, toán tử điều kiện) trong C#.

Đưa ra một đoạn mã nguồn kết hợp các toán tử AND, OR, giúp người học tư duy tốt hơn.

Giải thích: Phép And trả về giá trị True nếu cả 2 toán hạng đều true, trả về giá trị False nếu cả 2 toán hạng đều false hoặc 1 trong 2 toán hạng là false.

ĐạihọcKinhtếHuế https://mmotool.vn/

Các phát biểu về kiểu logic (bool), giúp người học nắm rõ kiến thức cơ bản về kiểu logic trong C#.

- Các phát biểu về kiểu trả về của các phép so sánh, toán tử, giúp người học hiểu rõ bản chất của bool, khi nào nên sử dụng bool.

Cách kiểm tra giá trị của biến, giúp củng cố kiến thức.

- Đưa ra một đoạn mã nguồn cụ thể có biểu thức điều kiện, giúp người học củng cố kiến thức về giá trị trả về của từng phép toán khác nhau.

- Kết quả: False

int s = 6; bool b = s == 6; if ( ) Console.Write("Hello!"); }

Đoạn mã nguồn trên giới thiệu lệnh điều kiện if trong C#. Người học có thể lựa chọn “s” hoặc “b” để thực hiện in dòng chữ “Hello” ra màn hình. Kết quả: Hello!

Phần trắc nghiệm của Phần 5 Lệnh if else bao gồm 5 câu nhằm hệ thống các kiến thức sau:

- Số lượng khối lệnh if else có thể sử dụng trong một chương trình C#.

- Đưa ra một đoạn mã nguồn cụ thể về lệnh if else, giúp người học nắm vững cách thức hoạt động của lệnh if else, câu lệnh if được thực hiện khi nào, câu lệnh else được thực hiện hoặc

bỏ qua khi nào. - Kết quả trả về của biểu thức logic And, giúp người học củng cố kiến thức về phép logic And. Kết quả trả về của biểu thức logic Or, giúp người học củng cố kiến thức về phép logic Or. bs ĐạihọcKinhtếHuế https://mmotool.vn/

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

Yêu cầu của lệnh if else, giúp người học nắm vững yêu cầu cơ bản của lệnh if else trong C#.

Xây dựng bài “Trắc nghiệm vui” để kiểm tra kiến thức lý thuyết về lệnh điều kiện if else trong C# theo hình thức trắc nghiệm.  Nội dung bài giảng Phần giới thiệu: Bất cứ khi nào chúng ta muốn biết nếu có điều gì là đúng hay sai, chúng ta có thể kiểm tra bằng câu lệnh if , theo sau là một giá trị logic trong dấu ngoặc đơn.Mãnguồn:

28

static void Main(string[] args) {

 Phần trắc nghiệm

Giải thích: b=s==6 là đúng nên b sẽ nhận giá trị true. Lệnh if(b) (nghĩa là nếu b là true) là đúng nên câu lệnh trong mệnh đề if này được thực thi.

Sinh viên thực hiện: Trương Thị Hồng Nhung

- Xây dựng bài “Trắc nghiệm vui” để kiểm tra kiến thức lý thuyết về mảng trong C# theo hình thức trắc nghiệm.

 Phần trắc nghiệm Phần trắc nghiệm của Phần 6 Mảng bao gồm 5 câu nhằm hệ thống các kiến thức phát biểu về mảng, giúp người học hiểu rõ khái niệm, các tính chất của mảng trong C#. Các phát biểu về đặc điểm của mảng, giúp người học hiểu rõ các đặc điểm cơ bản của mảng trong C#.

29

 Nội dung bài giảng

LengthSize()Count

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

2.3.6. Phần 6 – Mảng

Kết quả: 4

Giải thích: lệnh hoten.Length có nghĩa là lấy độ dài, kích thước của mảng hoten

 Mục đích bài giảng

Mã nguồn: static void Main(string[] args) { string[] hoten = { "Hoa", "Lan" ", "Linh" ", "Nam" }; Console.WriteLine(hoten. );

Đoạn mã nguồn trên giới thiệu cách xác định kích thước mảng (hay đếm số lượng phần tử của mảng) sử dụng thuộc tính Length. Người học lựa chọn 1 trong 3 đáp án “Count”, “Size()” hay “Length” và bấm “Chạy” để biên dịch chương trình.

sau:Các

- Phần giới thiệu: Chúng ta có thể xác định kích thước mảng bằng thuộc tính Length.

ĐạihọcKinhtếHuế https://mmotool.vn/

Sinh viên thực hiện: Trương Thị Hồng Nhung

- Phần này giới thiệu về mảng trong C#. Phân tích chương trình để làm rõ khái niệm về mảng, cách khai báo, khởi tạo mảng, cách truy xuất mảng, cách thức hoạt động của mảng trong C#.

}

Xây dựng bài “Trắc nghiệm vui” để kiểm tra kiến thức lý thuyết về chuỗi trong C# theo hình thức trắc nghiệm.

ết quả tương ứng. Kết quả: o L

o i

để

Phần giới thiệu: Chúng ta sử dụng cú pháp <tên chuỗi>[chỉ_số] để truy xuất một ký tự trong chuỗi tại vị trí chỉ_số trong chuỗi. chỉ_số có giá trị từ 0 đến (size 1). Mã nguồn: static void Main(string[] args) { string st1 = "Linh"; Console.Write(st1[ ]); }

Phân tích chương trình để làm rõ khái niệm về chuỗi, cách khai báo chuỗi, cách truy xuất chuỗi và một số thao tác trên chuỗi (lấy độ dài chuỗi, nối chuỗi, so sánh bằng, sao chép chuỗi, chèn chuỗi).

- Phần này giới thiệu về chuỗi trong C#.

u

Đoạn mã nguồn trên giới thiệu cách truy xuất vào từng phần tử của chuỗi trong Người h c l a chọn các đáp án “0”, “1”, “2” hay “3” và bấm “Chạy” xem k (nế chọn “0”). (nế chọn “1”). (nế chọn “2”).

Cách khai báo mảng, giúp người học nắm vững cú pháp khai báo cũng như các cách khai báo mảng hợp lệ trong C#.

 Nội dung bài giảng

Đưa ra một đoạn mã nguồn cụ thể về kết quả trả về của mảng, giúp người học hiểu và tư duy tốt hơn về mảng trong C#. 2.3.7. Phần 7 Chuỗi (string)

Sinh viên thực hiện: Trương Thị Hồng Nhung

 Mục đích bài giảng

- Các phát biểu về chỉ số của mảng, giúp người học hiểu rõ về bản chất, chức năng của chỉ số của mảng.

u

o n

u

3210 ĐạihọcKinhtếHuế https://mmotool.vn/

C#.

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

30

Giải thích: Bạn vừa truy xuất đến vị trí đầu tiên (thứ hai/ thứ ba/ thứ tư) của chuỗi.

 Phần trắc nghiệm

 Nội dung bài giảng

- Phần giới thiệu: Một phương thức là một nhóm lệnh cùng nhau thực hiện một tác vụ. System.Console.Write() là một phương thức được dùng khá thường xuyên. Mã nguồn:

- Phần này giới thiệu về các hàm, phương thức trong C#.

- Cách lấy độ dài chuỗi, giúp người học nắm vững các thuộc tính của chuỗi trong C#.

- Xây dựng bài “Trắc nghiệm vui” để kiểm tra kiến thức lý thuyết về hàm trong C# theo hình thức trắc nghiệm.

Sinh viên thực hiện: Trương Thị Hồng Nhung

Phân tích chương trình để làm rõ hàm Write, định nghĩa phương thức, mục đích sử dụng hàm, kết quả trả về của hàm và cách truyền giá trị cho hàm trong C#.

2.3.8. Phần 8 Hàm

ĐạihọcKinhtếHuế https://mmotool.vn/

o h (nếu chọn “3”).

ác phát biểu về kiểu chuỗi, giúp người học nắm vững khái niệm về chuỗi trong C#.

Cách tạo ra một biến c có kiểu dữ liệu char, giúp người học củng cố kiến thức về cách khai báo biến trong C#.

 Mục đích bài giảng

sau:C

Cách thêm một biến vào chuỗi, giúp người học nắm rõ cách thức thêm một biến vào chuỗi.

Đưa ra một đoạn mã nguồn cụ thể về cách chèn chuỗi, nối chuỗi, giúp người học nắm vững các hàm chuỗi trong C#.

- Cách dùng hàm Contains(), giúp người học hiểu rõ chức năng của hàm Contains() đối với chuỗi trong C#.

31

Phần trắc nghiệm của Phần 7 Chuỗi bao gồm 6 câu nhằm hệ thống các kiến thức

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

- Kết quả: Sử dụng hàm in dữ liệu Giải thích: bạn vừa in chuỗi st ra màn hình.

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

- Các phát biểu về hàm/ phương thức, giúp người học nắm chắc kiến thức cơ bản về hàm trong C#.

Các phát biểu về lợi ích của hàm, giúp người học hiểu rõ lợi ích và biết khi nào nên sử dụng hàm để giải quyết bài toán.

 Phần trắc nghiệm

Đưa ra một đoạn mã nguồn cụ thể về hàm, giúp người học củng cố kiến thức về cách tạo, gọi hàm trong C#. 2.3.9. Phần 9 Vòng lặp

- Các phát biểu về tham số mặc định của hàm trong C#, giúp người học hiểu rõ bản chất và cách thức hoạt động của hàm dựa vào tham số mặc định.

Đoạn mã nguồn trên giới thiệu hàm Write của lớp System.Console. Người học chỉ cần bấm “Chạy” để biên dịch chương trình.

Các dạng hàm, giúp người học hiểu rõ bản chất của từng dạng hàm trong C#, từ đó có cách sử dụng hàm phù hợp.

Phần trắc nghiệm của Phần 8 Hàm gồm 6 câu nhằm hệ thống các kiến thức sau:

Phân tích chương trình để làm rõ vòng lặp while, do while, for, vòng lặp lồng nhau và biến điều khiển trong C#.

ĐạihọcKinhtếHuế https://mmotool.vn/

Sinh viên thực hiện: Trương Thị Hồng Nhung 32

{

 Mục đích bài giảng - Phần này giới thiệu khái quát về các dạng vòng lặp cơ bản trong C#.

static void Main(string[] args)

- Xây dựng bài “Trắc nghiệm vui” để kiểm tra kiến thức lý thuyết về vòng lặp trong C# theo hình thức trắc nghiệm. Nội dung bài học

string st = "Sử dụng hàm in dữ liệu"; Console.Write(st); }

ấu

33

ng ĐạihọcKinhtếHuế https://mmotool.vn/

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

- Các phát biểu về vòng lặp trong C#, giúp người học nắm vững kiến thức cơ bản về vòng lặp.

Kết quả: 6

- Tính hữu hạn của vòng lặp, giúp người học nắm vững kiến thức cơ bản về vòng lặp. Đưa ra đoạn mã nguồn cụ thể về vòng lặp while, giúp người học tư duy, hiểu rõ b chất của vòng lặp while và chức năng của biến điều khiển trong vòng while này. C trúc đích bài giả

Giải thích: Chương trình sẽ thực hiện vòng lặp 1 lần vì biểu thức điều kiện (dem<5) là false. Vòng lặp do while thực sự rất hữu ích trong một số trường hợp.  Phần trắc nghiệm

Phần giới thiệu: Vòng lặp do while làm việc trong cùng một cách thức, ngoại trừ các khối lệnh được thực hiện ít nhất một lần trước khi điều kiện được kiểm tra. Mã nguồn: static void Main(string[] args) { int dem = 5; do{ dem++; } while (dem < 5); Console.Write(dem); }

Đoạn mã nguồn trên giới thiệu cách hoạt động của vòng lặp do while trong C#. Người học chỉ cần bấm “Chạy” để biên dịch chương trình.

Sinh viên thực hiện: Trương Thị Hồng Nhung

ản

-

Phần trắc nghiệm của Phần 9 Vòng lặp bao gồm 5 câu nhằm hệ thống các kiến thức sau:

Các phát biểu về vòng lặp while trong C#, giúp người học nắm vững kiến thức cơ bản về vòng lặp while.

Các phát biểu về vòng lặp do while trong C#, giúp người học nắm vững kiến thức cơ bản về vòng lặp do while

2.3.10. Phần 10:

 Mục

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

Mã nguồn: class Program {

ĐạihọcKinhtếHuế https://mmotool.vn/

Xây dựng bài “Trắc nghiệm vui” để kiểm tra kiến thức lý thuyết về struct trong C# theo hình thức trắc nghiệm.

Phần giới thiệu: Trong C#, một cấu trúc (structure) là một kiểu dữ liệu. Nó giúp bạn tạo một biến đơn mà giữ dữ liệu liên quan của các kiểu dữ liệu đa dạng. Sử dụng từ khóa struct để tạo một cấu trúc.

Phần này giới thiệu khái quát về kiểu cấu trúc (structure) trong C#. Phân tích chương trình để làm rõ khái niệm cấu trúc (struct), cách tạo một struct cơ bản, cách truy xuất struct, phép gán trong struct, mảng kiểu struct và struct lồng nhau trong C#.

public struct ToaDo { public int X; public int Y; static}; void Main(string[] args) }{ }

 Nội dung bài giảng

Sinh viên thực hiện: Trương Thị Hồng Nhung

34

Đoạn mã nguồn trên giới thiệu một cấu trúc ToaDo. Người học chỉ cần bấm “Chạy” để biên dịch chương trình. Giải thích: Chương trình vừa tạo một kiểu dữ liệu mới ToaDo, nó cũng tương tự như các kiểu bình thường (int, string, float, …). Các cấu trúc được khai báo trong class Program và ngoài các hàm. Dễ thấy rằng khai báo một cấu trúc chỉ như một cái “khuôn” (không được cấp phát bộ nhớ).  Phần trắc nghiệm Phần trắc nghiệm của Phần 10 Cấu trúc gồm 5 câu nhằm hệ thống các kiến thức sau:Các phát biểu về struct trong C#, giúp người học nắm khái niệm, bản chất của struct.

enum Month { January = 1, February = 2, March = 3, April = 4, May = 5, June = 6, July = 7, August = 8, September = 9, October = 10, November = 11, December = 12 }; static void Main(string[] args)

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

35

o Định danh đầu tiên được gán giá trị 0, sau đó tăng lên 1 cho định danh sau.

Phân tích chương trình để làm rõ khái niệm kiểu liệt kê (enum), cách khai báo enum, nhập liệu số và chuỗi kiểu enum, lệnh lựa chọn switch case trong C#.

enumeration_list: sử dụng dấu phẩy để phân cách các định danh.

{

- Phần giới thiệu: Kiểu liệt kê (enumeration) là một tập những hằng số nguyên được đặt tên. Cú pháp khai báo: enum identifier[:base type] { enumeration_list }; Trong đó:

Các phát biểu về khai báo struct trong C#.

Cách khai báo struct, giúp người học củng cố kiến thức về cú pháp, cách khai báo một struct hợp lệ. 2.3.11.Phần 11: Kiểu liệt kê

- Phần này giới thiệu khái quát về kiểu liệt kê (enumeration) trong C#.

}{ } ĐạihọcKinhtếHuế https://mmotool.vn/

Các phát biểu về đặc điểm struct trong C#.

 Nội dung bài giảng

- Cách truy xuất thành phần của struct, giúp người học nắm vững toán tử truy xuất struct (toán tử dấu chấm).

Sinh viên thực hiện: Trương Thị Hồng Nhung

 base type: là kiểu dữ liệu của mỗi thành phần (mặc định là int).

o Có thể xác định giá trị cho các định danh này. Mã nguồn: class Program

- Xây dựng bài “Trắc nghiệm vui” để kiểm tra kiến thức lý thuyết về enum trong C# theo hình thức trắc nghiệm.

 Mục đích bài giảng

enum Weekday { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };

-

Cách phân cách các định danh của enum trong C#.

Các phát biểu về kiểu liệt kê (enum), giúp người học nắm vững kiến thức cơ

- Các phát biểu về đặc điểm của enum, giúp người học nắm vững kiến thức cơ

Sinh viên thực hiện: Trương Thị Hồng Nhung

bản về đặc điểm của enum trong C#.

Như vậy, trong chương này, khóa luận đã trình bày được mục tiêu và nguyên tắc thiết kế bài giảng điện tử, kết cấu loạt bài giảng và nội dung một số bài giảng ngôn ngữ lập trình C# dành cho người mới bắt đầu. Loạt bài giảng đã được thiết kế một cách đơn giản, dễ hiểu, nội dung ngắn gọn, súc tích, tính tương tác, trực quan cao.

Giải thích: Chúng ta có thể tạo ra một kiểu liệt kê với từ khóa enum. Không có vấn đề gì nếu chúng ta tạo ra một lớp (class), một cấu trúc (struct) hoặc một liệt kê (enum) với cú pháp như nhau.

36

 Phần trắc nghiệm

- Đưa ra các phát biểu về lệnh lựa chọn switch case trong C#.

Đoạn mã nguồn trên giới thiệu khái niệm enum trong C#. Người học chỉ cần bấm “Chạy” để biên dịch chương trình.

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

Cách khai báo enum, giúp người học củng cố kiến thức về cú pháp khai báo cũng như các cách khai báo một enum hợp lệ trong C#.

ĐạihọcKinhtếHuế https://mmotool.vn/

Phần trắc nghiệm của Phần 11 Kiểu liệt kê gồm 5 câu nhằm hệ thống các kiến thức sau:

bản về enum trong C#.

thự

Các kiến thức được trình bày trực quan, sinh động sao cho học sinh, sinh viên, những người mới bắt đầu học dễ dàng thao tác và nắm bắt được kiến thức.

- Có các câu hỏi tổng hợp kiến thức giúp củng cố và đánh giá được kiến thức của học sinh, sinh viên, những người mới bắt đầu học.

Website được thiết kế đảm bảo các yêu cầu sau:

Website dạy ngôn ngữ lập trình C# dành cho người mới bắt đầu là website giúp học sinh, sinh viên, những người mới bắt đầu học khám phá những kiến thức cơ bản của ngôn ngữ lập trình C# theo cách tương tác, trực quan và thú vị

ế

Cung cấp cho học sinh, sinh viên, những người mới bắt đầu học một lượng kiến thức đầy đủ, đa dạng từ cơ bản đến nâng cao.

ĐạihọcKinhtếHuế https://mmotool.vn/

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

Thị Hồng Nhung 37 CHƢƠNG

PHÂN TÍCH, THIẾT KẾ VÀ XÂY DỰNG WEBSITE DẠY NGÔN NGỮ LẬP TRÌNH C# DÀNH CHO NGƢỜI MỚI BẮT ĐẦU

Sinh viên c hiện: Trương 3

3.1. Mô tả website dạy ngôn ngữ lập trình C# dành cho ngƣời mới bắt đầu

- Thiết kế một website dạy ngôn ngữ lập trình C# có giao diện thân thiện với người dùng. Website cần chạy mượt và ổn định, tốc độ tải trang nhanh và tính an toàn, bảo mật Thicao. t kế một website cho phép người dùng tạo tài khoản, đăng nhập vào hệ thống, chấm điểm phần trắc nghiệm.

- Thiết kế một website dạy ngôn ngữ lập trình C# theo hướng tương tác, vui vẻ nhằm tăng hứng thú của học sinh, sinh viên, những người mới bắt đầu học đối với môn học.

Website giới thiệu, cung cấp đầy đủ và đúng đắn các kiến thức cơ bản về ngôn ngữ lập trình C# đã được thiết kế ở chương 2.

ĐạihọcKinhtếHuế https://mmotool.vn/

Website tổ chức các bài học theo từng phần. Mỗi phần gồm nhiều bài học và tập trung giải quyết một nội dung cụ thể về ngôn ngữ lập trình C#. Cấu trúc bài giảng đã được trình bày ở mục 2.2 Kết cấu loạt bài giảng ở chương 2. Người dùng có thể học các bài học theo thứ tự từ trên xuống để nắm bắt kiến thức đầy đủ và xuyên suốt hơn. Hoặc có thể lựa chọn bài học không theo một thứ tự, quy tắc nào. Điều này giúp người học chủ động, linh hoạt hơn trong quá trình học.

Cuối mỗi phần là một bài “Trắc nghiệm vui” gồm nhiều câu hỏi lý thuyết theo hình thức trắc nghiệm. Người dùng trả lời các câu hỏi để ghi điểm. Mỗi câu trả lời đúng được cộng 1 điểm, trả lời sai không có điểm. Điểm số này được website lưu tự động vào “bảng thành tích”, bao gồm các thông tin: điểm test 1 (điểm bài “trắc nghiệm vui” phần C# cơ bản), điểm test 2 (điểm bài “trắc nghiệm vui” phần Biến), điểm test 3 (điểm bài “trắc nghiệm vui” phần Kiểu logic), điểm test 4 (điểm bài “trắc nghiệm vui” phần Lệnh if else), điểm test 5 (điểm bài “trắc nghiệm vui” phần Mảng), điểm test 6 (điểm bài “trắc nghiệm vui” phần Chuỗi), điểm test 7 (điểm bài “trắc nghiệm vui” phần Hàm), điểm test 8 (điểm bài “trắc nghiệm vui” phần Vòng lặp), điểm test 9 (điểm bài “trắc nghiệm vui” phần Cấu trúc), điểm test 10 (điểm bài “trắc nghiệm vui” phần Kiểu liệt kê). Tuy nhiên, điểm số này chỉ được cập nhật khi người dùng đã đăng nhập tài khoản thành công. Người dùng có thể làm lại “trắc nghiệm vui” nhiều lần để nâng cao điểm số. Website sẽ cập nhật điểm số cao nhất sau mỗi lần học.

Website hỗ trợ người dùng đăng ký, đăng nhập tài khoản. Người dùng cần đăng ký một tài khoản mới; một người dùng có thể đăng ký nhiều tài khoản khác nhau. Website cần lưu giữ thông tin tài khoản người dùng thông qua: mã tài khoản, tên tài khoản, mật khẩu, email Sau khi đã đăng ký tài khoản thành công, người dùng có thể đăng nhập ngay vào website để học. (Website vẫn hiển thị đầy đủ nội dung và chức năng khi người dùng đã hoặc chưa đăng nhập tài khoản).

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

38

Sinh viên thực hiện: Trương Thị Hồng Nhung

Đầu tiên, người dùng truy cập địa chỉ http://daycsharp.somee.com/ để vào website. Trang chủ web hiển thị trình chiếu (slide) ảnh giới thiệu và hướng dẫn các bước thao tác, các điều khiển trên website, giúp người dùng nhanh chóng nắm bắt được cách hoạt động của website.

o Điểm test 5: Điểm số cao nhất sau mỗi lần học của bài “Trắc nghiệm vui” trong phần Mảng.

o Mã tài khoản: Mỗi tài khoản có một mã tài khoản riêng dùng phân biệt các tài khoản với nhau.

o Mật khẩu: Mỗi tài khoản có một mật khẩu. Mật khẩu này được mã hóa tự động để đảm bảo vấn đề bảo mật thông tin người dùng. Website có hỗ trợ tính năng đổi mật khẩu khi người dùng có nhu cầu.

o Điểm test 2: Điểm số cao nhất sau mỗi lần học của bài “Trắc nghiệm vui” trong phần Biến

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

o Email: Mỗi tài khoản có một email xác nhận khi đăng ký tài khoản.

Website cho phép người dùng đăng nhập tài khoản và website tự động lưu điểm số của bài “Trắc nghiệm vui” theo từng tên tài khoản. Cụ thể, website lưu giữ những thông tin sau:

Dựa vào mô tả website ở mục 3.1 trên, website được thiết kế gồm các phần sau: Quản lý hệ thống: quản lý tạo tài khoản mới, thông tin truy nhập hệ thống, quản lý học, quản lý kiểm tra (phần trắc nghiệm), quản lý xem điểm.

39

o Điểm test 3: Điểm số cao nhất sau mỗi lần học của bài “Trắc nghiệm vui” trong phần Kiểu logic

o Điểm test 4: Điểm số cao nhất sau mỗi lần học của bài “Trắc nghiệm vui” trong phần Lệnh if else.

o Tên tài khoản: Mỗi tài khoản có một tên tài khoản riêng dùng phân biệt các tài khoản với nhau. Tên tài khoản không được trùng nhau.

ĐạihọcKinhtếHuế https://mmotool.vn/

3.2. Phân tích website dạy ngôn ngữ lập trình C# dành cho ngƣời mới bắt đầu

- Quản lý người dùng: quản lý thông tin tài khoản.

o Điểm test 1: Điểm số cao nhất sau mỗi lần học của bài “Trắc nghiệm vui” trong phần C# cơ bản.

o Điểm test 6: Điểm số cao nhất sau mỗi lần học của bài “Trắc nghiệm vui” trong phần Chuỗi

Sinh viên thực hiện: Trương Thị Hồng Nhung

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

3.2.1. Sơ đồ chức năng kinh doanh (BFD Business Function Diagram)

o Điểm test 8: Điểm số cao nhất sau mỗi lần học của bài “Trắc nghiệm vui” trong phần Vòng lặp

Phân tích website về chức năng nhằm xác định một cách chính xác và cụ thể các chức năng chính của website. Trong giai đoạn này cần phải xác định rõ ràng những gì mà website cần phải thực hiện mà chưa quan tâm đến phương pháp thực hiện chức năng đó.

Hình 3.1: Sơ đồ chức năng kinh doanh

ĐạihọcKinhtếHuế https://mmotool.vn/

40

o Điểm test 10: Điểm số cao nhất sau mỗi lần học của bài “Trắc nghiệm vui” trong phần Kiểu liệt kê.

o Điểm test 9: Điểm số cao nhất sau mỗi lần học của bài “Trắc nghiệm vui” trong phần Cấu trúc.

Sinh viên thực hiện: Trương Thị Hồng Nhung

o Điểm test 7: Điểm số cao nhất sau mỗi lần học của bài “Trắc nghiệm vui” trong phần Hàm

Chức năng quản lý hệ thống gồm 5 chức năng con: tạo tài khoản người dùng, quản lý thông tin truy nhập hệ thống, quản lý học, quản lý kiểm tra, quản lý xem điểm. 3.2.2. Sơ đồ ngữ cảnh (CD Context Diagram)

- Chức năng quản lý người dùng gồm 3 chức năng con: đăng nhập, đăng xuất, đổi mật khẩu.

ĐạihọcKinhtếHuế https://mmotool.vn/

Sinh viên thực hiện: Trương Thị Hồng Nhung 41

Sơ đồ chức năng của website bao gồm 2 chức năng: Quản lý người dùng, quản lý hệ thống (hình 3.1).

Từ phân tích sơ đồ BFD ở trên, website có sơ đồ ngữ cảnh như sau: Hình 3.2: Sơ đồ ngữ cảnh

Đầu tiên, người dùng truy cập vào website và tạo tài khoản mới (đăng ký tài khoản). Hoặc đăng nhập vào website (nếu đã có tài khoản). Hệ thống sẽ gửi thông tin phản hổi cho người dùng về việc đăng ký, đăng nhập tài khoản này. Người dùng yêu cầu thông tin bài học, thông tin kiểm tra hoặc xem điểm, hệ thống sẽ đưa ra kết quả của các yêu cầu trên. Tuy nhiên, đối với yêu cầu thông tin xem điểm, hệ thống chỉ đưa kết quả khi người dùng đã đăng nhập vào hệ thống. Khi người dùng đăng xuất, hệ thống sẽ đăng xuất tài khoản ra khỏi hệ thống và gửi thông tin phản hồi cho người dùng.

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn Sinh viên thực hiện: Trương Thị Hồng Nhung 42 3.2.3. Sơ đồ luồng dữ liệu (DFD Data Flow Diagram) Sơ đồ luồng dữ liệu mức 0 Hình 3.3: Sơ đồ luồng dữ liệu mức 0 Sơ đồ phân rã chức năng 1.0 Hình 3.4. Sơ đồ phân rã chức năng 1.0 ĐạihọcKinhtếHuế https://mmotool.vn/

ĐạihọcKinhtếHuế https://mmotool.vn/

Hình 3.5: Sơ đồ phân rã chức năng 2.0

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

Sinh viên thực hiện: Trương Thị Hồng Nhung 43

Khi người dùng tạo tài khoản mới, hệ thống sẽ yêu cầu nhập vào các thông tin cơ bản (tên tài khoản, mật khẩu, email) và kiểm tra tính hợp lệ của các thông tin trên rồi thông báo kết quả đăng ký tài khoản cho người dùng.

Khi người dùng yêu cầu đổi mật khẩu, hệ thống sẽ yêu cầu người dùng nhập vào mật khẩu cũ và mật khẩu mới và tiến hành đổi mật khẩu và thông báo kết quả cho người dùng (nếu thông tin mật khẩu hợp lệ).

Khi người dùng đưa vào thông tin tài khoản, hệ thống sẽ kiểm tra tính hợp lệ của thông tin vừa nhập, tài khoản này có tồn tại không và thông báo cho người dùng kết quả đăng nhập.

Sơ đồ phân rã chức năng 2.0

Khi người dùng đăng xuất, hệ thống sẽ tiến hành đăng xuất và thông báo kết quả cho người dùng.

Tương tự, hệ thống sẽ đưa ra thông tin kết quả mà người dùng yêu cầu như thông tin học, kiểm tra và xem điểm.

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

3.2.4. Tích hợp ASPNETDB vào CSDL của website dạy ngôn ngữ lập trình C# dành cho ngƣời mới bắt dầu

Website cần tích hợp CSDL để lưu trữ và cập nhật thông tin tài khoản người dùng. Nền tảng ASP.NET 3.5 đã hỗ trợ chức năng quản lý thành viên từ bước xây dựng sẵn các bảng CSDL lưu thông tin người dùng, đến các hàm hỗ trợ việc tạo lập tài khoản, chứng thực đăng nhập, phân quyền người dùng, … thông qua một bộ thư viện API (Application Programming Interface giao diện lập trình ứng dụng) có tên là SqlMembershipProvider (gọi là bộ cung cấp SqlMembershipProvider).

Giúp chứng thực người dùng khi đăng nhập vào website.

tích hợp và sẵn các lược đồ CSDL trong file ASPNETDB.mdf. Nhưng để tích hợp các lược đồ này vào CSDL của website thì phải sử dụng công cụ ASP.NET SQL Server Registration Tool của bộ SQL Server 2012. (Hình 3.6) SqlMembershipProvider gồm 11 thực thể: 1. aspnet_Applications 2. aspnet_Membership 3. aspnet_Paths 4. aspnet_PersonalizationAllUser 5. aspnet_PersonalizationPerUser 6. aspnet_Profile ĐạihọcKinhtếHuế https://mmotool.vn/

- Quản lý mật khẩu, thay đổi mật khẩu.

SqlMembershipProvider sẽ hỗ trợ một số công việc sau:

- Tạo tài khoản người dùng mới kèm theo mật khẩu.

Chính vì những hữu ích trên và quan trọng hơn nữa là cơ chế bảo mật an toàn nên việc ứng dụng bộ cung cấp SqlMembershipProvider là hết sức cần thiết mà không cần phải tốn công xây dựng lại. Mặc định khi tạo một ứng dụng Web Application Webform Site thì bộ SqlMembershipProvider đã được

Lưu trữ thông tin tài khoản người dùng (tên đăng nhập, mật khẩu, …).

Sinh viên thực hiện: Trương Thị Hồng Nhung 44

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn Sinh viên thực hiện: Trương Thị Hồng Nhung 45 7. aspnet_Roles 8. aspnet_SchemaVersions 9. 11.10.aspnet_Usersaspnet_UsersInRolesaspnetWebEvent_Events Hình 3.6: Công cụ ASP.NET SQL Server Registration Tool SqlMembershipProvider lưu trữ thông tin tài khoản người dùng trong 2 thực thể:  aspnet_Users: mỗi một bản ghi tương ứng với một tài khoản người dùng, trong đó UserID là khóa chính và có kiểu dữ liệu là uniqueidentifier GUID.  aspnet_Membership: có khóa chính UserID đồng thời cũng là khóa ngoại tới bảng aspnet_Users, bảng này lưu trữ các thông tin cơ bản liên quan tới người dùng như email, password (mã băm), … ĐạihọcKinhtếHuế https://mmotool.vn/

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn Sinh viên thực hiện: Trương Thị Hồng Nhung 46 Hình 3.7: Mô hình dữ liệu quan hệ (diagram) 3.3. Thiết kế và xây dựng website dạy ngôn ngữ lập trình C# dành cho ngƣời mới bắt đầu Website được thiết kế gồm những giao diện chính sau: 3.3.1. Trang chủ Bố cục trang chủ (hình 3.8) gồm 5 phần: 1. Tên website: Tên này chứa link tới trang chủ 2. Bảng thành tích: Bảng điểm của các bài “Trắc nghiệm vui” của mỗi phần học. 3. Đăng ký, đăng nhập: Người dùng chọn “Đăng ký” để tạo tài khoản mới, chọn “Đăng nhập” để đăng nhập vào website ĐạihọcKinhtếHuế https://mmotool.vn/

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn Sinh viên thực hiện: Trương Thị Hồng Nhung 47 4. Menu: Mỗi phần học (bên trái) gồm nhiều bài học (bên phải) khác nhau. 5. Trình chiếu ảnh (slide ảnh) giới thiệu cách sử dụng chương trình. Hình 3.8: Giao diện trang chủ 3.3.2. Trang đăng ký tài khoản Hình 3.9: Giao diện trang đăng ký ĐạihọcKinhtếHuế https://mmotool.vn/

5. Người dùng nhập mật khẩu vào ô này (không được bỏ trống).

2. Toàn bộ khung đăng ký tài khoản.

ĐạihọcKinhtếHuế https://mmotool.vn/

7. Nút đăng ký: Sau khi nhập đầy đủ thông tin của các ô 3, 4, 5, 6 ở trên, người dùng bấm nút “Đăng ký” để đăng ký tài khoản mới. 3.3.3. Trang đăng nhập tài khoản Bố cục trang đăng nhập (hình 3.10) gồm 6 phần:

Trang đăng ký tài khoản (hình 3.9) gồm các thông tin cơ bản: tên tài khoản, email, mật khẩu và xác nhận mật khẩu. Trong đó: Tên tài khoản: là kiểu chuỗi (độ dài không quá 50 ký tự) và không được trùng với tên tài khoản đã tồn tại trước đó. Mật khẩu: độ dài tối thiểu là 7 ký tự bao gồm ít nhất một ký tự đặc biệt. Bố cục trang đăng ký gồm 7 phần:

3. Người dùng nhập tên tài khoản vào ô này (không được bỏ trống).

2. Người dùng nhập tên tài khoản vào ô này.

3. Người dùng nhập mật khẩu vào ô này.

1. Nút đăng nhập: Khi người dùng bấm nút “Đăng nhập”, website sẽ chuyển hướng đến trang đăng nhập có giao diện như hình 3.10.

1. Nút đăng ký: Khi người dùng bấm nút “Đăng ký”, website sẽ chuyển hướng đến trang đăng ký có giao diện như trên.

4. Người dùng nhập email vào ô này (không được bỏ trống).

6. Người dùng nhập lại mật khẩu vào ô này (không được bỏ trống).

4. Bấm chọn vào ô “Duy trì đăng nhập” để duy trì trạng thái đăng nhập cho lần đăng nhập sau.

5. Nút đăng nhập: Sau khi nhập đầy đủ thông tin ở các ô 2, 3, người dùng bấm nút “Đăng nhập” để đăng nhập tài khoản.

6. Nút đăng ký: Nếu bạn chưa có tài khoản, bạn có thể chọn nhanh nút đăng ký này để tạo tài khoản mới.

Sinh viên thực hiện: Trương Thị Hồng Nhung

48

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

Phần kết quả chạy code minh họa.

3.3.4. Giao diện trang nội dung bài học Giao diện trang học gồm 4 phần chính: Phần giới thiệu nội dung bài học nằm ở đầu trang. - Phần mã nguồn (code) minh họa cho nội dung bài học. Phần nhóm nút lệnh để điều khiển website: nút “Chạy ” , “Chạy lại” , “Tiếp theo” . Khi người dùng bấm nút “Chạy ” thì “Kết quả” và “Giải thích” hiện ra (nếu có), có thể bấm nút “Chạy ” lại để làm lại bài học nếu muốn, hoặc bấm nút “Tiếp theo” để đi tới bài học kế kiếp hay tự chọn bài học theo ý muốn ở menu bên trái website

49

- Phần giải thích kết quả code minh họa hay nội dung bài học.

Hình 3.10: Giao diện trang đăng nhập

Bố cục trang nội dung bài học gồm 10 phần (hình 3.11 và 3.12):

1. Cho biết bạn đang ở phần học nào.

Sinh viên thực hiện: Trương Thị Hồng Nhung

3. Phần giới thiệu ngắn gọn nội dung bài học. Phần mã nguồn minh họa cho nội dung bài học.

2. Cho biết bạn đang ở bài học nào.

4.

ĐạihọcKinhtếHuế https://mmotool.vn/

10.Nút “Chạy lại” và “Tiếp theo”: Người dùng có thể chọn nút “Chạy lại” để làm lại bài học nếu muốn, hoặc chọn nút “Tiếp theo” để đi đến bài học tiếp theo.

3. Khung này chứa các đáp án. Mỗi câu có thể chọn 1, 2, 3 hoặc cả 4 đáp án.

6. Giải thích: Giải thích đáp án.

7. Nút “Tiếp theo”: Bấm nút “Tiếp theo” để đi đến câu hỏi kế tiếp.

6. Nút “Chạy”: Người dùng bấm vào nút “Chạy” để tiến hành biên dịch mã nguồn.

3.3.5. Giao diện trang trắc nghiệm vui

Khi người dùng đã chọn đáp án và bấm nút “Xem” thì đáp án đúng cùng với lời giải thích sẽ hiện ra. Đáp án đã chọn là đúng hay sai thì người dùng phải bấm nút “Tiếp theo” để đi đến câu hỏi kế tiếp, không được quay lại, làm lại câu hỏi trước đó.

1. Cho biết bạn đang ở bài “Trắc nghiệm vui”.

5. Biểu tượng đáp án đúng: Sau khi người dùng bấm nút “Xem”, biểu tượng này sẽ hiển thị sau các đáp án đúng.

8. Kết quả: Khung này chứa kết quả biên dịch của đoạn mã nguồn minh họa trong khung 4 trên.

50

Sinh viên thực hiện: Trương Thị Hồng Nhung

5. Ô nhập dữ liệu nhằm giúp người học linh động hơn trong quá trình học, tăng tính tương tác, trực quan giữa website với người dùng.

7. Ô nhập dữ liệu (ở mục 5).

Phần các đáp án có thể có.

Phần đáp án.

Bố cục trang trắc nghiệm vui gồm 7 phần (hình 3.13, 3.14 và 3.15):

ĐạihọcKinhtếHuế https://mmotool.vn/

Giao diện trang trắc nghiệm vui gồm 4 phần chính: Phần nội dung câu hỏi.

9. Giải thích: Khung này giải thích ngắn gọn, súc tích nội dung bài học.

Phần các nút lệnh điều khiển: nút Xem, Tiếp theo.

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

2. Khung này chứa nội dung câu hỏi.

4. Nút “Xem”: Sau khi đã chọn đáp án, người dùng bấm vào nút “Xem” để xem kết quả.

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn Sinh viên thực hiện: Trương Thị Hồng Nhung 51 Hình 3.11: Giao diện trang nội dung bài học (1) Hình 3.12: Giao diện trang nội dung bài học (2) ĐạihọcKinhtếHuế https://mmotool.vn/

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn Sinh viên thực hiện: Trương Thị Hồng Nhung 52 Hình 3.13: Giao diện trang trắc nghiệm vui (1) Hình 3.14: Giao diện trang trắc nghiệm vui (2) ĐạihọcKinhtếHuế https://mmotool.vn/

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

Sinh viên thực hiện: Trương Thị Hồng Nhung

53

Hình 3.15: Giao diện trang trắc nghiệm vui (3)

Hình 3.16: Giao diện bảng thành tích

Sau khi trả lời hết các câu hỏi của phần trắc nghiệm, người dùng có thể chọn “Làm trắc nghiệm lại” để làm lại trắc nghiệm hoặc chọn “Tiếp tục học”. 3.3.6. Giao diện bảng thành tích

ĐạihọcKinhtếHuế https://mmotool.vn/

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

54

Như vậy, trong chương 3 này, khóa luận đã phân tích website qua các lưu đồ dữ liệu và thiết kế website dựa trên những kết quả phân tích trên. Từ đó, khóa luận tiến hành xây dựng website dạy ngôn ngữ lập trình dành cho người mới bắt đầu theo khung bài giảng điện tử đã được trình bày ở chương 2. Website được xây dựng theo hướng đơn giản, tương tác và trực quan.

Sinh viên thực hiện: Trương Thị Hồng Nhung

ĐạihọcKinhtếHuế https://mmotool.vn/

Nếu người dùng đã đăng nhập tài khoản, website sẽ tự động lưu lại điểm số cao nhất của từng bài trắc nghiệm vui đã đạt được sau mỗi lần học vào bảng thành tích.

Chương 2: Khóa luận đã làm rõ mục tiêu và nguyên tắc thiết kế bài giảng điện tử Từ đó, khóa luận xây dựng kết cấu loạt bài giảng gồm 11 phần chính và giới thiệu nội một số bài giảng cụ thể cho từng phần, có các câu hỏi tổng hợp kiến thức giúp củng cố và đánh giá kiến thức của học sinh, sinh viên, những người mới bắt đầu học lập trình Loạt bài giảng cung cấp đầy đủ, đúng đắn các kiến thức cơ bản về ngôn ngữ C#.

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

Website cần có chức năng cho phép admin tạo các câu hỏi, trắc nghiệm vui.

- Tăng tính tương tác giữa người dùng với website hơn.

Thiết kế giao diện website thân thiện, đẹp. Luôn đổi mới website từ nội dung đến giao diện, tránh gây nhàm chán.

Sinh viên thực hiện: Trương Thị Hồng Nhung 55

Qua quá trình nghiên cứu đề tài, phân tích, thiết kế và xây dựng “Website dạy ngôn ngữ lập trình C# cho người mới bắt đầu”, khóa luận đã đạt được các kết quả sau:

KẾT LUẬN

Website cần quản lý trạng thái, quản lý tiến trình học tập của người học

Trên đây là những gì đạt được của đề tài và những đề xuất phát triển website trong thời gian tới. Em rất mong nhận được sự hướng dẫn, chỉ báo của các thầy, các cô và tất cả các bạn để đề tài có thể được ứng dụng tốt hơn nữa trong học tập.

ĐạihọcKinhtếHuế https://mmotool.vn/

Tuy nhiên, do thời gian thực tập và nghiên cứu đề tài có hạn và trình độ bản thân còn nhiều hạn chế nên khóa luận không thể tránh khỏi những thiếu sót, sai sót. Khóa luận có thể được tiếp tục phát triển ở những điểm sau: Giới thiệu, cung cấp kiến thức về ngôn ngữ lập trình C# đầy đủ hơn.

Chương 3: Khóa luận đã phân tích website qua các sơ đồ dữ liệu. Từ đó, xây dựng website dựa trên những kết quả phân tích trên và dựa theo khung bài giảng điện tử đã được thiết kế ở chương 2. Website được xây dựng theo hướng đơn giản, tương tác và trực quan.

Chương 1: Khóa luận nêu rõ thực trạng giảng dạy ngôn ngữ lập trình C#. Từ đó, khóa luận đã đưa ra phương pháp giảng dạy điện tử nhằm đổi mới phương pháp giảng dạy ngôn ngữ lập trình C#. Chương này cũng trình bày rõ các khái niệm, đặc điểm về ngôn ngữ lập trình C#.

5. Andrew Troelsen (2010), Pro C# 2010 and the .NET 4 Platform, fifth adition, Apress.

TÀI LIỆU THAM KHẢO

4. Th.S Lê Viết Mẫn, Bài giảng Cơ sở lập trình.

1. Dương Quang Thiện (2005), Lập trình Visual C# thế nào? Tập 1: C# Căn bản và Visual Studio .NET IDE, Nhà xuất bản Tổng hợp TP.HCM.

2. Dương Quang Thiện (2005), Lập tình Visual C# thế nào? Tập 2: C# và .NET Framework, Nhà xuất bản Tổng hợp TP.HCM

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

Sinh viên thực hiện: Trương Thị Hồng Nhung

3. Lập trình ứng dụng Web với ASP.NET, Trung tâm tin học Đại học khoa học tự nhiên TP. Hồ Chí Minh, 2010.

56

ĐạihọcKinhtếHuế https://mmotool.vn/

- Mã nguồn: using namespaceSystem;Baitap { class Program { static void Main(string[] args) {

ĐạihọcKinhtếHuế https://mmotool.vn/

PHỤ LỤC

Mỗi project được đặt trong một solution. Mỗi solution có thể chứa nhiều project. Một project bao gồm một hoặc nhiều đơn vị biên dịch (compilation units) và được biên dịch thành một tập tin assembly (.exe hoặc .dll).

Giải thích: Các tập tin .cs là các tập tin mã nguồn C#. Mỗi tập tin nên chứa cài đặt cho một và chỉ một lớp. Program.cs là tập tin mặc định đầu tiên được tạo ra trong project để chứa đoạn chương trình, là điểm bắt đầu của chương trình. 02. Khối lệnh

Console.Write ("Hello World"); Console.ReadKey (); }

Sinh viên thực hiện: Trương Thị Hồng Nhung

Phần này trình bày nội dung các bài giảng ngôn ngữ lập trình C# dành cho ngƣời mới bắt đầu. Phần 1: Giới thiệu 01. Cấu trúc chƣơng trình

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

- Mã nguồn: Program.cs using {namespaceSystem;BaitapclassProgram{staticvoid Main(string[] args)

{ Console.Write ("Hello World"); Console.ReadKey (); } } }

57

ĐạihọcKinhtếHuế https://mmotool.vn/

Giải thích: Các hướng dẫn biên dịch đặt ở đầu mỗi tập tin mã nguồn, sử dụng từ khóa using, báo cho trình biên dịch biết bạn sẽ sử dụng những kiểu dữ liệu trong namspace nào. Đây cũng là cách để bạn giảm thiểu việc gõ tên namespace trước tên lớp, tên hàm; để báo cho trình biên dịch biết, mã nguồn của bạn cần dùng assembly nào thì trong Visual Studio, trên ngăn Solution Explorer, nháy chuột lên mục References, nháy mục Add References. 04. Không gian tên (namsespace) Mã nguồn: using System; namespace Baitap { class Program static void Main(string[] args) Console.Write ("Hello World"); Console.ReadKey (); Giải thích: Khai báo một namespace sử dụng từ khóa namespace. Tên namespace bắt đầu bằng ký tự viết hoa (không bắt buộc) và có thể có hoặc không.

58 } }

Console.Write ("Hello World"); Console.ReadKey (); }

} } }

Giải thích: Nhiều câu lệnh có thể được gộp lại thành khối và đặt trong cặp dấu ngoặc nhọn {…}. 03. Thƣ viện (using) Mã nguồn: using {namespaceSystem;BaitapclassProgram{staticvoid

Main(string[] args) {

Sinh viên thực hiện: Trương Thị Hồng Nhung

}

}

{

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

{

Mã nguồn: using {namespaceSystem;BaitapclassProgram{staticvoid Main(string[] args) {

Mã nguồn: using System; namespace Baitap { class Program { static void Main(string[] args) { Console.Write ("Hello World"); Console.ReadKey (); } } }

Khóa luận tốt nghiệp

GVHD: ThS. Lê Viế M

05. Lớp (class)

t

Sinh viên thực hiện: Trương Thị Hồng Nhung 59

Những kiểu dữ liệu thuộc namespace nào thì đặt trong cặp dấu ngoặc nhọn của namespace đó. Có thể khai báo các namespace lồng nhau.

ẫn

Giải thích: Khai báo một lớp bằng tên lớp theo sau từ khóa class. Tên lớp bắt đầu bằng ký tự viết hoa. Thân lớp được đặt trong cặp dấu ngoặc nhọn {}. Đối với C#, mọi biến và hàm đều phải được đặt trong một định nghĩa kiểu nào đó. Website này chỉ đề xuất mã nguồn nằm trong lớp Program.

Console.Write ("Hello World"); Console.ReadKey (); } } }

Giải thích: Trong C#, một chương trình luôn bắt đầu bằng hàm Main(). Có thể có nhiều hàm Main để xử lý cho nhiều trường hợp khởi động chương trình khác nhau. Main() là hàm tĩnh (từ khóa static) và

không thuộc về một lớp nào. Người ta có thể truyền tham số cho nó, có nhiều dạng giá trị trả về của hàm này sẽ được đề cập ở phần Hàm (ở đây là void, tức là không cần giá trị trả về). 07. Các kiểu chú thích ĐạihọcKinhtếHuế https://mmotool.vn/

06. Hàm Main

Giải thích: C# hỗ trợ 3 dạng chú thích:  // chú thích chỉ trên một dòng  /* chú thích trên nhiều dòng */ /// chú thích cho phương thức và lớp Chú thích không ảnh hưởng đến code, trình biên dịch sẽ bỏ qua nó khi biên dịch chương trình.

60

01. Giới thiệu chƣơng trình

}

tài liệu hướng dẫn cấp lớp /// {class</summary>Program///<summary>/// chú thích /// </summary> /// <param name="args"></param> static void Main(string[] args) {

// chú thích chỉ trên một dòng /* chú thích trên nhiều dòng */ }

này giới thiệu cách thức tạo ra một chương trình C#. - Mã nguồn: static void Main(string[] args) { string ten

}

Sinh viên thực hiện: Trương Thị Hồng Nhung

+ ten); } Kết quả: Xin chào C# Giải thích: Mỗi câu lệnh trong C# được kết thúc bằng dấu chấm phẩy (;). 02. Biến ĐạihọcKinhtếHuế https://mmotool.vn/

Mã nguồn: using {namespaceSystem;Baitap///<summary>///

Sharp"; Console.WriteLine(

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

Phần 2: Các khái niệm cơ bản

Bài = "C "Xin chào"

string st = "Học cách viết code"; st = Console"abc";.WriteLine(st);

Mã nguồn: static void Main(string[] args) {

Giải thích: Có thể khai báo biến bất cứ đâu trong chương trình. Biến sẽ có kiểu dữ liệu và tên. Một biến sau khi đã khai báo thì có thể gán giá trị và sử dụng nó để tính toán.

Kết quả: Tôi thích học … C#

Sinh viên thực hiện: Trương Thị Hồng Nhung

Bài này cho thấy các biến có các kiểu dữ liệu khác nhau thì cách khởi tạo biến tương ứng cũng khác nhau.

ĐạihọcKinhtếHuế https://mmotool.vn/

Mã nguồn: static void Main(string[] args)

{

61

Bài này giới thiệu cách khai báo biến. Các biến đươc tạo ra bắt đầu với một kiểu dữ liệu, theo sau là tên biến và gán giá trị cho biến với phép gán „=‟.

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

Mã nguồn: static void Main(string[] args)

{

03. Mã nguồn

string st1 = "Tôi thích học ..."; string st2 = "C#"; Console.WriteLine(st1 + st2); }

Giải thích: Xuất dữ liệu ra màn hình sử dụng Write hoặc WriteLine của lớp System.Console. Trong đó, Write in chuỗi văn bản chỉ định ra màn hình; WriteLine in chuỗi văn bản chỉ định ra màn hình rồi xuống dòng. 04. Kiểu chuỗi và kiểu số

}

- Kết quả: abc

Chương trình được viết bằng mã. Với mã này, chúng ta có thể xây dựng các ứng dụng tuyệt vời, các trò chơi, các website và các công cụ.

ĐạihọcKinhtếHuế https://mmotool.vn/

Sinh viên thực hiện: Trương Thị Hồng Nhung

Giải thích: Các dữ liệu khác nhau sẽ có cách khởi gán giá trị khác nhau. Cụ thể, kiểu int sẽ chỉ có phần nguyên, kiểu double sẽ có phần nguyên và phần thập phân. 06. Toán tử Với mã, chúng ta có thể làm toán.

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

}

o static void Main(string[] args) {

o static void Main(string[] args) { int so1 = 18; int so2 = 3; int ketqua = so1 so2; Console.WriteLine(ketqua); }

Có nhiều kiểu số khác nhau. Về cơ bản, có 2 loại kiểu số là kiểu số nguyên và kiểu số thực.

Mã nguồn: Ở mã nguồn này, tôi đưa ra 3 đáp án lựa chọn để khởi gán giá trị cho biến soNguyen, cụ thể cho dòng lệnh int soNguyen đó là “1”, 1 và 1.0. Đáp án đúng là 1. static void Main(string[] args) { int soNguyen = 1; double soThuc = 1.0; }

Giải thích: Với kiểu chuỗi (string), giá trị của biến được định nghĩa bằng cách sử dụng cặp dấu ngoặc kép (“ ”). Với kiểu số (ví dụ: int, double) thì không cần. 05. Các kiểu dữ liệu số

o static void Main(string[] args) { int so1 = 18;

string chuoi = "1"; int so = 1;

- Mã nguồn:

62

int so1 = 18; int so2 = 3; int ketqua = so1 + so2; Console.WriteLine(ketqua); }

int so2 = 3; int ketqua = so1 * so2; Console.WriteLine(ketqua); }

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

07. Các kiểu dữ liệu Biến được khai báo theo cú pháp: <kiểu dữ liệu>:<tên biến>; Mã nguồn: static void Main(string[] args) { string st; int doublesoNguyen;soThuc; }

63

int so1 = 18; int so2 = 3; int ketqua = so1 / so2; Console.WriteLine(ketqua); } Kết quả: o 21 o 15 o 54 oGi6ải thích: Hoạt động cơ bản được thực hiện với các toán tử cơ bản: cộng (+, ), nhân (*, /).

Sinh viên thực hiện: Trương Thị Hồng Nhung

o static void Main(string[] args) {

- Giải thích: Bạn có thể khai báo biến mà không gán bất cứ giá trị nào cho nó. Tuy nhiên, trước hết phải xác định kiểu dữ liệu phù hợp. Ở đây, bạn vừa tạo ra 3 biến với 3 kiểu dữ liệu khác nhau. 08. Trắc nghiệm vui Câu 1. Phát biểu nào sau đây là đúng về

ngôn ngữ lập trình C#? a. C# là ngôn ngữ hướng đối tượng đơn giản, trong sáng, chỉ gồm ~80 từ khoá và hơn 10 kiểu dữ liệu cơ sở. b. C# được xây dựng dựa trên nền tảng ngôn ngữ C++ và Java. ĐạihọcKinhtếHuế https://mmotool.vn/

b. Có thể thay đổi kiểu dữ liệu của biến bất cứ lúc nào.

a. var ten = “Hoa”; b. ten = “Hoa”; c. var tuoi = 14; d. tuoi = 14;

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

Câu 2. Những phát biểu nào sau đây là đúng về biến trong C#?

c. Biến có thể nhớ được nhiều giá trị cùng một lúc.

c. Dấu chấm phẩy (;)

c. C# là ngôn ngữ .NET được cung cấp bởi Microsoft.

Đáp án đúng: d. Giải thích: C# là ngôn ngữ hướng đối tượng đơn giản, trong sáng, chỉ gồm ~80 từ khoá và hơn 10 kiểu dữ liệu cơ sở. C# được xây dựng dựa trên nền tảng ngôn ngữ C++ và Java, là ngôn ngữ .NET được cung cấp bởi Microsoft.

Đáp án đúng: a và d.

b. Dấu chấm than (!)

Câu 4. Cách tạo biến nào sau đây là đúng?

d. Cả 3 đáp án trên đều đúng.

Câu 3. Trong C#, mọi câu lệnh đều kết thúc bằng dấu?

Đáp án đúng: c Giải thích: Hãy nhớ rằng mọi câu lệnh trong C# đều được kết thúc bằng dấu chấm phẩy (;).

Giải thích: Biến giúp chúng ta lưu trữ các giá trị cho sau này. Tuy nhiên, biến chỉ có thể nhớ được một giá trị tại một thời điểm và kiểu dữ liệu của biến là vĩnh viễn.

a. Dấu chấm (.)

d. Dấu ngoặc nhọn (})

d. Biến giúp chúng ta lưu trữ thông tin cho sau này.

64

a. Biến là thuộc tính hoặc thành viên dữ liệu của một lớp, được sử dụng để lưu trữ dữ liệu.

ĐạihọcKinhtếHuế https://mmotool.vn/

Sinh viên thực hiện: Trương Thị Hồng Nhung

b. 4 có thể được sử dụng để tính toán.

Đáp án đúng: a và b.

a.

Sinh viên thực hiện: Trương Thị Hồng Nhung

d. Mã là từ khác của danh sách các lệnh.

a. Mã chỉ có thể được đọc bằng máy tính.

b. Mã xác định các hành động được thực hiện bởi máy tính.

Giải thích: 4 là kiểu integer và “4” là kiểu string. Kiểu integer bao gồm các con số và được sử dùng trong tính toán, string có một ý nghĩa khác.

65

Đáp án đúng: b,c,d.

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

- Đáp án đúng: a và c.

Câu 7. Lệnh nào sau đây là đúng về cách xuất dữ liệu ra màn hình?

Giải thích: chúng ta có thể tạo ra biến với cú pháp var <tên biến>; Câu 5. Mã (code) là gì? Chọn đáp án đúng.

Giải thích: Mã là một danh sách các câu lệnh, xác định các hành động thực hiện trong các ứng dụng, trò chơi và website. Nó được thực hiện bởi các máy tính, nhưng có thể được đọc bởi bất cứ ai.

Câu 8. Kết quả của đoạn chương trình sau là gì? Chọn đáp án đúng. static void Main(string[] args) { int a = 100;

Câu 6. Sự khác nhau giữa 4 và “4” là gì?

d. Không có gì khác nhau.

Console.Write(); b. Console.WriteLine(); c. Console.Read(); d. Console.ReadKey();

- Đáp án đúng: a và b.

ĐạihọcKinhtếHuế https://mmotool.vn/

a. 4 là kiểu integer trong khi ”4” là kiểu string.

c. Với mã, chúng ta có thể xây dựng các ứng dụng, trò chơi và website.

c. “4” có một ý nghĩa khác hơn.

Console.Write(a / 10); }

Mã nguồn: static void Main(string[] args) { int doublebien_kieu_so;bien_kieu_so_thuc = 1.21; bien_kieu_so = 88; }

Giải thích: Chúng ta đã khai báo biến có tên bien_kieu_so kiểu int. Nếu chúng ta muốn sử dụng nó, chúng ta phải khởi gán giá trị cho nó. 02. Khởi tạo biến

a. 100 b. 10

01. Khai báo biến

Hãy nhớ rằng sử dụng phép „=‟ để gán giá trị cho biến, theo sau là một giá trị. Bất cứ khi nào chúng ta gán giá trị cho biến trong lần đầu tiên nghĩa là đang khởi tạo nó.

c. 1000

d. Không chia được cho 10. Đáp án đúng: b

- Giải thích: Kết quả của đoạn chương trình trên là (100/ 10) bằng 10.

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

ĐạihọcKinhtếHuế https://mmotool.vn/

Nhắc lại rằng mọi biến phải được khai báo và khởi gán giá trị trước khi chúng ta có thể sử dụng nó. Cú pháp bao gồm: <kiểu dữ liệu> <tên biến>;

Phần 3: Biến số

Mã nguồn: static void Main(string[] args) { int bien_kieu_so; }

Sinh viên thực hiện: Trương Thị Hồng Nhung 66

Giải thích: bien_kieu_so có giá trị là 88, cũng là khởi tạo giá trị cho nó; bien_kieu_so_thuc có giá trị là 1.21

- Giải thích: giatri2 đã được khai báo và khởi tạo với giá trị 123. Phép toán tăng/giảm (++ / -- ) ực sự dễ dàng để tăng giá trị của một số lên 1 đơn vị với phép toán tăng ++.

static void Main(string[] args) { int namSinh = 1994; ConsolenamSinh++;.WriteLine(namSinh); ết quả: 1995

67

Nhắc lại rằng mọi biến phải được khai báo và khởi gán giá trị trước khi chúng ta có thể sử dụng nó.

Kết quả:123

} K

ĐạihọcKinhtếHuế https://mmotool.vn/

Mã nguồn: static void Main(string[] args) {

05.

Mỗi khi chúng ta đã khai báo một biến, kiểu dữ liệu của nó sẽ không thay đổi được.

Mã nguồn: static void Main(string[] args)

03. Đảm bảo kiểu dữ liệu

{ int giatri1 = 88; int giatr2 = 123; Console.WriteLine(giatr2); }

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

Mã nguồn:

Giải thích: Kiểu dữ liệu của giatri1 là int. Chúng ta chỉ có thể thay đổi giá trị của giatri1 từ 88 thành 1 chứ không thể thay đổi kiểu dữ liệu của nó. Đây chính là đảm bảo kiểu dữ liệu của biến số. 04. Luôn luôn khởi tạo

Th

Sinh viên thực hiện: Trương Thị Hồng Nhung

int giatri1 = 88; int giatr2 = 11; giatri1 = 1; }

int namSinh = 1994; namSinh = 22; Console.WriteLine(namSinh);

string ten = null; int tuoi = 0; Console.WriteLine(ten); ết quả: <không có giá trị>

- Giải thích: namSinh++; có ý nghĩa là namSinh = namSinh+1; Tương tự, nếu chúng ta muốn giảm giá trị của một số xuống 1 đơn vị, chúng ta sử dụng toán tử giảm . Ví dụ: namSinh ; có ý nghĩa là namSinh = namSinh 1; 06. Phép gán kết hợp += Phép gán kết hợp giúp chúng ta tăng/giảm giá trị của một biến lên/xuống một giá trị khác hơn 1 đơn vị (nghĩa là >1 đơn vị).

ĐạihọcKinhtếHuế https://mmotool.vn/

} -

{

} K

int namSinh = 1994; namSinh += 22; Console.WriteLine(namSinh); Kết quả:

o static void Main(string[] args)

static void Main(string[] args)

68

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

o namSinh = 22; có ý nghĩa là namSinh=namSinh 22

Mã nguồn:

}

o namSinh +=22; có ý nghĩa là namSinh=namSinh+22; 07. Null

Mã nguồn:

Mặc dù null đại diện cho không có giá trị, nó có thể gán như một giá trị

o 1972 oGi2016 ải thích:

{

o static void Main(string[] args)

Sinh viên thực hiện: Trương Thị Hồng Nhung

{

d. Nó thiết lập giá trị của biến.

- Đáp án đúng: a và c.

Biến có thể tự động nhận biết được kiểu dữ liệu của nó.

ĐạihọcKinhtếHuế https://mmotool.vn/

a. Nó xác định tên của biến.

b. Chúng ta không thể thay đổi giá trị của biến sau đó.

b. Nó làm cho biến độc lập.

c. Nó xác định kiểu dữ liệu của biến.

a.t?

b. Biến có kiểu dữ liệu và tên.

Câu 2. Phát biểu nào sau đây là đúng về khai báo và khởi tạo biến trong một bước duy nhấ

d. Cả 3 đáp án trên đều đúng.

c. Chúng ta không thể thay đổi kiểu dữ liệu của biến sau đó.

Sinh viên thực hiện: Trương Thị Hồng Nhung

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

Giải thích: Bất cứ khi nào chúng ta khai báo, chúng ta đang xác định tên và kiểu dữ liệu của biến. Khai báo không thiết lập các giá trị, và trong trường hợp này, không phải là về tính độc lập.

Đáp án đúng: d.

Câu 1. Phát biểu nào sau đây là đúng?

69

a. Có thể khai báo biến ở bất cứ đâu trong chương trình.

c. Một biến sau khi đã được khai báo thì có thể gán giá trị và sử dụng để tính toán.

- Giải thích: Vì kiểu string là kiểu tham chiếu nên giá trị khởi tạo là null. Kiểu int là kiểu trị nên giá trị khởi tạo là 0.

d. Chúng ta đã xác định rõ kiểu dữ liệu của biến.

08. Trắc nghiệm vui

Đáp án đúng: a và c Giải thích: Nếu chúng ta gán một giá trị khi khai báo, chúng ta không cần phải xác định kiểu dữ liệu cho nó. Chúng ta có thể thay đổi giá trị của biến sau đó nhưng kiểu dữ liệu là không thể thay đổi được sau khi khai báo. Câu 3. Khai báo là gì? Chọn đáp án đúng.

Sinh viên thực hiện: Trương Thị Hồng Nhung

Câu 5. Cách khai báo biến nào sau đây sai?

a. Chúng ta cần phải xác định kiểu dữ liệu của nó.

a. Nó làm cho một biến là hằng

b. Chúng ta hoàn toàn có thể khởi tạo nó sau này.

c. Nó thiết lập giá trị của biến

Câu 4. Khởi tạo là gì? Chọn đáp án đúng.

a. int d = 3, f = 5; b. double d = 3, f = 3.5; c. string s = “C#”; d. char c = „C#‟; Đáp án đúng: d Giải thích: Biến c chỉ nhận 1 ký tự vì nó thuộc kiểu char (kiểu ký tự).

b. Nó thiết lập kiểu dữ liệu của biến

d. Nó thiết lập tên biến Đáp án đúng: c Giải thích: Khởi tạo là xác định giá trị ban đầu của biến. Nếu chúng ta gán giá trị khi khai báo biến, khai báo và khởi tạo xảy ra cùng một lúc.

70

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

Câu 6. Cách khởi tạo biến nào sau đây sai?

ĐạihọcKinhtếHuế https://mmotool.vn/

a. int s; b. double as; c. string st = null; d. char ch; Đáp án đúng: b. Giải thích: Bạn đã vi phạm quy tắc đặt tên biến. Tên biến không được trùng với từ khoá.

Câu 7. Phát biểu nào sau đây là đúng về việc khai báo một biến mà không cho nó một giá trị?

c. Chúng ta không thể thay đổi kiểu dữ liệu của biến sau này.

Câu 9. Cho biết kết quả của đoạn chương trình sau: static void Main(string[] args) {

a. 1994; b. 1995; c. 3988 d. Đáp án khác Đáp án đúng: b

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

a. 88 b. 123 c. 124 d. Đáp án khác Đáp án đúng: b Giải thích: Bạn vừa thực thi lệnh in giá trị của j.

71

int namSinh = 1994; ConsolenamSinh++;.Write(namSinh); }

ĐạihọcKinhtếHuế https://mmotool.vn/

int i = 88; int j = 123; int k = 124; Console.Write(j); }

Sinh viên thực hiện: Trương Thị Hồng Nhung

d. Chúng ta cần phải cung cấp cho nó một giá trị khi khai báo. Đáp án đúng: a, b, c.

Giải thích: Chúng ta không cần phải khởi tạo biến ngay sau khi khai báo, nếu chúng ta không gán giá trị cho nó ngay lập tức. Chúng ta cần phải xác định kiểu dữ liệu của nó và không thể thay đổi kiểu dữ liệu của nó sau khi khai báo.

Câu 8. Cho biết kết quả của đoạn chương trình sau: static void Main(string[] args) {

Giải thích: Bạn vừa tăng giá trị của biến namsinh lên một đơn vị bằng toán tử tăng ++. Phần 4: Kiểu logic

3;

72

Giải thích: Kiểu bool trong C# cho phép một biến lưu trữ giá trị đúng (True) hoặc sai (False).

args) {

{

02. So sánh hơn: >, <

và ngược lại. - Mã nguồn: o static

01. True hoặc False

static void Main(string[] args) { bool b; b = Consoletrue;.WriteLine(b);

Biến sẽ nhận giá trị True nếu biểu thức điều kiện đúng void Main(string[] args) bool b = 5 > Console.WriteLine(b); void Main(string[] bool b =

5 < 3; Console.WriteLine(b); } Kết quả: o True o False - Giải thích: o Biểu thức 5>3 là đúng nên kết quả trả về là True o Biểu thức 5<3 là sai nên kết quả trả về là False. 03. So sánh hoặc bằng: >=, <= Biến sẽ nhận giá trị True nếu biểu thức đúng và ngược lại. ĐạihọcKinhtếHuế https://mmotool.vn/

} o static

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

Mã nguồn:

}

Kiểu logic (bool) trong C# cho phép một biến lưu trữ giá trị đúng (True) hoặc sai (False).

Sinh viên thực hiện: Trương Thị Hồng Nhung

Kết quả: True

Biến sẽ nhận giá trị True nếu biểu thức đúng và ngược lại. Phép bằng được quy định bởi dấu „==‟.

Mã nguồn:

}

int s = 6; bool b = 5 >= s; Console.WriteLine(b);

static void Main(string[] args)

Kết quả: True

05. So sánh khác: != Biến sẽ nhận giá trị True nếu biểu thức đúng và ngược lại. Phép so sánh khác được quy định bởi dấu „!=‟.

Giải thích: b=s==6 là đúng nên giá trị trả về là True.

{

}

Kết quả: True - Giải thích: b=5 != 6; là đúng vì 5 khác 6 nên kết quả trả về là True. Tương tự, b= 6 !=6; là sai thì kết quả trả về là False

Giải thích: b=5>=s; nghĩa là b=5>=6 là sai nên kết quả trả về là False. Tương tự, nếu b=5<=s; nghĩa là b=5<=6 là đúng thì kết quả trả về là True

04. So sánh bằng: =

Kết quả: False

int s = 6; bool b = 5 == s; Console.WriteLine(b);

Mã nguồn: static void Main(string[] args) {

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

Mã nguồn:

bool b = 5 != 6; Console.WriteLine(b);

{

ĐạihọcKinhtếHuế https://mmotool.vn/

Sinh viên thực hiện: Trương Thị Hồng Nhung

73

static void Main(string[] args)

}

Kết quả: True

Mã: static void Main(string[] args) { bool b1 = false; bool b2 = 3 < 127; bool ketqua = b1 && b2; Console.WriteLine(ketqua); }

Toán tử And được gọi là toán tử logic AND (và). Nếu cả hai toán tử đều có giá trị khác 0 thì điều kiện trở lên true.

Mã:

- Kết quả: False Giải thích: Phép And trả về giá trị True nếu cả 2 toán hạng đều true, trả về giá trị False nếu cả 2 toán hạng đều false hoặc 1 trong 2 toán hạng là false. 08. Toán tử Or: || Toán tử OR được gọi là toán tử logic OR (hoặc). Nếu một trong hai toán tử khác 0, thì điều kiện là true. Mã: o static void Main(string[] args) { bool b1 = false;

Toán tử Not (phủ định) sử dụng để đảo ngược lại trạng thái logic của toán hạng đó. Nếu điều kiện toán hạng là true thì phủ định nó sẽ là false.

Sinh viên thực hiện: Trương Thị Hồng Nhung

static void Main(string[] args)

74

06. Toán tử Not: !

07. Toán tử And: &&

-

ĐạihọcKinhtếHuế https://mmotool.vn/

{

Giải thích: b2 = !b1; sẽ cho kết quả là giá trị ngược lại của b1 (b1 = false;). Do đó, b2 nhận kết quả trả về là True.

bool b1 = false; bool b2; b2 = Console!b1;.WriteLine(b2); }

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

Câu 1. Phát biểu nào sau đây đúng?

Đáp án đúng: a, b, d.

ĐạihọcKinhtếHuế https://mmotool.vn/

09. Trắc nghiệm vui

Sinh viên thực hiện: Trương Thị Hồng Nhung

}

c. Các toán tử như „+‟ và „ ‟ trả về kiểu bool.

} K

o

b. Giá trị mặc định của biến có kiểu bool là false.

Đáp án đúng: d

Câu 2. Phát biểu nào sau đây là đúng?

75

bool b2 = true; bool ketqua = b1 || b2; Console.WriteLine(ketqua);

o static void Main(string[] args) {

a. Kiểu bool cho phép một biến lưu trữ giá trị True hoặc Sai.

a. Phép so sánh như „<‟ và „>‟ trả về kiểu bool.

b. Các “giá trị băm” (hash values) của true và false là 1 và 0.

d. Bool chỉ thể là true hoặc false.

Giải thích: bool chỉ có thể là true hay false và được trả về bởi so sánh. Các "giá trị băm" của true và false là 1 và 0.

ải thích: Toán tử Or trả về true khi 1 trong 2 toán tử hoặc cả 2 toán tử có giá trị là true; trả về false khi 1 trong 2 toán tử hoặc cả 2 toán tử có giá trị là false.

c. Kiểu bool thuộc lớp System.Boolean.

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

a. a = 10;

bool b1 = false; bool b2 = false; bool ketqua = b1 || b2; Console.WriteLine(ketqua); ết quả: True oGiFalse

Câu 3. Làm cách nào để kiểm tra một biến tên a có giá trị bằng 10?

d. Cả 3 đáp án trên đều đúng.

Câu 4. Làm cách nào để đảo ngược giá trị của biến b?

int a = 3, b = 4; string s = (a >= b) ? "a lớn hơn b" : "a nhỏ hơn b"; Console.Write(s);

a. True, False b. True, True

c. False, True

Câu 5. Hãy chọn kết quả đúng của đoạn chương trình sau: static void Main(string[] args) { bool b1 = 5 > 3; bool b2 = 5 < 4; Console.Write(b1 + ", " + b2); }

Giải thích: chúng ta có thể so sánh giá trị sử dụng dấu „==‟. Dấu „=‟ được dùng để gán giá trị cho biến.

a. b != b; b. b = !b; c. b = false; d. b = !true; Đáp án đúng: b

d. False, False - Đáp án đúng: a Câu 6. Hãy chọn kết quả đúng của đoạn chương trình sau: static void Main(string[] args) {

76

b. a == 10;

Sinh viên thực hiện: Trương Thị Hồng Nhung

ĐạihọcKinhtếHuế https://mmotool.vn/

d. Không có cách nào Đáp án đúng: b

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

Giải thích: Chúng ta có thể đảo ngược giá trị của biến b bằng cách gán cho chính nó với một “dấu chấm than” ở phía trước nó. “!” được sử dụng để kiểm tra các giá trị không bằng nhau.

c. a = 11;

c. True False False True

c. True

d. Console.Write(true || false); Đáp án đúng: a và d. Giải thích: (true || false) là true vì một trong các toán hạng là true, tất nhiên là 10 <100. (true && false) là false vì một trong các toán hạng là false.

Câu 9. Phát biểu nào sau đây sai?

b. Console.Write(true && false);

a. a lớn hơn b

Câu 8. Dòng lệnh nào sau đây in ra kết quả true?

b. True False True False

{ bool a = true; bool b = false; Console.Write("{0}\t{1}\t{2}\t{3}", a, b, a && b, a || b); }

b. Dấu && là phép AND logic, dấu & là toán tử AND trên bit.

c. Console.Write(“false”);

c. Dấu || là phép OR logic, dấu | là toán tử OR trên bit.

a. Console.Write(10 < 100);

d. False - Đáp án đúng: b

Sinh viên thực hiện: Trương Thị Hồng Nhung

b. a nhỏ hơn b

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

d. Không có đáp án sai.

ĐạihọcKinhtếHuế https://mmotool.vn/

a. Dấu == là phép gán, dấu = là toán tử quan hệ

77 }

d. False False True True Đáp án đúng: c

a. True True True True

Câu 7. Hãy chọn kết quả đúng của đoạn chương trình sau: static void Main(string[] args)

Sinh viên thực hiện: Trương Thị Hồng Nhung

Mệnh đề else được thực hiện chỉ khi mệnh đề trước đó false và điều kiện riêng của nó là Mãtrue.nguồn: static void Main(string[] args)

bool b = 5 > 6; if (b) Console.WriteLine("Đúng"); else Console.WriteLine("Sai"); } Kết quả: Sai Giải thích: Biểu thức b=5>6; có giá trị false. Lệnh if (b) sai nên chương trình xét mệnh đề else. 03. Không cần logic

- Đáp án đúng: a

Giải thích: dấu = là phép gán, dấu == là toán tử quan hệ

{

Bất cứ khi nào chúng ta muốn biết nếu có điều gì là đúng hay sai, chúng ta có thể kiểm tra bằng câu lệnh if, theo sau là một giá trị logic trong dấu ngoặc đơn.

Giải thích: b=s==6 là đúng nên b sẽ nhận giá trị true. Lệnh if(b) (nghĩa là nếu b là true) là đúng nên câu lệnh trong mệnh đề if này được thực thi. 02. Else?

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

Mã nguồn: static void Main(string[] args) { int s = 6; bool b = s == 6; if (b) Console.WriteLine("Yes!");

}

01. If?

Kết quả: Yes!

78

ĐạihọcKinhtếHuế https://mmotool.vn/

Phần 5: Lệnh if else

Chúng ta có thể so sánh trong một mệnh đề if mà không cần phải khai báo biến. Nếu biểu thức trong dấu ngoặc đúng thì các câu lệnh trong cặp dấu { } sẽ được thực

hiện. Ngược lại, nếu biểu thức trong dấu ngoặc sai thì các câu lệnh trong cặp dấu { } sẽ không được thực hiện.

int x = 4;

}

Kết quả: Pi = 3.14159

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

o static void Main(string[] args) {

int x = 5;

{

o

Mã nguồn:

o staticvoid Main(string[] args)

{

79

Giải thích: Biểu thức trong mệnh đề if đúng nên chương trình sẽ thực hiện câu lệnh của mệnh đề if và bỏ qua các câu lệnh sau đó.

ĐạihọcKinhtếHuế https://mmotool.vn/

04. If else Mệnh đề else được thực hiện chỉ khi mệnh đề trước đó false và điều kiện riêng của nó là Mãtrue.nguồn:

o static void Main(string[] args)

if (x == 4) Console.WriteLine("X bằng 4"); else if (x == 5) Console.WriteLine("X bằng 5"); else Console.WriteLine("X bằng 6"); ết quả: X bằng 4

if (x == 4) Console.WriteLine("X bằng 4"); else if (x == 5) Console.WriteLine("X bằng 5"); else Console.WriteLine("X bằng 6");

static void Main(string[] args) { double pi = 3.14159; if (pi != 3.0) { Console.WriteLine("Pi = 3.14159"); } }

Sinh viên thực hiện: Trương Thị Hồng Nhung

if (x == 4) Console.WriteLine("X bằng 4"); else if (x == 5) Console.WriteLine("X bằng 5"); else Console.WriteLine("X bằng 6");

int x = 6;

} K

ĐạihọcKinhtếHuế https://mmotool.vn/

Giải thích: Mệnh đề else được thực thi chỉ khi mệnh đề trước đó false và điều kiện riêng của nó là true.

Giải thích: Mệnh đề if bên trong được thực thi chỉ khi mệnh đề if trước đó true và điều kiện riêng của nó true.

Mã nguồn:

{

05. So sánh bằng: Ở bài này chúng ta xét một mệnh đề if trong một mệnh đề if. - Mã nguồn: static void Main(string[] args) { int x = 3; if (x < 5) { if (x > 5) Console.WriteLine("X"); } }

o static void Main(string[] args)

Kết quả: X

Sinh viên thực hiện: Trương Thị Hồng Nhung

o X bằng 6

o static void Main(string[] args)

} Kế

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

{

06. So sánh chuỗi Chuỗi không phải dễ dàng so sánh các loại như kiểu số. Chúng ta cần phải sử dụng một phương pháp chuỗi là Equals để kiểm tra xem nó bằng một chuỗi khác.

80

string a = "Quả cam"; string b = "Quả táo"; bool sosanh = a.Equals(b); Console.WriteLine(sosanh); t quả:

string a = "Quả cam"; string b = "Quả cam"; bool sosanh = a.Equals(b); Console.WriteLine(sosanh); }

o X bẳng 5

Mã nguồn:

} o static

string a = "Quả cam"; string b = "Quả cam"; if (a == null) Console.WriteLine("Stay back!"); else Console.WriteLine(a.Equals(b)); void Main(string[] args)

{

string a = null; string b = "Quả cam"; if (a == null) Console.WriteLine("Stay back!"); else Console.WriteLine(a.Equals(b));

o static void Main(string[] args)

} Kết quả: o True o Stay back! Giải thích: a.Equals(b) cho kết quả là True nếu b bằng a và ngược lại. 08. Các toán tử logic - Mã nguồn: static void Main(string[] args) { int x = 3; if (x < 5 && x > 5) Console.WriteLine("X"); } Kết quả: X Giải thích: biểu thức (x<5 && x> 5) đúng nên câu lệnh sau nó Console.WriteLine("X"); được thực thi. 09. Toán tử điều kiện ĐạihọcKinhtếHuế https://mmotool.vn/

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn Sinh viên thực hiện: Trương Thị Hồng Nhung 81 o True oGiFalse ải thích: hàm a.Equals(b); cho kết quả là True nếu b bằng a và ngược lại. 07. Null Một biến kiểu chuỗi có thể có một giá trị hoặc không (null). Đôi khi chúng ta muốn chắc chắn rằng một chuỗi không phải là null trước khi chúng ta cố gắng sử dụng nó.

{

- Giải thích: Miễn là mỗi mệnh đề if else theo sau là một biểu thức logic, chúng ta có thể sử dụng nhiều khối theo ý muốn.

d. Nhiều khối như chúng ta muốn. Đáp án đúng: a, b, c, d.

a. Đúng

Nếu exp_1 là true, giá trị trả về sẽ là kết quả của exp_2

10. Trắc nghiệm vui:

82

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

Câu 1. Chúng ta có thể dùng bao nhiêu khối lệnh if else?

Nếu exp_1 là false, giá trị trả về sẽ là kết quả của exp_3.

Kết quả: 3, 2

Biểu thức: (exp_1) ? (exp_2) : (exp_3)

Câu 2. Có phải khối lệnh if else yêu cầu có một biểu thức logic?

Mã nguồn: static void Main(string[] args)

int max = (e1 > e2) ? e1 : e2; int min = (e1 < e2) ? e1 : e2; Console.WriteLine(max + ", " + min);

int e1 = 2; int e2 = 3;

a. 2 b. 0 c. 1

Sinh viên thực hiện: Trương Thị Hồng Nhung

{

}

b. Sai Đáp án đúng: a. Giải thích: Mỗi khối lệnh if else cần phải có một biểu thức logic; chỉ có khối else là không cần có điều kiện logic. Nếu chúng ta muốn sử dụng khối else, chúng ta cần đặt nó ở cuối câu lệnh if.

Giải thích: (e1 > e2) ? e1 : e2 nghĩa là nếu (e1>e2) là true, giá trị trả về là kết quả của e1. Ngược lại, nếu (e1>e2) là sai, giá trị trả về là kết quả của e2

ĐạihọcKinhtếHuế https://mmotool.vn/

Sinh viên thực hiện: Trương Thị Hồng Nhung

ĐạihọcKinhtếHuế https://mmotool.vn/

a. a b. b c. c d. Đáp án khác

Câu 3. Đoạn chương trình sau in ra gì?

83

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

Câu 4. Câu lệnh nào dưới đây trả về kết quả true?

int a = 5; if (a != 5) Console.Write("a"); else if (a <= 4) Console.Write("b"); else Console.Write("c"); }

a. (true && true) == fasle; b. (true && true) == true; c. true && true; d. true && false; Đáp án đúng: b, c

- Giải thích: Phép logic AND trả về true khi và chỉ khi các toán hạng đều true. Ngược lại, kết quả là false

Giải thích: Vì a bằng 5, (a != 5) và (a <= 5) đều sai (fasle) nên mệnh đề else được thực hiện.

Câu 5. Câu lệnh nào dưới đây trả về kết quả true?

- Đáp án đúng: c

a. (true || true) == fasle; b. false || false; c. (true || false) == true; d. true || false; Đáp án đúng: c, d Giải thích: Phép logic OR trả về true trừ khi các giá trị đều là false. Phần 6: Mảng

static void Main(string[] args) {

string[] hoten; hoten = new string[10]; }

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

Giải thích: Bạn vừa khai báo mảng một chiều hoten có kiểu string và mảng hai chiều matran kiểu int

Giải thích: Bạn vừa kết hợp khai báo và khởi tạo mảng một chiều ten gồm 3 phần tử Hoa, Lan, Nam

01. Khai báo mảng

string[] ten = new string[3] { "Hoa", "Lan", "Nam" }; }

Sinh viên thực hiện: Trương Thị Hồng Nhung

Mảng là một tập liên tục có thứ tự các thành phần dữ liệu cùng kiểu được tham chiếu bằng cùng một tên định danh và một chỉ số. Cách khai báo mảng bao gồm kiểu dữ liệu, các cặp dấu ngoặc vuông và tên mảng. Mã nguồn: static void Main(string[] args) { string[] hoten; int[,] matran; }

Có một cách để khai báo, khởi tạo và khởi gán mảng của bạn chỉ trong một câu lệnh.

02. Khởi tạo

84

Giải thích: Bạn vừa khai báo một mảng hoten có kiểu string và khởi tạo mảng gồm 10 phần tử. 03. Rút gọn

Mã nguồn: static void Main(string[] args) {

ĐạihọcKinhtếHuế https://mmotool.vn/

Cũng tương tự như biến, để sử dụng mảng, chúng ta cần khai báo và khởi tạo nó. Sử dụng từ khoá new Mã nguồn: static void Main(string[] args) {

Một mảng là rỗng khi nó không chứa phần tử nào.

int[] a = { }; bool r; r = a.Length == 0; if (r) Console.WriteLine("A:0");

Mã nguồn:

Trong đó, chỉ_số chỉ vị trí của phần tử trong mảng cần truy xuất, có thể là giá trị, biến hay biểu thức và có giá trị từ 0 đến <kích thước mảng 1>.

Kết quả: A:0

Kết quả: 2

static void Main(string[] args)

{

}

{

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

Mã nguồn:

Giải thích: Bạn vừa truy cập vào phần tử đầu tiên của mảng. 06. Mảng rỗng

Sinh viên thực hiện: Trương Thị Hồng Nhung 85

static void Main(string[] args)

{

Mã nguồn:

}

Kết quả: Hoa

Giải thích: Mảng a là mảng rỗng vì nó không chứa phần tử nào.

04. Kích thƣớc mảng

ĐạihọcKinhtếHuế https://mmotool.vn/

Xác định kích thước mảng bằng thuộc tính Length

static void Main(string[] args)

}

string[] hoten = { "Hoa", "Lan" }; Console.WriteLine(hoten.Length);

Giải thích: hoten.Length có nghĩa là lấy độ dài, kích thước của mảng hoten.

Công thức chung: <tên_mảng>[chỉ_số]

05. Truy cập vào các phần tử của mảng

string[] hoten = { "Hoa", "Lan" }; string ten = hoten[0]; Console.WriteLine(ten);

d. Lớp Array trong C# được định nghĩa trong System namespace, nó là lớp cơ sở cho tất cả các mảng và cung cấp các thuộc tính và phương thức để làm việc với mảng.

c. Mảng được sử dụng để lưu giữ một tập hợp dữ liệu.

a. C# hỗ trợ mảng đa chiều. Mẫu đơn giản nhất của mảng đa chiều là mảng hai chiều.

Đáp án đúng: c. Giải thích: Mảng tham số được sử dụng để truyền một số lượng chưa biết của các tham số tới một hàm.

07. Trắc nghiệm vui

Đáp án đúng: b. Giải thích: Mảng lưu giữ tập hợp các phần tử có cùng kích thước cố định trong cùng kiểu. Nói cách khác, một mảng là 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.

Câu 1. Phát biểu nào sau đây sai về mảng trong C#?

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

b. int[] s = new int[30];

ĐạihọcKinhtếHuế https://mmotool.vn/

d. Một mảng là 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.

b. Bạn có thể truyền cho hàm một con trỏ tới một mảng bằng việc xác định tên mảng mà không cần chỉ số của mảng.

Câu 3. Cách khai báo mảng nào sau đây sai?

86

a. float[] diemThi;

b. Mảng lưu giữ tập hợp các phần tử có kích cỡ cố định trong nhiều kiểu khác nhau.

Câu 2. Phát biểu nào sau đây sai về mảng trong C#?

Sinh viên thực hiện: Trương Thị Hồng Nhung

a. Mảng lưu giữ tập hợp các phần tử có kích cỡ cố định trong cùng kiểu.

c. Mảng tham số được sử dụng để truyền một số lượng cho trước của các tham số tới một hàm.

87

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

Sinh viên thực hiện: Trương Thị Hồng Nhung

d. char[] kt = new char; Đáp án đúng: d.

Câu 4. Phát biểu nào sau đây là đúng về chỉ số của mảng?

01. Khai báo chuỗi ĐạihọcKinhtếHuế https://mmotool.vn/

} } a. 0 1 2 3 4 5 6 7 8 9 b. 1 2 3 4 5 6 7 8 9 10 c. 2 4 6 8 10 d. 1 3 5 7 9 Đáp án

b. Chỉ số của mảng thường là một giá trị thuộc kiểu số nguyên mô tả cho thứ tự của phẩn tử trong mảng chứa nó, phần tử đầu tiên của mảng có chỉ số là 1, phần tử thứ hai có chỉ số là 2, … cho đến phần tử thứ n có chỉ số là n. Đáp án đúng: a. Giải thích: Chỉ số của mảng thường là một giá trị thuộc kiểu số nguyên mô tả cho thứ tự trong mảng chứa nó, phần tử đầu tiên của mảng có chỉ số là 0, phần tử thứ hai có chỉ số là 1, … cho đến phần tử thứ n có chỉ số là n 1. Câu 5. Chương trình sau đây in ra kết quả gì? static void Main(string[] args) { int[] a = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; for (int i = 0; i < a.Length; i++) { if (a[i] % 2 == 0) Console.Write(a[i] + " "); đúng: c. (string)

Phần 7: Chuỗi

a. Chỉ số của mảng thường là một giá trị thuộc kiểu số nguyên mô tả cho thứ tự của phẩn tử trong mảng chứa nó, phần tử đầu tiên của mảng có chỉ số là 0, phần tử thứ hai có chỉ số là 1, … cho đến phần tử thứ n có chỉ số là n-1.

c. string[] thu = { “Hai”, “Ba”, “Tư”, “Năm”, “Sáu”, “Bảy”, “Chủ nhật” };

88

Mã nguồn:

st = "Chuỗi ký tự mới"; Console.WriteLine(st);

02. Độ dài chuỗi Để in ra độ dài chuỗi, chúng ta sử dụng thuộc tính Length của lớp System.String. Mã nguồn: static void Main(string[] args) {

- Kết quả: 12

Giải thích: Bạn vừa truy xuất đến vị trí đầu tiên của chuỗi. 04. Nối chuỗi

Kết quả: Chuỗi ký tự mới

{

{

string st = "Chuỗi ký tự ban đầu";

static void Main(string[] args)

}

xuất từ lớp System.String

Giải thích: Thuộc tính length trả về độ dài của chuỗi st. Chuỗi st gồm 12 ký tự 03. Truy xuất vào phần tử của chuỗi Chúng ta sử dụng cú pháp <tên chuỗi>[chỉ_số] để truy xuất một ký tự trong chuỗi tại vị trí chỉ_số trong chuỗi. chỉ_số có giá trị từ 0 đến size 1.

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

Giải thích: Bạn vừa tạo ra chuỗi st với nội dung là Chuỗi ký tự mới

Sinh viên thực hiện: Trương Thị Hồng Nhung

string st1 = "Chương trình"; Console.Write(st1.Length);

}

} Kết quả: C

ĐạihọcKinhtếHuế https://mmotool.vn/

static void Main(string[] args)

string st1 = "Chương trình"; Console.Write(st1[0]);

Sử dụng từ khoá string để khai báo một chuỗi ký tự. Tất cả các chuỗi đều dẫn

Mã nguồn:

Mã nguồn:

Mã nguồn: static void Main(string[] args) {

Mã nguồn: static void Main(string[] args)

89

Giải thích: Bạn vừa nối chuỗi st1 và st2 với nhau bằng cách sử dụng toán tử cộng và hàm Concat()

Kết quả: Bằng nhau

05. So sánh bằng

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

Để so sánh hai chuỗi có bằng nhau không, chúng ta có thể sử dụng phép so sánh bằng (==) hoặc hàm Equals().

Giải thích: Bạn vừa dùng toán tử so sánh bằng và hàm Equals() để so sánh chuỗi st1 và st2.

06. Sao chép chuỗi

string st1 = "Chương trình "; string st2 = "C#"; string st3 = st1 + st2; string st4 = string.Concat(st1, st2);

string st1 = "C#"; string st2 = "C#"; if (st1 == st2) Console.WriteLine("Bằng nhau"); if (st1.Equals(st2)) Console.WriteLine("Bằng nhau"); if (string.Equals(st1, st2)) Console.WriteLine("Bằng nhau"); }

{

}

Để sao chép chuỗi, chúng ta sử dụng phép gán trực tiếp hoặc sử dụng hàm Copy().

string st1 = "Chương trình"; string st5 = st1; string st6 = string.Copy(st1); Console.Write(st5 + ", " + st6);

ĐạihọcKinhtếHuế https://mmotool.vn/

static void Main(string[] args)

{

Sinh viên thực hiện: Trương Thị Hồng Nhung

Để nối chuỗi, chúng ta dùng toán tử cộng (+) như trong tính toán hoặc dùng hàm ConCat() của lớp System.String

Giải thích: Bạn vừa chèn chuỗi “ cho người mới bắt đầu” vào chuỗi st3 tại vị trí 15.

ĐạihọcKinhtếHuế https://mmotool.vn/

Chúng ta sử dụng hàm Insert() để chèn một chuỗi vào chuỗi đã cho.

Kết quả: Chương trình C# cho người mới bắt đầu

d. Cả 3 đáp án trên đều đúng Đáp án đúng: d

a. Là hàm tĩnh so sánh hai chuỗi.

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

Giải thích: Bạn vừa gán nội dung chuỗi st1 cho chuỗi st5 và sao chép nội dung chuỗi st1 cho chuỗi st6

08. Trắc nghiệm vui

Câu 2. Hàm Contains() trong lớp System.String có chức năng gì? Chọn đáp án đúng.

string st1 = "Chương trình "; string st2 = "C#"; string st3 = st1 + st2; string st7 = st3.Insert(15, " cho người mới bắt đầu"); Console.Write(st7); }

d. Đáp án khác.

}

a. Kiểu chuỗi (string) được dẫn xuất từ lớp System.String

Sinh viên thực hiện: Trương Thị Hồng Nhung 90

c. Giá trị khởi tạo của kiểu string là null.

Kết quả: Chương trình, Chương trình

b. Là hàm xác định một chuỗi có chứa một chuỗi con được chỉ định.

07. Chèn

c. Là hàm tĩnh định dạng một chuỗi sử dụng các thành tố cơ sở và các token giữ chỗ.

b. Chuỗi chứa chuỗi các ký tự, là kiểu tham chiếu

Đáp án đúng: b

Mã nguồn: static void Main(string[] args) {

Câu 1. Phát biểu nào sau đây đúng về kiểu chuỗi (string) trong C#?

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

a. “Câu hỏi số \(a)!”; b. “Câu hỏi số” + a + “!”; c. “Câu hỏi số $a!”; d. “Câu hỏi số $(a)!”; Đáp án đúng: b Giải thích: Chuỗi nội suy khá đơn giản: thêm các biến bằng cách sử dụng '+'.

Sinh viên thực hiện: Trương Thị Hồng Nhung

a. cho tới tháng 10?Bao giờ

Câu 3. Làm cách nào để thêm một biến a vào chuỗi?

91

Câu 5. Làm cách nào để lấy độ dài một chuỗi st?

Câu 4. Câu lệnh nào sau đây dùng để tạo biến c có kiểu dữ liệu char? a. string c; b. char c = “a”; c. char c = „c‟; d. char c = „a‟; - Đáp án đúng: c, d. Giải thích: Kiểu ký tự char chỉ có thể giữ một ký tự đơn.

a. st.Count; b. st.Size; c. st.Length(); d. st.Length; Đáp án đúng: d. Giải thích: Chúng ta có thể lấy độ dài của chuỗi hay đếm số lượng ký tự trong chuỗi bằng cách sử dụng thuộc tính Length. Câu 6. Đoạn chương trình sau in ra kết quả gì? static void Main(string[] args) { string s1 = "Bao giờ"; string s2 = "cho tới tháng 10?"; string s3 = s1.Insert(7, " "); Console.Write(string.Concat(s3, s2)); }

ĐạihọcKinhtếHuế https://mmotool.vn/

ĐạihọcKinhtếHuế https://mmotool.vn/

} Kết quả: Xin chào Hoa Giải thích: Một hàm bắt đầu với kiểu trả về (đối với void thì không có kiểu trả về) và một tên, tiếp theo là dấu ngoặc đơn. Các đoạn mã giữa '{}' được thực hiện khi

Đôi lúc chúng ta muốn giảm những đoạn mã nguồn lặp lại hay sử dụng lại mã nguồn trong nhiều chương trình, chúng ta sử dụng hàm Mã nguồn: static void loiChao() { string ten = "Hoa"; Console.Write("Xin chào " + ten); static} void Main(string[] args) { loiChao();

c. Bao giờ cho tới tháng 10?

Phần 8: Hàm

- Kết quả: Sử dụng hàm in dữ liệu Giải thích: Bạn vừa in chuỗi st ra màn hình. 02. Định nghĩa phƣơng thức

Sinh viên thực hiện: Trương Thị Hồng Nhung 92

Đáp án đúng: c Giải thích: Chúng ta dùng hàm Insert() để chèn chuỗi “ “ vào s1 tại vị trí 7.

Mã nguồn: static void Main(string[] args) {

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

Một phương thức là một nhóm lệnh cùng nhau thực hiện một tác vụ. System.Console.Write() là một phương thức được dùng khá thường xuyên.

b. Bao giờcho tới tháng 10?

Dùng hàm Concat() để cộng chuỗi s3 và s2.

string st = "Sử dụng hàm in dữ liệu"; Console.Write(st); }

d. Đáp án khác

01. Write

Chúng ta có thể sử dụng hàm có nhiều hơn một đối số

void Main(string[] args) { Chao("Hoa", "Lan"); }

- Kết quả: 8

static void Chao(string s1, string s2) {

chúng ta gọi phương thức. Lưu ý rằng các phương pháp này đòi hỏi các đối tượng để làm việc. 03. Tại sao sử dụng hàm?

Sinh viên thực hiện: Trương Thị Hồng Nhung 93

Nếu chúng ta muốn sử dụng một khối mã thường xuyên hơn, đó là một ý tưởng tốt để đặt nó trong một hàm. Một khi nó được viết, chúng ta có thể sử dụng lại bất cứ khi nào chúng ta muốn.

Kết quả: Chào Hoa! Chào Lan!

Giải thích: nếu chúng ta muốn sử dụng nhiều đối số (hay còn gọi là tham số), chúng ta cần phải tách chúng bằng dấu phẩy.

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

05. Kết quả trả về

string s = "Chào " + s1 + "! Chào " + s2 + "!"; Console.Write(s); static}

Giải thích: Đối số của hàm được đặt trong dấu ngoặc đơn sau tên hàm. Trong trường hợp này, chúng ta có thể sử dụng chúng như các biến thông thường. 04. Hàm nhiều tham số

static void phepToan(int so) { Console.Write(so * 2); static} void Main(string[] args) { phepToan(4); }

ĐạihọcKinhtếHuế https://mmotool.vn/

Đôi khi, hàm cần có kết quả trả về

- Mã nguồn:

Mã nguồn:

Sinh viên thực hiện: Trương Thị Hồng Nhung

{

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

- Mã nguồn: static int phepToan(int so)

{

a. Một phương thức là một nhóm lệnh cùng nhau thực hiện một tác vụ.

Kết quả: 40

Giải thích: Nếu chúng ta muốn trả về một giá trị nào đó, chúng ta cần phải xác định kiểu trả về của nó. Chúng ta có thể gán giá trị trả về một biến.

int s2 = phepToan(20); Console.Write(s2); }

int s1 = so * 2; return s1; static} void Main(string[] args)

07.

Mã: static void cong5(int so) { so += Console5;.Write(so); static} void Main(string[] args) { int s = Consolecong5(s);6;.Write(" " + s); } Kết quả: 11 6 Giải thích: Khi chúng ta truyền s vào hàm cong5() như là một đối số, so sẽ mang giá trị của s. Nhưng so chỉ tồn tại trong hàm cong5(): bất cứ điều gì chúng ta làm gì với nó, s sẽ không thay đổi. Trắc nghiệm vui Câu 1. Phát biểu nào sau đây sai về hàm/ phương thức trong C#?

b. Mỗi chương trình C# có ít nhất một lớp với một phương thức là Main.

94

ĐạihọcKinhtếHuế https://mmotool.vn/

06. Truyền giá trị Nhận biết rằng một phương pháp không thay đổi các biến mà nó nhận được là các đối số.

c. Hàm là kỹ thuật cho phép chia nhỏ một chương trình lớn ra nhiều chương trình nhỏ

C#?a.

ĐạihọcKinhtếHuế https://mmotool.vn/

c. Giảm những đoạn mã nguồn lặp lại.

Đáp án đúng: b. Giải thích: Hàm và việc sử dụng lại hàm trong nhiều chương trình giúp giảm những đoạn mã nguồn lặp đi lặp lại, do đó tiết kiệm thời gian và công sức hơn.

Câu 3. Hàm có thể thuộc vào các dạng nào? Chọn đáp án đúng nhất.

d. Cả 3 đáp án trên đều sai. Đáp án đúng: d. Giải thích: Hàm là kỹ thuật cho phép chia nhỏ một chương trình lớn ra nhiều chương trình nhỏ, cùng thực hiện một tác vụ. Mỗi chương trình C# có ít nhất một lớp với một phương thức là Main.

b. Thay đổi giá trị của các tham số đầu vào và trả ra một giá trị (thông báo tình trạng).

b. Một chương trình càng có nhiều hàm càng tốt.

- Đáp án đúng: d. Câu 4. Phát biểu nào sau đây đúng về tham số mặc định của hàm/ phương thức trong Các giá trị mặc định được sử dụng khi người sử dụng cung cấp một giá trị cho tham số của hàm.

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

Sinh viên thực hiện: Trương Thị Hồng Nhung 95

a. Giảm nhẹ công việc cho người lập trình.

a. Tính toán và trả ra một giá trị (kết quả) dựa trên các tham số đầu vào.

d. Cả 3 đáp án trên đều đúng.

Câu 2. Phát biểu nào sau đây sai khi nói về lợi ích của hàm/ phương thức trong C#?

d. Sử dụng lại mã nguồn trong nhiều chương trình.

c. Không trả ra giá trị nào: thay đổi các tham số đầu vào, thay đổi giá trị toàn cục hay thực hiện một vài hành vi nào đó (in dữ liệu ra màn hình).

ấu trúc

động

ức

b. Phải được đặt sau các tham số được xác định giá trị mặc định.

ện

a.

Câu 5. Chương trình sau đây in ra kết quả gì? class Program { static int pheptoan(int so) { return so * 2; static} void Main(string[] args) { Console.Write(pheptoan(10 % 2 + 5)); } } 2 20 While lặp c hoạt cùng nguyên lý với điều ki n (if else). M t vòng cho phép thực hi các dòng lệnh (hay các instruction) nhiều lần. Vòng lặp while được th c hi khi bi u th điều kiện được đưa ra là đúng (true). Mã nguồn: static void Main(string[] args)

Sinh viên thực hiện: Trương Thị Hồng Nhung 96

Vòng

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

là một

ện

ĐạihọcKinhtếHuế https://mmotool.vn/

b. 5 c.

lặp

d. Phải được đặt sau các tham số không được xác định giá trị mặc định. Đáp án đúng: c, d. Giải thích: Các giá trị mặc định được sử dụng khi người sử dụng không cung cấp một giá trị cho tham số của hàm; phải được đặt sau các tham số không được xác định giá trị mặc định.

c. Các giá trị mặc định được sử dụng khi người sử dụng không cung cấp một giá tị cho tham số của hàm.

d. 10 Đáp án đúng: d. Phần 9: Vòng lặp 01.

Sinh viên thực hiện: Trương Thị Hồng Nhung 97

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

c hiện 1 lần.  condition: là biểu thức kiểm tra điều kiện lặp lại.  statement_2

đượ

ện

. 

ần. Mã: ĐạihọcKinhtếHuế https://mmotool.vn/

Giải thích: Bạn phải đảm bảo rằng biểu thức điều kiện phải sai (false) tại một thời điểm nào đó. Nếu không chương trình sẽ chạy vòng lặp mãi mãi, hoặc xảy ra lỗi. 02. Do while

Vòng lặp do while làm việc trong cùng một cách thức, ngoại trừ các khối lệnh được thực hiện ít nhất một lần trước khi điều kiện được kiểm tra. - Mã nguồn: static void Main(string[] args) { int dem = 5; do{ dem++; } while (dem < 5); Console.Write(dem); } Kết quả: 6 Giải thích: Chương trình sẽ thực hiện vòng lặp 1 lần vì biểu thức điều kiện (dem<5) là false. Vòng lặp do while thực sự rất hữu ích trong một số trường hợp. 03. For tăng

Vòng lặp for trong C# có dạng: for (statement_1; condition; statement_2) { statement_3; } Trong đó: statement_1: được dùng để khởi tạo và chỉ được thự : được dùng giá condition statement_3: là lệnh hoặc l kép mà ta muốn c th c hi nhi l

ệnh

để cập nhật/ thay đổi

ều

int dem = 0; while (dem < 2) Console.Write(dem); }

Kết quả: 2

đơn

trị của

{

Kết quả: 123

for (int i = 1; i <= 3; i++) Console.Write(i); }

Sinh viên thực hiện: Trương Thị Hồng Nhung 98

{

static void Main(string[] args)

05. For Mã nguồn:

static void Main(string[] args) { int tong = 0; string s = "0"; for (int i = 1; i < 3; i++) { tong += i; s += "+" + i; Console}.Write(s + "=" + tong); } - Kết quả: 0+1+2=3 Giải thích: Mỗi lần

static void Main(string[] args)

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

- Giải thích: Mỗi lần vòng lặp for được thực hiện, chương trình sẽ kiểm soát sự thay đổi giá trị của i: từ 1 đến 2, đến 3 và như vậy, cho đến khi điều kiện chạy trở thành false.

04. For giảm

vòng lặp được thực thi, các biến điều khiển i được cộng thêm vào tong. s được dùng để ghi lại giá trị đó. 06. Fibonacci Đã bao giờ bạn nghe nói về dãy số fibonacci? Đó là một dãy số mà mỗi số là tổng của 2 số đứng trước. Mã nguồn: ĐạihọcKinhtếHuế https://mmotool.vn/

Mã nguồn:

for (int i = 5; i > 0; i ) Console.Write(i); } Kết quả: 54321

{

}

{

Sinh viên thực hiện: Trương Thị Hồng Nhung

ĐạihọcKinhtếHuế https://mmotool.vn/

{

99

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

- Mã nguồn:

int a = 1; int b = 1; Console.Write(a + " " + b); for (int i = 1; i < 5; i++) {

static void Main(string[] args)

int dem = 1; while (dem <= 3) { dem++;Console.Write(dem); Console}.Write(" & ");

static void Main(string[] args)

int c = a + b; a = b; b = Consolec;.Write(" " + c); } ết quả: 1 1 2 3 5 8

Mã nguồn:

static void Main(string[] args)

for (int x = 1; x < 5; x++) { Console.Write(x + ": "); int y = x; while (y <= 4) { y++;Console.Write(y); Console}.Write("; "); }

Kết quả: 1: 1234; 2: 234; 3: 34; 4: 4; ải thích: Vòng lặp for chạy một lần từ 1 đến 4. Vòng lặp while chạy 4 lần từ x tới 4

Gi

} K

07. Vòng lặp lồng nhau

08. Biến điều khiển

{

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

Sinh viên thực hiện: Trương Thị Hồng Nhung 100

d. Vòng lặp tự động hóa các công việc lặp đi lặp lại.

09. Trắc nghiệm vui

c. While kiểm tra điều kiện trước khi thực hiện thân vòng lặp.

Đáp án đúng: a, c.

a. Giống vòng lặp while nhưng kiểm tra điều kiện ở cuối thân vòng lặp.

d. While kiểm tra điều kiện sau khi thực hiện thân vòng lặp.

a. Các vòng lặp khác nhau dùng cho những trường hợp khác nhau.

c. Vòng lặp giúp tiết kiệm thời gian và công sức.

Giải thích: Vòng lặp while kiểm tra điều kiện đúng trước khi thực hiện lặp đi lặp lại một hoặc một nhóm các lệnh.

- Giải thích: Biến điều khiển như dem và i được sử dụng để điều chỉnh số lần lặp được thực hiện; chúng đang tăng hoặc giảm ở mỗi lần chạy.

b. Vòng lặp chạy mãi mãi, vô hạn.

a. While lặp lại một hoặc một nhóm các lệnh trong khi điều kiện đã cho là đúng (true).

b. While lặp lại một hoặc một nhóm các lệnh trong khi điều kiện đã cho là sai (false).

for (int i = 3; i >= 1; i ) { Console.Write(i); } }

Câu 3. Phát biểu nào sau đây là đúng về vòng lặp do while trong C#?

Câu 2. Phát biểu nào sau đây đúng về vòng lặp while trong C#?

Kết quả: 123 & 321

ĐạihọcKinhtếHuế https://mmotool.vn/

Câu 1. Phát biểu nào sau đây là đúng về vòng lặp trong C#?

Đáp án đúng: a, c, d. Giải thích: Vòng lặp tự động hóa các công việc lặp đi lặp lại, do đó, tiết kiệm thời gian và công sức. Có nhiều loại vòng lặp khác nhau nhưng không có loại nào chạy vô hạn.

c. Luôn luôn là vòng lặp vô hạn.

7

b. Thực thi câu lệnh ít nhất 1 lần đến khi điều kiện không được thỏa mãn.

static void Main(string[] args) { int x = 0; while (x < 10) { Console.Write(x + " "); x++; 9 10 6 8 9 Đáp án đúng: d. Giải thích: Vòng lặp while sẽ chạy từ 0 đến 9 và dừng lại khi x tăng lên đến 10.

Câu 4. Tại sao việc đảm bảo rằng điều kiện chạy phải trở thành false sau một số lần lặp hữu hạn là quan trọng?

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

a. Nếu không đảm bảo điều đó, các vòng lặp sẽ chạy vô hạn.

Câu 5. Chương trình sau in ra kết quả gì?

Giải thích: Nếu điều kiện chạy sai thì chương trình sẽ thoát khỏi vòng lặp, vì thế vòng lặp sẽ không chạy vô hạn.

Sinh viên thực hiện: Trương Thị Hồng Nhung 101

c. Nếu không đảm bảo điều đó, mã nguồn sẽ không được biên dịch.

} } a. 0 b. 0 1 2 3 4 5 6 7 8 9 10 c. 1 2 3 4 5 6 7 8

d. 0 1 2 3 4 5

b. Điều này không quan trọng.

Đáp án đúng: a, d.

ĐạihọcKinhtếHuế https://mmotool.vn/

d. Cả 3 đáp án trên đều đúng. Đáp án đúng: a, b.

d. Nó quyết định khi nào thoát khỏi vòng lặp.

Giải thích: Vòng lặp do while tương tự vòng lặp while, ngoại trừ kiểm tra điều kiện ở cuối thân vòng lặp. Do đó, do while thực hiện câu lệnh ít nhất 1 lần đến khi điều kiện không được thỏa mãn.

Trong C#, một cấu trúc (structure) là một kiểu dữ liệu. Nó giúp bạn tạo một biến đơn mà giữ dữ liệu liên quan của các kiểu dữ liệu đa dạng. Sử dụng từ khóa struct để tạo một cấu trúc. Mã nguồn: class Program { public struct ToaDo { public int X; public int Y; static}; void Main(string[] args) }{ }

}{ } ĐạihọcKinhtếHuế https://mmotool.vn/

public struct ToaDo {

Sau khi đã tạo một cấu trúc, chúng ta cần khai báo các biến. Mỗi biến được gọi là một thành viên hay trường. Mã nguồn: class Program {

Giải thích: Chương trình vừa tạo một kiểu dữ liệu mới ToaDo, nó cũng tương tự như các kiểu bình thường (int, string, float, …). Các cấu trúc được khai báo trong class Program và ngoài các hàm. Dễ thấy rằng khai báo một cấu trúc chỉ như một cái “khuôn” (không được cấp phát bộ nhớ). 02. Tạo cấu trúc

Sinh viên thực hiện: Trương Thị Hồng Nhung 102

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

public int X; public int Y; public float p; static}; void Main(string[] args)

Phần 10: Cấu trúc 01. Cấu trúc là gì?

} ĐạihọcKinhtếHuế https://mmotool.vn/

ToaDo ConsoleToaDotoaDo.YtoaDo.XtoaDo;=10;=12;td=toaDo;.Write(td.X + ", " + td.Y); }

- Giải thích: Các khai báo biến có thể có bất kỳ kiểu gì ngoại trừ kiểu struct đang được khai báo.

Để truy xuất thành phần của cấu trúc, chúng ta sử dụng toán tử chấm (.). Cú pháp: tên_cấu_trúc. tên_thành_phần; Mã nguồn: class Program {

04. Gán

- Mã nguồn: class Program {

public struct ToaDo { public int X; public int Y; static}; void Main(string[] args) {

Sử dụng toán tử gán “=” để gán các biến có cùng kiểu cấu trúc.

Giải thích: Khi khai báo biến, các biến (thành phần) không được khởi gán giá trị và chúng chỉ có thể được truy xuất một khi đã được gán dữ liệu.

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

03. Truy xuất cấu trúc

public struct ToaDo { public int X; public int Y; static}; void Main(string[] args) { ToaDo toaDo.YtoaDo.XtoaDo;=10;=12; } }

Sinh viên thực hiện: Trương Thị Hồng Nhung 103

public int X; public int Y; static}; void Main(string[] args)

- Kết quả: 10, 12

Sinh viên thực hiện: Trương Thị Hồng Nhung 104

public struct ToaDo {

Đôi khi chúng ta chỉ muốn gán (sao chép) một số thành phần nhất định của struct.- Mã nguồn: class Program {

Giải thích: Chương trình vừa gán thông tin của toaDo cho td bằng câu lệnh gán ToaDo td=toaDo; 05. Gán từng thành phần

{ ToaDo Consoletd.XToaDotoaDo.YtoaDo.XtoaDo;=10;=12;td;=toaDo.X;.Write(td.X); } Kết quả: 10 Giải thích: Chương trình vừa gán thông tin của td.X cho toaDo.X bằng câu lệnh td.X = toaDo.X; 06. Mảng kiểu struct Bây giờ chúng ta tìm hiểu cách biểu diễn mảng cấu trúc Ngày tháng gồm 3 phần tử. Hãy in ra màn hình 3 bộ giá trị sau: 1/1/2016 2/2/2016 3/3/2016 Mã nguồn: class Program { struct NgayThang {

}

public int ngay; public int thang; public int nam; };

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

ĐạihọcKinhtếHuế https://mmotool.vn/

static void Main(string[] args)

for (int i = 0; i < 3; i++) Console.Write(nt[i].ngay + "/ " + nt[i].thang + "/ " + nt[i].nam + " "); }

ứa

ểu

Cấu trúc có thể chứa cấu trúc. Điều này đúng không?

nó. 08. Trắc nghiệm vui

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

07. Cấu trúc lồng nhau

1.

i diện bằ

ột

ấu

void Main(string[] args) }{ } Giải thích: Tương tự lệnh điều kiện if else hay vòng lặp for, … cấu trúc có thể chứa cấu trúc, hay còn gọi là cấu trúc lồng nhau. Lưu ý, có ch a c trúc nhưng không thể ch chính Câu Phát biểu nào sau đây sai về ki cấu trúc (struct) trong C#? a. struct cho phép lưu trữ thông tin của nhiều kiểu dữ liệu khác nhau vào một nơi, ch đạ ng m tên duy

NgayThang[] nt = new NgayThang[3]; nt[0].ngay = 1; nt[0].thang = 1; nt[0].nam = 2016; nt[1].ngay = 2;

}

Sinh viên thực hiện: Trương Thị Hồng Nhung 105

{

Kết quả: 1/1/2016 2/2/2016 3/3/2016

thể

cấu trúc

Mã nguồn: class Program { struct NgayThang { public int ngay; public int thang; struct}; Lich { public NgayThang ngay; static};

nhất. ĐạihọcKinhtếHuế https://mmotool.vn/

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

d. Cả 3 đáp án trên đều sai. Đáp án đúng: d. Giải thích: Khi khai báo struct, bộ nhớ sẽ không được cấp phát cho khai báo struct mà chỉ cho khai báo biến. Các thành phần không được khởi gán giá trị khi khai báo biến và chúng chỉ có thể được truy xuất khi đã gán dữ liệu.

ĐạihọcKinhtếHuế https://mmotool.vn/

Đáp án đúng: a, d.

Câu 4. Toán tử nào được dùng để truy xuất thành phần của struct?

Câu 3. Phát biểu nào sau đây là sai về struct trong C#?

a. struct không được cấp phát bộ nhớ khi khai báo.

a. Dấu hai chấm (:)

b. Khi khai báo biến, các thành phần không được khởi gán giá trị

Câu 2. Phát biểu nào sau đây đúng về struct trong C#?

b. struct cho phép lưu trữ thông tin của một kiểu dữ liệu duy nhất vào nhiều nơi khác nhau.

d. Kiểu struct có bản chất giống như các kiểu dữ liệu thông thường như int, char, float, … Đáp án đúng: b. Giải thích: struct là kiểu dữ liệu do người dùng định nghĩa, cho phép lưu trữ thông tin của nhiều kiểu dữ liệu khác nhau vào một nơi. Về bản chất, struct cũng giống như các kiểu dữ liệu thông thường khác.

Sinh viên thực hiện: Trương Thị Hồng Nhung 106

d. Các khai báo biến (variable declarations) có thể có bất kỳ kiểu gì ngoại trừ kiểu struct đang được khai báo.

a. Bộ nhớ không được cấp phát cho khai báo struct, mà chỉ cấp phát cho các khai báo biến.

c. Các thành phần chỉ có thể được truy xuất một khi đã được gán dữ liệu.

b. struct luôn được cấp phát bộ nhớ khi khai báo.

c. struct là kiểu dữ liệu do người dùng định nghĩa.

c. Các struct được khai báo ngoài class Program

b. Dấu chấm (.)

d. struct D { int x; };

d. Dấu chấm than (!)

 enumeration_list: sử dụng dấu phẩy để phân cách các định danh.

enum Weekday { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };

a. struct A { };

c. Dấu chấm hỏi (?)

o Có thể xác định giá trị cho các định danh này. Mã nguồn: class Program {

enum Month { January = 1, February = 2, March = 3, April = 4, May = 5, June = 6, July = 7, August = 8, September = 9, October = 10, November = 11, December = 12 }; static void Main(string[] args)

01. Enum là gì?

c. struct C [ ] { };

Đáp án đúng: b

Sinh viên thực hiện: Trương Thị Hồng Nhung 107

 base type: là kiểu dữ liệu của mỗi thành phần (mặc định là int).

}{ } ĐạihọcKinhtếHuế https://mmotool.vn/

Kiểu liệt kê (enumeration) là một tập những hằng số nguyên được đặt tên. Cú pháp khai báo: enum identifier[:base type] { enumeration_list }; Trong đó:

Giải thích: Toán tử dấu chấm được dùng để truy xuất thành phần của struct. Câu 5. struct nào sau đây được khai báo đúng?

o Định danh đầu tiên được gán giá trị 0, sau đó tăng lên một cho những định danh sau.

Đáp án đúng: a, d.

Phần 11: Kiểu liệt kê

b. struct B ( ) { };

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

- Giải thích: Chúng ta có thể tạo ra một kiểu liệt kê với từ khóa enum. Không có vấn đề gì nếu chúng ta tạo ra một lớp (class), một cấu trúc (struct) hoặc một liệt kê (enum) với cú pháp như nhau.

{ Weekday day; Console.Write("Nhập vào thứ dạng số : "); day = (Weekday)Convert.ToInt32(Console.ReadLine());

02. Khai báo enum Mã nguồn: class Program {

Sinh viên thực hiện: Trương Thị Hồng Nhung 108

enum Weekday { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday }; static void Main(string[] args)

03. Nhập liệu số kiểu enum Mã nguồn: class Program {

ĐạihọcKinhtếHuế https://mmotool.vn/

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

{ Weekday day; Console.Write("Nhập vào thứ dạng chuỗi: ");

Giải thích: Định danh đầu tiên được gán giá trị 0. Trong trường hợp này, Sunday = 0, Monday = 1, …

}

}{

} }

Giải thích: enum được khai báo trong lớp class Program và ngoài các hàm. Nói cách khác, enum là thành phần của lớp.

enum Weekday { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday }; static void Main(string[] args)

04. Nhập liệu chuỗi kiểu enum Mã nguồn: class Program {

enum Weekday { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday }; static void Main(string[] args)

Sinh viên thực hiện: Trương Thị Hồng Nhung

05. Lệnh lựa chọn switch

109

Mã nguồn: class Program

switch hoạt động giống câu lệnh if.

Weekday d = Weekday.Sunday; switch (d)

06. Switch case

day = (Weekday)Enum.Parse(typeof(Weekday), Console.ReadLine());}}

- Mã nguồn:

Kết quả: x=0

enum Weekday { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday }; static void Main(string[] args)

{

} } ĐạihọcKinhtếHuế https://mmotool.vn/

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

}

Giải thích: Định danh đầu tiên được gán giá trị 0. Trong trường hợp này, Sunday = 0, Monday = 1, …

case 0: Console.Write("x=0"); break; case 1: Console.Write("x=1"); break; default: Console.Write("x không bằng 0, cũng không bằng 1"); break; }

Giải thích: switch lựa chọn dựa trên giá trị nguyên, chuỗi, ký tự hoặc bool của một biến hay một biểu thức.

static void Main(string[] args) { int x = 0; switch (x) {

{

{

case Weekday.Sunday: Console.Write("Chủ nhật"); break; case Weekday.Monday: Console.Write("Thứ hai"); break; case Weekday.Tuesday: Console.Write("Thứ ba"); break; case Weekday.Wednesday: Console.Write("Thứ tư"); break; case Weekday.Thursday: Console.Write("Thứ năm"); break; case Weekday.Friday: Console.Write("Thứ sáu"); break; default: Console.Write("Thứ bảy"); break;

a. Một biến được khai báo kiểu liệt kê luôn nhận giá trị đầu tiên trong tập các giá trị của kiểu đó.

c. Dấu phẩy (,)

d. Định danh đầu tiên được gán giá trị 1, sau đó tăng lên một cho những định danh sau, có thể xác định giá trị cho các định danh này.

c. Định danh đầu tiên được gán giá trị 0, sau đó tăng lên một cho những định danh sau, có thể xác định giá trị cho các định danh này.

c. Kiểu liệt kê là kỹ thuật cho phép chia nhỏ một chương trình lớn ra nhiều chương trình nhỏ.

b. Một biến được khai báo kiểu liệt kê có thể nhận giá trị bất kỳ trong tập các giá trị của kiểu đó.

a. Dấu gạch chéo (/)

d. Dấu chấm phẩy (;)

Sinh viên thực hiện: Trương Thị Hồng Nhung 110

b. Kiểu liệt kê là một tập hợp liên tục có thứ tự các thành phần dữ liệu cùng kiểu được tham chiếu bằng cùng một tên định danh và một chỉ số

}

d. Cả 3 đáp án trên đều đúng. Đáp án đúng: a. Giải thích: Kiểu liệt kê là một tập những hằng số nguyên được đặt tên.

Câu 1 Phát biểu nào sau đây đúng về kiểu liệt kê (enum) trong C#?

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

Kết quả: Chủ nhật

a. Kiểu liệt kê là một tập hợp các hằng số nguyên được đặt tên.

Câu 3. Phát biểu nào sau đây là đúng về enum trong C#?

ĐạihọcKinhtếHuế https://mmotool.vn/

Câu 2. Sử dụng dấu gì để phân cách các định danh của enum trong C#?

- Đáp án đúng: c.

Đáp án đúng: b, c.

07. Trắc nghiệm vui

b. Dấu chấm (.)

Giải thích: Sử dụng dấu phẩy để phân cách các định danh trong kiểu enum.

a. switch lựa chọn dựa trên giá trị nguyên, chuỗi, ký tự hoặc bool của một biến hay một biểu thức.

Câu 4. Khai báo nào sau đây sai?

- Giải thích: Một biến kiểu enum có thể nhận một giá trị bất kỳ trong tập hợp các giá trị của kiểu đó. Định danh đầu tiên được gán giá trị 0 và tăng dần lên 1 đơn vị cho những định danh tiếp theo. Giá trị của các định danh có thể thay đổi được.

c. Mỗi giá trị được gọi là một case trường hợp và biến được chuyển tới được kiểm tra cho mỗi trường hơp switch.

111

d. enum D { x = 5, y = 10, z = 11 }; Đáp án đúng: c Giải thích: Hãy nhớ rằng các định danh trong enum được phân cách nhau bởi dấu phẩy (,).

d. Cả 3 đáp án trên đều sai. Đáp án đúng: a, b, c. Giải thích: switch lựa chọn dựa trên giá trị nguyên, chuỗi, ký tự hoặc bool của một biến hay một biểu thức.Mỗi giá trị được gọi là một case trường hợp và biến được chuyển tới được kiểm tra cho mỗi trường hợp switch.

a. enum A { };

Sinh viên thực hiện: Trương Thị Hồng Nhung

Câu 5. Phát biểu nào sau đây đúng về lệnh lựa chọn switch trong C#?

ĐạihọcKinhtếHuế https://mmotool.vn/

b. enum B { mot, hai, ba };

c. enum C { mot = 1; hai = 2; ba = 3 };

Khóa luận tốt nghiệp GVHD: ThS. Lê Viết Mẫn

b. Một lệnh switch trong C# cho một biến được kiểm tra một cách bình đẳng trong danh sách các giá trị.

Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.