Kiểu chuỗi (String) cho phép ta lưu trữ giá trị ở dạng bảng chữ cái gồm một dãy ký tự(khác với kiểu Char chỉ là một ký tự).
Khai báo:
var <tên biến>:string[max];
Ví dụ
Kiểu chuỗi (String) cho phép ta lưu trữ giá trị ở dạng bảng chữ cái gồm một dãy ký tự(khác với kiểu Char chỉ là một ký tự).
Khai báo:
var <tên biến>:string[max];
Ví dụ
Vòng lặp được sử dụng khi có một thao tác được lặp đi lặp lại một cách tự động theo một quy tắc nhất định.
Ví dụ, muốn in dòng chữ Hello World 5 lần thì bạn phải viết đi viết lại 5 lần, việc này rất đơn giản, nhưng nếu bạn muốn viết 100 dòng thì sao. Quả là ác mộng nếu không có vòng lặp.
Vòng lặp For … To … Do được sử dụng khi ta biết trước số lần lặp
Cú pháp For <Giá trị đầu> To <Giá trị cuối> Do <Khối công việc>
Hãy xem ví dụ sau:
Xét ví dụ sau:
“Nếu Manchester thua trong trận này, tôi sẽ bỏ xem bóng đá”
“Nếu em yêu tôi thì em phải bỏ thằng kia, còn không thì ta chia tay”
Câu lệnh điều kiện xảy ra khi ta muốn kiểm soát dòng chương trình theo một hướng nhất định. Trong lập trình, câu lệnh điều kiện còn gọi là rẽ nhánh vì nó có thể rẽ sang các hướng khác nhau. Chúng ta sử dụng câu lệnh điều kiện ở hầu hết các chương trình.
Ví dụ sau mô tả cách sử dụng câu lệnh điều kiện để tìm số lớn nhất trong 3 số.
[codesyntax lang="pascal"]
Program tim_so_lon_nhat;
uses crt;
var a,b,c:integer;
begin
clrscr;
a:=9;
b:=1;
c:=13;
if a>=b and a>=c then write('So lon nhat la A');
if b>=a and b>=c then write('So lon nhat la B');
if c>=b and c>=a then write('So lon nhat la C');
readln
end.
[/codesyntax]
Như vậy kết quả hiển thị ra sẽ là “So lon nhat la C” vì trong 3 số này có C là lớn nhất.
Cú pháp chung:
Dạng 1)
if <điều kiện> then <câu lệnh>;
Dạng 2 (có else)
if <điều kiện> then <câu lệnh 1> else <câu lệnh 2>;
Trong đó:
Như vậy ví dụ trên cũng có thể được viết lại:
[codesyntax lang="pascal"]
Program tim_so_lon_nhat;
uses crt;
var a,b,c:integer;
begin
clrscr;
a:=18;
b:=1;
c:=13;
if (a>=b) and (a>=c) then write('So lon nhat la A')
else
if (b>=a) and (b>=c) then write('So lon nhat la B')
else
write('So lon nhat la C');
readln
end.
[/codesyntax]
Ở ví dụ trên, sau lệnh if ta chỉ thực hiện một câu lệnh. Trong nhiều trường hợp, ta cần phải thực hiện một nhóm câu lệnh. Trường hợp đó, ta sử dụng cặp từ khoá Begin … End;
Hãy xem ví dụ sau:
[codesyntax lang="pascal"]
program giai_pt_bac_2;
uses crt;
var a,b,c,x1,x2,delta: real;
begin
clrscr;
writeln('Nhap A, B, C');
readln(a, b, c);
delta:=b*b-4*a*c;
if(delta<0) then writeln('Vo nghiem');
if(delta = 0) then writeln('Nghiem kep X1 = X2 = ', -b/(2*a):6:3)
else
begin
x1:=(-b+sqrt(delta))/(2*a);
x2:=(-b-sqrt(delta))/(2*a);
writeln('X1 = ',x1:6:3,'X2 = ',x2:6:3);
end;
readln
end.
[/codesyntax]
Ở ví dụ này, khi biệt số Delta > 0 ta đã thực hiện 3 hành động, tính X1, tính X2 và hiển thị kết quả, nếu không có cặp Begin … End; chương trình chỉ có thể thực hiện hành động đầu tiên, tức là tính X1, các hành động sau bị lờ đi.
Chúng ta sử dụng Case … Of để rẽ nhánh trong các điều kiện là những con số cụ thể và nhiều hướng. Việc sử dụng Case … Of sẽ làm hệ thống chạy nhanh hơn, thời gian viết cũng giảm đáng kể.
Ví dụ
[codesyntax lang="pascal"]
program hien_thi_sinhnhat;
uses crt;
var thang:byte;
begin
clrscr;
write('Nhap thang');
readln(thang);
case thang of
1: writeln('Sinh nhat Hoa');
2: writeln('Sinh nhat Lan, Quan');
3: writeln('Sinh nhat Hong');
4: writeln('Sinh nhat Hai');
8: writeln('Sinh nhat Duc');
11: writeln('Sinh nhat Yen');
12: writeln('Sinh nhat Thanh');
end;
readln
end.
[/codesyntax]
Với Case … else tương tự như Case … Of, chỉ thêm điều kiện sai (tương tự hàm if … else)
[codesyntax lang="pascal"]
program hien_thi_sinhnhat;
uses crt;
var thang:byte;
begin
clrscr;
write('Nhap thang');
readln(thang);
case thang of
1: writeln('Sinh nhat Hoa');
2: writeln('Sinh nhat Lan, Quan');
3: writeln('Sinh nhat Hong');
4: writeln('Sinh nhat Hai');
8: writeln('Sinh nhat Duc');
11: writeln('Sinh nhat Yen');
12: writeln('Sinh nhat Thanh');
else
writeln('Sinh nhat Hoang');
end; // end of case
readln
end. //end of program
[/codesyntax]
Để nhập dữ liệu từ bàn phím, ta thực hiện bằng thủ tục
read(<danh sách biến>);
hoặc
readln(<danh sách biến>);
Trong đó, danh sách biến gồm 1 hoặc nhiều biến đơn được đặt cách nhau bởi dấu phẩy.
Ví dụ
read(i);
readln(e,g,h);
Sự khác biệt giữa read và readln?
Thủ tục Read không xuống dòng khi ta nhập dữ liệu trong khi đó readln sẽ xuống dòng.
Để nhập nhiều biến, bạn phải nhập các biến cách nhau bởi dấu cách hoặc phím enter, ví dụ để nhập giá trị 4 cho biến e, 5 cho biến g và 6 cho biến h ra nhập
4 5 6 rồi enter hoặc 4 enter rồi 5 6 hoặc mỗi biến enter một lần cũng có kết quả như nhau.
Ở các bài trước, chúng ta đã được biết đến cách xuất dữ liệu ra màn hình. Để làm việc này, ta chỉ cần dùng thủ tục write hoặc writeln. Hai từ khoá này có điểm khác nhau là write không xuống dòng còn writeln xuống dòng. Nếu bạn muốn in chuỗi, hãy đặt trong cặp ngoặc ‘ và ‘ còn nếu in biến thì không cần.
Ví dụ:
[codesyntax lang="php"]
program vidu;
uses crt;
begin
clrscr;
write('Xin chao');
write('Tat ca moi nguoi');
readln
end.
[/codesyntax]
Kết quả hiển thị sẽ là Xin chaoTat ca moi nguoi. Bây giờ bạn thay write bằng writeln kết quả sẽ là
Xin chao
Tat ca moi nguoi
Định dạng xuất dữ liệu
Ở ví dụ trên ta mới thực hiện trên dữ liệu kiểu chữ. Còn với kiểu số thì sao?
Xét ví dụ sau
[codesyntax lang="pascal"]
program dien_tich_hinh_tron;
uses crt;
const pi=3.1416;
var r:real;
begin
write('Nhap ban kinh: '); readln(r);
writeln('Dien tich la',r*pi);
readln;
end.
[/codesyntax]
Nếu bạn nhập bán kính vào (giả sử là 2) thì kết quả hiển thị ra là: 6.23820000E+00 như vậy sẽ rất xấu và khó đọc, trong trường hợp này chúng ta cần làm tròn số và định dạng việc hiển thị để cho con người dễ đọc. Cách làm rất đơn giản.
: <độ rộng>:<số chữ số thập phân>
:<độ rộng>
Ở ví dụ trên ta có thể viết lại thành
[codesyntax lang="pascal"]
program dien_tich_hinh_tron;
uses crt;
const pi=3.1416;
var r:real;
begin
write('Nhap ban kinh: '); readln(r);
writeln('Dien tich la',r*pi:3:3);
readln;
end.
[/codesyntax]
Như vậy kết quả hiển thị sẽ là 6.238 vì nó dành 3 vị trí cho độ rộng và 3 vị trí đằng sau dấy phẩy.
Toán tử dùng để mô tả những phép toán từ đời thường sang những phép toán của ngôn ngữ.
Bảng dưới đây mô tả chi tiết về các toán tử trong Pascal
Ở đây, ta giả thiết a có giá trị là 4, b có giá trị là 3
| Toán tử | Biểu diễn | Ví dụ | Kết quả |
| + | Cộng | a+b | 7 |
| - | Trừ | A-b | 1 |
| * | Nhân | a*b | 12 |
| / | Chia | a/b | 1.33 |
| Div | Chia lấy phần nguyên | A div b | 1 |
| Mod | Chia lấy phần dư | A mod b | 1 |
| < | Nhỏ hơn | a<b | FALSE |
| > | Lớn hơn | a>b | TRUE |
| <= | Nhỏ hơn hoặc bằng | a<=b | FALSE |
| >= | Lớn hơn hoặc bằng | a>=b | TRUE |
| Bằng | a=b | FALSE | |
| <> | Khác | a<>b | TRUE |
| Not, and, or | Phép toán logic | ||
| := | Phép gán |
Ví dụ, để biểu diễn cách tính Delta trong phương trình bậc 2, ta viết như sau:
Delta: = b*b – 4*a*c;
Để tính X1 trong trường hợp Delta > 0 ta viết như sau:
X1:= (-b+sqrt(delta))/(2*a);
hoặc
X1:=(-b-sqrt(delta))/2/a;
Biểu thức quan hệ:
Biểu thức quan hệ thường dùng để so sánh 2 biểu thức với nhau ví dụ:
a < b
a+b <= c-d
Biểu thức Logic(Boolean)
Biểu thức Logic trả về giá trị True hoặc False, được liên kết với nhau qua biểu thức and, or, hoặc not.
Ví dụ:
a>=b and a>=c