Giáo trình Lập trình căn bản - Vũ Thị Kim Phượng

TRƯỜNG CAO ĐẲNG NGHỀ CÔNG NGHIỆP HÀ NỘI  
Chủ biên: Vũ Thị Kim Phượng  
Đồng tác giả: Nguyễn Thái Hà  
Giáo trình  
LẬP TRÌNH CĂN BẢN  
(Lưu hành nội bộ)  
Hà Nội năm 2011  
Tuyên bố bản quyền  
Giáo trình này sử dụng làm tài liệu giảng dạy nội bộ trong trường  
cao đẳng nghề Công nghiệp Hà Nội  
Trường Cao đẳng nghề Công nghiệp Hà Nội không sử dụng và  
không cho phép bất kỳ cá nhân hay tổ chức nào sử dụng giáo trình này với  
mục đích kinh doanh.  
Mọi trích dẫn, sử dụng giáo trình này với mục đích khác hay ở nơi  
khác đều phải được sự đồng ý bằng văn bản của trường Cao đẳng nghề  
Công nghiệp Hà Nội  
2
Chương I. Giới thiệu về ngôn ngữ C  
1. Giới thiệu  
a. Tổng quan về ngôn ngữ lập trình C  
C là ngôn ngữ lập trình cấp cao, được sử dụng rất phổ biến để lập  
trình hệ thống cùng với Assembler và phát triển các ứng dụng.  
Vào những năm cuối thập kỷ 60 đầu thập kỷ 70 của thế kỷ XX,  
Dennish Ritchie (làm việc tại phòng thí nghiệm Bell) đã phát triển ngôn ngữ  
lập trình C dựa trên ngôn ngữ BCPL (do Martin Richards đưa ra vào năm  
1967) và ngôn ngữ B (do Ken Thompson phát triển từ ngôn ngữ BCPL vào  
năm 1970 khi viết hệ điều hành UNIX đầu tiên trên máy PDP-7) và được cài  
đặt lần đầu tiên trên hệ điều hành UNIX của máy DEC PDP-11.  
Năm 1978, Dennish Ritchie và B.W Kernighan đã cho xuất bản quyển  
“Ngôn ngữ lập trình C” và được phổ biến rộng rãi đến nay.  
Lúc ban đầu, C được thiết kế nhằm lập trình trong môi trường của hệ  
điều hành Unix nhằm mục đích hỗ trợ cho các công việc lập trình phức tạp.  
Nhưng về sau, với những nhu cầu phát triển ngày một tăng của công việc lập  
trình, C đã vượt qua khuôn khổ của phòng thí nghiệm Bell và nhanh chóng  
hội nhập vào thế giới lập trình để rồi các công ty lập trình sử dụng một cách  
rộng rãi. Sau đó, các công ty sản xuất phần mềm lần lượt đưa ra các phiên  
bản hỗ trợ cho việc lập trình bằng ngôn ngữ C và chuẩn ANSI C cũng được  
khai sinh từ đó.  
Ngôn ngữ lập trình C là một ngôn ngữ lập trình hệ thống rất mạnh và  
rất “mềm dẻo”, có một thư viện gồm rất nhiều các hàm (function) đã được  
tạo sẵn. Người lập trình có thể tận dụng các hàm này để giải quyết các bài  
toán mà không cần phải tạo mới. Hơn thế nữa, ngôn ngữ C hỗ trợ rất nhiều  
phép toán nên phù hợp cho việc giải quyết các bài toán kỹ thuật có nhiều  
công thức phức tạp. Ngoài ra, C cũng cho phép người lập trình tự định nghĩa  
thêm các kiểu dữ liệu trừu tượng khác. Tuy nhiên, điều mà người mới vừa  
3
học lập trình C thường gặp “rắc rối” là “hơi khó hiểu” do sự “mềm dẻo” của  
C. Dù vậy, C được phổ biến khá rộng rãi và đã trở thành một công cụ lập  
trình khá mạnh, được sử dụng như là một ngôn ngữ lập trình chủ yếu trong  
việc xây dựng những phần mềm hiện nay.  
Ngôn ngữ C có những đặc điểm cơ bản sau:  
o Tính cô đọng (compact): C chỉ có 32 từ khóa chuẩn và 40 toán tử  
chuẩn, nhưng hầu hết đều được biểu diễn bằng những chuỗi ký tự ngắn gọn.  
o Tính cấu trúc (structured): C có một tập hợp những chỉ thị của lập  
trình như cấu trúc lựa chọn, lặp… Từ đó các chương trình viết bằng C được  
tổ chức rõ ràng, dễ hiểu.  
o Tính tương thích (compatible): C có bộ tiền xử lý và một thư viện  
chuẩn vô cùng phong phú nên khi chuyển từ máy tính này sang máy tính  
khác các chương trình viết bằng C vẫn hoàn toàn tương thích.  
o Tính linh động (flexible): C là một ngôn ngữ rất uyển chuyển và cú  
pháp, chấp nhận nhiều cách thể hiện, có thể thu gọn kích thước của các mã  
lệnh làm chương trình chạy nhanh hơn.  
o Biên dịch (compile): C cho phép biên dịch nhiều tập tin chương  
trình riêng rẽ thành các tập tin đối tượng (object) và liên kết (link) các đối  
tượng đó lại với nhau thành một chương trình có thể thực thi được  
(executable) thống nhất.  
Ngày nay có một số ngôn ngữ lập trình cấp cao khác như C++, C#, …  
Đây là các ngôn ngữ lập trình hướng đối tượng và có thể xem là ngôn ngữ C  
nâng cấp. Do đó, toàn bộ những gì bạn học được trong ngôn ngữ C đều có  
thể áp dụng cho các ngôn ngữ nâng cấp đó.  
b. Môi trường lập trình Turbo C  
Turbo C là môi trường hỗ trợ lập trình C do hãng Borland cung cấp. Môi  
trường này cung cấp các chức năng như: soạn thảo chương trình, dịch, thực  
thi chương trình… Phiên bản được sử dụng ở đây là Turbo C 3.0.  
+ Gọi Turbo C  
4
Chạy Turbo C cũng giống như chạy các chương trình khác trong môi  
trường DOS hay Windows, màn hình sẽ xuất hiện menu của Turbo C có  
dạng như sau:  
Dòng trên cùng gọi là thanh menu (menu bar). Mỗi mục trên thanh  
menu lại có thể có nhiều mục con nằm trong một menu kéo xuống.  
Dòng dưới cùng ghi chức năng của một số phím đặc biệt. Chẳng hạn  
khi gõ phím F1 thì ta có được một hệ thống trợ giúp mà ta có thể tham khảo  
nhiều thông tin bổ ích  
Muốn vào thanh menu ngang ta gõ phím F10. Sau đó dùng các phím  
mũi tên qua trái hoặc phải để di chuyển vùng sáng tới mục cần chọn rồi gõ  
phím Enter. Trong menu kéo xuống ta lại dùng các phím mũi tên lên xuống  
để di chuyển vùng sáng tới mục cần chọn rồi gõ Enter.  
Ta cũng có thể chọn một mục trên thanh menu bằng cách giữ phím  
Alt và gõ vào một ký tự đại diện của mục đó (ký tự có màu sắc khác với các  
ký tự khác). Chẳng hạn để chọn mục File ta gõ Alt-F (F là ký tự đại diện của  
File)  
+ Soạn thảo chương trình mới  
Muốn soạn thảo một chương trình mới ta chọn mục New trong menu  
File (File ->New)  
5
Trên màn hình sẽ xuất hiện một vùng trống để cho ta soạn thảo nội  
dung của chương trình. Trong quá trình soạn thảo chương trình ta có thể  
sử dụng các phím sau:  
Các phím xem thông tin trợ giúp:  
- F1: Xem toàn bộ thông tin trong phần trợ giúp.  
- Ctrl/F1: Trợ giúp theo ngữ cảnh (tức là khi con trỏ đang ở trong một từ  
nào  
đo, chẳng hạn int mà bạn gõ phím Ctrl-F1 thì bạn sẽ có được các thông tin  
về kiểu dữ liệu int)  
Các phím di chuyển con trỏ trong vùng soạn thảo chương trình:  
Các phím xoá ký tự/ dòng:  
Các phím chèn ký tự/ dòng:  
Sử dụng khối :  
Khối là một đoạn văn bản chương trình hình chữ nhật được xác định  
bởi đầu khối là góc trên bên trái và cuối khối là góc dưới bên phải của  
6
hình chữ nhật. Khi một khối đã được xác định (trên màn hình khối có màu  
sắc khác chỗ bình thường) thì ta có thể chép khối, di chuyển khối, xoá  
khối... Sử dụng khối cho phép chúng ta soạn thảo chương trình một cách  
nhanh chóng. sau đây là các thao tác trên khối:  
Các phím, phím tắt thực hiện các thao tác khác:  
Ví dụ: Bạn hãy gõ đoạn chương trình sau:  
#include <stdio.h>  
#include<conio.h>  
int main ()  
{
char ten[50];  
printf(“Xin cho biet ten cua ban !”);  
scanf(“%s”,ten);  
7
printf(“Xin chao ban %s”,ten);  
getch();  
return 0;  
}
+ Ghi chương trình đang soạn thảo vào đĩa  
Sử dụng File/Save hoặc gõ phím F2. Có hai trường hợp xảy ra:  
- Nếu chương trình chưa được ghi lần nào thì một hội thoại sẽ xuất hiện  
cho phép bạn xác định tên tập tin (FileName). Tên tập tin phải tuân thủ  
quy cách đặt tên của DOS và không cần có phần mở rộng (sẽ tự động có  
phần mở rộng là .C hoặc .CPP sẽ nói thêm trong phần Option). Sau đó gõ  
phím Enter.  
- Nếu chương trình đã được ghi một lần rồi thì nó sẽ ghi những thay đổi  
bổ sung lên tập tin chương trình cũ.  
Chú ý: Để đề phòng mất điện trong khi soạn thảo chương trinh thỉnh  
thoảng bạn nên gõ phím F2.  
Quy tắc đặt tên tập tin của DOS: Tên của tập tin gồm 2 phần: Phần tên và  
phần mở rộng.  
o Phần tên của tập tin phải bắt đầu là 1 ký tự từ a..z (không phân biệt hoa  
thường), theo sau có thể là các ký tự từ a..z, các ký số từ 0..9 hay dấu gạch  
dưới (_), phần này dài tối đa là 8 ký tự.  
o Phần mở rộng: phần này dài tối đa 3 ký tự.  
Ví dụ: Ghi chương trình vừa nhập ở trên với tên CHAO.C  
+ Thực hiện chương trình  
Để thực hiện chương trình hãy dùng Ctrl-F9 (giữ phím Ctrl và gõ phím  
F9).  
Ví dụ: Thực hiện chương trình vừa soạn thảo xong và quan sát trên màn  
hình để  
thấy kết quả của việc thực thi chương trình sau đó gõ phím bất kỳ để trở  
lại với Turbo.  
8
+ Mở một chương trình đã có trên đĩa  
Với một chương trình đã có trên đĩa, ta có thể mở nó ra để thực hiện hoặc  
sửa chữa bổ sung. Để mở một chương trình ta dùng File/Open hoặc gõ  
phím F3.Sau đó gõ tên tập tin vào hộp File Name hoặc lựa chọn tập tin  
trong danh sách các tập tin rồi gõ Enter.  
Ví dụ: Mở tập tin CHAO.C sau đó bổ sung để có chương trình mới như  
sau:  
#include <stdio.h>  
#include<conio.h>  
int main ()  
{
char ten[50];  
printf(“Xin cho biet ten cua ban !”);  
scanf(“%s”,ten);  
printf(“Xin chao ban %s\n ”,ten);  
printf(“Chao mung ban den voi Ngon ngu lap trinh C”);  
getch();  
return 0;  
}
Ghi lại chương trình này (F2) và cho thực hiện (Ctrl-F9). Hãy so sánh  
xem có  
gì khác trước?  
+ Thoát khỏi Turbo C và trở về DOS (Windows)  
Dùng File/Exit hoặc Alt-X.  
2. Khởi động và thoát chương trình  
- Khởi động vào chương trình Turbo C tương tự như vào các chương trình  
khác trên Windows bằng cách Click vào biểu tượng shortcut Turbo C trên  
9
Desktop, hoặc vào Window Explorer, chọn ổ đĩa chứa thư mục Turbo C,  
vào thư mục Turbo C, vào thư mục BIN, khởi động tập tin TC.EXE.  
- Thoát khỏi chương trình: Dùng File/Exit hoặc ấn tổ hợp phím Alt-X.  
10  
Chương II. Các thành phần trong ngôn ngữ C  
1. Từ khóa  
Từ khóa (Keyword) là các từ dành riêng (reserved words) của C mà  
người lập trình có thể sử dụng nó trong chương trình, mỗi từ khóa có chức  
năng nhất định và khi sử dụng phải viết đúng cú pháp. Ta không được dùng  
từ khóa để đặt cho các biến, hàm, tên chương trình con. Từ khóa được chia  
thành các loại sau đây:  
• Các từ khóa dùng để khai báo  
• Các từ khóa về kiểu dữ liệu  
• Các từ khóa điều khiển  
• Các từ khóa vòng lặp  
• Các từ khóa điều khiển  
• Các từ khóa khác  
Các từ khóa phải viết bằng chữ thường  
2. Tên  
Tên hay định danh là khái niệm rất quan trọng trong quá trình lập  
trình, nó không những thể hiện rõ ý nghĩa trong chương trình mà còn dùng  
để xác định các đại lượng khác nhau khi thực hiện chương trình. Tên là một  
11  
dãy ký tự dùng để chỉ tên một hằng số, hằng ký tự, tên một biến, một kiểu  
dữ liệu, một hàm. Tên không được trùng với các từ khóa và được tạo thành  
từ các chữ cái và các chữ số. Chiều dài tối đa của tên là 32 ký tự.  
Tên biến hợp lệ là một chuỗi ký tự liên tục gồm: Ký tự chữ, số và  
dấu gạch dưới. Ký tự đầu của tên phải là chữ hoặc dấu gạch dưới. Khi đặt  
tên không được đặt trùng với các từ khóa.  
Ví dụ 1 :  
Các tên đúng: delta, a_1, Num_ODD, Case  
Các tên sai:  
3a_1 (ký tự đầu là số)  
num-odd (sử dụng dấu gạch ngang)  
int (đặt tên trùng với từ khóa)  
del ta (có khoảng trắng)  
f(x) (có dấu ngoặc tròn)  
Lưu ý: Trong C, tên phân biệt chữ hoa, chữ thường  
Ví dụ 2 : number khác Number  
case khác Case  
(case là từ khóa, do đó bạn đặt tên là Case vẫn đúng)  
3. Kiểu dữ liệu  
a. Các kiểu dữ liệu cơ bản:  
Có 4 kiểu dữ liệu cơ bản trong C là: kiểu số nguyên, kiểu số thực, kiểu luận  
lý, kiểu ký tự.  
Kiểu số nguyên: là các kiểu dữ liệu mà giá trị của nó là số nguyên. Dữ  
liệu kiểu số nguyên lại chia ra thành hai loại như sau:  
• Các số nguyên có dấu (signed) để chứa các số nguyên âm hoặc  
dương.  
Bao gồm kiểu char, int, short, long.  
12  
• Các số nguyên không dấu (unsigned) để chứa các số nguyên dương  
(kể cả số 0). Bao gồm kiểu unsigned char, unsigned int, unsigned  
short, unsigned long.  
Kiểu số thực: Đây là các kiểu dữ liệu mà giá trị của nó là số thực.  
Trong C định nghĩa các kiểu số thực chuẩn như sau: float, double. Kiểu float  
là kiểu số thực có độ chính xác đơn (single-precision floating-point), kiểu  
double là kiểu số thực có độ chính xác kép (double-precision floating-point).  
Số thực kiểu float có độ chính xác là 6 chữ số sau dấu thập phân, còn  
kiểu số thực double có độ chính xác là 15 chữ số sau dấu thập phân, do vậy  
khi sử dụng nếu yêu cầu giá trị lớn, độ chính xác cao thì nên dùng double,  
ngược lại dùng float.  
Kiểu luận lý: Trong C không hỗ trợ kiểu luận lý tường minh mà chỉ  
ngầm hiểu một cách không tường minh như sau:  
• false (sai) là giá trị 0.  
• true (đúng) là giá trị khác 0, thường là 1.  
Các ngôn ngữ lập trình nâng cấp khác của C như C++ định nghĩ kiểu  
luận lý tường minh có tên là bool (2 giá trị false/true).  
Kiểu ký tự: Đây chính là kiểu dữ liệu số nguyên char có độ lớn 1 byte  
và miền giá trị là 256 ký tự trong bảng mã ASCII.  
b. Kiểu enum  
13  
Kiểu enum trong ngôn ngữ lập trình C là một loại kiểu liệt kê dùng để khai  
báo các biến có chứa các đối tượng kiểu đếm được có giá trị thuộc một miền  
thứ tự được chỉ rõ trong lúc khai báo. Để tạo ra một dữ liệu kiểu enum ta sử  
dụng câu lệnh có cú pháp sau đây:  
Enum ten_kieu{danh sách các phần tử}  
Trong đó ten_kieu là tên của kiểu dữ liệu liệt kê mới vừa được tạo ra, danh  
sách các phần tử là các giá trị liệt kê mà các biến có thể nhận được, các phần  
tử phân cách nhau bởi dấu phẩy.  
Ví dụ để làm việc với các ngày trong tuần ta có thể dùng kiểu Weekday  
như sau:  
Enum Weekday {SUNDAY, MONDAY, TUESDAY, WEDSDAY,  
THURSDAY, FRIDAY, SATURDAY}Day1;  
Enum Weekday Day2;  
Khi đó Day1, Day2 là các biến kiểu Weekday và chúng có thể nhận các  
giá trị đã được liệt kê. Các câu lệnh sau đây là hợp lệ:  
Day1=SUNDAY;  
Day2=FRIDAY;  
Thực chất các biến kiểu enum của ngôn ngữ lập trình C được coi là biến  
nguyên, chúng được cấp phát 2 byte bộ nhớ và có thể nhận một giá trị  
nguyên nào đó. Mỗi khi một dữ liệu kiểu enum được định nghĩa ra thì các  
phần tử trong danh sách các phần tử sẽ được gán cho các giá trị nguyên  
liên tiếp bắt đầu từ 0. Ví dụ như kiểu Weekday ở trên thì SUNDAY sẽ có giá  
trị là 0, MONDAY sẽ có giá trị là 1,…Do đó hai câu lệnh sau đây có kết quả  
giống nhau:  
Day1=0; và Day1=SUNDAY;  
c. Kiểu tự định nghĩa  
Trong ngôn ngữ lập trình C ta có thể tự định nghĩa ra các kiểu dữ liệu của  
riêng mình bằng cách thêm từ khóa typedef vào trước một khai báo nào đó.  
Ví dụ Định nghĩa kiểu bằng typedef.  
14  
Để khai báo một biến nguyên có tên là nguyen ta có thể viết như sau:  
int nguyen;  
Nhưng nếu ta thêm từ khóa typedef vào trước của khai báo đó:  
typedef int nguyen;  
Thì lúc này nguyen đã trở thành một kiểu dữ liệu mới và câu lệnh sau  
đây là hoàn toàn đúng: nguyen i,j; tương tự ta cũng có thể định nghĩa  
ra một kiểu dữ liệu mới có tên là Mangnguyen50 dùng để khai báo  
các biến mảng nguyên có kích thước là 50 như sau:  
typedef int MangNguyen50[50];  
Sau câu lệnh này MangNguyen50 sẽ trở thành một kiểu dữ liệu mới  
và ta có thể dùng nó để khai báo cho các biến tương tự như việc khai báo các  
biến có kiểu định nghĩa sẵn. Câu lệnh sau sẽ tạo ra hai biến kiểu  
MangNguyen50 là m1,m2, mỗi biến là một mảng kiểu số nguyên có kích  
thước 50.  
MangNguyen50 m1,m2;  
4. Ghi chú  
Trong khi lập trình cần phải ghi chú để giải thích các biến, hằng,  
thao tác xử lý giúp cho chương trình rõ ràng dễ hiểu, dễ nhớ, dễ sửa chữa và  
để người khác đọc vào dễ hiểu. Trong C có các ghi chú sau: // hoặc /* nội  
dung ghi chú */  
Ví dụ 3 :  
void main()  
{
int a, b; //khai bao bien t kieu int  
a = 1; //gan 1 cho a  
b =3; //gan 3 cho b  
/* thuat toan tim so lon nhat la  
neu a lon hon b thi a lon nhat  
15  
nguoc lai b lon nhat */  
if (a > b) printf("max: %d", a);  
else printf("max: %d", b);  
}
Khi biên dịch chương trình, C gặp cặp dấu ghi chú sẽ không dịch ra  
ngôn ngữ máy.  
Tóm lại, đối với ghi chú dạng // dùng để ghi chú một hàng và dạng  
/* …. */ có thể ghi chú một hàng hoặc nhiều hàng.  
Ví dụ 4 :  
#include <stdio.h>  
#include<conio.h>  
int main ()  
{
char ten[50]; /* khai bao bien ten kieu char 50 ky tu */  
/*Xuat chuoi ra man hinh*/  
printf(“Xin cho biet ten cua ban !”);  
scanf(“%s”,ten); /*Doc vao 1 chuoi la ten cua ban*/  
printf(“Xin chao ban %s\n ”,ten);  
printf(“Chao mung ban den voi Ngon ngu lap trinh C”);  
/*Dung chuong trinh, cho go phim*/  
getch();  
return 0;  
}
5. Khai báo biến  
Biến là một vùng nhớ có kích thước và có một địa chỉ nhất định nằm  
trong bộ nhớ RAM. Biến dùng để lưu giữ một dữ liệu đầu vào, đầu ra hoặc  
một kết quả trung gian trong quá trình làm việc. Dữ liệu được lưu trong  
biến nên cách tổ chức thông tin trong biến là kiểu của dữ liệu.  
16  
Biến là một đại lượng được người lập trình định nghĩa và được đặt tên  
thông qua việc khai báo biến. Biến dùng để chứa dữ liệu trong quá trình thực  
hiện chương trình và giá trị của biến có thể bị thay đổi trong quá trình này.  
Để phân biệt các biến với nhau, mỗi biến sẽ được đặt một tên theo quy  
tắc đặt định danh và được gọi là định danh biến (Variable Indentifier).  
Cách đặt tên biến giống như cách đặt tên đã nói trong phần trên.  
Mỗi biến thuộc về một kiểu dữ liệu xác định và có giá trị thuộc kiểu đó.  
a. Cú pháp khai báo biến  
<Kiểu dữ liệu>  
phẩy;  
Danh sách các tên biến cách nhau bởi dấu  
Kiểu dữ liệu: một trong các kiểu ở mục 3  
Danh sách tên các biến: gồm các tên biến có cùng kiểu dữ liệu, mối tên  
biến cùng kiểu dữ liệu cách nhau bởi dấu phấy (,), cuối cùng là dấu chấm  
phẩy (;). Các biến khác kiểu nhau được khai báo cách nhau bằng dấu  
chấm phẩy (;).  
Ví dụ:  
int ia, ib, ic;  
/*Ba biến a, b,c có kiểu int*/  
int ituoi; //khai báo biến ituoi có kiểu int  
float fTrongluong; //khai báo biến fTrongluong có kiểu long  
char ckitu1, ckitu2; //khai báo biến ckitu1, ckitu2 có kiểu char  
Các biến khai báo trên theo quy tắc Hungarian Notation. Nghĩa là biến  
ituoi là kiểu int, bạn thêm chữ i (kí tự đầu của kiểu) vào đầu tên biến  
tuoi để trong quá trình lập trình hoặc sau này xem lại, sửa chữa… bạn dễ  
dàng nhận ra biến ituoi có kiểu int mà không cần phải di chuyển đến  
phần khai báo mới biết kiểu của biến này. Tương tự cho biến  
fTrongluong, bạn nhìn vào là biết ngay biến này có kiểu float.  
Lưu ý: Để kết thúc 1 lệnh phải có dấu chấm phẩy (;) ở cuối lệnh.  
Để xác định độ lớn của một biến (số byte mà biến chiếm giữ trong bộ  
nhớ) chúng ta sử dụng toán tử sau:  
17  
int sizeof(<Biến>)  
b. Vừa khai báo vừa khởi gán  
Có thể kết hợp việc khai báo với toán tử gán để biến nhận ngay giá trị  
cùng lúc với khai báo.  
Ví dụ 5 :  
Khai báo trước, gán giá trị sau:  
void main()  
{
int a, b, c;  
a = 1;  
b = 2;  
c = 5;  
}
Vừa khai báo vừa gán giá trị:  
void main()  
{
int a = 1, b = 2, c = 5;  
}
c. Phạm vi của biến  
Trong ngôn ngữ lập trình C, ta phải nắm rõ phạm vi của biến. Nếu khai  
báo và sử dụng không đúng, không rõ ràng sẽ dẫn đến sai sót khó kiểm  
soát được, vì vậy bạn cần phải xác định đúng vị trí, phạm vi sử dụng biến  
trước khi sử dụng biến. Chúng ta có 2 cách đặt vị trí của biến như sau:  
Khai báo biến ngoài (biến toàn cục): Vị trí biến đặt bên ngoài tất  
cả các hàm, cấu trúc... Các biến này có ảnh hưởng đến toàn bộ  
chương trình. Chu trình sống (thời gian được cấp phát bộ nhớ)  
của nó là bắt đầu chạy chương trình đến lúc kết thúc chương  
18  
trình. Nghĩa là giá trị của biến sẽ được lưu trữ trong suốt thời gian  
mà chương trình hoạt động. Một biến ngoài có thể được khởi gán  
một lần lúc dịch chương trình, nếu không được khởi gán máy sẽ  
mặc định gán cho giá trị 0 hoặc NULL (nếu là con trỏ).  
Ví dụ:  
int  
i; /*Bien ben ngoai */  
pi; /*Bien ben ngoai*/  
float  
int main()  
{ … }  
Khai báo biến trong hay biến cục bộ: Các biến được đặt ở bên  
trong hàm, chương trình chính hay một khối lệnh. Các biến này  
chỉ có tác dụng hay ảnh hưởng đến hàm, chương trình hay khối  
lệnh chứa nó. Khi khai báo biến, phải đặt các biến này ở đầu của  
khối lệnh, trước các lệnh gán, … Chu trình sống (thời gian được  
cấp phát bộ nhớ) của nó là bắt đầu từ khi máy làm việc với khối  
lệnh đến khi ra khỏi khối lệnh đó. Nghĩa là khi ra khỏi khối lệnh,  
vùng nhớ được cấp phát cho biến sẽ bị xóa, do đó các giá trị của  
biến cũng mất đi. Một biến trong (không áp dụng cho mảng) nếu  
không được khởi gán một giá trị nào đó thì biến đó hoàn toàn  
không xác định (nhận một giá trị ngẫu nhiên sẵn có trong bộ nhớ  
lúc được cấp phát)  
Ví dụ 6:  
#include <stdio.h>  
#include<conio.h>  
int bienngoai; /*khai bao bien ngoai*/  
int main ()  
{
int j,i; /*khai bao bien ben trong chuong trinh chinh*/  
clrscr();  
i=1; j=2;  
19  
bienngoai=3;  
printf("\n Gia7 tri cua i la %d",i);  
/*%d là số nguyên, sẽ biết sau */  
printf("\n Gia tri cua j la %d",j);  
printf("\n Gia tri cua bienngoai la %d",bienngoai);  
getch();  
return 0;  
}
Ví dụ 7:  
#include <stdio.h>  
#include<conio.h>  
int main ()  
{
int i, j;  
/*Bien ben trong*/  
clrscr();  
i=4; j=5;  
printf("\n Gia tri cua i la %d",i);  
printf("\n Gia tri cua j la %d",j);  
if(j>i)  
{
int hieu=j-i;  
/*Bien ben trong */  
printf("\n Hieu so cua j tru i la %d",hieu);  
}
else  
{
int hieu=i-j  
; /*Bien ben trong*/  
printf("\n Gia tri cua i tru j la %d",hieu);  
}
getch();  
return 0;  
20  
Tải về để xem bản đầy đủ
pdf 101 trang yennguyen 13/04/2022 2580
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Lập trình căn bản - Vũ Thị Kim Phượng", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfgiao_trinh_lap_trinh_can_ban_vu_thi_kim_phuong.pdf