1. Trang chủ
  2. » Công Nghệ Thông Tin

Ngôn ngữ cc++ và kỹ thuật lập trình cơ sở

262 7 0

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 262
Dung lượng 4,98 MB

Nội dung

L A P T R iN H C O s V O IN G Ồ N N G Ữ C /C + + V A W| - NHÀ XUẤT BẢN KHOA HỌC VÀ KỸ THUẬT DƯƠNG THẢNG LONG (CHỦ BIÊN) TRƯƠNG TIÉN TÙNG KỸ THUẬT LẬP TRÌNH VỐI NGỔN NGỮ C/C++ c v V~T~1 NHÀ XUẤT BẢN KHOA HỌC VÀ KỸ THUẬT s Chịu trách nhiệm xuất GIÁM ĐỐC - TỔNG BIÊN TẬP PHẠM NGỌC KHÔI Biên tập sửa in: TS NGUYEN h u y t i ế n Họa sỹ bìa : XUÂN DŨNG NHÀ XUẤT BẢN KHOA HỌC VÀ KỸ THUẬT 70 Trần Hưng Đạo - Hoàn Kiếm - Hà Nội ĐT: 04 3942 2443 Fax: 04 3822 0658 Website: http://www.nxbkhkt.com.vn Email: nxbkhkt@hn.vnn.vn CHI NHÁNH NHÀ XUẤT ÉvÍN KHOA HỌC VÀ KỸ THUẬT 28 Đồng KHqri?-*Quận - TP Hồ Chí Minh Ể >t:t8 3822 5062 ’ ' f In 300 bản, khổ 16 X 24cm, Xí nghiệp In NXB Văn hóa Dân tộc Địa chỉ: 128C/22 Đại La, Hà Nội SỐĐKXB: 1455 - 2014/CXB/l - 93/KHKT Quyết định XB số: 245/QĐXB - NXBKHKT, ngày 30/12/2014 ISBN: 978-604-67-0312-9 In xong nộp lưu chiểu Quý I năm 2015 LỜI NÓI ĐẦU Để đáp ứng nhu cầu đào tạo kỹ sư tin học ngành Công nghệ thông tin Tin học trường đại học, tăng cường thêm lựa chọn cho người học tiếp cận đa dạng đến vấn đề sở ngành, biên soạn sách “K ỹ thuật lập trình sở với ngơn ngữ C /C + + ” Tài liệu mong muốn cung cấp kiến thức sở lập trình nói chung kỹ thuật xử lý ngơn ngữ C/C++ nói riêng, qua nhàm giúp sinh viên có thêm tài liệu học tập, tham khảo đặc biệt kỹ thực hành giải tập lập trình Nội dung tài liệu gồm 06 chương, xếp theo trật tự logic từ đon giản đến phức, đảm bảo tính hệ thống liên thông từ đầu đến cuối Chương trình bày khái niệm lập trình, ngơn ngữ lập trình vấn đề liên quan đến lập trình giải thuật, độ phức tạp giải thuật Chương giới thiệu ngôn ngữ lập trình C/C++ gồm khái niệm thành phân cân có ngơn ngữ lập trình tập ký tự, tên, từ khóa, kiểu liệu, tốn tử, cấu trúc chương trình, câu lệnh, khối lệnh, Chương trình bày cấu trúc lệnh điều khiển lập trình bao gồm tuần tự, rẽ nhánh lặp Chúng thể lệnh if, switch, for, while, Chương trình bày lập trình cấu trúc Trong gồm khái niệm liên quan, phương pháp xây dựng chương trình theo mô-đun (dưới dạng hàm), vấn đề liên quan đến hàm vấn đề trao đổi liệu hàm, kỹ thuật hàm đệ quy, hàm nạp chồng, hàm m ẫu, KỸ THUẬT LẬP TRÌNH c SỞ VỚI NGĨN NGỮ C/C++ Chương trình bày phương pháp tổ chức liệu theo mảng, tốn thuật tốn liên quan đến mảng Trong bao gồm mảng chiều, mảng hai chiều, mảng biểu diễn xâu ký tự cách xử lý, đặc biệt phương pháp khai thác sử dụng chế nhớ động với trỏ Chương trình bày phương pháp tổ chức liệu theo gói (hay cấu trúc - struct), phương pháp tổ chức liệu dạng danh sách, dạng đổi với cấu trúc liệu vấn đề liên quan Cũng chương này, phần cuối cung cấp phương pháp xử lý vào/ra tệp tin phục vụ cho việc lưu liệu nhớ (ổ đĩa) Mỗi chương chia làm ba phần: phần thứ trình bày lý thuyết vấn đề, vấn đề có ví dụ minh họa, giải thích chi tiết hoặc/và hình vẽ minh họa trực quan giúp cho người đọc dễ tiếp nhận Phần thứ hai gồm tập có hướng dẫn thực lời giải theo hướng dẫn phần thứ ba tập chưa có lời giải Các ví dụ mẫu giải tập viết ngôn ngữ C/C++ chạy thử cho kết môi trường Dev-C++ Hướng dẫn: Bạn đọc nên đọc phần lý thuyết trước chương xem ví dụ minh họa, tìm hiểu tập nêu phương pháp giải để nắm rõ việc vận dụng phần lý thuyết vào toán cụ thể Cuối bạn tự làm tập yêu cầu để nâng cao kỹ lập trình giải tốn bàng máy tính Nhóm tác giả mong nhận đóng góp để hồn thiện cho tài liệu qua địa email: duongthanglong@ gm ail.com Hà Nội ngày 19 thảng 05 năm 2014 Nhóm tác giả Chương TỔNG QUAN VỀ KỸ THUẬT LẬP TRÌNH 1.1 Lập trình ngơn ngữ lập trình 1.1.1 Khái niệm lập trình Thuật ngữ lập trình (programming) nhằm nói đến q trình xây dựng - sản xuất chương trình phần mềm cho máy tính, qua chương trình phần thực thi máy tính, ứng dụng để giải toán thực tế Khái niệm toán hiểu theo nghĩa rộng, tức vấn đề thực tế mà người cần ứng dụng máy tính để giải Q trình gồm nhiều giai đoạn khảo sát, phân tích thiết kế, mã hóa chương trình, kiểm thử chương trình, bảo trì nâng cấp, (xem hình vẽ sau) Các giai đoạn q trình xây dựng chương trình phần mềm sau \ Khảo I sát Mã hóa Phân tích & chương trình thiêt kê Kiểm tra Chương trình phần mềm Giai đoạn khảo sát nhàm làm rõ yêu cầu toán, giới hạn hay xác định phạm vi toán cần giải quyết, phân tích u cầu tốn thật chi tiết quy trình nghiệp vụ, cách thức xử lý vấn đề có phạm vi tốn để từ thiết kế KỸ THUẬT LẠP TRÌNH c s VỚI NGƠN NGỮ C/C++ thành phần cho chương trình phần mềm Giai đoạn mã hóa chương trình (hay coding) giai đoạn quan trọng, đó, thiết kế phần mềm chuyển hóa thành nội dung thành phần chương trình máy tính Người thực giai đồn hay gọi lập trình viên (programmer) Như vậy, kết lập trình chương trình phần mềm (software), chương trình thực máy tính qua giúp người giải toán đặt ban đầu Chúng ta khơng sâu tìm hiểu chi tiết giai đoạn Trong khuôn khổ tài liệu này, đề cập đến giai đoạn mã hóa chương trình hay gọi viết mã lệnh Giai đoạn thực dựa phân tích thiết kế chương trình Các thiết kế chương trình gồm nhiều thành phần khác việc phân chia rtìơ-đun xử lý, giao diện người dùng chương trình quan trọng quy trình xử lý tính tốn cho vấn đề tốn máy tính, hay cịn gọi thuật tốn Phần thuật tốn cho thấy cấu trúc trình tự mà người lập trình viết mã lệnh cho chương trình Khái niệm vấn đề thuật tốn trình bày phần sau Thực tiễn đặt nhiều toán cho việc xây dựng chương trình phần mềm ứng dụng Có số tốn giải sức lao động người, nhiên có tốn khơng thể giải khối lượng tính tốn khổng lồ diễn môi trường đặc biệt Chẳng hạn, tốn giải phương trình bậc hai đơn giản tính tốn thời gian ngắn, tốn phân tích số nguyên khoảng 50 chữ số thành thừa số ngun tố cần khối lượng tính tốn lớn người khơng dễ tính toán Hoặc toán điều khiển thiết bị rơ-bốt phóng vào vũ trụ rõ ràng người chưa thể tham gia điều khiển trực tiếp mà cần có tự động hóa việc điều khiển bàng máy tính Những điều cho thấy cần KỸ THUẬT LẬP TRÌNH c s VỚI NGƠN NGỮ C/C++ thiết đến việc ứng dụng máy tính thơng qua chương trình phầr mềm ứng dụng Mặt khác, với đặc trưng tính trung thực, khơng bị phụ thuộc vào điều kiện ngoại cảnh tính tốn xử lý nên việc ứng dụng máy tính giải toán giúp người hiệu cao vè đảm bảo tính ổn định hon 1.1.2 Ngơn ngữ lập trình Chương trình phần mềm máy tính tập hợp câu lệnh CC thứ tự để điều khiển máy tính xử lý tính tốn giải toán đ< đặt Các câu lệnh (hay cịn gọi mã lệnh) viết chươnị trình chất sử dụng ký hiệu 1, máy tính điện tì xử lý tín hiệu dạng nhị phân (tương ứng với trạng thá ON/OFF) Các lệnh biểu diễn dạng gọi mã máy Tuy nhiêi khó lập trình lệnh m ã máy mà sử dụng lệnh dạng tương tự ngôn ngữ tự nhiên (chi yếu tiếng Anh) để dễ dàng hơn, nhờ cung cấp củi ngơn ngữ lập trình Như vậy, ngơn ngữ lập trình hiểu tập ký pháp, qir tắc, quy ước để viết mã lệnh cho chương trình Hiện có nhiềi loại ngơn ngữ lập trình chia thành nhóm sau: - Ngơn ngữ máy: sử dụng ký hiệu nhị phân với quy tắ máy nên khó áp dụng khơng dùng để viể chương trình - Nhóm ngơn ngữ bậc thấp: sử dụng ký hiệu chữ cái, chi số, dấu hay gọi ký tự với quy tắc gần với quy tắ máy nên khó áp dụng Chẳng hạn, ngôn ng Assembler Các ngôn ngữ thuộc nhóm thường áp dụng để vi( chương trình phần mềm dạng hệ thống, can thiệp sâu bên cá thiết bị vật lý để điều khiển KỸ THUẬT LẬP TRÌNH c SỞ VỚI NGỐN NGỮ C/C++ - Nhóm ngơn ngữ bậc cao: sử dụng ký hiệu ký tự ngôn ngữ tự nhiên (tiếng Anh) để viết lệnh với quy tắc gần với quy tắc ngôn ngữ tự nhiên nên dễ áp dụng Chẳng hạn Pascal, C/C++, Java, Ngơn ngữ lập trình chất cung cấp cho người lập trình hai yếu tố thứ nhất, cung cấp ký hiệu quy tắc viết mã lệnh để cho đơn giản dễ triển khai; thứ hai, cung cấp chế để chương trình sau viết bàng ngôn ngữ chuyển dạng mã máy để thực máy tính Quá trình chuyển đổi gọi biên dịch (compile) chương trình Chương trình viết sử dụng ngơn ngữ lập trình gọi chương trình nguồn (source programs), sau biên dịch tạo thành chương trình gồm lệnh mã máy gọi chương trình thực thi (executive programs) Hình vẽ sau minh họa trình lập trình phần mềm biên dịch, chạy thử chương trình máy tính 1.2 Thuật tốn 1.2.1 Khái niệm thuật toán (algorithms) Thuật toán hệ thống chặt chẽ rõ ràng quy tắc nhằm xác định dãy có thứ tự thao tác đối tượng, cho KỸ THUẬT LẬP TRÌNH c SỞ VỚI NGƠN NGỮ C/C++ sau số hữu hạn bước thực thao tác này, ta thu kết mong muốn Thuật toán khái niệm tin học để diễn tả cách thức máy tính xử lý thơng tin nhằm giải tốn Vì để lập trình cho máy tính, trước hết, phải thiết kế thuật tốn thích hợp mà bước tính tốn thực máy tính Sự thích hợp thuật tốn thể đặc trưng cần có xem xét chi tiết phần Chẳng hạn, để thực tốn giải phương trình bậc hai dạng a.x2+b.x+c = cần phải thực theo thứ tự bước sau: Bước 1) Xác định hệ số phương trình ba số a, b c Bước 2) Kiểm tra, a trả lời khơng phải phương trình bậc hai kết thúc Ngược lại thực tiếp bước Bước 3) Tính giá trị delta = b2- 4a.c Bước 4) Nếu delta < trả lời phương trình khơng có nghiệm thực kết thúc Ngược lại sang bước Bước 5) Nếu delta = trả lời phương trình có nghiệm kép Xi = x2 = -b/(2.a) kết thúc Ngược lại sang bước Bước 6) Nếu delta > trả lời phương trình có hai nghiệm phân biệt X] = (-b+delta1/2)/(2.a) x2 = (-b-delta1/2)/(2.a) kết thúc Q trình thực tốn có bước, nội dung thực bước rõ ràng, xác đơn nghĩa Nếu đảo lộn trật tự bước dẫn đến sai, tức khơng giải tốn đặt Đây đặc điểm có tính thứ tự thao tác thuật Để tìm hiểu kỹ đặc trưng thuật toán, tiếp tục phần sau KỸ THUẬT LẬP TRÌNH c SỞ VỚI NGƠN NGỮ C/C++ b) đây: 247 Kiểm tra tam giác cho có tính chất tính chất * Tam giác * Tam giác vuông * Tam giác có góc tù > Bài tập 6.15 Để quản lý thông tin hộ sử dụng điện người ta lưu trữ thông tin sau: Họ tên chủ hộ, số cũ, số Hãy lập trình thực công việc sau: - Nhập thông tin hộ sử dụng điện, kết ghi vào mảng (tối đa 100 hộ) - Đưa hình danh sách hộ sử dụng điện nhập - Đưa danh sách hộ sử dụng điện hộ sử dụng điện nhiều - Đưa danh sách hộ cho hộ sử dụng nhiều điện đưa lên trước Chú ý: - Nội dung đưa bao gồm: Họ tên chủ hộ, số cũ, số mới, số kW tiêu thụ (số kw tiêu thụ = sổ - số cũ), số tiền mà hộ phải trả - Số tiền phải trả tính theo cơng thức: + từ k w thứ đến k w thứ 100 giá 500 đ /k w + từ k w thứ 101 trở lên giá 800 đ /k w > Bài tập 6.16 Lập chương trình kiểm tra xem file có tên đưa từ bàn phím có đĩa ổ chủ khơng? Nếu có cho biết độ dài Tổ chức chương trình hội thoại để thực nhiều lần ấn phím Esc 248 KỸ THUẬT LẠP TRÌNH c s l NGÒN NGỮ C/C++ #include #include cstdlib.h> #include int main() { char tenfile[80]; FILE * f l ; long filesize; printf("Go vao mot ten File ton tai: "); gets(tenfile); // Open the File if ((fl=fopen(tenfile,"r"))==NULL) { printf("File mo bi loi: % s",tenfile); exit(O); > //Hien thi file va kich thuoc cua no if ((filesize=filelength(fileno(fl)))!= -lL) printf("%d",filesize); else printf("loi doc File"); getch(); return 0; > > Bài tập 6.17 Nhập vào File dãy số nguyên ghi vào file TEXT file định kiểu (nhị phân) Hiện nội dung File hình Tính tổng số File /* Dùng file nhị phân * / #include #include #include FILE *fp; char tentep[80]; void nhap(char tentep[80]) { /*Mo File de doc*/ KỸ THUẬT LẶP TRỈNH c s VỚI NGỔN NGỪ C/C++ int i,tg; fp=fopen(tentep,"wb"); if (fp==NULL) { printf("Loi mo tep !, %s\n",tentep); exit(O); > 1= ; { printf("Nhap so thu % d:",i);scanf("% d",& tg); if (tg!=0) { fwrite(& tg,sizeof(int),l,fp); i+ + ; > else break; > while (tg!= 0); if (ferror(fp)) printf("Viet len File bi loi\n"); else printf("Viet len File cong\n"); fclose(fp); > void hien(char tentep[80]) { /*Mo File*/ int i,tg; fp=fopen(tentep,"rb"); if (fp-=NULL) < printf("Loi mo tep !.\n"); exit (0 ); > 249 250 KỸ THUẬT LẬP TRÌNH c SỞ VỜI NGÒN NGỪ C/C++ while (fread(& tg,sizeof(int),l,fp)>0) printf("%2d",tg); printf("\n"); fclose(fp); > int tinhtong(char tentep[80]) { /*Mo File de doc*/ int i,tong,tg; fp=fopen(tentep,"rb"); if (fp == NULL) { printf("loi mo tep % s\n"; tentep); e x it (l); > tong =0; while (fread(& tg,sizeof(int),l,fp)>0) tong=tong+tg; fclose(fp); return (tong); int maín() { clrscr(); fflush(stdin); printf("\Nhap ten tep can luu:");gets(tentep); nhap(tentep); hien(tentep); printf("\n Tong cac so file la %d",tinhtong(tentep)); getch(); return 0; > /* Dùng file text*/ #include #include KỸ THUẬT LẬP TRÌNH c SỞ VỚI NGƠN NGỮ C/C++ #indude FILE *fp; char tentep[80]; void nhap(char tentep[80]) { /*Mo File de doc*/ int i,tg; fp=fopen(tentep,"wt"); if (fp= = NULL) { printf("Loi mo tep !, %s\n",tentep); exit(O); > 1= ; < printf("Nhap so thu % d:",i);scanf("% d",& tg); If (tg!=0) { fprintf(fp,"%d\n",tg); i ++ ; > else break; > while (tg!= 0); if (ferror(fp)) printf("Viet len File bi loi\n"); else printf("Viet len File cong\n"); fclose(fp); > void hien(char tentep[80]) { /*Mo File*/ 251 252 K Y J’HUAT l ậ p t r ìn h c s v i n g ô n n g ữ int i,tg; fp=fopen(tentep,"rt"); if (fp==NULL) { printf("Loi mo tep !.\n"); exit (0 ); > while (fscanf(fp,"%d”,&tg)>0) printf("%5d",tg); printf("\n"); fclose(fp); > int tinhtong(char tentep[80]) { /*Mo File de doc*/ int i,tong,tg; fp=fopen(tentep,"rt"); if (fp == NULL) { printf("loi mo tep %s\n", tentep); e x it(l); > tong =0; while (fscanf(fp,"%d",&tg)>0) tong=tong+tg; fclose(fp); return (tong); } int main() { clrscr(); fflush(stdin); printf("\Nhap ten tep can luu:");gets(tentep); nhap(tentep); hien(tentep); printf("\nTong cac so file la: %d",tinhtong(tentep)); getch(); return 0; > C/C++ KỸ THUẬT LẬP TRÌNH c SỞ VỚI NGƠN NGỮ C/C++ > 253 Bài tập 6.18 a) Đọc từ bàn phím danh sách gồm họ tên, môn thi thứ nhất, điểm môn thi thứ nhất, môn thi thứ hai, điểm môn thi thứ hai b) Ghi vào đĩa mềm với tên file QLHT c) Đọc liệu từ file QLHT, tìm sinh viên phải thi lại (có môn không đạt) Đưa số thứ tự, họ tên, môn thi phải thi lại điểm tương ứng hình #include' #indude #include struct Phdiem { char char float char float hoten[25]; m h l[1 ]; d l; mh2[10]; d2; >; void nhap(char tentep[30]) { struct Phdiem hs; FILE * f l ; float d; int i,n; fl=fopen(tentep,"wb"); if ( f l = = NULL) { printf("\n I/O ERROR"); e x it (l); > printff'Nhap so luong hs:");scanf("% d",& n); 1=0; 254 KỸ THUẬT LẬP TRÌNH c SỞ VỚI NGĨN NGữ C/C++ { fflush(stdin); printf("\nHo ten:" ) ;gets(hs.hoten); fflush(stdin); printf("\nMon hoc l:");g e ts (h s m h l); printf("\nDiem mon l:");scan f("% f",& d );h s.d l= d ; fflush(stdin); printf(”\nMon hoc 2:");g ets(hs.m h2); printf("\nDiem mon 2:");scanf("% f",& d);hs.d2=d; fw rite(& hs,sizeo f(h s),l,fl); i+ + ; > while (i< n); fclo se (fl); > void hien(char tentep[30]) { struct Phdiem hs; FILE * f l ; float d; int i,n; fl=fopen(tentep,"rb"); if ( f l ==NULL) { printf("\n I/O ERROR"); e x it(l); > while (fread(& hs,sizeo f(hs),l,fl)= = l ) if (h s.d l< II hs.d2

Ngày đăng: 23/12/2023, 10:18

w