Tính giai thừa của một số nguyên dương cho trước

1, Giai thừa là gì?

Trong toán học, giai thừa là một toán tử một ngôi trên tập hợp các số tự nhiên. Cho n là một số tự nhiên dương, “n giai thừa”, ký hiệu n! là tích của n số tự nhiên dương đầu tiên:

n! = 1x2x3x…x n
VD: 4! = 1.2.3.4 = 24
8! = 1.2.3…..7.8 = 40 320

2. Bài toán

Cho một số nguyên dương bất kỳ từ 1 đến 20. Viết một hàm để tính ra giai thừa của số vừa cho

Input:4
Output:24

Input:8
Output:40320

<?php 

function FirstFactorial($num) {  
     // code here
}

3. Mục đích của bài toán

Bài toán khá quen thuộc với dân lập trình, mục đích của bài toán là giúp chúng ta có thể ôn lại kiến thức về đệ quy. Có thể trong các bài toán thông thường (khi làm dự án) thì chúng ta ít gặp, nhưng theo mình đệ quy khá hay và cũng cần thiết. 

Posted in Học Lập Trình, Đố vui cùng lập trình | Leave a comment

Kiểm thử phần mềm là gì? Software testing là gì? có bao nhiêu kiểu testing?

1. Software testing?

Software testing hay còn gọi là kiểm thử phầm mềm, nó là một trong những quy trình để phát triển phần mềm. Nhiện vụ của testing là để giúp đảm bảo phần mềm đang chạy đúng với mong muốn.
Testing là một thứ không thể thiếu không chỉ với những Tester mà thực sự cần cho Developer. 

2. Sự cần thiết của Testing đối với Developer

Nếu bạn muốn trở thành một Senior Developer thì việc tìm hiểu và biết về testing là không thể thiếu.
Có thể nhiều bạn Junior vẫn coi thường và cho rằng việc viết Test script là không cần thiết, mất thời gian. Mất thời gian thì đúng, vì đôi khi viết Test script còn mất thời gian hơn cả Coding NHƯNG hoàn toàn là cần thiết cho một dự án, đặc biệt là những dự án lớn.
Có rất nhiều loại, nhiều cấp độ Test script khác nhau, mỗi loại mang một ý nghĩa và giá trị, hãy cùng hanhtrinhtuoitre.com tìm hiểu tiếp nào  :35: 

3. Các loại Testing

Manual: Là loại testing thủ công, không dùng tool, công cụ hay bất cứ một code script nào để test
Automatic: Là một mã code, một công cụ hữu hiệu để có thể re-run, chạy đi chạy lại nhiều lần.

4. Các phương thức testing

Có 2 phương thức cơ bản về Testing: Blackbox testing và Whitebox testing.
– Blackbox testing – Kiểm thử hộp đen: Hiểu đơn giản nó là một cái hộp đen, mình chẳng nhìn được hay biết gì trong đó, chỉ tống một cho nó một đầu vào và đưa ra cho một kết quả đúng là okay.
– Whitebox testing: Việc kiểm thử này được thực hiện với mong muốn biết được dòng code bên trong đang làm gì, đúng không, thừa thiếu hoặc sai chỗ nào.
Có một vài loại test cơ bản hay gặp.

5. Các cấp độ testing

Unit Testing
Integration Testing
Functional Testing
System Testing
Stress Testing
Performance Testing
Usability Testing
Acceptance Testing
Regression Testing
Beta Testing

6. Code coverage

Code coverage là một cách thức để người ta đo lường xem có bao nhiều method, bao nhiêu nhánh, bao nhiêu dòng code…. đã được chạy qua khi run script code testing. Thường thì developer sẽ có các công cụ hỗ trợ làm việc này, nó cũng là một cách thức để khách hàng, người quản lý có thể nhìn tổng quan về mức độ automation testing

7. Tổng kết

Ở đây và cũng như những bài sau hanhtrinhtuoitre sẽ hướng tới nội dung chủ yếu cho Developer. Sẽ đi chi tiết các loại testing thông dụng, áp dụng nó như nào, có các công cụ gì phổ biến, cấu hình và chạy nó làm sao…. Dự kiến sẽ tạo một project bằng Laravel làm demo, cùng chờ đón nhé

Posted in Học Lập Trình, Testing | Leave a comment

Talk show: Chia sẻ kinh nghiệm khởi nghiệp và kinh doanh – Hồ Hoàng Hải

Posted in Cuộc Sống, Kỹ năng mềm | Leave a comment

Tìm phần tử trùng lặp đầu tiên trong mảng

 Mô tả bài toán

Cho một mảng số nguyên, tìm phần tử đầu tiên bị trùng lặp (duplicate). Nếu không tìm thấy phần tử nào bị trùng lặp thì trả về -1.
Ví dụ: 
[2, 1, 3, 5, 3, 2]
firstDuplicate(a) = 3.
———
[2, 4, 3, 5, 1]
firstDuplicate(a) = -1.

Bài toán này có nhiều điểm tương đồng với một bài mà Hanhtrinhtuoitre đã từng đăng trước: http://hanhtrinhtuoitre.com/lap-trinh-kiem-tra-trong-day-so-ma-co-tong-2-so-bang-mot-so-cho-truoc/

Posted in Đố vui cùng lập trình | Leave a comment

[Vietsub] 73 Questions With Taylor Swift

Học tiếng Anh cùng người nổi tiếng Taylor Swift

Posted in Tài liệu tiếng Anh | Leave a comment

[OOP] Tính đóng gói trong OOP – Encapsulation

1. Đóng gói trong lập trình hướng đối tượng là gì?

Đóng gói tức là cách thức mà Class che giấu thông tin, hạn chế quyền try cập từ bên ngoài vào.
Chắc hẳn anh em đều biết đến 3 loại Access modifiers: Public – Protected – Private. Chúng giúp ta thể hiện tính chất đóng gói của OOP bằng cách nói cho Complier biết nên, có quyền try cập vào thuộc tính, phương thức nào.

2. Phân biệt Public – Protected – Private

Phân biệt giữa các Access modifiers là một trong những câu hỏi huyền thoại khi phỏng vấn  :10: 

private – Chỉ có Class hiện tại (không phải Class kế thừa, không phải Object) mới có thể truy cập được vào thuộc tính và phương thức có kiểu là private.

protected – Chỉ có Class hiện tại và Class kế thừa nó (subclasses) mới có quyền truy cập vào thuộc tính và phương thức có kiểu là protected.

public – Class hiện tại, Class kế thừa, Object khởi tạo từ Class đều có thể truy cập đến thuộc tính và phương thức với kiểu là public.

3. Ví dụ + tại sao lại có tính chất này?

// Vi du chi mang tinh vi du :D, hee

class Hanhtrinhtuoitre
{
    public $name;

    protected $urlAdminPage;

    private $passwordAdmin;
    
    public function register($id, $classId)
    {
        // dang ky tai khoan
    }

    protected function deletePost($id, $classId)
    {
        // xoa mot bai viet
    }

    private function deleteAccount($id, $classId)
    {
        // xoa mot tai khoan
    }
}

Có anh em từng nói với mình: gớm ông chỉ lắm trò, để hết là public cho nó dễ làm việc, có cái gì đâu mà phải đắn đo, suy nghĩ xem là private hay protected hay public.  :38: 

Nghe có vẻ không ổn, tưởng tượng mình xây một cái nhà, xây xong lại cứ để thằng nào thích vào thì vào, thích lấy gì thì lấy, thích thay đổi gì thì thay đổi, thế thì loạn.

Có một Class Nhà.
– Class Nhà có thuộc tính Public $name: giả định nhà mình có tên là hanhtrinhtuoitre, nhưng ông nào thích gọi thế thì gọi, không thì ông ấy có thể tự bịa cho Class Nhà này một cái tên mới ví như: DCM chẳng hạn  :29: 
– Class Nhà có một phương thức là Protected VaoThamNha(): tức là chỉ có hàng xóm, người thân thì vào được. Một thanh niên giời ơi đất hỡi đòi vào nhà là lỗi ngay.
– Class Nhà có một phương thức là Private MoKetSatLayTienChoiGai(): thôi xong, method này thì chỉ mỗi ông chủ nhà mở được thôi, chứ ai mà mém động vào thì chặt cụt tay.

Tạm thời anh em ta thống nhất hiểu chung chung, cơ bản là vậy.

Chắc chắn sau này khi số năm kinh nghiệm tăng lên thì chúng ta sẽ nghiệm và nhìn thấy nó rõ hơn trong từng dòng code.

:39:

Posted in 4 đặc tính của OOP (Object-oriented programming) | Leave a comment