Tải bản đầy đủ (.pdf) (6 trang)

Tài liệu Giáo trình ngôn ngữ C++ Part 4 ppt

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (444.24 KB, 6 trang )

Gi¸o tr×nh tin häc c¬ së II - N
gôn ngữ
C

26
III. Chương trình C

Trước khi nói đến cấu trúc tổng quát của một chương trình nguồn C, chúng ta hãy xem
một ví dụ đơn giản sau đây – chương trình in xâu ‘Chao cac ban!’ ra màn hình

1: #include <stdio.h>
2: #include <conio.h>
3: void main()
4: {
5: clrscr();
6: printf("\n\n Chao cac ban !");
7: getch();
8: }
(trong đoạn mã nguồn trên chúng ta thêm các số dòng và dấu : để tiện cho việc
giải thích, còn trong chương trình thì không được có chúng)
Trong chương trình trên gồm hai phần chính đó là :
-
Các dòng bao hàm tệp – dòng 1, 2; đăng ký sử dụng các tệp tiêu đề. Trong chương
trình này chúng ta cần dùng hai file tiêu đề stdio.h và conio.h.
-
Hàm main từ dòng 3 tới dòng 8. Đây là hàm chính của chương trình , dòng 3 là tiêu
đề hàm cho biết tên: main, kiểu hàm: void, và đối của hàm (trong ví dụ này không
có đối). Thân của hàm main bắt đầu ngay sau dấu { (dòng 4), và kết thúc tại dấu }
(dòng 8).
Gi¸o tr×nh tin häc c¬ së II - N
gôn ngữ


C

27
III.1.
Cấu trúc chương trình

Một chương trình C nói chung có dạng như sau
1: [ các bao hàm tệp ]
2: [ các khai báo nguyên mẫu hàm của người dùng ]
3: [ các định nghĩa kiểu ]
4: [ các định nghĩa macro ]
5: [ các định nghĩa biến, hằng ]
6: <kiểu_hàm> main ( [khai báo tham số ] )
7: {
8: < thân hàm main>
9: }
10: [ các định nghĩa hàm của người dùng]
( trong cú pháp trên chúng ta thêm số hiệu dòng và dấu: để cho việc giải thích được
thuận lợi, các thành phần trong ngoặc [] là các thành phần tuỳ chọn)
a. Các bao hàm tệp (dòng 1)
Trong chương trình C (trong hàm main cũng như các hàm khác do người lập trình
viết) có thể sử dụng các hàm, hằng, kiểu dữ liệu,..(gọi chung là các thành phần) đã được
định nghĩa trong thư viện của C. Để sử dụng các thành phần này chúng ta phải chỉ dẫn
cho chương trình dịch biết các thông tin về các thành cần sử dụng, các thông tin đó được
khai báo trong tệp gọi là tệp tiêu đề (có phần mở rộng là H – viết tắt của header). Và phần
các bao hàm tệp là các chỉ dẫn để chương trình gộp các tệp này vào chương trình của
chúng ta. trong một chương trình chúng ta có thể không dùng hoặc dùng nhiều tệp tiêu
đề.
Cú pháp của một dòng bao hàm tệp:
#include <tên_tệp>

hoặc
#include “tên_tệp”
trong đó tên_tệp là tên có thể có cả đường dẫn của tệp tiêu đề (.H) mà chúng ta cần sử
dụng, mỗi lệnh bao hàm tệp trên một dòng.
Ví dụ:
#include <stdio.h>
#include <conio.h>
Gi¸o tr×nh tin häc c¬ së II - N
gôn ngữ
C

28
#include “phanso.h”
Sự khác nhau giữa cặp <> và “” bao quanh tên tệp là với cặp <> chương trình dịch tìm
tên tệp tiêu đề trong thư mục ngầm định xác định bởi đường dẫn trong mục
Option/Directories, còn với cặp “” chương trình dịch tìm tệp trong thư mục hiện tại, nếu
không có mới tìm trong thư mục các tệp tiêu đề ngầm định như trường hợp <>.
b. Các khai báo nguyên mẫu và định nghĩa hàm của người dùng
Trong phần này chúng tôi nêu một số thông tin về khai báo nguyên mẫu và định nghĩa
hàm để giải thích cấu trúc chương trình chứ không có ý định trình bày về hàm, chi tiết về
hàm sẽ được trình bày trong phần về hàm.
• Các nguyên mẫu (dòng 2)
Nguyên mẫu một hàm là dòng khai báo cung cấp các thông tin: tên hàm, kiểu hàm, số
đối số và kiểu từng đối số của hàm.
Cú pháp khai báo nguyên mẫu
<kiểu_hàm> <tên_hàm> ([ khai báo đối ]);
Ví dụ:
int min (int, int);
float binhphuong (float y);
float giatri(int , float);

Lưu ý: Phần khai báo đối của nguyên mẫu, mục đích là xác định số đối số và kiểu của
từng đối số, do vậy bạn có thể không viết tên của đối số nhưng kiểu của chúng thì phải có
và bạn phải liệt kê đầy đủ kiểu của từng đối.
• Các định nghĩa hàm của người dùng (dòng 10)
Trong phần này chúng ta định nghĩa các hàm của người dùng, một định nghĩa hàm bao
gồm dòng tiêu đề của hàm và thân của hàm, với cú pháp như sau:
<kiểu_hàm> <tên_hàm> ([ khai báo đối ])
{
< thân hàm >
}
Ví dụ:
int min(int a, int b) {
if(a>=b)
return b;
else return a;
}
Giáo trình tin học cơ sở II - N
gụn ng
C

29
Lu ý:
- Tiờu hm trong nh ngha hm phi tng ng vi nguyờn mu hm
- Nu trong chng trỡnh nh ngha hm xut hin trc khi gp li gi hm ú thỡ cú
th khụng nht thit phi cú dũng khai bỏo nguyờn mu hm.
c. nh ngha kiu mi (dũng 4)
Ngoi nhng kiu chun ó c cung cp sn ca ngụn ng, ngi lp trỡnh cú th
nh ngha ra cỏc kiu mi t nhng kiu ó cú bng cỏch s dng t khoỏ typedef (type
define) Vi cỳ phỏp nh sau
typedef <mụ_t_kiu> <tờn_kiu_mi>;

Trong ú <tờn_kiu_mi> l tờn kiu cn to do ngi lp trỡnh t theo quy tc v tờn
ca ngụn ng, v <mụ_t_kiu> l phn chỳng ta nh ngha cỏc thnh phn cu thnh
lờn kiu mi.
Vớ d:
typedef unsigned char byte;
typedef long nguyendai;
Sau nh ngha ny cỏc tờn mi byte c dựng vi ý ngha l tờn kiu d liu nú
tng t nh unsigned char, v nguyendai tng t nh long.
Vớ d: chỳng ta cú th nh ngha bin a, b kiu byte nh sau
byte a,b;
d. nh ngha macro (dũng 5)
Khỏi nim macro l gỡ? Gi s nh bn cú mt ni dung (giỏ tr) no ú v bn mun
s dng nú nhiu ln trong chng trỡnh, nhng bn khụng mun vit trc tip nú vo
chng trỡnh lỳc bn son tho vỡ mt vi lý do no ú (chng hn nh nú s lm chng
trỡnh khú c, khú hiu, hoc khi thay i s khú,..). Lỳc ny bn hóy gỏn cho ni dung ú
mt tờn v bn s dng tờn ú vit trong chng trỡnh ngun. Khi biờn dch
chng trỡnh, chng trỡnh dch s t ng thay th ni dung ca tờn vo ỳng v trớ
ca tờn ú. Thao tỏc ny gi l phộp th macro v chỳng ta gi tờn l tờn ca macro v
ni dung ca nú c gi l ni dung ca macro.
Mt macro c nh ngha nh sau:
#define tờn_macro ni_dung
Trong ú tờn macro l mt tờn hp l, ni dung (giỏ tr) ca macro c coi thun tuý l 1
xõu cn thay th vo v trớ xut hin tờn ca macro tng ng, gia tờn v ni dung cỏch
nhau 1 hay nhiu khong trng (du cỏch). Ni dung ca macro bt u t kớ t khỏc du
trng u tiờn sau tờn macro cho ti ht dũng.


Giáo trình tin học cơ sở II - N
gụn ng
C


30
Vớ d :
# define SOCOT 20
# define max(a,b) (a>?b a:b)
Vi hai vớ d trờn, khi gp tờn SOCOT chng trỡnh dch s t ng thay th bi 20 v
max(a,b) s c thay th bi (a>b?a:b)
Chỳ ý:
Phộp thay th macro n gin ch l thay ni dung macro vo v trớ tờn ca nú do vy
s khụng cú c ch kim tra kiu.
Khi nh ngha cỏc macro cú tham s cú th sau khi thay th biu thc mi thu c
cú trt t tớnh toỏn khụng nh bn mong mun. Vớ d ta cú macro tớnh bỡnh phng 1
s nh sau:
# define bp(a) a*a
v bn cú cõu lnh bp(x+y) s c thay l x+y*x+y v kt qu khụng nh ta mong
i. Trong trng hp ny bn nờn s dng du ngoc cho cỏc tham s ca macro
# define bp(a) ( a)*(a)
e. nh ngha bin, hng (dũng 5)
Cỏc bin v hng c nh ngha ti õy s tr thnh bin v hng ton cc. í ngha
v bin, hng, cỳ phỏp nh ngha ó c trỡnh by trong mc bin v hng.
f. Hm main (dũng 6-9)
õy l thnh phn bt buc duy nht trong mt chng trỡnh C, thõn ca hm main
bt u t sau du m múc { (dũng 7) cho ti du úng múc } (dũng 8). Khụng ging nh
chng trỡnh ca Pascal luụn cú phn chng trỡnh chớnh, chng trỡnh trong C c
phõn thnh cỏc hm c lp cỏc hm cú cỳ phỏp nh nhau v cựng mc, v mt hm m
nhim phn thõn chớnh ca chng trỡnh, tc l chng trỡnh s bt u c thc hin
t dũng lnh u tiờn v kt thỳc sau lnh cui cựng trong thõn hm main .
Trong nh ngha mt hm núi chung u cú hai phn ú l tiờu ca hm, dũng ny
bao gm cỏc thụng tin : Tờn hm, kiu hm (kiu giỏ tr hm tr v), cỏc tham s hỡnh
thc (tờn tham s v kiu ca chỳng). Phn th hai l thõn ca hm, õy l tp cỏc lnh

(hoc khai bỏo) thc hin cỏc thao tỏc theo yờu cu v chc nng ca hm ú. Hm main
cng ch l mt trng hp riờng ca hm nhng cú tờn c nh l main, cú th cú hoc
khụng cú cỏc i s, v cú th tr v giỏ tr cho h iu hnh, kiu ca giỏ tr ny c
xỏc nh bi <kiu_hm> (dũng 6) chi tit v i, kiu ca hm main s c cp k
hn trong cỏc phn sau.
Thõn hm main c bao bi cp {(dũng 7), v } (dũng 9) cú th gm cỏc lnh, cỏc
khai bỏo hoc nh ngha bin, hng, kiu, cỏc thnh phn ny tr thnh cc b trong
hm main - vn cc b, ton cc s cp ti trong phn phm vi.

×