Chào các bạn, hôm nay cafedev chia sẻ cho ace một danh sách các bài tập từ cơ bản tới nâng cao liên quan tới các kiến thức cơ bản trong lập trình Javascript. Cụ thể, trong bài này chúng ta sẽ làm quen với vòng lặp, switch, hàm. Từ đó giúp ace nâng cao kiến thức, kỹ năng, kinh nghiệm lập trình của mình và áp dụng nó vào thực tế.

Trước khi đi vào chi tiết bài tập, cafedev khuyến khích ace tự code bài tập của mình trước khi tham khảo bài hướng dẫn nhé.

Để chạy hoặc code các bài tập sau, ace có thể code trên trang web này như sau:

  • Chọn new
  • Chọn dự án bạn muốn code, ở đây có nhiều lựa chọn như Javascript, AngularJS, React,…. Tất nhiên mình sẽ chọn Javascript.
  • Sau đó bạn sẽ thấy nơi bạn code.
  • Sau khi code sau chọn Preview để xem kết quả.

Ngoài ra ace cũng có thể dùng các IDE đã được giới thiệu tại đây để code và chạy code đó trên máy tính của mình nhé.

Lưu ý: Mọi bài tập bên dưới cũng như các bài tập khác trong Series Javascript này được tạo ra từ các bài học và kiến thức của từng phần trong series tự học Javascript này. Nếu ace nào chưa làm được hoặc chưa hiểu kỹ về bài học thì bạn có thể tham khảo lại series tự học này nhé. Chúc các bạn thành công.

Bài 1

Giá trị cuối cùng được alert bởi code này là gì? Tại sao?

let i = 3;

while (i) {
  alert( i-- );
}

Bài 2

Đối với mỗi lần lặp lại vòng lặp, hãy ghi lại giá trị mà nó xuất ra và sau đó so sánh nó.

Cả hai vòng đều alert các giá trị giống nhau, hay không?

  1. Tiền tố dạng ++ i:
let i = 0;
while (++i < 5) alert( i );

2. Hậu tố dạng i++:

let i = 0;
while (i++ < 5) alert( i );

Hướng dẫn cách xem và tải tài liệu từ trang cafedev tại đây.


Giải bài 1,2

Bài 3

Sử dụng vòng lặp for để xuất ra các số chẵn từ 2 đến 10.

Bài 4

Viết lại code bằng cách thay đổi vòng lặp for thành while mà không làm thay đổi hành vi của nó (đầu ra phải giữ nguyên).

for (let i = 0; i < 3; i++) {
  alert( `number ${i}!` );
}

Giải bài 3,4

Bài 5

Viết một vòng lặp nhắc nhở nhập một số lớn hơn 100. Nếu khách nhập một số khác – hãy yêu cầu họ nhập lại.

Vòng lặp phải yêu cầu một số cho đến khi khách nhập một số lớn hơn 100 hoặc hủy đầu vào / nhập vào một dòng trống.

Ở đây chúng ta có thể giả định rằng khách truy cập chỉ nhập số. Không cần triển khai xử lý đặc biệt cho đầu vào không phải là số trong tác vụ này.

Bài 6

Một số nguyên lớn hơn 1 được gọi là số nguyên tố nếu nó không thể chia hết mà không có dư cho bất kỳ thứ gì ngoại trừ 1 và chính nó.

Nói cách khác, n> 1 là số nguyên tố nếu nó không thể chia đều cho bất kỳ thứ gì ngoại trừ 1 và n.

Ví dụ, 5 là một số nguyên tố, vì nó không thể bị chia mà không có phần dư cho 2, 3 và 4.

Viết Code xuất ra các số nguyên tố trong khoảng từ 2 đến n.

Với n = 10 kết quả sẽ là 2,3,5,7.


Bài giải 5,6

Bài 7

Viết code switch dưới đây thành if else nhưng kết quả không đổi:

switch (browser) {
  case 'Edge':
    alert( "You've got the Edge!" );
    break;

  case 'Chrome':
  case 'Firefox':
  case 'Safari':
  case 'Opera':
    alert( 'Okay we support these browsers too' );
    break;

  default:
    alert( 'We hope that this page looks ok!' );
}

Bài 8

Viết code if dưới đây thành switch nhưng kết quả không đổi:

let a = +prompt('a?', '');

if (a == 0) {
  alert( 0 );
}
if (a == 1) {
  alert( 1 );
}

if (a == 2 || a == 3) {
  alert( '2,3' );
}

Giải bài 7,8

Bài 9

Hàm sau đây trả về true nếu tuổi tham số lớn hơn 18.

Nếu không, nó sẽ yêu cầu xác nhận và trả về kết quả của nó.

function checkAge(age) {
  if (age > 18) {
    return true;
  } else {
    return confirm('Did parents allow you?');
  }
}

Viết lại nó, để thực hiện tương tự, nhưng không có if, trong một dòng duy nhất.

Tạo hai biến thể sau:

  • Sử dụng một toán tử dấu chấm hỏi ?
  • Sử dụng OR ||

Bài 10

Viết hàm min (a, b) trả về gía trị nhỏ nhất trong hai số a và b.

Bài 11

Viết một hàm pow (x, n) trả về x theo lũy thừa n. Hay nói cách khác, nhân x với chính nó n lần và trả về kết quả.

Bài 12

Thay thế Biểu thức hàm bằng các hàm mũi tên trong đoạn code dưới đây:

function ask(question, yes, no) {
  if (confirm(question)) yes()
  else no();
}

ask(
  "Do you agree?",
  function() { alert("You agreed."); },
  function() { alert("You canceled the execution."); }
);

Giải bài 9,10,11,12

Nguồn và Tài liệu tiếng anh tham khảo:

Tài liệu từ cafedev:

Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:

Chào thân ái và quyết thắng!

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!