Nội dung của Bài 17: Chương trình con và phân loại dưới đây, các em sẽ được tìm hiểu về khái niệm chương trình con, ý nghĩa của chương trình con; cấu trúc của chương trình con và cách phân biệt hai loại chương trình con là hàm và thủ tục. Mời các em cùng theo dõi nội dung chi tiết của bài học.
Để viết chương trình giải các bài toán lớn, phức tạp người lập trình có thể chia thành nhiều bài toán nhỏ, mỗi bài toán là một dãy lệnh mô tả một số thao tác nhất định (gọi là chương trình con). Sau đó ghép nối các chương trình con thành chương trình chính.
Chương trình con là dãy các 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.
Trong nhiều ngôn ngữ lập trình, chương trình con thường gồm hai loại:
sin(x) nhận vào giá trị thực x và trả về giá trị sinx,
sqrt(x) nhận vào giá trị x trả về giá trị căn bậc hai của x,
length(x) nhận vào xâu x và trả về độ dài của xâu x,...
< phần đầu >
[< phần khai báo >]
< phần thân >
Một số lưu ý:
Sự giống nhau và khác nhau giữa hàm và thủ tục
Gợi ý trả lời:
Hàm | Thủ tục |
Đầu hàm bắt đầu bằng từ khóa Function | Đầu thủ tục bắt đầu bằng từ khóa Procedure |
Luôn trả về một giá trị thuộc kiểu xác định thông qua tên hàm (các kiểu dữ liệu đơn giản: integer, real, boolean, char, string). | |
Phải chỉ ra kết quả của hàm thuộc kiểu dữ liệu nào. | |
Trong thân hàm thường có câu lệnh gán giá trị cho tên hàm. |
Chương trình tính tích của hai số nguyên a và b
Function Tich(a, b: integer): integer;
Var Kq: Integer;
Begin
Kq := a*b;
Tich := Kq;
End;
Procedure tt_Tich(a, b: integer);
Var Kq: Integer;
Begin
Kq := a*b;
Write('Tích của' , a, 'và', b, 'là', Kq);
End;
Hãy nhận xét cấu trúc hàm và thủ tục của chương trình tính tích ở trên.
Gợi ý trả lời:
Sau khi học xong Bài 17: Chương trình con và phân loại, các em cần nắm vững nhữ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 17 cực hay có đáp án và lời giải chi tiết.
Để khai báo hàm trong Pascal bắt đầu bằng từ khóa
Để khai báo thủ tục trong Pascal bắt đầu bằng từ khóa
Kiểu dữ liệu của hàm
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
Để khai báo hàm trong Pascal bắt đầu bằng từ khóa
Để khai báo thủ tục trong Pascal bắt đầu bằng từ khóa
Kiểu dữ liệu của hàm
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?
Khẳng định nào sau đây là đúng?
Khẳng định nào sau đây là đúng?
Mô tả nào dưới đây về hàm là sai?
Trong các cách sử dụng thủ tục sau, cách nào là phù hợp nhất ?
Hãy chọn phương án ghép đúng. Cho thủ tục sau:
Procedure p ;
Var n : integer ;
Begin
…………
End ;
Phạm vi của biến n là :
Trong các chương trình chuẩn sau đây, chương trình chuẩn nào là thủ tục chuẩn?
Họ và tên
Tiêu đề câu hỏi
Nội dung câu hỏi
Câu trả lời của bạn
uses crt;
var a:array[1..100]of integer;
i,n,t:integer;
begin
clrscr;
write('Nhap n='); readln(n);
for i:=1 to n do
begin
write('A[',i,']='); readln(a[i]);
end;
t:=0;
for i:=1 to n do
if a[i] mod 2<>0 then t:=t+a[i];
writeln(t);
readln;
end.
Câu trả lời của bạn
function ktra(n:integer):boolean;
var kt:boolean;
begin
if trunc(sqrt(n))=sqrt(n) then kt:=true
else kt:=false;
if kt=true then ktra:=true
else ktra:=false;
end;
Câu trả lời của bạn
function ktra(a,b,c:integer):boolean;
var kt:boolean;
begin
if (a>0) and (b>0) and (c>0) and (a+b>c) and (a+c>b) and (b+c>a) then kt:=true
else kt:=false;
if kt=true then ktra:=true
else ktra:=false;
end;
Câu trả lời của bạn
function max(a,b:integer):integer;
begin
max:=a;
if max<b then max:=b;
end;
Câu trả lời của bạn
function demsolan(s1,s2:string):integer;
var dem,vt,d2:integer;
begin
dem:=0;
d2:=length(s2);
vt:=pos(s1,s2);
while vt>0 do
begin
inc(dem);
delete(s2,vt,d2);
end;
demsolan:=dem;
end;
Câu trả lời của bạn
function tong(n:integer):integer;
var t,i:integer;
begin
t:=0;
for i:=1 to n do
if i mod 2=0 then t:=t+i;
tong:=t;
end;
Câu trả lời của bạn
function s1(s:string):string;
var d,i:integer;
s2:string;
begin
d:=length(s);
s2:=#32;
for i:=d downto 1 do
s2:=s2+s[i];
s1:=s2;
end;
Câu trả lời của bạn
const fi='data.inp';
fo='kq.out';
var f1,f2:text;
a:array[1..100]of integer;
i,n,t:integer;
begin
assign(f1,fi); reset(f1);
assign(f2,fo); rewrite(f2);
n:=0;
while not eoln(f1) do
begin
inc(n);
read(f1,a[n]);
end;
t:=0;
for i:=1 to n do
t:=t+a[i];
writeln(f2,t/n:4:2);
close(f1);
close(f2);
end.
Câu trả lời của bạn
function dt(a,b,c:real):real;
var p,s:real;
begin
p:=(a+b+c)/2;
s:=sqrt(p*(p-a)*(p-b)*(p-c));
dt:=s;
end;
Câu trả lời của bạn
function dt(a,b:real):real;
begin
dt:=1/2*a*b;
end;
Câu trả lời của bạn
function dt(r:real):real;
begin
dt:=sqr(r)*pi;
end;
a. kiểm tra xem 3 số trên có lập thành 3 cạnh của tam giác hay không ?
b. tính diện tích tam giác
c. tính các trung tuyến của tam giác
d. viết hoàn thiện chương trình chính
Câu trả lời của bạn
uses crt;
var a,b,c,p,s,am,bn,cp:real;
begin
clrscr;
write('Nhap a='); readln(a);
write('Nhap b='); readln(b);
write('Nhap c='); readln(c);
if (a>0) and (b>0) and (c>0) and (a+b>c) and (a+c>b) and (b+c>a) then
begin
writeln('Day la ba canh trong mot tam giac vuong');
p:=(a+b+c)/2;
s:=sqrt(p*(p-a)*(p-b)*(p-c));
writeln('Dien tich tam giac la: ',s:4:2);
am:=sqrt(2*(sqr(b)+sqr(c))-sqr(a))/4;
bn:=sqrt(2*(sqr(a)+sqr(c))-sqr(b))/4;
cp:=sqrt(2*(sqr(a)+sqr(b))-sqr(c))/4;
writeln('Do dai duong trung tuyen ung voi canh a la: ',am:4:2);
writeln('Do dai duong trung tuyen ung voi canh b la: ',bn:4:2);
writeln('Do dai duong trung tuyen ung voi canh c la: ',cp:4:2);
end
else writeln('Day khong la ba canh trong mot tam giac');
readln;
end.
Câu trả lời của bạn
uses crt;
var a:array[1..100]of integer;
i,n,t:integer;
begin
clrscr;
write('Nhap n='); readln(n);
for i:=1 to n do
begin
write('A[',i,']='); readln(a[i]);
end;
for i:=1 to n do
write(a[i]:4);
writeln;
t:=0;
for i:=1 to n do
if a[i] mod 7=0 then t:=t+a[i];
writeln('Tong cac so chia het cho 7 la: ',t);
readln;
end.
Câu trả lời của bạn
Program DapAnHay;
var i,t,d: byte;
code: integer;
s: string;
begin
write('Nhap xau: '); readln(s);
write('Xau so: ');
t:=0;
for i:=1 to length(s) do
if s[i] in ['0'..'9'] then
begin
write(s[i]);
val(s[i],d,code);
t:=t+d;
end;
writeln;
write('Xau chu: ');
for i:=1 to length(s) do if s[i] in ['A'..'z'] then write(s[i]);
writeln;
write('Tong cac con so cua xau so: ',t);
readln
end.
Câu trả lời của bạn
<bits/stdc++.h>
using namespace std;
int DTT(int a, int b, int c)
int m = sqrt(2*b*b+2*c*c-a*a)/2;
return m;
int main()
int a, b, c, m;
cout << "Nhap ba canh tam giac" << endl;
cin >> a >> b >> c;
m = DTT(a,b,c);
cout << m;
return 0;
end.
Câu trả lời của bạn
program hotrotinhoc;
var vt,i,n,min: integer;
a: array[1..32000] of integer;
begin
write('n='); readln(n);
for i:=1 to n do
begin
write('a[',i,']='); readln(a[i]);
end;
min:=32000;
for i:=1 to n do
if a[i] < min then
begin
min:=a[i];
vt:=i;
end;
writeln('Phan tu nho nhat :',min);
write('Vi tri : ',vt);
readln
end.
Câu trả lời của bạn
program hotrotinhoc;
var n,i: integer;
function sohoanhao(x: integer): boolean;
var tam,j: integer;
begin
sohoanhao:=false;
for j:=1 to x div 2 do
if x mod j=0 then tam:=tam+j;
if tam=x then sohoanhao:=true;
end;
begin
write('n='); readln(n);
for i:=1 to n do
if sohoanhao(i) then write(i,' ');
readln
end.
Câu trả lời của bạn
program hotrotinhoc;
var a: array[1..32000] of integer;
d,i,n: integer;
s: longint;
t: real;
begin
write('n='); readln(n);
for i:=1 to n do
begin
write('a[',i,']='); readln(a[i]);
end;
d:=0; s:=0;
for i:=1 to n do
if a[i] mod 2=1 then
begin
s:=s+a[i];
inc(d);
end;
t:=s/d;
write(t:1:2);
readln
end.
Câu trả lời của bạn
program hotrotinhoc;
var i,n,t: integer;
a: array[1..32000] of integer;
begin
write('n='); readln(n);
for i:=1 to n do
begin
write('a[',i,']='); readln(a[i]);
end;
t:=0;
for i:=1 to n do
if (a[i] mod 2=0) and (a[i] mod 5=0) then t:=t+a[i];
write(t);
readln
end.
Câu trả lời của bạn
const fi='data.inp';
fo='result.txt';
var f1,f2:text;
a:array[0..100]of integer;
dem,i,t:integer;
tbc:real;
begin
assign(f1,fi); reset(f1);
assign(f2,fo); rewrite(f2);
dem:=0;
while not eoln(f1) do
begin
inc(dem);
readln(f1,a[dem]);
end;
{---------------------------------xu-ly--------------------------------}
t:=0;
for i:=1 to dem do
t:=t+a[i];
tbc:=t/dem;
writeln(f2,tbc:4:2);
close(f1);
close(f2);
end.
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 *