Thư viện tri thức trực tuyến
Kho tài liệu với 50,000+ tài liệu học thuật
© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Chương trình C và C++ potx
Nội dung xem thử
Mô tả chi tiết
Ch¬ng tr×nh C vµ C++
CH NG 1. NH NG KHÁI NI M C B N V NGÔN NG C ƯƠ Ữ Ệ Ơ Ả Ề Ữ ..........................3
1.1. L ch s hình th nh v phát tri n ị ử à à ể .................................................................3
1.2. Các tính ch t c tr ng ấ đặ ư ...............................................................................3
1.3. C u trúc c b n c a m t ch ng trình C ấ ơ ả ủ ộ ươ ...................................................3
#include <stdio.h>...............................................................................................5
1.4. B ch vi t, t khoá, tên ộ ữ ế ừ ............................................................................5
1.4.1. B ch vi t ộ ữ ế ..............................................................................................5
1.4.2. Tên ..........................................................................................................6
1.4.3 T khoá ừ .....................................................................................................6
1.5. M t s ki u d li u c b n ộ ố ể ữ ệ ơ ả .........................................................................6
1.6. Bi nế .................................................................................................................7
1.7. H ng s ằ ố..........................................................................................................7
1.8. Bi u th c ể ứ ........................................................................................................9
1.9. Các phép toán.................................................................................................9
1.9.1. Các phép toán s h c: ố ọ ............................................................................9
1.9.2. Các phép toán quan h : ệ ........................................................................10
1.9.3. Các phép toán logic...............................................................................10
1.9.4. Các phép toán t ng, gi m ă ả ....................................................................12
1.9.5. Phép toán l y a ch bi n (&) ấ đị ỉ ế ............................................................12
1.9.6. Phép toán chuy n i ki u giá tr : ể đổ ể ị .....................................................12
- Khi toán h ng trong m t phép toán có ki u khác nhau thì ki u th p h n ạ ộ ể ể ấ ơ
đượ ể à ể ơ c chuy n th nh ki u cao h n: int->long->float->double.........................12
1.9.7. Bi u th c gán ể ứ ........................................................................................13
1.9.8. Bi u th c i u ki n ể ứ đ ề ệ .............................................................................13
CH NG 2. CÁC CÂU L NH I U KHI N CH NG TRÌNH ƯƠ Ệ Đ Ề Ể ƯƠ ........................14
2.1. Câu l nh n ệ đơ ...............................................................................................14
2.2. Câu l nh ghép ệ ..............................................................................................14
2.3. V o/ra à ..........................................................................................................14
2.3.1. H m printf à .............................................................................................14
2.3.2. H m scanf à .............................................................................................15
2.3.3.Ví d minh ho : ụ ạ ....................................................................................16
2.4. Các câu l nh i u khi n ch ng trình ệ đ ề ể ươ .....................................................16
2.4. 1. Câu l nh if – else ệ ...............................................................................16
thay cho................................................................................................................16
2.4.2. C u trúc i u khi n switch ấ đ ề ể .................................................................17
a./ Cú pháp câu l nh ệ ...........................................................................................17
2.4.3. C u trúc l p while ấ ặ .................................................................................18
{ int dau,i,n;........................................................................................................20
2.4.4. C u trúc l p do...while ấ ặ ........................................................................20
2.4.5. C u trúc l p for ấ ặ .....................................................................................22
2.4.6. Toán t break v continue ử à ....................................................................24
CH NG 3. CON TR VÀ M NG ƯƠ Ỏ Ả .......................................................................26
3.1. M ng ả .............................................................................................................26
3.1.1. Khái ni m v nh ngh a ệ à đị ĩ .....................................................................26
3.1.2. Khai báo m ng ả ......................................................................................26
3.1.3. Truy nh p v o các ph n t c a m ng ậ à ầ ử ủ ả ................................................26
3.1.4. Xâu kí tự...............................................................................................28
Trang 1
Ch¬ng tr×nh C vµ C++
3.2. Con trỏ..........................................................................................................30
3.2.1. Khái ni m v cách khai báo con tr ệ à ỏ...................................................30
3.2.2. Con tr v a ch bi n ỏ à đị ỉ ế ........................................................................30
3.2.3. S d ng các con tr ử ụ ỏ..............................................................................30
3.2.4. Các phép toán trên con trỏ...................................................................31
3.2.5. Con tr ki u void ỏ ể ..................................................................................32
3.3. Liên h gi a con tr v m ng ệ ữ ỏ à ả ....................................................................32
3.3.1. Con tr v m ng m t chi u ỏ à ả ộ ề ................................................................32
3.3.2. Con tr v xâu kí t ỏ à ự.............................................................................33
3.3.3. Con tr v m ng nhi u chi u ỏ à ả ề ề .............................................................33
CH NG 4. C U TRÚC ƯƠ Ấ ..........................................................................................34
4.1. C u trúc ấ ........................................................................................................34
4.1.1. nh ngh a c u trúc Đị ĩ ấ ..............................................................................34
4.1.2. Khai báo c u trúc ấ ..................................................................................34
4.1.3. nh ngh a ki u b ng typedef Đị ĩ ể ằ .............................................................35
4.1.4. Truy nh p n các th nh ph n c a c u trúc ậ đế à ầ ủ ấ .....................................36
4.1.5. Th nh ph n ki u FIELD (nhóm bit) à ầ ể ...................................................37
4.2. Ki u h p (union) ể ợ ..........................................................................................38
CH NG 5. HÀM VÀ C U TRÚC CH NG TRÌNH ƯƠ Ấ ƯƠ .........................................39
5.1. M u: ở đầ ........................................................................................................39
5. 2. Ví d n gi n v ch ng trình có h m: ụ đơ ả ề ươ à .............................................39
5. 3. Quy t c xây d ng m t h m ắ ự ộ à .......................................................................40
5. 4. Quy t c ho t ng c a h m: ắ ạ độ ủ à ....................................................................40
5. 5. C u trúc t ng quát c a ch ng trình có h m: ấ ổ ủ ươ à ........................................41
5.6. Xây d ng v s d ng h m ự à ử ụ à .........................................................................41
5.6.1. Các khái ni m liên quan n h m: ệ đế à ....................................................41
5.6.2. Xây d ng h m: ự à .....................................................................................41
5.6.3. S d ng h m ử ụ à .........................................................................................42
5.6.4. Nguyên t c ho t ng c a h m ắ ạ độ ủ à .........................................................42
5.7. Các t p header ệ ..............................................................................................43
5.8. C p l u tr v ph m vi c a các i t ng ấ ư ữ à ạ ủ đố ượ ..............................................44
5.9. qui Đệ ...........................................................................................................47
CH NG 6. HO ƯƠ ĐỒ Ạ.............................................................................................48
6.1. Các ch ho , h to ế độ đồ ạ ệ ạ độ..................................................................48
2.6. nh ngh a ch ng h m Đị ĩ ồ à ................................................................................62
2.7. Tham s ng m nh trong l i g i h m ố ầ đị ờ ọ à ......................................................62
2.8. B sung thêm các toán t qu n lý b nh ng: new v delete ổ ử ả ộ ớ độ à .............63
CH NG 3. I T NG VÀ L P ƯƠ ĐỐ ƯỢ Ớ ......................................................................63
3.1. i t ng Đố ượ .....................................................................................................63
3.2. L pớ ................................................................................................................64
3.2.1. Khai báo l pớ ..........................................................................................64
3.2.2. T o i t ng ạ đố ượ ......................................................................................65
3.2.3. Các th nh ph n d li u: à ầ ữ ệ ......................................................................66
3.2.4. H m th nh ph n (ph ng th c) à à ầ ươ ứ ........................................................66
3.2.5. T khoá private v public ừ à ...................................................................66
3.3.H m thi t l p(constructor) à ế ậ ..........................................................................67
3.4 H m hu b (desreuctor) à ỷ ỏ ..............................................................................69
Trang 2
Ch¬ng tr×nh C vµ C++
3.5 H m thi t l p sao chép(copy constructor) à ế ậ ..................................................70
3.6 H m b n, l p b n à ạ ớ ạ ........................................................................................73
CHƯƠNG 1. NHỮNG KHÁI NIỆM CƠ BẢN VỀ NGÔN NGỮ C
1.1. Lịch sử hình thành và phát triển
Ngôn ngữ C do Brian W.Kerningham và Dennis M.Ritchice phát triển vào năm
1970 tại phòng thí nghiệm BELL (Hoa kỳ) với mục đích ban đầu để phát triển hệ điều
hành UNIX.
Phần lớn các ý tưởng quan trọng nhất của C xuất phát từ ngôn ngữ có tên BCPL
do Martin Richards nghiên cứu. ảnh hưởng của BCPL gián tiếp thông qua ngôn ngữ B
do Ken Thompson viết vào năm 1970 cho hệ điều hành UNIX chạy trên họ máy tính
PDP- 7
Từ khi ra đời ngôn ngữ lập trình C có nhiều loại chương trình dịch C khác nhau
như: Turbo C của hãng Borland Inc, Quick C, Microsoft C, VC của hãng Microsoft
Corp, Lattice C của Lattice
Sự phát triển của ngôn ngữ lập trình trong những năm 1980 đã đưa đến phong
cách lập trình hướng đối tượng (OOP – Object Oriented Programing) mà một trong
những ngôn ngữ rất được ưa dùng là C++ một bổ sung mới các yếu tố hướng đối tượng
và ngôn ngữ lập trình C.
1.2. Các tính chất đặc trưng
Ngôn ngữ lập trình C là một ngôn ngữ lập trình vạn năng dùng để viết các ứng
dụng thực tế như: Quản lý văn bản, cơ sở dữ liệu, ghép nối máy tính...
Ngôn ngữ lập trình C là ngôn ngữ lập trình uyển chuyển, có độ thích nghi cao...
Ngôn ngữ C là một ngôn ngữ được sử dụng rộng rãi trong các lĩnh vực chuyên
nghiệp vì đáp ứng được các yêu cầu: hiệu quả cao trong soạn thảo chương trình và dịch
ra mã máy; tiếp cận trực tiếp với các thiết bị phần cứng
Ngôn ngữ C thực hiện các cơ chế như các phép toán xử lý trực tiếp các đối
tượng hợp thành, các cơ chế vào ra, phương pháp truy nhập tệp bằng những lời gọi hàm
trong thư viện
C đưa ra các kết cấu điều khiển cơ bản cho các chương trình có cấu trúc; cung
cấp con trỏ và khả năng định địa chỉ số học. Các định nghĩa hàm không được lồng nhau
1.3. Cấu trúc cơ bản của một chương trình C
Trước tiên ta xét ví du: Viết chương trình C hiện dòng thông báo “ Turbo C” ra
màn hình.
/* Chương trình hiện lên dòng thông báo trên màn hình*/
#include <stdio.h>
#include <conio.h>
main()
{ clrscr();/* Câu lệnh xoá màn hình*/
printf(“Turbo C ”);
Trang 3
Ch¬ng tr×nh C vµ C++
getch();
}
Thực hiện chương trình:
Các bước để thực hiện chương trình này như sau:
- Tạo ra chương trình nguồn có tên VIDU.C bằng hệ soạn thảo của Turbo C hoặc
trên một hệ soạn thảo nào đó
- Dịch và chương trình bằng CTRL + F9 để tạo ra một tệp chương trình nếu
không có lỗi
Giải thích chương trình
Một chương trình C với bất kỳ kích thước nào đều bao gồm một số hàm, các
hàm này sẽ xác định các thao tác tính toán thực tế cần phải thực hiện. Các hàm của C
cũng tương tự như các hàm và thủ tục của chương trình viết bằng Pascal. Trong chương
trình ví dụ trên main() là một hàm như vậy. Thông thường chúng ta có thể lấy bất kỳ
tên nào để đặt cho tên hàm, nhưng hàm main() là một hàm đặc biệt. Chương trình C
luôn bắt đầu thực hiện tại điểm đầu của hàm này và kết thúc khi hàm này kết thúc. Điều
này có nghĩa mọi chương trình viết bằng ngôn ngữ lập trình C đều có một và chỉ một
hàm main() đặt ở đâu đó trong chương trình. Hàm main() này thường gọi các hàm khác
để thực hiện công việc của chương trình, một số hàm nằm trong chương trình, số khác
nằm trong các thư viện chuẩn.
Hàm printf () có trong thư viện chuẩn được sử dụng mà không phải viết lại, có
chức năng đưa kết quả ra thiết bị đầu ra. Câu lệnh printf (“ Turbo C”); sẽ đưa ra màn
hình dòng chữ nằm trong các dấu nháy kép. Có thể dùng hàm printf để trình bày các đối
tượng dữ liệu khác nhau
Khai báo tệp tiêu đề
Trong ngôn ngữ lập trình Pascal chặng hạn khi ta muốn sử dụng lệnh xoá màn
hình “ Clrscr;” hay lệnh di chuyển con trỏ màn hình “Gotoxy(x,y)” v.v... Ta thấy các
hàm và thủ tục này nằm trong thư viên chuẩn CRT do đó muốn chương trình sử dụng
được các hàm và thủ tục đó thì tại đầu chương trình ta phải khai báo : USES CRT;
Tương tự như vậy trong ngôn ngữ lập trình C khi sử dụng các hàm chuẩn trong
các thư viện chuẩn chúng ta phải khai báo tệp tiêu đề (header file) chứa các hàm
nguyên mẫu tương ứng các hàm đó, các lệnh được bắt đầu bằng #include theo sau là tệp
tiêu đề
Có hai cách viết như sau:
Cách 1: #include <[đường dẫn\] tentep>
Ví dụ: #include <a:\Baitap\Bai1.C>
#include <stdio.h>
Cách 2: #include “[đường dẫn\]tentep”
Ví dụ: #include “a:\Baitap\Bai2.C”
Trang 4
Ch¬ng tr×nh C vµ C++
#include “conio.h”
Tác dụng: Trước khi dịch, chương trình dịch sẽ tìm tệp theo tentep và đường
dẫn đã chỉ ra trong #include. Nếu tìm thấy thì nội dung của tệp này được gọi ra và
chèn vào tệp nguồn đang xét đúng vị trí của #include. Nếu không tìm thấy thì thông báo
lỗi.
Hai cách khai báo trên khác nhau ở chỗ. Nếu tentep được chỉ ra trong khai báo
#include không có đường dẫn thì
Cách 1: tự động tìm tentep trong thư mục INCLUDE
Cách 2: tự động tìm tentep trong thư mục hiện thời nếu không có thì tìm trong
thư mục INCLUDE
Trong thí dụ trên chúng ta có sử dụng hàm printf() là hàm chuẩn được khai báo
trong tệp tiêu đề stdio.h và hàm getch(), clrscr() được khai báo trong tệp tiêu đề
conio.h. Do đó trong chương trình có hai dòng khai báo sau ở đầu chương trình:
#include <stdio.h>
#include <conio.h>
Chú thích và dấu kết thúc câu lệnh
Trong ngôn ngữ lập trình C những phần được viết giữa /* và */ được gọi là phần
chú thích, giải thích mục đích của chương trình. Mọi ký tự nằm giữa /* và */ khi dịch
chương trình dịch bỏ qua, ta được phép dùng chúng để minh hoạ cho các thành phần
chương trình làm cho chương trình dễ hiểu, mạch lạc. Lời chú thích có thể xuất hiện bất
kỳ đâu trong chương trình và có thể trải trên nhiều dòng khác nhau trong chương trình.
Trong chương trình viết bằng ngôn ngữ C mỗi câu lệnh có thể viết trên một hay
nhiều dòng và phải kết thúc bằng dấu chấm phẩy.
1.4. Bộ chữ viết, từ khoá, tên
1.4.1. Bộ chữ viết
Mỗi 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 lê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 C .... Z
Các chữ cái thường: a b c ... z
Các chữ số: 0 1 2... 9
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 cách tab, dấu
xuống dòng
Dấu gạch nối dưới: _
Trang 5
Ch¬ng tr×nh C vµ C++
1.4.2. Tên
Tên là một dãy ký tự : 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ừ hoá
Ví dụ các tên viết hợp lệ: Giai_Phuong_Trinh_Bac2
abc123
Ví dụ 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.
1.4.3 Từ khoá
- Là những từ có một ý nghĩa hoàn toàn xác định trong chương trình:
Ví dụ: void struct class while ....
- Không được dùng từ khoá để đặt tên cho các hằng, biến, mảng, hàm ....
- Từ khoá phải viết bằng chữ thường
Ví dụ từ khoá viết đùng: struct
Ví dụ từ khoá viết sai: Struct
1.5. Một số kiểu dữ liệu cơ bản
Tất cả các biến phải được khai báo trước và kiểu của chúng phải được mô tả
ngay khi khai báo. Có bốn kiểu dữ liệu cơ bản trong C là: char, int, float và double
Tên ý nghĩa Phạm vi biểu diễn Kích thước
char Ký tự -128 -> 127 1 byte
int Số nguyên -32768->32767 2 byte
float Số thực dấu phẩy động độ chính xác
đơn
±3.4E-38 -> ±3.4E+38 4 byte
double Số thực dấu phẩy động độ chính xác
kép
±1.7E-308 -> ±1.7E+308 8 byte
Một số float có độ chính xác là 6 chữ số sau dấu chấm thập phân. Còn số double
được biểu diễn với độ chính xác tới 15 chữ số sau dấu chấm thập phân
Bên cạnh đó chúng ta có thể áp dụng một số các “tiền tố” đi kèm các kiểu dữ
liệu cơ bản với mục đích thay đổi phạm vi biểu diễn của biến được khai báo. Có các
tiền tố như là: short, long, signed (ngầm định đối với char, int), unsigned.
Kiểu Phạm vi biểu diễn Kích thước (byte)
unsigned char 0 -> 255 1
Trang 6
Ch¬ng tr×nh C vµ C++
char -128 -> 127 1
unsigned int 0 -> 65535 2
short int -32768 -> 32767 2
int -32768 -> 32767 2
unsgned long 0 ->4.294967295 4
long -2147483648->-2147483648 4
float ±3.4E-38 -> ±3.4E+38 4
double ±1.7E-308 -> ±1.7E+308 8
long double 3.4E4932->3.4E+4932 10
Lưu ý:
- Kiểu long int có thể viết gọn thành long; kiểu unsigned int viết gọn thành
usigned
- Có thể kết hợp nhiều tiền tố với một kiểu dữ liệu cơ sở: chẳng hạn unsigned
long int (viết gọn thành unsigned long)
1.6. 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 dià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 khai 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 tên biến được
phân cách nhau bằng 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ự*/
1.7. Hằng số
Dữ liệu chứa trong máy tính có thể là biến hoặc hằng
biến là đại lượng có thể thay đổi được trong quá trình tính toán
hằng là đại lượng có giá trị không thay đổi
1.7.1. Hằng số nguyên
- Hệ thập phân bình thường
VD: 545
- Hệ cơ số 8 (Octal)
Bắt đầu bằng số 0 và chỉ biểu diễn số dương
Ví dụ: 024=2010
- Hệ cơ số 16 (Hecxa)
Bắt đầu bằng 0x
Trang 7