Bài giảng Tin học đại cương

BUỔI 1.

PHẦN 1. TIN HỌC CĂN BẢN

(16 tiết Lý thuyết, 4 tiết Bài tập, 6 tiết Thực hành)

I.1. Thông tin và biểu diễn thông tin (5T lý thuyết)

I.1.1. Các khái niệm cơ bản về thông tin và tin học (1T lý thuyết)

I.1.1.1. Thông tin và xử lý thông tin

a. Thông tin - Dữ liệu – Tri thức

Thông tin- Information

Khái niệm thông tin (information) được sử dụng thường ngày.Thông tin mang lại cho con người

sự hiểu biết, nhận thức tốt hơn về những đối tượng trong đời sống xã hội, trong thiên nhiên,.

giúp cho họ thực hiện hợp lý công việc cần làm để đạt tới mục đích một cách tốt nhất.

Người ta quan niệm rằng, thông tin là kết quả xử lý, điều khiển và tổ chức dữ liệu theo cách mà

nó sẽ bổ sung thêm tri thức cho người nhận. Nói một cách khác, thông tin là ngữ cảnh trong đó

dữ liệu được xem xét

Dữ liệu - Data

Dữ liệu (data) là biểu diễn của thông tin được thể hiện bằng các tín hiệu vật lý. Thông tin chứa

đựng ý nghĩa còn dữ liệu là các sự kiện không có cấu trúc và không có ý nghĩa nếu chúng không

được tổ chức và xử lý.

Dữ liệu trong thực tế có thể là:

 Các số liệu thường được mô tả bằng số như trong các bảng biểu

 Các ký hiệu qui ước, ví dụ chữ viết

 Các tín hiệu vật lý ví dụ như ánh sáng, âm thanh, nhiệt độ, áp suất,

Theo quan niệm chung của những người làm công nghệ thông tin thì thông tin là những hiểu biết

của chúng ta về một lĩnh vực nào đấy, còn dữ liệu là thông tin được biểu diễn và xử lý trong

máy tính.

Tri thức – Knowledge

Tri thức theo nghĩa thường là thông tin ở mức trừu tượng hơn. Tri thức khá đa dạng, nó có thể là

sự kiện, là thông tin và cách mà một người thu thập được qua kinh nghiệm hoặc qua đào tạo. Nó

có thể là sự hiểu biết chung hay về một lĩnh vực cụ thể nào đó. Thuật ngữ tri thức được sử dụng

theo nghĩa “hiểu” về một chủ thể với một tiềm năng cho một mục đích chuyên dụng.

Hệ thống thông tin (information system) là một hệ thống ghi nhận dữ liệu, xử lý chúng để tạo

nên thông tin có ý nghĩa hoặc dữ liệu mới.

pdf 166 trang yennguyen 6960
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Tin học đại cương", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Tin học đại cương

Bài giảng Tin học đại cương
2010 
TRƢỜNG ĐẠI HỌC 
BÁCH KHOA HÀ NỘI 
VIỆN CÔNG NGHỆ 
THÔNG TIN VÀ 
TRUYỀN THÔNG 
[BÀI GIẢNG TIN HỌC ĐẠI 
CƢƠNG - IT1110] 
[Type the abstract of the document here. The abstract is typically a short summary of the contents of the 
document. Type the abstract of the document here. The abstract is typically a short summary of the 
contents of the document.] 
2 
THÔNG TIN MÔN HỌC 
Trình độ: 
Sinh viên đại học các ngành 
Khối lƣợng: 4(3-1-1-8) 
 Lý thuyết: 45 tiết 
 Bài tập/BTL: 15 tiết (bài tập, thảo luận) 
 Thí nghiệm: 5 bài (x 3 tiết) (thực hành) 
Mô tả vắn tắt nội dung: 
Khái niệm thông tin, biểu diễn thông tin trong máy tính. Hệ thống máy tính: phần cứng, phần 
mềm, hệ điều hành, mạng máy tính. Giải quyết bài toán bằng máy tính. Các cấu trúc lập trình cơ 
bản.. 
3 
MỤC LỤC 
PHẦN 1. TIN HỌC CĂN BẢN .............................................................................. 8 
I.1. Thông tin và biểu diễn thông tin (5T lý thuyết) ............................................. 8 
I.1.1. Các khái niệm cơ bản về thông tin và tin học (1T lý thuyết) ............................................ 8 
I.1.1.1. Thông tin và xử lý thông tin ....................................................................................... 8 
a. Thông tin - Dữ liệu – Tri thức....................................................................................... 8 
b. Qui trình xử lý thông tin ............................................................................................... 9 
I.1.1.2. Máy tính điện tử và phân loại .................................................................................... 9 
a. Lịch sử phát triển của máy tính điện tử ........................................................................ 9 
b. Phân loại máy tính điện tử .......................................................................................... 10 
I.1.1.3. Tin học và các ngành công nghệ liên quan .............................................................. 10 
a. Tin học ........................................................................................................................ 10 
b. Công nghệ thông tin (Information Technology - IT) .................................................. 11 
c. Công nghệ thông tin và truyền thông .......................................................................... 11 
I.1.2. Biểu diễn dữ liệu trong máy tính (4T lý thuyết) ............................................................. 11 
I.1.2.1. Biểu diễn số trong các hệ đếm ................................................................................. 11 
a. Hệ đếm cơ số b ............................................................................................................ 11 
b. Hệ đếm thập phân (Decimal system, b=10)................................................................ 12 
c. Hệ đếm nhị phân (Binary system, b=2) ...................................................................... 13 
d. Hệ đếm bát phân (Octal system, b=8) ........................................................................ 13 
e. Hệ đếm thập lục phân (Hexa-decimal system, b=16) ................................................. 13 
f. Chuyển đổi một số từ hệ thập phân sang hệ đếm cơ số b ........................................... 14 
I.1.2.2. Biểu diễn dữ liệu trong máy tính và đơn vị thông tin .............................................. 14 
a. Nguyên tắc chung ....................................................................................................... 14 
b. Đơn vị thông tin .......................................................................................................... 15 
I.1.2.3. Biểu diễn số nguyên ................................................................................................. 16 
a. Số nguyên không dấu .................................................................................................. 16 
b. Số nguyên có dấu ........................................................................................................ 16 
c. Tính toán số học với số nguyên ........................................................................................ 17 
Cộng/ trừ số nguyên ........................................................................................................ 17 
Nhân/ chia số nguyên ...................................................................................................... 17 
I.1.2.4. Biểu diễn số thực...................................................................................................... 18 
a. Nguyễn tắc chung ....................................................................................................... 18 
b. Chuẩn IEEE754/85 ..................................................................................................... 19 
I.1.2.5. Biểu diễn ký tự ......................................................................................................... 20 
a. Nguyên tắc chung ....................................................................................................... 20 
b. Bộ mã ASCII .............................................................................................................. 20 
c. Bộ mã Unicode ........................................................................................................... 22 
I.2. HỆ THỐNG MÁY TÍNH (7 tiết) ................................................................. 23 
I.2.1. Hệ thống máy tính (3T lý thuyết)................................................................................ 23 
4 
a. Mô hình cơ bản của máy tính ...................................................................................... 23 
b. Bộ xử lý trung tâm – CPU .......................................................................................... 25 
c. Bộ nhớ ......................................................................................................................... 26 
d. Hệ thống vào-ra .......................................................................................................... 27 
e. Liên kết hệ thống (buses) ............................................................................................ 29 
I.2.1.2. Phần mềm máy tính ................................................................................................. 30 
a. Dữ liệu và giải thuật .................................................................................................... 30 
b. Chương trình và ngôn ngữ lập trình ........................................................................... 35 
c. Phân loại phần mềm máy tính ..................................................................................... 37 
I.2.2. Mạng máy tính (2T lý thuyết) ..................................................................................... 37 
I.2.2.1. Lịch sử phát triển của mạng máy tính ...................................................................... 37 
I.2.2.2. Phân loại mạng máy tính .......................................................................................... 38 
I.2.2.3. Các thành phần cơ bản của một mạng máy tính ...................................................... 38 
I.2.2.4. Mạng Internet ........................................................................................................... 40 
I.2.3. Giới thiệu hệ điều hành (2T lý thuyết) ........................................................................ 41 
I.2.3.1. Các khái niệm cơ bản ............................................................................................... 41 
a. Khái niệm hệ điều hành .............................................................................................. 41 
b. Tệp (File) .................................................................................................................... 41 
c. Quản lý tệp của hệ điều hành ...................................................................................... 42 
I.2.3.2. Hệ lệnh của hệ điều hành ......................................................................................... 43 
I.2.3.3. Hệ điều hành Windows ............................................................................................ 44 
a. Sự ra đời và phát triển ................................................................................................. 44 
b. Khởi động và thoát khỏi Windows XP ....................................................................... 44 
c. Một số thuật ngữ và thao tác thường sử dụng ............................................................. 45 
d. Cấu hình Windows (Control Panel) ............................................................................ 47 
e. Windows Explorer ...................................................................................................... 52 
I.3. Các hệ thống ứng dụng (4T lý thuyết) .......................................................... 56 
I.3.1. Các hệ thống quản lý thông tin........................................................................................ 56 
I.3.1.1. Các khái niệm về thông tin và Hệ thống quản lý thông tin .......................................... 56 
I.3.1.2. Phân loại ................................................................................................................... 56 
a. Phân loại theo cấp bậc quản lý .................................................................................... 56 
b. Phân loại theo chức năng nghiệp vụ ........................................................................... 59 
c. Phân loại theo quy mô tích hợp .................................................................................. 60 
I.3.2. Hệ thông tin bảng tính ..................................................................................................... 62 
I.3.3. Hệ quản trị cơ sở dữ liệu ................................................................................................. 67 
I.3.3.1. Cơ sở dữ liệu ............................................................................................................ 67 
a. Khái niệm về Cơ Sở Dữ Liệu...................................................................................... 67 
b. Hệ quản trị cơ sở dữ liệu ............................................................................................. 72 
I.3.4. Các hệ thống thông minh ................................................................................................ 76 
PHẦN II. GIẢI QUYẾT BÀI TOÁN .................................................................. 77 
5 
II.1. Thuật toán(4 tiết LT) .................................................................................... 77 
II.1.1. Định nghĩa thuật toán ..................................................................................................... 77 
II.1.2. Biểu diễn thuật toán ....................................................................................................... 78 
II.1.2.1. Ngôn ngữ lưu đồ ..................................................................................................... 79 
II.1.2.2. Mã giả ..................................................................................................................... 83 
II.1.3. Thuật toán đệ qui ........................................................................................................... 84 
II.1.4. Một số thuật toán thông dụng ........................................................................................ 85 
II.1.4.1. Thuật toán số học .................................................................................................... 85 
II.1.4.2. Thuật toán về dãy ................................................................................................... 86 
II.1.5. Thuật giải heuristic ........................................................................................................ 87 
II.1.5.1. Thuật giải – Sự mở rộng khái niệm của thuật toán ................................................. 87 
II.1.5.2. Thuật giải heuristic ................................................................................................. 87 
II.2. Giải quyết bài toán (4 tiết LT, 2 tiết BT) .................................................... 88 
II.2.1. Khái niệm về bài toán .................................................................................................... 88 
II.2.2. Các bước giải quyết bài toán bằng máy tính .................................................................. 89 
Bài tập về Thuật toán (2 tiết BT) ......................................................................... 90 
II.2.3. Các phương pháp giải quyết bài toán bằng máy tính ..................................................... 90 
II.2.3.1. Giải quyết bài toán theo hướng xác định trực tiếp lời giải: .................................... 90 
II.2.3.2. Giải quyết bài toán theo hướng tìm kiếm lời giải ................................................... 91 
II.2.4. Phân loại bài toán ........................................................................................................... 91 
II.2.4.1. Độ phức tạp thuật toán ............................................................................................ 91 
II.2.4.2. Phân loại bài toán ................................................................................................... 93 
PHẦN 3. LẬP TRÌNH .......................................................................................... 95 
III.1. Tổng quan về ngôn ngữ C (3 tiết LT) ........................................................ 95 
III.1.1. Lịch sử phát triển .......................................................................................................... 95 
III.1.2. Các phần tử cơ bản của ngôn ngữ C ............................................................................. 96 
1.2.1. Tập kí tự ................................................................................................................ 96 
1.2.2. Từ khóa ................................................................................................................. 96 
1.2.3. Định danh .............................................................................................................. 97 
1.2.4. Các kiểu dữ liệu .................................................................................................... 98 
1.2.5. Hằng ...................................................................................................................... 99 
1.2.6. Biến ..................................................................................................................... 100 
1.2.7. Hàm ..................................................................................................................... 100 
1.2.8. Biểu thức ............................................................................................................. 101 
1.2.9. Câu lệnh .............................................................................................................. 101 
1.2.10. Chú thích .............................. ... nh con sin đó 
thì ta vẫn thu được kết quả mong muốn mà không phải viết lại cả đoạn chương trình tính giá trị 
sin(y). 
Bên cạnh chương trình con sin còn có rất nhiều chương trình con khác được tạo sẵn như cos, exp 
(dùng để tính lũy thừa cơ số e), pow (tính lũy thừa), sqrt (tính căn bậc 2), ... giúp người lập trình 
tính toán giá trị của các đại lượng thông dụng. Những chương trình con này nằm trong thư viện 
các chương trình con mẫu và được trình biên dịch C quản lý, vì vậy chúng còn được gọi là các 
chương trình con chuẩn. Trình biên dịch Turbo C++ phân loại và đặt các chương trình con chuẩn 
này trong các đơn vị chương trình khác nhau dưới dạng các tệp tiêu đề như stdio.h, conio.h, 
math.h, string.h... 
Ngoài ra còn có một lý do khác cần đến chương trình con. Khi ta giải quyết một bài toán lớn thì 
chương trình của ta có thể rất lớn và dài, điều này làm cho việc sửa chữa, gỡ rối, hiệu chỉnh 
chương trình gặp nhiều khó khăn. Nhưng nếu ta chia bài toán lớn, phức tạp ban đầu thành các bài 
toán con nhỏ hơn và tương đối độc lập với nhau, rồi lập các chương trình con giải quyết từng bài 
Bài giảng tin học đại cương 
158 
toán con, cuối cùng ghép các chương trình con đó lại thành một chương trình giải quyết bài toán 
ban đầu thì sẽ rất tiện lợi cho việc phát triển, kiểm tra và sửa chữa cả chương trình. 
Việc này tương tự như trong dây chuyền sản xuất công nghiệp khi ta lắp ráp sản phẩm hoàn thiện 
từ các bán thành phẩm, các module được chế tạo ở những nơi khác nhau. Vì các bán thành phẩm 
này được chế tạo độc lập nên khi phát hiện lỗi ở module nào ta chỉ việc tìm đến nơi sản xuất ra 
nó để sửa chữa. 
Việc chia nhỏ một chương trình thành các chương trình con đảm nhận những công việc nhỏ khác 
nhau chính là tư tưởng chính cho phương pháp lập trình có cấu trúc (structured programming). 
Cần lưu ý là có khi một chương trình con chỉ sử dụng đúng một lần nhưng nó vẫn làm cho 
chương trình trở nên sáng sủa và dễ đọc, dễ hiểu hơn. 
III.6.1.2. Phân loại chƣơng trình con: 
Có 2 loại chương trình con là hàm (function) và thủ tục (procedure). Sự khác nhau giữa hàm và 
thủ tục là ở chỗ hàm sau khi thực hiện xong thì sẽ trả về giá trị, còn thủ tục không trả về giá trị gì 
cả. 
Mặc dù vậy hàm và thủ tục là tương đương nhau, tức là có thể xây dựng được thủ tục có chức 
năng tương đương với một hàm bất kì và có thể xây dựng được hàm có chức năng tương đương 
với một thủ tục bất kì. Vì thế có những ngôn ngữ lập trình cho phép chương trình con có thể là 
hàm và thủ tục (Pascal) và có những ngôn ngữ chỉ cho phép chương trình con là hàm mà thôi 
(như C, Java). 
Lưu ý là nếu chương trình con là hàm thì nó luôn có giá trị trả về. Nếu thực sự không có giá trị gì 
để trả về (nghĩa là nó hoạt động giống thủ tục) thì ta phải khai báo hàm đó có kiểu giá trị trả về là 
“không là kiểu giá trị nào cả” (kiểu void trong C). 
III.6.2. Khai báo và sử dụng hàm 
III.6.2.1. Khai báo hàm 
Cú pháp khai báo một hàm trong C là như sau 
[] ([,]) 
Thân hàm 
Khai báo của một hàm được chia làm 2 phần: 
- Dòng đầu hàm: 
[] ([,]) 
- Thân hàm: là tập hợp các khai báo và câu lệnh đặt trong cặp dấu ngoặc nhọn 
{ 
Bài giảng tin học đại cương 
159 
} 
 Trong thân hàm có ít nhất một lệnh return. 
Ví dụ sau là khai báo và định nghĩa hàm tính giai thừa của một số nguyên dương. Ta quy ước 
rằng giai thừa của một số âm thì bằng –1, của 0 bằng 0, của một số nguyên dương a là a! = a 
(a-1)  1. 
int giai_thua(int a) 
{ 
int ket_qua; 
int i; 
ket_qua = 1; 
for(i = 0;i<a;i++) 
 ket_qua = ket_qua * i; 
if(a < 0) ket_qua = -1; 
if(a == 0) ket_qua = 0; 
return ket_qua; 
} 
Dòng đầu hàm 
Các khai báo 
Các câu lệnh 
Các thành phần của dòng đầu hàm 
Dòng đầu hàm là các thông tin được trao đổi giữa bên trong và bên ngoài hàm. Khi nói tới dòng 
đầu hàm là ta nói tới tên của hàm, hàm đó cần những thông tin gì từ môi trường để hoạt động 
(các tham số đầu vào), hàm đó cung cấp những thông tin gì cho môi trường (những tham số đầu 
ra và giá trị trả về). 
Dòng đầu hàm phân biệt các hàm với nhau, hay nói cách khác không được có 2 hàm có dòng đầu 
hàm giống nhau. 
Kiểu dữ liệu trả về của hàm 
Thông thường hàm sau khi được thực hiện sẽ trả về một giá trị kết quả tính toán nào đó. Để sử 
dụng được giá trị đó ta cần phải biết nó thuộc kiểu dữ liệu gì. Kiểu dữ liệu của đối tượng tính 
toán được hàm trả về được gọi là kiểu dữ liệu trả về của hàm. 
Trong C, kiểu dữ liệu trả về của hàm có thể là kiểu dữ liệu bất kì (kiểu dữ liệu có sẵn hoặc kiểu 
dữ liệu do người dùng tự định nghĩa) nhưng không được là kiểu dữ liệu mảng. 
Nếu kiểu dữ liệu trả về là kiểu void thì hàm không trả về giá trị nào cả. 
Trường hợp ta không khai báo kiểu dữ liệu trả về thì chương trình dịch của C sẽ ngầm hiểu rằng 
kiểu dữ liệu trả về của hàm là kiểu int. 
Bài giảng tin học đại cương 
160 
Tên hàm 
Tên hàm là có thể là bất kì một định danh hợp lệ nào. Tuy nhiên tên hàm nên mang nghĩa gợi ý 
chức năng công việc mà hàm thực hiện. Ví dụ một hàm có chức năng tính và trả về bình phương 
của một số thực x thì nên có tên là binh_phuong. Trong C, các hàm không được đặt tên trùng 
nhau. 
Tham số của hàm 
Tham số của hàm là các thông tin cần cho hoạt động của hàm và các thông tin, kết quả tính toán 
được hàm trả lại. Tức là có những tham số chứa dữ liệu vào cung cấp cho hàm, có những tham 
số chứa dữ liệu ra mà hàm tính toán được. 
Các tham số sử dụng trong lời khai báo hàm được gọi là tham số hình thức. Nó là tham số giả 
định của hàm. Khi khai báo tham số hình thức của hàm phải chỉ ra tên của tham số và kiểu dữ 
liệu của tham số. 
Các tham số được cung cấp cho hàm trong quá trình thực hiện của hàm được gọi là tham số thực. 
Kiểu dữ liệu của tham số thực cung cấp cho hàm trong chương trình phải giống kiểu dữ liệu của 
tham số hình thức tương ứng với tham số thực đó, nếu không sẽ có báo lỗi biên dịch. 
Một hàm có thể có một, nhiều hoặc không có tham số nào cả. Nếu có nhiều tham số thì chúng 
phải được phân cách với nhau bằng dấu phẩy. Lưu ý là nếu hàm không có tham số nào cả thì vẫn 
phải có cặp dấu ngoặc đơn sau tên hàm, ví dụ main(). 
Lệnh return 
Trong chương trình, một hàm được thực hiện khi ta gặp lời gọi hàm của hàm đó trong chương 
trình. Một lời gọi hàm là tên hàm theo sau bởi các tham số thực trong chương trình. Sau khi hàm 
thực hiện xong, nó sẽ trở về chương trình đã gọi nó. Có 2 cách để từ hàm trở về chương trình đã 
gọi hàm: 
- Sau khi thực hiện tất cả các câu lệnh có trong thân hàm. 
- Khi gặp lệnh return. 
Cú pháp chung của lệnh return là 
return biểu_thức; 
Khi gặp lệnh này, chương trình sẽ tính toán giá trị của biểu_thức, lấy kết quả tính toán được làm 
giá trị trả về cho lời gọi hàm rồi kết thúc việc thực hiện hàm, trở về chương trình đã gọi nó. 
Trong lệnh return cũng có thể không có phần biểu_thức, khi đó ta sẽ kết thúc thực hiện hàm mà 
không trả về giá trị nào cả. 
Ví dụ và phân tích. 
#include 
#include 
int max(int x, int y, int z) 
{ 
 int max; 
 max = x>y?x:y; 
 max = max>z?max:z; 
Bài giảng tin học đại cương 
161 
 return max; 
} 
void main() 
{ 
 int a,b,c; 
 clrscr(); 
 printf("\n Nhap gia tri cho 3 so nguyen a, b, c: "); 
 scanf("%d %d %d",&a,&b,&c); 
 printf("\n Gia tri cac so vua nhap: "); 
 printf(" a = %-5d b = %-5d c = %-5d"); 
 printf("\n Gia tri lon nhat trong 3 so la %d",max(a,b,c)); 
 getch(); 
} 
III.6.2.2. Sử dụng hàm 
Một hàm sau khi khai báo thì có thể sử dụng. Để sử dụng một hàm (hay còn nói là gọi hàm) ta sử 
dụng cú pháp sau: 
 ([danh sách các tham số]) 
Ví dụ: chương trình dưới đây sẽ khai báo và định nghĩa một hàm có tên là Uscln với 2 tham số 
đều có kiểu unsigned int. Hàm Uscln tìm ước số chung lớn nhất của 2 tham số này theo thuật 
toán Euclid và trả về ước số chung tìm được. Sau đó ta sẽ gọi hàm Uscln trong hàm main để tìm 
ước số chung lớn nhất của 2 số nguyên được nhập từ bàn phím. 
#include 
#include 
unsigned int Uscln(unsigned int a, unsigned int b) 
{ 
unsigned int u; 
if (a<b) 
{ 
 u = a; a = b; b = u; 
} 
do 
{ 
 u = a%b; 
 a = b; 
 b = u; 
}while (u!=0); 
return a; 
} 
int main() 
{ 
unsigned int a, b; 
do 
{ 
Bài giảng tin học đại cương 
162 
printf("\n Nhap vao 2 so nguyen duong a va b "); 
printf("\n a = "); scanf("%d",&a); 
printf("\n b = "); scanf("%d",&b); 
if(a*b == 0) 
{ 
 printf("\n Khong hop le"); 
 continue; 
} 
printf("\n Uoc chung lon nhat cua %d va %d la: %d", a, b, Uscln(a, b)); 
 }while ((a != 0)||(b != 0)); 
printf("\n An phim bat ki de ket thuc chuong trinh..."); 
getch(); 
return 0; 
} 
Kết quả khi thực hiện: 
 Nhap vao 2 so nguyen duong a va b 
 a = 6 
 b = 9 
 Uoc chung lon nhat cua 6 va 9 la: 3 
 Nhap vao 2 so nguyen duong a va b 
 a = 15 
 b = 26 
 Uoc chung lon nhat cua 15 va 26 la: 1 
 Nhap vao 2 so nguyen duong a va b 
 a = 3 
 b = 0 
 Khong hop le 
 Nhap vao 2 so nguyen duong a va b 
 a = 0 
 b = 0 
 Khong hop le 
 An phim bat ki de ket thuc chuong trinh... 
Lưu ý: Nếu có nhiều tham số trong danh sách tham số thì các tham số được phân cách với 
nhau bằng dấu phẩy 
 Cho dù hàm có một, nhiều hay không có tham số thì vẫn luôn luôn cần cặp dấu 
ngoặc đơn đứng sau tên hàm 
Trong chương trình, khi gặp một lời gọi hàm thì hàm bắt đầu thực hiện bằng cách chuyển các 
lệnh thi hành đến hàm được gọi. Quá trình diễn ra như sau: 
- Nếu hàm có tham số, trước tiên các tham số sẽ được gán giá trị thực tương ứng. 
- Chương trình sẽ thực hiện tiếp các câu lệnh trong thân hàm bắt đầu từ lệnh đầu tiên 
đến câu lệnh cuối cùng. 
Bài giảng tin học đại cương 
163 
- Khi gặp lệnh return hoặc dấu } cuối cùng trong thân hàm, chương trình sẽ thoát khỏi 
hàm để trở về chương trình gọi nó và thực hiện tiếp tục những câu lệnh của chương 
trình này. 
III.6.3. Phạm vi của biến 
Phạm vi của các biến 
Một biến sau khi khai báo thì có thể được sử dụng trong chương trình. Tuy nhiên tùy vào vị trí 
khai báo biến mà phạm vi sử dụng các biến sẽ khác nhau. Nguyên tắc sử dụng biến là biến khai 
báo trong phạm vi nào thì được sử dụng trong phạm vi đó. 
Một biến có thể được khai báo trong chương trình chính hoặc trong các chương trình con hoặc 
thậm chí trong một lệnh khối. Nếu biến được khai báo trong một lệnh khối thì nó chỉ có thể được 
gọi trong lệnh khối đó thôi, không thể gọi từ bên ngoài lệnh khối được. Một biến được khai báo 
trong một chương trình con chỉ có thể được sử dụng trong phạm vi chương trình con đó. Một 
biến được khai báo trong chương trình chính thì có thể được sử dụng trong toàn bộ chương trình, 
trong tất cả các chương trình con cũng như trong các lệnh khối của chương trình. 
Lưu ý 
 Một số ngôn ngữ lập trình như Pascal cho phép khai báo một chương trình con nằm trong 
một chương trình con khác, nhưng ngôn ngữ C không cho phép khai báo một chương 
trình con nằm trong một chương trình con khác. 
 Bên trong một lệnh khối thì có thể có chứa lệnh khối khác. Khi đó biến được khai báo ở 
lệnh khối bên ngoài có thể được sử dụng ở lệnh khối bên trong. 
 Việc trùng tên của các biến: Trong cùng một phạm vi ta không được phép khai báo 2 biến 
có cùng tên nhưng ta có thể khai báo 2 biến trùng tên thuộc 2 phạm vi khác nhau. Nếu có 
2 biến trùng tên khai báo ở 2 phạm vi khác nhau thì xảy ra 2 trường hợp: 
o Hai phạm vi này tách rời nhau: khi đó các biến sẽ có tác dụng ở phạm vi riêng của 
nó, không ảnh hưởng đến nhau. 
o Phạm vi này nằm trong phạm vi kia: khi đó nếu chương trình đang ở phạm vi 
ngoài (tức là đang thực hiện câu lệnh nằm ở phạm vi ngoài) thì biến khai báo ở 
phạm vi ngoài có tác dụng, còn nếu chương trình đang ở phạm vi trong (đang thực 
hiện câu lệnh nằm ở phạm vi trong) thì biến khai báo ở phạm vi trong sẽ có tác 
dụng và nó che lấp biến trùng tên ở bên ngoài. 
Ví dụ: 
#include 
void main() 
{ 
 { 
 int a = 1; 
 printf(“\n a = %d”,a); 
 { 
 int a = 2; 
Bài giảng tin học đại cương 
164 
 printf(“\n a = %d”,a); 
 } 
 printf(“\n a = %d”,a); 
 } 
 { 
 int a = 3; 
 printf(“\n a = %d”,a); 
 } 
} 
Kết quả thực hiện chương trình 
a = 1 
a = 2 
a = 1 
a = 3 
Phân loại biến 
Theo phạm vi sử dụng, biến chia làm 2 loại: biến cục bộ (biến địa phương – local variable) và 
biến toàn cục (global variable). 
Biến địa phƣơng 
Là các biến được khai báo trong lệnh khối hoặc trong thân chương trình con. Việc khai báo các 
biến cục bộ phải được đặt trước phần câu lệnh trong lệnh khối hoặc trong chương trình con. 
Biến toàn cục 
Là biến được khai báo trong chương trình chính. Vị trí khai báo của biến toàn cục là sau phần 
khai báo tệp tiêu đề và khai báo hàm nguyên mẫu. 
Lưu ý: Hàm main() cũng chỉ là một chương trình con, nhưng nó là chương trình con đặc biệt ở 
chỗ chương trình được bắt đầu thực hiện từ hàm main(). 
 Biến khai báo trong hàm main() không phải là biến toàn cục mà là biến cục bộ của hàm 
main(). 
Một số lệnh đặc trưng của C: register, static 
Chúng ta biết rằng các thanh ghi có tốc độ truy nhập nhanh hơn so với các loại bộ nhớ khác 
(RAM, bộ nhớ ngoài), do vậy nếu một biến thường xuyên sử dụng trong chương trình được lưu 
vào trong thanh ghi thì tốc độ thực hiện của chương trình sẽ được tăng lên. Để làm điều này ta 
đặt từ khóa register trước khai báo của biến đó. 
Ví dụ 
 register int a; 
Tuy nhiên có một lưu ý khi khai báo biến register là vì số lượng các thanh ghi có hạn và kích 
thước của các thanh ghi cũng rất hạn chế (ví dụ trên dòng máy 80x86, các thanh ghi có kích 
Bài giảng tin học đại cương 
165 
thước 16 bit = 2 byte) cho nên số lượng biến khai báo register sẽ không nhiều và thường chỉ áp 
dụng với những biến có kích thước nhỏ như kiểu char, int. 
Như ta đã biết, một biến cục bộ khi ra khỏi phạm vi của biến đó thì bộ nhớ dành để lưu trữ biến 
đó sẽ được giải phóng. Tuy nhiên trong một số trường hợp ta cần lưu giá trị của các biến cục bộ 
này để phục vụ cho những tính toán sau này, khi đó ta hãy khai báo biến với từ khóa static ở 
đầu. 
Ví dụ 
 static int a; 
Từ khóa static giúp chương trình dịch biết được đây là một biến tĩnh, nghĩa là nó sẽ được cấp 
phát một vùng nhớ thường xuyên từ lúc khai báo và chỉ giải phóng khi chương trình chính kết 
thúc. Như vậy về thời gian tồn tại biến static rất giống với biến toàn cục, chỉ có một sự khác biệt 
nhỏ là biến toàn cục thì có thể truy cập ở mọi nơi trong chương trình (miễn là ở đó không có biến 
địa phương nào cùng tên che lấp nó), còn biến static thì chỉ có thể truy nhập trong phạm vi mà 
nó được khai báo mà thôi. 
Hãy xét ví dụ sau: 
# include 
# include 
void fct() 
{ 
 static int count = 1; 
 printf("\n Day la lan goi ham fct lan thu %2d", count++); 
} 
void main() 
{ 
 int i; 
 for(i = 0; i < 10; i++) 
 fct(); 
 getch(); 
} 
Kết quả khi thực hiện 
 Day la lan goi ham fct lan thu 1 
 Day la lan goi ham fct lan thu 2 
 Day la lan goi ham fct lan thu 3 
 Day la lan goi ham fct lan thu 4 
 Day la lan goi ham fct lan thu 5 
 Day la lan goi ham fct lan thu 6 
 Day la lan goi ham fct lan thu 7 
 Day la lan goi ham fct lan thu 8 
 Day la lan goi ham fct lan thu 9 
 Day la lan goi ham fct lan thu 10 
Bài giảng tin học đại cương 
166 
Bài tập về Lập trình (2 tiết BT) 

File đính kèm:

  • pdfbai_giang_tin_hoc_dai_cuong.pdf