Tài liệu ôn thi chuẩn theo cấu trúc của tỉnh
Chia sẻ bởi Đinh Thị Bích Liêm |
Ngày 14/10/2018 |
80
Chia sẻ tài liệu: tài liệu ôn thi chuẩn theo cấu trúc của tỉnh thuộc Tin học 8
Nội dung tài liệu:
Các dạng bài tập pascal cơ bản cho học sinh THCS
Năm học : 2016-2017
Người biên soạn : Đinh Thị Bích Liêm
Dạng 1: Kiểm tra số nguyên tổ trong pascal
Nhập vào 1 số. Xác định xem số đó có phải số nguyên tố hay không. Đây là một bài toán rất căn bản trong Pascal. Ý tưởng: Số nguyên tố là số chia cho 1 và chính nó. Giả sử số vừa nhập vào là n, ta cho i chạy từ 2 đến n-1, nếu n chia hết cho i trong bất cứ lần lặp nào thì có nghĩa là n không nguyên tố, nếu không chia hết cho bất cứ lần lặp nào là nguyên tố. Về nguyên tắc là như vậy, nhưng người ta đã chứng minh được rằng chỉ cần xét từ 1 đến phần nguyên căn 2 của N. Như thế thuật toán sẽ tối ưu hơn. program kiem_tra_nguyen_to; uses crt; var n,i:integer; bl:boolean; begin clrscr; bl:=true; write(`nhap vao so can kiem tra tinh nguyen to: `); readln(n); if n<=1 then bl:=false; for i:=2 to trunc(sqrt(n)) then if n mod i=0 then bl:=false; if bl=true then write(`so vua nhap nguyen to.`) else write(`so vua nhap khong nguyen to.`); readln; end.
Dạng 2 : Dưới đây là thuật toán tìm UCLN bằng cách trừ đi nhau
var x,y,UCLN,BCNN:integer;
begin
readln(x,y); BCNN:=x*y;
While x<>y do If x>y then x:=x-y else y:=y-x; UCLN:=x; BCNN:=BCNN div UCLN;
write(UCLN,` `,BCNN);
end. Thuật toán Euclide: Ngoài cách tìm UCLN như trên. Các bạn có thể sử dụng cách chia lấy dư (mod), chương trình sẽ tối ưu do phải thực hiện ít phép tính hơn. Ý tưởng: UCLN của 2 số x, y cũng là UCLN của 2 số y và x mod y, vậy ta sẽ đổi x là y, y là x mod y cho đến khi y bằng 0. Khi đó UCLN là x.
var x,y,UCLN,BCNN,t:integer;
begin
readln(x,y); BCNN:=x*y; t:= y mod x; While t <> 0 do Begin t:= x MOD y; x:= y; y:= t; End;
ucln:=x; BCNN:=BCNN div UCLN;
write(UCLN,` `,BCNN);
end. Cách 3: Tìm UCLN bằng cách dùng đệ quy: Đệ quy được hiểu đơn giản là sự gọi nhiều lần chương trình con trong chương trình. Thực sự, đối với bài toán đơn giản, không ai sử dụng đệ quy vì sẽ làm phức tạp vấn đề và làm chương trình trở nên rắc rối, phải thực hiện nhiều phép tính hơn. Tuy nhiên, nếu bắt buộc phải dùng đệ quy, các bạn có thể tham khảo cách làm dưới đây:
function ucln(x,y:integer):integer; begin if x = y then ucln:=x else if x > y then ucln:=ucln(x mod y,y) else ucln:=ucln(x, y mod x); end;
var x,y:integer;
begin
readln(x,y);
write(`Ước chung lớn nhất là: `, UCLN(x,y), ` Bội chung nhỏ nhất là: `, (x*y) div UCLN(x,y));
end.
Dạng 3: Viết chương trình nhập vào một mảng gồm N số nguyên. Sắp xếp lại mảng theo thứ tự tăng dần và in kết quả ra màn hình.
Uses Crt;
Type Mang = ARRAY[1..50] Of Integer; Var A:Mang; N,i,j,Tam:Integer; Begin {Nhập mảng} Write(`Nhap N=`); Readln(N); For i:=1 To N Do Begin Write(`A[`,i,`]=`); Readln(A[i]); End; {Sắp xếp} For i:=1 To N-1 Do For j:=i+1 To N Do If A[i]>A[j] Then Begin Tam:=A[i]; A[i]:=A[j]; A[j]:=Tam; End; {In kết quả ra màn hình} Writeln(`Ket qua sau khi sap
Năm học : 2016-2017
Người biên soạn : Đinh Thị Bích Liêm
Dạng 1: Kiểm tra số nguyên tổ trong pascal
Nhập vào 1 số. Xác định xem số đó có phải số nguyên tố hay không. Đây là một bài toán rất căn bản trong Pascal. Ý tưởng: Số nguyên tố là số chia cho 1 và chính nó. Giả sử số vừa nhập vào là n, ta cho i chạy từ 2 đến n-1, nếu n chia hết cho i trong bất cứ lần lặp nào thì có nghĩa là n không nguyên tố, nếu không chia hết cho bất cứ lần lặp nào là nguyên tố. Về nguyên tắc là như vậy, nhưng người ta đã chứng minh được rằng chỉ cần xét từ 1 đến phần nguyên căn 2 của N. Như thế thuật toán sẽ tối ưu hơn. program kiem_tra_nguyen_to; uses crt; var n,i:integer; bl:boolean; begin clrscr; bl:=true; write(`nhap vao so can kiem tra tinh nguyen to: `); readln(n); if n<=1 then bl:=false; for i:=2 to trunc(sqrt(n)) then if n mod i=0 then bl:=false; if bl=true then write(`so vua nhap nguyen to.`) else write(`so vua nhap khong nguyen to.`); readln; end.
Dạng 2 : Dưới đây là thuật toán tìm UCLN bằng cách trừ đi nhau
var x,y,UCLN,BCNN:integer;
begin
readln(x,y); BCNN:=x*y;
While x<>y do If x>y then x:=x-y else y:=y-x; UCLN:=x; BCNN:=BCNN div UCLN;
write(UCLN,` `,BCNN);
end. Thuật toán Euclide: Ngoài cách tìm UCLN như trên. Các bạn có thể sử dụng cách chia lấy dư (mod), chương trình sẽ tối ưu do phải thực hiện ít phép tính hơn. Ý tưởng: UCLN của 2 số x, y cũng là UCLN của 2 số y và x mod y, vậy ta sẽ đổi x là y, y là x mod y cho đến khi y bằng 0. Khi đó UCLN là x.
var x,y,UCLN,BCNN,t:integer;
begin
readln(x,y); BCNN:=x*y; t:= y mod x; While t <> 0 do Begin t:= x MOD y; x:= y; y:= t; End;
ucln:=x; BCNN:=BCNN div UCLN;
write(UCLN,` `,BCNN);
end. Cách 3: Tìm UCLN bằng cách dùng đệ quy: Đệ quy được hiểu đơn giản là sự gọi nhiều lần chương trình con trong chương trình. Thực sự, đối với bài toán đơn giản, không ai sử dụng đệ quy vì sẽ làm phức tạp vấn đề và làm chương trình trở nên rắc rối, phải thực hiện nhiều phép tính hơn. Tuy nhiên, nếu bắt buộc phải dùng đệ quy, các bạn có thể tham khảo cách làm dưới đây:
function ucln(x,y:integer):integer; begin if x = y then ucln:=x else if x > y then ucln:=ucln(x mod y,y) else ucln:=ucln(x, y mod x); end;
var x,y:integer;
begin
readln(x,y);
write(`Ước chung lớn nhất là: `, UCLN(x,y), ` Bội chung nhỏ nhất là: `, (x*y) div UCLN(x,y));
end.
Dạng 3: Viết chương trình nhập vào một mảng gồm N số nguyên. Sắp xếp lại mảng theo thứ tự tăng dần và in kết quả ra màn hình.
Uses Crt;
Type Mang = ARRAY[1..50] Of Integer; Var A:Mang; N,i,j,Tam:Integer; Begin {Nhập mảng} Write(`Nhap N=`); Readln(N); For i:=1 To N Do Begin Write(`A[`,i,`]=`); Readln(A[i]); End; {Sắp xếp} For i:=1 To N-1 Do For j:=i+1 To N Do If A[i]>A[j] Then Begin Tam:=A[i]; A[i]:=A[j]; A[j]:=Tam; End; {In kết quả ra màn hình} Writeln(`Ket qua sau khi sap
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...
Người chia sẻ: Đinh Thị Bích Liêm
Dung lượng: 12,42KB|
Lượt tài: 0
Loại file: rar
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)