Chương trình đơn giản đầu tiên - Phần 1

Khi mới học Pascal ai cũng thích thực hành viết chương trình luôn hơn là học lý thuyết và mình cũng vậy. Cho nên trong series này mình không viết riêng bài về lý thuyết mà lồng ghép nó vào trong các bài hướng dẫn viết chương trình cho các bạn luôn, mình thấy như vậy khá là dễ nhớ. Ngay trong bài thứ 2 thuộc series này, ta sẽ thực hành viết chương trình đơn giản đầu tiên luôn.

#1-Mục đích

Viết được một chương trình đơn giản sử dụng các lệnh như read, readln, write, writeln, clrscr
Biết cách khai báo biến, khai báo hằng
Biết sử dụng một số các phép toán cộng, trừ, nhân, chia...

#2-Cấu trúc một chương trình

Cấu trúc một chương trình gồm hai phần:
Ví dụ cấu trúc một chương trình Pascal
Ví dụ cấu trúc một chương trình Pascal
 1. Phần khai báo
-Khai báo tên chương trình: program <tên chương trình>;

Tên chương trình do người lập trình đặt, tên là một dãy liên tiếp không quá 127 ký tự bao gồm chữ số, chữ cái hoặc dấu gạch dưới và nó phải được bắt đầu bằng chữ cái hoặc dấu gạch dưới.
Ví dụ:
Program ten_chuong_trinh;
program _A21;

-Khai báo thư viện: uses crt;
Bạn chỉ sử dụng được lệnh clrscr; (lệnh xóa màn hình) khi đã khai báo thư viện crt nhé

-Khai báo biến: var a : integer;
-Khai báo hằng const pi=3.14;

2. Phần thân
Phần thân bắt đầu từ Begin cho tới End. (End có dấu chấm nhé), các bạn có thể thấy phần thân chưa có lệnh nào cả.

Đối với các bạn mới bắt đầu thì các bạn chỉ cần đảm bảo cấu trúc như hình dưới cho mình, chưa cần quan tâm tới biến và hằng, tên chương trình thì các bạn có thể thay đổi khác đi nhé
Cấu trúc chương trình đơn giản
Cấu trúc chương trình đơn giản

#3-Một vài lệnh cơ bản

write(<danh sách kết quả ra>);
Danh sách kết quả ra có thể là tên biến, tên hằng, biểu thức, ví dụ:
write('Pascal'); Xuất ra màn hình hằng xâu Pascal, nói đơn giản là nó in ra màn hình chữ Pascal, Pascal quy định xâu ký tự cần được đặt trong dấu nháy đơn.


writeln(<danh sách kết quả ra>); Giống lệnh write nhưng sau đó sẽ đưa con trỏ xuống dòng mới

read(<danh sách biến vào>); Ngược lại với write - dùng để xuất ra một dòng chữ thì read có tác dụng lấy dữ liệu vào và lưu vào biến
Ví dụ: read(a); Đọc dữ liệu và lưu vào biến a
read(a,b,c); Đọc dữ liệu và lưu vào các biến a,b c

readln(<danh sách biến vào>);  Giống lệnh read nhưng sau khi đọc xong thì đưa con trỏ xuống dòng dưới

clrscr; xóa màn hình, cái này cần khai báo thư viện crt

#4-Các ví dụ

#4.1-Ví dụ 1

Viết chương trình xuất ra màn hình dòng Hello World
Bước 1: Đầu tiên bạn hãy đảm bảo cấu trúc chương trình
Có dòng khai báo tên chương trình: program hello_world;
Tiếp theo là phần thân chương trình được bắt đầu bằng:
Begin

end.
Phần thân bây giờ đang rỗng nhé.
Bây giờ ta bắt đầu viết phần thân

Bước 2: Để xuất ra màn hình một dòng chữ ta dùng write, các bạn để ý là dòng chữ mình cần xuất ra nó nằm trong cặp nháy đơn nhé.
Ở bước này ta dùng lệnh write('Hello World'); để xuất ra màn hình dòng Hello World
Tất nhiên là nó phải nằm trong phần thân chương trình

Bước 3: Nhấn tổ hợp Alt + f9 để biên dịch chương trình nhé, nếu thấy có hộp thoại thông báo: Compile Successful là đã thành công nhé

Bây giờ ta nhấn tổ hợp crtl + f9 để chạy chương trình và xem kết quả;

Bước 4: Có phải là bạn không kịp nhìn thấy gì hết phải không, bây giờ bạn hãy bổ sung thêm lệnh readln; vào dưới lệnh write('Hello World'); lệnh này có tác dụng ngừng chương trình lại cho tới khi ta nhấn enter, chương trình khi này sẽ như dưới.

Bạn đừng nhầm lệnh readln; ta dùng ở đây với lệnh readln(a); mà mình giới thiệu ở trên nhé

Khi chạy chương trình sẽ có mấy dòng linh tinh do chương trình nó tự viết ra, kiểu như dưới
Ta có thể xóa nó đi để chỉ còn chữ Hello World thôi, bằng cách sử dụng lệnh xóa màn hình clrscr; , ta sẽ đặt nó vào chỗ đầu tiên của phần thân

Bây giờ hãy nhấn alt + f9 để biên dịch. Ôi không, có lỗi gì đó!
Bạn hãy nhớ rằng, muốn dùng lệnh clrscr; ta phải khai báo thư viện crt đã nhé. Bây giờ hãy khai báo thư viện với lệnh uses crt; vào phần khai báo

Bây giờ nhấn alt + f9 để biên dịch lại nào, thành công phải không?
Bạn nhấn crtl + f9 để xem kết quả nhé
Bây giờ ta có thể thấy dòng Hello World hiện thị một mình trên màn hình

Giải thích chương trình:
Chương trình sẽ chạy từ trên xuống gặp dòng begin thì nó hiểu phần thân đã bắt đầu từ đó

1. Đầu tiên khi chạy chương trình thì màn hình sẽ như thế này, hoặc nếu bạn dùng Turbo Pascal thì sẽ hiển thị dòng khác, nói chung mấy dòng này không liên quan tới chương trình, nó chỉ là mấy dòng thông tin phiên bản của Turbo Pascal hay Free Pascal
Thông tin phiên bản
2. Dòng đầu tiên là : Clrscr;
Trước đó ta khai báo thư viện crt đã nhé : uses crt;
Dòng này sẽ xóa sạch những gì có trên màn hình trước đó, tức là mấy dòng thông tin về phiên bản Turbo Pascal hay Free Pascal bị xóa sạch, chỉ còn lại màn hình đen thui

3. Dòng tiếp theo là : Writeln('Hello World');
Nó sẽ in ra màn hình dòng chữ Hello World

4. Dòng tiếp theo Readln;
Dòng này sẽ dừng màn hình lại, mục đính cho bạn xem kết quả, khi bạn nhấn enter, chương trình chạy tiếp dòng tiếp theo

5. Dòng cuối cùng: End.
Khi chạy tới End. chương trình sẽ dừng lại, mọi dòng lệnh viết dưới end. sẽ vô nghĩa.

#4.2-Ví dụ 2

Để các bạn có hiểu hơn về lệnh Clrscr; các bạn hãy chạy chương trình sau:
Program vd2;
uses crt;
begin
clrscr;
write('Hello World 1');
clrscr;
write('Hello World 2');
readln;
end.
Kết quả là gì? Hello World 2 phải không nào. Thế còn lệnh write('Hello World 1'); thì sao? Chẳng lẽ nó không chạy.

Giải thích phần thân :
1. Đầu tiên là lệnh: clrscr;
Nó sẽ xóa mấy cái dòng thông tin phiên bản của Turbo Pascal hoặc Free Pascal. Kết quả là màn hình đen thui, chả có gì cả

2. Lệnh tiếp theo: write('Hello World 1');
Nó sẽ viết ra màn hình dòng Hello World 1

3. Lệnh tiếp theo: Clrscr;
Nó sẽ xóa sạch màn hình, mà màn hình bây giờ chỉ có dòng Hello World 1, kết quả sau đó màn ình lại đen thui

4. Lệnh tiếp theo : write('Hello World 2');
Tại vì dòng Hello World 1 vừa in ra đã bị xóa nên màn hình bây giờ chỉ còn Hello World 2

Các bạn đã hiểu rồi phải không nào, không phải do lệnh write('Hello World 1'); không chạy mà do nó vừa in kết quả ra thì đã bị lệnh Clrscr; phía dưới xóa mất.

#4.3-Ví dụ 3

Ở ví dụ này mình sẽ giúp cho các bạn hiểu được sự khác biệt của write và writeln. Nói sơ qua thì write sẽ in ra màn hình một dòng chữ và con trỏ sẽ nằm ở ngay sau dòng chữ được in ra, còn với writeln nó cũng in ra màn hình dòng chữ nhưng con trỏ sẽ được chuyển xuống dòng dưới

Các bạn lần lượt chạy hai chương trình sau cho dễ hiểu
Chương trình 1:
Program ct1;
uses crt;
begin
clrscr;
write('Hello');
write('World');
readln;
end.
Chương trình 2:
Program ct2;
uses crt;
begin
clrscr;
writeln('Hello');
writeln('World');
readln;
end.
Kết quả của chương trình 1 là: HelloWorld


Kết quả của chương trình 2 là:
Hello
World
Giải thích:

Vị trí của con trỏ là nơi mà dòng chữ sẽ được in ra nha các bạn ( con trỏ nó cứ nhấp nháy ấy), đối với Chương trình 1:
Sau khi lệnh write('Hello'); chạy xong, con trỏ nằm ngay sau chữ Hello, do đó khi lệnh write('World'); chạy thì chữ World nằm ngay sau chữ Hello.

Chương trình 2:
Sau khi lệnh write('Hello'); chạy xong, con trỏ sẽ được chuyển xuống dòng dưới, do đó khi lệnh write('World'); chạy thì chữ World nằm dưới chữ Hello.

Lưu ý: Nếu bạn dùng lệnh Writeln; thì nó có tác dụng để xuống dòng nhé.
Chạy ví dụ sau và bạn sẽ thấy nó có cùng kết quả của chương trình 2 phía trên.
program vd3;
uses crt;
begin
clrscr;
write('Hello');
writeln;
write('World');
readln;
end.

Giải thích:
write('Hello'); sẽ in ra dòng Hello nhưng không đưa con trỏ xuống dòng dưới
writeln; sẽ đưa con trỏ xuống dòng dưới, write('World'); sẽ in ra chữ World ở dòng dưới chữ Hello - Vị trí hiện tại của con trỏ

#4.4-Ví dụ 4

Ở ví dụ này sẽ hướng dẫn các bạn sử dụng lệnh readln(a); nhé.
Đề bài đơn giản thôi: Nhập vào một số nguyên dương (<30000) sau đó viết ra một thông báo về số vừa nhập vào
Ví dụ như mình nhập vào số 5 thì sẽ xuất ra thông báo Ban vua nhap vao so 5.
Như vậy bài này dùng read(a); để đọc dữ liệu vào và write để in ra thông báo nhé.
Bây giờ chúng ta sẽ bắt đầu viết:

Bước 1: Đầu tiên các bạn hãy đảm bảo cấu trúc chương trình

Bước 2: Đề bài yêu cầu nhập vào một số, vậy ta phải thông báo cho người dùng hãy nhập vào một con số bằng một đoạn thông báo trên màn hình, vậy làm sao để in ra được một dòng thông báo - Một dòng chữ? Ta sẽ dùng lệnh write('Hay nhap vao mot so nguyen'); hoặc writeln('Hay nhap vao mot so nguyen');


Bước 3: Khi nhập vào một số từ bàn phím thì ta cần phải lưu nó lại? Vậy phải lưu vào đâu? Ta sẽ phải lưu nó vào biến, mà muốn sử dụng biến ta phải báo cho nó một cái tên để gọi.

Lấy một ví dụ cho các bạn hiểu hơn về biến nhé: chẳng hạn nhà bạn đăng tin cần thuê một người làm việc gì đó, thì người đó sẽ đến và khai báo với bố mẹ bạn về tên, tuổi,... của anh ta rồi mới vào làm đúng không.

Biến cũng tương tự, nó cần đi vào phần thân chương trình để làm một công việc là lưu trữ thông tin, vậy đầu tiên ta phải khai báo tên, kiểu dữ liệu của nó trước rồi mới được dùng.

Mỗi biến sẽ lưu được 1 giá trị.
Cách khai báo như sau:
var <danh sách biến> : <kiểu dữ liệu>;
-Danh sách biến: là sách các tên biến có cùng kiểu dữ liệu, các tên biến phân cách nhau bằng dấu phẩy(,)
-Kiểu dữ liệu: ở bài trước mình nói rồi đấy, nó là integer hoặc real hoặc char hoặc ...

Ví dụ:
var a,b,c : integer;
Dòng trên khai báo ba biến a, b c có kiểu dữ liệu là integer, như vậy 3 biến này sẽ lưu được những giá trị như 1 hoặc 2 hoặc 3 hoăc -1 hoặc 0 hoặc ....

Nói thêm về chỗ chọn kiểu dữ liệu, bạn cần chọn kiểu dữ liệu cho phù hợp, chẳng hạn nếu biến đó chỉ để lưu số nguyên thì bạn có thể chọn Integer, nhưng nếu lưu số thực thì bạn phải chọn là real

Bạn cũng có thể khai báo nhiều danh sách biến, ví dụ:
var a,b,c: integer;
k, qk, bqk : real;
Như trên thì sẽ có hai danh sách biến, danh sách thứ nhất gồm 3 biến a,b c thuộc kiểu integer, danh sách thứ 2 thuộc kiểu real gồm 3 biến là k, qkbqk.
Vậy cấu trúc chung như sau:
var: <danh sách biến 1> : <kiểu dữ liệu>;
<danh sách biến 2> : <kiểu dữ liệu >;
...
Bạn cần dùng bao nhiêu biến, hay biến thuộc kiểu gì thì hãy tự khai báo vào chương trình nhé. Và cũng lưu ý đặt tên biến sao cho dễ hiểu và dễ nhớ tí, không sau này đọc lại thì lại chẳng hiểu gì.

Ta đã biết các khai báo biến, vậy bạn đã biết phải đặt đoạn khai báo này ở đâu chưa? Theo như cấu trúc một chương trình mà mình đã nói ở trên thì ta sẽ đặt đoạn khai báo biến ở phần khai báo (trước phần thân);

Ok, bây giờ quay lại ví dụ, người ta yêu cầu nhập vào một số nguyên, vậy ta cần một biến, ta sẽ chọn cho nó một cái tên để gọi và một kiểu dữ liệu. tên thì tùy bạn, mình chọn là biến a. Còn kiểu dữ liệu, người ta bảo là số nguyên, vậy bạn hãy tìm trong bài trước xem kiểu số nguyên gồm những kiểu dữ liệu nào.

Bạn có thể chọn integer hoặc longint hoặc byte hoặc word, tùy vào độ lớn của số mà bạn nhập vào.
Ví dụ số bạn nhập vào là 256 mà bạn khai báo biến kiểu byte (từ 0 đến 255) như vậy là lỗi ngay nhé, trong trường hợp này bạn nên khai báo integer là vừa đủ, số nhập vào nhỏ hơn 30000 mà kiểu integer tối đa tới 32767.

Như vậy sẽ là : var a : integer;


Bước 4: Ta đã thông báo với người dùng hãy nhập vào một số, ta cũng đã chuẩn bị sẵn một biến để lưu nó, vậy bây giờ ta phải đọc số mà người dùng nhập như thế nào? Ta sẽ dùng lệnh readln(a); hoặc read(a);
Ta sẽ đọc số sau khi thông báo nên ta thêm readln(a); nằm dưới writeln('Hay nhap vao mot so nguyen');

Lệnh readln(a); sẽ đọc một số người dùng nhập từ bàn phím và lưu vào biến a (biến cần phải được khai báo trước), sau đó con trỏ sẽ nhảy xuống dòng dưới. Lệnh read(a); thì tương tự như readln(a); chỉ khác nó không đưa con trỏ xuống dòng tiếp theo, bạn thử thay readln(a); thành read(a); để thấy sự khác biệt.

Bước 5: In ra một thông báo về số đã nhập vào.

Vậy ta dùng lệnh write (hoặc writeln)  để in ra thông báo, nhưng làm sao để in ra số vừa nhập vào? Ta dùng lệnh sau:
write( 'So ban vua nhap vao la: ' , a );
Ở trên mình đã đưa cho các bạn cáu trúc lệnh Writeln(<Danh sách kết quả ra>);
Danh sách kết quả ra gồm hai thành phần, phần màu đỏ bao gồm cả hai dấu nháy đơn, gọi là hằng xâu, Pascal quy định chuỗi ký tự cần phải được đặt trong cặp dấu nháy đơn mới in ra được nhé
Còn phần màu xanh, nó là tên biến mà mình muốn in giá trị của nó ra màn hình.

Bạn cần hiểu có hai thành phần được in ra (màu đỏ với màu xanh ) và hai thành phần này được ngăn cách bằng dấu phẩy và chuỗi ký tự cần in ra nó nằm trong cặp dấu nháy kép.

Như vậy, lệnh write (hay writeln) có thể in ra một lúc nhiều thứ nhé, và các thành phần sẽ phân cách nhau bằng dấu phẩy. Ví dụ nếu bạn có 3 biến a,b c bạn có thể in một lúc 3 biến như sau write( a , b , );
Nói thêm chỗ này, nếu bạn chỉ muốn in duy nhất giá trị biến a ra thì dùng lệnh write(a);

Bước 6: Bạn cần phải dừng chương trình để có thể xem kết quả nên ta dùng readln;


Vậy là xong, bây giờ hãy chạy xem sao, bạn cũng có thể dùng thêm lệnh clrscr; cho dễ nhìn.
Sau khi crtl + f9 thì dòng thông báo hiện ra
Bạn nhập vào một số bằng bàn phím sau đó enter
Đây là kết quả

#4.5-Ví dụ 5

Ví dụ này mình sẽ giúp các bạn hiểu hiểu thêm về read và readln
Chúng ta không chỉ đọc vào được một biến với mỗi lệnh read hay readln mà là nhiều nhé.

Ví dụ: Viết chương trình nhập vào 3 số nguyên dương (<30000) và hiện thị một đoạn thông báo về 3 số vừa nhập.
Ví dụ 5 gần như giống hệt ví dụ 4, chỉ khác thay vì chỉ nhập vào 1 số ở ví dụ 4 thì ở ví dụ 5 yêu cầu nhập 3 số.

Bước 1: Đảm bảo cấu trúc chương trình cho mình

Bước 2: Khai báo biến.
Yếu cầu nhập vào 3 số nên ta khai báo 3 biến, kiểu dữ liệu vẫn là integer;
var a,b,c : integer;


Bước 3: In dòng thông báo nhập vào 3 số
writeln('Nhap vao 3 so ');


Bước 4: Bước này là sự khác biệt

Bạn có thể dùng read(a,b,c); hoặc readln(a,b,c); để đọc hết 3 biến cùng một lúc.
Nếu đọc từng biến một thì là đoạn này:
read(a); read(b); read(c); 
Hoặc đoạn này:
readln(a); readln(b); readln(c);

Nếu dùng read(a,b,c); thì cách bạn nhập số vào như sau: bạn viết 3 số cách nhau bằng một khoảng trắng rồi enter. Số đầu tiên nhập vào được lưu vào biến a, số thứ hai lưu vào biến b và số thứ 3 lưu vào biến c, cái này tương tự cho readln(a,b,c);

Nếu dùng readln(a,b,c);  Bạn nhập số đầu tiên vào rồi enter , bạn sẽ thấy con trỏ nhảy xuống dòng dưới phải không, tiếp tục nhập số rồi enter, như vậy là nhập được số thứ nhất, tiếp tục cho hai số còn lại.

Nếu dùng read(a); read(b); read(c); 
Đầu tiên là lệnh read(a); chạy, bạn nhập vào một số và nó được lưu vào biến a, tiếp theo lệnh read(b); chạy, bạn nhập số vào và nó được lưu vào biến b. Tương tự cho read(c);


Nếu dùng readln(a); readln(b); readln(c); 
Đầu tiên là lệnh readln(a); chạy, bạn nhập vào một số và nó được lưu vào biến a đồng thời con trỏ nhảy xuống dòng tiếp theo. Tiếp theo lệnh readln(b); chạy, bạn nhập số vào và nó được lưu vào biến b đồng thời con trỏ chuyển xuống dòng dưới. Tương tự cho readln(c);


Bạn hãy thử hết cả 4 cách để cảm nhận sự khác biệt. Mình chọn read(a,b,c); nhé.

Bước 5: Ta sẽ in ra một đoạn thông báo kiểu như 3 so vua nhap vao la 1 2 3 (giả sử 3 số nhập vào lần lượt là 1,2 và 3)
Ta dùng lệnh sau: Writeln( '3 so ban vua nhap vao la ' , a , ' ' , b , ' ', );
Bạn nhìn kĩ nhé, trong lệnh writeln trên có năm thành phần, đầu tiên là chuỗi (hằng xâu) '3 so ban vua nhap vao la '  , tiếp theo là biến a, tiếp theo là khoảng trắng, khoảng trắng cũng được xem là một ký tự và nó cũng được đặt trong dấu nháy đơn, tiếp theo là biến b, tiêp theo lại là một khoảng trắng và cuối cùng là biến c.


Bước 6: Dùng lệnh readln; để dừng chương trình, xem kết quả.

Bây giờ bạn hãy chạy chương trình đi nhé.

Mình định viết hết trong một bài luôn nhưng do nó dài quá nên tạm ngắt ở đây, các bạn hãy làm đi làm lại cho nhuần nhuyển hết các ví dụ, quan trọng phải hiểu được ý nghĩa của các lệnh trong chương trình. Nếu có gì không hiểu hãy để lại bình luận hoặc gửi tin nhắn qua Facebook cho mình để được giải đáp. Nhớ nhé, không hiểu thì hỏi liền, đây là những cái rất nền tảng, bạn không được những cái này thì qua bài sau sẽ không hiểu gì đâu, hãy học tới đâu chắc tới đó.

Comments

  1. Cảm ơn anh rất nhiều ạ! Những phần này trên lớp em nghe cũng không hiểu rõ lắm, nhưng mà giờ thì khác rồi :x Anh cố gắng ra thêm bài anh nhé! Chúc anh sức khoẻ ạ.

    ReplyDelete
  2. bạn cần thay đổi giao diện web đi. nhìn xấu quá

    ReplyDelete

Post a Comment



» Vui lòng không spam vì nó sẽ bị xóa ngay sau đó.
» Nếu chèn code hãy mã hóa trước khi chèn vào nhận xét.
» Nếu thủ thuật Blog không áp dụng được thì hãy để lại URL blog để mình tiện kiểm tra.