Tiết 29
Bài toán, thuật toán và giải thuật
I. Thuật giải và chơng trình
1. Thuật giải
Giáo s Wirth, ngời sáng tác ra Pascal đã viết một cuốn sách với một câu triết lý
ALGOIRTHMS + DATA STRUCTUES = PROGRAMS
Nghĩa là
Thuật giải + Cấu trúc dữ liệu = Chơng trình
- Định nghĩa: Thuật giải ( thuật toán ) là một tập hợp hữu hạn các thao tác (các
công việc, các phép toán...) có thể đặt tên đợc và đợc thực hiện theo một trình tự
thích hợp đối với một số đối tợng nào đó để đạt đợc điều mong muốn.
2. Chơng trình
- Định nghĩa: Chơng trình là tập hợp các dãy lệnh điều khiển máy tính thực hiện.
Nh vậy có thể nói một chơng trình là một cách diễn tả thuật giải trong một ngôn
ngữ chính xác để máy có thể hiểu đợc.
3. Các cách diễn đạt thuật giải
a. bằng lời
thí dụ:Thuật giải nấu cơm có thể viết nh sau:
Bớc 1: Lấy gạo theo định lợng cần thiết
Bớc 2: Vo gạo và đổ gạo nớc vào nồi
Bớc 3: Đun sôi cạn nớc
Bớc 4: Giữ lửa nhỏ
Bớc 5: Các 5 phút một: nếm cơm xem chín cha
Nếu cha chín quay về bớc 5
Nếu chín thì chuyển sang bớc 6
Bớc 6: Tắt lửa và bắc nồi cơm ra. Kết thúc
b. Bằng ngôn ngữ lập trình
Pascal là một trong những ngôn ngữ thuật giải, nghĩa là tự nó đã diễn tả thuật giải
cần tiến hành. Đây là một u điểm nổi trội của Pascal giúp cho ngời lập trình có
ngay t duy xây dựng thuật giải mà không cần dùng lu đồ.
c. Bằng lu đồ
II.Các khái niệm cơ bản của ngôn ngữ Turbo pascal
1. Bộ kí tự: Bao gồm:
- Các chữ cái ( chữ thờng, chữ hoa)
- Các chữ số thập phân
- Các dấu toán học thông thờng
- Dấu gạch nối
- Các kí hiệu đặc biệt: .,;? % @ $ # ^
2. Từ khoá
Là các từ riêng của Pascal ( từ tiếng anh), có nghĩa đợc xác định, không đợc
dùng nó vào việc khác hoặc đặt tên mới trùng với các từ khoá.
Có các loại từ khoá:
- Từ khoá chung: PROGRAM, BEGIN, END, ....
1
- Từ khoá để khai báo: CONST, VAR, TYPE, ARRAY, STRING...
- Từ khoá của lệnh lựa chọn: IF.. THEN...ELSE, CASE..OF
- Từ khoá của lệnh lặp: FOR..TO..DO, FOR... DOWNTO..DO
- Từ khóa điều khiển: WITH, GOTO
- Từ khoá toán tử: AND, OR, NOT, IN, DIV, MOD
3. Tên chuẩn: Là tên đã đợc định nghĩa sẵn trong PascaLdùng để chỉ các hằng,
các biến.
Sự khác nhau giữa các từ khoá và tên chuẩn là tên chuẩn có thể đặt lại và dùng vào
việc khác nếu muốn, còn từ khoá phải dùng đúng với qui định của Pascal.
4. Tên: Là danh hiệu từ đặt cho tên biến, tên hằng, và tên kiểu dữ liệu, tên chơng
trình con.
Tên là một dãy kí tự đợc bắt đầu bằng một chữ cái, sau đó là các chữ cái, chữ số
hay dấu nối
Ví dụ: Tên đúng: x, Biến_đếm, S1, PT_Bậc 2
Tên sai: PT bậc 2, 3ABC, g(x).
Pascal không phân biệt chữ hoa hay chữ thờng trong một danh hiệu.
Chú ý: Khi viết chơng trình ta nên đặt các danh hiệu sao cho nói lên đợc ý nghĩa
các đối tợng mà chúng biểu thị nhng đồng thời phải ngắn gon.
III. Cấu trúc của một chơng trình Pascal
1. Cấu trúc tổng quát:Một chơng trình Pascal đầy đủ phải gồm 3 phần sau:
Phần 1: Phần tiêu đề của chơng trình
PROGRAM Tên_Chơng_Trình;
Phần 2: Phần khai báo để mô tả các đối tợng của chơng trình, các kiểu dữ liệu
USES....; {Khai báo các unit}
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}
....
Phần 3: Phần thân chơng trình chứa các lệnh để máy tính thực hiện
BEGIN
......................(*Các lệnh của chơng trình*)
END.
Chú ý:
- Phần 1: Có thể có hoặc không. Tên chơng trình do ngời lập trình tự đặt và sau nó
phải có dấu chấm phẩy
- Phần 2: Tuỳ theo chơng trình cụ thể mà khai báo có thể có hay không và có thể
lặp lại một số lần.
- Phần 3: Phần này bắt buộc phải có đối với mọi chơng trình. Cuối chơng trình có
dấu chấm.
- Lời giải thích: Trong chơng trình có thể đa vào các lời giải thích, ghi chú để dễ
đọc, dễ hiểu hơn mà không ảnh hởng đén sự làm việc của chơng trình. Các lời giải
thích đợc đặt trong dấu{} hay (*...*)
2
- Dấu chấm phẩy dùng để ngăn cách các câu lệnh của Pascal. Trớc END.
Không có dấu chấm phẩy
- Câu lệnh: Một chơng trình 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 1 hoặc nhiều câu lệnh
2. Các bớc để chạy một chơng trình
Ví dụ: Tạo lập và in ra màn hình hai dòng thông báo sau
TURBO PASCAL
XIN chào các bạn yêu thích tin học
Bớc 1: Khởi động Pascal
Bớc 2: Lập trình
a. Đặt tên chơng trình
Đa hộp sáng tới menu File ấn ENTER hoặc nhấn tổ hợp phím ALT+F sẽ xuất hiện
bảng chọn dọc, trong bảng chọn này ta chọn vào mục SAVE hoặc ấn tổ hợp phím
F2 màn hình xuất hiện hộp đối thoại, ghi tên tệp vào mục FILE NAME rồi ấn
ENTER.
b. Soạn thảo văn bản chơng trình
Program VD1;
Uses CRT;
Begin
CLRSCR;
Writeln(TURBO PASCAL);
Writeln(XIN chào các bạn yêu thích tin học);
END.
Soạn thảo xong muốn ghi văn bản nhấn F2
Bớc 3: Dịch chơng trình ấn ALT+ F9
Bớc 4: Biên dịch và thực hiện chơng trình: CTRL+ F9
Khi dịch, máy sẽ kiểm tra ngữ pháp của từng lệnh, gặp lệnh nào sai hay nhập sai
máy dừng lại, trên màn hình có thông báo nguyên nhân sai của lỗi, tiến hành sửa
lỗi và gõ lại CTRL+ F9 để chạy tiếp.
Bớc 5: Thoát khỏi Pascal: ALT+X
3
Tiết 30
Bảng kí tự và các kiểu dữ kiệu đơn giản chuẩn của
Pascal
I. Các kiểu dữ liệu cơ sở
1. Kiểu lôgíc
Kiểu lôgíc chỉ có hai giá trị: TRUE (Đ), FALSE(S)
Các phép toán của kiểu lôgíc: AND, OR, NOT, XOR
Tác dụng của các phép toán thể hiện trong bảng sau:
A B NOT A A AND B A OR B A XOR B
TRUE
TRUE
FALSE
FALSE
TRUE
FALSE
TRUE
FALSE
FALSE
FALSE
TRUE
TRUE
TRUE
FALSE
FALSE
FALSE
TRUE
TRUE
TRUE
FALSE
FALSE
TRUE
TRUE
FALSE
2. Kiểu số nguyên
- Có năm kiểu số nguyên: shortint, byte, Integer, Word, Longint.
- Kích thớc và phạm vi biểu diễn của chúng nh sau:
Tên Miền trị Yêu cầu bộ nhớ
shortint -128 đến 127 1 byte
Integer -32768 đến 32767 2 byte
Longint -2147483648 đến 2147483647 4 byte
byte 0 đến 255 1 byte
Word 0 đến 65553 2 byte
- Các phép toán: +, -, *( nhân), /( chia), DIV( chia lấy phần nguyên), MOD
( chia lấy phần d).
Chú ý:
- Các giá trị kiểu Byte và Word là số nguyên không dấu
- Cho phép sử dụng các số nguyên có độ lớn trong phạm vi Longint
- Khi viết số nguyên phải tuân theo qui định sau
o Các chữ số viết phải liền nhau
o Dấu + hay phải đặt ngay trớc chữ số đầu tiên
o Không đợc sử dụng chữ số thập phân
3. Kiểu số thực
- Có năm kiểu số thực: Single, Real, Doule,extended và Comp.
- Kích thớc và phạm vi biểu diễn của chúng đợc biểu diễn nh sau:
Tên Miền trị Yêu cầu bộ nhớ
Single 1.5*10
-45
đến 3.4*10
38
4 byte
Real 2.9*10
-39
đến 1.7*10
38
6 byte
Doule 5.0*10
-324
đến 1.7*10
308
8 byte
extended 3.4* 10
-4932
đến 1.1*10
4932
10 byte
Comp -9.2*10
18
đến 9.2*10
18
8 byte
- Các phép toán: +, -, *, /
- Cách viết số thực: Các giá trị thực đợc viết theo 2 cách
4
+ Cách 1: Số đợc viết theo cách thông thờng, ví dụ 234.56, -125.5
+ Cách 2: Số đợc tách ra thành 2 phần chính là định trị và bậc. Phần định trị là một
số nguyên hoặc thực. Phần bậc là một số nguyên. Hai phần này đợc cách nhau bởi
chữ E hoặc e
Chú ý:
- Các kí tự biểu diễn một số thực phải liền nhau
4. Kiểu kí tự ( Char)
Một giá trị kiểu Char chiếm 1 byte và biểu diễn một kí tự thông qua bảng mã
ACSII. Mã của một kí tự chính là số thứ tự của nó trong bảng mã (xem phần biểu
diễn cuối sách). Có tất cả 256 kí tự đánh số từ 0 đến 255
Để biểu diễn kí tự ta dùng 1 trong các ba cách sau:
- Đặt kí tự trong 2 dấu nháy đơn: Ví dụ A, B, *...
- Dùng hàm Chr(n) trong đó n là mã của kí tự cần biểu diễn. Ví dụ chr(65) là
A.
- Dùng #n Ví dụ #65
Kiểu kí tự chỉ có phép toán so sánh, sự so sánh dựa vào mã kí tự ch. Ví dụ A <
a
Hàm Upcase(ch): Cho ra kí tự hoa tơng ứng với kí tự ch. Ví dụ Upcase(a) =
Avà Upcase(B) = B
5. Kiểu xâu kí tự( String)
Một giá trị kiểu string là một dãy kí tự bất kì đặt trong hai dấu nháy đơn. Số kí tự
trong dãy không quá 255. Xâu không có kí tự gọi là xâu rỗng.
Ví dụ Ho va ten: 9 kí tự
: Xâu rỗng
Lu ý: Việc dùng kiểu dữ liệu nào là phải phù hợp với bài toán đó sao cho chiếm
dụng bộ nhớ là tối u.
II. Khai báo hằng, biến, kiểu dữ liệu, biểu thức và các hàm chuẩn
1. Khai báo hằng
Hằng là một đại lợng có giá trị xác định và không thay đổi. Hằng đợc khai báo
bằng từ khoá CONST nh sau
CONST Tên_hằng=giá_trị_hằng;
Hay CONST Tên_hằng=biểu_thức_hằng;
Ví dụ Const g=9,81;
Q=2*g;
2. Khai báo biến
Biến là đại lợng mà trị của nó có thể thay đổi khi thực hiện chơng trình, mỗi biến
phải thuộc về một kiểu dữ liệu nhất định. Biến của chơng trình là tên một vùng nhớ
lu trữ dữ liệu. Vùng bộ nhớ của biến kiểu Integer chỉ chứa các giá trị integer. Tơng
tự kiểu biến Real chỉ chứa đợc các giá trị Real...
Mọi biến trứơc khi sử dụng trong chơng trình cần đợc khai báo sau từ khoá VAR
nh sau:
VAR
Tên_biến:kiểu_dữ_liệu_của_biến
Trong đó: Tên biến do ngời lập trình đặt
5