Bài giảng Tin học đại cương - Chương 4: Ngôn ngữ lập trình C - Nguyễn Lê Minh

Giới thiệu

 Năm 1970 Ken Thompson sáng tạo ra ngôn ngữ B (Basic Combined

Programming Language) trên môi trường HĐH Unix của máy DEC PD-7

 Năm 1972 Dennis Ritchie ở Bell Labotories cùng Ken Thompson sáng

tạo ra ngôn ngữ C nhằm tăng hiệu quả cho ngôn ngữ B.

 Ngôn ngữ C nhanh chóng phổ biến rộng rãi và được sử dụng để viết nên

HĐH đa nhiệm UNIX, O/S 2, và ngôn ngữ Dbase.

 Phát triển thành C++ vào năm 1983 hỗ trợ lập trình hướng đối tượng

 Có nhiều trình biên dịch C khác nhau

 Turbo C (từ ver 1 tới ver 3), Microsoft C (ver 1 tới ver 6)

 C++ với 3 trình biên dịch nổi tiếng Borland C++, Visual C++, và Turbo

C++

 Trình ứng dụng hỗ trợ:

 Borland C++ 5.02 hoặc C-Free hoặc Dev C++

pdf 82 trang yennguyen 3640
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Tin học đại cương - Chương 4: Ngôn ngữ lập trình C - Nguyễn Lê Minh", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Tin học đại cương - Chương 4: Ngôn ngữ lập trình C - Nguyễn Lê Minh

Bài giảng Tin học đại cương - Chương 4: Ngôn ngữ lập trình C - Nguyễn Lê Minh
TIN HỌC ĐẠI CƯƠNG
Chương 4: NGÔN NGỮ LẬP TRÌNH C
GV: Nguyễn Lê Minh
Bộ môn: Công nghệ thông tin
3/6/2020
Giới thiệu
 Năm 1970 Ken Thompson sáng tạo ra ngôn ngữ B (Basic Combined
Programming Language) trên môi trường HĐH Unix của máy DEC PD-7
 Năm 1972 Dennis Ritchie ở Bell Labotories cùng Ken Thompson sáng
tạo ra ngôn ngữ C nhằm tăng hiệu quả cho ngôn ngữ B.
 Ngôn ngữ C nhanh chóng phổ biến rộng rãi và được sử dụng để viết nên
HĐH đa nhiệm UNIX, O/S 2, và ngôn ngữ Dbase.
 Phát triển thành C++ vào năm 1983 hỗ trợ lập trình hướng đối tượng
 Có nhiều trình biên dịch C khác nhau
 Turbo C (từ ver 1 tới ver 3), Microsoft C (ver 1 tới ver 6)
 C++ với 3 trình biên dịch nổi tiếng Borland C++, Visual C++, và Turbo
C++
 Trình ứng dụng hỗ trợ:
 Borland C++ 5.02 hoặc C-Free hoặc Dev C++
2
Tập ký tự
 Mọi ngôn ngữ đều được xây dựng trên 1 bộ ký tự. Bộ ký tự trong 
C gồm:
- Các chữ cái in hoa: A, B, C,....,Z
- Các chữ cái thường: a, b, c,...,z
- Các chữ số: 0, 1,2,...,9
- Các loại dấu chấm câu . ! ? : ;
- Các dấu toán học: + , - , * , / , %, >, <, =, ( , )
- Các dấu đặc biệt: @, #, &, A, $ { , } , [, ], \, |
- Các ký tự không nhìn thấy: Space, Enter, Tab
- Dấu gạch dưới _
3
Từ khóa
■ Là các từ dùng riêng cho ngôn ngữ
■ Từ khoá phải được dùng đúng cú pháp quy định
■ Mọi từ khoá đều viết thường (không viết in hoa)
■ Các từ khoá thường gặp.
4
Tên và cách đặt tên
 Dùng để định danh các thành phần của chương trình
 Tên biến, tên hàm, tên hằng, file, cấu trúc...
 Gồm chữ số dấu gạch nối “_”
 Độ dài tối đa 32
 Lưu ý:
- Không được chứa kí tự trống (space)
- Không được bắt đầu bằng một chữ số
- Không được trùng với từ khóa
- Không đặt tên ở dạng số mũ hoặc chỉ só (vd: H2SO4)
- Không đặt tên với ký tự tiếng việt (vd: SốMaX, TổngChẵn...v.v)
 Nên đặt tên một cách gợi nhớ có ý nghĩa.
 Tên chuẩn: một số tên có sẵn của trình biên dịch.
 C là ngôn ngữ phân biệt viết hoa, viết thường
5
Tên và cách đặt tên
■ Cách đặt tên nào đúng:
a) Hoc-tap
b) Bien2
c) _HangSo
d) 2SinhVien
e) Lớp
f) char
g) Sinh_vien
h) Mon hoc
i) Ngay,sinh
6
Nội dung
1. Các khái niệm cơ bản
2. Các kiểu dữ liệu
3. Các lệnh điều khiển
4. Bài tập thực hành
3/6/2020 7
Nội dung
1. Các khái niệm cơ bản
2. Các kiểu dữ liệu
3. Các lệnh điều khiển
4. Bài tập thực hành
3/6/2020 8
1.1 Các khái niệm cơ bản
 Hằng:
- Là đại lượng có giá trị không thay đổi được
- Ví dụ:
• 124 Là một hằng số
• ‘D’ Là một hằng ký tự
• “Lap trinh” Là một hằng chuỗi ký tự
 Biến
- Là đại lượng có thể thay đổi được giá trị (gán giá trị mới)
 Biểu thức
- Là công thức tính toán để có 1 giá trị theo quy tắc toán học
- Gồm các toán hạng và các phép toán (toán tử)
• Toán hạng: hằng, biến, hàm hoặc biểu thức khác.
• Phép toán: Số học, luận lý, gán, điều kiện, lấy địa chỉ, tăng giảm
1.1 Các khái niệm cơ bản
Các phép toán hỗ trợ trong C
■ Số học: + , - , * , / , %
■ Luận lý: ==, !=, >, =, <=, &&, ||, !
■ Gán giá trị: =
■ Lấy kích cỡ theo số byte: sizeof(đốitượng)
■ Điều kiện: ĐK ? E1 : E2
■ Lấy địa chỉ: &(biến)
■ Tăng giảm: x++, ++x, x--, --x
tong+=i; tich*=i;
%= , /= , -=, &=, |=, ^=
1.1 Các khái niệm cơ bản
Các hàm toán học thông dụng
Các biểu thức phức tạp phải 
sử dụng biến đổi toán học 
để có được biểu diễn tương ứng trong C.
1.1 Các khái niệm cơ bản
Khai báo biến
Cú pháp
Kiểudữliệu TÊNBIẾN; 
Kiểudữliệu Biếnl, Biến2;
Kiểudữliệu TÊNBIẾN = giátrịbanđầu;
Ví dụ
int sole;
float tbc, tong;
char Enter = '\n';
Lưu ý: Biến có thể khai báo bất kỳ đâu trong chương trình miễn là trước khi sử 
dụng.
1.1 Các khái niệm cơ bản
Khai báo hằng
Cú pháp
#define TÊNHẰNG giátrị
hoặc
const kiểudữliệu TÊNHẰNG = giátrị;
Ví dụ
#define MAX 100 
const int SOPT = 100;
Lưu ý: hằng phải được khai báo trước khi sử dụng
1.1 Các khái niệm cơ bản
Phép gán giá trị
■ Cú pháp
■ Ví dụ:
int x, y, z;
x=0;
50=x; //sai
3+y=x; //sai
Z=x+y; 
x+y=z; //sai
TênBiến = Biểu thức giá trị ;
1.1 Các khái niệm cơ bản
Câu lệnh - chú thích
Câu lệnh: Là một chỉ thị yêu cầu máy tính thực thi một tác vụ nào đó. Một 
câu lệnh phải kết thúc bởi một dấu chấm phẩy “;”
Chú thích:
■ Trên 1 dòng: // Chú thích trên một dòng
■ Trên nhiều dòng:
/*
Chú thích trên nhiều dòng.
*/
Các chỉ thị
tiền biên dịch:
Cấu trúc 1 chương trình C
16
#include 
#include 
const int MAX=100; //khai bao hang
float X, y, z;//khai bao bien
void nhapSL();
void inKQ();
float max2so(int, int) ;
int main(void) {
nhapSL(); 
z = max2so(x, ỵ) ; 
inKQ(); 
getch();
return 0;
}
void nhapSL (){
printf("Nhap X va y:”); 
scanf("%f%f", &x, &y);
}
void inKQ() {
printf(“So lon nhat = %.2f", z);
}
float max2so(int a, int b)(
return a>b? a:b; 
}
1.1 Các khái niệm cơ bản
Một số quy tắc cần nhớ
■ Đặt tên biến, hằng, hàm,... một cách gợi nhớ
■ Khi sử dụng biến, hằng cần kiểm tra lại xem biến hằng đó đã được
khai báo trước đó hay chưa ?
■ C là ngôn ngữ phân biệt hoa/thường => phải kiểm tra kỹ từng ký tự
khi viết
■ Loại bỏ các chỉ thị #include không cần thiết (để lại sẽ làm
chậm quá trình biên dịch và tăng kích thước file *.exe sau biên dịch)
■ Viết chương trình theo cấu trúc khối (phân cấp thụt đầu dòng)
■ Chương trình viết xong chưa thể biết được đúng hay sai => phải
chạy thử với các bộ số liệu khác nhau (nên test thử với các bộ số liệu
đặc biệt)
Nội dung
1. Các khái niệm cơ bản
2. Các kiểu dữ liệu
3. Các lệnh điều khiển
4. Bài tập thực hành
3/6/2020 18
1.2 Các kiểu dữ liệu
■ Các kiểu dữ liệu cơ bản
- Số
- Ký tự
- Chuỗi ký tự
- Mảng
■ Ép kiểu trong C
■ Nhập xuất dữ liệu trong C
1.2 Các kiểu dữ liệu
Kiểu số
1.2 Các kiểu dữ liệu
Kiểu ký tự
■ Ví dụ:
- Ký tự 'A' có mã 65
- Ký tự '0' có mã 48
■ Các ký tự đặc biệt:
'\0‘ : ký tự Null (có mã = 0) ký tự
'\n‘ : xuống dòng (new line) ký tự
'\t‘ : Tab
1.2 Các kiểu dữ liệu
Bảng mã ASCII
(https://vi.wikipedia.org/wiki/ASCII) 
1.2 Các kiểu dữ liệu
Kiểu chuỗi (xâu ký tự)
- Một dãy các ký tự đứng liền nhau được gọi là 1 xâu ký tự.
- Ngôn ngữ C hiểu ký tự ‘\0’ là ký tự kết thúc xâu =>Chỉ lưu biết
địa chỉ của ký tự đầu tiên của chuỗi
- Một hằng xâu ký tự đặt trong cặp dấu “nháy kép”
Ví dụ:
“Ho Chi Minh” là hằng xâu ký tự
Khai báo biến xâu: char tênbiếnxâu[số byte];
1.2 Các kiểu dữ liệu
Kiểu mảng – Array
- 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
1.2 Các kiểu dữ liệu
Kiểu mảng – Array (Tiếp)
Khai báo:
kiểucơsở TênBiến[Sốphầntử];
Ví dụ:
– int a[100];
//a là mảng biểu diễn dãy gồm 100 số nguyên int
– float b[10];
■ long int big[100];
■ double d[100];
■ long double v[SIZE];
■ int a[5] = { 10, 20, 30, 40, 50};
■ double d[] = { 1.5, 2.7};
1.2 Các kiểu dữ liệu
Kiểu mảng – Array (Tiếp)
• 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ố
1.2 Các kiểu dữ liệu
Ép kiểu (Casting)
Cú pháp
■ (kiểu_mới) biểu thức 
hoặc 
■ kiểu_mới (biểu thức)
1.2 Các kiểu dữ liệu
Đặc tả định dạng
• %d: đọc vào một số nguyên int
• %u: đọc vào một số nguyên unsigned int
• %x: đọc vào một số nguyên hệ 16
• %o: đọc vào một số nguyên hệ bát phân
• %s: đọc vào một sâu kí tự 
• %c: đọc vào một kí tự đơn char
• %f: đọc vào một số thực float
• %e: số chấm động (ký hiệu có số mũ)
• %hd: đọc vào một số nguyên short int
• %lf,%lu: đọc vào một số thực double
1.2 Các kiểu dữ liệu
Nhập / Xuất dữ liệu
Xuất dữ liệu
– In ra màn hình
–Xuất ra máy in
–Xuất ra các cổng
Nhập dữ liệu
–Nhập từ bàn phím
–Nhập từ file
–Nhập từ các cổng
1.2 Các kiểu dữ liệu
Xuất ra màn hình – Hàm Printf
Thuộc thư viện “stdio.h”
Cú pháp:
printf(“Xâu điều khiển”, [ danh sách tham số]);
Ví dụ:
1.2 Các kiểu dữ liệu
Hàm Printf
• Xâu điều khiển bao gồm 3 loại kí tự
• Các kí tự điều khiển
• \n sang dòng mới
• \f sang trang mới
• \b xóa kí tự bên trái
• \t dấu Tab
• Các kí tự để đưa ra màn hình
• Các kí tự định dạng và khuôn in
• Ví dụ: %.2f %8d %s %-5c
1.2 Các kiểu dữ liệu
Hàm Printf
In các ký tự đặc biệt
• Công thức định dạng
%[-][w][.p]Kt
– W: wide (độ rộng)
– P: precse (độ chính xác)
– Kt: Ký tự chuyển dạng
• Giá trị của w
– Nhỏ hơn hoặc bằng độ rộng thực tế => in bình thường
– Lớn hơn độ rộng thực tế (chèn thêm khoảng trống cho đủ độ rộng là w (nếu có dấu
trừ chèn bên phải, ngược lại chènbên trái)
• Giá trị p: quy định làm tròn đến bao nhiêu chữ số đằng sau chấm thập phân.
1.2 Các kiểu dữ liệu
Hàm Printf (tiếp)
1.2 Các kiểu dữ liệu
Hàm puts
• Thư viện: “stdio.h”
• Công dụng: in ra màn hình 1 xâu ký tự
• Ví dụ:
1.2 Các kiểu dữ liệu
Hàm Putchar()
• Thư viện: “stdio.h”
• Ý nghĩa: Dùng để in một kí tự lên màn hình.
• Cú pháp: putchar(ch);
• Ch: chứa mã của kí tự cần in ra màn hình
• Ví dụ: 
• putchar(‘A’);
1.2 Các kiểu dữ liệu
Hàm sprintf
• Thư viện: “stdio.h”
• Công dụng: giống printf, chỉ khác ở điểm kết quả không xuất ra màn 
hình mà đưa vào 1 biến xâu.
• Ví dụ:
1.2 Các kiểu dữ liệu
Nhập dữ liệu – Hàm Scanf
• Thuộc thư viện “stdio.h”
• Cú pháp:
scanf(“Xâu điều khiển”,);
• Xâu điều khiển: Cho phép định dạng dữ liệu nhập vào
• Danh sách tham số: Là địa chỉ các biến cần nhập liệu
• Sử dụng toán tử & để xác định địa chỉ các biến.
• Ví dụ:
• scanf(“%d%f%c”, &x, &y, &z);
• scanf(“%s”, &hoten);
1.2 Các kiểu dữ liệu
Hàm Scanf
• Không thông báo cho người dùng biết
giá trị cần nhập là giá trị gì? => Phải
kết hợp với lệnh xuất dữ liệu
• Không nhận được xâu có dấu cách
trống
• Không xóa ký tự thừa trong bộ đệm
=> ảnh hưởng tới lệnh nhập phía sau.
1.2 Các kiểu dữ liệu
Sử dụng fflush sau scanf
Công dụng:
• Xóa những ký tự thừa còn dư lại 
trong bộ đệm của scanf
1.2 Các kiểu dữ liệu
Kết hợp nhập 
xuất dữ liệu
1.2 Các kiểu dữ liệu
Hàm Gets
• Thư viện: “conio.h”
• Công dụng: nhập vào 1 xâu ký tự
• Ví dụ:
1.2 Các kiểu dữ liệu
1.2 Các kiểu dữ liệu
Một số hàm nhập / xuất dữ liệu khác
1.2 Các kiểu dữ liệu
Bài tập:
1. Viết chương trình tính chu vi và diện tích của hình tròn.
2. Viết chương trình nhập tọa độ của 3 điểm A, B, C trên mặt phẳng.
Tính và in ra màn hình chu vi, diện tích của tam giác ABC.
3. Viết chương trình nhập họ tên, hệ số lương của 1 nhân viên. Tính
và in ra màn hình số tiền còn lĩnh của nhân viên đó sau khi trừ đi
các khoản: BHYT 1.5%, BH thất nghiệp 1% và Đảng phí 1%.
4. Viết chương trình hiện ra màn hình diện tích của tứ diện ABCD 
biết rằng A, B, C có tọa độ nhập từ bàn phím (XA, YA) (XB, YB) (XC, 
YC) và chiều cao từ đỉnh D xuống mặt phẳng ABC là h.
Nội dung
1. Các khái niệm cơ bản
2. Các kiểu dữ liệu
3. Các lệnh điều khiển
4. Bài tập thực hành
3/6/2020 45
1.3 Các lệnh điều khiển
Khái niệm khối lệnh
Cấu trúc rẽ nhánh
–Rẽ nhánh if
–Rẽ nhánh switch.case
Cấu trúc lặp
–Lặp theo biến đếm – Lặp dạng for
–Lặp theo điều kiện
■Dạng while
■Dạng do.while
–Câu lệnh break và continue
1.3 Các lệnh điều khiển
Khái niệm khối lệnh
Khối lệnh gồm nhiều lệnh đặt trong cặp dấu { }
Ví dụ: 
• Khối lệnh thường được dùng trong các cấu trúc điều khiển. Nếu
muốn 1 cấu trúc điều khiển tác động lên nhiều lệnh thì các lệnh đó
phải đặt trong 1 khối lệnh
• Các khối lệnh có thể viết lồng nhau (lưu ý sử dụng cách viết theo
cấu trúc khối cho dễ phân biệt)
1.3 Các lệnh điều khiển
Toán tử luận lý
1.3 Các lệnh điều khiển
Cấu trúc rẽ nhánh
• Rẽ nhánh dạng if
• Cú pháp:
if ( điều kiện)
;
if ( điều kiện)
;
else
;
• Công dụng:
• Thực hiện 1 trong 2 lệnh tùy thuộc vào điều kiện đúng/sai.
• Nếu thực nhiện nhiều hơn 1 lệnh => phải để trong cặp dấu { }
1.3 Các lệnh điều khiển
Cấu trúc rẽ nhánh (tiếp)
Ví dụ: Kiểm tra số chẵn lẻ
1.3 Các lệnh điều khiển
Bài tập
• Kiểm tra 1 số nhập vào có phải là số chẵn lớn hơn 10 hoặc số lẻ 
nhỏ hơn 10.
• Kiểm tra các cạnh nhập vào có tạo thành một tam giác hay không?
• Biện luận giải phương trình bậc 2 .
1.3 Các lệnh điều khiển
Kiểm tra các cạnh nhập vào 
có tạo thành một tam giác
đều hay không ?
1.3 Các lệnh điều khiển
Giải phương trình
bậc 2
1.3 Các lệnh điều khiển
Lưu ý: Sử dụng khối lệnh trong If – Else
• Nếu sau if hoặc else tác động lên nhiều hơn 1 lệnh thì phải sử dụng cặp 
dấu { }
• Nếu sau if có dấu ; thì điều kiện không còn tác động đến lệnh phía
sau
1.3 Các lệnh điều khiển
Lưu ý: Sử dụng khối lệnh trong If - Else (tiếp)
• Giá trị số cũng được coi là điều kiện (số = 0: điều kiện sai; số ≠ 0: 
điều kiện đúng)
Delta=0?
1.3 Các lệnh điều khiển
Sử dụng If – Else
• Khi muốn chọn 1 trong n quyết định thì sử dụng else if :
1.3 Các lệnh điều khiển
Chương trình xếp loại học lực
theo điểm trung bình
1.3 Các lệnh điều khiển
Sử dụng toán tử ? thay If
• Cú pháp:
(điều kiện) ? lệnh 1 : lệnh 
2 ;
• Công dụng:
• Lệnh 1 được thực hiện nếu điều 
kiện đúng
• Lệnh 2 được thực hiên nếu điều 
kiện sai
• Ví dụ:
1.3 Các lệnh điều khiển
Cấu trúc rẽ nhánh Switch...Case
• Rẽ nhánh if chỉ cho phép chọn một trong hai phương án
• Rẽ nhánh switch  case cho phép chọn một trong nhiều phương án.
• Cú pháp:
switch (biểu thức nguyên) { 
case n1:
Các câu lệnh;
case n2:
Các câu lệnh;
...
case nk:
Các câu lệnh;
[default: Các câu lệnh;]
}
1.3 Các lệnh điều khiển
Cấu trúc rẽ nhánh Switch...Case
 Công dụng
• Nếu biểu thức nguyên có giá trị bằng nhãn ni thì máy sẽ nhảy đến
thực hiện các lệnh của nhãn đó, nếu không thì máy sẽ nhảy đến
thực hiện các lệnh trong thành phần tùy chọn default
• Máy sẽ ra khỏi toán tử switch khi nó gặp câu lệnh break, return
hoặc nó gặp dấu “}” của câu lệnh switch
• Chú ý, khi máy nhảy tới nhãn ni, nếu kết thúc dãy lệnh trong nhãn
này không có câu lệnh break hoặc return thì máy sẽ tiếp tục thực
hiện các lệnh trong nhãn ni+1
• Thường cuối mỗi dãy lệnh của một nhãn có một lệnh break
1.3 Các lệnh điều khiển
Ví dụ
1.3 Các lệnh điều khiển
Ví dụ
1.3 Các lệnh điều khiển
Bài tập:
1. Viết chương trình tìm giao điểm của đường tròn tâm O (x0, y0) bán kính 
R với đường thẳng y = ax + b
2. Viết chương trình tính giá trị căn bậc N của số nguyên X (N và X đều 
nhập từ bàn phím)
3. Viết chương trình cho phép giải hệ phương trình bậc nhất 2 ẩn x, y
4. Viết chương trình nhập số nguyên x ≤ 9999 sau đó in ra màn hình 
cách đọc số nguyên x theo phiên âm tiếng việt (ví dụ: 2010 – hai nghìn 
không trăm mười)
5. Viết chương trình cho phép nhập tọa độ 3 điểm A, B, C trên mặt 
phẳng. Hãy cho biết tam giác ABC có là tam giác cân hay không? Chu 
vi và diện tích của tam giác?
1.3 Các lệnh điều khiển
Cấu trúc 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
• Cách 1:
printf(“1\n”);
printf(“2\n”);
printf(“10\n”);
• Cách 2:
Lặp i chạy từ 1 tới 10
printf(“%d\n”, i);
1.3 Các lệnh điều khiển
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 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ó
1.3 Các lệnh điều khiển
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.
1.3 Các lệnh điều khiển
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
1.3 Các lệnh điều khiển
1.3 Các lệnh điều khiển
Nhận xét
• 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.
1.3 Các lệnh điều khiển
Lặp For trên dữ liệu kiểu Array
1.3 Các lệnh điều khiển
Bài tập
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. Hiển thị tất cả các số nguyên tố ≤ N
5. 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 (dùng vòng lặp For).
1.3 Các lệnh điều khiển
Bài tập (tiếp)
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.
1.3 Các lệnh điều khiển
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
1.3 Các lệnh điều khiển
Lặp dạng While
1.3 Các lệnh điều khiển
Lưu ý
• Nhận xét
• Biểu thức điều kiện luôn dược đặt trong cặp dấu “(” và “)”
• 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 lệnh while
1.3 Các lệnh điều khiển
Lặp dạng Do...While
• Cú pháp
do
{
các lệnh của thân vòng lặp;
} while (biểu thức);
• Ý 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
1.3 Các lệnh điều khiển
Ví dụ
1.3 Các lệnh điều khiển
Bài tập:
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 dowhile
4. Chuyển đoạn mã lệnh dạng dowhile thành dạng while
1.3 Các lệnh điều khiển
break và continue
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ỉ thoát 
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
Nội dung
1. Các khái niệm cơ bản
2. Các kiểu dữ liệu
3. Các lệnh điều khiển
4. Bài tập thực hành
3/6/2020 80
1. Hãy viết chương trình tìm và in ra các số là số nguyên tố trong dãy số a1, 
a2,...,aN
2. Hãy viết chương trình tính giá trị của biểu thức
3. Hãy viết chương trình tìm trong số các phần tử của dãy a1, a2,...,aN có 
bao nhiêu cặp (ai, aj) với i≠j thỏa điều kiện ai+aj = x
4. Hãy viết chương trình đổi một số nguyên dương N sang hệ đếm cơ số 
2 (hệ nhị phân).
5. Hãy viết chương trình giải phương trình bậc 2 ax2+ bx + c = 0
81
6. Hãy viết chương trình tìm tích của 2 ma trận Amxn và Bnxp
7. Hãy viết chương trình tìm độ dài của đường gấp khúc đi qua N điểm 
trên mặt phẳng M1(x1, y1), M2(x2, y2),....,Mn(xn, yn).
8. Hãy viết chương trình sắp xếp lại dãy số a1, a2,...,an theo thứ tự giảm
dần.
9. Hãy Viết chương trình tìm các phần tử trong dãy a1, a2,...,an thỏa điều 
kiện ai = ai-1 + ai-2 + ...+ a2+ a1
10.Viết chương trình tìm trung bình cộng của các phần tử là số chính 
phương trong dãy a1, a2,...,aN
82

File đính kèm:

  • pdfbai_giang_tin_hoc_dai_cuong_chuong_4_ngon_ngu_lap_trinh_c_ng.pdf