Tải bản đầy đủ (.docx) (20 trang)

Lập trình Pascal cơ bản cực kì hay và tuyệt vời

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (210.61 KB, 20 trang )

Lập trình Pascal cơ bản
Lập trình Pascal cơ bản

Chuyên đề: Pascal cơ bản
Bài 1-Cấu trúc+Write&Read+Thuật toán+If … then …
I/ Cấu trúc một chương trình Pascal
1. Cấu trúc
- Một chương trình Pascal gồm 2 phần.

+ Phần khai báo bao gồm: khai báo biến; khai báo thư viện
+ Phần thân bao gồm các lệnh mà máy tính cần thực hiện. Bắt đầu =
Begin và kết thức = End.
- Khai báo thư viện: bắt đầu bằng uses tenthuvien[cosan]
- Khai báo biến: kiểu dữ liệu
2. Kiểu dữ liệu
- Một số kiểu dữ liệu phổ biến nhất trong Pascal:
+ Số nguyên: integer
+ Số thực: real (số thực là tập hợp số âm, số dương, số 0 và số thập phân)
+ Kí tự: char (VD: a, b, c, 1, % và dấu cách)
+ Xâu kí tự: string (VD: ABC, fefei, 122et, &$*#, Thành Huy)
- Các phép toán với dữ liệu
Kí hiệu
+

*
/
Div
Mod
VD: 5 và 2

Phép toán


Cộng
Trừ
Nhân
Chia
Chia lấy phần nguyên
Chia lấy phần dư

5+2=7

5/2 = 2,5

5–2=3

5 div 2 = 2

5 * 2 = 10

5 mod 2 = 1

Kiểu dữ liệu
Số nguyên, số thực
Số nguyên, số thực
Số nguyên, số thực
Số thực ( vì khi chia số nguyên có thể ra số
thực)
Số nguyên
Số nguyên

( có nghĩa là 5
chia 2 = 2 dư 1)


 Ab ( trong toán học)
 a * b * ((a+2)/(8-4)) – (7/(x*x)) – (5/(8*(4*x -7)))
3. Các kí hiệu

Kí hiệu trong Pascal
=
<>

- Trong pascal

Phép so sánh
Bằng
Khác

Kí hiệu trong toán học
=



Lập trình Pascal cơ bản
Lập trình Pascal cơ bản

<
Nhỏ hơn
<
>
Lớn hơn
>
<=

Nhỏ hơn hoặc bằng

>=
Lớn hơn hoặc bằng

- Trong Pascal, các biểu thức so sánh trả về kết quả Đ hoặc S
4. Cách khai báo và sử dụng biến trong chương trình
a) Cách khai báo biến
var tenbien:kieudulieu; (tất cả các câu lệnh trong Pascal khi kết thúc đều phải
có dấu ‘;’ trừ một số ngoại lệ như begin,…)
Trong đó: var là từ khóa để khai báo biến
Tên biến là do người lập trình đặt (ko chứa kí tự đặc biệt (^, &, *,…), ko cách, ko
bắt đầu bằng chữ số (VD: 1abc - là sai)
Kiểu dữ liệu: là các kiểu dữ liệu có sẵn trong Chương trình
Có thể khai báo như sau: a,b :integer; vì khi khai báo có 2 hoặc nhiều biến hơn
cùng kiểu dữ liệu thì gộp như trên.
- Bài tập nhỏ
Hãy khai báo 3 biến kiểu số nguyên; 3 biến kiểu số thực; 3 biến kiểu kí tự; 3 biến
kiểu xâu kí tự.
Làm thử
var …,…,…:………….;
…,…,…:………….;
…,…,…:………….;
…,…,…:………….;
b) Cách sử dụng biến
- Gán giá trị mới cho biến thì giá trị cũ bị xóa đi
- Cú pháp của phép gán: tênbiến:= biểuthức;

II/ Lệnh Read & Write
5. Hai lệnh cơ bản của Pascal

- Lệnh in ra màn hình:

-

Write(‘Nội dung cần tìm’); - Phần nội dung phải để trong cặp dấu ngoặc ‘ ’
VD: Write(‘Toán’); -> trên màn hình sẽ hiển thị chữ Toán
Writeln(‘Nội dung cần tìm’); - Phần nội dung phải để trong cặp dấu ngoặc ‘ ’
VD: Writeln(‘Toán’); -> trên màn hình sẽ hiển thị chữ Toán và xuống dòng
{Có thể In ra một biến có sẵn (Lúc sau sẽ nói)}
Lệnh nhập dữ liệu vào:
Read(biến);
VD: Read(biến); -> trên màn hình sẽ hiển thị một phần cho nhập giá trị
Readln(biến);
VD: Readln(biến); -> trên màn hình
VD: Hãy viết một phần mềm nhập vào 3 số kiểu nguyên và in 3 số ra:


Lập trình Pascal cơ bản
Lập trình Pascal cơ bản

- Lệnh readln; ở cuối có nghĩa là dừng màn hình (làm cho màn hình đứng lại)
 Kết quả:

Các số 5,6,7 trên hình do mình tự nhập

III/ Thuật toán & Hướng dẫn giải một bài toán
6. Các bước để giải 1 bài toán
- Một bài toán để giải bằng Pascal cần thực hiện 3 bước (thuật toán)

B1: Xác định bài toán (Input – Output)

B2: Mô tả bài toán (Mô tả = lời)
B3: Dựa vào phần mô tả bằng lời -> viết lệnh trên chương trình
VD: Nhập 3 số a,b,c. Ktra xem đó có phải là 3 cạnh của tam giác không, Nếu phải tính
chu vi của hình. Nếu sai in thông báo
(Cách viết thuật toán ở dưới phần 2)

IV/ Cấu trúc lệnh điều kiện


Lập trình Pascal cơ bản
Lập trình Pascal cơ bản
7. Câu lệnh điều kiện

(1 – Dạng thiếu) If <điều kiện> then <câu lệnh>;
(2 – Dạng đủ)

If <điều kiện> thên <câu lệnh 1> else <câu lệnh 2>;

Ý nghĩa câu lệnh:
If < điều kiện> then <câu lệnh>;
Là nếu điều kiện được đưa ra đúng thì sẽ thực hiện câu lệnh
If <điều kiện> thên <câu lệnh 1> else <câu lệnh 2>;
Điều kiện là một phép so sánh, chỉ có thể đúng hoặc sai
Là nếu điều kiện được đưa ra đúng thì sẽ thực hiện câu lệnh 1 nếu sai thì thực hiện câu
lệnh 2.
-

Câu lệnh 1,2 là 1 lệnh. Nếu là nhiều lệnh phải thực hiện phải đặt lệnh trong cặp:
Nếu dạng thiếu
Đặt các câu lệnh trong cặp Begin – End; (có ‘’;’’)

Nếu dạng đủ
Đặt các câu lệnh 1 trong cặp begin – End (Không có ; & đây cũng chính là ngoại
lệ thứ 3 về không có ‘’;’’)
Đặt các câu lệnh 2 trong cặp begin – End;
VD: Nhập 3 số a,b,c. Ktra xem đó có phải là 3 cạnh của tam giác không, Nếu phải
tính chu vi của hình. Nếu sai in thông báo
Thuật toán:

Input: a,b,c
Output: Có phải 3 cạnh của tam giác. Đúng: in chu vi. Sai in thông báo
Mô tả: <CÓ THỂ BỎ CHỮ MÔ TẢ>
B1: Nhập a,b,c.
B2: Kiểm tra: -> Nếu a+b>c và a+c>b và b+c>a thì là cạnh của tam giác -> |
| -> Cvi:= a+b+c
 Viết thành lệnh:

Var a,b,c:integer;
Begin
Write(‘Nhap a: ’); readln(a);
Write(‘Nhap b: ’); readln(b);


Lập trình Pascal cơ bản
Lập trình Pascal cơ bản

Write(‘Nhap c: ’); readln(c);
If ((a+b)>c)) and ((a+c)>b)) and ((b+c)>a)) then
Begin
Write(‘Chu vi cua hinh tam giac la: ’);
Writeln(a+b+c);

End
Else Writeln(‘Khong phai la tam giac’);
Readln {Trường hợp ngoại trừ thứ 2: không ‘;’ sau lệnh }
End.
Bài 2: Nhập x, tính y biết y=5x+8
Thuật toán <Điền vào chỗ ‘’…’’>
Input: …
Output: …
B1: Nhập …
B2: Tính … -> - x=0 -> y= …
| | x<>0 -> y=5*x+8
 Viết thành lệnh

Var x,y:integer;
Begin
Write(‘Nhap x: ’); readln(x);
If x=0 then y:=0 else y:=5*x+8;
Writeln(‘y= ’,y);
Readln
End.
Bài 3: Nhập 3 số a,b,c. Tìm số lớn nhất trong 3 số a,b,c (Dựa vào thuật toán viết thành
lệnh)
Thuật toán:


Lập trình Pascal cơ bản
Lập trình Pascal cơ bản

Input: a,b,c
Output: Số lớn nhất

B1: Nhập a,b,c
B2: Gán sln:=a
B3: Nếu slnB4: Nếu slnB5: In sln (sln: số lớn nhất)
Lệnh:
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………
…………………………………………………………………

Lưu ý: Có thể sử dụng các câu lẹnh if…then lồng nhau.
Sử dụng từ khóa and có thể kết hợp nhiều phép so sánh đơn giản thành một
phép so sánh phức hợp. Giá trị của phép so sánh này là đúng khi và chỉ khi tất cả các
phép so sánh đơn giản đều đúng. Ngược lại chỉ cần 1 phép sai thì nó có giá trị là sai.


Lập trình Pascal cơ bản
Lập trình Pascal cơ bản

Từ khóa or cũng được sử dụng để kết hợp nhiều phép so sánh đơn giản. Giá trị

của phép so sánh này chỉ sai khi tất cả các phép so sánh đều sai. Ngược lại chỉ cần 1
phép đúng thì nó có giá trị là đúng.
-

Suy ra từ khóa and và or thì ngược nhau

-

Bài tập
Nhập vào 3 cạnh của H.TamGiác, tính chu vi, diện tích.
Viết lệnh nhập vào 2 số và ktra số nào lớn hơn và in ra màn hình số lớn hơn.

-

BTVN
Viết lệnh để tìm một số có 2 chữ số biết tổng các chữ số =5 và chữ số hàng chục >
chữ số hàng đơn vị là 1.
Viết chương trình nhập vào tên, tuổi, số điểm 4 môn và in ra TBC điểm 4 môn.

Chuyên đề: Pascal cơ bản
Bài 2-For … do+Write&Read+Thuật toán+If … then …
I/ Cấu trúc lệnh lặp với số lần đếm trước


Lập trình Pascal cơ bản
Lập trình Pascal cơ bản
1.
2.
-


Khái niệm
Là lặp đi lặp lại nhiều việc hoặc 1 việc với một số lần cho sẵn
Ví dụ lặp
Ví dụ:

Writeln(‘Nhap so thu ’, ‘1’,’ :’); Writeln(‘Nhap so thu ’, ‘2’,’ :’);
Writeln(‘Nhap so thu ’, ‘3’,’ :’); Writeln(‘Nhap so thu ’, ‘4’,’ :’);
 Chúng ta có thể viết lệnh lặp cho 4 phần này. (cách viết ở phần 3)
3. Cú pháp

For <biến đếm(bắt buộc phải là integer hoặc …)>:=<giá trị đầu> to <giá trị cuối> do
<câu lệnh>
+ Trong đó for, to, do là từ khóa.
+ Biến đếm là một số nguyên
+ Số lần lặp = giá trị cuối – giá trị đầu + 1
+ Mỗi lần lặp biến đếm tự tăng lên 1
+ Giá trị đầu< Giá trị cuối
VD: Write(‘Nhap so thu ’, ‘1’,’ :’); Write(‘Nhap so thu ’, ‘2’,’ :’);
Write(‘Nhap so thu ’, ‘3’,’ :’); Write(‘Nhap so thu ’, ‘4’,’ :’);
For i:=1 to 4 do writeln(‘Nhap so thu ‘, i, ‘ :’);
 Số vòng: 4

In ra
i:=1 -> Nhap so thu 1 :
i:=2 -> Nhap so thu 2 :
i:=3 -> Nhap so thu 3 :
i:=4 -> Nhap so thu 4 :
VD: S = 1+2+…+20
Lệnh
{Phần trước cậu tự viết nhé}

s:=0;
for i:=1 to 20 do s:=s+i;


Lập trình Pascal cơ bản
Lập trình Pascal cơ bản

*****
I=1 -> s=s+1 -> s=0+1=1
I=2 -> s=s+2 -> s=1+2=3
I=3 -> s=s+3 -> s=3+3=6
I=4 -> s=s+4 -> s=6+4=10
I=5
I=6
I=7
I=8
…..
I=20
Bài 1: Tính tổng các số lẻ từ 1 -> 50 và in ra kết quả
Mẫu:
Thuật toán:
Input: {Không có}
Output: Tổng các số lẻ từ 1 -> 50
B1: Chạy từ 1 -> 50
B2: Nếu là lẻ thì cộng vào tổng
B3: In ra k.quả
Lệnh
Var i,s:integer;
Begin
S:=0;

For i:=1 to 50 do if i mod 2=1 then s:=s+i;
Writeln(‘Tổng là: ‘, s);
Readln
End.


Lập trình Pascal cơ bản
Lập trình Pascal cơ bản

Bài 2: S = 0 + 3 + 6 + … + 57 + 60. Tính S.
Var s,i:integer;
Begin
S:=0;
For i:=0 to 60 do if 0 mod 3=0 then s:=s+i;
Writeln(‘S= ’,s);
Readln
End.
Lưu ý: Giống như câu lệnh rẽ nhánh if…then, các câu lệnh for…do có thể lồng
nhau. Khi đó các biến đếm trong các câu lệnh lặp phải khác nhau
4. Nâng cao – Lệnh downto

Tương tự: downto có cấu trúc như sau:
For <biến đếm(bắt buộc phải là integer hoặc …)>:=<giá trị cuối> downto <giá trị đầu>
do <câu lệnh>
+ Trong đó for, downto, do là từ khóa.
+ Biến đếm là một số nguyên
+ Số lần lặp = giá trị cuối – giá trị đầu + 1
+ Mỗi lần lặp biến đếm tự giảm đi 1
+ Giá trị cuối phải > giá trị đầu


II/ Cấu trúc lệnh lặp với số lần chưa biết trước
5. Cú pháp

While <điều kiện> do <câu lệnh>
Trong đó: while, do là từ khóa
Điều kiện là một phép so sánh
Câu lệnh có thể là 1, nếu nhiều phải đặt trong cặp Begin – End ;
6. Cách hoạt động

Bước 1: Kiểm tra điều kiện


Lập trình Pascal cơ bản
Lập trình Pascal cơ bản

Bước 2: Nếu điều kiện sai, câu lệnh sẽ bị bỏ qua và lệnh lặp kết thúc. Nếu điều kiện
đúng, thực hiện câu lệnh và quay lại bước 1
7. Khái niệm

Vòng lặp chưa biết trước tương từ đã biết trước nhưng chỉ có là khi dùng vòng lặp
chưa biết trước thì không cần nhập giá trị
8. VD:
a) S = 1 + 2 + 3 + … + 100

Dùng lệnh while…do:
Var i,s:integer;
Begin
I:=1;
While i<101 do (hoặc while i <= 100 do)
Begin

S:=s+i;
I:=i+1;
End;
Writeln(‘S= ’,s);
Readln
End.
Mỗi lần chúng ta để tăng vòng lặp thì phải tăng thủ công bằng lệnh nhưng lệnh này lại
rất tiện trong một số trường hợp.
Dùng lệnh for…do
Var i,s:integer;
Begin
For i:=1 to 100 do s:=s+i;
Writeln(‘s= ’s);
Readln
End.


Lập trình Pascal cơ bản
Lập trình Pascal cơ bản
b) Cho m,n (m>n) nhập từ bàn phím. Tính tổng các số chẵn từ n đến m và in ra.

Cách làm: (ở bài này ta sẽ luyện tập dùng lệnh while…do)
Var m,n,tc:integer;
Begin
Write(‘Nhap m’); readln(m);
Write(‘Nhap n’); readln(n);
While n=Begin
If n mod 2=1 then tc:=tc+n;
N:=n+1;

End;
Writeln(‘Tong la: ’,tc);
Readln
End.
9. Lặp vô hạn lần – Lỗi lập trình cần tránh

Khi viết chương trình sử dụng cấu trúc lặp cần chú ý tránh tạo nên vòng lặp không
bao giờ kết thúc. Chẳng hạn, chương trình dưới đây lặp lại vô hạn
Var a:integer;
Begin
A:=5;
While a<6 do writeln (‘A’);
End.

Trong chương trình trên, giá trị của biến a luôn luôn bằng , điều kiện a<6 luôn luôn
đúng nên lệnh writeln(‘A’) luôn được thực hiện.
Do vậy, khi thực hiện vòng lặp, điều kiện trong câu lệnh phải được đổi để sớm hay
muộn giá trị của điều kiện được chuyển từ đúng sang sai. Chỉ như thế chương trình
mới không rơi vào những vòng lặp vô hạn.


Lập trình Pascal cơ bản
Lập trình Pascal cơ bản

Bài tập
-

S= 1 + 2 + 3 + … + n (n thuộc N*) với n nhập từ bàn phím. Tính S bằng lệnh
while…do.
Tính tổng các số có 2 lần đơn vị=4 từ 10 -> 300

VD: Số đó có thể là 42 vì hàng đơn vị là 2 và 2 lần đơn vị tức là 4 và trong khoảng
từ 10 đến 300.
BTVN

-

Viết chương trình nhập vào n và lập bảng cửu chương n. (Có trong SGK)
Tính tổng các số lẻ từ m đến n (m
Chuyên đề: Pascal cơ bản
Bài 3-Mảng-Cách bật đuôi mở rộng
I/ Mảng
1. Cú pháp


Lập trình Pascal cơ bản
Lập trình Pascal cơ bản

Tên_mảng:array[<chỉ số đầu>..<chỉ số cuối>] of <kiểu dữ liệu>
2. Ví dụ về khai báo

Var A:array[1..100] of string;
Trong đó biến A có thể có 100 phần tử.
3. Ví dụ
a) Nhập tên 40 bạn trong lớp và in ra bạn thứ 10.

var i:integer;
hocsinh:array[1..40] of string;
begin
for i:=1 to 40 do

begin
write(‘Ten ban thu ’,i,’ la: ’); readln(hocsinh[i]);
end;
writeln(‘Ten ban thu 10 la: ’, hocsinh[i]);
readln
end.
b) Nhập mảng số nguyên. Đếm và in ra số lượng p.tử chẵn.

Var i,n,sl:integer;
So:array[1..100] of integer;
Begin
sl:=0;
Readln(n);
For i:=1 to n do begin
Write(‘So thu ’,i,’ :’); readln(so[i]);
If so[i] mod 2=0 then sl:=sl+1;
End;
Writeln(‘So luong p.tu chan la: ’,sl);
Readln


Lập trình Pascal cơ bản
Lập trình Pascal cơ bản

End.

II/ Cách bật đuôi mở rộng
1. Đuôi mở rộng là gì?

Đuôi mở rộng là phần đuôi sau dấu chấm của tên file.

Đuôi mở rộng là viết tắt của phần mềm.
Cấu trúc một tên file:
<tenfile>.<duoimorong>
Ví dụ:
- File word tên là: “Tự học Pascal”
 Trên màn hình tên là: Tự học Pascal.doc
- File pascal tên là: “Tam giac”
 Trên màn hình tên là: Tam giac.pas

Có một số máy chưa bật sẽ không có phần mở rộng.
2. Cách bật đuôi mở rộng

B1: Mở Folder Options
* Trong Windows XP: Mở My Computer, trên thanh công cụ click Tools --> Folder
Options.
Nếu không thấy phần Tools thì nhấn phím Alt sẽ có.
* Trong Windows 7: Mở Windows Explorer --> Organizie --> Folder and search
options
B2: Trong hộp thoại Folder Options --> chọn Tab View --> bỏ chọn ở dòng "Hide
extansions for file types" để hiển thị phần mở rộng của các file trong máy tính -->OK
để lưu lại thiết lập
Vậy là phần mở rộng đã mở ra.
-

Nếu chưa hiểu, có thể xem trên mạng sẽ có.
Phần mở rộng đã mở, có thể gửi bài nhanh hơn.

Bài tập
-


Nhập mảng số thực với số phần tử nhập từ bàn phím. Tính TBCộng các số chẵn.


Lập trình Pascal cơ bản
Lập trình Pascal cơ bản

-

BTVN
Nhập mảng số nguyên với số phần tử nhập từ bàn phím. Tìm số lớn nhất, nhỏ
nhất.

Chuyên đề: Pascal-File
Bài 4-Tệp trong Pascal
B4/ Tệp
1. Cú pháp khai báo

var <bientep>:text;


Lập trình Pascal cơ bản
Lập trình Pascal cơ bản
2. Các thao tác với tệp văn bản

1. Mở tệp mới để ghi
Assign(<bientep>,<tenfile>);
Rewrite(<bientep>);
2. Mở tệp để lấy dữ liệu
Assign(<bientep>,<tenfile>);
Reset(<bientep>);

3. Mở tệp để ghi thêm
Assign(<bientep>,<tenfile>);
Append(<bientep>);
3. Đóng tệp

Close(<bientep>);
Lưu ý: lệnh assign là lệnh để mở tệp.
4. Bảng

Định
nghĩa
VD lệnh
(Các
lệnh sẽ
được
thực
hiện
trên 1
file là
thu.txt
Trước
khi nhập
lệnh

Rewrite(<bientep>);
Là để tạo 1 file mới để
ghi vào.
Assign(f,’thu.txt’);
Rewrite(f);
Writeln(f, ‘Day la file

thu’);
Close(f);

Reset(<bientep>);
Là để mở một file
có sẵn để lấy dữ
liệu
Assign(f,’thu.txt’);
Reset(f);
Readln(f, a); {a là
kiểu dữ liệu string}
Close(f);

Append(<bientep>);
Là để mở một file có sẵn
và ghi vào tiếp
Assign(f,’thu.txt’);
Append(f);
Writeln(f, ‘Ghi them vo
file do’);
Close(f);

a=
{a không có giá trị}

Chưa có chữ Day la file
thu

Chưa có chữ Ghi them vo
file do



Lập trình Pascal cơ bản
Lập trình Pascal cơ bản

Sau khi
nhập
lệnh

a=day la file thu

Lưu ý: Các file txt sẽ tự tạo theo lệnh sẽ ở trong cùng file pascal bạn lập trình.
Để mở các file pascal tạo các bạn có thể đặt chuột vào giữa tên file (không đặt ở phần .*)
và nhấn phím Ctrl + Enter
5. Bài tập ví dụ
1) Nhập vào từ bàn phím một số N, in X ra file ketqua.txt, biết file x=(n+2)x8.

Lệnh
Var n,x:integer;
f:text;
Begin
Write(‘Nhap N: ’); readln(n);
X:=(n+2)*8;
Assign(f, ‘ketqua.txt’);
Rewrite(f);
Write(f, x);
Close(f);
End.
2) Tạo một file có tên là abc.txt và ghi trong đó các chữ như sau:


123
Abc
Rồi lấy dữ liệu dòng đầu tiên từ file abc.txt để in ra màn hình.
Phần tạo file tự làm
Lệnh:
Var x:integer;
f:text;


Lập trình Pascal cơ bản
Lập trình Pascal cơ bản

Begin
Assign(f, ‘abc.txt’);
Reset(f);
Readln(f, x);
Close(f);
Writeln(x);
Readln;
End.
3) Dùng file abc.txt rồi ghi tiếp bằng lệnh trên Pascal có nội dung: 123abc

Lệnh
Var f:text;
Begin
Assign(f, ‘abc.txt’);
Append(f);
Writeln(f, ‘123abc’);
Close(f);
End.

Sau khi thực hiện lệnh, các bạn mở file abc.txt ra để ktra xem có thêm dòng đó ko.

Bài tập
Nhập một số N từ bàn phím. Sau đó ghi n vào file tinh.txt
BTVN
Nhập một số N từ bàn phím. Sau đó tính tổng các số từ 1 đến N vào file nhap.txt


Lập trình Pascal cơ bản
Lập trình Pascal cơ bản