Sơ đồ tổng quát của một quá trình xử lý thông tin Mọi quá trình xử lý thông tin bằng máy tính hay bằng con người đều được thực hiện theo một qui trình sau: Dữ liệu data được nhập ở đầu
Trang 1TRƯỜNG ĐẠI HỌC QUẢNG BÌNH
BÀI GIẢNG
LƯU HÀNH NỘI BỘ
ĐỒNG HỚI, 1/2018
Trang 21
MỤC LỤC
CHƯƠNG 1 MỞ ĐẦU 4
1.1 CÁC KHÁI NIỆM CƠ BẢN VỀ TIN HỌC 4
1.1.1 Thông tin 4
1.1.2 Tin học 5
1.2 CẤU TRÚC TỔNG QUÁT CỦA MÁY TÍNH ĐIỆN TỬ 6
1.2.1 Phần cứng (Hardware) 6
1.2.2 Phần mềm (Software) 9
1.3 HỆ ĐIỀU HÀNH 10
1.3.1 Khái niệm 10
1.3.2 Tập tin và thư mục 10
CHƯƠNG 2 NGÔN NGỮ LẬP TRÌNH 13
2.1 KHÁI NIỆM VỀ NGÔN NGỮ LẬP TRÌNH 13
2.2 THUẬT TOÁN 13
2.3 LẬP TRÌNH CẤU TRÚC VÀ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 14
2.4 CÁC BƯỚC XÂY DỰNG CHƯƠNG TRÌNH 16
2.5 TRÌNH BIÊN DỊCH 17
2.6 GIỚI THIỆU VỀ PHẦN MỀM TURBO PASCAL 17
2.7 CẤU TRÚC CHUNG CỦA CHƯƠNG TRÌNH PASCAL VÀ CÁCH THỰC HIỆN 18
2.7.1 Cấu trúc chung của chương trình Pascal 18
2.7.2 Cách thực hiện một chương trình Pascal 19
CHƯƠNG 3 THÀNH PHẦN CỦA NGÔN NGỮ VÀ KIỂU DỮ LIỆU CHUẨN 21
3.1 CÁC PHẦN TỬ CƠ BẢN CỦA NGÔN NGỮ PASCAL 21
3.1.1 Bộ ký tự (Character) 21
3.1.2 Từ khoá (Keyword) 21
3.1.3 Tên và định danh (Indentifier) 21
3.1.4 Tên chuẩn 22
3.1.5 Dấu chấm phẩy và lời chú thích 22
3.2 CÁC KIỂU DỮ LIỆU ĐƠN GIẢN CHUẨN - CÁC HÀM CHUẨN 22
3.2.1 Khái niệm về dữ liệu và kiểu dữ liệu 22
3.2.2 Các kiểu dữ liệu đơn giản chuẩn 24
3.3 KHAI BÁO HẰNG, BIẾN, KIỂU DỮ LIỆU MỚI, BIỂU THỨC 29
3.3.1 Khai báo hằng 29
3.3.2 Khai báo biến 29
3.3.3 Khai báo kiểu dữ liệu mới 30
3.3.4 Biểu thức (Expression) 30
CHƯƠNG 4 CÁC CÂU LỆNH CƠ BẢN 32
Trang 32
4.1 PHÉP GÁN 32
4.2 LỆNH XUẤT/NHẬP DỮ LIỆU 32
4.2.1 Thủ tục xuất dữ liệu ra màn hình 32
4.2.2 Trình bày dữ liệu in ra 33
4.2.3 Thủ tục nhập dữ liệu 34
4.2.4 Kết hợp Write và Readln để đối thoại giữa người và máy 35
4.2.5 Một số thủ tục nhập phím đặc biệt 35
4.3 MỘT SỐ THỦ TỤC VÀ HÀM TRÌNH BÀY MÀN HÌNH TRONG PASCAL 35
CHƯƠNG 5 CÁC LỆNH CÓ CẤU TRÚC 37
5.1 CÂU LỆNH GHÉP 37
5.2 CÁC LỆNH LỰA CHỌN 37
5.2.1 Câu lệnh IF (rẽ nhánh theo điều kiện) 37
5.2.2 Câu lệnh Case (rẽ nhánh theo giá trị) 39
5.3 CÂU LỆNH LẶP 40
5.3.1 Câu lệnh For (Lặp với số lần lặp xác định) 40
5.3.2 Lặp với số lần lặp không định trước 42
5.3.3 Câu lệnh Break, Exit và Halt 45
CHƯƠNG 6 CHƯƠNG TRÌNH CON 49
6.1 KHÁI NIỆM CHƯƠNG TRÌNH CON 49
6.2 CÁC LOẠI CHƯƠNG TRÌNH CON 49
6.2.1 Thủ tục (Procedure) 49
6.2.2 Hàm (Function) 49
6.2.3 Sự khác nhau giữa thủ tục và hàm 49
6.3 BIẾN TOÀN CỤC, BIẾN CỤC BỘ VÀ CÁCH TRUYỀN THAM SỐ 51
6.3.1 Khái niệm biến toàn cục, biến cục bộ 51
6.3.2 Cách truyền tham số cho CTC 51
6.4 TÍNH ĐỆ QUI CỦA CHƯƠNG TRÌNH CON 53
6.5 CÁC HÀM VÀ THỦ TỤC THƯỜNG DÙNG 54
CHƯƠNG 7 MỘT SỐ CẤU TRÚC DỮ LIỆU CƠ SỞ 57
7.1 KIỂU LIỆT KÊ VÀ KIỂU ĐOẠN CON 57
7.1.1 Kiểu liệt kê (Enumerated scalar type) 57
7.1.2 Kiểu đoạn con (Sub-range type) 58
7.2 KIỂU MẢNG VÀ KIỂU XÂU KÝ TỰ 59
7.2.1 Kiểu mảng (ARRAY) 59
7.2.2 Kiểu xâu ký tự (String) 63
7.3 KIỂU TẬP HỢP VÀ KIỂU BẢN GHI 67
7.3.1 Kiểu tập hợp (Set type) 67
7.3.2 Kiểu bản ghi (Record type) 69
Trang 43
CHƯƠNG 8 KIỂU TỆP (FILE) 79
8.1 KHÁI NIỆM VỀ TỆP (FILE) 79
8.2 CÁCH KHAI BÁO 79
8.3 CẤU TRÚC VÀ PHÂN LOẠI TỆP 80
8.4 CÁC THỦ TỤC VÀ HÀM THAO TÁC TRÊN TỆP 80
8.5 MỘT SỐ THỦ TỤC VÀ HÀM THƯỜNG DÙNG 83
8.6 TỆP VĂN BẢN (TEXT FILE) 83
8.6.1 Khái niệm 83
8.6.2 Các thao tác trên tệp văn bản 84
Trang 54
CHƯƠNG 1 MỞ ĐẦU 1.1 CÁC KHÁI NIỆM CƠ BẢN VỀ TIN HỌC
1.1.1 Thông tin
a Khái niệm về thông tin
Khái niệm thông tin (information) được sử dụng thường ngày Con người có nhu cầu đọc báo, nghe đài, xem phim, đ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
Dữ liệu (data) là sự biểu diễn của thông tin và được thể hiện bằng các tín hiệu vật
lý Thông tin chứa đựng ý nghĩa còn dữ liệu là các sự kiện không có cấu trúc và không
có ý nghĩa nếu chúng không được tổ chức và xử lý
Hệ thống thông tin (information system) là một hệ thống ghi nhận dữ liệu, xử lý chúng để tạo nên thông tin có ý nghĩa hoặc dữ liệu mới
Hình 1.1 Hệ thống thông tin
b Đơn vị đo thông tin
Đơn vị dùng để đo thông tin gọi là bit Một bit tương ứng với một chỉ thị hoặc một thông báo nào đó về sự kiện có 1 trong 2 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)
Số học nhị phân sử dụng hai ký số 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ể xem như
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:
Byte KilôByte MêgaByte GigaByte TeraByte
Trang 65
c Sơ đồ tổng quát của một quá trình xử lý thông tin
Mọi quá trình xử lý thông tin bằng máy tính hay bằng con người đều được thực hiện theo một qui trình sau:
Dữ liệu (data) được nhập ở đầu vào (Input) Máy tính hay con người sẽ thực hiện quá trình xử lý nào đó để nhận được thông tin ở đầu ra (Output) Quá trình nhập dữ liệu,
xử lý và xuất thông tin đều có thể được lưu trữ
Nhập dữ liệu (Input)
Xử lý (Processing)
Xuất dữ liệu (output) Lưu trữ (Storage)
Hình 1.2 Mô hình tổng quát quá trình xử lý thông tin
d Xử lý thông tin bằng máy tính điện tử
Thông tin là kết quả bao gồm nhiều quá trình xử lý các dữ liệu và thông tin có thể trở thành dữ liệu mới để theo một quá trình xử lý dữ liệu khác tạo ra thông tin mới hơn theo ý đồ của con người
Con người có nhiều cách để có dữ liệu và thông tin Người ta có thể lưu trữ thông tin qua tranh vẽ, giấy, sách báo, hình ảnh trong phim, băng từ, Trong thời đại hiện nay, khi lượng thông tin đến với chúng ta càng lúc càng nhiều thì con người có thể dùng một công cụ hỗ trợ cho việc lưu trữ, chọn lọc và xử lý lại thông tin gọi là máy tính điện
tử (Computer) Máy tính điện tử giúp con người tiết kiệm rất nhiều thời gian, công sức
và tăng độ chính xác cao trong việc tự động hóa một phần hay toàn phần của quá trình
xử lý dữ liệu hay thông tin
1.1.2 Tin học
a Các lĩnh vực nghiên cứu của tin học
Tin học (Informatics) được định nghĩa là ngành khoa học nghiên cứu các phương pháp, công nghệ và kỹ thuật xử lý thông tin tự động Công cụ chủ yếu của tin học là máy tính điện tử và các thiết bị truyền tin khác Việc nghiên cứu chính của tin học nhắm vào hai kỹ thuật phát triển song song:
* Kỹ thuật phần cứng (hardware engineering): nghiên cứu chế tạo các thiết bị, linh kiện điện tử, công nghệ vật liệu mới hỗ trợ cho máy tính và mạng máy tính, đẩy mạnh khả năng xử lý toán học và truyền thông thông tin
* Kỹ thuật phần mềm (software engineering): nghiên cứu phát triển các hệ điều hành, ngôn ngữ lập trình cho các bài toán khoa học kỹ thuật, mô phỏng, điều khiển tự động, tổ chức dữ liệu và quản lý hệ thống thông tin
Trang 76
b Ứng dụng của tin học
Tin học hiện đang được ứng dụng rộng rãi trong tất cả các ngành nghề khác nhau của xã hội từ khoa học kỹ thuật, y học, kinh tế, công nghệ sản xuất đến khoa học xã hội, nghệ thuật, như:
Tự động hóa công tác văn phòng
1.2 CẤU TRÚC TỔNG QUÁT CỦA MÁY TÍNH ĐIỆN TỬ
Mỗi loại máy tính có thể có hình dạng hoặc cấu trúc khác nhau, tùy theo mục đích
sử dụng nhưng, một cách tổng quát, máy tính điện tử là một hệ xử lý thông tin tự động gồm 2 phần chính: phần cứng và phần mềm
1.2.1 Phần cứng (Hardware)
Phần cứng có thể được hiểu đơn giản là tất cả các phần trong một hệ máy tính mà chúng ta có thể thấy hoặc sờ được Phần cứng bao gồm 3 phần chính:
- Bộ nhớ (Memory)
- Đơn vị xử lý trung tâm (CPU - Central Processing Unit)
- Thiết bị nhập xuất (Input/Output)
Trang 8Bộ nhớ trong: gồm ROM và RAM:
- ROM (Read Only Memory) là Bộ nhớ chỉ đọc thông tin, dùng để lưu trữ các chương trình hệ thống, chương trình điều khiển việc nhập xuất cơ sở (ROM-BIOS : ROM- Basic Input/Output System) Thông tin trên ROM ghi vào và không thể thay đổi, không bị mất ngay cả khi không có điện
- RAM (Random Access Memory) là Bộ nhớ truy xuất ngẫu nhiên, được dùng để lưu trữ dữ kiện và chương trình trong quá trình thao tác và tính toán RAM có đặc điểm
là nội dung thông tin chứa trong nó sẽ mất đi khi mất điện hoặc tắt máy Dung lượng
bộ nhớ RAM cho các máy tính hiện nay thông thường vào khoảng 128 MB, 256 MB,
512 MB và có thể hơn nữa
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 bị mất khi không có điện Có thể cất giữ và di chuyển bộ nhớ ngoài độc lập với máy tính Hiện nay có các loại bộ nhớ ngoài phổ biến như:
- Đĩa cứng (hard disk) : phổ biến là đĩa cứng có dung lượng 20 GB, 30 GB, 40
GB, 60 GB, và lớn hơn nữa
- Đĩa quang (Compact disk): loại 4.72 inch, là thiết bị phổ biến dùng để lưu trữ các phần mềm mang nhiều thông tin, hình ảnh, âm thanh và thường được sử dụng trong các phương tiện đa truyền thông (multimedia) Có hai loại phổ biến là: đĩa CD (dung
Thiết bị
nhập
(Input)
Thiết bị xuất (Input)
Bộ xử lý trung tâm CPU (Central Processing Unit) Khối điều khiển
CU (Control Unit)
Khối tính toán ALU (Arithmetic Logic Unit)
Các thanh ghi (Register)
Bộ nhớ trong (ROM+RAM)
Bộ nhớ ngoài (đĩa cứng, đĩa mềm, đĩa
CD,…)
Trang 98
lượng khoảng 700 MB) và DVD (dung lượng khoảng 4.7 GB)
- Các loại bộ nhớ ngoài khác như thẻ nhớ (Memory Stick, Compact Flash Card), USB Flash Drive có dung lượng phổ biến là 32 MB, 64 MB, 128 MB,
Hard disk
Compact disk
Compact Flash Card
USB Flash Drive
Hình 1.4 Một số loại bộ nhớ ngoài
b Bộ xử lý trung tâm (CPU)
Bộ xử lý trung tâm chỉ huy các hoạt động của máy tính theo lệnh và thực hiện các phép tính CPU có 3 bộ phận chính: khối điều khiển, khối tính toán số học và logic, và một số thanh ghi
- Khối điều khiển (CU: Control Unit)
Là trung tâm điều hành máy tính Nó có nhiệm vụ giải mã các lệnh, tạo ra các tín hiệu điều khiển công việc của các bộ phận khác của máy tính theo yêu cầu của người
sử dụng hoặc theo chương trình đã cài đặt
- Khối tính toán số học và logic (ALU: Arithmetic-Logic Unit)
Bao gồm các thiết bị thực hiện các phép tính số học (cộng, trừ, nhân, chia, ), các phép tính logic (AND, OR, NOT, XOR) và các phép tính quan hệ (so sánh lớn hơn, nhỏ hơn, bằng nhau, )
- Các thanh ghi (Registers)
Được gắn chặt vào CPU bằng các mạch điện tử làm nhiệm vụ bộ nhớ trung gian Các thanh ghi mang các chức năng chuyên dụng giúp tăng tốc độ trao đổi thông tin trong máy tính
Ngoài ra, CPU còn được gắn với một đồng hồ (clock) hay còn gọi là bộ tạo xung nhịp Tần số đồng hồ càng cao thì tốc độ xử lý thông tin càng nhanh Thường thì đồng
hồ được gắn tương xứng với cấu hình máy và có các tần số dao động (cho các máy Pentium 4 trở lên) là 2.0 GHz, 2.2 GHz, hoặc cao hơn
c Các thiết bị xuất/ nhập
* Các thiết bị nhập:
- Bàn phím (Keyboard, thiết bị nhập chuẩn): là thiết bị nhập dữ liệu và câu lệnh,
Trang 10+ Nhóm phím chức năng (function keypad): gồm các phím từ F1 đến F12 và các phím như (phím di chuyển từng điểm), phím PgUp (lên trang màn hình), PgDn (xuống trang màn hình), Insert (chèn), Delete (xóa), Home (về đầu), End (về cuối) + Nhóm phím số (numeric keypad) như NumLock (cho các ký tự số), CapsLock (tạo các chữ in), ScrollLock (chế độ cuộn màn hình) thể hiện ở các đèn chỉ thị
- Chuột (Mouse): là thiết bị cần thiết phổ biến hiện nay, nhất là các máy tính chạy trong môi trường Windows Con chuột có kích thước vừa nắm tay di chuyển trên một tấm phẳng (mouse pad) theo hướng nào thì dấu nháy hoặc mũi tên trên màn hình sẽ di chuyển theo hướng đó tương ứng với vị trí của của viên bi hoặc tia sáng (optical mouse) nằm dưới bụng của nó Một số máy tính có con chuột được gắn trên bàn phím
- Máy quét hình (Scanner): là thiết bị dùng để nhập văn bản hay hình vẽ, hình chụp vào máy tính Thông tin nguyên thủy trên giấy sẽ được quét thành các tín hiệu số tạo thành các tập tin ảnh (image file)
- Máy chiếu (Projector): chức năng tương tự màn hình, thường được sử dụng thay cho màn hình trong các buổi Seminar, báo cáo, thuyết trình,…
1.2.2 Phần mềm (Software)
a Khái niệm phần mềm
Phần mềm là một bộ chương trình các chỉ thị điện tử ra lệnh cho máy tính thực
Trang 112003,
- Phần mềm ứng dụng (Application Software)
Phần mềm ứng dụng rất phong phú và đa dạng, bao gồm những chương trình được viết ra cho một hay nhiều mục đích ứng dụng cụ thể như soạn thảo văn bản, tính toán, phân tích số liệu, tổ chức hệ thống, bảo mật thông tin, đồ họa, chơi games
1.3 HỆ ĐIỀU HÀNH
1.3.1 Khái niệm
Hệ điều hành (Operating System) là tập hợp các chương trình tạo sự liên hệ giữa người sử dụng máy tính và máy tính thông qua các lệnh điều khiển Không có hệ điều hành thì máy tính không thể hoạt động được Chức năng chính của hệ điều hành là:
- Thực hiện các lệnh theo yêu cầu của người sử dụng máy,
- Quản lý, phân phối và thu hồi bộ nhớ ,
- Điều khiển các thiết bị ngoại vi như ổ đĩa, máy in, bàn phím, màn hình,
Trang 1211
với một tên riêng phân biệt Mỗi hệ điều hành có qui ước đặt tên khác nhau, tên tập tin thường có 2 phần: phần tên (name) và phần mở rộng (extension) Phần tên là phần bắt buộc phải có của một tập tin, còn phần mở rộng thì có thể có hoặc không
- Phần tên: Bao gồm các ký tự chữ từ A đến Z, các chữ số từ 0 đến 9, các ký tự khác như #, $, %, ~, ^, @, (, ), !, _, khoảng trắng Phần tên do người tạo ra tập tin đặt Với MS- DOS phần tên có tối đa là 8 ký tự, với Windows phần tên có thể đặt ttối đa
128 ký tự
- Phần mở rộng: thường dùng 3 ký tự trong các ký tự nêu trên Thông thường phần
mở rộng do chương trình ứng dụng tạo ra tập tin tự đặt
- Giữa phần tên và phần mở rộng có một dấu chấm (.) ngăn cách
Ví dụ: CONG VAN.TXT QBASIC.EXE AUTOEXEC.BAT
Ta có thể căn cứ vào phần mở rộng để xác định kiểu của file:
- COM, EXE: Các file khả thi chạy trực tiếp được trên hệ điều hành
- TXT, DOC, : Các file văn bản
- PAS, BAS, : Các file chương trình PASCAL, DELPHI, BASIC,
- WK1, XLS, : Các file chương trình bảng tính LOTUS, EXCEL
- BMP, GIF, JPG, : Các file hình ảnh
- MP3, DAT, WMA, …: Các file âm thanh, video
Ký hiệu đại diện
Để chỉ một nhóm các tập tin, ta có thể sử dụng hai ký hiệu đại diện: Dấu ? dùng
để đại diện cho một ký tự bất kỳ trong tên tập tin tại vị trí nó xuất hiện Dấu * dùng để đại diện cho một chuỗi ký tự bất kỳ trong tên tập tin từ vị trí nó xuất hiện
b Thư mục (Folder/Directory)
Thư mục là nơi lưu giữ các tập tin theo một chủ đề nào đó theo ý người sử dụng Đây là biện pháp giúp ta quản lý được tập tin, dễ dàng tìm kiếm chúng khi cần truy xuất Các tập tin có liên quan với nhau có thể được xếp trong cùng một thư mục Trên mỗi đĩa có một thư mục chung gọi là thư mục gốc Thư mục gốc không có tên riêng và được ký hiệu là \ (dấu xổ phải: backslash) Dưới mỗi thư mục gốc có các tập tin trực thuộc và các thư mục con Trong các thư mục con cũng có các tập tin trực thuộc và thư mục con của nó Thư mục chứa thư mục con gọi là thư mục cha
Thư mục đang làm việc gọi là thư mục hiện hành
Tên của thư mục tuân thủ theo cách đặt tên của tập tin
c Ổ đĩa (Drive)
Trang 1312
Ổ đĩa là thiết bị dùng để đọc và ghi thông tin, các ổ đĩa thông dụng là:
- Ổ đĩa mềm: thường có tên là ổ đĩa A:, dùng cho việc đọc và ghi thông tin lên đĩa mềm
- Ổ đĩa cứng: được đặt tên là ổ C:,D:, có tốc độ truy xuất dữ liệu nhanh hơn ổ đĩa mềm nhiều lần Một máy tính có thể có một hoặc nhiều ổ đĩa cứng
- Ổ đĩa CD: có các loại như: loại chỉ có thể đọc gọi là ổ đĩa CD-ROM, loại khác còn có thể ghi dữ liệu ra đĩa CD gọi là ổ CD-RW, ngoài ra còn có ổ đĩa DVD
d Đường dẫn (Path)
Khi sử dụng thư mục nhiều cấp (cây thư mục) thì ta cần chỉ rõ thư mục cần truy xuất Đường dẫn dùng để chỉ đường đi đến thư mục cần truy xuất (thư mục sau cùng) Đường dẫn là một dãy các thư mục liên tiếp nhau và được phân cách bởi
Ví dụ: cây thư mục trên đĩa C:
Trang 1413
CHƯƠNG 2 NGÔN NGỮ LẬP TRÌNH 2.1 KHÁI NIỆM VỀ NGÔN NGỮ LẬP TRÌNH
Ngôn ngữ lập trình (programming language) là dạng ngôn ngữ được chuẩn hóa theo một hệ thống các quy tắc riêng, sao cho qua đó người lập trình có thể mô tả các chương trình làm việc dành cho thiết bị điện tử mà cả con người và các thiết bị đó đều hiểu được
Đặc điểm chung của ngôn ngữ lập trình
Mỗi ngôn ngữ lập trình có thể được xem như là một tập hợp của các chi tiết kỹ thuật chú trọng đến cú pháp, từ vựng và ý nghĩa của ngôn ngữ Những chi tiết kỹ thuật này thường bao gồm:
Dữ liệu và cấu trúc dữ liệu
Câu lệnh và dòng điều khiển
Các tên và các tham số
Các cơ chế tham khảo và sự tái sử dụng
Đối với các ngôn ngữ phổ biến hoặc có lịch sử lâu dài, người ta thường tổ chức các hội thảo chuẩn hoá nhằm tạo ra và công bố các tiêu chuẩn chính thức cho ngôn ngữ
đó, cũng như thảo luận về việc mở rộng, bổ sung cho các tiêu chuẩn trước đó Ví dụ: Với ngôn ngữ C++, hội đồng tiêu chuẩn ANSI C++ và ISO C++ đã tổ chức đến 13 cuộc hội thảo để điều chỉnh và nâng cấp ngôn ngữ này Đối với các ngôn ngữ lập trình web như JavaScript, ta có chuẩn ECMA, W3C
2.2 THUẬT TOÁN
Thuật toán, còn gọi là giải thuật, là một tập hợp hữu hạn hay một dãy các qui tắc chặt chẽ của các chỉ thị, phương cách hay 1 trình tự các thao tác trên một đối tượng cụ thể được xác định và định nghĩa rõ ràng cho việc hoàn tất một số sự việc từ một trạng thái ban đầu cho trước; khi các chỉ thị này được áp dụng triệt để thì sẽ dẫn đến kết quả sau cùng như đã dự đoán trước
Nói cách khác, thuật toán là một bộ các quy tắc hay quy trình cụ thể nhằm giải quyết một vấn đề nào đó trong một số bước hữu hạn, hoặc nhằm cung cấp một kết quả
từ một tập hợp của các dữ kiện đưa vào
Ví dụ: thuật toán để giải phương trình bậc nhất f(x): ax + b = c, (a, b, c là các số thực), trong tập hợp các số thực có thể là một bộ các bước sau đây:
Nếu a = 0
b = c thì f(x) có nghiệm bất kì
Trang 1514
b ≠ c thì f(x) vô nghiệm
Nếu a ≠ 0
f(x) có duy nhất một nghiệm x = (c - b)/a
Một thuật toán có các tính chất sau:
Tính chính xác: để đảm bảo kết quả tính toán hay các thao tác mà máy tính thực hiện được là chính xác
Tính rõ ràng: Thuật toán phải được thể hiện bằng các câu lệnh minh bạch; các câu lệnh được sắp xếp theo thứ tự nhất định
Tính khách quan: Một thuật toán dù được viết bởi nhiều người trên nhiều máy tính vẫn phải cho kết quả như nhau
Tính phổ dụng: Thuật toán không chỉ áp dụng cho một bài toán nhất định mà có thể áp dụng cho một lớp các bài toán có đầu vào tương tự nhau
Tính kết thúc: Thuật toán phải gồm một số hữu hạn các bước tính toán
2.3 LẬP TRÌNH CẤU TRÚC VÀ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Lập trình hướng cấu trúc có thể được định nghĩa như là một kỹ thuật lập trình phần mềm ứng dụng theo thiết kế tuần tự từ trên xuống với những khối lệnh hướng cấu trúc
Phong cách lập trình này đặc trưng bởi xu hướng lập trình truyền thống được dùng
để phân chia mã nguồn chương trình thành các khối cấu trúc logic bao hồm các câu lệnh điều kiện, vòng lặp và các khối điều kiện logic khác
Kiểu lập trình này sẽ thực hiện tuần tự theo thứ tự xuất hiện của các bit được nhập vào
Trang 1615
Lập trình hướng đối tượng (OOP) có thể định nghĩa theo một cách đơn giản nhất
là một kỹ thuật lập trình phần mềm ứng dụng có sự tương tác giữa các chương trình nhỏ hoặc các đối tượng nằm trong chương trình chính
Nói cách khác, lập trình hướng đối tượng được hiểu như là một quá trình sử dụng các lớp để trình diễn từng phân khu chức năng khác nhau hoặc các đối tượng dữ liệu trong một ứng dụng phần mềm Những đối tượng dữ liệu này chứa trong nó các trường
dữ liệu (thuộc tính) và các phương thức dùng để định nghĩa các thao tác với dữ liệu
Trang 1716
2.4 CÁC BƯỚC XÂY DỰNG CHƯƠNG TRÌNH
Việc sử dụng máy tính điện tử (MTÐT) để giải quyết một vấn đề nào đó thường được quan niệm một cách không chuẩn xác, đơn giản đó chỉ là việc lập trình thuần túy Thực ra, đó là cả một quá trình phức tạp bao gồm nhiều giai đoạn phát triển mà lập trình chỉ là một trong các giai đoạn đó (thậm chí chưa chắc đã là phần việc quan trọng nhất) Các bước quan trọng của toàn bộ quá trình được liệt kê dưới đây:
Bước 1 Xác định vấn đề - bài toán
Bước đầu tiên của bước phân tích hệ thống là nhằm phát biểu chính xác vấn đề - bài toán, làm rõ những yêu cầu mà người sử dụng đòi hỏi Sau khi nghiên cứu vấn đề được đặt ra, người phân tích viên thiết lập mối phụ thuộc giữa các dữ kiện và kết quả phải tìm Trên cơ sở có được mô hình vấn đề - bài toán, người phân tích viên sẽ đánh giá, nhận định tính khả thi của vấn đề - bài toán được đặt ra có đáng phải giải quyết không?
Bước 2 Lựa chọn phương pháp giải
Có thể có nhiều cách khác nhau để giải quyết vấn đề - bài toán đã thiết lập ở bước
1 Các phương pháp có thể khác nhau về thời gian thực hiện chi phí lưu trữ dữ liệu, độ chính xác Nói chung không có phương pháp tối ưu về mọi phương diện Tùy theo nhu cầu cụ thể mà lựa chọn phương pháp thích hợp Việc lựa chọn trên cũng cần căn
cứ vào khả năng xử lý tự động mà ta sẽ sử dụng
Bước 3 Xây dựng thuật toán hoặc thuật giải
Xây dựng mô hình chặt chẽ, chính xác hơn và chi tiết hóa hơn phương pháp đã lựa chọn Xác định rõ ràng dữ liệu vào, ra cho các bước thực hiện cơ bản và trật tự thực hiện các bước cơ bản đó Nên áp dụng phương pháp thiết kế có cấu trúc, từ thiết kế tổng thể tiến hành làm mịn dần từng bước
Bước 4 Cài đặt chương trình
Mô tả thuật giải bằng chương trình Dựa vào thuật giải đã được xây dựng, căn cứ quy tắc của một ngôn ngữ lập trình để soạn thảo ra chương trình thể hiện giải thuật thiết lập ở bước 3
Bước 5 Hiệu chỉnh chương trình
Ở bước 4, nói chung chúng ta không tránh khỏi sai sót Ở bước 5 này chúng ta cho chương trình chạy thử để phát hiện và điều chỉnh các sai sót nếu tìm thấy
Có hai loại lỗi:
Lỗi cú pháp là lỗi do không tuân thủ đúng các quy tắc viết chương trình trên một ngôn ngữ lập trình cụ thể
Trang 1817
Lỗi ngữ nghĩa là lỗi làm sai lạc ý nghĩa hoặc dẫn đến bế tắc của chương trình Lỗi
cú pháp thường dễ phát hiện và hiệu chỉnh hơn lỗi ngữ nghĩa Cần phải nói rằng việc hiệu chỉnh chương trình khá phức tạp, mất nhiều thời gian và công sức Việc xây dựng tốt, phù hợp, đầy đủ các bộ dữ liệu để kiểm chứng chương trình là hết sức quan trọng, giúp phát hiện ra các lỗi ngữ nghĩa của chương trình cũng như có thể có vấn đề gì đó bị
bỏ sót
Bước 6 Thực hiện chương trình
Cho MTÐT thực hiện chương trình Tiến hành phân tích kết quả thu được Việc phân tích kết quả nhằm khẳng định kết quả đó có phù hợp hay không Nếu không, cần kiểm tra lại toàn bộ các bước một lần nữa Nói chung, dù thận trọng đến mức nào đi nữa thì sau mỗi bước thực hiện nêu trên cũng không khẳng định được kết quả thực hiện từng bước là đúng đắn tuyệt đối Hơn nữa, như ở bước 5, ta chỉ hiệu chỉnh tất cả các lỗi
đã được phát hiện Còn có thể có sai sót khác của chương trình với một bộ dữ liệu nào khác phức tạp hơn mà ta chưa có cơ hội để phát hiện trước đó Do đó, ta không thể khẳng định được rằng, chương trình đúng tuyệt đối, không còn sai sót nữa Như vậy, việc giải quyết một vấn đề cụ thể thực hiện qua hai giai đoạn Giai đoạn đầu là giai đoạn quan niệm, gồm các bước phân tích, lựa chọn mô hình, xây dựng thuật giải, cài đặt chương trình Giai đoạn sau là khai thác và bảo trì chương trình Trong quá trình sử dụng, nói chung thường có nhu cầu về cải tiến, mở rộng chương trình do các yếu tố của bài toán ban đầu có thể thay đổi
2.5 TRÌNH BIÊN DỊCH
Trình biên dịch, còn gọi là phần mềm biên dịch, compiler, là một chương trình máy tính làm công việc dịch một chuỗi các câu lệnh được viết bằng một ngôn ngữ lập trình (gọi là ngôn ngữ nguồn hay mã nguồn), thành một chương trình tương đương nhưng ở dưới dạng một ngôn ngữ máy tính mới (gọi là ngôn ngữ đích) và thường là ngôn ngữ ở cấp thấp hơn, như ngôn ngữ máy Chương trình mới được dịch này gọi mã đối tượng
2.6 GIỚI THIỆU VỀ PHẦN MỀM TURBO PASCAL
Pascal là ngôn ngữ lập trình cấp cao do Niklaus Wirth, giáo sư điện toán trường Đại học kỹ thuật Zurich (Thủy Sĩ) sáng tác và công bố vào đầu những năm 1970, với tên là Pascal để kỷ niệm nhà toán học và triết học nổi tiếng người Pháp Blaise Pascal Lúc đầu Pascal được thiết kế với mục đích làm một ngôn ngữ máy tính để dạy học cho sinh viên ở các trường đại học: Nó giúp cho sinh viên cũng như những người mới học lập trình có được thói quen viết được một chương trình có cấu trúc rõ ràng, dễ
Trang 1918
hiểu, dễ sữa chữa - cải tiến và dễ đọc
Trong quá trình phát triển, Pascal đã phát huy được ưu điểm của mình và tỏ ra hơn hẳn nhiều ngôn ngữ cấp cao khác, Pascal đã trở thành một ngôn ngữ mạnh được ứng dụng trong rất nhiều lĩnh vực khác nhau Các công ty và tổ chức chuyên về máy tính dựa trên Pascal chuẩn đã phát triển thêm và tạo ra các chương trình dịch ngôn ngữ Pascal với nhiều phần thêm bớt khác nhau Ví dụ ISO PASCAL, Turbo Pascal của hãng Borland (Mỹ), Quick Pascal của hãng Microsoft, UCSD Pascal, Ansi Pascal,
So với nhiều sản phẩm Pascal của nhiều tổ chức và công ty khác nhau xuất bản, Turbo Pascal đã tỏ ra có nhiều ưu điểm như: Tốc độ dịch nhanh, chương trình dịch Pascal được viết rất gọn, và hiện nay đã trở thành một ngôn ngữ lập trình cấp cao phổ biến trên thế giới, được sử dụng trong lĩnh vực giảng dạy và lập trình chuyên nghiệp Chỉ trong vòng mấy năm qua Turbo Pascal đã được cải tiến qua nhiều phiên bản: 1.0, 2.0, 3.0, 4.0, 5.0, 5.5 (1989), 6.0 (1990), 7.0 (1992)
Để đánh giá những đóng góp trong lĩnh vực Tin học, nhất là sự ra đời của ngôn ngữ lập trình Pascal, Hội Tin học Mỹ (ACM) đã trao giải thưởng quốc tế lớn về Tin học mang tên Turing cho ông Niklaus Wirth
2.7 CẤU TRÚC CHUNG CỦA CHƯƠNG TRÌNH PASCAL VÀ CÁCH THỰC HIỆN
2.7.1 Cấu trúc chung của chương trình Pascal
Cấu trúc chung của một chương trình Pascal gồm 3 phần:
Phần 1: Phần tiêu đề (tên) của chương trình
Program <tên chương trình>;
Phần 2: Phần khai báo: Hằng, biến, mô tả kiểu dữ liệu, khai báo chương
trình con
USES {khai báo các Units}
LABLE {danh sách các nhãn}
CONST {khai báo các hằng}
TYPE {khai báo các kiểu dữ liệu mới}
VAR {khai báo các biến}
PROCEDURE {khai báo các thủ tục}
FUNCTION {khai báo các hàm}
Phần 3: Phần thân chương trình
BEGIN
Trang 2019
{các lệnh của chương trình}
END
Chú ý:
- Phần 1: Bắt đầu bằng từ khóa Program, sau đó là tên của chương trình do
người lập trình tự đặt và kết thức bằng dấu chấm phẩy Phần này có thể có hoặc không (không bắt buộc)
- Phần 3: Phần này bắt buộc phải có đối với mọi chương trình Phần này được
bắt đầu bằng từ khóa BEGIN, kết thúc bằng từ khóa END và dấu chấm (.)
Một chương trình bao gồm các câu lệnh, mỗi câu lệnh thực hiện một công việc nào đó Trên một dòng có thể viết một hay nhiều câu lệnh
2.7.2 Cách thực hiện một chương trình Pascal
Gồm 3 bước:
Bước 1: Bước thảo chương trình
- Khởi động Turbo Pascal
- Soạn thảo văn bản chương trình (muốn ghi văn bản chương trình vào đĩa thì
ấn phím F2)
Bước 2: Biên dịch (Alt + F9)
Gọi chương trình dịch (Compiler) Pascal Chương trinh dịch có nhiệm vụ dịch chương trình viết bằng Pascal của người lập trình sang mã máy (chứa trong các tệp
*.com, *.exe, *.obj)
Khi biên dịch nếu chương trình dịch phát hiện ra lỗi cú pháp khi viết chương trình thì nó sẽ báo lỗi và ta phải quay lại bước 1 Nếu không có lỗi thì sang bước tiếp theo Bước 3: Chạy chương trình (Ctrl + F9) và thử kết quả
Nếu các kết quả nhận được là sai (ví dụ nếu người lập trình kiểm tra lại bằng một
số giá trị cụ thể) thì ta phải tự tìm lỗi vì đây là lỗi logic, lỗi về thuật toán, máy tính
Trang 2221
CHƯƠNG 3 THÀNH PHẦN CỦA NGÔN NGỮ VÀ KIỂU DỮ LIỆU CHUẨN 3.1 CÁC PHẦN TỬ CƠ BẢN CỦA NGÔN NGỮ PASCAL
3.1.1 Bộ ký tự (Character)
Ngôn ngữ lập trình Pascal được xây dựng với bộ ký tự (bộ chữ viết) sau:
+ Bộ 26 chữ cái la tinh: 26 chữ cái lớn: A, B, C, , Z
26 chữ cái nhỏ: a, b, c, , z
+ Ký tự gạch nối _
+ Các chữ số thập phân: 0, 1, 2, 3, , 9
+ Các ký hiệu toán học thông dụng: +, -, *, /, =, >, < , (, ),
+ Các ký hiệu đặc biệt khác như: , ; ‘ ] [ ! @ # $ % ^ & ~
+ Dấu cách (Space - dùng để ngăn cách giữa các từ)
3.1.2 Từ khoá (Keyword)
Từ khóa là các từ dành riêng của Turbo Pascal, mỗi từ có một chức năng nhất định, khi sử dụng phải dùng đúng với cú pháp và không được dùng vào việc khác hay đặt tên mới trùng với từ khóa Đó là các từ:
+ Từ khóa chung: PROGRAM, BEGIN, END, PROCEDURE, FUNCTION, + Từ khóa để khai báo: CONST, VAR, LABLE, TYPE, ARRAY, STRING, RECORD, SET, FILE, OF,
+ Từ khóa của câu lệnh rẽ nhánh và lặp: IF, THEN, CASE, OF, FOR, TO, DO, DOWN, WHILE, REPEAT, UNTIL,
+ Từ khóa điều khiển: WITH, GOTO,
+ Từ khóa toán tử: AND, OR, NOT, XOR, IN, DIV, MOD,
TP không phân biệt chữ in thường và chữ in hoa Ví dụ các cách viết sau có ý nghĩa hoàn toàn giống nhau: BEGIN, BeGin, Begin, begin,
3.1.3 Tên và định danh (Indentifier)
Tên hoặc định danh là một dãy ký tự được tạo thành từ các chữ cái, chữ số và dấu gạch nối (_) dùng để đặt tên cho các đại lượng trong chương trình như tên hằng, tên biến, tên kiểu dữ liệu, tên mảng, tên hàm, tên chương trình, Ký tự đầu tiên của tên không được là chữ số, tên không được trùng với các từ khóa và số ký tự tối đa của tên
là 127 ký tự
Ví dụ:
Trang 23Sự khác nhau giữa tên chuẩn và từ khóa là người sử dụng có thể định nghĩa lại các tên chuẩn, dùng tên chuẩn vào việc khác (nếu muốn), còn từ khóa thì phải dùng đúng với qui định của TP Chẳng hạn, ta có thể định nghĩa ra một hàm có tên là Sin(x) để tính căn bậc hai của x chẳng hạn (nếu ta muốn) Song ta không thể dùng từ khóa Var
để làm bất cứ việc gì khác ngoài công dụng đã qui định sẳn của nó là dùng để khai báo biến
3.1.5 Dấu chấm phẩy và lời chú thích
Dấu chấm phẩy (;) được dùng để ngăn cách giữa các câu lệnh của TP (không phải
là dấu kết thúc lệnh)
TP cho phép người lập trình có thể đưa vào văn bản chương trình các lời bình luận, giải thích, ghi chú để làm cho chương trình dễ đọc, dễ hiểu hơn mà không ảnh hưởng gì đến sự làm việc của chương trình Các lời giải thích được đặt giữa hai dấu { } hoặc giữa hai cụm dấu (* *) và có thể viết trên một dòng hay nhiều dòng Khi biên dịch, chương trình dịch sẽ bỏ qua những chú thích đó
Ví dụ: {day la phan khai bao bien}
(*Day la phan than chuong trinh*)
3.2 CÁC KIỂU DỮ LIỆU ĐƠN GIẢN CHUẨN - CÁC HÀM CHUẨN
3.2.1 Khái niệm về dữ liệu và kiểu dữ liệu
Trang 2423
Chỳng ta cú thể định nghĩa dữ liệu (Data) là tất cả những gỡ được mỏy tớnh xử lý Cỏc kiểu dữ liệu cần tới mỏy tớnh xử lý cú rất nhiều, tồn tại dưới nhiều dạng khỏc nhau
về bản chất, về ý nghĩa, chứ khụng phải chỉ là cỏc số liệu mà cũn là cỏc ký tự, cỏc mệnh
đề logic thể hiện qua cỏc đối tượng cụ thể như tiền lương, địa chỉ, tuổi, văn bản, tớn hiệu Song nếu xột về phương diện điện tử thỡ mỏy tớnh chỉ hiểu cỏc thụng tin được biểu diễn dưới dạng mó nhị phõn Về phương diện ngụn ngữ bậc cao thỡ dữ liệu được khỏi quỏt húa với cỏc kiểu dữ liệu Khi đú ta khụng cần quan tõm đến biểu diễn chi tiết trong mỏy tớnh của cỏc kiểu dữ liệu
Một kiểu dữ liệu được định nghĩa với 2 điểm chớnh là:
- Một tập hợp cỏc giỏ trị mà một biến thuộc kiểu đú cú thể nhận được
Hỡnh 3.1 Phõn loại cỏc kiểu dữ liệu của ngụn ngữ pascal
Cỏc kiểu cú dấu (*) gọi là kiểu vụ hướng đếm được
Một biến phải được gắn liền với một kiểu dữ liệu mà chỉ một mà thụi Trong ngụn
Kiểu xâu ký tự (String)
Kiểu vô h-ớng do ng-ời lập trình định nghĩa
Kiểu dữ liệu có cấu trúc (Structured Type)
Kiểu con trỏ (Pointer Type)
Kiểu khoảng con range)(*)
(Sub-Kiểu liệt kê (Enumerated)(*)
Kiểu dữ liệu
(Data Type)
Kiểu vô h-ớng (Scalar Type)
Kiểu logic (Boolean) (*) Kiểu số nguyên (Integer)(*) Kiểu số thực (Real)
Kiểu kí tự (Char)(*) Kiểu cơ sở
Kiểu mảng (Array) Kiểu tập hợp (Set) Kiểu bản ghi (Record) Kiểu tệp (File)
Trang 253.2.2 Các kiểu dữ liệu đơn giản chuẩn
3.2.2.1 Kiểu logic (Boolean)
Kiểu logic được định nghĩa với từ khóa Boolean Một giá trị thuộc kiểu Boolean
là một đại lượng nhận một trong hai giá trị logic: TRUE (đúng) hoặc FALSE (sai) Với quan hệ thứ tự FALSE <TRUE
Các phép toán trên kiểu Boolean:
XOR Phép hoặc triệt tiêu
Các biểu thức quan hệ luôn luôn cho kết quả là kiểu Boolean
Hai vế của biểu thức so sánh phải có cùng kiểu dữ liệu với nhau (ngoại trừ các kiểu dữ liệu số)
Bảng chân trị của các phép toán quan hệ
Trang 2625
3.2.2.2 Kiểu số nguyên (Integer)
Kiểu số nguyên được định nghĩa với từ khóa Integer
Một giá trị kiểu số nguyên là một phần tử của tập các số nguyên mà ta có thể biểu diễn được trên máy tính, nghĩa là nó là một tập nhỏ của không gian các số nguyên chứ không phải tất cả mọi số nguyuên đều có thể xử lý trên máy được
Các số thuộc kiểu số nguyên Integer được biểu diễn bằng hai byte (16 bit) nên có phạm vi trong khoảng từ -32768 (-215) đến 32767 (-215-1)
-32768 0 32767 //////////+ -+ -+//////////
Hình 3.2 Phạm vi biểu diễn của số nguyên kiểu Integer
- Phép chia lấy phần nguyên: DIV
Ví dụ: 20 DIV 7 = 2 (do 20:7=2 dư 6)
- Phép chia lấy phần dư: MOD
Ví dụ: 17 MOD 5 = 2 (do 17:5=3 dư 2)
Trang 2726
- Các phép tính quan hệ: Các số nguyên có thể so sánh với các số thực và cho kết quả kiểu Boolean
Ví dụ: 3<5.2 cho giá trị TRUE
7<4 cho giá trị FALSE
* Các hàm số học chuẩn cho kiểu số nguyên:
- Hàm ODD(n) cho giá trị bằng TRUE nếu n là số lẽ, FALSE nếu n là một số chẵn
- Hàm SUCC(n): Cho số nguyên tiếp theo sau n, tức n+1
- Hàm PRED(n): Cho số nguyên trước n, tức n-1
* Chú ý: Các số nguyên Integer được biểu diễn bằng 2 byte, bên cạnh đó TP còn
định nghĩa thêm một kiểu đơn giản chuẩn là kiểu số nguyên bằng một byte, với từ khóa
là BYTE Phạm vi biểu diễn của kiểu BYTE là từ 0 đến 255
+ Không tồn tại các phép toán DIV, MOD cho kiểu số thực
Trong máy tính các số thực được biểu diễn, được viết dưới hai dạng:
- Dạng dấu phẩy tỉnh:
Ví dụ: 3.5 -3.654 0.023
- Dạng dấu phẩy động: Mỗi số được viết dưới dạng dấu phẩy động bao gồm
hai phần: Phần định trị và phần mũ viết dưới dạng sau chữ E để biểu diễn số mũ của cơ
sẽ được viết dưới dạng dấu phẩy động là: -6.312456E-01
Phần định trị và phần mũ đều có thể có dấu đi kèm
Trang 28+ ABS(x): Cho giá trị tuyệt đối của x
+ SQR(x): Cho giá trị bình phương của x
+ Các hàm lượng giác: SIN(x), COS(x), ARCTAN(x)
+ LN(x)
+ EXP(x): Hàm ex
+ SQRT(x): Cho giá trị căn bậc hai của x
+ TRUNC(x): Cho số nguyên là phần nguyên của x
Ví dụ: Để biểu diễn ký tự A ta có thể dùng ba cách: 'A', CHR(65), #65
* Các hàm chuẩn trên kiểu ký tự:
+ Hàm ORD('c'): Cho ra số thứ tự của ký tự c trong bảng mã ASCII
Ví dụ: ORD('E') = 69
+ Hàm CHR(n): Cho ký tự có mã là n trong bảng mã ASCII
Ví dụ: CHR(76) = 'L'
Trang 29Ví dụ: 'A'<'B' vì Ord('A')=65 và Ord('B')=66
'A'<'a' vì Ord('A')=65 và Ord('a')=97
Chú ý:
* Mô tả số nguyên với Word, Longint, Shortint:
Turbo Pascal từ Version 4.0 trở đi đã định nghĩa thêm một số kiểu số nguyên mới với các từ khóa: Word, Longint, Shortint Sau đây là bảng liệt kê các tham số của các kiểu dữ liệu số nguyên
Trang 3029
Extended 1.9E-4951+1.1E+4932 19-20 10
* Khỏi niệm kiểu đếm được và khụng đếm được:
Kiểu dữ liệu đếm được là kiểu mà ta cú thể dựng kiểu số nguyờn để đếm Do vậy, kiểu khụng đếm được chỉ cú duy nhất là kiểu số thực Real
3.3.2 Khai bỏo biến
Biến là đại lượng mà giỏ trị của nú cú thể thay đổi khi thực hiện chương trỡnh Biến là tờn của một vựng ụ nhớ lưu trử dữ liệu, mỗi biến phải thuộc về một kiểu dữ liệu nhất định
Cỏch khai bỏo biến:
Var Tờn_biến : Kiểu_dữ_liệu_của_biến;
Kiểu đếm đ-ợc: Integer, Byte, Word, Longint, Shortint,
Boolean, Char, SubRange (đoạn con), Enumerated (Liệt kê)
Kiểu không đếm đ-ợc: Real, Single, Double, Extended Kiểu vô h-ớng
Trang 313.3.3 Khai báo kiểu dữ liệu mới
Trong TP các kiểu dữ liệu như: Real, Integer, Byte, đã được định nghĩa sẳn nên
có thể dùng trực tiếp ngay khi khai báo biến Ngoài ra, người lập trình còn có thể định nghĩa các kiểu dữ liệu mới với từ khóa Type như sau:
Type Tên_kiểu = mô_tả_xây_dựng_kiểu;
Ví dụ:
Type Tuoi_tho = 1 100;
Thu_ngay = (hai, ba, bon, nam, sau, bay, chu nhat);
Var tuoi : Tuoi_tho;
Thu : Thu_ngay;
3.3.4 Biểu thức (Expression)
Một biểu thức được tạo bởi các phép toán và các toán hạng dùng để thể hiện một công thức toán học Trong đó toán tử là là dấu các phép toán và toán hạng có thể là hằng, hàm, biến
Chú ý: Một hằng, hàm, biến cũng được xem là biểu thức, đó là biểu thức đơn
gian và kiểu của biểu thức là kiểu của kết quả sau khi tính giá trị biểu thức
Trình tự tính từ trái sang phải với thứ tự ưu tiên của các phép toán như sau: Dấu ( ) Biểu thức trong ngoặc được ưu tiên nhất
NOT, - (dấu trừ) Các phép toán một toán hạng
*, /, DIV, MOD, AND Các phép tính loại nhân cùng mức ưu tiên
+, -, OR, XOR Các phép tính loại cộng cùng mức ưu tiên
=, <>, <=, >=, >, <, IN Các phép toán quan hệ có cùng mức ưu tiên
Ví dụ:
Trang 3231
a
* 2
(sqr(x)+5*x-a)/(sqrt(x)-1)
BÀI TẬP
1 Viết giải thuật để hoán đổi giá trị của 2 biến a,b có kiểu số thực
2 Viết giải thuật để hoán đổi giá trị của 2 biến a,b có kiểu số thực mà không dùng biến trung gian
3 Nếu x là một biến kiểu Char thì biểu thức sau cho kết quả đúng hay sai:
x = CHR(ORD(x))
4 Tìm công thức để đổi một kí tự thường thành một kí tự hoa, cho biết STT của
kí tự ‘A’ trong bảng mã ASCII là 65 và STT của kí tự ‘a’ là 97
5 Cho x là một biến kiểu nguyên Hỏi câu lệnh x:=10/2 đúng hay sai? Tại sao?
6 Hãy cho biết biểu thức sau đây có cú pháp đúng hay sai:
(4>10-6) OR ORD(‘A’)=65 XOR NOT(‘A’<‘B’)
Nếu đúng, hãy cho biết kết quả? Nếu sai thì chỉ ra vị trí lỗi?
7 Biễu diễn công thức sau bằng ngôn ngữ Pascal
x2
Trang 33Sự thực hiện của phép gán: đầu tiên máy tính tính giá trị của biểu thức vế phải sau
đó nó gán giá trị tính được cho biến ở vế trái
Kiểu của biểu thức, biến, hằng ở vế phải và kiểu của biến ở vế trái phải giống nhau, trừ trường hợp một biến thực có thể nhận giá trị nguyên
Trang 34Trong khi dùng thủ tục Write và Writeln, có hai cách viết để trình bày dữ liệu in
ra là cách hiện thị có qui cách và cách hiển thị không có qui cách
a Hiển thị kiểu số nguyên
- Cách hiển thị không có qui cách:
Khi ta không chỉ rõ qui cách hiển thị trong thủ tục Write, Writeln thì máy tính sẽ hiển thị giá trị của các itemi ra màn hình với số chỗ đúng bằng số chữ số nó cần có Máy sẽ bố trí các số nguyên từ bên trái sang bên phải
Như vậy, cách viết có qui cách sẽ căn lề bên phải, còn cách viết không có qui cách
sẽ căn lề bên trái
b Hiển thị kiểu số thực
- Cách hiển thị không có qui cách:
Tương tự hiển thị với kiểu số nguyên, nhưng các số thực được hiển thị dưới dạng
Trang 3534
Kết quả sẽ xuất hiện trên màn hình như sau:
1.2536520000E+02 1.2354000000E+00
Trong ví dụ trên, phần thập phân sẽ được phân thành 4 chỗ, nếu số đó không có
đủ 4 phần thập phân thì máy sẽ thêm số 0 vào sau số đó, nếu số đó có phần thập phân lớn hơn 4 số thì máy sẽ làm tròn đến 4 số thập phân
4.2.3 Thủ tục nhập dữ liệu
Phép gán có tác dụng gán giá trị cho một biến ở trong chương trình Tuy nhiên, để gán giá trị cho một biến thông qua thiết bị vào chuẩn là bàn phím, ta dùng thủ tục Read hoặc Readln
Read(biến1,biến2, ,biếnN); (1) Readln(biến1,biến2, ,biếnN); (2)
Thủ tục (1) và (2) có tác dụng đọc dữ liệu từ bàn phím vào cho các biến biếni
tương ứng Các dữ liệu vào cho các biến tương ứng phải được cách nhau bởi ít nhất là một dấu cách hoặc Tab hoặc Enter Để vào dữ liệu cho các biến ta ấn Enter
Khi đọc dữ liệu vào cho các biến, thủ tục Read và Readln còn kiểm tra xem các
dữ liệu gõ vào có tương thích với kiểu dữ liệu của biến hay không
Riêng thủ tục (3), là thủ tục không có tham số, máy tính chỉ chờ ấn phím Enter Thủ tục này thường được sử dụng khi muốn chương trình dừng lại ở một chỗ nào đó, sau đó ta ấn Enter để tiếp tục
Chú ý : dữ liệu gõ vào từ bàn phím phải tương ứng với kiểu dữ liệu của các biến
Ví dụ:
Program DT_HCN ;
Trang 3635
Uses CRT ; Var s,a,b :Real ; Begin
Clrscr ; Write('Nhap a, b : ') ; Readln(a,b) ;
S :=a*b ; Writeln('DT HCN la: ',s :8 :2) ; Readln
End
4.2.4 Kết hợp Write và Readln để đối thoại giữa người và máy
Khi ta dùng thủ tục Read và Readln để vào dữ liệu cho các biến thì có một nhược điểm là không có chỉ dẫn ở trên màn hình để báo cho biết chúng ta đang cần đưa giá trị vào cho biến bào Vì vậy ta có thể kết hợp thủ tục Write và thủ tục Readln để quá trình nhập dữ liệu được dễ dàng và đẹp mắt
Hàm Keypressed: Có kiểu Boolean, cho giá trị bằng True khi có một phím bất
kỳ được ấn hay có ký tự gõ vào mà chưa được lấy ra xử lý, cho giá trị bằng False trong trường hợp ngược lại
4.3 MỘT SỐ THỦ TỤC VÀ HÀM TRÌNH BÀY MÀN HÌNH TRONG PASCAL
Để sử dụng các thủ tục trình bày màn hình, ta phải khai báo USES CRT; (Unit CRT là Unit chứa các thủ tục trình bày màn hình)
GOTOXY(x,y) : Đặt con trỏ màn hình vào tọa độ (x,y) của màn hình Với x là tọa độ cột (từ 1 đến 80), y là tọa độ dòng (từ 1 đến 25) Góc tọa độ (0,0) là tại vị trí góc trên bên trái của màn hình
Trang 3837
CHƯƠNG 5 CÁC LỆNH CÓ CẤU TRÚC 5.1 CÂU LỆNH GHÉP
Câu lệnh ghép là một nhóm các câu lệnh được đặt giữa hai từ khóa Begin và End Begin
- IF, THEN, ELSE: Là các từ khóa
- Biểu thức điều kiện:
+ Điều kiện đơn giản: Sử dụng các phép toán quan hệ =, >, <, >=, <=
+ Điều kiện phức tạp: Là liên kết các điều kiện đơn giản bằng các phép toán logic: AND, OR, NOT, XOR
+ Toán tử logic: TRUE, FALSE
Trang 39Ngược lại, thực hiện <lệnh 2> (đối với dạng khuyết: Nếu đúng thì thực hiện
<lệnh>, ngược lại sang b3)
b3: Kết thúc câu lệnh
Ví dụ 1:
IF a>=b THEN max:=a ELSE max:=b;
Ví dụ 2: Tìm giá trị lớn nhất và nhỏ nhất của hai số a,b
Writeln('Gia tri be nhat: ', min);
Writeln('Gia tri lon nhat: ', max);
Trang 4039
Var a,b,x:real;
Begin
Write('Nhap a,b: ');Readln(a,b);
IF a<>0 THEN Writeln('Nghiem x=',-b/a:6:2) ELSE
IF b=0 THEN Writeln('Phuong trinh VSN') ELSE Writeln('Phuong trinh VN');
Readln;
End
5.2.2 Câu lệnh Case (rẽ nhánh theo giá trị)
Câu lệnh IF chỉ thực hiện rẽ nhánh tương ứng với hai giá trị của biểu thức Boolean Việc thử và chọn một trong nhiều nhánh sẽ được thực hiện với câu lệnh CASE như sau:
- Dạng khuyết:
CASE <biểu_thức> OF
Tập giá trị 1: <lệnh 1> ; Tập giá trị 2: <lệnh 2> ;
… Tập giá trị n: <lệnh n> ;
END;
- Dạng đầy đủ:
CASE <biểu_thức> OF
Tập giá trị 1: <lệnh 1> ; Tập giá trị 2: <lệnh 2> ;
… Tập giá trị n: <lệnh n> ;