Function: hàm For, repeat, until,..... 7) Viết chương trình nhập vào một số nguyên rồi sau đó in ra các ước của nó.. 8) Viết chương trình nhập vào hai số nguyên dương tìm và in ra UWCL[r]
(1)NGƠN NGỮ LẬP TRÌNH PASCAL
SƠ LƯỢC VỀ NGƠN NGỮ LẬP TRÌNH PASCAL
Ngơn ngữ lập trình Pascal đời năm 1970 Do giáo sư niklauswirth phát triển
1) Các thành phần Pascal
Sử dụng 26 chữ thường: a z 26 chữ hoa A Z Sử dụng 10 chữ số thập phân:
Sử dụng phép toán: +, -, *, /, (), >, <, =>, <=, <> Ngoài sử dụng “, ‘, {, }, [, ]
2) Khái niệm tên
Pascal qui định số từ khóa sau (keyword) Program: tên chương trình
Begin: bắt đầu End: kết thúc Var: khai báo Or: Not: phủ định If:
Else: ngược lại Then: sau
* Hằng: Là đại lượng khơng thay đổi trình thực chương trình
* Biến: Là đại lượng thay đổi trình thực chương trình 3) Cách đặt tên chươnng trình
- Khơng trùng với từ khóa - Khơng dài q 63 kí tự
- Khơng bắt đầu bẳng số - Khơng có khoảng trắng
- Hai đại lượng khác phải có tên khác Vd: an so: sai có kí tự trắng
An_so:
1abc: sai bắt đầu số
* Lưu ý: Đặt tên chương trình phải ngắn gọn đủ để nhớ ý nghĩa 4) Các kiểu liệu đơn giản
Số nguyên, số thực, boolean, kí tự sâu kí tự Write: viết
Writeln: viết xuống dòng Read: đọc
Readln: đọc xuống dòng Integer: biến nguyên To, downto
(2)* Các phép toán: +: Cộng
-: trừ *: nhân
Chia: x mod y chia lấy phần dư X div y chia lấy phần nguyên * Lệnh gán:
* Khai báo: ví dụ Var
a: integer;
CẤU TRÚC CHUNG CỦA MỘT CHUvONG TRÌNH * Cấu trúc chung chương trình gồm phần
- Phần tiêu đề
- Phần khai báo (bắt buộc)
- Phần thân chương trình: nằm hai từ khóa Begin end
* Chú ý: Nếu thực khối lệnh ( từ hai lệnh trở lên) ta phải gói từ khóa begin
CẤU TRÚC ĐIỀU KHIỂN
1) IF THEN * Cú pháp:
* Ý nghĩa: Khi gặp lệnh máy kiểm tra biểu thức, biểu thức thực lệnh P, ngược lại bỏ qua thực lệnh chương trình
* Sơ đồ:
:=
IF <ĐIỀU KIỆN> THEN <LỆNH P>;
B T
Lệnh P
Lệnh T
(3)* Ví dụ: Nhập vào hai số nguyên dương, tìm Max in Max Program max_cua_hai_so;
Var
a,b: integer; begin
write(‘nhap vao so nguyen thu nhat:’); readln(a); write(‘nhap vao so nguyen thu hai:’); readln(b); if a> b then
writeln(‘max hai so vua nhap la:’,a) if b>a then
writeln(‘ max hai so vua nhap la:’,b) readln;
end
2) Cấu trúc IF đủ: IF THEN ELSE * Cú pháp:
* Sơ đồ:
* Ví dụ: Nhập vào số kiểm tra xem số số âm hay số dương Var
X: Integer; Begin
Write(‘ nhap vao mot so bat ki:’); readln(x); If x>=0 then
Writeln(‘ so vua nhap la so duong’) Else writeln(‘ so vua nhap la so am’);
if <điều kiện> then <lệnh P> Else < Lệnh Q>;
Đ K
LỆNH P LỆNH Q
LỆNH KẾ TIẾP
+
(4)-Readln; End
CẤU TRÚC FOR
Cấu trúc for cấu trúc vòng lặp biết trước số vòng lặp * Cú pháp:
* Sơ đồ:
Ví dụ: Nhập vào số nguyên in số nguyên nhỏ số vừa nhập Giải:
Var
N,i: integer; Begin
Write(‘nhap n:’); readln(n); For i:=1 to n
Write(i:3); Readln;
End Bài tập:
Vừa gà vừa chó Bó lại cho trịn Đếm đủ 36 100 chân chẵn Giải:
Var
A,b: integer; Begin
FOR BIếN: =M1 TO M2 DO <LệNH P>;
Biến:= m1
Lệnh P
Lệnh Biến
<m2
Biến: =succ(biến)
(5)For a:=1 to 36
For b:=1 to 36
If (a+b=36) and (4*a +2* b =100) then Begin
Writeln(a); Writeln(b); End;
Readln; End
Bài toán: Nhập vào số nguyên n sau tính tổng từ đến n Giải:
Var
S,n,i: integer; Begin
Write(‘nhap n:’); readln(n); S:=0;
For i:=1 to n S:=s+i;
Writeln( ‘ tong tu den n la :’,s); Readln;
End
VÒNG LẶP WHILE * Cú pháp:
* Sơ đồ:
Ví dụ: Tính giai thừa số nguyên n, với n nhập từ bàn phím Giải:
Var
N,i: integer; S:longint; Begin
WHILE <ĐK> DO < LỆNH P>;
Đ K
LỆNH LỆNH KẾ TIẾP
T
WHILE
(6)Write(‘nhap n:’); readln(n);
S:=0; i:=1;
While i<n Begin
S:=s+i; I:= i+1; End;
Writeln(n:3, ‘ giai thua bang ‘, s); Readln;
End
Giải toán hàm for Var
N,i: integer; S:longint; Begin
Write(‘nhap n:’); readln(n); S:=1;
For i:=1 to n S:=s+i;
Writeln(‘ giai thua cua ‘, n, ‘la’,s); Readln;
End
VÒNG LẶP REPEAT UNTIL * Cú pháp:
* Sơ đồ:
REPEAT LỆNH;
UNTIL < Điều kiện thoát>
Lệnh
Lệnh ĐK Thoá
(7)KIỂU MẢNG
1) Đ/N: Kiểu mảng (Array) gồm số cố định phần tử kiểu liệu
Ví dụ: Cách khai báo mảng
Type mangthuc=array [5 100] of real;
Var
X: mangthuc; 2) Cách khai báo:
* Khai báo tường minh: Var
<Tên biến>: array<chỉ số> of <kiểu>; Ví dụ: gio_Lv: array[1 8] of integer; * Khai báo không tường minh:
Type
<tên kiểu> = [ danh sách phần t]; < tên mảng>= array< tên biến> of kiểu; Var
<Tên biến>: <tên mảng>;
Bài tập: Nhập vào dãy số nguyên in mảng số nguyên vừa nhập vào
Giải: Var
N,i:integer;
A:array[1 50] of integer; Begin
Write( ‘nhap vao so phan tu cua mang:’); Readln(n);
For i:=1 to n Begin
Write(‘a[‘,I,’]:’); Readln(a[i]); End;
Writeln(‘ mang vua nhap la:’); For i:=1 to n
Write(a[i]:3); Readln;
(8)Bài tập: Nhập vào số nguyên n từ bàn phím tìm in số nguyên tố nhỏ n
Giải:
Var
I,j,n: integer; Begin
Write(‘nhap vao mot so nguyen:’); readln(n); I:=2;
While i<n Begin
J:=2;
While (j<i ) begin
If i mod j <>0 then J:=j+1
Else
Break; End;
If j=I then write(i:3); I:=i+1;
End; Readln;
End
Bài tập: Viết chương trình in bảng cửu chương Giải:
Uses crt; Var
I,j:integer; Begin
Clrscr;
Writeln(‘chuong trinh in bang cuu chuong’); Writeln(‘………’); Writeln(‘………’); For j:=1 to 10
Begin
For i:=2 to
Write(i:3,’*’, j:3, ’=’, j*i:3, ’||’); Writeln;
End;
(9)Begin
For i:=6 to
Write (i:3,’*’, j:3, ’=’, j*i:3, ’||’); Writeln;
End; Readln;
End
Bài tập: Nhập vào n số nguyên, tìm in số có giái trị lớn Uses crt;
Var
A: array [1 100] of integer; n,i,max : integer;
begin clrscr;
writeln(‘ chuong trinh nhap vao mot day so nguyen); writeln(‘ tim va in so co gia tri lon nhat);
writeln(‘ ……….’); writeln(‘ ……….’); writeln;
write(‘nhap vao so phan tu cua day:’); readln(n); for i:=1 to n
begin
write(‘ nhap pt a[‘,I, ‘]:’); readln (a[i]);
end;
max:=a[1]; begin
if a[i]> max then max:=a[i];
end;
writeln(‘ gia tri so lon nhat day vua nhap la:’,max: 3); readln;
end
Bài tập: Viết chương trình in tam giác rỗng Uses crt;
Var
I,n:integer; Begin
Clrscr;
(10)Writeln;
Writeln(‘………’); Writeln;
Write(‘nhap chieu cao cua tam giac:’); readln(n); Writeln;
Writeln(‘*’:n); For i:=2 to n-1
Writeln( ‘*’:n-i+1, ‘*’:2*i-2; For i:=1 to 2*n-1
Write(‘*’); Readln;
End
Bài tập: Viết chương trình tính chu vi, diện tích tam giác với cạnh tam giác nhập từ bàn phím
Gợi ý cách giải:
Ba cạnh tam giác nhập vào từ bàn phím, sau nhập ba cạnh tam giác ta kiểm tra xem ba cạnh có tạo thành tam giác hay không
Đk để tạo thành tam giác: a+b>c a+c >b b+c>a thỏa tính chu vi tam giác
Chu vi:= a+b+c;
Diện tich:= sqrt(p*(p-a)*(p-b)*(p-c)); Với p:=(a+b+c)/2;
Giải:
Program chuong_trinh_tinh_cv_dt_tamgiac; Uses crt;
Var
a,b,c : integer;
p:real; { phải gán p kiểu real số lẻ} begin
clrscr;
write(‘nhap canh a:’); readln(a); write(‘nhap anh b:’); readln(b); write(‘nhap canh c:’); readln(c);
if (a+b>c) and (b+c >a) and (c+a >b) then begin
writeln(‘chu vi cua tam giac la:’,a+b+c); p:=(a+b+c)/2;
(11)writeln(sqrt(p*(p-a)*(p-b)*(p-c)):5:2); end
else
writeln( ‘ba canh tren khong tao tam giac’); readln;
end
Bài tập: Viết chương trình in tam giác vuông rỗng dấu ‘*’; Giải:
Program tamgiac_vuong_rong; Uses crt;
Var
I,j,n: integer; Begin
Write( ‘nhap vao chieu cao cua tam giac:’); readln(n); Writeln(‘*’);
For i:=1 to n-1 Writeln(‘*’, ‘*’:2*i); For i:=1 to 2*n Write(‘*’);
Readln; End
Bài tập: Viết chương trình tính số tiền tháng bất kì, biết số tiền ban đầu tiền lãi nhập từ bàn phím
Giải
Program tinh_tien; Uses crt;
Var
Tbd,ls, s, t: real; N,i:byte;
Begin
Write(‘nhap vao so tien ban dau:’); readln(tbd); Write( ‘nhap vao lai suat hang thang:’); readln(ls); Write(‘nhap vao so thang gui:’); readln(n); For i:=1 to n
Begin
T:=tbd*ls; S:=t+ tbd; Tbd:=s; End;
(12)Readln; End
Bài tập: Viết chương trình nhập vào dãy số nguyên, xếp dãy giảm dần in hình
Giải:
Program sx_giam_dan; Uses crt;
Var
n,i, tam,j: integer;
a:array[1 50] of integer; begin
write(‘nhap vao so pt cua mang:’); readln(n); for i:=1 to n
begin
write(‘a[‘,i,’]:’); readln(a[i]); end;
writeln(‘ day so vua nhap la:’); for i:=1 to n
write(a[i]:3); for i:=1 to n-1
for j:=i+1 to n if a[i]<a[j] then begin
tam:=a[i]; a[i]:=a[j]; a[j]:=tam; end;
writeln;
writeln(‘ day sau sap xep la:’); for i:=1 to n
write(a[i]:3); readln;
end
Bài tập: Nhập vào số nguyên phân tích số thừa số nguyên tố Giải:
Uses crt; Var
N,i:integer; Begin
(13)I:=2;
Write(n,’=’); While i<n If n mod i =0 then Begin
Write(I,’*’); N:=n div I; End
Else
I:=i+1; Write(n); Readln;
End Bài tập:
1) Viết chương trình nhập vào số, máy thơng báo số số chẵn hay số lẻ
2) Viết chương trình nhập vào ngày tháng năm, máy thơng báo vào ngày thứ tuần
CT tính thứ tuần:
Thứ:= (d+2*m+3*(m+1) div +y + y div 4) mod 7;
3) Viết chương trình nhập vào điểm trung bình, máy thơng báo điểm xếp loại kem, yếu, Tb, khá, giỏi hay xuất sắc biết:
Đtb<3.5: Đtb<5: yếu Đtb<6.5: Tb Đtb<8:
Đtb < 9: giỏi lại xếp loại xuất sắc
4) Viết chương trình nhập vào tháng, máy thơng báo tháng có ngày
5) Viết chương trình nhập vào cạnh a,b,c tam giác kiểm tra chúng có tồn tam giác hay khơng tồn tính chu vi, diện tích tam giác
Gợi ý: chu vi:=a+b+c;
Diện tích:= sqrt(p*(p-a)*(p-b)*(p-c) Trong : p:=(a+b+c)/2;
6) Viết chương trình giải hệ phương trình bậc sau: 5*x+2=0;
(14)7) Viết chương trình nhập vào số ngun sau in ước
8) Viết chương trình nhập vào hai số nguyên dương tìm in UWCLN, BCNN hai số
9) Viết chương trình nhập vào kiểm tra xem số có phải số hồn hảo hay khơng?
Biết số hồn tổng ước trừ Ví dụ: 6=1+2+3
10) Viết chương trình nhập vào số nguyên kiểm tra xem số có phải số ngun tố hay khơng?
11) Viết chương trình nhập vào số nguyên, tìm in số nguyên tố nhỏ số vừa nhập
12) Viết chương trình in dãy Fibonaci
13) Viết chương trình tính giai thừa n số nguyên với n nhập từ bàn phím
14) Viết chương trình nhập vào số tiền ban đầu, lãi suất n tháng gửi tính số tiền sau n tháng gửi
15) Viết chương trình in hình vng đặc 16) Viết chương trình in hình chữ nhật đặc 17) Viết chương trình in tam giác cân đặc 18) Viết chương trình in hình vng rỗng 19) Viết chương trình in hình chữ nhật rỗng 20) Viết chương trình in tam giác vng rỗng 21) Bài tốn cổ:
Vừa gà vừa chó Bó lại cho trịn Đếm đủ 36 100 chân chẵn
22) yêu cau sáu bổ ba
Ghét cau sáu bổ làm 10 Số người tính chẵn 80
Cau 15 hỏi người ghét yêu?
23) Viết chương trình nhập vào cạnh hình vng, tính in chu vi, diện tích hình vng
24) Viết chương trình nhập vào cạnh hình chữ nhật, tính in chu vi, diện tích hình chữ nhật
25) Viết chương trình nhập vào hai số nguyên tính tổng, tích hai số nguyên
(15)27) Viết chương trình nhập vào dãy số nguyên nhập vào số
28) Viết chương trình tính tổng:
S=1+2+3+…+n với n nhập vào từ bàn phím 29) Viết chương trình tính tổng :
S= 1+1/2 +1/3+…+ 1/n 30) Viết chuwong trình tính tổng:
S=1+ 1/4 +1/9 +… +1/n2
31) Viết chương trình tính tổng:
S=1 +1/8 + 1/27 +… + 1/n3
32) Viết chương trình tính tổng: S= +4 +16+… n2
33) Viết chương trình nhập in dãy số nguyên
34) Viết chương trình nhập vào mảng số nguyên tìm in giá trị nhỏ mảng
35) Viết chương trình nhập vào mảng số nguyên tìm in giá trị lớn mảng
36) Viết chương trình nhập vào mảng số nguyên tìm in GTLN, GTNN mảng
37) Viết chương trình nhập vào mảng số thực xếp mảng tăng dần in hình
38) Viết chương trình nhập vào mảng số nguyên (hoặc số thực) xếp mảng giảm dần in hình
39) Viết chương trình nhập vào mảng số nguyên, loại bỏ phần tử trùng in hình
40) Viết chương trình nhập vào mảng số ngun, tính tổng, tích số ngun in hình
42) Viết chương trình tính in giá trị trung bình số nguyên vừa nhập
43) Viết chương trình nhập vào mảng số nguyên, chèn phần tử vào mảng in hình
44) Viết chương trình in bảng cửu chương
KIỂU CHUỖI
Cách khai báo kiểu chuỗi giống kiểu mảng Ví dụ: Viết chương trình xuất chuỗi Program xuat_chuoi;
Var
(16)1
1
1
Write(‘ nhap vao mot chuoi:’); readln(chuoi); N:=length(chuoi);
begin
For i:=1 to n Writeln(‘ ‘,chuoi[i]); End;
Writeln; End
* Các thủ tục hàm kiểu chuỗi Thủ tục xóa:
Cú pháp: delete(st, pos, num); Trong đó:
st: chuỗi kí tự
pos: vị trí bắt đầu xóa num: số kí tự cần xóa Thủ tục chèn:
Cú pháp: insert( st2, st1, pos); Trong đó:
St2: chuỗi cần chèn St1: chuỗi kí tự Pos: vị trí cần chèn Length(st): trả chiều dài chuỗi
Trong Pascal hàm Upcase() dùng để đổi chữ thường thành chữ hoa hàm ngược lại
Trong bảng mã ASCII: A Z: từ 65 90
a z : 97 122
Bài tập: Viết chương trình đổi chữ thường chữ hoa Var
Chuoi:string; I:byte;
Begin
Write(‘nhap vao mot chuoi bang chu thuong:’); readln(chuoi); For i:=1 to length (chuoi)
Begin
Chuoi[i]:=upcase(chuoi[i]); Write(chuoi[i]);
End; Readln; End
(17)Bài tập: Viết chương trình đổi chữ hoa thành chữ thường Var
Chuoi:string; I:byte;
Begin
Writeln(‘chuong trinh doi chu hoa chu thuong’); Write(‘nhap vao mot chuoi bang chu hoa:’);
Readln(chuoi);
For i:=1 to length(chuoi) Begin
If (chuoi[i] >#65) and (chuoi[i]<#90) then Chuoi[i]:=chr(ord(chuoi[i]+32));
Write(chuoi[i]); End;