Tổng quan về giáo trình

Giáo trình bài giảng "JavaScript: Éléments du langage" (Các yếu tố của ngôn ngữ JavaScript) do tác giả A. Belaïd biên soạn, được xây dựng và phát triển dựa trên nền tảng bài giảng gốc của CHENU Guy. Trong cấu trúc chương trình đào tạo bậc đại học khối ngành Khoa học Máy tính và Công nghệ Thông tin, tài liệu đóng vai trò là bài giảng chuyên đề nhập môn cho học phần Lập trình Web hoặc Phát triển Ứng dụng Client-Side. Giáo trình định vị JavaScript là ngôn ngữ kịch bản đầu tiên cho môi trường Web, bổ trợ trực tiếp cho ngôn ngữ đánh dấu siêu văn bản HTML: nếu HTML đảm nhiệm vai trò trình bày và xuất bản tài liệu tĩnh ("HTML permet d'écrire"), thì JavaScript cung cấp khả năng lập trình và xử lý, quản trị thông tin tương tác trên trình duyệt ("JavaScript permet de programmer, c'est-à-dire de gérer l'information").

Mục tiêu học tập của giáo trình tập trung trang bị cho người học:

  • Hiểu rõ cơ chế thông dịch (interpretation) của mã JavaScript trong môi trường trình duyệt web.
  • Nắm vững các cú pháp cơ bản: khai báo biến, hệ thống kiểu dữ liệu nguyên thủy và đối tượng, cấu trúc rẽ nhánh, vòng lặp và định nghĩa hàm.
  • Làm chủ các phương thức nhập/xuất dữ liệu nguyên bản thông qua hộp thoại hệ thống và tài liệu web.
  • Áp dụng kỹ thuật liên kết mã kịch bản với các phần tử biểu mẫu HTML (HTML Forms) và xử lý sự kiện tương tác người dùng.

Tài liệu được thiết kế theo phương pháp sư phạm cấu trúc từng bước (step-by-step progression), kết hợp giữa lý thuyết cú pháp cô đọng và hệ thống 49 slide bài giảng đi kèm mã nguồn mẫu hoàn chỉnh (các tệp .html). Điểm đặc thù của giáo trình là việc phân định rõ ranh giới kiến trúc giữa phần tiêu đề (<head>) và phần thân (<body>) của trang web khi tổ chức mã nguồn, đồng thời hướng dẫn chi tiết các giải pháp kỹ thuật cổ điển như ẩn mã nguồn trước các trình duyệt cũ.


Nội dung kiến thức cốt lõi

Các chương/chủ đề chính

Nội dung giáo trình được triển khai tuần tự qua các khối chủ đề lớn:

  1. Khái niệm mở đầu và môi trường thực thi (Slide 1–5):

    • Giới thiệu bản chất của JavaScript: ngôn ngữ kịch bản tích hợp trực tiếp vào HTML, thực thi thông qua trình thông dịch của trình duyệt web.
    • Cú pháp thẻ nhúng <SCRIPT language="Javascript"> và vị trí đặt mã (khởi đầu trong khối <body>, nâng cao trong khối <head>).
    • Kỹ thuật tương thích ngược: sử dụng thẻ chú thích HTML <!-- ... //--> bên trong thẻ <script> để ẩn mã kịch bản đối với các trình duyệt không hỗ trợ JavaScript.
  2. Cú pháp cơ bản và phương thức Nhập/Xuất (Slide 6–11):

    • Cú pháp chú thích mã nguồn: chú thích một dòng (//) và chú thích nhiều dòng (/* ... */).
    • Các hàm giao tiếp người dùng: prompt() mở hộp thoại nhập văn bản có nút OK/Annuler; alert() hiển thị thông báo; confirm() mở hộp thoại xác nhận trả về giá trị logic boolean (true/false).
    • Các phương thức xuất văn bản: document.write() để ghi trực tiếp chuỗi ký tự hoặc giá trị biến ra tài liệu HTML; phương thức open() kết hợp ghi nội dung lên cửa sổ trình duyệt mới (lire-ecrire-open.html).
  3. Biến, Kiểu dữ liệu và Phạm vi định danh (Slide 12–14):

    • Khai báo biến với từ khóa var: khai báo không gán giá trị (var date;), khai báo có khởi tạo (var compteur=0;), khai báo gán ngầm định (toto='coucou';) và khai báo đồng thời nhiều biến (var prem, second;).
    • Khởi tạo kiểu dữ liệu thông qua hàm dựng đối tượng: new Number(), new String(), new Boolean().
    • Phạm vi biến (Variable Scope): Phân biệt biến toàn cục và biến cục bộ trong thân hàm thông qua ví dụ variable-visibilite.html với các hàm commencer() và suivre().
  4. Cấu trúc Dữ liệu Mảng và Toán tử (Slide 15–21):

    • Khai báo mảng thông qua đối tượng new Array(), chỉ số mảng bắt đầu từ 0 đến n-1, hỗ trợ lưu trữ số, chuỗi, boolean và đa chiều (tableau.html).
    • Kỹ thuật tính toán trên mảng: duyệt mảng qua vòng lặp, sinh số ngẫu nhiên Math.random(), tính tổng và giá trị trung bình (tableau2.html).
    • Xử lý kiểu số: nhận diện giá trị phi số NaN và kỹ thuật ép kiểu bằng hàm parseInt() (affich-entier.html).
    • Bảng phân loại toán tử: toán tử số học (Arithmétiques), toán tử so sánh (Comparaison), toán tử logic (Logique) và toán tử gán (Affectation).
  5. Cấu trúc Điều khiển và Lặp (Slide 22–28):

    • Cấu trúc rẽ nhánh điều kiện: cú pháp if (condition) { ... } else { ... }, minh họa qua thuật toán giải và biện luận phương trình bậc nhất $ax = b$ (conditionnelle.html).
    • Cấu trúc lựa chọn nhiều trường hợp: switch(x) { case 1: ... break; default: ... } (choix.html).
    • Cấu trúc lặp xác định for (valeur de départ; contrôle; progression) áp dụng trong bài toán xuất bảng cửu chương (iteration.html).
    • Cấu trúc lặp có điều kiện while(condition) kiểm soát bước tăng biến đếm.
  6. Định nghĩa Hàm và Đối tượng Tích hợp sẵn (Slide 29–34):

    • Khai báo hàm function maFonction(tham_số) { return giá_trị; }.
    • Ví dụ tính thể tích hình trụ VolCylindre(r, h) trả về $V = \pi \cdot r^2 \cdot h$ hoặc lưu vào biến toàn cục volume.
    • Các đối tượng nội tại: đối tượng Date xử lý thời gian hệ thống và phương thức getFullYear() (date.html); đối tượng Math hỗ trợ các phép tính học thuật.
  7. Tương tác Biểu mẫu HTML và Xử lý Sự kiện (Slide 35–49):

    • Kiến trúc phân lớp: đặt hàm xử lý logic tại <head>, đặt phần tử giao diện <form> tại <body>.
    • Các sự kiện và phần tử biểu mẫu:
      • Nút bấm (<input type="button">) kết hợp sự kiện onClick gọi hàm đọc dữ liệu (lire-ecrire-form0.html).
      • Ô nhập dữ liệu (<input type="text">) và xử lý ép kiểu Number(document.value) để tính gấp đôi giá trị nhập (lire-ecrire-form.html).
      • Nút chọn một (<input type="radio">) phục vụ biểu mẫu bình chọn trắc nghiệm với các hàm enregistrer() và depouiller() (lire-ecrire-form2.html).
      • Xác thực biểu mẫu (Form Validation): kiểm tra chuỗi rỗng document.value == "" trên các trường Nom, Prénom, Age (conditionnelle-form.html).
      • Danh sách chọn (<select>) kết hợp sự kiện onChange và thuộc tính selectedIndex để xử lý phân nhánh âm nhạc (choix-form.html) hoặc điều hướng trang web (choix-form2.html).

Kiến thức nền tảng được xây dựng

Giáo trình hình thành nền tảng lập trình web dựa trên ba nguyên lý:

  • Mô hình thực thi kịch bản phía Client (Client-Side Execution): Khẳng định cơ chế thông dịch trực tiếp của trình duyệt ngay khi bắt gặp thẻ kịch bản mà không cần qua trình biên dịch độc lập, nêu rõ ưu điểm (miễn phí, tích hợp sẵn) và hạn chế tại thời điểm phát triển (tốc độ chậm, thiếu công cụ gỡ lỗi chuyên biệt).
  • Nguyên lý kiểu dữ liệu và chuyển đổi dữ liệu: Phân định rõ dữ liệu chuỗi thu được từ giao diện người dùng (thông qua prompt() hoặc input.value) và thao tác chuyển đổi sang định dạng số học bằng Number() hoặc parseInt() để tránh lỗi giá trị NaN.
  • Nguyên lý phân tách Cấu trúc - Hành vi trong tài liệu Web: Hướng dẫn sinh viên đặt toàn bộ định nghĩa biến toàn cục và hàm xử lý thuật toán trong vùng <head>, trong khi phần thân <body> chỉ đóng vai trò hiển thị giao diện và kích hoạt sự kiện.

Kỹ năng phát triển

Người học hoàn thành tài liệu sẽ phát triển các nhóm kỹ năng:

  • Kỹ năng lập trình thuật toán: Xây dựng các khối lệnh điều kiện lồng nhau, vòng lặp xử lý dữ liệu số và mảng một chiều.
  • Kỹ năng thao tác DOM cơ bản: Truy xuất và thay đổi thuộc tính giá trị của các phần tử giao diện web thông qua cú pháp phân cấp đối tượng document.formName.fieldName.value.
  • Kỹ năng kiểm tra và xử lý dữ liệu nhập (Data Validation): Lập trình các kịch bản phát hiện trường dữ liệu rỗng, kiểm soát tính hợp lệ của thông tin cá nhân và định hướng xử lý luồng thao tác người dùng.

Phương pháp giảng dạy và học tập

Giáo trình áp dụng triệt để phương pháp giảng dạy hướng ví dụ (Example-Driven / Code-Along Approach). Mỗi khái niệm lý thuyết được trình bày cô đọng trong 1 slide, theo sau trực tiếp bằng một hoặc nhiều tệp mã nguồn HTML hoàn chỉnh có thể chạy độc lập trên trình duyệt:

Tên tệp mã nguồn mẫu Khái niệm / Cú pháp minh họa Tác vụ xử lý cụ thể
lire-ecrire.html prompt(), alert() Nhập năm hiện tại và hiển thị thông báo phản hồi
lire-ecrire2.html, lire-ecrire-var.html document.write() Xuất chuỗi tĩnh và xuất chuỗi kết hợp biến ngày tháng
lire-ecrire-confirm.html confirm(), if...else Đọc kết quả chọn OK / Annuler dưới dạng boolean
lire-ecrire-open.html open(), document.write() Mở cửa sổ mới với kích thước xác định và ghi dữ liệu
variable-visibilite.html Phạm vi biến (Scope) Kiểm tra tính độc lập của biến x trong các hàm khác nhau
tableau.html, tableau2.html new Array(), Math.random() Khởi tạo mảng các thứ trong tuần; tính nhiệt độ trung bình
affich-entier.html parseInt(), NaN Ép kiểu dữ liệu nguyên cho kết quả tính toán
conditionnelle.html if...else lồng nhau Giải và biện luận phương trình bậc nhất $ax = b$
choix.html switch...case Xử lý đa lựa chọn thông qua hàm preferer(k)
iteration.html Vòng lặp for Nhập hệ số $n$ và xuất bảng cửu chương ra tài liệu
date.html Đối tượng new Date() Đọc và xuất năm hệ thống bằng getFullYear()
lire-ecrire-form0.html Form <input type="button"> Gọi hàm nhập dữ liệu qua sự kiện onClick
lire-ecrire-form.html Form <input type="text"> Nhập số vào ô text và xuất số gấp đôi vào ô kết quả
lire-ecrire-form2.html Form <input type="radio"> Ghi nhận phiếu bình chọn và hiển thị kết quả
conditionnelle-form.html Xác thực Form (Validation) Kiểm tra trường rỗng cho Nom, Prénom, Age
choix-form.html, choix-form2.html Form <select>, selectedIndex Xử lý menu lựa chọn thể loại nhạc và chuyển trang

Phương pháp học tập và đánh giá khuyến nghị:

  • Thực hành phòng Lab: Người học gõ trực tiếp các đoạn mã mẫu vào trình soạn thảo văn bản, lưu tệp định dạng .html và mở trên trình duyệt web để quan sát kết quả.
  • Bài tập biến đổi và tái cấu trúc (Refactoring exercises): Tài liệu đưa ra các bài tập yêu cầu chuyển đổi mã trực tiếp trong thuộc tính sự kiện sang định nghĩa hàm trong <head> (Slide 41) hoặc viết thuật toán kiểm tra tên người dùng nhập vào so với danh sách có sẵn trong mảng (Slide 46).

Điểm nổi bật và bối cảnh kỹ thuật

Tài liệu phản ánh trung thực giai đoạn phát triển ban đầu của công nghệ kịch bản web:

  • Bối cảnh lịch sử xác định: Giáo trình ghi nhận mốc thời gian thực tế trong ví dụ slide 32 (mardi 16 août 2005). Đây là giai đoạn các tiêu chuẩn web đang trong quá trình chuyển giao, trình duyệt web xử lý JavaScript nguyên bản thông qua bộ thông dịch tích hợp chưa có các công cụ gỡ lỗi (debugger) chuyên sâu.
  • Kỹ thuật bao bọc mã tương thích (Script Hiding Technique): Hướng dẫn việc sử dụng khối lệnh:
    <SCRIPT language="Javascript">
    <!--
    // Nội dung mã kịch bản
    //-->
    </SCRIPT>
    
    Nhằm đảm bảo các trình duyệt cũ không hiểu thẻ <script> sẽ bỏ qua phần mã bên trong dưới dạng chú thích HTML thay vì in toàn bộ mã nguồn ra màn hình.
  • Mô hình Hướng đối tượng dạng nguyên mẫu sơ khởi: Sử dụng tường minh các hàm khởi tạo đối tượng bao gói cơ bản (new Number(), new String(), new Boolean(), new Array(), new Date()) để minh họa khái niệm kiểu dữ liệu và cấp phát đối tượng trong JavaScript.
  • Thao tác DOM trực tiếp qua Form Hierarchy: Tài liệu minh họa phương thức truy xuất phần tử DOM truyền thống thông qua tên định danh của form và input (document.formName.inputName.value), là nền tảng trực tiếp trước khi các phương thức truy xuất hiện đại như getElementById hoặc querySelector trở nên phổ biến.

Đối tượng sử dụng giáo trình

Giáo trình được biên soạn phục vụ các nhóm đối tượng:

  • Sinh viên đại học: Sinh viên năm thứ nhất hoặc năm thứ hai chuyên ngành Khoa học Máy tính, Công nghệ Thông tin, Kỹ thuật Phần mềm và Mạng máy tính bắt đầu học lập trình web.
  • Điều kiện tiên quyết (Prerequisites):
    • Người học cần nắm vững kiến thức cơ bản về ngôn ngữ đánh dấu HTML (hiểu cấu trúc thẻ <html>, <head>, <body>, cấu trúc bảng, danh sách và đặc biệt là thẻ <form>, <input>, <select>).
    • Nắm vững tư duy logic lập trình cơ bản (khái niệm biến, phép toán, rẽ nhánh, vòng lặp).
  • Giảng viên đại học và cao đẳng: Sử dụng làm đề cương bài giảng slide, khung nội dung thực hành phòng máy và tài liệu phát tay cho sinh viên trong các tiết học lập trình client-side cơ bản.
  • Người tự học lập trình web: Dùng làm tài liệu tham khảo để nắm bắt cú pháp cốt lõi và cơ chế vận hành của JavaScript nguyên bản mà không bị phụ thuộc vào các thư viện hay framework trung gian.

Câu hỏi thường gặp

1. Giáo trình này phù hợp với ai?

Tài liệu phù hợp với sinh viên ngành Công nghệ Thông tin, giảng viên giảng dạy học phần phát triển web cơ bản và người học muốn tìm hiểu nền tảng cú pháp JavaScript nguyên bản từ các khái niệm sơ khởi.

2. Cần kiến thức nền nào để học giáo trình này?

Người học cần có kiến thức nền tảng về cấu trúc tài liệu HTML (các thẻ văn bản, thẻ cấu trúc và các phần tử trong biểu mẫu <form>), cùng tư duy logic lập trình căn bản (biến, điều kiện, vòng lặp).

3. Điểm khác biệt của giáo trình so với các tài liệu khác là gì?

Giáo trình tập trung trực diện vào cấu trúc mã nguồn thông qua 49 slide bài giảng chứa các ví dụ thực hành cụ thể (tệp .html), phân tách rõ ràng việc tổ chức mã kịch bản giữa <head> và <body>, và hướng dẫn chi tiết các kỹ thuật tương thích trình duyệt cổ điển.

4. Làm sao để tự học hiệu quả theo giáo trình?

Người học cần thực hành tuần tự theo từng tệp mã nguồn mẫu từ lire-ecrire.html đến choix-form3.html, trực tiếp nhập mã vào trình soạn thảo, mở tệp trên trình duyệt để kiểm tra kết quả và thực hiện các bài tập tự giải về hàm và mảng được nêu ở Slide 41 và 46.

5. Có tài liệu bổ trợ hoặc nguồn gốc tham khảo nào được nêu trong giáo trình?

Giáo trình ghi rõ nguồn gốc biên soạn được truyền cảm hứng tự do từ bài giảng của tác giả CHENU Guy, do tác giả A. Belaïd hoàn thiện và giữ bản quyền nội dung.


Kết luận

Giáo trình "JavaScript: Éléments du langage" của A. Belaïd cung cấp hệ thống tri thức chuẩn mực về các thành phần cốt lõi của ngôn ngữ kịch bản JavaScript. Thông qua việc phân tích cú pháp, kiểu dữ liệu, cấu trúc điều khiển và cơ chế liên kết với biểu mẫu HTML, tài liệu thiết lập nền tảng kỹ thuật vững chắc cho việc lập trình phía máy khách.

Lộ trình học tập đề xuất bao gồm ba giai đoạn: làm chủ cú pháp nhập xuất cơ bản, rèn luyện thuật toán với cấu trúc điều khiển và mảng, sau đó hoàn thiện kỹ năng kiểm tra và xử lý biểu mẫu tương tác trên giao diện web. Toàn bộ nội dung gắn liền với hệ thống ví dụ thực chứng kế thừa từ bài giảng của tác giả CHENU Guy.