Tải bản đầy đủ (.pdf) (126 trang)

Bài giảng Nhập môn tin học: Các cấu trúc điều khiển - TS. Đào Nam Anh

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (778.01 KB, 126 trang )

NHẬP MÔN TIN HỌC
CÁC CẤU TRÚC ĐIỀU KHIỂN

TS Đào Nam Anh


Tài liệu
Slides do TS.Đào Nam Anh thực hiện dựa trên
tài liệu [1] và các mã nguồn [2]:
1. TS.Nguyễn Thị Thu Hà,
TS.Nguyễn Hữu Quỳnh,
TS.Nguyễn Thị Thanh Tân,
Giáo trình Nhập môn tin học,
Khoa CNTT, Đại học Điện lực, 2013
2. Programiz.com
CNTT

Nhập môn tin học

2


Nội dung
CÁC CẤU TRÚC ĐIỀU KHIỂN
U
C
A
N
NG
P
C NH


Y

CNTT

Nhập môn tin học

3


CÁC CẤU TRÚC ĐIỀU KHIỂN

GIỚI THIỆU
 Cấu trúc lựa chọn
 Câu lệnh if
 Câu lệnh if – else
 Câu lệnh với nhiều lệnh if
 Câu lệnh if lồng nhau
 Câu lệnh switch.

 Vòng lặp
 Vòng lặp „for‟ trong C
 Toán tử „phẩy‟
 Vòng lặp lồng nhau
 Vòng lặp „while‟ và vòng lặp „do-while‟

 Lệnh nhẩy
 Các lệnh „break‟, „continue‟ và „goto‟
 Hàm „exit()‟.

4



CÁC CẤU TRÚC ĐIỀU KHIỂN

1.

U

C

A

N

 Các cấu trúc lựa chọn cho phép chúng ta thay đổi luồng
chương trình. Dựa trên một điều kiện nào đó, một câu lệnh hay
một chuỗi các câu lệnh có thể được thực hiện hoặc không.
 Hầu hết các ngôn ngữ lập trình đều sử dụng lệnh if để đưa ra
điều kiện. Nguyên tắc thực hiện như sau nếu điều kiện đưa ra
là đúng (true), chương trình sẽ thực hiện một công việc nào đó,
nếu điều kiện đưa ra là sai (false), chương trình sẽ thực hiện
một công việc khác.

CNTT

Nhập môn tin học

5



CÁC CẤU TRÚC ĐIỀU KHIỂN

1.

U

C

A

N

Ví dụ :
Để xác định một số là số
n hay số lẻ, ta thực hiện như sau:
1. Nhập vào một số.
2. Chia số đó cho 2 để xác định số dư.
3. Nếu số dư của phép chia là 0, đó là số “Chẵn”
HOẶC nếu số dư của phép chia khác 0, đó là số “Lẻ”.
Bước 2 trong giải thuật trên kiểm tra phần dư của số đó khi chia
cho 2 có bằng 0 không? Nếu đúng, ta thực hiện việc hiển thị
thông báo đó là số chẵn. Nếu số dư đó khác 0, ta thực hiện việc
hiển thị thông báo đó là số lẻ.
CNTT

Nhập môn tin học

6



CÁC CẤU TRÚC ĐIỀU KHIỂN

1.

U

C

A

N

Trong C một điều kiện được coi là đúng (true) khi nó có giá trị
khác 0, là sai (false) khi nó có giá trị bằng 0.
C cung cấp hai dạng câu lệnh lựa chọn:
 Câu lệnh if
 Câu lệnh switch
Sau đây chúng ta hãy tìm hiểu hai câu lệnh lựa chọn này.

CNTT

Nhập môn tin học

7


CÁC CẤU TRÚC ĐIỀU KHIỂN

1.


U

C

A

Câu lệnh if
 Câu lệnh if cho phép ta đưa
ra các quyết định dựa trên
việc kiểm tra một điều kiện
nào đó là đúng (true) hay sai
Điều kiện
(false).
 Sơ đồ quy trình thực hiện
của câu lệnh if. Khi xét điều
kiện, nếu điều kiện trong Nếu điều kiện sai
trường hợp đúng công việc
sẽ được thực hiện, còn nếu
điều kiện sai, chương trình
sẽ không thực hiện gì cả.

N

Nếu điều kiện đúng

Công việc

8



CÁC CẤU TRÚC ĐIỀU KHIỂN

1.

U

C

A

N

 Dạng tổng quát của câu lệnh if:
if (biểu thức)
Các câu lệnh;
 Biểu thức phải luôn được đặt trong cặp dấu ngoặc (). Mệnh đề
theo sau từ khoá if là một điều kiện (hoặc một biểu thức điều
kiện) cần được kiểm tra. Tiếp đến là một lệnh hay một tập các
lệnh sẽ được thực thi khi điều kiện (hoặc biểu thức điều kiện)
có kết quả true.

CNTT

Nhập môn tin học

9


CÁC CẤU TRÚC ĐIỀU KHIỂN


1.

U

C

A

N

Ví dụ:
#include <stdio.h>
void main()
{
int a = 10, b = 2, max;
if (a > b){
max = a ;
printf(“The max value is: %d”, max) ;
}
}

CNTT

Nhập môn tin học

10


CÁC CẤU TRÚC ĐIỀU KHIỂN


1.

U

C

A

N

Ví dụ:
#include <stdio.h>
void main()
{
int a = 10, b = 2, max;
if (a > b){
max = a ;
printf(“The max value is: %d”, max) ;
}
}

CNTT

Nhập môn tin học

 Với a được gán giá trị
10, b được gán giá trị
2, biểu thức điều kiện
(a>b) có giá trị đúng.


11


CÁC CẤU TRÚC ĐIỀU KHIỂN

1.

U

C

A

N

Ví dụ:
#include <stdio.h>
void main()
{
int a = 10, b = 2, max;
if (a > b){
max = a ;
printf(“The max value is: %d”, max) ;
}
}

 Với a được gán giá trị
10, b được gán giá trị
2, biểu thức điều kiện
(a>b) có giá trị đúng.

 Do đó khối lệnh gắn
với biểu thức if được
thực thi và kết quả của
chương trình như sau:
The max value is: 10

CNTT

Nhập môn tin học

12


CÁC CẤU TRÚC ĐIỀU KHIỂN

1.

U

C

A

N

Ví dụ:
#include <stdio.h>

void main()
{

int a = 10, b = 2, max;
if (a > b){
max = a ;
printf(“The max value is: %d”, max) ;
}
}

CNTT

Nhập môn tin học

Khối lệnh sau lệnh if được
đặt trong cặp ngoặc nhọn
{}. Khi có nhiều lệnh cần
được thực hiện, các câu
lệnh đó được coi như một
khối lệnh (block) và phải
được đặt trong cặp dấu {}.

13


CÁC CẤU TRÚC ĐIỀU KHIỂN

1.

U

C


A

N

Ví dụ:
#include <stdio.h>
void main()
{
int a = 10, b = 2, max;
if (a > b)
max = a ;
}

CNTT

Nhập môn tin học

 Khối lệnh sau lệnh if được
đặt trong cặp ngoặc nhọn
{}. Khi có nhiều lệnh cần
được thực hiện, các câu
lệnh đó được coi như một
khối lệnh (block) và phải
được đặt trong cặp dấu {}.
 Nếu trong ví dụ trên ta
không đưa vào dấu ngoặc
nhọn ở câu lệnh if, chỉ có
câu lệnh đầu tiên (max = a)
được thực hiện khi điều
kiện trong câu lệnh if là

đúng.
14


CÁC CẤU TRÚC ĐIỀU KHIỂN

1.

U

C

A

N

Ví dụ:
#include <stdio.h>
void main()
{
int a = 10, b = 2, max;
if (a > b && (a>3 || b<5))
max = a ;
}

CNTT

 Nếu có nhiều biểu thức điều
kiện cần kiểm tra, tùy vào
trường hợp ta kết hợp các biểu

thức dưới dạng phép (AND)
ký hiệu &&, phép (OR) ký
hiệu ||.

Nhập môn tin học

15


CÁC CẤU TRÚC ĐIỀU KHIỂN

1.

U

C

A

N

Ví dụ: kiểm tra một năm có phải
là năm nhuận hay không.
Năm nhuận là năm chia hết cho 4
hoặc 400 nhưng không chia hết
cho 100.

CNTT

Nhập môn tin học


16


CÁC CẤU TRÚC ĐIỀU KHIỂN

1.

U

#include <stdio.h>
void main()
{
int y;
printf(“\nPlease enter a year:”);
scanf(“%d”, &y);
if (y% 4 == 0 && y % 100 != 0
|| y % 400 == 0)
printf(“\n%d is a leap year!”, y);
getch();
}
CNTT

C

A

N

Ví dụ: kiểm tra một năm có phải

là năm nhuận hay không.
Năm nhuận là năm chia hết cho 4
hoặc 400 nhưng không chia hết
cho 100.
Chúng ta sử dụng lệnh if để kiểm
tra điều kiện.

Nhập môn tin học

17


CÁC CẤU TRÚC ĐIỀU KHIỂN

1.

U

#include <stdio.h>
void main()
{
int y;
printf(“\nPlease enter a year:”);
scanf(“%d”, &y);
if (y% 4 == 0 && y % 100 != 0
|| y % 400 == 0)
printf(“\n%d is a leap year!”, y);
getch();
}
CNTT


C

A

N

 Ví dụ: kiểm tra một năm có
phải là năm nhuận hay không.
 Năm nhuận là năm chia hết
cho 4 hoặc 400 nhưng không
chia hết cho 100.
 Chúng ta sử dụng lệnh if để
kiểm tra điều kiện.
 Chương trình trên cho ra kết
quả như sau:
Please enter a year: 2012
2012 is a leap year!
Nhập môn tin học

18


CÁC CẤU TRÚC ĐIỀU KHIỂN

1.

U

#include <stdio.h>

void main()
{
int y;
printf(“\nPlease enter a year:”);
scanf(“%d”, &y);
if (y% 4 == 0 && y % 100 != 0
|| y % 400 == 0)
printf(“\n%d is a leap year!”, y);
getch();
}
CNTT

C

A

N

Điều kiện
year % 4 == 0 &&
year % 100 != 0 ||
year % 400 == 0
trả về giá trị 1 nếu năm đó là
năm nhuận.
Khi đó, chương trình hiển thị
thông báo gồm biến year và dòng
chữ “is a leap year”.
Nếu điều kiện trên không thỏa
mãn, chương trình không hiển thị
thông báo nào.

Nhập môn tin học

19


CÁC CẤU TRÚC ĐIỀU KHIỂN

1.

U

Câu lệnh if...then...else
 Ở trên ta đã biết dạng
đơn giản nhất của câu
lệnh if, cho phép ta lựa
chọn để thực hiện hay
không một câu lệnh hoặc
một chuỗi các lệnh.
 C cũng cho phép ta lựa
chọn trong hai khối lệnh
để thực hiện bằng cách
dùng cấu trúc if – else
như sau:

C

A

Điều kiện


N

Nếu điều kiện sai

Công việc 2

Nếu điều kiện
đúng

Công việc 1

20


CÁC CẤU TRÚC ĐIỀU KHIỂN

1.

U

Cú pháp câu lệnh rẽ nhánh
dạng này được mô tả như
sau:
if (biểu thức)
câu_lệnh_1;
else
câu_lệnh_2;

C


A

Điều kiện

N

Nếu điều kiện sai

Công việc 2

Nếu điều kiện
đúng

Công việc 1

CNTT

21


CÁC CẤU TRÚC ĐIỀU KHIỂN

1.

U

Cú pháp câu lệnh rẽ nhánh
dạng này được mô tả như
sau:
if (biểu thức)

câu_lệnh_1;
else
câu_lệnh_2;

CNTT

C

A

N

 Nếu biểu thức có giá trị đúng
(khác 0) thì câu lệnh 1 được
thực hiện.
 Nếu sai (bằng 0), câu lệnh 2
được thực hiện.
 Khi có nhiều lệnh cần được
thực hiện, các câu lệnh đó
được coi như một khối lệnh
(block) và phải được đặt
trong cặp dấu {}.
Nhập môn tin học

22


CÁC CẤU TRÚC ĐIỀU KHIỂN

1.


U

C

A

N

Ví dụ:
 Trở lại đoạn mã trong ví ở
trên, dễ dàng nhận thấy
biến max chỉ được gán giá
trị khi a > b.
 Trong trường hợp ngược
lại, sẽ không có thông báo
nào được sinh ra hay nói
một cách khác là đoạn mã
này chưa thực hiện được
yêu cầu tìm số lớn nhất
trong 2 số a và b bất kỳ.

#include <stdio.h>
void main()
{
int a = 10, b = 2, max;
if (a > b)
max = a ;
}


CNTT

Nhập môn tin học

23


CÁC CẤU TRÚC ĐIỀU KHIỂN

1.

U

C

A

N

Ví dụ:
#include <stdio.h>
void main()
{
int a = 10, b = 2, max;
printf(“Input a = ” ) ;
scanf(“%d”, &a);
printf(“Input b = ” ) ;
scanf(“%d”, &b ) ;
if (a > b)
max = a;

else
max = b;
printf(“The max value is: %d”, max);
}

 Trở lại đoạn mã trong ví ở
trên, dễ dàng nhận thấy
biến max chỉ được gán giá
trị khi a > b.
 Trong trường hợp ngược
lại, sẽ không có thông báo
nào được sinh ra hay nói
một cách khác là đoạn mã
này chưa thực hiện được
yêu cầu tìm số lớn nhất
trong 2 số a và b bất kỳ.
 Điều đó được khắc phục
rất đơn giản bằng cấu trúc
if-else
24


CÁC CẤU TRÚC ĐIỀU KHIỂN

1.

U

C


#include <stdio.h>
void main()
{
int y;
printf(“\nPlease enter a year:”);
scanf(“%d”, &y);
if (y% 4 == 0 && y % 100 != 0
|| y % 400 == 0)
printf(“\n%d is a leap year!”, y);
getch();
}
CNTT

A

N

 Đoạn mã này chỉ hiển thị
thông báo “is a leap year” ra
màn hình nếu là năm nhuận.
 Trong trường hợp ngược lại,
nếu năm nhập vào không phải
là năm nhuận, sẽ không có bất
kỳ thông báo nào được in ra.
 Điều này có thể gây ra sự hiểu
lầm và đôi chút khó chịu cho
người sử dụng.

Nhập môn tin học


25


×