Một Số Kỹ Thuật Lập Trình Căn Bản Cần Nắm Cho Sinh Viên Năm nhất

1. Kỹ thuật cắm cờ (Falg)

Bạn sẽ lưu giá trị flag luôn luôn là một con số mặc định nào đó, thường là 0. Với các trường hợp đặc biệt khác, ta lưu giá trị nó làm các con số khác nhau để tiện cho việc xử lý.

Ví dụ như ở đây, tôi muốn kiểm tra đây có phải là số nguyên tố hay không. Tôi cài đặt 1 biến flag = 0, số đang kiểm tra là số x, khi x không phải là số nguyên  tố thì flag = 1. Sau đó dựa vào biến flag mà tôi quyết định có in ra màn hình

//cài đặt biến x lưu giá trị của một con số nào đó, ví dụ như ở đây, tôi lấy x = 13;

int x = 13;

//cài đặt biến flag với giá trị là 0

int flag = 0;

//vòng lặp này để kiểm tra x có phải là số nguyên tố không

int i = 2;

while ( i < x )

{

if ((x % i) == 0)

{

//khi x chia hết cho một số bất kỳ thì x không phải là số nguyên tố

flag = 1;

}

i = i + 1;

}

//dựa trên giá trị của biến flag mà ta quyết định x là số nguyên tố hay không

if (flag == 0)

{

printf("x la so nguyen to");

}

else

{

printf("x khong phai so nguyen to");

}

 2. Kỹ thuật tạo biến đếm

Ta sẽ tạo một biến đếm với giá trị ban đầu là 0. Với mỗi lần trường hợp quan trọng xuất hiện, ta sẽ tăng biến đếm lên 1. Ví dụ như ở đây, tôi muốn xét dãy số từ 0 đến 20 có bao nhiêu số nguyên tố.

//cài đặt biến counter với giá trị là 0

int counter = 0;

int flag = 0;

//vòng lặp này để duyệt chuỗi số i từ 0 -> 20

int i = 0;

int j = 0;

while ( i <= 20 )

{

    //vòng lặp này để xét xem số i có phải là số nguyên tố hay không

    j = 2;

  //trả flag về giá trị 0 trước khi thực hiện vòng lặp

    flag = 0;

    while ( j < i )

    {

        if ((i % j) == 0)

        {

            flag = 1;

        }

        j = j + 1;

    }

    if (flag == 0)

    {

        //trong trường hợp đó là một số nguyên tố thì ta tăng biến đếm lên

        counter = counter + 1;

    }

    i = i + 1;

}

 3. Kỹ thuật tính chuổi dãy số liên tục

được sử dụng để xử lý các trường hợp cần tính lại giá trị của chính biến đó với giá trị cũ của nó. Ví dụ với chuỗi số S = 1 + 2 + 3 + .. + n

//tạo một biến để lưu giá trị

int s = 0;

while (i <= n)

{

s = s + i;

  i = i + 1;

}

 4. Kỹ thuật lưu biến tạm

Biến tạm là một kỹ thuật đơn giản dùng để lưu một giá trị của một biến khác trước khi nó bị thay đổi hoặc dùng để tính giá trị tạm thời cần được sử dụng ngay.

Ví dụ ta có biến a = 5 và biến b = 6. Ta cần hoán đổi sao cho a = 6 và b = 5. Nhưng khi a = b thì lúc đó cả a và b đều có giá trị là 6. Ta đã mất đi số 5 nên ta cần một biến tạm để lưu giá trị của a.

int a = 5;

int b = 6;

int temp = 0;

temp = a;

a = b;

b = temp;

 5. Kỹ thuật lưu trữ vị trí quan trọng

Phương thức này các bạn hay nhầm lẫn với việc lưu giữ giá trị quan trọng. Ví dụ trong một mảng có 10 phần tử:

 { 5, 1, 7, 9, 31, 12, 0, 8, 4, 11 }

Giá trị lớn nhất trong mảng là 31 nhưng vị trí của giá trị lớn nhất là 4.

//Giá trị n là số lượng phần tử của mảng, ví dụ như ở mảng phía trên, n có giá trị là 10

int n = 10;

 

int max = 0;

int i = 1;

while (i < n)

{

if (A[max] < A[i])

{

max = i;

}

  i = i + 1;

}

 Ngoài ra, nếu có nhiều vị trí quan trọng cần lưu giữ thì bạn có thể tạo thêm một mảng nữa và lưu vị trí các giá trị đó vào mảng đó. Ví dụ như ở đây, tôi có mảng A, tôi muốn lưu vị trí các phần tử là phần tử chẵn trong mảng Avào mảng B.

int A[10];

int B[10];

int counter = 0;

int i = 0;

while (i < 10)

{

if (A[i] % 2 == 0)

{

B[counter] = i;

counter = counter + 1;

}

i = i + 1;

}

 6. Kỹ thuật sắp xếp

Phương thức sắp xếp mảng đơn giản nhất đó là sử dụng giải thuật Interchange Sort. Giải thuật sử dụng 2 vòng lặp, với mỗi vòng lặp, lấy giá trị này xét với các giá trị khác trong mảng, nếu giá trị nào nhỏ hơn thì hoán đổi giá trị đó và giá trị đang xét. Ví dụ

int A[10];

int n = 10; //số lượng phần tử của mảng A

int i = 0;

int j = 0;

int temp = 0;

while (i < n)

{

j = i + 1;

while (j < n)

{

//nếu tìm được phần tử có giá trị nhở hơn giá trị

        //đang xét thì hoàn đổi nó với giá trị đang xét

if (A[j] < A[i])

{

//thực hiện thao tác hoán đổi

temp = A[i];

A[i] = A[j];

A[j] = temp;

}

j = j + 1;

}

  i = i + 1;

}

 (TRÊN ĐÂY LÀ NHỮNG KỸ THUẬT ĐƯỢC TÔI SỬ DỤNG ĐỂ GIẢI QUYẾT MỘT SỐ VẪN ĐỀ TRONG HỌC TẬP VÀ LÀM VIỆC RẤT HIỆU QUẢ)