Menu-ngang

☰ MENU

13/02/2022

Chương 3: Các lệnh có cấu trúc

3.1. Cấu trúc rẽ nhánh

3.1.1. Lệnh if – else (Dạng đầy đủ)

Cú pháp:

if (<Biểu thức điều kiện>)

{         

            <Khối lệnh 1>

}

else

{

            <Khối lệnh 2>

}

 

Giải thích:

+ Khối lệnh 1, Khối lệnh 2 được thể hiện là một câu lệnh đơn, một khối lệnh hay một câu lệnh phức.

+ Đầu tiên Biểu thức điều kiện được kiểm tra trước.

+ Nếu điều kiện đúng thì thực hiện Khối lệnh 1.

+ Nếu điều kiện sai thì thực hiện Khối lệnh 2.

+ Các lệnh phía sau Khối lệnh 2 không phụ thuộc vào điều kiện.

 

Ví dụ 3.1: Thực hiện chương trình nhập vào một số thực a. In ra màn hình kết quả nghịch đảo của a khi a ≠0, khi a =0 in ra thông báo “Khong the tim duoc nghich dao cua a”

 

#include <stdio.h>

#include <conio.h>

int main()

{

float a;

printf("Nhap a = ");

scanf("%f",&a);

if (a !=0 )

     printf("Nghich dao cua %f la      %f",a,1/a);

else

     printf(“Khong the tim duoc nghich     dao”);

getch();

}

 

3.1.2. Lệnh if (Dạng không đầy đủ)

Cú pháp:

if (<Biểu thức điều kiện>)

{

            <Khối lệnh>

}

 

Giải thích:

+ <Khối lệnh> có thể là một câu lệnh đơn, một khối lệnh hay một câu lệnh phức.

+ Kiểm tra Biểu thức điều kiện trước.

+ Nếu điều kiện đúng (True) thì thực hiện Khối lệnh  theo sau biểu thức điều kiện.

+ Nếu điều kiện sai (False) thì bỏ qua Khối lệnh

 

Ví dụ 3.2: Thực hiện chương trình nhập vào một số thực a. In ra màn hình kết quả nghịch đảo của a khi a ≠ 0.

 

#include <stdio.h>

#include <conio.h>

int main ()

{

     float a;

     printf("Nhap a = ");

     scanf("%f",&a);

     if (a !=0 )

     printf("Nghich dao cua %f la      %f",a,1/a);

     getch();

     return 0;

}

v    Trình tự thực hiện:

B1: Trình bày nội dung cấu trúc lệnh if-else (dạng đầy đủ)

B2: Cho ví dụ minh họa.

B3: Trình bày nội dung cấu trúc lệnh if (dạng không đầy đủ)

B4: Cho ví dụ minh họa

 

v    Thc hành:

Bài 1. Viết chương trình nhập vào số nguyên, kiểm tra số đã nhập là số âm hay số dương

Bài 2. Viết chương trình nhập vào 2 số a, b. Tìm số lớn nhất giữa 2 số.

Bài 3. Viết chương trình nhập vào 1 số nguyên, kiểm tra số vừa nhập là số chẵn hay lẽ.

Bài 4. Viết chương trình nhập vào 2 số a,b. Kiểm tra a có là bội số của a không.

Bài 5. Viết chương trình hỗ trợ cách giải phương trình bậc 1 (ax + b = 0).

 

v    Bài tập:

Viết chương trình tìm số lớn nhất, số nhỏ nhất của 3 số a, b, c nhật từ bàn phím. 

=================================

3.2. Lệnh switch case (Cấu trúc lựa chọn)

Câu lệnh rẽ nhánh switch-case cho phép lựa chọn một trong các lựa chọn đã đưa ra.

Cú pháp:

switch (<biểu thức>)

{

            case <hằng 1> : lệnh 1 ;

            break;

            case <hằng 2> : lệnh 2 ;

            break;

            . . . . . . . . . . . . .

            case <hằng n> : lệnh n ;

            break ;

            default : lệnh n+1;

}

 

Giải thích:

- Tính giá trị của biểu thức trước.

- Nếu giá trị của biểu thức bằng hằng 1 thì thực hiện lệnh 1 rồi thoát.

- Nếu giá trị của biểu thức khác hằng 1 thì so sánh với hằng 2, nếu bằng hằng 2 thì thực hiện lệnh 2 rồi thoát.

- Cứ như thế, so sánh tới hằng n.

- Nếu tất cả các phép so sánh trên đều sai thì thực hiện lệnh n+1 mặc định của trường hợp default.

 

Ví dụ 3.3: Nhập vào giá trị tháng của năm, xuất số ngày trong tháng.

 

#include <stdio.h>

#include<conio.h>

int main ()

{

int thang;

printf("\n Nhap vao thang trong nam ");

scanf("%d",&thang);

switch(thang)

{

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:

printf("\n Thang %d co 31 ngay ",thang);

break;

case 4:

case 6:

case 9:

case 11:

printf("\n Thang %d co 30 ngay ",thang);

break;

case 2:

printf ("\n Thang 2 co 28 hoac 29 ngay");

break;

default :

printf("\n Khong co thang %d", thang);

break;

}

getch();

}   

 

Ví dụ 3.4: Nhập vào 1 kí tự, cho biết kí tự đó là nguyên âm hay phụ âm

 

#include <stdio.h>

#include<conio.h>

int main ()

{

char ch;

printf("\n Nhap vao 1 ki tu: ");

scanf("%c",&ch);

switch(ch)

{

case 'a' :

case 'o':

case 'e' :

case 'u' :

case 'y' :

case 'i' : printf("Day la nguyen am") ;

break ;

default : printf("Day la phu am");

}

getch();

}

v    Trình tự thực hiện:

B1: Giới thiệu lệnh switch case;

B2: Nêu cú pháp;

B3:  Giải thích các thành phần trong câu lệnh;

B4: Đưa ra một số ví dụ.

 

v    Thc hành:

Bài 1. Viết code cho Ví dụ 3.3

Bài 2. Viết code cho Ví dụ 3.4

v    Bài tập:

Ôn lại code của 2 bài thực hành trên.

====================================

3.3. Cấu trúc lặp

Lệnh lặp là một câu lệnh, một đoạn lệnh trong chương trình thực hiện lặp đi lặp lại cho đến khi một điều kiện xác định được thỏa mãn. Có thể nói, một lệnh lặp cho phép lặp lại các câu lệnh nhiều lần.

 

3.3.1. Cấu trúc lặp for

Lệnh for thực thi việc lặp lại một câu lệnh, một khối lệnh nhiều lần với số lần lặp xác định trước.

 

Cú pháp :

for ( [ <biểu thức 1>]; [ <biểu thức 2>] ; [ <biểu thức 3>])

{

            <Khối lệnh>;

}

 

Quá trình thực hiện câu lệnh for :

- Bước 1: Xác định giá trị của biểu thức 1

- Bước 2: Xác định giá trị của biểu thức 2

- Bước 3: Nếu biểu thức 2 sai thì sẽ thoát vòng lặp for. Nếu biểu thức 2 đúng thì máy sẽ thực hiện Khối lệnh.

- Bước 4: Tính giá trị của biểu thức 3 và quay lại Bước 2

Chú ý:

- Biểu thức 1 là biểu thức gán trị khởi động cho biến lặp.

- Biểu thức 2 là biểu thức điều kiện. Nếu biểu thức 2 vắng mặt, điều kiện luôn đúng .

- Biểu thức 3 thông thường là biểu thức thay đổi điều kiện.

- Biểu thức 1, 3 có thể gồm nhiều biểu thức cách nhau bởi dấu phẩy.

- Biểu thức thứ 2 có thể bao gồm nhiều biểu thức, nhưng tính đúng sai của nó được xem là tính đúng sai của biểu thức cuối cùng.

Ví dụ 3.5: Viết chương trình xuất ra màn hình 10 lần câu “Xin chào!”

#include <stdio.h>

#include<conio.h>

int main()

{

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

    printf("\nXin chao!");

    getch() 0;

}

Ví dụ 3. 6: Viết chương trình tính số lần chạy của xe máy khi chạy xe quang vòng tròn, với số lần chạy n nhập từ bàn phím.

#include <stdio.h>

#include<conio.h>

int main()

{

    int n; //n la so vong chay

    printf("Nhap so vong can chay:");

    scanf("%d",&n);

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

    {

    printf("\nChay lan %d",i+1);

     }

    getch() 0;

}

Ví dụ 3.7: Viết chương trình nhập vào một số nguyên n. Tính tổng của các số nguyên từ 1 đến n.

 

#include <stdio.h>

#include<conio.h>

int main ()

{

int n,i,tong;

printf("\n Nhap vao so nguyen duong n:");

scanf("%d",&n);

tong=0;

for (i=1; i<=n; i++)

tong+=i;

printf("\n Tong tu 1 den %d =%d ",n,tong);

getch();

}

 

3.3.2. Cấu trúc lặp while

Lệnh while thực thi việc lặp lại một khối lệnh khi điều kiện kiểm tra là đúng.

Cú pháp :

while(<biểu thức điều kiện>)

{

            < Khối lệnh >

}

 

Quá trình thực hiện của vòng lặp while:

- Bước 1: Tính giá trị của biểu thức điều kiện.

- Bước 2: Nếu biểu thức điều kiện là sai (FALSE), thì máy sẽ thoát ra khỏi vòng lặp. Nếu biểu thức điều kiện là đúng (TRUE) thì máy sẽ thực hiện Khối

lệnh và quay lại bước 1.

Chú ý: Trong biểu thức điều kiện của vòng while có thể gồm nhiều biểu thức cách nhau bởi dấu phẩy “,” nhưng tính đúng sai của của nó là tính đúng sai của biểu thức sau cùng.

 

Ví dụ 3.8: In các số nguyên từ 1 đến n, trong đó n nhập từ phím

#include <stdio.h>

#include<conio.h>

int main ()

{

int i,n;

printf("\n Nhap n:"); scanf("%d", &n);

printf("\n Day so tu 1 den %d :",n);

i=1;

while (i<=n)

printf("%d ",i++);

getch();

}

 

3.3.3. Cấu trúc lặp do..while

Lệnh do...while thực thi việc lặp lại một khối lệnh nhiều lần. Nó thực hiện khối lệnh ít nhất một lần. Sau đó sẽ kiểm tra điều kiện nếu điều kiện là đúng thì tiếp tục thực thi khối lệnh cần lặp. Nếu điều kiện là sai thì kết thúc vòng lặp.

Cú pháp :

do {

            < câu lệnh>

} while(<biểu thức>)

 

Quy trình thực hiện:

- Bước 1: Câu lệnh được thực hiện trước tiên.

- Bước 2: Tính giá trị của biểu thức, nếu biểu thức là đúng thì quay lại bước, nếu giá trị biểu thức là sai thì ngừng vòng lập.

 

Ví dụ 3.9: Viết chương trình bắc buột nhập vào một số dương, nếu nhập số âm yêu cầu nhập lại.

 

#include <stdio.h>

#include <conio.h>

int main ()

{

int value;

do{

printf( "Nhap vao mot so duong");

scanf("%d",&value);

} while(value <=0);

getch();

}

v    Trình tự thực hiện:

B1: Nêu cấu trúc lặp;

B2: Cấu trúc lặp for – Ví dụ;

B3:  Cấu trúc lặp while – Ví dụ;

B4:  Cấu trúc lặp do-while – Ví dụ;

v    Thc hành:

Bài 1. Viết code cho Ví dụ 3.5

Bài 2. Viết code cho Ví dụ 3.6

Bài 3. Viết code cho Ví dụ 3.7

Bài 4. Viết code cho Ví dụ 3.8

Bài 5. Viết code cho Ví dụ 3.9

Bài 6. Viết chương trình in trên màn hình các số từ đến 100, các số ngăn cách nhau bởi 1 đoạn khoảng trắng.

Bài 7. Viết chương trình tính tổng: 1 + 2 + 3 + 4 + 5 +….+ 20

Bài 8. Viết chương trình tính tích:

T = 1*2*3*4*5*….*n, trong đó n nhập từ hím.

Bài 9. Viết chương trình tính tổng: S = 2 + 4 + 6 + 8 +….+ n, trong đó n nhập từ hím.

Bài 10. Viết chương trình nhập vào 1 kí tự, cho biết kí tự này là nguyên âm hay phụ âm

Bài 11. Nhập vào thứ tự của tháng, cho biết tháng đó có bao nhiêu ngày.

Bài 12. Viết chương trình nhập vào 2 số nguyên và lựa chọn phép toán (cộng, trừ, nhân, chia) để tính kết quả.

Bài 13. Viết chương trình tính tổng các số chẵn nhỏ hơn n, trong đó n nhập từ bàn phím

 

v    Bài tập:

Bài 1. Viết chương trình đếm số lượng số chẵn trong [n,m], trong đó n, m nhập từ phím.

Bài 2. Viết chương trình tính tổng các số tự nhiên nhỏ hơn n (sử dụng vòng lặp While)

 ==================================================

3.4. Các lệnh đặc biệt

3.4.1. Lệnh Break

Từ khóa break được dùng để kết thúc vòng lặp, hoặc cấu trúc switch.

3.4.2. Lệnh Continue

Từ khóa continue thường được sử dụng trong vòng lặp for để chuyển đến bước cuối cùng trong 1 lần lặp.

 

Ví dụ 3.10: Viết chương trình nhập vào các số nguyên dương và tính tổng chúng, khi nhập vào 0 thì dừng và in ra kết quả.

 

#include <stdio.h>

#include <conio.h>

int main()

{

int n;

int tong=0;

    

 for(;;)

 {

  printf("\nNhap vao 1 so nguyen duong: ");

  scanf("%d", &n);

  if(n<0)

     continue;

  if(n==0)

     break;

     tong += n;

 }

    printf("\n=>Tong la: %d", tong);

getch();

}

 

v    Trình tự thực hiện:

B1: Tìm hiểu lệnh Break;

B2: Tìm hiểu lệnh Continue;

B3:  Cho ví dụ.

v    Thc hành:

Viết code cho Ví dụ 3.10

v    Bài tập:

Xem lại code của các bài thực hành ở trên.

====================================