Giáo trình lập trình cơ bản với c++

146 3 0
Giáo trình lập trình cơ bản với c++

Đ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

Hồ Sĩ Đàm, Trần Thị Minh Châu, Lê Sỹ Vinh GIÁO TRÌNH LẬP TRÌNH CƠ BẢN VỚI C++ NXB Đại học Quốc gia M cl c Gi i thi u Ch ơng M u 1.1 Ch ơng trình gì? 1.2 L p trình gì? 1.2.1 M c cao c l p v i máy tính 1.2.2 M c th p ph thu c vào máy tính 10 1.3 Ngơn ng l p trình ch ơng trình d ch 10 1.4 Môi tr 1.5 L i tìm l i 13 1.6 L ch s C C++ .14 1.7 Ch ơng trình C++ ng l p trình b c cao 11 u tiên .15 Bài t p 19 Ch ơng 2.1 Bi n, ki u d li u phép toán 20 Ki u d li u 22 2.1.1 Ki u d li u b n 22 2.1.2 Ki u d li u d n xu t 24 2.2 Khai báo s d ng bi n 24 2.2.1 2.2.2 nh danh cách t tên bi n 24 Khai báo bi n .25 2.3 H ng .25 2.4 Các phép toán b n 26 2.4.1 Phép gán 26 2.4.2 Các phép toán s h c 26 2.4.3 Các phép toán quan h 27 2.4.4 Các phép tốn lơ-gic 28 2.4.5 u tiên c a phép toán 28 2.4.6 T ơng thích gi a ki u 29 Bài t p 30 Ch ơng Các c u trúc i u n 31 3.1 Lu ng i u n 31 3.2 Các c u trúc r nhánh .32 3.2.1 L nh if-else 32 3.2.2 L nh switch .38 3.3 Các c u trúc l p 42 3.3.1 Vòng while .42 3.3.2 Vòng do-while 45 3.3.3 Vòng for 48 3.4 Thu t toán c u trúc i u n l ng .50 3.5 Các l nh break continue 53 3.6 Bi u th c i u ki n c u trúc i u n 56 Bài t p 58 Ch ơng Hàm 59 4.1 C u trúc chung c a hàm 60 4.2 Cách s d ng hàm 62 4.3 Các hàm có s n .60 4.4 Bi n toàn c c bi n a ph ơng .63 4.4.1 Ph m vi c a bi n 63 4.4.2 Th i gian s ng c a bi n 65 4.5 Tham s , i s , ch truy n d li u cho hàm 66 4.5.1 Truy n giá tr 66 4.5.2 Truy n tham chi u 67 4.5.3 Tham s m c nh 70 4.6 Hàm trùng tên 72 4.7 Hàm quy 73 Bài t p 76 Ch ơng 5.1 M ng xâu kí t! .77 M ng m t chi u 77 5.1.1 Kh i t o m ng 78 5.1.2 Trách nhi m ki m sốt tính h"p l c a ch# s m ng 78 5.1.3 M ng làm tham s cho hàm 79 5.2 M ng nhi u chi u .81 5.3 Xâu kí t! 82 5.3.1 Kh i t o giá tr cho xâu kí t! 83 5.3.2 Th vi n x lý xâu kí t! .84 5.4 Tìm ki m s$p x p d li u m ng 84 5.4.1 Tìm ki m n tính 84 5.4.2 Tìm ki m nh phân .86 5.4.3 S$p x p ch n 87 Bài t p 89 Ch ơng Con tr% b nh .91 6.1 B nh máy tính .91 6.2 Bi n 6.3 Bi n tr% 92 6.4 M ng tr% 94 a ch# c a bi n 91 6.5 B nh ng .95 6.5.1 C p phát b nh 6.5.2 Gi i phóng b nh ng .96 ng .96 6.6 M ng ng tr% .97 6.7 Truy n tham s tr% 99 Bài t p .102 Ch ơng Các ki u d li u tr&u t "ng 104 7.1 nh ngh'a ki u d li u tr&u t "ng b ng c u trúc struct 104 7.2 nh ngh'a ki u d li u tr&u t "ng b ng c u trúc class .110 7.2.1 Quy n truy nh p .113 7.2.2 Toán t ph m vi 7.2.3 Hàm kh i t o hàm h y .115 nh ngh'a hàm thành viên 114 ng i t "ng 118 7.3 L"i ích c a l p trình h 7.4 Biên d ch riêng r 119 Bài t p .123 Ch ơng Vào d li u 125 8.1 Khái ni m dòng d li u 125 8.2 T p v(n b n t p nh phân 126 8.3 Vào t p .126 8.3.1 M t p 127 8.3.2 óng t p 128 8.3.3 X lý t p v(n b n .129 8.3.4 X lý t p nh phân 132 Bài t p .136 Ph l c A Phong cách l p trình 138 Ph l c B D ch ch ơng trình C++ b ng GNU C++ 142 Tài li u tham kh o 145 Gi i thi u L p trình m t nh ng b c quan tr ng nh t quy trình gi i quy t m t tốn Nhi u ngơn ng l p trình ã "c i nh m giúp gi i quy t toán m t cách hi u qu nh t M i ngơn ng l p trình có nh ng th m nh nh "c i m riêng Các ngơn ng l p trình có th chia thành hai lo i ngơn ng l p trình b c th p (g n g)i v i ngơn ng máy), ngơn ng l p trình b c cao (ng n g)i v i ngôn ng t! nhiên c a ng i) Giáo trình trang b cho sinh viên nh ng ki n th c b n v l p trình Ngơn ng l p trình C++ "c s d ng minh h a cho vi c l p trình Vi c l!a ch n C++ b i m t ngơn ng l p trình h ng i t "ng chuyên nghi p "c s d ng r ng rãi toàn th gi i phát tri n ch ơng trình t& ơn gi n n ph c t p Hơn th n a, s! m m d*o c a C++ cho phép gi i quy t nh ng tốn th!c t m t cách nhanh chóng, cho phép qu n lý t ơng tác tr!c ti p n h th ng, b nh nâng cao hi u qu c a ch ơng trình Giáo trình "c chia thành ch ơng, m i ch ơng trình bày m t v n lý thuy t l p trình Các v n lý thuy t "c mơ t b ng ví d th!c t K t thúc m i ch ơng ph n t p sinh viên gi i quy t n$m rõ v lý thuy t C u trúc c a giáo trình nh sau: • Ch ơng 1: gi i thi u khái ni m b n v l p trình quy trình gi i quy t m t tốn Sinh viên s hi u v ngôn ng l p trình b c cao ngơn ng l p trình b c th p Cu i ch ơng gi i thi u v môi tr ng l p trình c)ng nh ngơn ng l p trình C++ • Ch ơng 2: Chúng gi i thi u khái ni m b n v bi n s , h ng s , ki u d li u b n phép toán b n Sau h c, sinh viên s bi t cách khai báo s d ng bi n s , h ng s , phép toán bi n h ng s • Ch ơng 3: Tr ơng gi i thi u v c u trúc ch ơng trình c)ng nh c u trúc i u n C th c u r nhánh (if-else, switch), c u trúc l p (fordo, while-do, repeat) s "c gi i thi u • Ch ơng 4: Ch ơng trình hàm s "c gi i thi u sinh viên hi u "c chi n l "c l p trình “chia tr ” Chúng tơi s trình bày chi ti t v cách khai báo s d ng hàm, c)ng nh cách truy n tham s , truy n giá tr cho hàm • Ch ơng 5: Ch ơng trình bày c u trúc d li u ki u m ng xâu kí t! Cách khai báo s d ng m ng m t chi u c)ng nh m ng nhi u chi u ví d liên quan "c trình bày chi ti t ch ơng • Ch ơng 6: ây m t ch ơng t ơng i c thù cho C++, trình bày v b nh ki u d li u tr% C u trúc b nh , cách qu n lý xin c p phép b nh ng thông qua vi c s d ng bi n tr% s "c trình bày • Ch ơng 7: Trong ch ơng chúng tơi s trình bày v c u trúc d li u tr&u t "ng (c th struct class C++) Sinh viên s hi u bi t cách t o nh ng c u trúc d li u tr&u t "ng phù h"p v i ki u i t "ng d li u c n bi u di+n Cu i ch ơng, c)ng gi i thi u v l p trình h ng i t "ng, m t th m nh c a ngơn ng l p trình C++ • Ch ơng 8: Chúng tơi gi i thi u v cách vào d li u Sinh viên s gi i thi u chi ti t v cách làm vi c v i t p d li u "c Ch ơng M u Trong ch ơng này, s gi i thi u qua m t s khái ni m b n v : ch ơng trình, l p trình, ngơn ng l p trình 1.1 Ch ơng trình gì? B n ch$c ch$n ã dùng qua nhi u ch ơng trình khác nhau, ví d nh ch ơng trình so n th o v(n b n “Microsoft Word” Ch ơng trình, hay ph n m m, "c hi u ơn gi n m t t p l nh máy tính th!c hi n theo Khi b n a cho máy tính m t ch ơng trình u c u máy tính th!c hi n theo l nh c a ch ơng trình, b n ang ch y ch ơng trình ó 1.2 L p trình gì? L p trình có th hi u ơn gi n trình vi t l nh h ng d n máy tính th!c hi n gi i quy t m t toán c th ó L p trình m t b c quan tr ng quy trình gi i quy t m t tốn nh mơ t Hình 1.1 Hình 1.1: Quy trình gi i quy t m t tốn Quy trình có th "c chia thành hai m c: m c cao c l p v i máy tính (machine independent) m c th p ph thu c vào máy tính (machine specific) 1.2.1 M c cao M c cao nh v n c l p v i máy tính c l p v i máy tính th ng "c chia thành ba b , thi t k thu t tốn l p trình c là: xác Xác nh v n : B c nh ngh'a toán, xác nh d li u u vào, ràng bu c, yêu c u c n gi i quy t k t qu u B c th ng s d ng bút/gi y ngôn ng t! nhiên nh ti ng Anh, ti ng Vi t mô t xác nh v n c n gi i quy t Thi t k thu t toán: M t thu t toán m t b ch# d n nh m gi i quy t m t toán Các ch# d n c n "c di+n t m t cách hồn ch#nh xác cho m i ng i có th hi u ti n hành theo Thu t tốn th ng "c mơ t d i d ng mã gi (pseudocode) B c có th s d ng gi y bút th ng không ph thu c vào ngơn ng l p trình Ví d v thu t tốn “tìm c s chung l n nh t (UCLN) c a hai s x y” vi t b ng ngơn ng t! nhiên: • B c 1: N u x>y thay x b ng ph n d c a phép chia x/y • B c 2: N u không, thay y b ng ph n d c a phép chia y/x • B c 3: N u hai s x y có m t s b ng k t lu n UCLN s cịn l i • B c 4: N u không, quay l i B c ho c b ng mã gi : repeat if x > y then x := x mod y else y := y mod x until x = or y = if x = then UCLN := y else UCLN := x L p trình b c chuy n ,i thu t toán sang m t ngơn ng l p trình, ph, bi n ngơn ng l p trình b c cao, ví d nh ngôn ng C++, Java B c này, l p trình viên s d ng m t ch ơng trình so n th o v(n b n vi t ch ơng trình Trong sau trình l p trình, ng i ta ph i ti n hành ki m th s a l i ch ơng trình Có ba lo i l i th ng g p: l i cú pháp, l i th i gian ch y, l i lô-gic (xem chi ti t M c 1.5) d() tr v t e n u m t thao tác c ho c ghi b th t b i Ví d ta c vi t vào m t t p không "c m ghi ho c thi t b l u tr không ch tr ng ghi l() tr v t e nh ng tr ng h"p d() tr v t e có l i nh d ng, ch.ng h n nh ta ang nh c m t s nguyên nh ng l i g p ph i d li u ch e () tr v t e n u ch m " d() tr v l e n u x y tình hu ng mà m t hàm n u "c g i s tr v t e n cu i t p t l i c tr ng thái mà m t hàm thành viên ó ã ánh d u tr dùng hàm thành viên le c ó, ta Con tr' get put c a dòng i t "ng dịng vào có nh t m t tr% n i b Con tr% n i b c a t e hay t e "c g i tr' get hay tr' c Nó ch# t i v trí mà thao tác c ti p theo s "c th!c hi n t i ó Con tr% n i b c a t e hay t e "c g i tr' put hay tr' ghi Nó ch# t i v trí mà thao tác ghi ti p theo s "c th!c hi n t i ó Cu i cùng, t e có c tr% get tr% put M i nh v v trí hi n t i c a tr% get put, ta có hàm thành viên tell" tell Các hàm tr v m t giá tr thu c ki u _ty e, ki u d li u s nguyên bi u di+n v trí hi n t i (tính t& u t p) c a tr% get c a dòng (n u g i hàm tell") ho c tr% put c a dòng (n u g i hàm tell ) d tr% d d t l i v trí c a tr% get put, ta có hàm ee "( et2 et2 d e t n) có cơng d ng di chuy n e t n) ee ( get put t i v trí et Trong ó, et "c tính t& u t p n u e t n $$ e" (giá tr m c nh c a d e t n), t& cu i t p n u e t n $$end, t& v trí hi n t i n u direction $$ Hình 8.4 minh h a cách s d ng tr% get put m t t p v(n b n 131 tính kích th cc a n l de n l de n" n nt t e t e e e n () t e le (% l n" e" le ee l n" end le l t et D e td; ae e txt%); n = le.tell"(); " (02 $$end); = le.tell"(); e(); %D e ae % (end - e" n) % yte 'n%; n 0; ?5 yte Hình 8.4: Dùng tr dịng xác nh kích th c t p 8.3.4 X lý t p nh phân c ghi d li u v i t p nh phân, ta khơng th dùng tốn t hàm nh "etl ne d li u có nh d ng khác kí t! tr$ng khơng "c dùng tách gi a ph n t d li u Thay vào ó, ta dùng hai hàm thành viên "c thi t k riêng cho vi c c ghi d li u nh phân m t cách tu n t! w te e d Cách dùng nh sau: t n t_ t e t_ t e w te(memory_block2 size); e d(memory_block2 size); Trong ó memory_block thu c lo i "con tr% t i char" (char*), i di n cho a ch# c a m t m ng byte l u tr ph n t d li u c "c ho c ph n t c n "c ghi dòng Tham s size m t giá tr nguyên xác nh s kí t! c n c ho c ghi vào m ng ó Các ch ơng trình Hình 8.5, Hình 8.6 Hình 8.7 minh h a vi c ghi d li u ki u ng i dùng t! nh ngh'a t& t p nh phân 132 c nde SD`D.ND_H de ne SD`D.ND_H n l de n" n e t e e td; de ne TAb_NAT._M.NNDH 20 t t St dent n e [TAb_NAT._M.NNDH + 1]; l t e; St dent () n e[0] = 4'04; St dent ( n t *2 l t); d ntln() t n e %'t% e = 0; e endl; ; St dent$$St dent ( n t * n2 l t ) nt len"t = t len(n); (len"t TAb_NAT._M.NNDH) len"t = TAb_NAT._M.NNDH; t n y(n e2 n2 len"t ); n e[len"t ] = 4'04; t e end t e t n" e = ; end Hình 8.5: Ki u b n ghi ơn gi n Student 133 n l de n l de n l de t e t e t n" n l de % t dent % n" n nt e e td; t e y le (% ( y le n () _ e d t%2 $$ n y | $$ t); en()) St dent nne(% nne%2 10); St dent W l (%W l %2 =); St dent (% %2 3); el e et y y y le.w le.w le.w y le l t te(( te(( te(( *)(& nne)2 ae (St dent)); *)(&W l )2 ae (St dent)); *)(& )2 ae (St dent)); e(); % $ nn t en le%; n 0; Hình 8.6: Ghi d li u t p nh phân 134 n l de n l de n l de t e t e t n" n l de % t dent % n" n nt e e td; n () t e ( y y le w le (& le (% e d t%2 _ en()) y le.e $$ n y); () ) St dent t dent; y le e d(( *)(& t dent)2 ae ( t dent)); ( y le." d()) t dent ntln(); y el e et le l t e(); % & nn t en le%; n 0; Hình 8.7: c d li u t" t p nh phân 135 Bài t p Nh p vào t& bàn phím m t danh sách sinh viên M i sinh viên g m có thơng tin sau ây: tên tu,i, ngày tháng n(m sinh, nơi sinh, quê quán, l p, h c l!c (t& n 9) Hãy ghi thơng tin v danh sách sinh viên ó t p v(n b n student.txt Sau th!c hi n 1, vi t ch ơng trình nh p danh sách sinh viên t& t p v(n b n student.txt r i hi n th hình: • thông tin v t t c b n tên Vinh t p v(n b n vinh.txt • thông tin t t c b n quê Hà N i t p v(n b n hanoi.txt • T,ng s b n có h c l!c (

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