loading...
Slider 1 mini
Slider 1 mini

Thứ Năm, 19 tháng 1, 2017

[Pascal] Lệnh nhập xuất dữ liệu trong Pascal

Trong Pascal, mọi câu lệnh đều quan trọng, chỉ một sai sót nhỏ thôi cũng làm chương trình không thể chạy được.

Nay mình giới thiệu các bạn các câu lệnh nhập và xuất dữ liệu ra màn hình, kiến thức cơ bản của tất cả những ai lập trình.

1. Lệnh nhập dữ liệu

Lệnh nhập là khi người dùng nhập vào máy tính sẽ ghi vào biến mà người lập trình muốn gán vào. 

Lệnh nhập có hai kiểu: một kiểu nhập vào và chương trình tiếp tục trên dòng đó, một kiểu nhập vào và chương trình xuống dòng rồi mới tiếp tục.

Nhập vào và không xuống dòng:
read(...);
Nhập vào và xuống dòng:
readln(...);
Lệnh nhập này chỉ được viết vào các biến người lập trình muốn cho người dùng nhập. Có thể là một biến, cũng có thể là nhiều biến cách nhau bởi dấu phẩy, khi nhập cách nhau bởi dấu cách.

2. Lệnh xuất dữ liệu

Lệnh xuất là lệnh mà người lập trình viết để xuất một dữ liệu gì đó ra màn hình. Dữ liệu xuất có thể là kí tự, biến,... 

Khi xuất kí tự cần đặt trong dấu ' và nếu muốn xuất nhiều dữ liệu trên một dòng thì cần cách nhau bởi dấu phẩy. 

Lệnh xuất cũng có hai kiểu: một kiểu là xuất dữ liệu rồi tiếp tục trên dòng đó, một kiểu là xuất dữ liệu và xuống dòng.

Xuất ra và không xuống dòng:
write(...);
Xuất ra và xuống dòng:
writeln(...);
Ví dụ:
a:=24;
write('Mot ngay co ',a,' gio');

Gửi bởi Hải RickyVào lúc 8:13 CH

[Pascal] Câu lệnh vòng lặp trong Pascal

Câu lệnh vòng lặp là thứ thiết yếu, rất quan trọng trong khi lập trình. Pascal cũng thế, câu lệnh vòng lặp là lí do con người chọn máy tính để làm những công việc khó khăn và mất thời gian. Có 3 loại vòng lặp:


1. Vòng lặp for...to...do...

Đây là vòng lặp được dùng phổ biến nhất. Đã được dạy trong chương trình Tin học 8. Vòng lặp sẽ lặp với số lần đã biết trước.

Cấu trúc khai báo câu lệnh lặp for...to...do...:
for {tên biến}:= {giá trị đầu} to {giá trị cuối};
Ngoài ra còn có 1 vòng lặp chạy ngược lại:
for {tên biến}:= {giá trị cuối} downto {giá trị đầu};
Mục đích của vòng lặp này là mỗi lần lặp, {tên biến} lại thay đổi giá trị, tức là khi chạy xong hết các câu lệnh có trong vòng lặp thì {tên biến} lại tăng thêm 1 hoặc giảm bớt 1. Và tất nhiên giá trị đầu phải lớn hơn 0 và bé hơn giá trị cuối thì vòng lặp mới chạy được. Ví dụ:

Tăng thêm 1:
n:=5;
for i:=2 to n do write(i);
Trong trường hợp này, sau khi chạy xong chương trình sẽ viết ra màn hình: 2345

Giảm bớt 1:
n:=5;
for i:=n downto 2 do write(i);
Trong trường hợp này, sau khi chạy xong chương trình sẽ viết ra màn hình: 5432

Số lần lặp = {giá trị cuối} - {giá trị đầu} +1 , tuy nhiên các bạn không cần quá bận tâm điều này.

Khi số câu lệnh của vòng lặp lớn hơn 1 thì cần cho tất cả các câu lệnh đó vào begin...end; để chương trình phân biệt được. Ví dụ:
for i:=1 to 5 do
begin
      i:=i+1;
      write(i);
end;

2. Vòng lặp while...do...

Vòng lặp này cũng là vòng lặp được dạy trong chương trình Tin học 8, tuy nhiên rất ít cơ hội để ứng dụng nó bởi vì chỉ riêng vòng lặp for thì các bạn đã phải học "sml" rồi (đùa thôi). Vòng lặp này có công dụng lặp với số lần không được biết trước, tức là lặp cho đến khi không thỏa được điều kiện nhất định do người lập trình đưa ra thì mới kết thúc. Nhưng khi trong các câu lệnh của vòng lặp không có câu lệnh kết thúc điều kiện thì vòng lặp sẽ lặp vô hạn.

Cấu trúc khai báo câu lệnh lặp while... do...:
while {điều kiện} do {câu lệnh};
Ví dụ:
i:=0;
while (i mod 10 <> 0) and (i<=100) do
begin
      i:=i+1;
      write(i);
end;
Ở ví dụ trên theo điều kiện thì vòng lặp sẽ lặp tới khi nào i chia hết cho 10 hoặc i lớn hơn 100, tuy nhiên biến i sẽ không thể tự thay đổi được mà cần có một lệnh biến đổi i trong vòng lặp. Và cũng giống như vòng lặp trên, khi câu lệnh trong vòng lặp nhiều hơn 2 thì cần cho chúng vào begin... end;. Nếu có nhiều hơn 1 điều kiện thì cần cho chúng vào ngoặc đơn và cách nhau bởi 'and' hoặc 'or'.

Điểm đặc biệt ở câu lệnh này là nếu chương trình viết được bằng vòng lặp for thì chắc chắn sẽ viết được bằng vòng lặp while, nhưng, chương trình viết được bằng vòng lặp while chưa chắc sẽ viết được bằng vòng lặp for. Đó là điểm tiện lợi của nó. Minh họa:

Với for:
for i:=1 to 10 do write(i);
Với while:
i:=0;
while i<=10 do
begin
      write(i);
      i:=i+1;
end;
Hai câu lệnh trên được viết bằng 2 vòng lặp khác nhau, nhưng tác dụng của nó vẫn như nhau.

3. Vòng lặp repeat...until...

Vòng lặp này cũng giống với while...do... nhưng ngược lại, cũng lặp với số lần chưa biết nhưng là lặp đến khi nào thỏa điều kiện mới thôi. Điểm cần lưu ý ở đây là các nếu có nhiều hơn 1 câu lệnh ở trong vòng lặp này thì không cần bỏ vào begin...end; nhưng điều kiện thì vẫn phải cho chúng vào ngoặc đơn và cách nhau bởi 'and' hoặc 'or'.

Cấu trúc khai báo của vòng lặp repeat...until...:
repeat {câu lệnh} until {điều kiện};
Ví dụ: 
repeat write('Nhap n: '); readln(n); until (n>300) and (n mod 2 = 0);
Ở ví dụ trên thì câu lệnh sẽ lặp lại hành động nhập vào giá trị n đến khi n lớn hơn 300 và n chẵn (chia hết cho 2).

Thông thường người ta chỉ sử dụng câu lệnh này để kiểm tra giá trị nhập vào mà thôi.

Khi nào thì câu lệnh lặp bị lặp vô hạn?


Câu lệnh bị lặp vô hạn khi trong vòng lặp không có câu lệnh nào làm thay đổi giá trị của điều kiện, làm điều kiện không bao giờ bị sai để có thể kết thúc vòng lặp. Ví dụ:
n:=10;
while n>10 do
n:=n+1;
Lúc này khi bạn chạy chương trình thì sẽ không bao giờ xem được kết quả và bắt buộc phải tắt chương trình để thoát.

Gửi bởi Hải RickyVào lúc 3:50 CH

[Pascal] Khai báo kiểu tập tin trong Pascal

Nhập và xuất dữ liệu là hai công việc rất phổ biến khi thực hiện một chương trình. Cho đến nay, ta mới chỉ nhập dữ liệu từ bàn phím và xuất dữ liệu ra màn hình. Các dữ liệu này được tổ chức trong bộ nhớ của máy, chúng tồn tại khi chương trình đang chạy và bị xóa khi chương trình kết thúc. Muốn lưu trữ các dữ liệu lâu dài để sử dụng nhiều lần thì phải ghi chúng lên đĩa thành các tập tin.

Tập tin (file) trong Pascal là một kiểu dữ liệu có cấu trúc. Mỗi tập tin là một tập hợp các phần tử có cùng chung một kiểu dữ liệu được nhóm lại thành một dãy và được ghi trên đĩa dưới một cái tên chung.

Cấu trúc khai báo kiểu tập tin:
Type {Tên kiểu tập tin} = File of {Kiểu phần tử};
Ví dụ:
Type Ksvien = Record
      Ten: String[20];
      Namsinh : Integer;
      DTB : Real;
end;
KieuT1 = File of Integer;
KieuT2 = File of String[20];
KieuT3 = File of Ksvien ;

Gửi bởi Hải RickyVào lúc 2:56 CH

Thứ Bảy, 14 tháng 1, 2017

[Pascal] Khai báo hằng trong Pascal

Hằng cũng giống như biến, chỉ khác là hằng chỉ chứa một giá trị duy nhất được gán cho ở phần khai báo. Tuy nhiên ít có ai sử dụng hằng để lập trình mà đa số là sử dụng biến cho thuận tiện, vì biến bao hàm cả hằng, và biến sẽ dễ sử chỉnh sửa hơn khi có sai sót.

Khai báo hằng cũng như khai báo biến, hằng được khai báo sau khi khai báo thư viện, không quan trọng thứ tự khai báo với KB biến và KB kiểu.

Cấu trúc khai báo hằng:
Const {tên hằng}:={giá trị gán cho hằng};
Ví dụ :
Const B = True ; (* hằng Boolean *)
      A = 5 ; (* hằng số nguyên *)
      Pi = 3.14 ; (* hằng số thực *)
      CCC = ‘Z’ ; (* hằng kí tự *)

Gửi bởi Hải RickyVào lúc 4:21 CH