Bài 4 Sử dụng biến trong ch-ơng trình

Một phần của tài liệu Sach_GV_Tin_8 (Trang 40 - 46)

1. Mục đích, yêu cầu

 Biết khái niệm biến, hằng;

 Hiểu cách khai báo, sử dụng biến, hằng;  Biết vai trò của biến trong lập trình;  Hiểu lệnh gán.

2. Những điểm cần l-u ý và gợi ý dạy học

Đây là bài t-ơng đối khó đối với HS. Cần l-u ý nhấn mạnh một số điểm sau: Biến là đại l-ợng để l-u trữ dữ liệu, có thể thay đổi giá trị của biến tại bất kì vị trí nào trong ch-ơng trình. Muốn sử dụng biến thì phải khai báo, khi khai báo biến phải khai báo kiểu dữ liệu mà biến sẽ l-u trữ. Biến chỉ có thể l-u trữ đ-ợc dữ liệu có kiểu thuộc kiểu của biến. Ng-ời lập trình tự đặt tên cho biến theo quy tắc của ngôn ngữ lập trình đang sử dụng. Có thể gán giá trị cho biến và tính toán với biến.

Hằng có khai báo là đại l-ợng để l-u trữ dữ liệu cố định. Không đ-ợc phép thay đổi giá trị của hằng trong ch-ơng trình.

Bài này hoàn toàn có thể đ-ợc tiến hành dạy học theo đúng trình tự nh- trong SGK. Tuy nhiên, d-ới đây xin giới thiệu một cách tiến hành dạy học khác để GV tham khảo.

Vào đầu bài học GV có thể yêu cầu HS viết một ch-ơng trình tính diện tích hình tròn có bán kính r = 2. Do HS đã đ-ợc thực hành về viết biểu thức trong Pascal nên HS sẽ dễ dàng làm đ-ợc bài này.

Begin

Write('Dien tich hinh troncoban kinh r=2 la: ', 3.14*2*2); readln;

end.

ng-ời sử dụng phải biết lập trình, hiểu ch-ơng trình thì mới vào sửa ch-ơng trình đ-ợc. Việc đòi hỏi ng-ời sử dụng phải biết lập trình, sửa đ-ợc ch-ơng trình là không thực tế.

GV đ-a ra yêu cầu là cần viết một ch-ơng trình cho phép ng-ời sử dụng nhập từ bàn phím bán kính của hình tròn, sau đó tính toán diện tích và hiển thị kết quả ra màn hình.

Nói chung HS ch-a đ-a ra đ-ợc ph-ơng án để giải quyết vấn đề này. GV cần đ-a ra một ch-ơng trình thực hiện điều này để các em quan sát.

Var

R: Integer;

Begin

Write('Nhap ban kinh hinh tron R=: '); Readln(R); Write('Dien tich hinh tron la: ', 3.14*R*R); readln;

end.

Nếu dạy với máy tính, GV có thể cho chạy thử ch-ơng trình này để HS quan sát sẽ hiệu quả hơn.

Dựa trên ch-ơng trình này GV giới thiệu về biến nhớ, cách khai báo biến và sử dụng lệnh read() hoặc readln() để nhập giá trị biến từ bàn phím, cụ thể có thể

giới thiệu nh- sau:

Trong ch-ơng trình đã sử dụng một công cụ hỗ trợ lập trình của PASCAL là biến nhớ R.

Var R: Integer;

là lệnh khai báo biến nhớ. Khi chạy ch-ơng trình, đến lệnh này PASCAL dành một phần bộ nhớ và đặt tên cho phần bộ nhớ này là R - gọi tắt là ô nhớ R. Có thể hình dung ban đầu ô nhớ R này ch-a chứa giá trị (nói đúng hơn là chứa một giá trị nào đó - tuỳ thuộc vào ngôn ngữ lập trình, nh-ng đây ch-a phải là thời điểm phù hợp để nói về chi tiết này với HS). Về cú pháp khai báo biến chỉ cần l-u ý tên biến do ng-ời lập trình đặt (tuân thủ theo qui tắc đặt têncủa ngôn ngữ lập trình) và kiểu dữ liệu của biến. Chi tiết hơn về khai báo tên sẽ đ-ợc đề cập trong bài thực hành 3.

Readln(R);

là lệnh dùng để nhập giá trị cho biến R từ bàn phím. Gặp lệnh này ch-ơng trình sẽ dừng lại và yêu cầu ng-ời sử dụng nhập giá trị từ bàn phím. Khi ng-ời sử dụng nhập một số, ví dụ số 3, rồi nhấn Enter, thì ch-ơng trình sẽ "mang" số 3 này "đặt"

vào ô nhớ R. Trong lập trình việc này đ-ợc gọi là gán giá trị 3 cho biến R. Đến

đây, biến R có giá trị bằng 3.

Với câu lệnh Write('Dien tich hinh tron la: ', 3.14*R*R);

điểm cần giải thích ở câu lệnh này đối với HS là biểu thức 3.14*R*R. Vì R đã đ-ợc khai báo là biến và đã đ-ợc gán giá trị bằng 3 nên khi tính toán biểu thức này, Pascal thay tên biến R bằng giá trị là 3 đang đ-ợc l-u ở ô nhớ R, nghĩa là tính

3.14*3*3. Biểu thức này tính diện tích hình tròn với bán kính là 3 vừa đ-ợc nhập từ bàn phím.

Khi thực hiện ch-ơng trình, ng-ời sử dụng có thể nhập giá trị bán kính bất kì (chính xác thì phải là số nguyên bất kì, nh-ng GV ch-a cần giải thích chính xác, đầy đủ ở đây). Điều đó có nghĩa là ô nhớ R có thể nhận các giá trị khác nhau phụ thuộc vào ng-ời sử dụng. Đây là đặc điểm quan trọng của biến: Giá trị của biến có

thể thay đổi.

L-u ý rằng cách trình bày nh- trên chỉ giúp dẫn dắt học sinh đến khái niệm về biến. Sau này, trong quá trình giới thiệu các nội dung tiếp theo và các bài thực hành, giáo viên cần nhấn mạnh để học sinh hiểu rõ: mục tiêu của việc sử dụng biến không phải là tránh hoặc giảm đơn giản công việc chỉnh sửa ch-ơng trình mà mục tiêu hàng đầu là l-u trữ các giá trị trung gian (đ-ợc nhập vào hay đ-ợc tính toán) cho các hoạt động xử lí dữ liệu về sau và tên biến giúp ch-ơng trình nhận biết chính xác dữ liệu đ-ợc l-u ở đâu trong bộ nhớ. Nhiều thao tác xử lí dữ liệu không thể thực hiện đ-ợc nếu không sử dụng biến. SGK đã trình bày rất rõ ý này.

Đến đây nhấn mạnh cho HS rằng cần khai báo biến, kiểu của biến tr-ớc. Có thể gán giá trị cho biến và sử dụng biến trong tính toán. Giá trị của biến có thể thay đổi.

Sau đó GV có thể đ-a ra ch-ơng trình d-ới đây:

Var R: Integer; S: Real; Const So_PI = 3.14; Begin

Write('Nhap ban kinh hinh tron R=: '); Readln(R); S:= So_PI*R*R;

Write('Dien tich hinh tron la: ', S); readln

end.

So với ch-ơng trình tr-ớc, điểm khác biệt của ch-ơng trình này là khai báo hằng số So_PI, sử dụng hằng số So_PI để tính diện tích hình tròn trong biểu thức

So_PI*R*R. Cần nhấn mạnh cho HS về cách khai báo hằng và đặc điểm của hằng

số là giá trị đ-ợc xác định ngay từ khi khai báo và không thay đổi giá trị. Thực hiện đến lệnh này PASCAL dành một ô nhớ với tên là So_PI và gán giá trị cho ô nhớ này là 3.14. T-ơng tự nh- với biến R, trong biểu thức So_PI*R*R, khi tính

toán Pascal sẽ thay hằng số So_PI bằng giá trị 3.14 đ-ợc l-u trong ô nhớ So_PI. Câu lệnh S:= So_PI*R*R đ-ợc sử dụng để giải thích cho HS về lệnh gán. HS đã biết cách khai báo biến R, cách gán giá trị cho biến R thông qua lệnh Readln(). Cách gán giá trị cho biến S ở đây là dùng lệnh gán, kí hiệu là :=. Gặp lệnh này,

Pascal sẽ tính giá trị của biểu thức ở bên phải phép gán và gán giá trị này cho biến ở bên trái dấu gán. Cụ thể, Pascal sẽ tính toán biểu thức So_PI*R*R ở bên phải

dấu :=, sau đó mang giá trị vừa tính đ-ợc đặt vào ô nhớ S. Cần l-u ý HS đây

không có nghĩa nh- dấu bằng trong toán học.

L-u ý, trong TP đã đinh nghĩa sẵn hàm Pi để cho giá trị của số π, vì vậy thực chất ch-ơng trình trên có thể không cần khai hằng số So_PI. Tuy nhiên, tại thời

điểm này giáo viên không đề cập đến điều này để tránh gây phức tạp vấn đề. Có thể dựa vào sự khác nhau giữa hai khai báo biến trong ch-ơng trình này để giới thiệu cho HS cần thiết phải có sự phù hợp giữa kiểu của biến với kiểu dữ liệu. Cụ thể, biến R đ-ợc khai báo với kiểu integer thì khi nhập bán kính ng-ời

dùng chỉ đ-ợc phép nhập các giá trị nguyên. Nếu dạy cùng với máy tính, máy chiếu GV có thể cho HS quan sát trực quan tình huống báo lỗi khi nhập bán kính là số thực.

Có thể yêu cầu HS giải thích tại sao lại khai báo S là kiểu thực, nếu khai báo là kiểu nguyên có đ-ợc không? Qua câu hỏi này HS cần nhận thấy đ-ợc S phải có kiểu là số thực bởi vì So_PI là số thực, nên kết quả của biểu thức So_PI*R*R là số thực.

Về vấn đề hợp kiểu của biến với giá trị gán cho biến, ở đây chỉ cần HS biết đ-ợc nếu biến kiểu nguyên thì chỉ có thể đ-ợc gán giá trị nguyên, nếu biến có kiểu thực thì có thể đ-ợc gán giá trị thực. Không nên giới thiệu, phân tích sâu, chi tiết những tình huống ngoại lệ hoặc sự biến đổi kiểu dữ liệu ở đây.

Các ch-ơng trình ví dụ trên đây còn có thể đ-ợc sử dụng để giới thiệu cho HS về việc kết hợp giữa lệnh write(), writeln() và read(), readln() để tạo giao diện nhập, xuất dữ liệu.

Để chuẩn bị cho bài thực hành 3, GV có thể ra bài tập để học sinh tập khai báo biến trong Pascal, cụ thể nh-: khai báo biến để l-u giữ tuổi của một ng-ời; khai báo biến để l-u giữ tên ng-ời, khai báo biến để l-u cân nặng, chiều cao ng-ời. HS cần giải thích đ-ợc việc lựa chọn kiểu dữ liệu phù hợp.

Cuối bài học này, cần khái quát cho HS biết biến, hằng là những đại l-ợng có trong mọi ngôn ngữ lập trình. Trên đây là những ví dụ đ-ợc viết trong ngôn ngữ Pascal.

L-u ý: Việc sử dụng biến đã giúp cải tiến ch-ơng trình ban đầu để cho phép

ng-ời sử dụng có thể tính diện tích hình tròn với bán kính nhập từ bàn phím. Điều đó đã góp phần lí giải ý nghĩa, lợi ích của biến trong ch-ơng trình. Tuy nhiên, ví

dụ trên lại ch-a làm rõ ý nghĩa của hằng trong ch-ơng trình.

Thử hình dung, nếu trong ch-ơng trình trên sử dụng So_PI nhiều lần, tức là nếu có nhiều biểu thức dùng đến So_PI nh- tính diện tích, tính chu vi của nhiều hình tròn chẳng hạn. Trong tr-ờng hợp không sử dụng hằng thì ở tất cả các biểu thức cần dùng số Pi đều phải viết giá trị số là 3.14. Giả sử sau đó muốn tính toán với độ chính xác cao hơn, chẳng hạn với số Pi là 3.1416, thì ng-ời lập trình phải tìm tất cả các chỗ mà số Pi đã đ-ợc viết là 3.14 để thay bằng 3.1416. Nh- vậy sẽ mất thời gian và dễ nhầm lẫn.

Nh-ng nếu ch-ơng trình sử dụng hằng So_PI, đ-ợc khai báo ban đầu là Const So_PI = 3.14; và sau đó trong các công thức có sử dụng đến số Pi, thay vì phải viết là 3.14 ng-ời lập trình dùng hằng So_PI thay thế vào đó. Vì vậy, nếu muốn thay đổi giá trị của số Pi trong toàn bộ ch-ơng trình từ 3.14 sang 3.14.16 thì ng-ời lập trình chỉ cần tiến hành một chỉnh sửa duy nhất câu lệnh khai báo ở đầu ch-ơng trình thành So_PI = 3.1416;, không cần phải chỉnh sửa các biểu thức trong ch-ơng trình. Khi đó tất cả các biểu thức dùng hằng So_PI trong ch-ơng trình đều đ-ợc tính toán với số Pi có giá trị mới là 3.1416.

Tình huống này là ví dụ làm rõ một trong những lợi ích và ý nghĩa của hằng trong lập trình.

Nếu khả năng tiếp thu của HS tốt và còn thời gian, sau khi đã hoàn thành bài học, căn cứ vào giải thích ý nghĩa của hằng ở trên, giáo viên có thể lấy một ch-ơng trình minh hoạ ý nghĩa, lợi ích của hằng cho HS. Phần giải thích về ý

nghĩa, lợi ích của hằng không bắt buộc phải giới thiệu cho HS.

3. H-ớng dẫn trả lời câu hỏi và bài tập

Bài 1. Xét về mặt lập trình, biến đại l-ợng đ-ợc dùng để l-u trữ dữ liệu và dữ liệu đ-ợc biến l-u trữ có thể thay đổi trong khi thực hiện ch-ơng trình. Xét về

mặt l-u trữ dữ liệu, có thể xem biến là "tên" của một vùng nhớ đ-ợc dành sẵn để l-u dữ liệu trong suốt quá trình thực hiện ch-ơng trình.

Gán giá trị cho một biến về thực chất là l-u dữ liệu t-ơng ứng vào vùng nhớ đ-ợc đặt tên và dành riêng cho biến. Việc thực hiện các tính toán và xử lí với biến có nghĩa là thực hiện tính toán và xử lí với dữ liệu đ-ợc gán đó.

Giả sử X đ-ợc khai báo là biến với kiểu dữ liệu số nguyên và X đ-ợc

gán dữ liệu là số 5. Sau khi khai báo, ch-ơng trình sẽ dành riêng một vùng nhớ nào đó cho biến X, và khi gán 5 cho X thì vùng nhớ đó l-u dữ liệu 5.

Lệnh ghi X ra màn hình có nghĩa là ghi số 5 ra màn hình.

L-u ý đối với giáo viên. Khi một vùng nhớ đ-ợc khai báo để l-u dữ

liệu làm giá trị của một biến, vùng nhớ đó sẽ không đ-ợc phép sử dụng vào mục đích khác. Do vậy, một trong những kĩ năng lập trình là sử dụng càng ít biến càng tốt, nhất là trong những tr-ờng hợp việc sử dụng bộ nhớ bị hạn chế. Nh-ng với công nghệ hiện nay, bộ nhớ máy tính đã có dung l-ợng rất lớn nên vấn đề hạn chế sử dụng biến trong ch-ơng trình đã không còn là vấn đề cấp thiết.

Bài 2. Việc khai báo biến gồm: Khai báo tên biến và khai báo kiểu dữ liệu của biến.

Khi khai báo biến, ngoài việc tên biến đ-ợc đ-a vào danh sách các đối t-ợng quản lí, máy tính (thông qua ch-ơng trình dịch) sẽ xác định kiểu của biến và dành một vùng nhớ có độ lớn thích hợp với phạm vi kiểu của biến để l-u giá trị của biến. Ví dụ, cũng để l-u các giá trị là số nguyên, khi khai báo biến kiểu byte, máy tính chỉ dành vùng nhớ có độ lớn 1 byte, nh-ng khi khai báo biến kiểu nguyên, máy tính sẽ dành vùng nhớ có độ lớn 2 byte, hoặc vùng nhớ 6 byte đ-ợc dành cho biến đ-ợc khai báo với kiểu số thực,... Nhờ thế việc sử dụng bộ nhớ sẽ hiệu quả hơn. Ngoài ra máy tính sẽ biết áp dụng các phép toán thích hợp đối với giá trị của biến.

Bài 3. Đáp án: a) Hợp lệ; b) Không hợp lệ; c) Hợp lệ; d) Không hợp lệ.

Bài 4. Mặc dù đều cùng phải khai báo tr-ớc khi có thể sử dụng trong ch-ơng trình, sự khác nhau giữa biến và hằng là ở chỗ giá trị của hằng không thay đổi trong suốt quá trình thực hiện ch-ơng trình, còn giá trị của biến thì có thể thay đổi đ-ợc tại từng thời điểm thực hiện ch-ơng trình.

Bài 5. Không thể gán lại giá trị 3.1415 cho Pi trong phần thân ch-ơng trình vì giá trị của hằng không thay đổi trong suốt quá trình thực hiện ch-ơng trình.

Bài 6. a) Hợp lệ; b) Không hợp lệ vì tên biến không hợp lệ; c) Không hợp lệ vì

cho giá trị khi khai báo; d) Không hợp lệ vì không đ-ợc gán giá trị cho biến

khi khai báo (cách gán giá trị cho biến cũng không đúng cú pháp).

Bài 7. Các lỗi trong ch-ơng trình: (1) Thừa dấu bằng ở dòng 1 (chỉ cần dấu hai chấm); (2) Thừa dấu hai chấm ở dòng 2 (với hằng chỉ cần dấu bằng); (3) Thiếu dấu chấm phẩy ở dòng 4; (4) Khai báo kiểu dữ liệu của biến b không

phù hợp: Khi chia hai số nguyên, kết quả luôn luôn là số thực, cho dù có chia hết hay không. Do đó cần phải khai báo biến b là biến có kiểu dữ liệu

số thực.

Bài 8. Cách khai báo hợp lí:

a) Các biến a và h là kiểu số nguyên; biến S: kiểu số thực.

b) Cả bốn biến a, b, c và d là các kiểu số nguyên.

Một phần của tài liệu Sach_GV_Tin_8 (Trang 40 - 46)

Tải bản đầy đủ (PDF)

(100 trang)