Trong cuộc sống, người ta có nhu cầu đọc báo, xem truyền hinh, giao tiếp với người khác để có thông tin. Thông tin là sự hiểu biết của con người về một sự kiện, một hiện tượng nào đó thu nhận quan nghiên cứu, trao đổi, nhận xét, học tập, truyền thụ, cảm nhận.Con người hiểu được thông tin qua lời nói, chữ viết, qua các dạng biểu diễn thông tin khác và diễn tả thông tin thành ngôn ngữ để truyền đạt cho nhau. Thông tin được chuyển tải qua các môi trường vật lý khác nhau như ánh sáng, sóng âm, sóng điện từ, … Thông tin được ghi trên các phương tiện hữu hình như các văn bản trên giấy, băng ghi âm hay phim ảnh,..
Trang 1BỘ CÔNG THƯƠNG TRƯỜNG CAO ĐẲNG CÔNG NGHIỆP TUY HÒA
KHOA CÔNG NGHỆ THÔNG TIN
-BÀI GIẢNG HỌC PHẦN: TIN HỌC ĐẠI CƯƠNG
(Dành cho sinh viên bậc cao đẳng )
TUY HÒA, NĂM 2010
Trang 2CHƯƠNG 1: TỔNG QUAN VỀ MÁY TÍNH
1.1 Thông tin (Information).
-o0o -1.1.1 Khái niệm.
Trong cuộc sống, người ta có nhu cầu đọc báo, xem truyền hinh, giao tiếp vớingười khác để có thông tin Thông tin là sự hiểu biết của con người về một sự kiện, mộthiện tượng nào đó thu nhận quan nghiên cứu, trao đổi, nhận xét, học tập, truyền thụ, cảmnhận
Con người hiểu được thông tin qua lời nói, chữ viết, qua các dạng biểu diễn thôngtin khác và diễn tả thông tin thành ngôn ngữ để truyền đạt cho nhau Thông tin đượcchuyển tải qua các môi trường vật lý khác nhau như ánh sáng, sóng âm, sóng điện từ, …Thông tin được ghi trên các phương tiện hữu hình như các văn bản trên giấy, băng ghi âmhay phim ảnh,
1.1.2 Đơn vị đo thông tin.
- Mỗi sự vật, hiện tượng đều hàm chứa một lượng thông tin Muốn biết một đốitượng nào đó ta phải biết đủ lượng thông tin về nó
- Đơn vị đo thông tin là bít Một bít tương ứng với một chỉ thị hoặc một thông báonào đó về sự kiện, có một trong hai trạng thái có số đo khả năng xuất hiện đồng thời làTắt (Off)/mở (On) hay đúng (True) / Sai (False)
Ví dụ: Một mạch đèn có 2 trạng thái là:
+ Tắt (Off) khi mạch điện qua công tắc là hở
+ Mở (On) khi mạch điện qua công tắc là đóng
- Số học nhị phân sử dụng hai ký số là 0 và 1 để biểu diễn các số Vì khả năng sửdụng hai số 0 và 1 là như nhau nên một chỉ thị chỉ gồm một chữ số nhị phân có thể xemnhư là đơn vị chứa thông tin nhỏ nhất
- Bit là chữ viết tắt của Binary digiT Trong tin học, người ta thường sử dụng cácđơn vị đo thông tin lớn hơn như sau:
1.1.3 Mã hóa và xử lý thông tin.
a Mã hóa thông tin
2
Trang 3Mã hóa thông tin là quá trình biến đổi thông tin từ dạng biểu diễn thông tin thườngsang một dạng khác theo quy ước nhất định Quá trình biến đổi ngược lại của thông tinđược gọi là phép giải mã.
Ví dụ: Ta có một tập quản lý hồ sơ sinh viên Nếu ta quản lý bằng tên thì xảy ra rấtnhiều trường hợp tên bị trùng nhau Nếu ta thêm các yếu tố kèm theo như địa chỉ, ngàysinh, quê quán v.v thì việc quản lý trở nên rất rườm rà, phức tạp mà không loại trừ đượckhả năng trùng nhau Nếu ta gán cho mỗi sinh viên một mã số ID, ta có thể tìm ta số liệu
về sinh viên tương ứng Như vậy, quá trình gán mã số ID cho mỗi hồ sơ sinh viên gọi là
mã hóa, còn quá trình dựa trên mã số ID để xác định thông tin về sinh viên gọi là giải mã
Trong máy tính điện tử, người ta mã hóa thông tin dưới dạng nhị phân dựa vàobảng mã ASCII (American Standard Code for Information Interchange) mở rộng 8 bít.Trong đó mã hóa được 256 ký tự có mã từ 0 đến 255 và được chia thành 2 nhóm:
- Nhóm 1: Có mã từ 0 đến 127 dùng để mã hóa các ký tự, ký hiệu cơ sở: a z,AZ, 09, {, }, [, ], =, +, và các ký tự điều khiển
- Nhóm 2: Có mã từ 128 đến 255 dùng để mã hóa các ký tự đồ họa và các ký tựđặc biệt của mỗi nước
b Xử lý thông tin (Data Processing).
- Để đáp ứng cho các công việc hàng ngày bao gồm nhiều lĩnh vực như nghiên cứu,kinh doanh sản xuất, thương mại…Con người luôn phải thu nhập và xử lý hàng loạt cácthông tin từ nhiều nguồn, các hoạt động xử lý bao gồm các quá trình như sau:
+ Thu thập thông tin: Lấy thông tin từ sự vật, hiện tượng thông qua các giác quan
và các thiết bị có khả năng thu nhận tin
+ Mã tin: Biểu diễn thông tin bằng chữ viết, chữ số, ngôn ngữ, tiếng nói, âmthanh, hình vẽ, trạng thái điện
+ Truyền tin: Gởi tin từ máy này sang máy khác, từ điểm này sang điểm khác Môitrường truyền tin gọi là kênh liên lạc
+ Trữ tin: Ghi tên lên các vật ký tin
+ Xử lý tin: Tác động lên các tin đã có
+ Xuất tin: Đưa thông tin ra cho người dung dưới các dạng mà con người có thểnhận biết được
- Tin thường có độ nhiễu cao Vì vậy xử lý tin là làm giảm độ nhiễu của tin Chấtlượng tin được đánh giá căn cứ trên các phương diện sau: Sự cần thiết, sự chính xác, sựtin cậy và sự kịp thời
1.2 Tin học và công nghệ thông tin.
Các thuật ngữ:
Information Technology
Informatics
Informatquee
Trang 4Cumputer Technology
Tin học là ngành khoa học nghiên cứu các phương pháp và quá trình xử lý thông tin một cách tự động dựa trên các phương tiện kỹ thuật mà hiện nay phương tiện đó là MTĐT
Các thành tựu mới trong viễn thông cho phép kết nối các máy tính thành mạng máytính Do vậy, việc phối hợp giữa công cụ xử lý thông tin tự động, kết cấu hạ tầng viễnthông, các chuẩn giao tiếp trong các môi trường của máy với máy và giữa người với máyngày một phát triển
Khái niệm Công nghệ Thông tin có một nội dung đầy đủ, bao hàm được những lĩnhvực, những nền tảng chủ yếu của khoa học và công nghệ xử lý thông tin dựa trên máytính Khi nói đến yếu tố công nghệ, người ta muốn nhấn mạnh đến tính quá trình, tính tổchức và phương pháp xử lý thông tin hướng tới sản phẩm Định nghĩa Công nghệ Thôngtin đã được các chuyên gia Việt Nam nghiên cứu, tham khảo từ các định nghĩa củachuyên gia trên thế giới và đã được đa vào Nghị quyết 49/CP của Chính phủ về phát triểnCông nghệ Thông tin của Việt nam từ 1996 như sau:
"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 và khai thác và sử dụng có hiệu quả nguồn tài nguyên thông tin rất phong phú và tiềm tàng trong mọi lĩnh vực hoạt động của con người và xã hội Công nghệ thông tin được phát triển trên nền tảng phát triển của các công nghệ Tin học -Điện tử -Viễn thông và Tự động hoá"
Công nghệ Thông tin mang một ý nghĩa rộng rãi hơn, nó vừa là khoa học, vừa làcông nghệ, vừa là kỹ thuật, bao trùm cả tin học, viễn thông và tự động hoá
1.3 Lịch sử ra đời và khuynh hướng phát triển kỹ thuật máy tính.
Thế hệ thứ nhất (1945 đến 1955) máy tính dùng đèn điện tử: Trong các năm 40
và đầu những năm 50 phần cứng máy tính được phát triển trong các dự án nghiên cứu,các dự án này đã xây dựng phần cứng mỗi cái một loại và nhấn mạnh vào sự nghiên cứu.Trong giai đoạn này các máy chủ yếu được xây dựng dựa trên đèn điện tử, chiếc máy tínhđiện tử đầu tiên là máy ENIAC (Electronic Numberical Intergrator And Calculator) doJohn Mauchley và J.Presper Eckert thiết kế Nó bao gồm 18.000 đèn điện tử, 1.500 rơ-le,nặng 30 tấn, tiêu thụ công suất là 140 KW, nó được lập trình bằng cách thiết đặt 6.000switch
Thế hệ thứ hai (1955 đến 1965) máy tính dùng Transitor: Transitor được sáng
chế ra tại phòng thí nghiệm Bell năm 1948 Các máy tính dùng đèn điện tử trong thời kỳnày đã trở nên lỗi thời, máy tính Transitor ra đời Máy tính xây dựng dựa trên Transitornên đã nhỏ gọn hơn Chiếc máy tính Transitor đầu tiên là máy TX- 0
Thế hệ thứ ba (1965 đến 1980) máy tính dùng Mạch tích hợp (IC): Công
nghệ vi điện tử phát triển đã tạo ra mạch tích hợp cho phép đặt hàng chục Transitor vàotrong mọt vỏ chung (chip) làm cho các nhà soản xuất có thể chế tạo ra các máy tính nhỏhơn, nhanh hơn và giá thành hạ hơn
Thế hệ thứ tư (từ 1980) máy tính dùng mạch tích hợp mức cao (VLSI):
Những năm 80, công nghệ vi điện tử đã chế tạo ra các vi mạch điện tử có mức tích hợp
4
Trang 5rất cao (VLSI Very Large Scale Integrator), trong một chip có thể tích hợp hàng triệuTransitor, do đó các máy tính ngày càng nhỏ hơn, chạy nhanh hơn, khả năng tính toán lớnhơn, và giá thành rẻ hơn Năm 1980 máy tính cá nhân PC (Personal Computer) ra đời.
1.4 Tổng quan về máy tính và các thiết bị ngoại vi.
Bất kỳ một máy tính điện tử nào cũng gồm 3 thành phần chính sau:
Đơn vị xử lý trung tâm
Bộ nhớ
Các thiết bị ngoại vi
Cấu trúc chung của một máy tính điện tử
1.4.1 Đơn vị xử lý trung tâm (Central Proccessing Unit-CPU)
CPU được coi là bộ não của máy tính, là thiết bị điều khiển mọi hoạt động của máytính, điểu khiển việc thực thi thiết bị, điều khiển việc tính toán lưu trữ theo yêu cầu củachương trình, được chia làm 3 loại chính sau:
+ Khối điều khiển (Control Unit-CU): chịu trách nhiệm điều khiển toàn bộ các hoạtđộng của hệ thống thông qua các chỉ thị trong chương trình
+ Khối tính toán số học và logic (Arithmetic Logic Unit-ALU): Chịu trách nhiệm thựchiện các phép tính số học (Cộng, trừ, nhân, chia, ), các phép toán Logic (AND, OR,XOR, NOT) và các phép tính quan hệ (so sánh hơn, nhỏ hơn, bằng nhau, )
+ Các thanh ghi (Registers): Thiết kế bằng các mạch điện tử làm nhiệm vụ bộ nhớtrung gian, bộ nhớ tạm lưu trữ mã lệnh, kết quả tính toán theo yêu cầu của khối điềukhiển Các thanh ghi mang chức năng chuyên dụng giúp tăng tốc độ trao đổi thông tintrong máy tính
Trang 6Bộ nhớ là thiết bị làm nhiệm vụ lưu trữ tạm thời hoặc lâu dài thông tin, thông tin lưutrữ bao gồm: các dữ liệu từ ngoài đưa vào, các chỉ thị chương trình, các kết quả sau xử lý.
Bộ nhớ chia làm hai loại:
+ Bộ nhớ trong: Chia làm 2 loại
RAM (Random Access Memory): Là bộ nhớ truy cập ngẫu nhiên, bộ nhớ này chỉ
lưu trữ tạm thời thông tin trong quá trình xử lý Khi tắt máy, mất điện hoặc khởi động lạithì thông tin trên RAM sẽ mất đi Dung lượng của RAM càng lớn thì tốc độ truy xuấtmáy tính càng nhanh
ROM (Read Only Memory): Là bộ nhớ chỉ đọc, do đó nó chỉ đọc thông tin có sẵn
được ghi bởi nhà sản xuất, thông tin trên ROM sẽ không mất đi khi mất điện hoặc tắtmáy
+ Bộ nhớ ngoài: Là thiết bị lưu trữ thông tin với dung lượng lớn, thông tin không mất
đi khi không có điện Có thể di chuyển bộ nhớ ngoài độc lập với máy tính như đĩa cứng,đĩa mềm, đĩa quang, USB,
Phần cứng (hardware) là toàn bộ các thiết bị vật lý của MTĐT Nâng cao tốc độ
xử lý, tăng khả năng lưu trữ, tăng độ tin cậy, giảm năng lượng sử dụng, tăng khả năngghép nối, là những mục tiêu mà kỹ thuật phần cứng hướng tới
Phần mềm (software) nghiên cứu phương pháp sử dụng công cụ xử lý thông tin tự
động trong các tiến trình xử lý thông tin Phần mềm bao gồm các chương trình có chứcnăng điều khiển, khai thác phần cứng và để thực hiện các yêu cầu xử lý thông tin Phầnmềm cũng bao gồm các phương pháp tổ chức dữ liệu tương ứng với chương trình xử lýthông tin Tìm ra các phương pháp xử lý thông tin có hiệu quả, tổ chức dữ liệu tốt và lậptrình thể hiện các phương pháp xử lý đó là vấn đề của phần mềm
6
Trang 7Chương 2: HỆ ĐẾM, BIỂU DIỄN THÔNG TIN
2.1 Hệ đếm, các phép tính cơ bản
o0o 2.1.1 Khái niệm hệ đếm
Hệ đếm là một tập hợp ký hiệu (bảng chữ số) để biễu diễn số và xác định giá trị củacác biểu diễn số
- Hệ thập phân là hệ cơ số 10 có các chữ số cơ bản là 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
- Hệ nhị phân là hệ cơ số 2 có các chữ số cơ bản là 0, 1 Mỗi chữ số nhị phân gọi làBIT (Binary digiT) Vì hệ nhị phân chỉ có hai số nên chỉ có hai giá trị là 0 và 1, nên khimuốn diễn tả một số lớn hơn hoặc các ký tự phức tạp thì cần kết hợp nhiều BIT với nhau
Ví dụ: 0101 biểu diễn số 5.
- Hệ bát phân là hệ cơ số 8: Nếu dùng 3 bít có thể biểu diễn 8 trị khác nhau: 000, 001,
010, 011, 100, 101, 110, 111 Các trị này tương ứng với 8 trị trong hệ thập phân là: 0, 1,
2, 3, 4, 5, 6, 7 Tập hợp các chữ số này gọi là hệ bát phân
- Hệ thập lục phân là hệ cơ số 16 có các chữ số cơ bản là 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A,
B, C, D, E, F tương ứng với các số 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 trong
Trang 81 × 1 = 1
Ví dụ:
1101
× 111101 +1101
100111
Chia:Thực hiện phép chia giống như trong hệ thập phân.
Ví dụ: 1101 : 101 = 11
2.2 Chuyển đổi số giữa các hệ đếm.
- Nguyên tắc 1: Đổi một số thập phân sang hệ cơ số b
Đổi phần nguyên từ một số thập phân sang hệ cơ số b:
Để chuyển đổi phần nguyên của một số thập phân
sang hệ cơ số b (b≠10) ta làm như sau: Lấy phần nguyên số
thập phân chia cho cơ số b cho đến khi phần thương của
phép chia bằng không, số đổi được chính là phần dư của
phép chia viết theo thứ tự ngược lại:
Ví du: Cho X=610 nghĩa là X=6 trong hệ thập phân sẽ được
đổi thành 1102 trong hệ nhị phân
Đổi phần thập phân của một số thập phân sang hệ cơ
số b:
Để đổi phần thập phân của hệ thập phân sang hệ cơ số b ta làm như sau: Lấy phầnthập phân nhân với cơ số b cho đến khi phân thập phân của tích số bằng 0 Kết quảchuyển đổi được là các số phần nguyên trong phép nhân viết ra theo thứ tự tính toán
Ví dụ:
- Nguyên tắc 2: Đổi một số từ hệ cơ số b về hệ thập phân
Để chuyển đổi một số từ hệ cơ số b về hệ thập phân ta sử dụng công thức (*)
Với b là cơ số đếm, a0,a1,a2, ,an là các chữ số cơ bản
1 0 1 1
X b =a n a n-1 …a 1 a 0 = a n b n +a n-1 b n-1 +….+a 1 b 1 +a 0 b 0 (*)
Trang 9X là số ở hệ đếm cơ số b.
Ví dụ: Với X = 1102 = 1*22 + 1*21 + 0 = 6
Bảng chuyển đổi giữa hệ nhị phân, thập lục phân và thập phân như sau:
Thập phân Nhị Phân Thập lục phân
- Nguyên tắc 3: Đổi một số từ hệ nhị phân sang hệ thập lục phân.
Để đổi một số từ hệ nhị phân sang hệ thập lục phân ta làm như sau: Nhóm lần lượt 4bit từ phải sang trái, sau đó thay thế các nhóm 4 bít này bằng giá trị tương ứng trong hệthập lục phân
Ví dụ:
X = 11’10112 = 3B16
- Nguyên tắc 4: Đổi một số từ hệ thập lục phân sang hệ nhị phân.
Để đổi một số từ hệ thập lục phân sang hệ nhị phân ta làm như sau: Mỗi chữ số trong
hệ thập lục phân sẽ được biểu diễn dưới dạng 4 bit
Trang 10Bài 2: Hãy đổi các số sau từ hệ nhị phân sang hệ thập phân và bát phân
Trang 11Chương 3: NGÔN NGỮ LẬP TRÌNH PASCAL
3.1 Giới thiệu về Pascal
o0o 3.1.1 Lịch sử ra đời.
Pascal là một ngôn ngữ lập trình bậc cao do Niklaus Wirth, giáo sư điện toán trườngĐại học kỹ thuật Zurich (Thụy Sĩ) đề xuất năm 1970 Ông lấy tên Pascal để kỷ niệm nhàtoán học và nhà triết học người Pháp nổi tiếng Blaise Pascal
3.1.2 Phần mềm soạn thảo và chạy chương trình.
a Các tập tin cần thiết khi lập trình với Turbo Pascal.
Để lập trình được với Turbo Pascal, tối thiểu cần 2 file sau:
TURBO.EXE: Dùng để soạn thảo và dịch chương trình.
TURBO.TPL: Thư viện chứa các đơn vị chuẩn để chạy với TURBO.EXE.
Ngoài ra, muốn lập trình đồ hoạ thì phải cần thêm các tập tin:
GRAPH.TPU: Thư viện đồ hoạ.
*.BGI: Các file điều khiển các loại màn hình tương ứng khi dùng đồ hoạ.
*.CHR: Các file chứa các font chữ đồ họa.
b Các bước cơ bản khi lập một chương trình Pascal.
Bước 1: Soạn thảo chương trình.
Bước 2: Dịch chương trình (nhấn phím F9), nếu có lỗi thì phải sửa lỗi.
Bước 3: Chạy chương trình (nhấn phím Ctrl-F9).
3.1.3 Một số phím chức năng thường dùng
F2: Lưu chương trình đang soạn thảo vào đĩa
F3: Mở file mới hoặc file đã tồn tại trên đĩa để soạn thảo
Alt-F3: Đóng file đang soạn thảo
Alt-F5: Xem kết quả chạy chương trình
F8: Chạy từng câu lệnh một trong chương trình
Alt-X: Thoát khỏi Turbo Pascal
Alt-<Số thứ tự của file đang mở>: Dịch chuyển qua lại giữa các file đang mở.
F10: Vào hệ thống Menu của Pascal.
3.2 Thuật toán
3.2.1 Khái niệm
Thuật toán hay giải thuật là một hệ thống chặc chẽ và rõ rang các quy tắc nhằm xácđịnh một dãy các thao tác trên những đối tượng, sao cho sau một số hữu hạn bước thựchiện các thao tác thì cho kết quả
Trang 12Từ thuật toán (Algorithm) xuất phát từ tên một nhà toán học người Trung Á là Abu Abd - Allah ibn Musa al’Khwarizmi, thường gọi là al’Khwarizmi Ông là tác giả một
cuốn sách về số học, trong đó ông đã dùng phương pháp mô tả rất rõ ràng, mạch lạc cáchgiải những bài toán Sau này, phương pháp mô tả cách giải toán của ông đã được xem làmột chuẩn mực và được nhiều nhà toán học khác tuân theo Từ algorithm ra đời dựa theocách phiên âm tên của ông
3.2.2 Các đặc trưng của giải thuật.
Sau khi thực hiện các bước của giải thuật phải cho được kết quả mong muốn, kết quả
đó được xác định theo định nghĩa có trước
* Tính tổng quát (generalliness) : thuật toán có tính tổng quát là thuật toán phải áp dụng
được cho mọi trường hợp của bài toán chứ không phải chỉ áp dụng được cho một sốtrường hợp riêng lẻ nào đó Chẳng hạn giải phương trình bậc hai sau đây bằng Delta đảmbảo được tính chất này vì nó luôn giải được với mọi giá trị số thực a,b,c bất kỳ Tuynhiên, không phải thuật toán nào cũng đảm bảo được tính tổng quát Trong thực tế, có lúcngười ta chỉ xây dựng thuật toán cho một dạng đặc trưng của bài toán mà thôi
* Tính có đại lượng vào và ra
Bắt đầu một giải thuật là việc nhận dữ liệu vào (Input) – kết thúc giải thuật là một sốkết quả (dữ liệu ra Output)
* Tính hiệu quả
Tính hiệu quả của một giải thuật được đánh giá dựa trên các tiêu chuẩn sau:
- Dung lượng bộ cần thiết
- Số lượng phép tính cần thực hiện
- Thời gian cần thiết để chạy
- Dễ hiểu và dễ cài đặt
Ví dụ: Thuật toán giải phương trình bậc hai ax 2 +bx+c=0 (a?0)
1 Yêu cầu cho biết giá trị của 3 hệ số a, b, c
3.2.1 Phương trình có hai nghiệm phân biệt x1 và x2
3.2.2 Giá trị của hai nghiệm được tính theo công thức sau:
12
Trang 132 2
3.2.3 Kết thúc thuật toán
3.2.3 Biểu diễn thuật toán.
Sử dụng các kư hiệu h́nh khối cơ bản để tạo thành một mô tả mang tính h́nh thức(cách này rơ ràng hơn so với việc mô tả các bước thực hiện thuật toán)
Khối 1: Khối bắt đầu thuật toán, chỉ có duy nhất một đường ra.
Khối 2: Khối kết thúc thuật toán, có thể có nhiều đường vào.
Khối 3: Thực hiện câu lệnh (có thể là một hoặc nhiều câu lệnh); gồm một đường vào và
một đường ra
Khối 4: Rẽ nhánh, kiểm tra biểu thức điều kiện (biểu thức Boolean), nếu biểu thức đúng
thuật toán sẽ đi theo nhánh Đúng (True), nếu biểu thức sai thuật toán sẽ đi theo nhánh Sai(False)
Khối 5: Các câu lệnh nhập và xuất dữ liệu.
Nhập, XuấtBắt đầu
Trang 143.3.1 Tên (định danh)
Định danh là một dãy ký tự dùng để đặt tên cho các hằng, biến, kiểu, tên chươngtrình con Khi đặt tên, ta phải chú ý một số điểm sau:
Không được đặt trùng tên với từ khoá
Ký tự đầu tiên của tên không được bắt đầu bởi các ký tự đặc biệt hoặc chữ số
Không được đặt tên với ký tự space,các phép toán
Ví dụ: Các tên viết như sau là sai
1XYZ Sai vì bắt đầu bằng chữ số
#LONG Sai vì bắt đầu bằng ký tự đặc biệt
KY TU Sai vì có khoảng trắng (space)
LAP-TRINH Sai vì dấu trừ (-) là phép toán
3.3.2 Từ khóa
Từ khoá là các từ mà Pascal dành riêng để phục vụ cho mục đích của nó (Chẳng
hạn như: BEGIN, END, IF, WHILE, )
Chú ý: Với Turbo Pascal 7.0 trở lên, các từ khoá trong chương trình sẽ được hiển thị khác màu với các từ khác.
Logic = ODD(5); {Logic =TRUE}
Chú ý: Chỉ các hàm chuẩn dưới đây mới được cho phép sử dụng trong một biểu thức
hằng:
3.3.4 Biến
14
Trang 15- Biến là một đại lượng mà giá trị của nó có thể thay đổi trong quá trình thực hiện chươngtrình
- Khai báo biến:
VAR <Tên biến>[,<Tên biến 2>, ] : <Kiểu dữ liệu>;
Ví dụ:
VAR x, y: Real; {Khai báo hai biến x, y có kiểu là Real}
a, b: Integer; {Khai báo hai biến a, b có kiểu integer}
Chú ý: Ta có thể vừa khai báo biến, vừa gán giá trị khởi đầu cho biến bằng cách sử dụng
FOR i:=1 TO 10 DO Write(i);
Trong câu lệnh trên, lệnh Write(i) được thực hiện 10 lần Nếu hiểu dấu chấm phẩy
là kết thúc câu lệnh thì lệnh Write(i) chỉ thực hiện 1 lần
3.3.6 Lời giải thích
Các lời bàn luận, lời chú thích có thể đưa vào bất kỳ chỗ nào trong chương trình
để cho người đọc dể hiểu mà không làm ảnh hưởng đến các phần khác trong chươngtrình Lời giải thích được đặt giữa hai dấu ngoạc { và } hoặc giữa cụm dấu (* và *)
Ví dụ:
Var a,b,c:Real; {Khai báo biến}
Delta := b*b – 4*a*c; (* Tính delta để giải phương trình bậc 2 *)
3.3.7 Kiểu
- Ngoài các kiểu dữ liệu do Turbo Pascal cung cấp, ta có thể định nghĩa các kiểu dữ liệumới dựa trên các kiểu dữ liệu đã có
- Cú pháp:
TYPE<Tên kiểu> = <Mô tả kiểu>;
VAR <Tên biến>:<Tên kiểu>;
Ví dụ:
TYPE Sothuc = Real;
VAR x :Sothuc;
Trang 16Biểu thức (expression) là công thức tính toán mà trong đó bao gồm các phép toán, cáchằng, các biến, các hàm và các dấu ngoặc đơn.
Phép toán một ngôi (NOT, -)
Phép toán *, /, DIV, MOD, AND
Phép toán +, -, OR, XOR
- Câu lệnh ghép: BEGIN END;
- Các cấu trúc điều khiển: IF , CASE , FOR , REPEAT , WHILE
- Viết không qui cách: dữ liệu xuất ra sẽ được canh lề ở phía bên trái Nếu dữ liệu là số
thực thì sẽ được in ra dưới dạng biểu diễn khoa học
Ví dụ:
WRITELN(x); WRITE(sin(3*x));
- Viết có qui cách: dữ liệu xuất ra sẽ được canh lề ở phía bên phải.
16
Trang 17Ví dụ:
WRITELN(x:5); WRITE(sin(13*x):5:2);
Câu lệnh Kết quả trên màn hình
Writeln('Hello');
Writeln('Hello':10);
Writeln(500);
Writeln(500:5);
Writeln(123.457)
Writeln(123.45:8:2)
Hello Hello 500 500 1.2345700000E+02 123.46
Lệnh nhập dữ liệu
Để nhập dữ liệu từ bàn phím vào các biến có kiểu dữ liệu chuẩn (trừ các biến kiểu BOOLEAN), ta sử dụng cú pháp sau đây:
READLN(<biến 1> [,<biến 2>, ,<biến n>]);
Chú ý: Khi gặp câu lệnh READLN; (không có tham số), chương trình sẽ dừng lại chờ
người sử dụng nhấn phím ENTER mới chạy tiếp.
d Các hàm và thủ tục thường dùng trong nhập xuất dữ liệu
Hàm KEYPRESSED: Hàm trả về giá trị TRUE nếu như có một phím bất kỳ được
nhấn, nếu không hàm cho giá trị là FALSE
Hàm READKEY: Hàm có chức năng đọc một ký tự từ bộ đệm bàn phím.
Thủ tục GOTOXY(X,Y:Integer): Di chuyển con trỏ đến cột X dòng Y.
Thủ tục CLRSCR: Xoá màn hình và đưa con trỏ về góc trên bên trái màn hình.
Thủ tục CLREOL: Xóa các ký tự từ vị trí con trỏ đến hết dòng.
Thủ tục DELLINE: Xoá dòng tại vị trí con trỏ và dồn các dòng ở phía dưới lên.
Thủ tục TEXTCOLOR(color:Byte): Thiết lập màu cho các ký tự Trong đó color
[0,15]
Thủ tục TEXTBACKGROUND(color:Byte): Thiết lập màu nền cho màn hình.
3.4 Cấu trúc tổng quát một chương trình.
{ Phần tiêu đề }
PROGRAM Tên_chương_trình;
{ Phần khai báo }
USES ;
CONST .;
TYPE ;
VAR .;
PROCEDURE .;
FUNCTION ;
Trang 18
- Miền giá trị: (TRUE, FALSE)
- Các phép toán: phép so sánh (=, <, >) và các phép toán logic: AND, OR, XOR,NOT
Trong Pascal, khi so sánh các giá trị boolean ta tuân theo qui tắc: FALSE < TRUE.Giả sử A và B là hai giá trị kiểu Boolean Kết quả của các phép toán được thể hiệnqua bảng dưới đây:
3.5.2 Kiểu số nguyên.
1 Các kiểu số nguyên
18
Trang 19Tên kiểu Phạm vi Dung lượng
+, -, *, / (phép chia cho ra kết quả là số thực).
Phép chia lấy phần nguyên: DIV (Ví dụ : 34 DIV 5 = 6).
Phép chia lấy số dư: MOD (Ví dụ: 34 MOD 5 = 4).
b Các phép toán xử lý bit:
Trên các kiểu ShortInt, Integer, Byte, Word có các phép toán:
- NOT, AND, OR, XOR
Chú ý: Các kiểu số thực Single, Double và Extended yêu cầu phải sử dụng chung với bộ
đồng xử lý số hoặc phải biên dich chương trình với chỉ thị {$N+} để liên kết bộ giả lập
số
2 Các phép toán trên kiểu số thực: +, -, *, /
Trang 203 Các hàm số học sử dụng cho kiểu số nguyên và số thực:
SQRT(x): Trả về căn bậc hai của x (x0)
SIN(x): Trả về sin(x) theo radian
COS(x): Trả về cos(x) theo radian
ARCTAN(x): Trả về arctang(x) theo radian
TRUNC(x): Trả về số nguyên gần với x nhất nhưng bé hơn x
INT(x): Trả về phần nguyên của x
FRAC(x): Trả về phần thập phân của x
ROUND(x): Làm tròn số nguyên x
PRED(n): Trả về giá trị đứng trước n
SUCC(n): Trả về giá trị đứng sau n
ODD(n): Cho giá trị TRUE nếu n là số lẻ
INC(n): Tăng n thêm 1 đơn vị (n:=n+1)
DEC(n): Giảm n đi 1 đơn vị (n:=n-1)
3.5.4 Kiểu ký tự
- Từ khoá: CHAR
- Kích thước: 1 byte
- Để biểu diễn một ký tự, ta có thể sử dụng một trong số các cách sau đây:
Đặt ký tự trong cặp dấu nháy đơn Ví dụ 'A', '0'
Dùng hàm CHR(n) (trong đó n là mã ASCII của ký tự cần biểu diễn) Ví dụCHR(65) biễu diễn ký tự 'A'
Dùng ký hiệu #n (trong đó n là mã ASCII của ký tự cần biểu diễn) Ví dụ #65
- Các phép toán: =, >, >=, <, <=,<>
* Các hàm trên kiểu ký tự:
- UPCASE(ch): Trả về ký tự in hoa tương ứng với ký tự ch Ví dụ: UPCASE('a') = 'A'.
- ORD(ch): Trả về số thứ tự trong bảng mã ASCII của ký tự ch Ví dụ ORD('A')=65.
- CHR(n): Trả về ký tự tương ứng trong bảng mã ASCII có số thứ tự là n Ví dụ:
CHR(65)='A'
- PRED(ch): cho ký tự đứng trước ký tự ch Ví dụ: PRED('B')='A'.
- SUCC(ch): cho ký tự đứng sau ký tự ch Ví dụ: SUCC('A')='B'.
BÀI TẬP MẪU
Bài tập 1: Viết chương trình nhập vào độ dài hai cạnh của tam giác và góc giữa hai cạnh
đó, sau đó tính và in ra màn hình diện tích của tam giác
20
Trang 21Ý tưởng: Công thức tính diện tích tam giác: S = sin( )
Write('Nhap vao do dai canh thu nhat: '); Readln(a);
Write('Nhap vao do dai canh thu hai: '); Readln(b);
Write('Nhap vao goc giua hai canh: '); Readln(goc);
Write('Nhap vao n= '); Readln(n);
Write('Nhap vao x= '); Readln(x);
S:=EXP(1/n*LN(x));
Writeln('S = ',S:0:2);
Readln;
End
Bài tập 3: Viết chương trình nhập vào 2 số a, b Sau đó hoán đổi giá trị của 2 số đó:
a/ Cho phép dùng biến trung gian.
Program Swap;
Var a,b,tam: Integer;
Begin
Write('Nhap vao a= '); Readln(a);
Write('Nhap vao b= '); Readln(b);
tam:=a; {tam lấy giá trị của a}
b:=tam;{b lấy lại giá trị của tam}
Trang 22Var a,b: Integer;
Begin
Write('Nhap vao a= '); Readln(a);
Write('Nhap vao b= '); Readln(b);
a:=a+b;{a lấy tổng giá trị của a+b}
b:=a-b; {b lấy giá trị của a}
a:=a-b;{a lấy lại giá trị của b}
Với: bt là biến, biểu thức có giá trị logic
CV1, CV2 là câu lệnh hay nhóm câu lệnh
- Ý nghĩa của câu lệnh: Nếu bt (biểu thức) có giá trị đúng thì thực hiện CV1 tới CV2,
ngược lại bt có giá trị sai thì bỏ qua CV1 thực hiện CV2
- Lưu đồ thuật toán:
Trang 23Write(‘Max la ’,Max);
Readln ;End
(2) IF…THEN…ELSE
- Cú pháp:
IF bt THEN
CV1 ELSE
CV2;
- Ý nghĩa câu lệnh: Nếu bt có giá trị đúng thì thực hiện CV1 bỏ qua CV2, ngược lại thì
bỏ qua CV1 và thực hiện CV2
- Lưu đồ thuật toán:
Chú ý : Khi sử dụng câu lệnh IF thì đứng trước từ khoá ELSE không được có dấu chấm phẩy (;).
Trang 24 Giá trị của biểu thức và giá trị của tập hằng i (i=1¸n) phải có cùng kiểu.
- Ý nghĩa câu lệnh: Khi gặp lệnh CASE, chương trình sẽ kiểm tra:
+ Nếu giá trị của biểu thức bt nằm trong tập hằng gti thì máy sẽ thực hiện lệnh CVitương ứng
+ Ngược lại:
Đối với dạng 1: Không làm gì cả
Đối với dạng 2: thực hiện lệnh Sn+1
- Ví dụ: Xét tính chẵn lẻ của một số nguyên dương nhập từ bàn phím
Trang 25FOR <biến đếm>:=<giá trị Max> DOWNTO <giá trị Min> DO CV;
Sơ đồ thực hiện vòng lặp FOR:
- Ý nghĩa câu lệnh:
+ Đối với dạng tiến: Biến đếm nhận giá trị là giá trị Min <= giá trị Max thì thực hiện CV,sau đó biến đếm tự động tăng lên một đơn vị và nếu còn <= giá trị Max thì thực hiện CV,
cứ tiếp tục như thế cho đến khi biến đếm > giá trị Max thì thoát khỏi vòng lặp
+ Đối với dạng lùi: Biến đếm nhận giá trị là giá trị Max >= giá trị Min thì thực hiện CV,sau đó biến đếm tự động giảm một đơn vị và nếu còn >= giá trị Min thì thực hiện CV, cứtiếp tục như thế cho đến khi biến đếm < giá trị Max thì thoát khỏi vòng lặp
- Sơ đồ khối:
Chú ý: Khi sử dụng câu lệnh lặp FOR cần chú ý các điểm sau:
Không nên tuỳ tiện thay đổi giá trị của biến đếm bên trong vòng lặp FOR vì làm như vậy có thể sẽ không kiểm soát được biến đếm.
Giá trị Max và Min trong câu lệnh FOR sẽ được xác định ngay khi vào đầu vòng lặp.
Do đó cho dù trong vòng lặp ta có thay đổi giá trị của nó thì số lần lặp cũng không thay đổi.
Trang 26S
B
+ -
Thoát
Trang 28Bài tập 3: Viết chương trình nhập vào tuổi của một người và cho biết người đó là thiếu
niên, thanh niên, trung niên hay lão niên Biết rằng: nếu tuổi nhỏ hơn 18 là thiếu niên, từ
18 đến 39 là thanh niên, từ 40 đến 60 là trung niên và lớn hơn 60 là lão niên
1 17: Writeln(Nguoi nay la thieu nien');
18 39: Writeln(Nguoi nay la thanh nien');
40 60: Writeln(Nguoi nay la trung nien');
Else Writeln(Nguoi nay la lao nien');
Trang 29Bài tập 5: Viết chương trình nhập vào N số nguyên từ bàn phím Hãy tính và in ra màn
hình tổng của các số vừa được nhập vào
Trang 30Bài tập 6: Viết chương trình nhập vào các số nguyên cho đến khi nào gặp số 0 thì kết
thúc Hãy đếm xem có bao nhiêu số chẵn vừa được nhập vào
Ý tưởng:
Bài toán này không biết chính xác số lần lặp nên ta không thể dùng vòng lặp FOR
Vì phải nhập vào số nguyên N trước, sau đó mới kiểm tra xem N=0? Do đó ta nên dùngvòng lặp REPEAT
Write('Nhap vao mot so nguyen N= '); Readln(N);
If N MOD 2 = 0 Then dem:=dem+1;
Vì tính số Pi với độ chính xác Epsilon nên không biết trước được cụ thể số lần
lặp, do đó ta phải dùng vòng lặp WHILE hoặc REPEAT Có nghĩa là phải lặp cho tới khit=4/(2*i+1) Epsilon thì dừng
Trang 31- Tìm USCLN: Lấy số lớn trừ số nhỏ cho đến khi a=b thì dừng Lúc đó: USCLN=a.
- BSCNN(a,b) = a*b DIV USCLN(a,b)
Trang 32Ý tưởng:
Dùng phương pháp vét cạn Ta biết rằng: a có thể có giá trị từ 19 (vì a là số hàngtrăm), b,c có thể có giá trị từ 09 Ta sẽ dùng 3 vòng lặp FOR lồng nhau để duyệt qua tất
cả các trường hợp của a,b,c
Ứng với mỗi bộ abc, ta sẽ kiểm tra: Nếu 100.a + 10.b + c = a3 + b3 + c3 thì in ra bộabc đó
Bài tập 11: Viết chương trình nhập vào số tự nhiên N rồi thông báo lên màn hình số đó
có phải là số nguyên tố hay không
Ý tưởng:
N là số nguyên tố nếu N không có ước số nào từ 2 N div 2 Từ định nghĩa này
ta đưa ra giải thuật:
- Đếm số ước số của N từ 2 N div 2 lưu vào biến d
For i:=2 To N div 2 Do
If N MOD i=0 Then d:=d+1;
Trang 33Mảng là một bảng chứa dữ liệu có cùng kiểu, trên các hàng cột, giá trị của dữ liệuđược xác định theo chỉ số hàng, cột Có hai loại mảng: Một chiều, hai chiều.
Ví dụ: Mảng một chiều a(n) với n là số nguyên nào đó, cho xác định số phần tử của
mảng, phần tử của mảng được xác định theo chỉ số, chẳng hạn phần tử thứ 3 của mảng a
ta ghi a[3] (dấu ngoặc vuông)
Mảng hai chiều a(n,m) thường có nxm phần tử, gồm có n hàng, m cột, một phần tửthứ i,j nào đó có nghĩa là phần tử ở hàng thứ i, cột thứ j
3.8.1 Khai báo.
a Mảng một chiều
- Cú pháp:
+ Khai báo gián tiếp:
TYPE <Kiểu mảng> = Array[ Chỉ số] OF <Kiểu dữ liệu>;
VAR <Biến mảng>:<Kiểu mảng>;
+ Khai báo trực tiếp:
VAR <Biến mảng> : ARRAY [chỉ số] OF <Kiểu dữ liệu>;
Chú ý: Chỉ số trong khai báo đối với Pascal phải được xác định trước ở khai báo hằnghoặc ghi cụ thể
b Mảng hai chiều.
- Cú pháp:
+ Khai báo gián tiếp:
TYPE <Kiểu mảng> = ARRAY [chỉ số1, chỉ số 2] OF <Kiểu dữ liệu>;
VAR <Biến mảng>:<Kiểu mảng>;
+ Khai báo trực tiếp:
VAR <Biến mảng> : ARRAY [chỉ số1, chỉ số 2] OF <Kiểu dữ liệu>;
- Ví dụ:
TYPE Mangnguyen = Array[1 100] of Integer;
Matrix = Array[1 10,1 10] of Integer;
MangKytu = Array[Byte] of Char;
Trang 34- Để truy cập đến phần tử thứ k trong mảng một chiều A, ta sử dụng cú pháp: A[k].
- Để truy cập đến phần tử (i,j) trong mảng hai chiều M, ta sử dụng cú pháp: M[i,j]
- Có thể sử dụng các thủ tục READ(LN)/WRITE(LN) đối với các phần tử của biến kiểumảng
Write(‘a[‘,i,’,’,j,’]=’);Readln(a[i,j]);
End;
3.8.3 Truy xuất các phần tử cho mảng.
- Để truy cập đến phần tử thứ k trong mảng một chiều A, ta sử dụng cú pháp: A[k]
- Để truy cập đến phần tử (i,j) trong mảng hai chiều M, ta sử dụng cú pháp: M[i,j]
- Có thể sử dụng các thủ tục READ(LN)/WRITE(LN) đối với các phần tử của biến kiểumảng
For j:=1 to m doWrite(a[i,j]:m);
34
Trang 35For i:=1 to n-1 do
For j:=I to n do
If a[j] <a[i] then
BeginX:=a[i]; a[i]:=a[j]; a[j]:=x;
End;
3.8.5 Tìm kiếm phần tử trong mảng.
Để tìm xem một phần tử x nào đó có trong mảng hay không Có nhiều phương pháptìm kiếm, nhưng đơn giản nhất là phương phàp tìm kiếm tuần tự
Ý tưởng: Duyệt từ đầu đến cuối mảng, tại mỗi phần tử của mảng, ta kiểm tra xem
phần tử đó có phải phần tử cần tìm không, nếu phải thì dừng lại xử lý và kết thúc tìmkiếm
BÀI TẬP MẪU
Bài tập 1: Viết chương trình tìm giá trị lớn nhất của một mảng chứa các số nguyêngồm N phần tử
Ý tưởng:
- Cho số lớn nhất là số đầu tiên: Max:=a[1]
- Duyệt qua các phần tử a[i], với i chạy từ 2 tới N: Nếu a[i]>Max thì thayMax:=a[i];
Trang 36Bài tập 3: Viết chương trình nhập vào một mảng gồm N số nguyên Sắp xếp lại mảng
theo thứ tự tăng dần và in kết quả ra màn hình
Trang 37Writeln(‘Ket qua sau khi sap xep:’);
For i:=1 To N Do Write(A[i]:5);
Readln;
End
Bài tập 4: Viết chương trình nhập vào một mảng A gồm N số nguyên và nhập thêm vào
một số nguyên X Hãy kiểm tra xem phần tử X có trong mảng A hay không?
Trang 38If I <= N Then Timkiem:=I Else Timkiem:=0;
Bài tập 5: Giả sử mảng A đã được sắp xếp theo thứ tự tăng dần Viết hàm để kiểm tra
xem phần tử X có trong mảng A hay không?
Ý tưởng:
So sánh x với phần tử ở giữa mảng A[giua] Nếu x=A[giua] thì dừng (vị trí cầntìm là chỉ số của phần tử giữa của mảng) Ngược lại, nếu x>A[giua] thì tìm ở đoạn saucủa mảng [giua+1,cuoi], ngược lại thì tìm ở đoạn đầu của mảng [dau,giua-1]
Sau đây là hàm cài đặt cho thuật toán này:
Bài tập 6: Cho một mảng 2 chiều A cấp mxn gồm các số nguyên và một số nguyên x.
Viết chương trình thực hiện các công việc sau:
a/ Đếm số lần xuất hiện của x trong A và vị trí của chúng
Trang 39For j:=2 To n Do {duyệt từng phần tử của dòng thứ i}
If max<A[i,j] Then max:=A[i,j];
{Cộng max vào biến S}
Bài tập 7: Viết chương trình nhập vào 2 mảng số nguyên A, B đại diện cho 2 tập hợp
(không thể có 2 phần tử trùng nhau trong một tập hợp) Trong quá trình nhập, phải kiểmtra: nếu phần tử vừa nhập vào đã có trong mảng thì không bổ sung vào mảng In ra mànhình các phần tử là giao của 2 tập hợp A, B
Trang 40Var A,B:Mang;
n,m:Byte;
Function KiemTra(x:Integer; n:Byte; A:Mang):Boolean;
Var i:Byte; Found:Boolean;
Begin
Found:=False;
i:=1;
While (i<=n) AND (not Found) Do
If x=A[i] Then Found:=True Else i:=i+1;