Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 36 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
36
Dung lượng
424,3 KB
Nội dung
Ch Ch −¬ −¬ ng ng 4 4 H H μ μ m v m v μ μ ph ph −¬ −¬ ng ph ng ph ¸ ¸ p p l l Ë Ë p tr p tr × × nh th nh th ñ ñ tôc tôc Bài ging C++. 14/10/2008 V.S.Nam. B/m KTHT, khoa CNTT, HXD 2 4.1 C++ v 4.1 C++ v à à phng ph phng ph á á p p l l Ë Ë p tr p tr × × nh th nh th ñ ñ tôc tôc 4.1.1 Tng quan v phng pháp lp trình th tc – Phng pháp lp trình tuyn tính (hay lp trình tun t): • Khi các ng dng tin hc còn đn gin, s dòng lnh phi vit ít å chng trình đc vit tun t. – Các câu lnh thc hin tun t t đu đn cui. • Khoa hc máy tính phát trin, phn mm ln và phc tp: – Phng pháp này không hiu qu. – Ngi lp trình có th không th kim soát đc chng trình. – Phng pháp lp trình th tc (hay lp trình cu trúc) • Khc phc nhc đim ca lp trình tun t bng cách t chc chng trình thành các chng trình con. • Các ngôn ng nh FoxPro, Pascal hay C/C++ đu cho phép trin khai phng pháp lp trình th tc. • T tng chung: cu trúc d liu + gii thut = chng trình! Bài ging C++. 14/10/2008 V.S.Nam. B/m KTHT, khoa CNTT, HXD 3 4.1 C++ v 4.1 C++ v à à phng ph phng ph á á p p l l Ë Ë p tr p tr × × nh th nh th ñ ñ tôc tôc 4.1.1 Tng quan v phng pháp lp trình th tc – Các khái nim chính trong lp trình th tc • Chng trình con – Là mt chng trình đc lp dùng đ thc hin mt phn vic nào đó (nhp s liu, in kt qu, thc hin mt s thao tác tính toán). – Chng trình con cn có đi, bin, mng… cc b dùng riêng – Vic trao đi d liu gia các chng trình con thc hin thông qua các đi và các bin toàn cc. • Cu trúc d liu và gii thut – Mt chng trình th tc bao gm các cu trúc d liu (nh bin, mng, cu trúc, …) và các hàm, th tc. – Trong PASCAL có 2 kiu chng trình con là th tc và hàm, còn trong C++ ch có mt loi chng trình con là hàm. • s dng đc thành tho C++ trong lp trình th tc å phi hiu rõ t tng lp trình th tc ! Bài ging C++. 14/10/2008 V.S.Nam. B/m KTHT, khoa CNTT, HXD 4 4.1 C++ v 4.1 C++ v à à phng ph phng ph á á p p l l Ë Ë p tr p tr × × nh th nh th ñ ñ tôc tôc 4.1.2 Lp trình th tc trong C++ – Nhc li v đc đim C++ • C: ngôn ng lp trình th tc. • C++: tha hng tt c đim mnh ca C. – Là ngôn ng bao trùm lên C å tha hng đy đ sc mnh ca C (ví d tính kh chuyn, tính mm do, ). • C++ có mt s ci tin å tng cng sc mnh cho C: – S khác nhau gia C trong C++ so vi ANSI C. – Thay đi, thêm mi å phù hp hn. • Nh vy, C++ là ngôn ng lai å cho phép c lp trình th tc và lp trình hng đi tng. – Các ngôn ng hin đi (nh Java, C#, …) ch cho phép lp trình hng đi tng (thun túy hng đi tng). Bài ging C++. 14/10/2008 V.S.Nam. B/m KTHT, khoa CNTT, HXD 5 4.1 C++ v 4.1 C++ v à à phng ph phng ph á á p p l l Ë Ë p tr p tr × × nh th nh th ñ ñ tôc tôc 4.1.2 Lp trình th tc trong C++ – C++ và lp trình th tc • C++ có mt s đim khác vi các ngôn ng khác (ví d Pascal) v mt cu trúc chng trình và biên dch mã ngun. • Cu trúc khi: – C++ xem các hàm là các thc th tách bit. – Mt s ngôn ng khác có th gp nhiu hàm đn gin thành hàm phc tp hn. – Vi cu trúc khi å chú ý đn tên bin và phm vi bin. • Dch tách bit: – B trí chng trình trong nhiu tp tin tách bit. – S dng tp tin tiêu đ å thun li cho vic thng nht chng trình, d dàng hiu chnh và bo trì chng trình. Bài ging C++. 14/10/2008 V.S.Nam. B/m KTHT, khoa CNTT, HXD 6 4.2 H 4.2 H µ µ m m 4.2.1 Khai báo và đnh ngha hàm – Cu trúc tng quát ca hàm: [kiu_giá_tr_tr_v] tên_hàm([danh_sách_tham_s]){ khai báo & lnh; } • VD: int max(int a, int b) { int tmp; tmp = (a > b) ? a : b; return tmp; } • Tr li quyn điu khin (và giá tr) cho hàm: – Dùng lnh return [biu_thc]; – Lnh return có th vit bt k đâu trong thân hàm. – Khi hàm không tr v giá tr, ch cn vit return; – Trong C không cn lnh return nu hàm không tr v giá tr Bài ging C++. 14/10/2008 V.S.Nam. B/m KTHT, khoa CNTT, HXD 7 4.2 H 4.2 H µ µ m m 4.2.1 Khai báo và đnh ngha hàm – Kiu giá tr tr v: • Hàm không tr v giá tr å kiu_giá_tr_tr_v là void. • Không vit kiu giá tr tr v å ngm đnh là int. • Không cho tr v kiu mng. – Danh sách tham s: • Các tham s hình thc (cùng vi kiu tng ng) cách nhau bng du “,” không hn ch kiu (có th là kiu c s hay phc hp). • Hàm không có tham s å danh_sách_tham_s là void. – Lúc này danh sách tham s cng có th đ trng. • Không vit kiu tham s å ngm đnh là int. • Chú ý: trong C có th khai báo kiu tham s riêng ra sau, ví d: double func(a,b) int a; float b; Bài ging C++. 14/10/2008 V.S.Nam. B/m KTHT, khoa CNTT, HXD 8 4.2 H 4.2 H µ µ m m 4.2.1 Khai báo và đnh ngha hàm – Khai báo hàm nguyên mu: • Tt c hàm dùng trong chng trình phi khai báo nguyên mu. – Trong nguyên mu có th b tên các tham s (ch cn khai báo kiu). – C++ cho phép ép kiu tham s truyn vào cho phù hp. • Trong C có th không khai báo nguyên mu, hoc ch cn khai báo tên hàm và giá tr tr v, không cn danh sách kiu tham s. – Nu không khai báo, C t to ra nguyên mu vi kiu tr v là int. – Tp tin tiêu đ (header file): • Mi th vin trong C++ đu có mt tp tin tiêu đ dng *.h. – Tp tin này cha khai báo ca các hàm trong th vin (nguyên mu), đnh ngha ca các kiu d liu, hng dùng trong hàm đó. • Ngi lp trình có th to các tp tin tiêu đ riêng cho mình. Bài ging C++. 14/10/2008 V.S.Nam. B/m KTHT, khoa CNTT, HXD 9 4.2 H 4.2 H µ µ m m 4.2.1 Khai báo và đnh ngha hàm – Con tr hàm: • Ging nh bin, mi hàm đu có đa ch å có th khai báo mt con tr hàm tr đn hàm đó. • Khai báo con tr hàm: [kiu_gtr_tr_v](*tên_bin_tr_hàm) ([dsách_ths]); – VD: int(*fp) (int n, float x); • Ý ngha các thành phn trong khai báo con tr hàm ging nh khai báo hàm. • Mun s dng phép gán, con tr hàm phi tng thích vi hàm c v kiu giá tr tr v ln danh sách tham s. • Con tr hàm có th dùng làm tham s hình thc cho hàm. – Khi đótrong li gi hàm, có th dùng tên hàm làm tham s thc. Bài ging C++. 14/10/2008 V.S.Nam. B/m KTHT, khoa CNTT, HXD 4.2 H 4.2 H µ µ m m 4.2.2 Tham s và giá tr tr v trong li gi hàm – Tham s và truyn tham s • Tham s – Tham s hình thc: đi din cho tham s thc (s truyn cho hàm). Kiu giá tr ca tham s hình thc å quyt đnh kiu tham s thc. – Tham s thc: thông tin đc truyn trong li gi hàm. Mi tham s thc tng ng vi mt tham s hình thc. • Truyn tham s – Truyn theo tr (tham tr): bn sao giá tr đc truyn cho hàm (tham tr) å vic thay đi giá tr đc truyn vào trong thân hàm không nh hng đn giá tr ban đu ca bin. – Truyn theo bin (tham bin): bn thân bin đc truyn cho hàm (tham bin) å vic thay đi trong hàm s làm thay đi giá tr bin. – Chú ý 1: trong C++ tt c tham s đc truyn theo tr. – Chú ý 2: nu tham s truyn vào có kích thc ln (ví d nh cu trúc) hoc cn thay đi giá tr bin, nên truyn theo bin. [...]... Ngôn ng l p trình C c a hai t c gi ngôn ng C và cu n Ngôn ng l p trình C+ +” c a t c gi ngôn ng C+ +) • C th tham kh o sách ti ng Vi t, chú ý hai cu n sách (v ngôn ng C và C+ +) c a GS.Ph m V n t (ph n ph l c c a sách) • C th s d ng Help c a Turbo C+ +3.0 – Dùng thành th o m t s hàm thông d ng • C c hàm tính toán theo c ng th c toán h c (math.h) • C c hàm chuy n i d li u (stdlib.h) • C c hàm tính giá... p å l n, khó c, khó theo dõi, kích th c l n • kh c ph c tr ng i trên å vi t trên nhi u t p kh c nhau, liên k t chúng v i nhau b ng hình th c t p Project – N i dung t p Project ~ danh sách tên c c t p t o nên ch ng trình – C c t p thành ph n c th là ch ng trình ngu n ho c c c t p i t ng *.obj (sinh ra do vi c d ch c c ch ng trình ngu n *.cpp ho c c c t p vi t trên ngôn ng Assembly) • Ch c duy nh t... s c a vào – agrv[] : m ng c c tham s a vào, c ch nhau b i d u c ch • Khai báo này c dùng khi c n s d ng c c tham s dòng l nh cho vi c th c thi ch ng trình V.S.Nam B/m KTHT, khoa CNTT, HXD Bài gi ng C+ + 14/ 10/2008 4. 3 Chång hµm vµ chång phÐp to¸n 4. 3.1 nh ngh a ch ng hàm – Ch ng hàm • C+ + cho phép s d ng c ng m t tên nh ngh a c c hàm kh c nhau (kh c ki u giá tr tr v và danh sách ki u c c tham s ) å ch... – C ng là khai báo bi n c c b nh ng yêu c u trình d ch l u giá tr khai báo trong c c thanh ghi (å x lý nhanh h n) Yêu c u này s b b qua n u không c n thanh ghi Nói chung nó ch áp d ng cho ki u int hay char – Ngày nay c c trình d ch ã c kh n ng nh n bi t c c bi n hay dùng a vào thanh ghi, không c n thi t ph i c c c t khóa này n a V.S.Nam B/m KTHT, khoa CNTT, HXD Bài gi ng C+ + 14/ 10/2008 4. 5 T ch c. .. B/m KTHT, khoa CNTT, HXD Bài gi ng C+ + 14/ 10/2008 4. 6 c thêm 4. 6.2 Ti n x lý ch ng trình – G p t p tin và t o macro thay th • Ch th g p t p tin #include • Ch th t o macro #define – Biên d ch c i u ki n • C u tr c biên d ch c i u ki n : ~ c u tr c r nhánh if [elsse] å dùng c c ch th #if, #else, #elif, #endif ~ c c o n r nhánh • Ngoài ra, c th dùng c c ch th : #ifdef (~#if define (tên_macro) #ifndef... • Ch ng hàm c n c g i là a d ng hóa hàm, t i b i hàm • Vi c x c nh g i hàm nào khi trong ch ng trình c hàm trùng tên là do trình d ch m nhi m – Trình d ch d a vào s kh c nhau c a t p tham s i tên c c hàm å c c hàm c tên kh c nhau sau khi d ch – N u hai hàm c tên và t p tham s trùng nhau, trình d ch s báo l i, k c khi ki u tr v kh c nhau V.S.Nam B/m KTHT, khoa CNTT, HXD Bài gi ng C+ + 14/ 10/2008 4. 3... ho c c c bài toán c n di n t tr c quan và d hi u quá trình gi i quy t bài toán V.S.Nam B/m KTHT, khoa CNTT, HXD Bài gi ng C+ + 14/ 10/2008 4. 4 §Ö quy 4. 4.2 quy trong C+ + L p trình quy trong C+ + • Trong C+ + hoàn toàn c th vi t c c ch ng trình – S c m nh c a C+ + t ra h u hi u trong vi c x lý b nh ch ng trình • Thu t toán chung vi t hàm quy b t k quy và qu n lý quy: hàm (tham s ban u) { if (tr ng h p c. .. ch c n thêm t khóa inline tr c khai báo hàm – Ch ng trình ch a hàm inline s dài h n ( c bi t khi hàm cg i nhi u l n) nh ng ch y nhanh h n å ch nên dùng hàm inline v i nh ng hàm nh , không ch a c u tr c l p • Trình d ch x lý hàm inline gi ng nh c c macro – Macro c nhi u h n ch h n å trong th c t nên dùng hàm inline V.S.Nam B/m KTHT, khoa CNTT, HXD Bài gi ng C+ + 14/ 10/2008 4. 2 Hµm 4. 2.3 C c v n kh c. .. gi ng C+ + 14/ 10/2008 4. 3 Chång hµm vµ chång phÐp to¸n 4. 3.2 nh ngh a ch ng phép toán – Ch ng phép toán • th c hi n c c thao t c trên ki u d li u ph c h p hay ki u t nh ngh a ta th ng xây d ng c c hàm • C+ + cho phép dùng c c phép toán chu n nh ngh a hàm å nh ngh a ch ng phép toán (overloading) – M c ích là tránh dài dòng, thi u t nhiên khi s d ng hàm th c hi n c c phép toán trong ch ng trình – Ch ng... sau: – C tham s t ng ng th c s : phân bi t c c ki u d li u kh c nhau (c v d u) – C tham s t ng ng g n nh t (sau c c chuy n i ki u d li u t ng: char và short å int, float å double) – C tham s t ong ng sau c c chuy n i ki u c C++ ch p nh n – C tham s t ong ng sau c c chuy n i ki u do ng i dùng nh ngh a V.S.Nam B/m KTHT, khoa CNTT, HXD Bài gi ng C+ + 14/ 10/2008 4. 3 Chång hµm vµ chång phÐp to¸n 4. 3.1 . th ñ ñ t c t c 4. 1.2 Lp trình th t c trong C+ + – C+ + và lp trình th t c • C+ + c mt s đim kh c vi c c ngôn ng kh c (ví d Pascal) v mt c u tr c chng trình và biên dch mã ngun. • C u. lp trình tun t bng c ch t ch c chng trình thành c c chng trình con. • C c ngôn ng nh FoxPro, Pascal hay C/ C++ đu cho phép trin khai phng pháp lp trình th t c. • T tng chung:. toàn c c. • C u tr c d liu và gii thut – Mt chng trình th t c bao gm c c cu tr c d liu (nh bin, mng, c u tr c, …) và c c hàm, th t c. – Trong PASCAL c 2 kiu chng trình con