Tải bản đầy đủ (.doc) (25 trang)

Giáo trình và bài tập Pascal

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 (169.69 KB, 25 trang )

Nguyn Hu nh THPT Thi Lai
Bài 1: Ngôn ngữ lập trình pascal.
I/ Giới thiệu
- Giáo s Wirth, trờng đại học Thụy Sĩ viết năm 1970 nhằm giúp học sinh
làm quen, tiếp cận với máy tính.
- Ông lấy tên nhà bác học ngời Pháp là Pascal để đặt tên cho ngôn ngữ lập
trình của mình .
- Đặc điểm: Nó là ngôn ngữ lập trình có cấu trúc, dễ đọc, dễ hiểu.
II/ Khởi động và kết thúc.
1) Chạy trong môi trờng window.
- Khởi động nh những chơng trình ứng dụng bình thờng.
2) Chạy trong môi trờng Dos.
C:>- gõ đờng dẫn\Turbo .exe
* Chú ý : Muốn biết đờng dẫn đến tệp tin cần tìm thì ta sử dụng :
C :>- Dir turbo.exe /b/s
VD: C: >-TP\bin\turbo.exe
3) Thoát khỏi chơng trình.
C
1
: Vào file \ exit
C
2
: Nhấn tổ hợp phím Alt+X.
III/ Soạn thảo chơng trình.
1) Mở mới: file\new
2) Mở tập tin đã ghi vào đĩa: file\open
hoặc bấm F
3
3) Ghi tập tin vào đĩa: file\save hoặc F
2
4) Dịch chơng trình: bấm Alt+F


9
5)Chạy chơng trình: Ctrl+F
9
*Chú ý: Pascal là chơng trình biên dịch nghĩa là nó dịch hết chơng trình
sang ngôn ngữ máy nếu không có lỗi chơng trình mới đợc thực hiện. Chính vì vậy
trong chơng trình Pascal thờng có 2 lỗi sảy ra:
- Lỗi cú pháp: chơng trình sẽ không đợc thực hiện và sẽ có thông báo lỗi
- Lỗi thuật toán: chơng trình chạy nhng ra kết quả sai.
IV/ Bộ kí tự, từ khóa, tên gọi.
1) Bộ kí tự : là các kí tự đợc sử dụng trong Pascal. Đó là bộ kí tự chuẩn của
Mĩ là ASCII gồm có 256 kí tự đợc mã hóa theo các số tơng ứng.
2) Từ khóa: là các từ do Pascal định nghĩa sẵn, em không đợc đặt chùng.
VD: program, var, uses, label, array,type,...
Câu lệnh: write; read; if...then; case...of; while... do; repeat...until;
for...to...do,...
3) Tên gọi:dùng để chỉ tên biến hoặc hằng sử dụng trong chơng trình đợc
đặt bằng chữ cái không phân biệt chữ thờng hay chữ hoa không có kí tự trắng.
VD: A12

Đ
1
Nguyn Hu nh THPT Thi Lai
12A S (vì bắt đầu là chữ số)
lop hoc S (vì trong tên có ký tự trắng)
Danh_sach Đ
Bài 2:Dữ liệu đơn giản chuẩn
1. Dữ liệu kiểu kí tự (char) :là các kí tự có trên bàn phím.
Các hàm kí tự :
ORD(kí tự ): trả về số thứ tự của kí tự trong bảng ACSII.
Chr (n) : trả về kí tự của thứ tự n trong bảng ACSII.

Upcase (kí tự) : kí tự hoa tơng ứng.
Ví dụ : Ord (a) = 97
Chr (97) = a
Upcase (a) = A
2. Dữ liệu kiểu số nguyên .
tên Phạm vi biểu diễn
byte 0 .. 255
shortint -128 .. 127
word 0 .. 65535
integer -32768 .. 32767
longint -2174483648 .. 2174483647
Các phép toán
* :nhân +: cộng
/ :chia -: trừ
MOD : phép chia lấy phần d
vd : 10 mod 3 = 1 (10 chia 3 d 1)
DIV : phép chia lấy phần nguyên
vd : 10 div 3 = 3
Một số hàm
ABS( n ) = trị tuyệt đối của n
SQR( x ) = x
2
SQRT( x ) = căn bậc 2 của x
Inc(n) = n + 1
Random( n ) = số nguyên ngẫu nhiên từ 1 ... n .
3.Dữ liệu kiểu số thực (Real).
- Phạm vi biểu diễn rất lớn, có thể biểu diễn các số có phần thập phân.
Có tất cả các phép toán số học trừ phép Mod và Div
4 . Dữ liệu kiểu logic ( Boolean )
- Chỉ nhận 2 dữ liệu True (đúng) hoặc False (sai)

2
Nguyn Hu nh THPT Thi Lai
+ AND : cho kết quả là T khi tất cả các toán hạng đều T.
Cú pháp: (biểu thức đk 1) AND (biểu thức đk 2) AND (..)
VD : ( 3 > 7 ) and ( 3 = 1+2 ) = F
( 3 < 7 ) and ( 3 = 1 +2 ) = T
+ OR : Cho kết quả là T khi tồn tại 1 điều kiện T
Cú pháp : (biểu thức đk 1) OR (biểu thức đk 2) OR (..)
VD : (3 > 7) or ( 3 = 2 + 1 ) = T.
bài 3: hằng, biến, kiểu, biểu thức và câu lệnh
I,Khai báo hằng
Hằng là đại lợng có giá trị không đổi trong suốt chơng trình.
Cách khai báo
Const tên hằng = giá trị của hằng;
VD: Const m=10;
pi=3,14;
chú ý: Sau từ khóa Const liệt kê hết các hằng có trong chơng trình.
II,Biến
Là đại lợng có thể thay đổi giá trị. Biến của chơng trình là tên vùng nhớ lu
trữ dữ liệu.
Cách khai báo biến:
Var tên biến :kiểu của biến
VD : Var a: integer ; (biến a có kiểu dữ liệu là integer nghĩa là nó chỉ
có khả năng nhận giá trị từ -32768 đến 32767 nếu trong chơng trình gán giá trị
lớn hơn hoặc nhỏ hơn thì biến sẽ bị tràn và cho kết quả không chính xác)
x : real;
III,Khai báo kiểu dữ liệu mới
Là kiểu dữ liệu do lập trình viên tự dịch nghĩa.
Type tên dữ liệu mới =(các thành phần kiểu dữ liệu mới);
VD:

Type traicay =(cam, tao, xoai, dua); (dữ liệu mới có tên là traicay
và chỉ nhận 4 loại trái có trong danh sách dã liệt kê)
mau =(xanh,do ,tim,vang); (dữ liệu mới có tên là mau)
Var
a: traicay; (biến a có kiểu dữ liệu là trái cây vừa đợc định nghĩa ở trên)
m: mau;
IV,Biểu thức
Là công thức tính toán để có 1 giá trị theo quy tắc nào đó.
Biểu thức gồm toán tử và toán hạng xếp xen kẽ nhau.Trong đó
-Toán hạng: là các đại lợng cần tinh toán có thể là: hằng, biến, hàm,...
3
Nguyn Hu nh THPT Thi Lai
-Toán tử: là các phép toán tác động lên toán hạng
( ): u tiên 1
*, /, div, mod, and: u tiên 2
+, -, or: u tiên 3
=, <>, >, <, >=, =<: u tiên 4
V,Câu lệnh
Xác định công việc mà chơng trình phải thực hiện. Các câu lệnh đợc phân
cách nhau bởi dấu ; (dấu chấm phẩy)
VI,Phép gán
Dùng để gán giá trị của 1 biểu thức, 1 hằng cho 1 biến
tên biến: =giá trị 1 biểu thức
VD: Var a,i:integer;
Begin
..
i:=3;
a:=7{biến a nhận giá trị =7}
i:=i + 1{biến i nhận giá trị = nó +1, i=3+1=4}
..

end.
Bài 4: cấu trúc chơng trình pascal
Gồm 3 phần: 1.Phần tên
2.Phần khai báo
3.Thân chơng trình
*Phần tên:
program tên chơng trình; (tên đợc đặt theo quy định của pascal)
*Phần khai báo:
USES khai báo các Unit(chơng trình chuẩn) cần sử dụng.
VD :USES crt ;{khai báo sử dụng chơng trình màn hình}
Graph ;{ khai báo sử dụng chơng trình đồ họa}
Type {định nghĩa kiểu dữ liệu mới}
Const {khai báo hằng}
Var {khai báo biến}
*Phần tên ch ơng trình:
Begin
Các câu lệnh pascal
End.
4
Nguyn Hu nh THPT Thi Lai
Bài 5: Nhập xuất và tính toán cơ bản.
1/ Xuất dữ liệu.
- Để xuất dữ liệu ra màn hình, ta sử dụng lệnh write hoặc writeln. Dữ liệu là
các kiểu tùy ý.
a) Lệnh write
Cú pháp
write(biến hoặc danh sách biến);
Xuất dữ liệu ra màn hình, con trỏ đợc đặt ở vị trí tiếp theo.
Nếu là danh sách biến thì các biến đợc phân cách với nhau bởi dấu phẩy.
VD: write(a,b);

(đa giá trị của biến a,b ra màn hình và con trỏ nằm ngay saugiá trị của
biến b).
*Chú ý: Nếu muốn đa nguyên một dòng thông báo nào đó, khi chạy chơng
trình ta đặt chúng giữa hai dấu nháy đơn ..
VD: write(chuong trinh tinh dien tich hinh chu nhat);
Kết quả: chuong trinh tinh dien tich hinh chu nhat_ (dấu con trỏ đậu)
b) Lệnh writeln
Cú pháp
writeln( biến hoặc danh sách biến);
Tơng tự nh lệnh write nhng khi xuất hết dữ liệu con trỏ tự động xuống dòng
dới.
VD: writeln(chuong trinh tinh dien tich hinh chu nhat);
Kết quả: chuong trinh tinh dien tich hinh chu nhat
_ (dấu con trỏ đậu)
Clrscr: lệnh xóa màn hình(có lạc rang sẽ có rợu) chỉ sử dụng đợc khi đã
khai báo sử dụng chơng trình màn hình CRT.
2/ Nhập dữ liệu
- Để gán dữ liệu cho các biến trong chơng trình từ bàn phím sử dụng lệnh
read hoặc readln.
Cú pháp : read(biến hoặc danh sách biến);
readln(biến hoặc danh sách biến);
Lệnh read dùng để nhập dữ liệu cho các biến từ bàn phím, giá tri của chúng
đợc cách nhau bởi dấu cách. Còn lệnh readln kết thúc nhập một biến phải nhấn
phím enter.
VD:
program HCN;
uses crt;
var a,b:integer;
Begin
5

Nguyn Hu nh THPT Thi Lai
clrscr;
write(nhap vao chieu dai HCN a = ); readln(a);
write(nhap vao chieu rong HCN b = ); readln(b);
writeln(dien tich HCN la: , a*b);
end.
ví dụ nhập a = 6 và b = 3
Kq: nhap vao chieu dai HCN a = 6 (enter)
nhap vao chieu rong HCN b = 3 (enter)
dien tich HCN là: 18
Bài tập
Bài 1: Viết chơng trình tính chu vi, diện tích hình tam giác.
program tamgiac;
uses crt;
var a,b,c:integer;
begin
clrscr;
write(nhap vao chieu dai canh thu nhat a = ); readln(a);
write(nhap vao chieu dai canh thu hai b = ); readln(b);
write(nhap vao chieu dai canh thu ba c = ); readln(c);
writeln(chu vi hinh tam giac la: , a+b+c);
writeln(dien tich hinh tam giac la: , SQRT(p*(a-b)*(b-c)));
readln; {dừng ở màn hình kết quả chờ nhấn phím enter = Alt + F5}
end.
Bài 2:Viết chơng trình tính diện tích, chu vi hình tròn.
Program hinhtron;
uses crt;
const pi=3,14;
var r:real;
begin

clrscr;
write(nhap vao ban kinh hinh tron r = );
readln(r);
writeln(chu vi hinh tron la: , 2*pi*r:6:2); {kết quả biểu thức đợc viết
trong 6 vị trí trong đó có 2 vị trí dành cho phần thập phân}
writeln(dien tich hinh tron la: , pi*sqr(r):6:2);
readln;
end.
Bài 3. Viết chơng trình nhập 3 số nguyên dơng a,b,c sau đó tính và in ra màn hình
trung bình cộng của 3 số đó.
6
Nguyn Hu nh THPT Thi Lai
Program songuyenduong;
uses crt;
var a,b,c:integer;
begin
clrscr;
write(nhap vao so nguyen duong thu nhat a=); readln(a);
write(nhap vao so nguyen duong thu hai b=); readln(b);
write(nhap vao so nguyen duong thu ba c=); readln(c);
writeln(trung binh cong cua ba so nguyen la: , (a+b+c)/3));
readln;
end.
Bài 4. Viết chơng trình nhập 2 số nguyên x,y tính tổng, hiệu, tích, thơng của
chúng và xuất ra màn hình.
Program pl;
uses crt;
var x,y: integer;
begin
clrscr;

write(nhap vao so x = ); readln(x);
write(nhap vao so y = ); readln(y);
write(hieu hai so nguyen la: , x-y);
write(tong hai so nguyen la: , x+y);
write(tich hai so nguyen la: , x*y);
write(thuog hai so nguyen la: , x/y);
readln ;
end.
Bài 5. Viết chơng trình giải phơng trình bậc nhất : a*x+b=0.
Program phuongtrinh;
uses crt;
var a,b: integer;
begin
clrscr;
write(nhap vao so a = ); readln(a);
write(nhap vao so b = ); readln(b);
writeln(x = ,-b/a);
readln;
end.
Bài 6: Các lệnh điều kiện .
1/ Câu lệnh if.
7
Nguyn Hu nh THPT Thi Lai
- Cấu trúc 1: if (điều kiện) then (công việc).
- Công dụng : Kiểm tra điều kiện nếu điều kiện trả giá trị đúng thì thực hiện
công việc, điều kiện sai không làm gì.
- Trong đó :
+ If ...then là từ khóa
+ Điều kiện là biểu thức logic chỉ nhận 1 trong 2 giá trị đúng hoặc sai.
+ công việc là các lệnh của Pascal nếu từ 2 lệnh trở lên phải đặt trong khối

begin .. end;
VD
1
: if 2>3 then
begin
write(nhap vao gia tri a=); readln(a);
end;
Điều kiện sai nên hai câu lệnh trên không đợc thực hiện .
VD
2
: a:=5
b:=3
if a>= b then
begin
a:=a-b;
b:=b+a;
end;
tính a:=a-b = 5-3=2;
b:=b+a = 3+2=5;
- Cấu trúc2: if <điều kiện> then < cv1>
else <cv2>;
- Công dụng : kiểm tra (điều kiện) nếu (điều kiện) đúng thì thực hiện (cv1)
ngợc lại (điều kiện) sai thực hiện (cv2)
Bài tập
Bài 1. Viết chơng trình nhập vào số nguyên dơng x in kết quả cho biết số
nguyên dơng có chia hết cho 3 hay 7 không?
Program chia_het;
uses crt;
var x: byte;
begin

clrscr;
write(nhap vao gia tri x=); readln(x);
if (x mod 3=0) or (x mod 7=0)
then write(chia het cho 3 hoac 7)
else write(khong chia het cho 3 hoac 7);
readln;
end.
8
Nguyn Hu nh THPT Thi Lai
Bài2. Viết chơng trình nhập chiều dài, chiều rộng hcn và bán kính hình tròn.
So sánh diện tích của hcn và hình tròn.
Program bankinh;
uses crt;
var a,b,r,s1,s2: real;
begin
clrscr;
write(nhap vao chieu dai hcn a =); readln(a);
write(nhap vao chieu rong hcn b =); readln(b);
write(nhap vao ban kinh hinh tron r =); readln(r);
writeln(s1 hcn la: , a*b:8:2);
writeln(s2 hinh tron la: , pi*sqr(r):8:2);
if a*b= pi*sqr(r) then writeln(dien tich hcn bang dien tich hinh tron)
else if a*b>pi*sqr(r) then writeln(dien tich hcn lon hon dien tich hinh
tron)
else writeln(dien tich hcn nho hon dien tich hinh tron);
readln;
end.
Bài 3. Viết chơng trình vào 1 số nguyên dơng xuất kết quả cho biết số có chia
hết cho 2và3 không?
Program chia_het;

uses crt;
var a: byte;
begin
clrscr;
write(nhap vao gia tri a=); readln(a);
if (a mod 2=0) and (a mod 3=0) then
write(chia het cho 3 va 2)
else writeln(khong chia het cho 2 va 3);
readln;
end.
Bài 4. Viết chơng trình nhập vào 1 năm dơng lịch kiểm tra xem năm đó có
phải là năm nhuận không ?
Gợi ý : năm nhuận là năm có 2 số cuối của năm chia hết cho 4. Nếu 2 số
cuối là 00 thì lấy 2 số đầu chia hết cho 4.
Program duonglich;
uses crt;
var nam:word;
begin
clrscr;
9
Nguyn Hu nh THPT Thi Lai
write(nhap vao so nam=); readln(nam);
if (nam mod 100<>0) and ( nam mod 4=0) or (nam mod 100 = 0) and
((nam div 100) mod 4 = 0) then
write(Nam da cho la nam nhuan)
else write(khong phai la nam nhuan);
writeln;
end.
5. Viết chơng trình nhập vào 3 độ dài (a,b,c) kiểm tra xem chúng có phải là 3
cạnh của tam giác hay không? Nếu có, in diện tích tam giác đó. Nếu không in

thông báo không phải là tam giác?
program tamgiac;
uses crt;
var a,b,c,s,p:real;
begin
clrscr;
write(nhap vao so a=); readln(a);
write(nhap vao so b=); readln(b);
write(nhap vao so c=); readln(c);
if (a<b+c) and (b<a+c) and(c<b+a) then
begin
write(do la do dai 3 canh cua tam giac );
p:=a+b+c;
writeln(p hinh tam giac la:, a+b+c:8:2);
writeln(s hinh tam giac la:, sqrt(p*(p-a)*(p-b)*(p-c)):8:2);
end
else write(khong phai la 3 canh cua tam giac);
readln;
end.
6. Viết chơng trình nhập vào điểm trung bình. In kết quả xếp loại nh sau:
10 >= điểm TB >=9 : xuất sắc
9 > điểm TB >= 8 : giỏi
8 > điểm TB >=7 :khá
7 > điểm TB >=5: TB
5 > điểm TB >=0: yếu.
Program TB;
uses crt;
var a:real;
begin
clrscr;

10

×