Showing posts with label Pascal. Show all posts
Showing posts with label Pascal. Show all posts

Dec 4, 2017

[Tìm hiểu Pascal] "Hello World!"

Mọi người đang đọc bài 5 trong series Tìm hiểu ngôn ngữ lập trình Pascal
Lưu ý: Để hiểu được nội dung bài viết 1 cách tốt nhất, khuyến cáo bạn đọc hãy mở Free Pascal và làm theo ví dụ trong bài. Để biết cách cài đặt Free Pascal vui lòng xem lại những bài trước.

I. "Hello, World!"

Chúng ta sẽ cùng bắt đầu với chương trình đơn giản nhất mà mọi lập trình viên đều thực hiện khi học một ngôn ngữ lập trình mới: Hãy xuất ra màn hình dòng chứ "Hello, World!".
begin write('Hello, World!'); end.
Dòng 1 và 3 đánh dấu bắt đầu và kết thúc của chương trình: cặp từ khoá begin - end. (sau end có dấu chấm).  Dòng 2 gọi hàm xuất ra màn hình write, truyền vào đó câu 'Hello, World'. Quá chuẩn rồi còn gì :>
Q: Ơ khoan, sao tui chạy mà không nhìn thấy gì vậy?
A: Thật ra là nó có chạy, có xuất ra màn hình dòng chữ "Hello, World!", luôn rồi đấy. Chỉ là ngay sau dòng đó là từ khoá end, mà sau end thì kết thúc nên nó thoát ra ngoài luôn. Mà máy thì chạy nhanh quá, CPU tới 1.0 Ghz là 1 tỉ phép tính trên giây, nhìn không kịp cũng phải. Vậy thì mấu chốt ở đây là ta cần thêm 1 lệnh nào đó để yêu cầu máy dừng lại. Thật may mắn, lệnh `readln` của Pascal sẽ ngưng đọng chương trình lại, chờ người dùng bấm enter rồi mới thoát.
begin 
write('Hello, World!');
readln; 
end.
Q: Ờ chương trình của tui nó chạy rồi đó, hurayyyy. Cơ mà tui nhớ là trường tui dạy nó dài lắm mà?

A: Ý của bạn có phải là nó như thế này không nè:
program HelloWorld;
uses crt;
begin
clrscr;
write('Hello, World!');
readln;
end.

Khi chạy thử, ta thấy chương trình xoá toàn bộ màn hình console sau đó mới in ra dòng chữ "Hello, World!".

Chương trình này nhiều hơn chương trình trước đó ở dòng 1,2,4. Hãy dùng Free Pascal để xoá 1 hoặc 1 vài dòng trong 3 dòng trên thử xem thế nào nhé!

Dòng 1: "program" là từ khoá xác định tên chương trình. Nó không có ý nghĩa quan trọng đối với chương trình, hoàn toàn có thể bỏ qua.
Dòng 2: "uses" là từ khoá dùng để khai báo thư viện. Thư viện được khai báo ở đây có tên là "crt". Thư viện là 1 tập hợp những chương trình con (hàm, thủ tục) thực hiện 1 số chức năng liên quan với nhau.
Dòng 4: "clrscr" - chính là lệnh xoá màn hình. Nếu bạn làm bài tập trên, bạn sẽ phát hiện nếu không có dòng 2 khai báo thư viện thì dòng lệnh này không chạy được. Lí do là "clrscr" chính là 1 chương trình con thuộc thư viện crt.

II. 1 chương trình Pascal gồm những phần nào?

Phần thân là phần nằm giữa cặp từ khoá "begin" và "end" (có dấu chấm ở cuối end). Đây là phần đóng vai trò chính trong 1 chương trình do mọi thao tác mà chương trình thực hiện đều xuất phát từ phần thân chương trình.
Phần còn lại là phần khai báo, dùng để định nghĩa tất cả những gì được dùng trong phần thân chương trình nằm ngoài cú pháp cơ bản của Pascal hay của thư viện system.
III. Đôi nét về thư viện

Thư viện là tập hợp của nhiều chương trình con được viết sẵn nhằm mục đích tái sử dụng lại trong nhiều chương trình khác nhau.
Chương trình con là một dãy lệnh mô tả một số thao tác nhất định và có thể được thực hiện (được gọi) từ nhiều vị trí trong chương trình. Chương trình con được viết khi cần sử dụng lại đoạn lệnh đó nhiều lần. Hiểu nôm na là, trong 1 chương trình, đôi khi 1 đoạn lệnh có cùng 1 công dụng nhưng được viết nhiều lần ở nhiều vị trí khác nhau, do đó người ta viết chương trình con, để khi cần thì chỉ cần gọi tên chương trình con đó.
Mọi chương trình Pascal đều được ngầm định tích hợp thư viện system, gồm 1 số chương trình con như write/writeln, read/readln,...
Ở ví dụ trên, thư viện "system" không chứa chương trình con nào có khả năng xoá màn hình nhưng trong thư viện "crt" có thủ thục "clrscr" mà chúng ta cần tìm nên ta cần khai báo thư viện "crt" bằng câu lệnh "uses crt;" để sử dụng được nó.

IV. Lệnh đơn - Lệnh có cấu trúc

1. Lệnh đơn

Trong ví dụ trên

clrscr;
write('Hello, World!');
readln;
là những lệnh đơn. Cả 3 lệnh đơn trên đều là lệnh thủ tục do nó gọi thủ tục có sẵn (clrscr từ thư viện crt, write và readln từ thư viện system). Ngoài lệnh thủ tục, lệnh đơn còn có 2 loại khác là lệnh gánlệnh nhảy cóc (goto) (sẽ tìm hiểu trong các bài sau).
phần lí thuyết - còn tiếp

Thực hành

Một bài thực hành nhỏ để các bạn review lại kiến thức đã nắm được từ bài trên, bạn nào có nhã hứng trao đổi về bài, có thể comment dưới blog này hoặc inbox facebook để nói chuyện nhé ^^
Đề bài của chúng ta sẽ là: Hãy viết 1 chương trình thực hiện những lệnh sau: 
- Xuất ra màn hình họ và tên của bạn rồi chờ người dùng bấm enter
- Sau khi bấm enter thì xuất tiếp ra màn hình ngày tháng năm sinh của bạn
- Sau đó bấm enter thì chương trình sẽ thoát.
Gợi ý: Để xuống dòng sau khi xuất ra màn hình, bạn thay "write" bằng "writeln" nhé ^^
Snowy Nguyễn

Nov 20, 2017

[Tìm hiểu Pascal] Thao tác với IDE Free Pascal

(Đây là bài viết thứ 4 trong series Tìm hiểu về ngôn ngữ lập trình Pascal)

Hmmm đã lâu mình không viết bài mới, bài viết này mình sẽ hướng dẫn cho các bạn một số thao tác cơ bản trên IDE Free Pascal.
Xem các bài viết trước đây tại: --> Click <--

Lưu ý: IDE Free Pascal không hỗ trợ tiếng Việt, các bạn vui lòng tắt bộ gõ tiếng Việt trước khi dùng.

I. Tạo file mới

Vào File -> chọn New

II. Lưu file

Để thực thi được file thì phải lưu file trước. Vào File -> Save (hoặc bấm F2). Nhập đường dẫn cần lưu file (1) vào ô rồi bấm OK (2).
Vd: Bạn muốn lưu file vào thư mục Hoctap trong ổ D với tên test.pas.
Cách 1: Nhập vào (1): D:\Hoctap\test.pas -> OK
Cách 2: Nhập vào (1): D: -> tìm và bấm đúp thư mục Hoctap ở khung Files bên dưới -> nhập vào (1) test.pas -> OK

III. Mở file có sẵn

Vào File -> Open (hoặc bấm F3). 
Hộp thoại xuất hiện tương tự ở trên, nhập đường dẫn cần mở theo mẫu ví dụ ở trên -> OK

IV. Đóng 1 file đang mở

Bấm vào cái nút màu xanh lá cây ở phía trên bên trái giao diện của bạn

V. Biên dịch chương trình

Vào Compile -> Compile (hoặc Alt+F9), nếu xuất hiện hộp thoại Compile successful thì bạn không mắc lỗi biên dịch, nếu không thì lỗi sẽ xuất hiện yêu cầu bạn sửa.

 Biên dịch lỗi: Ở vị trí dòng 9 cột 4, lẽ ra phải là dấu . thì trong code lại là ; nên sai cú pháp
Vị trí (9,4) bị sai
Sau khi sửa lại, chương trình biên dịch thành công

VI. Chạy chương trình

Vào Run -> Run (Ctrl + F9).


(còn tiếp...)
Snowy Nguyễn

Apr 28, 2017

[Tìm hiểu Pascal] Các khái niệm cơ bản

Qua bài viết này chúng ta sẽ nắm rõ hơn các thông tin, khái niệm có trong ngôn ngữ lập trình Pascal

1. Bộ chữ viết

Bộ chữ trong ngôn ngữ Pascal gồm:
- 26 chữ cái in hoa: A, B, C… Z
- 26 chữ cái in thường: a, b, c, … z
- Dấu gạch dưới _ (“Shift” + “-”).
- 10 chữ số thập phân: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
- Các ký hiệu toán học: +, -, *, /, =, <, >, (, )
- Các ký hiệu đặc biệt: . , : ; [ ] ? % @ \ | ! # $ { }
- Dấu khoảng trắng.

2. Tên, từ khoá

- Từ khoá: Là những từ được quy định sẵn trong ngôn ngữ lập trình, được thiết kế chỉ dùng cho 1 mục đích nhất định, không thể thay đổi, không thể dùng những từ này để đặt tên biến, tên hàm.
- Tên gồm 2 loại
+ Tên chuẩn: Là các tên được ngôn ngữ lập trình định nghĩa sẵn, tuy vậy ta có thể định nghĩa lại, và việc định nghĩa lại sẽ làm mất đi ý nghĩa ban đầu của tên dành riêng. Tên chuẩn thường là những hàm có sẵn, câu lệnh đơn,…
+ Tên do người dùng đặt: Là các tên do người lập trình tự tạo ra, sử dụng cho mục đích lập trình riêng. Tên này là các tên biền, hằng do chính chúng ta đặt
- Cho dù là đặt tên cho biến hay tên của chương trình, tên do người dùng đặt đều phải tuân thủ quy tắc đặt tên có sẵn:
+ Chỉ bao gồm các chữ cái in hoa (A-Z), in thường (a-z), chữ số và dấu gạch dưới.
+ Chỉ bắt đầu bằng chữ cái in hoa (A-Z), in thường (a-z).
+ Không chứa dấu cách
+ Không trùng với từ khoá
+ Tên phải ngắn hơn 256 kí tự

3. Thư viện

- Thư viện: là tập hợp những câu lệnh được quy định sẵn để sử dụng trong 1 chương trình nào đó. Có 2 loại thư viện: thư viện do người dùng tạo ra & thư viện chuẩn của Pascal tự tạo ra.
- Các thư viện chuẩn thường gặp là:
+ Crt: Thư viện thông dụng, dùng để xử lí các thuật toán cơ bản, liên quan đến chế độ màn hình văn bản.
+ Dos: Thư viện hệ thống, dùng khi cần xử lí những thông tin trực tiếp liên quan đến hệ điều hành MS-DOS, thường dùng khi cần khai báo 1 số thông tin như ngày tháng năm hiện tại, thông tin về cấu trúc cây thư mục, ...
+ Sysutils: Thư viện chứa 1 số công cụ thường dùng như chuyển đổi kiểu chuỗi sang kiểu số
+ Printer: Thư viện chứa những câu lệnh liên quan đến chế độ in ấn qua cổng LPT1 (Connector DB25).
+ Graph: Thư viện đồ họa, chứa những câu lệnh liên quan đến xử lí đồ họa.

4. Màn hình làm việc

Cần phân biệt giữa 2 khái niệm: màn hình soạn thảo & màn hình làm việc
- Màn hình soạn thảo: Là màn hình được hiển thị khi khởi chạy Pascal, dùng để gõ mã của chương trình.
- Màn hình làm việc: Là màn hình được hiển thị khi chạy 1 chương trình đã compile thành công. Màn hình này trên Free Pascal thông thường có 80 cột, 25 dòng.
- Tọa độ màn hình: Mỗi vị trí trên màn hình làm việc được xác định bởi tọa độ tương ứng, ví dụ:
+ Tọa độ (1,1) chỉ vị trí trên cùng bên trái màn hình.
+ Tọa độ (14,25) chỉ vị trí nằm ở cột thứ 14, hàng thứ 25 của màn hình.

Bài thứ 2 của loạt bài "Tìm hiểu chung về ngôn ngữ lập trình Pascal" đến đây là hết. Hẹn gặp các bạn ở bài thứ 3.
Snowy Nguyễn

[Tìm hiểu Pascal] Cách cài đặt Free Pascal

(Đây là bài viết thuộc loạt bài Tìm hiểu về ngôn ngữ lập trình Pascal)


Pascal là 1 ngôn ngữ lập trình phổ biến, được sử dụng để giảng dạy trong các trường công lập ở nước ta hiện nay vì tính dễ hiểu, không phức tạp so với nhiều ngôn ngữ lập trình khác.

Pascal có 2 IDE (Integrated Development Environment - Môi trường phát triển tích hợp) chính là Turbo Pascal và Free Pascal. Bài viết này sẽ hướng dẫn các bạn cách cài đặt Free Pascal trên máy tính của mình

Cách tải Free Pascal

Windows: --> Click <--
Các phiên bản khác:  --> Click <--

Cách cài đặt Free Pascal

Bước 1: Tải file cài đặt theo đường dẫn ở trên
Bước 2: Khởi chạy file cài đặt. Cửa sổ cài đặt xuất hiện, bấm Next
Bước 3: Chọn thư mục cài đặt. Có thể để nguyên mặc định hoặc chọn đường dẫn khác bằng cách bấm vào Browse
Bước 4: Chọn kiểu cài đặt: Nên chọn Full installation để được cài đặt đầy đủ
Bước 5: Chọn Next để xác nhận -> Install. Sau khi quá trình cài đặt hoàn tất, bấm OK để file readme.txt hiện ra như hình dưới.
Đóng file này lại và tìm icon của phần mềm trên màn hình desktop.

Như vậy là bạn đã cài đặt xong Free Pascal :)

Một số câu hỏi thường gặp

Q: Bấm đúp vào file cài đặt nhưng lại báo lỗi như hình thì phải xử lí thế nào?
A: Lỗi này xuất hiện do Windows không có quyền truy cập vào file. Có nhiều cách giải quyết cho trường hợp này:
- Nếu file được lưu trên USB, hãy copy sang ổ cứng của máy tính để khởi chạy lại
- Chạy file dưới quyền quản trị bằng cách nhấp chuột phải vào file và chọn Run as administrator
- Đảm bảo tệp không bị can thiệp (đổi tên, di chuyển, xoá,...) trong khi khởi chạy
- Kiểm tra xem phần mềm diệt virus có chặn tệp không...

Q: Tại sao màn hình làm việc của bản Pascal này lại nhỏ hơn màn hình làm việc của Pascal ở trường học?
A: Do trường học sử dụng phần mềm Turbo Pascal, khác với bản Free Pascal được giới thiệu trong bài này. 1 số đặc tính khác nhau có thể nói tới là:

Q: Tôi muốn chỉnh màn hình làm việc của Free Pascal to hơn thì phải làm như thế nào?
A: Bạn bấm chuột phải vào logo Free Pascal IDE (1) rồi chọn Properties (2)...
... Khi hộp thoại xuất hiện, bạn chọn tab Font (1), chọn font chữ (2) và cỡ chữ (3) mà bạn ưng ý rồi bấm OK (4)

Note: Bài này cũng chính là bài viết mở đầu cho loạt bài Tìm hiểu về ngôn ngữ lập trình Pascal. Rất mong được sự ủng hộ, đóng góp của tất cả mọi người
Snowy Nguyễn

Apr 26, 2017

[Tìm hiểu Pascal] Thuật toán - P1

Đây là bài thứ 3 trong series về "Tìm hiểu chung về ngôn ngữ lập trình Pascal"
Bài này chúng ta sẽ không đi chuyên sâu về mặt cú pháp mà nhằm giải thích cho các bạn về cái cốt lõi của một chương trình, một bài toán. Không quan trọng bạn có dùng ngôn ngữ Pascal hay không, có thể C, Java, Python,... nhưng thuật toán vẫn là phần quan trọng nhất.

I. Thuật toán là gì?

Trong đời sống, các bạn sẽ gặp rất nhiều công việc yêu cầu phải được giải quyết một cách tuần tự nhằm một mục đích nào đó. Ví dụ:
  • Ốp la trứng: ban đầu có 1 quả trứng + dầu ăn + chảo + dĩa
    1. Làm nóng chảo, cho dầu ăn vào
    2. Cho trứng vào chiên
    3. Trứng chín, tắt bếp
    4. Trình bày ra dĩa
    • => Kết quả: ngồi nhìn cái trứng mới chiên (vì thuật toán đâu có kêu ăn đâu)
  • Giải phương trình 2x+1=3: ban đầu: phương trình là gì dợ, x là gì dợ, đưa em về hành tinh của mình đi :<
    1. Chuyển vế: 2x=3-1=2
    2. Chia cả 2 vế cho 2: x=2/2=1
    3. Kết luận PT có tập nghiệm S={1};
    • => Kết quả: ý ý phương trình có nghiệm x=1 kìa vi diệu quá há há há
  • Tả con chó nhà em: ban đầu: chả ai biết đến con chó nhà em trừ mấy ông bắt chó
    1. Sáng em dậy, gâu gâu chó sủa
    2. Trưa em về, chó sủa gâu gâu
    3. Chiều em đi, gâu gâu chó sủa
    4. Tối em ngủ, chó sủa gâu gâu
    • => Kết quả: đưa con chó lên trang vở, lưu danh sử sách
  • Làm hacker: ban đầu: một tài khoản facebook + một tâm hồn trẻ nghé
    1. Lên facebook đổi avatar a no my ớt
    2. Lên google search "cách rjp njck facebook"
    3. Mở cmd lên, gõ ipconfig
    4. Cap màn hình lại, khoe facebook hù thiên hạ
    • => Kết quả: đẳng thức (trẻ nghé) + (biết dùng facebook) = ("hacker") được chứng minh
Qua một chuỗi ví dụ vô cùng sinh động, cụ thể (=]]]]]) thì ta có thể tóm gọn lại rằng: 
Thuật toán (algorithm) là tập hợp hữu hạn các thao tác, chỉ thị được thực hiện liên tục và tuần tự, nhằm mục đích dẫn sự việc từ trạng thái ban đầu tới trạng thái kết quả cuối cùng đã được dự đoán.

II. Các cách biểu diễn thuật toán

1. Dùng ngôn ngữ tự nhiên: 

Cách mô tả các thuật toán như trong ví dụ trên gọi là dùng ngôn ngữ tự nhiên

2. Dùng sơ đồ khối (Flowchart)

Là cách dùng những hình vẽ, kí hiệu được quy định sẵn để vẽ thành một sơ đồ một cách trực quan, dễ hiều. Vd như hình sau (về cách dùng sơ đồ khối, mời bạn đọc search google với từ khoá "flowchart" để biết thêm chi tiết :D )

3. Dùng mã giả (Pseudocode)

Là cách dùng một số quy ước cơ bản của một (hoặc một số) ngôn ngữ lập trình nào đó, được bỏ đi những chi tiết không cần thiết và có sự hỗ trợ của ngôn ngữ tự nhiên hoặc kí hiệu toán học đơn giản. Dùng mã giả giúp người đọc không cần phải tìm hiểu về một ngôn ngử lập trình nào đó mà vẫn có thể hiểu được giải thuật một cách chính xác nhất. Cách này sẽ được nói sâu hơn khi tìm hiểu ở các bài sau.

III. Các tính chất của thuật toán

1. Tính chính xác

Tất nhiên, đây là tính chất quan trọng nhất của thuật toán. Tính chất này để đảm bảo kết quả tính toán, trạng thái cuối cùng sau quá trình tính toán là đúng. (cái này chắc khỏi ví dụ nha :D )

2. Tính rõ ràng

Thuật toán phải được cấu thành từ các câu lệnh minh bạch được sắp xếp theo trình tự hợp lí
VD: Thuật toán làm h@cker (kéo lên trên xem lại): thay vì cap màn hình khi ipconfig thì lại đi cap lúc này thì...

3. Tính khách quan

Thuật toán dù được thực hiện bởi ai, bằng hình thức nào thì cũng phải cho kết quả như nhau.

4. Tính phổ dụng

Tính chất này để đảm bảo kết quả tính toán, trạng thái cuối cùng sau quá trình tính toán là đúng với mọi dữ liệu đầu vào tương tự nhau.

5. Tính kết thúc

Thuật toán phải kết thúc sau một số hữu hạn bước. Tính chất này nhằm tránh một (hoặc một số) câu lệnh bị lặp lại một cách vô hạn gây lãng phí tai nguyên.

Bài này chắc cũng hơi dài rồi nhỉ, thôi hẹn gặp các bạn ở phần 2 của bài ^^ 
SnowyNguyễn