Giáo trình môn Nhập môn tin học
1.1.1. Khái niệm dữ liệu
Dữ liệu chính là thông tin đã được vật chất hóa, hay nói cách khác dữ liệu là một đại lượng vật lý mang tin, muốn có thông tin thì ta phải tập hợp và xử lý dữ liệu. Trong thực tế, dữ liệu có thể là các loại tín hiệu vật lý (sóng điện từ, sóng âm thanh, tín hiệu điện, ký tín ám hiệu ), có thể là các số liệu, hình ảnh, chữ viết Ví dụ khi người bạn của bạn đọc dòng thông báo về kết quả điểm thi của bạn trên màn hình, bạn đó sẽ cảm nhận được bạn là người học giỏi hay khá thông qua xử lý dòng thông báo trên màn hình trong não bộ.
Một ví dụ khác, bảng tính lương được lưu trữ trên máy tính, muốn lấy thông tin về những người có mức lương thấp hơn lương tối thiểu để có chính sách trợ cấp khó khăn thì phải qua một quá trình xử lý trên máy tính. Quá trình xử lý thông có thể là tìm kiếm lấy ra hay lọc theo một điều kiện nhất định hoặc có thể là giải mã dữ liệu đã được mã hóa
Cùng một thông tin, con người có thể biểu diễn thông tin này qua các đại lượng mang tin khác nhau, thể hiện qua các dạng dữ liệu khác nhau. Hay nói cách khác là thông tin nằm trong dữ liệu. Xử lý thông tin bao gồm nhiều quá trình xử lý dữ liệu để lấy ra thông tin hữu ích nhắm phục vụ đời sống con người.
Tóm tắt nội dung tài liệu: Giáo trình môn Nhập môn tin học
Mở đầu Tài liệu này được biên soạn nhằm sử dụng cho giảng dạy và học tập trong giai đoạn đầu khóa học để sinh viên cao đẳng và đại học có kiến thức cơ bản về máy tính, có khả năng sử dụng thành thạo máy tính, cũng như thực hiện sử dụng được phần mềm tin học văn phòng (Microsoft Office) và bước đầu có được cách tư duy lập trình rõ ràng mạch lạc. Cũng có thể làm tài liệu tham khảo cho sinh viên đại học khi học nhập môn tin học. Tài liệu gồm năm phần: Chương 1: Giới thiệu các khái niệm cơ bản giúp sinh viên nắm được tổng quan về nguyên lý làm việc của máy tính cũng như cách biểu diễn dữ liệu, lưu trữ thông tin trong máy tính, truyền thông nhờ máy tính (Dũng biên soạn chủ công). Chương 2: Hướng dẫn làm quen và sử dụng máy tính cài đặt hệ điều hành Windows XP, cùng với một số chương trình ứng dụng của Windows (Dũng có biên soạn bổ xung). Chương 3: Hướng dẫn sử dụng chương trình soạn thảo văn bản Microsoft Winword, giúp sinh viên có thể thực hiện trình bày hoàn chỉnh một tài liệu báo cáo luận văn, từ biên tập hình ảnh theo ý muốn đến định dạng văn bản tự động, tạo mục lục tự động (Dũng có biên soạn bổ xung) Chương 4: Trình bày cách thức tạo một bài báo cáo trình diễn sử dụng máy chiếu Project với chương trình phần mềm Microsoft PowerPoint cùng với các khái niệm liên quan (Dũng biên soạn). Chương 5: Là phần tài liệu tương đối đầy đủ và tuần tự để sinh viên có thể học và tự học lập trình PASCAL. Tài liệu bao gồm các khái niệm cơ bản, các chương trình ví dụ ứng dụng đã được biên soạn và thử nghiệm cùng nhiều bài tập cho sinh viên thực hành, rèn luyện tư duy và kỹ năng lập trình (Dũng có biên soạn bổ xung). Ngoài tính thiết thực với môn học như tiêu đề của tài liệu, chúng tôi mong rằng tài liệu này đáp ứng được một phần nào nhu cầu sử dụng máy tính ứng dụng trong thực tiễn của bạn đọc. Trong quá trình biên soạn, không tránh khỏi sai sót, rất mong sự thông cảm và đóng góp ý kiến bổ xung của các thầy cô giáo đồng nghiệp và của tất cả các bạn sinh viên, học sinh. Chúng tôi xin chân thành tiếp thu và cảm ơn. MỤC LỤC TỔNG QUAN VỀ MÁY TÍNH Các khái niệm cơ bản Thông tin – biểu diễn và xử lý thông tin Khái niệm thông tin Thông tin là một đại lượng phi vật chất, con người chỉ cảm nhận được thông qua thế giới khách quan. Xong thông tin có thể định lượng được, nếu xác suất xuất hiện tin càng thấp thì giá trị thông tin càng cao và ngược lại. Ví dụ khi ai đó thông báo cho bạn biết điểm thi của bạn mà bản thân bạn đã biết rồi thì giá trị thông tin đó bằng không (không có ý nghĩa với bạn) còn nếu tin đó đưa đến bạn trong trạng thái khắc khoải chờ đợi, nhất là khi bạn chưa rõ mình có đạt điểm qua hay không thì thông tin đó với bạn rất có ý nghĩa. Muốn truyền tải và lưu trữ thông tin thì chúng ta phải vật chất hóa thông tin bằng cách gửi thông tin qua một đại lượng vật lý nào đó. Ví dụ khi bạn muốn khoe với một người bạn về kết quả điểm thi của bạn qua mạng Internet thì thông tin cần thông báo đó phải được vật gửi qua tín hiệu điện (có thể là sóng điện từ). Khái niệm dữ liệu Dữ liệu chính là thông tin đã được vật chất hóa, hay nói cách khác dữ liệu là một đại lượng vật lý mang tin, muốn có thông tin thì ta phải tập hợp và xử lý dữ liệu. Trong thực tế, dữ liệu có thể là các loại tín hiệu vật lý (sóng điện từ, sóng âm thanh, tín hiệu điện, ký tín ám hiệu), có thể là các số liệu, hình ảnh, chữ viết Ví dụ khi người bạn của bạn đọc dòng thông báo về kết quả điểm thi của bạn trên màn hình, bạn đó sẽ cảm nhận được bạn là người học giỏi hay khá thông qua xử lý dòng thông báo trên màn hình trong não bộ. Một ví dụ khác, bảng tính lương được lưu trữ trên máy tính, muốn lấy thông tin về những người có mức lương thấp hơn lương tối thiểu để có chính sách trợ cấp khó khăn thì phải qua một quá trình xử lý trên máy tính. Quá trình xử lý thông có thể là tìm kiếm lấy ra hay lọc theo một điều kiện nhất định hoặc có thể là giải mã dữ liệu đã được mã hóa Cùng một thông tin, con người có thể biểu diễn thông tin này qua các đại lượng mang tin khác nhau, thể hiện qua các dạng dữ liệu khác nhau. Hay nói cách khác là thông tin nằm trong dữ liệu. Xử lý thông tin bao gồm nhiều quá trình xử lý dữ liệu để lấy ra thông tin hữu ích nhắm phục vụ đời sống con người. Biểu diễn thông tin trong máy tính Trong máy tính để biểu diễn một giá trị số, chúng ta dùng hệ cơ số 2 hoặc nói ngắn gọn hơn là hệ hai (Binary number system, viết tắt là hệ B). Trong đó chỉ tồn tại 2 chữ số 0 và 1 để biểu diễn các giá trị số (ứng với 2 trạng thái: không có điện và có điện). 0 và 1 cũng là các giá trị có thể có của một chữ số hệ hai (Binary digiT, viết tắt là bit). Tương ứng trong máy tính có 2 mức trạng thái của điện áp: Mức điện áp thấp (không có điện) tương ứng với giá trị 0 Mức điện áp cao (có điện) tương ứng với giá trị 1 Ví dụ chữ “A” được mã hóa trong máy tính như sau: 01000001(số nhị phân) ta có thể hình dung tương ứng với 8 bóng đèn xếp liên tiếp nhau mà trong đó có 2 bóng sáng và 6 bóng tắt theo các vị trí tương ứng. Bit là thuật ngữ được viết tắt của cụm từ binary digit. Mỗi một bit còn cho ta biết được trạng thái của một tín hiệu điện trên một đường dây tại một thời điểm: điện áp ở mức cao (có điện) là 1, điện áp ở mức thấp (không có điện) 0. Xử lý thông tin trên máy tính Dữ liệu có thể được phát sinh, được lưu trữ, được lan truyền, được tìm kiếm, được xử lý để cho ta thông tin. Thông tin làm tăng thêm hiẻu biết của con người, giúp nhận biết tốt hơn, đúng hơn về những hiện tượng, đối tượng trong đời sống xã hội, trong thiên nhiên, là nguồn gốc của nhận thức. Việc thu thập và xử lý thông tin giúp con người 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. Khi tiếp nhận được thông tin, con người cần phải xử lý, chắt lọc thông tin để tạo ra những thông tin mới có ích hơn từ đó đưa ra những phán quyết và ứng xử tốt nhất. Ví dụ, người lái xe trên đường chăm chú quan sát người, xe cộ đi lại, độ tốt xấu của mặt đường, căn cứ vào tính năng kỹ thuật hiện tại của xe cũng như vị trí của xe đang lái để quyết định cần tăng tốc hay giảm tốc độ, đánh tay lái sang phải hay sang trái nhằm đảm bảo an toàn và tiết kiệm tối đa cho chuyến đi. Với một quả trình xử lý, thông tin được vật chất hóa thành dữ liệu đầu vào dưới dạng đại lượng mang tin nào đó, qua quá trình xử lý có các kết quả trung gian và sau đó đưa ra 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, máy tính và cả bộ não tư duy của con người. Kết quả đầu ra của quá trình xử lý là thông tin mới được ghi nhớ trên một đại lượng mang tin nào đó, đại lượng mang tin có thể là vở ghi, dữ liệu lưu trữ trên máy tính ở dạng các tín hiệu điện 0/1. Trước đây khi thông tin còn ít, đơn giản, con người có thể tự mình xử lý dễ dàng thông qua các hình thức xử lý thủ công như giấy, bút, Ngày nay với sự phát triển của xã hội, thông tin ngày càng nhiều, ngày càng phức táp, với các hình thức xử lý thủ công con người không thể xử lý kịp thời theo yêu cầu. Máytính điện tử ra đời đã giúp cho con người có công cụ để xử lý thông tin một cách tự động, nhanh, đáp ứng kịp thời được yêu cầu nhiệm vụ, tiết kiệm nhiều thời gian và công sức. Tin học và công nghệ thông tin Tin học là ngành khoa học nghiên cứu các phương pháp, công nghệ và các kỹ thuật thu thập, tổ chức, xử lý và truyền đạt thông tin một cách tự động. Công nghệ thông tin là tập hợp các phương pháp khoa học, các phương tiện và công cụ kỹ thuật hiện đại – chủ yếu là kỹ thuật máy tính và viễn thông – nhằm tổ chức khai thác và sử dụng có hiệu quả các nguồn tài nguyên thông tin rất phong phú và tiềm năng trong mọi lĩnh vực hoạt động của con người và xã hội. Hệ đếm và các hệ đếm thường dùng trong tin học Hệ đếm cơ số a Một số ở hệ đếm cơ số a được biểu diễn dưới dạng sau: bn-1bn-2bn-3b1b0b-1b-2b-m Trong đó: a có thể là 2, 8, 10 , 16 và bi = 0 ¸ (a-1) Với số nguyên bn-1bn-2bn-3b1b0 thì bn-1 là số có trọng số cao nhất (trọng số n-1 – số nhiều ý nghĩa nhất) b0 là số có trọng số thấp nhất (trọng số 0 – số ít ý nghĩa nhất) Ví dụ, một số ở hệ cơ số 10 (a = 10, bi = 0 ¸ 9): 19072.4358 Có b4 = 1, b3 = 9, b2 = 0, b1 = 7, b0 = 2, b-1 = 4, b-2 = 3, b- 3 = 5, b-4 = 8. Trong thưc tế chúng ta thường sử dụng các số Hệ cơ số 2 (số nhị phân): có a = 2, bi = 0 ¸ 1 cuối chữ số có kèm theo chữ b/B, ví dụ 01000001b hay 01000001B hoặc có (2), ví dụ: 01000001(2) Hệ cơ số 8 (số bát phân): có a = 8, bi = 0 ¸ 7. cuối chữ số có (2), ví dụ: 126(8) Hệ cơ số 10 (số thập phân): có a = 10, bi = 0 ¸ 9. Số hệ 10 viết bình thường. Hệ cơ số 16 (số thập lục phân): có a = 16, bi = 0 ¸ 15. Số hệ 16 còn gọi là số hệ hex, các chữ số bi là 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. Trong đó: A biểu diễn cho giá trị chữ số bằng 10 B biểu diễn cho giá trị chữ số bằng 11 C biểu diễn cho giá trị chữ số bằng 12 D biểu diễn cho giá trị chữ số bằng 13 E biểu diễn cho giá trị chữ số bằng 14 F biểu diễn cho giá trị chữ số bằng 15 cuối chữ số có kèm theo chữ h/H, ví dụ 2A7DFh hay 2A7DFH hoặc có (16), ví dụ: 2A7DF(16) Ta có công thức đổi một số ở hệ cơ số a bất kỳ về hệ 10 như sau: bn-1bn-2bn-3b1b0b-1b-2b-m = bn-1 x an-1 + bn-2 x an-2 + bn-3 x an-3 + + b1 x a1 + b0 x a0 + b-1 x a-1 + b-2 x a-2 ++b-m x a-m (1) Ví dụ: Số hệ 10: 103.75 = 1 x 102 + 0 x 101 + 3 x 100 + 7 x 10-1 + 5x 10-2 Số hệ 2: 01000001 = 0 + 26 + 0 + 0 + 0 + 0 + 0 + 20 = 64 + 1 = 65 Số hệ 16: 1A2h = 1 x 162 + 10 x 161 + 2 x 160 = 256 + 160 + 2 = 418. Phương pháp đổi một số ở hệ cơ số 10 về hệ cơ số a bất kỳ: Cho số N = N0.M0 ở hệ cơ số 10, yêu cầu đổi N về hệ cơ số a. Ta thực hiện theo ba bước sau Bước 1: Đổi phần nguyên N0 của số N hệ 10 về hệ cơ số a Lấy N0 chia cho a (cơ số), ta được số dư là b0, và thương số là N1. Nếu N1 ¹ 0, ta lại lấy N1 chia cho a, ta được số dư là b1 và thương là N2 Nếu N2 ¹ 0, ta lại lấy N2 chia cho a, ta được số dư là b2 và thương là N3 Lặp đi lặp lại các mục 2, 3 cho đến khi thương số = 0 thì dừng lại (phép chia có số hiệu n-1, tức được số dư bn-1) Xếp các số dư theo thứ tự bn-1bn-2bn-3b1b0 đây chính là số ở hệ cơ số a có giá trị bằng N0. Bước 2: Đổi phần lẻ thập phân M0 của số N hệ 10 về phần lẻ sau dấu chấm (phảy) của hệ cơ số a Lấy 0.M0 nhân với a (cơ số), ta được số b-1. M1 Ta lại lấy 0.M1 nhân với a , ta được số b-2. M2 Ta lại lấy 0.M2 nhân với a , ta được số b-3. M3 Lặp đi lặp lại các mục 2, 3 cho đến khi 0.Mm = 0 thì dừng lại (phép nhân có số hiệu m, tức được số b-m.0) Xếp các số nguyên theo thứ tự 0. b-1b-2b-m đây chính là số phần lẻ sau dấu chấm (phảy) của hệ cơ số a có giá trị bằng 0.M0. Bước 3: Thực hiện ghép kết quả bước 1 và 2, ta được kết quả số N đã đổi về hệ cơ số a là bn-1bn-2bn-3b1b0b-1b-2b-m Ví dụ: 1. Đổi số nguyên 34 sang số hệ hai ta thực hiện như sau: 2 2 2 2 2 34 b0 =0 2 17 8 4 2 1 b1 =1 b2 =0 b3 =0 b4 =0 b5 =1 0 (Thương = 0 thì dừng) Các số dư trong khung sẽ được sắp xếp theo chiều mũi tên. Ta có kết quả là: 34 = 100010b (=b5b4b3b2b1b0). 2. Đổi số 34.125 ra số hệ hai Bước 1: Đổi phần nguyên ra số nhị phân, ta được 34 = 100010b Bước 2: Đổi phần lẻ thập phân ra phần lẻ sau dấu chấm nhị phân, ta có: 0.125 x 2 = 0 .250 (b-1 = 0) 0.250 x 2 = 0 .500 (b-2 = 0) 0.500 x2 = 1 .000 (b-3 = 1) Kết quả ta thu được số nhị phân: 0.125 = 0.001b (=0.b-1b-2b-3) (như thứ tự phần đóng khung theo chiều mũi tên) Bước 3: Ghép kết quả bước 1 và 2 ta có kết quả dụ đổi số 34.125 ra số nhị phân như sau: 34.125 = 100010.001b 3. Đổi số 34.9 ra số hệ hai Bước 1: Đổi phần nguyên ra số nhị phân, ta được 34 = 100010b Bước 2: Đổi phần lẻ thập phân ra phần lẻ sau dấu chấm nhị phân, ta có: 1) 0.9 x 2 = 1 .8 (b-1 = 1) 2) 0.8 x 2 = 1 .6 (b-2 = 1) 3) 0.6 x 2 = 1 .2 (b-3 = 1) 4) 0.2 x 2 = 0 .4 (b-4 = 0) 5) 0.4 x 2 = 0 .8 (b-5 = 0) Kết quả của các phép nhân sẽ lặp đi lặp lại theo các lần từ 1) đến 5), như vậy ta được phần lẻ nhị phân lặp vô tận tuần hoàn như sau: 0.9 = 0.11100110011001100...b (như thứ tự phần đóng khung theo chiều mũi tên) Bước 3: Ghép kết quả bước 1 và 2 ta có kết quả dụ đổi số 34.9 ra số nhị phân như sau: 34.125 = 100010. 11100110011001100...b 4. Đổi số 1134 ra số biểu diễn ở hệ 16 : 1134 16 b0 =14 70 16 b1 =6 4 16 (Thương = 0 thì dừng) b2 =4 0 Theo phép chia trên, ta có b0 = 14 = Eh, như vậy ta có kết quả : 1134 = 46Eh 5. Đổi 46Eh về hệ 10 : 46Eh = 4 x 162 + 6 x 161 + 14 x 160 = 4 x 256 + 96 + 14 = 1024 + 110 = 1134 Chú ý: Trong thực tế khi chuyển đổi một số hệ 10 về một số biểu diễn ở hệ cơ số a bất kỳ (a=2, 8, 16), để thực hiện nhanh ta nên thực hiện theo trình tự đổi như sau: Hệ 10 Hệ 16 Hệ 2 Hệ 8 Cụ thể là ta muốn đổi một số hệ 10 về hệ 2, trước hết ta nên đổi về hệ 16 (thực hiện các phép chia cho 16) rồi từ hệ 16 đổi về hệ 2. Làm như vậy ta giảm được rất nhiều phép chia, thời gian chuyển đổi nhanh hơn nhiều, tiết kiệm giấy mực, và đặc biệt ít nhầm lẫn hơn so với khi đặt các số dư của các phép chia cho 2 thành kết quả cuối cùng. Điều này càng có ý nghĩa khi số hệ 10 càng lớn. Ngược lại đổi một số hệ 2 về hệ 10 ta cũng nên đổi qua hệ 16 rồi từ hệ 16 ta chuyển về hệ 10, điều này giảm được cho ta nhiều phép nhân. Để thực hiện được việc chuyển đổi như trên, ta cần sự hỗ trợ của bảng biểu diễn số ở các hệ cơ số khác nhau dưới đây: Số hệ 10 Số hệ 2 Số hệ 16 Số hệ 8 0 0000b 0 0 1 0001b 1 1 2 0010b 2 3 3 0011b 3 3 4 0100b 4 5 5 0101b 5 5 6 0110b 6 6 7 0111b 7 7 8 1000b 8 9 1001b 9 10 1010b A 11 1011b B 12 1100b C 13 1101b D 14 1110b E 15 1111b F Số trong các hệ cơ số Trong bảng này, ta nhận thấy: Số ở hệ cơ số 8 được biểu diễn no đủ bởi số nhị phân 3 bit (7 = 111b). Số ở hệ cơ số 6 được biểu diễn no đủ bởi số nhị phân 4 bit (0Ah = 1111b). Ví dụ: Đổi số 1134 về số hệ 2 và hệ 8 Để thực hiện việc chuyển đổi này, đầu tiên ta đổi số 1134 về hệ 16 1134 = 46Eh (xem ví dụ 4 mục 1.3.2) Căn cứ vào bảng 1.1 ta biểu diễn mỗi chữ số ở hệ 16 ở dạng hệ 2 bởi no đủ 4 bit nhị phân, ta được kết quả như sau: 46Eh = 010001101110b = 10001101110b Để chuyển số 10001101110b về hệ 8, ta nhóm 3 bit một theo thứ tự từ phải qua trái (từ bit có trọng số thấp nhất về phía bit có trọng số cao nhất) và đổi giá trị các nhóm số đó về chữ số ở hệ 8, ta được số hệ 8 như sau: 10001101110b = 3156(8) Nhận xét: Để đổi 1134 về hệ 2, ta mất 11 phép chia so với về hệ 16 chỉ mất 3 phép chia, đặc biệt khi lấy kết quả bằng cách chép lại các số dư với 11 số 0/1 rất dễ bị nhầm lẫn. Đổi số 10001101110b về hệ 10 Trước hết ta đổi số nhịphân về hệ 16, bằng cách nhóm 4 bit theo thứ tự từ phải qua trái (từ bit có trọng số thấp nhất về phía bit có trọng số cao nhất) và đổi giá trị các nhóm số đó về chữ số ở hệ 16, ta được số hệ 16 như sau: 10001101110b = 46Eh Cuối cùng: 46Eh = 4 x 162 + 6 x 161 + 14 x 160 = 4 x 256 + 96 + 14 = 1024 + 110 = 1134 Các phép toán số học với số hệ hai a. Phép cộng Phép cộng các số hệ hai giống như khi ta thực hiện với số hệ mười. Quy tắc phép cộng số hệ 2 được chỉ ra trong Bảng 1.1. y = a + b A B Y Nhớ 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 Bảng 1.3. mở rộng từ bảng 1.2 y = a + b + c + d + e + f + g a b C D e f G y Nhớ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 1 1 0 2 0 0 1 1 1 1 1 1 2 ... dãy tăng. Câu *14) Nhập và in ma trận Am,n. Cho biết những hàng nào của A lập thành dãy tăng Cho biết những hàng nào của A lập thành dãy đối xứng Câu *15) Nhập và in ma trận Am,n. Tìm số dương nhỏ nhất trong ma trận. Câu *16) Nhập và in ma trận Am,n các số nguyên dương. Tìm bội số chung nhỏ nhất của tất cả các phần tử của ma trận. Câu 17) Nhập vào một số nguyên N (1< N < 11) và một ma trậ? vuông A cấp N có các phần tử là các số nguyên bất kỳ. Tính: trong đó Aij là phần tử ở hàng i cột j của ma trận A. -Tìm số lớn nhất trong khu vực tam giác kể từ đường chéo phụ trở ngược lên góc trên bên trái của ma trận A. Ví dụ, trong ma trận bên, khu vực tam giác có số lớn nhất là 8. Dùng cấu trúc mảng, nhập một danh sách N (0<N<50) sinh viên gồm Tên, Phái (nam/ nữ), và Ðiểm thi, rồi phân loại đậu, rớt như sau: Nếu Ðiểm thi ³ 5: Ðậu. Nếu Ðiểm thi < 4.5: Rớt Nếu 4.5<= Ðiểm thi< 5: là nam thì Rớt, là nữ thì Ðậu. In danh sách đã sắp theo trật tự tăng của Tên (sắp xếp theo thứ tự a,b,c,...), gồm các thông tin về Tên, Phái, Ðiểm thi, và phân loại. Câu *19) Dùng cấu trúc mảng, nhập một danh sách N (0<N<50) chủ hộ gồm họ tên, chỉ số điện kế tháng trước và chỉ số điện kế tháng này. Tính tiền điện cho từng hộ theo đơn giá: 100 kw đầu tiên có đơn giá 500đ/kw 50 kw tiếp theo có đơn giá là 600 đ/kw từ kw thứ 151 trở lên có đơn giá là 900 đ/kw In danh sách lên màn hình liệt kê từng người gồm họ tên, lượng điện tiêu thụ trong tháng và số tiền điện phải trả. In ra tổng số tiền điện của tất cả các hóa đơn. Bài tập về chuỗi ký tự: Câu 20) Nhập chuỗi St, in St theo thứ tự đảo ngược. Ví dụ: St = ‘ABCD’, in ra ‘DCBA’ Câu 21) Nhập chuỗi St, xây dựng chuỗi St1 gồm các ký tự của St nhưng đảo ngược thứ tự. Ðổi chuỗi St thành chữ hoa và đổi chuỗi St1 thành chữ thường. Ví dụ cho St=‘AbcD12’, thì St1=‘21DcbA’, sau khi đổi ta được St= ‘ABCD12’ và St1=‘21dcba’. Câu 22) Nhập chuỗi St, kiểm tra chuỗi có đối xứng không. Ví dụ: các chuỗi ‘BCD1DCB’ và ‘ABCCBA’ là đối xứng, còn ‘ABCDBA’ là không đối xứng. Câu 23) Nhập chuỗi St, đếm xem trong chuỗi có bao nhiêu chữ a không phân biệt viết hoa hay viết thường, và cho biết vị trí của các chữ a đó. Ví dụ St=‘Anh van la quan trong’ có 4 chữ a tại các vị trí 1, 6, 10, 14. Câu *24) Nhập chuỗi St, cho biết trong St có bao nhiêu ký số ‘0’, ‘1’, ‘2’,..., ‘9’ mỗi loại. Ví dụ St=‘13163’, in ra: có 2 ký số 1, có 2 ký số 3, có 1 ký số 6, các loại khác không có. Câu 25) Nhập chuỗi St, xóa bỏ các ký tự trắng thừa ở đầu và cuối chuỗi, và sao cho giữa hai từ chỉ có đúng một ký tự trắng, đổi chuỗi thành chữ thường, riêng các chữ đầu từ thành chữ hoa. Ví dụ: St =‘ Hom nAy tHUC taP ‘. In ra: ‘Hom Nay Thuc Tap’. Câu *26) Nhập một chuỗi St, đếm xem trong St: có bao nhiêu chữ cái A,B,C,..,Z có bao nhiêu chữ số 0,1, 2, 3,.., 9 có bao nhiêu ký tự trắng có bao nhiêu các ký tự khác. Trong bốn loại trên thì loại nào nhiều nhất ? Câu 27) Nhập hai chuỗi St và St1. Cho biết chuỗi St1 xuất hiện mấy lần trong St, và tại các vị trí nào?. Ví dụ St=‘pas12pas34’, chuỗi St1 =‘pas’ xuất hiện 2 lần tại các vị trí 1, 6. Câu 28) Nhập ba chuỗi St, St1, St2. tìm xem trong chuỗi St có chứa chuỗi St1 không ?, nếu có thì thay thế St1 bằng St2. Ví du: cho St=‘ABC1234E’, St1=‘1234’ và St2 =‘*’. Sau khi thay thế ta được St=‘ABC*E’. Câu 29) Nhập một mảng gồm N tên các sinh viên. Hãy chuẩn hóa tất cả các tên này, đổi ra chữ hoa hết, sắp xếp và in lên màn hình theo thứ tự a, b, c,.... Ví dụ nhập năm tên: lan, an, anh, thanh, bich, in ra: AN, ANH, BICH, LAN, THANH. Câu *30) Nhập một chuỗi St gồm nhiều từ. Giả thiết St có không quá 20 từ, mỗi từ dài không quá 10 ký tự. Xây dựng một mảng A chứa các từ của St, với A[i] chứa từ thứ i của St. Sắp xếp và in các từ của mảng A theo trật tự giảm của độ dài của từ. Ví dụ cho St=‘ Thanh pho da Nang’ thì: A[1]=‘Thanh’, A[2]= ‘pho’, A[3]=‘Da’, A[4]=‘Nang’. In ra: Thanh Nang pho Da. Câu 31) Nhập một số nguyên dương N, đổi ra số nhị phân (hệ đếm 2) tương ứng. Ví dụ: N = 15, đổi ra 1111. Câu 32) Nhập một số nguyên dương N, đổi ra số thập lục phân (hệ đếm 16) tương ứng: Ví dụ: N = 59, đổi ra 3B. Các bài tập nâng cao về kiểu dữ liệu có cấu trúc Kiểu mảng Câu 1) Viết một thủ tục nhập hai ma trận vuông A, B cấp N có các phần tử là các số nguyên. Viết một thủ tục tính ma trận C= A+2B Viết một thủ tục in các ma trận A, B và C lên màn hình Viết một hàm kiểm tra A, B, C có phải là ma trận đối xứng không ? Câu 2) Viết một hàm kiểm tra hàng thứ k của một ma trận A cấp MxN có lập thành một dãy tăng không ?. Nhập ma trận A và cho biết những hàng nào của A lập thành một dãy tăng? Câu 3) Viết một hàm để chuẩn hóa một chuỗi: xóa bỏ mọi ký tự trắng thừa ở đầu và cuối chuỗi, và giữa hai từ chỉ giữ lại đúng một ký tự trắng. Câu 4) Viết một hàm để đổi một ký tự từ chữ hoa ra chữ thường. Dùng hàm đó đổi tất cả các ký tự của một chuỗi St nhập từ bàn phím ra chữ thường hết. Câu 5) Viết một hàm để kiểm tra một chuỗi có đối xứng không. Câu 6) Nhập vào một chuỗi số nhị phân, đổi ra số hệ thập phân tương ứng. Ví dụ: nhập chuỗi ‘1111’, đổi ra số 15. Yêu cầu phải có một hàm tính y = 2k và không sử dụng hàm chuẩn EXP(x). (Hd: 1111 = 1x 23 + 1x 22 + 1x 21 + 1x 20= 15). Câu 7) Viết một hàm đệ qui tính S= xn (x thực, n nguyên dương). Câu 8) Viết một hàm đệ qui tính Sn: Kiểu bản ghi Câu *1) Ðể biết một thí sinh đậu hay rớt trong kỳ thi tuyển sinh, cần biết các thông tin sau: Họ tên: họ và tên của thí sinh KV: thí sinh thuộc khu vực nào? (1, 2 hay 3). NH: thí sinh thuộc nhóm nào ? (1, 2, hay 3). TÐ: tổng diểm ba môn thi. a) Hãy nhập vào một danh sách 100 thí sinh gồm Họ tên, KV, NH, TÐ. Xét xem Kết quả thí sinh này đậu hay rớt dựa vào bảng điểm chuẩn sau: Ví dụ: Thí sinh ở Khu vực 1, Nhóm 2, có Tổng điểm ? 15 thì đậu, ngược lại thì rớt. b) In danh sách đã sắp xếp theo trật tự giảm của TÐ lên màn hình, gồm các mục Họ tên, KV, NH, TÐ và Kết quả đậu, rớt. c) Chỉ in danh sách những người đậu lên màn hình theo mẫu: Câu *2) Mỗi điểm M(x,y) trong mặt phẳng toạ độ Oxy được mô tả như sau: Type DIEM = Record x, y: real; End; Viết chương trình với các yêu cầu sau: Có một thủ tục nhập vào tọa độ của ba điểm A, B, C. Trong đó có một hàm kiểm tra xem có một cặp điểm nào trùng nhau không ?. Nếu có thì bắt nhập lại cho đến khi được ba điểm A, B, C phân biệt. Có một thủ tục (hay hàm) tính độ dài các cạnh AB, BC, AC theo công thức: Nếu A(xa,ya), B(xb,yb) thì Có một thủ tục kiểm tra xem AB, BC, AC có phải là ba cạnh của một tam giác không? (Hd: tổng hai cạnh phải lớn hơn cạnh còn lại). Nếu không phải thì in ra chữ " Không phải Tamgiác", ngược lại thì tính và in diện tích của tam giác ABC lên màn hình theo công thức Hêrông: , với P là nửa chu vi tam giác: P = (AB+BC+AC) / 2. Câu 3) Viết một chương trình pascal để thực hiện các yêu cầu sau: Nhập số nguyên N (0<N<100) và một danh sách N học sinh với các thông tin về: họ và tên, chuyên ban (A, B, C) và các điểm Toán, Văn, Sinh kiểu thực. Với mỗi học sinh hãy tính điểm trung bình như sau: DTB =(2*Toán+ Sinh+Văn)/4 nếu em thuộc chuyên ban A =(Toán+2*Sinh+Văn)/4 nếu em thuộc chuyên ban B =(Toán+Sinh+2*Văn)/4 nếu em thuộc chuyên ban C Chuyên ban nào có nhiều em có điểm trung bình >= 5 nhất ? Câu 4) Nhập số nguyên N (0<N<50) và N hóa đơn tính tiền điện, mỗi hóa đơn có họ tên chủ hộ, chỉ số điện kế tháng trước (Socu), chỉ số điện kế tháng này (Somoi), và định mức (Dmuc) điện hàng tháng của hộ. Hãy tính tiền điện cho mỗi hóa đơn, biết rằng: Mỗi kw trong định mức có đơn giá là 5đ, 100 kw đầu tiên trên định mức có đơn giá 8đ, Từ kw thứ 101 trên định mức trở lên có đơn giá 10đ. Tính tổng số tiền thu được từ tất cả các hóa đơn. Tìm trong các hóa đơn xem có hộ nào tên là Tuan không ? Nếu có thì in lên màn hình các hóa đơn có chủ hộ tên là Tuan gồm các thông tin về Socu, Somoi, Dmuc và Tien điện phải trả. Câu 5) Nhập một danh sách N người gồm Họ tên, Chức vụ (GD, TP, PP, NV) và Mức lương tháng (ML). Tính Phụ cấp lương (PC) cho từng người như sau: PC = 50% Mức lương tháng nếu chức vụ là GD = 40% " " " " TP = 30% " " " " PP = 20% " " " " NV Tính Thu nhập (TN) trong tháng cho từng người: TN = Mức lương + PC Ðổi họ tên của mọi người ra chữ thường hết, riêng chữ cái đầu từ thành chữ hoa, chẳng hạn: Nguyen Thi Loan. Yêu cầu phần này viết thành một thủ tục. In Họ tên, Chức vụ, Mức lương, Phụ cấp và Thu nhập của những người có thu nhập cao nhất lên màn hình. Kiểu chuỗi Câu 1) Nhập một chuỗi St, xây dựng ba tập hợp: S1 là tập các chữ hoa có trong St S2 là tập các chữ thường có trong St S3 là tập các chữ số có trong St In các giá trị của mỗi tập S1, S2, S3 trên một dòng. Câu 2) Nhập vào một mảng A1, A2,..., A10 các số nguyên dương < 10. Hãy in các giá trị của mảng này theo thứ tự tăng dần sao cho các phần tử trùng nhau chỉ được in một lần. Ví dụ: cho mảng 1, 6, 4,1, 9, 6, 6, 0, 3, 9, in ra: 0,1, 3, 4, 6, 9 (Hướng dẫn: xây dựng tập hợp gồm các phần tử của mảng A) Câu 3) Viết chương trình thực hiện trò chơi sau: Người chơi nhập một số k trong phạm vi từ 1 đến 9 Tạo một tập S gồm ba số ngẫu nhiên trong phạm vi từ 1 đến 9 Kiểm tra xem k có thuộc tập S không?. Nếu thuộc thì người chơi thắng, ngược lại là thua. In k và tập S lên màn hình. Hướng dẫn: Trong thư viện CRT có hàm Random(n) trả về một số ngẫu nhiên j thuộc phạm vi: 0 <= j < n. Câu 4) Mỗi phân số được mô tả như sau: Type Phanso = Record tu, mau: Integer; end; Nhập hai phân số từ bàn phím, tạo một tập tin chứa hai phân số đó và hai phân số là tổng, hiệu của chúng. Ðọc bốn phân số đó từ tập tin và in lên màn hình. Câu 5) Nhập số nguyên dương N (0<N< 20) và một dãy N số nguyên: A1, A2,..., AN. Ghi dãy số đó vào tập tin DL.DAT. Ðếm trong tập tin DL.DAT có bao nhiêu số chẵn. Ðọc các số lẻ từ tập DL.DAT và in lên màn hình. Câu 6) Ðể quản lý Họ tên, các điểm Toán, Lý và Ðiểm trung bình của sinh viên, ta mô tả kiểu Ksvien như sau: Type Ksvien= Record D Hoten: String[20]; Toan, Ly, tb: Real; end; Hãy nhập một danh sách sinh viên gồm Họ tên, điểm Toán và điểm Lý, rồi tính Ðiểm trung bình: Dtb:=(Toán+Lý)/2, lưu vào tập tin QLY.DAT. Quá trình nhập kết thúc khi nhập Họ tên là rỗng (tức không nhập gì cả, cứ Enter). Ðọc danh sách sinh viên từ tập tin QLY.DAT và in danh sách lên màn hình. Chép danh sách sinh viên vào tập QLY.IDX sao cho các phần tử của QLY.IDX được sắp xếp theo trật tự giảm của điểm trung bình. Ðọc dữ liệu của tập tin QLY.IDX và ghi vào tập tin văn bản tên là QLY.TXT theo dạng: STT Họ và tên Ðiểm trung bình 1 Nguyen Van Tuan 8.5 2 Pham Thi Mai 8.0 . . Câu 7) Dùng hệ soạn thảo của Turbo Pascal để tạo một tập tin văn bản có tên là MT.DAT chứa hai ma trận vuông cấp 3 là A và B có các phần tử là các số nguyên. Lấy dữ liệu từ tập tin MT.DAT để tính ma trận C=A+B. Ghi ma trận C vào cuối tập tin MT.DAT. Ðọc các ma trận A, B, C từ tập tin MT.DAT và in lên màn hình. CON TRỎ Định nghĩa và khai báo Khái niệm kiểu con trỏ Kiểu con trỏ là một kiểu dữ liệu đặc biệt, dùng để chứa giá trị địa chỉ (do vậy có thể xem kiểu con trỏ là kiểu địa chỉ). Như vậy biến kiểu con trỏ là các biến dùng để lưu các giá trị địa chỉ của bộ nhớ. Nhờ các biến con trỏ mà ta có thể thao tác trên các giá trị địa chỉ cũng như truy cập dữ liệu ở các vùng nhớ một cách linh hoạt. Ngoài ra biến con trỏ còn là công cụ để xin cấp phát động vùng nhớ khi cần và xây dựng kiểu dữ liệu động cho phép khai thác tối đa và hiệu quả bộ nhớ. Một biến con trỏ bao giờ cũng chiếm 4 bytes: 2 bytes cho địa chỉ đoạn (segment) và 2 bytes cho địa chỉ lệch trong đoạn (offset). Trong Turbo Pascal có 2 kiểu con trỏ: con trỏ định kiểu và con trỏ không định kiểu. Kiểu con trỏ cũng giống như mọi kiểu khác, có thể là thành phần của bất kỳ mọi kiểu dữ liệu có cấu trúc nào (như mảng hoặc bản ghi). Kiểu con trỏ cho phép tổ chức dưới dạng các tham biến trong chương trình con, và có thể là kiểu dữ liệu trả lại cho hàm (xây dựng được hàm mà giá trị trả về là địa chỉ). Con trỏ định kiểu Khái niệm Con trỏ định kiểu là con trỏ cho thông tin về địa chỉ và kích thước vùng nhớ mà nó trỏ đến. Do vậy, trong định nghĩa và khai báo biến kiểu con trỏ định kiểu, ta cần xác định kiểu dữ liệu mà nó trỏ đến. Định nghĩa và khai báo Để định nghĩa một kiểu dữ liệu mới kiểu con trỏ cũng như khai báo một biến kiểu con trỏ, Turbo Pascal dùng ký hiệu ^ trước tên_kiểu_dữ_liệu, Tên_kiểu_dữ_liệu xác định kiểu dữ liệu được trỏ, với cú pháp sau: Type Kiểu_con_trỏ = ^Kiểu_dữ_liệu_mới Kiểu_dữ_liệu_mới = {Kiểu dữ liệu mới được định nghĩa} Var Con trỏ định kiểu Khái niệm Con trỏ định kiểu là con trỏ cho thụng tin về địa chỉ và kớch thước vựng nhớ mà nú trỏ đến. Do vậy, trong định nghĩa và khai bỏo biến kiểu con trỏ định kiểu, ta cần xỏc định kiểu dữ liệu mà nú trỏ đến. Định nghĩa và khai báo Để định nghĩa một kiểu dữ liệu mới kiểu con trỏ cũng như khai bỏo một biến kiểu con trỏ, Turbo Pascal dựng ký hiệu ^ trước tờn_kiểu_dữ_liệu, Tờn_kiểu_dữ_liệu xỏc định kiểu dữ liệu được trỏ, với cỳ phỏp sau: Type Kiểu_con_trỏ = ^Kiểu_dữ_liệu_mới Kiểu_dữ_liệu_mới = {Kiểu dữ liệu mới được định nghĩa} Var hoten: string[20]; diem : byte; next : tro; end; Var First, p : tro; Q : ^integer; Z : inte; Trong ví dụ trên ta thấy: - Biến next là một biến kiểu con trỏ trỏ vào dữ liệu kiểu “Tro” do ta định nghĩa, đồng thời nó lại là một kiểu dữ liệu thành phần trong dữ liệu kiểu bản ghi “phantu”. - Biến First, p là biến kiểu con trỏ trỏ vào dữ liệu kiểu “Tro” do ta định nghĩa. - Biến Q là biến kiểu con trỏ trỏ vào dữ liệu kiểu integer (kiểu dữ liệu chuẩn). - Biến Z là biến kiểu con trỏ trỏ vào dữ liệu kiểu inte (do ta định nghĩa từ kiểu integer - kiểu dữ liệu chuẩn). Con trỏ không định kiểu Khái niệm Con trỏ không định kiểu là con trỏ chỉ chứa địa chỉ mà không quan tâm đến kiểu dữ liệu mà nó đang trỏ đến. Khai báo Cú pháp khai báo: Tên_biến_con_trỏ: Pointer; Trong đó Pointer là từ khóa. Các thao tác trên con trỏ Gán giá trị Giá trị gán cho biến con trỏ là giá trị địa chỉ. Kích thước của mỗi biến con trỏ là 4 byte, không phụ thuộc vào kiểu dữ liệu mà nó trỏ tới. Cú pháp Tên_biến_con_trỏ := @tên_biến_bất_kỳ. Ví dụ: Var X : integer; P : ^integer; Phép gán sau: P := @X Thực hiện lấy giá trị địa của biến X gửi vào con trỏ P. Lệnh gán này không phụ thuộc vào độ lớn của X (nội dung của X), không phụ thuộc vào kiểu dữ liệu của X. Phép so sánh Cấp phát động Danh sách liên kết Tài liệu tham khảo 1. Nguyễn Thúc Hải (1999), Mạng máy tính và các hệ thống mở, NXB Giáo dục. 2. Nguyễn Trung Nam (2001), Vi xử lý và cấu trúc máy vi tính, NXN Khoa học và kỹ thuật. 3. Quách Tuấn Ngọc (2001), Giáo trình tin học căn bản, NXB Thống kê. 4. Quách Tuấn Ngọc (1996), Ngôn ngữ lập trình PASCAL, NXB Giáo dục. 5. Quách Tuấn Ngọc (1996), TURBO PASCAL, cẩm nang tra cứu, NXB Giáo dục. 6. Help of Microsoft Windows XP. 7. Help of Microsoft Office Winword 2003 8. Help of Microsoft Office PowerPoint 2003
File đính kèm:
- giao_trinh_mon_nhap_mon_tin_hoc.doc