Thursday, 19 January 2017

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

[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');
[Pascal] Câu lệnh vòng lặp trong Pascal

[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.
[Pascal] Khai báo kiểu tập tin trong Pascal

[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 ;

Saturday, 14 January 2017

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

[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ự *)
[Pascal] Khai báo biến trong Pascal

[Pascal] Khai báo biến trong Pascal

Để có thể lập trình được một chương trình Pascal, người ta nhất định phải sử dụng tới biến. Cũng như toán học, biến có thể thay đổi được giá trị của nó khi chúng ta dùng tới các câu lệnh lặp, hoặc gán giá trị vào biến đó vô số lần. Khác hẳn với hằng.

Khi khai báo biến, lệnh khai báo sẽ được đặt sau phần khai báo thư viện.
Cấu trúc khai báo biến:
Var {tên biến}: {kiểu dữ liệu};
Trong đó: 
 - Tên biến là do người dùng đặt, tuy nhiên phải viết không dấu và không được có khoảng cách hay các kí tự đặc biệt trừ dấu "_".
 - Kiểu dữ liệu là do chương trình quy định, có rất nhiều kiểu dữ liệu, nhưng thường người ta sử dụng:
+ Integer: số nguyên, nếu biến đó chứa số nguyên
+ Real: số thực, nếu biến đó chứa số thập phân và số nguyên (thường áp dụng cho biến chứa kết quả của phép chia)
+ String: chuỗi, chứa các kí tự từ A-Z và 0-9 (tối đa 255 kí tự)
[Pascal] Cấu trúc một chương trình Pascal

[Pascal] Cấu trúc một chương trình Pascal

Pascal là 1 trong những chương trình lập trình lâu đời nhất mà vẫn được nhiều người ưa chuộng cho đến ngày nay. Hiện nay đã có nhiều cuộc thi được tổ chứ nhằm phát hiện những tài năng lập trình bằng Pascal. Pascal không những giúp cho việc tính toán tiện lợi hơn, nó còn giúp cho học sinh cũng như người lập trình phát triển tư duy suy luận, tưởng tượng,... trong khi tìm ra cách lập trình để đáp ứng yêu cầu của đề.

Thông thường người ta hay dùng Turbo Pascal 7.0 vì nó tiện lợi và lập trình dễ dàng hơn thay vì dùng Free Pascal.

Cấu trúc một chung của một chương trình Pascal thường như sau:
Program {tên chương trình};       {Khai báo tên chương trình}
Uses crt;                         {Khai báo thư viện}
Var...;                           {Khai báo biến}
Const ...;                        {Khai báo hằng}
Type...;                          {Khai báo kiểu tệp tin}
Begin                             {Bắt đầu chương trình}
      CLRSCR;                     {Lệnh xóa màn hình}
      {Các câu lệnh lập trình}
      Readln;                     {Dừng chương trình xem kết quả}
End.                              {Kết thúc chương trình}

Friday, 4 November 2016

[Vật lí 9] Bài 26. Ứng dụng của nam châm

Bài 26. Ứng dụng của nam châm


26.1. Để làm nam châm điện mạnh với dòng điện có cường độ cho trước thì nên quấn nhiều hay ít vòng dây dẫn quanh một ống dây cách điện.

Đáp án: Nên dùng dây dẫn mảnh để quấn nhiều vòng, vì tác dụng từ của nam châm điện tăng khi số vòng dây nam châm điện mà không phụ thuộc vào tiết diện của dây dẫn.

26.2. Một thanh thép có một đầu được sơn màu đỏ, đầu kia được sơn màu xanh. Dùng một nam châm điện hình chữ U để từ hóa thanh thép này (hình 26.1).

Hãy mô tả bằng hình vẽ và giải thích cách đặt thanh thép đó lên nam châm điện để sau khi từ hóa, đầu sơn đỏ của thanh thép trở thành từ cực Bắc.

Đáp án: Cách đặt thanh thép được mô tả trên hình 26.1. Trên hình vẽ ta thấy, các đường sức từ của từ trường nam châm điện đi vào thanh thép tạo thành đường cong khép kín. Thanh thép bị từ hóa, nằm định hướng theo chiều của từ trường, có nghĩa là các đường sức từ đi vào đầu sơn xanh và đi ra đầu sơn đỏ của thanh thép. Đầu sơn đỏ của thanh thép sau khi bị từ hóa đã trở thành từ cực Bắc.


26.3. Điện kế là dụng cụ được dùng để phát hiện dòng điện. Điện kế tự làm lấy gồm một cái hộp trong đó gắn cố định một cái la bàn thông thường với hai cuộn dây dẫn mắc nối tiếp, cách điện quấn quanh hộp (hình 26.2)

a. Mức độ phát hiện được dòng điện yếu của điện kế này phụ thuộc vào những yếu tố nào?
b. Kim của la bàn sẽ nằm như thế nào đối với các vòng dây khi có dòng điện chạy qua ha cuộn dây đó? Vị trí ban đầu của kim nam châm khi chưa có dòng điện đi qua đã được chỉ ra trên hình vẽ.

Đáp án:

a.
Vào số vòng dây của cuộn dây và độ lớn của cường độ dòng điện qua cuộn dây.
b. Kim của la bàn sẽ nằm dọc theo các đường sức từ bên trong ống dây, có nghĩa là nằm vuông góc với dây dẫn trên bề mặt hộp. Bỏ qua từ trường của trái đất vì từ trường này rất yếu so với từ trường của ống dây.

26.4. Ampe kế điện từ loại đơn giản gồm một ống dây D và một tấm sắt S gắn liền với kim chỉ thị K có thể quanh quanh trục O. Hãy giải thích hoạt động của ampe kế khi có dòng điện đi qua ống dây.

Đáp án: 

Khi có dòng điện đi qua ống dây, tấm sắt được hút vào trong lòng ống dây, làm cho kim chỉ thị K quay quanh trục O và đầu kim dịch chuyển trên mặt bảng chia độ.

26.5. Trong loa điện, lực nào làm cho màng loa dao động phát ra âm?

Đáp án: B

26.6. Trong chuông báo động gắn vào cửa để khi cửa bị mở thì chuông kêu, rơle điện từ có tác dụng từ?

Đáp án: B.

26.7. Tại sao khi dòng điện không đổi chạy vào cuộn dây của loa điện thì loa lại không kêu?

Đáp án: 

Dòng điện không đổi không tạo ra được suất điện động cảm ứng trong cuộn dây nên không sinh ra lực từ tương tác giữa nam châm vĩnh cửu với cuộn dây nên màng loa không rung.