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

Bài giảng Kỹ thuật lập trình cơ bản: Chương 3 – Trần Minh Thái

64 44 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 64
Dung lượng 488,81 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 Kỹ thuật lập trình cơ bản: Chương 3 giới thiệu về cấu trúc điều khiển ngôn ngữ C. Các nội dung được trình bày trong chương này gồm có: Cấu trúc cơ bản của chương trình C; cấu trúc rẽ nhánh: if, if...else; cấu trúc lựa chọn: switch...case; cấu trúc lặp: while, for, do...while; lệnh break, continue;... Mời các bạn cùng tham khảo để nắm bắt các nội dung chi tiết.

Trang 1

CHƯƠNG 3

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

1

TRẦN MINH THÁI Email: minhthai@itc.edu.vn

Website: www.minhthai.edu.vn

Trang 2

Cấu trúc điều khiển

2

TUẦN TỰ

RẼ NHÁNH CÓ ĐIỀU KIỆN LỰA CHỌN

LẶP

Lệnh 1; Lệnh 2; Lệnh 3;

do … while

Trang 3

Cấu trúc tuần tự

Tuần tự thực thi tiến trình, mỗi lệnh được thực thi theo một chuỗi từ trên xuống, xong lệnh này rồi chuyển xuống lệnh kế tiếp.

3

Lệnh 1

Lệnh 2

Lệnh 3

Trang 4

void main() {

int a, b, tong, hieu, tich;

printf(“Tich: %d\n“, tich); printf("Thuong: %f“, thuong); }

Trang 5

void main() {

int a, b, tong, hieu, tich;

Trang 7

printf(“Nhap mot so nguyen: “); scanf(“%d”, &n);

if (n<0) {

n=-n;

}

printf(“Gia tri tuyet doi= %d“, n); }

Trang 8

}

cout<<“Gia tri tuyet doi= “<<n; }

Trang 9

Xét cả hai trường hợp đúng và sai:

if (biểu thức điều kiện)

Nếu biểu thức điều kiện cho kết quả true thì thực hiện

khối lệnh 1, ngược lại thì cho thực hiện khối lệnh thứ 2

9

Trang 10

VD: Nhập vào 2 số nguyên a và b, nếu a là bội số của b thì

in thông báo “a là bội số của b”, ngược lại in “a khong la boi so cua b”10

printf(“Nhap vao a: “); scanf(“%d”, &a);

printf(“Nhap vao b: “); scanf(“%d”, &b);

{ printf(“a la boi so cua b“); }

Trang 11

printf(“a la boi so cua b”);

} else {

printf(“a khong la boi so cua b”); }

}

Trang 12

VD: Nhập vào 2 số nguyên a và b, nếu a là bội số của b thì

in thông báo “a là bội số của b”, ngược lại in “a khong la boi so cua b”12

cout<<“Nhap vao a: “; cin>>a;

cout<<“Nhap vao b: “; cin>>b;

{ cout<<“a la boi so cua b“;

Trang 13

cout<<“a la boi so cua b”;

} else {

cout<<“a khong la boi so cua b”; }

}

Trang 14

Ví dụ 2: Giải và biện luận phương trình: ax+b=0

14

Trang 15

printf("PT VSN”);

} else

{ printf("PT VN”);

} }

else { printf(“Nghiem x = %f“, -b/ a);

}

}

Trang 16

cout<<"PT VSN”;

} else

{ cout<<"PT VN”;

} }

else { cout<<“Nghiem x = “<< - b/a;

}

}

Trang 17

Bài tập – cho biết kết quả

printf(“Gia tri cua a la chan”);

//cout<<"Gia tri cua a la chan”;

printf(“Tong cua a va b la: %d“, a+b); //cout<<"Tong cua a va b la: " <<a + b; }

17

Trang 18

//cout<<"a la so le”;

else printf(“a la so chan”; //cout<<"a la so chan”;

printf(“Gia tri cua a: “, a); //cout<<"Gia tri cua a: " <<a; }

18

Trang 19

Bài tập viết chương trình

1 Nhập vào 2 số a và b, xuất ra số lớn nhất

2 Cho 3 số a, b và c, hãy tìm giá trị lớn nhất của

ba số trên và in ra kết quả

3 Cho 3 số a, b và c, hãy in ra màn hình theo

thứ tự tăng dần các số

4 Viết chương trình nhập vào một số nguyên n

gồm 3 chữ số Xuất ra màn hình chữ số lớn nhất ở vị trí nào?

VD: n=291 Chữ số lớn nhất nằm ở hàng

chục (9).

19

Trang 20

5 Nhập vào số nguyên n gồm 3 chữ số Xuất ra

màn hình theo thứ tự tăng dần của các chữ số

Ví dụ: n=291 Xuất ra 129.

6 Nhập vào ngày, tháng, năm Kiểm tra xem

ngày, tháng, năm đó có hợp lệ hay không? In kết quả ra màn hình

7 Nhập vào giờ, phút, giây Kiểm tra xem giờ,

phút, giây đó có hợp lệ hay không? In kết quả

ra màn hình

8 Nhập vào một năm (>0) Cho biết năm này có

phải là năm nhuận hay không? In kết quả ra màn hình

20

Trang 21

9 Tính tiền cước TAXI Biết rằng:

km đầu tiên là 13000 đ

mỗi km tiếp theo là 12000 đ

từ km 30 trở lên thì mỗi km thêm sẽ là 11000 đ

Hãy nhập số km sau đó in ra số tiền phải trả.

10 Nhập vào 3 số nguyên dương Kiểm tra xem 3 số

đó có lập thành tam giác không? Nếu có hãy cho biết tam giác đó thuộc loại nào? (Cân, vuông, đều,

…).

11 Nhập vào số nguyên dương n Kiểm tra xem n có phải là số chính phương hay không? (số chính phương là số khi lấy căn bậc 2 có kết quả là nguyên).

21

Trang 23

ni là các hằng số nguyên hoặc ký tự.

Phụ thuộc vào giá trị của biểu thức viết

sau switch, nếu:

Giá trị này = ni thì thực hiện câu lệnh sau case ni

Khi giá trị biểu thức không thỏa tất cả các ni thì thực hiện câu lệnh sau

default nếu có, hoặc thoát khỏi câu

lệnh switch.

23

Trang 24

Khi chương trình đã thực hiện xong câu

lệnh của case ni nào đó thì nó sẽ thực hiện

luôn các lệnh thuộc case bên dưới nó mà

không xét lại điều kiện (do các ni được xem như các nhãn)

 Vì vậy, để chương trình thoát khỏi lệnh

switch sau khi thực hiện xong một trường

hợp, ta dùng lệnh break.

24

Trang 25

Ví dụ: Nhập vào số nguyên n có giá trị từ 1 đến 5 In cách đọc của

số đó ra màn hình.

case 1: printf("So mot”); break;

case 2: printf("So hai”); break;

case 3: printf("So ba”); break;

case 4: printf("So bon”); break;

case 5: printf("So nam”); break;

default : printf(“Chua xu ly”);

}

}

25

Trang 26

Ví dụ: Nhập vào số nguyên n có giá trị từ 1 đến 5 In cách đọc của

số đó ra màn hình.

case 1: cout<<"So mot”; break;

case 2: cout<<"So hai"; break;

case 3: cout<<"So ba”; break;

case 4: cout<<"So bon”; break;

case 5: cout<<"So nam”; break;

default : cout<<“Chua xu ly";

}

}

26

Trang 27

Bài tập viết chương trình

13 Viết chương trình nhập vào 1 số nguyên dương gồm 3 chữ số, in ra cách đọc của số này

14 Viết chương trình nhập vào ngày tháng năm, kiểm tra xem ngày tháng năm có hợp lệ không?

In kết quả kiểm tra ra màn hình

27

Trang 28

Yes

Trang 30

Vòng lặp while

Khởi gán: Dùng để khởi gán giá trị ban

đầu cho vòng lặp

Điều kiện lặp: Dùng để kiểm tra điều

kiện trước khi thực hiện vòng lặp

Cập nhật: Dùng để cập nhật vòng lặp

(tăng hoặc giảm chỉ số lặp)

30

Trang 31

Bước 1: Khởi gán

Bước 2: Kiểm tra điều kiện

― Nếu điều kiện bằng true thì cho thực

hiện các lệnh của vòng lặp, thực hiện

cập nhật vòng lặp Quay trở lại bước 2.

― Ngược lại thoát khỏi lặp.

31

Trang 32

Ví dụ: In ra màn hình 10 dòng chữ “Xin

printf("Xin chao\n“);

//cout<<“Xin chao”<<endl;

} }

32

Trang 33

Ví dụ: Nhập vào số nguyên dương n In ra màn hình n dòng chữ “Xin chao”

printf("Xin chao\n“);

} }

33

Trang 34

Ví dụ: Nhập vào số nguyên dương n In ra màn hình n dòng chữ “Xin chao”

cout<<"Xin chao”<<endl;

} }

34

Trang 36

Ví dụ: In ra màn hình 10 dòng chữ “Xin

//cout<<"Xin chao“<<endl;

} }

36

Trang 37

Tính tổng: , với n>0

i = i + 1

“Tổng = “ S

Trang 38

}

Trang 39

}

Trang 41

Vòng lặp do … while

 Thực hiện khối lệnh cho đến khi biểu thức có

giá trị bằng false.

 Cấu trúc lặp do…while thường được dùng

cho trường hợp nhập dữ liệu có kiểm tra điều kiện

41

Trang 42

Ví dụ: Nhập vào một số nguyên dương, nếu nhập sai thì thông

báo lỗi và yêu cầu nhập lại.

printf("Nhap sai, hay nhap lai!\n“);

} } while (n <= 0);

printf("Ban da nhap dung, ket thuc chuong trinh”);

}

42

Trang 43

Ví dụ: Nhập vào một số nguyên dương, nếu nhập sai thì thông

báo lỗi và yêu cầu nhập lại.

cout<<"Nhap sai, hay nhap lai!“<<endl;

} } while (n <= 0);

cout<<"Ban da nhap dung, ket thuc chuong trinh”;

}

43

Trang 44

 Ngược lại với cấu trúc lặp for và

while (kiểm tra điều kiện trước khi

thực hiện lặp), vòng lặp do…while

thực hiện lệnh lặp rồi mới kiểm tra

điều kiện Do đó vòng lặp do while

thực hiện lệnh ít nhất một lần.

44

Trang 45

Lệnh break, return và continue

 Lệnh break: thoát khỏi các cấu trúc

switch, while, for, do…while chứa nó

 Lệnh return: Kết thúc hàm

 Lệnh continue: bỏ qua các lệnh còn lại của vòng lặp

45

Trang 46

VD: Cho phép người dùng nhập liên tục số nguyên

dương, nếu nhập số nguyên âm thì dừng

printf("Ket thuc vong lap”);

Trang 47

VD: Cho phép người dùng nhập liên tục số nguyên

dương, nếu nhập số nguyên âm thì dừng

cout<<"Ket thuc vong lap”;

Trang 48

VD: In ra màn hình giá trị từ 10 đến 20 trừ đi số

//cout<<k<<“\t";

} }

48

Trang 49

VD: In ra màn hình giá trị từ 10 đến 20 trừ đi số 13 và số 17 – Dùng continue

printf(“%d\t”, k);

//cout<<k<<“\t";

} }

49

Trang 50

Xác định kết quả

int a=18;

for(int i = 1; i <= a; i++) if(a%i == 0)

printf(“%d\t”, i);

//cout<<i <<“\t”;

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

-{ for(int j = 0; j <= i; j++) printf(“%d\t”, j);

Trang 51

int i = 10, s = 0;

while(i > 0) {

if(i%2 == 0) s+=i;

else if(i > 5) s+=2*i;

i ;

} printf(“s = %d”, s); //cout<<“s = ” <<s;

51

Trang 52

} while(i <= a);

52

Trang 53

int a = 11, b = 16, i = a; while( i < b )

{ if(i%2 == 0) {

printf(“%d\t”, i); //cout<<i<<"\t";

break;

} i++;

}

53

Trang 54

int a = 10, s = 0, i = 0; while( i < a )

{ i++;

if (i % 2 == 0) continue; s=s+i;

} printf(“s = %d”, s);

//cout<<"s = " <<s;

54

Trang 55

int i = 1, s = 0;

while(true) {

} printf(“s = %d”, s); //cout<<"s = " <<s;

55

Trang 56

15 Viết chương trình đếm số ước số của số nguyên dương N.

Ví dụ: N=12

số ước số của 12 là 6

16 Nhập số nguyên dương n Kiểm tra

n có phải là số nguyên tố không?

17 Nhập vào 2 số nguyên dương a và

b Tìm ước số chung lớn nhất và bội số chung nhỏ nhất của a và b.

56

Trang 57

18 In ra dãy số Fibonaci

f 1 = f 0 =1;

f n = f n-1 + f n-2 ; (n>1)

19 In hình chữ nhật có kích thước cd x cr

20 In hình tam giác vuông có chiều cao h

57

Trang 58

Dùng công cụ debug xác định lỗi/ kết quả chương trình

Dùng để xác định lỗi logic (lỗi giải thuật) trong chương trình Mặc dù chương trình không còn lỗi nhưng khi chạy chương trình vẫn ra kết quả sai, những lỗi đó có thể là:

Dùng chấm phẩy sau: if, else, for, while mà chưa thực hiện lệnh;

Không dùng cặp dấu ngoặc ({}) để bao khối lệnh;

58

Trang 59

DÙNG CÔNG CỤ DEBUG XÁC ĐỊNH LỖI/ KẾT QUẢ CHƯƠNG TRÌNH

Khai báo sai kiểu dữ liệu, không ép kiểu dữ liệu;

Chia cho 0;

Không có điều kiện dừng (điều kiện dừng sai);

Phân tích giải thuật thiếu (chưa vét hết các trường hợp) hoặc sai;

59

Trang 60

Bước 1: Đặt dấu nháy vào vị trí bắt đầu

cần kiểm tra lỗi 60

Trang 61

Bước 2: Nhấn phím Ctrl + F10

61

Trang 62

Quan sát vị trí dấu mũi tên trên cửa sổ viết code để xác định dòng lệnh đang thực hiện.

Cửa sổ Locals (View\ Debug Windows\

Variables hoặc nhấn phím Alt+4) sẽ thể

hiện tên (name), giá trị (value) và kiểu (type) của các biến cục bộ trong đoạn chương trình

Cửa sổ Watch (View\ Debug Windows\

Watch hoặc nhấn Alt+3) cũng có thể quan

sát chi tiết biến tương tự như cửa sổ Locals, nhưng chỉ thể hiện những biến nào mà ta nhập tên biến tương ứng vào cửa sổ này

62

Trang 63

Bước 3: Nhấn phím F10 để thực hiện

lệnh kế tiếp (hoặc hàm kế tiếp)

Nếu muốn xem lệnh thực hiện bên trong của hàm thì nhấn phím F11 (nếu lệnh là lời gọi thực hiện hàm – lưu ý: không nên nhấn phím F11 khi thực hiện các hàm thư viện (ví dụ: cin, cout)

63

Trang 64

64

Ngày đăng: 08/05/2021, 19:42

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN