Lưu đồ Nassi_Shneiderman_Lưu đồ Nassi_Shneiderman_NSD trong lập_trình máy_tính là một biểu_diễn hình_ảnh thể_hiện một lập_trình cấu_trúc Lưu đồ này được phát_triển vào năm 1972 bởi Isaac_Nassi và học_trò của ông Ben_Shneiderman_Lưu đồ này còn được gọi là lưu đồ cấu_trúc bởi_vì nó thể_hiện cấu_trúc của chương_trình Tổng_quan Theo thiết_kế từ trên xuống dưới vấn_đề được chia ra thành nhiều vấn_đề nhỏ hơn cho đến khi chỉ còn những câu_lệnh đơn_giản và những kiến_trúc dòng điều_khiển tồn_tại Lưu đồ Nassi_Shneiderman phản_ánh kiểu phân_tách từ trên xuống dưới này một_cách trực_tiếp bằng cách dùng những hình_hộp lồng nhau để thể_hiện những vấn_đề nhỏ hơn Nhất_quán với lý_thuyết của lập_trình cấu_trúc Lưu đồ Nassi_Shneiderman không có cách nào để thể_hiện câu_lệnh GOTO Lưu đồ Nassi_Shneiderman rất ít khi được dùng cho lập_trình chính_thức Độ trừu_tượng của nó rất gần với mã lệnh của một chương_trình cấu_trúc và sẽ phải vẽ lại toàn_bộ lưu đồ nếu muốn chỉnh_sửa Tuy_nhiên lưu đồ Nassi_Shneiderman có_thể hữu_ích khi dùng trong giai_đoạn phác_thảo và những thiết_kế cấp cao Lưu đồ Nassi_Shneiderman rất tương_đồng gần như hoàn_toàn với lưu đồ truyền_thống Tất_cả những gì có_thể thể_hiện trên lưu đồ Nassi_Shneiderman đều có_thể thể_hiện trên lưu đồ truyền_thống và ngược_lại Một_số ngoại_lệ có_thể kể đến câu_lệnh goto và hai câu_lệnh break continue trong vòng lặp của ngôn_ngữ_lập_trình C Lưu đồ Khối xử_lý khối xử_lý thể_hiện những bước đơn_giản nhất và không yêu_cầu phân_tích Khi gặp một khối xử_lý hành_động bên trong khối đó được thực_hiện và ta chuyển đến khối tiếp_theo Khối rẽ nhánh có hai loạị khối rẽ nhánh Loại một là loại đúng_sai hoặc có không đơn_giản cung_cấp cho chương_trình hai hướng lựa_chọn trên cơ_sở điều_kiện có được thoả_mãn hay không Những khối này có_thể sử_dụng như những vòng lặp bắt chương_trình thực_hiện một công_việc cho đến khi điều_kiện được thoả_mãn Loại khối rẽ nhánh thứ hai là loại khối rẽ nhánh nhiều lựa_chọn Loại này được dùng khi chương_trình cần đến trường_hợp lựa_chọn Khối này thường chứa một câu hỏi hoặc lựa_chọn Sau đó nó cung_cấp cho chương_trình một chuỗi những lựa_chọn thường đi kèm với những khối xử_lý con để tiết_kiệm diện_tích Vòng lặp thử khối này cho_phép chương_trình lặp lại một hoặc nhiều công_việc cho đến khi điều_kiện liên_quan được thoả_mãn Những khối xử_lý bao quanh bởi mỗi vòng lặp là các khối con với thanh bên chạy từ điều_kiện ra ngoài Có hai loại vòng lặp thử chính vòng thử trước và vòng thử sau Sự khác_biệt duy_nhất giữa hai loại này là thứ_tự các bước được thực_hiện trong vòng lặp Trong vòng lặp thử trước khi chương_trình bắt_gặp vòng lặp thử nó sẽ kiểm_tra xem điều_kiện đã được thoả_mãn chưa Nếu điều_kiện chưa thoả_mãn thì thực_hiện các công_việc trong vòng lặp sau đó quay lại kiểm_tra lại điều_kiện Nếu điều_kiện chưa thoả_mãn thì thực_hiện lại các công_việc Cứ như_vậy cho đến khi điều_kiện được thoả_mãn chương_trình sẽ bỏ_qua các bước xử_lý và chuyển đến khối tiếp_theo Vòng lặp thử sau đảo lôn thứ_tự lại các công_việc được thực_hiện trước khi điều_kiện được kiểm_tra Vòng lặp thử sau cho_phép các công_việc được thực_hiện ít_nhất một lần trước khi điều_kiện được kiểm_tra lần đầu_tiên Tài_liệu đã xuất_bản BULLET Nassi I_Shneiderman_B Flowchart techniques for structured programming SIGPLAN Notices_XII_August 1973 Các đường link liên_kết BULLET A short history of structured flowcharts Nassi_Shneiderman_Diagrams by Ben_Shneiderman_Phần mềm BULLET Atego s BlueRiverX32 Nassi_Shneiderman development environment for C and C BULLET Structorizer_Nassi_Shneiderman diagram editor for Linux_Mac_OS_X Microsoft Windows released under the GNU General_Public_License_BULLET Struktograaf_Nassi_Shneiderman diagram editor for Microsoft Windows proprietary application Dutch website
Lưu đồ Nassi–Shneiderman