Tài liệu Giáo trình: Lập trình cơ bản (Phần 1): Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
1
LỜI NÓI ĐẦU
Giáo trình “Lập trình cơ bản” trong bộ giáo trình nghề Công nghệ thông tin,
được xây dựng và biên soạn trên cơ sở chương trình khung đào tạo nghề do Bộ Lao
động – Thương binh và Xã hội ban hành và được chi tiết hóa trong chương trình đào
tạo nghề Công nghệ thông tin (ứng dụng phần mềm) của Trường Cao đẳng nghề Yên
Bái. Đối tượng phục vụ là học sinh sinh viên trong các khoá đào tạo trình độ cao đẳng
nghề, trung cấp nghề Công nghệ thông tin, trong các cơ sở sản xuất làm tài liệu học
tập và nghiên cứu. Các nhà quản lý và người sử dụng nhân lực trong các cơ sở sản
xuất làm tài liệu tham khảo.
Giáo trình môn học “Lập trình cơ bản” được biên soạn theo các nguyên tắc: Tính
định hướng thị trường lao động, tính hệ thống và khoa học, tính ổn định và linh hoạt,
hướng tới liên thông, chuẩn đào tạo nghề trong nước và thế giới, tính hiện đại và sát
thực với sản xuất.
Nội dung giáo trình này gồm 7 c...
51 trang |
Chia sẻ: honghanh66 | Lượt xem: 1073 | Lượt tải: 0
Bạn đang xem trước 20 trang mẫu tài liệu Giáo trình: Lập trình cơ bản (Phần 1), để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
1
LỜI NÓI ĐẦU
Giáo trình “Lập trình cơ bản” trong bộ giáo trình nghề Công nghệ thông tin,
được xây dựng và biên soạn trên cơ sở chương trình khung đào tạo nghề do Bộ Lao
động – Thương binh và Xã hội ban hành và được chi tiết hóa trong chương trình đào
tạo nghề Công nghệ thông tin (ứng dụng phần mềm) của Trường Cao đẳng nghề Yên
Bái. Đối tượng phục vụ là học sinh sinh viên trong các khoá đào tạo trình độ cao đẳng
nghề, trung cấp nghề Công nghệ thông tin, trong các cơ sở sản xuất làm tài liệu học
tập và nghiên cứu. Các nhà quản lý và người sử dụng nhân lực trong các cơ sở sản
xuất làm tài liệu tham khảo.
Giáo trình môn học “Lập trình cơ bản” được biên soạn theo các nguyên tắc: Tính
định hướng thị trường lao động, tính hệ thống và khoa học, tính ổn định và linh hoạt,
hướng tới liên thông, chuẩn đào tạo nghề trong nước và thế giới, tính hiện đại và sát
thực với sản xuất.
Nội dung giáo trình này gồm 7 chương: Cung cấp cho sinh viên những khái niệm
cơ bản về ngôn ngữ lập trình C: câu lệnh, từ khóa, cú pháp, cách khai báo và sử
dụng biến, hàm và các cấu trúc lệnh trong ngôn ngữ C;Hiểu được ý nghĩa, cách khai
báo, cách truy xuất với một số cấu trúc dữ liệu;Biết được một số thuật toán để xử lý
một số yêu cầu đơn giản; Cài đặt được một số chương trình ứng dụng đơn giản
bằng ngôn ngữ lập trình C;Đọc hiểu và chỉnh sửa các chương trình C có sẵn;
Trong quá trình thực hiện nhóm biên soạn đã tham khảo nhiều tài liệu liên quan
của các trường bạn, sách kỹ thuật của các chuyên gia... đồng thời tham khảo nhiều
tài liệu của các trường đào tạo, hãng sản xuất; các yêu cầu của thực tế, các kiến thức
mới cũng đã được nhóm biên soạn cố gắng cập nhật và thể hiện trong giáo trình
Ngoài ra còn có sự tham gia đóng góp ý kiến tích cực của các cán bộ, kỹ sư kỹ thuật
chuyên ngành trong và ngoài tỉnh để giáo trình được hoàn thiện.
Giáo trình môn học “Lập trình cơ bản” đã được Hội đồng thẩm định Trường Cao
đẳng nghề Yên Bái nghiệm thu và nhất trí đưa vào sử dụng làm tài liệu chính thống
trong nhà trường phục vụ giảng dạy và học tập của học sinh sinh viên.
Giáo trình này được biên soạn lần đầu nên mặc dù đã hết sức cố gắng song khó
tránh khỏi những thiếu sót, chúng tôi mong nhận được các ý kiến đóng góp của người
sử dụng và các đồng nghiệp để giáo trình ngày càng được hoàn thiện hơn.
Xin trân trọng giới thiệu!
HIỆU TRƯỞNG
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
2
Thạc sỹ: Trịnh Tiến Thanh
MỤC LỤC
LỜI MỞ ĐẦU................................................................................................................... 1
Chương 1:TỔNG QUAN VỀ NGÔN NGỮ C ........................................................................... 7
1. Giới thiệu ngôn ngữ C ............................................................................................... 7
1.1 Lịch sử phát triển........................................................................................................7
1.2 Sự cần thiết ................................................................................................................7
2. Các thao tác cơ bản .................................................................................................. 8
2.1 Khởi động...................................................................................................................8
2.2 Thoát khỏi ..................................................................................................................9
2.3 Tạo mới, ghi một chương trình C ................................................................................9
3. Sử dụng trợ giúp .................................................................................................... 10
4. Một số thao tác trên thanh menu bar ....................................................................... 10
Chương 2: CÁC THÀNH PHẦN CƠ BẢN.............................................................................. 17
1. Từ khóa và kí hiệu ............................................................................................... 17
1.1 Từ khóa ...............................................................................................................17
1.2 Ký hiệu .....................................................................................................................17
1.3 Tập ký hiệu ...............................................................................................................17
2. Các kiểu dữ liệu sơ cấp ............................................................................................ 18
2.1 Kiểu số nguyên .........................................................................................................18
2.2 Kiểu số dấu phẩy động .................................................................................. 19
2.3 Kiểu ký tự ................................................................................................................19
3. Biến, hằng, biểu thức .............................................................................................. 20
3.1. Phân loại, khai báo và sử dụng biến .........................................................................20
3.2 Hằng ........................................................................................................................20
3.3 Biểu thức..................................................................................................................22
4.Cấu trúc một chương trình ....................................................................................... 23
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
3
4.1 Tiền xử lý và biên dịch ..............................................................................................23
4.2 Cấu trúc một chương trình C ....................................................................................24
4.3 Các thư viện thông dụng ..........................................................................................25
4.4 Chú thích trong chương trình ....................................................................................25
5. Các phép toán........................................................................................................ 26
6. Câu lệnh ............................................................................................................... 27
6.1 Khái niệm .................................................................................................................27
6.2 Lệnh gán và lệnh gộp ...............................................................................................27
6.3 Nhập xuất dữ liệu .....................................................................................................29
6.4. Các lệnh toán học ....................................................................................................31
6.5. Một số lệnh làm việc với màn hình và bàn phím .......................................................31
7. Thực thi chương trình ............................................................................................. 32
BÀI TẬP THỰC HÀNH .................................................................................................. 33
Chương 3: CÁC LỆNH CẤU TRÚC .................................................................................. 37
1. Cấu trúc rẽ nhánh .................................................................................................. 37
1.1. Dạng đầy đủ ........................................................................................................37
1.2. Dạng không đầy đủ ..............................................................................................38
3. Cấu trúc lặp ........................................................................................................... 41
3.1 Cấu trúc lặp for ........................................................................................................41
3.2 Cấu trúc lặp while, do while ......................................................................................42
4. Các lệnh đặc biệt .................................................................................................... 44
4.1. Lệnh Break ..............................................................................................................44
4.2. Lệnh continue ..........................................................................................................45
4.3. Lệnh goto ................................................................................................................45
BÀI TẬP THỰC HÀNH .................................................................................................. 46
Chương 4: HÀM ........................................................................................................... 52
1. Khái niệm hàm ....................................................................................................... 52
1.1Khái niệm và phân loại ..............................................................................................52
1.2 Quy tắc hoạt động của hàm .....................................................................................53
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
4
2. Xây dựng hàm ........................................................................................................ 53
2.1 Định nghĩa hàm ........................................................................................................53
2.2 Sử dụng hàm ............................................................................................................55
3. Các tham số của hàm .............................................................................................. 56
3.1 Phân biệt các loại tham số ........................................................................................56
3.2 Cách truyền tham số ................................................................................................57
Truyền bằng tham trị .....................................................................................................57
Truyền bằng biến ...........................................................................................................57
Các đối số mặc định .......................................................................................................57
Chiều dài biến đổi được của danh sách tham số .............................................................57
Các tham số danh định ..................................................................................................58
3.3. Biến toàn cục và biến cục bộ ....................................................................................58
4. Hàm đệ quy ........................................................................................................... 59
4.1 Khái niệm đệ quy ......................................................................................................59
4.2 Các bài toán dùng đệ quy .........................................................................................59
4.3 Cách xây dựng hàm đệ quy .......................................................................................60
4.4 Các ví dụ về hàm đệ quy ...........................................................................................60
BÀI TẬP VẬN DỤNG .................................................................................................... 63
Chương 5: MẢNG .......................................................................................................... 67
1. Khái niệm mảng ..................................................................................................... 67
2. Khai báo mảng ....................................................................................................... 67
3. Truy xuất mảng ...................................................................................................... 70
3.1 Truy xuất mảng 1 chiều ............................................................................................70
3.2 Truy xuất mảng 2 chiều ............................................................................................70
BÀI TẬP THỰC HÀNH .................................................................................................. 72
Chương 6: CON TRỎ ...................................................................................................... 77
1. Khái niệm về con trỏ và địa chỉ ................................................................................. 77
2. Khai báo về sử dụng biến con trỏ .............................................................................. 78
2.1 Khai báo biến con trỏ ...............................................................................................78
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
5
2.2. Các thao tác trên con trỏ ......................................................................................78
3. Con trỏ và mảng 1 chiều .......................................................................................... 82
3.1 Phép toán lấy địa chỉ ................................................................................................83
3.2 Tên mảng là 1 hằng địa chỉ.......................................................................................84
3.3 Con trỏ trỏ tới các phần tử của mảng 1 chiều............................................................85
4. Con trỏ và hàm ...................................................................................................... 87
BÀI TẬP THỰC HÀNH .................................................................................................. 88
Chương 7 : CHUỖI KÝ TỰ ................................................................................................ 91
1. Khái niệm .............................................................................................................. 91
2. Khai báo ................................................................................................................ 91
2.1 Khai báo theo mảng .................................................................................................91
3. Các thao tác trên chuỗi ........................................................................................... 92
3.1 Nhập chuỗi từ bàn phím ...........................................................................................92
3.2 Xuất chuỗi ra màn hình ............................................................................................92
3.3 Một số hàm xử lý chuỗi ............................................................................................93
3.4 Một số thao tác cơ bản trên chuỗi ............................................................................94
BÀI TẬP THỰC HÀNH .................................................................................................. 97
PHỤ LỤC .................................................................................................................... 101
HƯỚNG DẪN DEBUG TRÊN MÔI TRƯỜNG BORLAND C ..................................................... 101
TÀI LIỆU THAM KHẢO .................................................................................................. 104
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
6
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
7
CHƯƠNG 1: TỔNG QUAN VỀ NGÔN NGỮ C
1. Giới thiệu ngôn ngữ C
1.1 Lịch sử phát triển
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)
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 ngày 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 cho 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ừ đó.
1.2 Sự cần thiết
Ngôn ngữ lập trình C đã làm thay đổi thế giới máy tính. Sự tác động của nó nhiều
khi không được đánh giá đúng mức. Nó thay đổi cách tiếp cận và nhìn nhận về lập
trình một cách cơ bản. Sự ra đời của C là kết quả trực tiếp của sự cần thiết phải thay
đổi về cấu trúc, hiệu quả, ngôn ngữ bậc cao thay thế cho mã máy khi viết các chương
trình hệ thống. Như chúng ta biết, khi thiết kế một ngôn ngữ lập trình, sự cân nhắc
luôn được xem xét giữa:
- Tính dễ dàng sử dụng và sức mạnh
- Sự an toàn
- Sự chặt chẽ và khả năng mở rộng
Trước khi có C, lập trình viên thường xuyên phải chọn giữa các ngôn ngữ đã thu
gọn một tập các đặc điểm. Ví dụ, mặc dù FORTRAN có thể được dùng để viết các
chương trình hiệu quả cho các ứng dụng khoa học, nhưng nó không tốt lắm cho viết
mã hệ thống. Trong khi BASIC dễ dàng cho người học thì nó lại không đủ mạnh và
thiếu các cấu trúc cho các chương trình lớn. Ngôn ngữ Assembly có thể được dùng
để viết các chương trình hiệu quả cao nhất nhưng không dễ dàng để sử dụng cũng
như gỡ rối rất khó khăn.
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
8
Một số vấn đề khác là các ngôn ngữ lập trình như BASIC, COBOL, không được
thiết kế dựa trên các yếu tố cấu trúc. Chúng dựa trên lệnh GOTO để điều khiển
chương trình. Vì vậy mà các chương trình được viết bởi ngôn ngữ này hướng tới việc
sinh ra mã spagheti – một khối lộn xộn các lệnh nhảy và rẽ nhánh làm cho chương
trình không thể hiểu được.
Trong khi ngôn ngữ như Pascal là ngôn ngữ cấu trúc, nó không được thiết kế
để đạt hiệu quả cao, và thiếu các đặc điểm cần thiết để ứng dụng cho những chương
trình lớn. Vì thế, trước khi có ngôn ngữ C, không có ngôn ngữ nào có thể dung hòa
được sự xung đột đã tồn tại trước đó.
Ngôn ngữ C là một ngôn ngữ lập trình hệ thống rất mạnh mẽ 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 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.
2. Các thao tác cơ bản
2.1 Khởi động
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ìnhPhiên bản sử dụng ở đây là Turbo C 3.0.
- Sau khi cài đặt song ta có thư mục TC hoặc TC30 trong thư mục này có các thư
mục con sau.
- Để khởi động chương trình này chúng ta chạy tệp tin TC.EXE trong thư mục Bin
của TurboC . Màn hình giao diện của TurboC có dạng sau:
TC
BIN
INCLUDE
LIB
Chứa các tệp tin chính của chýõng trình trong đó có
tệp TC.EXE
Chứa các tệp tin khai báo thý viện ( *.h)
Chứa các tệp tin mã lệnh của các thý viện (*.LIB)
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
9
Hình 1.2.1: Màn hình giao diện TurboC 3.0
Dòng trên cùng gọi là thanh menu (menu bar). Mỗi mục trên thanh menu 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.
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 qua 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 đó.
2.2 Thoát khỏi
Để thoát khỏi Turbo C và trở về DOS hay Windows có 2 cách:
- Cách 1: Vào menu File/Exit
- Cách 2 : Dùng phím tắt : Alt + X
2.3 Tạo mới, ghi một chương trình C
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). 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 chèn ký tự/ dòng
Insert Thay đổi viết xen hay viết chồng
Ctrl - N Xen một dòng trống vào truớc vị trí con trỏ
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
10
Các phím xoá ký tự/ dòng
Phím Ý nghĩa Phím tắt
Delete Xoá ký tự tại vị trí con trỏ Ctrl -G
BackSpace Di chuyển sang trái đồng thời xoá ký tự đứng
truớc con trỏ
Ctrl -H
Xoá một dòng chứa con trỏ Ctrl -Y
Xoá từ vị trí con trỏ đến cuối dòng Ctrl –Q- Y
Xoá ký tự bên phải con trỏ Ctrl -T
- 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). 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.
3. Sử dụng trợ giúp
Trên menu Help bao gồm các lệnh gọi trợ giúp khi người lập trình cần giúp đỡ một số
vấn đề nào đó như: Cú pháp câu lệnh, cách sử dụng các hàm có sẵn
- Lệnh Contents: Hiển thị toàn bộ nội dung của phần help.
- Lệnh Index: Hiển thị bảng tìm kiếm theo chỉ mục.
4. Một số thao tác trên thanh menu bar
Các lệnh trên menu File
- Lệnh New : Dùng để tạo mới một chương
trình. Tên ngầm định của chương trình là
NONAMEXX.C (XX là 2 số từ 00 đến 99).
- Lệnh Open : Dùng để mở một chương trình đã
có sẵn trên đĩa để sửa chữa, bổ sung hoặc để
thực hiện chương trình đó. Khi tập tin
được mở thì văn bản chương trình được
Hình 1.4a. Các lệnh trên menu file
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
11
trình bày trong vùng soạn thảo; hộp thoại Open như sau:
Hình 1.4b: Hộp thoại Open
Trong trường hợp ta nhập vào tên tập tin chưa tồn tại thì chương trình được tạo
mới và sau này khi ta lưu trữ, chương trình được lưu với tên đó.
- Lệnh Save: Dùng để lưu chương trình đang soạn thảo vào đĩa.
- Lệnh Save as : Dùng để lưu chương trình đang soạn thảo với tên khác, hộp
thoại lưu tập tin đang soạn với tên khác như sau:
Hình 1.4c: Hộp thoại Save
- Lệnh Save All : Dùng để lưu mọi thay đổi trên tất cả các chương trình đang mở
- Lệnh Change Dir: Dùng để đổi thư mục hiện hành
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
12
Hình 1.4d: Hộp thoại thay đổi thư mục
- Lệnh Print: Dùng để in chương trình đang soạn thảo ra máy in.
- Lệnh Printer Setup: Dùng để thiết đặt một số thông số cho máy in.
- Lệnh Dos Shell: Dùng để thoát tạm thời về Dos, để trở lại Turbo C ta gõ EXIT.
- Lệnh Exit: Dùng để thoát khỏi C.
Các lệnh trên menu Edit
- Lệnh Undo: Dùng để hủy bỏ thao tác soạn
thảo cuối cùng trên cửa sổ soạn thảo.
- Lệnh Redo: Dùng đẻ phục hồi lại tha tác đã bị
Undo cuối cùng.
- Lệnh Cut : Dùng để xóa một phần văn bản đã
được đánh dấu khối, phần dữ liệu bị xóa sẽ
được lưu vào một vùng nhớ đặc biệt gọi là
Clipboard.
- Lệnh Copy: Dùng để chép phần chương trình đã
được đánh dấu khối vào Clipboard.
- Lệnh Paste: Dùng để dán phần chương trình đang được lưu trong Clipboard
vào cửa sổ đang soạn thảo, bắt đầu tại vị trí của con trỏ.
- Lệnh Clear: Dùng để xóa phần dữ liệu đã được đánh dấu khối, dữ liệu bị xóa
không được lưu vào Clipboard.
- Lệnh Show clipboard: Dùng để hiển thị phần chương trình đang được lưu
trong Clipboard trong một cửa sổ mới.
Hình 1.4e: Các lệnh trên
menu Edit
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
13
Các lệnh trên menu Search
- Lệnh Find: Dùng để tìm kiếm một
cụm từ trong văn bản chương
trình. Nếu tìm thấy thì con trỏ sẽ di
chuyển đến doạn văn bản trùng với
cụm từ cần tìm; hộp thoại Find như
sau:
Hình 1.4g: Hộp thoại Find text
Ý nghĩa các lựa chọn trong hộp thoại trên như sau:
+ Case sentitive: Phân biệt chữ IN HOA với chữ in thường trong khi so sánh cụm
từ cần tìm với văn bản chương trình.
+ Whole word only: Một đoạn văn bản chương trình trùng với toàn bộ cụm từ cần
tìm thì mới được xem là tìm thấy.
+ Regular expression: Tìm theo biểu thức
+ Global: Tìm trên tất cả tập tin.
+ Forward: Tìm đến cuối tập tin.
+ Selected text: Chỉ tìm trong khối văn bản đã được đánh dấu.
+ Backward: Tìm đến đầu tập tin.
+ From cursor: Bắt đầu từ vị trí con nháy.
+ Entire scope: Bắt đầu từ vị trí đầu tiên của khối hoặc tập tin.
Hình 1.4f: Các lệnh trên menu Search
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
14
- Lệnh Replace: Dùng để tìm kiếm một đoạn văn bản nào đó, và tự động thay
bằng một đoạn văn bản khác, hộp thoại replace như sau:
- Lệnh Search again: Dùng để thực hiện lại việc tìm kiếm.
- Các lệnh còn lại trên menu Search, các bạn sẽ tìm hiểu thêm khi thực hành
trực tiếp trên máy.
Các lệnh trên menu Run
Lệnh Run : Dùng để thực thi hay
“chạy” một chương trình.
- Lệnh Step over: Dùng để “chạy”
chương trình từng bước.
- Lệnh Trace into: Dùng để chạy
chương trình từng bước. Khác với
lệnh Step over ở chỗ: Lệnh Step over không cho chúng ta xem từng bước
“chạy” trong chương trình con, còn lệnh Trace into cho chúng ta xem từng
bước trong chương trình con.
Các lệnh trên menu Complie
- Lệnh Complie: Biên dịch một
chương trình.
- Lệnh Make, Build,: Tìm hiểu trên
máy
Hình 1.4h: Hình ảnh
minh họa tìm các cụm
từ Scanf và thay thế
bằng scanf
Hình 1.4i: Các lệnh trên menu
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
15
- Lệnh Information: Dùng để hiển thị các thông tin về chương trình, Mode, môi
trường.
Các lệnh trên menu Debug
- Lệnh Breakpoints: Dùng để đặt
“điểm dừng” trong chương
trình. Khi chương trình
thực thi đến “điểm dừng thì
nó sẽ dừng lại”.
- Lệnh Watch: Dùng để mở
một cửa sổ hiển thị kết quả trung
gian của một biến nhớ nào đó khi
chạy chương trình từng bước.
- Lệnh Evaluate/Modify: Tìm hiểu trên máy.
Các lệnh trên menu Option
- Lệnh Complier: Dùng để thiết đặt lại một
số thông số khi biên dịch chương trình như
hình sau.
- Lệnh Directories: Dùng để đặt lại
đường dẫn tìm đến các tập tin cần
thiết khi biên dịch chương trình như sau:
Hình 1.4j: Các lệnh trên menu Complie
Hình 1.4k: Các lệnh trên menu Debug
Hình 1.4m: Các lệnh trên menu Option
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
16
Hình 1.4n: Hộp thoại thiết lập đường dẫn tới các tệp tin cần thiết
+ Include Directories: Thư mục chứa các tập tin mà chúng ta muốn đưa vào
chương trình (các tập tin .h trong dòng #include).
+ Library directories: Thư mục chứa các tập tin thư viện (các tập tin .Lib)
+ Output directory: Thư mục chứa các tập tin “đối tượng” (có phần mở rộng là
.OBJ), tập tin thực thi (.exe) khi biên dịch chương trình.
+ Source directories: Thư mục chứa các tập tin “nguồn” (có phần mở rộng là
.obj,.lib).
- Lệnh Enviroment: Dùng để thiết lập môi trường làm việc như:
+ Reference: Các tham chiếu.
+ Editor: Môi trường soạn thảo
+ Mouse: Đặt chuột
+ ColorsĐặt màu.
Các lệnh trên menu Window
- Lệnh Cascade: Dùng để sắp xếp các cửa sổ.
- Lệnh Close all: Dùng để đóng tất cả các cửa sổ.
- Lệnh Zoom: Dùng để phóng to/thu nhỏ cửa sổ.
- Các lệnh khác: Tìm hiểu khi thực hành
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
17
CHƯƠNG 2: CÁC THÀNH PHẦN CƠ BẢN
1. Từ khóa và kí hiệu
1.1 Từ khóa
Từ khóa 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 tùy theo ý nghĩa của từng từ.
Ví dụ: void struct class while .
Không được dùng từ khóa để đặt tên cho các hằng, biến, mảng, hàm Từ khóa
phải viết bằng chữ thường.
Ví dụ:
- Từ khóa viết đúng: struct
- Từ khóa viết sai: Struct.
1.2 Ký hiệu
Mỗi một ngôn ngữ lập trình đều được xây dựng từ một bộ ký tự nào đó. Các ký tự
được nhóm lại theo nhiều cách khác nhau để lập nên các từ. Đến lượt mình các từ
được liên kết theo một quy tắc nào đó để tạo thành các câu lệnh. Một chương trình
bao gồm nhiều câu lệnh và diễn đạt một thuật toán để giải một bài toán nào đó.
Ngôn ngữ C được xây dựng trên bộ ký tự sau:
Các chữ cái hoa: A B CZ
Các chữ cái thường: a b c z
Các chữ số: 0 1 2 3
Các kí hiệu toán học: + - * / =
Các dấu ngoặc: [] {} ()
Các ký hiệu đặc biệt khác:, . ; : / ? @ # $ % ^ & ‘ “
Các dấu ngăn cách không nhìn thấy như dấu cách, dấu nhảy tab, dấu xuống
dòng.
Dấu gạch dưới:_
1.3 Tập ký hiệu
Là một dãy kí tự liên tiếp (không chứa dấu cách) bao gồm: chữ, số và dấu gạch
nối được dùng để chỉ tên hằng, tên biến, tên mảng, tên hàm Tên phải bắt đầu bằng
một chữ hoặc dấu gạch nối. Tên không được đặt trùng với từ khóa.
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
18
Ví dụ
Các tên viết hợp lệ: Giai_phuong_trinh_bac2, abc123
Các tên viết không hợp lệ: Baitap 1, 123abc.
Chú ý:
Trong ngôn ngữ lập trình C tên được phân biệt chữ hoa và chữ thường.
Thông thường chữ hoa thường được dùng để đặt tên cho các hằng, còn các
đại lượng khác thì dùng chữ thường.
2. Các kiểu dữ liệu sơ cấp
2.1 Kiểu số nguyên
Kiểu số nguyên 2 bytes gồm có 4 kiểu như sau:
STT Kiểu dữ liệu Miền giá trị(Domain)
1 enum Từ -32,768 đến 32,767
2 unsignedint Từ 0 đến 65,535
3 shortint Từ -32,768 đến 32,767
4 int Từ -32,768 đến 32,767
Kiểu enum, short int, int: Lưu các số nguyên từ -32768 đến 32767. Sử dụng bit
bên trái nhất để làm bit dấu.
Nếu gán giá trị >32767 cho 1 trong 3 kiểu trên thì giá trị của biến này có thể là
số âm.
Kiểu Unsigned int: Kiểu unsgned int lưu các số nguyên dương từ 0 đến 65535.
Kiểu số nguyên 4 bytes hay còn gọi là số nguyên dài (long) gồm 2 kiểu sau:
STT Kiểu dữ liệu Miền giá trị (Domain)
1 unsigedlong Từ 0 đến 4,294,967,295
2 long Từ -2,147483648 đến 2,147,483,647
Kiểu long: Lưu các số nguyên từ -2147483647 đến 214483647. Sử dụng bit bên
trái nhất để làm bit dấu.
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
19
Nếu gán giá trị >2147483647 cho biến có kiểu long thì giá trị của biến này có
thể là số âm
Kiểu unsigned long: Kiểu unsigned long lưu các số nguyên dương từ 0 đến
4294967295
2.2 Kiểu số dấu phẩy động
Kiểu số thực dùng để lưu các số thực hay các số có dấu chấm thập phân gồm có
3 kiểu sau:
STT Kiểu dữ liệu Kích thước (size) Miền giá trị (Domain)
1 float 4 bytes Từ 3.4* 10-38 đến 3.4* 1038
2 double 8 bytes Từ 1.7* 10-038 đến 1.7* 10308
3 longdouble 10 bytes Từ 3.4* 10-4932 đến 3.4* 104932
Mỗi kiểu số thực ở trên đều có miền giá trị và độ chính xác (số lẻ) khác nhau.
Tùy vào nhưu cầu sử dụng mà ta có thể khai báo biến thuộc 1 trong 3 kiểu trên.
Ngoài ra ta còn có kiểu void, kiểu này mang ý nghĩa là kiểu rỗng không chứa giá
trị gì cả.
2.3 Kiểu ký tự
Kiểu ký tự là kiểu số nguyên 1 byte bao gồm 2 kiểu sau:
STT Kiểu dữ liệu Miền giá trị (Domain)
1 unsignedchar
Từ 0 đến 255 (tương đương 256 ký tự trong
bảng mã ASCII)
2 char Từ -128 đến 127
Kiểu unsigned char: Lưu các số nguyên dương từ 0 đến 255.
Để khai báo một biến là kiểu ký tự thì ta khai báo biến kiểu unsigned char.
Mỗi số trong miền giá trị của kiểu unsigned char tương ứng với một ký tự
trong bảng mã ASCII.
Kiểu char: Lưu các số nguyên từ -128 đến 127. Kiểu char sử dụng bit trái nhất
để làm bit dấu.
Nếu gán giá trị >127 cho biến kiểu char thì giá trị của biến này có thể là số
âm.
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
20
3. Biến, hằng, biểu thức
3.1. Phân loại, khai báo và sử dụng biến
Biến là yếu tố cơ bản của bất kỳ ngôn ngữ máy tính nào. Biến là vùng trống trong
bộ nhớ máy tính dành cho một kiểu dữ liệu nào đó và có đặt tên. Các biến trong bộ
nhớ ở các thời điểm khác nhau có thể cất giữ các giá trị khác nhau. Trước khi sử dụng
một biến nào đó phải khao báo nó.
Quy tắc khai báo:
Kiểu_dữ_liệu Tên _biến;
Có thể khai báo nhiều biến cùng kiểu trên cùng một hàng, các biến được phân
cách nhau bởi dấu phẩy.
Ví dụ: int a,b; /*Biến có kiểu nguyên*/
float f; /*Biến thực*/
char ch; /*Biến ký tự*/
Khi khai báo một biến ta có thể khởi đầu giá trị cho nó theo mẫu sau:
Kieu_dulieu tenbien = giatri;
Ví dụ: float x=5;
int n= 10;
Để lấy địa chỉ của một biến ta dùng toán tử & cụ thể như sau:
&tenbien
Ví dụ: &x lấy địa chỉ của biến x
&n lấy địa chỉ của biến n
3.2 Hằng
Hằng(const) là một đại lượng không thay đổi giá trị trong toàn chương trình.
Hằng có thể là số nguyên, số thực, ký tự hoặc chuỗi ký tự. Dữ liệu chứa trong máy
tính có thể là biến hoặc hằng.
Biến và hằng được lưu trữ trong bộ nhớ và thường được đặt tên cho dễ sử dụng
thay vì phải sử dụng địa chỉ ô nhớ cũng như giá trị cụ thể của chúng, rất khó sử dụng.
Hằng số nguyên
- Hệ thập phân bình thường
VD: 545
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
21
Hệ cơ số 8 (Octal) bắt đầu bằng số 0 và chỉ biểu diễn số dương
VD: 024 = 2010
Hệ cơ số 16 (Hecxa) bắt đầu bằng 0x
VD: 0xAB = 16310
Chú ý:
Nếu là hằng kiểu long thì thêm l(hay L) vào đuôi
VD: 123L
Một hằng số nguyên có giá trị vượt ra ngoài phạm vi cho phép được ngầm hiểu
là hằng long.
Hằng số thực được viết theo hai cách sau:
Dạng thập phân gồm: Phần nguyên, dấu chấm thập phân, phần thập phân.
VD: 34.2 -344.122
Chú ý: Phần nguyên hay phần thập phân có thể vắng mặt nhưng dấu chấm thập
phân không được thiếu.
VD: 343. .454
Dạng mũ gồm: Phần định trị và phần mũ. Phần định trị là số nguyên hay số
thực dạng thập phân, phần mũ bắt đầu bằng E hoặc e, theo sau là số nguyên.
VD: 1234.5E-122
Hằng ký tự
Là một ký hiệu trong bảng mã ASCII được đặt trong hai dấu nháy đơn. Giá trị của
hằng ký tự chính là mã ASCII của ký hiệu.
VD: Hằng ‘A’ có giá trị là 65.
Chú ý: Hằng ký tự biểu thị mã của kí tự đó trong bẳng mã ASCII. Do vậy một hăng
ký tự cũng có thể tham gia vào các phép toán.
VD: ‘A‘ +10 có giá trị (65 + 10 = 75).
Một số ký tự đặc biệt:
Viết Ký tự Diễn giải
\’ ‘ Dấu nháy đơn
\” “ Dấu nháy kép
\\ \ Dấu gạch chéo ngược
\n \n Xuống dòng mới
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
22
\0 \0 Ký tự Null
\t Nhảy cách ngang, ký tự tab
\b Xóa trái
\r Về đầu dòng
\f Sang trang
Hằng xâu ký tự.
Là một dãy các ký tự đặt trong dấu nháy “”
Xâu ký tự được đặt trong một mảng ô nhớ liền nhau song còn thêm ô nhớ cuối
cùng chứa mã là 0 (ký hiệu là ‘\0’)
VD: “Yen Bai”
Được tổ chức trong bộ nhớ như sau:
Y e n B a i \0
Chú ý: Chúng ta cần phân biệt “A” và ‘A’. Trong đó “A” được chứa trong 2 byte,
còn ‘A’ chỉ mất 1 byte và nó có thể tham gia tính toán trong các biểu thức.
Hằng có thể định nghĩa bằng 2 cách:
Cách 1: Dùng toán tử #define nhằm định nghĩa một hằng ký hiệu.
#define
Giải thích: Cấu trúc này định nghĩa một hằng ký hiệu có tên bằng xâu
kí tự. Khi biên dịch chương trình, chương trình dịch thay thế các lần xuất hiện của
bằng xâu ký tự tương ứng.
VD: #define MAX 100
Cách 2: const kieu_du_lieu ten_hang = gia_tri_hang;
VD: const int n=20;
3.3 Biểu thức
Biểu thức là một sự kết hợp giữa các biểu thức và các toán hạng để diễn đạt một
công thức nào đó. Mỗi biểu thức có một giá trị. Tùy theo giá trị của biểu thức mà có
các biểu thức nguyên hay biểu thức thực. Các mệnh đề logic có giá trị nguyên trong
đó giá trị khác 0 tương ứng mệnh đề đúng, còn giá trị khác 0 tương ứng mệnh đề sai.
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
23
Biểu thức được sử dụng trong vế phải của lệnh gán; làm tham số thực của các
hàm; làm chỉ số; các câu lệnh if, for, while, dowhile;
Khi máy tính thực hiện tính toán biểu thức sẽ tuân theo thư tự ưu tiên giống như
toán học.
Ví dụ:
(8 +3 * (4-2))/2 =7;
4.Cấu trúc một chương trình
4.1 Tiền xử lý và biên dịch
Trong C, việc dịch một tập tin nguồn được tiến hành trên hai bước hoàn toàn
độc lập với nhau:
- Tiền xử lý.
- Biên dịch.
Hai bước này phần lớn thời gian được nối tiếp với nhau một cách tự động theo
cách thức mà ta có ấn tượng rằng nó đã được thực hiện như là một xử lý duy nhất.
Nói chung, ta thường nói đến việc tồn tại của một bộ tiền xử lý nhằm chỉ rõ chương
trình thực hiện việc xử lý trước. Ngược lại, các thuật ngữ biên dịch hay sự biên dịch
vẫn còn nhập nhằng bởi vì nó chỉ ra khi thì toàn bộ hai giai đoạn, khi thì là giai đoạn
thứ hai.
Bước tiền xử lý tương đương với việc cập nhật trong văn bản của chương trình
nguồn, chủ yếu dựa trên việc diễn giải các mã lệnh rất đặc biệt gọi là các chỉ thị này
được nhận biết bởi chúng bắt đầu bằng ký hiệu #.
Hai chỉ thị quan trọng nhất là:
- Chỉ thị sự gộp vào của các tập tin nguồn khác: #include
- Chỉ thị việc định nghĩa các macros hoặc ký hiệu: #define
Chỉ thị đầu tiên được sử dụng trước hết là nhằm gộp vào nội dung của các tập
tin cần có (header file), không thể thiếu trong việc sử dụng một cách tốt nhất các
hàm của thư viện chuẩn, phổ biến là:
#include
Chỉ thị thứ hai rất hay được sử dụn trong các tập tin thư viện (header file) đã
được định nghĩa trước đó và thường được khai thác bởi các lập trình viên trong việc
định nghĩa các ký hiệu như là:
#define NB_COUPS_MAX 100
#define SIZE 25
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
24
4.2 Cấu trúc một chương trình C
Một chương trình C bao gồm các phần như: Các chỉ thị tiền xử lý, khai báo biến
ngoài, các hàm tự tạo, chương trình chính (hàm main).
Cấu trúc có thể như sau:
Các chỉ thị tiền xử lý (Preprocesor directives)
#include
#define
Định nghĩa kiểu dữ liệu (phần này không bắt buộc): Dùng để đặt tên cho một
kiểu dữ liệu nào đó để gợi nhớ hay đặt một kiểu dữ liệu cho riêng mình dựa
trên các kiểu dữ liệu đã có.
o Cú pháp: Typedef
o Ví dụ: Typedef int SoNguyen // Kiểu số nguyên là kiểu int.
Khai báo các protyppe (tên hàm, các tham số, kiểu trả về, của các hàm sẽ cài
đặt trong phần sau, phần này không bắt buộc): Phần này chỉ được khai báo đầu
hàm, không phải là phần định nghĩa hàm.
Khai bái các biến ngoài(các biến toàn cục) phần này không bắt buộc: Phần này
khai bái các biến toàn cục được sử dụng trong cả chương trình.
Chương trình chính phần này bắt buộc phải có
main()
{
Các khai báo cục bộ trong hàm main: Các khai báo này chỉ tồn tại
trong hàm mà thôi, có thê khai báo biến hay khai báo kiểu .
Các câu lệnh dùng để định nghĩa hàm main
Return ; // Hàm phải trả về kết quả
}
Cài đặt các hàm
function 1(các tham số)
{
Các khai báo cục bộ trong hàm.
Các câu lệnh dùng để định nghĩa hàm
Return ;
}
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
25
Một chương trình C bắt đầu thực thi từ hàm main (thông thường là từ câu
lệnh đầu tiên đến câu lệnh cuối).
4.3 Các thư viện thông dụng
Đây là các tập tin chứa các hàm thông dụng khi lập trình C, muốn sử dụng các
hàm trong các tập tin header này thì phải khai #include ở đầu của
chương trình.
1)stdio.h: Tập tin định nghĩa các hàm vào/ra chuẩn (standard input/outpht).
Gồm các hàm in dữ liệu (printf()), nhập giá trị cho biến (scanf()), nhận ký tự từ bàn
phím (getc()), in ký tự ra màn hình (putc()), xóa vùng đệm bàn phím (fflush(),
fopen(),fclose(), fread(), fwrite(),getchar(),putchar(),getw(), putw(),)
2)conio.h: Tập tin định nghĩa các hàm vào/ra trong chế độ DOS gồm các hàm:
clrscr(), getch(), getche(), getpass(), cgets(), cputs(), putch(), clreol().
3) math.h : Tập tin định nghĩa các hàm tính toán gồm các hàm abs() sqrt(),log(),
log10(), sin(), cos(), tan(), exp(), pow(),
4)alloc.h: Tập tin định nghĩa các hầm liên quan đến viện quản lý bộ nhớ. Gồm các
hàm calloc(), realloc(), free(), farmalloc(), faraclloc(), farfee(),
5) io.h: Tập tin định nghĩa các hàm vào ra cấp thấp. Gồm các hàm Open(), _open(),
read(), close(), create(), _create(), creatnew(), eof(), filelength(), lock(),
6) graphics.h: Tập tin định nghĩa các hàm liên quan đến đồ họa. Gồm initgraph(),
line(), circle(), putpixel(), getpixel(0, setcolor(),
4.4 Chú thích trong chương trình
Một chương trình thường được viết một cách ngắn gọn, do vậy thông thường
bên cạnh các câu lệnh chính thức của chương trình, người lập trình còn được phép
viết vào chương trình các câu ghi chú, giải thích để làm rõ nghĩa hơn chương trình.
Một chú thích có thể ghi chú về nhiệm vụ, mục đích, cách thức của thành phần đang
được chú thích như biến, hằng, hàm hoặc công dụng của một đoạn lệnh ... Các chú
thích sẽ làm cho chương trình sáng sủa, dễ đọc, dễ hiểu và vì vậy dễ bảo trì, sửa chữa
về sau.
Có 2 cách báo cho chương trình biết một đoạn chú thích:
− Nếu chú thích là một đoạn kí tự bất kỳ liên tiếp nhau (trong 1 dòng hoặc trên
nhiều dòng) ta đặt đoạn chú thích đó giữa cặp dấu đóng mở chú thích /* (mở)
và */ (đóng).
− Nếu chú thích bắt đầu từ một vị trí nào đó cho đến hết dòng, thì ta đặt dấu // ở
vị trí đó. Như vậy // sử dụng cho các chú thích chỉ trên 1 dòng.
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
26
Như đã nhắc ở trên, vai trò của đoạn chú thích là làm cho chương trình dễ hiểu
đối với người đọc, vì vậy đối với máy các đoạn chú thích sẽ được bỏ qua. Lợi dụng
đặc điểm này của chú thích đôi khi để tạm thời bỏ qua một đoạn lệnh nào đó trong
chương trình (nhưng không xoá hẳn để khỏi phải gõ lại khi cần dùng đến) ta có thể
đặt các dấu chú thích bao quanh đoạn lệnh này (ví dụ khi chạy thử chương trình, gỡ
lỗi ...), khi cần sử dụng lại ta có thể bỏ các dấu chú thích.
Chú ý: Cặp dấu chú thích /* ... */ không được phép viết lồng nhau.
5. Các phép toán
Các phép toán trong C gọi là các toán tử (operator), bao gồm:
Các phép toán số học
- Ký hiệu: +, -,*, /,%
- Ý nghĩa: cộng ,trừ, nhân, chia, chia dư
- Dữ liệu tác động: Kiểu số nguyên hoặc số thực
- Kết quả: Các phép toán số học cho kết quả là dữ liệu kiểu số
Ví dụ:
2+5, 5*6, 3/2
Chú ý: đối với phép chia (/) nếu hai vế dữ liệu là số nguyên thì máy sẽ chia lấy phần
nguyên, nếu một trong hai vế là số thực thì máy cho kết quả chính xác.
Ví dụ:
7/4 sẽ cho kết quả là 1(là phần nguyên của 7 chia 4)
7.0/4 hoặc 7/4.0 sẽ cho kết quả là 1.75
7%4 sẽ cho kết quả là 3(là phân dư của 7 chia 4)
Các phép toán quan hệ
- Ký hiệu: >, =, <=, ==, !=
- Ý nghĩa : lớn hơn, nhỏ hơn, lớn hơn hoặc bằng, nhơ hơn hoặc bằng, so sánh
bằng, và khác
- Dữ liệu tác động: là các dữ liệu kiểu số và chữ, nếu là chữ thì máy sẽ so sánh
mã ASCII của các chữ đo.
- Kết quả: phép toán cho kết quả là loogic(đúng hoặc sai)
Các phép kết nối logic
- Ký hiệu: &&, ||, !
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
27
- Ý nghĩa: và, hoặc, phủ định
- Kiểu dữ liệu tác động: là các dữ liệu có giá trị đúng hoặc sai(kiểu logic)
- Kết quả: cho kết quả logic(đúng hoặc sai)
Bảng kết quả:
E1 E2 E1&&E2 E1|| E2 !E1
Đúng Đúng Đúng Đúng Sai
Đúng Sai Sai Đúng Sai
Sai Đúng Sai Đúng Đúng
Sai Sai Sai Sai Đúng
Phép toán Tăng và giảm (++ & --)
- Toán tử: ++ tăng thêm 1 vào toán hạng của nó.
- Toán tử -- trừ bớt 1 vào toán hạng của nó.
Nói cách khác: x = x + 1 giống như x ++ hay x = x – 1 giống như x --
Cả 2 toán tử tăng và giảm đều có thể tiền tố (đặt trước) hay hậu tố (đặt sau) toán
hạng.
Ví dụ: x = x + 1 có thể viết x++ (hay ++x) Tuy nhiên giữa tiền tố và hậu tố có sự khác
biệt khi sử dụng trong 1 biểu thức. Khi 1 toán tử tăng hay giảm đứng trước toán
hạng của nó, C thực hiện việc tăng hay giảm trước khi lấy giá trị dùng trong biểu
thức. Nếu toán tử đi sau toán hạng, C lấy giá trị toán hạng trước khi tăng hay giảm
nó.
Ví dụ:
x = 10 ; y = ++x ; // giá trị biến y = 11
x = 10 ; y = x++; // giá trị biến y = 10
Thứ tự ưu tiên của các toán tử số học:
++, -- sau đó là *, /, % rồi mới đến +, -
6. Câu lệnh
6.1 Khái niệm
Một câu lệnh (statement) xác định một công việc mà chương trình phải thực
hiện để xử lý dữ liệu đã được mô tả và khai báo. Các câu lệnh được ngăn cách với
nhau bởi dấu chấm phẩy (;)
6.2 Lệnh gán và lệnh gộp
Lệnh gán dùng để gán giá trị của một biểu thức cho một biến.
Cú pháp:
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
28
=
VD:
x = 10; /* Gan hang so 10 cho bien x*/
y = 2*x; /*Gan gia tri 2*x = 2*10 =20 cho x*/
Nguyên tắc khi dùng lệnh gán là kiểu của biến và kiểu của biểu thức phải giống
nhau, gọi là có sự tương thích giữa các kiểu dữ liệu. Chẳng hạn ví dụ sau cho thấy
một sự không tương thích về kiểu:
int x,y;
x= 10; /*Gan hang so 10 cho bien x*/
y= “Xin chao”; /* y co kieu int, con “Xin chao” co kieu char*/
Khi biên dịch chương trình này, C sẽ báo lỗi “Cannot convert ‘char *’ to ‘int’” tức
là C không thể tự động chuyển đổi kiểu từ char* (chuỗi ký tự) sang int.
Tuy nhiên trong đa số trường hợp sự tự động biến đổi kiểu để sự tương thích về
kiểu sẽ được thực hiện
VD:
int x,y;
float r;
char ch;
r= 9000;
x=10; /*Gan hang so 10 cho bien x*/
y=’d’; /*y co kieu int, con ‘d’ co kieu char*/
r= ‘e’; /*r co kieu float, ‘e’ co kieu char*/
ch = 65.7; /*ch co kieu char,con 65.7 co kieu float*/
Trong nhiều trường hợp để tạo ra sự tương thích về kiểu, ta phải sử dụng đến
cách thức chuyển đổi kiểu một cách tường minh. Cú pháp của phép toán này như
sau:
(Tên_kiểu)
Chuyển đổi kiểu của thành kiểu mới . Chẳng hạn như:
float f;
f = (float) 10/4; /*f luc nay la 2.5*/
Chú ý:
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
29
Khi một biểu thức được gán cho một biến thì giá trị của nó sẽ được thay thế giá
trị cũ mà biến đã lưu giữ trước đó.
Trong câu lệnh gán, dấu = là một toán tử; do đó nó có thể được sử dụng là một
thành phần của biểu thức. Trong trường hợp này giá trị của biểu thức gán
chính là giá trị của biến.
VD: int x,y;
y = x = 3; /*y luc nay cung bang 3*/
Ta có thể gán giá trị cho biến được khai báo theo cách thức sau:
= ;
VD: int x=10, y = x;
6.3 Nhập xuất dữ liệu
Lệnh hiện dữ liệu lên màn hình
- Cú pháp:
printf(“điều khiển”,các dữ liệu cần hiện);
Trong đó:
- Điều khiển : Là các cặp kí tự điều khiển để hiện dữ liệu lên màn hình và phải
được viết trong cặp dấu nháy kép, mỗi cặp kí tự điều khiển bao gồm dấu “%” và
sau đó là một ký tự định kiểu.
Cách viết Ý nghĩa
%d Hiện số nguyên
%c Hiện ký tự trong bảng mã ASCII
%f Hiện số thực
%s Hiện chuỗi ký tự
- Dữ liệu cần hiện: Là các biểu thức dữ liệu cần hiện ra màn hình, các biểu thức
này cách nhau bởi dấu phẩy.
Để sử dụng được lệnh hiện dữ liệu lên màn hình ta phải nạp thư viện
Ví dụ:
printf(“%d”,65);
thì kết quả hiện ra màn hình sẽ là: 65
printf (“%c”,65);
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
30
thì máy sẽ hiện ra ký tự có mã là 65 và đó là: chữ A
Chú ý:
- Để hiện dữ liệu có xuống dòng trên màn hình ta sử dụng \n trong điều khiển của
lệnh printf
Ví dụ
printf(“yen bai \n ngày %d”,12);
màn hình sẽ hiện ra như sau:
yen bai
ngay 12
- Để cách một khoảng trên màn hình như bấm phím Tab ta sử dụng \t trong điều
khiển của lệnh printf.
Vidu: printf(“yen bai \n\t ngay %d”,12);
Màn hình sẽ hiện ra như sau:
Yen bai
ngay 12
Lệnh nhập dữ liệu từ bàn phím
Cú pháp :
scanf(“điều khiển”,& tên biến nhớ);
Trong đó
- điều khiển : Để quy định dữ liệu nhập vào dưới dạng nào, cách viết như điều
khiển trong lệnh printf .
- Tên biến nhớ: Dùng để lưu trữ dữ liệu nhập vào từ bàn phím, phải có dấu & ở
trước.
Để sử dụng được lệnh nhập dữ liệu từ bàn phím ta phải nạp thư viện .
Ví dụ:
scanf(“%d”,&a);
Nhập một số nguyên từ bàn phím vào cho biến nhớ a.
Chú ý:
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
31
- Có thể nhập nhiều dữ liệu vào nhiều biến trong một lệnh scanf. Ta phải điền
vào các điều khiển nhập cùng với các biến nhớ tương ứng cách nhau bởi dấu
phẩy.
Ví dụ: scanf(“%d%f”,&a,&b);
Sẽ nhập số nguyên vào biến nhớ a, số thực vào biến nhớ b
- Có thể quy định độ rộng dữ liệu khi nhập, phải viết độ rộng đó vào giữa dấu
% và kí tự định kiểu tương ứng. Nếu gõ thừa máy sẽ tự động cắt bỏ.
Ví dụ:
scanf(“%2d%5f”,&a,&b);
nhập một số nguyên vào biến nhớ a tối đa là 2 chữ số, nhập số thực vào biến
nhớ b, với độ rộng tối đa là 5 chữ số.
6.4. Các lệnh toán học
Các lệnh toán học cung cấp bởi thư viện do vậy phải khai báo nạp
thư viện ở đầu chương trình.
Tên lệnh Ý nghĩa
sin(E); Tính sin của E
cos(E); Tính cos của E
pow(E1,E2); Tính lũy thừa E2 của E1
sqrt(E); Tính căn bậc hai của E
abs(E); Tính trị tuyệt đối của E nguyên
fabs(E); Tính trị tuyệt đối của E thực
E là một biểu thức hay giá trị.
Ví dụ 1:
printf(“hay nhap vao mot so nguyen”);
scanf(“%d”,&a);
printf(“can bac hai cua %d la:%f”,a,sqrt(a));
6.5. Một số lệnh làm việc với màn hình và bàn phím
Để sử dụng được lệnh làm việc với màn hình và bàn phím ta phải lạp thư viện
ở đầu chương trình.
Tên lệnh Ý nghĩa
clrscr(); Xóa màn hình
textcolor(m); Đặt mầu chữ
textbackground(m) ; Đặt mầu nền cho chữ
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
32
getch(); Chờ bấm một phím không hiện nên màn hình
getche(); Chờ bấm một phím có hiện lên màn hình
wherex(); Cho biết tọa độ cột hiện thời của con trỏ nháy
wherey(); Cho biết tọa độ dòng hiện thời của con trỏ
nháy
textmode(m); Đặt chế độ văn bản hiển thị lên mà hình
Ví dụ:
textcolor(red);
cprintf (“Yen Bai ”);
textcolor(blue);
printf(“Ngay 12 thang 09 nam 2009”);
Hiện lên màn hình dòng chữ “Yen Bai” mầu đỏ, dòng chữ “Ngay 12 thang 09
nam 2009” mầu xanh.
7. Thực thi chương trình
- Cách thực hiện một chương trình trên máy
Khi thực hiện chương trình thì máy tình sẽ thực hiện các câu lệnh trong chương
trình chính. Quá trình thực hiện sẽ tuần tự từ trên xuống dưới và từ trái sang phải.
Ví dụ ta có chương trình sau
#include
#include
void main()
{
A1;
A2; B1;
B2; C1; A3;
}
Thì máy sẽ thực hiện các câu lệnh theo tuần tự sau: A1,A2,B1,B2,C1,A3
Trước khi chạy chương trình ta nhấn F9 để kiểm tra lỗi nếu phát hiện lỗi các bạn
nên đọc thông báo lỗi, kiểm tra xem có bao nhiêu lỗi và tại vị trí nào và khắc phục lỗi,
hộp thoại thông báo hiện ra như sau:
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
33
Hình 2.7: Hộp thoại thông báo lỗi khi chạy chương trình
Để thực hiện chương trình hãy dùng Ctrl + F9 (Nhấn đồng thời phím Ctrl và
phím F9).
Một số thông báo lỗi hay gặp khi lập trình bằng TC
Thông báo tiếng Anh Ý nghĩa tiếng Việt
Undefined symbol ‘’ Chưa khai báo tên trong nháy
Unable to open include file ’’ Không mở được tệp thư viện(có thể viết sai
tên thư viện hoặc đường dẫn đến thư viện
chưa đúng)
Undefined symbol_main in modul
c0.asm
Chưa viết chương trình chính hoặc viết tên
chương trình chính bị sai
Compound statement missing } Thiếu dấu đóng ngoặc của khối lệnh
Unexpected Thừa dấu đóng ngoặc của khối lệnh
Unterminated string or character
constant
Chưa có dấu nháy kép kết thúc viết hằng
chuỗi kí tự
Statement missing ; Thiếu dấu chấm phẩy kết thúc câu lệnh
Function call missing ) Thiếu đóng ngoặc khi viết lệnh
If statement mising ( Lệnh if thiếu dấu mở ngoặc
BÀI TẬP THỰC HÀNH
Bài tập 1:
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
34
Viết chương trình nhập vào từ bàn phím 2 số nguyên. Tính tổng hai số đó, hiện
kết quả ra màn hình.
#include
#include
Void main()
{
int a,b;
clrscr();
printf(“nhap so a =”);
scanf(“%d”,&a);
printf(“nhap so b =”);
scanf(“%d”,&b);
printf(“tong hai so %d va %d la: %d”,a,b,a+b);
getch();
}
Bài tập 2
Viết chương trình nhập vào từ bàn phím 5 số nguyên. Hiện 5 số vừa hập ra màn
hình và trung bình cộng 5 số đó.
#include
#include
void main()
{
int a1,a2,a3,a4,a5;
clrscr();
printf("nhap so thu nhat a1= ");scanf("%d",&a1);
printf("\nnhap so thu hai a2= ");scanf("%d",&a2);
printf("\nnhap so thu 3 a3= ");scanf("%d",&a3);
printf("\nnhap so thu 4 a4= ");scanf("%d",&a4);
printf("\nnhap so thu 5 a5= ");scanf("%d",&a5);
printf("5sovuanhapla:%d %d %d %d %d ",a1,a2,a3,a4,a5);
printf("\ntrungbinhcong5sovuanhapla:%f",(a1+a
2+a3+a4+a5)/5.0);
getch() ;
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
35
}
Bài tập 3
Nhập x từ bàn phím, tính f(x), đưa kết quả ra màn hình.
)(3)( 3 xtgxxf
Nội dung chương trình
#include
#include
#include
Void main()
{
int x;
clrscr();
printf(“nhap so x =”);
scanf(“%d”,&x);
printf(“gia tri bieu thuc f(x) = %f
”,pow((x+3),1.0/3)+sin(x)/cos(x));
getch();
}
Bài tập 4:
Lập chương trình đọc vào từ bàn phím tọa độ 3 điểm A,B,C. Tính độ dài các
đoạn thẳng AB, BC, CA.
#include
#include
#include
void main()
{
int xa,ya,xb,yb,xc,yc,xab,yab,xbc,ybc,xac,yac;
float ab,bc,ac;
clrscr();
printf("nhap toa do diem A:\n xa= ");scanf("%d",&xa);
printf("\n ya= ");scanf("%d",&ya);
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
36
printf("nhap toa do diem B:\n xb= ");scanf("%d",&xb);
printf("\n yb= ");scanf("%d",&yb);
printf("nhap toa do diem C:\n xc= ");scanf("%d",&xc);
printf("\n yc= ");scanf("%d",&yc);
xab=xa-xb;yab=ya-yb;
xbc=xb-xc;ybc=yb-yc;
xac=xa-xc;yac=ya-yc;
ab=sqrt(xab*xab+yab*yab);
bc=sqrt(xbc*xbc+ybc*ybc);
ac=sqrt(xac*xac+yac*yac);
printf("\ndo dai doan thang AB la: %f",ab);
printf("\ndo dai doan thang BC la: %f",bc);
printf("\ndo dai doan thang AC la: %f",ac);
getch() ;
}
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
37
CHƯƠNG 3: CÁC LỆNH CẤU TRÚC
1. Cấu trúc rẽ nhánh
Lệnh rẽ nhánh cho phép chương trình thực hiện các khối lệnh tùy theo từng
trường hợp cụ thể.
1.1. Dạng đầy đủ
Lệnh rẽ nhánh này cho phép rẽ hai nhánh ứng với trường hợp đúng hoặc sai của
biểu thức trọn, cách viết như sau:
Cú pháp:
if(điều_kiện_lựa_trọn)
Hành_động_1;
else
hành_động_2;
Trong đó:
- Điều kiện lựa trọn: Là biểu thức logic có giá trị đúng hoặc sai
- Hành động 1 và 2: Là các khối lệnh để thực hiện cho trường hợp 1 và 2 tương
ứng.
Sơ đồ khối:
Chức năng:
Máy sẽ thực hiện hành động 1 nếu điều kiện lựa chọn có giá trị dúng, ngược
lại máy sẽ thực hiện hành động 2.
Ví dụ:
if(x%2 ==0)
printf(“ so x là so chan”);
else
Biểu_thức
Hành động 1 Hành động 2
đúng sai
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
38
printf(“so x la so le”);
1.2. Dạng không đầy đủ
Cú pháp câu lệnh
if(điều_kiện_lựa_trọn)
Hành_động;
Trong đó:
Điều_kiện_lựa_chọn và Hành_động tương tự như trong câu lênh if ở dạng đầy
đủ.
Sơ đồ khối
Nguyên tắc hoạt động:
Đầu tiên máy tính toán giá trị của biểu thức. Nếu biểu thức trả về giá trị đúng
thì máy tiến hành thực hiện công _việc sau đó tiến hành thực hiện các câu lệnh tiếp
theo sau câu lệnh if. Nếu biểu thức trả về giá trị sai thì máy bỏ qua việc thực hiện
công_việc trong câu lệnh if mà tiến hành thực hiện ngay các công việc sau câu lệnh
if.
Chú ý:
- Mỗi hành động có thể có một hoặc nhiều lệnh, nếu nhiều lệnh phải có cặp dấu
đóng mở ngoặc nhọn { }
ví dụ:
int a,b;
printf("Nhap vao gia tri cua 2 so a, b!");
scanf("%d%d",&a,&b);
if (a>b)
{
printf("\n Gia tri cua a lon hon gia tri cua b");
Biểu thức
Hành động
Sai
Đúng
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
39
printf("\n a=%d, b=%d",a,b);}
2.Cấu trúc lựa chọn
Lệnh switch cho phép rẽ nhiều nhánh với các trường hợp bằng xảy ra khi so
sánh biểu thức chọn với các giá trị trong từng trường hợp đó.
Cú pháp:
switch(biểu_thức_chọn)
{
case giá_trị_1: hành động 1;[break;]
case giá_trị_2: hành động 2;[break;]
.
case giá_trị_k: hành động k;[break;]
default: hành động x;
}
Trong đó:
- Biểu thức trọn: là biểu thức dạng đếm được có thể là số nguyên hoặc ký tự,
dùng để so sánh lựa trọn.
- Các giá trị 1,2,,k là các giá trị số nguyên hoặc ký tự để so sánh.
- Các hành động 1,2,,k là các khối lệnh để thực hiện ứng với từng trường hợp
trên.
- Từ khóa break sau mỗi hành động để kết thúc lệnh sau mỗi trường hợp sẩy ra.
Có thể có hoặc không có các từ khóa break này.
Chức năng:
Máy sẽ so sánh biểu thức trọn lần lượt với các giá trị 1, giá trị 2, giá trị 3, giá trị
k. Nếu gặp một giá trị i(i=1,2,..,k) nào đó bằng giá trị biểu thức chọn thì máy sẽ thực
hiện các hành động đứng sau giá trị i đó đến khi gặp từ khóa break hoăc hết mọi
hành động có trong lệnh switch. Nếu tất cả các trường hợp từ 1 đến k không sẩy ra
điều kiện bằng thì mặc định máy sẽ thực hiện hành động X sau từ khóa default.
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
40
Sơ đồ khối:
Chú ý:
- Lệnh switch có thể không có phần từ khóa default và khối lệnh x, khi đó máy
sẽ không làm gì trong trường hợp không xẩy ra điều kiện bằng giữa biểu thức
trọn và giá trị tương ứng của case.
Ví dụ:
switch(t)
{ case 1: printf(“chu nhat”);break;
case 2: printf(“thu 2”);break;
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
41
case 3: printf(“thu 3”);break;
case 4: printf(“thu 4”);break;
case 5: printf(“thu 5”);break;
case 6: printf(“thu 6”);break;
case 7: printf(“thu 7”);break;
default: printf(“khongla mot ngay trong tuan”); }
3. Cấu trúc lặp
Lệnh lặp cho phép máy thực hiện một hành động nào đó lặp lại nhiều lần, mặc
dù chúng ta chỉ viết một lần, ngôn ngữ C có các lệnh lặp sau đây.
3.1 Cấu trúc lặp for
Cú pháp:
for (nhóm lệnh 1;biểu thức 2; nhóm lệnh3)
Hành động lặp;
Trong đó :
- Các nhóm lệnh 1,2,3 là các lệnh điều khiển trong quá trình lặp của for
- Hành động lặp là khối lệnh để máy tính thực hiện lặp lại nhiều lần.
Sơ đồ khối:
Chức năng:
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
42
Máy thực hiện nhóm lệnh 1 duy nhất một lần đầu tiên, sau đó thực hiện tính biểu
thức 2 và nếu kêt quả tương ứng với giá trị đúng thì máy thực hiện hành đông lặp,
tiếp theo máy thực hiện nhóm lênh 3, và lặp lại kiểm tra biểu thức 2 cho đến khi kết
quả tương ứng với giá trị sai.
Ví dụ:
for(i=1;i<5;i++)
printf(“\n i= %d”,i);
Sẽ hiện ra các số nguyên từ 1 đến 4 ra màn hình.
for (i = 4;i>=1;i--)
printf(“\n i = %d”,i);
Sẽ hiện các số nguyên từ 4 xuống 1 ra màn hình.
Chú ý:
- Trong hành động lặp có thể có một lệnh hoặc nhiều lệnh, nếu có nhiều lệnh thì
phải có cặp dấu mở đóng ngoặc nhọn {} để tạo khối
- Trong lệnh này chỉ có nhóm lệnh 1 được thực hiện một lần đầu tiên, còn lại các
biểu thức 2 và nhóm lệnh 3 và hành động lặp, sẽ thực hiện nhiều lần trong quá
trình lặp.
- Các nhóm lệnh 1, 3 và biểu thức 2 có thể không xuất hiện trong lênh for nhưng
phải có dấu chấm phẩy (;) khi đó nếu không có biểu thức 2 thì máy sẽ xem như
điều kiện lặp luôn luôn đúng và sẽ lặp vô tận.
- Trong mỗi nhóm lệnh 1 và 3 có thể có nhiều lệnh cách nhau bởi dấu phẩy đối
với biểu thức 2 có thể thay đổi bằng một nhóm lệnh và khi đó máy sẽ lấy kết
quả của lệnh cuối cùng làm điều kiện lặp hoặc dừng.
3.2 Cấu trúc lặp while, do while
Lệnh While
Cú pháp
while (điều kiện lặp)
Hành động lặp;
Trong đó:
- Điều kiện lặp : là biểu thức so sánh hoặc biểu thức nguyên
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
43
- Hành động lặp: là các lệnh sẽ được thực hiện hiều lần trong quá trình lặp, nếu
có nhiều lệnh phải có dấu { } để đóng khối.
Sơ đồ khối
Chức năng:
Trong khi điều kiện lặp vẫn có giá trị đúng thì máy sẽ lặp thực hiện khối lệnh, và
sẽ dừng lại nếu điều kiện sai
Ví dụ:
x=1; y=10;
while(x<y)
{
printf(“\n x = %d va y = %d”,x,y);
x +=2;y--;
}
Chú ý:
Nếu hành động sai ngay từ đầu thì máy sẽ không thực hiện hành động lặp dù
chỉ một lần.
Lệnh do while
Cú pháp:
do{
hành động lặp;
}while(điều kiện lặp);
Trong đó:
hành động lặp và điều kiện lặp giống như lệnh while ở trên
Điều kiện
lặp
Hành động lặp
đúng
sai
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
44
Sơ đồ khối
Chức năng:
Máy sẽ thực hiện hành động lặp nhiều lần cho đến khi điều kiện lặp có giá trị
sai.
Ví dụ:
x=1; y=10;
do{
printf(“\n x=%d và y=%d”,x,y);
x+=2;y--;
} while(x<y);
Chú ý:
- Hành động lặp ít nhất được thưc hiện một lần dù cho điều kiện lặp luôn có giá
trị sai vì máy kiểm tra điều kiện lặp sau khi thực hiện hành động lặp, điều này
khác với lệnh while.
4. Các lệnh đặc biệt
4.1. Lệnh Break
Lệnh break có tác dụng dừng vòng lặp (for ,while, do-while) trong mọi trường
hợp.
Điều kiện
Hành động lặp
đúng
sai
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
45
4.2. Lệnh continue
Lệnh continue làm cho chương trình bỏ qua phần còn lại của vòng lặp và nhảy
sang lần lặp tiếp theo. Những câu lệnh viết sau lệnh continue sẽ không được thực
hiện.
4.3. Lệnh goto
Lệnh goto: Lệnh này cho phép nhảy vô điều kiện tới bất kỳ điểm nào trong
chương trình.
Ví dụ:
Nhập vào từ bàn phím 1 số bất kì. Kiểm tra số đó là chẵn hay lẻ, hiện kết quả
lên màn hình. Sau khi hiện song hỏi người dùng có tiếp tục chương trình không. Nếu
có thì lập lại hành động trước đó. Nếu không thì kết thúc chương trình.
#include
#include
void main()
{
int x;
char ch;
L:
clrscr();
printf("nhap mot so bat ki: ");
scanf("%d",&x);
if(x%2 = =0)
printf(“\nso do la so chan”);
else
printf(“\nso do la so le”);
printf("\ncotieptuc truong trinh ko(c/k)?");
ch=getche();
if(ch =='c') goto L;
getch()
}
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
46
BÀI TẬP THỰC HÀNH
Bài tập 1
Viết chương trình giải bất phương trình bậc nhất: ax + b > 0
#include
#include
void main()
{
int a,b;
clrscr();
printf("nhap he so a = ");scanf("%d",&a);
printf("nhap he so b = ");scanf("%d",&b);
if(a = =0)
{
if(b > 0) printf("\n BPT luon dung voi moi x");
else printf("\n BPT vo nghiem");
}
if(a > 0) printf("\nNghiemcuaBPTla:x>%f",-b*1.0/a);
if(a < 0) printf("\nNghiemcuaBPTla:x<%f",-b*1.0/a);
getch() ;
}
Bài tập 2
Viết chương trình giải phương trình bậc hai
#include
#include
#include
void main()
{
int a,b,c;
float d,x1,x2;
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
47
clrscr();
printf("nhap he so a= ");scanf("%d",&a);
printf("nhap he so b= ");scanf("%d",&b);
printf("nhap he so c= ");scanf("%d",&c);
if(a == 0)
printf("\nkhong phai la phuong trinh bac hai ");
else
{
d=b*b-4*a*c;
if(d < 0)
printf("\nphuong trinh vo nghiem");
else
if(d = = 0)
printf("\nphuongtrinhconghiemkepx1,2=%f",b/2.0*a);
else
{
printf("\n Nghiem cua phuong trinh la:");
printf("\n x1= %f",(-b+sqrt(d))/2.0*a);
printf("\n x2= %f",(-b-sqrt(d))/2.0*a);
}
}
getch() ;
}
Bài tập 3
Viết chương trình đọc vào từ bàn phím một số nguyên n(1 n 10) rồi đưa ra
tiếng anh của số đó. Chẳng hạn, nếu gõ vào n = 2 thì đưa ra: 2 -> TWO
#include
#include
void main()
{
int so;
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
48
clrscr();
printf("hay nhap vao mot so:(tu 1->10): ");
scanf("%d",&so);
switch(so)
{
case 1:printf("\n so 1 tieng anh la ONE");break;
case 2:printf("\n so 2 tieng anh la TWO");break;
case 3:printf("\nso 3 tieng anh la THREE");break;
case 4:printf("\n so 4 tieng anh la FOUR");break;
case 5:printf("\n so 5 tieng anh la FIVE");break;
case 6:printf("\n so 6 tieng anh la SIX");break;
case 7:printf("\nso 7 tieng anh la SEVEN");break;
case 8:printf("\nso 8 tieng anh la EIGHT");break;
case 9:printf("\n so 9 tieng anh la NINE");break;
case 10:printf("\nso 10 tieng anh la TEN");break;
default: printf("\n nhap du lieu sai");
}
getch() ;
}
Bài tập 4
Nhập vào một số n từ bàn phím, hiện lên màn hình các số chẵn và lẻ từ 1 đến
n (hiện hết số chẵn rồi mới hiện số lẻ).
#include
#include
void main()
{
int n,i;
clrscr();
printf("Nhap vao so n= ");scanf("%d",&n);
printf("\n Cac so chan tu 1 den %d la: ",n);
for(i=1; i<=n;i++)
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
49
if(i%2 = =0)printf(" %d",i);
printf("\n Cac so le tu 1 den %d la:",n);
for(i=1;i<=n;i++)
if(i%2!=0)printf(" %d",i);
getch() ;
}
Bài tập 5
Nhập n, tính tổng S=1+
n
1
...
4
1
3
1
2
1
(n số hạng)
#include
#include
void main()
{
int i, n;
float s = 0;
clrscr();
printf(“\n nhap n= ”); scanf(“%d”,&n);
for(i=1;i<=n;i++)
s = s + 1.0/i;
printf(“\n Tong la: %f”,s);
printf(“\n nhan mot phim bat ki de thoat ”);
getch();
}
Bài tập 6
Lập chương trình nhập một dãy các số nguyên vào từ bàn phím cho đến khi
gặp số 0, tính tổng các số dương và trung bình cộng các số âm.
#include
#include
void main()
{
int i=1,so,dem = 0;
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
50
float tong_duong = 0,tong_am = 0;
clrscr();
printf("\nnhap vao mot day cac so nguyen:");
do
{
printf("\nnhap so thu %d: ",i);
scanf("%d",&so);
if(so>0)tong_duong = tong_duong+so;
else
{
tong_am = tong_am + so;
if(so!=0)dem++;
}
i++;
}while(so!=0);
printf("\ntong cac so duong la: %f",tong_duong);
if(dem!=0)
printf("\nTBC cac so am la: %f",tong_am/dem);
getch() ;
}
Bài tập 7
Lập chương trình tìm các số có 3 chữ số sao cho số đó bằng tổng lập phương các
chữ số của nó
#include
#include
#include
void main()
{
int i =100, tram,chuc,donvi;
clrscr();
Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái
51
printf("cac so tim duoc la:\n");
do{
tram=i/100;
chuc=(i%100)/10;
donvi=(i%100)%10;
if(i==(pow(tram,3)+pow(chuc,3)+pow(donvi,3)))
printf(" %d",i);
i++;
}while(i<1000);
getch();
}
Các file đính kèm theo tài liệu này:
- lap_tr_nh_co_ban_p1_1164.pdf