Các ngôn ngữ lập trình đều có các quy tắc viết và sử dụng chương trình con, trong Bài 18: Ví dụ về cách viết và sử dụng chương trình con ta xét cách viết và sử dụng chương trình con trong Pascal. Mời các em cùng theo dõi nội dung chi tiết của bài học dưới đây.
Procedure [ < danh sách tham số > ];
[ < phần khai báo > ]
Begin
[ < dãy các lệnh > ]
End;
Trong đó:
Một số lưu ý:
Khi cần thực hiện, ta phải viết lệnh gọi thủ tục tương tự như các thủ tục chuẩn.
Ví dụ 1: Lập chương trình cho phép vẽ nhiều hình chữ nhật với kích thước khác nhau.
Gợi ý làm bài:
Chương trình mẫu:
Program VD_hcn;
Uses crt;
Var a,b,i:integer; {bien toan cuc}
Procedure Ve_Hcn(chdai,chrong:integer); {Bat dau CTC}
Var i, j: integer; {bien cuc bo}
Begin
{ve canh tren hinh chu nhat}
For i:=1 to chdai do write(‘*’);
Writeln;
For j:=1 to chrong -2 do {ve 2 canh ben}
Begin
Write(‘*’);
For i:=1 to chdai – 2 do write(‘ ’);{ve khoang trang}
Writeln(‘*’);
End;
{ve canh duoi}
For i:=1 to chdai do write(‘*’);
Writeln;
End; {Ket thuc CTC}
Begin
Clrscr;
Ve_Hcn(25,10); {ve hinh chu nhat 25x10}
Writeln; {cach 1 dong}
Ve_Hcn(5,10); {ve hinh chu nhat 5x10}
Readln;
Clrscr;
{ve 4 hinh chu nhat hinh dau tien 4x2. Moi hinh sau co kich thuoc gap doi hinh truoc}
a:=4; b:=2;
for i:=1 to 4 do
begin
Ve_Hcn(a,b);
readln;
a:=a*2; b:=b*2;
end;
End.
Function < tên hàm > [ < danh sách tham số > ) ] : < kiểu dữ liệu > ;
[ < phần khai báo > ]
Begin
[ < dãy các lệnh > ]
< tên hàm > := < biểu thức >
End;
Trong đó:
Ví dụ 2: Xét chương trình rút gọn một phân số, trong đó sử dụng hàm tính ước chung lớn nhất (ƯCLN) của hai số nguyên.
Chương trình mẫu:
Program Rutgon_Phanso;
Uses crt;
Var Tuso, Mauso, a: Integer; {Bien toan cuc}
Function UCLN(x, y: Integer): Integer; {Bat dau ham UCLN}
Var sodu: Integer; {Bien cuc bo}
Begin
while y <> 0 do
begin
sodu:= x mod y;
x:= y;
y:= sodu;
end;
UCLN:= x; {Gan gia tri cho ten ham}
End; {Ket thuc ham}
Begin
Clrscr;
write('Nhap vao Tu So va Mau So: '); readln(Tuso,Mauso);
a:= UCLN(Tuso,Mauso);
If a > 1 then
begin
Tuso:= Tuso div a;
Mauso:= Mauso div a;
end;
writeln(Tuso,'/', Mauso);
End.
Một số lưu ý:
Viết chương trình con để tính n! = 1.2...n.
Gợi ý giải:
Vì bài toán này trả về 1 giá trị duy nhất nên ta dùng hàm.
Function GiaiThua(n:Integer) : Integer;
Var P, i: Integer;
Begin
P:=1;
For i:=1 To n Do
P:=P*i;
GiaiThua:=P;
End;
Viết chương trình con để tìm điểm đối xứng của điểm (x,y) qua gốc tọa độ.
Gợi ý giải:
Vì bài toán này trả về tọa độ điểm đối xứng (xx,yy) gồm 2 giá trị nên ta dùng thủ tục.
Procedure DoiXung(x,y:Integer; Var xx,yy:Integer);
Begin
xx:=-x;
yy:=-y;
End;
Nhận xét 2 ví dụ trên:
Sau khi học xong Bài 18: Ví dụ về cách viết và sử dụng chương trình con, các em cần nắm vững nội dung trọng tâm:
Các em có thể hệ thống lại nội dung kiến thức đã học được thông qua bài kiểm tra Trắc nghiệm Tin học 11 Bài 18 cực hay có đáp án và lời giải chi tiết.
Nói về cấu trúc của một chương trình con, khẳng định nào sau đây là không đúng?
Sự khác biệt cơ bản giữa hàm và thủ tục:
Giả sử ta có phần đầu thủ tục:
Procedure VD (var N, M: integer; E: real);
Thì nhận định nào sau đây là đúng:
Câu 4-10: Mời các em đăng nhập xem tiếp nội dung và thi thử Online để củng cố kiến thức về bài học này nhé!
Trong quá trình học tập nếu có thắc mắc hay cần trợ giúp gì thì các em hãy comment ở mục Hỏi đáp, Cộng đồng Tin học DapAnHay sẽ hỗ trợ cho các em một cách nhanh chóng!
Chúc các em học tập tốt và luôn đạt thành tích cao trong học tập!
-- Mod Tin Học 11 DapAnHay
Nói về cấu trúc của một chương trình con, khẳng định nào sau đây là không đúng?
Sự khác biệt cơ bản giữa hàm và thủ tục:
Giả sử ta có phần đầu thủ tục:
Procedure VD (var N, M: integer; E: real);
Thì nhận định nào sau đây là đúng:
Với x, y là 2 số nguyên, để tính tổng của chúng ta chọn hàm kiểu tham trị. Vậy phần tựa đề nào được xây dựng sau là đúng?
Với a, b là 2 số thực, để tính tích của chúng ta chọn thủ tục kiểu tham trị. Vậy phần tựa đề nào được xây dựng sau là đúng?
Muốn khai báo x là tham số giá trị và y, z là tham số biến (x, y, z thuộc kiểu Byte) trong thủ tục sau thì khai báo nào sau đây là sai?
Biến cục bộ là các biến được khai báo trong?
Biến toàn cục là các biến được khai báo trong?
Cho chương trình sau:
Program Chuong_Trinh;
Var a, b, S : byte;
Procedure TD(Var x : byte ; y : byte);
Var i : byte;
Begin
i := 5;
writeln(x,‘ ’, y);
x := x + i ;
y := y + i ;
S := x + y ;
Writeln(x,‘ ’, y);
End;
Begin
Write(‘nhập a và b : ’);
Readln(a, b);
TD(a,b);
Writeln(a,‘ ’, b, ‘ ’, S);
Readln;
End.
Trong chương trình trên có các tham số thực sự là:
Cho chương trình sau:
Program Chuong_Trinh;
Var a, b, S : byte;
Procedure TD(Var x : byte ; y : byte);
Var i : byte;
Begin
i := 5;
writeln(x,‘ ’, y);
x := x + i ;
y := y + i ;
S := x + y ;
Writeln(x,‘ ’, y);
End;
Begin
Write(‘nhập a và b : ’);
Readln(a, b);
TD(a,b);
Writeln(a,‘ ’, b, ‘ ’, S);
Readln;
End.
Trong chương trình trên có các tham số hình thức là:
Họ và tên
Tiêu đề câu hỏi
Nội dung câu hỏi
Cho chương trình sau:
Program Chuong_Trinh;
Var a, b, S : byte;
Procedure TD(Var x : byte ; y : byte);
Var i : byte;
Begin
i := 5;
writeln(x,‘ ’, y);
x := x + i ;
y := y + i ;
S := x + y ;
Writeln(x,‘ ’, y);
End;
Begin
Write(‘nhập a và b : ’);
Readln(a, b);
TD(a,b);
Writeln(a,‘ ’, b, ‘ ’, S);
Readln;
End.
Trong chương trình trên có các biến toàn cục là:
A, x và y.
B. i
C, a và b.
D, a, b, S.
Câu trả lời của bạn
Biến toàn cục là biến được khai báo trong chương chính. Nó được sử dụng cho chương trình chính và các chương trình khác nữa. Vậy trong chương trình trên có các biến toàn cục là a, b, S.
Đáp án: D
Câu trả lời của bạn
- Để vẽ được hình chữ nhật với kích thước khác nhau, cần có hai tham số cho dữ liệu vào là chiều dài và chiều rộng.
- Phần đầu thủ tục được viết như sau: Procedure Ve_Hcn (chdai, chrong: integer);
- Thủ tục Ve_Hcn vẽ hình chữ nhật với kích thước tùy ý theo giá trị của tham số chdai và chrong. Với chdai và chrong là nguyên dương.
Chương trình mẫu:
Program VD_hcn;
Uses crt;
Var a,b,i:integer; {bien toan cuc}
Procedure Ve_Hcn(chdai,chrong:integer); {Bat dau CTC}
Var i, j: integer; {bien cuc bo}
Begin
{ve canh tren hinh chu nhat}
For i:=1 to chdai do write(‘*’);
Writeln;
For j:=1 to chrong -2 do {ve 2 canh ben}
Begin
Write(‘*’);
For i:=1 to chdai – 2 do write(‘ ’);{ve khoang trang}
Writeln(‘*’);
End;
{ve canh duoi}
For i:=1 to chdai do write(‘*’);
Writeln;
End; {Ket thuc CTC}
Begin
Clrscr;
Ve_Hcn(25,10); {ve hinh chu nhat 25x10}
Writeln; {cach 1 dong}
Ve_Hcn(5,10); {ve hinh chu nhat 5x10}
Readln;
Clrscr;
{ve 4 hinh chu nhat hinh dau tien 4x2. Moi hinh sau co kich thuoc gap doi hinh truoc}
a:=4; b:=2;
for i:=1 to 4 do
begin
Ve_Hcn(a,b);
readln;
a:=a*2; b:=b*2;
end;
End.
Câu trả lời của bạn
- Sau tên dành riêng End kết thúc chương trình chính là dấu chấm (.) còn sau End kết thúc thủ tục là dấu chấm phẩy (;).
- Các thủ tục, nếu có, phải được khai báo và mô tả trong phần khai báo của chương trình chính, ngay sau phần khai báo biến.
- Khi cần thực hiện, ta phải viết lệnh gọi thủ tục tương tự như các thủ tục chuẩn.
Câu trả lời của bạn
Tham số biến (tham biến): tham số hình thức được thay bằng tham số thực sự tương ứng là tên các biến và được khai báo sau từ khóa var.
+ Trong lời gọi thủ tục Ve_Hcn(a,b), tham số chdai được thay bởi giá trị hiện thời của biến a, tham số chrong được thay bởi giá trị hiện thời của biến b.
Câu trả lời của bạn
Để phân biệt tham biến và tham trị Pascal sử dụng từ khóa Var để khai báo những tham số biến.
Câu trả lời của bạn
Tham số giá trị (tham trị): tham số hình thức được thay bằng tham số thực sự tương ứng là các giá trị cụ thể và không được khai báo sau từ khóa var.
Câu trả lời của bạn
Program Rutgon_Phanso;
Uses crt;
Var Tuso, Mauso, a: Integer; {Bien toan cuc}
Function UCLN(x, y: Integer): Integer; {Bat dau ham UCLN}
Var sodu: Integer; {Bien cuc bo}
Begin
while y <> 0 do
begin
sodu:= x mod y;
x:= y;
y:= sodu;
end;
UCLN:= x; {Gan gia tri cho ten ham}
End; {Ket thuc ham}
Begin
Clrscr;
write('Nhap vao Tu So va Mau So: '); readln(Tuso,Mauso);
a:= UCLN(Tuso,Mauso);
If a > 1 then
begin
Tuso:= Tuso div a;
Mauso:= Mauso div a;
end;
writeln(Tuso,'/', Mauso);
End.
Câu trả lời của bạn
Function < tên hàm > [ < danh sách tham số > ) ] : < kiểu dữ liệu > ;
[ < phần khai báo > ]
Begin
[ < dãy các lệnh > ]
< tên hàm > := < biểu thức >
End;
Trong đó:
- Kiểu dữ liệu chỉ có thể là kiểu dữ liệu chuẩn: integer, real, char, boolean, string.
- Khác với thủ tục, trong thân hàm cần có lệnh gán giá trị cho tên hàm: < tên hàm >:= < biểu thức >;
Câu trả lời của bạn
Vì bài toán này trả về tọa độ điểm đối xứng (xx,yy) gồm 2 giá trị nên ta dùng thủ tục.
Procedure DoiXung(x,y:Integer; Var xx,yy:Integer);
Begin
xx:=-x;
yy:=-y;
End;
Câu trả lời của bạn
Vì bài toán này trả về 1 giá trị duy nhất nên ta dùng hàm.
Function GiaiThua(n:Integer) : Integer;
Var P, i: Integer;
Begin
P:=1;
For i:=1 To n Do
P:=P*i;
GiaiThua:=P;
End;
Cho mảng một chiều A gồm N phần tử nguyên bất kì (N<=10).viết chương trình nhập mảng A từ bàn phím và ghi các phần tử của mảng A có giá trị nhỏ hơn 5 theo thứ tự ngược lại vào tệp DLRa.txt theo đường dẫn D:\11A5
Câu trả lời của bạn
lập trình viết chuong trình đọc xâu st từ tệp input.txt, sau đó ghi xâu vừa đọc vào dòng đầu tiên của tệp output.txt 1).loại bỏ các dấu cách không cần thiết trong xâu 2).in hoa tất cả các kí tự trong xâu 3).ghi xâu mới vào dòng thứ 2 của tệp output.txt 4).đếm số từ trong xâu st sau đó ghi kết quả vào dòng thứ 3 của tệp output.txtt
Câu trả lời của bạn
Câu trả lời của bạn
Viết chương trình nhập vào xâu S rr in ra màn hình xâu đó sau khi xóa kí tự đầu và cuối
Câu trả lời của bạn
Do bạn không nói ngôn ngữ nào nên mình mặc định là C++:
#include <bits/stdc++.h>
using namespace std;
int main()
{
string a;
cout << "Nhap mot xau ki tu: ";
cin >> a;
cout << "Xau sau khi xoa ki tu dau va cuoi: ";
for(int i = 1; i < a.length() - 1; i++)
{
cout << a[i];
}
return 0;
}
Lập trình tính chu vi và diện tích của hình chữ nhật ABCD , biết các cạnh song song với trục Ox và Oy . Đỉnh A có toạ độ (xA,xB) , C có toạ độ (xC,yC) được lưu trong tệp HCN.inp . kết quả lưu vào tệp HCN.out . trong chương trình có sử dụng chương trình con để tính
Câu trả lời của bạn
Cho tệp KIEMTRA. TXT chứa các cặp cạnh a, b của hình chữ nhật. Viết chưong trình đọc các cặp cạnh a,b, tính và đưa ra màn hình của chu vi hình chữ Nhật
Câu trả lời của bạn
Đây là code C++ của mình:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a, b;
cout << "Nhap chieu dai, chieu rong hinh chu nhat: ";
cin >> a >> b;
cout << "Chu vi hinh chu nhat la: " << (a + b) * 2;
return 0;
}
viết chương trình con kiểm tra 1 số nguyên là số âm hay số dương
Câu trả lời của bạn
Do bạn không nói ngôn ngữ nào nên mình mặc định là C++:
#include <bits/stdc++.h>
using namespace std;
int main()
{
string a;
cout << "Nhap mot so nguyen: ";
cin >> a;
if(a[0] == '-')
{
cout << a << " la so am!";
} else
{
cout << a << " la so duong!";
}
return 0;
}
Bài này áp dụng cho số lớn bao nhiêu cũng được.
Câu trả lời của bạn
Do bạn không nói chương trình thuộc ngôn ngữ nào, nên mình sẽ làm bằng C++:
#include <bits/stdc++.h>
using namespace std;
bool check(int a)
{
if(a < 2)
{
return false;
}
for(int i = 2; i <= sqrt(a); i++)
{
if(a % i == 0)
{
return false;
}
}
return true;
}
int main()
{
int n;
cout << "Nhap so n: ";
cin >> n;
cout << "Cac so nguyen to tu 1 den " << n << ": ";
for(int i = 2; i <= n; i++)
{
if(check(i))
{
cout << i << ' ';
}
}
return 0;
}
viết 1 chương trình sủ dụng thủ tục tính trung bình cọng của 3 số được nhập từ bàn phím. Kết quả ra được hiển thị ra màn hình
Câu trả lời của bạn
Câu trả lời của bạn
0 Bình luận
Để lại bình luận
Địa chỉ email của hạn sẽ không được công bố. Các trường bắt buộc được đánh dấu *