Category Archives: Pascal

Dù không còn được sử dụng rộng rãi trong thực tế, Pascal vẫn là một trong những ngôn ngữ lập trình được sử dụng nhiều nhất trong giảng dạy và học tập

Bài 11. Kiểu chuỗi (xâu)

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ụ

Read more…

Posted in Pascal | Leave a comment

Bài 10. Vòng lặp (Loop)

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

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:

Read more…

Posted in Pascal | Tagged , | Leave a comment

Bài 9. Câu lệnh điều kiện

  1. Câu lệnh điều kiện

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 đó:

  • Điều kiện là biểu thức logic
  • Câu lệnh 1 phải thoả mãn điều kiện mới được thực thi.
  • Nếu câu lệnh 1 không thoả mãn chương trình sẽ thực thi câu lệnh 2.

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]

  1. Nhóm câu lệnh

Ở 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.

  1. Rẽ nhánh với Case … Of

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]

Posted in Pascal | Tagged | 1 Comment

Bài 8, Nhập, xuất dữ liệu.

  1. Nhập dữ liệu từ bàn phím

Để 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.

  1. Xuất dữ liệu ra màn hình.

Ở 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.

  • Đối với kết quả là 1 số thực, sau biến bạn thêm vào sau kết quả:

    : <độ rộng>:<số chữ số thập phân>

  • Đối với kết quả khác:

    :<độ 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.

Posted in Pascal | Tagged | Leave a comment

Bài 7: Toán tử

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

Posted in Pascal | Tagged | Leave a comment