View Full Version : Một câu hỏi nhỏ
Baongoc_yb
24-04-2004, 04:15
xin các anh chị xem một bài:tim so nho nhat trong ba so!
program bt2;
var a,b,c,min:integer;
begin
writeln('nhap vao ba so:');read(a,b,c);
min:=a;
if min > b then min := b;
if min > c then min:=c;
writeln('so nho nhat la:',min);
readln;
end.
các anh chị cho em hỏi là nếu đã gán min:=a sao lại còn có thể gán min:=b,c?
em nghĩ là min đã bị chiếm mất ô nhớ rồi chu ? Xin anh chị vui lòng giải thích hộ
gửi Baongoc_yb : tui nghĩ mình có thể hiểu nôm na là chương trình làm như vầy:
giả sử người dùng nhập vào 3, 2 & 1 (theo thứ tự đó):
chương trình thấy số 3 trước => "3 là số nhỏ nhất tui thấy từ trước tới giờ" (vì từ trước tới giờ -- từ lúc bắt đầu chạy tới giờ -- chương trình đã thấy số nào đâu -- đây là số đầu tiên mà)" => gán giá trị 3 vô biến min
kế đến chương trình thấy số 2 => so sánh min (đang là 3) với 2 => "2 là số nhỏ nhất tui thấy từ trước tới giờ" => gán giá trị 2 vô biến min (giá trị cũ là 3 của min sẽ bị ghi đè lên)
kế đến chương trình thấy số 1 => so sánh min (đang là 2) với 1 => "1 là số nhỏ nhất tui thấy từ trước tới giờ" => gán giá trị 1 vô biến min (giá trị cũ là 2 của min sẽ bị ghi đè lên)
cuối cùng chương trình in giá trị đang có trong biến min (là 1) ra
Đúng là min chiếm 1 chỗ nào đó trong vùng nhớ; nhưng mình luôn có thể thay đổi giá trị chứa trong biến min . Trừ ra nếu mình khai báo min là 1 hằng số thay vì là 1 biến thì lúc đó mới 0 thể thay đổi giá trị của min
Huynh Phong
24-04-2004, 18:28
Bete trả lời quá rỏ ràng rùi, không phải giải thích gì thêm !
Baongoc_yb
24-04-2004, 21:56
Đúng là min chiếm 1 chỗ nào đó trong vùng nhớ; nhưng mình luôn có thể thay đổi giá trị chứa trong biến min . Trừ ra nếu mình khai báo min là 1 hằng số thay vì là 1 biến thì lúc đó mới 0 thể thay đổi giá trị của min
Như vậy có phải là khi trước đó chẳng hạn mình có một câu lệnh nhập writeln('nhap a');read(a); thì mình vẫn có thể có một câu lệnh tương tự và số mới nhập vào có thể đè lên số cũ?
Cám ơn bác bete nhiều!
"Như vậy có phải là khi trước đó chẳng hạn mình có một câu lệnh nhập writeln('nhap a');read(a); thì mình vẫn có thể có một câu lệnh tương tự và số mới nhập vào có thể đè lên số cũ?"
==> đúng vậy . Nếu bạn nhập 10 lần (10 giá trị khác nhau) với lệnh read vô cùng 1 biến => mỗi lần nhập sẽ ghi đè lên giá trị cũ . Nếu ngôn ngữ lập trình mà 0 cho phép ghi đè lên giá trị đang có của 1 biến thì tui nghĩ phe ta sẽ nhức đầu lắm (có thể nói hầu như 0 viết được chương trình nào hết :))
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.