Thông tin (informations) là một khái niệm được sử dụng thường ngày. Con người có nhu cầu đọc báo, nghe đài, xem phim, video, đi tham quan, du lịch, tham khảo ý kiến người khác, . để nhận được thêm thông tin mới. Thông tin mang lại cho con người sự hiểu biết, nhận thức tốt hơn về những đối tượng trong đời sống xã hội, trong thiên nhiên, . giúp cho họ thực hiện hợp lý công việc cần làm để đạt tới mục đích một cách tốt nhất.
130 trang |
Chia sẻ: haohao89 | Lượt xem: 3013 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Đề cương tin học đại cương (ngôn ngữ c), để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
TRƯỜNG ðẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN
KHOA CÔNG NGHỆ THÔNG TIN
ðỀ CƯƠNG BÀI GIẢNG
HỌC PHẦN: TIN HỌC ðẠI CƯƠNG
Trình ñộ ñào tạo
Hệ ñào tạo
:
:
ðại học
Chính quy
ðề cương Tin học ñại cương --------- ñào tạo tín chỉ
Khoa CNTT – Trường ðHSP Kỹ thuật Hưng Yên Trang 2
MỤC LỤC
BÀI 1: THÔNG TIN VÀ XỬ LÝ THÔNG TIN - HỆ THỐNG TÍNH TOÁN VÀ BIỂU DIỄN THÔNG
TIN TRONG MÁY TÍNH .......................................................................................................... 4
1.1 Thông tin và xử lý thông tin, hệ thống tính toán và biểu diễn thông tin trong
máy tính ................................................................................................................. 4
1.2. Tổng quan về hệ thống máy tính ................................................................... 17
BÀI 2: GIẢI BÀI TOÁN TRÊN MÁY TÍNH ðIỆN TỬ ................................................................ 33
2.1. Thuật toán ..................................................................................................... 33
2.2. Một số thuật toán thông dụng ........................................................................ 36
2.3. Các phương pháp lập trình ............................................................................ 41
2.4. Một số ngôn ngữ lập trình ............................................................................. 46
2.5. Ngôn ngữ lập trình C/C++ ............................................................................ 49
BÀI 3: CÁC THÀNH PHẦN CƠ BẢN CỦA NGÔN NGỮ LẬP TRÌNH C/C++ ......................................52
3.1. Cấu trúc một chương trình C/C++ ñơn giản .................................................. 52
3.2. Các phần tử cơ bản của một ngôn ngữ lập trình ............................................ 54
3.3. Các kiểu dữ liệu cơ bản ................................................................................. 55
3.4. Biến, hằng và cách khai báo .......................................................................... 57
3.5. Các phép toán ................................................................................................ 64
Bài 4: CÁC THÀNH PHẦN CƠ BẢN CỦA NGÔN NGỮ LẬP TRÌNH C/C++(tiếp)........................ 69
4.1. Biểu thức ....................................................................................................... 69
4.2. Một số hàm thường dùng .............................................................................. 69
4.3. Nhập/xuất dữ liệu (bàn phím, màn hình) ....................................................... 70
Bài 5: CẤU TRÚC RẼ NHÁNH ............................................................................................ 76
5.1. Câu lệnh ñơn, khối lệnh ................................................................................ 76
5.2. Các cấu trúc rẽ nhánh .................................................................................... 76
5.3. Bài tập ........................................................................................................... 80
Bài 6: THỰC HÀNH VỀ VÀO RA DỮ LIỆU VÀ CẤU TRÚC RẼ NHÁNH ................................... 81
Bài 7: MỘT SỐ CẤU TRÚC LẶP VÀ LỆNH ðIỀU KHIỂN ....................................................... 82
7.1. Cấu trúc lặp while ......................................................................................... 82
7.2. Cấu trúc lặp do .. while ................................................................................. 83
7.3. Cấu trúc lặp for.............................................................................................. 84
7.4. Break, continue, return .................................................................................. 86
7.5. Bài tập ........................................................................................................... 88
BÀI 8: BÀI TẬP VỀ CÁC CẤU TRÚC ðIỀU KHIỂN ............................................................... 90
Bài 9: THỰC HÀNH VỀ CẤU TRÚC LẶP .............................................................................. 91
Bài 10: CHƯƠNG TRÌNH CON ............................................................................................. 91
10.1. ðặt vấn ñề ................................................................................................... 91
10.2. Ví dụ về một chương trình có sử dụng chương trình con ............................ 91
10.3. Phạm vi hoạt ñộng của biến ........................................................................ 92
10.4. Cấu trúc một chương trình con .................................................................... 95
10.5. Truyền tham số cho chương trình con ......................................................... 96
10.6. Nguyên tắc hoạt ñộng của chương trình con ............................................... 97
10.7. Nguyên tắc sử dụng chương trình con ......................................................... 97
Bài 11: THỰC HÀNH VỀ CHƯƠNG TRÌNH CON .................................................................... 99
ðề cương Tin học ñại cương --------- ñào tạo tín chỉ
Khoa CNTT – Trường ðHSP Kỹ thuật Hưng Yên Trang 3
Bài 12: THI GIỮA KỲ .......................................................................................................... 99
Bài 13: KIỂU DỮ LIỆU MẢNG ............................................................................................. 99
13.1 Kiểu dữ diệu mảng một chiều ..................................................................... 99
13.2 Kiểu dữ diệu mảng hai chiều ..................................................................... 105
13.3. Bài tập ....................................................................................................... 109
Bài 14: BÀI TẬP VỀ MẢNG VÀ CHƯƠNG TRÌNH CON ...................................................... 111
Bài 15: THỰC HÀNH VỀ KIỂU DỮ LIỆU MẢNG .................................................................. 113
Sinh viên thực hành theo sự hướng dẫn của giáo viên .................................................... 113
Bài 16: KIỂU DỮ LIỆU CON TRỎ ...................................................................................... 113
16.1. Khái niệm và cách khai báo con trỏ ............................................................... 113
16.2. Con trỏ và cách sử dụng ............................................................................... 114
16.3. Các phép toán trên con trỏ ............................................................................ 116
16.4. Các kiểu con trỏ ........................................................................................... 117
16.5. Liên hệ giữa con trỏ và mảng ........................................................................ 117
16.6. XÂU KÝ TỰ .............................................................................................. 120
16.7. Bài tập ........................................................................................................ 128
Bài 17: THỰC HÀNH VỀ KIỂU DỮ LIỆU CON TRỎ.............................................................. 129
ðề cương Tin học ñại cương --------- ñào tạo tín chỉ
BÀI 1: THÔNG TIN VÀ XỬ LÝ THÔNG TIN - HỆ THỐNG TÍNH TOÁN
VÀ BIỂU DIỄN THÔNG TIN TRONG MÁY TÍNH
1.1 Thông tin và xử lý thông tin, hệ thống tính toán và biểu diễn thông tin trong máy
tính
1.1.1. Thông tin
1.1.1.1. Khái niệm về thông tin
Thông tin (informations) là một khái niệm ñược sử dụng thường ngày. Con người có
nhu cầu ñọc báo, nghe ñài, xem phim, video, ñi tham quan, du lịch, tham khảo ý kiến
người khác, ... ñể nhận ñược thêm thông tin mới. Thông tin mang lại cho con người sự hiểu
biết, nhận thức tốt hơn về những ñối tượng trong ñời sống xã hội, trong thiên nhiên, ... giúp
cho họ thực hiện hợp lý công việc cần làm ñể ñạt tới mục ñích một cách tốt
nhất.
Những ñám mây ñen ñùn lên ở chân trời phía ñông cũng chứa ñựng thông
tin báo hiệu về trận mưa lớn sắp xảy ra. Màu ñen của mây, tốc ñộ vận
chuyển của mây chứa các thông tin về khí tượng.
Biểu ñồ thống kê sản phẩm hàng tháng của từng phân xưởng bánh kẹo
chứa ñựng các thông tin về năng suất lao ñộng, về mức ñộ thực hiện kế hoạch sản xuất của
phân xưởng ñó. Nốt nhạc trong bản sô-nát ánh trăng của Beethoven làm cho người nghe
cảm thấy ñược sự tươi mát, êm dịu của ñêm trăng. Những thông tin về cảm xúc của tác giả
ñó ñược truyền ñạt lại.
Khi tiếp nhận ñược thông tin, con người thường phải xử lý nó ñể tạo ra những
thông tin mới, có ích hơn, từ ñó có những phản ứng nhất ñịnh. Người tài xế chăm chú quan
sát người, xe cộ ñi lại trên ñường, ñộ tốt xấu mặt ñường, tính năng kỹ thuật cũng như vị trí
của chiếc xe ñể quyết ñịnh, cần tăng tốc ñộ hay hãm phanh, cần bẻ lái sang trái hay sang
phải... nhằm ñảm bảo an toàn tối ña cho chuyến xe ñi.
Thông tin có thể ñược phát sinh, ñược lưu trữ, ñược truyền, ñược tìm kiếm, ñược
sao chép, ñược xử lý, nhân bản. Thông tin cũng có thể biến dạng, sai lệch hoặc bị phá hủy.
1.1.1.2. ðơn vị ño thông tin
Thông tin cũng có thể ño ñược. ðơn vị ño thông tin gọi là bit. Lượng thông tin chứa
trong một bít là vừa ñủ ñể nhận biết một trong hai trạng thái của một biến cố có xác xuất
xuất hiện như nhau.
Trong số học nhị phân mà ta sẽ giới thiệu sau này chỉ sử dụng hai chữ số là chữ số 0
và chữ số 1. Khả năng hai chữ số ñó ñược sử dụng là như nhau. Tại mỗi thời ñiểm, trong
một bít chỉ lưu trữ ñược hoặc là chữ số 0 hoặc là chữ số 1. Từ bít là viết tắt của Binary
digit (chữ số nhị phân).
Trong tin học ta thường dùng một số ñơn vị bội của bít sau ñây:
ðề cương Tin học ñại cương
Tên gọi
Byte
Kilobyte
Megabyte
Gigabyte
Terabyte
1.1.1.3. Khái niệm về dữ liệu
Dữ liệu (data) là khái ni
dữ liệu người ta xử lý ñể có thông tin.
Thông tin và dữ liệu khác nhau c
liệu là những dữ kiện không có cấu trúc v
chức và xử lý.
Cùng một thông tin có thể biểu diễn bằng những dữ liệu khác nhau.
Ví dụ: Cùng ñể biểu diễn 1 ñ
trong hệ ñếm La Mã thì lại d
Chú ý: Trong thực tế cuộc sống ng
giống nhau.
1.2. 1.1.2. Xử lý thông tin
1.2.1.1. Sơ ñồ tổng quát của quá tr
Mọi quá trình xử lý thông tin bằng máy tính hay
theo một quy trình sau:
Dữ liệu (data) ñược nhập ở ñầu v
trình xử lý nào ñó ñể nhân ñ
và xuất thông tin ñều có thể ñ
Hình 1.1. Mô hình t
1.1.2.2 Xử lý thông tin bằng MTðT
Quá trình xử lý thông tin tr
tay (trên giấy, với bút, bàn tính ...). Do v
hiện việc xử lý thủ công nói chung:
--------- ñào tạo tín chỉ
Viết tắt Giá trị
B 8 Bit
KB 1024 byte =210B
MB 1024KB = 210KB
GB 1024MB = 210MB
TB 1024GB = 210TB
ệm rộng hơn của thông tin, nó là nguồn gốc của thông tin, từ
ơ bản ở chỗ: Thông tin chứa ñựng ý nghĩa, c
à không có ý nghĩa rõ ràng nếu nó không ñ
ơn vị thì trong hệ ñếm thập phân biểu diễn l
ùng kí hiệu I….
ười ta sử dụng 2 khái niệm thông tin v
ình xử lý thông tin
bằng con người ñều ñ
ào (input). Máy tính hay con người sẽ thực hiện quá
ược thông tin ở ñầu ra (output). Quá trình nh
ược lưu trữ.
ổng quát quá trình xử lý thông tin
ên máy tính ñiện tử (MTðT) cũng tương t
ậy trước hết ta phải lưu ý một số ñiểm khi thực
òn dữ
ược tổ
à ‘1’ còn
à dữ liệu
ược thực hiện
ập dữ liệu, xử lý
ự như làm bằng
ðề cương Tin học ñại cương --------- ñào tạo tín chỉ
Khoa CNTT – Trường ðHSP Kỹ thuật Hưng Yên Trang 6
ðể mô tả cách thức xử lý, dữ liệu vào, các kết quả trung gian và kết quả cuối cùng
con người cần phải sử dụng một số công cụ nhất ñịnh như: giấy, bút, ... và trí nhớ của con
người.
- Cần sử dụng một số công cụ nào ñó như: bàn gẩy, thước tính, ... ñể thực hiện các
phép toán.
- Quá trình thực hiện mỗi phép toán nói chung ñều qua các bước sau: chọn giá trị vào
(các giá trị, các toán hạng tham gia phép toán), thực hiện phép toán và ghi nhớ kết quả
phép toán lên một giá mang tin nào ñó.
- Con người trực tiếp xác ñịnh trình tự thực hiện liên tiếp các phép toán trong từng
thời ñiểm của toàn bộ quá trình xử lý.
MTðT là công cụ xử lý thông tin tự ñộng, không cần sự tham gia trực tiếp của con
người. Tuy nhiên, MTðT tự nó không thể quyết ñịnh ñược khi nào thì phải làm gì, cộng
hay trừ, nhân hay chia, các dữ liệu tham gia xử lý sẽ lấy ở ñâu ... ðể làm ñược ñiều ñó con
người cần phải cung cấp ñầy ñủ ngay từ ñầu cho MTðT các mã lệnh, chỉ thị (tất nhiên phải
bằng ngôn ngữ mà máy có thể “hiểu” ñược) ñể hướng dẫn MTðT thực hiện công việc theo
ñúng yêu cầu do con người ñề ra cho nó. Tập hợp các chỉ thị như vậy ñược con người soạn
thảo bằng một ngôn ngữ mà máy hiểu ñược gọi là chương trình và ñược lưu trữ trong bộ
nhớ của máy. Chương trình ñó sẽ thay cho con người ñể ñiều khiển MTðT làm việc.
Tương ứng với hai lớp thông tin liên tục và rời rạc, máy tính ñược chia thành hai loại.
MTðT xử lý thông tin liên tục gọi là máy tính tương tự (Analog computer), còn máy tính
xử lý thông tin rời rạc gọi là máy tính số (Digital computer). Máy tính số cũng có thể
dùng ñể xử lý thông tin liên tục, nếu nó ñược trang bị thêm thiết bị bién ñổi thông tin từ
dạng liên tục sang dạng số (trước khi xử lý) và thiết bị biến ñổi thông tin từ dạng rời rạc
sang dạng liên tục (sau khi xử lý) ñể ñưa ra môi trường ngoài.
Lược ñồ cấu trúc kiểu xử lý như vậy ñược mô tả ở hình sau:
Trong ñó: A: Kí hiệu thông tin dạng liên tục.
D: Kí hiệu thông tin rời rạc.
A/D: Kí hiệu thiết bị biến ñổi “ Liên tục thành rời rạc”.
D/A: Kí hiệu thiết bị biến ñổi ngược lại.
MTðT có cả các ñặc tính của máy tính tương tự và số ñược gọi là máy tính lai
(Hybrit computer). Trong giáo trình này ta chỉ xét loại máy tính số, do vậy từ ñây thuật
ngữ MTðT ñược hiểu là máy tính số.
Quá trình xử lý thông tin bằng MTðT diễn ra nhờ thực hiện một dãy các phép toán
cơ sở (cộng, trừ, nhân, chia số học và logic, ...) trên các dữ liệu ñược lưu trữ trong một
MÁY TÍNH SỐ
D
A/D
D
D/A
ðề cương Tin học ñại cương --------- ñào tạo tín chỉ
Khoa CNTT – Trường ðHSP Kỹ thuật Hưng Yên Trang 7
khối chức năng gọi là bộ nhớ. Bộ nhớ là giá mang thông tin của MTðT. ðể thiết lập thứ tự
thực hiện các phép toán cơ sở và ñiều khiển toàn bộ quá trình xử lý, MTðT có một khối
chức năng gọi là bộ ñiều khiển. Một khối chức năng khác là bộ số học và logic ñược dùng
ñể thực hiện các phép toán cơ sở. Mỗi MTðT có thể thực hiện một số phép toán cơ sở nhất
ñịnh nào ñó. ðể mô tả một phép toán cơ sở, người ta dùng một lệnh tương ứng. Tập các
lệnh gọi là hệ lệnh của máy. Mỗi loại (họ) máy có hệ lệnh riêng của nó. Dãy các lệnh dược
xây dựng nhằm xác ñịnh trật tự và thực hiện một yêu cầu cụ thể nào ñó gọi là chương trình
(Program). Công việc tạo ra chương trình gọi là lập trình (Programing).
Hình 1.1. Hình ảnh minh hoạ câu lệnh và chương trình.
Tóm lại MTðT xử lý dữ liệu dựa trên những chỉ dẫn ñưa vào, không cần phải nói,
những chỉ dẫn ñó phải có nghĩa và hoàn chỉnh. Ngoài ra chúng phải:
1. Có tính tuần tự.
2. Có giới hạn.
3. Chính xác.
Và MTðT hoạt ñộng theo nguyên tắc: “ Tự ñộng ñiều khiển bằng chương trình ”.
Ta có thể minh hoạ quá trình xử lý dữ liệu trong MTðT bằng lược ñồ ở hình dưới
ñây:
Hình 1.2. Quá trình xử lý dữ liệu trong MTðT.
Cụ thể hơn, giả sử ta có dữ liệu vào là X cần xử lý. Bằng một công cụ tính toán không
phải là MTðT, con người có thể thực hiện tính toán theo một giải thuật f ñể thu ñược kết
quả Y. Quá trình xử lý ñó khi sử dụng MTðT ñược tiến hành tự ñộng như sau: Mã hoá X
nhờ phép mã hoá C ñể thu ñược mã x (ðiều quan trọng luôn luôn ghi nhớ là MTðT chỉ xử
lý trực tiếp với dữ liệu ở mã nhị phân nên mã x là ở dạng nhị phân). Thay cho giải thuật
MTðT Kết quả
Chương trình
Dữ liệu vào
Software
Program
2
Program
1
Commands Commands
Commands
ðề cương Tin học ñại cương --------- ñào tạo tín chỉ
Khoa CNTT – Trường ðHSP Kỹ thuật Hưng Yên Trang 8
(tập các quy tắc xử lý) f MTðT xử lý tự ñộng dữ liệu x theo sự ñiều khiển của chương
trình P do con người lập ra và lưu trữ sẵn trong bộ nhớ của máy tính. Sau khi chương trình
P thực hiện xong, ta thu ñược kết quả Y (mã Y ở trong dạng nhị phân). Nhờ phép giải mã
C-1 ta thu ñược kết quả phải tìm Y (dưới dạng biểu diễn thông dụng mà con người quen
dùng).
Sự tương ứng hai cách xử lý có thể mô tả như hình vẽ dưới ñây:
Ta có thể tóm tắt một quá trình xử lý dữ liệu bằng MTðT thường ñược tiến hành qua
các bước chính sau:
- Trước hết, ñưa chương trình cần thực hiện (do người lập sẵn) vào bộ nhớ của
máy.
- Theo các chỉ dẫn của chương trình:
+ Máy bắt ñầu xử lý, dữ liệu ñược nhập từ môi trường ngoài vào bộ nhớ
thông qua thiết bị nhập dữ liệu.
+ Máy thao tác dữ liệu và ghi kết quả trong bộ nhớ.
+ ðưa kết quả từ bộ nhớ ra môi trường ngoài thông qua thiết bị xuất dữ
liệu.
Hoạt ñộng trên của MTðT ñược thực hiện dựa trên nguyên lý do Von Neumann ñề
xuất năm 1946. Nội dung nguyên lý thể hiện:
- ðiều khiển chương trình: MTðT hoạt ñộng theo sự chỉ dẫn, ñiều khiển của chương
trình lưu trữ trong bộ nhớ của nó. Các bước tác ñộng ñược tiến hành theo các lệnh của
chương trình. Chương trình chỉ dẫn cho MTðT biết phải làm gì và phải làm như thế nào.
- Truy nhập theo ñịa chỉ: Như ñã biết, dữ liệu theo nghĩa rộng (dữ liệu vào, kết quả
trung gian, kết quả cuối cùng, chương trình ...) ñược lưu trữ trong bộ nhớ trong, những
vùng nhớ ñược ñịnh vị bằng các số mà ta gọi là ñịa chỉ. Trong chương trình, dữ liệu ñược
chỉ ñịnh thông qua ñịa chỉ. Như vậy việc truy nhập tới dữ liệu là gián tiếp.
Hai nội dung trên là cơ sở ñảm bảo cho MTðT thực hiện ñược chức năng xử lý thông
tin một cách tự ñộng.
y
MTðT x
C
X
Y
C-1
P
f
ðề cương Tin học ñại cương --------- ñào tạo tín chỉ
Khoa CNTT – Trường ðHSP Kỹ thuật Hưng Yên Trang 9
1.3. 1.1.3. Hệ thống tính toán và biểu diễn thông tin trong máy tính
1.3.1. 1.1.3.1. Biểu diễn thông tin trong các hệ ñếm
ðể có cơ sở hình dung quá trình xử lý dữ liệu xảy ra bên trong MTðT như thế nào,
trước hết chúng ta xét các hệ ñếm.
Hệ ñếm là tập hợp các ký hiệu và qui tắc sử dụng tập ký hiệu ñó ñể biểu diễn và xác
ñịnh các giá trị các số. Mỗi hệ ñếm có một số ký số (digits) hữu hạn. Tổng số ký số của mỗi
hệ ñếm ñược gọi là cơ số (base hay radix), kí hiệu là b.
Trong ngành toán - tin học hiện nay phổ biến 4 hệ ñếm là hệ thập phân, hệ nhị phân,
hệ bát phân và hệ thập lục phân.
1.3.2. 1.1.3.2. Hệ ñếm thập phân (Decimal system, b=10)
Hệ ñếm thập phân hay hệ ñếm cơ số 10 là một trong các phát minh của người Ả rập
cổ, bao gồm 10 ký số theo ký hiệu sau: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Qui tắc tính giá trị của hệ ñếm này là mỗi ñơn vị ở một hàng bất kỳ có giá trị bằng 10
ñơn vị của hàng kế cận bên phải. Ở ñây b=10. Bất kỳ số nguyên dương trong hệ thập phân
có thể biểu diễn như là một tổng các số hạng, mỗi số hạng là tích của một số với 10 lũy
thừa, trong ñó số mũ lũy thừa ñược tăng thêm 1 ñơn vị kể từ số mũ lũy thừa phía bên phải
nó. Số mũ lũy thừa của hàng ñơn vị trong hệ thập phân là 0.
Ví dụ: Số 5246 có thể ñược biểu diễn như sau:
5246 = 5 x 103 + 2 x 102 + 4 x 101 + 6 x 100
= 5 x 1000 + 2 x 100 + 4 x 10 + 6 x 1
Thể hiện như trên gọi là ký hiệu mở rộng của số nguyên. Vì
5246 = 5000 + 200 + 40 + 6
Như vậy, trong số 5246 : ký số 6 trong số nguyên ñại diện cho giá trị 6 ñơn vị (1s), ký
số 4 ñại diện cho giá trị 4 chục (10s), ký số 2 ñại diện cho giá trị 2 trăm (100s) và ký số 5
ñại diện cho giá trị 5 ngàn (1000s). Nghĩa là, số lũy thừa của 10 tăng dần 1 ñơn vị từ trái
sang phải tương ứng với vị trí ký hiệu số,
100 = 1 101 = 10 102 = 100 103 = 1000 104 = 10000 ...
Mỗi ký số ở thứ tự khác nhau trong số sẽ có giá trị khác nhau, ta gọi là giá trị vị trí
(place value).
Phần thập phân trong hệ thập phân sau dấu chấm phân cách thập phân (theo qui ước
của Mỹ) thể hiện trong ký hiệu mở rộng bởi 10 lũy thừa âm tính từ phải sang trái kể từ dấu
chấm phân cách.
1.1.3.3. Hệ ñếm nhị phân (Binary system, b=2)
Với b=2, chúng ta có hệ ñếm nhị ph