Chương 1
MỘT SỐ KHÁI NIỆM VỀ LẬP TRÌNH VÀ NGÔN NGỮ LẬP TRÌNH
Bµi tËp
1. Người ta phải
xây dựng ngôn ngữ lập trình bậc cao vì:
- Ngôn ngữ lập trình bậc cao gần gủi với tự
nhiên hơn, thuận tiện cho đông đảo người lập trình
- Ngôn ngữ lập
trình bậc cao nói chung không phụ thuộc vào loại máy, cùng một chương trình có
thể thực hiện trên nhiều máy khác nhau
- Chương trình
viết bằng ngôn ngữ bậc cao dễ hiểu, dễ hiệu chỉnh và dễ nâng cấp hơn
- Ngôn ngữ lập
trình bậc cao cho phép làm việc với nhiều kiểu dữ liệu và cách tổ chức dữ liệu
đa dạng, thuận tiện cho một thuật toán.
2. Chương trình
dịch là chương trình đặc biệt, có chức năng chuyển đổi chương trình được viết
trên ngôn ngữ lập trình bậc cao thành chương trình thực hiện được trên máy
tính.
3.
- Biên dịch: duyệt,
kiểm tra, phát hiện lỗi, xác định chương trình nguồn có dịch được không. Dịch
toàn bộ chương trình nguồn thành một chương trình đích có thể thực hiện trên
máy và có thể lưu trữ lại để sử dụng về sau khi cần thiết
- Thông dịch: lần
lượt dịch từng câu lệnh ra ngôn ngữ máy rồi thực hiện ngay câu lệnh vừa dịch
được hoặc thông báo lỗi nếu không dịch được
4. Các điểm khác
nhau giữa tên dành riêng và tên chuẩn: tên dành riêng không được dùng khác với
ý nghĩa xác định, tên chuẩn có thể dùng với ý nghia khác.
5. Đúng: tamgiac,
bai5a, xemxonxiu_ngu...
6. C: 6,23® 6.23
E: A20 tên chưa có giá trị
G: 6 4 + H: ‘C ® ‘C’I:
‘TRUE’ “true” là hằng
logic.
Chương 2:
CHƯƠNG TRÌNH ĐƠN GIẢN
Bµi Thùc Hµnh Sè 1
----------------- -----------------*****
***** *****----------------- -----------------
1. Sự khác nhau
giữa hằng có đặt tên và tên biến: Giá trị của hằng có đặt tên không thay đổi
khi thực hiện chương trình còn giá trị của biến có thể thay đổi tại từng thời
điểm thực hiện chương trình.
2. Khai báo biến
nhằm những mục đích sau:
- Xác định kiểu của
biến. Trình dịch sẽ biết cách tổ chức ô nhớ chứa
giá trị của biến.
- Đưa tên biến vào
danh sách các đối tượng được chương trình quản lí.
- Trình dịch biết
cách truy cập giá trị của biến và áp dụng thao tác thích hợp cho biến.
3. integer, real,
extended, longint.
4. D
5. C
6.
(1+z)*(x+y/z)/(a-1/(1+x*x*x*x))
Bài 7. a) b) c) d)
Bài 8. a)
program bai8a;
uses cr crt;
var x,y:real;
kt:boolean;
begin
clrscr;
write('Nhap x:’);readln(x);
write('Nhap y:');readln(y);
kt:=false;
if ((y<1) or
(y=1)) and ((y>abs(x)) or (y=abs(x)))
then kt:=true;
if kt then
write('Diem vua nhap thuoc phan gach cheo')
else write('Khong
thuoc');
readln
end.
b)
program bai8;
uses crt;
var x,y:real;
kt:boolean;
begin
clrscr;
write('Nhap x:
');readln(x);
write('Nhap y:
');readln(y);
kt:=false;
if (abs(y)<=1)
and (abs(x)<=1) then kt:=true;
if kt then
write('Diem vua nhap thuoc phan gach cheo')
else write('Khong thuoc');
readln
end.
Bài 9.
Program bai9;
uses crt;
const pi= 3.1416;
var a,s:real;
begin
clrscr;
repeat
write('Nhap ban
kinh duong tron: ');
readln(a);
if a<0 then
writeln('Nhap lai!');
until a>0;
s:=(a*a*pi)/2;
write('Dien tich phan
gach cheo: ',s:8:3);
readln
end.
Bài 10.
program bai10;
uses crt;
const g= 9.8;
var v, h:real;
begin
clrscr;
repeat
write('Nhap do
cao: '); readln(h);
if h<0 then
writeln('Nhap lai!');
until h>0;
v:=sqrt(2*g*h);
write('Van toc:
',v:8:3);
readln
end.
Chương 3
CẤU TRÚC RẼ NHÀNH VÀ LẶP
Bµi Thùc Hµnh Sè 2
----------------- -----------------*****
***** *****----------------- -----------------
1. Giống nhau: cùng
là câu lệnh cấu trúc rẽ nhánh, khi gặp một điều kiện nào đó thì chọn thực hiện
thao tác thích hợp
Khác nhau: trong
câu lệnh if-then dạng thiếu, nếu điều kiện không đúng thì thoát khỏi cấu trúc
rẽ nhánh, thực hiện câu lệnh tiếp theo của chương trình, còn trong câu lệnh
if-then dạng đủ, nếu điều kiện không đúng thì thực hiện công việc 2, sau đó mới
thoát khỏi cấu trúc rẽ nhánh, thực hiện câu lệnh tiếp theo của chương trình.
2. Câu lệnh ghép
là một câu lệnh được hợp thành
từ nhiều câu lệnh thành phần. Câu lệnh ghép nhằm
thực hiện thao tác gồm nhiều thao tác thành phần. Mỗi thao tác thành phần tương
ứng với một câu lệnh đơn hoặc một câu lệnh ghép khác. Câu lệnh ghép là một
trong các yếu tố cần thiết để xây dựng chương trình có cấu trúc.
Bài 3.
Program tong1a;
Uses crt;
Var S: real;
a, N: integer;
begin
clrscr;
write('Nhap a:
');readln(a);
S:=1.0/a;
N:=1;
While n<=100 do
Begin
S:=S+1.0/(a+N);
N:=N+1;
End;
Writeln('Tong S
la: ',S:8:4);
Readln
End.
Bài 4.
a) program bai4a;
uses crt;
var x, y, z:real;
begin
clrscr;
write('nhap hai so
x va y: '); readln(x,y);
if x*x+y*y<=1
then
begin
z:=(x*x+y*y);
writeln('tong can
tim: ',z:9);
end;
if (x*x+y*y>1)
and (y>=x) then
begin
z:=(x+y);
writeln('tong can
tim: ',z:9);
end;
if (x*x+y*y>1)
and (y<x) then
begin
z:=0.5;
writeln('tong can
tim: ',z);
end;
readln
end.
b) program bai4b;
uses crt;
var
x,y,z,a,b,r:real;
begin
clrscr;
write('Nhap x:
');readln(x);
write('Nhap y:
');readln(y);
write('Nhap toa do
tam hinh tron: ');
readln(a,b);
write('Nhap ban
kinh r: ');readln(r);
if sqrt(sqr(x-a)+sqr(x-b))<r
then
begin
z:=abs(x)+abs(y);
writeln('Z=
',z:3:3);
end
else
begin
z:=x+y;
writeln('Z= ',z:3:1);
end;
readln
end.
Bài 5.
a)Program bai5a;
Uses crt;
Const n=50;
Var i: integer;
Y:real;
Begin
Clrscr;
for i:=1 to n do
Y:=i/(i+1);
Write('Tong Y:
',y:9:3);
Readln
End.
b)program bai5b;
uses crt;
var n:longint;
e,sh:real;
begin
clrscr;
sh:=1/2; n:=2;
e:=2+sh;
while
sh>=2*1e-16 do
begin
n:=n+1;
sh:=sh*(1/n);
e:=e+sh;
end;
writeln('Gia tri
e(n) la: ',e:10:4);
readln
end.
Bài 6.
program Bai6;
uses crt;
var x, y:byte;
begin
clrscr;
for x:=1 to 36 do
for y:=0 to 20 do
if (x+y=36) and
(2*x+4*y=100) then
begin
writeln('Co ',x,'
con Ga');
write('Co ',y,'
con Cho');
end;
readln
end.
Bài 7.
program Bai7;
uses crt;
var b, c, n:byte;
bein
clrscr;
repeat
write('Nhap tuoi
cha: ');readln(b);
write('Nhap tuoi
con: ');readln(c);
if (b-c<25) or
(b<2*c) then
writeln('Du lieu
khong hop le, nhap lai.');
until (b-c>=25)
and (b>=2*c);
if b=2*c then
writeln('Hien nay
tuoi cha gap hai lan tuoi con.')
else
if b>2*c then
writeln('Sau
',b-2*c,' nam tuoi cha se gap doi tuoi con');
readln
end.
Bài 8.
program Bai8;
uses crt;
var A, B, St, Luu
:real; n:byte;
begin
clrscr;
write('Nhap so
tien gui: ');readln(a);
write('Nhap so
tien nhan: ');readln(b);
luu:=A; n:=0;
st:=a;
while St<=B do
begin
St:=St+luu*0.003;
n:=n+1;
end;
writeln('So thang
can la: ',n);
readln
end.
Chương 4:
KIỂU DỮ LIỆU CÓ CẤU TRÚC
Bµi Thùc Hµnh Sè 3
-- ----------------- ---------------
---------------***** ***** *****----------------- -----------------
Bài 1.
program sum1;
uses crt;
const nmax=100;
type
Myarray=array[1..nmax] of integer;
var A:myarray;
s,n,i,k,posi,neg:integer;
begin
clrscr; randomize;
write('Nhap n:
');readln(n);
for i:=1 to n do
A[i]:=random(300)-random(300);
for i:=1 to n do
write(A[i]:5); writeln;
for i:=1 to n do
if A[i]>0 then
posi:=posi+1
else if A[i]<0
then
neg:=neg+1;
writeln('Co
',posi,' so duong va ',neg,' so am trong mang');
write('Nhap k:
');readln(k);
s:=0;
for i:=1 to n do
if A[i] mod k = 0
then s:=s+A[i];
writeln('Tong can
tinh la: ',s);
readln
end.
Bài này cho kết quả
ngẫu nhiên nên kết quả
của các bạn có thể
khác.
Bài 2.
program mang2;
uses crt;
var
A:array[1..100] of integer;
n,i,j,max:integer;
begin
clrscr;
write('Nhap so
luong phan tu: ');readln(n);
for i:=1 to n do
begin
write('Nhap phan
tu thu ',i,': '); readln(a[i]);
end;
max:=a[1];
for i:=2 to n do
if a[i]>a[i-1]
then max:=A[i];
for j:=1 to n do
if a[j]=max then
writeln('chi so
phan tu lon nhat: ',j);
readln
end.
Chú ý: Các bạn sửa
lại chương trình để đưa ra kết quả hợp lí, các chỉ số của phần tử lớn nhất cùng nằm trên một dòng.
Bµi Thùc Hµnh Sè 4
-----------------
-----------------***** ***** *****----------------- -----------------
Bài 1.
uses crt;
var
A:array[1..250] of integer;
n,i,j,y,dem,t:integer;
begin
clrscr;
randomize;
write('Nhap n:
');readln(n);
for i:=1 to n do
A[i]:=random(300)-random(300);
for i:=1 to n do
write(A[i]:5);
writeln; dem:=1;
for j:=n downto 2
do
for i:=1 to j-1 do
if A[i]>A[i+1]
then
begin
t:=a[i];
a[i]:=a[i+1];
A[i+1]:=t;
dem:=dem+1;
end;
write('Sau khi dao
',dem,' lan');
for i:=1 to n do
write(A[i]:7); writeln;
readln
end.
Bài này cho kêt quả
là
ngẫu nhiên.
Bµi Thùc Hµnh Sè 5
----------------- -----------------*****
***** *****----------------- -----------------
Bài 1.
program xau;
uses crt;
var i, x:byte;
S: string;
kt:boolean;
begin
clrscr;
write('Nhap xau:
');readln(s);
x:=length(S);
kt:=false;
for i:=1 to x div
2 do
if S[i]=S [x-i+1]
then kt:=true;
if kt then
write('Xau la palindrome')
else write('Xau
khong la palindrome');
readln
end.
Bài 2.
program Bai2;
uses crt;
var S:string;
i,n,dem:integer; ch:char;
begin
clrscr;
write('Nhap xau: ');readln(S);
for i:=1 to
length(S) do
s[i]:=upcase(s[i]);
for ch:='A' to 'Z'
do
begin
dem:=0;
for i:=1 to
length(s) do
if s[i]=ch then
dem:=dem+1;
if dem>0 then
writeln('Trong xau
co ',dem,' chu ',ch);
end;
readln
end.
Bài 3.
program anhem;
uses crt;
var S:string;
i,n:integer;
begin
clrscr;
write('Nhap xau:
');readln(s);
while
pos('anh',s)<> 0 do
begin
n:=pos('anh',s);
delete(S,n,3);
insert('em',s,n);
end;
write('Xau moi:
',s);
readln
end.
Bài tập chương 4
1. Mảng là kiểu dữ
liệu có cấu trúc bởi vì mảng là kiểu
có cấu trúc được đề cập
tới sớm nhất trong các ngôn ngữ lập trình. Nó được xây dựng từ
những kiểu dữ liệu đã có theo quy tắc khuôn dạng do ngôn ngữ
lập trình cung cấp. Nó được dùng
để chỉ
định một nhóm đối tượng cùng một
tính chất nào đó.
2. Chúng ta phải
khai báo kích thước của mảng bởi vì để cách đánh số các phần tử
của nó.
3. real, boolean,
integer, longint.
4. Tham chiếu đến
phần tử của
mảng một chiều được xác định bởi tên mảng cùng với chỉ
số, được viết trong cặp ngoặc [..] (Ví dụ:
A[1]). Còn tham chiếu đến phần tử
của mảng 2 chiều được xác định bởi
tên mảng cùng với 2 chỉ số
được phân cách bởi dấu phẩy và viết trong cặp ngoặc [..] (ví dụ: A[1,2]).
Bài 5.
uses crt;
var
a:array[1..100] of integer;
n,i,d:integer;csc:boolean;
begin
clrscr;
write('Nhap n:
');readln(n);
for i:=1 to n do
begin
repeat
write('Nhap phan
tu thu ',i,': ');
readln(a[i]);
if
abs(a[i])>1000 then writeln('Nhap so nho hon 1000');
until
abs(a[i])<=1000;
end;
csc:=false;
d:=a[2]-a[1];
for i:=2 to n do
if a[i+1]-a[i]=d
then csc:=true;
if csc then
writeln('Day la cap so cong') else
write('Day khong
la cap so cong');
readln
end.
Bài 6.
program bai6;
uses crt;
var
A:array[1..100] of integer;
i,n,dem,u,d:integer;
begin
clrscr;
write('Nhap so
luong phan tu: ');readln(n);
for i:=1 to n do
begin
repeat
write('Nhap phan
tu thu ',i,': ');
readln(a[i]);
if
abs(A[i])>1000 then write('Nhap so <1000 OK');
until
abs(A[i])<1000;
end;
dem:=0;
for i:=1 to n do
begin
if a[i] mod 2= 0
then dem:=dem+1;
end;
writeln('So luong
so le: ',n-dem);
writeln('So luong
so chan: ',dem);
for i:=1 to n do
if a[i]>1 then
begin
u:=2;
while
(u<=sqrt(A[i])) and (A[i] mod u <> 0) do
u:=u+1;
if u>sqrt(A[i])
then d:=d+1;
end;
write('So luong so
nguyen to: ',d);
readln
end.
Bài 7.
program bai7;
uses crt;
var n, i:word; f,
f1,f2:word;
begin
clrscr;
repeat
write('Nhap N:
');readln(n);
if n<2 then
writeln('Nhap N>2 OK!');
until n>=2;
f1:=1;
f2:=2;
for i:=3 to n do
begin
f:=f1+f2;
f1:=f2;
f2:=f;
end;
write('So fibonaxi
thu ',n,' la ' ,f);
readln
end.
Chương trình thực hiện đến Nmax=10001.
Bài 8.Chương trình
thực hiện việc hoán đổi vị trí
dòng thứ i với
dòng thứ N-i+1,
nghĩa là hoán đổi vị trí
dòng đầu tiên với dòng cuối cùng của mảng hai chiều, dòng thứ
hai từ
trên xuống với dòng thứ
hai từ
dưới lên,… Việc hoán đổi vị
trí dòng thứ
i với dòng đối xứng với nó được
thực hiện khi i nhận
giá trị từ
1 đến N, làm cho mỗi dòng được
hoán đổi vị trí
2 lần. Vì vậy mảng A
sau khi hoán đổi không thay đổi so với ban đầu.
Bài 9.
program bai9;
uses crt;
var
A:array[1..15,1..15] of integer;
N, i, j, max, ind, vsp:integer;
begin
clrscr;
write('Nhap N:
');readln(n);
for i:=1 to n do
for j:=1 to n do
begin
write('Nhap
A[',i,',',j,']: ');
readln(A[i,j]);
end;
for i:=1 to n do
begin
max:=A[1,i];ind:=1;
for j:=2 to n do
if A[j,i] > max
then
begin
max:=A[j,i];
ind:=j;
end;
vsp:=A[i,i];
A[i,i]:=max;
A[ind,i]:=vsp;
end;
for i:=1 to n do
begin
writeln;
for j:=1 to n do
write(A[i,j]:3);
end;
writeln;
readln
end.
Bài 10.
program bai10;
uses crt;
var S:string;
i,dem,n:integer;
begin
clrscr;
write('Nhap xau:
');readln(S);
n:=length(S);
dem:=0;
for i:=1 to n do
if (s[i]>='0')
and (s[i]<='9') then dem:=dem+1;
write('Co ',dem,'
chu so trong xau vua nhap');
readln
end.
Bài 11.
program bai11;
uses crt;
const max=60;
type Hocsinh =
record
hoten:string[30];
ngaysinh:string[10];
diachi:string[50];
toan, van:real;
xeploai:char;
end;
var
lop:array[1..max] of hocsinh;
N, i:byte;
begin
clrscr;
write('Nhap so
luong hoc sinh: ');readln(n);
for i:=1 to n do
with lop[i] do {Chú
ý câu lệnh này}
begin
writeln('Nhap so
lieu hoc sinh thu ',i,':');
write('Ho va ten:
');readln(hoten);
write('Ngay sinh:
');readln(ngaysinh);
write('Dia chi :
');readln(diachi);
write('Diem toan:
');readln(toan);
write('Diem van :
');readln(van);
if toan+van>=18
then xeploai:='A';
if
(toan+van>=14) and (toan+van<18) then xeploai:='B';
if
(toan+van>=10) and (toan+van<14) then xeploai:='C';
if
(toan+van<10) then xeploai:='D';
end;
clrscr;
writeln('Danh sach
hoc sinh:');
for i:=1 to n do
with lop[i] do
writeln(hoten:30,'-
xep loai: ',xeploai);
writeln('Danh sach
hoc sinh loai A:');
for i:=1 to n do
with lop[i] do
if xeploai='A'
then
writeln(hoten:30);
readln
end.
Chương 5:
THAO TÁC VỚI TỆP
Bµi tËp chư¬ng
1. Một số trường hợp
phải dùng tệp: luu trữ
lượng thông tin lớn, dùng lâu
dài, ít thay đổi như tên
người trong một cơ quan,
hồ sơ của
sinh viên, lương cán bộ,....
2. Trong sơ đồ
thao tác với tệp, khi cần nhập dữ liệu từ tệp phải dùng những thao tác như gắn
tên tệp, mở tệp để ghi, ghi dữ liệu vào tệp, đóng tệp để hoàn tất việc ghi dữ
liệu
Assign(f,f1);
Rewrite(f);
Write(f,x,’ ‘,y,’
‘,z); {ghi giá trị các biến , y, z vào tệp}
Close(f);
3. Phải mở
tệp trước khi đọc tệp vì trước
khi sử dụng tệp phải có câu lệnh mở
tệp để
trình dịch biết thực hiện mục đích mở tệp để đọc hay ghi, đồng thời đặt con trỏ,
tệp vào vị
trí thích hợp
4. Phải dùng lệnh đóng
tệp sau khi đã kết thúc ghi dữ liệu
vào tệp để hệ thống hoàn tất việc ghi dữ liệu ra tệp. Không có câu lệnh đóng tệp thì
chương trình sẽ không
thể ghi được dữ
liệu vào tệp.
Chương 6:
CHƯƠNG TRÌNH CON VÀ LẬP
TRÌNH CÓ CẤU TRÚC
Bµi Thùc Hµnh Sè 6
----------------- -----------------***** *****
*****----------------- -----------------
Chuong trình
program thuchanh6;
uses crt;
type str =
string[79];
var S1, S2:str;
dong:byte; dung:boolean;
procedure
catdan(s1:str; var s2: str);
begin
s2:=copy(s1,2,length(s1)-1)+S1[1];
end;
procedure
cangiua(var s:str);
var n, i:integer;
begin
n:=length(s);
n:=(80-n) div 2;
for i:=1 to n do
s:=' '+s;
end;
procedure
chuchay(s1:str; dong:byte);
var s2:str;
dung:boolean;
begin
clrscr;
cangiua(s1);
clrscr;
dung:=false;
while not(dung) do
begin
gotoxy(1,dong);
write(s1);
delay(100);
catdan(s1,s2);
s1:=s2;
dung:=keypressed;
end;
end;
begin
clrscr;
write('Nhap xau :’);readln(s1);
write('Nhap dong:
');readln(dong);
chuchay(s1,dong);
readln
end.
Bµi Thùc Hµnh Sè 7
----------------- -----------------***** *****
*****----------------- -----------------
program tamgiac;
uses crt;
const eps=1.0e-6;
type diem=record
x, y:real;
end;
tamgiac=record
a, b, c:diem;
end;
var T:tamgiac;
d, cn, v: boolean;
n, i, deu, can, vuong:word;
f,g:text;
function khcach(P,
Q: Diem):real;
begin
khcach:=sqrt((P.x
-Q.x)*(p.x -q.x)+(p.y-Q.y)*(p.y-Q.y));
end;
procedure
daicanh(var R:tamgiac; var a, b, c:real);
begin
a:=khcach(R.B,
R.C);
b:=khcach(R.A,
R.C);
c:=khcach(R.A,
R.B);
end;
procedure
tinhchat(var R: tamgiac; var deu,can,vuong:boolean);
var a, b, c:real;
begin
deu:=false;
can:=false; vuong:=false;
daicanh(R,a,b,c);
if
(abs(a-b)<eps) and (abs(a-c)<eps) then
deu:=true
else
if
(abs(a-b)<eps) or (abs(a-c)<eps) or (abs(b-c)<eps) then
can:=true;
if
(abs(a*a+b*b-c*c)<eps) or (abs(a*a+c*c -b*b)<eps) or
(abs(b*b+c*c-a*a)<eps) then
vuong:=true;
end;
begin
deu:=0;
can:=0;
vuong:=0;
assign(f,'tamgiac.dat');
reset(f);
readln(f,n);
assign(g,'tamgiac.out');
rewrite(g);
for i:=1 to n do
begin
readln(f, T.A.x,
T.A.y, T.B.x, T.B.y, T.C.x, T.C.y);
tinhchat(T,D,cn,v);
if d then
deu:=deu+1 else
begin
if cn then
can:=can+1;
if v then
vuong:=vuong+1;
end;
end;
writeln(g,'co
',deu,' tam giac deu');
writeln(g,'co
',can,' tam giac can');
writeln(g,'co
',vuong,' tam giac vuong');
close(f);close(g);
end.
Ví dụ
Tệp văn bản chứa
tọa độ các đỉnh của các tam giác
Vào file-new
rồi nhập dữ liệu như dưới đây, nhấn f2 để lưu lại với tên tamgiac.dat
3
5 10
20 10 20 50
2 30
15 20 15 40
5 30
15 20 15 35
Vào file-new,
rồi nhấn f2 lưu lại với tên tamgiac.out
Nhấn . f6 chuyển sang cửa sổ chương trình và chạy chương
trình. Chạy xong nhấn yes, nhấn
f6 cho đến khi xuất hiện cửa sổ
văn bản tamgiac.out xem kết quả.
Tệp văn bản chứa
kết quả sau khi thực hiện chương trình
Co 0 tam giac deu
Co 1 tam giac can
Co 1 tam giac
vuong
Bµi
tËp chư¬ng 6
1. SGK
2. Chương trình
con không có tham số
Procedure ve;
Begin
Writeln(‘****************’);
Writeln(‘*I love
you ok!*’);
Writeln(‘****************’);
End;
3. Chương trình con cho nhiều hơn một kết quả:
Procedure
hoandoi(var x, y:integer);
Var tg:integer;
Begin
Tg:=x;
X:=y;
Y:=tg;
End;
4.
program bai4;
uses crt;
var x, y:integer;
function ucln(a,
b:integer): integer;
var r:integer;
begin
while b>0 do
begin
r:=a mod b;
a:=b; b:=r;
end;
ucln:=a;
end;
function bcnn(a,
b:integer): integer;
begin
bcnn:=a*b div
ucln(a,b);
end;
begin
clrscr;
write('Nhap x:
');readln(x);
write('Nhap y:
');readln(y);
write('Boi chung
nho nhat: ',bcnn(x,y));
readln
end.