- 1. Ngôn ngữ lập trình Pascal là gì?
- 1.1 Lịch sử và nguồn gốc của Pascal
- 1.2 Đặc điểm nổi bật của Pascal
- 1.3 Ưu điểm và nhược điểm của Pascal
- 1.4 Ứng dụng của Pascal trong thực tế
- 2. Lý thuyết lập trình Pascal
- 2.1 Cấu trúc cơ bản của một chương trình Pascal
- 2.2 Các kiểu dữ liệu trong Pascal
- 2.3 Các câu lệnh điều khiển trong Pascal
- 2.4 Các hàm và thủ tục trong Pascal
- 2.5 Mảng và cấu trúc dữ liệu trong Pascal
- 3. Bài tập thực hành Pascal
- 3.1 Bài tập cơ bản
- 3.2 Bài tập nâng cao
- 3.3 Dự án nhỏ với Pascal
- 3.4 Tài liệu tham khảo
1. Ngôn ngữ lập trình Pascal là gì?
1.1 Lịch sử và nguồn gốc của Pascal
- Pascal là một ngôn ngữ lập trình được đặt tên để tưởng nhớ nhà toán học và triết học người Pháp Blaise Pascal. Ngôn ngữ này được thiết kế bởi Niklaus Wirth vào đầu những năm 1970 với mục tiêu tạo ra một ngôn ngữ lập trình đơn giản, hiệu quả và dễ học, đặc biệt là cho việc giảng dạy lập trình.
- Nguồn gốc và Mục tiêu
+ ALGOL 60: Pascal được phát triển dựa trên nền tảng của ngôn ngữ ALGOL 60, một ngôn ngữ lập trình cấu trúc được sử dụng rộng rãi vào thời điểm đó. Pascal kế thừa nhiều đặc điểm cấu trúc và cú pháp từ ALGOL 60.
+ Giảng dạy Lập trình: Mục tiêu chính của Wirth khi thiết kế Pascal là tạo ra một công cụ hiệu quả để giảng dạy các nguyên tắc lập trình cấu trúc. Pascal giúp sinh viên tập trung vào việc thiết kế thuật toán và cấu trúc dữ liệu mà không bị phân tán bởi các chi tiết phức tạp của ngôn ngữ.
+ Tính Khả Di động: Pascal được thiết kế để có tính khả di động cao, nghĩa là các chương trình viết bằng Pascal có thể được biên dịch và chạy trên nhiều hệ thống máy tính khác nhau mà không cần sửa đổi nhiều.
1.2 Đặc điểm nổi bật của Pascal
- Cấu trúc: Pascal là một ngôn ngữ lập trình cấu trúc, khuyến khích việc sử dụng các câu lệnh điều khiển như if-then-else, for, while để tạo ra các chương trình rõ ràng và dễ đọc.
- Kiểu Dữ liệu: Pascal hỗ trợ nhiều kiểu dữ liệu khác nhau, bao gồm số nguyên, số thực, ký tự, chuỗi và các kiểu dữ liệu do người dùng tự định nghĩa.
- Các Cấu trúc Dữ liệu: Pascal cung cấp các cấu trúc dữ liệu mạnh mẽ như mảng, bản ghi, tập hợp, cho phép lập trình viên xây dựng các ứng dụng phức tạp.
- Con Trỏ: Pascal hỗ trợ con trỏ, một công cụ hữu ích để quản lý bộ nhớ động và tạo ra các cấu trúc dữ liệu linh hoạt.
- Đệ quy: Pascal hỗ trợ đệ quy, một kỹ thuật lập trình mạnh mẽ để giải quyết các bài toán có tính chất lặp lại.
1.3 Ưu điểm và nhược điểm của Pascal
+ Cấu trúc rõ ràng: Pascal có cú pháp chặt chẽ, dễ đọc và hiểu. Điều này giúp việc viết và bảo trì code trở nên dễ dàng hơn, đặc biệt đối với người mới bắt đầu.
+ Kiểm tra lỗi tốt: Pascal có hệ thống kiểm tra lỗi chặt chẽ, giúp phát hiện và sửa lỗi sớm trong quá trình phát triển.
+ Hỗ trợ lập trình cấu trúc: Pascal khuyến khích lập trình theo cấu trúc, giúp code được tổ chức tốt hơn và dễ quản lý.
+ Dễ học: Cú pháp đơn giản và cấu trúc rõ ràng của Pascal khiến nó trở thành một ngôn ngữ lý tưởng để học lập trình cơ bản.
+ Cung cấp nhiều kiểu dữ liệu: Pascal hỗ trợ nhiều kiểu dữ liệu như mảng, bản ghi, file và tập hợp, giúp lập trình viên tạo ra các cấu trúc dữ liệu phức tạp.
- Nhược điểm của Pascal
+ Hiệu suất: So với các ngôn ngữ lập trình cấp thấp như C, Pascal thường chạy chậm hơn.
+ Hạn chế về thư viện: Thư viện của Pascal không phong phú và đa dạng bằng các ngôn ngữ hiện đại như Python, Java.
+ Ít được sử dụng trong phát triển thương mại: Pascal hiện nay ít được sử dụng trong các dự án phát triển phần mềm thương mại lớn.
+ Khả năng mở rộng hạn chế: So với các ngôn ngữ hướng đối tượng hiện đại, Pascal có khả năng mở rộng hạn chế hơn.
1.4 Ứng dụng của Pascal trong thực tế
- Giáo dục:
+ Dạy lập trình: Như đã nói ở trên, Pascal là một công cụ tuyệt vời để dạy lập trình.
+ Phát triển các phần mềm hỗ trợ giảng dạy: Các phần mềm mô phỏng, các bài tập thực hành, các trò chơi giáo dục...
- Khoa học:
+ Mô phỏng các hệ thống: Mô phỏng các hệ thống vật lý, hóa học, sinh học...
+ Xử lý dữ liệu: Xử lý dữ liệu khoa học, thống kê, phân tích số liệu.
- Kỹ thuật:
+ Điều khiển các thiết bị: Điều khiển các thiết bị đơn giản như cảm biến, động cơ...
+ Xử lý tín hiệu: Xử lý tín hiệu âm thanh, hình ảnh.
- Phát triển phần mềm:
+ Các phần mềm nhỏ: Các phần mềm tính toán, quản lý dữ liệu nhỏ.
+ Các thư viện: Phát triển các thư viện hỗ trợ cho các ngôn ngữ lập trình khác.
2. Lý thuyết lập trình Pascal
2.1 Cấu trúc cơ bản của một chương trình Pascal

Trong đó:
+ PROGRAM name: là khai báo tên của chương trình.
+ CONST: là nơi khai báo các hằng số.
+ TYPE: là nơi khai báo các data type.
+ VAR: là nơi khai báo các biến.
+ BEGIN ... END: là nội dung chính của chương trình
2.2 Các kiểu dữ liệu trong Pascal
- Kiểu logic
Kiểu dữ liệu logic chỉ có sẵn một loại duy nhất là Boolean. Nó nhận hai kết quả trả về là True và False, ngoài ra, kiểu logic còn có thể sử dụng các phép toán gồm AND, OR, XOR, NOT và các phép so sánh thông thường trong toán.
- Kiểu số nguyên
Một trong các kiểu dữ liệu chiếm ít dung lượng bộ nhớ là loại số nguyên, gồm có: Integer, Longint, Short Int, Byte, Word, Smallint, Longword, Int64 và Cardinal.
- Kiểu số thực
Đây là một trong các kiểu dữ liệu Pascal được đánh giá là có dung lượng lớn dao động từ 4 byte đến 10 byte.
- Kiểu chữ
Trong lập trình ngôn ngữ Pascal, không chỉ tồn tại dữ liệu kiểu số khô khan mà còn có các dữ liệu kiểu chữ với dung lượng thấp
- Kiểu liệt kê
Một trong những kiểu dữ liệu Pascal thường được ứng dụng để liệt kê trong chương trình, cho phép toán tử gán và toán tử quan hệ. Khi dùng kiểu này, bạn cần khai báo theo định dạng:
Type = (, , , , …)
- Kiểu miền con
Kiểu dữ liệu thường được sử dụng để khai báo các biến có trị giá các biến nằm trong dải nhất định
- Kiểu hằng số
Ngoài các kiểu dữ liệu có thể thay đổi được biến số và toán tử, Pascal còn hỗ trợ các hằng số cho bạn dễ đọc và dễ sửa đổi, chỉ cần lưu ý rằng tất cả khai báo hằng số phải được để trước khai báo biến. Các hằng số thường là kiểu số, kiểu chuỗi, kiểu logic và các ký tự.
2.3 Các câu lệnh điều khiển trong Pascal
- write() in ra màn hình liền sau ký tự cuối; ghi file.
2.4 Các hàm và thủ tục trong Pascal
- Thủ tục là một tập hợp của nhiều dòng lệnh mà việc thực hiện thủ tục không trả về giá trị kết quả qua tên thủ tục.
Cú pháp[ ]
Procedure <tên thủ tục>(<danh sách tham số>);
<phần khai báo>
Begin
<dãy lệnh>
End;
Trong đó:
- <danh sách tham số> có thể có hoặc không.
- <phần khai báo> dùng để xác định các hằng, kiểu, biến và cũng có thể xác định các chương trình con khác được sử dụng trong thủ tục. Lưu ý : các kiểu, biến, hằng này chỉ có thể sử dụng trong thủ tục này.
- <dãy lệnh> sẽ được thực hiện khi chạy thủ tục.
- Hàm Pascal là một tập hợp của nhiều dòng lệnh từ các lệnh mặc định để thực thi một việc. Việc thực hiện hàm luôn trả về giá trị kết quả thuộc kiểu xác định và giá trị đó được gán cho tên hàm.
Cấu trúc[ ]
Function <tên hàm>(<danh sách tham số>):<kiểu dữ liệu>;
<phần khai báo>
Begin
<dãy lệnh>
end;
Trong đó:
- <danh sách tham số> có thể có hoặc không.
- <phần khai báo> dùng để xác định các hằng, kiểu, biến và cũng có thể xác định các chương trình con khác được sử dụng trong hàm. Lưu ý các hằng, biến, kiểu chỉ sử dụng trong hàm này.
- <kiểu dữ liệu> hàm có kiểu dữ liệu bởi vì nó cho ra đáp một đáp án.
- <dãy lệnh> là các câu lệnh khi chạy hàm này.
2.5 Mảng và cấu trúc dữ liệu trong Pascal
- Mảng trong Pascal là tập hợp các phần tử cố định có cùng 1 kiểu. Mảng được sử dụng để lưu trữ tập hợp dữ liệu, nhưng sẽ hữu ích hơn nếu lưu trữ tập hợp các biến cùng loại.
Thay vì khai báo từng biến một, chẳng hạn như number1, number2, ... number 100, bạn có thể khai báo biến mảng thành numbers và sử dụng số [1], số [2] và ..., số [100] để biểu diễn từng biến. Mảng được truy cập bởi một chỉ mục.
Mảng trong Pascal bao gồm các phần tử mảng nằm liền kề trong bộ nhớ. Địa chỉ thấp nhất tương ứng với phần tử đầu tiên và địa chỉ cao nhất tương ứng phần tử cuối.
T = ARRAY[KCD] OF KPT
Khi đó việc khai báo một biến A có kiểu là T có thể được viết như sau:
VAR
A: T ;
Hoặc ta có thể khai báo trực tiếp biến A cùng với kiểu cùng mảng trong phần khai báo biến khi không có định nghĩa trong phần TYPE:
VAR
A = ARRAY [Kiểu_chỉ_dẫn] of kiểu_phần_tử.
3. Bài tập thực hành Pascal
3.1 Bài tập cơ bản
- Mục tiêu: Làm quen với cú pháp, cấu trúc chương trình, các kiểu dữ liệu cơ bản (số nguyên, số thực, ký tự, chuỗi), các câu lệnh điều khiển (if-then-else, for, while), các phép toán cơ bản.
- Ví dụ bài tập:
+ Viết chương trình nhập vào hai số nguyên, tính tổng, hiệu, tích, thương và in kết quả ra màn hình.
+ Viết chương trình kiểm tra xem một số nguyên có phải là số chẵn hay không.
+ Viết chương trình in ra bảng cửu chương từ 1 đến 9.Viết chương trình tìm giá trị lớn nhất/nhỏ nhất trong một dãy số.
Lưu ý: Nên bắt đầu với các bài tập đơn giản để làm quen với ngôn ngữ, sau đó tăng dần độ khó.
3.2 Bài tập nâng cao
- Mục tiêu: Áp dụng các kiến thức đã học để giải quyết các bài toán phức tạp hơn, rèn luyện khả năng tư duy thuật toán.
Ví dụ bài tập:
+ Viết chương trình sắp xếp một dãy số theo thứ tự tăng dần/giảm dần (sử dụng các thuật toán như sắp xếp nổi bọt, sắp xếp chọn, sắp xếp chèn).
+ Viết chương trình tìm ước chung lớn nhất và bội chung nhỏ nhất của hai số nguyên.
+ Viết chương trình giải phương trình bậc hai.
+ Viết chương trình mô phỏng các bài toán thực tế như tính tiền lãi ngân hàng, tính điểm trung bình, quản lý danh sách sinh viên.
Lưu ý: Nên tìm hiểu thêm về các thuật toán và cấu trúc dữ liệu để giải quyết các bài toán này hiệu quả hơn.
3.3 Dự án nhỏ với Pascal
- Mục đích: Áp dụng toàn bộ kiến thức đã học để xây dựng một chương trình hoàn chỉnh, giải quyết một vấn đề thực tế.
- Ý tưởng dự án:
+ Quản lý thư viện: nhập thông tin sách, mượn trả sách, tìm kiếm sách.
+ Quản lý điểm sinh viên: nhập điểm, tính điểm trung bình, xếp loại.
+ Game đơn giản: trò chơi đoán số, cờ caro, cờ vua (đơn giản).
+ Chương trình vẽ đồ thị hàm số.
Lưu ý: Nên chọn một dự án phù hợp với khả năng của mình và có tính ứng dụng cao.
3.4 Tài liệu tham khảo
- Sách giáo khoa: Tham khảo sách giáo khoa lập trình Pascal của các tác giả trong nước và nước ngoài.
- Website: Tìm kiếm các bài giảng, bài tập, ví dụ trên các trang web như:
+ YouTube: Tìm kiếm các kênh dạy lập trình Pascal.
+ Các diễn đàn lập trình