2 Mã lệnh chương trình
2.2 Tại sao cần dùng tập tin lệnh?
Vấn đề là ở chỗ nó đang cố tìm một tập tin lệnh có tênmy. Sự việc còn tồi tệ hơn nữa nếu như từ đầu tiên của tên tập tin lại là một hàm sẵn có. Để cho vui, bạn hãy thử tạo một tập tin lệnh có tênabs val.mvà chạy nó.
Việc theo dõi tất cả những tập tin lệnh của bạn có thể sẽ vất vả. Để cho mọi thứ trở nên đơn giản, tạm thời bây giờ bạn nên đặt tất cả tập tin lệnh vào trong thư mục mặc định.
Exercise 2.1 Dãy Fibonacci, kí hiệuF, được mô tả bởi các phương trìnhF1 = 1,
F2 = 1, và vớii ≥ 3,Fi = Fi−1 +Fi−2. Các số trong dãy này thường xuất hiện trong tự nhiên ở nhiều loại cây, đặc biệt là ở những cánh hoa hay vẩy được sắp xếp theo hình thù xoáy ốc.
Biểu thức sau được dùng để tính số Fibonacci thứn:
Fn = √1 5 " 1 +√ 5 2 !n − 1− √ 5 2 !n# (2.1)
Hãy chuyển biếu thức này sang Octave và lưu mã lệnh vào một tập tin có tên là
fibonacci1. Tại dấu nhắc lệnh, hãy đặt nbằng 10 và chạy đoạn mã. Dòng
cuối cùng của đoạn mã cần phải gán giá trị của Fn cho ans. (Giá trị đúng của
F10là 55).
2.2 Tại sao cần dùng tập tin lệnh?
Những lý do thông thường nhất cho việc dùng mã lệnh là:
• Khi bạn đang viết nhiều câu lệnh (nhiều hơn một vài dòng), có thể bạn cần thử vài lần trước khi mã lệnh chạy đúng. Việc đặt mã vào trong một tập tin lệnh sẽ giúp bạn dễ chỉnh sửa hơn là gõ lệnh từ dấu nhắc.
• Nếu bạn chọn tên hợp lý cho tập tin lệnh, bạn sẽ nhớ được là tập tin nào làm nhiệm vụ gì, và bạn có thể sẽ sử dụng lại được một tập tin lệnh của dự án này cho dự án sau.
• Nếu bạn chạy tập tin lệnh nhiều lần, việc gõ tên tập tin lệnh sẽ nhanh hơn là gõ lại toàn bộ mã lệnh!
Không may là sức mạnh của các tập tin lệnh cũng đi kèm với trách nhiệm của người dùng; bạn phải chắc rằng mình chạy đúng tập tin lệnh mà mình cần.
Thứ nhất, mỗi khi chỉnh sửa tập tin lệnh, bạn phải lưu nó lại trước khi chạy. Nếu quên không lưu, bạn sẽ chạy phiên bản cũ của tập tin.
Thứ hai, mỗi khi bạn tạo một tập tin lệnh mới, hãy bắt đầu viết đơn giản, kiểu nhưx=5, để có được kết quả hiện ra rõ ràng. Sau đó chạy tập tin lệnh để chắc rằng bạn nhận được kết quả như mong đợi. Octave có rất nhiều hàm định nghĩa sẵn. Rất dễ viết một tập tin lệnh có tên giống như tên hàm của Octave, và nếu không cẩn thận, bạn có thể thấy rằng mình đã chạy hàm của Octave thay vì tập tin lệnh vừa viết.
Dù trong trường hợp nòa, nếu mã lệnh mà bạn chạy không phải là mã lệnh bạn vừa sửa đổi thì bạn sẽ thấy việc gỡ rỗi thật phát bực! Và điều này dẫn ta đến Định lý thứ ba về gỡ lỗi:
Bạn phải chắc chắn 100% rằng mã lệnh bạn đang chạy đúng là mã lệnh bạn muốn chạy.