Tải bản đầy đủ (.pdf) (10 trang)

đề cương ôn kt 1 tiết kì 2 tin 11

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 (577.68 KB, 10 trang )

ÔN TẬP
I/ Lý Thuyết.
1) Khai báo kiểu mảng 1 chiều.
2) Các thao tác làm việc với kiểu dữ liệu tệp.
3) Khái niệm chương trình con? Ý nghĩa của việc sử dụng
chương trình con?
4) Thư viện chương trình con chuẩn là gì ? Cách sử dụng các
chương trình con trong các thư viện chuẩn ??? 

Gợi ý :
1) Để khai báo kiểu mảng 1 chiều ta chọn một trong 2 cách
sau :
 Cách 1 : khai báo trực tiếp
Var <tên biến mảng> : array[kiểu chỉ số] of <kiểu phần
tử>;
 Cách 2: khai báo gián tiếp qua kiểu mảng 1 chiều
Type<tên biến mảng>=array[kiểu chỉ số] of <kiểu phần tử>;
Var <tên biến mảng>:<tên kiểu mảng>;
* Trong đó :
* kiểu chỉ số thường là một đoạn số nguyên liên tục có
dạng n1,n2, với n1,n2 là các hằng hoặc biểu thức
nguyên xác định chỉ số đầu và chỉ số cuối ( n1<= n2).
* Kiểu phần tử là kiểu của các phần tử mảng.
2) Các thao tác làm việc với tệp.
Trước khi làm việc với tệp ta phải khai báo biến tệp theo cú
pháp : var <tên biến tệp >:text;
- Gắn tên tệp : tên tệp là biến xâu hoặc hằng xâu. Dùng thủ
tục sau :
Assign(<biến tệp>,<tên tệp>);
- Mở tệp :
+ để ghi dữ liệu : rewrite(<biến tệp>);


+ để đọc dữ liệu : reset(<biến tệp>);
- Đọc tệp :read(<biến tệp>,<danh sách biến>);
- Ghi tệp :write(<biến tệp>,<danh sách kết quả>);
- Đóng tệp : close(<biến tệp>);
3) Chương trình con là một dãy lệnh mô tả một số thao tác
nhất định và có thể được thực hiện từ nhiều vị trí trong
chương trình.
Ý nghĩa :
o Tránh việc phải viết đi viết lại cùng một dãy lệnh
o Hỗ trợ việc thwucj hiện chương trình lớn
o Phục vụ cho quá trình trừu trượng hóa
o Mở rộng khả năng ngôn ngữ
o Thuận tiện cho việc phát triển, nâng cấp chương trình
Chương trình con gồm có 2 loại là : Hàm ( function ) và thủ
tục (procedure)
II/ Bài Tập.
1) Khai báo tạo ngẫu nhiên một mảng gồm n phần tử nguyên
và tìm phần tử lớn thứ 2 / nhỏ thứ 2 của mảng.

Tìm phần tử lớn nhì trong mảng.
Uses crt;
Var a:array[1 100] of integer;
n,i,max1,max2 :integer;
begin
clrscr;randomize;
write(‘nhap n :’);read(n);
for i:=1 to n do a[i]:=random(201)-random(201);
writeln(‘cac phan tu trong mang :’);
for i:=1 to n do writeln(a[i]:5);
max1:=a[1];

for i:=1 to n do if a[i]>max1 then max1:=a[i];
max2:=-200;
for i:=1 to n do if ((a[i]>max2) and(a[i]<max1)) then
max2:=a[i];
write(‘phan tu lon nhi : ‘,max2);
readln;readln;
end.

** Tìm phần tử bé nhì trong mảng :

Uses crt;
Var a:array[1 100] of integer;
n,i,min1,min2 :integer;
begin
clrscr;randomize;
write(‘nhap n :’);read(n);
for i:=1 to n do a[i]:=random(201)-random(201);
writeln(‘cac phan tu trong mang :’);
for i:=1 to n do writeln(a[i]:5);
min1:=a[1];
for i:=1 to n do if a[i]<min1 then min1:=a[i];
max2:= 200;
for i:=1 to n do if ((a[i]<min2) and(a[i]>min1)) then
min2:=a[i];
write(‘phan tu be nhi : ‘,min2);
readln;readln;
end.
** Cách khác : sắp xếp các phần tử trong mảng theo chiều
tăng dần thì phần tử lớn nhì là phần tử n-1 và phần tử bé
nhì là phần tử thứ 2 .


uses crt;
var a:array[1 100] of integer;
n,i,k,tam,m,q :integer;
begin
clrscr;randomize;
write('nhap n : ');read(n);
for i:=1 to n do a[i]:=random(201)-random(201);
write('cac phan tu trong mang : ');
for i :=1 to n do write(a[i]:5);
k:=n;
while k>1 do
begin
for i:=1 to k-1 do if a[i] > a[i+1] then
begin
tam:=a[i];
a[i]:=a[i+1];
a[i+1]:=tam;
end;
k:=k-1;
end;
m:=a[n-1];
writeln('phan tu lon nhi: ',m);
q:=a[2];
write(‘phan tu be nhi: ‘,q);
readln;readln;
end.

2) Khai báo tạo ngẫu nhiên mảng A gồm n phần tử nguyên và
tạo magnr sums có các phần tử S lần lượt là tổng các phần

tử thứ nhất đến thứ i của a.
3) Viết thủ tục kiểm tra tính nguyên tố của một số nguyên (
nếu số đó âm thì lấy trị tuyệt đối của số đó ).
Uses crt;
Var n,i:integer;
Procedure NT(i:integer);
Var kt:boolean;
Begin
If n<0 then n:=abs(n);
Writeln(n);
Kt:=true;
For i:=2 to n-1 do if (n mod i =0) then kt:=false;
If kt=true then write (‘day la so NT ‘) else write (day k phai
so NT’);
End;
Begin
Clrscr;
Write(‘nhap n : ‘);read(n);
NT(i);
Readln;readln;
End.
** Mở rộng bài toán : Giả sử bài toán không yêu cầu viết thủ
tục mà là viết hàm để kiểm tra tính nguyên tố của n thì ta làm
như sau :
Function kt(n:integer):boolean;
var i: integer;
begin
kt:=true;
for i:=2 to n-1 do if (n mod i) = 0 then kt:=false;
end;

4) Viết hàm để xuất ra 1 dãy string là dãy đảo ngược của một
dãy cho trước.
Uses crt;
Var a:string;
Function DN(a:string): string;
Var I,k :integer;
Begin
K:=length(a);
For i:=k downto 1 do write(a[i]);
DN:=a[i];
End;
Begin
Clrscr;
Write(‘nhap xau : ’);read(a);
Write(‘ xau dao nguoc : ‘, DN(a));
Readln;readln;
End.
** Cách khác : mượn xâu rỗng.
Uses crt;
Var a:string;
Function DN(a:string): string;
Var I,k :integer;
S:string;
Begin
K:=length(a);
S:=’’;
For i:=k downto 1 do s:=s+a[i];
DN:=s;
End;
Begin

Clrscr;
Write(‘nhap xau : ’);read(a);
Write(‘ xau dao nguoc : ‘, DN(a));
Readln;readln;
End.

5) Viết chương trình con giải và biện luận phương trình bậc 2.
Uses crt;
Var a,b,c,d,x1,x2,x :real;
Procedure GPT1(b,c : real);
Var x :real;
Begin
If b<>0 then write(‘PT co nghiem x= ‘, (-c/b):6:1)
else
Begin
If c=0 then write(‘PT co VSN ‘);
If c<>0 then write(‘PT vo nghiem’);
End;
End;
Procedure GPT2(a,b,c:real);
Var d,x1,x2,x:real;
If a=0 then GPT1(b,c) else
Begin
D:=b*b-4*a*c;
If d<0 then write(‘PT vo nghiem’);
If d=0 then write(‘PT co nghiem x= ‘, (-b/(2*a)):6:2);
If d>0 then write(‘PT co 2 nghiem x1= ‘, (-
b+sqrt(d))/(2*a)):6:2, ‘x2= ‘, (-b-sqrt(d))/(2*a):6:2);
End;
End;

Begin
Clrscr;
Write(‘nhap a,b,c : ‘);read(a,b,c);
GPT2(a,b,c);
Readln;readln;
End.
6) Viết hàm tính n!! theo công thức
(2n)!! = 2n(2n-2)(2n-4) 2
(2n-1)!!=(2n-1)(2n-3) 3.1







TRÀ MAI THẢO

×