1. Trang chủ
  2. » Công Nghệ Thông Tin

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

126 3 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 126
Dung lượng 778,01 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bài giảng Nhập môn tin học: Các cấu trúc điều khiển do TS. Đào Nam Anh biên soạn đã giới thiệu cấu trúc lựa chọn, vòng lặp, lòng lặp, cấu trúc lặp, câu lệnh rẽ nhánh,... Mời các bạn cùng tham khảo nội dung chi tiết.

Trang 1

NHẬP MÔN TIN HỌC

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

TS Đào Nam Anh

Trang 2

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]:

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

Trang 3

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

Trang 5

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

5

Trang 6

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ẻ

6

Trang 8

1 U C A N

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

(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

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

Điều kiện

Công việc Nếu điều kiện đúng

Nếu điều kiện sai

Trang 9

có kết quả true

9

Trang 10

}

10

Trang 12

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

Trang 14

 Nếu trong ví dụ trên ta không đưa vào dấu ngoặc

Trang 15

15

 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 ||

Trang 16

1 U C A N

16

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

Trang 17

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

Trang 18

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!

Trang 19

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

Trang 20

1 U C A N

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

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

Công việc 1

Nếu điều kiện sai

Trang 21

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

Công việc 1

Nếu điều kiện sai

Trang 22

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

Trang 23

 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ỳ

Trang 24

 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

Trang 25

 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

Trang 26

 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

 Để khắc phục điều này, thay vì

sử dụng cấu trúc if đơn giản, ta

sử dụng cấu trúc if-else

Trang 28

 Chương trình sử dụng cấu trúc

if-else để kiểm tra xem một ký

tự có phải là ký tự hoa không, rồi thực hiện các thao tác

tương ứng

Trang 29

Biểu thức c >= ‘A’ && c <=

‘Z’ kiểm tra ký tự nhập vào có

 Nếu giá trị của biểu thức là

false, câu lệnh sau else được

chạy và chương trình hiển thị

tự đó ra màn hình mà không cần thực hiện bất cứ sự thay đổi nào

Trang 30

1 U C A N

Nhiều lựa chọn các câu lệnh if then else

Câu lệnh if cho phép ta lựa chọn thực hiện một hành động nào

đó hay không

Câu lệnh if – else cho phép ta lựa chọn thực hiện giữa hai hành

động

 C cho phép ta có thể đưa ra nhiều lựa chọn hơn Chúng ta mở

rộng cấu trúc if – else bằng cách thêm vào cấu trúc else – if để

thực hiện điều đó Nghĩa là mệnh đề else trong một câu lệnh if

– else lại chứa một câu lệnh if – else khác Do đó nhiều điều

kiện hơn được kiểm tra và tạo ra nhiều lựa chọn hơn

30

Trang 31

1 U C A N

Nhiều lựa chọn các câu lệnh if then else

Câu lệnh if cho phép ta lựa chọn thực hiện một hành động nào

đó hay không

Câu lệnh if – else cho phép ta lựa chọn thực hiện giữa hai hành

động

 C cho phép ta có thể đưa ra nhiều lựa chọn hơn Chúng ta mở

rộng cấu trúc if – else bằng cách thêm vào cấu trúc else – if để

thực hiện điều đó Nghĩa là mệnh đề else trong một câu lệnh if

– else lại chứa một câu lệnh if – else khác Do đó nhiều điều

kiện hơn được kiểm tra và tạo ra nhiều lựa chọn hơn

31

Trang 32

1 U C A N

Nhiều lựa chọn các câu lệnh if then else

 Cú pháp tổng quát trong trường hợp này như sau:

Trang 33

 Cách canh lề (lùi vào trong) như trên giúp ta nhìn chương trình

một cách dễ dàng khi có một hoặc hai lệnh if

Tuy nhiên khi có nhiều lệnh if hơn cách viết đó dễ gây ra

nhầm lẫn vì nhiều câu lệnh sẽ phải lùi vào quá sâu Vì vậy,

lệnh if-else-if thường được canh lề theo dạng hình bên phải: 33

else

câu_lệnh;

Trang 34

từ bàn phím

 Xuất ra các thông báo tương ứng với mỗi phép toán được nhập

Trang 35

Trong chương trình trên,

 Nếu tự nhập là dấu (+), chương trình sẽ in ra dòng thông báo

Trang 36

printf("\nChoice Subtraction");

result = a - b;

} else if (choice == '*'){

printf("\nChoice Multiplication");

result = a * b;

} else if (choice == '/'){

printf("\nChoice Division");

result = a / b;

} getch();

return 0;

}

36

 Muốn thực hiện nhiều hơn một

lệnh sau mỗi câu lệnh if hay

else, ta phải đặt các câu lệnh

đó vào trong cặp dấu ngoặc nhọn {}

 Các câu lệnh đó tạo thành một nhóm gọi là lệnh phức hay

một khối lệnh

Trang 37

Trong C, lệnh else luôn gắn với lệnh if không có else gần

nó nhất, và nằm trong cùng

một khối lệnh với nó

Trang 38

Nếu biểu_thức_2 là true thì

lệnh câu_lệnh_1 sẽ được thực

hiện

Nếu biểu thức_3 là true,

câu_lệnh_2 sẽ được thực hiện,

nếu không câu_lệnh_3 được

thực hiện

Nếu biểu thức_1 là false thì câu_lệnh_4 được thực hiện

Trang 39

Vì lệnh else trong cấu trúc

else-if là không bắt buộc, nên

có thể có một cấu trúc khác như dạng bên:

Trang 40

Vì lệnh else trong cấu trúc

else-if là không bắt buộc, nên

có thể có một cấu trúc khác như dạng bên

Trong đoạn mã trên, nếu điều

kiện-1 là true, chương trình sẽ

chuyển đến thực hiện lệnh if thứ hai và điều kiện-2 được

kiểm tra

Trang 41

Nếu điều kiện đó là true,

câu_lệnh_1 được thực hiện,

nếu không câu_lệnh_2 được

thực hiện, sau đó chương trình thực hiện những lệnh trong

câu lệnh kế tiếp

Nếu điều kiện_1 là false,

chương trình sẽ chuyển đến thực hiện những lệnh trong

câu lệnh kế tiếp

Trang 42

 Loại xuất sắc (Excellent): Điểm tổng kết 8.5

 Loại giỏi (Good): 8.0 Điểm tổng kết < 8.5

 Loại khá (Fair): 6.5 Điểm tổng kết < 8

 Loại trung bình (Normal): 5 Điểm tổng kết < 6.5

 Loại yếu (Bad): Điểm tổng kết <

5

Trang 45

1 U C A N

45

Ví dụ Các cấu trúc if lồng nhau

 Giả sử người dùng nhập từ bàn phím giá trị AvgMark = 6.2 thì biểu thức điều kiện (AvgMark >= 8.5) sẽ nhận

Trang 46

1 U C A N

46

Ví dụ Các cấu trúc if lồng nhau

 Giả sử người dùng nhập từ bàn phím giá trị AvgMark = 6.2 thì biểu thức điều kiện (AvgMark >= 8.5) sẽ nhận

giá trị false

 Do vậy biểu thức điều kiện

(AvgMark >= 8.0) gắn với else sẽ

được kiểm tra

Trang 47

1 U C A N

47

Ví dụ Các cấu trúc if lồng nhau

 Giả sử người dùng nhập từ bàn phím giá trị AvgMark = 6.2 thì biểu thức điều kiện (AvgMark >= 8.5) sẽ nhận

giá trị false

 Do vậy biểu thức điều kiện

(AvgMark >= 8.0) gắn với else sẽ

được kiểm tra

Do biểu thức này có giá trị false nên

biểu thức điều kiện (AvgMark >= 6.5) sẽ tiếp tục được kiểm tra, được

Trang 48

1 U C A N

48

Ví dụ Các cấu trúc if lồng nhau

 Giả sử người dùng nhập từ bàn phím giá trị AvgMark = 6.2 thì biểu thức điều kiện (AvgMark >= 8.5) sẽ nhận

giá trị false

 Do vậy biểu thức điều kiện

(AvgMark >= 8.0) gắn với else sẽ

được kiểm tra

Do biểu thức này có giá trị false nên

biểu thức điều kiện (AvgMark >= 6.5) sẽ tiếp tục được kiểm tra, được

giá trị false,

 Xét biểu thức điều kiện tiếp theo

(AvgMark >= 5), giá trị true nên

dòng thông báo “Normal” sẽ được in

ra và else cuối cùng được bỏ qua

Trang 49

1 U C A N

49

Ví dụ Các cấu trúc if lồng nhau

Chúng ta cũng có thể thay cấu trúc

if-else ở đoạn mã lệnh trên bằng cấu trúc if

Trang 50

1 U C A N

50

Ví dụ Các cấu trúc if lồng nhau

Chúng ta cũng có thể thay cấu trúc

if-else ở đoạn mã lệnh trên bằng cấu trúc if

lồng nhau

 Với giá trị AvgMark = 6.2 được nhập

từ bàn phím như trên, trước tiên điều kiện (AvgMark >= 5.0) sẽ được kiểm

tra, có giá trị true

Trang 51

1 U C A N

51

Ví dụ Các cấu trúc if lồng nhau

Chúng ta cũng có thể thay cấu trúc

if-else ở đoạn mã lệnh trên bằng cấu trúc if

lồng nhau

 Với giá trị AvgMark = 6.2 được nhập

từ bàn phím như trên, trước tiên điều kiện (AvgMark >= 5.0) sẽ được kiểm

tra, có giá trị true

 Điều kiện tiếp theo (AvgMark <

8.5)sẽ được kiểm tra, được giá trị

Trang 52

1 U C A N

52

Ví dụ Các cấu trúc if lồng nhau

Chúng ta cũng có thể thay cấu trúc

if-else ở đoạn mã lệnh trên bằng cấu trúc if

lồng nhau

 Với giá trị AvgMark = 6.2 được nhập

từ bàn phím như trên, trước tiên điều kiện (AvgMark >= 5.0) sẽ được kiểm

tra, có giá trị true

 Điều kiện tiếp theo (AvgMark < 8.5)

sẽ được kiểm tra, được giá trị true

Điều kiện (AvgMark < 8) được true

Trang 53

1 U C A N

53

Ví dụ Các cấu trúc if lồng nhau

Chúng ta cũng có thể thay cấu trúc

if-else ở đoạn mã lệnh trên bằng cấu trúc if

lồng nhau

 Với giá trị AvgMark = 6.2 được nhập

từ bàn phím như trên, trước tiên điều kiện (AvgMark >= 5.0) sẽ được kiểm

tra, có giá trị true

 Điều kiện tiếp theo (AvgMark < 8.5)

sẽ được kiểm tra, được giá trị true

Điều kiện (AvgMark < 8) được true

 Điều kiện (AvgMark >= 6.5) tiếp tục

được kiểm tra, được giá trị false

Câu lệnh gắn với else sẽ được thực

thi Như y, dòng thông báo

Trang 54

nào đó không được đưa vào trong

chuỗi cấu trúc if lồng nhau chương

trình trông không rõ ràng

Một lệnh else luôn được gắn với lệnh if gần nó nhất mà lệnh if này chưa được kết hợp với một lệnh else

Trang 55

1 U C A N

55

Các cấu trúc if lồng nhau

Lệnh else đi với lệnh if bên trong

Việc viết lùi vào trong dòng là một cách thể hiện mối quan hệ đó Tuy nhiên canh lề không có chức năng

gắn else với lệnh if Cặp dấu ngoặc

nhọn {} giúp chúng ta thực hiện chức năng đó một cách chính xác

Trang 56

 Chương trình sử dụng cấu trúc

if-else để kiểm tra xem một ký

tự có phải là ký tự hoa không, rồi thực hiện các thao tác

tương ứng

 Việc phân loại này có thể được biểu diễn bởi cấu trúc if-else như sau

Trang 57

else min = b;

else kết hợp với if

gần nhất

if (a > b) {

if ( b > c)

min = c;

} else

min = a;

else kết hợp với if đầu tiên, bởi vì cặp dấu ngoặc nhọn đã đặt lệnh if bên trong

Trang 58

 Ví dụ sau đây sẽ tiến hành tìm

số lớn nhất trong 3 số a,b,c

bằng câu lệnh if-else và if lồng

nhau

Trang 59

 Ví dụ sau đây sẽ tiến hành tìm

số lớn nhất trong 3 số a,b,c

bằng câu lệnh if-else và if lồng

nhau

Trang 60

1 U C A N

Toán tử ?

Toán tử điều kiện (?) được sử dụng khá hiệu quả khi biểu diễn

thay thế một câu lệnh if đơn giản theo ng sau:

Biểu thức 1 ? biểu thức 2: biểu thức 3;

Ví dụ câu lệnh sau sẽ xác định số lớn nhất trong 2 số a và b để gán cho z

Trang 61

trong ngoặc và so sánh giá trị

tính được của biểu thức với

các giá trị đứng sau case

Hay nói cách khác, công việc

sau mỗi case tương ứng với

Trang 63

 Biểu_thức theo sau từ khóa

switch phải được đặt trong dấu

ngoặc ( ), và toàn bộ phần thân

của lệnh switch phải được đặt

Trang 64

hằng ký tự

 Nó cũng có thể là các hằng biểu thức – những biểu thức không chứa bất kỳ một biến nào

 Tất cả các giá trị của case phải khác nhau

Trang 65

case theo thứ tự đã chỉ ra

 Nếu một giá trị trong một

case trùng với giá trị của biểu

Trang 66

Các câu lệnh gắn với default

sẽ được thực hiện nếu không

có case nào thỏa mãn

Lệnh default là tùy chọn Nếu không có lệnh default và

không có case nào thỏa mãn,

không có hành động nào được thực hiện

 Có thể thay đổi thứ tự của

case và default

Trang 67

printf("Enter a choice: " ) ; scanf("%c", &choice);

}

Trang 68

1 U C A N

68

{ char choice;

printf("Enter a choice: " ) ; scanf("%c", &choice);

Trang 69

 Nếu nó không phải ba loại ở

trên, chương trình hiển thị

thông báo “Character not a

lower cased alphabet”

Trang 70

1 U C A N

Nên sử dụng lệnh break trong

cả case cuối cùng hoặc

default mặc dù về mặt logic

là không cần thiết

 Nhưng điều đó rất có ích nếu

sau này chúng ta đưa thêm

case vào cuối

Trang 71

1 U C A N

Chương trình sau đây sẽ hiển

thị 5 dòng thông báo tương

ứng với 5 chức năng cho

phép người dùng lựa chọn

71

printf("1.Check whether an integer is a prime number\n"); printf("2.Calculate and return area of a rectangle\n");

printf("3.Find the sum of two integer numbers\n");

printf("4.Find the maximum value in an array\n");

}

Trang 72

2 NG P

 Một trong những điểm mạnh lớn nhất của máy tính là khả

năng thực hiện một chuỗi các lệnh lặp đi lặp lại Điều đó có được là do sử dụng các cấu trúc lặp trong ngôn ngữ lập trình

 Vòng lặp là một đoạn mã lệnh trong chương trình được thực hiện lặp đi lặp lại cho đến khi thỏa mãn một điều kiện nào đó Vòng lặp là một khái niệm cơ bản trong lập trình cấu trúc

72

Trang 73

2 NG P

 Một trong những điểm mạnh lớn nhất của máy tính là khả

năng thực hiện một chuỗi các lệnh lặp đi lặp lại Điều đó có được là do sử dụng các cấu trúc lặp trong ngôn ngữ lập trình

 Vòng lặp là một đoạn mã lệnh trong chương trình được thực hiện lặp đi lặp lại cho đến khi thỏa mãn một điều kiện nào đó Vòng lặp là một khái niệm cơ bản trong lập trình cấu trúc

Trong C có các loại vòng lặp sau:

Vòng lặp for

Vòng lặp while

Vòng lặp do…while

Ta sử dụng các toán tử quan hệ và toán tử logic trong các biểu

thức điều kiện để điều khiển sự thực hiện của vòng lặp 73

Trang 74

Khối lệnh Thay đổi giá trị biến điều khiển

Trang 75

2 NG P

Vòng lặp for

Cú tổng quát của vòng lặp for:

for (khởi tạo giá trị cho biến điều khiển; biểu thức điều kiện; biểu

thức thay đổi giá trị của biến điều khiển)

{

Khối lệnh;

}

75

Trang 76

2 NG P

Vòng lặp for

Cú tổng quát của vòng lặp for:

for (khởi tạo giá trị cho biến điều khiển; biểu thức điều kiện; biểu

thức thay đổi giá trị của biến điều khiển)

{

Khối lệnh;

}

Khởi tạo giá trị cho biến điều khiển là một câu lệnh gán giá trị ban đầu cho

biến điều khiển trước khi thực hiện vòng lặp Lệnh này chỉ được thực hiện duy nhất một lần

Biểu thức điều kiện là một biểu thức quan hệ, xác định điều kiện thoát cho

vòng lặp

Biểu thức thay đổi giá trị của biến điều khiển xác định biến điều khiển sẽ

bị thay đổi như thế nào sau mỗi lần vòng lặp được lặp lại

76

Ngày đăng: 21/05/2021, 17:21

🧩 Sản phẩm bạn có thể quan tâm