1. Trang chủ
  2. » Công Nghệ Thông Tin

Lập trình căn bản (dựa trên ngôn ngữ C++)

85 793 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 85
Dung lượng 606 KB

Nội dung

Phương pháp biểu diễn Thuật toán có thể diễn đạt dưới nhiều hình thức, chẳng hạn dưới dạng lưu đồ, dạng ngôn ngữ tự nhiên, dạng mã giả hoặc một ngôn ngữ lập trình nào khác.. Dạng ngôn ng

Trang 1

Mục lục

Chương 1 Thuật toán 3

1 Ví dụ 3

2 Khái niệm 4

3 Các đặc trưng của thuật toán 4

4 Phương pháp biểu diễn 5

Bài tập luyện 8

Chương 2 Giới thiệu ngôn ngữ lập trình C++ 9

1 Lịch sử hình thành 9

2 Đặc điểm 10

3 Cấu trúc của một chương trình C++ 11

4 Một số ví dụ mẫu 13

5 Cài đặt chương trình 15

7 Soạn thảo chương trình 18

8 Thoát khỏi chương trình 19

Chương 3 Các thành phần và các kiểu dữ liệu cơ bản 20

1 Các thành phần 20

2 Các kiểu dữ liệu căn bản 20

3 Hằng 21

3.1 Khái niệm 21

3.2 Định nghĩa hằng 21

4 Các phép toán của C++ 22

5 Xuất nhập dữ liệu 23

5.1 Xuất dữ liệu (cout) 23

5.2 Nhập dữ liệu (cin) 25

Chương 4 Các cấu trúc điều khiển 25

1 Lệnh đơn và lệnh phức 25

1.1 Lệnh đơn 25

1.2 Lệnh phức hay khối lệnh 26

2 Cấu trúc điều kiện if else 26

2.1 Dạng khuyết 26

2.2 Dạng đầy đủ 27

3 Cấu trúc lựa chọn: switch case 29

4 Các cấu trúc lặp 32

4.1 Cấu trúc lặp while 32

4.2 Cấu trúc lặp do while 34

4.3 Cấu trúc lặp for 36

5 Câu lệnh break, continue, goto và hàm exit 38

5.1 Câu lệnh break 38

5.2 Câu lệnh continue 39

5.3 Câu lệnh goto 39

5.4 Hàm exit 40

Chương 5 Hàm 40

1 Khái niệm 40

2 Khai báo hàm 40

2.1 Cú pháp khai báo nguyên mẫu hàm 40

2.2 Định nghĩa hàm 41

3 Kết quả trả về của hàm – Lệnh return 42

4 Lời gọi hàm và Cách truyền tham số cho hàm 43

Trang 2

5 Đệ qui 43

5.1 Khái niệm 43

5.2 Ví dụ 43

Bài tập luyện: 44

Chương 6 Mảng 45

1 Khái niệm 45

2 Khai báo mảng 45

2.1 Khai báo mảng 45

2.2 Truy xuất đến các phần tử của mảng 46

3 Khởi tạo mảng 46

4 Dùng mảng làm tham số 48

5 Với mảng hai chiều 51

5.1 Định nghĩa 51

5.2 Truy xuất các phần tử mảng hai chiều 51

5.3 Khởi tạo giá trị mảng hai chiều 51

5.4 Ví dụ 52

Bài tập luyện 53

Chương 7 Con trỏ 54

1 Khái niệm 54

2 Toán tử lấy địa chỉ (&) 54

3 Toán tử tham chiếu (*) 55

4 Khai báo biến kiểu con trỏ 55

5 Các phép toán 56

5.1 Phép gán 56

5.2 Phép tăng giảm địa chỉ 56

5.3 Phép truy nhập bộ nhớ 57

5.4 Phép so sánh 57

6 Con trỏ hằng 57

7 Con trỏ mảng 58

8 Khởi tạo con trỏ 59

9 Con trỏ trỏ tới con trỏ 60

10 Con trỏ không kiểu 61

11 Con trỏ hàm 62

Chương 8 Cấu trúc 63

1 Khái niệm cấu trúc 63

2 Khai báo cấu trúc 63

2.1 Kiểu cấu trúc 63

2.2 Khai báo thành phần (biến, mảng) kiểu cấu trúc 65

3 Truy cập đến các thành phần của cấu trúc 66

4 Ví dụ cấu trúc 66

Bài tập luyện: 69

Chương 9 File 71

1 Khái niệm File 71

2 Tạo file đọc file 72

2.1 Khai báo con trỏ trỏ đến tập tin 72

2.2 Mở tập tin 72

2.3 Các kiểu xử lý tệp thông dụng 73

2.4 Đóng tập tin 74

2.5 Kiểm tra đến cuối tập tin hay chưa 74

Trang 3

2.6 Các xử lý trên tập tin 74

2.7 Truy cập đến tập tin văn bản (text) 75

3 Tạo file nhị phân 78

4 Đọc file nhị phân 79

4.1 Ghi dữ liệu lên tệp nhị phân 79

4.2 Đọc dữ liệu từ tập tin nhị phân - Hàm fread() 79

4.3 Di chuyển con trỏ tập tin - Hàm fseek() 80

Bài tập luyện 81

Tài liệu tham khảo 85

Chương 1 Thuật toán

1 Ví dụ

+ Thuật toán giải phương trình bậc 1, giải phương trình bậc 2

+ Thuật toán tìm số lớn nhất trong 3 số a, b, c

+ Thuật toán tính trung bình cộng của 4 số a, b, c, d

+ Thuật toán tìm đường đi ngắn nhất

Trang 4

2 Khái niệm

Thuật ngữ thuật toán (Algorithm) là từ viết tắt của tên một nhà toán học ởthế kỷ IX: Abu Ja’fa Mohammed ibn Musa al-Khowarizmi Đầu tiên, thuật toánđược hiểu như là các quy tắc thực hiện các phép toán số học với các con sốđược viết trong hệ thập phân Cùng với sự phát triển của máy tính, khái niệmthuật toán được hiểu theo nghĩa rộng hơn Một định nghĩa hình thức về thuậttoán được nhà toán học người Anh là Alanh Turing đưa ra vào năm 1936 thôngquá máy Turing Có thể nói lý thuyết thuật toán được hình thành từ đó

Lý thuyết thuật toán liên quan đến vấn đề sau:

+ Giải được bằng thuật toán: Thay những thuật toán chưa tốt bằng nhữngthuật toán tốt hơn

+ Triển khai thuật toán: Xây dựng những ngôn ngữ thực hiện trên máy tính

để mã hóa thuật toán

Vậy, Thuật toán là một dãy hữu hạn các thao tác được bố trí theo một trình

tự xác định, được đề ra trước, nhằm giải quyết một bài toán nhất định

Thao tác hay còn gọi là tác vụ, phép toán (Operation) hay lệnh(Command), chỉ thị (Instruction)… là một hành động cần được thực hiện bởi cơchế thực hiện thuật toán

Mỗi thao tác biến đổi bài toán từ một trạng thái trước (hay trạng thái nhập)sang trạng thái sau (hay trạng thái xuất) Thực tế mỗi thao tác thường sử dụngmột số đối tượng trong trạng thái nhập (các đối tượng nhập) và sản sinh ra cácđối tượng mới trong trạng thái xuất (các đối tượng xuất) Quan hệ giữa 2 trạngthái xuất và nhập cho thấy tác động của thao tác Dãy các thao tác của thuật toánnối tiếp nhau nhằm biến đổi bài toán từ trạng thái ban đầu đến trạng thái kết quả

Mỗi thao tác có thể phân tích thành các thao tác đơn giản hơn

Trình tự thực hiện các thao tác phải được xác định rõ ràng trong thuậttoán Cùng một tập hợp thao tác nhưng xếp đặt theo trình tự khác nhau sẽ chokết quả khác nhau

3 Các đặc trưng của thuật toán

+ Tính xác định: Các thao tác, các đối tượng, phương tiện trong thuật

toán phải có ý nghĩa rõ ràng, không được gây nhầm lẫn Nói cách khác, hai cơchế hoạt động khác nhau cùng thực hiện một thuật toán, sử dụng các đối tượng,phương tiện nhập phải cho cùng một kết quả

Trang 5

+ Tính dừng: Đòi hỏi thuật toán phải dừng và cho kết quả sau một số hữu

hạn các bước

+ Tính đúng của thuật toán: Thuật toán đúng là thuật toán cho kết quả

thỏa mãn đặc tả thuật toán với mọi trường hợp của các đối tượng, phương tiệnnhập

+ Tính phổ dụng: Thuật toán để giải một lớp bài toán gồm nhiều bài cụ

thể, lớp đó được xác định bởi đặc tả Dĩ nhiên là có lớp bài toán chỉ gồm 1 bài.Thuật toán khi đó sẽ không cần sử dụng đối tượng, phương tiện nhập nào cả

4 Phương pháp biểu diễn

Thuật toán có thể diễn đạt dưới nhiều hình thức, chẳng hạn dưới dạng lưu

đồ, dạng ngôn ngữ tự nhiên, dạng mã giả hoặc một ngôn ngữ lập trình nào khác

a Dạng ngôn ngữ tự nhiên: Thuật toán có thể trình bày dưới dạng ngôn

ngữ tự nhiên theo trình tự các bước thực hiện trong thuật toán

b Dạng ngôn ngữ lập trình: Dùng cấu trúc lệnh, dữ liệu của một ngôn

ngữ lập trình nào đó để mô tả

c Dạng mã giả: Thuật toán trình bày trong dạng văn bản bằng ngôn ngữ

tự nhiên tuy dễ hiểu nhưng khó cài đặt Dùng một ngôn ngữ lập trình nào đó đểdiễn tả thì phức tạp, khó hiểu Thông thường thuật toán cũng được trao đổi dướidạng văn bản – tuy không ràng buộc nhiều vào cú pháp xác định như các ngônngữ lập trình, nhưng cũng tuân theo một số quy ước ban đầu – ta gọi là dạng mãgiả Tùy theo việc định hướng cài đặt thuật toán theo ngôn ngữ lập trình nào tadiễn đạt thuật toán gần với ngôn ngữ ấy

d Dạng lưu đồ: Trong các phương pháp biểu diễn, chúng ta sẽ chủ yếu

nghiên cứu phương pháp biểu diễn theo dạng này

Dạng lưu đồ dùng các hình vẽ (có quy ước) để diễn đạt thuật toán Lưu đồcho hình ảnh trực quan và tổng thể của thuật toán, cho nên thường được sửdụng nhiều nhất

Các ký hiệu sử dụng trong phương pháp biểu diễn thuật toán bằng lưu đồ:

1 Bắt đầu và kết thúc chương trình

2 Điểm nối, đường đi (luồng xử lý)

Trang 6

3 Điều khiển lựa chọn

Là người cuối cùng?

Đọc tên, tuổiBắt đầu

Nếu tuổi >

50?

SaiSai

ĐúngĐúng

Trang 7

Ví dụ 2: dụ: Nhập vào 3 số nguyên a, b, c và xuất ra màn hình với giá trị

của mỗi số tăng lên 1

7

b=b+1

Nhập a, b, cBắt đầu

a= a +1

c=c+1

Xuất a, b, c

Trang 8

Chú ý khi vẽ lưu đồ:

+ Trước tiên hãy tập trung vẽ một số đường đi chính của lưu đồ

+ Thêm vào tất cả các nhánh và vòng lặp

+ Một lưu đồ chỉ có một điểm Bắt đầu và một điểm kết thúc

+ Mỗi bước trong chương trình không cần thể hiện trong lưu đồ

+ Lưu đồ cần phải đáp ứng được yêu cầu: những người lập trình khác cóthể hiểu lưu đồ một cách dễ dàng

Bài tập luyện

Vẽ lưu đồ thuật toán cho các bài toán sau:

Bài 1: Tìm số lớn nhất trong 3 số a, b, c

Bài 2: Giải phương trình bậc 1: ax + b = 0 (a ≠ 0)

Bài 3: Giải phương trình bậc 2: ax2 + bx + c = 0 (a ≠ 0)

Bài 4: Nhập vào hai số x, y Xuất ra màn hình tổng, hiệu, tích, thương củahai số trên

Bài 5: Nhập vào số nguyên n, kiểm tra xem n chẵn hay lẻ và xuất ra mànhình

Bài 6: Nhập vào ba cạnh a, b, c của tam giác Xuất ra màn hình tam giác

đó thuộc loại tam giác gì? (Thường, cân, vuông, đều hay vuông cân)

Bài 7: Tính n!, với n ≥ 0

Trang 9

Chương 2 Giới thiệu ngôn ngữ lập trình C++

đó, không có ngôn ngữ nào thích hợp để họ có thể sử dụng vào đồ án của họđược Cuối cùng Dennis Ritchie quyết định làm ra một ngôn ngữ mới để giảiquyết những vấn đề mà họ gặp phải Dennis Ritchie đẵ tham khảo rất nhiều cácngôn ngữ có từ trước, và đặc biệt là ngôn ngữ B do Ken Thompson cũng làm

Trang 10

việc tại Bell Labs nghĩ ra Rất nhiều phần của ngôn ngữ này được ông đưa vào

C Chính vì vậy mà Dennis Ritchie đã chọn ngay chữ cái tiếp theo của B (tức làC) để đặt tên cho ngôn ngữ mới này

Vì C là một ngôn ngữ mạnh và có tính linh hoạt, nó đã nhanh chóng được

sử dụng một cách rộng rãi, vượt ra khỏi phạm vi của Bell Labs Các lập trình viên

ở khắp mọi nơi bắt đầu sử dụng nó để viết tất cả các loại chương trình Tuynhiên, nhiều tổ chức đã nhanh chóng đưa ra các versions C của riêng họ vànhững sự khác biệt tinh tế của các phần được bổ sung bắt đầu khiến các lậptrình viên đau đầu Vì vậy vào năm 1983, Viện tiêu chuẩn Quốc gia Hoa Kỳ (theAmerican National Standards Institute - ANSI) đã thành lập một ủy ban để đưa ramột tiêu chuẩn cho C, được biết với cái tên ANSI C Trừ một vài ngoại lệ, tất cảcác trình dịch C hiện đại đều cố gắng theo sát tiêu chuẩn này

C++ được biết đến như là ngôn ngữ mới bao trùm lên C và do BjarneStroustrup sáng tác năm 1980 cũng tại phòng thí nghiệm Bell tại bang NewJersey, Mỹ Ban đầu được ông đặt tên cho nó là “C with classes” (C với các lớp).Tuy nhiên đến năm 1983 thì ông đổi tên thành C++, trong đó ++ là toán tử tăngthêm 1 của C

Mặc dù C là một ngôn ngữ được giới lập trình chuyên nghiệp yêu thíchsong nó vẫn có những hạn chế của nó Nếu một khi số dòng lệnh vượt hơn

25000 thì công việc sẽ trở nên rất phức tạp C++ được tạo ra để xóa bỏ chướngngại này Điều cơ bản của C++ là cho phép người lập trình hiểu và quản lý cácchương trình lớn, phức tạp hơn

C++ được biết đến như là ngôn ngữ lập trình hướng sự vật hay hướng đốitượng - OOP (Object Oriented Programming)

2 Đặc điểm

C là một ngôn ngữ mạnh và linh hoạt “Những gì bạn có thể làm với C chỉthua có trí tưởng tượng của bạn mà thôi” Ngôn ngữ không đưa ra các ràng buộcđối với bạn C được sử dụng trong nhiều dự án khác nhau, như viết hệ điềuhành, chương trình xử lý văn bản, đồ hoạ, bảng tính, và thậm chí cả chươngtrình dịch cho các ngôn ngữ khác

C là ngôn ngữ được các lập trình viên chuyên nghiệp ưa thích hơn cả.Cũng vì vậy mà có sẵn rất nhiều các trình biên dịch (compiler) và các thư việnđược viết sẵn khác

Trang 11

C là một ngôn ngữ khả chuyển (portable language) ghĩa là một chươngtrình viết bằng C cho một hệ máy tính (ví dụ như IBM PC) có thể được dịch vàchạy trên hệ máy tính khác (chẳng hạn như DEC VAX) chỉ với rất ít các sử đổi.Tính khả chuyển đã được bởi chuẩn ANSI cho C.

C chỉ gồm một số ít từ khoá (keywords) làm nền tảng để xây dựng các cácchức năng của ngôn ngữ Có lẽ bạn nghĩ rằng một ngôn ngữ với nhiều từ khoá(đôi khi còn được gọi là từ dành riêng - reserved words) sẽ mạnh hơn Khôngphải như vậy Khi lập trình với C, bạn sẽ thấy rằng nó có thể dùng để lập trìnhgiải quyết bất kỳ bài toán nào

C là ngôn ngữ lập trình theo modul Mã chương trình C có thể (và nên)được viết thành các thủ tục gọi là function Những function này có thể được sửdụng lại trong các ứng dụng (application) và chương trình khác nhau Tuy nhiên

C không cho phép khai báo hàm trong hàm

Đó là những đặc điểm nổi bật của C, vì C++ bao trùm lên C nên mọi đặc

điểm của C đều có trong C++ Ngoài ra, C++ còn có một số đặc điểm khác như:

+ C++ là ngôn ngữ hướng đối tượng

+ C++ là ngôn ngữ định kiểu rất mạnh

+ C++ cung cấp cách truyền tham số bằng tham chiếu cho hàm

+ C++ cung cấp cơ cấu thư viện để người lập trình có thể tự tạo thêm hàm

thông dụng vào thư viện và có thể tái sử dụng sau này

+ C++ cung cấp một cơ chế đa dạng hóa tên hàm và toán tử, cho phép sử

dụng cùng một tên hàm hoặc cùng một ký hiệu của toán tử để định nghĩa cácchương trình con thực hiện các nhiệm vụ tương tự nhau với tập kiểu dữ liệutham số khác nhau

+ C++ cung cấp các class là loại cấu trúc mới đóng gói chung cho cả dữ

liệu lẫn các hàm trong một chủ thể được bảo vệ một cách chặt chẽ

+ C++ Cung cấp các class con trong đó một class có thể kế thừa dữ liệu và

hàm của class khác là các class cha mẹ, tạo ra sự di truyền

3 Cấu trúc của một chương trình C++

Một chương trình C++ nói chung có dạng như sau:

(1): Khai báo thư viện

(2): [Khai báo các nguyên mẫu hàm của người dùng]

(3): [Các định nghĩa kiểu]

(4): [Các định nghĩa Macro]

Trang 12

(10): Các định nghĩa hàm của người dùng

Chú ý: Các thành phần trong cặp ngoặc vuông [] có thể có hoặc không trong chương trình

Ví dụ: int chanle (int x); Trong đó, kiểu hàm là int, tên hàm là chanle, đối

số là x và kiểu của đối số là int

(3): Định nghĩa kiểu mới: Ngoài những kiểu chuẩn đã được cung cấp sẵncủa ngôn ngữ, người lập trình có thể định nghĩa ra các kiểu mới từ những kiểu

đã có bằng cách sử dụng từ khóa typedef

(4): Định nghĩa Macro: Khái niệm macro là gì? Giả sử như bạn có một nộidung (giá trị) nào đó và bạn muốn sử dụng nó nhiều lần trong chương trình,nhưng bạn không muốn viết trực tiếp nó vào chương trình lúc bạn soạn thảo vìmột vài lý do nào đó (chẳng hạn như nó sẽ làm chương trình khó đọc, khó hiểu,hoặc khi thay đổi sẽ khó, ) Lúc này bạn hãy gán cho nội dung đó một ‘tên’ vàbạn sử dụng ‘tên’ đó để viết trong chương trình nguồn Khi biên dịch chươngtrình, chương trình dịch sẽ tự động thay thế nội dung của ‘tên’ vào đúng vị trí của

‘tên’ đó Thao tác này gọi là phép thế macro và chúng ta gọi ‘tên’ là tên củamacro và nội dung của nó được gọi là nội dung của macro

Một macro được định nghĩa như sau:

#define tên_macro nội_dung

Trong đó tên macro là một tên hợp lệ, nội dung (giá trị) của macro được coithuần tuý là 1 xâu cần thay thế vào vị trí xuất hiện tên của macro tương ứng,giữa tên và nội dung cách nhau 1 hay nhiều khoảng trống (dấu cách) Nội dung

Trang 13

của macro bắt đầu từ kí tự khác dấu trống đầu tiên sau tên macro cho tới hếtdòng.

(5): Các định nghĩa biến, hằng: Các biến và hằng được định nghĩa tại đây

sẽ trở thành biến và hằng toàn cục Ý nghĩa về biến, hằng, cú pháp định nghĩa

đã được trình bày trong mục biến và hằng

(6) – (9): Hàm main():Đây là thành phần bắt buộc trong một chương trìnhC++, thân của hàm main bắt đầu từ sau dấu mở móc { (dòng 7) cho tới dấu đóngmóc } (dòng 9)

(10): Các định nghĩa hàm của người dùng: Một định nghĩa hàm bao gồmtiêu đề của hàm, thân hàm với cú pháp như sau:

<Kiểu hàm> <Tên hàm> ([Khai báo các đối])

//Nhập vào 3 điểm Toán, Lý, Hóa

cout<<"Diem toan la:";

cin>>dt;

cout<<"diem ly la:"; cin>>dl;

cout<<"Diem hoa la:"; cin>>dh;

dtb = (dt+dl+dh)/3;

cout<<"diem trung binh 3 mon la:"<<"="<<dtb<<"\n";

Trang 14

//Khai báo hàm có tên là maxabc

float maxabc (float a, float b, float c)

Trang 15

5 Cài đặt chương trình

Chúng ta sẽ sử dụng Turbo C++ 4.5 trong phần tài liệu này

Để cài đặt Turbo C++ 4.5 bạn làm theo hướng dẫn sau:

Bước 1: Vào thư mục chứa bộ cài TurboC++ 4.5, chọn file Install.exe, click

đúp vào thư mục đó Xuất hiện hình sau:

Bước 2: Click Continue Màn hình sau hiện ra:

Bước 3: Tắt màn hình Install.txt Màn hình sau hiện ra, bạn click Continue:

Trang 16

Bước 4: Click Continue:

Bước 5: Màn hình sau hiện ra, bạn click vào Install:

Trang 17

Bước 6: Quá trình cài đặt bắt đầu chạy Sau khi quá kết thúc quá trình đó,

màn hình sau hiện ra, bạn click Continue:

Bước 7: Màn hình hiển thị Readme.txt Bạn close cửa sổ đó lại Click OK Bước 8: Màn hình hiển thị đăng ký:

Bước 9: Bạn điền đầy đủ thông tin vào các mục trong hình sau:

Trang 18

Bước 10: Click Continue/Ok

Các bước cài đặt đã hoàn tất

6 Khởi động chương trình

Để khởi động chương trình bạn sử dụng một số cách sau:

Cách 1: Start/Program/Turbo C++ 4.5/Turbo C++.

Cách 2: Click đúp vào biểu tượng Turbo C++ trên màn hình

7 Soạn thảo chương trình

Màn hình soạn thảo của Turbo C++ 4.5 có dạng sau:

Trang 19

8 Thoát khỏi chương trình

Trước khi thoát khỏi chương trình Turbo C++, bạn hãy Save/Save as toàn

bộ chương trình

Để thoát khỏi chương trình có thể sử dụng một số cách sau:

Cách 1: Click menu File/Exit.

Cách 2: Click vào biểu tượng bên phải màn hình

Trang 20

Chương 3 Các thành phần và các kiểu dữ liệu cơ bản

1 Các thành phần

Các thành phần trong C++ bao gồm:

+ Từ khóa

+ Các khai báo biến, hằng

+ Các cấu trúc điều khiển

+ Biểu thức và các phép toán

+ Các định nghĩa, khai báo hàm, khai báo kiểu,…

2 Các kiểu dữ liệu căn bản

Một trong mục đích của các chương trình là xử lý, biến đổi thông tin, cácthông tin cần xử lý phải được biểu diễn theo một cấu trúc xác định nào đó ta gọi

là các kiểu dữ liệu Các kiểu dữ liệu này được quy định bởi ngôn ngữ lập trình,hay nói khác đi mỗi ngôn ngữ có tập các kiểu dữ liệu khác nhau Không hoàntoàn giống như khái niệm kiểu dữ liệu trong toán học, trong các ngôn ngữ lậptrình nói chung mỗi kiểu dữ liệu chỉ biểu diễn được một miền giá xác định nào đó.Chẳng hạn như số nguyên chúng ta hiểu là các số nguyên từ - ∞ tới + ∞, nhưngtrong ngôn ngữ lập trình miền các giá trị này bị giới hạn, sự giới hạn này phụthuộc vào kích thước của vùng nhớ biểu diễn số đó Vì vậy khi nói tới một kiểu

dữ liệu chúng ta phải đề cập tới 3 thông tin đặc trưng của nó đó là:

- Tên kiểu dữ liệu

- Kích thước vùng nhớ biểu diễn nó,miền giá trị

- Các phép toán có thể sử dụng

Các kiểu dữ liệu đơn giản trong C++ chỉ là các kiểu số, thuộc hai nhómchính đó là số nguyên và số thực (số dấu phẩy động)

Nhóm các kiểu nguyên gồm có: char, unsigned char, int, unsigned int,

short, unsigned short, long, unsigned long được mô tả trong bảng sau:

Kiểu dữ liệu Tên kiểu (từ khoá) Kích thước Miền giá trị

Kí tự có dấu char 1 byte từ -128 tới 127

Kí tự không dấu unsigned char 1 byte từ 0 tới 255

Số nguyên có dấu int 2 byte từ -32768 tới 32767

Số nguyên không dấu unsigned int 2 byte từ 0 tới 65535

Trang 21

Số nguyên ngắn có dấu short 2 byte từ -32768 tới 32767

Số nguyên ngắn có dấu unsigned short 2 byte từ 0 tới 65535

Số nguyên dài có dấu long 4 byte từ -2,147,483,648 tới

2,147,438,647

Số nguyên dài không dấu unsigned long 4 byte từ 0 tới 4,294,967,295

Nhóm các kiểu số thực gồm: float, double, long double

Khuôn dạng biểu diễn của số thực không giống như số nguyên Một sốthực nói chung được biểu diễn theo ký pháp khoa học gồm phần định trị và phần

mũ viết sau chữ E để biểu diễn số mũ cơ số 10

Ví dụ: 3.14 = 314*10-2 sẽ được viết theo ký pháp khoa học là: 314E – 2.Hoặc: 314 = 3.14 *102 sẽ được viết theo ký pháp khoa học là: 3.14E + 2.Nhóm các kiểu số thực được mô tả trong bảng sau:

Kiểu dữ liệu Tên kiểu Kích thước Miền giá trị

Số thực với độ chính xác đơn float 4 byte 3.4e-38 -> 3.4e38

Số thực với độ chính xác kép double 8 byte 1.7e-308 -> 1.7e308

3.2 Định nghĩa hằng

Các hằng được định nghĩa bằng từ khoá const với cú pháp như sau:

const <kiểu_dữ_liệu> <tên_hằng> = <giá_trị>;

hoặc const <tên_hằng> = <giá_trị>;

Trang 22

Trong dạng thứ hai, chương trình dịch tự động ấn định kiểu của hằng làkiểu ngầm định, chương trình dịch sẽ tự động chuyển kiểu của <giá_trị> về kiểuint.

Ví dụ:

const int a = 5; // định nghĩa hằng a kiểu nguyên, có giá trị là 5

const float x = 4; // hằng x kiểu thực, có giá trị là 4.0

const d = 7; // hằng d kiểu int, giá trị là 7

const c = ‘1’; // hằng c kiểu int giá trị = 49

const char * s = “Ngon ngu C++”;// s là hằng con trỏ, trỏ tới xâu “Ngo nguC++”

Các hằng số trong C++ được ngầm hiểu là hệ 10, nhưng bạn có thể viếtcác hằng trong hệ 16 hoặc 8 bằng cú pháp, giá trị số hệ 16 được bắt đầu bằng0x, ví dụ như 0x24, 0xA, các số hệ 8 bắt đầu bởi số 0, ví dụ 025, 057

Các hằng kí tự được viết trong cặp dấu nháy đơn ‘’ : ví dụ ‘a’, ‘2’ các giá trịnày được C++ hiểu là số nguyên có giá trị bằng mã của kí tự; ‘a’ có giá trị là 97,

‘B’ có giá trị bằng 66

Các xâu kí tự là dãy các kí tự được viết trong cặp dấu nháy kép “”, ví dụ

“Ngon ngu C”, “a” (là kiểu xâu kí tự )

Chú ý: Các biến, hằng có thể được định nghĩa ngoài mọi hàm, trong hàm

hoặc trong một khối lệnh Với C chuẩn thì khi định nghĩa biến, hằng trong mộtkhối thì dòng định nghĩa phải ở các dòng đầu tiên của khối, tức là trước tất cảcác lệnh khác của khối, nhưng trong C++ bạn có thể đặt dòng định nghĩa bất kỳ

4 / Chia lấy phần nguyên

5 % Chia lấy phần dư

PHÉP TOÁN QUAN HỆ

Trang 23

TOÁN TỬ TĂNG GIẢM

1 ++ Tăng 1 Nếu toán tử tăng giảm đặt trước thì

tăng giảm trước rồi tính biểu thức hoặc ngược lại

5.1 Xuất dữ liệu (cout)

Dòng cout được sử dụng với toán tử đã quá tải << (overloaded - bạn sẽhiểu rõ hơn về thuật ngữ này trong phần lập trình hướng đối tượng)

cout << "Output sentence"; // Hiển thị Output sentence lên màn hình

cout << 120; // Hiển thị số 120 lên màn hình

cout << x; // Hiển thị nội dung biến x lên màn hình

Trang 24

Toán tử << được gọi là toán tử chèn vì nó chèn dữ liệu đi sau nó vào dòng

dữ liệu đứng trước Trong ví dụ trên nó chèn chuỗi "Output sentence", hằng số

120 và biến x vào dòng dữ liệu ra cout Chú ý rằng ở dòng đầu tiên chúng ta sửdụng dấu ngoặc kép vì đó là một chuỗi ký tự Khi chúng ta muốn sử dụng cáchằng xâu ký tự ta phải đặt chúng trong cặp dấu ngoặc kép để chúng có thể đượcphân biệt với các biến Ví dụ, hai lệnh sau đây là hoàn toàn khác nhau:

cout << "Hello"; // Hiển thị Hello lên màn hình

cout << Hello; // Hiển thị nội dung của biến Hello lên màn hình

Toán tử chèn (<<) có thể được sử dụng nhiều lần trong một câu lệnh: cout << "Hello, " << "I am " << "a C++ sentence";

Câu lệnh trên sẽ in thông báo Hello, I am a C++ sentence lên màn hình.

Sự tiện lợi của việc sử dụng lặp lại toán tử chèn (<<) thể hiện rõ khi chúng tamuốn hiển thị nhiều biến và hằng hơn là chỉ một biến:

cout << "Hello, I am " << age << " years old and my email address is " <<email_add;

Cần phải nhấn mạnh rằng cout không nhảy xuống dòng sau khi xuất dữ

liệu, vì vậy hai câu lệnh sau:

cout << "This is a sentence.";

cout << "This is another sentence.";

sẽ được hiển thị trên màn hình:

This is a sentence.This is another sentence

Bởi vậy khi muốn xuống dòng chúng ta phải sử dụng ký tự xuống dòng,

trong C++ là \n:

cout << "First sentence.\n ";

cout << "Second sentence.\nThird sentence.";

sẽ viết ra màn hình như sau:

First sentence

Second sentence

Third sentence

Thêm vào đó, để xuống dòng bạn có thể sử dụng tham số endl Ví dụ:

cout << "First sentence." << endl;

cout << "Second sentence." << endl;

sẽ in ra màn hình:

First sentence

Second sentence

Trang 25

Tham số endl có một tác dụng đặc biệt khi nó được dùng với các dòng dữ

liệu sử dụng bộ đệm: Các bộ đệm sẽ được flushed (chuyển toàn bộ thông tin từ

bộ đệm ra dòng dữ liệu) Tuy nhiên, theo mặc định cout không sử dụng bộ đệm

Thao tác vào chuẩn trong C++ được thực hiện bằng cách sử dụng toán tử

đã quá tải >> với dòng cin Theo sau toán tử này là biến sẽ lưu trữ dữ liệu đượcđọc vào Ví dụ:

int age;

cin >> age;

khai báo biến age có kiểu int và đợi nhập dữ liệu từ cin (bàn phím) để lưutrữ nó trong biến kiểu nguyên này

cin chỉ bắt đầu xử lý dữ liệu nhập từ bàn phím sau khi phím Enter được gõ

Vì vậy dù bạn chỉ nhập một ký tự thì cin vẫn sẽ kiên nhẫn chờ cho đến khi bạn gõphím Enter

Chương 4 Các cấu trúc điều khiển

1 Lệnh đơn và lệnh phức

1.1 Lệnh đơn

Một biểu thức kiểu như: a =5; a+ =6;… trở thành câu lệnh khi có đi kèmtheo dấu chấm phẩy (;) phía cuối câu

Trang 26

Cách hoạt động: Đầu tiên, chương trình kiểm tra biểu thức điều kiện sau

if Nếu biểu thức điều kiện đúng thì các câu lệnh trong khối lệnh trong cấu trúc ifđược thực hiện Ngược lại, chương trình sẽ thoát ra khỏi cấu trúc if và thực hiệncác lệnh tiếp theo sau cấu trúc if

Biểu diễn dưới dạng lưu đồ cách hoạt động của cấu trúc if:

Biểu thức đk

Khối lệnh

Sai

Đúng

Trang 27

Cách hoạt động: Đầu tiên, chương trình kiểm tra biểu thức điều kiện sau

if, nếu biểu thức điều kiện đúng thì thực hiện các câu lệnh trong khối lệnh 1.Ngược lại, nếu biểu thức điều kiện sai sẽ thực hiện các câu lệnh trong khối lệnh

2

Biểu diễn bằng lưu đồ của cấu trúc if else:

Biểu thức đk

Khối lệnh 1;

Sai

Đúng

Khối lệnh 2;

Trang 28

Ví dụ 1: Sử dụng cấu trúc if và if else để nhập vào điểm của 3 môn: Toán,

lý, hóa và tính điểm trung bình:

cout<<"diem ly la:"; cin>>dl;

cout<<"Diem hoa la:"; cin>>dh;

elsecout<<"Hoc luc gioi";

Trang 29

Ví dụ 3: Viết chương trình nhập vào 1 số, tính căn bậc 2 của số đó

//Chuong trinh tinh can bac 2

3 Cấu trúc lựa chọn: switch case

Cấu trúc switch case cho phép lựa chọn một nhánh trong nhiều khả năngtùy vào điều kiện xảy ra

Trang 30

Trong đó: ni là các số nguyên, hằng ký tự hoặc biểu thức hằng Các ni cần

có giá trị khác nhau

Đoạn chương trình nằm trong cặp ngoặc nhọn {} là thân của switch

default, case là các từ khóa default là thành phần không bắt buộc

Cách hoạt động: sự hoạt động của cấu trúc switch case phụ thuộc vào

giá trị của biểu thức nguyên sau switch

Đầu tiên <biểu thức nguyên> được tính, sau đó lần lượt so sánh giá trị của

<bt nguyên> với các biểu thức hằng <n1>, <n2>, <nk>

Nếu giá trị của một biểu thức hằng thứ k trong các biểu thức này trùng vớigiá trị của <biểu thức nguyên> thì chương trình sẽ thực hiện các lệnh bắt đầu từkhối lệnh k và tiếp tục các lệnh phía dưới cho tới khi:

+ Gặp câu lệnh : break (tất nhiên nếu gặp các câu lệnh return, exit thì cũngkết thúc)

+ Gặp dấu đóng móc } hết cấu trúc switch

Nếu <biểu thức nguyên> không trùng với giá trị nào trong các biểu thứchằng thì khối lệnh (các lệnh sau mệnh đề default nếu có) sẽ được thực hiện, rồi

ra khỏi cấu trúc switch

Ví dụ 1: Sử dụng cấu trúc switch case, hãy viết chương trình: nếu nhập

vào là ‘P’ hoăc ‘p’ thì hiển thị dòng chữ “Cao dang co dien Ha Noi”

case 'p':

cout<<"Cao dang co dien Ha Noi";

}}

Ví dụ 2: Viết chương trình sử dụng cấu trúc switch case, nhập 2 số

nguyên x, y từ bàn phím, chương trình đưa ra lựa chọn:

+ Nếu người sử dụng nhập ‘+’: Thực hiện: x + y;

Trang 31

+ Nếu người sử dụng nhập ‘-‘: Thực hiện: x – y;

+ Nếu người sử dụng nhập ‘*’: Thực hiện: x * y;

+ Nếu người sử dụng nhập ‘/‘: Thực hiện: x / y;

Nếu người sử dụng không nhập một trong các toán tử trên thì đưa ra dòngthông báo: “Khong hieu toan tu nay!”

Trang 32

cout<<"Khong hieu toan tu nay!"<<"\n";

} return 0;

Khối lệnh; // Hay thân while

Sự hoạt động của vòng lặp while:

Bước 1: tính giá trị của <biểu thức sau while>

Bước 2: nếu giá trị tính được của <biểu thức> là ‘sai’ (==0) thì kết thúcvòng lặp while

Bước 3: nếu giá trị của <biểu thức> là ‘đúng’ (!=0) thì thực hiện khối lệnhsau while

Bước 4: quay lại bước 1

Chú ý: Thân while có thể được thực hiện một lần hoặc nhiều lần và cũng

có thể không được thực hiện lần nào nếu ngay từ đầu biểu thức sau while đã sai

Biểu diễn bằng lưu đồ:

Trang 33

Ví dụ 3: Viết chương trình nhập số nguyên n từ bàn phím, n <=10 và n >0,

tính và in giá trị n! (giai thừa của n), với n! = 1*2*…*(n-1)*n

#include <iostream.h>

Trang 34

const int Max =10; // giới hạn giá trị cần tính

}

4.2 Cấu trúc lặp do while

Trong toán tử while việc kiểm tra điều kiện kết thúc đặt ở đầu chu trình.Khác với while, do while việc kiểm tra điều kiện kết thúc đặt cuối chu trình Nhưvậy thân của chu trình bao giờ cũng được thực hiện ít nhất một lần

Cú pháp:

do

Khối lệnh;

while (biểu thức);

Sự hoạt động của vòng lặp do while:

Bước 1: thực hiện khối lệnh sau do

Bước 2: kiểm tra giá trị biểu thức <biểu thức> sau while, nếu có giá trị

‘đúng’ ( khác 0) thì lặp lại bước 1, nếu ‘sai’ (=0) thì kết thúc vòng lặp

Biểu diễn dưới dạng lưu đồ:

34

Khối lệnh

Biểu thức

Đúng

Trang 35

cout<< "Nhap vao 1 day so khong cach"; cin>>n;

cout<< "Ban da nhap so"<<n<<endl;

Trang 36

Biểu thức 1: biểu thức khởi đầu.

Biểu thức 2: biểu thức điều kiện - điều kiện lặp

Biểu thức 3: bước nhảy - thường dùng với ý nghĩa là thay đổi bước nhảy

Cả 3 biểu thức này đều là tuỳ chọn, chúng có thể vắng mặt trong câu lệnh

cụ thể nhưng các dấu chấm phẩy vẫn phải có

Sự hoạt động của vòng lặp for:

Hoạt động của for theo các bước sau:

Bước 1: Thực hiện biểu thức khởi đầu – Biểu thức 1

Bước 2: Tính giá trị biểu thức 2 để xác định điều kiện lặp

Nếu biểu thức 2 có giá trị ‘sai’ (==0) thì ra khỏi vòng lặp

Ngược lại, nếu biểu thức có giá trị ‘đúng’ ( khác 0) thì chuyển tới bước 3.Bước 3: Thực hiện khối lệnh sau for ( thân của for ), chuyển tới bước 4.Bước 4: Thực hiện biểu thức, rồi quay về bước 2

Biểu diễn dưới dạng lưu đồ:

36

Biểu thức 1

Biểu thức 2

Khối lệnh

Đúng

Sai

Trang 38

for(i=2; i<=n; i++)

{cout<<"Nhap so thu nhat : ";

cin>>a;

if(a>max) max=a;

else

if(a<min)

min =a;

}cout<<"\nGia tri lon nhat =”<<max<<”\nGia tri nho nhat = "<<min;

Ví dụ: Cho phép người dùng nhập liên tục giá trị n cho đến khi nhập âm thìdừng

cin>>n;

if(n<0)break;

}}

Trang 39

5.2 Câu lệnh continue

Trái với câu lệnh break, continue dùng để bắt đầu một vòng mới của chutrình chứa nó Trong while và do while, lệnh continue chuyển điều khiển vềthực hiện ngay phần kiểm tra, còn trong vòng lặp for điều khiển được chuyển vềbước khởi đầu lại (tức là bước: tính biểu thức 3, sau đó quay lại bước 2 để bắtđầu một vòng mới của chu trình)

Chú ý: Lệnh continue chỉ áp dụng cho chu trình, không áp dụng cho switch

cout<<i<<",";

}cout<<"Ket thuc;";

Trang 40

5.4 Hàm exit

Hàm exit() trong C/C++ được sử dụng để thoát khỏi chương trình Hàmnày, khi được triệu gọi sẽ ngay lập tức kết thúc chương trình và chuyển quyềnđiều khiển cho hệ điều hành

Bài 1: Viết chương trình giải phương trình bậc nhất ax + b = 0

Bài 2: Viết chương trình giải phương trình bậc hai ax2 + bx + c = 0 (a ≠ 0)Bài 3: Viết chương trình giải phương trình bậc hai ax2 + bx + c = 0 (a bấtkỳ)

Bài 4: Viết chương trình nhập vào N, kiểm tra N có phải là số nguyên tốkhông ?

Bài 5: Viết chương trình nhập vào N, tính tổng và in ra tất cả các số ước sốcủa N

2.1 Cú pháp khai báo nguyên mẫu hàm

<Kiểu_hàm> Tên_hàm ([Danh_sách_tham_số]);

Trong đó:

Ngày đăng: 15/04/2016, 10:52

TỪ KHÓA LIÊN QUAN

w