1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Slide nmvlt c5 new

83 1 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

Tiêu đề Vòng lặp while / do-while / for
Trường học Trường Đại Học Công Nghệ Thông Tin
Chuyên ngành Nhập môn lập trình
Thể loại Bài giảng
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 83
Dung lượng 0,98 MB

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

Nội dung

Lặp dựa trên biến đếm Bài toán: • Cần nhập 10 giá trị số thực, sau đó tính giá trị trung bình của 10 giá trị trên gán total tổ ng điể m bằng 0 gán biể n để m sổ lầ n nhập điể m bằng 1

Trang 1

Chương 5

Vòng lặp

while / do-while / for

Presenter:

Trang 2

Learning outcomes

L.O.3.1 – Liệt kê được các kiểu điều khiển và vẽ sơ đồ mô

tả chúng

L.O.3.2 – Mô tả được được nguyên tắc kết hợp các kiểu

điều khiển để mô tả các giải thuật

L.O.3.3 – Hiện thực được các kiểu điều khiển bằng ngôn

ngữ C

L.O.3.4 – Sử dụng các cấu trúc điều khiển để giải quyết bài

toán thực tế

Trang 6

 Có thể phân loại vòng lặp theo các tiêu chuẩn sau :

• Điều kiện : đi trước hoặc đi sau.

• Số lần lặp

Trang 8

Vòng lặp while

Cú pháp : while ( condition ) statement

Nghĩa là : trong khi điều kiện condition còn đúng thì làm

Trang 9

Vòng lặp while

Lưu đồ vận hành

condition

Statement

Sai

Đúng

Điều kiện đi trước

Kết thúc lặp

Trang 10

Vòng lặp while

Trang 11

Vòng lặp while

Trang 12

Vòng lặp while

Trang 13

Lặp dựa trên biến đếm

 Bài toán:

• Cần nhập 10 giá trị số thực, sau đó tính giá trị trung bình của 10 giá trị trên

gán total (tổ ng điể m) bằng 0 gán biể n để m sổ lầ n nhập điể m bằng 1

while biể n để m nho hơn hoặc bằng 10

yểu cầ u người dùng nhập giá trị tiể p theo đọc giá trị

cộng giá trị này vào total cộng biể n để m lển 1

Trang 14

Lặp dựa trên biến đếm

 Kỹ thuật sử dụng một biến để đếm số lần lặp

 Vòng lặp dừng khi biến đếm vượt quá một số cho trước

 Gọi là lặp dựa trên biến đếm (counter-controlled

repitition)

 Lặp hữu hạn vì biết trước số lần lặp

 Hãy hiện thực đoạn mã giả trên vào chương trình mẫu

Trang 15

Lặp dựa trên biến đếm

Trang 16

Lặp dựa trên biến đếm

Trang 17

Lặp dựa trên biến cờ

 Bài toán:

• Viết ứng dụng tính điểm trung bình cho lớp, với số sinh viên ngẫu nhiên trong mỗi lần nhập điểm

 Khác với bài toán trước:

• Chúng ta không biết trước số lần nhập

• Làm sao biết khi nào dừng nhập điểm?

Trang 18

Lặp dựa trên biến cờ

 Dùng biến cờ (sentinel) để báo kết thúc nhập

 Giá trị biến cờ phải không lẫn lộn với giá trị nhập vào có nghĩa

• Điểm là số nguyên không âm

Trang 19

Từ trên xuống, tinh chỉnh từng

bước

 Kỹ thuật xây dựng ứng dụng có cấu trúc chặt chẽ

 Trên là một câu lệnh thể hiện chức năng chung của ứng

dụng

xác định điể m trung bình cu a lớp

 Chỉ thể hiện ứng dụng, chưa đủ để viết ứng dụng C#

 Bắt đầu tinh chỉnh

Trang 20

Từ trên xuống, tinh chỉnh từng

bước

 Chia trên thành các tác vụ nhỏ hơn và liệt kê theo thứ tự

thực hiện

 Bước tinh chỉnh đầu tiên:

khơ i tạo biể n nhập giá trị, tính tổ ng lại rổ i để m sổ điể m đã nhập

tính toán và in ra điể m trung bình

 Mỗi lần tinh chỉnh mô tả cùng giải thuật, chỉ khác về mức

độ chi tiết

 Ba bước chung: khởi tạo, nhập và xử lý biến, tính toán

và xuất kết quả

Trang 21

Từ trên xuống, tinh chỉnh từng

Trang 22

Từ trên xuống, tinh chỉnh từng

while người dùng chưa nhập biể n cờ

thểm điể m vào total cộng biể n để m lển 1 nhắ c người dùng nhập điể m tiể p nhập điể m tiể p (có thể là biể n cờ)

Trang 23

Từ trên xuống, tinh chỉnh từng

in "Khổng thầ y điể m nhập"

Trang 24

Từ trên xuống, tinh chỉnh từng

Trang 25

Từ trên xuống, tinh chỉnh từng

bước

Trang 26

Phép chia số nguyên

 Ta đã biết rằng phép chia số nguyên trả về phần nguyên, lược bỏ phần thập phân

float average;

average = total / counter;

Dù average có kiểu float, phép chia vẫn không phải

số thập phân như mong đợi

 Chuyển đổi tạm thời các giá trị của total và counter

thành kiểu float.

Trang 27

Phép chia số nguyên

 Toán tử ép kiểu một ngôi

average = ( float ) total / counter;

 Tạo ra một bản sao total (ở bên phải toán tử) tạm có kiểu số thực dấu chấm động

 Giá trị lưu trong total vẫn là số nguyên

 Sử dụng toán tử ép kiểu gọi là chuyển đổi tường minh

Trang 28

Toán tử gán phức

 Một biểu thức

biể n = biể n toánTư biể uThức;

 Nếu toánTử là một trong các phép toán +, -, *, /, %

 Đều có thể viết lại dưới dạng

biể n toánTư = biể uThức;

Trang 30

Toán tử tăng và giảm

 C có hai toán tử để thêm hoặc bớt 1 vào giá trị của một biến kiểu số

 Toán tử tăng ++

 Toán tử giảm

 Đặt toán tử ở trước số hạng gọi là prefix

 Đặt toán tử ở sau số hạng gọi là postfix

 Có sự khác nhau giữa prefix và postfix

Trang 31

Toán tử tăng và giảm

// demonstrate postfix increment operator

Trang 32

Vòng lặp while

Ví dụ

 Tính tổng các số nguyên S = 1 + 2 + 3 + + n

 Để có thể sử dụng vòng lặp, ta cần đưa công thức tính dãy về dạng “từng bước”: S(n) = G[S(n-1)]

 Theo dạng này, muốn tính giá trị bước thứ n, phải có giá trị bước thứ (n-1)

 Xuất phát của vòng lặp là từ bước n=0

 Ta có thể viết lại tổng trên như sau:

S(n) = 1 + 2 + 3 + + (n-1) + n (1)mặt khác ta cũng có:

S(n-1) = 1 + 2 + + (n-2) + (n-1) (2)Vậy, từ (1) và (2) ta suy ra:

Trang 33

Vòng lặp while

Trang 34

Vòng lặp while

Ví dụ

Trang 35

Vòng lặp do-while

 Tương tự như câu lệnh while

 Kiểm tra điều kiện lặp-tiếp tục sau khi thực hiện thân

Trang 36

Vòng lặp do-while

Cú pháp và vận hành

Cú pháp : do statement while (condition) ;

Nghĩa là : làm phát biểu statement trước 1 lần, sau đó xét

• condition là biểu thức cho kết quả đúng/sai, đúng thì lặp, sai thì kết thúc.

• statement có thể là phát biểu ghép { }.

Vòng lặp do-while là vòng lặp có điều kiện đi sau và số lần lặp không biết trước

Trang 37

Vòng lặp do-while

Lưu đồ vận hành

condition

Statement

Sai Đúng

Điều kiện đi sau

Trang 38

Vòng lặp do-while

Trang 39

Vòng lặp do-while

Ví dụ tính giai thừa

• Kiều kiện lặp:

(i<=n)

Trang 40

Vòng lặp do-while

Code ví dụ tính giai thừa

Trang 41

Vòng lặp for

 Nhắc lại: lặp dựa trên biến đếm đòi hỏi:

• Biến điều khiển (biến đếm số lần lặp)

• Giá trị ban đầu của biến điều khiển

• Độ tăng (hoặc giảm) của biến điều khiển sau mỗi lần lặp

• Điều kiện lặp-tiếp tục xác định xem có tiếp tục lặp hay không

Trang 42

Vòng lặp for

Trang 43

Vòng lặp for

test the condition ?

Execute the statement (s)

Trang 44

Vòng lặp for

 C cung cấp câu lệnh lặp for

 Xác định các yếu tố lặp dựa trên biến đếm chỉ trong một dòng

for ( int counter = 1; counter <= 10; counter++ )

từ khóa for biến

Trang 45

Vòng lặp for

Cú pháp và vận hành

Cú pháp : for (init opt ; cond opt ; loop opt ) statement

Nghĩa là : làm phát biểu statement trong khi điều kiện

• init opt : là phát biểu khởi động vòng lặp.

• cond opt : là biểu thức luận lý quyết định lặp hay dừng.

• loop opt : là phát biểu điều khiển vòng lặp.

• statement :có thể là phát biểu ghép.

Vòng lặp for cho phép thực hiện vòng lặp có số lần lặp biết trước nếu dùng các dạng sau :

Trang 46

Vòng lặp for

Lưu đồ vận hành

Init opt

Sai Đúng

Điều kiện đi trước

Statement loop

Kết thúc lặp

Trang 47

Vòng lặp for

Trang 48

Vòng lặp for

Trang 49

Vòng lặp for

 Gửi 1000 $ vào ngân hàng với lãi suất 5% Biết rằng số tiền nhận được sau mỗi năm tính theo công thức:

a = p(1 + r)n

 Với p là số tiền gốc ban đầu, r là lãi suất, n là số năm

 Hãy in ra số tiền trong 10 năm đầu

Trang 50

Vòng lặp for

float amount, principal = 1000.0, rate = 0.05;

amount = principal*pow(1.0 + rate, year);

printf("%d\t%.3f\n", year, amount);

}

Trang 51

Vòng lặp for

Trang 52

Vòng lặp for

Trang 53

Vòng lặp for

 In các số theo thứ tự từ 10 đến 1

int i;

for(i = 10; i>= 1; i )

printf(“%d\n", i);

Trang 54

Vòng lặp for

 Điều gì xảy ra nếu viết

int i;

for(i = 10; i>= 1; i++)

printf(“%d\n", i);

Trang 55

Vòng lặp for

 In các số chẵn từ 20 đến 2

int i;

for(i = 20; i>= 2; i-=2)

printf(“%d\n", i);

Trang 56

Các lệnh lặp lồng nhau

Trang 57

Các lệnh lặp lồng nhau

int i;

for(i = 1; i<=100; i++) {

printf("Hello ");

if(i % 10 == 0) printf("\n");

}

Trang 58

Các lệnh lặp lồng nhau

Trang 59

Các lệnh lặp lồng nhau

Trang 60

Các lệnh lặp lồng nhau

Trang 61

Các lệnh lặp lồng nhau

 Có thể sử dụng các lệnh for, while, do … while lồng nhau

 Số cấp lồng nhau có thể tùy ý

 Có thể sử dụng các lệnh for, while, do … while hỗn hợp với nhau

Trang 63

 Dùng break trong while, for, do while, switch

để thoát lập tức khỏi vòng lặp

 Thực hiện lệnh kế tiếp sau vòng lặp

 Chủ yếu để thoát sớm khỏi vòng lặp

Trang 64

 Dùng continue trong while, for, do while

 Bỏ các câu lệnh còn lại trong thân vòng lặp

 Thực hiện lần lặp tiếp theo

 while và do while: kiểm tra điều kiện ngay

 for: tăng biến đếm, rồi kiểm tra điều kiện

Trang 66

Vòng lặp for

Ví dụ sắp thứ tự dãy

Trang 67

Vòng lặp for

Nhập trị ban đầu và xử lý dãy

 Một trong những ứng dụng phổ biến của for là dùng để xử

lý các vấn đề liên quan đến dãy (array)

Trang 68

Vòng lặp for

Vòng lặp lồng nhau

 Dùng 2 vòng for lồng nhau để nhập ma trận

Nhập

Trang 69

Vòng lặp for

In ma trận

 Dùng 2 vòng for lồng nhau để in ma trận

In m

a trận

Trang 70

Vòng lặp for

Tính tổng ma trận

 Dùng 2 vòng for lồng nhau để tính tổng 2 ma trận

Tính tổng

Trang 71

A B A && B

False False false

Trang 74

Toán tử điều kiện AND (&&)

 Đảm bảo hai điều kiện phải cùng true thì mới thực hiện một luồng thực thi

if ( gender == FEMALE && age >= 65 )

seniorFemales++;

 Khi một trong hai điều kiện là false, không tăng biến

seniorFemales

Trang 75

Toán tử điều kiện OR (||)

 Thực thi nếu chỉ cần một trong hai điều kiện là true

if ( ( semesterAverage >= 90 ) || ( finalExam >= 90 ) )

printf( "Student grade is A" );

 Khi cả hai điều kiện đều sai thì mới không thực thi câu lệnh in ra console

 Toán tử && có độ ưu tiên cao hơn toán tử ||, đều kết hợp từ trái qua

Trang 76

Thứ tự ưu tiên

-1 ! unary - ++ từ phải sang trái

4 < <= > >= từ trái sang phải

8 = += -= *= /= từ phải sang trái

Trang 78

true

Trang 81

Ví dụ

 Có trăm trâu trăm cỏ:

Trâu đứng ăn 5,

Trâu nằm ăn 3,

Trâu già 3 con ăn 1 bó,

Hỏi có bao nhiêu trâu đứng, trâu nằm, trâu già!

Trang 83

Ví dụ

Ngày đăng: 11/04/2023, 18:54

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w