LÀM QUEN NGÔN NGỮ LẬP TRÌNH
Giới thiệu các khái niệm cơ bản về lập trình
Ra lệnh cho máy tính làm việc
Khi khởi động máy tính, hệ điều hành tự động thực thi các tiến trình và xuất kết quả ra màn hình Hệ điều hành, được xem như phần mềm hệ thống, khởi động máy tính và thiết lập các thông số ban đầu trước khi người dùng có thể thao tác Để thực hiện điều này, hệ điều hành bao gồm một tập hợp các chương trình, mỗi chương trình nhằm giải quyết một hay nhiều vấn đề cụ thể Một nhóm lệnh tạo thành một chương trình, và nhiều chương trình kết hợp lại tạo thành phần mềm Ví dụ, khi một người bạn đến chơi và muốn biết công thức làm món sữa dâu, chúng ta sẽ hướng dẫn anh ta từng bước để thực hiện.
2 Đổ nước ép dâu vào
3 Trộn hỗn hợp này và làm lạnh
Bây giờ nếu bạn của chúng ta theo những chỉ dẫn này, họ cũng có thể tạo ra món sữa dâu tuyệt vời
Chúng ta hãy phân tích chỉ thị (lệnh) ở trên
➢ Lệnh đầu tiên : Lệnh này hoàn chỉnh chưa ? Nó có trả lời được câu hỏi lấy sữa ‘ở đâu’
➢ Lệnh thứ hai : Một lần nữa, lệnh này không nói rõ nước ép dâu để ‘ở đâu’
May mắn là chúng ta đủ thông minh để hiểu công thức pha chế, mặc dù vẫn còn nhiều điểm chưa rõ Để phổ biến cách làm này, chúng ta cần bổ sung các bước hướng dẫn cụ thể.
1 Rót một ly sữa vào máy trộn
2 Đổ thêm vào một ít nước dâu ép
4 Mở điện và bắt đầu trộn
6 Nếu đã trộn đều thì tắt máy, ngược lại thì trộn tiếp
7 Khi đã trộn xong, rót hỗn hợp vào tô và đặt vào tủ lạnh
8 Ðể lạnh một lúc rồi lấy ra dùng
So sánh hai cách hướng dẫn nêu trên, hướng dẫn thứ hai chắc chắn hoàn chỉnh, rõ ràng hơn, ai cũng có thể đọc và hiểu được
Máy tính xử lý dữ liệu dựa vào các tập lệnh mà nó nhận được, vì vậy các chỉ thị cần phải hoàn chỉnh và rõ ràng Những chỉ thị này phải tuân thủ các quy tắc nhất định để đảm bảo hiệu quả trong quá trình xử lý.
Mỗi chỉ thị trong tập chỉ thị được gọi là “câu lệnh” và tập các câu lệnh được gọi là “chương trình”
Chúng ta hãy xét trường hợp chương trình hướng dẫn máy tính cộng hai số
Các lệnh trong chương trình có thể là :
1 Nhập số thứ nhất và nhớ nó
2 Nhập số thứ hai và nhớ nó
3 Thực hiện phép cộng giữa số thứ nhất và số thứ hai, nhớ kết quả phép cộng
Tập lệnh này tuân thủ đầy đủ các quy tắc đã đề cập và hoạt động như một chương trình, cho phép thực hiện thành công phép cộng hai số trên máy tính.
Trí nhớ của con người được gọi là khả năng nhớ, trong khi khả năng lưu trữ dữ liệu của máy tính được gọi là "bộ nhớ" Máy tính tiếp nhận dữ liệu tại một thời điểm và xử lý chúng vào thời điểm khác, nghĩa là nó ghi dữ liệu vào bộ nhớ và sau đó truy xuất để làm việc với các giá trị đó.
Khi khối lượng công việc cho máy tính ngày càng tăng và phức tạp, các câu lệnh không thể được gộp vào một chương trình duy nhất Thay vào đó, chúng cần được chia thành nhiều chương trình nhỏ hơn, và cuối cùng, tất cả các chương trình này sẽ được tích hợp để hoạt động cùng nhau Tập hợp các chương trình này được gọi là phần mềm.
Mối quan hệ giữa ba khái niệm câu lệnh, chương trình và phần mềm có thể được biểu diễn bằng sơ đồ trong hình 1.1:
Hình 1.1: Phần mềm, chương trình và câu lệnh
Giới thiệu lịch sử phát triển và ứng dụng của ngôn ngữ lập trình cơ bản
Vào đầu những năm 70, Dennis Ritchie tại phòng thí nghiệm Bell đã phát triển ngôn ngữ C, lần đầu tiên được sử dụng trên hệ điều hành UNIX Ngôn ngữ C có nguồn gốc từ BCPL, do Martin Richards phát triển, và BCPL sau đó được Ken Thompson cải tiến thành ngôn ngữ B, tiền thân của C.
Trong khi BCPL và B không hỗ trợ kiểu dữ liệu, ngôn ngữ C đã cung cấp nhiều kiểu dữ liệu khác nhau, bao gồm kiểu ký tự (character), kiểu số nguyên (integer) và kiểu số thực (float).
C là ngôn ngữ lập trình mạnh mẽ, liên kết chặt chẽ với hệ thống UNIX nhưng không bị giới hạn bởi bất kỳ máy tính hay hệ điều hành nào Nó rất hiệu quả cho việc phát triển các chương trình trong nhiều lĩnh vực khác nhau.
Ngôn ngữ lập trình C được sử dụng để phát triển các chương trình hệ thống, bao gồm hệ điều hành, trình thông dịch, trình soạn thảo và chương trình hợp ngữ Hệ điều hành UNIX là một ví dụ điển hình được xây dựng dựa trên C Với tính hiệu quả và linh hoạt, C hiện đang được sử dụng rộng rãi Trình biên dịch C có sẵn cho hầu hết các máy tính, cho phép mã lệnh viết bằng C có thể được biên dịch và chạy trên nhiều hệ thống khác nhau với ít hoặc không cần thay đổi Hơn nữa, trình biên dịch C hoạt động nhanh chóng và tạo ra mã đối tượng không lỗi.
C khi thực thi nhanh chóng như hợp ngữ, cho phép lập trình viên tạo và bảo trì thư viện hàm để tái sử dụng trong các chương trình khác Nhờ đó, việc quản lý các dự án lớn trở nên dễ dàng và tốn ít công sức.
C được xem là ngôn ngữ bậc trung vì nó kết hợp các yếu tố của ngôn ngữ cấp cao và chức năng của hợp ngữ (ngôn ngữ cấp thấp) Ngôn ngữ C cho phép thao tác linh hoạt trên các cấu trúc dữ liệu và phần cứng, mang lại hiệu suất cao cho lập trình viên.
Ngôn ngữ lập trình C có 10 thành phần cơ bản của máy tính như bits, bytes và địa chỉ, cho phép phần mềm dễ dàng di chuyển giữa các loại máy tính khác nhau Mặc dù C chỉ có năm kiểu dữ liệu cơ bản, nhưng nó không được coi là ngôn ngữ cao cấp về mặt kiểu dữ liệu C cho phép chuyển đổi kiểu dữ liệu và thao tác trực tiếp trên bits, bytes, word và con trỏ, do đó, nó thường được sử dụng trong lập trình mức hệ thống.
Ngôn ngữ C không phải là ngôn ngữ cấu trúc khối vì không cho phép khai báo hàm bên trong các thủ tục hay hàm khác Mặc dù vậy, C vẫn được xem là ngôn ngữ cấu trúc do có nhiều điểm tương đồng với các ngôn ngữ như ALGOL, Pascal và một số ngôn ngữ tương tự khác.
Ngôn ngữ lập trình C cho phép tổng hợp mã lệnh và dữ liệu, một đặc điểm nổi bật của ngôn ngữ cấu trúc Điều này liên quan đến khả năng ẩn dấu thông tin và lệnh khỏi phần còn lại của chương trình để thực hiện các tác vụ riêng biệt thông qua hàm và khối mã lệnh Hàm được sử dụng để định nghĩa và tách rời các tác vụ trong chương trình, giúp chương trình hoạt động như một đơn vị thống nhất Khối mã lệnh là nhóm các câu lệnh được sắp xếp theo trật tự logic, cũng được xem như một đơn vị thống nhất, được tạo thành từ nhiều câu lệnh tuần tự giữa dấu ngoặc mở và đóng.
Ngôn ngữ lập trình cấu trúc cung cấp nhiều loại vòng lặp như while, do-while và for, giúp lập trình viên kiểm soát luồng thực thi trong chương trình.
Làm quen môi trường phát triển phần mềm
Ngôn ngữ C bao gồm 32 từ khóa cơ bản, kết hợp với cú pháp của nó để tạo thành cấu trúc ngôn ngữ Tuy nhiên, nhiều trình biên dịch C đã bổ sung thêm các từ khóa nhằm hỗ trợ việc tổ chức bộ nhớ trong các giai đoạn tiền xử lý nhất định.
Vài quy tắc khi lập trình C như sau :
- Tất cả từ khóa là chữ thường (không in hoa)
- Ðoạn mã trong chương trình C có phân biệt chữ thường và chữ hoa Ví dụ : do while thì khác với DO WHILE
- Từ khóa không thể dùng cho các mục đích khác như đặt tên biến (variable name) hoặc tên hàm (function name)
- Hàm main() luôn là hàm đầu tiên được gọi đến khi một chương trình bắt đầu chạy (chúng ta sẽ xem xét kỹ hơn ở phần sau)
Xem xét đoạn mã chương trình: main () {
/* This is a sample program */ int i = 0; i = i + 1;
Chương trình C được phân tích qua đoạn mã mẫu trên, và đoạn mã này sẽ được sử dụng lại trong toàn bộ giáo trình.
Chương trình C được cấu trúc thành các đơn vị gọi là hàm, với hàm main() là hàm duy nhất trong đoạn mã mẫu Khi một chương trình C được thực thi, hệ điều hành sẽ luôn chuyển quyền điều khiển cho hàm main() Tên hàm luôn đi kèm với cặp dấu ngoặc đơn (), trong đó có thể có hoặc không có các tham số (parameters).
Hàm trong lập trình được xác định bằng dấu ngoặc xoắn mở {, đánh dấu điểm bắt đầu của hàm, và dấu ngoặc xoắn đóng } sau câu lệnh cuối, chỉ ra điểm kết thúc của hàm Dấu ngoặc xoắn mở cũng đánh dấu sự khởi đầu của một khối mã lệnh, trong khi dấu ngoặc xoắn đóng đánh dấu sự kết thúc của khối mã đó Trong đoạn mã mẫu, có hai câu lệnh nằm giữa hai dấu ngoặc xoắn.
Hơn nữa, đối với hàm, dấu ngoặc xoắn cũng dùng để phân định những đoạn mã trong trường hợp dùng cho cấu trúc vòng lặp và lệnh điều kiện
3.3 Dấu kết thúc câu lệnh (Terminator)
Câu lệnh "int i = 0;" trong mã C là một ví dụ về câu lệnh, và mỗi câu lệnh trong C phải kết thúc bằng dấu chấm phẩy (;) Ngôn ngữ C không nhận diện việc xuống dòng, khoảng trắng hay tab, vì vậy có thể có nhiều câu lệnh trên cùng một dòng, nhưng mỗi câu lệnh cần có dấu chấm phẩy ở cuối Nếu một câu lệnh không có dấu chấm phẩy, nó sẽ được coi là sai.
Chú thích trong lập trình được sử dụng để mô tả công việc của lệnh, hàm hoặc toàn bộ chương trình mà không bị trình biên dịch dịch Trong ngôn ngữ C, chú thích đa dòng bắt đầu bằng ký hiệu /* và kết thúc bằng */; nếu thiếu ký hiệu kết thúc, toàn bộ chương trình sẽ bị coi là chú thích Ví dụ, trong đoạn mã mẫu, dòng "This is a sample program" là một chú thích Đối với chú thích đơn dòng, ta có thể sử dụng // Ví dụ: int a = 0; // Biến ‘a’ đã được khai báo như là một kiểu số nguyên (integer).
Tất cả các trình biên dịch C đều có thư viện hàm chuẩn phục vụ cho các tác vụ chung Một số bộ cài đặt C lưu trữ thư viện trong một tệp lớn, trong khi phần lớn còn lại chia thành nhiều tệp nhỏ Các hàm trong thư viện có thể được sử dụng cho nhiều loại tác vụ khác nhau Lập trình viên có thể đặt hàm vào thư viện để nhiều chương trình có thể sử dụng khi cần Một số trình biên dịch cho phép thêm hàm vào thư viện chuẩn, trong khi những trình biên dịch khác yêu cầu tạo thư viện riêng.
CÁC THÀNH PHẦN CƠ BẢN
Hệ thống từ khóa và kí hiệu được dùng trong ngôn ngữ lập trình
được dùng trong ngôn ngữ lập trình
Các kiểu dữ liệu cơ bản: kiểu số, ký tự, chuỗi,
Hằng, biến, hàm, các phép toán và biểu thức
Thực thi chương trình, nhập dữ liệu, nhận kết quả
3 Bài 3: Các cấu trúc điều khiển
1 Khái niệm về lệnh cấu trúc
2 Các lệnh cấu trúc lựa chọn
4 Các lệnh chuyển điều khiển
5 Kết hợp các cấu trúc điều khiển trong chương trình
4 Bài 4: Hàm và thủ tục
1 Khái niệm chương trình con
2 Cấu trúc chương trình có sử dụng chương trình con
3 Các hàm và thủ tục trong ngôn ngữ lập trình
4 Tham trị và tham biến
5 Biến toàn cục và biến cục bộ
5 Bài 5: Dữ liệu kiểu chuỗi
1 Khai báo và các phép toán
3 Các hàm làm việc với chuỗi
6 Bài 6: Dữ liệu kiểu tập hợp, mảng và bản ghi
1 Kiểu tập hợp, các phép toán trên tập hợp
2 Khái niệm mảng, khai báo mảng, gán giá trị
Thi kết thúc mô đun 2 2
Bài 1 LÀM QUEN NGÔN NGỮ LẬP TRÌNH 1.Mục tiêu:
- Trình bày được các khái niệm về lập trình;
- Trình bày được lịch sử phát triển, ứng dụng của ngôn ngữ lập trình;
- Làm quen môi trường phát triển phần mềm;
- Sử dụng được hệ thống trợ giúp từ help file
- Thực hiện các thao tác an toàn với máy tính
1 Giới thiệu các khái niệm cơ bản về lập trình Ngày nay, khoa học máy tính thâm nhập vào mọi lĩnh vực Tự động hóa hiện đang là ngành chủ chốt điều hướng sự phát triển thế giới Bất cứ ngành nghề nào cũng cần phải hiểu biết ít nhiều về Công nghệ Thông tin và lập trình nói chung Cụ thể, C là một ngôn ngữ lập trình cấp cao mà mọi lập trình viên cần phải biết Vì thế, trong giáo trình này, chúng ta sẽ nghiên cứu chi tiết cấu trúc ngôn ngữ C Ðầu tiên chúng ta tìm hiểu sự khác nhau của những khái niệm: Lệnh (Command), Chương trình (Program) và Phần mềm (Software)
Ra lệnh cho máy tính làm việc
Khi khởi động máy tính, hệ điều hành tự động thực thi các tiến trình và xuất kết quả ra màn hình Hệ điều hành, được coi là phần mềm hệ thống, khởi động máy tính và thiết lập các thông số ban đầu trước khi cho phép người dùng truy cập Để thực hiện điều này, hệ điều hành bao gồm một tập hợp các chương trình, mỗi chương trình nhằm giải quyết một hoặc nhiều vấn đề cụ thể Một nhóm lệnh tạo thành một chương trình, và nhiều chương trình kết hợp lại tạo thành phần mềm Ví dụ, khi một người bạn đến chơi và muốn biết công thức làm món sữa dâu, chúng ta sẽ hướng dẫn anh ta cách thực hiện.
2 Đổ nước ép dâu vào
3 Trộn hỗn hợp này và làm lạnh
Bây giờ nếu bạn của chúng ta theo những chỉ dẫn này, họ cũng có thể tạo ra món sữa dâu tuyệt vời
Chúng ta hãy phân tích chỉ thị (lệnh) ở trên
➢ Lệnh đầu tiên : Lệnh này hoàn chỉnh chưa ? Nó có trả lời được câu hỏi lấy sữa ‘ở đâu’
➢ Lệnh thứ hai : Một lần nữa, lệnh này không nói rõ nước ép dâu để ‘ở đâu’
May mắn là chúng ta đủ thông minh để hiểu công thức pha chế, mặc dù vẫn còn nhiều điểm chưa rõ Để phổ biến cách làm này, chúng ta cần bổ sung các bước hướng dẫn cụ thể.
1 Rót một ly sữa vào máy trộn
2 Đổ thêm vào một ít nước dâu ép
4 Mở điện và bắt đầu trộn
6 Nếu đã trộn đều thì tắt máy, ngược lại thì trộn tiếp
7 Khi đã trộn xong, rót hỗn hợp vào tô và đặt vào tủ lạnh
8 Ðể lạnh một lúc rồi lấy ra dùng
So sánh hai cách hướng dẫn nêu trên, hướng dẫn thứ hai chắc chắn hoàn chỉnh, rõ ràng hơn, ai cũng có thể đọc và hiểu được
Máy tính xử lý dữ liệu dựa vào các tập lệnh mà nó nhận được, vì vậy các chỉ thị cần phải hoàn chỉnh và rõ ràng Những chỉ thị này phải tuân thủ các quy tắc nhất định để đảm bảo hiệu quả trong quá trình xử lý.
Mỗi chỉ thị trong tập chỉ thị được gọi là “câu lệnh” và tập các câu lệnh được gọi là “chương trình”
Chúng ta hãy xét trường hợp chương trình hướng dẫn máy tính cộng hai số
Các lệnh trong chương trình có thể là :
1 Nhập số thứ nhất và nhớ nó
2 Nhập số thứ hai và nhớ nó
3 Thực hiện phép cộng giữa số thứ nhất và số thứ hai, nhớ kết quả phép cộng
Tập lệnh này tuân thủ đầy đủ các quy tắc đã đề ra và hoạt động như một chương trình, cho phép thực hiện thành công phép cộng hai số trên máy tính.
Trí nhớ của con người được gọi là khả năng nhớ, trong khi khả năng lưu trữ dữ liệu của máy tính được gọi là "bộ nhớ" Máy tính tiếp nhận dữ liệu tại một thời điểm và xử lý chúng vào thời điểm khác, nghĩa là dữ liệu được ghi vào bộ nhớ và sau đó được truy xuất để sử dụng.
Khi khối lượng công việc cho máy tính ngày càng tăng và phức tạp, các câu lệnh không thể được gộp vào một chương trình duy nhất Thay vào đó, chúng cần được chia thành nhiều chương trình nhỏ hơn, và cuối cùng, tất cả các chương trình này sẽ được tích hợp để hoạt động cùng nhau Tập hợp các chương trình này được gọi là phần mềm.
Mối quan hệ giữa ba khái niệm câu lệnh, chương trình và phần mềm có thể được biểu diễn bằng sơ đồ trong hình 1.1:
Hình 1.1: Phần mềm, chương trình và câu lệnh
2 Giới thiệu lịch sử phát triển và ứng dụng của ngôn ngữ lập trình cơ bản
Vào đầu những năm 70, Dennis Ritchie tại phòng thí nghiệm Bell đã phát triển ngôn ngữ C, lần đầu tiên được sử dụng trên hệ điều hành UNIX Ngôn ngữ C có nguồn gốc từ BCPL, do Martin Richards phát triển, và BCPL sau đó được Ken Thompson cải tiến thành ngôn ngữ B, tiền thân của C.
Trong khi BCPL và B không hỗ trợ kiểu dữ liệu, ngôn ngữ C lại cung cấp nhiều kiểu dữ liệu khác nhau, bao gồm kiểu ký tự (character), kiểu số nguyên (integer) và kiểu số thực (float).
Ngôn ngữ lập trình C có mối liên hệ chặt chẽ với hệ thống UNIX, nhưng không bị giới hạn bởi bất kỳ máy tính hay hệ điều hành nào C là lựa chọn hiệu quả để phát triển các chương trình trong nhiều lĩnh vực khác nhau.
Ngôn ngữ lập trình C được sử dụng để phát triển các chương trình hệ thống, bao gồm hệ điều hành, trình thông dịch, trình soạn thảo và chương trình hợp ngữ Hệ điều hành UNIX là một ví dụ điển hình được xây dựng dựa trên C Với tính hiệu quả và linh hoạt, C hiện đang được sử dụng rộng rãi Trình biên dịch C có sẵn cho hầu hết các loại máy tính, cho phép mã lệnh viết trên một máy có thể được biên dịch và chạy trên máy khác với ít hoặc không cần thay đổi Hơn nữa, trình biên dịch C hoạt động nhanh chóng và tạo ra mã đối tượng không có lỗi.
C khi thực thi nhanh chóng như hợp ngữ (Assembly), cho phép lập trình viên tạo và bảo trì thư viện hàm để tái sử dụng trong các chương trình khác Nhờ đó, việc quản lý các dự án lớn trở nên dễ dàng và tốn ít công sức.
C được xem là ngôn ngữ bậc trung vì nó kết hợp các yếu tố của ngôn ngữ cấp cao và chức năng của hợp ngữ (ngôn ngữ cấp thấp) Ngôn ngữ này cho phép thực hiện các thao tác trên nhiều cấp độ khác nhau.
Ngôn ngữ lập trình C có 10 thành phần cơ bản như bits, bytes và địa chỉ, cho phép phần mềm dễ dàng di chuyển và chạy trên nhiều loại máy tính khác nhau Mặc dù C có năm kiểu dữ liệu cơ bản, nhưng không được xem là ngôn ngữ cao cấp về mặt kiểu dữ liệu C cho phép chuyển đổi kiểu dữ liệu và thao tác trực tiếp trên bits, bytes, word và con trỏ, do đó, nó thường được sử dụng trong lập trình mức hệ thống.
Ngôn ngữ C không phải là ngôn ngữ cấu trúc khối vì không cho phép khai báo thủ tục hay hàm bên trong các thủ tục và hàm khác Mặc dù vậy, C vẫn được xem là ngôn ngữ cấu trúc do có nhiều điểm tương đồng với các ngôn ngữ như ALGOL, Pascal và một số ngôn ngữ tương tự khác.
Lệnh và khối lệnh
Một biểu thức kiểu như x=0 hoặc ++i hoặc scanf( ) trở thành câu lệnh khi có đi kèm theo dấu ;
Trong chương trình C, dấu ; là dấu hiệu kết thúc câu lệnh
Một dãy các câu lệnh đƣợc bao bởi các dấu { } gọi là một khối lệnh
TURBO C cho phép xem khối lệnh như một câu lệnh độc lập Điều này có nghĩa là bất kỳ nơi nào có thể viết một câu lệnh, cũng có thể đặt một khối lệnh tại đó.
Khai báo ở đầu khối lệnh :
Các khai báo biến và mảng chẳng những có thể đặt ở đầu của một hàm mà còn có thể viết ở đầu khối lệnh :
Sự lồng nhau của các khối lệnh và phạm vi hoạt động của các biến và mảng :
Bên trong một khối lệnh lại có thể viết lồng khối lệnh khác Sự lồng nhau theo cách nhưvậy là không hạn chế
Khi máy bắt đầu thực hiện một khối lệnh, các biến và mảng được khai báo bên trong sẽ được tạo ra và cấp phát bộ nhớ Những biến này chỉ tồn tại trong suốt thời gian máy làm việc trong khối lệnh và sẽ ngay lập tức biến mất khi máy ra khỏi khối lệnh.
Giá trị của biến hoặc mảng được khai báo trong một khối lệnh chỉ có thể sử dụng trong phạm vi của khối lệnh đó Bất kỳ nơi nào bên ngoài khối lệnh, việc truy cập vào các biến và mảng đã được khai báo bên trong là không thể.
Khi sử dụng một biến hoặc mảng có tên là a bên trong một khối lệnh, giá trị của biến a bên ngoài khối lệnh đó sẽ không bị ảnh hưởng.
Biến được khai báo bên ngoài một khối lệnh và không trùng tên với các biến bên trong khối lệnh có thể được sử dụng cả bên trong lẫn bên ngoài khối lệnh đó.
Xét đoạn chương trình sau : {
} Khi đó đoạn chương trình sẽ in kết quả như sau : a trong =4 b=6 a ngoài =5 b=6
Do tính chất biến a trong và ngoài khối lệnh.