Bài giảng Kỹ thuật lập trình C: Chương 4 - ThS. Trần Quang Hải Bằng

14 7 0
Bài giảng Kỹ thuật lập trình C: Chương 4 - ThS. Trần Quang Hải Bằng

Đ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

Mục tiêu cơ bản trong chương 4 Cấu trúc lặp nằm trong bài giảng kỹ thuật trình C nhằm trình bày về các nội dung chính: khái niệm vòng lặp, lặp dạng for, kiểu array mảng, khai báo array trong C, thao tác cơ sở kiểu array, kỹ thuật bắt phím.

KỸ THUẬT LẬP TRÌNH C Chương 4: Cấu trúc lặp bangtqh@hotmail.com 04/2010 Khái niệm vịng lặp • Một cơng việc thực lặp lặp lại nhiều lần • Ví dụ – In hình số từ đến 10, số 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ừ tới 10 printf(“%d\n”, i); bangtqh@hotmail.com Kỹ thuật lập trình C - Cấu trúc lặp 04/2010 Lặp dạng for – Cú pháp for([B.Thức 1]; [B.thức 2]; [B.Thức 3]) ; • Các phần cặp dấu “[” “]” khơng bắt buộc • Các dấu “;” cặp ngoặc “(” “)” bắt buộc phải có – Ví dụ: bangtqh@hotmail.com Kỹ thuật lập trình C - Cấu trúc lặp 04/2010 Lặp dạng for Các bước hoạt động: 1.Tính B.Thức 2.Tính B.Thức • Nếu sai vịng lặp • Nếu vào thực việc cần lặp 3.Tính B.Thức 3, sau quay trở lại bước ñể bắt đầu bước lặp bangtqh@hotmail.com Kỹ thuật lập trình C - Cấu trúc lặp FALSE TRUE 04/2010 Lặp dạng for • Biểu thức 1: Thường 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 biểu thức điều kiện • Biểu thức 3: Cũng phép gán để thay ñổi giá trị biến điều khiển bangtqh@hotmail.com Kỹ thuật lập trình C - Cấu trúc lặp 04/2010 bangtqh@hotmail.com Kỹ thuật lập trình C - Cấu trúc lặp 04/2010 Tính S = + + + + N Vòng lặp chạy ngược từ N trở bangtqh@hotmail.com Kỹ thuật lập trình C - Cấu trúc lặp 04/2010 Lặp dạng for • Nhận xét – Biểu thức tính lần – Biểu thức 2, biểu thức khối lệnh thân lệnh for ñược lặp lặp lại nhiều lần – Dựa giá trị khởi tạo biến điều khiển, điều kiện lặp biểu thức tính số lần lặp • Khi biểu thức vắng mặt xem (vịng lặp vơ hạn) – Để khỏi lệnh for trường hợp phải dùng lệnh break return • Có thể sử dụng lệnh for lồng bangtqh@hotmail.com Kỹ thuật lập trình C - Cấu trúc lặp 04/2010 Lặp dạng for Tính TBC số lẻ ≤ N Tìm ước số chung lớn (UCLN) số a, b Kiểm tra xem số N có phải số ngun tố khơng? Số tiền nhiều người tham gia “Đấu trường 100” ñạt ? Hiển thị tất số nguyên tố ≤ N In hình tam giác cân độ cao N gồm tồn dấu ‘*’ có dạng bên bangtqh@hotmail.com Kỹ thuật lập trình C - Cấu trúc lặp 04/2010 Kiểu array – m ng • Mảng kiểu liệu có cấu trúc người lập trình định nghĩa • Dùng biểu diễn đối tượng liệu dạng dãy thành phần có kiểu với (kiểu sở) • NNLT C ln định khối nhớ liên tục cho biến kiểu mảng • Kích thước mảng xác định khai báo khơng thay đổi bangtqh@hotmail.com Kỹ thuật lập trình C - Cấu trúc lặp 10 04/2010 Khai báo array C kiểucơsở TênBiến[Sốphầntử]; kiểu thành phần số, số thành phần tối đa mảng Do lập trình viên đặt tên int a[100]; //a mảng biểu diễn dãy gồm 100 số nguyên int Kỹ thuật lập trình C - Cấu trúc lặp bangtqh@hotmail.com 11 04/2010 Kiểu array – ví dụ #define SIZE 10 int a[5]; // a dãy gồm 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 double short long a[5] d[100] primes[] b[50] = = = = { { { { 10, 20, 30, 40, 50}; 1.5, 2.7}; 1, 2, 3, 5, 7, 11, 13}; }; Trình biên dịch xác định kích thước gồm thành phần cách nhanh để khởi tạo tất thành phần bangtqh@hotmail.com thành phần khởi tạo, phần lại: int i = 7; const int c = 5; int a[i]; double d[c]; short primes[]; Kỹ thuật lập trình C - Cấu trúc lặp 12 04/2010 Kiểu array – Lưu ý • Các thành phần mảng truy xuất thơng qua số chúng n-1 • Thao tác truy xuất không kiểm tra giới hạn số int int main() main() {{ int int a[6]; a[6]; int i int i == 7; 7; a[0] = 59; a[0] = 59; a[5] a[5] == -10; -10; a[i/2] = a[i/2] = 2; 2; a[6] = 0; a[6] = 0; a[-1] a[-1] == 5; 5; return return 0; 0; }} bangtqh@hotmail.com a 59 2 -10 Kỹ thuật lập trình C - Cấu trúc lặp 13 04/2010 Kiểu array – Thao tác sở Giới hạn số mảng ? bangtqh@hotmail.com Kỹ thuật lập trình C - Cấu trúc lặp 14 04/2010 Lặp dạng for Tính TBC số lẻ dãy số a1, a2,…,aN Tìm giá trị min/max dãy a1, a2,…,aN Đếm xem dãy a1, a2,…,aN có số nguyên tố ? Cho dãy điểm M1(x1, y1), M2(x2, y2),…,Mn(xn, yn) 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 Đếm xem có đoạn cắt trục 0y Có ñiểm thuộc góc phần tư thứ bangtqh@hotmail.com Kỹ thuật lập trình C - Cấu trúc lặp 15 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 biểu thức có giá trị (khác 0) cịn phải thực khối lệnh Việc lặp dừng lại biểu thức có giá trị sai (bằng 0) • Lặp while kiểm tra điều kiện trước thực khối lệnh – Hãy vẽ sơ ñồ khối biểu diễn lệnh while bangtqh@hotmail.com Kỹ thuật lập trình C - Cấu trúc lặp 16 04/2010 Lặp dạng while – Ví dụ bangtqh@hotmail.com Kỹ thuật lập trình C - Cấu trúc lặp 17 04/2010 Lặp dạng while – Lưu ý • Nhận xét – Biểu thức điều kiện dược đặt cặp dấu “(” “)” – Biểu thức điều kiện tính tốn nên phải có giá trị xác định • Câu lệnh sau làm ? while(0) printf(“nothing\n”); • Hãy chuyển lệnh for dạng tổng quát thành lệnh while bangtqh@hotmail.com Kỹ thuật lập trình C - Cấu trúc lặp 18 04/2010 Lặp dạng do…while • Cú pháp khối lệnh; while (biểu thức); • Ý nghĩa – Thực khối lệnh biểu thức có giá trị (khác 0) – Thực khối lệnh trước kiểm tra biểu thức điều kiện – Khối lệnh thực lần • Hãy vẽ sơ ñồ khối biểu diễn lệnh … while bangtqh@hotmail.com Kỹ thuật lập trình C - Cấu trúc lặp 19 04/2010 Lặp do…while - ví dụ bangtqh@hotmail.com Kỹ thuật lập trình C - Cấu trúc lặp 20 04/2010 Lặp while do…while Viết chương trình nhập vào số nguyên N Hãy in hình biểu diễn dạng nhị phân (Binary) Viết chương trình tìm phần tử dãy a1, a2,…,an thỏa mãn: tổng phần tử đứng trước Viết lại chương trình kiểm tra xem số N có ngun tố hay khơng cách sử dụng do…while Chuyển đoạn mã lệnh dạng do…while thành dạng while bangtqh@hotmail.com Kỹ thuật lập trình C - Cấu trúc lặp 21 04/2010 Kỹ thuật bắt phím • Đọc đệm bàn phím hàm getch() có mã phím bị nhấn • Nếu đệm bàn phím rỗng ñợi nhấn phím – Phím bị nhấn phím thường đệm bàn phím nhận mã x – Nếu phím bị nhấn phím điều khiển đệm bàn phím tiếp nhận mã liên tiếp ( x ) • Hàm getch() đọc ký tự có đệm theo thứ tự ngược với thứ tự đưa vào bangtqh@hotmail.com Kỹ thuật lập trình C - Cấu trúc lặp 22 04/2010 Kỹ thuật bắt phím Bước 1: Kiểm tra đệm bàn phím xem có phím bị nhấn khơng kbhit() Bước 2: Nếu hàm kbhit() trả giá trị ≠ 2.1 Bắt phím lần 1: key1 = getch(); 2.2 Kiểm tra key1 == • Sai: xử lý trường hợp phím thường • Đúng: Bắt phím lần 2: key2 = getch(); xử lý trường hợp phím điều khiển bangtqh@hotmail.com Kỹ thuật lập trình C - Cấu trúc lặp 23 04/2010 Bắt phím bangtqh@hotmail.com Kỹ thuật lập trình C - Cấu trúc lặp 24 04/2010 Kỹ thuật bắt phím Mã Phím điều khiển 0/72 Phím lên ↑ 0/80 Phím xuống 0/75 Phím sang trái ← 0/77 Phím sang phải → 27 Phím ESC 0/59 Phím F1 0/60 Phím F2 0/83 Phím Delete 0/73 Phím PgUp 0/81 Phím PgDn … bangtqh@hotmail.com ↓ Viết chương trình hiển thị lên hình dấu ‘*’ sau cho phép người dùng dùng phím mũi tên di chuyển dấu ‘*’ khắp hình Chương trình kết thúc người dùng bấm phím ESC … Kỹ thuật lập trình C - Cấu trúc lặp 25 04/2010 break continue • Lệnh break thường sử dụng kết hợp lệnh lặp – Dùng để thoát khỏi vịng lặp 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 lệnh break thoat vịng lặp trực tiếp chứa • Lệnh continue – Dùng để quay trở lại từ đầu vịng lặp – Thực lần lặp mà khơng hết lệnh cịn lại thân vịng lặp bangtqh@hotmail.com Kỹ thuật lập trình C - Cấu trúc lặp 26 04/2010 bangtqh@hotmail.com Kỹ thuật lập trình C - Cấu trúc lặp 27 ... Kỹ thuật lập trình C - Cấu trúc lặp 04/ 2010 bangtqh@hotmail.com Kỹ thuật lập trình C - Cấu trúc lặp 04/ 2010 Tính S = + + + + N Vòng lặp chạy ngược từ N trở bangtqh@hotmail.com Kỹ thuật lập trình. .. bangtqh@hotmail.com Kỹ thuật lập trình C - Cấu trúc lặp 19 04/ 2010 Lặp do…while - ví dụ bangtqh@hotmail.com Kỹ thuật lập trình C - Cấu trúc lặp 20 04/ 2010 Lặp while do…while Viết chương trình nhập vào... phím điều khiển bangtqh@hotmail.com Kỹ thuật lập trình C - Cấu trúc lặp 23 04/ 2010 Bắt phím bangtqh@hotmail.com Kỹ thuật lập trình C - Cấu trúc lặp 24 04/ 2010 Kỹ thuật bắt phím Mã Phím điều khiển

Ngày đăng: 11/05/2021, 04:52

Tài liệu cùng người dùng

Tài liệu liên quan