< Nhỏ hơ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ốn
Trang 1Chuyê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
thực)
VD: 5 và 2
5 + 2 = 7 5/2 = 2,5
5 – 2 = 3 5 div 2 = 2 ( có nghĩa là 5
5 * 2 = 10 5 mod 2 = 1 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))) - Trong pascal
3. Các kí hiệu
Trang 2< Nhỏ hơn <
- 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:
Trang 3- 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
Trang 47. 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);
Trang 5Write(‘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:
Trang 6Input: a,b,c
Output: Số lớn nhất
B1: Nhập a,b,c
B2: Gán sln:=a
B3: Nếu sln<b thì sln:=b
B4: Nếu sln<c thì sln:=c
B5: 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
Trang 7Từ 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
Trang 81. 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
2. 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;
Trang 9I=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.
Trang 10Bà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
Trang 11Bướ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.
Trang 12b) 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=<m do
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
Trang 13Bà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<n) và in ra Dùng lệnh while…do
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
Trang 14Tê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
Trang 15II/ 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
Trang 16- 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;
Trang 172. 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
Rewrite(<bientep>); Reset(<bientep>); Append(<bientep>); Định
nghĩa Là để tạo 1 file mới để ghi vào Là để mở một file có sẵn để lấy dữ
liệu
Là để mở một file có sẵn
và ghi vào tiếp
VD lệnh
(Các
lệnh sẽ
được
thực
hiện
trên 1
file là
thu.txt
Assign(f,’thu.txt’);
Rewrite(f);
Writeln(f, ‘Day la file
thu’);
Close(f);
Assign(f,’thu.txt’);
Reset(f);
Readln(f, a); {a là kiểu dữ liệu string}
Close(f);
Assign(f,’thu.txt’);
Append(f);
Writeln(f, ‘Ghi them vo file do’);
Close(f);
Trước
khi nhập
lệnh
Chưa có chữ Day la file
thu
a=
{a không có giá trị}
Chưa có chữ Ghi them vo file do
Trang 18Sau 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;
Trang 19Assign(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