Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 34 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
34
Dung lượng
0,91 MB
Nội dung
Chương Giải thuật xử lý thông tin ngôn ngữ lập trình Học phần: LẬP TRÌNH CƠ BẢN Tài liệu tham khảo Giáo trình tin học sở, Hồ Sỹ Đàm, Đào Kiến Quốc, Hồ Đắc Phương Đại học Sư phạm, 2004 – Chương 7, Giải thuật xử lý thơng tin ngơn ngữ lập trình NỘI DUNG Khái niệm toán giải thuật Đặc trưng (yêu cầu) giải thuật Các phương pháp diễn đạt giải thuật Sơ lược đánh giá giải thuật Ngơn ngữ lập trình mức khác ngơn ngữ lập trình Q trình thực chương trình ngơn ngữ bậc cao Giải thuật xử lý thông tin ngôn ngữ lập trình Input u cầu KHÁI NIỆM BÀI TỐN Output Cho số tự nhiên n n có phải số ngun tố hay khơng “có” hay “khơng” Cho hồ sơ điểm sinh viên Tìm tất sinh viên có điểm trung bình Danh sách sv thoả mãn Thiết kế hình học, tải trọng Tính sức bền Độ bền Cho toán nghĩa cho input, u cầu để tìm (tính) output Giải thuật xử lý thơng tin ngơn ngữ lập trình KHÁI NIỆM THUẬT TỐN Thuật tốn (algorithm) q trình gồm dãy hữu hạn thao tác thực xếp theo trình tự xác định dùng để giải tốn Ví dụ : thuật tốn Euclid tìm ước số chung lớn hai số tự nhiên Thay phải tính toán theo định nghĩa làm rõ cấu trúc USCLN (tích ước số chung với số mũ nhỏ nhất) thuật tốn Euclid dựa tính chất sau: USCLN(a,b) = USCLN (b,a)) Nếu a> b, USCLN(a,b) = USCLN (a-b,b) USCLN(a,a)= a Giải thuật xử lý thơng tin ngơn ngữ lập trình THUẬT TOÁN EUCLID TIM USCLN CỦA HAI SỐ TỰ NHIÊN Bài tốn: Cho hai số m, n tìm d = USCLN(m,n) Bước 1: Kiểm tra m= n bước 5, không thực tiếp bước 2 Bước 2: Nếu m> n bước không thực tiếp bước 3 Bước 3: m n 3 m AX Ghi từ AX 2B00 21 thuật xử lý thông tinA3 ngôn ngữ lập trình 00 2B 1010 0011 0000 0000Giải0010 1011 HỢP NGỮ (ASSEMBLY) Về bản, lệnh hợp ngữ tương tự với lệnh máy – dùng mã chữ nên dễ hiểu, dễ sửa Phải dịch ngôn ngữ máy (thay mã lệnh địa chỉ) Có lệnh macro, cho phép thay hiệu Ưu điểm: dễ lập trình dễ sửa lỗi ngơn ngữ máy Nhược điểm: cịn phức tạp phụ thuộc vào máy Hợp ngữ 22 Mã máy hệ hexa MOV AX CHIEU_DAI A1 64 10 ADD AX CHIEU_RONG 03 66 10 MOV NUA_CHU_VI AX A3 00 2B Giải thuật xử lý thông tin ngôn ngữ lập trình DỊCH HỢP NGỮ (ASSEMBLY) Để máy chạy phải dịch chương trình hợp ngữ thành chương trình ngơn ngữ máy -> nhờ phần mềm có tên hợp dịch (assembler) hợp dịch phải bố trí khơng gian nhớ cho đối tượng, sau thay mã lệnh địa mã số Thay thực với lệnh macro, lệnh tương đương với nhiều lệnh Kết bước dịch tạo mô đun đối tượng, đoạn chương trình dạng nhị phân chưa có cấu trúc hoàn chỉnh để sẵn sàng chạy Thường thực bước khác liên kết, để kết hợp nhiều mơ đun đối tượng thành chương trình nhị phân hồn chỉnh Sau nạp chương trình vào thi hành 23 Giải thuật xử lý thông tin ngơn ngữ lập trình NGƠN NGỮ BẬC CAO Ngôn ngữ máy hợp ngữ phụ thuộc vào máy, lại khó dùng, buộc người lập trình phải viết tinh tế đến mức lệnh máy Người ta muốn ngơn ngữ diễn tả thuật tốn mà thôi, không liên quan đến hệ lệnh đặc thù máy tính cụ thể Các ngơn ngữ gọi ngơn ngữ bậc cao (high level language) hay cịn gọi ngơn ngữ thuật tốn (algorithmic language) Ngơn ngữ thuật tốn có hình thức giống với ngơn ngữ tự nhiên ngơn ngữ tốn học nên dễ diễn đạt nhiều so với ngôn ngữ máy hợp ngữ 24 Giải thuật xử lý thông tin ngôn ngữ lập trình VÍ DỤ VỀ NGƠN NGỮ BẬC CAO Ví dụ giải phương trình bậc PASCAL DELTA := B*B - 4*A*C; IF DELTA >= THEN BEGIN X1 := (- B + SQRT(DELTA))/ (2*A); X2 := (- B - SQRT(DELTA))/ (2*A); WRITE (X1,X2); END ELSE WRITE(‘Vô nghiệm) 25 20 10 40 30 FORTRAN DELTA = B*B - 4* A*C IF DELTA < GOTO 10 X1= (- B + SQRT(DELTA))/ (2*A) X2 =(- B - SQRT(DELTA))/ (2*A) WRITE (3,20) X1, X2 FORMAT ('NGHIEM 1= ', F8.3, NGHIEM = ', F8.3) GOTO 30 WRITE(3,40) FORMAT('VO NGHIEM') END Giải thuật xử lý thông tin ngôn ngữ lập trình DỊCH NGƠN NGỮ BẬC CAO Máy tính thi hành trực tiếp ngơn ngữ nhị phân, phải dịch cách để máy tính thực Có hai cách thực hiện: - Sử dụng chương trình mơ (phần mềm mã nhị phân gọi chương trình thơng dịch - interpreter) Chương trình đọc thi hành lệnh ngôn ngữ bậc cao Do chương trình thơng dịch thực đóng vai trị máy ảo Trong chế độ thơng dịch, khơng sinh chương trình tương ứng mã nhị phân - Dịch chương trình ngơn ngữ thuật tốn thành chương trình ngơn ngữ máy bảo tồn ngữ nghĩa nhờ chương trình biên dịch (compiler) 26 Giải thuật xử lý thơng tin ngơn ngữ lập trình THỰC HIỆN CHƯƠNG TRÌNH TRÊN NGƠN NGỮ BẬC CAO Soạn thảo chương trình nhờ soạn thảo Phân tích từ vựng (lexical analys): tạo hồ sơ tất đối tượng chương trình phục vụ cho việc phân phối khơng gian nhớ sau Phân tích cú pháp (syntax analys): Cú pháp (syntax): quy tắc viết câu lệnh (statement) đảm bảo rõ nghĩa, không nhập nhằng Nếu không tạo mã Tất lỗi cú pháp phát dịch Tạo mã, tối ưu mã (code generation, optimalization) Liên kết: (link) kết nối mô đun đối tượng thành chương trình hồn chỉnh Thực hiện, tải chương trình nạp liệu để chạy Khi chạy cịn có lỗi ngữ nghĩa Lỗi ngữ nghĩa phát chạy chương trình 27 Giải thuật xử lý thơng tin ngơn ngữ lập trình DỊCH SANG NGƠN NGỮ MÁY Phần mềm soạn thảo Chương trình nguồn Chương trình dịch Các mơ đun đối tượng Lỗi cú Lỗi cú pháp pháp Soạn thảo 28 Dịch Chương trình liên kết Dữ liệu Dữ liệu Chương trình chạy Kết Kếtlýquả xử xử lý Lỗi liên kết Lỗi liên kết Liên kết Giải thuật xử lý thơng tin ngơn ngữ lập trình Lỗi thi Lỗi thi hành hành Thực MÔI TRƯỜNG PHÁT TRIỂN PHẦN MỀM 1985: với xuất phát triển Turbo Pascal hình thành khuynh hướng việc tạo môi trường phát triển tích hợp IDE (Intergated Development Environment) -> tồn trình soạn thảo, dịch, liên kết , thi hành gỡ lỗi thực mối trường liên hệ chặt chẽ bước phát triển tiếp IDE việc phát triển hướng đối tượng, phát triển theo mẫu, lập trình hướng tới thành phần (liên kết động thành phần có sẵn mã nhị phân) làm việc sinh mã chương trình trở nên hiệu nhiều Các hệ CASE (Computer Aided Software Engineering) cho phép phát sinh mã thiết kế bước tiến theo khuynh hướng khác 29 Giải thuật xử lý thông tin ngơn ngữ lập trình Tóm tắt nội dung Ngơn ngữ lập trình phương tiện diễn tả thuật tốn để máy tính sử dụng trực tiếp gián tiếp Theo mức trừu tượng hố có mức ngôn ngữ máy, hợp ngữ ngôn ngữ thuật toán Đối với hợp ngữ phải sử dụng phần mềm hợp dịch, với ngơn ngữ thuật tốn phải dùng phần mềm biên dịch để tạo phần mềm tương ứng ngôn ngữ máy – ngôn ngữ mà máy chạy trực tiếp Các bước để dịch từ chương trình nguồn sang mã nhị phân soạn thảo, phân tích từ vựng, phân tích cú pháp, dịch, tối ưu hoá, liên kết mã Trong mơi trường tích hợp khâu khâu gỡ lỗi tích hợp vào tổng thể 30 Giải thuật xử lý thông tin ngôn ngữ lập trình THẢO LUẬN Sự khác biệt mức ngơn ngữ lập trình, ngun tắc phân biệt mức NNLT Đánh giá hiệu thuật toán khác giải toán Phân tích ưu, nhược điểm phương pháp biểu diễn giải thuật? 31 Giải thuật xử lý thông tin ngơn ngữ lập trình CÂU HỎI VÀ BÀI TẬP Thuật tốn gì? Cho ví dụ Xác định input output cho thuật toán sau đây: a Rút gọn phân số b Kiểm tra xem ba số cho trước a, b c độ dài ba cạnh tam giác hay khơng? Trình bày tính chất xác định thuật tốn nêu rõ nghĩa tính chất Cho tam giác ABC có góc vng A cho biết cạnh a góc B Hãy viết thuật tốn để tính góc C, cạnh b cạnh c Hãy phát biểu thuật toán để giải toán sau: "Có số táo Dùng cân hai đĩa (khơng có cân) để xác định táo nặng nhất" Chỉ dùng phép cộng, tính bình phương số 32 Giải thuật xử lý thông tin ngơn ngữ lập trình CÂU HỎI VÀ BÀI TẬP So sánh ngơn ngữ thuật tốn với ngơn ngữ máy hợp ngữ Kể tên số ngôn ngữ lập trình mà bạn biết Nếu bước thực chương trình ngơn ngữ thuật giải 10 Phân biệt lỗi cú pháp lỗi ngữ nghĩa 11 Trình bày mơi trường phát triển tích hợp 33 Giải thuật xử lý thơng tin ngơn ngữ lập trình HỎI VÀ ĐÁP Máy tính điện tử xử lý thông tin ... giải thuật Các phương pháp diễn đạt giải thuật Sơ lược đánh giá giải thuật Ngơn ngữ lập trình mức khác ngơn ngữ lập trình Q trình thực chương trình ngơn ngữ bậc cao Giải thuật xử lý thông. .. Giải thuật xử lý thông tin ngơn ngữ lập trình CÂU HỎI VÀ BÀI TẬP So sánh ngơn ngữ thuật tốn với ngơn ngữ máy hợp ngữ Kể tên số ngôn ngữ lập trình mà bạn biết Nếu bước thực chương trình ngơn ngữ. .. chương trình vào thi hành 23 Giải thuật xử lý thông tin ngơn ngữ lập trình NGƠN NGỮ BẬC CAO Ngôn ngữ máy hợp ngữ phụ thuộc vào máy, lại khó dùng, buộc người lập trình phải viết tinh tế đến mức