Giải thuật nhập các thông số đầu vào

Một phần của tài liệu Xây dựng phần mềm thiết kế mẫu tàu du lịch mang nét văn hóa đặc trưng của khánh hòa (Trang 62 - 65)

Về nguyên tắc, các kích thước của tàu khi nhập vào chương trình phải là số thực dương, do đó cần kiểm tra để tránh các trường hợp kích thước nhập vào là số 0, số âm, kiểu chuỗi,..Dưới đây là thuật toán kiểm tra thông số đầu vào và hạn chế lại khả năng nhập của người dùng:

Thuật toán liên kết hành động giữa hộp thoại và lisp thông qua từ khóa (mẫu cabin 1) (setq cabin 1 bcb/hcb 1.17 bcb/hcb1 1.076 Ltk 10 Btk 2.2 Htk 2.6 Ptk 1.04 Lttk 12000

)// gán giá trị cho các biến

(action_tile "CABIN1" "(setq cabin 1) // hành động thông qua từ khóa liên kết với hộp thoại

(start_image \"HINH\") // bắt đầu hiển thị hình ảnh (fill_image 0 0 (dimx_tile \"HINH\") (dimy_tile \"HINH\") 500)

(slide_image 0 0 (dimx_tile \"HINH\") (dimy_tile \"HINH\") \"CABIN BAI BIEN.sld\")

(end_image) // kết thúc hiển thị hình ảnh

(set_tile \"bcb/hcb\" \"0.916\") // gán giá trị thông số cụ thể cho từng cabin (set_tile \"bcb/hcb1\" \"0.846\")

(set_tile \"H2\" \"Chieu dai L 10 m\") (set_tile \"H3\" \"Chieu rong B 2,2 m\")

(set_tile \"H4\" \"Chieu cao H 2,6 m\")

(set_tile \"H5\" \"Chieu cao man tau Htm 1.04 m\") (set_tile \"H6\" \"Chieu dai tau Ltm 12 m\")

(setq Ltk (atof (get_tile \"Ltk\"))) (setq Btk (atof (get_tile \"Btk\"))) (setq Htk (atof (get_tile \"Htk\"))) (setq Ptk (atof (get_tile \"Ptk\")))

(setq Lttk (atof (get_tile \"Lttk\")))

(setq bcb/hcb (atof (get_tile \"bcb/hcb\"))) (setq bcb/hcb1 (atof (get_tile \"bcb/hcb1\")))

");;

Thuật toán kiểm tra chiều dài cabin L (defun KTL (val why key / L)

;val giá trị chuyển về,why kiểu trả về khi người dùng rời ô nhập bằng chuột hay bằng enter

(setq L (atof val))

;đổi về kiểu số thực

(if (= 1 why)

;; (1 ở đây giá trị trả về của người dùng khi rời khỏi ô nhập kích thước ở đây kiểm tra khi người dùng rời khỏi ô nhập bằng enter)

Thuật toán kiểm tra số liệu đầu vào là số nguyên hay số thực

(progn

(if (not (or (= (type (read val)) 'REAL) (= (type (read val)) 'INT)))

(progn

(alert "L phai la mot so thuc")

(mode_tile key 2) ;; nếu không phải thì trả về vị trí ô nhập cũ và và bôi đen toàn bộ

(mode_tile key 3));;hết hàmprogn

Thuật toán nếu là số 0 thì buộc nhập lại

(progn (if (= 0 L) (progn

(alert "0 khong phai la so can nhap") (mode_tile key 2) (adsbygoogle = window.adsbygoogle || []).push({});

(mode_tile key 3) )

(mode_tile "Btk" 2)))) ;;hết hàm if

Thuật toán nếu là số âm thì buộc nhập lại

(if (Minusp L) (progn

(alert "Khong Duoc Nhap So Am") (mode_tile key 2)

(mode_tile key 3)

);;hết hàm progn );;hết hàm if

);;hết hàmprogn

Thuật toán đưa về vị trí cũ và nhập lại khi người dùng nhập số âm

(progn

(if (not (or (= (type (read val)) 'REAL) (= (type (read val)) 'INT))) (progn

(alert "L phai la mot so thuc") );;hết hàm progn (progn

(if (= 0 L) (progn

(alert "0 khong phai la so can nhap") (mode_tile key 2) (mode_tile key 3) ) ) );;hết hàm progn );;hết hàm if (if (Minusp L) (progn

(mode_tile key 2) (mode_tile key 3) );;hết hàm prong );;hết hàm if );;hết hàm progn );;hết hàm if

);;hết hàm kiểm tra chiều dài cabin do người dùng nhập vào.

Một phần của tài liệu Xây dựng phần mềm thiết kế mẫu tàu du lịch mang nét văn hóa đặc trưng của khánh hòa (Trang 62 - 65)