You are on page 1of 121

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++

I. Gii thiu v ngn ng lp trnh C++


1.1. Xut x
- Ngn ng C bt u xut hin t khong 1969-1978. - Nm 1978 Brain Kernighan v Denits Ritchie xut bn cun The C programing Langue th C c coi nh chnh thc ra i. C++ l ngn ng mi bao trm C do Bjarne Stroustrup sng tc ra vo nm 1980- 1983 - Hng Boleans xy dng b bin dch C++ dng cho nhiu loi my tnh thch hp cho my vi tnh l TURBO C++ - C nhiu phin bn, nhng phin bn sau c th s dng FOR WINDOWS

1.2. B chng trnh bin dch cua TURBO C++


- Gm nhiu files c cha trong cc th mc BGI, BIN, EXEMPLES,INCLUDE,.. nhm thc chc nng ca ngn ng lp trnh. - Trong b chng trnh dch sau khi ti ln cng c cc files quan trng l TC.EXE, nm trong th mc con ca th mc TC l ca TURBO C++ th mc BIN( c cc th mc con LIB, INCLUDE) v TC.EXE l trnh bin dch hin cc

1.3 Khi to
- Ly a CD c cha b chng trnh ci t TURBO C - t vo CD - G INSTALL(SETUP) v nhn ENTER,my s tin hnh ci t ln cng sau khi yu cu in mt s thng tin cn thit nh a cng, th mc cn t V Minh Ph B mn KHMT
1

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ lu tr n ( thng thng ta lu tr trn a C: vi th mc TC)

1.4. Kch hot.


- Vo th mc TC chn TC.EXE nhn p chut - Sau khi thc hin thao tc trn ca s son tho chng trnh ca C++ s hin ra cho php chng ta son chng trnh.

1.5. Mt s lu khi son tho chng trnh.


- G thng thng nh son tho ting Anh - Bi en nh du bng t hp phm SHIFT+ mi tn - Sao chp mt on bi en bm CTR+KC, di chuyn bm CTR+KV - Xo mt on vn bn bi en bm CTR+KY - Xo mt dng vn bn ang cha con tr bm CTR+Y - Ghi mt on chng trnh nh du sang mt tp khc: CTR+KW - c(a) mt chng trnh ngoi vo:CTR+KR

1.6. Dch v chy chng trnh.


- Dch chng trnh bm F9 - Chy chng trnh bm CTR+F9

1.7. S dng Turbo C++ trong mi trng pht trin tng th


- Sau khi kch hot Turbo C++ c mt ca s: File Line1 NONAME Khung son tho chng trnh V Minh Ph B mn KHMT
2

Edit Col1

Run

Compile Insert

Project Tab

Option C:

Indent

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ F1 Help F5 Zoom F6 Message F10 Main

- Mun chn chc nng no dng trn cng bm ALT+ k t vit hoa dng - Trong trng hp s dng DEV-C th sau khi kch hot c ca s gm 3 phn: Trn cng l thanh menu bar gn ging nh ca C++(File,Edit,..), bn di chia lm 2 ca s, mt ca s dung son tho v m tp ngun ta s trnh by chi tit sau

1.8. S dng cc t hp phm


- F1: Tr gip - F2: Ghi ln a - F3: Np file vo mn hnh son tho - F5: a ca s kch hot vo khung - F6: Chuyn ca s lm vic - F7: Chuyn n v tr li trc ,chy tng bc - F8: Chuyn n v tr li sau - F9: Dch chng trnh - CTR+F9: Dch v chy chng trnh - F10: V thc n chnh

II. Cc phn t c bn ca C++


2.1.B ch vit v t kha.
-B ch vit: a..z,A..Z;0..9;+,-,*,/>,<,>=,<= -T for, kha: goto, auto, if, break, int, case, long, char, continuie, return, defalt, do, double, else,entry, enum, extern, float, register, sizeof,short, static,struct, switch,typedef,union,

unsigned, while, void, asm, fortran, passcal, ada.

V Minh Ph B mn KHMT

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ - Ngoi ra cn mt s t kho khc c dp s m t hoa.

2.2. Quy

nh v dng nh danh.

- Khng c dng nhng t kha nh danh - Tn nh danh phi vit lin nhau, nu vit cch nhau phi c du ni di.

2.3. Quy nh khi vit mt chng trnh.


- Sau mi cu lnh c du kt thc ; - Khai bo nhng thng tin cn s dng khi vit chng trnh, tc l khai bo cc hm th vin

III.Cu trc chng trnh trong TURBO C++


3.1. Hng,bin.
- Hng s l thng tin c gi tr khng i trong qu trnh thc hin chng trnh: + Hng s hc: S nguyn v s thc + Hng s nguyn c th biu din vi cc c s khc nhau 8,10,16 + -14, +14, 0114(c s 8 ng vi 76 trong c s 10) + Hng s thc vit di dng s thp phn thng thng hoc di dng khoa hc. + Hng k t: Gm cc k t vit trong du nhy n. a,b, + Hng kiu chui: Gm mt dy cc k t vit trong du nhy n. abcxd,dbhk, - Khai bo hng. const <kiu d liu> <tn hng>= <gi tr>;

3.2.Bin.
V Minh Ph B mn KHMT
4

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ - Thng tin c gi tr thay i trong qu trnh thc hin chng trnh gi l bin. - Bin c nhiu kiu, tn bin bt u bng ch ci, vit lin nhau nu vit cch phi c du ni di. - Tn bin khng c trng t kho.

3.3.Cc loi d liu c s.


- Kiu s nguyn: int + Khai bo: int <tn bin>; + Kiu s nguyn nm trong khong -32768 n 32767 + C nhiu m rng cho s ngun: char(127,..,128),short, n 2147483647), + V d: int t; long int t; - Kiu s thc: float + Khai bo: float <tn bin>; + C 2 dng m(khoa hc) v dng thng + C nhiu m rng cho s thc: float(-1.2E-38 n 1.2E38);double(-2.2E-308 + V d: float x; x=333.45; hoc float x=333.45; - Kiu k t: char + Khai bo: char <tn bin>; + Hng k t c c biu din nm gia 2 du nhy n:a,b, n 2.2E308) v long double(-3.4E-4932 n 3.4E4932); long int(-2147483648

V Minh Ph B mn KHMT

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ + Trong bng m ASCII cc k t t 0-31 l cc k t iu khin khng in ra c, bng sau cho ta s tng ng gia k t v dy m K t BEL Nhy cch ngang Xung dng miLF V u dng CR Du Du\ Dy m \a \t \n \r \ \\ K t Xo tri Nhy cch ng Xung di FF Du Du ? M nul Dy m \b \v \f \* \? \0

+ Hng xu k t c trong du nhy kp: ha noi mua thu. + V d: char t; + Hm x l xu k t: toASCII(c):Chuyn c thnh m ASCII, tolower(c),toupper(c):Chuyn thng, hoa getchar(): Dng chng trnh t t bn phm; ch nhp mt k c thnh ch

V d 1:(vd01.cpp): #include <iostream.h>

V Minh Ph B mn KHMT

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ #include <ctype.h> /* cn phi c v cc hm trn nm void main() { char chuthuong,chuhoa; cin>>chuthuong; chuhoa=toupper(chuthuong); cout<<chuhoa; } - Kiu boolean: bool + Khai bo: bool <tn bin>; + Nhn gi tr TRUE(1), FALSE(0) + Cc php ton: AND(&&); OR (||); NOT(!) vi cc gi tr nh bng chn l logic. U 1 1 0 0 V 1 0 0 1 U&&V 1 0 0 0 U||V 1 1 0 1 !U 0 0 1 1 trong tp ny*/ #include <stdio.h>

+ C th in ra mn hnh kt qu ca php tnh logic nh: cout<<(%d,0&&3)- kt qu cho l 0. - Cc hng tng trng: + Khai bo 1: + Khai bo 2: #define <Tn hng> <Gi tr>; #define <Tn hng> <Xu k t>; + v d:#define pi 3.14592,#define max 3 + v d: # define friend Ban trai cua ban;

V Minh Ph B mn KHMT

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++

3.2. Hm.
- Hm l mt tp cc lnh thc hin mt nhim v no v tr v gi tr nhn c hoc khng tr gi tr no. - Tn hm chnh phi nht thit phi l main - Cc hm khc c th t tu . - Cu trc chung ca hm c dng: <Kiu hm> <tn hm>( <Cc tham s hnh thc>); { Khai bo cc bin cc b; .... Cc cu lnh ... return giatri; } - Gii thch: + <Kiu hm>: Kiu d liu tr cho hm + <Cc tham s hnh thc>: Thc cht v cc bin ca hm, n s c truyn t cc bin c th - Hm cout: Dng th hin thng tin ca bin, hm hoc biu thc ln mn hnh, hm ny c nh ngha trong trong tp stdio.h trong th vin chun v vy mun dng n ta phi khai bo #include <stdio.h> ngay u chng trnh. - Hm c c php sau: cout<<<tham s nh dng><< <cc tham s>;
-

V d: cout<<Ngn ng C l ngn ng kh <<t;

Ngn ng C l ngn ng kh 10

V Minh Ph B mn KHMT

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ Hoc: cout<<Ngn ng C ; cout<<l ngn ng ; cout<<kh <<t<<endl ; - Hm getch():C tc dng dng mn hnh ang hin kt qu, trc phi vit cu hng dn tp u #include <conio.h> - V d sau y m t cch xy dng hm v cch gi hm hello trong C: Goi ham hello Noi dung ham hello duoc goi La nhu vay do V d 2: (vd02.cpp) #include <conio.h> #include <stdio.h> void hello();

void main() { cout<<( Goi ham hello\n); hello(); V Minh Ph B mn KHMT


9

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ cout<<( L nhu vay do\n); getch(); } void hello() { cout<<( Noi dung ham hello da duoc goi\n); }

3.3. Mng
- Mng l tp hp cc bin c cng kiu d liu - Khai bo mng: <Kiu mng> <tn mng>[kch thc]; - V d: int x[5]; char a[3],b[5]; float c[100]; - Ch rng phn t u tin bao gi cng c ch s l 0. V d 3: (vd03.cpp) #include <conio.h> #include <iostream.h> #define kt 6 main() {

int a[kt]; int i; for (i=0;i<6;i++)/* cho i chy t 0 n 5*/ { cout<<Nhap gia tri cho a[<<i-1<< ]=<<endl; V Minh Ph B mn KHMT
10

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ cin>>a[i]; } cout << Gia tri cua mang la: for (i=0;i<6;i++) cout<< getch(); } <<a[i]; ]=<<endl;

3.4.Cu trc ca mt chng trnh.


- Cu trc chng trnh ca C++ gm: + Khai bo cc hm th vin chun s s dng + nh ngha cc bin ngoi + nh ngha hnh thc cc hm con(hm1,.. + Hm chnh { gi cc hm con }
-

Ni dung Hm 1 Ni dung Hm 2 Vic khai bo cc hm th vin chun c t u chng trnh thng qua t kho # include V d: # include <stdio.h> void main() { int a,b; a=7; b=8;

- ...
-

V Minh Ph B mn KHMT

11

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ cout<<a/b la d\n<<a/b; } - Xem v d 2

3.5.Bin,gn gi
x=10; x1=x2+10;

tr v cc hm nhp xut:

- Php gn: <tn bin>=<ton hng>;

- Trong C/C++ vic gn lin tip cng cho php: x1=x2=4; void main() { int x1,x2 x2=x1=100;(php gn kp); cout<< gia tri cua x1 la <<x1<<x2; } - S hiu chnh s c thc hin theo chiu: int long int float double long double - Hm nhp d liu: cin - Dng nhp d liu t bn phm vi c php sau: + C php cin>> <bin>; + V d: cin>>x>>y; Cho php nhp d liu cho bin x v bin y t bn phm. - Hm hin thng tin ra mn hnh: cout- Dng a thng tin ra mn hnh + C php: cout<< <bin> hoc cout<< dng thng bo;hoc cout<< dng thng bo<< <bin>

V Minh Ph B mn KHMT

12

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ - Ch : Khi dng 2 hm trn phi gi hm u l #include <iostream.h> #include <stdio.h> V d 4: #include <stdio.h> #include <iostream.h> main() { cout( phan nguyen trong phep chia 1770/25 la %d\n,1770/25); getch(); } V d 5: (vd04.cpp) Chuyn n v thi gian c a vo bng giy thnh gi pht giy #include <stdio.h> main() { long int giay,phut,gio; cout<< Nhap thoi gian bang giay:\n; cin>>giay; gio=giay/3600; /* chuyn giy thnh gi*/ phut= (giay-3600*gio)/60;/* chuyn giy thnh pht */ giay= giay-3600*gio-60*phut/* phn giy cn li */ cout<< Doi giay ra gio phut giay la\n; cout<<giay<< giay <<phut<< phut <<gio<< gio getch(); V Minh Ph B mn KHMT
13

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ return 0; } - Ch : + % - l php ly phn d:5%2 l 1 + / - l php ly phn nguyn:5/2 l 2

3.6.Quy c khi biu din bin theo khun dng:


- %d : Ly phn nguyn - %c : K t - %s : Chui - %f : S float du phy ng - %lf: S duoble du phy ng c chnh xc gp i - %u : S nguyn khng m - %e : m - %0 : C s 8 khng du - %x : C s 16 khng du - Hm getchar: + C php: <tn bin>=getchar(); + Gii thch: Hm cho php a mt k t t bn phm + <tn bin> nu khng cn thit th c th b qua. + Chng trnh s tm ngng cho n khi a mt k t t bn phm + Chng trnh tip tc khi nhn ENTER + tn bin nhn gi tr bng m ASCII ca k t c a vo

IV. Cc php ton.

V Minh Ph B mn KHMT

14

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++

4.1 Quan h
- Gm : sai >(ln hn),<( nh hn),==(bng),!=(khc) - Cho gi tr l TRUE(1) nu ng v FALSE(0) nu

4.2 Logic (BOOLEAN)


- Gm : Hoc(||),v (&&),ph nh(!) - Kt qu l gi tr cc bng chn l

U 1 1 0 0

V 1 0 0 1

U||V(OR) 1 1 0 1

U&&V(AND) 1 0 0 0

U(NOT) 0 0 1 1

4.3. Cc php ton s hc.


- Gm: +, -, *, /, % - cng, tr, nhn, chia, ly phn d - Ch : Gi tr b mt sau php gn: + Nu int x th gn x=1.25 ch cho x=1 - Cch vit gn: + a+=b tng ng a=a+b + a-=b tng ng a=a-b + a*=b tng ng a=a*b + a/=b tng ng a=a/b + a%=b tng ng a=a%b

4.4. Tng gim mt n v.


- ++ tng ln 1, (++a) tng ng a+=1 - -- Gim i 1 (--b) tng ng b-=1
15

V Minh Ph B mn KHMT

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ - Ch : Vic t cc du ++,--trc u tin c tng hoc gim 1 n v ri sau s dng kt qu mi tnh. Cn ++,--sau th ngc li. - V d: x=15; y=x++ +2; s=++x+3; Kt qu cui cng x=17,y=17, s=20 V d 6: (vd06.cpp) #include <stdio.h> void main() { int x,y,z,t; x=3;y=4; printf(t=%\d,x+ ++y); printf(s=%\d,x+y); } Kt qu t=8,s=8

4.5. p kiu:
- C/C++ cho php trn ln cc kiu d liu vi nhau, nhng ng thi mi kiu d liu phn ng khac nhau i vi mi php ton. Do i khi ta p cho my i kiu d liu t kt qu mong mun - V d: int i,m,n; float x; x=m/n /* Kt qu l phn nguyn*/ x=m/ float(n) /* n b p thnh s thc nn Kt qu l s thc*/

V Minh Ph B mn KHMT

16

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++

4.6. Biu thc.


- T hp ton t v ton hng gi l biu thc. - V d: (a+b)*c-d; x=++a%b; - Ch : + Tt c cc ton hng thuc kiu char, short int khi tnh ton u c t int + Tt c cc ton hng kiu float u c chuyn v kiu double. + V d char a; int x,b; t float c; double thnh d; x=(a*b)+(c-d)-(c*b)hng u kiu ng chuyn v kiu

int, 2 hng t sau thnh kiu double.

4.6 Chuyn kiu bt buc trong biu thc.


- C php: (kiu) <Ton hng>. - V d: (float)(x/3+10*y) kt qu l kiu float v khng ph thuc vo kt qu

4.7. Cc hm s hc dnh cho s nguyn v s thc:


Hm abs(i) fabs(d) sin(d),cos, cosh,tan, exp,log,sqrt ,floor,ceil Kiu nhn c int double double Kt qu Cho tr tuyt i ca i Cho tr tuyt i ca s thc d Cho tr gia tr sin,cos,cosh,tan,e m,loga,cn,ct trn s,hm lm trn s

V Minh Ph B mn KHMT

17

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ pow(d1,d2), fmod(d1,d2) V d 7: (vd07.cpp) #include <iostream.h> #include <conio.h> void main() { int i,m,n; float x; m=13; n=4; cout<< ket qua cua cac phep chia m/n<<endl; x=m/n; cout<<x<< ket qua lay phan nguyen<<endl; ket qua chinh xac phep chia x=m/float(n); cout<<x<< m/n<<endl; } V d 8: (vd08.cpp) # include <iostream.h> #include <conio.h> void main() { float x; x=2.3+1.7;/* x=4*/ cout<<Gia tri x=%d\n<<x; x=int(2.3)+int(1.7);/* x=3*/ cout<<Gia tri moi cua x=%d\n<<x; } double d1 m d2, ly d1/d2

V Minh Ph B mn KHMT

18

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++

4.7. Kch thc ca i tng.


- C php: sizeof(ton hng);

V d 9: (vd09.cpp) #include <stdio.h> void main() { int i; char c; long int x; float y; double z; cout<<%d :<<sizeof(c); cout<<%d :<<sizeof(i); cout<<%d<<sizeof(x); printf(%d,sizeof(y); printf(%d,sizeof(z); }

V. Cc cu lnh iu kin.
5.1. Khi nim.
- L cc cu lnh c thc hin khi mt iu kin no c tho mn

5.2. Cu lnh if ...else.


- C php: if (biu thc) { Nhm lnh 1; } else { Nhm lnh 2; } V Minh Ph B mn KHMT
19

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ Hoc if (biu thc) { Nhm lnh; } - Gii thch: Nu biu thc tho mn(==1) th thc hin nhm lnh 1, cn khng thc hin nhm lnh 2. - Ch : + i khi cng khng cn ELSE nu khng c nhu cu xt trng hp khng mn. + Nu nhm lnh l mt lnh th khng cn bao bi { }. tho

Vi d 10: (vd10.cpp) Nhp t bn phm 3 cnh ca tam gic. Xc nh xem l tam gic g?

#include <stdio.h> #include <math.h> main() { float a,b,c; printf(nhap gia tri a,b,c:\n); cin>>a>>b>>c; if ((a>=b+c)||(b>=a+c)||(c>=b+a)) printf(a,b,c khong la canh cua tam gic\n); else V Minh Ph B mn KHMT
20

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ if(a==b && b==c) printf(Tam gic u\n); else if(a==b) || (b==c) || (c==a) printf(Tam gic can ); else printf(Tam giac thuong );; if ((a*a==b*b+c*c)||(b*b==a*a+c*c)||(c*c==a*a+b*b)) printf( vuong\n); getch(); }

Vi d 11: (vd11.cpp)Tnh din tch ca tam gic vi cc cnh c nhp vo t bn phm #include <stdio.h> #include <math.h> #include <iostream.h> #include <conio.h> main() { float a,b,c,chuvi,dientich; printf("nhap gia tri a,b,c:\n"); cin>>a>>b>>c; V Minh Ph B mn KHMT
21

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ if ((a>=b+c)||(b>=a+c)||(c>=b+a)) printf("a,b,c khong la canh cua tam giac\n"); else { chuvi=a+b+c; dientich=chuvi/2*(chuvi/2-a)*(chuvi/2b)*(chuvi/2-c); dientich=sqrt(dientich); printf("Chu vi %f \n",chuvi); printf("Dien tich %f \n",dientich); } getch(); } V d 10: theo quy nh sau: Tnh tin in phi tr hng thng + n 50 kw phi tr 500 ng + Ln hn 50 v <=100 tr 700 ng + Ln hn 100 v <=200 tr 1100 ng + Ln hn 200 tr 1500.5 ng #include <stdio.h> #include <math.h> #include <conio.h> main() { int tieuthu; float tiendien; printf(nhap luong dien tieu thu\n); cin>>tieuthu; if(tieuthu<=50) V Minh Ph B mn KHMT
22

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ tiendien=tieuthu*500; else if (tieuthu<=100) tiendien=50*500+(tieuthu-50)*700; else if (tieuthu<=200) tiendien=50*500+50*700+(tieuthu-100)*1100; else tiendien=50*500+50*700+100*1100+(tieuthu200)*1500.5; printf(So tien phai tra la:%f\n,tiendien); } V d 11: Gii phng trnh bc 2 vi a, b, c c nhp vo t bn phm.

//#include <stdio.h> # include <iostream.h> #include <math.h> #include <conio.h> main() { float a,b,c,delta; cout<<" Nhap vao gia tri a b c: cin>>a>>b>>c; delta=b*b-4*a*c; if (delta > 0) V Minh Ph B mn KHMT
23

";

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ { cout<<"Nghiem x1= <<(-b+sqrt(delta))/(2*a)<<endl; cout<<"Nghiem x2 =" <<(-b-sqrt(delta))/(2*a)<<endl; } else if (delta==0) cout<<"Nghiem x1=x2 ="<<-b/(2*a)<<endl; else { cout<<"Nghiem phuc x1 ="<<-b/(2*a)<<" + i *"<<sqrt(-delta)/(2*a)<<endl; cout<<"Nghiem phuc x2 ="<<-b/(2*a)<<" - i *"<<sqrt(-delta)/(2*a)<<endl; } getch(); }

5.3.

Cu

lnh

switch:

Chn

mt

trong

cc

phng n
- C php: switch(Biu thc) { case <hng 1>: {<Dy lnh 1>}; case <hng 2>: {<Dy lnh 2>}; . case <hng k>: {<Dy lnh k>}; defaut: } V Minh Ph B mn KHMT
24

{<dy lnh k+1>};

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ V d 14: (vd14.cpp) Nhp vo mt thng ca nm cho bit s ngy ca thng . # include <iostream.h> #include <math.h> #include <conio.h> main() { int ngay,thang,nam; cout<<" Cho thang: \n"; cin>>thang; switch (thang) { case 1,3,5,7,8,10,12: cout<<thang<<" co 31 ngay"<<endl; break; case 4,6,9,11: { cout<<thang<<" co 30 ngay"<<endl; break; } case 2: { cout<<" Cho nam: \n"; cin>>nam; if (nam%4==0) cout<<thang<<" co 29 ngay"<<endl; else cout<<thang<<" co 28 ngay"<<endl; break; V Minh Ph B mn KHMT
25

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ } } getch(); return 0; } - Ch :


-

Sau mi case phi c lnh break thot ra khi tho mn. Chng tr nh trn khng chy, n ch ch y khi m i case nh n 1 gi tr .

VI.Cu lnh lp.


- Khi cn thc hin mt cng vic lp i lp li nhiu ln vi mt s cu lnh nh nhau theo mt quy lut no ca bin ta s dng lm gin tin n ta s dng vng lp.

6.1. Cu lnh for (vng lp xc nh).


- C php:for (<biu thc 1>;<biu thc 2>;<biu thc 3>) { <Cc lnh>; } - <Biu thc 1>: Dng khi to bin iu khin vng lp. - <Biu thc 2>: Dng kim tra iu kin thc hin vng lp. - <Biu thc 3>: Dng thay i gi tr ca bin iu khin.

V Minh Ph B mn KHMT

26

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ V d 15: (vd15.cpp) Nhp vo t bn phm 2 s

nguyn. Tnh tng cc s nguyn nm gia 2 s . #include <stdio.h> #include <math.h> void main() { int i,a,b,tam; long in tong; printf(nhap so thu nhat\n); cin>>a; printf(nhap so thu hai\n); cin>>b; if (a>b) { tam=a; a=b; b=tam; } tong=0; for(i=a;i<=b;i++) tong+=i; printf(Tong la: %d,tong); } V d 16: Nhp n vo t bn phm, tnh 1!+2!++n! #include <stdio.h> #include <math.h> void main() { int i,n,tam; V Minh Ph B mn KHMT
27

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ long int tonggiaithua; printf(nhap n= \n); cin>>n; tonggiaithua=0;tam=1; for(i=1;i<=n;i++) { tam=tam*i; tonggiaithua=tonggiaithua+tam; } printf(Tong giai thua la: %d,tonggiaithua); } V d 15: Nhp x vo t bn phm. Tnh P(x). Theo thut ton Horner tnh gi tr a thc ta vit li a thc nh sau: P(x)=anxn+an-1xn-1+an-2xn-2+..+ a1x+a0= (((anx+an-1)x+an-2)x+ #include <stdio.h> #include <math.h> #include <conio.h> #include <iostream.h> void main() { float a[20]; int i,k; float p,x; printf("nhap bac cao nhat cua da thuc\ n"); cin>>k; printf("nhap cac he so \n"); V Minh Ph B mn KHMT
28

an-3)x+..)x+a2)x+a1)x)+a0.

Do

vy

chng trnh c tnh nh sau:

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ for (i=0;i<=k;i++) { cout<<"a["<<i<<"]="; cin>>a[i]; } printf("nhap gia tri x \n"); cin>>x; p=a[k]; for(i=k-1;i>0;i--) p=p*x+a[i]; printf("Gia tri da thuc=%f",p); } 6.2. Cu lnh while. - C php: while(<biu thc>) { < Cc lnh> }; - Gii thch: Vng lp s c thc hin nu biu thc tho mn(Nhn gi tr TRUE) V d 18:(vd18.cpp)Tnh tng s=1-1/(1*2)++(-1)n *1/ (n*(n+1))+ vi chnh xc epsilon=0.0001; #include <iostream.h> #include <stdio.h> #include <conio.h> #include <math.h> void main() { int i; float tam,tg,tong; V Minh Ph B mn KHMT
29

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ const float epsilon=0.0001; i=1;tam=1;tong=1;tg=1; while (fabs(tg)>=epsilon) { tam=-tam; tg=tam/(i*(i+1)); i++; tong=tong+tg; } cout<<" tong la: getch(); } V d 19: (vd19.cpp) Tnh gi tr ca e m x vi x c nhp t bn phm vi chnh xc tu . # include <iostream.h> # include <math.h> # include <conio.h> main() { int i; float emu,epsilon,x,tam,tong; cout<< Nhap gia tri cho x= cin>>x; cout<< Nhap gia tri cho epsilon= cin>>epsilon; emu=1;i=1;tam=1; while (fabs(tam)>=epsilon) { tam=tam*x/i; V Minh Ph B mn KHMT
30

"<<tong<<endl;

; ;

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ i++; emu+=tam; } cout<< Gia tri ham e mu x : <<emu; getch(); return 0; }

6.3. Cu lnh do while.


- C php: do { <Cc lnh> } while(<biu thc>); - Gii thch: Cu lnh do while khc cu lnh while ch while kim tra iu kin ri tin hnh thc hin cc lnh trong { }, cn do while lp ri mi kim tra iu kin nu ng chy tip. - Ch : Cu lnh do while th phi c du kt thc ; sau V d 20: (vd20.cpp) Tnh cosx=1-x2/2!+..+(-1)n*x2n/ (2n)!+.. vi x c nhp t bn phm 1. Dng vng lp while: #include <iostream.h> #include <stdio.h> #include <math.h> #include <conio.h> void main() V Minh Ph B mn KHMT
31

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ { int i; float tam,x,epsilon,tong; epsilon=0.0001; printf("nhap gia tri x \n"); cin>>x; i=1;tam=1;tong=1; while(fabs(tam)>=epsilon) { tam=-x*x*tam*1/((2*i-1)*(2*i)); tong+=tam; i++; } cout<<"tong la:"<<tong; getch(); } 2. Dng vng lp dowhile: Do { <cc lnh>; } While (biu thc); #include <iostream.h> #include <stdio.h> #include <math.h> #include <conio.h> void main() { int i; V Minh Ph B mn KHMT
32

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ float tam,x,epsilon,tong; epsilon=0.00001; printf("nhap gia tri x \n"); cin>>x; i=1;tam=1;tong=1; do { tam=-x*x*tam*1/((2*i-1)*(2*i)); tong+=tam; i++; } while (fabs(tam)>=epsilon); cout<<"tong la:"<<tong; getch(); } V d 21: (vd21)S pi c tnh thng qua cng thc sau: Pi/4=1-1/3++(-1)n/(2n+1)+..Vit chng trnh tnh s pi #include <iostream.h> #include <stdio.h> #include <conio.h> #include <iomanip.h> #include <math.h> void main() { int i; float tam,epsilon,pi; epsilon=0.00001; pi=1;i=1; V Minh Ph B mn KHMT
33

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ tam=1; while (fabs(tam/(2*i+1))>=epsilon) { tam=-tam; pi+=tam/(2*i+1); i++; } cout<<" so pi= } - V d 22: (vd22.cpp) Va g va ch, b li cho trn, 36 con 100 chn chn. Tnh s ch, g #include <iostream.h> #include <conio.h> #include <stdio.h> void main() { int x,y,s; x=1; do { x++; y=36-x; } while(2*x+4*y!=100); cout<<"So ga: getch(); } 6.4. Cu lnh break. - C php: break; V Minh Ph B mn KHMT
34

"<<setw(10)<<4*pi;

"<<x<<endl;

cout<<"So cho: "<<y<<endl;

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ - Gii thch: Cho php thot khi cc vng lp v chuyn quyn iu khin cho lnh nm ngay sau vng lp,hoc l kt thc cu lnh iu khin ang thc hin. 6.5. Cu lnh continue - C php: continue; - Gii thch: Cho php chuyn sang vng lp tip theo m khng cn thc hin phn cn li. - V d 23: (vd23.cpp)Minh ho lnh continue #include <iostream.h> #include <conio.h> #include <stdio.h> void main() { int i; for (i=1;i<=5;i++) { cout<< Gia tri i = <<i<<endl; if (i<4) continue; /* nu tho th tip tuc */ cout<<Sang lenh moi khi khong thoa va thuc hien tiep\n; } getch(); } - V d 24: (vd24.cpp)Minh ho lnh continue,bng cch tnh bnh phng ca s dng nhp t bn phm. #include <iostream.h> #include <conio.h> #include <stdio.h> V Minh Ph B mn KHMT
35

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ void main() { int i; do { cout<< Nhap vao so i \n<<endl; cin>>i; if (i<0) { cout<< nhap lai so >0 \n; continue; /* nu tho th tip tuc */ } cout<<Binh <<i*i<<endl; } while(i); getch(); } 6.6. Lnh :goto -Lnh goto s chuyn iu khin n v tr c nhn trong chng trnh. - V d 25: (vd25.cpp)Minh ho lnh goto. #include <iostream.h> #include <conio.h> #include <stdio.h> void main() { int i; for (i=1;i<=10;i++) { V Minh Ph B mn KHMT
36

phuong

cua

so

vua

nhap

la

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ cout<< Thuc hien lap \n; cout<< Chao cc ban \n; if (i==3) goto ra; cout<< Ket thuc vong<<i<<endl; } ra: cout<< Het vong lap<<i<<endl; }

VII. Hm v quy.
7.1. Khi nim hm.
- Hm l mt on chng trnh nhm thc hin mt nhim v no ,c th tr li kt qu cho tn hm hoc khng tu thuc vo yu cu ca ngi lp trnh - Hm trong C/C++ cn c nhiu tnh nng vt tri m ta s xt n sau. - C php: <kiu gi tr hm> <ten hm>(<cc th.s hnh thc v kiu ca chng>); chng>); (1) (2) Hoc void <ten hm>(<cc th.s hnh thc v kiu ca -(1): Khi tnh xong gi tr ca hm ta phi tr li gi tr cho <tn hm> bng lnh return <gi tr> - (2): Hm khng cn tr li gi tr nn u tn hm phi c t kho void. - float vidu(float a, int b,int c);

7.2.Tham s thc s v tham s hnh thc


- Cc tham s dng khi khai bo gi l tham s hnh thc.

V Minh Ph B mn KHMT

37

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ - Tham s c cung cp cho hm khi s dng gi l tham s thc s - Tham s thc s c th l biu thc. - Phi c tng ng 1 1 gia tham s thc s v tham s hnh thc.

7.3.Lnh return: Tr gi tr cho hm.


- Hm return c th tr gi tr ca c mt biu thc v d 2 cch vit sau l tng ng: float vidu(float x, int a, int b,int c) { return a*x*x+b*x+c; } v float vidu(float x, int a, int b,int c) { float giatri; giatri=a*x*x+b*x+c; return giatri; - Lnh return c th xut hin nhiu ln trong hm - V d: double trituyetdoi(double u,double v) { double s; s=u+v; if s>0 return s else return s; }

7.4.Hm khng c gi tri.


- Hm khng c gi tr phi c khai bo theo dng (2) v khng cha lnh return trong. - void vidu(float a, int b,int c); void thidu(void);

V Minh Ph B mn KHMT

38

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++

7.5. V d minh ho
V d 26:(vd26.cpp) Tnh gi tr a*x2+b*x+c; #include <iostream.h> #include <conio.h> #include <math.h> void main() { float ham_vi_du(float,int,int,int); float x,y,z; int a,b,c; cout<<" nhap he so a, b, c : \n"; cin>>a>>b>>c; cout<<" nhap gia tri x lan 1: \n"; cin>>x; y=ham_vi_du(x,a,b,c); cout<<" Gia tri cua ham ham_vi_d = "<<y<<endl; cout<<" nhap gia tri x lan 2: \n"; cin>>x; y=ham_vi_du(x,a,b,c); cout<<" Gia tri moi cua ham ham_vi_du = "<<y<<endl; getch(); } float ham_vi_du(float x,int a,int b,int c) { float gia_tri; gia_tri=a*x*x+b*x+c; return gia_tri;

V Minh Ph B mn KHMT

39

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ } V d 27: (vd27.cpp) Tnh n giai tha #include <iostream.h> #include <conio.h> void main() { long int giai_thua(int); int n; long int y; cout<<" Nhap gia tri n : \n"; cin>>n; y=giai_thua(n); cout<<" gia tri giai thua = "<<y; getch(); } long int giai_thua(int n) { int i; long int gia_tri; gia_tri=1; for (i=1;i<=n;i++) gia_tri*=i; return gia_tri; } 7.4. Truyn tham s gi tr cho hm - Truyn tham s cho hm trong C/C++ c thc hin duy nht l truyn tham tr iu c ngha l tham

V Minh Ph B mn KHMT

40

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ s thc s trc v sau khi gi hm l khng i v l kiu duy nht. V d 28: (vd28.cpp)V d m t cch truyn tham tr #include <iostream.h> main() { void hoan_vi(int a, int b); int n=10,m=20; cout<<Truoc khi goi ham hoan_vi(n,m); cout<< Sau khi goi ham } void hoan_vi(int a, int b) { int t; cout<< Truoc khi hoan vi :<<a<< t=a; a=b; b=t; cout<< Sau khi hoan vi :<<a<< } <<b<<endl; <<b<<endl; :<<n<< <<m<<endl; :<<n<< <<m<<endl;

7.5. Bin ton cc v bin a phng.


- Bin ton cc l bin s dng mi ni trong chng trnh. N c khai bo bn ngoi c chng trnh chnh. - Bin a phng l bin c khai bo trong cc hm khi hm kt thc th cc bin ny cng mt lun. - V d 29: (vd29.cpp) V bin ton cc:

V Minh Ph B mn KHMT

41

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ #include <iostream.h> int i; main() { void thidu(void); for (i=1;i<=5;i++) thidu(); } void thidu(void) { int m=3; /* m l bin a phng*/ m++; cout<<i<< } <<m<<endl;

7.6. Tm hot ng ca bin


- Bin ton cc: Hot ng trn ton b chng trnh ngay sau khi khai bo n - Bin a phng: Ch hot ng trong hm cha n. Cch cp pht cho bin a phng l cp pht t ng, mi ln gi hm l mt ln cp pht. - Bin a phng tnh (static):L bin do yu cu c cp pht mt v tr c nh, loi bin ny c th tn ti ngay c khi hm kt thc hot ng - Cc bin a phng tnh c khi to =0 khi bt u ln gi u - V d 30 (vd30.cpp)V d minh ho: #include <iostream.h> int n;

V Minh Ph B mn KHMT

42

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ main() { void thidu(void); for (n=1;n<=5;n++) thidu() } void thidu(void) { static int i; /* i l bin a phng static */ i++; cout<< goi ham lan thu } <<i<<endl;

7.7. Tnh quy ca hm.


- quy l mt i tng T c thc hin thng qua T1 ging ht T nhng c kch thc b hn. - Hm c th c li gi chnh n l tnh quy ca hm. - V d: n!=n*(n-1)! Vy c th khi qut nh sau: + Vi n=1 n! =1; + n!=n*(n-1)! vi n>1 V d 31: (VD31.CPP)Dng quy tnh n! #include <iostream.h> #include <conio.h> #include <stdio.h> long int giaithua(int n); void main() { int n;

V Minh Ph B mn KHMT

43

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ cin>>n; cout<<"giai thua cua "<<n<<"la:"<<giaithua(n)<<endl; getch(); } long int giaithua(int n) { if (n==1) return (1); else return(n*giaithua(n-1)); } V d 32: (vd32.cpp)Tnh c s chung ln nht theo quy #include <iostream.h> #include <conio.h> #include <stdio.h> int ucln(int x, int y); void main() { int a,b; cin>>a; cin>>b; cout<<uoc so chunglon nhat :<<ucln(a,b)<<endl; getch() } int ucln(int x, int y) { if(y==0) return(x); else return(ucln(y,x%y)); } V Minh Ph B mn KHMT
44

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ V d 33: (vd33.cpp)Thc hin quy bi ton thp H ni #include <iostream.h> #include <conio.h> #include <stdio.h> void dichchuyen(int n,int c1,int c2,int c3); main() { int n; cout<< Cho so tang: cin>>n; dichchuyen(n,1,2,3); } void dichchuyen(int n,int c1,int c2,int c3) { if(n==1) cout<<c1<< ---> <<c3<<endl; else { dichchuyen(n-1,c1,c3,c2); dichchuyen(1,c1,c2,c3); dichchuyen(n-1,c2,c1,c3); } } \n;

VIII. D liu kiu mng.


8.1. Mng 1 chiu.
- C php:<Kiu phn t> <Tn mng>[<S ph. t ca mng];

V Minh Ph B mn KHMT

45

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ - V d: int a[100]; char text[80] - Lu : Ch s u tin ca mng l 0 a[0] a[1] a[2] a[87] a[98] a[99] -Vi khai bo: static char messege[25] cng l mng 25 k t song l cp pht tnh cho b nh mng ny. -V d 34: (vd34.cpp)a thc P(x)=anxn+an-1xn-1+an-2xn-2+..+a1x1+a0=((anx+an-1)x+an-2)x +)x+a1) +a0. Nhp x v h s vo t bn phm. Tnh gi tr ca a thc. #include <stdio.h> #include <math.h> #include <conio.h> #include <iostream.h> void main() { float a[20]; int i,k; float p,x; printf("nhap bac cao nhat cua da thuc\ n"); cin>>k; printf("nhap cac he so \n"); for (i=0;i<=k;i++) { cout<<"a["<<i<<"]="); cin>>a[i]; } printf("nhap gia tri x \n"); cin>>x; V Minh Ph B mn KHMT
46

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ p=a[k]; for(i=k;i>=0;i--); p=p*x+a[i]; printf("Gia tri da thuc=%f",p); } - Bi ton trn c gii bi thut ton Horner. V d 35: Nhp vo t bn phm dy s nguyn hy sp xp theo th t tng dn. #include <iostream.h> #define n 6 main() { int i,j,tam; int a[n]; for (i=0;i<=n;i++) cin>>a[i]; for (i=0;i<=n;i++) for (j=i+1;j<=n;j++) if(a[i]>a[j]) { tam=a[i];a[i]=a[j]; a[j]=tam; } for (i=0;i<=n;i++) cout<<a[i]<< } ;

8.2. Khi to gi tr mng.

V Minh Ph B mn KHMT

47

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ - Mng c th khi to gi tr ngay sau khi khai bo: int a[3]={3,4,5}. iu ny ngha l a[0]=3,a[1]=4,a[2]=5, - Mng c truy nhp trc tip.

8.3.Mng nhiu chiu


C php:<kiu mng> <tn mang>[k.t. hng][k.t. ct]; a[0] [0]
a[1] [0] a[2] [0]

a[0] [1]
a[1] [1] a[2] [1]

a[0] [2]
a[1] [2] a[2] [2]

a[0] [3]
a[1] [3] a[2] [3]

a[0] [4]
a[1] [4] a[2] [4]

V d: a[3][5]; - Khi to mng vi cc gi tr ban u:

int a[3][2]={{1,2},{3,4},{5,6}};
V d 15: (vd15.cpp) Nhp vo t bn phm 2 s nguyn. Tnh tng cc s nguyn nm gia 2 s . #include <stdio.h> #include <math.h> void main() { int i,a,b,tam; long in tong; printf(nhap so thu nhat\n); cin>>a; printf(nhap so thu hai\n); cin>>b; if (a>b) { V Minh Ph B mn KHMT
48

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ tam=a; a=b; b=tam; } tong=0; for(i=a;i<=b;i++) tong+=i; printf(Tong la: %d,tong); } V d 16: Nhp n vo t bn phm, tnh 1!+2!++n! #include <stdio.h> #include <math.h> void main() { int i,n,tam; long int tonggiaithua; printf(nhap n= \n); cin>>n; tonggiaithua=0;tam=1; for(i=1;i<=n;i++) { tam=tam*i; tonggiaithua=tonggiaithua+tam; } printf(Tong giai thua la: %d,tonggiaithua); } V d 15: Nhp x vo t bn phm. Tnh P(x). Theo thut ton Horner tnh gi tr a thc ta vit li a thc nh sau: V Minh Ph B mn KHMT
49

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ P(x)=anxn+an-1xn-1+an-2xn-2+..+ a1x+a0= (((anx+an-1)x+an-2)x+ #include <stdio.h> #include <math.h> #include <conio.h> #include <iostream.h> void main() { float a[20]; int i,k; float p,x; printf("nhap bac cao nhat cua da thuc\ n"); cin>>k; printf("nhap cac he so \n"); for (i=0;i<=k;i++) { cout<<"a["<<i<<"]="; cin>>a[i]; } printf("nhap gia tri x \n"); cin>>x; p=a[k]; for(i=k-1;i>0;i--) p=p*x+a[i]; printf("Gia tri da thuc=%f",p); } V d 15: (vd15.cpp) Nhp vo t bn phm 2 s nguyn. Tnh tng cc s nguyn nm gia 2 s . V Minh Ph B mn KHMT
50

an-3)x+..)x+a2)x+a1)x)+a0.

Do

vy

chng trnh c tnh nh sau:

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ #include <stdio.h> #include <math.h> void main() { int i,a,b,tam; long in tong; printf(nhap so thu nhat\n); cin>>a; printf(nhap so thu hai\n); cin>>b; if (a>b) { tam=a; a=b; b=tam; } tong=0; for(i=a;i<=b;i++) tong+=i; printf(Tong la: %d,tong); } V d 16: Nhp n vo t bn phm, tnh 1!+2!++n! #include <stdio.h> #include <math.h> void main() { int i,n,tam; long int tonggiaithua; printf(nhap n= \n); V Minh Ph B mn KHMT
51

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ cin>>n; tonggiaithua=0;tam=1; for(i=1;i<=n;i++) { tam=tam*i; tonggiaithua=tonggiaithua+tam; } printf(Tong giai thua la: %d,tonggiaithua); } V d 15: Nhp x vo t bn phm. Tnh P(x). Theo thut ton Horner tnh gi tr a thc ta vit li a thc nh sau: P(x)=anxn+an-1xn-1+an-2xn-2+..+ a1x+a0= (((anx+an-1)x+an-2)x+ #include <stdio.h> #include <math.h> #include <conio.h> #include <iostream.h> void main() { float a[20]; int i,k; float p,x; printf("nhap bac cao nhat cua da thuc\ n"); cin>>k; printf("nhap cac he so \n"); for (i=0;i<=k;i++) { V Minh Ph B mn KHMT
52

an-3)x+..)x+a2)x+a1)x)+a0.

Do

vy

chng trnh c tnh nh sau:

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ cout<<"a["<<i<<"]="; cin>>a[i]; } printf("nhap gia tri x \n"); cin>>x; p=a[k]; for(i=k-1;i>0;i--) p=p*x+a[i]; printf("Gia tri da thuc=%f",p); } V d 18:(vd18.cpp)Tnh tng s=1-1/(1*2)++(-1)n *1/ (n*(n+1))+ vi chnh xc epsilon=0.0001; #include <iostream.h> #include <stdio.h> #include <conio.h> #include <math.h> void main() { int i; float tam,tg,tong; const float epsilon=0.0001; i=1;tam=1;tong=1;tg=1; while (fabs(tg)>=epsilon) { tam=-tam; tg=tam/(i*(i+1)); i++; tong=tong+tg; } V Minh Ph B mn KHMT
53

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ cout<<" tong la: getch(); } V d 19: (vd19.cpp) Tnh gi tr ca e m x vi x c nhp t bn phm vi chnh xc tu . # include <iostream.h> # include <math.h> # include <conio.h> main() { int i; float emu,epsilon,x,tam,tong; cout<< Nhap gia tri cho x= cin>>x; cout<< Nhap gia tri cho epsilon= cin>>epsilon; emu=1;i=1;tam=1; while (fabs(tam)>=epsilon) { tam=tam*x/i; i++; emu+=tam; } cout<< Gia tri ham e mu x : <<emu; getch(); return 0; } Vi d 11: (vd11.cpp)Tnh din tch ca tam gic vi cc cnh c nhp vo t bn phm V Minh Ph B mn KHMT
54

"<<tong<<endl;

; ;

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ #include <stdio.h> #include <math.h> #include <iostream.h> #include <conio.h> main() { float a,b,c,chuvi,dientich; printf("nhap gia tri a,b,c:\n"); cin>>a>>b>>c; if ((a>=b+c)||(b>=a+c)||(c>=b+a)) printf("a,b,c khong la canh cua tam giac\n"); else { chuvi=a+b+c; dientich=chuvi/2*(chuvi/2-a)*(chuvi/2b)*(chuvi/2-c); dientich=sqrt(dientich); printf("Chu vi %f \n",chuvi); printf("Dien tich %f \n",dientich); } getch(); } V d 21: (vd21)S pi c tnh thng qua cng thc sau: Pi/4=1-1/3++(-1)n/(2n+1)+..Vit chng trnh tnh s pi #include <iostream.h> #include <stdio.h> #include <conio.h> #include <iomanip.h> V Minh Ph B mn KHMT
55

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ #include <math.h> void main() { int i; float tam,epsilon,pi; epsilon=0.00001; pi=1;i=1; tam=1; while (fabs(tam/(2*i+1))>=epsilon) { tam=-tam; pi+=tam/(2*i+1); i++; } cout<<" so pi= } - V d 22: (vd22.cpp) Va g va ch, b li cho trn, 36 con 100 chn chn. Tnh s ch, g #include <iostream.h> #include <conio.h> #include <stdio.h> void main() { int x,y,s; x=1; do { x++; y=36-x; } V Minh Ph B mn KHMT
56

"<<setw(10)<<4*pi;

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ while(2*x+4*y!=100); cout<<"So ga: getch(); } } - V d trn d trn ch m t tch ca 2 ma trn ch cha tnh n vic vit cha p mt iu ny s thc hin sau ny. "<<x<<endl; cout<<"So cho: "<<y<<endl;

IX. Xu k t.
9.1. Khi nim xu.
- C/C++ s dng mng cc xu k t cha xu k t. - Xu k t c lu tr trong mng k t song n c nh du s kt thc xu bng mt phn t cui cng mang gi tr c bit: K t null l k t u tin c m k t 0 trong ASCII c k hiu trong C/C++ l \0 - Khai bo: char <ten xu>[< di]; <tn xu> s cha ti a l < di> k t. - V d: char a[50]; - Xu ch cha ti a l < di>-1, cui cng cha k hiu kt thc. - C th khai bo: char str[]=day la xau can nhap; (Khng ch ra s cc i my s t ng b tr mng nh cha dy k t trn + 1 cha \0 - Lnh gets(<tn xu): Cho php nhp <tn xu> vo t bn phm

V Minh Ph B mn KHMT

57

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ - V d: gets(a) v nhp xu a khi trong b nh c dng sau: n g u y e n v a n Nu xu va nhp l Nguyen van A - di thc ca xu l strlent. - Ba kiu khai bo sau l tng ng: 1. char text[5]={D,C,f,S,P}; 2. char text[5]=DCfSP; 3. char text[]=DCfSP; Nh vy text[0]=D,text[1]=C,text[2]=f,text[3]=S, text[4]=P. - Hai kiu u thiu 1 k t cho \0. a \0 * * *

9.2. Truy cp vo mt phn t ca xu.


-C php: <tn xu>[<ch s>] -Gii thch: Ch s chy t 0 n di cc i ca xu v cho ta phn t th <ch s>+1 - Hm xc nh di ca xu l: strlen(<xu>).Hm ny c trong th vin <string.h>.

9.3. In mt xu ra mn hnh.
- C php: cout<< <tn xu>; - V d: cout<< Thi du; cout<<st;

9.4. Nhp mt xu t bn phm


- n gin ta k hiu str l mt xu k t C php: + cin>> str; (1) ly t tp iostream.h + cin.get(str,max); (2)ly t tp iostream.h

V Minh Ph B mn KHMT

58

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ + gets(str); stdio.h - Gii thch: (1): c vo mt xu nhng n ch c xu khng cha du cch trng(du cch, du TAB, xung dng) V d nhp t toi day th str chi nhn toi - (2): c xu k t cho xu str cho n khi n nhn c ENTER hoc cho n khi t s lng cc k t l max. - (3): Cho ta xu va nhp. - Ch : Nu dng (1) (c phn u ca xu) sau dng tip (2) th s nhn c phn cn li ca xu va nhp theo(1). V d sau minh ho iu . -V d 37: (vd37.cpp) M t kt qu ca 3 cch nhp #include <iostream.h> #include <stdio.h> #include <conio.h> main() { char str[30],str1[30]; int i; int max=15; cout<<" Minh hoa cac cach nhap boi cin, cin.get, gets \n"; cin>>str; cout<<" Xau nhan duoc: getch(); cin.get(str1,max); V Minh Ph B mn KHMT
59

(3) ly t tp

"<<str<<endl;

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ cout<<" Xau nhan duoc1: getch(); gets(str); cout<<" Xau nhan duoc: getch(); return 0; } "<<str<<endl; "<<str1<<endl;

9.4. Ghp xu k t.
- C th dng hm strcat(str1,str2) trong th vin string.h ghp 2 xu, song c th xy dng chng trnh nh sau: -V d 38: (vd38.cpp)Ghp cc xu k t #include <iostream.h> /*#include <stdio.h>*/ #include <conio.h> #include <string.h> main() { char str[40]=" Hoc C++ can kien tri"; char str1[40]="Khong chan nan"; int dem1=0,dem2=0; while (str[dem1] !='\0') dem1++; while(str1[dem2] !='\0') dem2++; if ((sizeof(str)/sizeof(str[1]))<(dem1+dem2+1)) { cout<<" } else Khong the thuc hien ghep";

V Minh Ph B mn KHMT

60

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ { dem2=0; while (str1[dem2] != '\0') str[dem1++]=str1[dem2++]; str[dem1]='\0'; cout<<str; } getch(); return 0; }

9.5. Copy xu k t.
- C th dng hm strcpy(str1,str2) trong th vin chun <string.h>. - Th d sau minh ho cch to ra hm strcpy. -V d 39: (vd39.cpp) Copy cc xu k t #include <iostream.h> #include <stdio.h> #include <conio.h> #include <string.h> main() { char str1[40], str2[40]; int i; /*cout<<" Nhap vao xau 1:"<<endl; gets(str1); gets(str2); */ cout<<" Nhap vao xau 2:"<<endl;

V Minh Ph B mn KHMT

61

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ cout<<strcpy(str1,str2); cout<<str1<<" gan xong"<<endl; getch(); return 0; } -V d 40: (vd40.cpp) S dng th vin cc hm #include <iostream.h> #include <conio.h> #include <string.h>; int main(void) { char destination[25]; char *blank="!!! ", *c=" C++ ", *turbo=" Turbo "; strcpy(destination,turbo); strcat(destination,turbo); strcat(destination,c); cout<<" xau dich :"<<destination; getch(); return 0; } 9.5. So snh xu k t. - Hai xu c di khc nhau ging nhau n di xu ngn hn c coi l xu c di b hn. - Hai xu bng nhau ging nhau nu ni dung v di ca chng ging nhau. - Xu trc sau tun th th t t in. -V dFILENAME<FILENAME A,FILENAME==FILENAME c gi tr true.

V Minh Ph B mn KHMT

62

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ - Hm so snh: strcmp(str1,str2): Cho kt qu 0 nu bng, <0 nu str1<str2,>0 nu str1>str2. -V d 41: (vd41.cpp) chng trnh so snh 2 xu. /* Copy xau ky tu */ #include <iostream.h> #include <stdio.h> #include <conio.h> #include <string.h> main() { char str1[40], str2[40]; cout<<" Nhap vao xau 1:"<<endl; gets(str1); cout<<" Nhap vao xau 2:"<<endl; gets(str2); if (strcmp(str1, str2)==0) cout<<" giong nhau hoan toan"; else (strcmp(str1,str2)<0) ? (cout<<str1): (cout<<str2); cout<<" dung truoc "; (strcmp(str1,str2)<0) ? (cout<<str2): (cout<<str1); getch(); return 0; } -V d 42: (vd42.cpp)In ra m k t tng ng vi cc k t trong xu #include <iostream.h> #include <stdio.h> #include <conio.h> V Minh Ph B mn KHMT
63

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ #include <string.h> void main() { char *str1; char st[80]; do { str1=st; cin.get(st,80); while(*str1) cout<<int(*str1++)<<" } while(strcmp(st,"done")==0); getch(); } -V d 43: (vd43.cpp)i ch thnh ch hoa v m c bao nhiu ln xut hin ca cc k t xut trong xu. #include <iostream.h> #include <stdio.h> #include <conio.h> #include <string.h> #include <ctype.h> #define dodai 80 void main() { char str[dodai]; int i, demchu['Z' - 'A'+1]; V Minh Ph B mn KHMT
64

";

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ clrscr(); for(i=0;i<=('Z'-'A'+1);i++) demchu[i]=0; cin.get(str,dodai); for(i=0;i<strlen(str);i++) str[i]=toupper(str[i]); cout<<str; for(i=0;i<=strlen(str);i++) demchu[str[i]-'A']++; for(i='A';i<='Z';i++) if (demchu[i-'A']) cout<<"\n so chu"<<char(i)<<"--"<<demchu[i-'A']; getch(); }

X. Kiu d liu c cu trc.


- Kiu d liu c cu trc l kiu d liu m mi phn t c nhiu thnh phn v cc thnh phn ny c kiu khc nhau. Trong C/C++ c nh ngha kiu struct vit tt cach structure, ging nh bn ghi trong pascal.

10.1. M t v Khai bo.


- M t v h s ca sinh vin nh sau: struct hoso { char hoten[20]; char quequan[30]; int diemtoan; V Minh Ph B mn KHMT
65

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ int diemly; int diemtin; float dtb; } sinhvienA,sinhvienB; - M t s phc: struct sophuc {float phanthuc,phanao} z1,z2; - C php: struct <Tn kiu cu trc> { <kiu d liu 1> <trng 1>; . . . . . . . . . . <kiu d liu k> <trng k>;} <bin>; Hoc c th khai bo trc tip nh sau: struct { <kiu d liu 1> <trng 1>; . . . . . . . . . . <kiu d liu k> <trng k>;} <bin>; Cng c th khai bo trc tip nh sau: struct <Tn kiu cu trc> { <kiu d liu 1> <trng 1>; . . . . . . . . . . <kiu d liu k> <trng k>;} struct <Tn kiu cu trc> <bin>;

10.2. Truy nhp vo tng phn t ca struct

V Minh Ph B mn KHMT

66

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ - Truy nhp vo tng trng ca struct theo c php sau: <Tn bin kiu cu trc>.<trng 1>; V d: sinhvienA.diemtoan=9; sinhvienA.diemly=8; sinhvienA.diemtin=9;

10.3.Kt hp vi mng
- Kt hp vi mng lm cho chng trnh sng sa hn v tin li hn vi c php nh sau: struct { <kiu d liu 1> <trng 1>; . . . . . . . . . . <kiu d liu k> <trng k>;} <bin mng>[ di]; - Cc v d: - V d 44: Nhp vo mt danh sch nhn vin ca mt c quan. #include <iostream.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <conio.h> #include <ctype.h> #include <math.h> #define max 4 struct nhansu { char hoten[30]; struct dat

V Minh Ph B mn KHMT

67

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ { int ngay; int thang; int nam; } ngaysinh; float luong; } nguoi[50];

main() { int i; for(i=0;i<max;i++) { cout<<" Nhap ho so cho nguoi thu : "<<i+1<<endl; cout<<" Ho ten : "; gets(nguoi[i].hoten); cout<<endl; cout<<" Ngay sinh : "; cin>>nguoi[i].ngaysinh.ngay; cout<<"Thang sinh : "; cin>>nguoi[i].ngaysinh.thang; cout<<"Nam sinh : "; cin>>nguoi[i].ngaysinh.nam; cout<<endl; cin>>nguoi[i].luong; } for(i=0;i<max;i++) {

V Minh Ph B mn KHMT

68

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ cout<<nguoi[i].hoten<<" "<<nguoi[i].ngaysinh.ngay<< "/<<nguoi[i].ngaysinh.thang<<"/"<<nguoi[i].ngaysin h.nam; cout<<endl; } getch(); return 0; } - V d 45: Nhp danh sch v hin danh sch #include <iostream.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <conio.h> #include <ctype.h> #include <math.h> #define max 2 struct nhansu { char hoten[30]; struct dat { int ngay; int thang; int nam; } ngaysinh; float luong; V Minh Ph B mn KHMT
69

"<<"

Ngay

sinh

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ } nguoi[50];

void nhapdl(void); void danhsach(void); main() { nhapdl(); danhsach(); getch(); return 0; } void nhapdl(void) { int i; for(i=0;i<max;i++) { cout<<" Nhap ho so cho nguoi thu : "<<i+1<<endl; cout<<" Ho ten : "; gets(nguoi[i].hoten); cout<<endl; cout<<" Ngay sinh : "; cin>>nguoi[i].ngaysinh.ngay; cout<<"Thang sinh : "; cin>>nguoi[i].ngaysinh.thang; cout<<"Nam sinh : "; cin>>nguoi[i].ngaysinh.nam; cout<<endl; } } void danhsach(void) V Minh Ph B mn KHMT
70

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ { int i; for(i=0;i<max;i++) { cout<<nguoi[i].hoten<<" "<<nguoi[i].ngaysinh.ngay<< "Thang sinh : "<<nguoi[i].ngaysinh.thang<<"Nam sinh : "<<nguoi[i].ngaysinh.nam; cout<<endl; } } - V d 46: Bi tp tng hp #include <iostream.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <conio.h> #include <ctype.h> #include <math.h> #define max 4 struct nhansu { char hoten[30]; struct dat { int ngay; int thang; int nam; } ngaysinh; V Minh Ph B mn KHMT
71

"<<"

Ngay

sinh

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ float luong; } nguoi[50]; void nhapdl(void); void hienthi(void); void xoa(void); void themdl(void); void sapxep(void); main() { int i; int choice; do { cout<<"1: Nhap du lieu \n"; cout<<"2: Hien thi danh sach \n"; cout<<"3: Xoa mot nguoi \n "; cout<<"4: Them danh sach \n"; cout<<"5: Sap xep danh sach \n "; cout<<"6: Thoat \n "; cin>>choice; switch(choice) { case 1: nhapdl(); break; case 2: hienthi(); break; case 3: xoa(); break; V Minh Ph B mn KHMT
72

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ case 4: themds(); break; case 5: xapsep(); break; /* case 6: thoat(); break; */ } } while (choice!=6); getch(); return 0; } void nhapdl(void) { int i; cout<<" NHap day nay\n"; for(i=0;i<max;i++) { cout<<" Nhap ho so cho nguoi thu : "<<i+1<<endl; cout<<" Ho ten : "; gets(nguoi[i].hoten); cout<<endl; cout<<" Ngay sinh : "; cin>>nguoi[i].ngaysinh.ngay; cout<<"Thang sinh : "; cin>>nguoi[i].ngaysinh.thang; cout<<"Nam sinh : "; cin>>nguoi[i].ngaysinh.nam; V Minh Ph B mn KHMT
73

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ cout<<endl; } } void hienthi(void) { int i; for(i=0;i<max;i++) { cout<<" Hien thi danh sach :"<<endl; cout<<nguoi[i].hoten<<" "<<nguoi[i].ngaysinh.ngay<< "Thang sinh : "<<nguoi[i].ngaysinh.thang<<"Nam sinh : "<<nguoi[i].ngaysinh.nam; cout<<endl; } } void xoa(void) { int i,k; cout<<"Ban ghi can xoa: "<<endl; cin>>k; for(i=k-1;i<max;i++) nguoi[i]=nguoi[i+1]; cout<<" So nguoi con lai :"<<endl; for(i=0;i<max;i++) { cout<<" Hien thi danh sach sau khi xoa :"<<endl; cout<<nguoi[i].hoten<<" "<<nguoi[i].ngaysinh.ngay<< V Minh Ph B mn KHMT
74

"<<"

Ngay

sinh

"<<"

Ngay

sinh

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ "Thang sinh : "<<nguoi[i].ngaysinh.thang<<"Nam

sinh : "<<nguoi[i].ngaysinh.nam; cout<<endl; } } *** #include <iostream.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <conio.h> #include <ctype.h> #include <math.h> //#define max 4 struct nhansu { char hoten[30]; struct dat { int ngay; int thang; int nam; } ngaysinh; float luong; } nguoi[50]; void nhapdl(void); void hienthi(void); void xoa(void); void them(void); V Minh Ph B mn KHMT
75

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ int songuoi; main() { int i; cout<< So nguoi can nhap:<<songuoi<<endl; int choice; do { cout<<"1: Nhap du lieu \n"; cout<<"2: Hien thi danh sach \n"; cout<<"3: Xoa mot nguoi \n "; cout<<"4: Them 1 nguoi \n "; cout<<"5: Thoat \n "; cin>>choice; switch(choice) { case 1: nhapdl(); break; case 2: hienthi(); break; case 3: xoa(); break; case 4: them(); break; } } while (choice!=5); getch(); V Minh Ph B mn KHMT
76

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ return 0; } void nhapdl(void) { int i; cout<<" NHap day nay\n"; for(i=0;i<songuoi;i++) { cout<<" Nhap ho so cho nguoi thu : "<<i+1<<endl; cout<<" Ho ten : "; gets(nguoi[i].hoten); cout<<endl; cout<<" Ngay sinh : "; cin>>nguoi[i].ngaysinh.ngay; cout<<"Thang sinh : "; cin>>nguoi[i].ngaysinh.thang; cout<<"Nam sinh : "; cin>>nguoi[i].ngaysinh.nam; cout<<endl; } } void hienthi(void) { int i; for(i=0;i<songuoi;i++) { cout<<" Hien thi danh sach :"<<endl; cout<<nguoi[i].hoten<<" "<<nguoi[i].ngaysinh.ngay<< V Minh Ph B mn KHMT
77

"<<"

Ngay

sinh

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ "Thang sinh : "<<nguoi[i].ngaysinh.thang<<"Nam

sinh : "<<nguoi[i].ngaysinh.nam; cout<<endl; } } void xoa(void) { int i,k; cout<<"Ban ghi can xoa: "<<endl; cin>>k; for(i=k-1;i<songuoi;i++) nguoi[i]=nguoi[i+1]; cout<<" So nguoi con lai :"<<endl; for(i=0;i<songuoi;i++) { cout<<" Hien thi danh sach sau khi xoa :"<<endl; cout<<nguoi[i].hoten<<" "<<nguoi[i].ngaysinh.ngay<< "Thang sinh : "<<nguoi[i].ngaysinh.thang<<"Nam sinh : "<<nguoi[i].ngaysinh.nam; cout<<endl; } } void them(void) { songuoi=songuoi+1; cout<<" Nhap ho so cho nguoi thu : "<<songuoi<<endl; cout<<" Ho ten : "; gets(nguoi[songuoi].hoten); V Minh Ph B mn KHMT
78

"<<"

Ngay

sinh

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ cout<<endl; cout<<" Ngay sinh : "; cin>>nguoi[songuoi].ngaysinh.ngay; cout<<"Thang sinh : "; cin>>nguoi[songuoi].ngaysinh.thang; cout<<"Nam sinh : "; cin>>nguoi[songuoi].ngaysinh.nam; cout<<endl; }

XI. D liu kiu tp


- Khi gii cc bi ton ta cn lu gi li cc kt qu hoc nhp nhng thng tin ban u, vic lm c hiu qu ngi ta thc hin thng qua cc tp tin. - Mi mt phn t c tp tin c b tr nh mt ca s, kt thc tp c k hiu l EOF. - Trong C/C++ c mt hm chun feof c kiu boolean vi tham s l bin tp cho bit ca s t vo v kt thc tp cha(c gi tr true nu kt thc). - Truy nhp vo tp c 2 phng php: tun t v trc tip - Vic x l tp gm 4 bc: 1. Khai bo bin tp 2. M hoc ghi tp 3. Ghi hoc c tp 4. ng tp

V Minh Ph B mn KHMT

79

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++

11.1. Khai bo tp.


- C php: FILE * <tn con tr tp>; - Gii thch: <Tn con tr tp> do ngi s dng t theo mun min l hp l. Ta hay dng fprt (file pointer)

11.2. M tp ghi hoc c.


- C php: <bin tp>=fopen(<tn tp trn a>,<kiu x l tp>); - Th d: + fptr=fopen(<ng dn\\thidu.txt,w); M mt tp c tn trong ng dn ghi(w) + fptr=fopen(<ng dn\\thidu.txt,r); M mt tp c tn trong ng dn c(r)

11.3. Cc quy c x l tp
- w : M tp mi ghi. - r : M tp tn ti c. - a : M tp tn ti v ghi thm d liu vo cui ra. - r+ : M tp c cho php c ghi v c. - w+ : M tp mi cho php c ghi v c.Nu c tp th my s hu v thay d liu c. - a+ : M tp c cho php c c v ghi thm d liu vo cui tp hoc c tp. - i vi tp nh phn th ta thm k t b hoc +b vo sau cc k t trn. tp. Nu tp cha c th s c t ng to

11.4. ng tp
- C php: fclose(fprt); V Minh Ph B mn KHMT
80

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ - Cu trc chung ca chng trnh x l tp c dng: #include <stdio.h> main() { FILE *fprt; fprt=fopen(vidu.dat,wb); if (fprt=null) cout<< Khong mo duoc tep)<<endl; else { . . . } fclose(fprt); } }

11.5 Ghi d liu vo tp nh phn


- Hm ghi d liu vo tp: fwrite(&<bin>,sizeof(<bin>),<s khi>,fprt); + &<bin> l a ch ca khi d liu + sizeof(<bin>): Kch thc <bin> + <s khi>: S khi d liu cn ghi vo tp + Con tr tp - V d 47. To tp nh phn ghi 100 s thp phn t 1 n 100. #include <stdio.h> main() { char filename[20];

V Minh Ph B mn KHMT

81

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ int i; long num; FILE * f; cout<< ten tep can tao:<<endl; cin>>filename; f=fopen(filename,wb); for(i=1;i<=100;i++) fwrite(&i,sizeof(int),1,f); fclose(f); }

11.6 c d liu t tp nh phn


- Hm c d liu t tp nh phn c: fread(&<bin>,sizeof(<bin>),<s khi>,fprt) + &<bin> l a ch ca bin cn ghi d liu t bin tp ra(con tr tp) + sizeof(<bin>): Kch thc <bin> + <s khi>: S khi d liu cn ghi vo tp + fprt:Con tr tp + Khi ghi gi tr ra bin th phi lun kim tra xem ca s tp ch n ht tp cha bng hm EOF bng 1 trong cc cch sau: if (ch=getc(fp),!EOF); Hm getc(fp) c hiu l c mt k t hay 1 byte ca tp c con tr l fp. if (ch=getc(fp),!EOF): Cu lnh trn c ngha l c 1 k t t fp v th xem gi tr ca n l EOF hay khng. Nu mun qut tt c cc phn t ca tp th: while((ch=getc(fp)) !EOF)

V Minh Ph B mn KHMT

82

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ - V d 41. c tp nh phn c. #include <stdio.h> #include <conio.h> #include <iotream.h> main() { char filename[20]; int i; FILE * f; cout<< ten tep can doc:<<endl; cin>>filename; f=fopen(filename,rb); while (fread(&i,sizeof(int),1,f), !feof(f)) cout<<(i*i)<< fclose(f); getch(); return 0; } - V d 49. Ghi vo tp mi 50 s cui ca tp v I ra mn hnh bnh phng ca chng #include <stdio.h> #include <iostream.h> #include <conio.h> main() { char filename[20]; int i; FILE * f, *f1; cout<<" ten tep can doc:"<<endl; V Minh Ph B mn KHMT
83

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ cin>>filename; f=fopen(filename,"rb"); f1=fopen("sn1.dat","wb"); while (fread(&i,sizeof(int),1,f), !feof(f)) { if(i>50) fwrite(&i,sizeof(int),1,f1); cout<<(i*i)<<" } /* do { fread(&i,sizeof(int),1,f) if(!feof(f)) cout<<(i*i)<<" } while ( !feof(f)) */ fclose(f); fclose(f1); getch(); return 0; } - V d 50. Sao chep mot tep sang tep khac #include <stdio.h> #include <iostream.h> #include <conio.h> main() { char filename[20]; char filename1[20]; V Minh Ph B mn KHMT
84

";

";

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ int i; FILE * f, *f1; cout<<" ten tep nguon: "<<endl; cin>>filename; cout<<" ten tep dich: cin>>filename1; f=fopen(filename,"rb"); f1=fopen("sn1.dat","wb"); { while (fread(&i,sizeof(int),1,f), !feof(f)) fwrite(&i,sizeof(int),1,f1); } fclose(f); fclose(f1); getch(); return 0; } "<<endl;

11.7 Ghi c d liu cu trc


- Cc v d trn x l cc tp c cc phn t c d liu n gin chun. Tp thuc kiu struct cng c kiu nh phn. - Chng trnh phm - V d 51. To tp d liu cu trc nhn s #include <stdio.h> #include <iostream.h> #include <conio.h> #include <string.h> sau ho php ta nhp d liu t bn

V Minh Ph B mn KHMT

85

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ #include <ctype.h> #define TRUE 1 char ss[80]; typedef struct { int ngay; int thang; int nam; } date; typedef struct { char ten[80]; char diachi[80]; date ngaysinh; float luong; } mau_nhan_su; mau_nhan_su read_screen(mau_nhan_su Nguoi); FILE * fpt; main() { int flag=TRUE; mau_nhan_su Nguoi; fpt=fopen("nhansu.dat","wb"); Nguoi.luong=0; while(flag) { cout<<" Ten :(AN enter de ket thuc gets(Nguoi.ten); if(Nguoi.ten[0]=='\0') break; Nguoi=read_screen(Nguoi); V Minh Ph B mn KHMT
86

" <<endl;

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ fwrite(&Nguoi,sizeof(mau_nhan_su),1,fpt); } fclose(fpt); return 0; } mau_nhan_su read_screen(mau_nhan_su Nguoi) { printf("Cho ngay thang nam sinh: "); scanf("%d/%d/ %d",Nguoi.ngaysinh.ngay,Nguoi.ngaysinh.thang,Nguoi.n gaysinh.nam); printf("Dia chi hien tai: "); gets(Nguoi.diachi); gets(ss); printf("Luong : "); scanf("%f",&Nguoi.luong); gets(ss); return(Nguoi); } *

11.8. Truy cp trc tip tp d liu nh phn.


- C/C++ ch nh ngha mt kiu tp: Tp truy cp tun t - Truy nhn do di ca cc phn t l nh nhau nn c th tnh ton to ca chng v iu ny cho php ta truy cp trc tip n tng phn t ca tp. - Hm truy cp trc tip l:fseek

V Minh Ph B mn KHMT

87

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ C php: fseek(fptr,No*<kich_thuoc-

phan_tu>,SEEK_SET) - Gii thch: + fptr: Con tr tp + No: V tr s th t ca phn t trong tp + <kich_thuoc-phan_tu>: thng c thc hin bng sizeof() v cho ta to ca phn t. + Tham s cui cng: SEEK_SET: Di chuyn v tr truy cp bt u t u ca tp s hin ti ca tp SEEK_CUR: Di chuyn tnh t v tr hin ti ca SEEK_END: Di chuyn tnh t to cui tp. -V d 52: Truy cp trc tip tp c: #include <stdio.h> #include <iostream.h> #include <conio.h> #include <string.h> #include <ctype.h> FILE * f; main() { char tentep[20]; char ch; int n,No; printf(" Cho ten tep:" ); scanf("%20s",tentep); f=fopen(tentep,"r");

V Minh Ph B mn KHMT

88

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ while(printf("Phan "),scanf("%1d",&No,No)) { fseek(f,sizeof(int)*(No-1 ),SEEK_SET); fread(&n,sizeof(int),1,f); printf("Gia tri tim thay : %d \n",n); } printf("Gia tri tim thay : %d \n",n); fclose(f); getch(); } - Vi du 53. Truy cp trc tip tp va ghi va c #include <stdio.h> #include <iostream.h> #include <conio.h> #include <string.h> #include <ctype.h> FILE * stream; main(void) { char msg[]="Day la chuong trinh chay thu"; char buf[20]; if ((stream=fopen("ghidoc.dat","w+"))==NULL) { fprintf(stderr," Khong mo duoc tep\n"); return 1; } fwrite(msg,strlen(msg)+1,1,stream); printf("%s\n",buf); V Minh Ph B mn KHMT
89

tu

can

truy

cap

thu:

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ fclose(stream); getch(); return 0; } - Vi du 54. Truy cp trc tip cp nht d liu #include <stdio.h> #include <iostream.h> #include <conio.h> #include <string.h> #include <ctype.h> main() { FILE * f; char tentep[20]; int n,k; long m; printf(" tentep); f=fopen(tentep,"w"); k=1; while(printf("Phan { printf("Gia tri cap nhat:\n"); scanf("%1d",&n); fseek(f,sizeof(int)*(m-1),SEEK_SET); fwrite(&n,sizeof(int),1,f); V Minh Ph B mn KHMT
90

Ten

tep

can

xu

ly:

");scanf("%20s",

tu

thu

may

can

cap

nhat:

"),scanf("%1d",&m,m))

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ cout<<"Lan thu: "<<k<<endl; k++; } fclose(f); getch(); } - V d 55. Cp nht tp cu trc nhn s #include <stdio.h> #include <iostream.h> #include <conio.h> #include <string.h> #include <ctype.h> #define TRUE 1 typedef struct { int ngay; int thang; int nam; } date; typedef struct { char ten[80]; char diachi[80]; date ngaysinh; float luong; } mau_nhan_su; void write_screen(mau_nhan_su); mau_nhan_su read_screen(mau_nhan_su Nguoi); FILE * fpt; main() V Minh Ph B mn KHMT
91

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ { int No; long kich_thuoc,pos; mau_nhan_su Nguoi; fpt=fopen("nhansu.dat","rb"); fseek(fpt,0,SEEK_END); /* Xac dinh kich thuoc tep*/ kich_thuoc=ftell(fpt); cout<<"Can cap cin>>No; pos=No*sizeof(mau_nhan_su); if(No<0 || pos>kich_thuoc) cout<<"Khong co phan tu trong tep"<<endl; else { fseek(fpt,pos-1,0); fread(&Nguoi,sizeof(mau_nhan_su),1,fpt); write_screen(Nguoi); } return 0; } void write_screen(mau_nhan_su Nguoi) { printf("Ten : %s\n",Nguoi.ten); printf("Ngaysinh: i.ngaysinh.nam); printf("Dia chi hien tai: ",Nguoi.diachi); printf("Luong : %8.2f\n",Nguoi.luong); return; V Minh Ph B mn KHMT
92

nhat phan tu thu may " <<endl;

%2d/%2d/

%2d\n",Nguoi.ngaysinh.ngay,Nguoi.ngaysinh.thang,Nguo

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ }

XII. Tp vn bn
- Cc phn t ca tp vn bn l cc k t v c t chc thnh tng dng. - Mi dng c k hiu kt thc dng(End of line) - Cc cp k t iu khin: CR(nhy v u dng m s ASCII=13,\r); LF(nhy xung dng tip theo m s ASCII=10,\n) 12.1. M tp vn bn mi ct d liu - Gm cc hm sau: 1. putc(ch,fprt): Ghi mt k t vo tp vn bn 2. fputs(str,fprt): Ghi xu k t vo tp vn bn 3. fprintf(fprt,): kt qu ra tp vn bn c con tr fprt - Mi ln ghi xong my s t ng chuyn ca s n v tr tip theo. 12.2. Cc v d - V d 56. Ghi mt dng cc ch hoa vo tp #include <stdio.h> #include <iostream.h> #include <conio.h> #include <string.h> #include <ctype.h> main() { FILE * f; char c; /* Cach nay doc doc ten tep vao tu ban phim

V Minh Ph B mn KHMT

93

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ char tentep[11]; cout<<"Ten tep :"<<endl; gets(tentep); f=fopen(tentep,"w"); do */ f=fopen("d:\\tc\\bin\\vidu.txt","w"); /* Doc ky tu tu ban phim,chuyen chu hoa va ghi vao tep*/ putc(toupper(c=getchar()),f); while(c!='\n'); fclose(f); return 0; } - Vi du 57. Ghi c d liu cu trc #include <stdio.h> #include <iostream.h> #include <conio.h> #include <string.h> #include <ctype.h> #define TRUE 1 typedef struct { int ngay; int thang; int nam; } date; typedef struct { char ten[80]; char diachi[80]; date ngaysinh; float luong; V Minh Ph B mn KHMT
94

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ } mau_nhan_su; mau_nhan_su read_screen(mau_nhan_su Nguoi); void write_file(mau_nhan_su Nguoi); FILE * f; char ss[80]; main() { int flag=TRUE; mau_nhan_su Nguoi; f=fopen("Nhan_su.dat","w"); Nguoi.luong=0; while (flag) { cout<<" Ten : (An ENTER de ket thuc"; gets(Nguoi.ten); if (Nguoi.ten[0]=='\0') break; Nguoi=read_screen(Nguoi); write_file(Nguoi); } fclose(f); return 0; } mau_nhan_su read_screen(mau_nhan_su Nguoi) { printf(" Hay cho ngay/thang/nam :"); scanf("%d/%d/ %d",&Nguoi.ngaysinh.ngay,&Nguoi.ngaysinh.thang,&Nguo i.ngaysinh.nam); V Minh Ph B mn KHMT
95

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ gets(ss); cout<<"Dia chi :"; gets(Nguoi.diachi); cout<<"Luong :"; scanf("%f",&Nguoi.luong); gets(ss); return(Nguoi); } void write_screen(mau_nhan_su Nguoi) { fprintf(f,Nguoi.ten); fprintf(f,"Ngaysinh: Nguoi.ngaysinh.nam); fprintf(f,"Dia chi hien tai: ",Nguoi.diachi); fprintf(f,"Luong : %8.2f\n",Nguoi.luong); return; } - Vi du 58. c mt dng cc ch t tp vn bn #include <stdio.h> #include <iostream.h> #include <conio.h> #include <string.h> #include <ctype.h> main() { FILE *f; char c; /* Cach nay doc doc ten tep vao tu ban phim V Minh Ph B mn KHMT
96

%2d/%2d/

%2d\n",Nguoi.ngaysinh.ngay,Nguoi.ngaysinh.thang,

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ char tentep[11]; cout<<"Ten tep :"<<endl; gets(tentep); if((f=fopen(tentep,"r"))==NULL); printf(" Tep co loi, hoac chua ton tai \n"); else */ if ((f=fopen("d:\\tc\\vidu.txt","r"))==NULL) cout<<" Tep co loi, hoac chua ton tai "<<endl; else do putchar(c=getc(f)); while(c!='\n'); fclose(f); getch(); return 0; } ****

XVI. Truy nhp trc tip, cc th tc v cc hm x l tp. -Pascal cho php truy nhp trc tip thng qua th tc SEEK c c php sau: 16.1. Th tc SEEK. - C php: SEEK(<bien tep>,No>) trong No l phn t th No+1 cn truy nhp.

V Minh Ph B mn KHMT

97

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ V d: In ni dung phn t th 4 trong tp

chuong.dat Program VD59; Var i:integer; f:file of byte; begin assign(f,'chphuong.dat'); reset(f); seek(f,3); read(f,i); write(i); readln; close(f); end. 16.2. Cc hm theo tc trn tp. - Hm FILESIZE(<bien tep>): Cho ta s phn t ca tp. - Mun ghi thm phn t vo cui tp: Ta dng cm lnh +SEEK(<bien tep>,Filesize(<bien tep>))-a con tr vo v tr cui cng ca tp +Thc hin vic thm vo - ERASE(<bien tep>): Xa tp ang c trn a. - Hm FILEPOS(<bien tep>): Cho bit v tr hin ti ca con tr tp(0 ch vo phn t u) - Hm RENAME(<bientep>,str): i tn tp c sang tp mi VD: assign(f,'tep1.dat'); rename(f,'tep2.dat'); V Minh Ph B mn KHMT
98

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ 16.3. Cc v d ng dng - V d: Nhp vo t bn phm danh sch hc sinh, sp xp theo th t tang dn theo h tn Program VD60; const n=5; Var hoten: array[1..n] of string[20]; i,j:integer; tam:string[20]; begin for i:=1 to n do begin write(' Nhap hoc sinh thu ',i,' :'); readln(hoten[i]); end; for i:=2 to n do for j:=n downto i do if hoten[j-1]>hoten[j] then begin tam:=hoten[j-1]; hoten[j-1]:=hoten[j]; hoten[j]:=tam; end; for i:=1 to n do writeln(hoten[i]); readln; end. - V d: Xc nh xem c bn Lan hay khng, nu c th c my ln Program VD61; const n=5; Var hoten: array[1..n] of string[20]; i,j:integer; tam:string[20]; begin for i:=1 to n do begin write(' Nhap hoc sinh thu ',i,' :'); readln(hoten[i]); end; j:=0; for i:=1 to n do if pos('lan',hoten[i])<>0 then V Minh Ph B mn KHMT
99

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ j:=j+1; writeln(' co: ',j,' ban Lan trong danh sach'); readln; end. Chng trnh trn c th miu t di dng th tc nh sau: Program VD61; const n=5; procedure Tieude; begin writeln(' Day la chuong trinh dem so lan xuat hien Lan'); writeln(' Nguoi thuc hien: Nguyen Van A lop 5GHVKTQS'); writeln(' *******************************************'); end; Procedure nhapds; Var hoten: array[1..n] of string[20]; i,j:integer; tam:string[20]; begin for i:=1 to n do begin write(' Nhap hoc sinh thu ',i,' :'); readln(hoten[i]); end; j:=0; for i:=1 to n do if pos('lan',hoten[i])<>0 then j:=j+1; writeln(' co: ',j,' ban Lan trong danh sach'); readln; end; BEGIN tieude; nhapds; END. - quy: Tnh n giai tha Program VD62; Var n:integer; Function factorial(m:integer):Longint; V Minh Ph B mn KHMT
100

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ begin if m=1 then factorial:=1 else Factorial:=m*factorial(m-1); end; BEGIN readln(n); write(factorial(n)); readln; END. - a vo tp cc s chnh phng trong khon t 1 n n v c ngc ra mn hnh. Program VD63; const n=10000; Var f:file of Longint; s, i:longint; Begin assign(f,'chphuong.dat'); rewrite(f); for i:=1 TO trunc(sqrt(n)) do begin s:=i*i; write(f,s); end; close(f); { c ngc ra mn hnh} assign(f,'chphuong.dat'); reset(f); while not eof(f) do begin read(f,s); write(s,' '); end; close(f); readln; end. - V d: a s chnh phng th k trong tp cha cc s chnh phng ra mn hnh. Program VD64; Var f:file of Longint; s,k:longint; V Minh Ph B mn KHMT
101

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ Begin Write( Nhap vao so chinh phuong k=);readln(k); assign(f,'chphuong.dat'); reset(f); seek(f,k); read(f,s); write(s,' '); close(f); readln; end. - V d: Nhp danh sch sinh vin v lu ra tp. Program VD65; uses crt; const n=3; Type sinhvien=record maso:integer; hoten:string[25]; namsinh:string[2]; diemGT:byte; diemDS:byte; diemTH:byte; end; var ds:array[1..n] of sinhvien; i:integer; TB:real; dem:sinhvien; f:file of sinhvien; chon,chon1:byte; Procedure Menu(var chon:byte); begin window(50,15,80,25); writeln('------------------'); writeln(' MENU '); writeln(' Nhap thong tin '); writeln(' Sua thong tin '); writeln(' Liet ke danh sach'); writeln(' Thoat '); writeln('Chon chuc nang '); gotoxy(20,8);readln(chon); clrscr; end; V Minh Ph B mn KHMT
102

thu

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ Procedure Nhapdulieu; var i:integer; begin assign(f,'danhsach.dat'); rewrite(f); for i:=1 to n do begin with ds[i] do begin write(' Ma so: ');readln(maso); write(' Ho ten: ');readln(hoten); write(' Nam sinh: ');readln(namsinh); write(' Diem Giai tich): ');readln(diemGT); write(' Diem Dai so): ');readln(diemDS); write(' Diem Tin hoc): ');readln(diemTH); end; write(f,ds[i]); end; close(f); clrscr; end; procedure Suathongtin; var so:integer; begin assign(f,'danhsach.dat'); reset(f); i:=1; while not eof(f) do begin read(f,ds[i]); i:=i+1; end; write('Sua ban ghi so: ');readln(so); seek(f,so -1); WRITEln(' TEN HIEN TAI CUA BAN GHI: ', DS[SO].HOTEN); write(' ho ten can sua :');readln(ds[so].hoten); write(f,ds[so]); close(f); end; procedure Hienthongtin; begin assign(f,'danhsach.dat'); V Minh Ph B mn KHMT
103

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ reset(f); i:=1; while not eof(f) do begin read(f,ds[i]); i:=i+1; end; for i:=1 to n do writeln(' ',i,ds[i].hoten); readln; close(f); end; BEGIN repeat menu(chon1); case chon1 of 1: Nhapdulieu; 2: Suathongtin; 3: Hienthongtin; end; until chon1=5; END. - V d: Cng 2 s nguyn ln Program VD66; var so1,so2,so3:string; ch:string[2]; x,y,z,i,code:integer; nho:byte; begin clrscr; write('Nhap so thu nhat: ');readln(so1); write('Nhap so thu nha2: ');readln(so2); if length(so1)>length(so2) then for i:=1 to length(so1)-length(so2) do insert('0',so2,1) else if length(so2)>length(so1) then for i:=1 to length(so2)-length(so1) do insert('0',so2,1); nho:=0; so3:=''; for i:=length(so2) downto 1 do V Minh Ph B mn KHMT
104

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ begin val(so1[i],x,code); val(so2[i],y,code); if x+y<10 then begin z:=x+y; nho:=0; end else begin z:=x+y-10; if i=length(so2) then nho:=0 else nho:=1; if i=1 then z:=Z+10; end; str(z+nho,ch); so3:=ch+so3; end; write(so3); readln; end.

XVII. Tp vn bn. 17.1. Cc khi nim. - Khai bo: Var <bien tep>:TEXT; - c im: +Thnh phn c s ca tp TEXT l k t. +Tp vn bn c cu trc thnh cc dng mi dng kt thc bng EOLN,vi Turbo pascal l cp k t iu khin CR (m ASCII=13) v LF nhy xung dng tip theo ( M ASCII=100) - Mun c v in tng dng ca tp vn bn th dng dng TEXT mu c v in

V Minh Ph B mn KHMT

105

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ tng k t th dng FILE OF CHAR. - M t lu tr trong tp TEXT: Gi s ni dung tp vn bn: BO MON TIN HOC VA TINH TOAN KHOA CNTH Vic lu gi trong tp c m t nh sau: [BO MON TIN HOC VA TINH TOAN] [CRLF][KHOA CNTH] [EOF] 17.2. Cc hm chun. - Hm chun EOF: EOF(Var <bien tep>:TEXT): BooLean; Hm cho gi tr TRUE khi tr vo cui tp. - Hm chun OLN: EOLN(Var <bien tep>:TEXT): BooLean; Cho gi tr true khi tr vo cui dng - Ghi vo mt tp vn bn. + Chng ta c th ghi cc gi tr kiu integer, real, boolean, string vo tp vn bn bng lnh WRITE hay WRITELN. Cch ghi ny cho php chuyn cc gi tr bng so sang dng k t, cho php vit cc bng biu d liu vi quy cch mong mun. + C php: WRITE(<bien tep>,Item1,...,Itemk); WRITELN(<bien tep>,Item1,...,Itemk); WRITELN(<bien tep>); hng,biu thc c kiu n gin nh Integer, real,string,boolean vo bin tp. V Minh Ph B mn KHMT
106

(1) (2) (3)

(1): Vit cc gi tr ca cc Item l cc

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ (2):Tng t (1) nhng a thm k hiu ht dng vo sau tp. (3):a thm du hiu ht dng vo tp. (2) tng ng (1)+(3). 17.3. Cc v d. +VD: Var a:byte; x:real;st:string;f:TEXT; Co the viet: write(f,'vi du',a,x+3,st); +VD: Tao tep van ban gom 5 dong Program VD68; Var f:text; begin assign(f,'Vanban.txt'); rewrite(f); writeln(f,'Song chien dau nhu nhung nguoi cong san'); writeln(f,'Trai tim lon khong so gi sung dan'); writeln(f,'Anh ho ton'); writeln(f); writeln(f,'Viet nam muon nam'); writeln(f,'Mau tim anh nhuom do dat anh nam'); write(f); close(f); end. 17.4. c d liu t tp vn bn. - C th c cc d liu ging nh nu trn t cc tp vn bn bng cc cu lenh READ,READLN

V Minh Ph B mn KHMT

107

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ (1) READLN <bien tep>,Var1,...,vark); (2) READLN (3) - Gii thch: + READ: c lin tip cc gi tr ca <bien tep> vo cc bin dng. + READLN: Sau khi oc xong con tr nhy xung dong di. + READLN(f): a con tr xung dng di m khng c g. - V d: c ni dung cc dng trong tp Vanban.txt ra mn hnh. Program VD46; uses crt; Var f:text; dong:string[80]; Begin assign(f,'Vanban.txt'); reset(f); While not eof(f) do begin readln(f,dong); writeln(dong); end; close(f); V Minh Ph B mn KHMT
108

php:

READ(<bien

tep>,Var1,...,vark);

<bien

tep>;

<Var1>,..,<Vark> m khng xung

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ end. 17.5. Th tc thm dng: - C php :APPEND(Var <bien tep>:TEXT) thc hin: + M tp vn bn ghi b sung cc dng. + nh v ca s tp vo cui tp. + Cu lnh WRITE hoc WRITELN tip sau s thm vn bn vo cui tp. - V d thm mt dng mi vo tp vn bn c Program VD47 uses crt; Var f:text; dong:string[80]; Begin assign(f,'Vanban.txt'); reset(f); dong:='Moi nguoi thuong tiec va kham phuc anh'; append(f); writeln(f,dong); close(f); end. XVIII. Cc thit b. Mt s phn mm ca PASCAL coi cc thit b ngoi nh cc tp vn bn ngha l vic xut-nhp c thc hin bng cc thao tc nh vi tp vn bn. i vi TURBO PASCAL ta s dng c chun sau: 18.1. OUTPUT: V Minh Ph B mn KHMT
109

tp

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ - L tp xut c bn. - N c t ng gn cho mn hnh - Khi dng bin tp OUPUT i vi cc th tc WRITE,WRITELN khng cn ghi r OUTPUT - Write(a,b,c) hiu l write(output,a,b,c); 18.2.INPUT: - L tp c bn ng vi tp cha d liu ngun vo. - Thng t ng 18.3. LST: - Trong TURBO PASCAL my in c nh ngha l bin tp LST. - Bin LST c t trong n v chng trnh PRINTER.TPU. - Mun c nhu cu in phi dng cu lnh uses printer ngay u chng trnh - In ni dung vn bn ra mn hnh c vit nh sau: Program VD48; uses printer; Var f:text; dong:string[80]; Begin assign(f,'Vanban.txt'); reset(f); while not eof(f) do begin V Minh Ph B mn KHMT
110

bn phm.

- Read(<bien>) tng ng Read(INPUT,<bien>).

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ readln(f,dong); writeln(LST,dong); end; close(f); end. 18.4. Mt s v d. - V d: Nhp t bn phm mng mt chiu v mng 2 chiu. To ra 2 tp vn bn lu tr mt mng mt chiu v mt mng 2 chiu. Program VD49; uses crt; const n=5; var a:array[1..n] of real; b:array[1..n,1..n] of real; f1,f2:text; i,j:integer; procedure taotep1; begin assign(f1,'mang1.dat'); rewrite(f1); for i:=1 to n do begin write('Nhap gia tri : a[',i,']');readln(a[i]); write(f1,a[i]); end; close(f1); end; procedure taotep2;

V Minh Ph B mn KHMT

111

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ begin assign(f2,'mang2.dat'); rewrite(f2); for i:=1 to n do begin for j:=1 to n do begin write('Nhap b[',i,',',j,']');readln(b[i,j]); write(f2,b[i,j]); end; writeln(f2); end; close(f2); end; BEGIN taotep1; taotep2; END. - c d liu t 2 tp lu gi mng mt chiu v mng 2 chiu ra bin. Program VD50; uses crt; const n=5; var i,j:integer; dem:real; f1,f2:text; procedure doctep1; begin V Minh Ph B mn KHMT
112

gia

tri

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ assign(f1,'mang1.dat'); reset(f1); writeln(' Noi dung cua tep mang 1: '); while not eof(f1) do begin read(f1,dem); write(dem:5:2,' end; close(f1); end; procedure doctep2; var b:array[1..n,1..n] of real; begin assign(f2,'mang2.dat'); reset(f2); writeln(' Ma tran la: '); for i:=1 to n do begin for j:=1 to n do begin read(f2,b[i,j]); write( b[i,j]:5:2,' end; writeln; end; close(f2); end; BEGIN doctep1; V Minh Ph B mn KHMT
113

')

');

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ readln; doctep2; readln; END. XIX. Kiu con tr ng. 19.1. Kiu con tr. - Bin tnh: + Cc bin thuc cc kiu d liu hc gi l bin tnh + Thi gian tn ti ca bin tnh l thi gian tn ti ca khi chng trnh con cha n khi c gi. + Do c th trn nn lm cho b nh b thu hp m khng c cch khc phc. - Bin ng: + Turbo pascal cho php dng bin ng nhm khc phc tnh trng lng ph b nh. + Bin ng d lu trong vng HEAP, khi cn n s c to ra cha d liu. + Khi khng cn n na th c th xa ngay trong chng trnh gii phng b nh. + Bin ng khng c tn v do con tr qun l. 19.2. Bin con tr: - Bin con tr(Pointer variable):l loi bin c bit c kch thc V Minh Ph B mn KHMT
114

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ 2 byte, khng dng cha d liu m ch cha a ch ca cc bin ng. - Khai bo: Type <Kieu con tro>=^<Kieu du lieu>; Var <bien con tro>:<Kieu con tro>; - Vi khai bo trn c ngha l:<Bien con tro> thuc <Kieu con tro> dng ch a ch ca cc bin ng c kiu <Kieu du lieu> - thm nhp vo bin ng c a ch <bien con tro> ta dng cu lnh: <Bien con tro>^. - VD: Type IntPtr=^Integer; svPrt:=^sinhvien; sinhvien=recod hoten:string[25]; diemGT:real; diemDS:real; end; Var ptr1:IntPtr;{ Bin con tr cha a ch bin ng c kiu integer} ptr2:^word; { Bin con tr cha a ch bin ng c kiu word} p:svPtr; { Bin con tr cha a ch bin ng c kiu sinhvien} 19.3.Thao tc vi con tr.

V Minh Ph B mn KHMT

115

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ - Php gn: C th gn P:=Q c ngha l q tr n u th p ch n . - C th dng cc php so snh <>,>=,<=,= - Cc gi tr ca <bien con tro> khng th c vo t bn phm v in trc tip ra mn hnh. -NIL: L gi tr c bit ni con tr khng ch vo u c. 19.4. Cap phat vung nho cho bien dong: - C php: new(<bien con tro>): My s to ra vng nh c kiu v kch thc do <bien con tro> quy nh. Hng con tr tr ti vng bin ng khai bo - Nu ta dng n ln NEW(p) th s to ra n bin ng song con tr p ch tr vo bin ng c to ra ln cui cng. - VD: ......... new(p) p^.hoten:="Nguyen Thi A'; p^.diemGT:=8; p^.diemDS:=8; new(p); p^.hoten:="Nguyen Van B'; p^.diemGT:=7; p^.diemDS:=8; ....

V Minh Ph B mn KHMT

116

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ Con tr p ch vo bn ghi th 2 tc l bin ng th 2. 19.5. Gii phng nh v thu hi bin ng. - C php: DISPOSE(<bien con tro>): Gii phong nh ca bin ng <bien con tro>^ 19.6. Phn b b nh, HEAP v STACK. - HEAP l vng nh dng lu tr cc bin ng + Turbo pascal qun l HEAP thng qua con tr heap. + Con tr heap lun tr vo byte( nh) t do u tin ca vng nh t do ca heap. + Mi ln gi NEW con tr ca heap dch chuyn v phi nh ca vng nh t mt s byte tng ng vi kch thc ca bin ng mi c to ra. - Gii ta vng HEAP: + Th tc DISPOSE ch c tc dng xo bin ng + gii to vng nh ta dng cc th tc sau - Th tc MARK(<bien con tro>) + Gn gi tr con tr HEAP cho PVar, nhm nh du v tr u tin ca vng nh cn gii phng. + Cc th tc NEW nu c to sau s chim nh k t v tr c nh du. - Th tc RELEASE(<bien con tro>): + Xa cc bin ng c to ra sau khi nh du MARK. V Minh Ph B mn KHMT
117

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ - V d: Program VD51; Var Psonguoi:Pointer; {Pointer la con tro tong quat} Pds: array[1..30] of ^integer; s,i:integer; Begin Mark(Pmax);{danh dau vung heap} For i:=1 to 30 do begin new(pds[i]); readln(pds[i]^); end; s:=0; for i:=1 to 30 do s:=s+(pds[i]^); release(pmax); write(s); end. 19.7. Mt s v d v bin con tr. - NHp mt a thc di dng danh sch lin kt, con tr ch vo cc nt, mi nt cha h s(Coef), lu tha(exp) v ch n a ch nt tip theo(next). - V d: Nhp vo a thc theo cu trc trn v in ra a thc nhp Program VD52; type ref=^node; node=record coef:real; V Minh Ph B mn KHMT
118

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ exp:longint; next:ref; end; Var p,q,first:ref; ch:char; hs:real; sm:longint; begin new(p); first:=p; ch:='C'; while upcase(ch)='C' do begin write('Nhap he so: ');readln(hs); write('Nhap o mu : ');readln(sm); p^.coef:=hs; p^.exp:=sm; write(' co nhap tiep khong <C/K>? ');readln(ch); if upcase(ch)='C' then begin new(q); p^.next:=q; p:=q; end else p^.next:=nil; end; p:=first; while p<>nil do V Minh Ph B mn KHMT
119

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ begin writeln(p^.coef:6:2,'* x!',p^.exp); p:=p^.next; end; readln; end. - V d: Nhp vo t bn phm a thc di dng danh sch lin kt. Tnh gi tr ca a thc taj x=5. Program VD53; type ref=^node; node=record coef:real; ex:longint; next:ref; end; Var p,q,first:ref; ch:char; hs,tong:real; sm:longint; begin new(p); first:=p; ch:='C'; while upcase(ch)='C' do begin write('Nhap he so: ');readln(hs); write('Nhap o mu : ');readln(sm); p^.coef:=hs; p^.ex:=sm; V Minh Ph B mn KHMT
120

V Minh Ph Tin hc i cng Gii thiu Ngn ng C++ write(' co nhap tiep khong <C/K>? ');readln(ch); if upcase(ch)='C' then begin new(q); p^.next:=q; p:=q; end else p^.next:=nil; end; p:=first; tong:=0; while p<>nil do begin tong:=tong+p^.coef*exp(p^.ex*ln(5)); p:=p^.next; end; write(tong); readln; end.

V Minh Ph B mn KHMT

121

You might also like