1. Trang chủ
  2. » Công Nghệ Thông Tin

Lập trình căn bản cho người mới

173 2 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Với sự phát triển nhanh chóng của ngành Công nghệ Thông tin trong những năm gần đây, nhu cầu nhân sự trong ngành này tăng mạnh ở cả quy mô thế giới lẫn Việt Nam. Học lập trình không còn là một lựa chọn xa lạ với nhiều thanh niên Việt Nam nữa. Càng ngày càng có nhiều bạn trẻ muốn tìm đến với công việc lập trình, bắt đầu bằng việc tham gia vào các trường đào tạo chính quy, các trung tâm dạy lập trình, hoặc tự học. Với hàng chục năm làm việc trong ngành Công nghệ Thông tin và trực tiếp tham gia vào công tác đào tạo lập trình viên, chúng tôi nhận ra rằng các bạn trẻ gặp rất nhiều khó khăn trong những thời điểm đầu tiên tiếp xúc với công việc này. Có rất nhiều rào cản khiến cho việc học lập trình trở nên khó khăn hơn, có thể kể đến như do chương trình đào tạo được thiết kế không tốt, giáo trình khó hiểu, chương trình không sát với thực tế, giáo trình không giúp người học xây dựng được kiến thức một cách bài bản và vững vàng. Bên cạnh đó, mặc dù có rất nhiều sách dạy lập trình bằng tiếng Anh rất tốt, nhưng nhiều người lại không sử dụng được tiếng Anh. Đó là những thiệt thòi và khó khăn mà những bạn trẻ đang muốn tìm đến ngành nghề lập trình đang gặp phải hiện nay. Với mục tiêu giúp những người mới bắt đầu học lập trình được thuận lợi hơn, đội ngũ Giảng viên của Hệ thống Đào tạo Lập trình Hiện đại CodeGym đã biên soạn nên cuốn sách này và gửi đến các bạn. Cuốn sách này dành cho những người bắt đầu từ con số 0 và mong muốn phát triển năng lực lập trình trong thời gian nhanh nhất. Cuốn cẩm nang được thiết kế một cách khoa học để giúp người học tự xây dựng năng lực của mình thông qua từng hoạt động một. Không có quá nhiều thuật toán phức tạp, nhanh chóng làm ra được các sản phẩm để chứng minh sự tiến bộ của người học, sử dụng ngôn ngữ lập trình Javascript với độ tương tác cao là những đặc điểm nổi bật của cuốn cẩm nang này. Mặc dù đội ngũ tác giả chúng tôi đã nỗ lực trong việc hoàn thiện cuốn sách này với tiêu chí dễ hiểu, khoa học và hiệu quả dành cho người mới bắt đầu, tuy nhiên khó để tránh khỏi các sai sót trong quá trình biên soạn. Vì vậy, chúng tôi rất mong nhận được các ý kiến phản hồi và đóng góp của mọi người thông qua email infocodegym.vn. Cảm ơn và chúc các bạn gặt hái được nhiều giá trị từ cuốn sách này.

Mục lục Lời mở đầu Hướng dẫn sử dụng sách Chương - Nhập mơn lập trình Mục tiêu Giới thiệu Máy tính hoạt động nào? Phần mềm tạo nào? Quy trình tạo phần mềm 10 Các vai trị lập trình 11 Ngơn ngữ lập trình 13 Thuật toán 14 Mơ tả thuật tốn mã giả 15 10 Mơ tả thuật tốn lưu đồ 16 11 Một số cấu trúc thường gặp thuật toán 17 12 Ngôn ngữ lập trình JavaScript 22 13 Chương trình 22 14 Cài đặt công cụ lập trình 23 15 Bài thực hành 24 16 Bài tập 25 17 Bài kiểm tra 26 18 Tổng kết 28 Chương - Biến, kiểu liệu toán tử 30 Mục tiêu 30 Giới thiệu 30 Biến 30 Kiểu liệu 34 Phép toán toán học 36 Phép toán logic 40 Phép toán so sánh 43 Đọc liệu từ bên 44 Hiển thị liệu 46 10 Mã 47 11 Các lỗi thường gặp 48 13 Bài thực hành 49 14 Bài tập 50 15 Bài kiểm tra 50 16 Tổng kết 52 Chương - Câu lệnh điều kiện 53 Mục tiêu 53 Giới thiệu 53 Cấu trúc điều kiện 54 Cấu trúc điều kiện if-else 54 Cấu trúc điều kiện if-else lồng 56 Cấu trúc điều kiện if-else bậc thang 57 Cấu trúc điều kiện switch-case 58 Mã 61 Các lỗi thường gặp 62 10 Bài thực hành 66 11 Bài tập 77 12 Bài kiểm tra 77 13 Tổng kết 79 Chương - Câu lệnh lặp 80 Mục tiêu 80 Giới thiệu 80 Câu lệnh lặp 80 Câu lệnh lặp while 81 Câu lệnh lặp do-while 82 Câu lệnh lặp for 82 Câu lệnh lặp lồng 84 Câu lệnh break 85 Câu lệnh continue 86 10 Mã 86 11 Các lỗi thường gặp 87 12 Bài thực hành 88 13 Bài tập 93 14 Bài kiểm tra 94 15 Tổng kết 96 Chương - Mảng 97 Mục tiêu 98 Giới thiệu 98 Mảng 98 Duyệt qua phần tử mảng 102 Mảng nhiều chiều 103 Các thao tác thông dụng với mảng 106 Mã 108 Các lỗi thường gặp 109 Bài thực hành 110 10 Bài tập 115 11 Bài kiểm tra 116 12 Tổng kết 118 Chương - Hàm 119 Mục tiêu 119 Giới thiệu 119 Hàm 120 Giá trị trả hàm 124 Tham số hàm 125 Phạm vi biến 125 Hàm đệ quy 126 Mã 127 Các lỗi thường gặp 129 10 Bài thực hành 130 11 Bài tập 133 12 Bài kiểm tra 134 13 Tổng kết 136 Chương - Thuật tốn tìm kiếm 137 Mục tiêu 137 Giới thiệu 137 Tìm kiếm tuyến tính 137 Tìm kiếm nhị phân 139 Độ phức tạp thuật toán 142 Các lỗi thường gặp 144 Bài thực hành 146 Bài tập 150 Bài kiểm tra 150 10 Tổng kết 151 Chương - Thuật toán xếp 152 Mục tiêu 152 Giới thiệu 152 Thuật toán xếp bọt 152 Thuật toán xếp chèn 155 Thuật toán xếp chọn 157 Các lỗi thường gặp 159 Bài thực hành 159 Bài tập 161 10 Bài kiểm tra 162 11 Tổng kết 162 Tổng kết 164 Đội ngũ tác giả 167 Lời mở đầu Với phát triển nhanh chóng ngành Công nghệ Thông tin năm gần đây, nhu cầu nhân ngành tăng mạnh quy mô giới lẫn Việt Nam Học lập trình khơng cịn lựa chọn xa lạ với nhiều niên Việt Nam Càng ngày có nhiều bạn trẻ muốn tìm đến với cơng việc lập trình, bắt đầu việc tham gia vào trường đào tạo quy, trung tâm dạy lập trình, tự học Với hàng chục năm làm việc ngành Công nghệ Thông tin trực tiếp tham gia vào cơng tác đào tạo lập trình viên, chúng tơi nhận bạn trẻ gặp nhiều khó khăn thời điểm tiếp xúc với cơng việc Có nhiều rào cản khiến cho việc học lập trình trở nên khó khăn hơn, kể đến chương trình đào tạo thiết kế khơng tốt, giáo trình khó hiểu, chương trình khơng sát với thực tế, giáo trình khơng giúp người học xây dựng kiến thức cách vững vàng Bên cạnh đó, có nhiều sách dạy lập trình tiếng Anh tốt, nhiều người lại không sử dụng tiếng Anh Đó thiệt thịi khó khăn mà bạn trẻ muốn tìm đến ngành nghề lập trình gặp phải Với mục tiêu giúp người bắt đầu học lập trình thuận lợi hơn, đội ngũ Giảng viên Hệ thống Đào tạo Lập trình Hiện đại CodeGym biên soạn nên sách gửi đến bạn Cuốn sách dành cho người số mong muốn phát triển lực lập trình thời gian nhanh Cuốn cẩm nang thiết kế cách khoa học để giúp người học tự xây dựng lực thơng qua hoạt động Khơng có q nhiều thuật tốn phức tạp, nhanh chóng làm sản phẩm để chứng minh tiến người học, sử dụng ngôn ngữ lập trình Javascript với độ tương tác cao đặc điểm bật cẩm nang Mặc dù đội ngũ tác giả nỗ lực việc hồn thiện sách với tiêu chí dễ hiểu, khoa học hiệu dành cho người bắt đầu, nhiên khó để tránh khỏi sai sót q trình biên soạn Vì vậy, mong nhận ý kiến phản hồi đóng góp người thơng qua email info@codegym.vn Cảm ơn chúc bạn gặt hái nhiều giá trị từ sách Trân trọng! Đội ngũ tác giả /codegym.vn/ - Hướng dẫn sử dụng sách Cuốn sách hướng đến mục tiêu giúp người học phát triển kiến thức lẫn kỹ Cho nên, để khai thác sách cách hiệu nhất, người học nên thực công việc sau đây: ● Ghi chép: Cần có sổ để ghi chép, sử dụng công cụ số trình soạn thảo Mind Map Việc ghi chép giúp người học đảm bảo mức độ hiểu khái niệm quan trọng Ghi chép giúp cho người đọc ghi nhớ tốt khái niệm ● Tìm kiếm thơng tin ngồi sách: Có khái niệm mà người đọc khơng hiểu được, đọc đọc lại nhiều lần Người đọc nên tìm kiếm thơng tin khái niệm nguồn khác ngồi sách, để tìm cách hiểu chúng Lí có nhiều cách để trình bày khái niệm đó, tác giả cố gắng để trình bày chúng cách dễ hiểu phù hợp với phần đơng độc giả, vài chỗ vài người bị khó hiểu Đừng đầu hàng, mà nên tìm cách để hiểu chúng phạm vi sách ● Luyện tập: Thực hành thao tác bắt buộc để phát triển kỹ Người học khơng thể có kỹ tốt đọc sách từ đầu tới cuối mà không thực hành thực tế Việc thực hành nên tăng theo cấp độ từ dễ đến khó Đối với thực hành có hướng dẫn, người học làm theo hướng dẫn Nhưng sau làm theo cần phải tiếp tục thực hành để tự làm mà không cần làm theo hướng dẫn ● Tổng kết sau chương: Sau hoàn thành chương, người học cần xem lại phần ghi chép mình, đối chiếu với mục tiêu để xem thử phát triển lực Nếu có phần chưa hiểu chưa làm cố gắng tìm thêm trợ giúp để giải đầy đủ Cuốn sách bao gồm chương, đề cập đến khái niệm tảng lập trình Tuy nhiên, nội dung chương khơng hồn tồn trình bày cách tuyến tính, mà tổ chức theo lối tích hợp Nghĩa khái niệm trình bày trải qua nhiều chương khác nhau, giúp cho người học có hội cọ xát nhiều lần, lặp lặp lại thao tác thực hành, giúp xây dựng tảng hiểu biết kỹ bền vững Sau cấu trúc chương, người đọc nên hiểu cấu trúc để có cách khai thác nội dung cách hiệu nhất: ● Mục tiêu: Là nơi định nghĩa rõ ràng ngắn gọn kiến thức kỹ mà người đọc xây dựng hoàn thành chương Người học cần ghi chép lại mục tiêu chương, để sau tự đánh giá lại xem đạt mục tiêu hay chưa Nếu khơng nắm mục /codegym.vn/ - tiêu người học rơi vào trạng thái hoang mang, khơng biết hướng đến điều ● Giới thiệu: Là nơi trình bày ngắn gọn mục đích nội dung chương Phần giúp người học trả lời câu hỏi WHAT (tôi học gì?) WHY (thấy liên quan khái niệm học với ứng dụng thực tế) ● Các mục nội dung: Phần chương trình bày khái niệm ứng dụng chúng Mỗi khái niệm trình bày đầy đủ định nghĩa, diễn giải, tình ứng dụng, vị dụ cụ thể thông tin khác xung quanh khái niệm ● Mã sạch: Mã phần đặc biệt sách để định hướng người đọc trở thành lập trình viên tốt từ đầu Trong lập trình, có nhiều cách để giải vấn đề, có số cách thực gọn gàng hiệu Mã cách để tổ chức mã nguồn thực khoa học hướng đến hiệu nói chung ● Các lỗi thường gặp: Phần liệt kê lỗi mà lập trình viên non kinh nghiệm thường nhiều thời gian để nhận khắc phục Chúng ta liệt kê hết tất lỗi xảy làm việc với cấu trúc lập trình đó, nhiên việc nhận biết lỗi thường gặp giúp cho người học lập trình tiết kiệm nhiều thời gian ● Bài thực hành: Đây nội dung thiết kế theo hướng “cầm tay việc”, có tác dụng giúp người đọc bắt đầu rèn luyện kỹ Các thực hành thiết kế theo hướng tăng dần độ khó quy mơ, tương ứng với kỳ vọng tăng trưởng kỹ người đọc Kết thúc phần Bài thực hành, người đọc bắt tay vào tự thực tập để nâng cao kỹ ● Bài tập: Là cách thức để người học tự rèn luyện kỹ Nếu nhìn vào lộ trình tổng quan, từ việc học lí thuyết (thơng qua phần Mục tiêu, Giới thiệu, Các khái niệm, Các ví dụ,…) sau đến rèn luyện kỹ (thông qua phần Thực hành phần Bài tập) Khi hồn thành phần Bài tập kỹ người đọc thành thạo so với hoàn thành phần Bài thực hành ● Bài kiểm tra: Đây mục giúp người đọc tự đánh giá lại kiến thức kỹ sau hồn thành chương Đáp án câu hỏi đặt phần cuối kiểm tra, giúp người học tự chấm điểm Nếu có khái niệm mà chưa trả lời người học nên quay trở lại phần trước để đọc kỹ /codegym.vn/ - ● Tổng kết: Là nơi giúp người học rà soát lại nhanh kiến thức kỹ học Phần tổng kết viết sẵn với nội dung ngắn gọn, chúng tơi khuyến khích người học nên tự viết lại phần tổng kết riêng với mức độ chi tiết theo cách hiểu Người học tự đối chiếu lại với mục tiêu liệt kê đầu chương, để xem đạt mục tiêu hay chưa /codegym.vn/ - Chương - Nhập môn lập trình Các khái niệm máy tính lập trình Mục tiêu ● Giải thích tổng quan cách hoạt động máy tính ● Phân biệt phần cứng phần mềm ● Liệt kê số phần cứng thông dụng ● Liệt kê số phần mềm thông dụng ● Biết vai trò phần cứng, phần mềm người dùng ● Trình bày tổng quan trình tạo phần mềm ● Giải thích vai trị ý nghĩa ngơn ngữ lập trình ● Biết tổng quan quy trình sản xuất phần mềm ● Phân biệt vai trị thơng dụng quy trình sản xuất phần mềm ● Giải thích ý nghĩa thuật tốn ● Mơ tả thuật tốn mã giả ● Mơ tả thuật tốn lưu đồ ● Cài đặt phần mềm để bắt đầu viết mã ● Tạo ứng dụng phần mềm Giới thiệu Trong chương sách, tìm hiểu khái niệm giới máy tính lập trình Đây khái niệm nhất, cần thiết trước bắt đầu viết dịng mã Chúng ta tìm hiểu khái niệm liên quan đến máy tính, phần mềm, người dùng, công việc sản xuất phần mềm, bước để làm phần mềm Cuối cùng, cài đặt môi trường chuẩn bị cho việc tạo phần mềm Kết thúc chương này, bắt tay vào viết dòng mã để tạo phần mềm Máy tính hoạt động nào? 3.1 Định nghĩa máy tính Thuật ngữ máy tính thường sử dụng để đến thiết bị điện tử có khả xử lý liệu chuyển đổi liệu thành thơng tin hữu ích Máy tính có khả nhờ kết hợp vi mạch điện tử tập lệnh lập trình viên tạo nên /codegym.vn/ - 5 Kết thúc lượt thứ nhất, số “nổi” lên Chúng ta thực lượt thứ hai với phần tử lại (2 1) Kết thúc lượt thứ hai số lên Và tất phần tử đứng vị trí Lượt thứ hai – Số “nổi” lên Lượt thứ ba – Số “nổi” lên Lượt thứ tư – Số “nổi” lên Lượt thứ năm – Số “nổi” lên Sắp xếp từ lên Sắp xếp từ lên so sánh (và đổi chỗ cần) việc so sánh cặp phần tử thứ n-1 n Tiếp theo so sánh cặp phần tử thứ n-2 n-1, so sánh đổi chỗ cặp phần tử thứ thứ hai Sau bước phần tử nhỏ “nổi” lên vị trí (nó giống hình ảnh "bọt" khí nhẹ lên trên) Tiếp theo tiến hành với phần tử từ thứ đến thứ n Mã giả Sắp xếp từ xuống procedure bubble_sort1(list L, number n) //n=listsize For number i from n downto for number j from to (i - 1) if L[j] > L[j + 1] //nếu chúng không thứ tự swap(L[j], L[j + 1]) //đổi chỗ chúng cho endif endfor endfor endprocedure Sắp xếp từ lên procedure bubble_sort2(list L, number n) //n=listsize For number i from to n-1 for number j from n-1 downto i if L[j] > L[j + 1] //nếu chúng không thứ tự /codegym.vn/ - 154 swap(L[j], L[j + 1]) //đổi chỗ chúng cho endif endfor endfor endprocedure Cài đặt thuật toán xếp bọt function bubbleSort(items) { let length = items.length; for (let i = 0; i < length; i++) { for (let j = 0; j < (length - i - 1); j++) { if (items[j] > items[j + 1]) { let tmp = items[j]; items[j] = items[j + 1]; items[j + 1] = tmp; } 10 11 } } 12 } Thuật toán xếp chèn Ý tưởng Sắp xếp chèn (insertion sort) thực xếp dãy số cách duyệt phần tử chèn phần tử vào vị trí thích hợp danh sách cho danh sách ln ln trì dạng qua xếp Ví dụ: Để xếp danh sách số (2 6) theo trật tự tăng dần Bước đầu tiên, danh sách chứa phần tử số Tiếp theo, chèn số vào danh sách đó, số lớn số phải “chèn” vào phía sau Sau đó, chèn số vào danh sách con, số lớn lại nhỏ chèn vào hai số Tương tự cho số lại tất số chèn vào danh sách Bước 1: Danh sách có phần tử ban đầu {2} Chúng ta chèn số vào sau số Bước 2: Danh sách xếp {2, 9} Chèn số vào danh sách Bước 3: Danh sách xếp {2, 5, 9} Chèn số vào danh sách /codegym.vn/ - 155 Bước 4: Danh sách xếp {2, 4, 5, 9} Chèn số vào danh sách Bước 5: Danh sách xếp {2, 4, 5, 8, 9} Chèn số vào danh sách Bước 6: Danh sách xếp {1, 2, 4, 5, 8, 9} Chèn số vào danh sách Bước 7: Tồn danh sách xếp Q trì chèn số vào vị trí Quá trình “chèn” diễn cách dịch chuyển phần tử phía sau vị trí muốn chèn để tạo chỗ trống cho phần tử Chẳng hạn Bước trên, để chèn số vào vị trí trước số phải dịch chuyển số số phía sau để tạo khoảng trống trước số Bước 1: Lưu giá trị vào biến tạm Bước 2: Dịch chuyển phần tử vị trí list[2] sang vị trí list[3] Bước 3: Dịch chuyển phần tử vị trí list[1] sang vị trí list[2] Bước 4: Gán giá trị biến tạm vào vị trí list[1] Q trình dịch chuyển để chèn phần tử vào vị trí Giải thuật Từ mơ tả ta có tranh khái quát cho giải thuật xếp chèn, có bước cho giải thuật sau: for (let i = 1; i < list.length; i++) { chèn phần tử list[i] vào danh sách list[0 i-1] cho danh sách list[0 i] xếp } Cài đặt thuật toán xếp chèn function insertionSort(items) { /codegym.vn/ - 156 for (let i = 1; i < items.length; i++) { let current = items[i]; let j = i-1; while (j >= && items[j] > current) { items[j+1] = items[j]; j ; } 10 11 } items[j+1] = current; 12 return items; 13 } Thuật toán xếp chọn Ý tưởng Chẳng hạn, muốn xếp danh sách theo trật tự tăng dần Chúng ta tìm phần tử nhỏ danh sách, đưa phần tử vị trí Sau đó, tìm phần tử nhỏ danh sách lại (trừ phần tử trước đó) đưa vị trí danh sách cịn lại đó, phần tử cuối Ví dụ: Để xếp danh sách số {2, 9, 5, 4, 8, 1, 6} sử dụng thuật toán xếp chọn, tiến hành bước sau: Bước 1: Tìm phần tử nhỏ danh sách Hốn đổi vị trí số cho số (nằm vị trí đầu tiên) Bước 2: Danh sách lại {9, 5, 4, 8, 2, 6}, loại trừ số xếp Tìm phần tử nhỏ 2, hoán đổi vị trí số với số (nằm vị trí danh sách cịn lại) Bước 3: Danh sách lại {5, 4, 8, 9, 6} Tìm phần tử nhỏ 4, hốn đổi vị trí số với số Bước 4: Danh sách cịn lại {5, 8, 9, 6} Tìm phần tử nhỏ 5, không cần hốn đổi nằm vị trí /codegym.vn/ - 157 Bước 5: Danh sách lại {8, 9, 6} Tìm phần tử nhỏ 6, hốn đổi vị trí số với số Bước 6: Danh sách lại {9, 8} Tìm phần tử nhỏ 8, hốn đổi vị trí số số Bước 7: Danh sách lại phần tử số Không cần thực thêm thao tác Danh sách xếp Quá trì xếp chọn số vào vị trí Giải thuật Từ mơ tả trên, có giải thuật cho thuật tốn xếp chọn sau: for (int i = 0; i < list.length - 1; i++) { tìm phần tử nhỏ danh sách list[i list.length-1]; hoán đổi phần tử nhỏ với phần tử list[i] cần thiết // list[i] nằm vị trí // lần lặp thực danh sách lại list[i+1 list.length-1] } Cài đặt thuật toán xếp chọn function selectionSort(arr) { let minIndex, temp, len = arr.length; for (let i = 0; i < len; i++) { minIndex = i; // tìm index giá trị nhỏ for (let j = i+1; j < len; j++) { if(arr[j] < arr[minIndex]) { minIndex = j; } 10 } 11 12 // Đổi chỗ 13 temp = arr[i]; 14 arr[i] = arr[minIndex]; 15 arr[minIndex] = temp; 16 } 17 return arr; 18 } /codegym.vn/ - 158 Các lỗi thường gặp Lỗi thường gặp #1: Duyệt không danh sách Trong thuật toán xếp, làm việc nhiều với danh sách/mảng vịng lặp, dễ mắc phải lỗi liên quan đến số bắt đầu kết thúc danh sách Hãy ý đến nơi mà có sử dụng phần tử đầu (chẳng hạn list[0] list[1], phần tử cuối (chẳng hạn list[list.lenght] list[list.length – 1] Lỗi thường gặp #2: Sử dụng nhầm số Trong thuật tốn xếp thường có nhiều vịng lặp lồng nhau, có biến khác để đại diện cho số Thông thường dùng biến i, j, k… để đại diện cho số từ vịng lặp ngồi bên Hãy ý đến nơi có truy xuất đến phần tử vòng lặp lồng nhau, chẳng hạn list[i], list[j], list[k]… Bài thực hành Bài 1: Triển khai thuật toán xếp bọt Mục tiêu: Luyện tập triển khai thuật toán xếp bọt Mô tả: Hãy viết hàm triển khai thuật tốn xếp bọt Hàm có mơ tả sau: function bubbleSort(arr, asc); Trong đó: ● arr mảng ● asc trật tự mà muốn xếp, asc có giá trị true xếp theo trật tự tăng dần, cịn asc có giá trị false xếp theo trật tự giảm dần Hướng dẫn: ● Hãy tham khảo thuật toán mã nguồn Mục – Thuật toán xếp bọt để viết hàm triển khai thuật toán xếp bọt ● Hãy thử nghiệm với mảng số nguyên theo trật tự giảm dần ● Hãy thử nghiệm với mảng chuỗi theo trật tự tăng dần Link mã nguồn tham khảo: https://github.com/codegym-vn/introduction-to-programming-withjavascript/blob/main/chapter-08/exercise-01-sap-xep-noi-bot.html /codegym.vn/ - 159 Bài 2: Triển khai thuật toán xếp chèn Mục tiêu: Luyện tập triển khai thuật toán xếp chèn Mô tả: Hãy viết hàm triển khai thuật tốn xếp chèn Hàm có mơ tả sau: function insertionSort(arr, asc); Trong đó: ● arr mảng ● asc trật tự mà muốn xếp, asc có giá trị true xếp theo trật tự tăng dần, cịn asc có giá trị false xếp theo trật tự giảm dần Hướng dẫn: ● Hãy tham khảo thuật toán mã nguồn Mục – Thuật toán xếp chèn để viết hàm triển khai thuật toán xếp chèn ● Hãy thử nghiệm với mảng số nguyên theo trật tự giảm dần ● Hãy thử nghiệm với mảng chuỗi theo trật tự tăng dần Link mã nguồn tham khảo: https://github.com/codegym-vn/introduction-to-programming-withjavascript/blob/main/chapter-08/exercise-02-sap-xep-chen.html Bài 3: Triển khai thuật toán xếp chọn Mục tiêu: Luyện tập triển khai thuật tốn xếp chọn Mơ tả: Hãy viết hàm triển khai thuật toán xếp chọn Hàm có mơ tả sau: function selectionSort(arr, asc); Trong đó: ● arr mảng ● asc trật tự mà muốn xếp, asc có giá trị true xếp theo trật tự tăng dần, cịn asc có giá trị false xếp theo trật tự giảm dần Hướng dẫn: ● Hãy tham khảo thuật toán mã nguồn Mục – Thuật toán xếp chọn để viết hàm triển khai thuật toán xếp chọn ● Hãy thử nghiệm với mảng số nguyên theo trật tự giảm dần ● Hãy thử nghiệm với mảng chuỗi theo trật tự tăng dần /codegym.vn/ - 160 Link mã nguồn tham khảo: https://github.com/codegym-vn/introduction-to-programming-withjavascript/blob/main/chapter-08/exercise-03-sap-xep-chon.html Bài tập Bài 1: Minh họa thuật toán xếp bọt Mục tiêu: Hiểu rõ chế hoạt động thuật tốn xếp bọt Mơ tả: Hãy hiển thị tất kết bước xếp để hiểu thuật toán xếp bọt Bài 2: Minh họa thuật toán xếp chèn Mục tiêu: Hiểu rõ chế hoạt động thuật tốn xếp chèn Mơ tả: Hãy hiển thị tất kết bước xếp để hiểu thuật toán xếp chèn Bài 3: Minh họa thuật toán xếp chọn Mục tiêu: Hiểu rõ chế hoạt động thuật tốn xếp chọn Mơ tả: Hãy hiển thị tất kết bước xếp để hiểu thuật toán xếp chọn Bài 4: Nối mảng xếp Mục tiêu: Luyện tập triển khai thuật tốn xếp chèn Mơ tả: Hãy viết hàm để nối hai mảng arr1 arr2 mảng arr1 xếp Kết mảng arr1 bao gồm phần tử arr2 giữ trật tự xếp Hàm có mơ tả sau: function orderedMerge(arr1, arr2); Trong đó: ● arr1 mảng xếp ● arr2 mảng Ví dụ, nối mảng [1, 3, 5, 8, 9] với mảng [2, 1, 7, 4] mảng [1, 1, 2, 3, 4, 5, 7, 8, 9] /codegym.vn/ - 161 10 Bài kiểm tra Câu 1: Độ phức tạp thuật toán xếp bọt bao nhiêu? a) O(n) b) O(log(n)) c) O(n2) d) O(1) Câu 2: Độ phức tạp thuật toán xếp chèn bao nhiêu? a) O(n) b) O(log(n)) c) O(n2) d) O(1) Câu 3: Độ phức tạp thuật toán xếp chọn bao nhiêu? a) O(n) b) O(log(n)) c) O(n2) d) O(1) Câu 4: Nếu danh sách có n phần tử xếp thuật tốn xếp bọt thực phép so sánh? a) n b) n – c) n! d) (n – 1)! Câu 5: Trong thuật toán xếp chọn, muốn xếp theo trật tự giảm dần thao tác tìm phần tử nhỏ hay lớn nhất? a) Tìm phần tử nhỏ b) Tìm phần tử lớn Câu 6: Điều sau thuật toán tìm kiếm nhị phân? a) Có thể áp dụng với liệu xếp theo trật tự tăng dần b) Có thể áp dụng với liệu xếp theo trật tự giảm dần c) Có thể áp dụng với liệu chưa xếp Đáp án: Câu : d; Câu 2: c; Câu 3: c; Câu 4: b; Câu 5: b; Câu 6: a b 11 Tổng kết ● Thuật toán xếp bọt so sánh hai phần tử liền kề hốn đổi vị trí cho cần thiết /codegym.vn/ - 162 ● Thuật toán xếp chèn duyệt qua phần tử chèn vào vị trí phù hợp danh sách ● Thuật tốn xếp chọn tìm phần tử nhỏ (hoặc lớn nhất) danh sách đưa vị trí (hoặc cuối cùng) ● Độ phức tạp trường hợp tệ thuật toán xếp chèn, xếp chọn, xếp bọt O (n2) /codegym.vn/ - 163 Tổng kết Như bạn hoàn thành sách này, hiểu khái niệm tảng lập trình, có kỹ để tạo chương trình phần mềm cách Bạn nên biết rằng, khuôn khổ sách nhập môn, tiếp cận phần dành cho người bắt đầu, để tiếp tục phát triển lực đầy đủ bạn phải tiếp tục việc học Cuốn sách hoàn thành nhiệm vụ giúp cho bạn có khởi đầu thuận lợi Các nội dung mà bạn học sách là: ● Giới thiệu tổng quan lập trình ● Biến, kiểu liệu toán tử ● Câu lệnh điều kiện ● Câu lệnh lặp ● Mảng ● Hàm ● Thuật tốn tìm kiếm ● Thuật tốn xếp Bạn đặc biệt ý đến phần Mã chương, hướng dẫn quan trọng để sau bạn hình thành kỷ luật thói quen lập trình tử tế Đội ngũ tác giả cảm ơn bạn đánh giá cao giá trị sử dụng sách trọn vẹn Trong trình biên soạn sách, hẳn có số nội dung trình bày chưa thỏa đáng, có lỗi nhỏ Đội ngũ tác giả vui lòng nhận phản hồi bạn để cải thiện cho phiên sau >>hòm thư góp ý

Ngày đăng: 01/09/2023, 17:06

Xem thêm: