Tài liệu học tập môn Thực tập lập trình cơ bản (Phần 2)

A. MỤC TIÊU

Trang bị cho sinh viên kỹ năng lập trình cơ bản trong C++:

+ Khai báo mảng

+ Các thao tác trên mảng

+ Viết chương trình sử dụng mảng 1 chiều

+ Phát hiện và sửa lỗi

B. NỘI DUNG

Mảng một chiều

a. Khai báo

Có các dạng sau:

Dạng 1: Khai báo mảng với số phần tử xác định

[số thành phần] ; //không khởi tạo

Dạng 2: Vừa khai báo vừa gán giá trị

[số thành phần] = { dãy giá trị } ; //có khởi tạo

Dạng 3: Khai báo mảng với số phần tử không xác định và gán giá trị

[ ] = { dãy giá trị } ; //có khởi tạo

b. Truy xuất các phần tử của mảng

Các phần tử mảng được đánh số thứ tự bắt đầu từ 0, số thứ tự này gọi là chỉ số

mảng. Các phần tử mảng có thể được truy xuất như sau:

[chỉ số]

C. YÊU CẦ U PHẦ N CỨNG, PHẦ N MỀM

Máy tính cài hệ điều hành Windows, RAM tối thiểu 256MB.

Phần mềm C FREE 5.0.

D. KẾT QUẢ SAU KHI HOÀN THÀNH

Sinh viên thành thạo cách khai báo và định nghĩa mảng một chiều, viết chương

trình sử dụng mảng một chiều áp dụng giải các bài tập từ đơn giản đến phức tạp.

E. HƯỚNG DẪN CHI TIẾT

1. Cho một mảng A gồm 100 phần tử thuộc kiểu thực, hãy xây dựng hàm viết chương

trình nhập mảng và xuất mảng

Tài liệu học tập môn Thực tập lập trình cơ bản (Phần 2) trang 1

Trang 1

Tài liệu học tập môn Thực tập lập trình cơ bản (Phần 2) trang 2

Trang 2

Tài liệu học tập môn Thực tập lập trình cơ bản (Phần 2) trang 3

Trang 3

Tài liệu học tập môn Thực tập lập trình cơ bản (Phần 2) trang 4

Trang 4

Tài liệu học tập môn Thực tập lập trình cơ bản (Phần 2) trang 5

Trang 5

Tài liệu học tập môn Thực tập lập trình cơ bản (Phần 2) trang 6

Trang 6

Tài liệu học tập môn Thực tập lập trình cơ bản (Phần 2) trang 7

Trang 7

Tài liệu học tập môn Thực tập lập trình cơ bản (Phần 2) trang 8

Trang 8

Tài liệu học tập môn Thực tập lập trình cơ bản (Phần 2) trang 9

Trang 9

Tài liệu học tập môn Thực tập lập trình cơ bản (Phần 2) trang 10

Trang 10

Tải về để xem bản đầy đủ

pdf 106 trang xuanhieu 6180
Bạn đang xem 10 trang mẫu của tài liệu "Tài liệu học tập môn Thực tập lập trình cơ bản (Phần 2)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Tài liệu học tập môn Thực tập lập trình cơ bản (Phần 2)

Tài liệu học tập môn Thực tập lập trình cơ bản (Phần 2)
\nDa nhap xong!"; 
 system("pause"); 
 } 
 break; 
 case 2: 
 { 
 system("cls"); 
 cout<<"\n\t\tDanh Sach sinh vien\n"; 
 cout<<setw(15)<<"Ten SV"<<setw(15)<<"Diem 
Toan"<<setw(15)<<"Diem Ly"<<setw(15)<<"Diem Hoa"<<endl; 
 for(int i=0;i<index;i++) 
 { 
 Xuat(Arr[i]); 
 } 
 system("pause"); 
 } 
 break; 
 case 3: 
 { 
 system("cls"); 
 if(KiemTra(Arr,index)) 
 { 
 cout<<"\nDanh sach sinh vien phai thi lai la:\n"; 
 cout<<setw(15)<<"Ten SV"<<setw(15)<<"Diem 
Toan"<<setw(15)<<"Diem Ly"<<setw(15)<<"Diem Hoa"<<endl; 
 for(int i=0;i<index;i++) 
 { 
 if(Arr[i].DiemHoa<5||Arr[i].DiemToan<5||Arr[i].DiemLy<5) 
 { 
 Xuat(Arr[i]); 
 } 
 } 
166 
 } 
 else 
 cout<<"\nKhong co sinh vien nao phai thi lai."; 
 system("pause"); 
 } 
 break; 
 default: 
 break; 
 } 
 } 
 while(x!=4); 
} 
int main() 
{ 
 MENU(); 
 system("pause"); 
 return 0; 
} 
Kết quả chạy chương trình: 
F. BÀI TẬP THỰC HÀNH TRÊN PHÒNG MÁY 
1. Viết chương trình thực hiện phân tích thống kê một lớp học khoảng 20 sinh viên. 
Thông tin của mỗi sinh viên bao gồm ID, tên, tuổi, điểm tổng kết học kì 1, điểm tổng 
kết học kì 2. Những thông tin cần thống kê bao gồm: 
Điểm trung bình cuối năm của cả lớp. 
Điểm tổng kết cuối năm của sinh viên nào là cao nhất. 
167 
Liệt kê danh sách những sinh viên có tiến bộ trong học tập (điểm tổng kết học kì 2 cao 
hơn điểm tổng kết học kì 1). 
2. Viết chương trình tạo struct công nhân gồm các trường: họ tên, năm sinh và giờ 
làm. 
- Nhập một số n, tạo và nhập một mảng n công nhân. 
- Liệt kê tên các 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 > 40 giờ. 
3. Để quản lý các hộ dân của một phường, người ta lưu trữ các thông tin sau: mã hộ, 
tên chủ hộ, số thành viên, mức thu nhập. Viết chương trình thực hiện các công việc 
sau: 
- Khai báo dữ liệu kiểu cấu trúc lưu trữ thông tin cho một hộ dân. 
- Nhập vào từ bàn phím một danh sách các hộ dân 
- Hiển thị thông tin những hộ dân có số thành viên lớn hơn 5 (với đầy đủ thông 
tin, dưới dạng bảng). 
4. Cho một danh sách n sinh viên. Thông tin về mỗi sinh viên gồm: mã sv, họ tên, 
năm sinh, điểm trung bình. Viết chương trình thực hiện các công việc sau: 
- Khai báo dữ liệu kiểu cấu trúc lưu trữ thông tin cho một sinh viên. 
- Nhập vào từ bàn phím một danh sách sinh viên. 
- Sắp xếp danh sách sinh viên theo thứ tự giảm dần của tuổi, in ra danh sách 
sau khi đã sắp xếp (với đầy đủ thông tin dưới dạng bảng). 
5. Để quản lý hàng hóa, mỗi một mặt hàng được lưu trữ các thông tin: mã hàng, tên 
hàng, số lượng, đơn giá. Hãy lập chương trình thực hiện các yêu cầu sau: 
- Khai báo kiểu dữ liệu cấu trúc lưu trữ thông tin cho một mặt hàng 
- Nhập vào từ bàn phím một danh sách n mặt hàng 
- Hiển thị thông tin những mặt hàng có đơn giá lớn hơn 40000. 
6. Viết chương trình khai báo kiểu dữ liệu để biểu diễn một điểm trong hệ tọa độ Oxy. 
Hãy viết hàm thực hiện các công việc sau: 
- Tìm những điểm đối xứng của nó qua tung độ, hoành độ, toạ độ tâm. 
- Hãy tính tổng, hiệu, tích của hai điểm trong mặt phẳng toạ độ 0xy. 
7. Viết chương trình khai báo kiểu dữ liệu để biểu diễn một phân số. Hãy viết hàm 
thực hiện những công việc sau: 
- Rút gọn phân số. 
- So sánh hai phân số. 
168 
8. Để quản lý nhân viên của một cơ quan, người ta lưu trữ các thông tin: mã nhân 
viên, tên nhân viên, hệ số lương, phụ cấp, tổng lương. Hãy lập chương trình thực hiện 
các yêu cầu sau: 
- Khai báo kiểu dữ liệu cấu trúc lưu trữ thông tin cho một nhân viên 
- Nhập vào từ bàn phím một danh sách n nhân viên 
- Tính tổng lương cho các nhân viên biết: 
 Tổng lương = hệ số lương*14900 + phụ cấp. 
9. Để quản lý các mặt hàng của một siêu thị, mỗi một mặt hàng được lưu trữ các thông 
tin: mã hàng, tên hàng, số lượng, đơn giá, thành tiền. Hãy lập chương trình thực hiện 
các yêu cầu sau: 
- Khai báo kiểu dữ liệu cấu trúc lưu trữ thông tin cho một mặt hàng. 
- Nhập vào từ bàn phím một danh sách n mặt hàng. 
- Tính thành tiền cho các mặt hang biết: thành tiền = số lượng * đơn giá. 
10. Để quản lý sách trong thư viện, mỗi cuốn sách được lưu trữ các thông tin: mã 
sách, tên sách, số trang, tên tác giả, năm xuất bản. Hãy lập trình thực hiện các yêu cầu 
sau: 
- Khai báo kiểu dữ liệu cấu trúc (struct) lưu trữ thông tin cho một cuốn sách. 
- Nhập vào từ bàn phím một danh sách n cuốn sách. 
- Hiển thị thông tin những cuốn sách có Tên tác giả là “Nguyễn Văn Anh” (với 
đầy đủ thông). 
169 
LAB 12: LẬP TRÌNH VỚI BIẾN TỆP (1,2) 
A. MỤC TIÊU 
Trang bị cho sinh viên ky ̃năng lập trình cơ bản trong C++: 
+ Đọc tệp văn bản 
+ Ghi tệp văn bản 
+ Đọc tệp nhị phân 
+ Ghi tệp nhị phân 
+ Viết chương trình sử dụng tệp 
+ Phát hiện và sửa lỗi 
B. NỘI DUNG 
Các kiến thức cơ bản 
Mở một File: Đối tượng ofstream hoặc đối tượng fstream có thể được sử dụng 
để mở một file. 
Cú pháp hàm open(): 
void open(const char *ten_file, ios::che_do); 
Đóng một File: 
void close(); 
Con trỏ vị trí File:cả hai đối tượng istream và ostream đều cung cấp các hàm 
thành viên để xác định lại vị trí của con trỏ vị trí file (file-position pointer). 
Các hàm thành viên này là seekg (viết tắt của seek get) cho istream và seekp 
(viết tắt của seek put) cho ostream. 
Hàm đọc file nhị phân là hai hàm read và write của hai lớp ostream và istream. 
write (memory_block, size) 
read (memory_block, size) 
C. YÊU CẦU PHẦN CỨNG, PHẦN MỀM 
Máy tính cài hệ điều hànhWindows, RAM tối thiểu 256MB. 
Phần mềm C FREE 5.0. 
D. KẾT QUẢ SAU KHI HOÀN THÀNH 
Sinh viên thành thạo cách khai báo và định nghĩa dữ liệu kiểu tệp, viết chương 
trình sử dụng dữ liệu kiểu tệp, áp dụng giải các bài tập từ đơn giản đến phức tạp. 
E. HƯỚNG DẪN CHI TIẾT 
1. Viết chương trình đọc một dãy số từ bàn phím và ghi lên file. File được xem như 
file văn bản (ngầm định), các số được ghi cách nhau 1 dấu cách. 
170 
Hướng dẫn: 
#include 
#include 
#include 
int main() 
{ 
ofstream f; // khai báo (tạo đối tượng f) 
int x; 
f.open("DAYSO"); // mở file DAYSO và gán với f) 
for (int i = 1; i<=10; i++) 
{ 
cin >> x; 
f << x << ' '; 
} 
f.close(); 
} 
Kết quả chạy chương trình: 
2. Viết chương trình mở một file trong chế độ đọc và ghi. Sau khi ghi thông tin được 
nhập vào bởi người sử dụng tới file my_documnet.dat, chương trình đọc thông tin từ 
file đó và tạo kết quả đầu ra trên màn hình. 
Hướng dẫn: 
#include 
#include 
using namespace std; 
int main() 
{ 
 char data[100]; 
 ofstream outfile; 
 outfile.open("my_documnet.dat"); 
171 
 cout << "Ghi du lieu toi file!" << endl; 
 cout << "Nhap ten cua ban: "; 
 cin.getline(data, 100); 
 // ghi du lieu da nhap vao trong file. 
 outfile << data << endl; 
 cout << "Nhap tuoi cua ban: "; 
 cin >> data; 
 cin.ignore(); 
 outfile << data << endl; 
 cout << "Nhap ten lop: "; 
 cin.getline(data, 100); 
 // dong file da mo. 
 outfile.close(); 
 // mo mot file trong che do read. 
 ifstream infile; 
 infile.open("my_documnet.dat "); 
 cout << "\n===========================\n" ; 
 cout << "Doc du lieu co trong file!" << endl; 
 infile >> data; 
 // ghi du lieu tren man hinh. 
 cout << data << endl; 
 // tiep tuc doc va hien thi du lieu. 
 infile >> data; 
 cout << data << endl; 
 // dong file da mo. 
 infile.close(); 
 return 0; 
} 
Kết quả chạy chương trình: 
172 
3. Viết chương trình kiểm tra sự tồn tại của 1 file. 
 (Ví dụ minh họa kiểm tra file lập trình về số hoàn hảo và sắp xếp dãy số theo thứ tự 
tăng dần) 
Hướng dẫn: 
#include 
#include 
#include 
using namespace std; 
bool CheckFileExisting() 
{ 
 bool is_exist = true; 
 fstream data_file; 
 data_file.open("value.txt", ios::in); 
 bool ret = data_file.fail(); 
 if (ret == true) 
 { 
 is_exist = false; 
 } 
 data_file.close(); 
 return is_exist; 
} 
Kết quả chạy chương trình: 
4. Viết chương trình ghi data vào 1 file. (Nếu file chưa có thì sẽ thực hiện tạo file). 
Hướng dẫn: 
#include 
#include 
#include 
173 
using namespace std; 
void GhiFile(char* file_name) 
{ 
 if (file_name != NULL) 
 { 
 fstream data_file; 
 data_file.open(file_name, ios::out); 
 data_file << "Bai 11 \n"; 
 data_file << "Su dung cau truc mang 2 chieu! \n"; 
 data_file.close(); 
 } 
} 
int main() 
{ 
 GhiFile("value.txt"); 
 return 0; 
} 
Kết quả chạy chương trình: 
5. Viết chương trình đọc file sử dụng hàm get. 
Hướng dẫn: 
#include 
#include 
#include 
using namespace std; 
void DocFileOpen(char* fileName) 
{ 
 char ch; 
 char input[100]; 
174 
 fstream fsFile; 
 fsFile.open(fileName, ios::in); 
 if (fsFile == 0) 
 { 
 cout << "Cannot read file!"; 
 } 
 else 
 { 
 int i = 0; 
 while (!fsFile.eof()) 
 { 
 fsFile.get(ch); 
 input[i] = ch; 
 i++; 
 } 
 } 
 fsFile.close(); 
} 
int main() 
{ 
 DocFileOpen("my_docume1.txt"); 
 return 0; 
} 
Kết quả chạy chương trình: 
6. Viết chương trình đọc file sử dụng hàm getline. 
#include 
#include 
#include 
using namespace std; 
void ReadFile(char* fileName) 
175 
{ 
 char input[100]; 
 fstream fsFile; 
 fsFile.open(fileName, ios::in); 
 if (fsFile == 0) //hoac dùng if (!fsFile.is_open()) 
 { 
 cout << "Cannot read file!"; 
 } 
 else 
 { 
 while (!fsFile.eof()) 
 { 
 fsFile.getline(input, 100); 
 cout << input; 
 } 
 } 
 fsFile.close(); 
} 
int main() 
{ 
 ReadFile("demo.txt"); 
 return 0; 
 } 
Kết quả chạy chương trình: 
7. Viết chương trình đọc một khối lượng dữ liệu file sử dụng hàm seekg. 
#include 
#include 
#include 
using namespace std; 
int main() 
176 
{ 
 long begin = 0; 
 long end = 0; 
 ifstream my_file ("sample.txt"); 
 begin = my_file.tellg(); 
 my_file.seekg(0, ios::end); 
 end = my_file.tellg(); 
 long size = end - begin; 
 cout << "size of file is: " << size << "byte"; 
 my_file.close(); 
 return 0; 
} 
Kết quả chạy chương trình: 
8. Ví dụ chương trình đọc file nhị phân 
Hướng dẫn: 
std::ifstream file (“MyFile.STL”, std::ios::in|std::ios::binary|std::ios::ate); 
if (file.is_open()) 
{ 
 size = file.tellg(); 
 memblock = new char [size]; 
 file.seekg (0, std::ios::beg); 
 file.read (memblock, size); 
 file.close(); 
} 
Trong ví dụ trên, std::ios::ate đã đưa con trỏ file về vị trí cuối cùng của file. Do đó 
size = vị trí byte cuối cùng file. Memblock được lấy dữ liệu ra từ file sau khi đã cấp 
phát tương ứng số byte. 
9. Viết chương trình nhập và in danh sách sinh viên đồng thời ghi/đọc. 
Hướng dẫn: 
#include 
#include 
177 
#include 
#include 
#include 
#include 
#include 
int main() 
{ 
int stt ; 
char *hoten, *fname, traloi; 
int tuoi; 
float diem; 
fstream f; 
cout > fname; 
f.open(fname, ios::in | ios::out | ios::noreplace) ; 
if (f.bad()) { 
cout << "Tep co. Ghi de (C/K)?" ; 
cin.get(traloi) ; 
if (toupper(traloi) == 'C') { 
f.close() ; 
f.open(fname, ios::in | ios::out | ios::trunc) ; 
} else exit(1); 
} 
stt = 0; 
f << setprecision(1) << setiosflags(ios::showpoint) ; 
// nhap danh sách 
while (1) { 
stt++; 
cout << "\nNhap sinh vien thu " << stt ; 
cout << "\nHo ten: "; cin.ignore() ; cin.getline(hoten, 25); 
if (hoten[0] = 0) break; 
cout > tuoi; 
cout > diem; 
f << setw(24) << hoten << endl; 
178 
f << setw(4) << tuoi << set(8) << diem ; 
} 
// in danh sách 
f.seekg(0) ; // quay ve dau ds 
stt = 0; 
clrscr(); 
cout << "Danh sach sinh vien da nhap\n" ; 
cout << setprecision(1) << setiosflags(ios::showpoint) ; 
while (1) { 
f.getline(hoten,25); 
if (f.eof()) break; 
stt++; 
f >> tuoi >> diem; 
f.ignore(); 
cout << "\nSinh vien thu " << stt ; 
cout << "\nHo ten: " << hoten; 
cout << "\nTuoi: " << setw(4) << tuoi; 
cout << "\nÐiem: " << setw(8) << diem; 
} 
f.close(); 
getch(); 
} 
10. Viết chương trình ghi file các số chẵn và số lẻ từ 0 -> 100. 
Hướng dẫn: 
#include 
#include 
#include 
using namespace std; 
void ghiSoChan(ofstream &GhiSo) 
{ 
 int dem = 0; 
 GhiSo 100 \n"; 
179 
 for(int a = 1; a <= 100; a++) 
 { 
 if(a%2 == 0) 
 { 
 dem ++; 
 GhiSo<<a; 
 if(dem % 5 == 0) 
 { 
 GhiSo<<"\n"; 
 } 
 if(dem % 5 != 0) 
 { 
 GhiSo<<"\t"; 
 } 
 } 
 } 
 cout<<"\n So Chan: "<<dem; 
} 
void ghiSoLe(ofstream &GhiSo) 
{ 
 int dem = 0; 
 GhiSo 100 \n"; 
 for(int i = 1; i <= 100; i++) 
 { 
 if(i%2 != 0) 
 { 
 dem ++; 
 GhiSo<<i; 
 if(dem % 5 == 0) 
 { 
 GhiSo<<"\n"; 
 } 
 if(dem % 5 != 0) 
180 
 { 
 GhiSo<<"\t"; 
 } 
 } 
 } 
 cout<<"\n So Le: "<<dem; 
} 
int main() 
{ 
 ofstream GhiSo("Ghi So Chan Le.txt"); 
 ghiSoChan(GhiSo); 
 ghiSoLe(GhiSo); 
 GhiSo<<"\n; 
 GhiSo.close(); 
 system("pause"); 
 return 0; 
} 
F. BÀI TẬP THỰC HÀNH TRÊN PHÒNG MÁY 
1. Viết chương trình đọc in từng kí tự của file văn bản ra màn hình. 
2. Viết chương trình tạo tập tin văn bản chứa 1 dãy số nguyên bất kỳ. 
3. Viết chương trình tạo tập tin nhị phân chứa 1000 số nguyên bất kỳ ghi vào file 
SO.INP. Mỗi dòng 10 số, sau đó viết chương trình đọc file SO.INP, sắp xếp theo thứ 
tự tăng dần và lưu kết quả vào file SO.OUT. 
4. Viết chương trình tạo một file chứa 10000 số nguyên ngẫu nhiên đôi một khác nhau 
trong phạm vi từ 1 đến 32767 và đặt tên là SO1.INP. 
5. Tổ chức quản lý file sinh viên (Họ tên, ngày sinh, giới tính, điểm) với các chức 
năng: nhập, xem, xóa, sửa, tính điểm trung bình chung. 
6. Thông tin về một nhân viên trong cơ quan bao gồm: họ và tên, nghề nghiệp, số điện 
thoại, địa chỉ nhà riêng. Viết hàm nhập từ bàn phím thông tin của 7 nhân viên và ghi 
vào file INPUT.DAT. Viết hàm tìm trong file INPUT.DAT và in ra thông tin của 1 
nhân viên theo số điện thoại được nhập từ bàn phím. 
181 
TÀI LIỆU THAM KHẢO 
[1]. PGS.TS. Trần Đình Quế và KS. Nguyễn Mạnh Hùng, Ngôn ngữ lập trình 
C++, Học viện bưu chính viễn thông, năm 2006. 
[2]. Phạm Hồng Thái, Bài giảng ngôn ngữ lập trình C/C++, Đại học quốc gia Hà 
nội, Khoa Công nghệ Thông tin , Hà Nội – 2003. 
[3]. David Vandevoorde, Nicolai M. Josuttis and Douglas Gregor, “C++ 
Templates: The Complete Guide 2nd Edition”, Addison-Wesley 
Professional; 2 edition, September 18, 2017. 
[4]. Joel Adams & Larry Nyhoff, “C++ An Introduction to Computing”, Prentice 
Hall 2002, Third Edition. 
[5]. Paul J. Deitel and Harvey Deitel , “C++ How to Program10th Edition”, 
Pearson; 10 edition (March 10, 2016). 
[6]. Joel Adams and Larry Nyhoff, “C++: An Introduction to Computing”, 
Prentice Hall Companion Website, 2005. 

File đính kèm:

  • pdftai_lieu_hoc_tap_mon_thuc_tap_lap_trinh_co_ban_phan_2.pdf