STDIO
Tìm kiếm gần đây
    • Nội dung
    • QR Code
    • 0
    • 0
    • Sao chép

    Các Kỹ Thuật Lập Trình Căn Bản

    Khi mới bắt đầu học lập trình, thường thì các bạn sẽ giải các bài tập giúp nâng cao khả năng tư duy lập trình. Trong đó, có một số bài tập khá khó mà các bạn nghĩ hoài không ra. Với cách lập trình gán, so sánh thuần túy không giúp để giải quyết các bài toán lớn hơn. Ở đây tôi xin cung cấp cho các bạn một số kỹ năng lập trình cơ bản

    Nguyên Phan

    15/09/2015
    19/09/2020
    6 phút đọc
    Các Kỹ Thuật Lập Trình Căn Bản

    Đối với lập trình cơ bản

    Cắm cờ (flag)

    Kỹ thuật cắm cờ là kỹ thuật đơn giản nhất, nó giúp bạn kiểm soát các trường hợp quan trọng.

    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");
    }

    Biến đếm

    Biến đếm là một trong các kỹ thuật căn bản, giúp ta kiểm soát số lượng các trường hợp quan trọng.

    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;
    }

    Tính chuỗi, dãy số liên tục

    Cách tính này đượ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;
    }

    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;

    Đối với xử lý mảng

    Lưu giữ 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 A và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;
    }

    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;
    }

    Phụ lục

    Các bạn có thể tham khảo các bài tập lập trình cơ bản ở dưới đây.

    Bài tập lập trình căn bản: https://www.bugs.vn/io/c1Tx5g1

    Bài tập lập trình mảng: https://www.bugs.vn/io/c1Tx5g1

    0 Bình luận
    Modern C++

    Modern C++

    STDIO Training - Đào Tạo Lập Trình C++.

    Đề xuất

    5 Lý Do Kiến Trúc Sư Nên Học Lập Trình
    Trong AutoCAD có hỗ trợ lập trình với Python, Revit có thể viết tự động ...
    STDIO Starter Kit - Các Thành Phần Cần Thiết Để Học Điện Tử Cơ Bản
    Bộ STDIO Starter Kit là bộ kit điện tử thống kê các thành phần cần thiết ...

    Khám phá

    Giới Thiệu về Kỹ Thuật Phần Mềm – Software Engineering
    Software Engineering là một phần của System Engineering - liên quan đến ...
    22/09/2014
    Sơ Lược về Phong Cách Lập Trình
    Bài viết là một vài chia sẻ về cách hình thành phong cách lập trình để ...
    5 Lý Do Học Sinh Nên Học Lập Trình Từ Sớm
    Học sinh cần học lập trình từ sớm giúp tăng khả năng logic và bắt kịp xu ...
    Tổng Quan về Ngôn Ngữ Lập Trình Java
    Java là 1 trong những ngôn ngữ lập trình mạnh mẽ, được sử dụng rộng rãi ...
    Các Kiến Thức Cần Chuẩn Bị Cho Buổi Phỏng Vấn C++
    Các kiến thức cần chuẩn bị cho buổi phỏng vấn C++ và cho công việc C++.
    Học Lập Trình Nên Bắt Đầu Từ Đâu?
    Học lập trình nên bắt đầu từ đâu? Lựa chọn học từ nền tảng có phải luôn ...
    Định Dạng Ảnh Bitmap - Giới Thiệu và Các Thao Tác Cơ Bản
    Trong đời thường, bạn sẽ gặp các file ảnh có định dạng .PNG, .JPG, .TGA, ...
    CBP-0: Giới Thiệu về Component Base Development
    Phương pháp lập trình Hướng thành phần (Component-base Development - ...
    Khi bạn nhấn vào liên kết sản phẩm do STDIO đề xuất và mua hàng, STDIO có thể nhận được hoa hồng. Điều này hỗ trợ STDIO tạo thêm nhiều nội dung hữu ích. Tìm hiểu thêm.
    STDIO
    Trang chính
    Công ty TNHH STDIO

    30, Trịnh Đình Thảo, Hòa Thạnh, Tân Phú, Hồ Chí Minh
    +84 28.36205514 - +84 942.111912
    developer@stdio.vn

    383/1 Quang Trung, Phường 10, Quận Gò Vấp, Hồ Chí Minh
    Số giấy phép ĐKKD: 0311563559 do sở Kế hoạch và Đầu Tư TPHCM cấp ngày 23/02/2012

    ©STDIO, 2013 - 2020