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

Bài giảng kỹ thuật lập trình c chương 4 ths trần quang hải bằng

14 299 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 14
Dung lượng 414,03 KB

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

Nội dung

In ra màn hình tam giác cân độ cao N gồm toàn các dấu ‘ * ’ có dạng bên 04/2010 Kiểu array – mng • Mảng là một kiểu dữ liệu có cấu trúc do người lập trình định nghĩa • Dùng biểu diễn c

Trang 1

Chương 4: Cấu trúc lặp

04/2010

Khái niệm vòng lặp

• Một công việc nào đó ñược thực hiện

lặp đi lặp lại nhiều lần

• Ví dụ

– In ra màn hình các số từ 1 đến 10, mỗi số

trên một dòng

• Giải pháp đơn giản

– printf(“1\n”);

– printf(“2\n”);

– … – printf(“10\n”);

• Giải pháp tổng quát

– L ặ p i ch ạ y t ừ 1 t ớ i 10

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

Trang 2

Kỹ thuật lập trình C - Cấu trúc lặp 3 bangtqh@hotmail.com

Lặp dạng for

– Cú pháp

for ([B.Thức 1]; [B.thức 2]; [B.Thức 3] )

<Lệnh cần lặp>;

• Các phần trong cặp dấu “[” và “]” là không bắt buộc

• Các dấu “;” và cặp ngoặc “(” và “)” bắt buộc phải có

– Ví dụ:

04/2010

Lặp dạng for

Các bước hoạt động:

1.Tính B.Thức 1

2.Tính B.Thức 2

• Nếu sai thoát vòng lặp.

• Nếu đúng ñi vào thực hiện

việc cần lặp

3.Tính B.Thức 3 , sau đó

quay trở lại bước 2 ñể bắt

đầu các bước lặp mới.

FALSE

TRUE

Trang 3

Kỹ thuật lập trình C - Cấu trúc lặp 5 bangtqh@hotmail.com

Lặp dạng for

• Biểu thức 1 : Thường là 1 phép gán để khởi tạo giá trị ban ñầu cho biến điều khiển

• Biểu thức 2 : Thường là 1 biểu thức điều kiện

• Biểu thức 3 : Cũng là 1 phép gán để thay ñổi giá trị biến điều khiển

04/2010

Trang 4

Kỹ thuật lập trình C - Cấu trúc lặp 7 bangtqh@hotmail.com

N S

Tính = 3 + 6 + 9 + + 3

Vòng lặp chạy ngược từ N trở

về 1

04/2010

Lặp dạng for

• Nhận xét

– Biểu thức 1 chỉ ñược tính một lần

– Biểu thức 2 , biểu thức 3 và khối lệnh trong

thân lệnh for ñược lặp đi lặp lại nhiều lần

– Dựa các giá trị khởi tạo biến điều khiển, ñiều

kiện lặp và biểu thức 3 có thể tính được số lần

lặp.

• Khi biểu thức 2 vắng mặt thì nó ñược xem

là ñúng ( vòng lặp vô hạn ).

– Để thoát khỏi lệnh for trong trường hợp này

phải dùng lệnh break hoặc return

• Có thể sử dụng các lệnh for lồng nhau.

Trang 5

Kỹ thuật lập trình C - Cấu trúc lặp 9 bangtqh@hotmail.com

Lặp dạng for

1 Tính TBC các số lẻ ≤ N

2 Tìm ước số chung lớn nhất ( UCLN ) của 2

số a, b

3 Kiểm tra xem số N có phải là số nguyên

tố không?

4 Số tiền nhiều nhất 1 người tham gia “ Đấu

trường 100 ” có thể ñạt được là bao nhiêu

?

5 Hiển thị tất cả các số nguyên tố ≤ N

6 In ra màn hình tam giác cân độ cao N

gồm toàn các dấu ‘ * ’ có dạng bên

04/2010

Kiểu array – mng

• Mảng là một kiểu dữ liệu có cấu trúc do

người lập trình định nghĩa

• Dùng biểu diễn các đối tượng dữ liệu ở dạng một dãy các thành phần có cùng kiểu với

nhau (kiểu cơ sở)

• NNLT C luôn chỉ ñịnh một khối nhớ liên tục

cho một biến kiểu mảng

• Kích thước của mảng ñược xác định ngay

khi khai báo và không bao giờ thay ñổi

Trang 6

Kỹ thuật lập trình C - Cấu trúc lặp 11 bangtqh@hotmail.com

Khai báo array trong C

ki ể uc uc ơ ơ s s ở TênBi ế n[S ố ph ầ nt ử ];

kiểu của mỗi thành phần hằng số, số thành phần

tối đa của mảng

Do lập trình viên đặt tên

int a[100];

//a là mảng biểu diễn dãy gồm 100 số nguyên int

04/2010

Kiểu array – ví dụ

int a[5]; // a dãy g ồ m 5 s ố nguyên

long int big[ 100 ]; // big: chi ế m 400 bytes!

double d[ 100 ]; // d: chi ế m 800 bytes!

long double v[SIZE]; // v:10 long doubles

int a[ 5 ] = { 10, 20, 30, 40, 50};

double d[ 100 ] = { 1.5, 2.7};

short primes[] = { 1, 2, 3, 5, 7, 11, 13};

long b[ 50 ] = { 0 };

cách nhanh nhất để khởi tạo tất cả các thành phần bằng 0

Trình biên dịch xác định kích

thước gồm 7 thành phần

int i = 7 ;

const int c = 5 ;

int a[i];

double d[c];

short primes[];

2 thànhphần đầu tiên được khởi tạo, phần còn lại: 0

Trang 7

Kỹ thuật lập trình C - Cấu trúc lặp 13 bangtqh@hotmail.com

Kiểu array – Lưu ý

• Các thành phần của mảng được truy xuất thông qua chỉ

số của chúng 0 n-1

• Thao tác truy xuất không kiểm tra giới hạn của chỉ số

int main()

{

int a[6];

int i = 7;

a[0] = 59;

a[5] = -10;

a[i/2] = 2;

a[6] = 0;

a[-1] = 5;

return 0;

}

int main()

{

int a[ 6 ];

int i = 7 ;

a[ 0 ] = 59 ;

a[ 5 ] = - 10 ;

a[i/ 2 ] = 2 ;

a[ 6 ] = 0 ;

a[ -1 ] = 5 ;

return 0;

}

0 a

1 2 3 4 5

59

-10 2

04/2010

Kiểu array – Thao tác cơ sở

Giới hạn chỉ

số mảng ?

Trang 8

Kỹ thuật lập trình C - Cấu trúc lặp 15 bangtqh@hotmail.com

Lặp dạng for

1 Tính TBC các số lẻ trong dãy số a1,

a2,…,aN

2 Tìm giá trị min/max trong dãy a1, a2,…,aN

3 Đếm xem trong dãy a1, a2,…,aN có bao

nhiêu số nguyên tố ?

4 Cho dãy điểm M1(x1, y1), M2(x2,

y2),…,Mn(xn, yn) trên mặt phẳng Hãy:

• Tìm độ dài đường gấp khúc M1M2 Mn

• Tìm đoạn MiMj ( i≠j ) có ñộ dài lớn nhất

• Đếm xem có bao nhiêu ñoạn cắt trục 0y

• Có bao nhiêu ñiểm thuộc góc phần tư thứ

nhất

04/2010

Lặp dạng while

• Lệnh lặp while

– Cú pháp

while ( biểu thức )

khối lệnh cần lặp;

– Ý nghĩa

• Trong khi biểu thức có giá trị ñúng (khác 0 ) thì còn phải thực hiện khối lệnh Việc lặp dừng lại khi biểu thức có giá trị sai (bằng 0).

• Lặp while kiểm tra điều kiện trước khi thực hiện

khối lệnh.

– Hãy vẽ sơ ñồ khối biểu diễn lệnh while

Trang 9

Kỹ thuật lập trình C - Cấu trúc lặp 17 bangtqh@hotmail.com

Lặp dạng while – Ví dụ

04/2010

Lặp dạng while – Lưu ý

• Nhận xét

– Biểu thức điều kiện luôn dược đặt trong cặp dấu

“(”“)”

– Biểu thức điều kiện sẽ ñược tính toán đầu tiên

nên phải có giá trị xác định

• Câu lệnh sau làm gì ?

while ( 0 ) printf(“nothing\n”);

• Hãy chuyển lệnh for dạng tổng quát thành

Trang 10

Kỹ thuật lập trình C - Cấu trúc lặp 19 bangtqh@hotmail.com

Lặp dạng do…while

• Cú pháp

do

khối lệnh;

• Ý nghĩa

– Thực hiện khối lệnh trong khi biểu thức có giá trị ñúng (khác 0)

– Thực hiện khối lệnh trước khi kiểm tra biểu thức điều kiện – Khối lệnh được thực hiện ít nhất 1 lần

• Hãy vẽ sơ ñồ khối biểu diễn lệnh do … while

04/2010

Trang 11

Kỹ thuật lập trình C - Cấu trúc lặp 21 bangtqh@hotmail.com

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

N Hãy in ra màn hình biểu diễn của nó

ở dạng nhị phân ( Binary )

2 Viết chương trình tìm phần tử ñầu tiên

trong dãy a1, a2,…,an thỏa mãn: bằng

tổng các phần tử ñứng trước nó.

3 Viết lại chương trình kiểm tra xem số N

có nguyên tố hay không bằng cách sử

dụng do…while

4 Chuyển đoạn mã lệnh dạng do…while

thành dạng while

04/2010

Kỹ thuật bắt phím

• Đọc trong bộ ñệm bàn phím bằng hàm

getch() có ñược mã của phím bị nhấn.

• Nếu bộ ñệm bàn phím rỗng ñợi nhấn 1

phím.

– Phím bị nhấn là phím thường bộ ñệm bàn

phím nhận 1 mã x

– Nếu phím bị nhấn là phím điều khiển bộ ñệm bàn phím tiếp nhận 2 mã liên tiếp ( x và 0 )

• Hàm getch() sẽ ñọc các ký tự có trong bộ

đệm theo thứ tự ngược với thứ tự ñưa vào.

Trang 12

Kỹ thuật lập trình C - Cấu trúc lặp 23 bangtqh@hotmail.com

Kỹ thuật bắt phím

phím nào bị nhấn không kbhit()

xử lý trường hợp phím điều khiển.

04/2010

Bắt phím

Trang 13

Kỹ thuật lập trình C - Cấu trúc lặp 25 bangtqh@hotmail.com

Viết chương trình hiển thị lên màn hình 1 dấu ‘*’ sau ñó cho phép người dùng dùng các phím mũi tên di chuyển dấu ‘*’ khắp màn hình Chương trình sẽ kết thúc nếu người dùng bấm phím ESC.

Kỹ thuật bắt phím

Phím PgDn 0/81

Phím PgUp 0/73

Phím Delete 0/83

Phím F2 0/60

Phím F1 0/59

Phím ESC 27

Phím sang phải 0/77

Phím sang trái 0/75

Phím xuống 0/80

Phím lên 0/72

Phím điều khiển Mã

04/2010

• Lệnh break thường được sử dụng kết hợp

lệnh lặp

– Dùng để thoát khỏi vòng lặp một cách bất

thường (không quan tâm tới điều kiện lặp)

– Nếu có nhiều lệnh lặp lồng nhau thì lệnh break

chỉ thoat vòng lặp trực tiếp chứa nó

• Lệnh continue

– Dùng để quay trở lại từ ñầu vòng lặp

– Thực hiện lần lặp mới mà không ñi hết các lệnh còn lại trong thân vòng lặp

Trang 14

Kỹ thuật lập trình C - Cấu trúc lặp 27 bangtqh@hotmail.com

Ngày đăng: 04/12/2015, 18:18

TỪ KHÓA LIÊN QUAN