SlideShare uma empresa Scribd logo
1 de 81
Baixar para ler offline
1
Dich vu Content marketing
Trường ĐH CNTP TP.HCM
Khoa: CÔNG NGHỆ THÔNG TIN
Bộ môn: CÔNG NGHỆ PHẦN MỀM
Môn: TH NGÔN NGỮ LẬP TRÌNH
BÀI 1
TỔNG QUAN – CÁC KIỂU
DỮ LIỆU & PHÉP TOÁN
A. MỤC TIÊU:
Sử dụng được phần mềm Visual C++.Net
Vận dụng được tri thức về kiểu dữ liệu và biến trong lập trình
Xây dựng được chương trình
Sử dụng được hàm printf và scanf để nhập và xuất dữ liệu Sử dụng được các
chuỗi định dạng khác nhau khi xuất dữ liệu Biết cách chuyển đổi các kiểu dữ liệu
với nhau.
Thực thi chương trình
B. DỤNG CỤ - THIẾT BỊ THÍ NGHIỆM CHO MỘT SV:
STT Chủng loại – Quy cách vật tư Số lượng Đơn vị Ghi chú
1 Máy tính (có thể là máy bàn hoặc laptop). 1 Chiếc
C. VẬT LIỆU
Visual C++.Net.
Phần mềm hỗ trợ dạy học: NetOp School hoặc NetSupport School.
D. NỘI DUNG THỰC HÀNH
I. Tóm tắt lý thuyết
1. Sử dụng Visual C++.Net để viết chương trình
– Khởi động Visual Studio.Net
2
– Vào File -> New -> Project
– Chọn Visual C++ -> Win32 Console Application -> Đặt tên (Name) và chọn thư
mục lưu Project (Location) -> Chọn OK
– Nhấn chuột phải vào Source files trên thanh Solution Explorer (bên phải) -> Add
> New Item
3
– Chọn C++ File -> Đặt tên File (Name) -> Add.
– Sau đó viết code vào màn hình soạn thảo
– Thực thi chương trình: Nhấn phím F5 hoặc vào Debug -> Start Debugging. 2. Các
kiểu dữ liệu cơ sở
– Kiểu ký tự:
• Tên kiểu: char
• Miền giá trị: 256 ký tự trong bảng mã ASCII.
• Chính là kiểu số nguyên do nó lưu tất cả dữ liệu ở dạng số và không lưu
trực tiếp ký tự mà chỉ lưu mã ASCII của ký tự đó. Mã Ascii từ „A‟ đến
„Z‟ là 65 đến 90 Mã Ascii từ „a‟ đến „z‟ là 97 đến 122.
– Kiểu luận lý:
• Trong C chuẩn không có kiểu luận lý. Giá trị sai (false) là 0, giá trị đúng
(true) là khác 0 (thường là 1).
• C++: kiểu luận lý là bool
– Kiểu số nguyên
– Kiểu số thực:
4
3. Biến – hằng – câu lệnh và biểu thức
– Biến
• Cú pháp:
 <kiểu> <tên biến>;
 <kiểu> <tên biến 1>, <tên biến 2>;
• Ví dụ:
 int i;
 int x;
 int j, k;
– Hằng Cú pháp:
 #define <tênhằng> <giá trị> 
Hoặc sử dụng từ khóa const.
• Ví dụ:
 #define MAX 100 // Không có dấu;
 #define PI 3.14 // Không có dấu ;
 const int MAX = 100;
 const float PI = 3.14;
– Câu lệnh: được kết thúc bằng dấu chấm phẩy (;)
• Câu lệnh đơn: chỉ gồm 1 câu lệnh
• Câu lệnh phức: gồm nhiều câu lệnh đơn được bao bởi { và }
• Ví dụ:
 a = 2912; // Câu lệnh đơn
 { // Câu lệnh phức/khối lệnh a = 2912; b =
1706;
}
– Biểu thức: Được tạo thành từ các toán tử (Operator) và các toán hạng
(Operand). Ví dụ: int a = 2 + 3 * 4; 4. Chuỗi định dạng
5. Ép kiểu dữ liệu
– Ngầm định: Kiểu dữ liệu đích phải có dãy giá trị lớn hơn kiểu dữ liệu nguồn
5
Ví dụ: chuyển từ int sang float.
• int a = 10;
• float f = a;
– Tường minh: Thay đổi kiểu dữ liệu có dãy giá trị lớn sang dãy giá trị nhỏ hơn
Ví dụ: chuyển từ float sang int
• float f = 10.51;
• int a = (int) f;
6. Câu lệnh nhập xuất
– Thư viện: #include <stdio.h> (standard input/output) – Câu lệnh nhập
scanf (“<chuỗi định dạng>”, <các đối số>)
Ví dụ: scanf(“%d”, &a); // Nhập giá trị cho biến a
– Câu lệnh xuất
printf (“<chuỗi cần xuất>/[<định dạng>]”, [<các đối số>]) Ví
dụ: printf(“Hello World”);
7. Cách sử dụng kiểu char
– Miền giá trị: 256 ký tự trong bảng mã ASCII. – Chính là kiểu số nguyên do:
• Lưu tất cả dữ liệu ở dạng số.
• Không lưu trực tiếp ký tự mà chỉ lưu mã ASCII của ký tự đó.
– Sử dụng char như là số nguyên hoặc ký tự đều được
Ví dụ: char c = „A‟
printf(“%d”, c) -> in ra 65
printf(“%c”, c) -> in ra „A‟
8. Sử dụng toán tử 1 ngôi
– Giống nhau giữa ++<biến> và <biến>++
• Đều tăng <biến> thêm 1 đơn vị
• Cách sử dụng như nhau nếu chúng nằm độc lập
– Khác nhau giữa ++<biến> và <biến>++
• Khi chúng nằm trong một biểu thức.
• ++<biến> sẽ tăng <biến> trước khi thực hiện biểu thức
<biến>++ sẽ thực hiện biểu thức trước khi tăng
<biến>
Ví dụ:
6
int i = 1; int b = 10 + ++i (1) sẽ khác với int b = 10 + i++(2). Biểu thức
thức (1) b sẽ có kết quả là 12. Biểu thức (2) b sẽ có kết quả là 11. – Tương tự cho toán
tử --
9. Toán tử điều kiện
– Cú pháp: <biểu thức 1> ? <biểu thức 2> : <biểu thức 3> <biểu thức 1> đúng thì giá
trị là <biểu thức 2>.
<biểu thức 1> sai thì giá trị là <biểu thức 3>.
Ví dụ:
s1 = (1 > 2) ? 2912 : 1706;
int s2 = 0;
1 < 2 ? s2 = 2912 : s2 = 1706;
10.Các bước thực hiện bài thực hành
– Bước 1: Phân tích bài toán.
– Bước 2: Cài đặt chương trình.
– Bước 3: Kiểm tra và chạy thử.
II. Bài tập mẫu hướng dẫn thực hành.
1. Viết chương trình xuất ra câu thông báo: “Chao ban den voi ngon ngu C”.
Tạo project mới như phần I.1, viết chương trình sau trong màn hình soạn thảo:
#include<stdio.h>//thu vien chua cac ham nhap xuat chuan
#include<conio.h>//thu vien chua ham getch() void
main()
{
printf("Chao ban den voi ngon ngu C");
getch();
}
2. Viết chương trình xuất ra đoạn thông báo:
“Chao ban!
Day la chuong trinh C dau tien.
Vui long nhan phim Enter de ket thuc.”
– Đóng project cũ (nếu có) (File -> Close Solution) và tạo project mới như phần I.1
hoặc:
– Thêm một file .cpp mới vào trong project bằng cách: Nhấn chuột phải vào Source
files trên thanh Solution Explorer -> Add -> New Item -> chọn C++ File. Lưu ý:
trong cùng một project chỉ có một file .cpp chứa hàm main, vì vậy: nếu trong project
đã có một file .cpp nào đó chứa hàm main ta hãy bỏ (ghi chú) hàm main đó đi rồi
tạo file khác chứa hàm main cần làm.
– Cách làm tương tự cho các bài tập sau. – Code chương trình:
7
3.
Viết chương trình nhập vào 1 số nguyên, xuất ra màn hình số nguyên vừa
nhập.
4. Viết chương trình nhập vào 2 số nguyên, tính và xuất kết quả tổng, tích, hiệu
8
– Nhập vào ngày đến ở khách sạn, nhập ngày rời khỏi khách sạn.
– Tính tổng số ngày khách đã ở trong tháng. – Tính tiền khách phải trả, biết
rằng đơn giá tuần là 650 và đơn giá ngày là 100.
#include<stdio.h>
#include<conio.h>
void main()
{
int nv, nr;
printf("Nhap vao ngay vao, ngay ra: ");
scanf("%d%d", &nv, &nr); int tong = nr -
nv;
printf("Tong so ngay khach o trong thang: %dn", tong);
và thương 2 số nguyên vừa nhập.
5. Viết chương trình để có kết quả như sau:
– Số thực được nhập vào từ bàn phím
6. Tính tiền khách ở trong tháng.
9
int tien = tong/7 * 650 + tong % 7 * 100;
printf("Tien khach phai tra la: %d", tien);
getch();
}
9. Nhập chương trình sau, thực thi và xem kết quả để phân biệt sự giống và
7. Tình diện tích hình tròn. Gợi ý: sử dụng hằng số pi để thực hiện
8. Nhập vào 2 số nguyên a,b. Tìm số lớn nhất trong 2 số.
khác nhau của toán tử 1 ngôi.
10
10.Nhập mã Ascii. Nếu mã Ascii là của 26 chữ cái tiếng Anh (A -> Z) thì in ra kết
quả là “là chữ cái”, ngược lại in ra ký tự tương ứng với mã đó.
III. Bài tập ở lớp
1. Viết chương trình xuất ra (đúng định dạng) một đoạn trong bài thơ Lượm:
Chú bé loắc choắc
Cái sắc xinh xinh
Cái chân thoăn thoắt Cái
đầu nghênh nghênh.
Hướng dẫn: sử dụng các kí tự định dạng trang 4
2. Viết chương trình nhập vào số thực. In ra phần nguyên của số thực đó.
Hướng dẫn:
- 1 số thực được nhập từ bàn phím
- sử dụng phép toán ép kiểu trang 4 để tính phần nguyên 3. Viết chương
trình để có kết quả như sau:
Hướng dẫn:
- 2 số nguyên được nhập từ bàn phím
- Tính thương của 2 số nguyên (bài tập mẫu hướng dẫn 6 trang 6)
- Tính làm tròn thương bằng cách +0.5 cho thương và ép kiểu về số
nguyên - Xuất phần thương có 1 chữ số thập phân (bài tập mẫu hướng dẫn 5 trang
6) 4. Viết chương trình để có kết quả như sau:
Hướng dẫn:
- 2 số nguyên (đơn giá tuần, đơn giá ngày,) là hằng số
- 1 số nguyên (tổng số ngày) được nhập từ phím
- Tính số tuần dựa vào phần nguyên khi chia tổng số ngày cho 7
- Tính số ngày dựa vào hiệu của tổng ngày và (số tuần *7)
11
- Tính tiền phải trả dựa vào tổng của tiền thuê theo tuần và tiền thuê theo
ngày.
6. Viết chương trình để tính tiền sân bóng đá như sau:
– Tính tiền giờ dựa vào giờ vào và giờ ra. Mỗi giờ là 200,000
– Tính tiền nước uống dựa vào số bình nước đã uống. Mỗi bình nước 20,000 –
Tính tổng tiền: tiền giờ + tiền nước uống.
7. Nhập tuổi của 1 người. In ra năm sinh của người đó.
8. Nhập 4 số nguyên. Tính tổng 2 số đầu, tính hiệu hai số cuối. Tính thương cho tổng
2 số đầu và tổng 2 số cuối. In thương với 0 số thập phân và 1 số thập phân.
9. Nhập năm sinh. Tính tuổi tương ứng. Nếu tuổi >= 18 thì in ra: “đủ tuổi đi làm”,
ngược lại in ra: “còn tuổi đi học”.
10.Viết chương trình tính giá trị của biểu thức: (với x là số nguyên, f(x) là số thực)
f (x)
11.Viết chương trình tính biểu thức sau (x là số nguyên, f(x) là số thực) f (x) 3x5
2x2 x 1 5x 3
IV. Bài tập về nhà 1.
Nhập một số thực.
– In ra phần nguyên của số thực
– In số thực với 2 số thập phân
– In 2 số thập phân của số thực
– Tính tổng phần nguyên và 2 số thập phân của số thực
2. Nhập tên sản phẩm, số lượng và đơn giá. Tính tiền và thuế giá trị gia tăng phải trả,
biết:
Tiền = số lượng * đơn giá
Thuế giá trị gia tăng = 10% tiền
3. Nhập điểm thi và hệ số 3 môn Toán, Lý, Hóa của một sinh viên. Tính điểm trung
bình của sinh viên đó.
4. Nhập 2 cạnh của hình chữ nhật (là số nguyên). Tính diện tích, chu vi và đường
chéo (số thực) của hình chữ nhật.
5. Nhập vào 1 ký tự. Kiểm tra xem ký tự đó là: chữ hoa, chữ thường hay ký tự khác.
6. Nhập 1 ký tự. Kiểm tra ký tự đó có thuộc 26 chữ cái tiếng Anh hay không?
7. Viết chương trình giải phương trình bậc nhất: ax + b = 0 (a khác 0), với a, b là số
nguyên, x là số thực.
8. Nhập hai số nguyên. In ra giá trị max và min.
9. Nhập 3 số nguyên. Tìm max và min của 3 số đó 10. Viết chương trình để có kết
quả như sau:
12
Trường ĐH CNTP TP.HCM
Khoa: CÔNG NGHỆ THÔNG TIN
Bộ môn: CÔNG NGHỆ PHẦN MỀM
Môn: TH NGÔN NGỮ LẬP TRÌNH
BÀI 2 CẤU
TRÚC ĐIỀU KHIỂN
A. MỤC TIÊU:
Xác định được dạng, loại bài toán cần sử dụng cấu trúc điều khiển rẽ nhánh.
Phân tích được các trường hợp rẽ nhánh của bài toán.
Cài đặt được bài toán rẽ nhánh sử dụng câu lệnh if, if..else…, switch…case
B. DỤNG CỤ - THIẾT BỊ THÍ NGHIỆM CHO MỘT SV:
STT Chủng loại – Quy cách vật tư Số lượng Đơn vị Ghi chú
1 Máy tính (có thể là máy bàn hoặc laptop). 1 Chiếc
C. VẬT LIỆU
Visual C++.Net.
Phần mềm hỗ trợ dạy học: NetOp School hoặc NetSupport School.
D. NỘI DUNG THỰC HÀNH
I. Tóm tắt lý thuyết
Rẽ nhánh: là tại một thời điểm sẽ có nhiều lựa chọn có thể xảy ra nhưng chỉ xảy ra
một trường hợp duy nhất.
1. Câu lệnh if
 Điều kiện sử dụng:
Sử dụng khi rẽ nhánh chỉ có một trường hợp duy nhất. Nếu thỏa điều kiện thì
thực hiện, còn không thỏa thì không thực hiện (không làm gì hết).
Ví dụ: Sinh viên có điểm trung bình lớn hơn 8.0 được nhận học bổng.
Sinh viên có điểm trung bình lơn hơn 8.0: được nhận học bổng.
Sinh viên lớp khác (có điểm trung bình không lơn hơn 8.0):
không có yêu cầu gì cả.  Cú pháp:
13
Ví dụ:
2. Câu lệnh if…else…  Điều kiện sử dụng:
Sử dụng khi rẽ nhánh chỉ có 2 trường hợp trái ngược nhau xảy ra. Nếu không
thực hiện trường hợp này thì phải thực hiện trường hợp kia và ngược lại.
Ví dụ: Nếu sinh viên có điểm trung bình lớn hơn hoặc bằng 4.0 thì đậu, ngược
lại thì rớt. Ta thấy trong ví dụ này, bất kỳ sinh viên nào cũng chỉ có thể rơi vào
trường hợp “đậu” hoặc “rớt” mà thôi, không có trường hợp khác.
 Sinh viên có điểm
trung bình lơn hơn hoặc bằng
5.0: “đậu”.
 Sinh viên lớp khác:
“rớt”.  Cú pháp:
3. Câu if lồng nhau:
 Điều kiện sử dụng:
Ví dụ:
14
Sử dụng khi rẽ nhánh có từ 3 trường hợp trở lên.
Ví dụ: Căn cứ vào điểm trung bình ta xếp loại sinh viên như sau:
o Nếu đtb>=8.0 thì xếp loại giỏi o Nếu
8.0>dtb>=6.5 thì xếp loại khá o Nếu
6.5>dtb>=5.0 thì xếp loại trung bình o Còn
lại thì xếp loại yếu
Như vậy, ta viết đoạn chương trình thực hiện yêu cầu trên bằng cách sử dụng cấu trúc if
lồng nhau như sau;
if (dtb>=8.0)
printf(“Xep loai
gioi”); else if (dtb>6.5)
printf(“Xep loai kha”);
else if (dtb>5.0) printf(“Xep loai
trung binh”); else
printf(“Xep loai yeu”);
4. Một vài chú ý:
Biểu thức điều kiện trong cấu trúc if, if…else… phải là một mệnh đề có giá trị
đúng hoặc sai.
Biểu thức điều kiện có thể chỉ gồm một biều thức đơn giản hoặc có thể là sự kết
hợp của nhiều biều thức điều kiện thông qua các phép toán và (&&), hoặc (||), phủ
định (!).
 Cú pháp
15
5. Câu lệnh switch…case…  Điều kiện sử dụng:
Sử dụng khi bài toán rẽ nhánh có nhiều trường hợp (thường là từ 3 trở lên) và mỗi
trường hợp là một giá trị cụ thể (có kiểu giá trị số hoặc ký tự)
VD: Nếu xếp hạng 1 bạn được thưởng 10 cuốn tập, xếp hạng 2 bạn được thưởng 8 cuốn
tập, xếp hạng 3 bạn được thưởng 5 cuốn tập, xếp hạng 4 bạn được thưởng 3 cuốn tập, còn
lại bạn không được thưởng.
 Hạng 1: 10 cuốn tập
 Hạng 2: 8 cuốn tập
 Hạng 3: 5 cuốn tập
 Hạng 4: 3 cuốn tập
 Còn lại: 0 cuốn tập
16
 Cú pháp:
Ví dụ:
17
Mỗi trường hợp (case) trong câu lệnh switch phải kết thúc bằng lệnh break;
Kiểu trả về của <biểu thức> trong câu lện switch phải có cùng kiểu với các
<gia tri1>, <gia tri 2>,…
Cần xác định đúng biểu thức rẽ nhánh trong câu lệnh switch…case. Biểu
thức rẽ nhánh là biểu thức có thể nhận các giá trị khác nhau nhưng trong mỗi
trường hợp chỉ nhận 1 giá trị duy nhất. Biểu thức có thể là một biến.
II. Bài tập mẫu hướng dẫn thực hành
1. Nhập vào điểm trung bình môn Ngôn ngữ lập trình của sinh viên. In ra màn hình
cho biết sinh viên đó đậu hay rớt biết rằng nếu điểm trung bình lớn hơn hoặc bằng
4.0 thì đậu ngược lại là rớt.
Bước 1: Phân tích bài toán
- Nhập điểm trung bình
- Xuất ra kết quả đậu hay rớt dựa vào điểm trung bình đã nhập.
- 01 biến dtb (điểm trung bình) có kiểu là số thực
- Bài toán có 2 trường hợp là đậu, rớt => sử dụng cấu trúc if…else…
- Biều thức điều kiện: dtb>=4.0
Bước 2: Cài đặt chương trình
- Tạo project mới (giống các bài thực hành trước): File -> new ->Project o
Chọn ngôn ngữ là C++
Bước 1: Phân tích bài toán
- Khai báo thư viện và viết hàm main
- Khai báo và nhập dữ liệu
- Cài đặt câu lệnh rẽ nhánh
Bước 3: Kiểm tra, sửa lỗi và chạy thử
2. Nhập vào một số nguyên, cho biết số vừa nhập có phải là số chẵn hay không?
18
- Nhập số nguyên bất kỳ
- Xuất ra kết quả số chẵn hoặc không làm gì cả
- 01 biến n có kiểu là số nguyên (int)
- Bài toán có 1 trường hợp là số chẵn => sử dụng cấu trúc if…
- Biểu thức điều kiện: n%2==0 Bước 2: Cài đặt chương trình
3. Nhập vào một năm, cho biết năm vừa nhập có phải là năm nhuận hay không. Biết
rằng năm nhuận là năm chia hết cho 4 mà không chia hết cho 100 hoặc năm chia
hết cho 400? Ví dụ: 1996 là năm nhuận vì 1996 chia hết cho 4 và không chia hết
cho 100
Bước 1: Phân tích bài toán
- Nhập vào một năm (số nguyên)
- Xuất ra kết quả là năm nhuận hoặc năm không nhuận
- 01 biến nam (năm) có kiểu là số nguyên (int)
- Bài toán có 2 trường hợp là năm nhuận, năm không nhuận => sử dụng cấu
trúc if…else…
- Biểu thức điều kiện: (nam%4==0 && nam%100!=0)||(nam%400==0)
Bước 2: Cài đặt chương trình
- Khai báo thư viện và viết hàm main
- Khai báo và nhập dữ liệu
- Cài đặt câu lệnh rẽ nhánh
Bước 3: Kiểm tra, sửa lỗi và chạy thử
19
4. Một môn học lý thuyết thường có 03 cột điểm hệ số 10: điểm tiểu luận, điểm giữa
kỳ, điểm cuối kỳ có tỉ lệ lần lượt là 20%, 30%, 50%. Hãy cho biết điểm chữ của
môn học khi người dùng nhập vào điểm tiểu luận, điểm giữa kỳ và điểm cuối kỳ.
Giả sử rằng cách qui đổi điểm hệ số 10 sang điểm chữ như sau:
Điểm hệ 10 điểm chữ
Điểm hệ 10 >=8.5 A
8.5> điểm hệ 10 >=7.0 B
7.0> điểm hệ 10>=5.5 C
5.5>điểm hệ 10 >=4.0 D
4.0> điểm hệ 10 F
Bước 1: Phân tích bài toán
- Nhập vào điểm tiểu luận, giữa kỳ, cuối kỳ
- Xuất ra điểm chữ của môn học đó theo qui tắc đã cho
- 04 biến diemTL, diemGK, diemCK, diemTB là các số thực (float) và
diemTB=0.2*diemTL+0.3*diemGK+0.5*diemCK
- Bài toán có 5 trường hợp điểm chữ => sử dụng cấu trúc if lồng nhau - Biểu
thức điều kiện:
o Điều kiện 1: diemTB>=8.5 o
Điều kiện 2: diemTB>=7.0 o
- Khai báo thư viện và viết hàm main
- Khai báo và nhập dữ liệu
- Cài đặt câu lệnh rẽ nhánh
Bước 3: Kiểm tra, sửa lỗi và chạy thử
20
Điều kiện 3: diemTB>=5.5 o
Điều kiện 4: diemTB>=4.0
Bước 2: Cài đặt chương trình
- Khai báo thư viện và viết hàm main
- Khai báo, nhập dữ liệu và tính toán
5. Nhập vào 2 số nguyên a và b, nhập vào một phép toán +, -, *, /, %. Hãy in ra màn
hình kết quả của phép toán vừa nhập với 2 số hạng là a, b đã nhập
Bước 1: Phân tích bài toán
- Nhập 2 số nguyên bất kỳ, nhập 1 phép toán
- Xuất ra kết quả của phép toán vừa nhập
- 02 biến số nguyên (int), 01 biến lưu phép toán (biến pheptoan, kiểu char), 01
biến luu kết quả (biên kết quả kiểu int)
- Bài toán có 5 trường hợp của phép toán: +,-,*,/% => dùng cấu trúc
switch…case
- Biều thức rẽ nhánh: biến pheptoan
Bước 2: Cài đặt chương trình
- Cài đặt câu lệnh rẽ nhánh
Bước 3: Kiểm tra, sửa lỗi và chạy thử
21
- Khai báo thư viện và viết hàm main
- Khai báo và nhập dữ liệu
giá trị còn luu trong vùng đệm
6. Nhập một tháng (nhập bằng số), in ra màn hình tháng đó bằng tiếng Anh tương
tứng (January, February, March, April, May, June, July, August, September,
October, November, December). Nếu nhập tháng không đúng in ra màn hình
“Month is invalid”
Bước 1: Phân tích bài toán
- Nhập vào một số tháng bằng số nguyên
- Xuất tháng đó ra màn hình bằng tiếng Anh tương ứng
- 01 biến thang có kiểu là số nguyên (int)
- Bài toán có 13 trường hợp hợp lệ và 01 trường hợp không hợp lệ => sử dụng
switch…case…
- Biều thức rẽ nhánh: sử dụng biến thang
Bước 2: Cài đặt chương trình
- Khai báo thư viện và viết hàm main
Lưu ý: trước khi nhập phép toán phải có câu lệnh flushall(); để xóa bỏ các
- Cài đặt câu lệnh rẽ nhánh
Bước 3: Kiểm tra, sửa lỗi và chạy thử
22
III. Bài tập ở lớp
1. Viết chương trình nhập vào 2 số a, b. Tìm số lớn nhất giữa 2 số.
2. Viết chương trình nhập vào số nguyên, kiểm tra số đã nhập là số âm hay số dương
3. Viết chương trình nhập vào 2 số nguyên, so sánh 2 giá trị vừa nhập vào (“Bằng nhau,
nhỏ hơn, lớn hơn”).
4. Nhập vào thứ tự của tháng, cho biết tháng đó có bao nhiêu ngày.
5. Viết một chương trình tính chu vi, diện tích theo dạng menu cho phép người dùng
chọn lựa một trong các hình bên dưới (dùng cấu trúc switch…case)
1. Hình vuông
2. Hình chữ nhật
3. Hình tròn
6. Viết chương trình nhập vào 2 số a,b. Kiểm tra a có là bội số của b không.
7. Viết chương trình nhập vào đơn giá 1 mặt hàng, và số lượng bán của mặt hàng. Tính
tiền khách phải trả, với thông tin như sau:
 Thành tiền: đơn giá * số lượng
 Giảm giá: Nếu thành tiền > 100, thì giảm 3% thành tiền, ngược lại không
giảm
 Tổng tiền phải trả: thành tiền – giảm giá.
- Khai báo và nhập dữ liệu
- Cài đặt câu lệnh rẽ nhánh
Bước 3: Kiểm tra, sửa lỗi và chạy thử
23
8. Viết chương trình hỗ trợ cách giải phương trình bậc 1 (ax + b = 0)
9. Nhập vào 1 số bất kỳ (0->9), cho biết cách đọc số vừa nhập
10.Viết một chương trình dạng menu cho phép người dùng chọn một trong các chức
năng bên dưới:
1. In ra màn hình “Xin chào các bạn”
2. Chức năng đổi nhiệt độ C sang độ F
3. Chức năng tính chu vi và diện tích hình tròn
IV. Bài tập về nhà:
1. Giải phương trình bậc 2 có dạng ax2
+ bx + c=0
2. Nhập vào 3 số nguyên a, b,c. In ra màn hình số nguyên lớn nhất và nhỏ nhất.
3. Nhập vào điểm thi tốt nghiệp THPT (toán, lý, hóa, văn, anh, sử) của một thí sinh. Cho
biết thí sinh đó xếp loại của thí sinh đó. Biết rằng xếp loại thi tốt nghiệp được xác
định như sau:
 Điểm trung bình >=8 và không có môn nào dưới 6.5: loại giỏi
 Điểm trung bình >=7.0 và không có môn nào dưới 5.0: loại khá
 Điểm trung bình >=5.0 và không có môn nào dưới 3.5: loại TB
 Còn các trường hợp còn lại xếp loại Yếu.
4. Viết chương trình tính tiền karaoke theo cách sau:
5. Viết chương trình tính tiền điện sử dụng trong tháng:
Từ 1 – 100KW: 5$
Từ 101 – 150KW: 7$
Từ 151 – 200KW: 10$
Từ 201 – 300KW: 15$
Từ 300KW trở lên: 20$
Trường ĐH CNTP TP.HCM
Khoa: CÔNG NGHỆ THÔNG TIN
Bộ môn: CÔNG NGHỆ PHẦN MỀM
Môn: TH NGÔN NGỮ LẬP TRÌNH
BÀI 3
CẤU TRÚC ĐIỀU KHIỂN
(tt)
24
A. MỤC TIÊU:
Xác định được dạng, loại bài toán cần sử dụng cấu trúc điều khiển rẽ nhánh
Xác định được vòng lặp của một bài toán
Cài đặt được câu lệnh lặp for
Kết hợp được câu lệnh for và câu lệnh rẽ nhánh if, if…else…
B. DỤNG CỤ - THIẾT BỊ THÍ NGHIỆM CHO MỘT SV:
STT Chủng loại – Quy cách vật tư Số lượng Đơn vị Ghi chú
1 Máy tính (có thể là máy bàn hoặc laptop). 1 Chiếc
C. VẬT LIỆU
Visual C++.Net.
Phần mềm hỗ trợ dạy học: NetOp School hoặc NetSupport School.
D. NỘI DUNG THỰC HÀNH
I. Tóm tắt lý thuyết
Lặp: là việc thực hiện công việc giống nhau hoặc tương tự nhau nhiều lần, công việc đó
được thực hiện rồi lại thực hiện nữa
VD: Cổ động viên Việt Nam hô vang 5 lần “Việt Nam vô địch”
1. Vòng lặp for
 Điều kiện sử dụng:
Sử dụng khi có công việc lặp xảy ra.
Biết trước số lần lặp
II. Bài tập mẫu hướng dẫn thực hành
 Cú pháp:
VD: Xuất 5 lần câu “Việt Nam vô địch” ra màn hình.
25
1. In ra màn hình 10 lần câu “Xin chao cac ban” (mỗi câu nằm trên một dòng)
Bước 1: Phân tích bài toán
- Xuất ra 10 lần câu “Xin chao cac ban”. Mỗi câu nằm trên một dòng
- Bài toán có phép lặp với số lần lặp là 10=> sử dụng vòng lặp for
- Công việc cần lặp: In ra màn hình câu nói “Xin chao cac ban”
Bước 2: Cài đặt chương trình
- Khai báo thư viện và viết hàm main
- Khai báo và nhập dữ liệu: không có
Bước 1: Phân tích bài toán
- Nhập vào số nguyên dương n
- Tính được tổng bình phương của các số nguyên từ 1 tới n
- 02 biến n, S số nguyên (int)
- Sử dụng vòng lặp for lặp n lần (GV giải thích rõ)
- Câu lệnh lặp: S=S+i2
Bước 2: Cài đặt chương trình
- Cài đặt câu lệnh rẽ nhánh
Bước 3: Kiểm tra, sửa lỗi và chạy thử
2. Nhập vào số nguyên dương n. Tính tổng S=1
2
+2
2
+3
2
+…+ n
2
- Khai báo thư viện và viết hàm main
- Khai báo, nhập dữ liệu
- Cài đặt câu lệnh rẽ nhánh
26
Lưu ý: Cách xác định các thành phẩn của vòng lặp for cho bài toán tính giá trị biểu thức:
- Lấy công thức cuối cùng của biểu thức (n2
).
- Xác định là biểu thức dùng tính tổng hay tính nhân , thay n bằng i. ta sẽ được
công thức lặp (i2
=> công thức là S=S+i2
)
- Áp dụng công thức sử dụng i vào số hạng đầu tiên ta sẽ tính được giá trị ban
đầu của i (i2
=1 => i=1)
VD: Xác định công thức vòng lặp cho biểu thức: S=1/1 + 1/2 +1/3 +…+1/n;
- Công thức cuối: 1/n
- Công thức tính tổng: S=S+1/i (thay n bằng i).
- Giá trị lặp ban đầu của i là 1 vì 1/i=1/1 =>i=1
3. Nhập vào số nguyên dương n. Cho biết n có bao nhiêu ước là số nguyên dương.
Bước 1: Phân tích bài toán
- Nhập vào số nguyên dương n
- Đếm số ước nguyên dương của n đã nhập
- 02 biến n, dem là các số nguyên (int)
- Để đếm số ước của n ta cần lần lượt kiểm tra tất cả các số từ 1 tới n xem có
phải là ước của n không. Nếu n chia hết cho số nào thì số đó là ước và ta sẽ
đếm đố đó => Bài toán có công việc lặp với số lần lặp là từ 1 tới n=> dùng
vòng lặp for
- Câu lệnh lặp: Mỗi lần lặp cần phải kiểm tra xem n có chia hết cho i không.
Nếu chia hết thì đếm => Câu lệnh lặp có sử dụng lệnh rẽ nhánh if (vì chỉ có
một trường hợp rẽ nhánh): nếu n%i==0 thì dem++
Bước 2: Cài đặt chương trình
Bước 3: Kiểm tra, sửa lỗi và chạy thử
27
III. Bài tập ở lớp
1. Viết chương trình tính tổng số chẵn < n, n là số nguyên dương nhập từ bàn phím.
2. Viết chương trình đếm số nguyên dương nhỏ hơn n chia hết cho 3, n là số nguyên
dương nhập từ bàn phím.
3. Viết một chương trình dạng menu cho phép người dùng thực hiện một trong các biểu
thức sau:
1. S = 1*2*3*4*5*….*n.
2. S = 2 + 4 + 6 + 8 +….+ 20.
3. S=1*2 + 2*3+ 3*4 + 4*5 +.….+ n(n+1).
1 1 1 1
....
4. S = 1.2.3 2.3.4 3.4.5 n(n 1)(n 2)
IV. Bài tập về nhà:
1. Nhập vào số nguyên dương h, in ra màn hình các tam giác sau
2. Nhập n>=0. Tính S(n)=1-2+3-4+ … +(-1)n-1n.
- Khai báo thư viện và viết hàm main
- Khai báo, nhập dữ liệu
- Cài đặt câu lệnh rẽ nhánh
Bước 3: Kiểm tra, sửa lỗi và chạy thử
28
1 1 1
S(n) 1 ...
3. Nhập n>=0. Tính 2 3 n
S(n) 1 ...
4. Nhập n>=0. Tính
1 1 1
S(n) ...
5. Nhập n>=0. Tính 1 2 2 3 n (n 1)
1 2 n
S(n) ...
6. Nhập n>=0. Tính 2 3 n 1
S(n) ...
7. Nhập n>=0. Tính
8. Nhập x,n. Tính T(x,n)=xn
9. Nhập x,n. Tính S(x,n)=x+x2
+x3
+ … +xn
10.Nhập x,n. Tính S(x,n)=-x+x2
-x3
+ … +(-1)n
xn
Trường: ĐH CNTP TP.HCM
Khoa:CÔNG NGHỆ THÔNG TIN
Bộ môn:CÔNG NGHỆ PHẦN MỀM
Môn:TH NGÔN NGỮ LẬP TRÌNH
BÀI 4
CẤU TRÚC ĐIỀU KHIỂN(tt)
A. MỤC TIÊU:
Xác định các bài toán cần sử dụng cấu trúc lặp
Cài đặt được cấu trúc while, do...while
Sử dụng được kết hợp các từ khóa break trong vòng lặp
B. DỤNG CỤ - THIẾT BỊ THÍ NGHIỆM CHO MỘT SV:
STT Chủng loại – Quy cách vật tư Số lượng Đơn vị Ghi chú
1 Máy tính (có thể là máy bàn hoặc laptop). 1 Chiếc
C. VẬT LIỆU
29
Visual C++.Net.
Phần mềm hỗ trợ dạy học: NetOp School hoặc NetSupport School.
D. NỘI DUNG THỰC HÀNH
I. Tóm tắt lý thuyết
1. Cấu trúc lặp while
 Điều kiện sử dụng:
Sử dụng khi bài toán có công việc lặp mà không biết số lần lặp là bao nhiêu.
Chỉ xác định được điều kiện dừng lặp của bài toán.
VD: Nhập vào dãy số nguyên cho tới khi người dùng nhập số 0 thì dừng.
Trong ví dụ, công việc nhập số nguyên lặp đi lặp lại nhiều lần nhưng không
biết là lặp bao nhiêu lần. Vòng lặp chỉ dừng khi người dùng nhập số 0.
Trong câu lệnh while, nếu biểu thức điều kiện trả về giá trị đúng thì vòng lặp
tiếp tục được thực hiện
Để tránh vòng lặp vô tận, trong câu lệnh while phải có câu lệnh làm thay đổi
giá trị của biểu thức điều kiện.
2. Cấu trúc lặp do…while
 Điều kiện sử dụng:
Tương tự như cấu trúc lặp while
Thực hiện ít nhất một lần (while có thể không thực hiện lần nào nếu
ngay mới lần đầu tiên biểu thức điều kiện trong while trả về giá trị sai)  Cú
pháp:
 Cú pháp:
VD:
30
II. Bài tập mẫu hướng dẫn thực hành
1. Nhập vào 2 số nguyên dương a và b. Tìm ước chung lớn nhất của 2 số nguyên
dương đã nhập.
Bước 1: Phân tích bài toán
- Nhập 2 số nguyên bất kỳ
- Xuất ra ước chung lớn nhất của 2 số vừa nhập
- 02 biến số nguyên (int), 01 biến ucln (int)
- Sử dụng thuật tóan euclid => số lần lặp của bài toán không xác định => sử
dụng vòng lặp while
- Thuật toán euclid tìm UCLN của a và b Nếu a=b thì UCLN =a;
Ta có thể dùng từ khóa break để thoát ra khỏi vòng lặp
Dùng từ khóa continue để chuyển sang bước lặp tiếp theo.
31
Nếu a>b thi UCLN(a,b)=UCLN(a-b,b)
Nếu a<b thi UCLN(a,b)=UCLN(a,b-a)
Bước 2: Cài đặt chương trình
2. Xây dựng một menu chương trình cho phép người dùng lựa chọn gồm các yêu
cầu sau:
1. In ra màn hình từ hello
2. In ra màn hình câu Vòng lặp for 3.
In ra màn hình câu Vòng lặp while
4. Thoát chương trình.
Sau khi lựa chọn chức năng, chương trình sẽ thực hiện theo đúng chức năng đã chọn rồi
lại tiếp tục hiển thị menu. Chương trình chỉ dừng lại (kết thúc khi người dùng bấm phím
số 4)
Bước 1: Phân tích bài toán
- Xuất ra màn hình menu theo yêu cầu
- Sử dụng 01 biến luachon là số nguyên (int)
- Menu này xuất hiện ít nhất 1 lần (cho lần chọn đầu tiên) và lặp đi lặp lại
nhiều lần => dùng cấu trúc lặp do…while Bước 2: Cài đặt chương trình
- Khai báo thư viện và viết hàm main
- Khai báo và nhập dữ liệu
- Cài đặt câu lệnh rẽ nhánh
Bước 3: Kiểm tra, sửa lỗi và chạy thử
32
3. Viết chương trình nhập vào một số nguyên dương n. Tính tổng các chữ số có
trong số nguyên dương n
Bước 1: Phân tích bài toán
- Nhập vào số nguyên dương n
- Tính tổng các chữ số có trong số nguyên dương n
- Cách làm, ví dụ với n=629 tong=0; n=629>0: tong=tong + hàng đơn vị của
n, n=n/10 n=62>0 : tong=tong+ hàng đơn vị của n, n=n/10 n=6>0:
tong=tong+ hàng đơn vị của n, n=n/10 n=0:dừng
- Ta thấy việc tong=tong+hang đơn vị của n, n=n/10 được lặp lại nhiều lần
nhưng không biết cụ thể bao nhiêu lần. Do đó ta phải dùng vòng lặp while.
Bước 2: Cài đặt chương trình
- Khai báo và nhập dữ liệu:
- Cài đặt chương trình
Bước 3: Kiểm tra, sửa lỗi và chạy thử
33
1. Viết chương trình kiểm tra xem n có phải là số nguyên tố hay không. Biết rằng số
nguyên tố là số nguyên lớn hơn 1 là số chỉ có 2 ước là 1 và chính nó.
2. Viết chương cho biết trong số nguyên n có bao nhiêu chữ số chẵn
3. Viết chương trình tìm bội chung nhỏ nhất (BCNN) của 2 số nguyên dương a và b
nhập vào từ bàn phím. Biết rằng BCNN (a,b)=a*b/UCLN(a,b)
4. Viết chương trình tính tổng các số tự nhiên nhỏ hơn n (sử dụng vòng lặp while)
5. Viết chương trình cho phép nhập một số nguyên từ bàn phím. Việc nhập kết thúc khi
người dùng nhập vào giá trị 0. Hiển thị tổng các số vừa nhập. IV. Bài tập về nhà:
1. Kiểm tra số nguyên dương n có các chữ số toàn là chữ số chẵn hay không?
2. Kiểm tra số nguyên dương n có các chữ số toàn là chữ số lẻ hay không?
3. Kiểm tra số nguyên dương n có các chữ số tăng dần từ trái qua phải hay không?
4. Kiểm tra số nguyên dương n có các chữ số giảm dần từ trái qua phải hay không?
5. Nhập n>0. Tìm số nguyên dương m lớn nhất sao cho 1+2+3+…+m<n.
6. Nhập n>0. Tìm số nguyên dương m nhỏ nhất sao cho 1+2+3+…+m>n.
7. Xuất số đảo của số nguyên dương n.
8. An gửi số tiền là n USD vào ngân hàng. An muốn số tiền của mình sẽ bằng hoặc lớn
hơn 1000 USD. Giúp An viết chương trình tính số tháng cần gửi vào ngân hàng để
tổng tiền vốn lẫn tiền lãi sẽ lớn hơn 1000USD. Biết lãi suất 0.7%/ tháng và số tiền
vốn n được nhập từ bàn phím.
Trường ĐH CNTP TP.HCM
Khoa: CÔNG NGHỆ THÔNG TIN
Bộ môn: CÔNG NGHỆ PHẦN MỀM
Môn: TH NGÔN NGỮ LẬP TRÌNH
BÀI 5
HÀM
(CHƯƠNG TRÌNH CON)
A. MỤC TIÊU:
- Cài đặt câu lệnh rẽ nhánh
Bước 3: Kiểm tra, sửa lỗi và chạy thử
III. Bài tập ở lớp
34
Trình bày được các thành phần của một hàm trong lập trình C++.
Cài đặt được hàm trong C++.
Gọi được hàm trong C++.
Xây dựng được hàm đệ qui trong C++.
B. DỤNG CỤ - THIẾT BỊ THÍ NGHIỆM CHO MỘT SV:
STT Chủng loại – Quy cách vật tư Số lượng Đơn vị Ghi chú
1 Máy tính (có thể là máy bàn hoặc laptop). 1 Chiếc
C. VẬT LIỆU
Visual C++.Net.
Phần mềm hỗ trợ dạy học: NetOp School hoặc NetSupport School.
D. NỘI DUNG THỰC HÀNH
I. Tóm tắt lý thuyết
1. Các thành phần của hàm:
Hàm là một đoạn chương trình dùng để giải quyết một vấn đề cụ thể nào đó. Một
hàm gồm các thành phần sau:
Tên hàm: do người lập trình tự đặt theo qui tắc đặt tên của C++
Input: đầu vào của hàm
Output: đầu ra của hàm
Processing: quá trình xử lý của hàm (thuật toán)
Ví dụ: Viết hàm tính diện tích hình tròn khi biết bán kính
Tên hàm: TinhDienTichHinhTron Input: bán kính
Output: diện tích hình tròn
Processing: S=bán kính * 2 * PI
(Trong đó, PI là hằng số có giá trị là 3.1416)
35
<kiểu trả về>: kiểu dữ liệu của onput, nếu hàm không có output thì kiểu trả
về là void
<ds tham số>: là tất cả các input của hàm (bao gồm cả kiểu dữ liệu của
input và tên của input, các input cách nhau bởi dấu ,)
Thân hàm: thuật toán (các câu lệnh bắt đầu từ input tìm ra output)
Ta có thể gọi hàm ở bất kỳ vị trí nào, trong chương trình chính hoặc trong
thân của một hàm khác
Hàm phải được khai báo ở vị trí sau phần khai báo thư viện (prototype)
Cách gọi hàm đối với hàm có kiểu trả về void
<Tên hàm> (<ds tham số>);
Vi dụ: Muốn in ra màn hình 10 lần từ Hello ta gọi hàm như sau:
InHello (10);
Muốn in ra màn hình 25 lần từ Hello ta gọi hàm như sau:
InHello (25);
Cách gọi hàm đối với hàm có kiểu trả về khác void o Khai báo biến có
cùng kiểu trả về với hàm o Gán giá trị của hàm vào cho biến vừa khai báo
2. Cú pháp khai báo hàm
Vi dụ: Viết hàm tính diện tích hình tròn khi biết bán kính
Vi dụ: In ra màn hình n lần từ Hello, mỗi từ trên 1 dòng
3. Cách gọi hàm
36
o Xử lý biến theo ý muốn
<tên biến> =<Tên hàm>(ds tham số);
Ví dụ: ta có bán kính hình tròn r=6. Cần tính diện tích hình tròn rồi in diện
tích đó ra màn hình ta có thể gọi như sau:
4. Hàm đệ qui:
Hàm đệ qui là hàm gọi lại chính nó trong thân hàm. Xây dựng hàm đệ qui cần xác
định 2 điều kiện sau:
Điều kiện dừng: là trường hợp mà hàm trả về kết quả trực tiếp
Điều kiện đệ qui: là trường hợp mà hàm gọi lại chính nó ở mức độ nhỏ
Điều kiện dừng: n=1 => S(1)=1
II. Bài tập mẫu hướng dẫn thực hành
Các bước thực hiện
Bước 1: Xác định tên hàm, input, output, thuật toán
hơn
Vi dụ: Viết hàm tính tổng S=1 + 2 + 3 +…+ n
Điều kiện đệ qui: n>1: S(n)=n+S(n-1)
37
Bước 2: Cài đặt chương trình
Bước 3: Gọi hàm trong chương trình chính.
1. Viết hàm tìm ước chung của 2 số nguyên dương a và b. Viết hàm main tính
ước chung lớn nhất cho 2 số nguyên nhập vào từ bàn phím, sử dụng hàm đã
viết ở trên
Bước 1: Xác định tên hàm, input, output, thuật toán
- Tên hàm: UCLN (ước chung lớn nhất)
- Input: 2 số nguyên a, b (kiểu int)
- Output: ước chung lớn nhất của a,b là 1 số nguyên
- Sử dụng thuật toán euclid => số lần lặp của bài toán không xác định => sử
dụng vòng lặp while
- Thuật toán euclid tìm UCLN của a và b Nếu a=b thì UCLN =a;
Nếu a>b thi UCLN(a,b)=UCLN(a-b,b)
Nếu a<b thi UCLN(a,b)=UCLN(a,b-a) Bước
2: Cài đặt chương trình
2. Viết hàm kiểm tra số nguyên dương n có phải là số nguyên tố hay không?
Viết hàm main minh họa kiểm tra số nguyên nhập vào từ bàn phím có phải là
số nguyên tố hay không?
Bước 1: Xác định tên hàm, input, output, thuật toán
- Tên hàm: ktraSNT (kiểm tra số nguyên tố)
- Input: 01 số nguyên dương n (kiểu int)
- Cài đặt hàm
- Gọi hàm
38
- Output: có hoặc không, đúng hoặc sai, true hoặc false => kiểu trả về là int
(1: đúng, 0: sai)
- Thuật toán:
o Đếm số ước của n. o So sánh số ước của n với 2. Nếu số ước
bằng 2 thì đó là số nguyên tố, ngược lại không phải số nguyên tố Bước 2: Cài
đặt chương trình
3. Viết hàm tính xn
bằng hàm sử dụng đệ qui Bước 1: Xác định tên hàm, input,
output, thuật toán - Tên hàm: LuyThua
- Input: 01 số thực x, 01 số nguyên dương n
- Output: xn
là một số thực (float)
- Thuật toán đệ qui o Điều kiện dừng: n=0 => Lũy thừa =1
o Điều kiện đệ qui n>0: LuyThua(x,n)=x*LuyThua(x,n-1);
Bước 2: Cài đặt chương trình
- Cài đặt hàm
- Cài đặt hàm
- Gọi hàm
39
III. Bài tập ở lớp
1. Viết chương trình tính diện tích hình tam giác khi biết ba cạnh của tam giác (yêu cầu
viết hàm con tính diện tích tam giác)
2. Viết chương trình cho phép người dùng thực hiện một trong các yêu cầu sau:
1. Tính tổng các ước của số nguyên n.
2. Tìm số ngày của một tháng khi biết tháng và năm.
3. Đổi chỗ 2 số nguyên x, y.
4. Tìm BCNN của hai số nguyên dương a và b
5. Kiểm tra số nguyên dương n có các chữ số toàn là chữ số lẻ hay không?
(Yêu cầu: Mỗi chức năng viết hàm con thực hiện, hàm main gọi hàm con thực thi)
3. Viết hàm tính (n dấu căn). Viết hàm main thực thi
1
S(n) 1 ...
4. Viế thàm tính n
sử dụng hàm đệ qui. Viết hàm main thực thi
5. Viết hàm tính n!=1*2*3*…*n. Viết hàm main thực thi.
IV. Bài tập về nhà:
1. Viết hàm xuất số đảo của số nguyên dương n.Viết hàm main minh họa
2. Nhập vào số nguyên dương h, viết chương trinh in ra màn hình một trong các
tam giác sau (người dùng trùy chọn)
3. Nhập n>=0. Viết hàm tính S(n)=1-2+3-4+ … +(-1)n-1
n.
1 1 1
S(n) ...
40
4. Nhập n>=0. Viết hàm tính 2 4 2n S(n) 1 ...
5. Nhập n>=0. .Viết hàm tính
Trường ĐH CNTP TP.HCM
Khoa: CÔNG NGHỆ THÔNG TIN
Bộ môn: CÔNG NGHỆ PHẦN MỀM
Môn: TH NGÔN NGỮ LẬP TRÌNH
BÀI 6
MẢNG 1 CHIỀU
A. MỤC TIÊU:
Hiểu được cấu trúc dữ liệu mảng 1 chiều.
Lập trình và vận dụng được mảng 1 chiều vào từng bài toán cụ thể.
Làm được các bài tập có ứng dụng mảng 1 chiều.
B. DỤNG CỤ - THIẾT BỊ THÍ NGHIỆM CHO MỘT SV:
STT Chủng loại – Quy cách vật tư Số lượng Đơn vị Ghi chú
1 Máy tính (có thể là máy bàn hoặc laptop). 1 Chiếc
C. VẬT LIỆU
Visual C++.Net.
Phần mềm hỗ trợ dạy học: NetOp School hoặc NetSupport School.
D. NỘI DUNG THỰC HÀNH
I. Tóm tắt lý thuyết.
1. Định nghĩa và khai báo mảng 1 chiều:
41
Lưu ý: Chỉ số mảng luôn luôn bắt đầu từ 0.
Ví dụ:
- int a[100]; //Mảng có tên a chứa tối đa 100 số nguyên
- #define maxN 30 float b[maxN]; // Mảng có tên b chứa
tối đa 30 số nguyên
- const int maxC = 50 char c[maxC]; Mảng có tên c chứa
tối đa 50 số nguyên
Ví dụ: Cho mảng 1 chiều tên a chứa 10 số nguyên như sau:
2. Tham số mảng của một hàm
3. Những thao tác trên mảng:
42
Ví dụ:
II. Bài tập mẫu hướng dẫn thực hành.
Bài 1: Viết chương trình nhập các giá trị cho mảng 1 chiều chứa các số nguyên, sau
đó xuất mảng vừa nhập (Lưu ý: Viết chương trình dạng hàm).
Yêu cầu:
Viết 2 hàm con Nhập và Xuất mảng 1 chiều chứa các số nguyên.
Gọi thực hiện 2 hàm con trong hàm main.
Hướng dẫn:
Bước 1: Tạo một Project mới  đặt tên: Mang1C_BaiTapMau1_<Tên sinh viên>, Ví
dụ Mang1C_BaiTapMau1_NguyenVanTeo
Bước 2: Khai báo thêm các thư viện cơ bản cho chương trình.
#include <conio.h>
#include <stdio.h>
Bước 3: Khai báo hằng số cho chương trình.
#define MAXSIZE 1000
Bước 4: Viết các khai báo nguyên mẫu hàm cho chương trình như sau:
43
void NhapMang1C_SoNguyen(int a[], int &n);
void XuatMang1C_SoNguyen(int a[], int n);
Bước 5: Viết hàm main để thực thi chương trình.
Bước 6: Viết các định nghĩa hàm cần thiết cho chương trình như sau:
Bài 2: Bổ sung vào bài 1 các thao tác sau (Lưu ý: Viết chương trình dạng hàm):
- Xuất các giá trị chẵn của
mảng ra màn hình. - Tính tổng các
giá trị mảng.
- Tính tổng chẵn trong mảng
Hướng dẫn:
44
//=======================================================================
III. Bài tập ở lớp
Cho một mảng 1 chiều chứa các số nguyên. Hãy viết một chương trình cho phép
người dùng chọn một trong các yêu cầu sau:
1. Tạo một mảng 1 chiều chứa n số nguyên.
2. Xuất một mảng 1 chiều chứa n số nguyên.
Bước 1: Bổ sung thêm các khai báo nguyên mẫu hàm cho chương trình như sau:
void TaoMang1C_SoNguyen(int a[], int &n);
void XuatMang1C_SoNguyen(int a[], int n);
void XuatMang1C_SoChan(int a[], int n);
int KiemTraSoChinhPhuong(int x);
void LietKeSoChinhPhuong(int a[], int n);
Bước 5: Bổ sung vào hàm main để thực thi chương trình.
Bước 6: Viết các định nghĩa hàm cần thiết cho chương trình như sau:
Đã khai báo trong bài 1
Bổ sung thêm
45
3. Tính giá trị trung bình các phần tử trong mảng.
4. Tìm giá trị lớn nhất trong mảng.
5. Xuất ra danh sách các phần tử ở vị trí chẵn trong mảng.
6. Đếm phần tử dương trong mảng.
7. Đếm số lần phần tử x xuất hiện trong mảng.
8. Tìm vị trị của giá trị x trong mảng, x nhập từ phím.
9. Tìm vị trí phần tử nhỏ nhất trong mảng.
10. Đếm số nguyên tố trong mảng.
IV. Bài tập về nhà:
Cho một mảng 1 chiều chứa các số thực. Hãy viết một chương trình cho phép
người dùng chọn một trong các yêu cầu sau:
1. Tạo một mảng 1 chiều chứa n số thực.
2. Xuất một mảng 1 chiều chứa n số thực.
3. Tính tổng các giá trị mảng.
4. Tính giá trị trung bình các phần tử trong mảng.
5. Tính tổng các giá trị dương trong mảng.
Trường ĐH CNTP TP.HCM
Khoa: CÔNG NGHỆ THÔNG TIN
Bộ môn: CÔNG NGHỆ PHẦN MỀM
Môn: TH NGÔN NGỮ LẬP TRÌNH
BÀI 7
MẢNG 1 CHIỀU (tt)
A. MỤC TIÊU:
Hiểu được cấu trúc dữ liệu mảng 1 chiều.
Lập trình và vận dụng được mảng 1 chiều vào từng bài toán cụ thể.
Làm được các bài tập có ứng dụng mảng 1 chiều.
B. DỤNG CỤ - THIẾT BỊ THÍ NGHIỆM CHO MỘT SV:
STT Chủng loại – Quy cách vật tư Số lượng Đơn vị Ghi chú
1 Máy tính (có thể là máy bàn hoặc laptop). 1 Chiếc
C. VẬT LIỆU
Visual C++.Net.
Phần mềm hỗ trợ dạy học: NetOp School hoặc NetSupport School.
D. NỘI DUNG THỰC HÀNH
46
I. Tóm tắt lý thuyết
Một số hàm mẫu hướng dẫn về cách xử lý mảng 1 chiều
1. Cách tìm “giá trị lớn nhất” trong mảng 1 chiều
int LonNhat(int a[], int n)
{//Dùng kỹ thuật lính canh
int max = a[0];
for(int i=1; i<n; i++)
if(a[i] > max) max
= a[i]; return max;
}
2. Liệt kê các giá trị âm trong mảng 1 chiều
void LietKeGiaTriAm(int a[], int n)
{//Dùng kỹ thuật liệt kê
printf("Cac gia tri am co trong mang la: ");
for(int i=0; i<n; i++) if(a[i]<0)
printf("%4d", a[i]);
}
3. Tính tổng các giá trị lẻ trong mảng 1 chiều.
int TongMang_SoLe(int a[], int n) {//Dùng
kỹ thuật tính tổng
int s=0;
for(int i=0; i<n; i++)
if(a[i]%2 != 0) s = s + a[i];
//s += a[i]; return s;
}
4. Kiểm tra mảng số nguyên có tồn tại giá trị 0 hay không? Nếu có thì trả về 1, ngược
lại trả về 0.
int KiemTraGiaTriKhong(int a[], int n)
{//Dùng kỹ thuật cớ hiệu
int flag=0;
for(int i=0; i<n && !flag; i++) if(a[i] == 0)
flag=1;
return flag;
}
5. Sắp xếp các phần tử của mảng số nguyên tăng dần.
void SapXepTangDan(int a[], int n)
{//Dùng kỹ thuật sắp xếp
for(int i=0; i<n-1; i++)
for(int j=i+1; j<n; j++)
if(a[i] > a[j])
HoanVi(a[i], a[j]); //Hàm này xem như đã tồn tại }
6. Thêm một phần tử có giá trị x vào đầu mảng.
void ThemPhanTuDau(int a[], int &n, int x)
{//Dùng kỹ thuật thêm
for(int i=n; i>0; i--)
a[i] = a[i-1]; a[0]=x;
n++;
}
47
7. Xóa một phần tử ở đầu mảng.
void XoaPhanTuDau(int a[], int &n)
{//Dùng kỹ thuật xóa
for(int i=0; i<n-1; i++)
a[i] = a[i+1]; n--;
}
8. Đưa tất cả các phần tử 0 về đầu mảng.
void DuaSoKhongVeDau(int a[], int n)
{//Dùng kỹ thuật xử lý mảng int j=0;
for(int i=1; i<n; i++)
if(a[i] == 0)
{
HoanVi(a[j], a[i]);
j++; }
}
9. Liệt kê các dãy con tăng trong mảng 1 chiều.
void LietKeMangConTang(int a[], int n)
{//Dùng kỹ thuật xử lý con
for(int i=0; i<n; i++)
{
if(a[i] < a[i+1])
printf("%4d",a[i]); else
printf("n");
}
}
10.Tạo mảng b sao cho mảng b chỉ chứa các giá trị lẻ của mảng ban đầu.
void TaoMangConLe(int a[], int na, int b[], int &nb)
{//Dùng kỹ thuật xây dựng mảng
nb=0;
for(int i=0; i<na; i++)
if(a[i]%2 == 0)
b[nb++] = a[i];
}
II. Bài tập mẫu hướng dẫn thực hành.
Bài tập mẫu 3: Trên cơ sở bài tập mẫu 2 (Bài thực hành buổi trước) hãy viết lại
chương trình dạng thực đơn (Menu):
- Xuất các giá trị nguyên tố của mảng ra màn hình.
- Thêm vào mảng một giá trị x tại vị trí vt (kiểm tra tính hợp lệ của vt).
- Xóa khỏi mảng một giá trị x.
- Sắp xếp các giá trị của mảng theo thứ tự tăng dần.
- Xuất ra màn hình những giá trị là số chính phương.
Hướng dẫn:
48
Bước 1: Tạo một Project mới  đặt tên: Mang1C_BaiTapMau3 _<Tên sinh viên>, Ví
dụ Mang1C_BaiTapMau3 _NguyenVanTeo. Bước 2: Khai báo thêm các thư viện cơ bản
cho chương trình.
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<time.h> #include<math.h>
Bước 3: Khai báo hằng số cho chương trình. const int
MAXSIZE=1000; //Hoặc dùng lệnh define
Bước 4: Viết các khai báo nguyên mẫu hàm cho chương trình như sau:
49
Bước 5: Viết hàm main để thực thi chương trình.
50
//=======================================================================
//Phần hàm main void
main()
{
Process();
}
Bước 6: Viết các định nghĩa hàm cần thiết cho chương trình như sau:
51
52
III. Bài tập ở lớp
Bổ sung thêm vào bài tập mẫu 3 các yêu cầu sau:
1. Tìm số chẵn lớn nhất trong mảng.
2. Tìm số nguyên tố nhỏ nhất trong mảng.
3. Tìm vị trị của giá trị x trong mảng, x nhập từ phím.
4. Tìm vị trí phần tử nhỏ nhất trong mảng.
5. Đếm số nguyên tố trong mảng.
6. Tìm “vị trí của giá trị chẵn đầu tiên” trong mảng 1 chiều các số nguyên. Nếu mảng không
có giá trị chẵn nào thì trả về -1.
7. Tìm “số chẵn cuối cùng” trong mảng. Nếu mảng không có giá trị chẵn thì trả về -1.
8. Đảo ngược các giá trị mảng.
9. Kiểm tra tính đối xứng của mảng. Nếu mảng không đối xứng thì trả về -1.
10. Thêm vào mảng một giá trị x tại vị trí vt (kiểm tra tính hợp lệ của vt).
53
IV. Bài tập về nhà
Bổ sung thêm vào bài tập mẫu 3 các yêu cầu sau:
1. Sắp xếp các giá trị của mảng theo thứ tự tăng dần.
2. Xuất ra màn hình những giá trị là số chính phương.
3. Viết hàm tìm giá trị phần tử xuất hiện nhiều nhất trong mảng, nếu có nhiều phần tử có số
lần xuất hiện bằng nhau thì xuất phần tử đầu tiên.
4. Viết hàm kiểm tra mảng có phải là mảng tăng không.
5. Tìm “số chẵn nhỏ nhất” trong mảng. Nếu mảng không có giá trị chẵn thì trả về -1.
6. Tìm “một vị trí mà giá trị tại ví trí đó là giá trị nhỏ nhất” trong.
7. Tính tổng các giá trị có chữ số hàng chục là chữ số 5 trong mảng.
8. Tính tổng các giá trị lớn hơn 2 giá trị lân cận với nó trong mảng.
9. Cho biết sự tương quan giữa số lượng các chữ số chẵn và số lượng các chữ số lẻ
trong mảng 1 chiều các số nguyên.
a. Hàm trả về -1: nếu số lượng các chữ số chẵn nhiều hơn số lượng các chữ số
lẻ
b. Hàm trả về 0: nếu số lượng các chữ số chẵn bằng số lượng các chữ số lẻ
c. Hàm trả về 1: nếu số lượng các chữ số chẵn ít hơn số lượng các chữ số lẻ
10. Kiểm tra mảng số nguyên có tồn tại hai giá trị 0 liên tiếp nhau hay không? Nếu có
thì trả về 1, ngược lại trả về 0.
11. Kiểm tra mảng số nguyên có tồn tại toàn là giá trị chẵn hay không? Nếu có thì trả
về 1, ngược lại trả về 0.
12. Sắp xếp các phần tử của mảng số thực sao cho các phần tử tại các vị trí lẻ tăng dần,
các phần tử tại các vị trí chẵn thì giảm dần.
13. Thêm một phần tử có giá trị x vào mảng tăng dần sao cho sau khi thêm x vào mảng
vẫn tăng dần.
14. Xóa tất cả các phần tử trùng nhau của mảng sao cho sau khi xóa chỉ giữ lại duy
nhất một phần tử đại diện.
15. Đưa tất cả các phần tử 0 về đầu mảng.
16. Đưa tất cả các phần tử chẵn về đầu mảng, các phầu tử lẻ về cuối mảng, các phần tử
0 nằm giữa mảng.
17. Thay thế tất cả các phần tử lớn nhất của mảng bởi giá trị của phần tử nhỏ nhất và
ngược lại.
18. Liệt kê các giá trị chẵn trong mảng thuộc đoạn [x, y] cho trước.
19. Liệt kê các dãy con tăng trong mảng.
20. Liệt kê các dãy con toàn dương có độ dài lớn hơn 1.
54
Trường ĐH CNTP TP.HCM
Khoa: CÔNG NGHỆ THÔNG TIN
Bộ môn: CÔNG NGHỆ PHẦN MỀM
Môn: TH NGÔN NGỮ LẬP TRÌNH
BÀI 8
MẢNG 2 CHIỀU
A. MỤC TIÊU:
Hiểu được cấu trúc dữ liệu mảng 2 chiều.
Lập trình và vận dụng được mảng 2 chiều vào từng bài toán cụ thể.
Làm được các bài tập có ứng dụng mảng 2 chiều.
B. DỤNG CỤ - THIẾT BỊ THÍ NGHIỆM CHO MỘT SV:
STT Chủng loại – Quy cách vật tư Số lượng Đơn vị Ghi chú
1 Máy tính (có thể là máy bàn hoặc laptop). 1 Chiếc
C. VẬT LIỆU
Visual C++.Net.
Phần mềm hỗ trợ dạy học: NetOp School hoặc NetSupport School.
D. NỘI DUNG THỰC HÀNH
I. Tóm tắt lý thuyết mảng 2 chiều.
1. Định nghĩa:
Mảng hai chiều (còn gọi là ma trận) thực chất là mảng một chiều trong đó mỗi
phần tử của mảng là một mảng một chiều, và được truy xuất bởi hai chỉ số dòng
và cột.
2. Cú pháp:
<tên kiểu dữ liệu> <tên mảng> [<số dòng>] [<số cột>];
Lưu ý: Chỉ số cột và chỉ số dòng luôn luôn bắt đầu từ 0.
Ví dụ:
 Khai báo mảng 2 chiều a có 3 dòng 2 cột chứa số nguyên:
int a[3][2];
 Khai báo mảng 2 chiều ch có 50 dòng 100 cột chứa ký tự:
char ch[50][100]; 3. Truy xuất phần tử của mảng:
55
Tên_mảng [chỉ_số_dòng][ chỉ số cột]
Ví dụ: Cho ma trận A như sau:
4. Tham số mảng của một hàm
 Qui ước: Trong phần thực hành chúng ta thống nhất dùng Ma trận thay cho Mảng 2
chiều.
II. Bài tập mẫu hướng dẫn thực hành.
Bài 1: Viết chương trình nhập các giá trị cho ma trận chứa các số nguyên, sau đó
xuất mảng vừa nhập (Lưu ý: Viết chương trình dạng hàm).
Yêu cầu:
Viết 2 hàm con Nhập và Xuất ma trận chứa các số nguyên.
Gọi thực hiện 2 hàm con trong hàm main.
Hướng dẫn:
Bước 1: Tạo một Project mới  đặt tên: MaTran_BaiTapMau1_<Tên sinh viên>, Ví
dụ: MaTran_BaiTapMau1_NguyenVanTeo.
Bước 2: Khai báo thêm các thư viện cơ bản cho chương trình.
56
#include <conio.h>
#include <stdio.h>
Bước 3: Khai báo hằng số cho chương trình.
#define MAXROW 100
#define MAXCOL 100
Bước 4: Viết các khai báo nguyên mẫu hàm cho chương trình như sau:
void NhapMaTran_SoNguyen(int a[], int &m, int &n);
void XuatMaTran_SoNguyen(int a[], int m, int n);
Bước 5: Viết hàm main để thực thi chương trình.
Bước 6: Viết các định nghĩa hàm cần thiết cho chương trình như sau:
Bài 2: Cho ma trận chứa các số nguyên. Viết chương trình thực hiện các thao tác sau
(Lưu ý: Viết chương trình dạng hàm):
- Tạo giá trị ngẫu nhiên cho các phần tử của ma trận.
57
- Xuất các giá trị của ma trận ra màn hình.
- Tính và xuất tổng các phần tử ma trận. - Tìm max/min của các phần tử ma
trận.
- Sắp xếp các giá trị của ma trận theo thứ tự tăng dần.
Hướng dẫn:
Bước 1: Tạo một Project mới  đặt tên: MaTran_BaiTapMau2 _<Tên sinh viên>, Ví
dụ: MaTran_BaiTapMau2 _NguyenVanTeo.
Bước 2: Khai báo thêm các thư viện cơ bản cho chương trình.
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<time.h> #include<math.h>
Bước 3: Khai báo hằng số cho chương trình.
#define MAXROW 100 //số dòng tối đa
#define MAXCOL 100 //số cột tối đa
Bước 4: Viết các khai báo nguyên mẫu hàm cho chương trình như sau:
Bước 5: Viết hàm main để thực thi chương trình.
58
case 5:
SapXepMaTranTang(A, M, N);
printf("nNoi dung cua ma tran sau khi sap xep tang la: n");
XuatMaTran_SoNguyen(A, M, N);
break;
case 0: exit(1);
}
}while(1);
}
//=======================================================================
//Phần hàm main
void main() {
Process();
}
Bước 6: Viết các định nghĩa hàm cần thiết cho chương trình như sau:
59
//=======================================================================
60
III. Bài tập ở lớp
Cho một ma trận chứa các số nguyên. Viết một chương trình (dạng menu) thực hiện
các yêu cầu sau:
1. Tạo ngẫu nhiên giá trị cho các phần tử của ma trận.
2. Xuất giá trị các phần tử của ma trận ra màn hình.
3. Tìm vị trí của giá trị x trong ma trận, x nhập từ phím.
4. Tìm max của dòng k trong ma trận.
5. Đếm phần tử dương trong ma trận.
6. Đếm số lần phần tử x xuất hiện trong ma trận.
7. Kiểm tra ma trận có vuông không?
8. Kiểm tra ma trận có toàn là số chẵn không?
9. Xuất các phần tử trên đường chéo chính.
10. Tìm số chẵn lớn nhất trong ma trận. IV. Bài tập về nhà
1. Tìm số nguyên tố nhỏ nhất trong ma trận. 2.
Xuất các phần tử trên đường chéo phụ
3. Xuất các phần tử thuộc tam giác trên.
4. Xuất các phần tử thuộc tam giác dưới.
5. Xuất các cột có tổng lớn nhất trong ma trận.
6. Xuất các dòng có tổng nhỏ nhất trong ma trận.
7. Tính tổng các phần tử trên đường chéo chính.
8. Tính tổng các phần tử chẵn thuộc tam giác trên.
61
9. Tính tổng các phần tử lẻ thuộc tam giác dưới.
10.Đếm số phần tử cực đại trong ma trận. biết phần tử cực đại là phần tử lớn hơn các
phần tử xung quanh nó.
Trường ĐH CNTP TP.HCM
Khoa: CÔNG NGHỆ THÔNG TIN
Bộ môn: CÔNG NGHỆ PHẦN MỀM
Môn: TH NGÔN NGỮ LẬP TRÌNH
BÀI 9
FILE
A. MỤC TIÊU:
Hiểu được cách đọc dữ liệu trên file.
Lập trình và vận dụng được cách đọc 1 số nguyên từ file và đọc 1 dòng văn bản
từ file vào từng bài toán cụ thể.
Làm được các bài tập có ứng dụng file.
B. DỤNG CỤ - THIẾT BỊ THÍ NGHIỆM CHO MỘT SV:
STT Chủng loại – Quy cách vật tư Số lượng Đơn vị Ghi chú
1 Máy tính (có thể là máy bàn hoặc laptop). 1 Chiếc
C. VẬT LIỆU
Visual C++.Net.
Phần mềm hỗ trợ dạy học: NetOp School hoặc NetSupport School.
D. NỘI DUNG THỰC HÀNH
I. Tóm tắt lý thuyết
- Thư viện xử lý file: fstream
- Khai báo biến mở file để đọc:
ifstream <tên biến kiểu file>; Ví
dụ: ifstream f
- Hàm mở file
f.open(<tên file>, <định dạng mở file để đọc>);
Ví dụ: f.open("t.txt", ifstream::in);
- Hàm đóng file
Ví dụ: f.close();
1. Đọc file txt kiểu số
62
- f>>a; trong đó a là biến kiểu số
Ví dụ:
- Khai báo biến số nguyên a, b ,c
int a, b, c;
- Nội dung file txt là:
5 6 9
- Cách đọc 3 số nguyên lưu vào a,b,c như sau:
f>>a f>>b; f>>c;
Chú ý: Khi đọc số nguyên, 1 lần đọc >> kết thúc bởi kí hiệu khoảng trắng hoặc xuống
dòng
2. Đọc file txt kiểu chuỗi
- Hàm getline giúp đọc 1 dòng văn bản từ file txt vào biến kiểu chuỗi buffer Ví
du:
f.getline(buffer, 1000, 'n'); trong đó buffer là biến kiểu chuỗi
Chú ý: Khi đọc 1 dòng văn bản, 1 lần getline kết thúc bởi kí hiệu xuống dòng
63
II. Bài tập mẫu hướng dẫn thực hành
1. Cho file txt chứa mảng 1 chiều như sau:
5
1 7 9 4 3
a. Hãy đọc các giá trị của file txt và lưu vào mảng 1 chiều.
b. Xuất mảng vừa đọc ra màn hình
c. Tính tổng tất cả giá trị của mảng vừa đọc
2. Cho file txt chứa thông tin:
121
Nguyen Thi Thuy
23
a. Đọc giá trị của file và in ra màn hinh
b. Tính lương = Số ngày công *50
64
III. Bài tập ở lớp
1. Cho file txt như mẫu sau:
3
4
4 5 8 1
9-2 8 5 8
5 2 7
- Đọc nội dung file ghi dữ liệu vào biến mảng 2 chiều, xuất mảng 2 chiều ra
màn hình
- Tính tổng giá trị chẵn mảng 2 chiều
2. Cho file txt như hinh mẫu như sau:
1
Nguyen van A
1996
Ben tre
2
Nguyen Thi N
1987
Hau giang
Đọc file và xuất nội dung file ra màn hình theo định dạng
-----------------------------------
Ma sinh vien: 1
Ten sinh vien: Nguyen van A
65
Nam sinh: 1996
Nam sinh: Ben tre
-----------------------------------
Ma sinh vien: 2
Ten sinh vien: Nguyen Thi N
Nam sinh: 1987
Nam sinh: Hau giang
IV. Bài tập về nhà
1. Cho file txt như hinh mẫu như sau: 1#
Nguyễn văn A #1996#Bến tre
2#Nguyễn Thi N #1987#Hậu giang
- Đọc file và xuất nội dung file ra màn hình như định dạng bài 2 (Bài tập ở lớp)
Trường ĐH CNTP TP.HCM
Khoa: CÔNG NGHỆ THÔNG TIN
Bộ môn: CÔNG NGHỆ PHẦN MỀM
Môn: TH NGÔN NGỮ LẬP TRÌNH
BÀI 10
STRUCT
A. MỤC TIÊU:
Hiểu được cấu trúc dữ liệu struct.
Lập trình và vận dụng được struct vào từng bài toán cụ thể.
Làm được các bài tập có ứng dụng struct.
B. DỤNG CỤ - THIẾT BỊ THÍ NGHIỆM CHO MỘT SV:
STT Chủng loại – Quy cách vật tư Số lượng Đơn vị Ghi chú
1 Máy tính (có thể là máy bàn hoặc laptop). 1 Chiếc
C. VẬT LIỆU
Visual C++.Net.
Phần mềm hỗ trợ dạy học: NetOp School hoặc NetSupport School.
D. NỘI DUNG THỰC HÀNH
I. Tóm tắt lý thuyết.
66
1. Định nghĩa :
Cấu trúc là một kiểu dữ liệu bao gồm nhiều thành phần có thể thuộc nhiều kiểu dữ liệu
khác nhau. Các thành phần được truy nhập thông qua một tên.
2. Khai báo struct:
Cách 1:
Ví dụ:
Cách 2:
67
Ví dụ:
3. Khai báo biến sử dụng cấu trúc
Ví dụ:
4. Truy cập thành phần của cấu trúc:
Tên_biến_cấu_trúc.tên_thành_phần Ví
dụ:
II. Bài tập mẫu hướng dẫn thực hành.
Bài1: Khai báo cấu trúc HinhChuNhat cần thiết lưu trữ thông tin hình chữ nhật, sau đó
thực hiện các chức năng: (Lưu ý: Viết chương trình dạng hàm). Yêu cầu:
68
Nhập thông tin cho kiểu dữ liệu HinhChuNhat.
Xuất thông tin cho kiểu dữ liệu HinhChuNhat.
Tính chu vi hình chữ nhật
Tính diện tích hình chữ nhật
Hướng dẫn:
Bước 1: Tạo một Project mới  đặt tên: Struct_BaiTapMau1_<Tên sinh viên>, Ví dụ
Struct _BaiTapMau1_NguyenThiC Bước 2: Khai báo thêm các thư viện cơ bản cho
chương trình.
#include <conio.h>
#include <stdio.h>
Bước 3: Khai báo struct HinhChuNhat cho chương trình.
struct HinhChuNhat
{
int Dai;
int Rong;
}; Bước 4: Viết các khai báo nguyên mẫu hàm cho chương trình như
sau:
void NhapThongTinHCN(HinhChuNhat &pHcn);
void XuatThongTinHCN(HinhChuNhat pHcn);
void TinhChuViHcn(HinhChuNhat pHcn); void
TinhDienTichHcn(HinhChuNhat pHcn); Bước 5:
Viết hàm main để thực thi chương trình.
void main()
{
HinhChuNhat hinhchunhat;
NhapThongTinHCN(hinhchunhat);
XuatThongTinHCN(hinhchunhat);
TinhChuViHcn(hinhchunhat);
TinhDienTichHcn(hinhchunhat);
_getch();
}
Bước 6: Viết các định nghĩa hàm cần thiết cho chương trình như sau:
69
III. Bài tập ở lớp
1. Khai báo cấu trúc PhanSo cần thiết lưu trữ thông tin phân số, sau đó thực hiện các
chức năng:
a. Viết hàm nhập vào phân số.
b. Viết hàm xuất phân số.
c. Kiểm tra phân số mẫu phải khác 0.
d. Viết hàm tối giản phân số.
e. Viết hàm quy đồng 2 phân số.
f. Nhập vào 2 phân số. Tính tổng, hiệu, tích và thương của hai phân số.
2. Khai báo cấu trúc NhanVien lưu trữ thông tin:
 Mã số nhân viên  Tên nhân viên
 Số ngày công
 Lương 1 ngày công
 Chức vụ
Sau đó thực hiện các chức năng:
a. Tạo file txt lưu trữ thông tin 1 nhân viên, mỗi dòng lưu 1 thông tin như sau.
368
Tran An
26
150
Giam doc
70
b. Nhập thông tin cho 1 nhân viên từ file
c. Tính lương cho 1 nhân viên
d. Tính tiền thưởng cho nhân viên, biết rằng thưởng 50$ cho nhân viên làm trên
24 ngày.
e. Tính tiền phụ cấp chức vụ:
 Giám đốc: 100$
 Phó giám đốc: 80$
 Trưởng phòng: 40$  Phó phòng: 20$
f. Tính tiền lương thực lãnh cho nhân viên
IV. Bài tập về nhà:
Hãy khai báo một cấu trúc mô tả một điểm trên tọa độ xOy. Sau đó viết hàm
thực hiện các chức năng sau:
a. Nhập, xuất điểm.
b. Kiểm tra điểm có nằm trên trục tung/trục hoành.
c. Tính khoảng cách giữa 2 điểm.
d. Tìm điểm đối xứng của 1 điểm qua trục tung/trục hoành
Trường ĐH CNTP TP.HCM
Khoa: CÔNG NGHỆ THÔNG TIN
Bộ môn: CÔNG NGHỆ PHẦN MỀM
Môn: TH NGÔN NGỮ LẬP TRÌNH
BÀI 11
MẢNG STRUCT
A. MỤC TIÊU:
Hiểu được cấu trúc dữ liệu mảng struct.
Lập trình và vận dụng được mảng struct vào từng bài toán cụ thể.
Làm được các bài tập có ứng dụng mảng struct.
B. DỤNG CỤ - THIẾT BỊ THÍ NGHIỆM CHO MỘT SV:
STT Chủng loại – Quy cách vật tư Số lượng Đơn vị Ghi chú
1 Máy tính (có thể là máy bàn hoặc laptop). 1 Chiếc
71
C. VẬT LIỆU
Visual C++.Net.
Phần mềm hỗ trợ dạy học: NetOp School hoặc NetSupport School.
D. NỘI DUNG THỰC HÀNH
I. Tóm tắt lý thuyết.
1. Khai báo mảng struct:
Khai báomảng các cấu trúc hoàn toàn tương tự như khai báo mảng khác, chỉ có điều ở
phần kiểu sẽ là tên một cấu trúc.
Ví dụ:
2. Truy cập thành phần của mảng cấu trúc:
Việc truy xuất đến một phần tử của mảng như a[2] ta sẽ thu được một biến có cấu trúc
SinhVien và có thể lại tiếp tục truy xuất đến các thành phần của nó.
Ví dụ:
II. Bài tập mẫu hướng dẫn thực hành.
Bài1: Khai báo cấu trúc CongNhan lưu trữ thông tin: (Lưu ý: Viết chương trình dạng hàm).
 Ten
 NamSinh
 GioLam Yêu cầu:
Nhập mảng gồm n công nhân, xuất mảng công nhân vừa nhập
72
Lệt kê tên công nhân nhận thưởng biết rằng công nhân nhận thưởng là các công nhân
có giờ làm lớn hơn 40 giờ.
Sắp xếp mảng công nhân theo giờ làm giảm dần.
Hướng dẫn:
Bước 1: Tạo một Project mới  đặt tên: MangStruct_BaiTapMau1_<Tên sinh viên>,
Ví dụ MangStruct _BaiTapMau1_NguyenThiC
Bước 2: Khai báo thêm các thư viện cơ bản cho chương trình.
#include "stdafx.h"
#include<stdio.h>
#include<conio.h>
#include <math.h>
Bước 3: Khai báo struct CongNhan cho chương trình.
struct CongNhan
{ char
ten[50]; int
namsinh; int
giolam;
};
Bước 4: Viết các khai báo nguyên mẫu hàm cho chương trình như sau:
void NhapMangCN(int &n, CongNhan a[]);
void XuatMangCN(CongNhan a[], int n); void
ThuongCN(CongNhan a[], int n); void
XuatCN(CongNhan pCN,int i); void
InsertionSort(CongNhan a[], int n) ; void
SapXep(CongNhan a[], int n);
Bước 5: Viết hàm main để thực thi chương trình.
void main()
{
CongNhan A[1000];// Mảng struct công nhân int
N;// N công nhân biến kiểu nguyên
NhapMangCN(N,A);
ThuongCN(A,N);
SapXep(A,N);
XuatMangCN(A,N);
_getch();
}
Bước 6: Viết các định nghĩa hàm cần thiết cho chương trình như sau:
73
74
III. Bài tập tương tự ở lớp
1. Khai báo cấu trúc Thí Sinh lưu trữ thông tin:
 Mã số thí sinh
 Tên thí sinh
 Điểm Toán, Điểm Lý, Điểm Hóa
 Khu vực dự thi
 Xếp loại tốt nghiệp Sau đó thực hiện các chức năng:
1. Tạo file txt lưu trữ n Thí sinh theo cấu trúc:
Dòng đầu tiên lưu số lượng thí sinh
Các dòng còn lại lưu thông tin của n thí sinh, mỗi thông tin lưu trên 1 dòng Ví
dụ:
2
367
An
75
5 4
4
KV3
Trung binh
368
Cuc
5
9 7
KV1
Gioi
2. Nhập mảng gồm n thí sinh từ file txt trên, xuất mảng thí sinh
3. Tính tổng điểm của thí sinh
4. Tổng điểm = điểm toán + điểm lý + điểm hóa + điêm cộng + điểm ưu tiên.
5. Điểm cộng: Nếu xếp loại đạt giỏi (>8) thì cộng 2 điểm, nếu đạt loại khá (từ 7-8) thì cộng 1
điểm, các trường hợp khác không cộng.
6. Điểm ưu tiên: nếu là khu vực 3 được 2 điểm, nếu là khu vực 2 thì cộng 1 điểm, các khu vực
khác là không.
7. In danh sách thi sinh đậu.
8. In thông tin thí sinh đậu thủ khoa
9. Nhập mã số thí sinh, xuất thông tin thí sinh (tên, điểm toán, điểm lý, điểm hóa, điểm cộng,
điểm ưu tiên, tổng điểm.
10.Tính tỉ lệ % đậu của kì thi. Gợi ý:
struct ThiSinh
{
char mats[10];
char hten[50];
float toan, ly,
hoa; char kvthi[30];
char loaiTN [10];
};
2. Viết chương trình quản lý nhân sự cho một công ty, mỗi nhân viên trong công ty gồm
cácthông tin sau: mã số(khôngcó hai người trùng mã số), họ, tên, ngày sinh, nơi sinh,
địa chỉ, ngày công tác, lương. Viết chương trình quản lý nhân viên với các thao tác sau
(sử dụng file để lưu trữ thông tin nhân viên):
 Thêm vào một nhân viên.
 Xem danh sách nhân viên.
 Tìm nhân viên theo mã số.
 Tìm một nhân viên theo tên.
 In ra bảng lương của các nhân viên trong công ty theo thứ tự giảm dần.
 Xóa một nhân viên.
IV. Bài tập về nhà:
1. Khai báo cấu trúc NhânViên lưu trữ thông tin:
76
 Mã số nhân viên  Tên nhân viên
 Hệ số lương
 Lương cơ bản
 Chức vụ
Sau đó viết hàm thực hiện các chức năng sau:
a. Nhập mảng gồm n nhân viên, xuất mảng nhân viên vừa nhập
b. Tính lương thực lãnh từng nhân viên.
 Thực lãnh = hệ số lương * lương cơ bản + phụ cấp chức vụ.
 Phụ cấp chức vụ: phụ cấp 500 cho giám đốc và 300 cho trưởng phòng.
77
78
Trường ĐH CNTP TP.HCM
Khoa: CÔNG NGHỆ THÔNG TIN
Bộ môn: CÔNG NGHỆ PHẦN MỀM
Môn: TH NGÔN NGỮ LẬP TRÌNH
BÀI 12
STRUCT CON TRỎ
STRUCT ĐỆ QUY
A. MỤC TIÊU:
Hiểu được cấu trúc dữ liệu con trỏ struct.
Lập trình và vận dụng được con trỏ struct vào từng bài toán cụ thể.
Làm được các bài tập có ứng dụng con trỏ struct.
B. DỤNG CỤ - THIẾT BỊ THÍ NGHIỆM CHO MỘT SV:
STT Chủng loại – Quy cách vật tư Số lượng Đơn vị Ghi chú
1 Máy tính (có thể là máy bàn hoặc laptop). 1 Chiếc
C. VẬT LIỆU
Visual C++.Net.
Phần mềm hỗ trợ dạy học: NetOp School hoặc NetSupport School.
D. NỘI DUNG THỰC HÀNH
I. Tóm tắt lý thuyết.
1. Khai báo struct con trỏ:
Ta có thể khai báo một biến pointer chỉ đến một cấu trúc để có thể lưu giữ lại địa chỉ của
một biến cấu trúc nào đó cần thiết.
Ví dụ:
2. Truy cập thành phần của con trỏ cấu trúc:
79
Việc truy xuất đến thành phần của một cấu trúc thông qua một pointer được thực
hiện bằng một tóan tử: -> là phép toán lấy thành phần nội dung của pointer
Ví dụ:
3. Cấu trúc đệ quy
Người ta thường dùng cấu trúc đệ quy để chỉ các cấu trúc mà thành phần của nó lại có
các pointer chỉ đến một biến cấu trúc cùng kiểu.
Hoặc
II. Bài tập mẫu hướng dẫn thực hành.
Bài 1: Khai báo cấu trúc CongNhan lưu trữ thông tin: (Lưu ý: Viết chương trình dạng hàm).
 Ten
 NamSinh
 GioLam
Nhập con trỏ struct gồm n công nhân, xuất con trỏ struct công nhân vừa nhập
Hướng dẫn:
Bước 1: Tạo một Project mới  đặt tên: PointerStruct_BaiTapMau1_<Tên sinh
viên>, Ví dụ PointerStruct _BaiTapMau1_NguyenThiC Bước 2: Khai báo thêm
các thư viện cơ bản cho chương trình.
#include "stdafx.h"
#include<stdio.h>
#include<conio.h>
#include <math.h>
Bước 3: Khai báo struct CongNhan cho chương trình struct CongNhan
80
{
char ten[50]; int
namsinh;
int giolam;
};
.
Bước 4: Viết các khai báo nguyên mẫu hàm cho chương trình như sau:
void XuatCN(CongNhan *p, int n); void
NhapCN(int &n, CongNhan *p);
Bước 5: Viết hàm main để thực thi chương trình.
void main()
{ struct CongNhan *p ;// Con trỏ mảng kiểu
CongNhan CongNhan A[1000];// Mảng struct công nhân
int N;// N công nhân biến kiểu nguyên p=A;// Gán
mảng A cho con trỏ p
NhapPointCN(N,p);
XuatPointCN(p,N);
_getch();
}
Bước 6: Viết các định nghĩa hàm cần thiết cho chương trình như sau:
void NhapCN(int &n, CongNhan *p)
{
do
{
printf("Cho biet so cong nhan: ");
scanf_s("%d", &n);
}while(n<=0);
for(int i=0; i<n; i++)
{
printf("Thong tin cong nhan thu %d la:", i+1);
printf("nTen la:");
fflush(stdin); gets_s((p+i)-
>ten,100); printf("Nam Sinh:");
scanf_s("%d",&(p+i)->namsinh);
printf("Gio lam:"); scanf_s("%d",
&(p+i)->giolam);
}
}
//====================================================================
void XuatCN(CongNhan *p, int n)
{
for(int i=0; i<n; i++)
{
printf("n====================================");
printf("nThong tin cong nhan thu %d la:", i+1);
printf("nTen la: %s",(p+i)->ten);
81
printf("nNam Sinh la %d:",(p+i)->namsinh);
printf("nGio lam %d:",(p+i)->giolam);
}
}
//=======================================================================
III. Bài tập ở lớp
Sử dụng struct con trỏ viết chương trình quản lý một lớp học có tối đa 50 học
sinh, mỗi học sinh được mô tả bằng các thông tin: mã số(int), họ và tên, phái, điểm
học kỳ I, điểm học kỳ II. Hãy viết chương trình quản lý lớp học này với các thao
tác sau:
 Nhập danh sách lớp.
 In ra danh sách lớp theo thứ tự mã số (gồm số thứ tự, họ vàtên).
 In ra danh sách lớp theo thứ tự của họ vàtên.
 Tìm vị trí của một học sinh theo khi nhập họ vàtên.
 In ra danh sách các học sinh có điểm trung bình của năm học <
5.0
 Thêm một học sinh vào danh sách
 Xóa một học sinh trong danh sách.
IV. Bài tập về nhà
Sử dụng struct con trỏ viết chương trình nhập danh sách gồm N học viên gồm các
thông tin như: Họ, tên, điểm c, điểm c#, sau đó tính điểm trung bình (điemTB) =
(diemC*2 + diemC#)/3.
Và xét kết quả đậu hay rớt theo qui ước sau : nếu điểm trung bình >= 5 thì kết quả
đậu. Nếu điểm trung bình <5 thì kết qua rớt. Nếu điểm trung bình = 4 mà phái =
"Nữ" thì kết quả là đậu.
 In danh sách vừa nhập gồm họ tên, phái, điểm c, điểm c#, điểm
TB, kết quả.
 Sắp xếp giảm dần theo điểm trung bình và in ra.
 Nhập vào tên cần tìm và tìm trong danh sách học viên nếu không
tìm thấy thì in ra học viên có tên không tìm thấy. Nếu có nhiều
học viên có cùng tên cần tìm thì hãy in ra người cuối cùng được
tìm thấy. (*)
 Yêu cầu như (*) nhưng in ra 2 người tìm thấy đầu tiên (nếu có
nhiều người).
 Yêu cầu như (*) nhưng in ra người đầu tiên và người cuối cùng
(nếu có nhiều ngưòi).

Mais conteúdo relacionado

Mais procurados

Kiến trúc máy tính và hợp ngữ bài 02
Kiến trúc máy tính và hợp ngữ bài 02Kiến trúc máy tính và hợp ngữ bài 02
Kiến trúc máy tính và hợp ngữ bài 02Nhóc Nhóc
 
Kiến trúc máy tính và hợp ngữ bài 05
Kiến trúc máy tính và hợp ngữ bài 05Kiến trúc máy tính và hợp ngữ bài 05
Kiến trúc máy tính và hợp ngữ bài 05Nhóc Nhóc
 
mạch tổ hợp và mạch trình tự - Điện tử Đo lường
mạch tổ hợp và mạch trình tự - Điện tử Đo lườngmạch tổ hợp và mạch trình tự - Điện tử Đo lường
mạch tổ hợp và mạch trình tự - Điện tử Đo lườngChia sẻ tài liệu học tập
 
Bài giảng kiến trúc máy tính
Bài giảng kiến trúc máy tínhBài giảng kiến trúc máy tính
Bài giảng kiến trúc máy tínhCao Toa
 
Bài tập điện trường
Bài tập điện trườngBài tập điện trường
Bài tập điện trườngHajunior9x
 
Bai tap lap trinh c
Bai tap lap trinh  cBai tap lap trinh  c
Bai tap lap trinh ctiểu minh
 
Công thức Máy điện 1 - Chương 3 - Máy điện một chiều
Công thức Máy điện 1 - Chương 3 - Máy điện một chiềuCông thức Máy điện 1 - Chương 3 - Máy điện một chiều
Công thức Máy điện 1 - Chương 3 - Máy điện một chiềuMan_Ebook
 
[Cntt] bài giảng kĩ thuật vi xử lí
[Cntt] bài giảng kĩ thuật vi xử lí[Cntt] bài giảng kĩ thuật vi xử lí
[Cntt] bài giảng kĩ thuật vi xử líHong Phuoc Nguyen
 
Tích phân-3-Phương pháp biến đổi số-pages-30-43
Tích phân-3-Phương pháp biến đổi số-pages-30-43Tích phân-3-Phương pháp biến đổi số-pages-30-43
Tích phân-3-Phương pháp biến đổi số-pages-30-43lovestem
 
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thôngBáo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thôngHuyen Pham
 
Bai tap xác suất
Bai tap xác suấtBai tap xác suất
Bai tap xác suấtTzaiMink
 
Bảng giá trị hàm Laplace
Bảng giá trị hàm LaplaceBảng giá trị hàm Laplace
Bảng giá trị hàm Laplacehiendoanht
 
Chuong2: ƯỚC LƯỢNG THAM SỐ, môn thống kê ứng dụng
Chuong2: ƯỚC LƯỢNG THAM SỐ, môn thống kê ứng dụngChuong2: ƯỚC LƯỢNG THAM SỐ, môn thống kê ứng dụng
Chuong2: ƯỚC LƯỢNG THAM SỐ, môn thống kê ứng dụngThắng Nguyễn
 
Giáo trình phân tích thiết kế hệ thống thông tin
Giáo trình phân tích thiết kế hệ thống thông tinGiáo trình phân tích thiết kế hệ thống thông tin
Giáo trình phân tích thiết kế hệ thống thông tinVõ Phúc
 
Bài 1. phân tích đặc tả dự án quản lý sinh viên howkteam.com
Bài 1. phân tích đặc tả dự án quản lý sinh viên howkteam.comBài 1. phân tích đặc tả dự án quản lý sinh viên howkteam.com
Bài 1. phân tích đặc tả dự án quản lý sinh viên howkteam.comthai
 
Bài tập mẫu C và C++ có giải
Bài tập mẫu C và C++ có giảiBài tập mẫu C và C++ có giải
Bài tập mẫu C và C++ có giảiTrung Thanh Nguyen
 
Lập trình c++ có lời giải 2
Lập trình c++ có lời giải 2Lập trình c++ có lời giải 2
Lập trình c++ có lời giải 2Minh Ngoc Tran
 

Mais procurados (20)

Qua trinh qua do
Qua trinh qua doQua trinh qua do
Qua trinh qua do
 
Kiến trúc máy tính và hợp ngữ bài 02
Kiến trúc máy tính và hợp ngữ bài 02Kiến trúc máy tính và hợp ngữ bài 02
Kiến trúc máy tính và hợp ngữ bài 02
 
Kiến trúc máy tính và hợp ngữ bài 05
Kiến trúc máy tính và hợp ngữ bài 05Kiến trúc máy tính và hợp ngữ bài 05
Kiến trúc máy tính và hợp ngữ bài 05
 
mạch tổ hợp và mạch trình tự - Điện tử Đo lường
mạch tổ hợp và mạch trình tự - Điện tử Đo lườngmạch tổ hợp và mạch trình tự - Điện tử Đo lường
mạch tổ hợp và mạch trình tự - Điện tử Đo lường
 
Bài giảng kiến trúc máy tính
Bài giảng kiến trúc máy tínhBài giảng kiến trúc máy tính
Bài giảng kiến trúc máy tính
 
Bài tập điện trường
Bài tập điện trườngBài tập điện trường
Bài tập điện trường
 
Bai tap lap trinh c
Bai tap lap trinh  cBai tap lap trinh  c
Bai tap lap trinh c
 
Công thức Máy điện 1 - Chương 3 - Máy điện một chiều
Công thức Máy điện 1 - Chương 3 - Máy điện một chiềuCông thức Máy điện 1 - Chương 3 - Máy điện một chiều
Công thức Máy điện 1 - Chương 3 - Máy điện một chiều
 
[Cntt] bài giảng kĩ thuật vi xử lí
[Cntt] bài giảng kĩ thuật vi xử lí[Cntt] bài giảng kĩ thuật vi xử lí
[Cntt] bài giảng kĩ thuật vi xử lí
 
BÀI TẬP XÁC SUẤT THỐNG KÊ: PHÂN PHỐI BERNOULLI
BÀI TẬP XÁC SUẤT THỐNG KÊ: PHÂN PHỐI BERNOULLIBÀI TẬP XÁC SUẤT THỐNG KÊ: PHÂN PHỐI BERNOULLI
BÀI TẬP XÁC SUẤT THỐNG KÊ: PHÂN PHỐI BERNOULLI
 
Tích phân-3-Phương pháp biến đổi số-pages-30-43
Tích phân-3-Phương pháp biến đổi số-pages-30-43Tích phân-3-Phương pháp biến đổi số-pages-30-43
Tích phân-3-Phương pháp biến đổi số-pages-30-43
 
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thôngBáo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
 
Bai tap xác suất
Bai tap xác suấtBai tap xác suất
Bai tap xác suất
 
Bảng giá trị hàm Laplace
Bảng giá trị hàm LaplaceBảng giá trị hàm Laplace
Bảng giá trị hàm Laplace
 
Chuong2: ƯỚC LƯỢNG THAM SỐ, môn thống kê ứng dụng
Chuong2: ƯỚC LƯỢNG THAM SỐ, môn thống kê ứng dụngChuong2: ƯỚC LƯỢNG THAM SỐ, môn thống kê ứng dụng
Chuong2: ƯỚC LƯỢNG THAM SỐ, môn thống kê ứng dụng
 
Giáo trình phân tích thiết kế hệ thống thông tin
Giáo trình phân tích thiết kế hệ thống thông tinGiáo trình phân tích thiết kế hệ thống thông tin
Giáo trình phân tích thiết kế hệ thống thông tin
 
Cac lenh trong matlab
Cac lenh trong matlabCac lenh trong matlab
Cac lenh trong matlab
 
Bài 1. phân tích đặc tả dự án quản lý sinh viên howkteam.com
Bài 1. phân tích đặc tả dự án quản lý sinh viên howkteam.comBài 1. phân tích đặc tả dự án quản lý sinh viên howkteam.com
Bài 1. phân tích đặc tả dự án quản lý sinh viên howkteam.com
 
Bài tập mẫu C và C++ có giải
Bài tập mẫu C và C++ có giảiBài tập mẫu C và C++ có giải
Bài tập mẫu C và C++ có giải
 
Lập trình c++ có lời giải 2
Lập trình c++ có lời giải 2Lập trình c++ có lời giải 2
Lập trình c++ có lời giải 2
 

Semelhante a Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP.Hồ Chí Minh

Bài tập nhập môn lập trình
Bài tập nhập môn lập trìnhBài tập nhập môn lập trình
Bài tập nhập môn lập trìnhLong Kingnam
 
Bai tap thuc hanh nhap mon tin hoc
Bai tap thuc hanh nhap mon tin hocBai tap thuc hanh nhap mon tin hoc
Bai tap thuc hanh nhap mon tin hocHồ Lợi
 
Giaotrinhbaitapkythuatlaptrinh
GiaotrinhbaitapkythuatlaptrinhGiaotrinhbaitapkythuatlaptrinh
GiaotrinhbaitapkythuatlaptrinhHồ Lợi
 
Cac van de co so kh may tinh
Cac van de co so kh may tinhCac van de co so kh may tinh
Cac van de co so kh may tinhTunAnh346
 
Bài tập CTDL và GT 4
Bài tập CTDL và GT 4Bài tập CTDL và GT 4
Bài tập CTDL và GT 4Hồ Lợi
 
Bài tập nhập môn lập trình
Bài tập nhập môn lập trìnhBài tập nhập môn lập trình
Bài tập nhập môn lập trìnhHuy Rùa
 
BÀI 3: Các khái niệm cơ bản trong lập trình - Giáo trình FPT
BÀI 3: Các khái niệm cơ bản trong lập trình - Giáo trình FPTBÀI 3: Các khái niệm cơ bản trong lập trình - Giáo trình FPT
BÀI 3: Các khái niệm cơ bản trong lập trình - Giáo trình FPTMasterCode.vn
 
1 de cuong c
1 de cuong c1 de cuong c
1 de cuong cPhú Syd
 
LAP TRINH C - SESSION 2
LAP TRINH C - SESSION 2LAP TRINH C - SESSION 2
LAP TRINH C - SESSION 2pnanhvn
 
Homework - C programming language
Homework - C programming languageHomework - C programming language
Homework - C programming languageLinh Lê
 
Lớp 8: Bai 3 chuong trinh may tinh va du lieu
Lớp 8: Bai 3 chuong trinh may tinh va du lieuLớp 8: Bai 3 chuong trinh may tinh va du lieu
Lớp 8: Bai 3 chuong trinh may tinh va du lieuHeo_Con049
 
Local sakainame 501127 ktl_trình hlmt1 a01 fall 2013 _ modules
Local sakainame   501127 ktl_trình hlmt1 a01 fall 2013 _ modulesLocal sakainame   501127 ktl_trình hlmt1 a01 fall 2013 _ modules
Local sakainame 501127 ktl_trình hlmt1 a01 fall 2013 _ modulesTrần Văn Nam
 
De kiem tra 1 tiet tin 7
De kiem tra 1 tiet tin 7De kiem tra 1 tiet tin 7
De kiem tra 1 tiet tin 7Levin Duong
 
Nmlt C01 Cac Khai Niem Co Ban Ve Lap Trinh
Nmlt C01 Cac Khai Niem Co Ban Ve Lap TrinhNmlt C01 Cac Khai Niem Co Ban Ve Lap Trinh
Nmlt C01 Cac Khai Niem Co Ban Ve Lap TrinhCuong
 
300 BÀI CODE THIẾU NIÊN.pdf
300 BÀI CODE THIẾU NIÊN.pdf300 BÀI CODE THIẾU NIÊN.pdf
300 BÀI CODE THIẾU NIÊN.pdfHuyPhc9
 
Bài giảng Lập trình cơ bản - truongkinhtethucpham.com
Bài giảng Lập trình cơ bản - truongkinhtethucpham.comBài giảng Lập trình cơ bản - truongkinhtethucpham.com
Bài giảng Lập trình cơ bản - truongkinhtethucpham.commai_non
 

Semelhante a Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP.Hồ Chí Minh (20)

Bài tập nhập môn lập trình
Bài tập nhập môn lập trìnhBài tập nhập môn lập trình
Bài tập nhập môn lập trình
 
Ontap ltc
Ontap ltcOntap ltc
Ontap ltc
 
Bai tap thuc hanh nhap mon tin hoc
Bai tap thuc hanh nhap mon tin hocBai tap thuc hanh nhap mon tin hoc
Bai tap thuc hanh nhap mon tin hoc
 
Giaotrinhbaitapkythuatlaptrinh
GiaotrinhbaitapkythuatlaptrinhGiaotrinhbaitapkythuatlaptrinh
Giaotrinhbaitapkythuatlaptrinh
 
Cac van de co so kh may tinh
Cac van de co so kh may tinhCac van de co so kh may tinh
Cac van de co so kh may tinh
 
Bài tập CTDL và GT 4
Bài tập CTDL và GT 4Bài tập CTDL và GT 4
Bài tập CTDL và GT 4
 
Bai tap thuc hanh
Bai tap thuc hanhBai tap thuc hanh
Bai tap thuc hanh
 
06 tong quan ve ngon ngu c
06 tong quan ve ngon ngu c06 tong quan ve ngon ngu c
06 tong quan ve ngon ngu c
 
Bài tập nhập môn lập trình
Bài tập nhập môn lập trìnhBài tập nhập môn lập trình
Bài tập nhập môn lập trình
 
BÀI 3: Các khái niệm cơ bản trong lập trình - Giáo trình FPT
BÀI 3: Các khái niệm cơ bản trong lập trình - Giáo trình FPTBÀI 3: Các khái niệm cơ bản trong lập trình - Giáo trình FPT
BÀI 3: Các khái niệm cơ bản trong lập trình - Giáo trình FPT
 
1 de cuong c
1 de cuong c1 de cuong c
1 de cuong c
 
LAP TRINH C - SESSION 2
LAP TRINH C - SESSION 2LAP TRINH C - SESSION 2
LAP TRINH C - SESSION 2
 
Homework - C programming language
Homework - C programming languageHomework - C programming language
Homework - C programming language
 
Lớp 8: Bai 3 chuong trinh may tinh va du lieu
Lớp 8: Bai 3 chuong trinh may tinh va du lieuLớp 8: Bai 3 chuong trinh may tinh va du lieu
Lớp 8: Bai 3 chuong trinh may tinh va du lieu
 
Local sakainame 501127 ktl_trình hlmt1 a01 fall 2013 _ modules
Local sakainame   501127 ktl_trình hlmt1 a01 fall 2013 _ modulesLocal sakainame   501127 ktl_trình hlmt1 a01 fall 2013 _ modules
Local sakainame 501127 ktl_trình hlmt1 a01 fall 2013 _ modules
 
Ltc 01
Ltc 01Ltc 01
Ltc 01
 
De kiem tra 1 tiet tin 7
De kiem tra 1 tiet tin 7De kiem tra 1 tiet tin 7
De kiem tra 1 tiet tin 7
 
Nmlt C01 Cac Khai Niem Co Ban Ve Lap Trinh
Nmlt C01 Cac Khai Niem Co Ban Ve Lap TrinhNmlt C01 Cac Khai Niem Co Ban Ve Lap Trinh
Nmlt C01 Cac Khai Niem Co Ban Ve Lap Trinh
 
300 BÀI CODE THIẾU NIÊN.pdf
300 BÀI CODE THIẾU NIÊN.pdf300 BÀI CODE THIẾU NIÊN.pdf
300 BÀI CODE THIẾU NIÊN.pdf
 
Bài giảng Lập trình cơ bản - truongkinhtethucpham.com
Bài giảng Lập trình cơ bản - truongkinhtethucpham.comBài giảng Lập trình cơ bản - truongkinhtethucpham.com
Bài giảng Lập trình cơ bản - truongkinhtethucpham.com
 

Último

GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIGIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIĐiện Lạnh Bách Khoa Hà Nội
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...Nguyen Thanh Tu Collection
 
PHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢI
PHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢIPHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢI
PHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢImyvh40253
 
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIĐiện Lạnh Bách Khoa Hà Nội
 
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdfBỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdfNguyen Thanh Tu Collection
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docxTHAO316680
 
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...Nguyen Thanh Tu Collection
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quan
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quanGNHH và KBHQ - giao nhận hàng hoá và khai báo hải quan
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quanmyvh40253
 
powerpoint mẫu họp phụ huynh cuối kì 2 học sinh lớp 7 bgs
powerpoint mẫu họp phụ huynh cuối kì 2 học sinh lớp 7 bgspowerpoint mẫu họp phụ huynh cuối kì 2 học sinh lớp 7 bgs
powerpoint mẫu họp phụ huynh cuối kì 2 học sinh lớp 7 bgsNmmeomeo
 
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...Nguyen Thanh Tu Collection
 
Nhiễm khuẩn tiêu hóa-Tiêu chảy do vi khuẩn.pptx
Nhiễm khuẩn tiêu hóa-Tiêu chảy do vi khuẩn.pptxNhiễm khuẩn tiêu hóa-Tiêu chảy do vi khuẩn.pptx
Nhiễm khuẩn tiêu hóa-Tiêu chảy do vi khuẩn.pptxhoangvubaongoc112011
 
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...hoangtuansinh1
 
Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................TrnHoa46
 
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng ĐồngGiới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng ĐồngYhoccongdong.com
 
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...Nguyen Thanh Tu Collection
 
Các điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoáCác điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoámyvh40253
 
Kiểm tra cuối học kì 1 sinh học 12 đề tham khảo
Kiểm tra cuối học kì 1 sinh học 12 đề tham khảoKiểm tra cuối học kì 1 sinh học 12 đề tham khảo
Kiểm tra cuối học kì 1 sinh học 12 đề tham khảohoanhv296
 
sách sinh học đại cương - Textbook.pdf
sách sinh học đại cương   -   Textbook.pdfsách sinh học đại cương   -   Textbook.pdf
sách sinh học đại cương - Textbook.pdfTrnHoa46
 

Último (20)

GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIGIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
 
PHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢI
PHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢIPHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢI
PHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢI
 
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
 
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdfBỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
 
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quan
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quanGNHH và KBHQ - giao nhận hàng hoá và khai báo hải quan
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quan
 
powerpoint mẫu họp phụ huynh cuối kì 2 học sinh lớp 7 bgs
powerpoint mẫu họp phụ huynh cuối kì 2 học sinh lớp 7 bgspowerpoint mẫu họp phụ huynh cuối kì 2 học sinh lớp 7 bgs
powerpoint mẫu họp phụ huynh cuối kì 2 học sinh lớp 7 bgs
 
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...
 
Nhiễm khuẩn tiêu hóa-Tiêu chảy do vi khuẩn.pptx
Nhiễm khuẩn tiêu hóa-Tiêu chảy do vi khuẩn.pptxNhiễm khuẩn tiêu hóa-Tiêu chảy do vi khuẩn.pptx
Nhiễm khuẩn tiêu hóa-Tiêu chảy do vi khuẩn.pptx
 
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
 
Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................
 
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng ĐồngGiới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
 
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
 
Các điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoáCác điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoá
 
Kiểm tra cuối học kì 1 sinh học 12 đề tham khảo
Kiểm tra cuối học kì 1 sinh học 12 đề tham khảoKiểm tra cuối học kì 1 sinh học 12 đề tham khảo
Kiểm tra cuối học kì 1 sinh học 12 đề tham khảo
 
sách sinh học đại cương - Textbook.pdf
sách sinh học đại cương   -   Textbook.pdfsách sinh học đại cương   -   Textbook.pdf
sách sinh học đại cương - Textbook.pdf
 

Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP.Hồ Chí Minh

  • 1. 1 Dich vu Content marketing Trường ĐH CNTP TP.HCM Khoa: CÔNG NGHỆ THÔNG TIN Bộ môn: CÔNG NGHỆ PHẦN MỀM Môn: TH NGÔN NGỮ LẬP TRÌNH BÀI 1 TỔNG QUAN – CÁC KIỂU DỮ LIỆU & PHÉP TOÁN A. MỤC TIÊU: Sử dụng được phần mềm Visual C++.Net Vận dụng được tri thức về kiểu dữ liệu và biến trong lập trình Xây dựng được chương trình Sử dụng được hàm printf và scanf để nhập và xuất dữ liệu Sử dụng được các chuỗi định dạng khác nhau khi xuất dữ liệu Biết cách chuyển đổi các kiểu dữ liệu với nhau. Thực thi chương trình B. DỤNG CỤ - THIẾT BỊ THÍ NGHIỆM CHO MỘT SV: STT Chủng loại – Quy cách vật tư Số lượng Đơn vị Ghi chú 1 Máy tính (có thể là máy bàn hoặc laptop). 1 Chiếc C. VẬT LIỆU Visual C++.Net. Phần mềm hỗ trợ dạy học: NetOp School hoặc NetSupport School. D. NỘI DUNG THỰC HÀNH I. Tóm tắt lý thuyết 1. Sử dụng Visual C++.Net để viết chương trình – Khởi động Visual Studio.Net
  • 2. 2 – Vào File -> New -> Project – Chọn Visual C++ -> Win32 Console Application -> Đặt tên (Name) và chọn thư mục lưu Project (Location) -> Chọn OK – Nhấn chuột phải vào Source files trên thanh Solution Explorer (bên phải) -> Add > New Item
  • 3. 3 – Chọn C++ File -> Đặt tên File (Name) -> Add. – Sau đó viết code vào màn hình soạn thảo – Thực thi chương trình: Nhấn phím F5 hoặc vào Debug -> Start Debugging. 2. Các kiểu dữ liệu cơ sở – Kiểu ký tự: • Tên kiểu: char • Miền giá trị: 256 ký tự trong bảng mã ASCII. • Chính là kiểu số nguyên do nó lưu tất cả dữ liệu ở dạng số và không lưu trực tiếp ký tự mà chỉ lưu mã ASCII của ký tự đó. Mã Ascii từ „A‟ đến „Z‟ là 65 đến 90 Mã Ascii từ „a‟ đến „z‟ là 97 đến 122. – Kiểu luận lý: • Trong C chuẩn không có kiểu luận lý. Giá trị sai (false) là 0, giá trị đúng (true) là khác 0 (thường là 1). • C++: kiểu luận lý là bool – Kiểu số nguyên – Kiểu số thực:
  • 4. 4 3. Biến – hằng – câu lệnh và biểu thức – Biến • Cú pháp:  <kiểu> <tên biến>;  <kiểu> <tên biến 1>, <tên biến 2>; • Ví dụ:  int i;  int x;  int j, k; – Hằng Cú pháp:  #define <tênhằng> <giá trị>  Hoặc sử dụng từ khóa const. • Ví dụ:  #define MAX 100 // Không có dấu;  #define PI 3.14 // Không có dấu ;  const int MAX = 100;  const float PI = 3.14; – Câu lệnh: được kết thúc bằng dấu chấm phẩy (;) • Câu lệnh đơn: chỉ gồm 1 câu lệnh • Câu lệnh phức: gồm nhiều câu lệnh đơn được bao bởi { và } • Ví dụ:  a = 2912; // Câu lệnh đơn  { // Câu lệnh phức/khối lệnh a = 2912; b = 1706; } – Biểu thức: Được tạo thành từ các toán tử (Operator) và các toán hạng (Operand). Ví dụ: int a = 2 + 3 * 4; 4. Chuỗi định dạng 5. Ép kiểu dữ liệu – Ngầm định: Kiểu dữ liệu đích phải có dãy giá trị lớn hơn kiểu dữ liệu nguồn
  • 5. 5 Ví dụ: chuyển từ int sang float. • int a = 10; • float f = a; – Tường minh: Thay đổi kiểu dữ liệu có dãy giá trị lớn sang dãy giá trị nhỏ hơn Ví dụ: chuyển từ float sang int • float f = 10.51; • int a = (int) f; 6. Câu lệnh nhập xuất – Thư viện: #include <stdio.h> (standard input/output) – Câu lệnh nhập scanf (“<chuỗi định dạng>”, <các đối số>) Ví dụ: scanf(“%d”, &a); // Nhập giá trị cho biến a – Câu lệnh xuất printf (“<chuỗi cần xuất>/[<định dạng>]”, [<các đối số>]) Ví dụ: printf(“Hello World”); 7. Cách sử dụng kiểu char – Miền giá trị: 256 ký tự trong bảng mã ASCII. – Chính là kiểu số nguyên do: • Lưu tất cả dữ liệu ở dạng số. • Không lưu trực tiếp ký tự mà chỉ lưu mã ASCII của ký tự đó. – Sử dụng char như là số nguyên hoặc ký tự đều được Ví dụ: char c = „A‟ printf(“%d”, c) -> in ra 65 printf(“%c”, c) -> in ra „A‟ 8. Sử dụng toán tử 1 ngôi – Giống nhau giữa ++<biến> và <biến>++ • Đều tăng <biến> thêm 1 đơn vị • Cách sử dụng như nhau nếu chúng nằm độc lập – Khác nhau giữa ++<biến> và <biến>++ • Khi chúng nằm trong một biểu thức. • ++<biến> sẽ tăng <biến> trước khi thực hiện biểu thức <biến>++ sẽ thực hiện biểu thức trước khi tăng <biến> Ví dụ:
  • 6. 6 int i = 1; int b = 10 + ++i (1) sẽ khác với int b = 10 + i++(2). Biểu thức thức (1) b sẽ có kết quả là 12. Biểu thức (2) b sẽ có kết quả là 11. – Tương tự cho toán tử -- 9. Toán tử điều kiện – Cú pháp: <biểu thức 1> ? <biểu thức 2> : <biểu thức 3> <biểu thức 1> đúng thì giá trị là <biểu thức 2>. <biểu thức 1> sai thì giá trị là <biểu thức 3>. Ví dụ: s1 = (1 > 2) ? 2912 : 1706; int s2 = 0; 1 < 2 ? s2 = 2912 : s2 = 1706; 10.Các bước thực hiện bài thực hành – Bước 1: Phân tích bài toán. – Bước 2: Cài đặt chương trình. – Bước 3: Kiểm tra và chạy thử. II. Bài tập mẫu hướng dẫn thực hành. 1. Viết chương trình xuất ra câu thông báo: “Chao ban den voi ngon ngu C”. Tạo project mới như phần I.1, viết chương trình sau trong màn hình soạn thảo: #include<stdio.h>//thu vien chua cac ham nhap xuat chuan #include<conio.h>//thu vien chua ham getch() void main() { printf("Chao ban den voi ngon ngu C"); getch(); } 2. Viết chương trình xuất ra đoạn thông báo: “Chao ban! Day la chuong trinh C dau tien. Vui long nhan phim Enter de ket thuc.” – Đóng project cũ (nếu có) (File -> Close Solution) và tạo project mới như phần I.1 hoặc: – Thêm một file .cpp mới vào trong project bằng cách: Nhấn chuột phải vào Source files trên thanh Solution Explorer -> Add -> New Item -> chọn C++ File. Lưu ý: trong cùng một project chỉ có một file .cpp chứa hàm main, vì vậy: nếu trong project đã có một file .cpp nào đó chứa hàm main ta hãy bỏ (ghi chú) hàm main đó đi rồi tạo file khác chứa hàm main cần làm. – Cách làm tương tự cho các bài tập sau. – Code chương trình:
  • 7. 7 3. Viết chương trình nhập vào 1 số nguyên, xuất ra màn hình số nguyên vừa nhập. 4. Viết chương trình nhập vào 2 số nguyên, tính và xuất kết quả tổng, tích, hiệu
  • 8. 8 – Nhập vào ngày đến ở khách sạn, nhập ngày rời khỏi khách sạn. – Tính tổng số ngày khách đã ở trong tháng. – Tính tiền khách phải trả, biết rằng đơn giá tuần là 650 và đơn giá ngày là 100. #include<stdio.h> #include<conio.h> void main() { int nv, nr; printf("Nhap vao ngay vao, ngay ra: "); scanf("%d%d", &nv, &nr); int tong = nr - nv; printf("Tong so ngay khach o trong thang: %dn", tong); và thương 2 số nguyên vừa nhập. 5. Viết chương trình để có kết quả như sau: – Số thực được nhập vào từ bàn phím 6. Tính tiền khách ở trong tháng.
  • 9. 9 int tien = tong/7 * 650 + tong % 7 * 100; printf("Tien khach phai tra la: %d", tien); getch(); } 9. Nhập chương trình sau, thực thi và xem kết quả để phân biệt sự giống và 7. Tình diện tích hình tròn. Gợi ý: sử dụng hằng số pi để thực hiện 8. Nhập vào 2 số nguyên a,b. Tìm số lớn nhất trong 2 số. khác nhau của toán tử 1 ngôi.
  • 10. 10 10.Nhập mã Ascii. Nếu mã Ascii là của 26 chữ cái tiếng Anh (A -> Z) thì in ra kết quả là “là chữ cái”, ngược lại in ra ký tự tương ứng với mã đó. III. Bài tập ở lớp 1. Viết chương trình xuất ra (đúng định dạng) một đoạn trong bài thơ Lượm: Chú bé loắc choắc Cái sắc xinh xinh Cái chân thoăn thoắt Cái đầu nghênh nghênh. Hướng dẫn: sử dụng các kí tự định dạng trang 4 2. Viết chương trình nhập vào số thực. In ra phần nguyên của số thực đó. Hướng dẫn: - 1 số thực được nhập từ bàn phím - sử dụng phép toán ép kiểu trang 4 để tính phần nguyên 3. Viết chương trình để có kết quả như sau: Hướng dẫn: - 2 số nguyên được nhập từ bàn phím - Tính thương của 2 số nguyên (bài tập mẫu hướng dẫn 6 trang 6) - Tính làm tròn thương bằng cách +0.5 cho thương và ép kiểu về số nguyên - Xuất phần thương có 1 chữ số thập phân (bài tập mẫu hướng dẫn 5 trang 6) 4. Viết chương trình để có kết quả như sau: Hướng dẫn: - 2 số nguyên (đơn giá tuần, đơn giá ngày,) là hằng số - 1 số nguyên (tổng số ngày) được nhập từ phím - Tính số tuần dựa vào phần nguyên khi chia tổng số ngày cho 7 - Tính số ngày dựa vào hiệu của tổng ngày và (số tuần *7)
  • 11. 11 - Tính tiền phải trả dựa vào tổng của tiền thuê theo tuần và tiền thuê theo ngày. 6. Viết chương trình để tính tiền sân bóng đá như sau: – Tính tiền giờ dựa vào giờ vào và giờ ra. Mỗi giờ là 200,000 – Tính tiền nước uống dựa vào số bình nước đã uống. Mỗi bình nước 20,000 – Tính tổng tiền: tiền giờ + tiền nước uống. 7. Nhập tuổi của 1 người. In ra năm sinh của người đó. 8. Nhập 4 số nguyên. Tính tổng 2 số đầu, tính hiệu hai số cuối. Tính thương cho tổng 2 số đầu và tổng 2 số cuối. In thương với 0 số thập phân và 1 số thập phân. 9. Nhập năm sinh. Tính tuổi tương ứng. Nếu tuổi >= 18 thì in ra: “đủ tuổi đi làm”, ngược lại in ra: “còn tuổi đi học”. 10.Viết chương trình tính giá trị của biểu thức: (với x là số nguyên, f(x) là số thực) f (x) 11.Viết chương trình tính biểu thức sau (x là số nguyên, f(x) là số thực) f (x) 3x5 2x2 x 1 5x 3 IV. Bài tập về nhà 1. Nhập một số thực. – In ra phần nguyên của số thực – In số thực với 2 số thập phân – In 2 số thập phân của số thực – Tính tổng phần nguyên và 2 số thập phân của số thực 2. Nhập tên sản phẩm, số lượng và đơn giá. Tính tiền và thuế giá trị gia tăng phải trả, biết: Tiền = số lượng * đơn giá Thuế giá trị gia tăng = 10% tiền 3. Nhập điểm thi và hệ số 3 môn Toán, Lý, Hóa của một sinh viên. Tính điểm trung bình của sinh viên đó. 4. Nhập 2 cạnh của hình chữ nhật (là số nguyên). Tính diện tích, chu vi và đường chéo (số thực) của hình chữ nhật. 5. Nhập vào 1 ký tự. Kiểm tra xem ký tự đó là: chữ hoa, chữ thường hay ký tự khác. 6. Nhập 1 ký tự. Kiểm tra ký tự đó có thuộc 26 chữ cái tiếng Anh hay không? 7. Viết chương trình giải phương trình bậc nhất: ax + b = 0 (a khác 0), với a, b là số nguyên, x là số thực. 8. Nhập hai số nguyên. In ra giá trị max và min. 9. Nhập 3 số nguyên. Tìm max và min của 3 số đó 10. Viết chương trình để có kết quả như sau:
  • 12. 12 Trường ĐH CNTP TP.HCM Khoa: CÔNG NGHỆ THÔNG TIN Bộ môn: CÔNG NGHỆ PHẦN MỀM Môn: TH NGÔN NGỮ LẬP TRÌNH BÀI 2 CẤU TRÚC ĐIỀU KHIỂN A. MỤC TIÊU: Xác định được dạng, loại bài toán cần sử dụng cấu trúc điều khiển rẽ nhánh. Phân tích được các trường hợp rẽ nhánh của bài toán. Cài đặt được bài toán rẽ nhánh sử dụng câu lệnh if, if..else…, switch…case B. DỤNG CỤ - THIẾT BỊ THÍ NGHIỆM CHO MỘT SV: STT Chủng loại – Quy cách vật tư Số lượng Đơn vị Ghi chú 1 Máy tính (có thể là máy bàn hoặc laptop). 1 Chiếc C. VẬT LIỆU Visual C++.Net. Phần mềm hỗ trợ dạy học: NetOp School hoặc NetSupport School. D. NỘI DUNG THỰC HÀNH I. Tóm tắt lý thuyết Rẽ nhánh: là tại một thời điểm sẽ có nhiều lựa chọn có thể xảy ra nhưng chỉ xảy ra một trường hợp duy nhất. 1. Câu lệnh if  Điều kiện sử dụng: Sử dụng khi rẽ nhánh chỉ có một trường hợp duy nhất. Nếu thỏa điều kiện thì thực hiện, còn không thỏa thì không thực hiện (không làm gì hết). Ví dụ: Sinh viên có điểm trung bình lớn hơn 8.0 được nhận học bổng. Sinh viên có điểm trung bình lơn hơn 8.0: được nhận học bổng. Sinh viên lớp khác (có điểm trung bình không lơn hơn 8.0): không có yêu cầu gì cả.  Cú pháp:
  • 13. 13 Ví dụ: 2. Câu lệnh if…else…  Điều kiện sử dụng: Sử dụng khi rẽ nhánh chỉ có 2 trường hợp trái ngược nhau xảy ra. Nếu không thực hiện trường hợp này thì phải thực hiện trường hợp kia và ngược lại. Ví dụ: Nếu sinh viên có điểm trung bình lớn hơn hoặc bằng 4.0 thì đậu, ngược lại thì rớt. Ta thấy trong ví dụ này, bất kỳ sinh viên nào cũng chỉ có thể rơi vào trường hợp “đậu” hoặc “rớt” mà thôi, không có trường hợp khác.  Sinh viên có điểm trung bình lơn hơn hoặc bằng 5.0: “đậu”.  Sinh viên lớp khác: “rớt”.  Cú pháp: 3. Câu if lồng nhau:  Điều kiện sử dụng: Ví dụ:
  • 14. 14 Sử dụng khi rẽ nhánh có từ 3 trường hợp trở lên. Ví dụ: Căn cứ vào điểm trung bình ta xếp loại sinh viên như sau: o Nếu đtb>=8.0 thì xếp loại giỏi o Nếu 8.0>dtb>=6.5 thì xếp loại khá o Nếu 6.5>dtb>=5.0 thì xếp loại trung bình o Còn lại thì xếp loại yếu Như vậy, ta viết đoạn chương trình thực hiện yêu cầu trên bằng cách sử dụng cấu trúc if lồng nhau như sau; if (dtb>=8.0) printf(“Xep loai gioi”); else if (dtb>6.5) printf(“Xep loai kha”); else if (dtb>5.0) printf(“Xep loai trung binh”); else printf(“Xep loai yeu”); 4. Một vài chú ý: Biểu thức điều kiện trong cấu trúc if, if…else… phải là một mệnh đề có giá trị đúng hoặc sai. Biểu thức điều kiện có thể chỉ gồm một biều thức đơn giản hoặc có thể là sự kết hợp của nhiều biều thức điều kiện thông qua các phép toán và (&&), hoặc (||), phủ định (!).  Cú pháp
  • 15. 15 5. Câu lệnh switch…case…  Điều kiện sử dụng: Sử dụng khi bài toán rẽ nhánh có nhiều trường hợp (thường là từ 3 trở lên) và mỗi trường hợp là một giá trị cụ thể (có kiểu giá trị số hoặc ký tự) VD: Nếu xếp hạng 1 bạn được thưởng 10 cuốn tập, xếp hạng 2 bạn được thưởng 8 cuốn tập, xếp hạng 3 bạn được thưởng 5 cuốn tập, xếp hạng 4 bạn được thưởng 3 cuốn tập, còn lại bạn không được thưởng.  Hạng 1: 10 cuốn tập  Hạng 2: 8 cuốn tập  Hạng 3: 5 cuốn tập  Hạng 4: 3 cuốn tập  Còn lại: 0 cuốn tập
  • 17. 17 Mỗi trường hợp (case) trong câu lệnh switch phải kết thúc bằng lệnh break; Kiểu trả về của <biểu thức> trong câu lện switch phải có cùng kiểu với các <gia tri1>, <gia tri 2>,… Cần xác định đúng biểu thức rẽ nhánh trong câu lệnh switch…case. Biểu thức rẽ nhánh là biểu thức có thể nhận các giá trị khác nhau nhưng trong mỗi trường hợp chỉ nhận 1 giá trị duy nhất. Biểu thức có thể là một biến. II. Bài tập mẫu hướng dẫn thực hành 1. Nhập vào điểm trung bình môn Ngôn ngữ lập trình của sinh viên. In ra màn hình cho biết sinh viên đó đậu hay rớt biết rằng nếu điểm trung bình lớn hơn hoặc bằng 4.0 thì đậu ngược lại là rớt. Bước 1: Phân tích bài toán - Nhập điểm trung bình - Xuất ra kết quả đậu hay rớt dựa vào điểm trung bình đã nhập. - 01 biến dtb (điểm trung bình) có kiểu là số thực - Bài toán có 2 trường hợp là đậu, rớt => sử dụng cấu trúc if…else… - Biều thức điều kiện: dtb>=4.0 Bước 2: Cài đặt chương trình - Tạo project mới (giống các bài thực hành trước): File -> new ->Project o Chọn ngôn ngữ là C++ Bước 1: Phân tích bài toán - Khai báo thư viện và viết hàm main - Khai báo và nhập dữ liệu - Cài đặt câu lệnh rẽ nhánh Bước 3: Kiểm tra, sửa lỗi và chạy thử 2. Nhập vào một số nguyên, cho biết số vừa nhập có phải là số chẵn hay không?
  • 18. 18 - Nhập số nguyên bất kỳ - Xuất ra kết quả số chẵn hoặc không làm gì cả - 01 biến n có kiểu là số nguyên (int) - Bài toán có 1 trường hợp là số chẵn => sử dụng cấu trúc if… - Biểu thức điều kiện: n%2==0 Bước 2: Cài đặt chương trình 3. Nhập vào một năm, cho biết năm vừa nhập có phải là năm nhuận hay không. Biết rằng năm nhuận là năm chia hết cho 4 mà không chia hết cho 100 hoặc năm chia hết cho 400? Ví dụ: 1996 là năm nhuận vì 1996 chia hết cho 4 và không chia hết cho 100 Bước 1: Phân tích bài toán - Nhập vào một năm (số nguyên) - Xuất ra kết quả là năm nhuận hoặc năm không nhuận - 01 biến nam (năm) có kiểu là số nguyên (int) - Bài toán có 2 trường hợp là năm nhuận, năm không nhuận => sử dụng cấu trúc if…else… - Biểu thức điều kiện: (nam%4==0 && nam%100!=0)||(nam%400==0) Bước 2: Cài đặt chương trình - Khai báo thư viện và viết hàm main - Khai báo và nhập dữ liệu - Cài đặt câu lệnh rẽ nhánh Bước 3: Kiểm tra, sửa lỗi và chạy thử
  • 19. 19 4. Một môn học lý thuyết thường có 03 cột điểm hệ số 10: điểm tiểu luận, điểm giữa kỳ, điểm cuối kỳ có tỉ lệ lần lượt là 20%, 30%, 50%. Hãy cho biết điểm chữ của môn học khi người dùng nhập vào điểm tiểu luận, điểm giữa kỳ và điểm cuối kỳ. Giả sử rằng cách qui đổi điểm hệ số 10 sang điểm chữ như sau: Điểm hệ 10 điểm chữ Điểm hệ 10 >=8.5 A 8.5> điểm hệ 10 >=7.0 B 7.0> điểm hệ 10>=5.5 C 5.5>điểm hệ 10 >=4.0 D 4.0> điểm hệ 10 F Bước 1: Phân tích bài toán - Nhập vào điểm tiểu luận, giữa kỳ, cuối kỳ - Xuất ra điểm chữ của môn học đó theo qui tắc đã cho - 04 biến diemTL, diemGK, diemCK, diemTB là các số thực (float) và diemTB=0.2*diemTL+0.3*diemGK+0.5*diemCK - Bài toán có 5 trường hợp điểm chữ => sử dụng cấu trúc if lồng nhau - Biểu thức điều kiện: o Điều kiện 1: diemTB>=8.5 o Điều kiện 2: diemTB>=7.0 o - Khai báo thư viện và viết hàm main - Khai báo và nhập dữ liệu - Cài đặt câu lệnh rẽ nhánh Bước 3: Kiểm tra, sửa lỗi và chạy thử
  • 20. 20 Điều kiện 3: diemTB>=5.5 o Điều kiện 4: diemTB>=4.0 Bước 2: Cài đặt chương trình - Khai báo thư viện và viết hàm main - Khai báo, nhập dữ liệu và tính toán 5. Nhập vào 2 số nguyên a và b, nhập vào một phép toán +, -, *, /, %. Hãy in ra màn hình kết quả của phép toán vừa nhập với 2 số hạng là a, b đã nhập Bước 1: Phân tích bài toán - Nhập 2 số nguyên bất kỳ, nhập 1 phép toán - Xuất ra kết quả của phép toán vừa nhập - 02 biến số nguyên (int), 01 biến lưu phép toán (biến pheptoan, kiểu char), 01 biến luu kết quả (biên kết quả kiểu int) - Bài toán có 5 trường hợp của phép toán: +,-,*,/% => dùng cấu trúc switch…case - Biều thức rẽ nhánh: biến pheptoan Bước 2: Cài đặt chương trình - Cài đặt câu lệnh rẽ nhánh Bước 3: Kiểm tra, sửa lỗi và chạy thử
  • 21. 21 - Khai báo thư viện và viết hàm main - Khai báo và nhập dữ liệu giá trị còn luu trong vùng đệm 6. Nhập một tháng (nhập bằng số), in ra màn hình tháng đó bằng tiếng Anh tương tứng (January, February, March, April, May, June, July, August, September, October, November, December). Nếu nhập tháng không đúng in ra màn hình “Month is invalid” Bước 1: Phân tích bài toán - Nhập vào một số tháng bằng số nguyên - Xuất tháng đó ra màn hình bằng tiếng Anh tương ứng - 01 biến thang có kiểu là số nguyên (int) - Bài toán có 13 trường hợp hợp lệ và 01 trường hợp không hợp lệ => sử dụng switch…case… - Biều thức rẽ nhánh: sử dụng biến thang Bước 2: Cài đặt chương trình - Khai báo thư viện và viết hàm main Lưu ý: trước khi nhập phép toán phải có câu lệnh flushall(); để xóa bỏ các - Cài đặt câu lệnh rẽ nhánh Bước 3: Kiểm tra, sửa lỗi và chạy thử
  • 22. 22 III. Bài tập ở lớp 1. Viết chương trình nhập vào 2 số a, b. Tìm số lớn nhất giữa 2 số. 2. Viết chương trình nhập vào số nguyên, kiểm tra số đã nhập là số âm hay số dương 3. Viết chương trình nhập vào 2 số nguyên, so sánh 2 giá trị vừa nhập vào (“Bằng nhau, nhỏ hơn, lớn hơn”). 4. Nhập vào thứ tự của tháng, cho biết tháng đó có bao nhiêu ngày. 5. Viết một chương trình tính chu vi, diện tích theo dạng menu cho phép người dùng chọn lựa một trong các hình bên dưới (dùng cấu trúc switch…case) 1. Hình vuông 2. Hình chữ nhật 3. Hình tròn 6. Viết chương trình nhập vào 2 số a,b. Kiểm tra a có là bội số của b không. 7. Viết chương trình nhập vào đơn giá 1 mặt hàng, và số lượng bán của mặt hàng. Tính tiền khách phải trả, với thông tin như sau:  Thành tiền: đơn giá * số lượng  Giảm giá: Nếu thành tiền > 100, thì giảm 3% thành tiền, ngược lại không giảm  Tổng tiền phải trả: thành tiền – giảm giá. - Khai báo và nhập dữ liệu - Cài đặt câu lệnh rẽ nhánh Bước 3: Kiểm tra, sửa lỗi và chạy thử
  • 23. 23 8. Viết chương trình hỗ trợ cách giải phương trình bậc 1 (ax + b = 0) 9. Nhập vào 1 số bất kỳ (0->9), cho biết cách đọc số vừa nhập 10.Viết một chương trình dạng menu cho phép người dùng chọn một trong các chức năng bên dưới: 1. In ra màn hình “Xin chào các bạn” 2. Chức năng đổi nhiệt độ C sang độ F 3. Chức năng tính chu vi và diện tích hình tròn IV. Bài tập về nhà: 1. Giải phương trình bậc 2 có dạng ax2 + bx + c=0 2. Nhập vào 3 số nguyên a, b,c. In ra màn hình số nguyên lớn nhất và nhỏ nhất. 3. Nhập vào điểm thi tốt nghiệp THPT (toán, lý, hóa, văn, anh, sử) của một thí sinh. Cho biết thí sinh đó xếp loại của thí sinh đó. Biết rằng xếp loại thi tốt nghiệp được xác định như sau:  Điểm trung bình >=8 và không có môn nào dưới 6.5: loại giỏi  Điểm trung bình >=7.0 và không có môn nào dưới 5.0: loại khá  Điểm trung bình >=5.0 và không có môn nào dưới 3.5: loại TB  Còn các trường hợp còn lại xếp loại Yếu. 4. Viết chương trình tính tiền karaoke theo cách sau: 5. Viết chương trình tính tiền điện sử dụng trong tháng: Từ 1 – 100KW: 5$ Từ 101 – 150KW: 7$ Từ 151 – 200KW: 10$ Từ 201 – 300KW: 15$ Từ 300KW trở lên: 20$ Trường ĐH CNTP TP.HCM Khoa: CÔNG NGHỆ THÔNG TIN Bộ môn: CÔNG NGHỆ PHẦN MỀM Môn: TH NGÔN NGỮ LẬP TRÌNH BÀI 3 CẤU TRÚC ĐIỀU KHIỂN (tt)
  • 24. 24 A. MỤC TIÊU: Xác định được dạng, loại bài toán cần sử dụng cấu trúc điều khiển rẽ nhánh Xác định được vòng lặp của một bài toán Cài đặt được câu lệnh lặp for Kết hợp được câu lệnh for và câu lệnh rẽ nhánh if, if…else… B. DỤNG CỤ - THIẾT BỊ THÍ NGHIỆM CHO MỘT SV: STT Chủng loại – Quy cách vật tư Số lượng Đơn vị Ghi chú 1 Máy tính (có thể là máy bàn hoặc laptop). 1 Chiếc C. VẬT LIỆU Visual C++.Net. Phần mềm hỗ trợ dạy học: NetOp School hoặc NetSupport School. D. NỘI DUNG THỰC HÀNH I. Tóm tắt lý thuyết Lặp: là việc thực hiện công việc giống nhau hoặc tương tự nhau nhiều lần, công việc đó được thực hiện rồi lại thực hiện nữa VD: Cổ động viên Việt Nam hô vang 5 lần “Việt Nam vô địch” 1. Vòng lặp for  Điều kiện sử dụng: Sử dụng khi có công việc lặp xảy ra. Biết trước số lần lặp II. Bài tập mẫu hướng dẫn thực hành  Cú pháp: VD: Xuất 5 lần câu “Việt Nam vô địch” ra màn hình.
  • 25. 25 1. In ra màn hình 10 lần câu “Xin chao cac ban” (mỗi câu nằm trên một dòng) Bước 1: Phân tích bài toán - Xuất ra 10 lần câu “Xin chao cac ban”. Mỗi câu nằm trên một dòng - Bài toán có phép lặp với số lần lặp là 10=> sử dụng vòng lặp for - Công việc cần lặp: In ra màn hình câu nói “Xin chao cac ban” Bước 2: Cài đặt chương trình - Khai báo thư viện và viết hàm main - Khai báo và nhập dữ liệu: không có Bước 1: Phân tích bài toán - Nhập vào số nguyên dương n - Tính được tổng bình phương của các số nguyên từ 1 tới n - 02 biến n, S số nguyên (int) - Sử dụng vòng lặp for lặp n lần (GV giải thích rõ) - Câu lệnh lặp: S=S+i2 Bước 2: Cài đặt chương trình - Cài đặt câu lệnh rẽ nhánh Bước 3: Kiểm tra, sửa lỗi và chạy thử 2. Nhập vào số nguyên dương n. Tính tổng S=1 2 +2 2 +3 2 +…+ n 2 - Khai báo thư viện và viết hàm main - Khai báo, nhập dữ liệu - Cài đặt câu lệnh rẽ nhánh
  • 26. 26 Lưu ý: Cách xác định các thành phẩn của vòng lặp for cho bài toán tính giá trị biểu thức: - Lấy công thức cuối cùng của biểu thức (n2 ). - Xác định là biểu thức dùng tính tổng hay tính nhân , thay n bằng i. ta sẽ được công thức lặp (i2 => công thức là S=S+i2 ) - Áp dụng công thức sử dụng i vào số hạng đầu tiên ta sẽ tính được giá trị ban đầu của i (i2 =1 => i=1) VD: Xác định công thức vòng lặp cho biểu thức: S=1/1 + 1/2 +1/3 +…+1/n; - Công thức cuối: 1/n - Công thức tính tổng: S=S+1/i (thay n bằng i). - Giá trị lặp ban đầu của i là 1 vì 1/i=1/1 =>i=1 3. Nhập vào số nguyên dương n. Cho biết n có bao nhiêu ước là số nguyên dương. Bước 1: Phân tích bài toán - Nhập vào số nguyên dương n - Đếm số ước nguyên dương của n đã nhập - 02 biến n, dem là các số nguyên (int) - Để đếm số ước của n ta cần lần lượt kiểm tra tất cả các số từ 1 tới n xem có phải là ước của n không. Nếu n chia hết cho số nào thì số đó là ước và ta sẽ đếm đố đó => Bài toán có công việc lặp với số lần lặp là từ 1 tới n=> dùng vòng lặp for - Câu lệnh lặp: Mỗi lần lặp cần phải kiểm tra xem n có chia hết cho i không. Nếu chia hết thì đếm => Câu lệnh lặp có sử dụng lệnh rẽ nhánh if (vì chỉ có một trường hợp rẽ nhánh): nếu n%i==0 thì dem++ Bước 2: Cài đặt chương trình Bước 3: Kiểm tra, sửa lỗi và chạy thử
  • 27. 27 III. Bài tập ở lớp 1. Viết chương trình tính tổng số chẵn < n, n là số nguyên dương nhập từ bàn phím. 2. Viết chương trình đếm số nguyên dương nhỏ hơn n chia hết cho 3, n là số nguyên dương nhập từ bàn phím. 3. Viết một chương trình dạng menu cho phép người dùng thực hiện một trong các biểu thức sau: 1. S = 1*2*3*4*5*….*n. 2. S = 2 + 4 + 6 + 8 +….+ 20. 3. S=1*2 + 2*3+ 3*4 + 4*5 +.….+ n(n+1). 1 1 1 1 .... 4. S = 1.2.3 2.3.4 3.4.5 n(n 1)(n 2) IV. Bài tập về nhà: 1. Nhập vào số nguyên dương h, in ra màn hình các tam giác sau 2. Nhập n>=0. Tính S(n)=1-2+3-4+ … +(-1)n-1n. - Khai báo thư viện và viết hàm main - Khai báo, nhập dữ liệu - Cài đặt câu lệnh rẽ nhánh Bước 3: Kiểm tra, sửa lỗi và chạy thử
  • 28. 28 1 1 1 S(n) 1 ... 3. Nhập n>=0. Tính 2 3 n S(n) 1 ... 4. Nhập n>=0. Tính 1 1 1 S(n) ... 5. Nhập n>=0. Tính 1 2 2 3 n (n 1) 1 2 n S(n) ... 6. Nhập n>=0. Tính 2 3 n 1 S(n) ... 7. Nhập n>=0. Tính 8. Nhập x,n. Tính T(x,n)=xn 9. Nhập x,n. Tính S(x,n)=x+x2 +x3 + … +xn 10.Nhập x,n. Tính S(x,n)=-x+x2 -x3 + … +(-1)n xn Trường: ĐH CNTP TP.HCM Khoa:CÔNG NGHỆ THÔNG TIN Bộ môn:CÔNG NGHỆ PHẦN MỀM Môn:TH NGÔN NGỮ LẬP TRÌNH BÀI 4 CẤU TRÚC ĐIỀU KHIỂN(tt) A. MỤC TIÊU: Xác định các bài toán cần sử dụng cấu trúc lặp Cài đặt được cấu trúc while, do...while Sử dụng được kết hợp các từ khóa break trong vòng lặp B. DỤNG CỤ - THIẾT BỊ THÍ NGHIỆM CHO MỘT SV: STT Chủng loại – Quy cách vật tư Số lượng Đơn vị Ghi chú 1 Máy tính (có thể là máy bàn hoặc laptop). 1 Chiếc C. VẬT LIỆU
  • 29. 29 Visual C++.Net. Phần mềm hỗ trợ dạy học: NetOp School hoặc NetSupport School. D. NỘI DUNG THỰC HÀNH I. Tóm tắt lý thuyết 1. Cấu trúc lặp while  Điều kiện sử dụng: Sử dụng khi bài toán có công việc lặp mà không biết số lần lặp là bao nhiêu. Chỉ xác định được điều kiện dừng lặp của bài toán. VD: Nhập vào dãy số nguyên cho tới khi người dùng nhập số 0 thì dừng. Trong ví dụ, công việc nhập số nguyên lặp đi lặp lại nhiều lần nhưng không biết là lặp bao nhiêu lần. Vòng lặp chỉ dừng khi người dùng nhập số 0. Trong câu lệnh while, nếu biểu thức điều kiện trả về giá trị đúng thì vòng lặp tiếp tục được thực hiện Để tránh vòng lặp vô tận, trong câu lệnh while phải có câu lệnh làm thay đổi giá trị của biểu thức điều kiện. 2. Cấu trúc lặp do…while  Điều kiện sử dụng: Tương tự như cấu trúc lặp while Thực hiện ít nhất một lần (while có thể không thực hiện lần nào nếu ngay mới lần đầu tiên biểu thức điều kiện trong while trả về giá trị sai)  Cú pháp:  Cú pháp: VD:
  • 30. 30 II. Bài tập mẫu hướng dẫn thực hành 1. Nhập vào 2 số nguyên dương a và b. Tìm ước chung lớn nhất của 2 số nguyên dương đã nhập. Bước 1: Phân tích bài toán - Nhập 2 số nguyên bất kỳ - Xuất ra ước chung lớn nhất của 2 số vừa nhập - 02 biến số nguyên (int), 01 biến ucln (int) - Sử dụng thuật tóan euclid => số lần lặp của bài toán không xác định => sử dụng vòng lặp while - Thuật toán euclid tìm UCLN của a và b Nếu a=b thì UCLN =a; Ta có thể dùng từ khóa break để thoát ra khỏi vòng lặp Dùng từ khóa continue để chuyển sang bước lặp tiếp theo.
  • 31. 31 Nếu a>b thi UCLN(a,b)=UCLN(a-b,b) Nếu a<b thi UCLN(a,b)=UCLN(a,b-a) Bước 2: Cài đặt chương trình 2. Xây dựng một menu chương trình cho phép người dùng lựa chọn gồm các yêu cầu sau: 1. In ra màn hình từ hello 2. In ra màn hình câu Vòng lặp for 3. In ra màn hình câu Vòng lặp while 4. Thoát chương trình. Sau khi lựa chọn chức năng, chương trình sẽ thực hiện theo đúng chức năng đã chọn rồi lại tiếp tục hiển thị menu. Chương trình chỉ dừng lại (kết thúc khi người dùng bấm phím số 4) Bước 1: Phân tích bài toán - Xuất ra màn hình menu theo yêu cầu - Sử dụng 01 biến luachon là số nguyên (int) - Menu này xuất hiện ít nhất 1 lần (cho lần chọn đầu tiên) và lặp đi lặp lại nhiều lần => dùng cấu trúc lặp do…while Bước 2: Cài đặt chương trình - Khai báo thư viện và viết hàm main - Khai báo và nhập dữ liệu - Cài đặt câu lệnh rẽ nhánh Bước 3: Kiểm tra, sửa lỗi và chạy thử
  • 32. 32 3. Viết chương trình nhập vào một số nguyên dương n. Tính tổng các chữ số có trong số nguyên dương n Bước 1: Phân tích bài toán - Nhập vào số nguyên dương n - Tính tổng các chữ số có trong số nguyên dương n - Cách làm, ví dụ với n=629 tong=0; n=629>0: tong=tong + hàng đơn vị của n, n=n/10 n=62>0 : tong=tong+ hàng đơn vị của n, n=n/10 n=6>0: tong=tong+ hàng đơn vị của n, n=n/10 n=0:dừng - Ta thấy việc tong=tong+hang đơn vị của n, n=n/10 được lặp lại nhiều lần nhưng không biết cụ thể bao nhiêu lần. Do đó ta phải dùng vòng lặp while. Bước 2: Cài đặt chương trình - Khai báo và nhập dữ liệu: - Cài đặt chương trình Bước 3: Kiểm tra, sửa lỗi và chạy thử
  • 33. 33 1. Viết chương trình kiểm tra xem n có phải là số nguyên tố hay không. Biết rằng số nguyên tố là số nguyên lớn hơn 1 là số chỉ có 2 ước là 1 và chính nó. 2. Viết chương cho biết trong số nguyên n có bao nhiêu chữ số chẵn 3. Viết chương trình tìm bội chung nhỏ nhất (BCNN) của 2 số nguyên dương a và b nhập vào từ bàn phím. Biết rằng BCNN (a,b)=a*b/UCLN(a,b) 4. Viết chương trình tính tổng các số tự nhiên nhỏ hơn n (sử dụng vòng lặp while) 5. Viết chương trình cho phép nhập một số nguyên từ bàn phím. Việc nhập kết thúc khi người dùng nhập vào giá trị 0. Hiển thị tổng các số vừa nhập. IV. Bài tập về nhà: 1. Kiểm tra số nguyên dương n có các chữ số toàn là chữ số chẵn hay không? 2. Kiểm tra số nguyên dương n có các chữ số toàn là chữ số lẻ hay không? 3. Kiểm tra số nguyên dương n có các chữ số tăng dần từ trái qua phải hay không? 4. Kiểm tra số nguyên dương n có các chữ số giảm dần từ trái qua phải hay không? 5. Nhập n>0. Tìm số nguyên dương m lớn nhất sao cho 1+2+3+…+m<n. 6. Nhập n>0. Tìm số nguyên dương m nhỏ nhất sao cho 1+2+3+…+m>n. 7. Xuất số đảo của số nguyên dương n. 8. An gửi số tiền là n USD vào ngân hàng. An muốn số tiền của mình sẽ bằng hoặc lớn hơn 1000 USD. Giúp An viết chương trình tính số tháng cần gửi vào ngân hàng để tổng tiền vốn lẫn tiền lãi sẽ lớn hơn 1000USD. Biết lãi suất 0.7%/ tháng và số tiền vốn n được nhập từ bàn phím. Trường ĐH CNTP TP.HCM Khoa: CÔNG NGHỆ THÔNG TIN Bộ môn: CÔNG NGHỆ PHẦN MỀM Môn: TH NGÔN NGỮ LẬP TRÌNH BÀI 5 HÀM (CHƯƠNG TRÌNH CON) A. MỤC TIÊU: - Cài đặt câu lệnh rẽ nhánh Bước 3: Kiểm tra, sửa lỗi và chạy thử III. Bài tập ở lớp
  • 34. 34 Trình bày được các thành phần của một hàm trong lập trình C++. Cài đặt được hàm trong C++. Gọi được hàm trong C++. Xây dựng được hàm đệ qui trong C++. B. DỤNG CỤ - THIẾT BỊ THÍ NGHIỆM CHO MỘT SV: STT Chủng loại – Quy cách vật tư Số lượng Đơn vị Ghi chú 1 Máy tính (có thể là máy bàn hoặc laptop). 1 Chiếc C. VẬT LIỆU Visual C++.Net. Phần mềm hỗ trợ dạy học: NetOp School hoặc NetSupport School. D. NỘI DUNG THỰC HÀNH I. Tóm tắt lý thuyết 1. Các thành phần của hàm: Hàm là một đoạn chương trình dùng để giải quyết một vấn đề cụ thể nào đó. Một hàm gồm các thành phần sau: Tên hàm: do người lập trình tự đặt theo qui tắc đặt tên của C++ Input: đầu vào của hàm Output: đầu ra của hàm Processing: quá trình xử lý của hàm (thuật toán) Ví dụ: Viết hàm tính diện tích hình tròn khi biết bán kính Tên hàm: TinhDienTichHinhTron Input: bán kính Output: diện tích hình tròn Processing: S=bán kính * 2 * PI (Trong đó, PI là hằng số có giá trị là 3.1416)
  • 35. 35 <kiểu trả về>: kiểu dữ liệu của onput, nếu hàm không có output thì kiểu trả về là void <ds tham số>: là tất cả các input của hàm (bao gồm cả kiểu dữ liệu của input và tên của input, các input cách nhau bởi dấu ,) Thân hàm: thuật toán (các câu lệnh bắt đầu từ input tìm ra output) Ta có thể gọi hàm ở bất kỳ vị trí nào, trong chương trình chính hoặc trong thân của một hàm khác Hàm phải được khai báo ở vị trí sau phần khai báo thư viện (prototype) Cách gọi hàm đối với hàm có kiểu trả về void <Tên hàm> (<ds tham số>); Vi dụ: Muốn in ra màn hình 10 lần từ Hello ta gọi hàm như sau: InHello (10); Muốn in ra màn hình 25 lần từ Hello ta gọi hàm như sau: InHello (25); Cách gọi hàm đối với hàm có kiểu trả về khác void o Khai báo biến có cùng kiểu trả về với hàm o Gán giá trị của hàm vào cho biến vừa khai báo 2. Cú pháp khai báo hàm Vi dụ: Viết hàm tính diện tích hình tròn khi biết bán kính Vi dụ: In ra màn hình n lần từ Hello, mỗi từ trên 1 dòng 3. Cách gọi hàm
  • 36. 36 o Xử lý biến theo ý muốn <tên biến> =<Tên hàm>(ds tham số); Ví dụ: ta có bán kính hình tròn r=6. Cần tính diện tích hình tròn rồi in diện tích đó ra màn hình ta có thể gọi như sau: 4. Hàm đệ qui: Hàm đệ qui là hàm gọi lại chính nó trong thân hàm. Xây dựng hàm đệ qui cần xác định 2 điều kiện sau: Điều kiện dừng: là trường hợp mà hàm trả về kết quả trực tiếp Điều kiện đệ qui: là trường hợp mà hàm gọi lại chính nó ở mức độ nhỏ Điều kiện dừng: n=1 => S(1)=1 II. Bài tập mẫu hướng dẫn thực hành Các bước thực hiện Bước 1: Xác định tên hàm, input, output, thuật toán hơn Vi dụ: Viết hàm tính tổng S=1 + 2 + 3 +…+ n Điều kiện đệ qui: n>1: S(n)=n+S(n-1)
  • 37. 37 Bước 2: Cài đặt chương trình Bước 3: Gọi hàm trong chương trình chính. 1. Viết hàm tìm ước chung của 2 số nguyên dương a và b. Viết hàm main tính ước chung lớn nhất cho 2 số nguyên nhập vào từ bàn phím, sử dụng hàm đã viết ở trên Bước 1: Xác định tên hàm, input, output, thuật toán - Tên hàm: UCLN (ước chung lớn nhất) - Input: 2 số nguyên a, b (kiểu int) - Output: ước chung lớn nhất của a,b là 1 số nguyên - Sử dụng thuật toán euclid => số lần lặp của bài toán không xác định => sử dụng vòng lặp while - Thuật toán euclid tìm UCLN của a và b Nếu a=b thì UCLN =a; Nếu a>b thi UCLN(a,b)=UCLN(a-b,b) Nếu a<b thi UCLN(a,b)=UCLN(a,b-a) Bước 2: Cài đặt chương trình 2. Viết hàm kiểm tra số nguyên dương n có phải là số nguyên tố hay không? Viết hàm main minh họa kiểm tra số nguyên nhập vào từ bàn phím có phải là số nguyên tố hay không? Bước 1: Xác định tên hàm, input, output, thuật toán - Tên hàm: ktraSNT (kiểm tra số nguyên tố) - Input: 01 số nguyên dương n (kiểu int) - Cài đặt hàm - Gọi hàm
  • 38. 38 - Output: có hoặc không, đúng hoặc sai, true hoặc false => kiểu trả về là int (1: đúng, 0: sai) - Thuật toán: o Đếm số ước của n. o So sánh số ước của n với 2. Nếu số ước bằng 2 thì đó là số nguyên tố, ngược lại không phải số nguyên tố Bước 2: Cài đặt chương trình 3. Viết hàm tính xn bằng hàm sử dụng đệ qui Bước 1: Xác định tên hàm, input, output, thuật toán - Tên hàm: LuyThua - Input: 01 số thực x, 01 số nguyên dương n - Output: xn là một số thực (float) - Thuật toán đệ qui o Điều kiện dừng: n=0 => Lũy thừa =1 o Điều kiện đệ qui n>0: LuyThua(x,n)=x*LuyThua(x,n-1); Bước 2: Cài đặt chương trình - Cài đặt hàm - Cài đặt hàm - Gọi hàm
  • 39. 39 III. Bài tập ở lớp 1. Viết chương trình tính diện tích hình tam giác khi biết ba cạnh của tam giác (yêu cầu viết hàm con tính diện tích tam giác) 2. Viết chương trình cho phép người dùng thực hiện một trong các yêu cầu sau: 1. Tính tổng các ước của số nguyên n. 2. Tìm số ngày của một tháng khi biết tháng và năm. 3. Đổi chỗ 2 số nguyên x, y. 4. Tìm BCNN của hai số nguyên dương a và b 5. Kiểm tra số nguyên dương n có các chữ số toàn là chữ số lẻ hay không? (Yêu cầu: Mỗi chức năng viết hàm con thực hiện, hàm main gọi hàm con thực thi) 3. Viết hàm tính (n dấu căn). Viết hàm main thực thi 1 S(n) 1 ... 4. Viế thàm tính n sử dụng hàm đệ qui. Viết hàm main thực thi 5. Viết hàm tính n!=1*2*3*…*n. Viết hàm main thực thi. IV. Bài tập về nhà: 1. Viết hàm xuất số đảo của số nguyên dương n.Viết hàm main minh họa 2. Nhập vào số nguyên dương h, viết chương trinh in ra màn hình một trong các tam giác sau (người dùng trùy chọn) 3. Nhập n>=0. Viết hàm tính S(n)=1-2+3-4+ … +(-1)n-1 n. 1 1 1 S(n) ...
  • 40. 40 4. Nhập n>=0. Viết hàm tính 2 4 2n S(n) 1 ... 5. Nhập n>=0. .Viết hàm tính Trường ĐH CNTP TP.HCM Khoa: CÔNG NGHỆ THÔNG TIN Bộ môn: CÔNG NGHỆ PHẦN MỀM Môn: TH NGÔN NGỮ LẬP TRÌNH BÀI 6 MẢNG 1 CHIỀU A. MỤC TIÊU: Hiểu được cấu trúc dữ liệu mảng 1 chiều. Lập trình và vận dụng được mảng 1 chiều vào từng bài toán cụ thể. Làm được các bài tập có ứng dụng mảng 1 chiều. B. DỤNG CỤ - THIẾT BỊ THÍ NGHIỆM CHO MỘT SV: STT Chủng loại – Quy cách vật tư Số lượng Đơn vị Ghi chú 1 Máy tính (có thể là máy bàn hoặc laptop). 1 Chiếc C. VẬT LIỆU Visual C++.Net. Phần mềm hỗ trợ dạy học: NetOp School hoặc NetSupport School. D. NỘI DUNG THỰC HÀNH I. Tóm tắt lý thuyết. 1. Định nghĩa và khai báo mảng 1 chiều:
  • 41. 41 Lưu ý: Chỉ số mảng luôn luôn bắt đầu từ 0. Ví dụ: - int a[100]; //Mảng có tên a chứa tối đa 100 số nguyên - #define maxN 30 float b[maxN]; // Mảng có tên b chứa tối đa 30 số nguyên - const int maxC = 50 char c[maxC]; Mảng có tên c chứa tối đa 50 số nguyên Ví dụ: Cho mảng 1 chiều tên a chứa 10 số nguyên như sau: 2. Tham số mảng của một hàm 3. Những thao tác trên mảng:
  • 42. 42 Ví dụ: II. Bài tập mẫu hướng dẫn thực hành. Bài 1: Viết chương trình nhập các giá trị cho mảng 1 chiều chứa các số nguyên, sau đó xuất mảng vừa nhập (Lưu ý: Viết chương trình dạng hàm). Yêu cầu: Viết 2 hàm con Nhập và Xuất mảng 1 chiều chứa các số nguyên. Gọi thực hiện 2 hàm con trong hàm main. Hướng dẫn: Bước 1: Tạo một Project mới  đặt tên: Mang1C_BaiTapMau1_<Tên sinh viên>, Ví dụ Mang1C_BaiTapMau1_NguyenVanTeo Bước 2: Khai báo thêm các thư viện cơ bản cho chương trình. #include <conio.h> #include <stdio.h> Bước 3: Khai báo hằng số cho chương trình. #define MAXSIZE 1000 Bước 4: Viết các khai báo nguyên mẫu hàm cho chương trình như sau:
  • 43. 43 void NhapMang1C_SoNguyen(int a[], int &n); void XuatMang1C_SoNguyen(int a[], int n); Bước 5: Viết hàm main để thực thi chương trình. Bước 6: Viết các định nghĩa hàm cần thiết cho chương trình như sau: Bài 2: Bổ sung vào bài 1 các thao tác sau (Lưu ý: Viết chương trình dạng hàm): - Xuất các giá trị chẵn của mảng ra màn hình. - Tính tổng các giá trị mảng. - Tính tổng chẵn trong mảng Hướng dẫn:
  • 44. 44 //======================================================================= III. Bài tập ở lớp Cho một mảng 1 chiều chứa các số nguyên. Hãy viết một chương trình cho phép người dùng chọn một trong các yêu cầu sau: 1. Tạo một mảng 1 chiều chứa n số nguyên. 2. Xuất một mảng 1 chiều chứa n số nguyên. Bước 1: Bổ sung thêm các khai báo nguyên mẫu hàm cho chương trình như sau: void TaoMang1C_SoNguyen(int a[], int &n); void XuatMang1C_SoNguyen(int a[], int n); void XuatMang1C_SoChan(int a[], int n); int KiemTraSoChinhPhuong(int x); void LietKeSoChinhPhuong(int a[], int n); Bước 5: Bổ sung vào hàm main để thực thi chương trình. Bước 6: Viết các định nghĩa hàm cần thiết cho chương trình như sau: Đã khai báo trong bài 1 Bổ sung thêm
  • 45. 45 3. Tính giá trị trung bình các phần tử trong mảng. 4. Tìm giá trị lớn nhất trong mảng. 5. Xuất ra danh sách các phần tử ở vị trí chẵn trong mảng. 6. Đếm phần tử dương trong mảng. 7. Đếm số lần phần tử x xuất hiện trong mảng. 8. Tìm vị trị của giá trị x trong mảng, x nhập từ phím. 9. Tìm vị trí phần tử nhỏ nhất trong mảng. 10. Đếm số nguyên tố trong mảng. IV. Bài tập về nhà: Cho một mảng 1 chiều chứa các số thực. Hãy viết một chương trình cho phép người dùng chọn một trong các yêu cầu sau: 1. Tạo một mảng 1 chiều chứa n số thực. 2. Xuất một mảng 1 chiều chứa n số thực. 3. Tính tổng các giá trị mảng. 4. Tính giá trị trung bình các phần tử trong mảng. 5. Tính tổng các giá trị dương trong mảng. Trường ĐH CNTP TP.HCM Khoa: CÔNG NGHỆ THÔNG TIN Bộ môn: CÔNG NGHỆ PHẦN MỀM Môn: TH NGÔN NGỮ LẬP TRÌNH BÀI 7 MẢNG 1 CHIỀU (tt) A. MỤC TIÊU: Hiểu được cấu trúc dữ liệu mảng 1 chiều. Lập trình và vận dụng được mảng 1 chiều vào từng bài toán cụ thể. Làm được các bài tập có ứng dụng mảng 1 chiều. B. DỤNG CỤ - THIẾT BỊ THÍ NGHIỆM CHO MỘT SV: STT Chủng loại – Quy cách vật tư Số lượng Đơn vị Ghi chú 1 Máy tính (có thể là máy bàn hoặc laptop). 1 Chiếc C. VẬT LIỆU Visual C++.Net. Phần mềm hỗ trợ dạy học: NetOp School hoặc NetSupport School. D. NỘI DUNG THỰC HÀNH
  • 46. 46 I. Tóm tắt lý thuyết Một số hàm mẫu hướng dẫn về cách xử lý mảng 1 chiều 1. Cách tìm “giá trị lớn nhất” trong mảng 1 chiều int LonNhat(int a[], int n) {//Dùng kỹ thuật lính canh int max = a[0]; for(int i=1; i<n; i++) if(a[i] > max) max = a[i]; return max; } 2. Liệt kê các giá trị âm trong mảng 1 chiều void LietKeGiaTriAm(int a[], int n) {//Dùng kỹ thuật liệt kê printf("Cac gia tri am co trong mang la: "); for(int i=0; i<n; i++) if(a[i]<0) printf("%4d", a[i]); } 3. Tính tổng các giá trị lẻ trong mảng 1 chiều. int TongMang_SoLe(int a[], int n) {//Dùng kỹ thuật tính tổng int s=0; for(int i=0; i<n; i++) if(a[i]%2 != 0) s = s + a[i]; //s += a[i]; return s; } 4. Kiểm tra mảng số nguyên có tồn tại giá trị 0 hay không? Nếu có thì trả về 1, ngược lại trả về 0. int KiemTraGiaTriKhong(int a[], int n) {//Dùng kỹ thuật cớ hiệu int flag=0; for(int i=0; i<n && !flag; i++) if(a[i] == 0) flag=1; return flag; } 5. Sắp xếp các phần tử của mảng số nguyên tăng dần. void SapXepTangDan(int a[], int n) {//Dùng kỹ thuật sắp xếp for(int i=0; i<n-1; i++) for(int j=i+1; j<n; j++) if(a[i] > a[j]) HoanVi(a[i], a[j]); //Hàm này xem như đã tồn tại } 6. Thêm một phần tử có giá trị x vào đầu mảng. void ThemPhanTuDau(int a[], int &n, int x) {//Dùng kỹ thuật thêm for(int i=n; i>0; i--) a[i] = a[i-1]; a[0]=x; n++; }
  • 47. 47 7. Xóa một phần tử ở đầu mảng. void XoaPhanTuDau(int a[], int &n) {//Dùng kỹ thuật xóa for(int i=0; i<n-1; i++) a[i] = a[i+1]; n--; } 8. Đưa tất cả các phần tử 0 về đầu mảng. void DuaSoKhongVeDau(int a[], int n) {//Dùng kỹ thuật xử lý mảng int j=0; for(int i=1; i<n; i++) if(a[i] == 0) { HoanVi(a[j], a[i]); j++; } } 9. Liệt kê các dãy con tăng trong mảng 1 chiều. void LietKeMangConTang(int a[], int n) {//Dùng kỹ thuật xử lý con for(int i=0; i<n; i++) { if(a[i] < a[i+1]) printf("%4d",a[i]); else printf("n"); } } 10.Tạo mảng b sao cho mảng b chỉ chứa các giá trị lẻ của mảng ban đầu. void TaoMangConLe(int a[], int na, int b[], int &nb) {//Dùng kỹ thuật xây dựng mảng nb=0; for(int i=0; i<na; i++) if(a[i]%2 == 0) b[nb++] = a[i]; } II. Bài tập mẫu hướng dẫn thực hành. Bài tập mẫu 3: Trên cơ sở bài tập mẫu 2 (Bài thực hành buổi trước) hãy viết lại chương trình dạng thực đơn (Menu): - Xuất các giá trị nguyên tố của mảng ra màn hình. - Thêm vào mảng một giá trị x tại vị trí vt (kiểm tra tính hợp lệ của vt). - Xóa khỏi mảng một giá trị x. - Sắp xếp các giá trị của mảng theo thứ tự tăng dần. - Xuất ra màn hình những giá trị là số chính phương. Hướng dẫn:
  • 48. 48 Bước 1: Tạo một Project mới  đặt tên: Mang1C_BaiTapMau3 _<Tên sinh viên>, Ví dụ Mang1C_BaiTapMau3 _NguyenVanTeo. Bước 2: Khai báo thêm các thư viện cơ bản cho chương trình. #include<conio.h> #include<stdio.h> #include<stdlib.h> #include<time.h> #include<math.h> Bước 3: Khai báo hằng số cho chương trình. const int MAXSIZE=1000; //Hoặc dùng lệnh define Bước 4: Viết các khai báo nguyên mẫu hàm cho chương trình như sau:
  • 49. 49 Bước 5: Viết hàm main để thực thi chương trình.
  • 50. 50 //======================================================================= //Phần hàm main void main() { Process(); } Bước 6: Viết các định nghĩa hàm cần thiết cho chương trình như sau:
  • 51. 51
  • 52. 52 III. Bài tập ở lớp Bổ sung thêm vào bài tập mẫu 3 các yêu cầu sau: 1. Tìm số chẵn lớn nhất trong mảng. 2. Tìm số nguyên tố nhỏ nhất trong mảng. 3. Tìm vị trị của giá trị x trong mảng, x nhập từ phím. 4. Tìm vị trí phần tử nhỏ nhất trong mảng. 5. Đếm số nguyên tố trong mảng. 6. Tìm “vị trí của giá trị chẵn đầu tiên” trong mảng 1 chiều các số nguyên. Nếu mảng không có giá trị chẵn nào thì trả về -1. 7. Tìm “số chẵn cuối cùng” trong mảng. Nếu mảng không có giá trị chẵn thì trả về -1. 8. Đảo ngược các giá trị mảng. 9. Kiểm tra tính đối xứng của mảng. Nếu mảng không đối xứng thì trả về -1. 10. Thêm vào mảng một giá trị x tại vị trí vt (kiểm tra tính hợp lệ của vt).
  • 53. 53 IV. Bài tập về nhà Bổ sung thêm vào bài tập mẫu 3 các yêu cầu sau: 1. Sắp xếp các giá trị của mảng theo thứ tự tăng dần. 2. Xuất ra màn hình những giá trị là số chính phương. 3. Viết hàm tìm giá trị phần tử xuất hiện nhiều nhất trong mảng, nếu có nhiều phần tử có số lần xuất hiện bằng nhau thì xuất phần tử đầu tiên. 4. Viết hàm kiểm tra mảng có phải là mảng tăng không. 5. Tìm “số chẵn nhỏ nhất” trong mảng. Nếu mảng không có giá trị chẵn thì trả về -1. 6. Tìm “một vị trí mà giá trị tại ví trí đó là giá trị nhỏ nhất” trong. 7. Tính tổng các giá trị có chữ số hàng chục là chữ số 5 trong mảng. 8. Tính tổng các giá trị lớn hơn 2 giá trị lân cận với nó trong mảng. 9. Cho biết sự tương quan giữa số lượng các chữ số chẵn và số lượng các chữ số lẻ trong mảng 1 chiều các số nguyên. a. Hàm trả về -1: nếu số lượng các chữ số chẵn nhiều hơn số lượng các chữ số lẻ b. Hàm trả về 0: nếu số lượng các chữ số chẵn bằng số lượng các chữ số lẻ c. Hàm trả về 1: nếu số lượng các chữ số chẵn ít hơn số lượng các chữ số lẻ 10. Kiểm tra mảng số nguyên có tồn tại hai giá trị 0 liên tiếp nhau hay không? Nếu có thì trả về 1, ngược lại trả về 0. 11. Kiểm tra mảng số nguyên có tồn tại toàn là giá trị chẵn hay không? Nếu có thì trả về 1, ngược lại trả về 0. 12. Sắp xếp các phần tử của mảng số thực sao cho các phần tử tại các vị trí lẻ tăng dần, các phần tử tại các vị trí chẵn thì giảm dần. 13. Thêm một phần tử có giá trị x vào mảng tăng dần sao cho sau khi thêm x vào mảng vẫn tăng dần. 14. Xóa tất cả các phần tử trùng nhau của mảng sao cho sau khi xóa chỉ giữ lại duy nhất một phần tử đại diện. 15. Đưa tất cả các phần tử 0 về đầu mảng. 16. Đưa tất cả các phần tử chẵn về đầu mảng, các phầu tử lẻ về cuối mảng, các phần tử 0 nằm giữa mảng. 17. Thay thế tất cả các phần tử lớn nhất của mảng bởi giá trị của phần tử nhỏ nhất và ngược lại. 18. Liệt kê các giá trị chẵn trong mảng thuộc đoạn [x, y] cho trước. 19. Liệt kê các dãy con tăng trong mảng. 20. Liệt kê các dãy con toàn dương có độ dài lớn hơn 1.
  • 54. 54 Trường ĐH CNTP TP.HCM Khoa: CÔNG NGHỆ THÔNG TIN Bộ môn: CÔNG NGHỆ PHẦN MỀM Môn: TH NGÔN NGỮ LẬP TRÌNH BÀI 8 MẢNG 2 CHIỀU A. MỤC TIÊU: Hiểu được cấu trúc dữ liệu mảng 2 chiều. Lập trình và vận dụng được mảng 2 chiều vào từng bài toán cụ thể. Làm được các bài tập có ứng dụng mảng 2 chiều. B. DỤNG CỤ - THIẾT BỊ THÍ NGHIỆM CHO MỘT SV: STT Chủng loại – Quy cách vật tư Số lượng Đơn vị Ghi chú 1 Máy tính (có thể là máy bàn hoặc laptop). 1 Chiếc C. VẬT LIỆU Visual C++.Net. Phần mềm hỗ trợ dạy học: NetOp School hoặc NetSupport School. D. NỘI DUNG THỰC HÀNH I. Tóm tắt lý thuyết mảng 2 chiều. 1. Định nghĩa: Mảng hai chiều (còn gọi là ma trận) thực chất là mảng một chiều trong đó mỗi phần tử của mảng là một mảng một chiều, và được truy xuất bởi hai chỉ số dòng và cột. 2. Cú pháp: <tên kiểu dữ liệu> <tên mảng> [<số dòng>] [<số cột>]; Lưu ý: Chỉ số cột và chỉ số dòng luôn luôn bắt đầu từ 0. Ví dụ:  Khai báo mảng 2 chiều a có 3 dòng 2 cột chứa số nguyên: int a[3][2];  Khai báo mảng 2 chiều ch có 50 dòng 100 cột chứa ký tự: char ch[50][100]; 3. Truy xuất phần tử của mảng:
  • 55. 55 Tên_mảng [chỉ_số_dòng][ chỉ số cột] Ví dụ: Cho ma trận A như sau: 4. Tham số mảng của một hàm  Qui ước: Trong phần thực hành chúng ta thống nhất dùng Ma trận thay cho Mảng 2 chiều. II. Bài tập mẫu hướng dẫn thực hành. Bài 1: Viết chương trình nhập các giá trị cho ma trận chứa các số nguyên, sau đó xuất mảng vừa nhập (Lưu ý: Viết chương trình dạng hàm). Yêu cầu: Viết 2 hàm con Nhập và Xuất ma trận chứa các số nguyên. Gọi thực hiện 2 hàm con trong hàm main. Hướng dẫn: Bước 1: Tạo một Project mới  đặt tên: MaTran_BaiTapMau1_<Tên sinh viên>, Ví dụ: MaTran_BaiTapMau1_NguyenVanTeo. Bước 2: Khai báo thêm các thư viện cơ bản cho chương trình.
  • 56. 56 #include <conio.h> #include <stdio.h> Bước 3: Khai báo hằng số cho chương trình. #define MAXROW 100 #define MAXCOL 100 Bước 4: Viết các khai báo nguyên mẫu hàm cho chương trình như sau: void NhapMaTran_SoNguyen(int a[], int &m, int &n); void XuatMaTran_SoNguyen(int a[], int m, int n); Bước 5: Viết hàm main để thực thi chương trình. Bước 6: Viết các định nghĩa hàm cần thiết cho chương trình như sau: Bài 2: Cho ma trận chứa các số nguyên. Viết chương trình thực hiện các thao tác sau (Lưu ý: Viết chương trình dạng hàm): - Tạo giá trị ngẫu nhiên cho các phần tử của ma trận.
  • 57. 57 - Xuất các giá trị của ma trận ra màn hình. - Tính và xuất tổng các phần tử ma trận. - Tìm max/min của các phần tử ma trận. - Sắp xếp các giá trị của ma trận theo thứ tự tăng dần. Hướng dẫn: Bước 1: Tạo một Project mới  đặt tên: MaTran_BaiTapMau2 _<Tên sinh viên>, Ví dụ: MaTran_BaiTapMau2 _NguyenVanTeo. Bước 2: Khai báo thêm các thư viện cơ bản cho chương trình. #include<conio.h> #include<stdio.h> #include<stdlib.h> #include<time.h> #include<math.h> Bước 3: Khai báo hằng số cho chương trình. #define MAXROW 100 //số dòng tối đa #define MAXCOL 100 //số cột tối đa Bước 4: Viết các khai báo nguyên mẫu hàm cho chương trình như sau: Bước 5: Viết hàm main để thực thi chương trình.
  • 58. 58 case 5: SapXepMaTranTang(A, M, N); printf("nNoi dung cua ma tran sau khi sap xep tang la: n"); XuatMaTran_SoNguyen(A, M, N); break; case 0: exit(1); } }while(1); } //======================================================================= //Phần hàm main void main() { Process(); } Bước 6: Viết các định nghĩa hàm cần thiết cho chương trình như sau:
  • 60. 60 III. Bài tập ở lớp Cho một ma trận chứa các số nguyên. Viết một chương trình (dạng menu) thực hiện các yêu cầu sau: 1. Tạo ngẫu nhiên giá trị cho các phần tử của ma trận. 2. Xuất giá trị các phần tử của ma trận ra màn hình. 3. Tìm vị trí của giá trị x trong ma trận, x nhập từ phím. 4. Tìm max của dòng k trong ma trận. 5. Đếm phần tử dương trong ma trận. 6. Đếm số lần phần tử x xuất hiện trong ma trận. 7. Kiểm tra ma trận có vuông không? 8. Kiểm tra ma trận có toàn là số chẵn không? 9. Xuất các phần tử trên đường chéo chính. 10. Tìm số chẵn lớn nhất trong ma trận. IV. Bài tập về nhà 1. Tìm số nguyên tố nhỏ nhất trong ma trận. 2. Xuất các phần tử trên đường chéo phụ 3. Xuất các phần tử thuộc tam giác trên. 4. Xuất các phần tử thuộc tam giác dưới. 5. Xuất các cột có tổng lớn nhất trong ma trận. 6. Xuất các dòng có tổng nhỏ nhất trong ma trận. 7. Tính tổng các phần tử trên đường chéo chính. 8. Tính tổng các phần tử chẵn thuộc tam giác trên.
  • 61. 61 9. Tính tổng các phần tử lẻ thuộc tam giác dưới. 10.Đếm số phần tử cực đại trong ma trận. biết phần tử cực đại là phần tử lớn hơn các phần tử xung quanh nó. Trường ĐH CNTP TP.HCM Khoa: CÔNG NGHỆ THÔNG TIN Bộ môn: CÔNG NGHỆ PHẦN MỀM Môn: TH NGÔN NGỮ LẬP TRÌNH BÀI 9 FILE A. MỤC TIÊU: Hiểu được cách đọc dữ liệu trên file. Lập trình và vận dụng được cách đọc 1 số nguyên từ file và đọc 1 dòng văn bản từ file vào từng bài toán cụ thể. Làm được các bài tập có ứng dụng file. B. DỤNG CỤ - THIẾT BỊ THÍ NGHIỆM CHO MỘT SV: STT Chủng loại – Quy cách vật tư Số lượng Đơn vị Ghi chú 1 Máy tính (có thể là máy bàn hoặc laptop). 1 Chiếc C. VẬT LIỆU Visual C++.Net. Phần mềm hỗ trợ dạy học: NetOp School hoặc NetSupport School. D. NỘI DUNG THỰC HÀNH I. Tóm tắt lý thuyết - Thư viện xử lý file: fstream - Khai báo biến mở file để đọc: ifstream <tên biến kiểu file>; Ví dụ: ifstream f - Hàm mở file f.open(<tên file>, <định dạng mở file để đọc>); Ví dụ: f.open("t.txt", ifstream::in); - Hàm đóng file Ví dụ: f.close(); 1. Đọc file txt kiểu số
  • 62. 62 - f>>a; trong đó a là biến kiểu số Ví dụ: - Khai báo biến số nguyên a, b ,c int a, b, c; - Nội dung file txt là: 5 6 9 - Cách đọc 3 số nguyên lưu vào a,b,c như sau: f>>a f>>b; f>>c; Chú ý: Khi đọc số nguyên, 1 lần đọc >> kết thúc bởi kí hiệu khoảng trắng hoặc xuống dòng 2. Đọc file txt kiểu chuỗi - Hàm getline giúp đọc 1 dòng văn bản từ file txt vào biến kiểu chuỗi buffer Ví du: f.getline(buffer, 1000, 'n'); trong đó buffer là biến kiểu chuỗi Chú ý: Khi đọc 1 dòng văn bản, 1 lần getline kết thúc bởi kí hiệu xuống dòng
  • 63. 63 II. Bài tập mẫu hướng dẫn thực hành 1. Cho file txt chứa mảng 1 chiều như sau: 5 1 7 9 4 3 a. Hãy đọc các giá trị của file txt và lưu vào mảng 1 chiều. b. Xuất mảng vừa đọc ra màn hình c. Tính tổng tất cả giá trị của mảng vừa đọc 2. Cho file txt chứa thông tin: 121 Nguyen Thi Thuy 23 a. Đọc giá trị của file và in ra màn hinh b. Tính lương = Số ngày công *50
  • 64. 64 III. Bài tập ở lớp 1. Cho file txt như mẫu sau: 3 4 4 5 8 1 9-2 8 5 8 5 2 7 - Đọc nội dung file ghi dữ liệu vào biến mảng 2 chiều, xuất mảng 2 chiều ra màn hình - Tính tổng giá trị chẵn mảng 2 chiều 2. Cho file txt như hinh mẫu như sau: 1 Nguyen van A 1996 Ben tre 2 Nguyen Thi N 1987 Hau giang Đọc file và xuất nội dung file ra màn hình theo định dạng ----------------------------------- Ma sinh vien: 1 Ten sinh vien: Nguyen van A
  • 65. 65 Nam sinh: 1996 Nam sinh: Ben tre ----------------------------------- Ma sinh vien: 2 Ten sinh vien: Nguyen Thi N Nam sinh: 1987 Nam sinh: Hau giang IV. Bài tập về nhà 1. Cho file txt như hinh mẫu như sau: 1# Nguyễn văn A #1996#Bến tre 2#Nguyễn Thi N #1987#Hậu giang - Đọc file và xuất nội dung file ra màn hình như định dạng bài 2 (Bài tập ở lớp) Trường ĐH CNTP TP.HCM Khoa: CÔNG NGHỆ THÔNG TIN Bộ môn: CÔNG NGHỆ PHẦN MỀM Môn: TH NGÔN NGỮ LẬP TRÌNH BÀI 10 STRUCT A. MỤC TIÊU: Hiểu được cấu trúc dữ liệu struct. Lập trình và vận dụng được struct vào từng bài toán cụ thể. Làm được các bài tập có ứng dụng struct. B. DỤNG CỤ - THIẾT BỊ THÍ NGHIỆM CHO MỘT SV: STT Chủng loại – Quy cách vật tư Số lượng Đơn vị Ghi chú 1 Máy tính (có thể là máy bàn hoặc laptop). 1 Chiếc C. VẬT LIỆU Visual C++.Net. Phần mềm hỗ trợ dạy học: NetOp School hoặc NetSupport School. D. NỘI DUNG THỰC HÀNH I. Tóm tắt lý thuyết.
  • 66. 66 1. Định nghĩa : Cấu trúc là một kiểu dữ liệu bao gồm nhiều thành phần có thể thuộc nhiều kiểu dữ liệu khác nhau. Các thành phần được truy nhập thông qua một tên. 2. Khai báo struct: Cách 1: Ví dụ: Cách 2:
  • 67. 67 Ví dụ: 3. Khai báo biến sử dụng cấu trúc Ví dụ: 4. Truy cập thành phần của cấu trúc: Tên_biến_cấu_trúc.tên_thành_phần Ví dụ: II. Bài tập mẫu hướng dẫn thực hành. Bài1: Khai báo cấu trúc HinhChuNhat cần thiết lưu trữ thông tin hình chữ nhật, sau đó thực hiện các chức năng: (Lưu ý: Viết chương trình dạng hàm). Yêu cầu:
  • 68. 68 Nhập thông tin cho kiểu dữ liệu HinhChuNhat. Xuất thông tin cho kiểu dữ liệu HinhChuNhat. Tính chu vi hình chữ nhật Tính diện tích hình chữ nhật Hướng dẫn: Bước 1: Tạo một Project mới  đặt tên: Struct_BaiTapMau1_<Tên sinh viên>, Ví dụ Struct _BaiTapMau1_NguyenThiC Bước 2: Khai báo thêm các thư viện cơ bản cho chương trình. #include <conio.h> #include <stdio.h> Bước 3: Khai báo struct HinhChuNhat cho chương trình. struct HinhChuNhat { int Dai; int Rong; }; Bước 4: Viết các khai báo nguyên mẫu hàm cho chương trình như sau: void NhapThongTinHCN(HinhChuNhat &pHcn); void XuatThongTinHCN(HinhChuNhat pHcn); void TinhChuViHcn(HinhChuNhat pHcn); void TinhDienTichHcn(HinhChuNhat pHcn); Bước 5: Viết hàm main để thực thi chương trình. void main() { HinhChuNhat hinhchunhat; NhapThongTinHCN(hinhchunhat); XuatThongTinHCN(hinhchunhat); TinhChuViHcn(hinhchunhat); TinhDienTichHcn(hinhchunhat); _getch(); } Bước 6: Viết các định nghĩa hàm cần thiết cho chương trình như sau:
  • 69. 69 III. Bài tập ở lớp 1. Khai báo cấu trúc PhanSo cần thiết lưu trữ thông tin phân số, sau đó thực hiện các chức năng: a. Viết hàm nhập vào phân số. b. Viết hàm xuất phân số. c. Kiểm tra phân số mẫu phải khác 0. d. Viết hàm tối giản phân số. e. Viết hàm quy đồng 2 phân số. f. Nhập vào 2 phân số. Tính tổng, hiệu, tích và thương của hai phân số. 2. Khai báo cấu trúc NhanVien lưu trữ thông tin:  Mã số nhân viên  Tên nhân viên  Số ngày công  Lương 1 ngày công  Chức vụ Sau đó thực hiện các chức năng: a. Tạo file txt lưu trữ thông tin 1 nhân viên, mỗi dòng lưu 1 thông tin như sau. 368 Tran An 26 150 Giam doc
  • 70. 70 b. Nhập thông tin cho 1 nhân viên từ file c. Tính lương cho 1 nhân viên d. Tính tiền thưởng cho nhân viên, biết rằng thưởng 50$ cho nhân viên làm trên 24 ngày. e. Tính tiền phụ cấp chức vụ:  Giám đốc: 100$  Phó giám đốc: 80$  Trưởng phòng: 40$  Phó phòng: 20$ f. Tính tiền lương thực lãnh cho nhân viên IV. Bài tập về nhà: Hãy khai báo một cấu trúc mô tả một điểm trên tọa độ xOy. Sau đó viết hàm thực hiện các chức năng sau: a. Nhập, xuất điểm. b. Kiểm tra điểm có nằm trên trục tung/trục hoành. c. Tính khoảng cách giữa 2 điểm. d. Tìm điểm đối xứng của 1 điểm qua trục tung/trục hoành Trường ĐH CNTP TP.HCM Khoa: CÔNG NGHỆ THÔNG TIN Bộ môn: CÔNG NGHỆ PHẦN MỀM Môn: TH NGÔN NGỮ LẬP TRÌNH BÀI 11 MẢNG STRUCT A. MỤC TIÊU: Hiểu được cấu trúc dữ liệu mảng struct. Lập trình và vận dụng được mảng struct vào từng bài toán cụ thể. Làm được các bài tập có ứng dụng mảng struct. B. DỤNG CỤ - THIẾT BỊ THÍ NGHIỆM CHO MỘT SV: STT Chủng loại – Quy cách vật tư Số lượng Đơn vị Ghi chú 1 Máy tính (có thể là máy bàn hoặc laptop). 1 Chiếc
  • 71. 71 C. VẬT LIỆU Visual C++.Net. Phần mềm hỗ trợ dạy học: NetOp School hoặc NetSupport School. D. NỘI DUNG THỰC HÀNH I. Tóm tắt lý thuyết. 1. Khai báo mảng struct: Khai báomảng các cấu trúc hoàn toàn tương tự như khai báo mảng khác, chỉ có điều ở phần kiểu sẽ là tên một cấu trúc. Ví dụ: 2. Truy cập thành phần của mảng cấu trúc: Việc truy xuất đến một phần tử của mảng như a[2] ta sẽ thu được một biến có cấu trúc SinhVien và có thể lại tiếp tục truy xuất đến các thành phần của nó. Ví dụ: II. Bài tập mẫu hướng dẫn thực hành. Bài1: Khai báo cấu trúc CongNhan lưu trữ thông tin: (Lưu ý: Viết chương trình dạng hàm).  Ten  NamSinh  GioLam Yêu cầu: Nhập mảng gồm n công nhân, xuất mảng công nhân vừa nhập
  • 72. 72 Lệt kê tên công nhân nhận thưởng biết rằng công nhân nhận thưởng là các công nhân có giờ làm lớn hơn 40 giờ. Sắp xếp mảng công nhân theo giờ làm giảm dần. Hướng dẫn: Bước 1: Tạo một Project mới  đặt tên: MangStruct_BaiTapMau1_<Tên sinh viên>, Ví dụ MangStruct _BaiTapMau1_NguyenThiC Bước 2: Khai báo thêm các thư viện cơ bản cho chương trình. #include "stdafx.h" #include<stdio.h> #include<conio.h> #include <math.h> Bước 3: Khai báo struct CongNhan cho chương trình. struct CongNhan { char ten[50]; int namsinh; int giolam; }; Bước 4: Viết các khai báo nguyên mẫu hàm cho chương trình như sau: void NhapMangCN(int &n, CongNhan a[]); void XuatMangCN(CongNhan a[], int n); void ThuongCN(CongNhan a[], int n); void XuatCN(CongNhan pCN,int i); void InsertionSort(CongNhan a[], int n) ; void SapXep(CongNhan a[], int n); Bước 5: Viết hàm main để thực thi chương trình. void main() { CongNhan A[1000];// Mảng struct công nhân int N;// N công nhân biến kiểu nguyên NhapMangCN(N,A); ThuongCN(A,N); SapXep(A,N); XuatMangCN(A,N); _getch(); } Bước 6: Viết các định nghĩa hàm cần thiết cho chương trình như sau:
  • 73. 73
  • 74. 74 III. Bài tập tương tự ở lớp 1. Khai báo cấu trúc Thí Sinh lưu trữ thông tin:  Mã số thí sinh  Tên thí sinh  Điểm Toán, Điểm Lý, Điểm Hóa  Khu vực dự thi  Xếp loại tốt nghiệp Sau đó thực hiện các chức năng: 1. Tạo file txt lưu trữ n Thí sinh theo cấu trúc: Dòng đầu tiên lưu số lượng thí sinh Các dòng còn lại lưu thông tin của n thí sinh, mỗi thông tin lưu trên 1 dòng Ví dụ: 2 367 An
  • 75. 75 5 4 4 KV3 Trung binh 368 Cuc 5 9 7 KV1 Gioi 2. Nhập mảng gồm n thí sinh từ file txt trên, xuất mảng thí sinh 3. Tính tổng điểm của thí sinh 4. Tổng điểm = điểm toán + điểm lý + điểm hóa + điêm cộng + điểm ưu tiên. 5. Điểm cộng: Nếu xếp loại đạt giỏi (>8) thì cộng 2 điểm, nếu đạt loại khá (từ 7-8) thì cộng 1 điểm, các trường hợp khác không cộng. 6. Điểm ưu tiên: nếu là khu vực 3 được 2 điểm, nếu là khu vực 2 thì cộng 1 điểm, các khu vực khác là không. 7. In danh sách thi sinh đậu. 8. In thông tin thí sinh đậu thủ khoa 9. Nhập mã số thí sinh, xuất thông tin thí sinh (tên, điểm toán, điểm lý, điểm hóa, điểm cộng, điểm ưu tiên, tổng điểm. 10.Tính tỉ lệ % đậu của kì thi. Gợi ý: struct ThiSinh { char mats[10]; char hten[50]; float toan, ly, hoa; char kvthi[30]; char loaiTN [10]; }; 2. Viết chương trình quản lý nhân sự cho một công ty, mỗi nhân viên trong công ty gồm cácthông tin sau: mã số(khôngcó hai người trùng mã số), họ, tên, ngày sinh, nơi sinh, địa chỉ, ngày công tác, lương. Viết chương trình quản lý nhân viên với các thao tác sau (sử dụng file để lưu trữ thông tin nhân viên):  Thêm vào một nhân viên.  Xem danh sách nhân viên.  Tìm nhân viên theo mã số.  Tìm một nhân viên theo tên.  In ra bảng lương của các nhân viên trong công ty theo thứ tự giảm dần.  Xóa một nhân viên. IV. Bài tập về nhà: 1. Khai báo cấu trúc NhânViên lưu trữ thông tin:
  • 76. 76  Mã số nhân viên  Tên nhân viên  Hệ số lương  Lương cơ bản  Chức vụ Sau đó viết hàm thực hiện các chức năng sau: a. Nhập mảng gồm n nhân viên, xuất mảng nhân viên vừa nhập b. Tính lương thực lãnh từng nhân viên.  Thực lãnh = hệ số lương * lương cơ bản + phụ cấp chức vụ.  Phụ cấp chức vụ: phụ cấp 500 cho giám đốc và 300 cho trưởng phòng.
  • 77. 77
  • 78. 78 Trường ĐH CNTP TP.HCM Khoa: CÔNG NGHỆ THÔNG TIN Bộ môn: CÔNG NGHỆ PHẦN MỀM Môn: TH NGÔN NGỮ LẬP TRÌNH BÀI 12 STRUCT CON TRỎ STRUCT ĐỆ QUY A. MỤC TIÊU: Hiểu được cấu trúc dữ liệu con trỏ struct. Lập trình và vận dụng được con trỏ struct vào từng bài toán cụ thể. Làm được các bài tập có ứng dụng con trỏ struct. B. DỤNG CỤ - THIẾT BỊ THÍ NGHIỆM CHO MỘT SV: STT Chủng loại – Quy cách vật tư Số lượng Đơn vị Ghi chú 1 Máy tính (có thể là máy bàn hoặc laptop). 1 Chiếc C. VẬT LIỆU Visual C++.Net. Phần mềm hỗ trợ dạy học: NetOp School hoặc NetSupport School. D. NỘI DUNG THỰC HÀNH I. Tóm tắt lý thuyết. 1. Khai báo struct con trỏ: Ta có thể khai báo một biến pointer chỉ đến một cấu trúc để có thể lưu giữ lại địa chỉ của một biến cấu trúc nào đó cần thiết. Ví dụ: 2. Truy cập thành phần của con trỏ cấu trúc:
  • 79. 79 Việc truy xuất đến thành phần của một cấu trúc thông qua một pointer được thực hiện bằng một tóan tử: -> là phép toán lấy thành phần nội dung của pointer Ví dụ: 3. Cấu trúc đệ quy Người ta thường dùng cấu trúc đệ quy để chỉ các cấu trúc mà thành phần của nó lại có các pointer chỉ đến một biến cấu trúc cùng kiểu. Hoặc II. Bài tập mẫu hướng dẫn thực hành. Bài 1: Khai báo cấu trúc CongNhan lưu trữ thông tin: (Lưu ý: Viết chương trình dạng hàm).  Ten  NamSinh  GioLam Nhập con trỏ struct gồm n công nhân, xuất con trỏ struct công nhân vừa nhập Hướng dẫn: Bước 1: Tạo một Project mới  đặt tên: PointerStruct_BaiTapMau1_<Tên sinh viên>, Ví dụ PointerStruct _BaiTapMau1_NguyenThiC Bước 2: Khai báo thêm các thư viện cơ bản cho chương trình. #include "stdafx.h" #include<stdio.h> #include<conio.h> #include <math.h> Bước 3: Khai báo struct CongNhan cho chương trình struct CongNhan
  • 80. 80 { char ten[50]; int namsinh; int giolam; }; . Bước 4: Viết các khai báo nguyên mẫu hàm cho chương trình như sau: void XuatCN(CongNhan *p, int n); void NhapCN(int &n, CongNhan *p); Bước 5: Viết hàm main để thực thi chương trình. void main() { struct CongNhan *p ;// Con trỏ mảng kiểu CongNhan CongNhan A[1000];// Mảng struct công nhân int N;// N công nhân biến kiểu nguyên p=A;// Gán mảng A cho con trỏ p NhapPointCN(N,p); XuatPointCN(p,N); _getch(); } Bước 6: Viết các định nghĩa hàm cần thiết cho chương trình như sau: void NhapCN(int &n, CongNhan *p) { do { printf("Cho biet so cong nhan: "); scanf_s("%d", &n); }while(n<=0); for(int i=0; i<n; i++) { printf("Thong tin cong nhan thu %d la:", i+1); printf("nTen la:"); fflush(stdin); gets_s((p+i)- >ten,100); printf("Nam Sinh:"); scanf_s("%d",&(p+i)->namsinh); printf("Gio lam:"); scanf_s("%d", &(p+i)->giolam); } } //==================================================================== void XuatCN(CongNhan *p, int n) { for(int i=0; i<n; i++) { printf("n===================================="); printf("nThong tin cong nhan thu %d la:", i+1); printf("nTen la: %s",(p+i)->ten);
  • 81. 81 printf("nNam Sinh la %d:",(p+i)->namsinh); printf("nGio lam %d:",(p+i)->giolam); } } //======================================================================= III. Bài tập ở lớp Sử dụng struct con trỏ viết chương trình quản lý một lớp học có tối đa 50 học sinh, mỗi học sinh được mô tả bằng các thông tin: mã số(int), họ và tên, phái, điểm học kỳ I, điểm học kỳ II. Hãy viết chương trình quản lý lớp học này với các thao tác sau:  Nhập danh sách lớp.  In ra danh sách lớp theo thứ tự mã số (gồm số thứ tự, họ vàtên).  In ra danh sách lớp theo thứ tự của họ vàtên.  Tìm vị trí của một học sinh theo khi nhập họ vàtên.  In ra danh sách các học sinh có điểm trung bình của năm học < 5.0  Thêm một học sinh vào danh sách  Xóa một học sinh trong danh sách. IV. Bài tập về nhà Sử dụng struct con trỏ viết chương trình nhập danh sách gồm N học viên gồm các thông tin như: Họ, tên, điểm c, điểm c#, sau đó tính điểm trung bình (điemTB) = (diemC*2 + diemC#)/3. Và xét kết quả đậu hay rớt theo qui ước sau : nếu điểm trung bình >= 5 thì kết quả đậu. Nếu điểm trung bình <5 thì kết qua rớt. Nếu điểm trung bình = 4 mà phái = "Nữ" thì kết quả là đậu.  In danh sách vừa nhập gồm họ tên, phái, điểm c, điểm c#, điểm TB, kết quả.  Sắp xếp giảm dần theo điểm trung bình và in ra.  Nhập vào tên cần tìm và tìm trong danh sách học viên nếu không tìm thấy thì in ra học viên có tên không tìm thấy. Nếu có nhiều học viên có cùng tên cần tìm thì hãy in ra người cuối cùng được tìm thấy. (*)  Yêu cầu như (*) nhưng in ra 2 người tìm thấy đầu tiên (nếu có nhiều người).  Yêu cầu như (*) nhưng in ra người đầu tiên và người cuối cùng (nếu có nhiều ngưòi).