Ngôn ngữ lập trình C/C++ - Tuần 3 - 4

6 397 4
Ngôn ngữ lập trình C/C++ - Tuần 3 - 4

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

Thông tin tài liệu

1 1 NGÔN NGỮ LẬP TRÌNH C/C++ NguyễnHải Châu Khoa Công nghệ thông tin Trường Đạihọc Công nghệ (Bài giảng tuần3-4) 2 Nộidung z Các cấutrúcđiềukhiểnrẽ nhánh và lặp z Làm mộtsố bài tậptrênlớp z Kiểudữ liệumảng z Xâu ký tự 3 Cấutrúcđiềukhiển 4 Câu lệnh rẽ nhánh if…else z Cú pháp: if (<điềukiện>) <khốilệnh 1> Nếu<điềukiện> đúng thì thựchiện<khốilệnh 1> if (<điềukiện>) <khốilệnh 1> else <khốilệnh 2> Nếu<điềukiện> đúng thì thựchiện<khốilệnh 1> Ngượclạithựchiện<khốilệnh 2> 5 Ví dụ câu lệnh if…else Ví dụ 1: if (delta == 0) printf(“Nghiem kep\n”); if (delta == 0) { x1 = x2 = nghiem; printf(“Nghiem kep\n”); } Ví dụ 2: if (delta < 0) printf(“Vo nghiem\n”); else if (delta == 0) printf(“Nghiem kep\n”); else printf(“Hai nghiệm\n”); 6 Câu lệnh lựachọn switch z Câu lệnh if…else chota2 lựachọn z Khi có nhiềulựachọn: if…else lồng nhau z C++ cung cấpcâulệnh khác để lựachọn nhiềukhả năng: switch 2 7 Câu lệnh lựachọn switch: Cú pháp switch (<điềukiện>) { case <biểuthứchằng 1>: [<dãy lệnh 1>]; case <biểuthứchằng 2>: [<dãy lệnh 2>]; …………… : ; case <biểuthứchằng n>: [<dãy lệnh n>]; [default: dãy lệnh n+1;] } 8 Ví dụ câu lệnh switch int th; cout << “Cho biết tháng cần tính: “ ; cin >> th ; switch (th) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: cout << "tháng này có 31 ngày" ; break ; case 2: cout << "tháng này có 28/29 ngày" ; break; case 4: case 6: case 9: case 11: cout << "tháng này có 30 ngày" ; break; default: cout << “Không có tháng này"; } 9 Câu lệnh nhảy goto z Cú pháp: goto <nhãn> z Nhãn là mộttêngọi trong chương trình do ngườilậptrìnhđặttên z Cách viết nhãn: label: <câu lệnh> z Hạnchế dùng câu lệnh goto vì nếulạm dụng câu lệnh này sẽ làm cho chương trình trở nên khó hiểu, dễ sinh lỗi 10 Ví dụ minh họa void main() { long m, n, kq = 0; // Các số cần nhân và kếtquả kq cout << “Nhập m và n: “ ; cin >> m >> n ; lap: // đây là nhãn để chương trình quay lại if (m%2) kq += n; // nếum lẻ thì cộng thêm n vào kq m = m >> 1; // dịch m sang phải1 bit tức m = m / 2 n = n << 1; // dịch m sang trái 1 bit tứcm = m * 2 if (m) goto lap; // quay lạinếum<>0 cout << “m nhân n =” << kq ; } 11 Lệnh lặp for z for (<dãy biểuthức1>;<điềukiện lặp>;<dãy biểuthức 2>) { <khốilệnh lặp>;} z Các biểuthức trong các dãy biểuthức1, 2 cách nhau bởidấuphảy(,) z Điềukiệnlặplàbiểuthức lôgic z Hoạt động: Thựchiện <dãy biểuthức1> z kiểmtra<điềukiệnlặp>, nếu đúng thực hiện<khốilệnh lặp>, thựchiện<dãybi ểu thức 2>, quay lạikiểmtra<điềukiệnlặp> 12 Ví dụ minh họalệnh lặp for void main() { long m, n, kq; // Các số cần nhân và kếtquả kq cout << “Nhập m và n: “ ; cin >> m >> n ; for (kq = 0 ; m ; m >>= 1, n <<= 1) if (m%2) kq += n ; cout << “m nhân n =” << kq ; } 3 13 Ví dụ minh họalệnh lặp for void main() { int i, kq = 0; for (i = 1 ; i <= 100 ; i ++) kq += i ; cout << "Tổng = " << kq; } 14 Lệnh lặp while z Cú pháp: while (<điềukiện>) { <khốilệnh lặp>; } z Hoạt động: Lặplại<khốilệnh lặp> trong khi <điềukiện> đúng. z <khốilệnh lặp> có thể không đượcthực hiệnlần nào nếu<điềukiện> sai. 15 Ví dụ lệnh lặp while void main() // Bài toán cổ 100 chân, 36 con vừagàvừachó { int g, c ; g = 0 ; while (g <= 36) { c = 0 ; while (c <= 50) { if (g + c == 36 && 2*g + 4*c == 100) cout << g << c ; c++; } g++; } } 16 Ví dụ lệnh lặp while void main() // Tìm UCLN theo thuật toán Euclide { int m, n, r; cout << "Nhập m, n: " ; cin >> m >> n ; if (m < n) { int t = m; m = n; n = t; }// nếum<n đổi vai trò m,n while (m != n) { r = m - n ; if (r > n) m = r; else { m = n ; n = r ; } } cout << "UCLN = " << m ; } 17 Ví dụ lệnh lặp while z Tìm nghiệmxấpxỉ củaphương trình e x - 1.5 = 0, trên đoạn[0, 1] với độ chính xác 10 -6 bằng phương pháp chia đôi. void main() { float a = 0, b = 1, c; // các điểm mút a, b và điểmgiữac float fa, fc; // giá trị của f(x) tạicácđiểma, c while (b-a > 1.0e-6) // trong khi độ dài đoạncònlớnhơne { c = (a + b)/2; // tìm điểmc giữa đoạn[a,b] fa = exp(a) - 1.5; fc = exp(c) - 1.5; // tính f(a) và f(c) if (fa*fc == 0) break; // f(c) = 0 tức c là nghiệm if (fa*fc > 0) a = c; else b = c; } cout << "Nghiem xap xi cua phuong trinh = " << c ; } 18 Lệnh lặp do…while z Cú pháp: do {<khốilệnh lặp>} while (<điềukiện>) ; z Hoạt động: Thựchiện<khốilệnh lặp> trong khi <điềukiện> đúng z <khốilệnh lặp> đượcthựchiệnítnhấtmột lần 4 19 Ví dụ câu lệnh do…while z Tính xấpxỉ số π theo công thức Euler với void main() { int n = 1; float S = 0; do S += 1.0/(n*n) while 1.0/(n*n) < 1.0e-6; float pi = sqrt(6*S); cout << "pi = " << pi ; } 2222 2 1 3 1 2 1 1 1 6 n ++++= π 6 2 10 1 − < n 20 Các lệnh break và continue z break dùng để thoát ra khỏimộtkhốilệnh (tứclàtậpcáclệnh nằm trong {}) z continue dùng để quay lại đầu vòng lặp mà không cầnthựchiệnhếttấtcả các lệnh trong khốilệnh lặp 21 Ví dụ lệnh continue // Tìm các số chính phương trong khoảng 1 100 int i ; for (i = 1; i <= 100; i++) { if (i là số chính phương) continue; { // dãy lệnh khác . . } } 22 So sánh cách dùng các câu lệnh lặp z for thường đượcsử dụng trong những vòng lặpmàsố lầnlặp đượcbiếttrước z Ngượclạivớifor, while và do…while thường dùng trong các vòng lặpmàsố lần lặp không biếttrước z Ngượclạivới for, while và do…while thường dùng trong các vòng lặpmàsố lần lặp không biếttrước 23 Mảng (Bảng) và xâu ký tự 24 Mảng mộtchiều z Mảng là một dãy các phầntử cùng kiểu đượcsắpkề nhau liên tục trong bộ nhớ z Các phầntửđược đánh số thứ tựđểphân biệt z Nếumảng có n phầntử thì các phầntử được đánh số từ 0 đến n-1 876543210 5 25 Khai báo mảng z <tên kiểu> <tên mảng>[<số thành phần>] ; // không khởitạo z <tên kiểu> <tên mảng>[<số thành phần>] = { dãy giá trị } ; // có khởitạo z <tên kiểu> <tên mảng>[ ] = { dãy giá trị } ; // có khởitạo 26 Ví dụ về khai báo mảng int a[10]; // Mảng 10 số nguyên không khởitạo // Mảng 3 số thực độ chínhxácképcókhởitạo double b[3] = {1.0, 2.0, -3.4}; // Mảng 5 số thực độ chính xác đơncókhởitạo float f[] = {0.2, 0.3, 0.0, -4.5, -2.1} 27 Ví dụ: Tính tổng, tích của hai phân số void main() { int a[2], b[2], tong[2], tich[2] ; cout << "Nhậpa. Tử = " ; cin >> a[0] ; cout << "mẫu = " ; cin >> a[1] ; cout << "Nhậpb. Tử = " ; cin >> b[0] ; cout << "mẫu = " ; cin >> b[1] ; tong[0] = a[0]*b[1] + a[1]*b[0] ; tong[1] = a[1] * b[1] ; tich[0] = a[0]*b[0]; tich[1] = a[1] * b[1] ; cout << "Tổng = " << tong[0] << '/' << tong[1] ; cout << "Tích = " << tich[0] << '/' << tich[1] ; } 28 Ví dụ: Tìm số bé nhấttrongmột dãy void main() { float a[100], i, n, min, k; // a chứatối đa100 số cout << "Nhậpsố phầntử của dãy: " ; cin >> n; for (i=0; i<n; i++) { cout << "a[" << i << "] = " ; cin >> a[i]; } min = a[0]; k = 0; for (i=1; i<n; i++) if (a[i] < min ) { min = a[i]; k = i; } cout << "Số bé nhất là " << min << "tạivị trí " << k; } 29 Xâu ký tự z Là mảng có kiểu các phầntử là char z Khai báo: char <tên xâu>[độ dài] ; // không khởitạo char <tên xâu>[độ dài] = <xâu kí tự> ; // có khởitạo char <tên xâu>[] = xâu kí tự ; // có khởitạo z Các xâu ký tự có ký tự kết thúc là ‘\0’ 30 Ví dụ khai báo xâu ký tự // Khai báo xâu độ dài 80, không khởitạo char tenfile[80]; // Khai báo xâu độ dài 80, có khởitạo char tenfile[80] = “autoexec.bat”; // Khai báo xâu có khởitạo char tenfile = “config.sys”; 6 31 Mộtsố hàm xử lý xâu ký tự (1) #include <string.h> z strcpy(s,t): gán nội dung củaxâut choxâus z strncpy(s, t, n): Sao n ký tựđầutiêncủa xâut vàoxâus z strcat(s, t): Nối xâu t vào xâu s z strncat(s, t, n): Nối n ký tựđầutiêncủaxâu t vào xâu s 32 Mộtsố hàm xử lý xâu ký tự (2) z strcmp(s, t): So sánh hai xâu s và t: {Nếu s < t thì trả lạikếtquả âm {Nếu s == t hàm trả kếtquả bằng 0 {Nếu s > t hàm trả kếtquả dương z strncmp(s, t, n): Giống strcmp nhưng chỉ thao tác với n ký tựđầutiêncủa hai xâu z strcmpi(s, t): Giống strcmp nhưng không phân biệtchữ hoa và chữ thường z strlen(s): Trả lại độ dài củaxâus 33 Mảng hai chiều z Khai báo: <kiểu thành phần> <tênmảng>[m][n]; z Ví dụ: // Khai báo ma trậnkíchthước 10x20 double matran[10][20]; // Chỉ số hàng chạytừ 0 9 // Chỉ số cộtchạytừ 0 19 34 Các vấn đề cầnnhớ z Các câu lệnh rẽ nhánh và lặp z Sự khác nhau giữacáccâulệnh if else và switch z Sự khác nhau giữa for, while và do…while z Cách sử dụng break và continue z Mảng 1 chiều, 2 chiều z Xâu ký tự, các hàm thư viện thao tác xâu ký tự 35 Bài tập z 45 bài tậptừ trang 78 đến trang 82 trong tập bài giảng z Giải các bài tập trên trong giờ thực hành

Ngày đăng: 08/05/2014, 16:34

Từ khóa liên quan

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

  • Đang cập nhật ...

Tài liệu liên quan