1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Lập trình cơ bản với c quyển 6

16 43 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 16
Dung lượng 4,4 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Ngôn ngữ lập trinh c dược sử dụng để mô tả, minh họa các khái niệm đồng thời như là một ngôn ngừ cụ thể để sinh viên rèn luyện kỳ năng lập trình, giải qiiyếl vấn đề.. N h ư một nhà toán

Trang 1

ĐẠI HỌC QUỐC GIA HÀ NỘI

T ú SÁ C H

KM O A H Ọ C

ĐẠI HỌC QUỐC GIA HÀ NỘI

74-KHTN-2012

Chủ biên: Hồ Sĩ Đàm

Q uyển 6

VỚI

Tác giả: Bùi Thế Duy

T T T V - D K Q G H N

tu-i)(6)

2012

Õ Ỡ 0 3 #

Trang 2

LẬP TRÌNH Cơ BẢN VỚI c

Trang 3

M Ụ C L ỤC

Lời nói đ ầ u 7

Chương I. Lập trình và ngôn ngữ lập t r ìn h 9

1.1 Giài quyết vấn đ ề 9

1.1.1 Giải quyết vấn đề trong cuộc sống hàng n à y 9

1.1.2 Giải quyết vấn đề bàng máy tín h 10

1.1.3 Phân tích bài toán/vấn đ ề 10

1.2 Lập t r ì n h 11

1.3 Ngôn ngừ tự nhiên và ngôn ngữ lập t r ì n h 12

1.4 Các thành phần cơ bản của ngôn ngữ lập trinh c 13

1.4.1 Bảng chừ c á i 13

1.4.2 Quy tấc cú p h á p 14

1.4.3 N g ữ n g h ĩ a 14

1.5 Kết c h ư ơ n g 14

Câu hòi và bài t ậ p 15

Bài đọc thêm: Những thành công của ngôn n g ữ lập trình c 16

Chương 2. Chưo’ng trình máy tính 19

2.1 Khái niệm về chương trình máy t í n h 19

2.2 Cấu trúc m ột chương trình trong ngôn ngữ lập trình c 20

2.3 Một chương ưìn h đơn g i à n 20

2.4 Dịch chương tr ìn h 23

2.5 Liên kết chương t r ì n h 23

2.6 Viết inột chương t r ì n h 24

2.6.1 Mô tà vấn đ ề 24

2.6.2 Xem xét bài to án 25

2.6.3 Các giai đoạn phát triển chương t r ì n h 26

2.6.4 Chiến lược phát triển chương trình phần m ề m 26

2.7 Kết c h ư ơ n g 29

Câu hỏi và bài t ậ p 30

Chương 3 Biến, hằng và kiểu d ữ l i ệ u 31

3.1 B iển 31

3.1,1 Đăt tên b i ế n 32

Trang 4

l Ạ p t r I nh c ơ bản v ớ i C

3.1.2 Câu lệnh g á n 33

3.2 Một số kiểu dừ liệu c h u ẩ n 34

3.3 n Ị i g 1 37

3.4 Kết c h ư ơ n g 38

Câu hỏi và bài t ậ p 39

Chương 4. Xuất/nhập d ữ l i ệ u 4 1 4.1 Xuất dừ liệu ra màn h ì n h 41

4.2 Nhập dữ liệu từ bàn p h í m 43

4.3 Nhập dữ liệu và k i ể u 44

4.4 Kết c h ư ơ n g 46

Câu hỏi và bài t ậ p 47

C hương 5. Phép toán, biểu d i ễ n 49

5.1 Phép t o á n 49

5.2 Biểu th ứ c 51

5.2.1 Biểu thức số h ọ c 51

5.2.2 Biểu thức quan h ệ 53

5.2.3 Biểu thức l o g i c 53

5.3 Thứ tự cùa các phép t í n h 54

5.4 Kiểu cùa biểu t h ứ c 55

5.5 Các hàm toán h ọ c 56

5.6 Toán từ kết h ợ p 57

5.7 Kết c h ư ơ n g 59

Câu hỏi và bài t ậ p 60

C hưong 6. c ấ u trúc điều k h i ể n 63

6.1 Các cấu trúc điều khiển cơ bản trong lập t r ì n h 63

6.1.1 Tuần t ự 63

6.1.2 Rẽ n h á n h 63

6.1.3 L ặ p 64

6.2 Câu lệnh rẽ nhánh trong c 65

6.2.1 Câu lệnh i f 65

6.2.2 Câu lệnh s w i t c h 68

6.2.3 Khối chương t r ì n h 70

6.3 Cấu trúc lặp trong c 71

6.3.1 Câu lệnh w h i l e 71

6.3.2 Câu lệnh do., w h i l e 75

6.3.3 Câu lệnh f o r 76

Trang 5

6.3.4 Câu lệnh break và c o n tin u e 79

6.4 Kốt c h ư ơ n g 80

Càu hỏi và bài t ậ p 81

C hương 7 Con trỏ và M ả n g 85

7.1 Con trò 85

7.1.1 Khai báo biến kiểu con t r ỏ 86

7.1.2 Lay địa chỉ của một b i ế n 86

7.1.3 Cấp phát bộ nhớ đ ộ n g 87

7.1.4 Tham chiếu giá trị của con t r ò 88

7.1.5 Gán giá t r ị 88

7.2 Mảng một c h i ề u 89

7.2.1 Khai báo m ảng một chiề u 89

7.2.2 Truy cập các phần t ừ 91

7.2.3 Saojchep m ả n g 93

7.3 Mảng nhiều c h i ề u 94

7.4 Xâu.T .97

7.5 Kết c h ư ơ n g 99

C âu hòi và bài t ậ p 100

C hương 8. Vào/ra với t ệ p 103

8.1 Giới t h i ệ u 103

8.2 T h ư viện vào/ra c h u ẩ n 103

8.3 Thao tác trực tiếp với t ệ p 104

8.4 Các thao tác với nội dung t ệ p 104

8.4.1 Khai báo t ệ p 104

8.4.2 Mở t ệ p 104

8.4.3 Đóng t ệ p 106

8.4.4 Đọc và ghi d ữ liệu với tệp văn b ả n 106

8.5 Vào/ra tệp nhị p h â n 107

8.6 Kết c h ư o n g 108

C âu hòi và bài t ậ p 109

C hương 9. H à m 111

9.1 Lý do cần quan tâm đến h à m 111

9.2 Cấu trúc cùa một h à m 112

9.3 Thực hiện h à m 116

9.4 Trà về giá trị thông qua tham s ố 118

9.5 Khai báo h à m 119

M IX JA)C 5

Trang 6

l a p t r ìn h c ơ bản v ớ i c

9.6 Biến cục bộ và biến toàn c ụ c 1 19

9.7 Đệ q u y ’ 120

9.8 Kết c h ư ơ n g 121

Càu hỏi và bài t ậ p 122

Chươìĩg 10. Kiểu d ữ liệu có cấu t r ú c 123

10.1 Khai b á o 124

10.2 Truy cập giá t r ị 125

10.3 Gán giá t r ị 125

10.4 Một sổ ví dụ ứng d ụ n g 126

10.5 Kết c h ư ơ n g 131

Câu hỏi và bài t ậ p 132

Chương II. L ỗ i 133

11.1 GỠIỒL 133

11.1.1 Lỗi lúc d ịc h 133

11.1.2 Lỗi cú p h á p 136

11.1.3 Lồi k iể u 137

11.1.4 Các cảnh báo lúc dịc h 138

11.2 Lỗi lúc liên k ế t 138

11.3 Lỗi lúc chạy chương trình 139

11.4 Lỗi logic 141

11.5 G ỡ lồi bàng thực n g h i ệ m 141

11.6 X ử lý l ỗ i 142

11.7 Các nguyên nhân tạo ra l ỗ i 143

11.8 Xử lý lồ i 144

11.8.1 Phần mã gọi hàm x ử lý lỗi 144

11.8.2 Phần m ã hàm xử lý lồi 146

11.9 Kết c h ư ơ n g 147

Tài liệu tham k h ả o 149

Trang 7

LỜI NÓI Đ À U

Giáo trình được biên soạn theo đề cương môn học “Lập trình cơ bán với C"’ đã được Đại học Quốc gia Hà Nội phô duyệt Môn học nhàm cung cấp các khái niệm cơ bản về lộp trình và ngôn ngừ lập trình bậc cao Ngôn ngữ lập trinh c dược sử dụng để mô tả, minh họa các khái niệm đồng thời như là một ngôn ngừ cụ thể để sinh viên rèn luyện kỳ năng lập trình, giải qiiyếl vấn đề Mục tiêu của giáo trinh là giúp cho người đọc suy nghĩ như một người làm Tin học Cách suy nghĩ này là sự kết hcrp những đặc tính tốt nhất cùa toán học, kỳ sư, và khoa học tự nhiên N h ư một nhà toán học, các nhà Tin học dùng ngôn ng ừ hình thức để thể hiện các ý tường của minh Như các kv sư, các nhà Tin học thiết kế, lẳp ráp các thành phần thành các hệ thống và đánh giá các hệ thống đỏ N h ư các nhà khoa học, các nhà Tin học quan sát hành vi của các hệ thống phức tạp, đưa ra các giả thuyết và kiểm tra các già thuyết dó

Bùi Thế Duy, HỒ Sĩ Đàm

Trang 8

Chương I

LẬP T RÌ NH VÀ N G Ô N NGỮ LẬP T R Ì N H

Kỹ năng cần có cùa naười làm Tin học là khà năng mô tà vấn dề, suy nghĩ sáng tạo dể giải quvết vấn dề, và trình bày giải pháp một cách rõ ràng

và chính xác Học lập trinh là một cơ hội rất tốt để thực hành các kỳ năng giái quvết vấn đề

1,1 Giải quyết vấn đề

/ 1.1 Giải (Ịuyểt vẩn đề trong cuộc sổng /làng này

ỉ làng ngày, lúc nào chúng ta cũng phủi sử dụng các kỳ năng giải quyết vấn dề, dưa ra sự lựa chọn và đưa ra quyết định Ví dụ, ta nên xem ti vi hay

di xem phim, ta sẽ chọn nghề nghiệp nào, Các phương án giải quyết vấn

dề không lốt, các quyết định không tốt có thể gây ra hậu quà, thậm chí là nghiêm Irọng Ví dụ trong kinh doanh, một phương án không tốt, một quyết dịnh không tốl có ihế gây ra thua lỗ về tiền bạc và mất mát về thời gian Cliính vì vậy, biết cách giái quyết vấn đồ, biết cách dưa ru quyết định là một

kv nâng rất quan trọng Dể giải quyết vấn dồ, chúng ta thường sử dụng các bước sau;

1 Xác dịnh/hiểu vấn đề; Ncu chúng ta không biết vấn đề là gì, chúng

ta không thể giài quyết nó, chính vì vậy phủi xác định rõ vấn đề cũne như dầu vào và dầu ra của vấn dề thì mứi giải quyết được;

2 Xác dịnh các giài pháp khác nhau để giải quyết vấn dề; tạo ra một danh sách càng nhièu càng tốt các cách giải quyết, trao đổi với những người khác để có nhũng giải pháp mà chúng ta chưa nghĩ tới Neu chúng ta chưa có đầy đú các giải pháp, chúng ta chưa thê đưa ra quyết định tổt;

Trang 9

10 _ l a p t r in h c ơ bần VỚỊ_C

3 ỉ)ánh giá cái được và mất cho mồi giài pháp de chọn ra giai pháp tốt nhất;

4 Liệt kê các bước cho phép chúng la giái quyết \ an dồ theo giãi pháp đã được chọn lựa;

5 Thực hiện các bước và đánh giá giải pháp

T ó m lại, để có thể giải quyết tốt một vấn đề, cần:

• vấn đề được xác định rõ ràng;

• các giải pháp khác nhau đều được xcni xét;

• đánh giá tính khả thi của giải pháp

1.1.2 Giải quyết vấn đề bằng máy tính

Như vậy, giải quyết vấn đề là một kỳ năng mà chúng ta phái sừ dụng hàng ngày Hãy xem xét hai loại vấn đề mà chúng ta phải gặp hàng ngày:

• Loại vấn đề có giải pháp kiểu thuật toán: đây là các vấn dổ mà

có thể giải quyết bằng một chuồi các hành động

• Loại vấn đề có giải pháp kiểu ơ-ris-tic {heuristic) - các giài pháp không dưới dạng một chuỗi các bước - ví dụ nh ư làm thế nào dể mua chứng khoán tốt nhất?

Các vấn đề loại đầu khá thích hợp đổ giải quyết Ircn m áy tính, còn loại thứ hai đề giải quyết được trên máy tính cần kết hợp nhiều phưcmg pháp khác nhau

I.Ỉ.3 p/iãn tích hài toảiưvẩn đề

Dẻ có thể giải quyết tốt một bài toán bàng m áy tính, chúng ta cần tiến hành phân tích bài toán trước khi thực sự trièn khai trên máy Một phưưng pháp tốt để phân tích bài toán là tách bài toán ra làm bốn phần: d ừ liệu dầu vào, yêu cầu kết quả, các bước xử lý cần làm, và các giải pháp khác

Sau đày là mẫu cùa bảng biểu dùng để phân tích bài toán/vấn đè:

Trang 10

CHƯONG 1 LẬP TRÌNH VA NGỔN NGỮ LẬP TRlNH 1 1

- Dữ liệu trong bài toán hoặc cung cấp bởi

người dùng

- Các hảng số dử liệu

Các yêu cầu về kết quả đầu ra

Danh sách các bước xử lý cản ỉám các công

thừc (vi dụ các kỹ thuật tìm kiếm hay sắp xếp

các thuặt toán)

Danh sách các giải pháp khảc

Ví dụ, với bài toán tính tổng sổ tiền phải trả cho người lao động theo giừ theo công thức;

Tồng tiền phải trả = Tổng số giờ đã làm * Định mức trả theo giờ

chúng ta có Ihề phân tích như trong bảng sau;

Tống số giờ đã làm

Định mửc trả theo giờ

Tổng số tiền phải trả

Tỏng tiền phải trả = Tồng số giờ đã làm • Định

mức trả theo giờ

Coi định mửc trả theo giờ là hằng số

1.2 Lập trình

Trên máy tính, chúng ta có thể lập trình giải các bài toán có thuật toán giài sau khi xác định d ừ liệu vào và dữ liệu ra của bài toán

Lập trình là lựa chọn và sử dụng các cấu trúc d ừ liệu thích hợp và các câu lệnh của một ngôn ngừ lập trình cụ thể đế mô tả dữ liệu (dừ liệu vào, dữ liệu ra và d ữ liệu trung gian) và các thao tác cùa thuật toán.

Giáo trình này coi việc dạy lập trình là ưu tiên nhất và việc dạy ngôn ngữ lập trình, như là m ột công cụ, chi là ưu tiên thứ hai Mục tiêu chính là giúp người đọc hiểu những khái niệm, những nguyên tẳc, và những kỹ thuật chung, ví dụ như các kỳ thuật cơ bản để viết mã không bị lồi, cách viết mã một cách logic và đơn giản, cách sử dụng cách hàng số, hay cách tách phần

Trang 11

khai báo ra khỏi phần cài dặt thực sự Tuy nhiên, cũng không thể hièu những vấn dề này mà không có ngôn ngữ lập trình Ví dụ, chi tiết vè cú pháp, cách thức triển khai những khái niệm, những nguyên tăc của các niíỏn ngừ lập trình khác nhau cỏ thể khác nhau 1'hC'm vào dó, các kỹ ihuật lập trình và thiết kế phài được học thông qua việc sử dụng một ngôn n e ữ lập trình Thiết kế, tổ chức mã, và gỡ lỗi không phải là các kỹ nãng mà ta có thế thu được một cách trừu tượng, c ầ n phải viết mã trong niột ntìôn nizừ lạp trình nào đó và thu được kinh nghiệm thực tế từ đó Diều này có nghĩa là phải tìm hiểu những vấn đề căn bản cùa một ngôn ngữ lập trình

1.3 Ngôn n g ữ tự nhiên và ngôn n g ữ lập trình

Ngôn ngừ tự nhiên là ngôn ngữ mà con người dùng đê giao liếp với nhau, ví dụ như tiếng Việt, tiếng Anh, và tiếng Nhật Ngôn ngữ lự nhicn được hình thành và phát triển cùng với sự phát triẻn cùa loài người Ngôn ngữ hình thức là các ngôn ngữ được thiết kế bởi con người cho những ứng dụng nhất định Ví dụ, các công thức và ký hiệu mà các nhà toán học dùng

là một ligôn ngừ hình thức để ghi lại mối quan hệ giừa các số và biếu lượng Các nhà hóa học dùng ngôn ngừ hình thức cùa họ để thể hiện cấu trúc hóa học của các phân tử Và có lẽ quan trọng nhất, ngôn ng ữ lập trinh là các ngôn ngữ hình thức được thiết kế để thể hiện các lính toán

Ngôn ngữ lập trình là ngôn ngữ do con người thiết kế đế mõ tả dữ liệu

và thuật toán d ư ớ i d ạ n g mà m á y tính h o ặ c trực tiê p h o ặ c giá n íiêp

"hiểuđược.

Mặc dù ngôn ngữ lập trình có nhiều điểm giống ngôn ngữ lự nhiên, tuy nhiên cũng có rất nhiều điềm khác nhau:

- Sự nhập nhàng: Ngôn ngừ tự nhiên chứa đựng rất nhiều sự nliập nhàng Con ngưừi xử lý những sự nhập nhàng này bằng cách sừ dụng các thông tin tình huống Trong các ngôn ng ừ lập trình không

có sự nhập nhàng Điều đó có nghĩa là mồi câu chỉ mang đúng rnột

ý nghĩa bất kể tình huống nào

- Sự dư thừa: Đẻ giảm bớt sự khó hiểu cũng nh ư vì các lý do giao tiếp, ngôn n g ừ tự nhiên thường có thêm nhiều thành phần dư thừa

_[2 _ l a p TRINH CƠ BAN v ờ i c

Trang 12

CHƯƠNG 1 LẬP TRÌNH VẢ NGỔN NGỮLẢP TRÌNH 13

Trong khi đó, ngôn ng ừ lập trình rất cô đ ọng và không c h ứ a sự

dư thừa

- N gừ nghĩa; Ngôn ngữ tự nhiên thường sử dụng nhiều thành ngữ và phép ẩn dụ, do vậy một câu có thể mang nghĩa đen và nhiều nghĩa bóng Trong ngôn ngữ lập trinh, một câu chi mang đúng một nghĩa

mà thôi

Chính vl vậy, chúng ta cần phải lưu ý những điểm sau khi đọc hiểu các cliLumu trinh máy tính Tarớc hết, cần lưu ý ràng ngôn ngừ hinh thức cô đọng hơn ngôn ngừ tự nhiên, do vậy, cần nhiều thời gian để đọc hơn Nhớ ràng các chi tiết rất quan trọng irong một chương trinh máy tính Các lồi rất nhỏ như đặt sai chấm phẩy có thể dễ dàng được bỏ qua trong ngôn ngữ tự nhiên, nliưng lại lạo ra các khác biệt rất lớn trong các chương trình máy tính

1.4 C á c thành p h ầ n cơ bản của ngôn n g ữ lập trình c

Mỗi ngôn ngừ lập trình được xác định bởi ba thành phần cơ bản là; bàng chữ cái, quy tấc cú pháp và ngừ nghĩa các khái niệm

1.4 ỉ Bảng chữ cái

Bàng chừ cái là tập hợp các ký tự dùng để viết chương trình Nhìn chung bảng chừ cái của các ngôn ngữ lập trình không khác nhau nhiều

Bùiig chừ cái của ngôn ngữ lập trình c bao gồm:

• Các chừ cái thường và chữ cái hoa của bảng chừ cái tiếng Anh:

a b c d e f g h i j k l m n o p q r s t u v w x y z

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

• 10 chữ số Ảrập:

0 1 2 3 4 5 6 7 8 9

• Các ký tự đặc biệt:

Ngày đăng: 27/03/2020, 23:16

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w