Tài liệu học tập Tin học cơ sở
Mục tiêu của chương
Nắm vững:
- Các khái niệm về định nghĩa thông tin, vật mang tin và các lĩnh vực nghiên cứu
của tin học.
- Cấu tạo và chức năng của máy vi tính.
- Các hệ đếm, cách chuyển đổi giữa các hệ đếm, và các phép toán số học và logic
ứng dụng trong tin học.
- Vận dụng lý thuyết làm thành thạo các bài tập về chuyển đổi giữa các hệ đếm.
Nội dung của chương
Nghiên cứu một số khái niệm về thông tin, cách chuyển đổi giữa các hệ đếm, cấu
trúc cơ bản của máy tính điện tử cũng như chức năng và hoạt động của thành phần trong
máy tính.
1.1. Thông tin và xử lý thông tin
1.1.1. Khái niệm về thông tin (Information)
Thông tin là nguồn gốc của nhận thức, hiểu biết. Thông tin có thể phát sinh, mã
hóa, truyền, tìm kiếm, xử lý, biến dạng. và được thể hiện dưới nhiều dạng khác nhau.
Thông tin được thể hiện dưới nhiều hình thức khác nhau như sóng ánh sáng, sóng
điện từ, các ký hiệu viết trên giấy . vv. Về nguyên tắc, bất kỳ cấu trúc vật chất nào hoặc
bất kỳ dòng năng lượng nào cũng có thể mang thông tin. Chúng được gọi là những vật
mang tin (giá mang tin).
Thông tin chứa đựng ý nghĩa, còn dữ liệu là các dữ kiện không có cấu trúc và
không có ý nghĩa rõ ràng nếu nó không được tổ chức và xử lý. Cùng một thông tin, có thể
được biểu diễn bằng những dữ liệu khác nhau. Cùng biểu diễn một đơn vị, nhưng trong
chữ số thập phân ta cùng ký hiệu 1, còn trong hệ đếm La Mã lại dùng ký hiệu I. Mỗi dữ
liệu lại có thể được thể hiện bằng những ký hiệu vật lý khác nhau.
Dữ liệu (data) là hình thức thể hiện của thông tin trong mục đích lưu trữ và xử lý
nhất định. Khái niệm dữ liệu xuất hiện cùng với việc xử lý thông tin bằng máy tính. Vì
thế trong nhiều tài liệu người ta định nghĩa dữ liệu là đối tượng xử lý của máy tính.
Thông tin luôn mang một ý nghĩa xác định nhưng hình thức thể hiện của thông tin rõ ràng
mang tính quy ước.
Tri thức (knowledge) có ý nghĩa khái quát hơn thông tin. Những nhận thức thu
nhận được từ nhiều thông tin trong một lĩnh vực cụ thể nào đó, có tính hướng mục đích
mới trở thành tri thức. Như vậy tri thức là mục đích của nhận thức trên cơ sở tiếp nhận
thông tin. Quá trình xử lý thông tin chính là quá trình nhận thức để có tri thức.2
1.1.2. Đơn vị đo thông tin
Trong kỹ thuật máy tính người ta dùng hai ký tự 0 và 1 để lưu trữ và xử lý thông
tin. Ký tự 1 tương ứng với một bóng đèn sáng hoặc một phần tử kim loại được nhiễm từ
tính, ký tự 0 tương ứng với một bóng đèn tắt hoặc một phần tử kim loại không nhiễm từ
tính. Mỗi ký tự 0 và 1 tương ứng với một đơn vị nhỏ nhất của thông tin được gọi là bit.
Ngoài ra còn các đơn vị khác như sau:
Đơn vị Ký hiệu Biểu diễn
Byte B 1byte=8 bit
Kilo Byte KB 1KB=210B
Mega Byte MB 1MB=210KB
Giga Byte GB 1GB=210MB
Tera Byte TB 1TB=210GB
Peta Byte PB 1PB=210TB
Để trao đổi thông tin trên máy vi tính, người ta dùng bộ mã chuẩn ASCII
(American Standard Code for Information Interchange). Mỗi ký tự được mã hoá bằng
một byte. Bảng mã ASCII có thể mã hoá 256 ký tự. Tuy nhiên số ký tự cơ bản chỉ gói
gọn trong 128 số đầu. Còn 128 ký tự sau (từ 128 đến 255) được gọi là phần mã mở rộng
và được dùng để mã hoá các ký tự riêng của một số ngôn ngữ (ví dụ như các ký tự có dấu
của Tiếng Việt), các ký tự toán học, các ký tự đồ hoạ.
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Trang 8
Trang 9
Trang 10
Tải về để xem bản đầy đủ
Tóm tắt nội dung tài liệu: Tài liệu học tập Tin học cơ sở
} // định nghĩa hàm // x, y là các tham số hình thức. 155 Ví dụ 9.2b: #include using namespace std; int phepnhan(int x, int y); // x, y là các tham số hình thức. int main () { int r; r = phepnhan(7,3); // 7,3 là các tham số thật sự. cout << "Ket qua la " << r; return 0; } 9.3. Cấp phát và phạm vi hoạt động của các biến Một biến có thể được gán cho một bí danh mới, và khi đó chỗ nào xuất hiện biến thì cũng tương đương như dùng bí danh và ngược lại. Một bí danh như vậy được gọi là một biến tham chiếu, ý nghĩa thực tế của nó là cho phép "tham chiếu" tới một biến khác cùng kiểu của nó, tức sử dụng biến khác nhưng bằng tên của biến tham chiếu. Có các loại biến sau: - Biến thường với tên thường. - Biến con trỏ với dấu * trước tên. - Biến tham chiếu với dấu &. Cú pháp khai báo & = ; Ý nghĩa: khai báo trên cho phép người sử dụng tạo ra một biến tham chiếu mới và cho nó tham chiếu đến biến được tham chiếu (cùng kiểu và phải được khai báo từ trước). Khi đó biến tham chiếu còn được gọi là bí danh của biến được tham chiếu. int phepnhan(int x, int y) { int z; z = a*b; return (z); } // định nghĩa hàm 156 Chú ý: không có cú pháp khai báo chỉ tên biến tham chiếu mà không kèm theo khởi tạo. a. Phạm vi hoạt động của các biến - Biến toàn cục được khai báo bên ngoài tất cả các hàm. - Biến cục bộ được khai báo bên trong một hàm hoặc một khối lệnh. - Sau khi được khai báo, biến toàn cục có thể sử dụng ở bất cứ vị trí nào trong chương trình - Phạm vi của biến cục bộ chỉ giới hạn trong khối lệnh (trong cặp {}) nơi nó được khai báo. Ví dụ 9.3: Minh họa biến toàn cục, biến cục bộ. #include using namespace std; int x =10; int y=5; // x, y là biến toàn cục. int phepcong(int a, int b) { // a, b là biến cục bộ. int r; // r là biến cục bộ. r = a+b; return r; } int pheptru(int a, int b) { // a, b là biến cục bộ. int r; // r là biến cục bộ. r = a - b; return r; } int main () { cout << phepcong(x,y) ; cout << pheptru(x,y) ; return 0; } b. Phạm vi và vòng đời của các biến - Đa số các biến có phạm vi cục bộ. - Các khai báo hàm thường có phạm vi toàn cục. - Các hằng thường được khai báo ở phạm vi toàn cục. Ví dụ 9.4a: Tính diện tích hình tròn. #include using namespace std; 157 const double pi=3.14; int main () { double r = 7.0; double dientich; dientich = pi*r*r; cout << dientich; return 0; } Vòng đời là khoảng thời gian thuật toán có thể thực hiện đọc/ghi giá trị cho biến. Ví dụ 9.4b: Minh họa vòng đời các biến. int x; cin >> x ; // Nhập giá trị cho x { int y = 2 ; if (x == 3) { int z = 4; } } Kết quả chương trình: Vòng đời của x: từ dòng 1 đến dòng 9. Vòng đời của y: từ dòng 4 đến dòng 9. Vòng đời của z: z chỉ có vòng đời khi x=3. c. Các cách truyền tham số Truyền theo tham trị Truyền theo tham trị: truyền giá trị cho các tham số hình thức. Trong phương pháp này, chương trình dịch cấp phát vùng nhớ riêng cho từng tham số hình thức, sau đó sao chép giá trị của tham số thực tương ứng vào các tham số hình thức. Sau khi kết thúc thực hiện hàm, chương trình dịch sẽ thu hồi các vùng nhớ đã cấp phát cho các tham số hình thức, và các biến cục bộ khai báo bên trong hàm. Như vậy, mọi sự thay đổi trị của các tham số hình thức đều không ảnh hưởng đến các tham số thực bên ngoài hàm. 158 Truyền theo tham biến Truyền theo tham biến (còn gọi là truyền bằng địa chỉ): truyền nơi lưu trữ trong bộ nhớ của các biến thực sự cho các biến tham chiếu. Chương trình dịch sẽ truyền địa chỉ của các tham số thực tương ứng cho các tham số hình thức. Hay nói cách khác tham số hình thức là tên gọi khác của tham số thực. Như vậy, mọi sự thay đổi giá trị của tham số hình thức bên trong hàm chính là thay đổi giá trị của tham số thực bên ngoài hàm. Để phân biệt cách truyền tham chiếu, với cách truyền tham trị, ta đặt kí hiệu & trước tên biến hình thức. Ví dụ 9.5a: Đổi chỗ giá trị 2 biến. void doicho(int &x, int &y) { int t = x; x = y; y = t; } Ví dụ 9.5b: Lời gọi hàm doicho int a = 5, b = 3; doicho(a, b); cout << a << b; 9.4. Hàm đệ quy 9.4.1. Khái niệm Đệ quy trong C++ là quá trình trong đó nếu hàm gọi lại chính nó thì ta gọi hàm là đệ qui. Cú pháp: kiểu_trả_về tên_ham() { // code ten_ham(); } Ví dụ 9.6: Viết chương trình tính giai thừa sử dụng hàm đệ quy. #include using namespace std; int giaithua(int n) { if (n == 0) 159 return 1; else return (n * giaithua(n - 1)); } int main() { cout > n; cout << giaithua(n); return 0; } Ví dụ 9.7: Tìm UCLN của 2 số a, b. Bài toán có thể được định nghĩa dưới dạng đệ qui như sau: − Nếu a = b thì UCLN = a − Nếu a > b thì UCLN(a, b) = UCLN(a-b, b) − Nếu a < b thì UCLN(a, b) = UCLN(a, b-a) Từ đó ta có chương trình đệ qui để tính UCLN của a và b như sau. int UCLN(int a, int b) // qui uoc a, b > 0 { if (a < b) UCLN(a, b-a); if (a == b) return a; if (a > b) UCLN(a-b, b); } Phương pháp đệ qui thường được dùng để giải các bài toán có đặc điểm: Bài toán giải có các trường hợp riêng gọi là trường hợp suy biến hay cơ sở, trong trường hợp này hàm được tính bình thường mà không cần gọi lại chính nó, Đối với trường hợp tổng quát, bài toán có thể giải được bằng bài toán cùng dạng nhưng với tham số khác có kích thước nhỏ hơn tham số ban đầu. Và sau một số bước hữu hạn biến đổi cùng dạng, bài toán đưa được về trường hợp suy biến. 160 9.4.2. Cấu trúc chung của hàm đệ qui Dạng thức chung của một chương trình đệ qui như sau: if (trường hợp suy biến) { trình bày cách giải // giả định đã có cách giải } else // trường hợp tổng quát { gọi lại hàm với tham số "bé" hơn } Ví dụ 9.7: Chương trình tính dãy số Fibonacci sử dụng phương pháp đệ quy. (Chỉ số của số Fibonacci tính từ 0, ví dụ: F0 = 0, F1 = 1, F2 = 1, F3 = 2) int fibonacci(int n) { if (n < 0) { return -1; } else if (n == 0 || n == 1) { return n; } else { return fibonacci(n - 1) + fibonacci(n - 2); } } int main() { int i; cout << "5 so dau tien cua day so Fibonacci: \n"; for (i = 0; i < 5; i++) { cout << fibonacci(i) << " "; } } 161 Câu hỏi ôn tập 1. Trình bày cách khai báo hàm, định nghĩa hàm, cách gọi hàm. 2. Trình bày các phương pháp truyền tham số cho hàm (truyền theo tham trị, truyền theo tham biến). 3. Trình bày khái niệm và cấu trúc chung của hàm đệ qui. Bài tập vận dụng 1. Viết hàm trả về phần nguyên của phép chia hai số nguyên. 2. Sử dụng hàm đệ quy viết chương trình nhập n từ bàn phím (n nguyên, dương), tính tổng S(n) = 1 + 2 ++ n. 3. Viết hàm đệ quy tính tổng chẵn S(n) = 2 + 4 ++ 2n với (n nguyên, dương). Viết chương trình cho phép nhập n từ bàn phím sau đó gọi hàm tính tổng chẵn để xuất kết quả ra màn hình. 4. Viết hàm đệ quy tính tích S(n) = 1 x 2 xx n, với (n nguyên, dương). Viết chương trình cho phép nhập n từ bàn phím sau đó gọi hàm tính tích để xuất kết quả ra màn hình. 5. Cho trước số tự nhiên n. Viết hàm kiểm tra số n có phải là số đối xứng hay không. 162 TÀI LIỆU THAM KHẢO [1]. Bùi Thế Tâm, Giáo trình tin học Đại cương, nhà xuất bản Giao thông vận tải năm 2005. [2]. Phạm Hồng Thái, “Bài giảng ngôn ngữ lập trình C++”, Đại học quốc gia Hà nội, năm 2003. [3]. PGS.TS. Trần Đình Quế và KS. Nguyễn Mạnh Hùng, Ngôn ngữ lập trình C++, Học viện bưu chính viễn thông, năm 2006. [4]. Joel Adams & Larry Nyhoff, “C++ An Introduction to Computing”, Prentice Hall 2002, Third Edition. [5]. By H. M. Deitel, P. J. Deitel, “C++ How to Program”- Fourth Edition, Prentice Hall, New Jersey, 2003, ISBN: 0-13-038474. [6]. David Vandevoorde, Nicolai M. Josuttis and Douglas Gregor, “C++ Templates: The Complete Guide 2nd Edition”, Addison-Wesley Professional; 2 edition, September 18, 2017. [7]. Published by Microsoft Press, “Introducing Windows 10 for IT Professionals Preview Edition”, Copyright 2015 © Microsoft Corporation . [8]. Published by John Wiley & Sons, Inc, “Windows 10 for dummier”, 111 River Street, Hoboken, NJ 07030‐ 5774, www.wiley.com. [9]. Joel Adams & Larry Nyhoff, “C++ An Introduction to Computing”, Prentice Hall 2002, Third Edition. 163 PHỤ LỤC 1 Phần phụ lục này sẽ giới thiệu cho người sử dụng về cách cài đặt, khởi động và sử dụng Turbo C++ IDE để soạn thảo, biên dịch, bắt lỗi, và thực thi các chương trình C++. Cài đặt và khởi động Turbo C Người sử dụng phải sử dụng trình INSTALL để cài đặt Turbo C++. Tất cả các tập tin cài đặt sẽ được giải nén và chép tới hệ thống máy tính của người sử dụng một cách thích hợp. người sử dụng không thể thực hiện việc này thủ công được. Để bắt đầu cài đặt, chuyển đến thư mục chứa bộ nguồn cài đặt và kích hoạt trình INSTALL để tiến hành cài đặt. Trình INSTALL cài cả hai trình biên dịch và các công cụ vào hệ thống của bạn. Thư mục mặc định của Turbo C++ là C:\TC. Để khởi động chương trình Turbo C++ người sử dụng chuyển vào thư mục C:\TC\BIN và kích hoạt TC.exe. Tuy nhiên để có thể khởi động nhanh ta có thể tạo một shortcut đến C:\TC\Bin\TC.exe như hình A.1 sau. 164 Turbo C++ IDE Turbo C++ IDE cung cấp mọi thứ mà người sử dụng cần để viết, soạn thảo, biên dịch, quản lý, chạy, liên kết, và bắt lỗi chương trình. Thanh trình đơn ngang ở đỉnh của màn hình cho phép người sử dụng thực hiện hầu hết các chức năng đã nêu. Người sử dụng có thể kích hoạt thanh trình đơn này bằng một trong hai cách: ƒ Nhấn phím F10, hoặc ƒ Kích chuột vào một vị trí bất kỳ trên thanh trình đơn này Thanh trình đơn ngang chứa lần lượt từ trái qua phải các trình đơn con sau: File, Edit, Search, Run, Compile, Debug, Project, Options, Window, và Help. Để chọn một trình đơn này người sử dụng có thể thực hiện một trong hai cách sau: Cách 1: ƒ - Kích hoạt thanh trình đơn ngang ƒ - Sử dụng phím mũi tên trái và phải để di chuyển khung sáng màu xanh đến trình đơn cần chọn 165 Cách 2: ƒ - Sử dụng phím nóng + . Trình đơn File Trình đơn này có thể được chọn thông qua tổ hợp phím +. Trình đơn này cung cấp những lệnh để tạo ra: - Những tập tin mới (File > New) - Mở những tập tin có sẵn (File > Open)ƒ - Lưu các tập tin đã soạn thảo (File > Save / Save As / Save All)ƒ - Chuyển thư mục (File > Change dir)ƒ - In các tập tin (File > Print)ƒ - Thoát tạm về DOS (File > DOS shell)ƒ - Thoát khỏi Turbo C++ (File > Quit) Khi người sử dụng chọn File>New, một cửa sổ soạn thảo mới với tên mặc định là NONAMExx.CPP (xx là thay cho số từ 00 đến 31). Cửa sổ này tự động kích hoạt để cho phép người sử dụng soạn thảo mã chương trình. Các tập tin NONAME được sử dụng như vùng soạn thảo tạm thời. Turbo C++ sẽ nhắc người sử dụng đặt tên cho tập tin khi bạn lưu tập tin đó. 166 Trình đơn Edit Trình đơn này có thể được chọn thông qua tổ hợp phím +. Trình đơn này cung cấp các lệnh để cắt, sao chép, và dán văn bản trong cửa sổ soạn thảo. Người sử dụng cũng có thể hủy bỏ các chuyển đổi và trở lại những chuyển đổi mà người sử dụng đã hủy bỏ. Người sử dụng có thể mở một cửa sổ lưu trữ tạm thời để xem hay soạn thảo nội dung của nó, và chép văn bản từ các cửa sổ thông điệp, xuất hay trợ giúp. Trình đơn Search Trình đơn này cung cấp những lệnh để tìm kiếm văn bản, khai báo hàm, và định vị lỗi trong các tập tin chương trình. 167 Trình đơn Run Trình đơn này cung cấp các lệnh để thực thi chương trình, bắt đầu và kết thúc các phần bắt lỗi được minh họa Người sử dụng chọn Run > Run hoặc nhấn tổ hợp phím Ctrl + F9 để thực thi chương trình bằng cách sử dụng bất kỳ đối số nào mà người sử dụng đã truyền cho nó trong lệnh Arguments. Nếu mã nguồn đã được sửa đổi từ lần biên dịch cuối cùng thì lệnh Run cũng triệu gọi Project Manager để biên dịch lại và liên kết với chương trình của người sử dụng. Người sử dụng cũng có thể chọn Run > Go to cursor hoặc nhấn phím F4 để cho chương trình chạy đến hàng mà con nháy đang định vị trong cửa sổ soạn thảo hiện tại. Nếu con nháy đang nằm ở hàng mà không chứa một lệnh có thể thực thi thì Turbo C++ sẽ hiển thị một cảnh báo. Để chạy chương trình của người sử dụng ở chế độ từng lệnh một thì có thể chọn Run > Trace into hoặc nhấn phím F7. Thanh sáng sẽ xuất hiện tại lệnh đang được thực hiện để giúp người sử dụng kiểm soát được quá trình thực thi của chương trình. Người sử dụng có thể sử dụng lệnh này lặp đi lặp lại nhiều lần đến khi lệnh cuối cùng trong chương trình được thực hiện thành công. Lệnh Run > Step over tương đương với nhấn phím F8 sẽ thực thi lệnh kế tiếp trong hàm hiện tại. Nó không dò theo những lời gọi hàm mức thấp hơn nên hữu dụng trong trường hợp người sử dụng muốn chạy hàm đang bắt lỗi mà không muốn rẽ sang những hàm khác. 168 Trình đơn Complie Người sử dụng sử dụng những lệnh trên trình đơn này để biên dịch chương trình trong cửa sổ soạn thảo đang hoạt động, hoặc tạo hoặc xây dựng dự án của mình. Để sử dụng các lệnh Compile, Make, Build, và Link thì phải có một tập tin đang mở trong cửa sổ soạn thảo đang hoạt động. Bên cạnh đó các lệnh Make, Build, Link đòi hỏi cần phải có một dự án đã được định nghĩa. Lệnh Run > Compile tương đương với nhấn tổ hợp phím Alt + F9 được sử dụng để biên dịch một tập tin .C hoặc .CPP sang một tập tin .OBJ. Khi Turbo C++ đang biên dịch thì một hộp trạng thái bật lên để hiển thị kết quả của việc biên dịch gồm có: số hàng đã biên dịch, số lỗi và cảnh báo, và bộ nhớ sẵn dùng. Khi quá trình biên dịch kết thúc hãy nhấn một phím bất kỳ để loại bỏ hộp trạng thái này. Nếu có bất kỳ lỗi nào xảy ra thì cửa sổ Message được kích hoạt để hiển thị và tô sáng lỗi đầu tiên. 169 Trình đơn Debug Các lệnh trên trình đơn này điều khiển tất cả các đặc tính của trình bắt lỗi tích hợp. Người sử dụng có thể chỉ định thông tin bắt lỗi nào cần được phát ra, thông tin nào không cần được phát ra trong hộp thoại thông báo lỗi. Trình đơn Project Trình đơn này chứa đựng tất cả các lệnh quản lý dự án để thực hiện các công việc: ƒ Tạo ra và mở một dự án ƒ Thêm và xóa các tập tin trong dự án ƒ Thiết lập các tùy chọn cho một tập tin trong dự án ƒ Chỉ định các tập tin nguồn cần được dịch ƒ Xem các tập tin được chèn vào trong dự án 170 Trình đơn Options Trình đơn này chứa đựng các lệnh cho phép người sử dụng xem và chuyển đổi các thiết lập mặc định trong Turbo C++. 171 Trình đơn Window Trình đơn này chứa các lệnh để quản lý cửa sổ. Phần lớn các cửa sổ người sử dụng mở ra từ trình đơn này có tất cả các phần tử cơ bản của cửa sổ như thanh cuộn, một hộp đóng, và các biểu tượng phóng đại. 172 Trình đơn Help Trình đơn này cung cấp các chức năng trợ giúp hỗ trợ cho lập trình viên. Hệ thống trợ giúp cung cấp thông tin cho tất cả các khía cạnh của IDE và Turbo C++.
File đính kèm:
- tai_lieu_hoc_tap_tin_hoc_co_so.pdf