Hiển thị các bài đăng có nhãn Lập trình căn bản. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn Lập trình căn bản. Hiển thị tất cả bài đăng

Code C++: Đệ quy phi tuyến

Người đăng: chisenhungsuutam on Thứ Hai, 12 tháng 5, 2014

Đệ quy phi tuyến: Thân hàm đệ quy lặp gọi 1 số lần chính nó.

long U (int n){ 
    if (n<6) return n;
    long S= 0;
    for (int i = 5; i>0; i--) 
          S+= U(n-i);
    return S;
}

Bài toán 1: Tính tổng n phần tử trong danh sách

Viết chương trình tính tổng n phần tử a0,...,an-1 được định nghĩa đệ quy như sau:



Mã nguồn:
#include<conio.h>
#include<iostream>
using namespace std;
long int S(int a[], int n) {
if(n==1)
return a[0];
else
return a[n-1]+S(a,n-1);
}

int main(){
int *a,n;
cout<<"n = ";
cin>>n;
a = new int[n];
cout<<"Nhap vao "<<n<<" phan tu\n";
for(int i=0; i<n ; i++){
cout<<"a["<<i<<"] = ";
cin>>a[i];
}
cout<<"Tong "<<n<<" phan tu trong mang A la "<<S(a,n);
getch();
return 0;
}

Bài toán 2: Tính tích n phần tử trong danh sách
Viết chương trình tính tổng n phần tử a0,...,an-1 được định nghĩa đệ quy như sau:

Mã nguồn:
#include<conio.h>
#include<iostream>
using namespace std;
long int S(int a[], int n) {
if(n==1)
return a[0];
else
return a[n-1]*S(a,n-1);
}

int main(){
int *a,n;
cout<<"n = ";
cin>>n;
a = new int[n];
cout<<"Nhap vao "<<n<<" phan tu\n";
for(int i=0; i<n ; i++){
cout<<"a["<<i<<"] = ";
cin>>a[i];
}
cout<<"Tich "<<n<<" phan tu trong mang A la "<<S(a,n);
getch();
return 0;
}

Bài toán 3: Đếm số lần xuất hiện của phần tử x trong danh sách
Viết  chương  trình  đếm  số  lần  xuất  hiện  của  số  nguyên  x  trong  danh  sách A={a0,...,an-1} với n phần tử. Thuật toán đệ quy được thể hiện như sau:

Mã nguồn:
#include<conio.h>
#include<iostream>
using namespace std;
/*Ham tra ve so lan xuat hien cua x trong danh sachA*/
int Find(int a[], int n, int x) {
if(n==0)
return 0;
else if(a[n-1]==x)
return 1+Find(a,n-1,x);
else
return Find(a,n-1,x);
}

int main(){
int *a,n,x;
cout<<"n = ";
cin>>n;
a = new int[n];
cout<<"Nhap vao danh sach "<<n<<" phan tu\n";
for(int i=0; i<n ; i++){
cout<<"a["<<i<<"] = ";
cin>>a[i];
}
cout<<"x = ";
cin>>x;
cout<<"So lan xuat hien cua "<<x<<" trong danh sach la "<<Find(a,n,x);
getch();
return 0;
}
Tag: C, C++, Đệ quy tuyến tính, Đệ quy, Khử đệ quy, recursive, đệ quy nhị phân, đệ quy hỗ tương, Đệ quy phi tuyến
More about

Code C++: Hàm tính tổng các phần tử trên cùng 1 dòng, 1 cột của Ma trận

Người đăng: chisenhungsuutam on Thứ Hai, 5 tháng 5, 2014

1. Hàm tính tổng các phần tử trên cùng một dòng của ma trận.
void tongdong(int a[][100],int n,int m){
          for(int i=0;i<n;++i){
                   int S=0;
                   for(int j=0;j<m;++j)
                             S+=a[i][j];
                   cout<<"dong "<<i<<" la: "<<S<<endl;
          }
}

2. Hàm tính tổng các phần tử trên cùng một cột của ma trận
void tongcot(int a[][100],int n,int m){
  for(int i=0;i<m;i++){
                    int s=0;
                   for(int j=0;j<n;j++)
                              s=s+a[j][i];
                   cout<<"cot "<<i<<" la: "<<s<<endl;
           }

}
Tag: C, C++, ma trận, mảng 2 chiều, mảng hai chiều, tổng ma trận
More about

Code C++: Các câu lệnh duyệt mảng 2 chiều thường gặp

Người đăng: chisenhungsuutam on Thứ Năm, 1 tháng 5, 2014


Các câu lệnh duyệt mảng 2 chiều thường gặp:
*Ghi chú: n là số dòng, m là số cột
-Nhập mảng
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
{
                   cout<<"nhap vao phan tu thu "<<i<<j<<": ";
cin>>a[i][j];
                   }
-Xuất mảng
for(int i=0;i<n;i++)
{       
for(intj=0;j<m;j++)
cout<<a[i][j]<<" ";
                   cout<<endl;
          }
*Một số câu lệnh chỉ có trong ma trận vuông: (số dòng bằng số cột n=m):
-Xuất các phần tử nằm trên đường chéo chính
          for(int i=0;i<n;i++)
cout<<a[i][i];

-Xuất các phần tử nằm phía trên đường chéo chính(còn gọi là tam giác trên)
for(inti=0;i<n;i++)                                    for(inti=0;i<n;i++)
     for(int j=0;j<i;j++)            OR                       for(intj=i+1;j<n;j++)
cout<<a[j][i]<<" ";                                    cout<<a[i][j]<<" ";                         
  
-Xuất các phần tử nằm phía dưới đường chéo chính (còn gọi là tam giác dưới)
for(inti=0;i<n;i++)
      for(int j=0;j<i;j++)
          cout<<a[i][j]<<" ";

-Xuất các phần tử nằm trên đường chéo phụ
for(int i=0;i<n;i++)
cout<<a[i][n-1-i)<<” “;

-Xuất các phần tử nằm phía trên đường chéo phụ
for(int i=0;i<n;i++)                                    for(inti=0;i<n;i++)
    for(intj=0;j<n-1-i;j++)                OR          for(intj=n-i;j<n;j++)       
        cout<<a[i][j]<<" ";                                         cout<<a[n-1-j][n-1-i]<<" ";      
                                     
-Xuất các phần tử nằm phía dưới đường chéo phụ
for(inti=0;i<n;i++)
              for(intj=n-i;j<n;j++)
                    cout<<a[i][j]<<" ";

Tag: Mảng 2 chiều, mảng hai chiều, mã nguồn, C, C++

More about

Code C++: Thêm x phần tử ở vị trí thứ k vào mảng một chiều

Người đăng: chisenhungsuutam


void them(int a[],int k, int x,int n){
       for(int i = n ; i > k ;i --){
            a[i] = a[i-1];
       }
       n ++;
       a[k] = x;
}

Tag: C, C++, mảng 1 chiều, mảng một chiều, array, one array dimension
More about

Code C++: Hàm xóa phần tử trùng nhau trong mảng 1 chiều

Người đăng: chisenhungsuutam on Thứ Năm, 3 tháng 4, 2014


Hàm xóa phần tử trùng nhau trong mảng 1 chiều

void xoa(int a[],int n){
    for(int i = 0;i<n-1;i++){
        for(int j = i + 1 ;j< n;j++){
            if(a[i]==a[j]){
                int index = j;
                for(int k = index +1;k<n;k++)
                {
                    a[k-1] = a[k];
                }
                n--;
            }
        }       
    }
}

Tag: C, C++, mảng 1 chiều, mảng một chiều, array, one dimension array
More about

Code C++: Viết hàm đếm tần suất xuất hiện của các giá trị xuất hiện trong mảng

Người đăng: chisenhungsuutam


Viết hàm đếm tần suất xuất hiện của các giá trị xuất hiện trong mảng

void lietke(int a[],int n){
    int dem = 0;
    for(int i = 0 ; i < n ; i++){
        dem = 0;
        for(int j  = 0 ; j < n ; j++){    
            if(a[i] == a[j]){
                 if(i <= j){
                   dem ++ ;
                 }
                 else{
                     break;   
                 }
            }
        }
        if(dem != 0){
             printf("%d : %d ",a[i],dem);
        }
    }
}
Tag: C, C++, mảng 1 chiều, mảng một chiều, array, one dimension array
More about

Code C++: Viết hàm đếm số lượng các giá trị phân biệt có trong mảng

Người đăng: chisenhungsuutam on Thứ Sáu, 28 tháng 2, 2014



Viết hàm đếm số lượng các giá trị phân biệt có trong mảng

int demchusokhacnhau(int a[],int n){

       int dem = 1;

       bool flag = false;

       for(int i = 0;i<n;i++){

              for( int j = i + 1;j < n ;j++){

                    flag = false;

                    if(a[i]==a[j]){

                          flag = true;

                          break;

                   }
             if(!flag && j==n-1){

                     dem ++;

             }

          }

         break;

      }

     return dem ;

}

Tag: C, C++, mảng 1 chiều, mảng một chiều, array, one dimension array
More about

Code C++: Cho mảng một chiều các số nguyên. Viết hàm tìm số chẵn lớn nhất nhỏ hơn mọi giá trị lẻ có trong mảng.

Người đăng: chisenhungsuutam



Cho mảng một chiều các số nguyên. Viết hàm tìm số chẵn lớn nhất nhỏ hơn mọi giá trị lẻ có trong mảng.

int timsochanlonnhat(int a[],int n){

int minle = 2147483647; // số nguyên lẻ lớn nhất

int maxchan = -2147483648; // số nguyên chẵn nhỏ nhất

for(int i = 0;i < n; i++){

           if(a[i]%2==0) {

                  if(maxchan < a[i] && minle > a[i] ){

                  maxchan = a[i];

           }

}else{

          if(minle > a[i]){

          minle = a[i];

 }
}
}
return maxchan;
}

Tag: C, C++, mảng 1 chiều, mảng một chiều, array, one dimension array
More about

Code C++: Cho mảng một chiều các số nguyên. Viết hàm tìm chữ số xuất hiện nhiều nhất trong mảng.

Người đăng: chisenhungsuutam



Cho mảng một chiều các số nguyên. Viết hàm tìm chữ số xuất hiện nhiều nhất trong mảng.
int timchuso(int a[],int n){

int temp[100];

int max = 0;

int number = a[0];

// Khởi tạo giá trị 0 cho mảng

for(int j = 0;j<100;j++){

temp[j]=0;

}

//Tìm chữ số xuất hiện

for(int i = 0 ; i < n ; i++){

temp[a[i]]=temp[a[i]] + 1;

if(max < temp[a[i]]){

max = temp[a[i]];

number = a[i];

}

}

printf("%d\n",max);

return number;

}

Tag: C, C++, mảng 1 chiều, mảng một chiều, array, one dimension array
More about

Code C-C++: Tìm ma trận chuyển vị trong C++

Người đăng: chisenhungsuutam on Thứ Tư, 19 tháng 2, 2014


#include<iostream>
#include<iomanip>
using namespace std;
int M[50][50];
void NhapMaTran(int A[50][50], int n, int m){
for(int i=0;i<n;i++)
for(int j=0;j<m;j++){
cout<<"\n A["<<i<<","<<j<<"]= ";
cin>>A[i][j];
}
}
void InMaTran(int B[50][50], int n,int m){
for(int i=0;i<n;i++){
for(int j=0;j<m;j++)
cout<<setw(3)<<B[i][j]; 
cout<<"\n";

}
}
void ChuyenVi(int F[50][50], int n,int m){
for(int j=0;j<m;j++){
for(int i=0;i<n;i++)
cout<<setw(3)<<F[i][j]; 
cout<<"\n";
}
}
main(){
int r,c;
cout<<"\n So dong = "; cin>>r;
cout<<"\n So cot = "; cin>>c;
NhapMaTran(M,r,c);
cout<<"\n Ma tran vua nhap: \n";
InMaTran(M,r,c);
cout<<"Ma tran chuyen vi: \n";
ChuyenVi(M,r,c);
}
Tag: C, C++, ma trận, mảng 2 chiều, mảng hai chiều, ma trận chuyển vị, array
More about

Code C-C++: Phép toán cộng, nhân hai ma trận

Người đăng: chisenhungsuutam

#include<conio.h>
#include<iostream.h>
#define max 100
/*Nhap ma tran*/
void NhapMaTran(float A[max][max], int m, int n){
   for(int i = 0; i<m; i++)
   for(int j = 0; j<n; j++) {
      cout<<"a["<<i<<"]["<<j<<"] = ";
      cin>>A[i][j];
   }
}

/*Xuat ma tran*/
void XuatMaTran(float A[max][max], int m, int n) {
   for(int i=0 ; i<m; i++){
      cout<<endl;
      for(int j=0 ; j<n; j++)
         cout<<A[i][j]<<"\t";
   }
}
/*C = A+B*/
void CongMaTran(float A[max][max], float B[max][max], float C[max][max], int m, int n) {
   for(int i = 0; i<m; i++)
   for(int j = 0; j<n; j++)
      C[i][j] = A[i][j]+B[i][j];

}
/*A cap mxn * B cap nxp = C cap mXp*/
void NhanMaTran(float A[max][max], float B[max][max], float C[max][max], int m, int n, int p){
   for(int i = 0; i<m; i++)
      for(int k = 0; k<p; k++) {
         C[i][k]=0;
         for(int j = 0; j<n; j++)
            C[i][k] = C[i][k]+A[i][j]*B[j][k];
      }
}
/*Chuong trinh chinh*/
void main(){
   int m=3,n=2,p=3;
   float A[max][max],B[max][max],C[max][max],D[max][max];
   clrscr();
   cout<<"Nhap ma tran A cap "<<m<<"x"<<n<<endl;
   NhapMaTran(A,m,n);
   cout<<"Nhap ma tran B cap "<<m<<"x"<<n<<endl;
   NhapMaTran(B,m,n);
   cout<<"Nhap ma tran C cap "<<n<<"x"<<p<<endl;
   NhapMaTran(C,n,p);
   cout<<"Ma tran A\n";
   XuatMaTran(A,m,n);
   cout<<"\nMa tran B\n";
   XuatMaTran(B,m,n);
   cout<<"\nMa tran C\n";
   XuatMaTran(C,n,p);
   cout<<"\nMa tran D = A+B\n";
   CongMaTran(A,B,D,m,n);
   XuatMaTran(D,m,n);
   cout<<"\nMa tran D = A.C\n";
   NhanMaTran(A,C,D,m,n,p);
   XuatMaTran(D,n,p);
   getch();
}
Tag: Ma trận, mảng 2 chiều, mảng hai chiều, phép cộng, phép nhân, C, C++
More about

Hướng dẫn cài đặt Code::Blocks và MINGW bằng hình ảnh (Dùng để lập trình C/C++)

Người đăng: chisenhungsuutam on Thứ Bảy, 14 tháng 12, 2013

Hướng dẫn cài đặt và viết code với Code::BlocksMINGW (Dùng để lập trình C/C++)

Bước 1: Tải bộ cài đặt Code::Blocks  (95MB)
CLICK ĐỂ DOWNLOAD, chờ 5s nhấn SKIP ADS để tải bộ cài đặt Code::Blocks cho Windows XP/7/8.

Bước 2: Cài đặt Code::Blocks
- Click đúp vào file vừa tải về để bắt đầu quá trình cài đặt
- Click next liên tiếp, màn hình thông báo cài đặt mặc định vào C:\Program Files\CodeBlocks
- Chọn cài FULL để có đầy đủ các tính năng
- Mở chương trình lên sau khi cài đặt xong.
 Bước 3: Khởi động Code::Blocks
- Có 1 cửa sổ hiển thị lên yêu cầu bạn chọn Trình biên dịch mặc định của Code::Blocks

- Để tạo 1 project mới bạn làm như sau: Vào menu File -> New -> Project..

- Chọn Console Application và nhấn nút Go để bắt đầu.
- Chọn next liên tiếp tới khi bạn gặp cửa sổ yêu cầu chọn ngôn ngữ C/C++

- Sau khi nhấn Next, Code::Blocks sẽ yêu cầu bạn điền các thông tin của Project.
- Click Next lần nữa để lựa chọn trình biên dịch cho Project vừa tạo.

- Bạn có thể không cần làm gì ở bước này. Mặc định, Code::Blocks sẽ chọn trình biên dịch mặc định mà bạn đã thiết lập lúc cài đặt ban đầu.
- Mở file main.cpp ở cửa sổ bên trái để vào giao diện viết code cho chương trình.

- Ở cửa sổ bên phải, bạn có thể viết 1 ví dụ đơn giản in ra màn hình câu: "Hello world !", Sau đó nhấn F9 để chạy và xem kết quả.
Tag: Code::Blocks, Cài đặt, Mingw
More about

7 kỹ năng cần có của lập trình viên trong năm 2013

Người đăng: chisenhungsuutam on Thứ Bảy, 30 tháng 11, 2013

1. HTML5 / CSS
      Chắc hẳn các bạn lập trình web đều biết HTML không thể thiếu khi viết web. Nó là một ngôn ngữ cơ bản đơn giản để thể hiện một trang web. Để thể hiện được 1 trang web đẹp thì html thường được kết hợp với CSS để định dạng căn chỉnh, màu sắc. Ngoài ra còn kết hợp cả Javascript để thể hiện các hiệu ứng hoặc xử lý các event cơ bản trên trình duyệt client.

     Có thể nói html là ngôn ngữ cơ bản là trái tim của web, thậm chí được sử dụng trên cả các thiết bị di động và các hệ thống thiết kế cao cấp ví dụ như các máy tính bảng hay các dịch vụ SaaS cho phép người quản trị thông qua giao diện web.

     Gần đây html có sự phát triển lớn hơn nữa đó là sự ra đời HTML5 và hiện nay hầu hết các trình duyệt mới nhất đều đã hỗ trợ HTML5. Cùng với đó là các tùy chọn thiết kế có sẵn của CSS3 và tính tương tác của JavaScript đã đẩy các trang web linh hoạt hơn, hầu như không còn nhận ra sự khác nhau giữa ứng dụng dựa trên Web và các ứng dụng chương trình.

2. iOS Development
     Không phải quá ngạc nhiên khi nhắc đến các lập trình viên iOS, vì hầu hết các nguồn đáp ứng được công việc có liên quan đến XCode và Objective-C đều được đánh giá và tuyển dụng rất cao. Chính vì Apple bán cả di động và máy tính bảng nên yêu cầu các lập trình viên có thể viết các app trên cả 2 dòng thiết bị là khá nhiều.


     Trào lưu phát triển app cho Iphone và Ipad cách đây vài năm nhưng mạnh mẽ nhất là khoảng 2 năm trở lại đây. Chính vì thế nếu bạn đang có ý định phát triển app cho Iphone, Ipad và Ipod Tough thì đây chính là lúc bạn nên thử làm việc với nó.

3. PHP / MySQL
     Có lẽ không hấp dẫn bằng việc lập trình phát triển cho các thiết bị di động hay các công nghệ web mới hơn nhưng PHP vẫn quan trọng. Một ngôn ngữ lập trình mã nguồn mở đang được sử dụng bởi hơn 20 triệu website, và các website lớn đang sử dụng hiện nay có thể kể đến 2 đại diện như Facebook và Wikipedia. Bất kì blog, site tin tức nào được xây dựng trên WordPress hay Drupal cũng là mã nguồn được viết trên PHP.

     Có thể nói lập trình viên php đang là những người đang được tuyển dụng nhiều nhất theo đánh giá trên Elance. Kết hợp với MySQL thì WordPress đang được đứng hạng nhất trong số lượng các website được sử dụng.

4. Java / J2EE
    Việc phát triển dựa trên nền tảng Java và J2EE đang ngày càng được trọng dụng và các lập trình viên càng ngày càng được tuyển dụng cao trên nền tảng này trong năm 2013
Không giống các công nghệ kỹ thuật mới như phát triển hệ điều hành như Android và HTML5 thì nhu cầu kỹ năng lập trình Java luôn cần thiết và nó đang dần được trọng dụng trong vài năm gần đây

5. JavaScript
     Đối với web, JavaScript làm cho tính tương tác cao hơn đặc biệt hiện nay sự phát triển của các máy tính bảng và điện thoại di động đã loại bỏ Flash ra khỏi hệ điều hành. Bên cạnh đó là các thư viện JQuery hoặc định dạng dữ liệu chuẩn JSON phát triển khiến các công ty cần các lập trình viên giỏi JavaScript hơn bao giờ hết.


     Nếu bạn đang tìm kiếm để học lập trình Web, JavaScript chính là cái bạn cần học. Nếu bạn muốn bắt đầu Javascript thì bạn có thể tìm hiểu qua jQuery.

6. IT Project Management
     Một trong những công việc liên quan đến đằng sau những kỹ năng công nghệ không phải tất cả phải là kỹ thuật. Việc góp nhặt code, bảo trì, thiết kế phần mềm tất cả đều quan trọng. Nhưng sẽ vô ích nếu không có ai là người theo dõi và giám sát trong suốt quá trình hoàn thành dự án. Đó là lý do tại sao quản lý dự án được chứng nhận có thể tạo ra thêm lợi nhuận và lý do tại sao 40% các nhà quản trị CNTT đang tìm kiếm để thuê quản lý dự án trong năm 2013.

7. All Things “Cloud”
     Điện toán đám mây đang ngày càng phát triển mạnh, và việc tìm kiếm nhân lực về điện toán đám mây cần thiết ở bất cứ vị trí nào. Các công ty luôn tìm kiếm lập trình viên chuyên viên có thể ảo hóa hoặc phát triển các hệ thống Software-as-a-Service (SaaS), nó gần giống với Platform-as-a-Service (PaaS)

    Theo các khảo sát thì có khoảng 25% các công ty có kế hoạch tuyển dụng những người am hiểu SaaS và các dịch vụ liên quan đến “đám mây” trong năm 2013. Hay nói tóm lại là SaaS và các thuật ngữ sẽ càng ngày càng xuất hiện nhiều trên các website tuyển dụng việc làm.
    Và tất nhiên, SaaS và PaaS có thể sử dụng bất kỳ ngôn ngữ lập trình và các công nghệ cụ thể nào đó đáp ứng được chứ không nhất thiết phải là các ngôn ngữ hay công cụ nào trong bài viết này.
More about

Quy tắc đặt tên và tiêu chuẩn lập trình trong C#

Người đăng: chisenhungsuutam on Thứ Sáu, 15 tháng 11, 2013


Quy ước đặt tên và tiêu chuẩn

1. Quy tắc Pascal: Viết hoa chữ cái đầu tiên của mỗi từ (VD: Student, StudentDetail, ...)
* Sử dụng cho: Phương thức (method), Giao tiếp (Interface), Tập hợp (Enum), Sự kiện (Events), Ngoại lệ (Exception), Không gian tên (NameSpace), Thuộc tính (Property)
2. Quy tắc Camel: Viết thường từ đầu tiên và viết hoa chữ cái đầu tiên của từ kế tiếp (VD: student, studentDetail,...)
* Sử dụng cho: Tầm vực biến (Protected/Private), các Tham số (Parameter)

Sử dụng quy tắc Pascal cho phương thức:
public class HelloWorld{  
  ...  
}  
Sử dụng quy tắc Pascal cho phương thức:
public class HelloWorld{
  void SayHello(string name){
      ...
  }
}
Sử dụng quy tắc Camel cho biến và tham số của phương thức 
public class HelloWorld{
 int totalCount = 0;
 void SayHello(string name){
  string fullMessage = "Hello " + name;
  ...
 }
}
- Không nên sử dụng các tiền tố kèm dấu như: M_ để đặt tên biến, ví dụ như 
       string m_sName;
       int nAge;
Mặc dù khai báo như vậy hợp lệ, nhưng chuẩn viết code .NET không khuyến cáo sử dụng. Tất cả biến nên dùng quy tắc Camel, sử dụng các từ có nghĩa, mô tả được tên biến 

- Không dùng chữ viết tắt, tên, từ địa phương,... mà hãy dùng từ rõ nghĩa như: name, address, phone,...
- Không đặt tên biến một ký tự như: i, x, n,... mà hãy đặt tên biến như index, temp. Ngoại trừ trường hợp sử dụng trong vòng lặp như sau: 
for ( int i = 0; i < count; i++ ){
     ...
}
Nếu biến chỉ được sử dụng để đếm và không sử dụng ở bất kì nơi nào ngoài vòng lặp, nhiều người thích dùng (i) để đặt tên cho biến. 

- Không dùng dấu gạch dưới (_) trong tên biến
Tên NameSpace nên theo chuẩn như sau
<company name="">.<product name="">.<top level="" module="">.<bottom level="" module=""></bottom></top></product></company>

- Tên file nên đặt trùng với tên lớp. Ví dụ: với lớp HelloWorld thì tên file nên là HelloWorld.cs (or HelloWorld.vb)
- Thụt lề: Nên dùng TAB thay về space (phím cách)
- Ghi chú (comment) nên cùng cấp với đoạn mã muốn comment. Cặp dấu ngoặc nhọn ({}) cũng nên cùng cấp với đoạn mã.
Cách ra một dòng để tăng tính rõ ràng của mã
bool SayHello (string name){
  string fullMessage = "Hello " + name;
  DateTime currentTime = DateTime.Now;
    string message = fullMessage + ", the time is : " + currentTime.ToShortTimeString();
  MessageBox.Show ( message );
  if ( ... ) {
        // Do something
        // ...
        return false;
  }
        return true;
  }
- Với if, if-else, for, while, do-while dù chỉ có một hay nhiều dòng lệnh, cũng nên cho vào trong cặp dấu ngoặc nhọn ({}) 
if ( ... ) {
      // Do something
}
Nguyên tắc viết code:

Để tránh trường hợp file (.cs, .vb) quá lớn.

Nếu một file có hơn 300-400 dòng lệnh, bạn nên nghĩ đến việc chia nhỏ nó vào các Class
Tránh viết các phương thức dài, một phương thức thông thường chỉ nên từ 1-25 dòng lệnh. Nếu một phương thức có hơn 25 dòng lênh, bạn nên chia nhỏ thành các phương thức xử lý riêng. 
Tên phương thức cần rõ ý, nêu được mục đích của phương thức. Nếu bạn đặt tên phương thức rõ ràng, bạn sẽ không cần phải viết tài liệu miêu tả về ý nghĩa của phương thức.
Tốt - Tên phương thức rõ nghĩa 
void SavePhoneNumber ( string phoneNumber )
{
  // Save the phone number.
}
Không tốt - Tên phương thức không rõ nghĩa 
// This method will save the phone number.
void SaveData ( string phoneNumber )
{
  // Save the phone number.
}
Một phương thức chỉ nên xử lý một công việc. Không nên gộp quá nhiều "trách nhiệm" cho một phương thức
Tốt 
 void SaveAddress ( string address )
 {
  // Save the address.
  // ...
 }

 void SendEmail ( string address, string email )
 {
  // Send an email to inform the supervisor that the address is changed.
  // ...
 }
Không tốt 
 // Save address and send an email to the supervisor
 // to inform that the address is updated.
 SaveAddress ( address, email );
 void SaveAddress ( string address, string email )
 {
  // Job 1.
  // Save the address.
  // ...
 // Job 2.
  // Send an email to inform the supervisor that the address is changed.
  // ...
 }
Sử dụng kiểu dữ liệu đặc trưng thay vì sử dụng từ lớp
Tốt 
 int age;
 string name;
 object contactInfo;
Không tốt 
 Int16 age;
 String name;
 Object contactInfo;
Nên sử dụng Enum ở bất kì nơi nào cần thiết. Không nên dùng số hay chuỗi để kiểm tra các giá trị
Tốt 
enum MailType
 {
  Html,
  PlainText,
  Attachment
 }
 void SendMail (string message, MailType mailType)
 {
  switch ( mailType )
  {
   case MailType.Html:
    // Do something
    break;
   case MailType.PlainText:
    // Do something
    break;
   case MailType.Attachment:
    // Do something
    break;
   default:
    // Do something
    break;
  }
 }
Không tốt 
void SendMail (string message, string mailType)
{
  switch ( mailType )
  {
   case "Html":
    // Do something
    break;
   case "PlainText":
    // Do something
    break;
   case "Attachment":
    // Do something
    break;
   default:
    // Do something
    break;
  }
}
      Nên sử dụng private thay vì public hay protected cho biến. Nếu muốn, hãy dùng properties và thiết lập code để bảo vệ tài nguyên. 
      Không sử dụng được dẫn tĩnh cục bộ trong lập trình ("D:\software\..."). Hãy sử dụng đường dẫn tương đối ("../images/home.jpg")
      Trước khi chương trình hiển thị, hãy kiểm tra lại toàn bộ các yêu cầu về tập tin, ràng buộc, kiểm tra liên kết cơ sở dữ liệu, ... để đảm bảo rằng chương trình sẽ hoạt động tốt
      Nếu phát hiện lỗi phát sinh, nên thông báo cho người dùng biết và "ghi chú" lại để có thể thực hiện các bước kiểm tra và khắc phục lỗi hoặc tạo các bản cập nhật.
More about