Tài liệu giảng dạy Th p T nh 1 Trang 4 1.1| GIỚI THIỆU Chương nh – Programs / Applications: là tập các chỉ thị instructions được sắp xếp theo một trật tự định trước nhằm hướng dẫn máy
Trang 1ỦY BAN NHÂN DÂN TP HỒ CHÍ MINH
TRƯỜNG CAO ĐẲNG CÔNG NGHỆ THỦ ĐỨC
KHOA CÔNG NGHỆ THÔNG TIN
GIÁO TRÌNH HỌC PHẦN: KỸ THUẬT LẬP TRÌNH 1 NGÀNH: CÔNG NGHỆ THÔNG TIN
TRÌNH ĐỘ: CAO ĐẲNG
Ban hành kèm theo Quyết định số: /QĐ-CNTĐ-CN ngày tháng năm
của Hiệu trưởng Trường Cao Đẳng Công Nghệ Thủ Đức
TP Hồ Chí Minh, năm 2020
Trang 3LỜI TÁC GIẢ
Quyển giáo trình này được biên soạn dựa theo đề cương môn học
“Kỹ thuật lập trình 1” của Khoa Công nghệ thông tin Trường
Cao đẳng Công nghệ Thủ Đức Giáo trình biên soạn sẽ không tránh khỏi những sai sót về nội dung lẫn hình thức, nhóm biên soạn rất mong nhận được sự g p chân thành từ qu thầy cô và các em sinh viên để giáo trình hoàn
thiện hơn
Trang 4Tài liệu giảng dạy Th p T nh 1 Trang 1
MỤC LỤC
CONTENTS
Chương 1 TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH 3
1.1| Giới thiệu 4
1.2| Lịch sử phát triển Ngôn ngữ lập trình 4
1.3| Các dạng Ngôn ngữ lập trình 6
1.4| Các giai đoạn phát triển CHƯƠNG TRÌNH 8
1.5| Cấu trúc một chương trình C# cơ bản 9
1.6| ngôn ngữ C# 10
1.7| Visual Studio IDE 10
1.8| Quá trình biên dịch C# 16
1.9| Giải thuật và đặc tả giải thuật 18
1.10| Bài tập 21
Chương 2 CÁC KIỂU DỮ LIỆU, HẰNG, BIẾN 23
2.1| Tập ký tự 24
2.2| Từ khóa 24
2.3| Tên và qui ước đặt tên 24
2.4| Các kiểu dữ liệu xây dựng sẵn 25
2.5| Biến 27
2.6| Hằng 29
2.7| Bài tập 31
Chương 3 TOÁN TỬ VÀ BIỂU THỨC 33
3.1| Các loại toán tử 34
3.2| Các toán tử khác 41
3.3| Chuyển đổi các kiểu dữ liệu 42
3.4| Biểu thức 53
3.5| Câu lệnh nhập, xuất 53
3.6| Bài tập 57
Chương 4 CẤU TRÚC CHỌN 59
4.1| Khái niệm 60
4.2| Cấu trúc điều kiện if 60
4.3| Cấu trúc lựa chọn switch … case… 66
4.4| Bài tập 71
Chương 5 CẤU TRÚC LẶP 74
5.1| Khái niệm 75
5.2| Cấu trúc for 75
5.3| Cấu trúc while 77
5.4| Cấu trúc do…while 79
5.5| Cấu trúc foreach 80
5.6| Cấu trúc lặ l ng nhau 81
5.7| Câu lệnh break, continue 82
5.8| Bài tập 85
Chương 6 HÀM 88
6.1| Khái niệm 89
6.2| Cú pháp khai báo: 89
6.3| Truyền tham số 90
6.4| Kiểu trả về của hàm 92
Trang 5Tài liệu giảng dạy Th p T nh 1 Trang 2
6.5| Cách gọi hàm 93
6.6| Bài tập 94
Chương 7 MẢNG MỘT CHIỀU 96
7.1| Khái niệm 97
7.2| Cú pháp khai báo 97
7.3| Truy xuất trên mảng 98
7.4| Sử dụng mảng một chiều làm tham số cho hàm: 99
7.5| Bài tập 101
Trang 6Tài liệu giảng dạy Th p T nh 1 Trang 3
NGỮ LẬP TRÌNH
- Chương này nhằm giới thiệu cho sinh viên các khái
niệm cơ bản về lập trình, về các dạng ngôn ngữ lập trình, các phương pháp lập trình hiện có Ngoài ra cũng cung cấp cho sinh viên cách thức để phân tích một bài toán và mô tả giải thuật cho một bài toán
Trang 7Tài liệu giảng dạy Th p T nh 1 Trang 4
1.1| GIỚI THIỆU
Chương nh – Programs / Applications: là tập các chỉ thị (instructions) được
sắp xếp theo một trật tự định trước nhằm hướng dẫn máy tính thực hiện các thao tác, hành động cần thiết để đáp ứng một mục tiêu đã định trước của con người như truy xuất dữ liệu, tìm kiếm, giải bài toán, Các chỉ thị này có thể được viết bằng nhiều ngôn ngữ lập trình khác nhau
Ngôn ngữ l p trình - Programming languages: là tập từ ngữ và ký hiệu cho phép
lập trình viên (programmers) hoặc người dùng có thể giao tiếp với máy tính Cũng giống như ngôn ngữ tự nhiên ngôn ngữ lập trình cũng có các luật được gọi là cú pháp (syntax) để đảm bảo ngôn ngữ đó được vận dụng một cách chính xác Một số ngôn ngữ lập trình thông dụng như C++, Visual Basic, C#, Java, Python
L p trình viên – Programmers: là người có thể thiết kế, xây dựng và bảo trì các
chương máy tính hoặc phần mềm Bằng cách thao tác các đoạn mã hoặc các ngôn ngữ trên các công cụ lập trình
Công cụ l p trình - Programming tools / Developer tools: công cụ lập trình hay
công cụ phát triển phần mềm là một chương trình máy tính mà các nhà phát triển phần mềm sử dụng để tạo (create), gỡ rối (debug), duy trì (maintain), hoặc thực hiện các hỗ trợ khác cho các chương trình hoặc các ứng dụng
1.2| LỊCH SỬ PHÁT TRIỂN NGÔN NGỮ LẬP TRÌNH
Ngôn ngữ l p trình (programming language) là một tập con của ngôn ngữ máy
tính Đây là một dạng ngôn ngữ được thiết kế và chuẩn hóa (đối lập với ngôn ngữ
tự nhiên) để truyền các chỉ thị cho máy tính (hoặc máy khác có bộ xử lí) Ngôn ngữ lập trình có thể được dùng để tạo ra các chương trình nhằm mục đích điều khiển máy tính hoặc mô tả các thuật toán để người khác đọc hiểu
Các lĩnh vực ứng dụng của ngôn ngữ lập trình:
- Nghiên cứu khoa học: Fortran, C, Matlab, …
- Lập trình hệ thống: C, C++, …
- Tính toán trong kinh doanh: Java, C#, …
- Trí tuệ nhântạo: LISP, …
- Xử lý văn bản: Perl, Python, …
- Mục đích đặc biệt cho NNLT: make, sh-shell, …
Trang 8Tài liệu giảng dạy Th p T nh 1 Trang 5
Sơ lược lịch sử phát triển ngôn ngữ lập trình
Autocode (viết năm 1952 do Alick Glennie ): Đây là tập hợp một loạt những hệ thống ngôn ngữ lập trình đơn giản được phát triển vào những năm 50 cho hệ thống máy tính kỹ thuật số tại đại học Manchester, Cambridge và London và được coi là ngôn ngữ lập trình chính thức đầu tiên
Pascal (viết năm 1970 do Niklaus Wirth): đây là ngôn ngữ được đặt theo tên nhà toán học người Pháp Blaise Pascal Ngôn ngữ này cho phép người dùng có thể tự xác định dạng dữ liệu của mình theo kiểu danh sách, sơ đồ cây hay đồ thị
C (viết năm 1972 do Brian W.Kernighan và Dennis Ritchie): Đây là một trong những ngôn ngữ lập trình được sử dụng nhiều nhất mọi thời đại C được thế kế để lập trình theo cấu trúc C là nguồn gốc của nhiều ngôn ngữ dẫn xuất bao gồm C#, Java, JavaScript, Perl, PHP và Python Ngôn ngữ C được dùng phổ biến trong lập trình nền tảng (platform), lập trình hệ thống, lập trình UNIX, phát triển ứng dụng trò chơi điện tử Các ứng dụng www trên hệ thống máy chủ (server) và máy khách (client) đời đầu cũng được viết bằng ngôn ngữ C
C++ (viết năm1980 do Bjarne Stroustrup): C++ là một trong ít ngôn ngữ mà có thể đảm nhiệm được rất nhiều vai trò trong lập trình: từ lập trình ứng dụng, lập trình nhúng, các ứng dụng client/server, trò chơi đồ họa cho đến việc lập trình cho các hệ thống lớn và rất lớn C++ cho phép lập trình viên sử dụng những kĩ thuật cao cấp như lập trình hướng đối tượng, template … mà vẫn có thể linh động cho phép can thiệp vào sâu vào bộ nhớ bên dưới Một số ứng dụng nổi tiếng được viết bằng C++ như Adobe, Google, Chrome, Mozilla, Firefox, Internet Explorer, MySQL, Apple
OS X, Symbian OS, Winamp Media Player, … Chính vì vậy, mặc dù ngôn ngữ C++ có "tuổi" khá cao nhưng nó vẫn đóng một vai trò cực kì quan trọng trong thế giới máy tính.Perl (1987): thuộc nhóm ngôn ngữ lập trình bậc cao Ngôn ngữ này vay mượn không ít tính năng từ những ngôn ngữ khác như C, AWK và sad Ban đầu nó thô sơ đến mức hướng dẫn sử dụng chỉ có 1 trang Thế nhưng đến nay nó đã
có thêm nhiều phiên bản và nhiều thay đổi so với ban đầu
Python (viết năm 1991 do Guido van Rossum): ngôn ngữ này được thiết kế cực kỳ đơn giản, thậm chí là có khả năng đọc được như bảng chữ cái Triết lý của những nhà phát triển ngôn ngữ nay đó là làm cho mã nguồn ngắn hơn, không dài và phức tạp như C++ hay Java
Java (viết năm 1995 do James Gosling và bạn đồng nghiệp ở Sun Microsystems): ngôn ngữ này được phát triển với mục tiêu càng ít phụ thuộc vào khả năng vận
Trang 9Tài liệu giảng dạy Th p T nh 1 Trang 6
hành thực tế của thiết bị càng tốt Nói cách khác là nó chỉ cần viết một lần trên một máy, và chạy được trên mọi máy khác Chính vì vậy mà đến nay, từ máy tính để bàn đến điện thoại di động Symbian S40 ta đều có thể gặp các chương trình Java PHP (viết năm 1995 do Rasmus Lerdorf): đây là ngôn ngữ sử dụng thực thi trên máy chủ và dùng cho việc phát triển web Nó thực hiện các yêu cầu của người dùng sau đó trả kết quả lên trình duyệt qua việc kết hợp với HTML tạo ra giao diện các trang web hiện nay Khi mới xuất hiện, PHP không được định nghĩa là một ngôn ngữ lập trình, tuy nhiên qua thời gian, ngôn ngữ này đã có một lượng người dùng đông đảo và vẫn là sự lựa chọn của nhiều nhà phát triển web ngày nay
C# (viết năm 2001 do Microsoft chủ yếu bởi Anders Hejlsberg): Visual Basic NET (2001): Đây là ngôn ngữ được phát triển trên nền Visual Basic và thực hiện trên nền tảng NET framwork Đây là lý do vì sao khi cài đặt một số chương trình sẽ có yêu cầu cài đặt thêm NET framwork
Swift (viết năm 2014 do Apple): Đây là ngôn ngữ được phát triển cho những nhà phát triển iOS và OSX (hệ điều hành Mac) Ngôn ngữ “trẻ nhất” này được hãng giới thiệu tại sự kiện WWDC 2014 Ngôn ngữ này có ưu điểm là mã nguồn rất ngắn và dễ đọc Sau khi viết, các chương trình có thể được kiểm tra rất nhanh và các bài kiểm tra cũng sẽ ở cấp độ cao hơn Ngoài ra đồ hoạ các chương trình dùng ngôn ngữ này cũng sẽ đẹp hơn nhưng yêu cầu phần cứng sẽ thấp hơn
có thể được thực hiện ngay không cần qua bước trung gian nào
Hợp ngữ - Assembly language: Các câu lệnh bao gồm hai phần: phần mã lệnh (viết tựa tiếng Anh) chỉ phép toán cần thực hiện và phần tên biến chỉ địa chỉ chứa toán hạng của phép toán đó Ðể máy thực hiện được một chương trình viết bằng hợp ngữ thì chương trình đó phải được dịch sang ngôn ngữ máy Công cụ thực hiện việc dịch đó được gọi là Assembler
Ngôn ngữ cấp cao – High level language: Các lệnh được mã hóa bằng một ngôn ngữ gần với ngôn ngữ Tiếng Anh Chương trình viết trên ngôn ngữ bậc cao phải
Trang 10Tài liệu giảng dạy Th p T nh 1 Trang 7
được chuyển đổi thành chương trình trên ngôn ngữ máy bằng một chương trình dịch mới có thể thực hiện được
THEO PHƯƠNG PHÁP LẬP TRÌNH (PROGRAMMING PARADIGMS)
1.3.2|
L p trình tuyến tính: Đặc trưng của Lập trình tuyến tính là tư duy theo lối tuần tự
Chỉ có duy nhất một luồng công việc và các công việc được thực hiện tuần tự trong luồng đó Chương trình sẽ được thực hiện theo thứ tự từ đầu đến cuối, lệnh này kế tiếp lệnh kia cho đến khi kết thúc chương trình Nhược điểm của lập trình tuyến tính là với các ứng dụng phức tạp, người ta không thể dùng lập trình tuyến tính để giải quyết Nên phương pháp Lập trình tuyến tính ngày nay chỉ được sử dụng trong phạm vi các module nhỏ nhất của các phương pháp Lập trình khác
L p nh hướng cấu trúc: Trong Lập trình hướng cấu trúc, chương trình chính sẽ
được chia nhỏ thành các chương trình con thực hiện một công việc xác định Đặc trưng cơ bản nhất của Lập trình hướng cấu trúc thể hiện ở mối quan hệ:
Chương trình = Cấu trúc dữ liệu + Giải thuật
Cấu trúc dữ liệu là cách tổ chức dữ liệu cho việc xử lý bởi một hay nhiều chương
trình nào đó
Giải thuật là một quy trình để thực hiện một công việc xác định
Các ngôn ngữ lập trình cấu trúc cung cấp một số cấu trúc lệnh điều khiển chương trình Nên có ưu điểm là chương trình dể hiểu, dể theo dõi, tư duy giải thuật rõ ràng Nhược điểm là lập trình cấu trúc không hỗ trợ tốt cho việc sử dụng lại mã nguồn Bởi giải thuật luôn phụ thuộc chặt chẽ vào cấu trúc dữ liệu Dẫn đến khi thay đổi cấu trúc dữ liệu phải thay đổi cả giải thuật của chương trình.Với những dự
án phần mềm lớn, Lập trình cấu trúc tỏ ra không hiệu quả trong việc giải quyết các mối quan hệ vĩ mô giữa các Module
L p nh hướng đối ượng : Trong lập trình hướng đối tượng, người ta quy ước
các thực thể trong chương trình thành các đối tượng Và trừu tượng hóa các đối tượng thành các lớp đối tượng Dữ liệu được tổ chức thành các Lớp đối tượng Từ
đó việc quản lý bảo mật của dữ liệu được đảm bảo Hai đặc trưng là tính đóng gói
dữ liệu và tính sử dụng lại mã nguồn Nên ưu điểm của lập trình hướng đối tượng là bảo mật dữ liệu chương trình, giảm sự phụ thuộc của Cấu trúc dữ liệu vào Thuật toán, có thể sử dụng lại mã nguồn
L p trình trực quan: Lập trình trực quan là sự kết hợp giữa đồ họa máy tính ,
ngôn ngữ lập trình và tương tác người máy So với các ngôn ngữ lập trình bằng chế
Trang 11Tài liệu giảng dạy Th p T nh 1 Trang 8
độ văn bản thì lập trình trực quan dễ sử dụng hơn do không phải nhớ các câu lệnh Các ngôn ngữ lập trình tr ực quan thường được sử dụng là: Visual Basic, Visual FoxPro, Visual C, Delphi…
L p trình song song: Lập trình song song là một công việc rất phức tạp so với lập
trình tuần tự thông thường, người phát triển phải thực hiện một quá trình “song song hóa”, biến đổi các chương trình tuần tự thành chương trình song song có khả năng tận dụng tối đa sức mạnh của hệ thống Lập trình song song bao gồm các bước sau: Phân hủy một thuật toán hay các dữ liệu đầu vào; Phân chia nhiệm vụ cho các bộ phận để làm việc trong bộ vi xử lý cùng một lúc; Phối hợp và trao đổi giữa các bộ vi xử lý Các ngôn ngữ lập trình song song thường được sử dụng là : CUDA, Ada
L p trình phân tán: Là tạo ra các ứng dụng hoặc hệ thống mà ứng dụng và hệ
thống đó được sắp đặt ở nhiều máy khác nhau theo một nguyên tắc do người thiết
kế chỉ ra Trong lập trình phân tán, một vấn đề được chia thành nhiều nhiệm vụ, mỗi nhiệm vụ trong đó được giải quyết bằng một máy tính, lập trình thực hiện công việc điều khiển nhiều máy tính cùng lúc
THEO MỤC TIÊU CỦA NGÔN NGỮ
1.3.3|
Có các mục tiêu như đa dụng, nhúng, lập trình web, …
- Đa dụng: như C, perl, python, C++, Java, …
- Nhúng: Như Ch, Ada, …
- Lập trình web: PHP, Java Script, Cold Fusion, …
- Riêng: Như AutoLisp, Mathematica, …
1.4| CÁC GIAI ĐOẠN PHÁT TRIỂN CHƯƠNG TRÌNH
Để phát triển một chương trình phải trải qua nhiều giai đoạn khác nhau:
- Thu thập các yêu cầu, phân tích bài toán;
- Thiết kế thuật toán;
- Chạy thử nghiệm trên giấy;
- Hiện thực (viết code chương trình);
- Thử nghiệm;
- Đánh giá và chỉnh sửa
Trang 12Tài liệu giảng dạy Th p T nh 1 Trang 9
1.5| CẤU TRÚC MỘT CHƯƠNG TRÌNH C# CƠ BẢN
Chương trình C # đầu tiên
- Định nghĩa phương thức Main ();
- Nội dung của phương thức Main ()
Định nghĩa lớp
Trên dòng đầu tiên của chương trình, xác định một lớp có tên HelloCSharp Định
nghĩa đơn giản nhất của một lớp bao gồm từ khóa class, theo sau là tên lớp Trong
ví dụ trên, tên của lớp là HelloCSharp Nội dung của lớp nằm trong cặp dấu ngoặc nhọn: {}
class HelloCSharp
{
}
Định nghĩa phương thức Main ()
Trên dòng thứ ba, định nghĩa phương thức Main (), đây là điểm bắt đầu cho chương trình Mỗi chương trình được viết bằng C # bắt đầu từ phương thức Main () như sau:
staticvoid Main(string[] args)
Nội dung của phương thức Main ()
Nội dung của mọi phương thức được viết trong cặp dấu {} của phương thức Trên dòng tiếp theo của chương trình mẫu, sử dụng System.Console và phương thức WriteLine () để in một thông báo , trong trường hợp này là "Hello C#!"
Trang 13Tài liệu giảng dạy Th p T nh 1 Trang 10
1.6| NGÔN NGỮ C#
C # là một ngôn ngữ lập trình cấp cao, đa mục đích, hướng đối tượng Cú pháp của
nó tương tự như của C và C ++ nhưng nhiều tính năng của các ngôn ngữ đó không được hỗ trợ trong C # để đơn giản hóa ngôn ngữ, giúp việc lập trình dễ dàng hơn Các chương trình C # bao gồm một hoặc một số tập tin có phần mở rộng cs, chứa các định nghĩa về các lớp và các loại khác Các tập tin này được biên dịch bởi trình biên dịch C# (csc) thành mã thực thi và kết quả là các tập tin có cùng tên nhưng có phần mở rộng exe hoặc dll
Ví dụ: nếu khi biên dịch HelloCSharp.cs, sẽ nhận được một tập tin có tên HelloCSharp.exe (một số tập tin bổ sung cũng sẽ được tạo ra)
Chúng ta có thể chạy mã được biên dịch như bất kỳ chương trình nào khác trên máy tính của mình (bằng cách double click vào nó) Nhưng nếu thực thi code C# đã biên dịch (ví dụ HelloCSharp.exe) trên máy tính không có NET Framework, sẽ xuất hiện thông báo lỗi
Quản lý bộ nhớ tự động
Một trong những lợi thế lớn nhất của NET Framework là quản lý bộ nhớ tự động
Nó giúp các lập trình viên khỏi phải thực hiện việc phân bổ bộ nhớ thủ công cho các đối tượng và sau đó chờ đợi thời điểm thích hợp để giải phóng nó Điều này làm tăng đáng kể năng suất của nhà phát triển và chất lượng của các chương trình được viết bằng C #
Trong NET Framework, có một thành phần đặc biệt của CLR được gọi là
"garbage collector" (hệ thống làm sạch bộ nhớ tự động) Trình thu gom rác có các
tác vụ chính sau: kiểm tra khi bộ nhớ được phân bổ cho các biến không còn được
sử dụng, sẽ giải phóng nó và làm cho nó sẵn sàng để phân bổ các đối tượng mới
1.7| VISUAL STUDIO IDE
VISUAL STUDIO LÀ GÌ?
1.7.1|
Visual Studio là một môi trường tích hợp (IDE) để phát triển các ứng dụng phần mềm cho Windows và nền tảng NET Framework Visual Studio (VS) hỗ trợ các ngôn ngữ lập trình khác nhau (ví dụ C #, VB.NET và C ++) và các công nghệ phát triển phần mềm khác nhau (Win32, COM, ASP.NET, ADO.NET Entity Framework, ứng dụng Windows Forms, WPF, Silverlight, Windows Store, công nghệ Windows và NET khác) Nó cung cấp một môi trường tích hợp mạnh mẽ để
Trang 14Tài liệu giảng dạy Th p T nh 1 Trang 11
viết mã, biên dịch, thực thi, gỡ lỗi và kiểm tra các ứng dụng, thiết kế giao diện người dùng (biểu mẫu, hộp thoại, trang web, điều khiển trực quan và các thứ khác),
mô hình hóa dữ liệu và lớp, chạy thử nghiệm và hàng trăm chức năng khác
IDE là môi trường phát triển tích hợp - một công cụ để viết mã, biên dịch, chạy chương trình, kiểm tra, gỡ lỗi, v.v và mọi thứ được tích hợp vào một nơi duy nhất Visual Studio là một IDE
.NET Framework đi kèm với Visual Studio
Visual Studio là một sản phẩm thương mại nhưng có phiên bản miễn phí có tên Visual Studio Express, có thể tải xuống miễn phí từ trang web của Microsoft tại địa chỉ http://microsoft.com/visualstudio/ downloads
KHỞI ĐỘNG VISUAL STUDIO:
1.7.2|
Cách 1: double click biểu tượng Visual Studio trên desktop
Cách 2: chọn Start/Program/Visual Studio 2015/Visual Studio2015
TẠO MỘT DỰ ÁN (PROJECT) C# MỚI:
1.7.3|
Project gồm nhiều tập tin, được thiết kế để thực hiện một ứng dụng hoặc hệ thống phần mềm, một cách logic Nên tạo một project riêng cho mỗi chương trình Các bước tạo project mới:
Trang 15Tài liệu giảng dạy Th p T nh 1 Trang 12
- File -> New Project
- Xuất hiện hộp thoại New Project
Chọn ngôn ngữ lập trình (trong môn học này chọn C#)
Chọn loại project( trong môn học này chọn Console Application)
Đặt tên cho project trong Name
Chọn vị trí chứa project trong Location
- Click OK
Trang 16Tài liệu giảng dạy Th p T nh 1 Trang 13
Project mới hiển thị trong Solution Explorer Ngoài ra, tập tin đầu tiên chứa code chương trình, sẽ tự động được thêm vào, được đặt tên là Program.cs
ư ý: việc phải đặt tên tập tin / lớp / phương thức / biến/ hằng phải thể hiện ý
nghĩa của tập tin / lớp / phương thức / biến/ hằng
Để đổi tên tập tin Program.cs: right click vào Program.cs trong Solution Explorer
và chọn Rename, gõ tên mới Đổi tên tập tin cũng có thể được thực hiện bằng phím [F2] khi tập tin được chọn trong Solution Explorer
BIÊN DỊCH MÃ NGUỒN
1.7.4|
Quá trình biên dịch trong Visual Studio bao gồm các bước:
- Kiểm tra lỗi cú pháp;
- Chuyển đổi mã C # thành một tập tin thực thi (.NET assembly) Đối với các ứng dụng giao diện điều khiển, nó là một tập tin exe
Để biên dịch tệp trong Visual Studio, nhấn phím [Ctrl Shift B]
GỠ LỖI (DEBUG) CHƯƠNG TRÌNH
1.7.5|
Trong quá trình lập trình thường xuyên gặp những lỗi không mong muốn Debug
là việc rà soát lại các dòng code và tìm kiếm các bug để chỉnh lại theo ý muốn của mình
Quá trình gỡ lỗi bao gồm:
- Nhận thấy các lỗi;
- Tìm code gây ra lỗi;
Trang 17Tài liệu giảng dạy Th p T nh 1 Trang 14
- Sửa code để chương trình hoạt động chính xác;
- Kiểm tra để đảm bảo chương trình hoạt động như mong đợi sau khi thay đổi được thực hiện
Quá trình có thể được lặp lại nhiều lần cho đến khi chương trình bắt đầu hoạt động chính xác
Các bước thực hiện Debug chương trình
- Đặt breakpoint: click vị trí bên trái dòng lệnh để đặt Breakpoint như hình dưới Có thể đặt nhiều breakpoint khác nhau Để xóa một breakpoint ta click vào đó một lần nữa
- Nhấn F5 để chạy chương trình ở chế độ debug
- Khi gặp beakpoint, màn hình sẽ chuyển màu như sau
Trang 18Tài liệu giảng dạy Th p T nh 1 Trang 15
-Sử dụng các nút lệnh trên thanh công cụ để chọn chế độ chạy từng dòng, kiểm tra kết quả tương ứng
Step Over (F10): chạy lần lượt các câu lệnh, tuy nhiên sẽ không đi vào trong hàm con mà chỉ lướt qua
Step Into (F11): chạy lần lượt các câu lệnh và đi vào hàm con
Step Out (Shift + F11): Lướt qua hàm con hiện tại để trở về hàm trước Ngoài ra có thể dùng nó để nhảy qua breakpoint kế tiếp
Trang 19Tài liệu giảng dạy Th p T nh 1 Trang 16
Kết quả:
1.8| QUÁ TRÌNH BIÊN DỊCH C#
C# là ngôn ngữ biên dịch (compiled language) vì khi build nó sẽ gọi ra trình biên dịch (compiler), trình biên dịch này sẽ chuyển đoạn mã C# thành một ngôn ngữ trung gian được gọi là Microsoft Intermediate Language (MSIL) được lưu dưới
dạng một file thực thi (exe)
Khi chạy file thực thi, NET Framework sẽ gọi Just In Time Compiler (trình biên dịch tức thời) để chuyển MSIL code thành ngôn ngữ máy (Machine code) và thực hiện chương trình
Quá trình biên dịch csharp
QUÁ TRÌNH BIÊN DỊCH
1.8.1|
ước 1: Chọn Build/ Build Solution hoặc Rebuild Solution Visual Studio sẽ gọi
trình biên dịch, mã C# sẽ được chuyển thành một ngôn ngữ trung gian Microsoft
Trang 20Tài liệu giảng dạy Th p T nh 1 Trang 17
Intermediate Language (MSIL) Chương trình lúc này được đóng gói thành một
file exe
Để xem kết quả Right click vào project, chọn Open folder in file explorer
Vào thư mục bin/debug, chương trình đã được chuyển thành dạng exe, file exe
này chứa mã MSIL
Trang 21Tài liệu giảng dạy Th p T nh 1 Trang 18
1.9| GIẢI THUẬT VÀ ĐẶC TẢ GIẢI THUẬT
KHÁI NIỆM
1.9.1|
Một giải thuật (còn gọi là thuật toán) có thể được định nghĩa như là một thủ tục, công thức hay cách giải quyết vấn đề Nó gồm một tập hợp các bước giúp đạt được lời giải
Đặt tả giải thuật: giải thuật được viết bằng cách dùng hai phương pháp chuẩn là mã giả (pseudo code) và lưu đồ (flowchart)
LƯU ĐỒ
1.9.2|
Một lưu đồ là một hình ảnh minh hoạ cho giải thuật Nó vẽ ra biểu đồ của luồng chỉ thị hay những hoạt động trong một tiến trình Mỗi hoạt động như vậy được biểu diễn qua những ký hiệu
Tập các ký hiệu dùng biểu diễn lưu đồ:
Trang 22Tài liệu giảng dạy Th p T nh 1 Trang 19
Khối Nhập xuất Khối xử lý Lựa chọn 1 trong 2 trường hợp
Gọi chương trình con Bắt đầu, kết thúc Luồng xử lý Điểm ghép nối
Trang 23Tài liệu giảng dạy Th p T nh 1 Trang 20
Input: số nguyên a, b, c
Process: max =a
Nếu max<b
max =b Nếu max <c
Trang 24Tài liệu giảng dạy Th p T nh 1 Trang 21
Nội dung : Chương 1: Tổng quan về Ngôn ngữ lập trình
II Chuẩn đầu ra cần đạt:
L.O.1 Các kiến thức cơ bản về các loại lập trình, phân biệt được
các dạng lập trình, trình bày các bước để giải quyết bài toán trên máy tính; Mô tả thuật toán bằng lưu đồ / mã giả
CÂU HỎI ÔN TẬP
1 Chương trình – Programs/Applications là gì? Ngôn ngữ lập trình - Programming languages là gì? Lập trình viên – Programmers là gì? Công cụ lập trình - Programming tools / Developer tools là gì?
2 Liệt kê sơ lược lịch sử phát triển của ngôn ngữ lập trình?
3 Hãy phân loại các dạng ngôn ngữ lập trình
4 Hãy nêu các giai đoạn phát triển phần mềm
5 Hãy mô tả cấu trúc cơ bản của một chương trình C#
6 Hãy nếu tổng quan về ngôn ngữ C# và lợi ích của C# Vì sao khi biên dịch chương trình C# trên máy tính bắt buộc phải có NET Framework?
Vẽ lưu đồ thuật toán cho các chương trình sau:
1 Chương trình nhập vào bán kính hình tròn Tính, in ra chu vi và diện tích của hình tròn
Trang 25Tài liệu giảng dạy Th p T nh 1 Trang 22
Tính totalSale = sale1 + sale2 và
commission=totalSale*commissionRate
In ra màn hình giá trị commission
3 Chương trình cho phép người dùng nhập vào năm sinh một nam nhân viên Tính:
Tính tuổi hiện tại
Tính năm về hưu (biết tuổi về hưu của nam là 62)
4 Chương trình cho phép nhập vào hai số nguyên num1, num2 Tìm và in ra màn hình giá trị lớn nhất giữa hai số num1 và num2
5 Chương trình cho phép nhập vào một số nguyên dương num Kiểm tra và in
ra màn hình kết quả “Là số chẵn” hoặc “Là số lẻ”
6 Chương trình cho phép nhập vào hai số thực a, b Giải và biện luận phương trình bậc nhất ax+b=0
7 Tạo một project C# trên Visual Studio 2015 với đoạn code sau:
//My first program in C#
Vẽ lưu đồ thuật toán cho các chương trình sau:
8 Chương trình cho phép nhập vào hai giá trị num1, num2 Thực hiện hoán vị hai giá trị num1 và num2 cho nhau In giá trị mới ra màn hình
9 Chương trình cho phép nhập vào ba số a, b, c Tìm và in ra giá trị nhỏ nhất
ra màn hình
10 Chương trình cho phép nhập vào ba số thực a, b, c Giải và biện luận phương trình bậc hai ax2 + bx + c = 0
-Hết -
Trang 26Tài liệu giảng dạy Th p T nh 1 Trang 23
HẰNG, BIẾN
- Chương này nhằm giúp sinh viên các hiểu biết về tên,
phương pháp đặt tên cho đối tượng; sự khác nhau giữa biến, hằng; cách sử dụng biến hằng; các kiểu dữ liệu cơ sở và cách vận dụng để giải quyết bài toán
Trang 27Tài liệu giảng dạy Th p T nh 1 Trang 24
2.1| TẬP KÝ TỰ
C# phân biệt chữ hoa, chữ thường Do đó tập ký tự trong C# bao gồm:
- Các ký số: 0…9
- Các ký tự mẫu tự: a z, A Z
- Các ký tự đặt bịêt: + - * / % &! # ^ & …
Tập ký tự trong C# bao gồm các ký tự in được của bàn phím chuẩn
2.2| TỪ KHÓA
Tất cả các ngôn ngữ dành một số từ nhất định cho mục đích riêng Những từ này có một ý nghĩa đặc biệt trong ngữ cảnh của từng ngôn ngữ, và được xem là “từ khóa” C# sử dụng bộ từ khóa sau:
2.3| TÊN VÀ QUI ƯỚC ĐẶT TÊN
Khi muốn trình biên dịch phân bổ vùng nhớ cho một đối tượng được sử dụng trong chương trình phải cung cấp tên cho nó Tên hoạt động như một định danh và cho phép tham chiếu đến vùng nhớ liên quan
Tên phải tuân theo các quy tắc nhất định được xác định trong đặc tả ngôn ngữ C#: Tên có thể chứa các ký tự a-z, A-Z, các ký số 0-9 cũng như ký tự '_'
Trang 28Tài liệu giảng dạy Th p T nh 1 Trang 25
Tên không thể bắt đầu bằng một chữ số
Tên không thể trùng với từ khóa của ngôn ngữ C # Ví dụ: base, char, int, object, this, null, …
Lưu ý:
- Tên nên mô tả và giải thích biến được sử dụng để làm gì
Ví dụ: một tên thích hợp cho một biến lưu trữ một tên người là personName và tên không phù hợp là a
- Tên không nên quá dài hoặc quá ngắn - chúng chỉ cần làm rõ mục đích của biến trong ngữ cảnh của nó
- Chữ in hoa và chữ thường nên được sử dụng cẩn thận vì C # phân biệt chữ hoa và chữ thường
Ví dụ: diemtb và diemTB là các biến khác nhau
Ví dụ về các biến được đặt tên đúng: firstName, age, startIndex
2.4| CÁC KIỂU DỮ LIỆU XÂY DỰNG SẴN
KIỂU DỮ LIỆU
2.4.1|
Kiểu dữ liệu là tập hợp các giá trị có các đặc điểm tương tự
Ví dụ, kiểu byte chỉ bộ số nguyên trong phạm vi [0, 255]
Các kiểu dữ liệu được đặc trưng bởi:
+Tên - ví dụ: int;
+ Kích thước (dung lượng bộ nhớ sử dụng) - ví dụ: 4 byte;
+Giá trị mặc định - ví dụ 0
Các kiểu dữ liệu cơ bản trong C # được chia thành các loại sau:
+Kiểu số nguyên - sbyte, byte, short, ushort, int, uint, long, ulong;
+Kiểu số thực dấu chấm động – float, double;
+Kiểu số thực với độ chính xác thập phân - decimal;
+Kiểu Boolean - bool;
+Kiểu ký tự - char;
+Chuỗi - string;
Trang 29Tài liệu giảng dạy Th p T nh 1 Trang 26
+Kiểu đối tượng- object
Các kiểu dữ liệu này được gọi là kiểu nguyên thủy (kiểu dựng sẵn)
bool 1 false Two possible values: true and false
char 2 '\u0000' Từ '\u0000' đến '\uffff'
Sự tương ứng giữa các kiểu trong C# và NET
Các kiểu dữ liệu nguyên thủy trong C# có sự tương ứng trực tiếp với kiểu của hệ thống kiểu phổ biến (CTS) trong NET Framework Chẳng hạn, kiểu int trong C# tương ứng với kiểu System.Int32 trong CTS và kiểu Integer trong ngôn ngữ VB.NET, trong khi kiểu long trong C# tương ứng với kiểu System.Int64 trong CTS
và kiểu Long trong ngôn ngữ VB.NET Do CTS trong NET Framework, có khả năng tương thích giữa các ngôn ngữ lập trình khác nhau (ví dụ như C#, Managed C++, VB.NET và F#) Do đó, các kiểu int, Int32 và System.Int32 trong C# thực sự
là các bí danh khác nhau cho một và cùng loại dữ liệu - số nguyên 32 bit
CHỌN KIỂU DỮ LIỆU
2.4.2|
Thông thường để chọn một kiểu dữ liệu nguyên để sử dụng thường dựa vào độ lớn của giá trị muốn sử dụng Ví dụ, một biến ushort có thể lưu giữ giá trị
từ 0 đến 65.535, trong khi biến ulong có thể lưu giữ giá trị từ 0 đến 4.294.967.295,
do đó tùy vào miền giá trị của phạm vi sử dụng biến mà chọn các kiểu dữ liệu thích hợp nhất Kiểu dữ liệu int thường được sử dụng nhiều nhất trong lập trình vì với kích thước 4 byte của nó cũng đủ để lưu các giá trị nguyên cần thiết Kiểu số
Trang 30Tài liệu giảng dạy Th p T nh 1 Trang 27
nguyên có dấu thường được lựa chọn sử dụng nhiều nhất trong kiểu số trừ khi có lýdo chính đáng để sử dụng kiểu dữ liệu không dấu
2.5| BIẾN
Là một phần bộ nhớ được đặt tên và được dùng để lưu trữ một giá trị có thể thay đổi khi thực hiện chương trình Tất cả các biến trong C# đều phải được khai báo trước khi sử dụng
2.5.1 KHAI BÁO BIẾN
Khi khai báo một biến, cần thực hiện các bước sau:
- Xác định kiểu của biến (ví dụ: int);
- Xác định tên của biến (định danh, ví dụ: diemHS1);
- Tùy chọn chỉ định giá trị ban đầu (Ví dụ: 10)
Khởi tạo biến
Việc khởi tạo trong lập trình có nghĩa là chỉ định một giá trị ban đầu Khi đặt giá trị cho các biến tại thời điểm khai báo, chúng tôi thực sự khởi tạo chúng
Ví dụ: int diemHS1 = 10;
2.5.2 GIÁ TRỊ BIẾN MẶC ĐỊNH
Mỗi kiểu dữ liệu trong C# có một giá trị mặc định (khởi tạo mặc định) được sử dụng khi không có giá trị được đặt rõ ràng cho một biến đã cho Chúng ta có thể sử dụng bảng sau để xem các giá trị mặc định của các loại mà chúng ta đã quen thuộc: Data Type Default Value Data Type Default Value
Trang 31Tài liệu giảng dạy Th p T nh 1 Trang 28
//in ket qua
System Console WriteLine( "khai bao va khoi tao num1 = {0}" , num1);
Trang 32Tài liệu giảng dạy Th p T nh 1 Trang 29
//dinh nghia bien
int num1 ;
//in ket qua
System Console WriteLine( "khai bao va khoi tao num1 = {0}" , num1);
Biể ượng hằng (symbolic constants): gán một tên cho một giá trị hằng, để tạo
một biểu tượng hằng dùng từ khóa const và cú pháp sau:
<const> <data type> <identifier>= <value>;
dienTich = PI * banKinh * banKinh;
//in ket qua
System Console WriteLine( "duong tron ban kinh = " + banKinh );
System Console WriteLine( "duong tron chu vi = " + chuVi);
Trang 33Tài liệu giảng dạy Th p T nh 1 Trang 30
System Console WriteLine( "dien tich = " + dienTich);
}
}
Kết quả
Trang 34Tài liệu giảng dạy Th p T nh 1 Trang 31
Nội dung : Chương 2: Các kiểu dữ liệu, biến và hằng số
II Chuẩn đầu ra cần đạt:
L.O.2 Phân biệt được hằng, biến, các kiểu dữ liệu cơ bản
L.O.8 Thường xuyên tìm hiểu vấn đề, chủ động làm bài tập về nhà theo đúng yêu
cầu, nộp bài đúng qui định
CÂU HỎI ÔN TẬP
1 Phân biệt hằng, biến? Cách khai báo và sử dụng hằng biến?
2 Hãy nêu quy tắt đặt tên trong C# ?
3 Hãy nêu các liểu dữ liệu cơ bản trong C# ?
BÀI TẬP Ở LỚP
Yêu cầu: Sinh viên đọc Tài liệu tham khảo - Chương 2 trước khi thực hiện bài tập
Vẽ lư đồ thu t toán và sử dụng phần mềm Visual Studio 2015 viết các
chương nh C# heo mô ả sau:
1 Chương trình nhập vào bán kính hình tròn Tính, in ra chu vi và diện tích của hình tròn
Tính tuổi hiện tại
Trang 35Tài liệu giảng dạy Th p T nh 1 Trang 32
4 Chương trình cho phép nhập vào hai giá trị num1, num2 Thực hiện hoán vị hai giá trị num1 và num2 cho nhau In giá trị mới ra màn hình
5 Chương trình cho phép nhập một số nguyên dương n và in bảng nhân của số
Trang 36Tài liệu giảng dạy Th p T nh 1 Trang 33
- Chương này nhằm giúp sinh viên hiểu được các kiến
thức về toán tử và cách sử dụng toán tử; cách sử dụng câu lệnh nhập xuất
Trang 37Tài liệu giảng dạy Th p T nh 1 Trang 34
3.1| CÁC LOẠI TOÁN TỬ
Các toán tử cho phép xử lý các dữ liệu Chúng nhận một hoặc nhiều toán hạng đầu vào và trả về một kết quả Toán tử trong C# là các ký tự đặc biệt (chẳng hạn như +,-,*, /, …) và chúng thực hiện các phép biến đổi trên một, hai hoặc ba toán hạng Trong C# có các loại toán tử sau:
- Toán tử số học - được sử dụng để thực hiện các phép toán số học đơn giản
- Toán tử gán - cho phép gán giá trị cho các biến
- Toán tử so sánh - cho phép so sánh hai hằng hoặc biến
- Toán tử logic - toán tử hoạt động với các kiểu dữ liệu Boolean và các biểu thức Boolean
- Toán tử nhị phân - được sử dụng để thực hiện các thao tác trên biểu diễn nhị phân của dữ liệu số
- Toán tử chuyển đổi kiểu - cho phép chuyển đổi dữ liệu từ loại này sang loại khác
3.1.1 TOÁN TỬ SỐ HỌC
pháp
Kết quả
Nhân(multiplication) * x*y Nhân x với y
Chia(division) / x/y -Chia x cho y nếu x, y là số thực
-Lấy phần nguyên phép chia x/y nếu x, y là số nguyên
Lấy phần dư (remainder) % x%y Lấy phần dư phép chia x/y nếu x, y
là số nguyên Tăng trước(preIncrement) ++ ++x Tăng x 1 đơn vị trước khi dùng Tăng sau(posIncrement) ++ x++ Tăng x 1 đơn vị sau khi dùng Giảm trước(preDecrement) x Giảm x 1 đơn vị trước khi dùng Giảm sau(posIncrement) x Giảm x 1 đơn vị sau khi dùng
Trang 38Tài liệu giảng dạy Th p T nh 1 Trang 35
//in ket qua
Console WriteLine( "a + b = " + (a + b));
Console WriteLine( "a = " + a);
Console WriteLine( "b = " + b);
Console WriteLine( "a + (b++) = " + (a + (b++)));
Console WriteLine( "a = " + a);
Console WriteLine( "b = " + b);
Console WriteLine( "a + (++b) = " + (a + (++b)));
Console WriteLine( "a = " + a);
Console WriteLine( "b = " + b);
a ;
Console WriteLine( "a = " + a);
Console WriteLine( "b = " + b);
Console WriteLine( "b / a = " + (b / a));
Console WriteLine( "b % a = " + (b % a));
Trang 39Tài liệu giảng dạy Th p T nh 1 Trang 36
//in ket qua
Console WriteLine( "a = " + a);
Console WriteLine( "b = " + b);
Console WriteLine( "a && b = " + (a && b));
Console WriteLine( "a || b = " + (a || b));
Console WriteLine( "!b = " + !b);
Console WriteLine( "b || true = " + (b || true ));
Console WriteLine( "(5 > 7) ^ (a == b)" + ((5 > 7) ^ (a == b))); }
}
Kết quả:
Toán tử Ký hiệu Cú pháp Kết quả
And && x && y true nếu x và y = true, và false khi x
Trang 40Tài liệu giảng dạy Th p T nh 1 Trang 37
3.1.3 TOÁN TỬ NỐI CHUỖI
string dotnet = ".NET" ;
//in ket qua
string csharpDotNet = csharp + dotnet;