Tài liệu này dành cho sinh viên, giáo viên khối ngành công nghệ thông tin tham khảo và có những bài học bổ ích hơn, bổ trợ cho việc tìm kiếm tài liệu, giáo án, giáo trình, bài giảng các môn học khối ngành công nghệ thông tin
Trang 1NGÔN NGỮ LẬP TRÌNH C/C+
+
(Bài giảng tuần 3-4)
Trang 3Cấu trúc điều khiển
Trang 4Câu lệnh rẽ nhánh if…else
if (<điều kiện>) <khối lệnh 1>
Nếu <điều kiện> đúng thì thực hiện <khối lệnh
1>
if (<điều kiện>) <khối lệnh 1> else <khối lệnh 2>
Nếu <điều kiện> đúng thì thực hiện <khối lệnh
1>
Trang 5else if (delta == 0) printf(“Nghiem kep\n”);
else printf(“Hai nghiệm\n”);
Trang 6Câu lệnh lựa chọn switch
Câu lệnh if…else cho ta 2 lựa chọn
Khi có nhiều lựa chọn: if…else lồng nhau
C++ cung cấp câu lệnh khác để lựa chọn
nhiều khả năng: switch
Trang 7Câu lệnh lựa chọn switch: Cú pháp
switch (<điều kiện>)
{
case <biểu thức hằng 1>: [<dãy lệnh 1>];
case <biểu thức hằng 2>: [<dãy lệnh 2>];
……… : ;
case <biểu thức hằng n>: [<dãy lệnh n>];
[default: dãy lệnh n+1;]
}
Trang 8case 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";
Trang 9Câu lệnh nhảy goto
Hạn chế dùng câu lệnh goto vì nếu lạ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
Trang 10lap:// đây là nhãn để chương trình quay lại
if (m%2) kq += n; // nếu m lẻ thì cộng thêm n vào kq
m = m >> 1; // dịch m sang phải 1 bit tức m = m / 2
n = n << 1; // dịch m sang trái 1 bit tức m = m * 2
if (m) goto lap; // quay lại nếu m<>0
cout << “m nhân n =” << kq ;
}
Trang 11Lệnh lặp for
for (<dãy biểu thức 1>;<điều kiện lặp>;<dãy
biểu thức 2>) { <khối lệnh lặp>;}
Các biểu thức trong các dãy biểu thức 1, 2
cách nhau bởi dấu phảy (,)
Điều kiện lặp là biểu thức lôgic
Hoạt động: Thực hiện <dãy biểu thức 1>
kiểm tra <điều kiện lặp>, nếu đúng thực hiện
<khối lệnh lặp>, thực hiện <dãy biểu thức 2>,
quay lại kiểm tra <điều kiện lặp>
Trang 12Ví dụ minh họa lệnh lặp for
}
Trang 13Ví dụ minh họa lệnh lặp for
Trang 14Lệnh lặp while
while (<điều kiện>) { <khối lệnh lặp>; }
Hoạt động: Lặp lại <khối lệnh lặp> trong khi
<điều kiện> đúng.
<khối lệnh lặp> có thể không được thực hiện
lần nào nếu <điều kiện> sai.
Trang 16cout << "UCLN = " << m ;
Trang 17Ví dụ lệnh lặp while
Tìm nghiệm xấp xỉ của phươ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
c = (a + b)/2; // tìm điểm c 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 ;
Trang 18Lệnh lặp do…while
do {<khối lệnh lặp>} while (<điều kiện>) ;
Hoạt động: Thực hiện <khối lệnh lặp> trong
khi <điều kiện> đúng
<khối lệnh lặp> được thực hiện ít nhất một lần
Trang 192 2
3
1 2
1 1
Trang 20Các lệnh break và continue
break dùng để thoát ra khỏi một khối lệnh (tức
là tập các lệnh nằm trong {})
continue dùng để quay lại đầu vòng lặp mà
không cần thực hiện hết tất cả các lệnh trong
khối lệnh lặp
Trang 22So sánh cách dùng các câu lệnh lặp
lặp mà số lần lặp được biết trước
Ngược lại với for, while và do…while thường
Trang 23Mảng (Bảng) và xâu ký tự
Trang 24Mảng một chiều
Mảng là một dãy các phần tử cùng kiểu được
sắp kề nhau liên tục trong bộ nhớ
Các phần tử được đánh số thứ tự để phân biệt
Nếu mảng có n phần tử thì các phần tử được
đánh số từ 0 đến n-1
Trang 25Khai báo mảng
<tên kiểu> <tên mảng>[<số thành phần>] ;
// không khởi tạo
<tên kiểu> <tên mảng>[<số thành phần>] =
{ dãy giá trị } ; // có khởi tạo
<tên kiểu> <tên mảng>[ ] = { dãy giá trị } ;
// có khởi tạo
Trang 27Ví 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ập a Tử = " ; cin >> a[0] ;
cout << "mẫu = " ; cin >> a[1] ;
cout << "Nhập b 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] ;
Trang 28cout << "Nhập số phần tử 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ại vị trí " << k;
Trang 29Xâu ký tự
Là mảng có kiểu các phần tử là char
Khai báo:
char <tên xâu>[độ dài] ; // không khởi tạo
char <tên xâu>[độ dài] = <xâu kí tự> ; // có
khởi tạo
char <tên xâu>[] = xâu kí tự ;
// có khởi tạo
Các xâu ký tự có ký tự kết thúc là ‘\0’
Trang 30Ví dụ khai báo xâu ký tự
// Khai báo xâu độ dài 80, không khởi tạo
char tenfile[80];
// Khai báo xâu độ dài 80, có khởi tạo
char tenfile[80] = “autoexec.bat”;
// Khai báo xâu có khởi tạo
char tenfile = “config.sys”;
Trang 31Một số hàm xử lý xâu ký tự (1)
#include <string.h>
strcpy(s,t): gán nội dung của xâu t cho xâu s
strncpy(s, t, n): Sao n ký tự đầu tiên của xâu t
vào xâu s
strcat(s, t): Nối xâu t vào xâu s
strncat(s, t, n): Nối n ký tự đầu tiên của xâu t
vào xâu s
Trang 32thao tác với n ký tự đầu tiên của hai xâu
strcmpi(s, t): Giống strcmp nhưng không
phân biệt chữ hoa và chữ thường