[Tự học lập trình C/C++] Bài 1: Chương trình đầu tay

---------------------------------
* TÓM TẮT LÝ THUYẾT
---------------------------------

- C++ được mở rông từ ngôn ngữ lập trình C, được sử dụng phổ biến.

- C++ là một dạng ngôn ngữ đa mẫu hình tự do có kiểu tĩnh và hỗ trợ lập trình thủ tục, dữ liệu trừu trượng, lập trình hướng đối tượng, và lập trình đa hình.


---------------------------------
* VÍ DỤ [ Code Dev C++ ]
---------------------------------

Ví dụ: 

+ Yêu cầu: "Chương trình đầu tay", in ra màn hình "Hello world !"

+ Code  :

  #include <iostream>

  #include <conio.h>

   /* bỏ dòng này nếu viết trên Turbo C++ */

  using namespace std;

  int main() {

  // in ra man hinh
 
    cout<<"Hello world !";
 
    return 0;
   
  }


* Chú giải: 

1. Chỉ thị tiền xử lý: #include để chèn vào nội dung của tập tin header,
ví dụ:  <iostream.h>  trong chương trình. <iostream.h> là tập tin header chuẩn của C++ và chứa đựng các định nghĩa cho xuất và nhập.

2. Hàm main: hàm chính, bắt buộc phải có.

3. Dấu ngoặc nhọn bắt đầu thân của hàm main.

4. Các câu lệnh (statement) được viết sau dấu mở ngoặc, kết thúc câu lệnh bằng dấu ";".

5. Dấu ngoặc đóng kết thúc thân hàm main.

6. // hoặc /* */: Ghi chú trong chương trình



*** CHÚ Ý: 
  Các ví dụ được viết trên Dev C++ hoặc các chương trình soạn thảo khác như Netbean, Eclipse,....

------------------------
Xem bài khác:

[Tự học lập trình C/C++] Bài 2: Các kiểu dữ liệu cơ bản chuần trong C\C++

---------------------------------
* TÓM TẮT LÝ THUYẾT
---------------------------------

  I. Các kiểu dữ liệu cơ bản chuần trong C\C++:

   1. Kiểu số nguyên
    - Ký hiệu: int (2 Byte);
    - Các kiểu mở rộng: long, unsigned int, unsigned long
 
   2. Kiểu số thực
    - Kí hiệu: float (4 Byte)
    - Các kiểu mở rộng: double, long double
 
   3. Kiểu ký tự
    - ký hiệu: char (1 Byte)

  II. Ép kiểu, chuyển kiểu
    - Chuyển kiểu tự động: char -> int -> float.
    - Ép kiểu:  
      Ví dụ: Ép kiểu float thành int:  
       (int)x; (x có kiểu float)

  III. Các toán tử trong C\C++
  - Toán tử số học:  

  +, -, *, /,
 
  % (chia lấy phần dư),
 
  ++ (tăng 1 đơn vị),
 
  -- (giảm 1 đơn vị),
 
  =, ...
 
 
  - Toán tử logic:
 
  && (and),
 
  || (or),
 
  ! (not).
 
  - Toán tử quan hệ:
 
   >, <, >=, <=, ==, !=.
 
 
  - Toán tử xử lý bit:
 
  >> (dịch phải),
 
  << (dịch trái),
 
  ~ (not bit),
 
  ^ (xor bit),
 
  & (and bit),
 
  | (or bit).

 
   IV. Một số hàm thông dụng C++
 
   Để sử dụng các hàm, bạn cần khai báo tiền xử lý (#include)
 
 - stdio.h : Thư viện chứa các hàm vào/ ra chuẩn (standard input/output).
   
   Gồm các hàm: 
       printf(), scanf(), getc(), putc(), gets(), puts(), fflush(), fopen(), fclose(), fread(), fwrite(), getchar(), putchar(), getw(), putw(),...
   

- conio.h : Thư viện chứa các hàm vào ra trong chế độ DOS (DOS console).

Gồm các hàm:
clrscr(), getch(), getche(), getpass(), cgets(), cputs(), putch(), clreol(),...


- math.h: Thư viện chứa các hàm tính toán

Gồm các hàm:
abs(), sqrt(), log(). log10(), sin(), cos(), tan(), acos(), asin(), atan(), pow(), exp(),...


  - alloc.h: Thư viện chứa các hàm liên quan đến việc quản lý bộ nhớ.
 
  Gồm các hàm:
  calloc(), realloc(), malloc(), free(), farmalloc(), farcalloc(), farfree(),...


- io.h: Thư viện chứa các hàm vào ra cấp thấp.

Gồm các hàm:
open(), _open(), read(), _read(), close(), _close(), creat(), _creat(), creatnew(), eof(), filelength(), lock(),...

- graphics.h: Thư viện chứa các hàm liên quan đến đồ họa.

Gồm các hàm:
initgraph(), line(), circle(), putpixel(), getpixel(), setcolor(),...
 


---------------------------------
* VÍ DỤ [ Code Dev C++ ]
---------------------------------

Ví dụ 1: 

+ Yêu cầu: Tính tổng hai số nguyên a, b cho trước.

+ Code:

#include <iostream>
#include <conio.h>

using namespace std;

int main() {

    // khai báo biến
    int a,b;
    a=5; b=6;
    int s=a+b;
    cout<<"\n Tong "<<a<<" va "<<b<<" bang "<<s;
   return 0;
 
}

------------

Ví dụ 2: 

+ Yêu cầu: Tính chu vi diện tích của tam giác với 3 cạnh cho trước

+ Code:

#include <iostream>
#include <conio.h>
#include <math.h>

using namespace std;

int main() {

    // khai báo biến sô thực
    float a,b,c;
    a=3.0; b=4.0;c=5.0;
    float cv,dt; // chu vi, dien tich
 
    // tinh chu vi, dien tich
    cv=a+b+c;
    float p=cv/2; // nua chu vi
    dt=sqrt(p*(p-a)*(p-b)*(p-c));
     cout<<"\n Chu vi = "<<cv<<"\n Dien tich = "<<dt;
   return 0;
 
}

------------

Ví dụ 3:

+ Yêu cầu:
  - In ra màn hình vị trí của ký tự 'A' trong bảng mã ASCII.

  - In ra ký tự tại vị trí 67 trong bảng mã ASCII.

+ Code:

#include <iostream>
#include <conio.h>
#include <math.h>

using namespace std;

int main() {
    // khai báo biến ký tự
    char ch='A';
    int vt=ch;
    cout<<"\n Vi tri cua ky tu A: "<<vt;
    // in ra ky tu tai vi tri 67
    vt=67;
    ch=(char)vt;// ép kiểu int thành char
    cout<<"\n Ky tu tai tai vi tri 67 la: "<<ch;
   return 0;

}

------------------------
Xem bài khác:

[Tự học lập trình C/C++] Bài 3: Nhập / Xuất trong C/C++

---------------------------------
* TÓM TẮT LÝ THUYẾT
---------------------------------

  1. In dữ liệu ra màn hình: 
 
  cout<<data1<<data1<<...;
 
     Trong đó:     
      - data là biến, biểu thức, xâu ký tự,...     
      - Mỗi khối dữ liệu cách nhau bởi <<
       
  2. Nhập dữ liệu vào từ bàn phím: 

  cin>>var1>>var2>>...;
 
  Trong đó:  
  - var là các biến cần nhập từ bàn phím.  
  - Mỗi biến cách nhau bởi >>
      
---------------------------------
** VÍ DỤ
---------------------------------

Ví dụ 1: 

+ Yêu cầu:  Nhập vào 2 số nguyên a, b. Tính tổng, hiệu, tích, thương 2 số đó.

+ Code:

#include <iostream>
#include <conio.h>

using namespace std;

int main() {

    int a,b;
    // nhap 2 so
    cout<<"\n Nhap 2 so: ";
    cout<<"\n a= ";
    cin>>a;
    cout<<"\n b= ";
    cin>>b;
 
    // Tinh tong, hieu, tich, thuong
    int tong,hieu,tich;
    tong=a+b;
    hieu=a-b;
    tich=a*b;
    float thuong=(float)a/b;
 
    // in ket qua
    cout<<"\n Tong: "<<tong;
    cout<<"\n Hieu: "<<hieu;
    cout<<"\n Tich: "<<tich;
    cout<<"\n Thuong: "<<thuong;
 
   return 0;
}


------------

Ví dụ 2: 

+ Yêu cầu:  Nhập vào 3 cạnh tam giác, tính chu vi, diên tích tam giác đó.

+ Code:


#include <iostream>
#include <conio.h>
#include <math.h>

using namespace std;

int main() {
    float a,b,c;
    // nhap 3 canh tam giac
    cout<<"\n Nhap 3 canh: ";
    cout<<"\n a= ";
    cin>>a;
    cout<<"\n b= ";
    cin>>b;
    cout<<"\n b= ";
    cin>>b;
 
 
    // Tinh chu vi tam giac
    float cv,dt;
    cv=a+b+c;
    float p=cv/2;
    dt=sqrt(p*(p-a)*(p-b)*(p-c));
 
   // in ket qua
    cout<<"\n Chu vi: "<<cv;
    cout<<"\n Dien tich: "<<dt;
 
   return 0;
}

------------

Ví dụ 3: 

+ Yêu cầu: Tính điểm cho sinh viên:

 - Nhập vào điểm: điểm toán rời rạc (3 tín chỉ); điểm lập trình (4 tín chỉ); điểm cơ sở dữ liệu (3 tín chỉ)
 - Tính điểm tổng kết.
 - In kết quả.

 + Code:

#include <iostream>
#include <conio.h>

using namespace std;

int main() {
    float dTRR,dLT,dCSDL;
    // nhap nhap diem    
    cout<<"\n Nhap diem: ";
    cout<<"\n Diem toan roi rac: ";
    cin>>dTRR;
    cout<<"\n Diem lap trinh: ";
    cin>>dLT;
    cout<<"\n Diem co so du lieu: ";
    cin>>dCSDL;
    // Tinh diem
    float dTK;
    dTK=(dTRR*3+dLT*4+dCSDL*3)/10;
    // in ket qua
    cout<<"\n Diem tong ket: "<<dTK;
 
   return 0;
}

------------------------
Xem bài khác:

[Tự học lập trình C/C++] Bài 4: Cấu trúc rẽ nhánh (if)

---------------------------------
* TÓM TẮT LÝ THUYẾT
---------------------------------

1. Giới thiệu cấu trúc rẽ nhánh (if)
  Cấu trúc này được dùng khi một lệnh hay một khối lệnh chỉ được thực hiện khi một điều kiện nào đó thoả mãn.

2. Cú phúp
  - Cấu trúc if đơn:
     if (bieu thuc dieu kien)  
       {
        khối lệnh;...
       }
   
  - Cấu trúc if / else:
     if (bieu thuc dieu kien)
       {
         Khối lệnh 1;...;
       }
     else
       {
         Khối lệnh 2;...;
       }

   - Cấu truc if lồng nhau: trong trường hợp Khối lệnh chính là cấu trúc if khác.
     
---------------------------------
** VÍ DỤ
---------------------------------

Ví dụ 1: 

+ Yêu cầu: Nhập vào 3 số nguyên. In ra màn hình số lớn nhất, nhỏ nhất.

+ Code:

#include <iostream>
#include <conio.h>

using namespace std;

int main() {
    int a,b,c;
    // nhap 3 so
    cout<<"\n Nhap 3 so: ";
    cout<<"\n a= ";
    cin>>a;
    cout<<"\n b= ";
    cin>>b;
    cout<<"\n c= ";
    cin>>c;
 
    // tim max
    int max=a;
    if (max<b) max=b;
    if (max<c) max=c;
    cout<<"\n Max: "<<max;
 
    // tim min
    int min=a;
    if (min>b) min=b;
    if (min>c) min=c;
    cout<<"\n Min: "<<min;

   return 0;
}

------------

Ví dụ 2: 

+ Yêu cầu: Giải phương trình bậc nhất 1 ẩn ax+b=0, với a, b nhập vào từ bàn phím.

+ Code:

#include <iostream>
#include <conio.h>

using namespace std;

int main() {
    float a,b;
    // nhap he so
    cout<<"\n Nhap he so: ";
    cout<<"\n a= ";
    cin>>a;
    cout<<"\n b= ";
    cin>>b;
 
    // Giai va bien luan
    if (a==0)
      if (b==0)
        cout<<"\n Phuong trinh vo so nghiem";
      else
        cout<<"\n Phuong trinh vo nghiem";
    else
      {
        float x=-b/a;
        cout<<"\n Phuong trinh co 1 nghiem x= "<<x;
      }
 
   return 0;
}

------------

Ví dụ 3: 

+ Yêu cầu: Giải và biện luận phương trình bậc 2 một ẩn ax^2 + bx +c = 0, với a, b, c nhập vào từ bàn phím.

+ Code:
#include <iostream>
#include <conio.h>
#include <math.h>

using namespace std;

int main() {
    float a,b,c;
    // nhap he so
    cout<<"\n Nhap he so: ";
    cout<<"\n a= ";
    cin>>a;
    cout<<"\n b= ";
    cin>>b;
    cout<<"\n c= ";
    cin>>c;
    // Giai va bien luan
    if (a==0)
      if (b==0)
        if (c==0)
        cout<<"\n Phuong trinh vo so nghiem";
      else
        cout<<"\n Phuong trinh vo nghiem";
    else
      {
        float x=-c/b;
        cout<<"\n Phuong trinh co 1 nghiem x= "<<x;
      }
      else
       {
        float delta=b*b-4*a*c;
        if(delta<0)
        cout<<"\n Phuong trinh vo nghiem";
        if(delta=0)
        cout<<"\n Phuong trinh co nghiem kep, x1=x2= "<<-b/(2*a);
        if (delta>0)
        {
        float x1=(-b-(float)sqrt(delta))/(2*a);
        float x2=(-b+(float)sqrt(delta))/(2*a);
        cout<<"\n Phuong trinh co 2 nghiem, x1= "<<x1<<"; x2= "<<x2;
        }
       }

   return 0;
}

----------------

Ví dụ 4: 

+ Yêu cầu: Tính điểm cho sinh viên:

 - Nhập vào điểm: điểm toán rời rạc (3 tín chỉ); điểm lập trình (4 tín chỉ); điểm cơ sở dữ liệu (3 tín chỉ)
 - Tính điểm tổng kết.
 - In kết quả điểm chữ (A,B,C,D,F) của sinh viên.

+ Code:

#include <iostream>
#include <conio.h>

using namespace std;

int main() {
    float dTRR,dLT,dCSDL;
    // nhap nhap diem
    cout<<"\n Nhap diem: ";
    cout<<"\n Diem toan roi rac: ";
    cin>>dTRR;
    cout<<"\n Diem lap trinh: ";
    cin>>dLT;
    cout<<"\n Diem co so du lieu: ";
    cin>>dCSDL;
    // Tinh diem
    float dTK;
    dTK=(dTRR*3+dLT*4+dCSDL*3)/10;
    // in điểm tổng kết
    cout<<"\n Diem tong ket: "<<dTK;
    // Tim diem chu
    char dChu;
    if(dTK<4)
    dChu='F';
    else if (dTK<5.5)
      dChu='D';
      else if (dTK<7.0)
      dChu='C';
      else if (dChu<8.5)
      dChu='B';
        else dChu='A';
     cout<<"\n Diem chu: "<<dChu;
   return 0;
}

[Tự học lập trình C/C++] Bài 5: Cấu trúc lặp for

---------------------------------
* TÓM TẮT LÝ THUYẾT
---------------------------------

1. Cấu trúc lặp for là cấu trúc lặp có số lần lặp biết trước

2. Cú pháp
  for(biểu thức 1 ; biểu thức 2 ; biểu thức 3)
   {
      khối lệnh;
   }  
  Trong đó:
    - biểu thức 1: thiết lập ban đầu
    - biểu thức 2: điều kiện lặp, là biểu thức logic
    - biểu thức 3: thiết lập lại   
- Quá trình lặp dừng lại khi biểu thức 2 sai.


   
---------------------------------
** VÍ DỤ
---------------------------------

Ví dụ 1: 

+ Yêu cầu: Tính tổng các số từ 1 đến n, với n nhập vào từ bàn phím

+ Code:

#include <iostream>
#include <conio.h>

using namespace std;

int main() {
int n;
// nhap n
cout<<"\n n= ";
cin>>n;
// tinh tong
int s=0;
for(int i=0;i<=n;i++)
s=s+i;
// in ket qua
cout<<"\n Tong = "<<s;
return 0;
}

--------------

Ví dụ 2: 

+ Yêu cầu: Đếm số chẵn nhỏ hơn n, với n nhập vào từ bàn phím.

+ Code:

#include <iostream>
#include <conio.h>

using namespace std;

int main() {
int n;
// nhap n
cout<<"\n n= ";
cin>>n;
// dem so chan
int dem=0;
for(int i=0;i<=n;i++)
if (i%2==0) dem++;
// in ket qua
cout<<"\n Ket qu = "<<dem;
return 0;
}

--------------

Vi dụ 3: 

+ Yêu cầu: In ra màn hình tất cả số nguyên gồm 4 chữ sao cho tổng các chữ số bằng 10.

+ Code:

#include <iostream>
#include <conio.h>

using namespace std;

int main() {
cout<<"\n In ket qua: ";
for(int i=1000;i<=9999;i++)
{
if(i%10+(i/10)%10+(i/100)%10+i/1000==10)
cout<<i<<" ; ";
}
return 0;
}

---------------

Ví dụ 4: 

+ Yêu cầu: In ra màn hình bảng cửu chương

+ Code:

#include <iostream>
#include <conio.h>

using namespace std;

int main() {
cout<<"\n In bang cuu chuong: \n";
for(int i=1;i<=9;i++)
{
for(int j=1;j<9;j++)
cout<<i<<"x"<<j<<"= "<<i*j<<" ; ";
cout<<"\n";
}
return 0;
}

--------------

Ví dụ 5: 

+ Yêu cầu: In ra màn hình tất cả số nguyên tố nhỏ hơn 1000.

+ Code:

#include <iostream>
#include <conio.h>

using namespace std;

int main() {
cout<<"\n In so nguyen to nho hon 1000: \n";
for(int i=1;i<=1000;i++)
{
int test=0;
for(int j=2;j<i;j++)
if(i%j==0) {
test=1;
break;
}
if(test==0) cout<<i<<" ; ";
}
return 0;
}

------------------------
Xem bài khác:

[Tự học lập trình C/C++] Bài 6: Cấu trúc lặp while

---------------------------------
* TÓM TẮT LÝ THUYẾT
---------------------------------

1. Cấu trúc lặp while 
  Chức năng của nó đơn giản chỉ là lặp lại [Khối lệnh] khi điều kiện [biểu thức điều khiển] còn thoả mãn.

2. Cú pháp  
  while (biểu thức điểu khiển)  
  {  
  Khối lệnh;
  }
 
  Trong đó:
  - biểu thức điểu khiển là biểu thức logic.  
  - [Khối lệnh] còn thực hiện khi [biểu thức điều khiển] còn đúng.  
  - Trong [khối lệnh] cần có sự tác động để [biểu thức điều khiển] sai.
 
 

---------------------------------
** VÍ DỤ
---------------------------------

Ví dụ 1: 

+ Yêu cầu: Tính tổng các số từ 1 đến n, với n nhập vào từ bàn phím

+ Code:

#include <iostream>
#include <conio.h>

using namespace std;

int main() {
int n;
// nhap n
cout<<"\n n= ";
cin>>n;
// tinh tong
int s=0,i=0;
while(i<=n){
s=s+i;
i++;
}

// in ket qua
cout<<"\n Tong = "<<s;
return 0;
}

--------------

Ví dụ 2: 

+ Yêu cầu: Đếm số chẵn nhỏ hơn n, với n nhập vào từ bàn phím.

+ Code:

#include <iostream>
#include <conio.h>

using namespace std;

int main() {
int n;
// nhap n
cout<<"\n n= ";
cin>>n;
// dem so chan
int dem=0,i=0;
while (i<=n){
if (i%2==0) dem++;
i++;
}

// in ket qua
cout<<"\n Ket qu = "<<dem;
return 0;
}

--------------

Vi dụ 3: 

+ Yêu cầu: In ra màn hình tất cả số nguyên gồm 4 chữ sao cho tổng các chữ số bằng 10.

+ Code:

#include <iostream>
#include <conio.h>

using namespace std;

int main() {
cout<<"\n In ket qua: ";
int i=1000;
while (i<=9999)
{
if(i%10+(i/10)%10+(i/100)%10+i/1000==10)
cout<<i<<" ; ";
i++;
}
return 0;
}

---------------

Ví dụ 4: 

+ Yêu cầu: In ra màn hình bảng cửu chương

+ Code:

#include <iostream>
#include <conio.h>

using namespace std;

int main() {
cout<<"\n In bang cuu chuong: \n";
int i=1;
while (i<=9)
{
int j=1;
while (j<9){
cout<<i<<"x"<<j<<"= "<<i*j<<" ; ";
j++;
}
cout<<"\n";
i++;
}
return 0;
}

--------------

Ví dụ 5: 

+ Yêu cầu: In ra màn hình tất cả số nguyên tố nhỏ hơn 1000.

+ Code:

#include <iostream>
#include <conio.h>

using namespace std;

int main() {
cout<<"\n In so nguyen to nho hon 1000: \n";
int i=1;
while (i<=1000)
{
int test=0,j=2;
while (j<i){
if(i%j==0) {
test=1;
break;
}
j++;
}
if(test==0) cout<<i<<" ; ";
i++;
}
return 0;
}

------------------------
Xem bài khác:

[Tự học lập trình C/C++] Bài 7: Cấu trúc lặp do ... while

---------------------------------
* TÓM TẮT LÝ THUYẾT
---------------------------------

 1. Cấu trúc lặp do - while
  Chức năng của nó là hoàn toàn giống vòng lặp while chỉ trừ có một điều là điều kiện điều khiển vòng lặp được tính toán sau khi [Khối lệnh] được thực hiện, vì vậy [Khối lệnh] sẽ được thực hiện ít nhất một lần ngay cả khi condition không bao giờ được thoả mãn

 2. Cú pháp: 
  do 
 
    Khối lệnh; 
 
  while (biểu thức điều khiển);
 
 Trong đó: 
  - [biểu thức điều khiển] là biểu thức logic
  - Trong [khối lệnh] cần có tác động để [biểu thức điều khiển] sai đi.
 


---------------------------------
** VÍ DỤ
---------------------------------

Ví dụ 1: 

+ Yêu cầu: Tính tổng các số từ 1 đến n, với n nhập vào từ bàn phím thỏa mãn 1<n<2014.

+ Code:

#include <iostream>
#include <conio.h>

using namespace std;

int main() {
int n;
// su dụng do-while de nhap n
do{
cout<<"\n n= ";
cin>>n;
if (n<=1||n>=2014)
cout<<"\n Nhap lai n !";
}while (n<=1||n>=2014);
// tinh tong
int s=0,i=0;
do{  
   s=s+i;
i++;
}while(i<=n);
// in ket qua
cout<<"\n Tong = "<<s;
return 0;
}

--------------

Ví dụ 2: 

+ Yêu cầu: Đếm số chẵn nhỏ hơn n, với n nhập vào từ bàn phím thỏa mãn 4<=n<=1000.

+ Code:

#include <iostream>
#include <conio.h>

using namespace std;

int main() {
int n;
// su dụng do-while de nhap n
do{
cout<<"\n n= ";
cin>>n;
if (n<4||n>1000)
cout<<"\n Nhap lai n !";
}while (n<4||n>1000);

// dem so chan
int dem=0,i=0;
do{
if (i%2==0) dem++;
i++;
}while (i<=n);

// in ket qua
cout<<"\n Ket qu = "<<dem;

return 0;
}

--------------

Ví dụ 3: 

+ Yêu cầu: In ra màn hình tất cả số nguyên gồm 4 chữ sao cho tổng các chữ số bằng 10.

+ Code:

#include <iostream>
#include <conio.h>

using namespace std;

int main() {
cout<<"\n In ket qua: ";
int i=1000;
do{
if(i%10+(i/10)%10+(i/100)%10+i/1000==10)
cout<<i<<" ; ";
i++;
}while (i<=9999);
return 0;
}

---------------

Ví dụ 4: 

+ Yêu cầu: In ra màn hình bảng cửu chương

+ Code:

#include <iostream>
#include <conio.h>

using namespace std;

int main() {
cout<<"\n In bang cuu chuong: \n";
int i=1;
do{
int j=1;
do{
cout<<i<<"x"<<j<<"= "<<i*j<<" ; ";
j++;
}while (j<9);
cout<<"\n";
i++;
} while (i<=9);

return 0;
}

--------------

Ví dụ 5: 

+ Yêu cầu: In ra màn hình tất cả số nguyên tố nhỏ hơn 1000.

+ Code:


#include <iostream>
#include <conio.h>

using namespace std;

int main() {
cout<<"\n In so nguyen to nho hon 1000: \n";
int i=1;
do
{
int test=0,j=2;
do{
if(i%j==0) {
test=1;
break;
}
j++;
}while (j<i);
if(test==0) cout<<i<<" ; ";
i++;
}while (i<=1000);
return 0;
}

------------

*** CHÚ Ý:
 - Các cấu trúc for, while, do-while có thể chuyển đổi qua lại cho nhau.
 - Câu lệnh break, continue:
   + break: khi gặp lệnh break vòng lặp kết thúc
   + continue: khi gặp lệnh contineu vòng lặp bỏ qua phần còn lại, bắt đầu vòng lặp mới.

------------------------
Xem bài khác:

[Tự học lập trình C/C++] Bài 8: Cấu trúc lựa chọn switch... case

---------------------------------
* TÓM TẮT LÝ THUYẾT
---------------------------------

1. Cấu trúc switch - case
  Cú pháp của lệnh switch hơi đặc biệt một chút. Mục đích của nó là kiểm tra một vài giá trị hằng cho một biểu thức, tương tự với những gì chúng ta làm ở đầu bài này khi liên kết một vài lệnh if và else if với nhau
  
2. Cú pháp:
    witch (biểu thức)
    {
    case gt1:
    Khối lệnh 1;
    [break;]
   
    case gt2:
    Khối lệnh 2;
    [break;]
   
    case gt3:
    Khối lệnh3;
    [break;]
   
    ...
   
    case gtn:
    Khối lệnh n;
    [break;]
   
    [default:
    khối lệnh 0;]
    }
   
    Trong đó:
    - Biểu thức cho giá trị rời rạc (thường là giá trị nguyên).
    - Biểu thức cho giá trị ứng với trường hợp nào thì khối lệnh thuộc trường hợp đó thực hiện, gặp break thì kết thúc cấu trúc.
     - Nếu không gặp trường hợp nào tương ứng thì khối lệnh 0 thực hiện.
 


   
---------------------------------
** VÍ DỤ
---------------------------------

Ví dụ 1: 

+ Yêu cầu: Nhập vào từ bàn phím tháng và năm, in ra màn hình số ngày thuộc tháng đó.

+ Code:

#include <iostream>
#include <conio.h>

using namespace std;

int main() {
int thang,nam;
// nhap thang, nam
cout<<"\n Nhap vao thang: ";
cin>>thang;
cout<<"\n Nhap vao nam: ";
cin>>nam;
// in ra so ngay trong thang
switch (thang){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
cout<<"\n Thang co 31 ngay";
break;
case 4:
case 6:
case 9:
case 11:
cout<<"\n Thang co 30 ngay";
break;
case 2:
if(nam%4==0)
  cout<<"\n Thang co 29 ngay";
else
cout<<"\n Thang co 28 ngay";
default:
cout<<"\n Thang khong hop le! ";
}
return 0;
}

----------------

Ví dụ 2: 

+ Yêu cầu: Tính điểm cho sinh viên:
 - Nhập vào điểm: điểm toán rời rạc (3 tín chỉ); điểm lập trình (4 tín chỉ); điểm cơ sở dữ liệu (3 tín chỉ)
 - Tính điểm tổng kết.
 - In kết quả điểm chữ (A,B,C,D,F) của sinh viên.
 - Tính điểm tính lũy cho sinh viên

+ Code:

#include <iostream>
#include <conio.h>

using namespace std;

int main() {
    float dTRR,dLT,dCSDL;
    // nhap nhap diem
    cout<<"\n Nhap diem: ";
    cout<<"\n Diem toan roi rac: ";
    cin>>dTRR;
    cout<<"\n Diem lap trinh: ";
    cin>>dLT;
    cout<<"\n Diem co so du lieu: ";
    cin>>dCSDL;
    // Tinh diem
    float dTK;
    dTK=(dTRR*3+dLT*4+dCSDL*3)/10;
    // in diem tong ket
    cout<<"\n Diem tong ket: "<<dTK;
    // Tim diem chu
    char dChu;
    if(dTK<4)
    dChu='F';
    else if (dTK<5.5)
      dChu='D';
      else
       if (dTK<7.0)
      dChu='C';
      else
        if (dChu<8.5)
      dChu='B';
      else dChu='A';
     cout<<"\n Diem chu: "<<dChu;
     
    // Tinh điểm tích lũy
    int dTichLuy;
    switch (dChu)
    {
    case 'A':
    dTichLuy=4;
    break;
    case 'B':
    dTichLuy=3;
    break;
    case 'C':
    dTichLuy=2;
    break;
    case 'D':
    dTichLuy=1;
    break;
    default:
    dTichLuy=0;    
    }
    cout<<"\n Diem tich luy : "<<dTichLuy;
   return 0;
}

-------------
*** CHÚ Ý:
 - Cấu trúc switch hoàn toàn có thể chuyển đổi thành if.
 - Cấu trúc if kết hợp cùng break có thể chuyển đổi thành cấu trúc while => mọi cấu trúc có thể chuyển sang cấu trúc while.

** Đề nghị bạn đọc chuyển đổi các vị trên chỉ sử dụng while.

------------------------
Xem bài khác:

[Tự học lập trình C/C++] Bài 9: Dữ liệu kiểu mảng (array)

---------------------------------
* TÓM TẮT LÝ THUYẾT
---------------------------------

 1. Khái niệm mảng 
  Mảng là tập các biến có cùng kiểu, cùng tên, khác nhau ở chỉ số (vị trí). 
 
 2. Khai báo mảng
   - Mảng 1 chiều 
  <kiểu dữ liệu> <tên mảng> [Số phần tử tối đa trong mảng]; 
 
  Ví dụ: 
  int a[100]; // mảng a chứa 100 số nguyên 
  float b[10]; // mảng b chứa 10 số thực 
  char c[]="Chao ban!"; // mảng c chứa các ký tự 
  int m[]={2,4,6,8}; // mảng m chứa 4 số chắn. 
 
  - Mảng nhiều chiều (thường dùng mảng 2 chiều) 
  <kiểu dữ liệu> <tên mảng> [dong][cot]; 
 
  Trong đó: 
    dong: Số phần tử tối đa trong mảng dòng 
    cot: Số phần tử tối đa trong mảng cot.
 
  Ví dụ: 
   int m[5][5]; // khai báo mảng 2 chiều kích thước 5x5.
   
 3. Sử dụng mảng 
  - Mỗi phần tử của mảng (<tên mảng>[vị trí]) được coi như một biên thông thường. 
  - Thường sử dụng cấu trúc lặp để xử lý mảng.


---------------------------------
** VÍ DỤ
---------------------------------

Ví dụ 1: 

+ Yêu cầu: Nhập vào dãy số nguyên có n số (2<n<100), in ra màn hình dãy số vừa nhập.

+ Code:


#include <iostream>
#include <conio.h>

using namespace std;

int main() {
    // khai bao mang a co kich thuoc 100
int a[100];
// khai bao n (so phan tu thuc te cua mang)
int n;
    // nhap so phan tu cua mang
    do{
    cout<<"\n Nhap so phan tu cua mang: ";
    cin>>n;
     if(n<=2||n>=100)
    cout<<"\n Nhap lai n !";    
    }while (n<=2||n>=100);
    // Nhap mang
    for(int i=0;i<n;i++)
    {
    cout<<"\n a["<<i<<"]= "; cin>>a[i];
    }
   
    // In mang
    cout<<"\n In mang : ";
for(int i=0;i<n;i++)
    {
    cout<<a[i]<<"; ";
    }
   return 0;
}

-------------------

Ví dụ 2: 

+ Yêu cầu: Nhập vào dãy số nguyên có n số (2<n<100), in ra màn hình các số chẵn trong mảng

+ Code:

#include <iostream>
#include <conio.h>

using namespace std;

int main() {
    // khai bao mang a co kich thuoc 100
int a[100];
// khai bao n (so phan tu thuc te cua mang)
int n;
    // nhap so phan tu cua mang
    do{
    cout<<"\n Nhap so phan tu cua mang: ";
    cin>>n;
    if(n<=2||n>=100)
    cout<<"\n Nhap lai n !";
    }while (n<=2||n>=100);
    // Nhap mang
    for(int i=0;i<n;i++)
    {
    cout<<"\n a["<<i<<"]= "; cin>>a[i];
    }
 
    // In mang
    cout<<"\n In cac so chan trong mang : ";
for(int i=0;i<n;i++)
    {
    if(a[i]%2==0)
    cout<<a[i]<<"; ";
    }
   return 0;
}

--------------

Ví dụ 3: 

+ Yêu cầu: Viết chương trình thực hiện

+ Code:
 - Nhập vào một dãy số nguyên
 - Sắp xếp dãy số tăng dần

 /* Chương trình này sử dụng hàm (phần hàm sẽ được trình bày ở Bài 11) */

#include <iostream>
#include <conio.h>
#define max 100

using namespace std;

//nhap day
void NhapDay(int a[],int n) {
  for(int i=0; i<n; i++) {
    cout<<"\n a["<<i<<"] =";
    cin>>a[i];
  }
}

//xuat day
void XuatDay(int a[],int n) {
  cout<<"\n IN DAY: ";
  for(int i=0; i<n; i++)
    cout<<a[i]<<"\t";
}

//hoan vi 2 phan tu
void Swap(int &a,int &b) {
   int t = a;
   a = b;
   b = t;
}

//thuat toan Selection Sort
void SelectionSort(int a[],int n) {
   int min; // chi so phan tu nho nhat trong day hien hanh
   for(int i=0; i<n-1; i++) {
      min = i;
      for(int j=i+1; j<n; j++)
         if(a[min]>a[j])
            min = j; //ghi nhan vi tri phan tu nho nhat
      if(min!= i)
           Swap(a[i],a[min]); // doi chu 2 phan tu
   }
}

//chuong trinh chinh
int main() {
  int a[max],n;
  cout<<"Nhap so phan tu:";
  cin>>n;
  NhapDay(a,n);
  cout<<"\n Day vua nhap la:";
  XuatDay(a,n);
  cout<<endl;
  SelectionSort (a,n);
  cout<<"\n Day vua sap xep la:";
  XuatDay(a,n);
  getch();
  return 0;
}

--------------

Ví dụ 4: 

+ Yêu cầu: Viết chương trình thực hiện
- Nhập dãy số nguyên có n phần tử từ bàn phím (1<= n <=100)
- In dãy vừa nhập
- Loại bỏ khỏi dãy các phần tử trùng nhau, in kết quả.

+ Code:

#include<iostream>
#include<conio.h>
#include<stdio.h>

using namespace std;

int main(){
int a[100],n;
// Nhap mang
cout<<"\n + NHAP MANG : ";
cout<<"\n - Nhap so phan tu: ";
do{
cout<<"\n n= "; cin>>n;
if(n<1||n>100)
cout<<"\n Nhap lai n!";
} while (n<1||n>100);
// Nhap mang
cout<<"\n - Nhap mang : ";
for (int i=0;i<n;i++)
{
cout<<"\n a["<<i<<"]= ";
cin>>a[i];
}
// In day
cout<<"\n + IN DAY \n";
for(int i=0;i<n;i++)
cout<<a[i]<<"; ";
// Loai bo phan tu trung nhau
int b[100],test,k=0;
b[k]=a[0];
for(int i=1;i<n;i++)
{
test =0;
for(int j=i;j>=0;j--)
if(a[i]==b[j]) test=1;
if(test==0)
b[k++]=a[i];
}
cout<<"\n => DAY DA LOAI BO: ";
cout<<"\n + IN DAY \n";
for(int i=0;i<n;i++)
cout<<a[i]<<"; ";
return 0;
}

------------------

Ví dụ 5 (mảng 2 chiều): 

+ Yêu cầu: Viết các hàm thực hiện:
 - Nhập vào từ bàn phím ma trân vuông kích thước n (2<= n <=6)
 - In ma trận vừa nhập
 - Tính tổng từng dòng của ma trận
 - Tìm và in ra cột chứa giá trị lớn nhất
 - Đếm số nguyên tố trong ma trận

+ Code:

 /* Chương trình này sử dụng hàm (phần hàm sẽ được trình bày ở mục 11) */


#include<iostream>
#include<conio.h>

using namespace std;

int m[6][6], n;
// nhap ma tran
void NhapMT(){
  // nhap kich thuoc
  cout<<"\n Nhap kich thuoc cua ma tran:" ;
  do{
 cout<<"\n n= "; cin>>n;
 if(n<2||n>6)
  cout<<"\n Nhap lai n!";
  }while(n<2||n>6);
  // nhap ma tran
  cout<<"\n Nhap ma tran:";
  for(int i=0;i<n;i++)
  for(int j=0;j<n;j++)
   {
  cout<<"\n m["<<i<<"]["<<j<<"]= "; cin>>m[i][j];
   }
}

// In ma tran
void InMT(){
 cout<<"\n In ma tran vua nhap: \n";
 for(int i=0;i<n;i++)
 {
  for(int j=0;j<n;j++)
   cout<<m[i][j]<<"\t";
  cout<<"\n";
 }
}

// Tinh tong tung dong
void TongDong(){
 int dong[6];
  for(int i=0;i<n;i++){
  dong[i]=0;
  for(int j=0;j<n;j++)
   dong[i]+=m[i][j];
  }
  cout<<"\n Tong dong cua ma tran: ";
  for(int i=0;i<n;i++)
 cout<<"\n Dong "<<i<<" : "<<dong[i];
}

// Tim cot chua gia tri lon nhat
void TimCotChuaMax(){
 // tim max
 int max=m[0][0], i,j;
 for(i=0;i<n;i++)
  for(j=0;j<n;j++)
 if(max<m[i][j]) max=m[i][j];
 // in cot chua max
 cout<<"\n Nhung cot chua gia tri lon nhat: ";
 for(i=0;i<n;i++)
  for(j=0;j<n;j++)
 if(max==m[i][j]) cout<<j<<"; ";
}

 // Ham kiem tra so nguyen to
 int TestNT(int a){
  for (int i=2;i<a;i++)
 if(a%i==0) return 0;
 return 1;
 }

 // Dem so nguyen to trong ma tran
 void DemSNT(){
  int dem=0;
  for(int i=0;i<n;i++)
 for(int j=0;j<n;j++)
  if(TestNT(m[i][j])==1) dem++;
 cout<<"\n So lan xuat hien cua so nguyen to trong ma tran: "<<dem;
 }

// Ham chinh
int main(){
 NhapMT();
 InMT();
 TongDong();
 TimCotChuaMax();
 DemSNT();
return 0;
}

-------------

Ví dụ 6 (mảng 2 chiều): 

+ Yêu cầu: Viết chương trinh thực hiên
 - Nhập các ma trận
 - Công ma trận
 - Nhân ma trân
 - In kết quả

+ Code:

/* Chương trình này sử dụng hàm (phần hàm sẽ được trình bày ở Bài 11) */

#include "conio.h"
#include "iostream"
#define max 100

using namespace std;

/*Nhap ma tran he so*/

void NhapMaTran(float A[max][max], int m, int n, char ch) {
for(int i = 0; i<m; i++)
for(int j = 0; j<n; j++) {
cout<<ch<<"["<<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*/

int main() {
int m,n,p;
float A[max][max],B[max][max],C[max][max],D[max][max];
cout<<"Nhap m = ";
cin>>m;
cout<<"Nhap n = ";
cin>>n;
cout<<"Nhap p = ";
cin>>p;
cout<<"Nhap ma tran A cap "<<m<<"x"<<n<<endl;
NhapMaTran(A,m,n,'A');
cout<<"Nhap ma tran B cap "<<m<<"x"<<n<<endl;
NhapMaTran(B,m,n,'B');
cout<<"Nhap ma tran C cap "<<n<<"x"<<p<<endl;
NhapMaTran(C,n,p,'C');
cout<<"Ma tran A";
XuatMaTran(A,m,n);
getch();
cout<<"\n\nMa tran B";
XuatMaTran(B,m,n);
getch();
cout<<"\n\nMa tran C";
XuatMaTran(C,n,p);
getch();
cout<<"\n\nMa tran D = A+B";
CongMaTran(A,B,D,m,n);
XuatMaTran(D,m,n);
getch();
cout<<"\n\nMa tran D = A.C";
NhanMaTran(A,C,D,m,n,p);
XuatMaTran(D,n,p);
getch();
return 0;
}

------------------------
Xem bài khác: