MỞ ĐẦU
CĂN BẢN
LỆNH RẺ NHÁNH
VÒNG LẶP
NÂNG CAO
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Lệnh Goto trong Pascal

Trong bài này mình sẽ giới thiệu đến các bạn lệnh goto trong Pascal, đây là lệnh dùng để nhảy đến một vị trí nào đó trong đoạn code của phạm vi hiện tại.

Nói đến goto thì hầu như ai cũng khiếp sợ, bởi rất khó để quản lý và bảo trì. Bạn cứ tưởng tượng 1 file có vài ngìn dòng, lệnh goto sẽ nhảy lung tung trong đó thì sẽ gây ra khó khăn cho việc theo dõi và làm việc teamwork.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

1. Lệnh Goto trong Pascal dùng lam gì?

Lệnh goto trong Pascal cung cấp một bước nhảy vô điều kiện từ vị trí đặt lệnh goto đến một vị trí được đánh dấu là nhãn trong cùng một phạm vi chương trình.

LƯU Ý: Như đã nói, việc sử dụng câu lệnh goto không được khuyến khích trong bất kỳ ngôn ngữ lập trình nào vì nó khó theo dõi luồng điều khiển của chương trình, khiến chương trình khó hiểu và khó sửa đổi. Bất kỳ chương trình nào sử dụng goto đều có thể được viết lại để nó không cần goto.

Cú pháp lệnh Goto như sau:

goto label;
   ...
   ...
label: statement;

Trong đó label được gọi là nhãn, là một con số bất kì, phải là số nguyên dương.

Lưu ý:

  • Bạn có thể đặt nhiều label trong một chương trình và mỗi label phải có tên khác nhau, không được trùng.
  • Bạn phải khai báo label ở đầu chương trình, nếu không sẽ bị báo lỗi label chưa được định nghĩa.

Xem sơ đồ sau đây để hiểu hơn về lệnh goto trong pascal.

cpp goto statement jpg

Ví dụ: Viết chương trình nhập vào một số nguyên dương a, sau đó xuất thông báo nếu a < 100 thì in dòng 'xin chào các bạn', ngược lại thì in dòng "giá trị của a là: số" và dòng 'xin chào các bạn'.

program GotoPascalFreetuts;
label 1; 
var
    a: integer;
begin
    a := 102;

    if (a < 100) then goto 1;

    writeln('Gia tri cua a la: ', a);

    1: 
    writeln('Xin chao cac ban');
	
    readln;
end.

Nếu bạn nhập giá trị của a bé hơn 100 thì lệnh if sẽ được kích hoạt, lúc này lệnh goto sẽ nhảy xuống label số 1 nên dòng code writeln('Gia tri cua a la: ', a); không được biên dịch.

2. Dùng lệnh goto để tạo vòng lặp

Bạn cũng có thể sử dụng lệnh goto để tạo ra một vòng lặp, đương nhiên việc này là không khuyến khích.

Xem ví dụ dưới đây để hiểu rõ hơn.

program exGoto;
label 1; 
var
   a : integer;

begin
   a := 10;
   (* khai bao nhan so 1 *)
   1: 
   repeat
      if( a = 15) then
      
      begin
         (* tang gia tri cua a len 1 
			va nhay den nhan so 1 de tao buoc lap*)
         a := a + 1;
         goto 1;
      end;
      
      writeln('Gia tri cua a la: ', a);
      a:= a +1;
   until a = 20;
end.

Bạn thấy đó, rõ ràng đây là một đoạn code rất khó theo dõi. Lập trình viên phải mất một khoảng thời gian dài mới nhận ra được đây là một cấu trúc lặp, điều này khác với việc sử dụng vòng lặp for, while hoặc repeat.

Như vậy là mình đã giới thiệu xong cách sử dụng lệnh label trong Pascal. Đây là một lệnh khá phức tạp và không khuyến khích sử dụng.

Cùng chuyên mục:

Tạo function trong Pascal

Tạo function trong Pascal

Trong bài này ta sẽ học đến một phần rất hấp dẫn, đó là cách…

Lệnh Continue trong Pascal

Lệnh Continue trong Pascal

Trong bài này chúng ta sẽ tìm hiểu lệnh continue trong Pascal, đây là lệnh…

Lệnh Break trong Pascal

Lệnh Break trong Pascal

Trong bài này mình sẽ tìm hiểu lệnh dùng để dừng vòng lặp ngay lập…

Vòng lặp Repeat .. Until trong Pascal

Vòng lặp Repeat .. Until trong Pascal

Trong bài này mình sẽ giới thiệu vòng lặp repeat .. until trong Pascal, đây…

Vòng lặp while trong Pascal

Vòng lặp while trong Pascal

Trong bài này chúng ta sẽ tìm hiểu vòng lặp while trong Pascal, đây là…

Vòng lặp For .. Do trong Pascal

Vòng lặp For .. Do trong Pascal

Trong bài này chúng ta sẽ tìm hiểu về vòng lặp For .. Do trong…

Lệnh CASE trong Pascal

Lệnh CASE trong Pascal

Ở bài trước mình đã hướng dẫn sử dụng lệnh if dùng để rẻ nhánh…

Lệnh If .. Then trong Pascal

Lệnh If .. Then trong Pascal

Trong bài này chúng ta sẽ học lệnh rẻ nhánh if .. then trong Pascal,…

Khối lệnh begin .. end trong Pascal

Khối lệnh begin .. end trong Pascal

Bạn có thắc mắc BEGIN và END trong chương trình Pascal là gì không nào?…

Lệnh read và readln trong Pascal

Lệnh read và readln trong Pascal

Trong bài này chúng ta sẽ tìm hiểu hai lệnh dùng để đọc dữ liệu,…

Các lệnh OUTPUT trong Pascal

Các lệnh OUTPUT trong Pascal

Những bài trước chúng ta đã sử dụng một lệnh rất nhiều đó là lệnh…

Toán tử trong Pascal

Toán tử trong Pascal

Trong bài này chúng ta sẽ tìm hiểu về một số toán tử thường dùng…

Tạo kiểu dữ liệu (Type) trong Pascal

Tạo kiểu dữ liệu (Type) trong Pascal

Trong bài này chúng ta sẽ học cách sử dụng từ khóa Type trong Pascal,…

Hằng (const) trong Pascal

Hằng (const) trong Pascal

Hằng số (Const) thực chất cũng là một loại biến bình thường, nhưng có điểm…

Biến và kiểu dữ liệu trong Pascal

Biến và kiểu dữ liệu trong Pascal

Bảng từ khóa của ngôn ngữ Pascal

Bảng từ khóa của ngôn ngữ Pascal

Bảng từ khóa trong Pascal là danh sách những từ khóa mà bạn không được…

Cấu trúc chương trình Pascal

Cấu trúc chương trình Pascal

Viết chương trình Hello World với Pascal

Viết chương trình Hello World với Pascal

fadsfs

Hello World là một chương trình thế kỉ mà hầu như ngôn ngữ lập trình…

Top