ĐẠ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
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è đã
113 trang |
Chia sẻ: huong20 | Ngày: 08/01/2022 | Lượt xem: 467 | Lượt tải: 0
Tóm tắt tài liệu Khóa luậ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, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
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
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
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
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
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 4
DANH MỤC CÁC HÌNH VẼ
Hình 2.1: Giao diện tương tác với người dùng .............................................................. 19
Hình 2.2: Giao diện bố cục nội dung bài giảng ............................................................. 20
Hình 2.3: Giao diện bố cục phần trắc nghiệm ............................................................... 21
Hình 3.1: Sơ đồ chức năng kinh doanh ......................................................................... 40
Hình 3.2: Sơ đồ ngữ cảnh .............................................................................................. 41
Hình 3.3: Sơ đồ luồng dữ liệu mức 0 ............................................................................ 42
Hình 3.4: Sơ đồ phân rã chức năng 1.0 ......................................................................... 42
Hình 3.5: Sơ đồ phân rã chức năng 2.0 ......................................................................... 43
Hình 3.6: Công cụ ASP.NET SQL Server Registration Tool ....................................... 45
Hình 3.7: Mô hình dữ liệu quan hệ (diagram) ............................................................... 46
Hình 3.8: Giao diện trang chủ ....................................................................................... 47
Hình 3.9: Giao diện trang đăng ký ................................................................................ 47
Hình 3.10: Giao diện trang đăng nhập........................................................................... 49
Hình 3.11: Giao diện trang nội dung bài học (1) ........................................................... 51
Hình 3.12: Giao diện trang nội dung bài học (2) ........................................................... 51
Hình 3.13: Giao diện trang trắc nghiệm vui (1) ............................................................ 52
Hình 3.14: Giao diện trang trắc nghiệm vui (2) ............................................................ 52
Hình 3.15: Giao diện trang trắc nghiệm vui (3) ............................................................ 53
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
Sinh viên thực hiện: Trương Thị Hồng Nhung 5
MỞ ĐẦU
1. Lý do chọn đề tài
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.
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.
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.
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.
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.
2. Mục tiêu của đề tài
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ị.
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 6
Mục tiêu cụ thể:
+ 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ử.
+ 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ị.
+ 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.
3. Đối tƣợng và phạm vi nghiên cứu
3.1. Đối tƣợng nghiên cứu
Đố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#.
3.2. Phạm vi 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#.
4. Phƣơng pháp nghiên cứu
- 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.
- 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.
- 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.
- 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ý.
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 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.
5. Nội dung khoá luận
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:
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 tốt nghiệp GVHD: ThS. Lê Viết Mẫn
Sinh viên thực hiện: Trương Thị Hồng Nhung 8
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Ử
1.1. Ngôn ngữ lập trình C#
1.1.1. Khái niệm lập trình
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.1.2. Khái niệm ngôn ngữ lập trình
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. 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.
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.
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.
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
C# được phê chuẩn bởi European Computer Manufacturers Association (ECMA)
và International Standards Organization (ISO).
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.
Ngô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
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 10
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.
- C# là ngôn ngữ hiện đại
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.
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#.
- C# là ngôn ngữ hướng đối tượng
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ữ 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# là ngôn ngữ ít từ khóa
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#:
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 11
Bảng 1.2: Từ khóa của ngôn ngữ C#
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
Nguồn: https://vi.wikipedia.org
- C# là ngôn ngữ hướng module
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ả.
- C# là một ngôn ngữ phổ biến
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
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 12
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ẽ.
Ngoài các đặc điểm trên, C# còn có các đặc điểm tiến bộ sau:
- Không yêu cầu con trỏ.
- Quản lý bộ nhớ tự động thông qua trình gom rác (Garbage Collector).
- 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).
- Cho phép chồng hàm cho các kiểu dữ liệu tự tạo.
- Sử dụng cú pháp tương tự khuôn mẫu trong C++ để lập trình các generic.
- Hỗ trợ hoàn toàn cho các kỹ thuật lập trình dựa trên giao diện.
1.2. Thực trạng việc giảng dạy ngôn ngữ lập trình C#
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.
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#.
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
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 13
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#.
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 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.
- 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.
- 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.
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.
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ử
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 14
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.
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.
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.
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ử 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 15
Đả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.
Cấu trúc chặt chẽ, logic, định hướng tư duy tích cực cho người học.
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.
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.
- Về hình thức:
Đả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.
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.
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.
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:
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.
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.
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 16
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.
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ả:
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.
Đá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.
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.
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ể...ite 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 cao.
- Thiế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.
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 38
Đầu tiên, người dùng truy cập địa chỉ để 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.
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).
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.
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 39
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
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.
- Quản lý người dùng: quản lý thông tin 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:
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 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.
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 Email: Mỗi tài khoản có một email xác nhận khi đăng ký 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 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.
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 Đ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 Đ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.
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 40
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.
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.
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.
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ê.
3.2.1. Sơ đồ chức năng kinh doanh (BFD – Business Function Diagram)
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
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 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).
- 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.
- 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)
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
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
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 đư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.
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.
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ệ).
- Sơ đồ phân rã chức năng 2.0
Hình 3.5: Sơ đồ phân rã chức năng 2.0
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.
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
Sinh viên thực hiện: Trương Thị Hồng Nhung 44
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).
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.
- Lưu trữ thông tin tài khoản người dùng (tên đăng nhập, mật khẩu, ).
- Giúp chứng thực người dùng khi đăng nhập vào website.
- Quản lý mật khẩu, thay đổi 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 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
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. aspnet_Users
10. aspnet_UsersInRoles
11. aspnetWebEvent_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),
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.
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ý
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 48
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:
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.
2. Toàn bộ khung đăng ký tài khoản.
3. Người dùng nhập tên tài khoản vào ô này (không được bỏ trống).
4. Người dùng nhập email vào ô này (không được bỏ trống).
5. Người dùng nhập mật khẩu 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).
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:
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.
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.
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.
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 49
Hình 3.10: Giao diện trang đăng nhập
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.
- Phần kết quả chạy code minh họa.
- Phần giải thích kết quả code minh họa hay nội dung bài học.
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.
2. Cho biết bạn đang ở bài học nào.
3. Phần giới thiệu ngắn gọn nội dung bài học.
4. Phần mã nguồn minh họa cho nội dung bài 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 50
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.
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.
7. Ô nhập dữ liệu (ở mục 5).
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.
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.
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.3.5. Giao diện trang trắc nghiệm vui
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.
- Phần các đáp án có thể có.
- Phần các nút lệnh điều khiển: nút Xem, Tiếp theo.
- 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):
1. Cho biết bạn đang ở bài “Trắc nghiệm vui”.
2. Khung này chứa nội dung câu hỏi.
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.
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ả.
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.
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.
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 đó.
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)
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)
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)
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
Hình 3.16: Giao diện bảng thành tích
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 54
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.
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.
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 55
KẾT LUẬN
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:
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#.
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#.
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.
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.
- 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.
- 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.
- 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.
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.
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 56
TÀI LIỆU THAM KHẢO
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.
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.
4. Th.S Lê Viết Mẫn, Bài giảng Cơ sở lập trình.
5. Andrew Troelsen (2010), Pro C# 2010 and the .NET 4 Platform, fifth adition,
Apress.
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 57
PHỤ LỤC
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
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).
- Mã nguồn:
Program.cs
using System;
namespace Baitap
{
class Program
{
static void Main(string[] args)
{
Console.Write ("Hello World");
Console.ReadKey ();
}
}
}
- 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
- 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ết Mẫn
Sinh viên thực hiện: Trương Thị Hồng Nhung 58
}
}
- 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 System;
namespace Baitap
{
class Program
{
static void Main(string[] args)
{
Console.Write ("Hello World");
Console.ReadKey ();
}
}
}
- 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.
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 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.
05. Lớp (class)
- 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 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.
06. Hàm Main
- Mã nguồn:
using System;
namespace Baitap
{
class Program
{
static void Main(string[] args)
{
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
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 60
- Mã nguồn:
using System;
namespace Baitap
{
///
/// tài liệu hướng dẫn cấp lớp
///
class Program
{
///
/// chú thích
///
///
static void Main(string[] args)
{
// chú thích chỉ trên một dòng
/* chú thích trên nhiều dòng */
}
}
}
- 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.
Phần 2: Các khái niệm cơ bản
01. Giới thiệu chƣơng trình
Bài 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 = "C Sharp";
Console.WriteLine("Xin chào" + 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
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 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 „=‟.
- Mã nguồn:
static void Main(string[] args)
{
string st = "Học cách viết code";
st = "abc";
Console.WriteLine(st);
}
- Kết quả: abc
- 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.
03. Mã nguồn
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ụ.
- Mã nguồn:
static void Main(string[] args)
{
string st1 = "Tôi thích học ...";
string st2 = "C#";
Console.WriteLine(st1 + st2);
}
- Kết quả: Tôi thích học C#
- 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ố
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.
- Mã nguồn:
static void Main(string[] args)
{
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 62
string chuoi = "1";
int so = 1;
}
- 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ố
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: 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.
- Mã nguồn:
o static void Main(string[] args)
{
int so1 = 18;
int so2 = 3;
int ketqua = so1 + so2;
Console.WriteLine(ketqua);
}
o static void Main(string[] args)
{
int so1 = 18;
int so2 = 3;
int ketqua = so1 - so2;
Console.WriteLine(ketqua);
}
o static void Main(string[] args)
{
int so1 = 18;
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 63
int so2 = 3;
int ketqua = so1 * so2;
Console.WriteLine(ketqua);
}
o static void Main(string[] args)
{
int so1 = 18;
int so2 = 3;
int ketqua = so1 / so2;
Console.WriteLine(ketqua);
}
- Kết quả:
o 21
o 15
o 54
o 6
- Giả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 (*, /).
07. Các kiểu dữ liệu
Biến được khai báo theo cú pháp: :;
- Mã nguồn:
static void Main(string[] args)
{
string st;
int soNguyen;
double soThuc;
}
- 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.
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 64
c. C# là ngôn ngữ .NET được cung cấp bởi Microsoft.
d. Cả 3 đáp án trên đều đúng.
- Đá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.
Câu 2. Những phát biểu nào sau đây là đúng về biến trong C#?
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.
b. Có thể thay đổi kiểu dữ liệu của biến bất cứ lúc nào.
c. Biến có thể nhớ được nhiều giá trị cùng một lúc.
d. Biến giúp chúng ta lưu trữ thông tin cho sau này.
- Đáp án đúng: a và d.
- 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.
Câu 3. Trong C#, mọi câu lệnh đều kết thúc bằng dấu?
a. Dấu chấm (.)
b. Dấu chấm than (!)
c. Dấu chấm phẩy (;)
d. Dấu ngoặc nhọn (})
- Đá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 (;).
Câu 4. Cách tạo biến nào sau đây là đúng?
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
Sinh viên thực hiện: Trương Thị Hồng Nhung 65
- Đáp án đúng: a và c.
- Giải thích: chúng ta có thể tạo ra biến với cú pháp var ;
Câu 5. Mã (code) là gì? Chọn đáp án đúng.
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.
c. Với mã, chúng ta có thể xây dựng các ứng dụng, trò chơi và website.
d. Mã là từ khác của danh sách các lệnh.
- Đáp án đúng: b,c,d.
- 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 6. Sự khác nhau giữa 4 và “4” là gì?
a. 4 là kiểu integer trong khi ”4” là kiểu string.
b. 4 có thể được sử dụng để tính toán.
c. “4” có một ý nghĩa khác hơn.
d. Không có gì khác nhau.
- Đáp án đúng: a và b.
... 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] + " ");
}
}
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 đúng: c.
Phần 7: Chuỗi (string)
01. Khai báo chuỗi
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 88
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
xuất từ lớp System.String.
- Mã nguồn:
static void Main(string[] args)
{
string st = "Chuỗi ký tự ban đầu";
st = "Chuỗi ký tự mới";
Console.WriteLine(st);
}
- Kết quả: Chuỗi ký tự mới
- 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.
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)
{
string st1 = "Chương trình";
Console.Write(st1.Length);
}
- Kết quả: 12
- 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 [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 = "Chương trình";
Console.Write(st1[0]);
}
- Kết quả: C
- 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
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 89
Để 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.
- Mã nguồn:
static void Main(string[] args)
{
string st1 = "Chương trình ";
string st2 = "C#";
string st3 = st1 + st2;
string st4 = string.Concat(st1, st2);
}
- 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().
05. So sánh bằng
Để 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().
- Mã nguồn:
static void Main(string[] args)
{
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");
}
- Kết quả: Bằng nhau
- 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
Để 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().
- Mã nguồn:
static void Main(string[] args)
{
string st1 = "Chương trình";
string st5 = st1;
string st6 = string.Copy(st1);
Console.Write(st5 + ", " + st6);
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 90
}
- Kết quả: Chương trình, Chương trình
- 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.
07. Chèn
Chúng ta sử dụng hàm Insert() để chèn một chuỗi vào chuỗi đã cho.
- Mã nguồn:
static void Main(string[] args)
{
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);
}
- Kết quả: Chương trình C# cho người mới bắt đầu
- 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.
08. Trắc nghiệm vui
Câu 1. Phát biểu nào sau đây đúng về kiểu chuỗi (string) trong C#?
a. Kiểu chuỗi (string) được dẫn xuất từ lớp System.String
b. Chuỗi chứa chuỗi các ký tự, là kiểu tham chiếu
c. Giá trị khởi tạo của kiểu string là null.
d. Cả 3 đáp án trên đều đúng
- Đáp án đúng: d
Câu 2. Hàm Contains() trong lớp System.String có chức năng gì? Chọn đáp án đúng.
a. Là hàm tĩnh so sánh hai chuỗi.
b. Là hàm xác định một chuỗi có chứa một chuỗi con được chỉ định.
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ỗ.
d. Đáp án khác.
- Đáp án đúng: b
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 91
Câu 3. Làm cách nào để thêm một biến a vào chuỗi?
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 '+'.
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.
Câu 5. Làm cách nào để lấy độ dài một chuỗi st?
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));
}
a. cho tới tháng 10?Bao giờ
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 92
b. Bao giờcho tới tháng 10?
c. Bao giờ cho tới tháng 10?
d. Đáp án khác
- Đá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.
Dùng hàm Concat() để cộng chuỗi s3 và s2.
Phần 8: Hàm
01. Write
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:
static void Main(string[] args)
{
string st = "Sử dụng hàm in dữ liệu";
Console.Write(st);
}
- 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
Đô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();
}
- 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
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 93
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?
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.
- Mã nguồn:
static void phepToan(int so)
{
Console.Write(so * 2);
}
static void Main(string[] args)
{
phepToan(4);
}
- Kết quả: 8
- 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ố
Chúng ta có thể sử dụng hàm có nhiều hơn một đối số.
- Mã nguồn:
static void Chao(string s1, string s2)
{
string s = "Chào " + s1 + "! Chào " + s2 + "!";
Console.Write(s);
}
static void Main(string[] args)
{
Chao("Hoa", "Lan");
}
- 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.
05. Kết quả trả về
Đôi khi, hàm cần có kết quả trả về.
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 94
- Mã nguồn:
static int phepToan(int so)
{
int s1 = so * 2;
return s1;
}
static void Main(string[] args)
{
int s2 = phepToan(20);
Console.Write(s2);
}
- 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.
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ố.
- Mã:
static void cong5(int so)
{
so += 5;
Console.Write(so);
}
static void Main(string[] args)
{
int s = 6;
cong5(s);
Console.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.
07. 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#?
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ụ.
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.
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
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ỏ.
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.
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#?
a. Giảm nhẹ công việc cho người lập trình.
b. Một chương trình càng có nhiều hàm càng tốt.
c. Giảm những đoạn mã nguồn lặp lại.
d. Sử dụng lại mã nguồn trong nhiều chương trình.
- Đá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.
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.
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).
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).
d. Cả 3 đáp án trên đều đúng.
- Đá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#?
a. 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 96
b. Phải được đặt sau các tham số đượ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. 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â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));
}
}
a. 2
b. 5
c. 20
d. 10
- Đáp án đúng: d.
Phần 9: Vòng lặp
01. While
Vòng lặp là một cấu trúc hoạt động cùng nguyên lý với điều kiện (if else). Một
vòng lặp cho phép thực hiện các dòng lệnh (hay các instruction) nhiều lần. Vòng lặp
while được thực hiện khi biểu thức điều kiện được đưa ra là đúng (true).
- Mã nguồn:
static void Main(string[] args)
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 97
{
int dem = 0;
while (dem < 2) Console.Write(dem);
}
- Kết quả: 2
- 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 hiện 1 lần.
condition: là biểu thức kiểm tra điều kiện lặp lại.
statement_2: được dùng để cập nhật/ thay đổi giá trị của condition.
statement_3: là lệnh đơn hoặc lệnh kép mà ta muốn được thực hiện nhiều lần.
- 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 98
static void Main(string[] args)
{
for (int i = 1; i <= 3; i++)
Console.Write(i);
}
- Kết quả: 123
- 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
- Mã nguồn:
static void Main(string[] args)
{
for (int i = 5; i > 0; i--)
Console.Write(i);
}
- Kết quả: 54321
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 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:
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 99
static void Main(string[] args)
{
int a = 1;
int b = 1;
Console.Write(a + "–" + b);
for (int i = 1; i < 5; i++)
{
int c = a + b;
a = b;
b = c;
Console.Write("–" + c);
}
}
- Kết quả: 1 – 1 – 2 – 3 – 5 – 8
07. Vòng lặp lồng nhau
- Mã nguồn:
static void Main(string[] args)
{
for (int x = 1; x < 5; x++)
{
Console.Write(x + ": ");
int y = x;
while (y <= 4)
{
Console.Write(y);
y++;
}
Console.Write("; ");
}
}
- Kết quả: 1: 1234; 2: 234; 3: 34; 4: 4;
- Giả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.
08. Biến điều khiển
- Mã nguồn:
static void Main(string[] args)
{
int dem = 1;
while (dem <= 3)
{
Console.Write(dem);
dem++;
}
Console.Write(" & ");
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
for (int i = 3; i >= 1; i--)
{
Console.Write(i);
}
}
- Kết quả: 123 & 321
- 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.
09. Trắc nghiệm vui
Câu 1. Phát biểu nào sau đây là đúng về vòng lặp trong C#?
a. Các vòng lặp khác nhau dùng cho những trường hợp khác nhau.
b. Vòng lặp chạy mãi mãi, vô hạn.
c. Vòng lặp giúp tiết kiệm thời gian và công sức.
d. Vòng lặp tự động hóa các công việc lặp đi lặp lại.
- Đá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âu 2. Phát biểu nào sau đây đúng về vòng lặp while trong C#?
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).
c. While kiểm tra điều kiện trước khi thực hiện 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.
- Đáp án đúng: a, 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.
Câu 3. Phát biểu nào sau đây là đúng về vòng lặp do while trong 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.
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 101
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.
c. Luôn luôn là vòng lặp vô hạn.
d. Cả 3 đáp án trên đều đúng.
- Đáp án đúng: a, b.
- 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.
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?
a. Nếu không đảm bảo điều đó, các vòng lặp sẽ chạy vô hạn.
b. Điều này không quan trọng.
c. Nếu không đảm bảo điều đó, mã nguồn sẽ không được biên dịch.
d. Nó quyết định khi nào thoát khỏi vòng lặp.
- Đáp án đúng: a, d.
- 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.
Câu 5. Chương trình sau in ra kết quả gì?
static void Main(string[] args)
{
int x = 0;
while (x < 10)
{
Console.Write(x + " ");
x++;
}
}
a. 0
b. 0 1 2 3 4 5 6 7 8 9 10
c. 1 2 3 4 5 6 7 8 9 10
d. 0 1 2 3 4 5 6 7 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.
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 102
Phần 10: Cấu trúc
01. Cấu trúc là gì?
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)
{
}
}
- 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
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
{
public struct ToaDo
{
public int X;
public int Y;
public float p;
};
static void Main(string[] args)
{
}
}
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 103
- 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.
03. Truy xuất cấu trúc
Để 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
{
public struct ToaDo
{
public int X;
public int Y;
};
static void Main(string[] args)
{
ToaDo toaDo;
toaDo.X = 10;
toaDo.Y = 12;
}
}
- 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.
04. Gán
Sử dụng toán tử gán “=” để gán các biến có cùng kiểu cấu trúc.
- Mã nguồn:
class Program
{
public struct ToaDo
{
public int X;
public int Y;
};
static void Main(string[] args)
{
ToaDo toaDo;
toaDo.X = 10;
toaDo.Y = 12;
ToaDo td = toaDo;
Console.Write(td.X + ", " + td.Y);
}
}
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 104
- Kết quả: 10, 12
- 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
Đô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
{
public struct ToaDo
{
public int X;
public int Y;
};
static void Main(string[] args)
{
ToaDo toaDo;
toaDo.X = 10;
toaDo.Y = 12;
ToaDo td;
td.X = toaDo.X;
Console.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
Sinh viên thực hiện: Trương Thị Hồng Nhung 105
static void Main(string[] args)
{
NgayThang[] nt = new NgayThang[3];
nt[0].ngay = 1;
nt[0].thang = 1;
nt[0].nam = 2016;
nt[1].ngay = 2;
for (int i = 0; i < 3; i++)
Console.Write(nt[i].ngay + "/ " + nt[i].thang + "/ " +
nt[i].nam + " – ");
}
}
- Kết quả: 1/1/2016 – 2/2/2016 – 3/3/2016
07. Cấu trúc lồng nhau
Cấu trúc có thể chứa cấu trúc. Điều này đúng không?
- Mã nguồn:
class Program
{
struct NgayThang
{
public int ngay;
public int thang;
};
struct Lich
{
public NgayThang ngay;
};
static 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ấu trúc có thể chứa cấu trúc
nhưng không thể chứa chính nó.
08. Trắc nghiệm vui
Câu 1. Phát biểu nào sau đây sai về kiểu 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ỉ đại diện bằng một tên duy nhất.
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 106
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.
c. struct là kiểu dữ liệu do người dùng định nghĩa.
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.
Câu 2. Phát biểu nào sau đây đúng về struct trong C#?
a. struct không được cấp phát bộ nhớ khi khai báo.
b. struct luôn được cấp phát bộ nhớ khi khai báo.
c. Các struct được khai báo ngoài class Program.
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.
- Đáp án đúng: a, d.
Câu 3. Phát biểu nào sau đây là sai về struct trong C#?
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.
b. Khi khai báo biến, các thành phần không được khởi gán giá trị.
c. Các thành phần chỉ có thể được truy xuất một khi đã được gán dữ liệu.
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.
Câu 4. Toán tử nào được dùng để truy xuất thành phần của struct?
a. Dấu hai chấ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 107
b. Dấu chấm (.)
c. Dấu chấm hỏi (?)
d. Dấu chấm than (!)
- Đáp án đúng: b
- 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?
a. struct A { };
b. struct B ( ) { };
c. struct C [ ] { };
d. struct D { int x; };
- Đáp án đúng: a, d.
Phần 11: Kiểu liệt kê
01. Enum là gì?
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 đó:
base-type: là kiểu dữ liệu của mỗi thành phần (mặc định là int).
enumeration_list: sử dụng dấu phẩy để phân cách các định danh.
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.
o Có thể xác định giá trị cho các định danh này.
- Mã nguồn:
class Program
{
enum Weekday { Sunday, Monday, Tuesday, Wednesday, Thursday,
Friday, Saturday };
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
Sinh viên thực hiện: Trương Thị Hồng Nhung 108
- 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.
02. Khai báo enum
- Mã nguồn:
class Program
{
enum Weekday { Sunday, Monday, Tuesday, Wednesday, Thursday,
Friday, Saturday };
static void Main(string[] args)
{
}
}
- 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.
03. Nhập liệu số kiểu enum
- Mã nguồn:
class Program
{
enum Weekday { Sunday, Monday, Tuesday, Wednesday, Thursday,
Friday, Saturday };
static void Main(string[] args)
{
Weekday day;
Console.Write("Nhập vào thứ dạng số : ");
day = (Weekday)Convert.ToInt32(Console.ReadLine());
}
}
- 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,
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)
{
Weekday day;
Console.Write("Nhập vào thứ dạng chuỗi: ");
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 109
day = (Weekday)Enum.Parse(typeof(Weekday),
Console.ReadLine());
}
}
- 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,
05. Lệnh lựa chọn switch
switch hoạt động giống câu lệnh if.
- Mã nguồn:
static void Main(string[] args)
{
int x = 0;
switch (x)
{
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;
}
}
- Kết quả: x=0
- 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.
06. Switch case
- Mã nguồn:
class Program
{
enum Weekday { Sunday, Monday, Tuesday, Wednesday, Thursday,
Friday, Saturday };
static void Main(string[] args)
{
Weekday d = Weekday.Sunday;
switch (d)
{
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;
}
}
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 110
}
- Kết quả: Chủ nhật
07. Trắc nghiệm vui
Câu 1. Phát biểu nào sau đây đúng về kiểu liệt kê (enum) trong C#?
a. Kiểu liệt kê là một tập hợp các hằng số nguyên được đặt tên.
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ố.
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ỏ.
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 2. Sử dụng dấu gì để phân cách các định danh của enum trong C#?
a. Dấu gạch chéo (/)
b. Dấu chấm (.)
c. Dấu phẩy (,)
d. Dấu chấm phẩy (;)
- Đáp án đúng: c.
- Giải thích: Sử dụng dấu phẩy để phân cách các định danh trong kiểu enum.
Câu 3. Phát biểu nào sau đây là đúng về enum trong C#?
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 đó.
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 đó.
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.
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.
- Đáp án đúng: b, 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 111
- 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âu 4. Khai báo nào sau đây sai?
a. enum A { };
b. enum B { mot, hai, ba };
c. enum C { mot = 1; hai = 2; ba = 3 };
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 (,).
Câu 5. Phát biểu nào sau đây đúng về lệnh lựa chọn switch trong C#?
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.
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ị.
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.
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.
Các file đính kèm theo tài liệu này:
- khoa_luan_xay_dung_website_day_ngon_ngu_lap_trinh_c_danh_cho.pdf