You are on page 1of 11

LẬP TRÌNH PASCAL

Buổi 1, ngày 7/8/2017


1/ Một chương trình Pascal:
Bao gồm:
[Program <Tên chương trình>]
Khai báo: [Const <Tên hằng> = <giá trị>]
[ Var <danh sách biến> : <kiểu>]
<Begin
<Các lệnh; T Thân chương trình

End.>
VD:
Program Hello_Pascal;
Begin
Writeln (‘Hello”);
End.
2/ Biến-Biểu thức-Phép gán:
a/ Biến:
- Là 1 giá trị thay đổi trong quá trình thức hiện
- Vd: x:=2
x:=x+5
x:=5x-9
b/ Hằng: Là 1 giá trị không thay đổi khi sử dụng và phải khai báo đầu chương trình
VD: Const C = 3.1416
c/ Phép gán: Kí hiệu :=
Khi viết A:=B có nghĩa là gán B cho A, A có giá trị bằng B
Vd: B:=5
A:=B+2 => A=7
 Biến trong chương trình bị thay đổi là do phép gán
BÀI TẬP: Cho 2 biến A và B có giá trị cho trước. Hãy đổi giá trị của A và B cho nhau
bằng phép gán.
Giải:
C:=A; A:=B; B:=C
d/ Biểu thức
Bao gồm hằng số, biến và các phép toán.
(X*X+Abs(Y))/2
Giá trị biến bị thay đổi do phép gán các biểu thức
3/ Một số kiểu dữ liệu đơn giản:
3.1/ Kiểu số nguyên:
TÊN PHẠM VI
byte 0255
integer -215215-1 (32767)
longint -231231-1
Các phép toán: +, -, *, div, mod
3.2/ Kiểu số thực:
TÊN PHẠM VI
real Có giá trị tuyệt đối 10-381038
extended Có giá trị tuyệt đối 10-4932104932
3.3/ Kiểu kí tự:
TÊN PHẠM VI
char 256 kí tự trong bảng mã ASCII
3.4/ Kiểu logic
TÊN PHẠM VI
Boolean True, False
Các phép toán: and, or, not
VD: A:= (7>5) and (1=1) A= True
3.5/ Các phép so sánh:
= : Bằng
> : Lớn hơn
< : Nhỏ hơn
>= : lớn hơn hoặc bằng
<= : nhỏ hơn hoặc bằng
<> : khác nhau
4/ Các lệnh nhập/xuất chuẩn:
4.1/ Nhập từ bàn phím:
Cú pháp: Read (<ds biến>); hoặc Readln (<ds biến>);
Vd: Readln (x,y,z)
* Nhập xong nhấn ENTER
* Nhấn phím SPACE cho tách phần giá trị biến
4.2/ Xuất ra màn hình:
Cú pháp: Write (<biểu thức>); hoặc Writeln (<biểu thức>);
* Nếu <biểu thức> là 1 hằng xâu thì phải ghi giữa 2 dấu nháy
Vd: Writeln (‘Ten ban la gi ?’);
* Nếu nhiều biểu thức thì ghi cách nhau dấu phẩy
Vd: Writeln (‘x= ‘, x)
* Writeln khác Write là in xong xuống dòng
* Nếu <biểu thức> có giá trị là số thực thì ta phải có định dạng
Write (<biểu thức>:m:n);
Vd: Write (17/3);
4.3/ Kết hợp lệnh Write và Read khi nhập:
VD: Write (‘Nhap ban kinh duong tron= ‘); readln (r);
5/ Một số ví dụ:
VD1: Nhập vào cạnh 1 hình vuông và in ra chu vi và diện tích của hình vuông đó
Giải:
Program HinhVuong;
Var x:real;
Begin
Write (‘Nhap canh hinh vuong= ‘); readln (x);
Writeln (‘Chu vi hinh vuong la ‘, (4*x):0:0);
Writeln (‘Dien tich hinh vuong la ‘, (x*x):0:0); readln
End.
BTVN:
1/ Nhập vào 2 cạnh x, y của 1 hình chữ nhật. In ra chu vi và diện tích hình chữ nhật đó
2/ Nhập vào bán kính đường tròn. In ra chu vi đường tròn và diện tích hình tròn tương ứng
3/ In ra màn hình hình cây thông:
*
***
*****
*
*
Buổi 2, ngày 9/8/2017
6/ Một số hàm chuẩn
a/ Các hàm trên kiểu số:
Tên Ý nghĩa

Sqr (x) 𝑥2

Sqrt (x) √𝑥

Abs (x) 𝑥

Trunc (x) [x]: phần nguyên của x


b/ Các hàm kiểu kí tự:

Tên Ý nghĩa
Ord (x) Cho STT của kí tự x trong bảng mã ASCII
Chr (x) hoặc #x Cho kí tự ứng với STT x trong bảng mã ASCII
BÀI TẬP
1/ Nhập giá trị x là số thực, tính
𝒙𝟐 + 𝒙 + 𝟓
𝑷=
√𝒙𝟐 + 𝟏
2/ Nhập x, y là số thực tính
𝟐𝒙 − 𝒚 𝟏
𝑷 = (𝒙 − 𝒚)𝟐 + 𝟑(𝒙 − 𝒚)𝟑 + +
𝟓−𝒙 𝒚+𝟑
GIẢI BÀI TOÁN BẰNG MÁY TÍNH
1/Thuật toán:
- Là 1 dãy các thao tác theo trình tự nhất định để cuối cùng giải quyết 1 yêu cầu cụ thể nào đó
2/ Sơ đồ khối:

BBegin/End Nhập/xuất dữ liệu


Chỉ chiều thực hiện

Kiểm tra điều


Khối thao tác tính toán
kiện để rẻ
nhánh

VD1: Lập SĐK thuật toán giải BT “Cho 2 số A, B. Hãy chuyển giá trị của A cho B và B
cho A.
BEGIN

A,B

C:=A; A:=B: B:=C

A,B

END
CẤU TRÚC ĐIỀU KIỆN
1/ Cấu trúc rẽ nhánh đầy đủ:
Cú pháp: If <điều kiện> then <lệnh A> else <lệnh B>;
BÀI TẬP
1/ Nhập vào 2 số nguyên A và B. Hãy in ra số lớn nhất.
2/ Nhập vào 3 số nguyên A, B và C. Hãy in ra số lớn nhất.
BTVN
1/ Nhập vào 2 số nguyên A, B. In ra số lớn nhất và số nhỏ nhất
INPUT OUTPUT
10 -15 Max=10; Min=-15
2/ Nhập vào 3 số thực A, B, C. Kiểm tra xem 3 số đó có tạo thành 3 cạnh của 1 tam giác 0?
3/ Nhập vào số nguyên N. Kiểm tra xem N là số chẵn hay số lẻ.
4/ Nhập 1 số nguyên dương N. Kiểm tra xem N có là số chính phương không
2/ Cấu trúc rẽ nhánh khuyết:
Cú pháp: If <điều kiện> then <lệnh A>;
BT:
1/ Nhập vào 3 số A, B, C. Kiểm tra 3 số có tạo thành 3 cạnh của 1 tam giác cân không?
2/ Tiền cước taxi được tính như sau
1km đầu: 15000đ/km
Từ km thứ 2 đến km thứ 5: 10000đ/km
Từ km thứ 6 trở đi: 8000đ/km
Nhập vào số km của 1 khách đi taxi, hãy tính xem khách trả bao nhiêu tiền.
BTVN:
1/ Nhập vào 3 số A,B,C. Kiểm tra xem nó có tạo thành 3 cạnh của 1 tam giác vuông, cân hay
đều không?
2/ Nhập vào giờ, phút, giây hiện tại. In ra giờ phút giây của 1 giây sau
3/Tính tiền điện 1 hộ khi cho biết chỉ số điện kế tháng này và chỉ số điện kế tháng trước. Từ
đó tính ra KW tiêu thụ. Tiền điện được tính như sau:
- Từ KW <= 60: 1000đ/KW
- Từ 61-120 KW: 1200đ/KW
- Từ 121-300 KW: 2000đ/KW
- >300: 4000đ/KW
4/ Nhập vào ĐTB. In ra xếp loại biết xếp loại học lực căn cứ vào ĐTB, như sau:
ĐTB>=8 : Giỏi
6.5<=ĐTB<=8 : Khá
5<=ĐTB<=6.5 : TB
ĐTB<5: Yếu
CÂU LỆNH LẶP
1/ Lệnh lặp số lần xác định-FOR:
a/ Đếm tiến:
Cú pháp: For <biến đếm>:=<giá trị đầu> to <giá trị cuối> do <lệnh A>
VD: For x:=1 to 5 do S:=S+x
Các thực hiện: Lúc đầu máy cho <biến đếm>:=<giá trị đầu>, sau đó kiểm tra xem biến
đếm có vượt quá <giá trị cuối> chưa. Nếu chưa thì làm <lệnh A> và tăng biến đếm lên 1
đơn vị. Sau đó quay lại từ đầu, và cứ tiếp tục như thế cho đến khi <biến đếm> lơn
hơn<giá trị cuối> rồi thoát.
BT:
1/ Một người gởi A đồng vào ngân hàng với lãi suất x trong N tháng. Tính số tiền sau N
tháng.
2/ Tính tổng S=1+2+3+…+N với N nhập từ bàn phím
3/ Nhập vào số nguyên N. Đếm xem N có bao nhiêu ước.
VD: Tính tổng S=1+2+3+…+N với N nhập từ bàn phím
Giải:
Program Tinh_tong;
Uses crt;
Var i, N: Integer;
S: longint;
Begin
ClrScr; {Xóa màn hình};
Write (‘Nhap N= ‘); readln (N); {khai báo giá trị N};
S:=0;
For i:=1 to N do S:=S+i; {Với các giá trị của i từ 1 đến N, cộng I vào tổng S}
Writeln (S);
Readln;
End.
BTVN:
1/ Tính tổng S=1+3+5+7+…+(2n+1) với n nhập từ bàn phím
INPUT OUTPUT
6 49
2/ Tính tích: P=2*4*6*…*(2n) với n nhập từ bàn phím
INPUT OUTPUT
4 384
3/ 1 người cứ đầu tháng gửi vào ngân hàng 1 số tiền B với lãi suất x. Hỏi sau n tháng
người đó nhận được số tiền bao nhiêu.
Yêu cầu: Nhập vào số tiền B, lãi suất x, số tháng n. In ra số tiền sau n tháng
INPUT OUTPUT
B=200000
n=11 2322437
x=0.009

THUẬT TOÁN
1/ Bài toán và thuật toán:
- Thuật toán là 1 dãy các thao tác hữu hạn theo 1 trình tự nhất định để cho ra 1 kết quả.
Trong tin học, thuật toán là 1 dãy hữu hạn các trình tự thực hiện sao cho với 1 bộ input ta
nhận được 1 bộ output.
*Ví dụ về thuật toán:
Cho n viên bi có kích thước và hình dạng như nhau. Tất cả các viên bi có trọng lượng
bằng nhau ngoại trừ 1 viên bi nhẹ hơn.
Với 1 cân đĩa và số lần cân ít nhất, hãy tìm viên bi nhẹ hơn.
VÒNG LẶP WHILE
1/ Cú pháp:
While <ĐK> do <lệnh A>;
ĐK: biểu thức kiểu boolean;
Lệnh A: Nếu nhiều lệnh dùng begin-end.
2/Ví dụ:
1. Tính tổng: S=1+3+5+…+(2n-1) với n nhập từ bàn phím
Giải:
Program Thu;
Uses crt;
Var n, I, S: longint;
Begin
ClrScr;
Write (‘Nhap n= ‘); readln (N);
S:=0; i:=0;
While i<N do
Begin
i:=i+1;
S:=S+2*i-1;
End;
Write (‘S= ‘, S);
Readln;
2. Nhập vào số nguyên dương N, kiểm tra xem N có phải số nguyên tố không
Giải:
Program SNT;
Uses crt;
Var N,i:longint;
Begin
ClrScr;
Write (‘Nhap N= ‘); readln (N);
i:=2;
While N mod I <>0 do i:=i+1;
If i=N write (‘Yes’) else write (‘No’); readln;
End.
3. Nhập vào số nguyên dương N. In ra tất cả các chữ số của N, mỗi chữ số trên 1 hàng.
Input Output
5
5 6
3

BTVN: 5,6,8,9/Đề
LỆNH REPEAT UNTIL
1. Cấu trúc:
* Cú pháp: Repeat
<các lệnh>;
…………..;
Until <điều kiện>;

MẢNG MỘT CHIỀU


1. Định nghĩa: Là biến của nhiều biến cùng tên nhưng khác nhau bởi chỉ số

2. Khai báo một mảng:


* Cách 1 (Trực tiếp):

Var <tên biến mảng> : array[1..max] of <kiểu phần tử>;

VD: Var Diemhs : array[1..50] of real;

Var tenhs : array[0..100] of char;

* Cách 2:

3. Nhập, xuất kiểu mảng:


* Khi nhập xuất phải kèm theo chỉ số. VD: Readln (Diemhs[i]) hoặc write (Diemhs[i]).
BT1. Nhập vào điểm của N học sinh và in ra kết quả vừa nhập
Giải:
Program Diemhs;

Var D : array[1..60] of real;

N, i: Integer;
Begin

ClrScr;

Write (‘Nhap so luong hoc sinh cua lop: ‘); readln (N);

For i:=1 to n do

Begin
Write (‘Nhap diem hoc sinh thu ‘,i,’ ‘);

Readln (D[i]);
End;

Write (‘ Diem hoc sinh vua nhap ‘);

For i:=1 to n do writeln (‘Diem hoc sinh thu ‘,i,’la ‘,D[i]:0:1);


Readln;
End.

BT2. Nhập vào điểm Toán của N học sinh và in ra HS có điểm toán cao nhất

BT3. Nhập vào số nguyên N. In ra số Fibonaci thứ n. (1<=n<=20).

BT4. Nhập vào 1 dãy số nguyên N phần tử. Đếm xem trong dãy có bao nhiêu số
chính phương.

INPUT OUTPUT

5 1
(2 15 4 19 51)
BT4. Nhập vào 1 dãy số nguyên N phần tử. Hãy đưa ra màn hình các số nguyên tố có
trong dãy.

INPUT OUTPUT

5 2 19

(2 15 4 19 51)

You might also like