Nội dung bài học Bài 9: Cấu trúc rẽ nhánh dưới đây sẽ trình bày về cấu trúc rẽ nhánh trong môt tả thuật toán của một số bài toán đơn giản; hướng dẫn các em viết câu lệnh rẽ nhánh dạng đủ, dạng thiếu thông qua một số bài toán vận dụng cụ thể;... Mời các em cùng theo dõi nội dung chi tiết của bài học.
Ví dụ 1: Để giải phương trình bậc hai: ax2 +bx +c = 0 (a \(\neq\) 0 ) ta phải: Tính Delta = b*b - 4*a*c
Hoặc có thể nói: Nếu Delta < 0 thì phương trình vô nghiệm, ngược lại phương trình có nghiệm.
Ta có mệnh đề sau:
Cấu trúc này được gọi là cấu trúc rẽ nhánh thiếu và đủ.
Để mô tả cấu trúc rẽ nhánh, Pascal dùng câu lệnh if-then. Tương ứng với hai dạng mệnh đề thiếu và đủ nói ở trên, Pascal có hai dạng câu lệnh if-then:
Cú pháp: If < Điều kiện > then < Câu lệnh >;
Trong đó:
Sơ đồ:
Hình 1. Sơ đồ cấu trúc rẽ nhánh dạng thiếu
Ý nghĩa: Điều kiện sẽ được tính và kiểm tra. Nếu điều kiện đúng thì câu lệnh được thực hiện, nếu điều kiện sai thì câu lệnh sẽ bị bỏ qua.
Ví dụ 2:
if Delta < 0 then writeln('Phuong trinh vo nghiem.');
Cú pháp:
If < Điều kiện > then < Câu lệnh 1 >
else < Câu lệnh 2 >;
Trong đó:
Sơ đồ:
Hình 2. Sơ đồ cấu trúc rẽ nhánh dạng đủ
Ý nghĩa: Điều kiện sẽ được tính và kiểm tra. Nếu điều kiện đúng thì thực hiện câu lệnh 1, ngược lại thì thực hiện câu lệnh 2.
Chú ý 1: Trước từ khóa Else không có dấu chấm phẩy (;).
Ví dụ 3:
if a mod 3 = 0 then write('a chia het cho 3')
else write('a khong chia het cho 3');
Trong Pascal câu lệnh ghép có dạng:
Begin
< Các câu lệnh >;
End;
Chú ý 2: Sau END phải có dấu chấm phẩy (;)
Ví dụ 4:
if D < 0 then writeln('Phuong trinh vo nghiem.')
else
begin
x1:= (-b – sqrt(b*b – 4*a*c))/(2*a);
x2:= -b/a-x1
end;
Ví dụ 5. Tìm nghiệm thực của phương trình bậc hai:
ax2 + bx + c = 0 , với a \(\neq\) 0.
Xây dựng ý tưởng:
Dùng câu lệnh if-then dạng đủ.
Xác định bài toán:
program Giai_PTB2;
uses crt;
var a,b,c: real;
D, x1, x2: real;
begin
clrscr;
write(' a, b, c: ');
readln(a, b, c);
D:= b*b – 4*a*c;
if D < 0 then writeln('Phuong trinh vo nghiem.')
else
begin
x1:= (-b – sqrt(D))/(2*a);
x2:= -b/a – x1;
writeln(' x1 = ', x1: 8:3,' x2 = ', x2:8:3);
end;
readln
end.
Ví dụ 5:
Tìm số ngày của năm N, biết rằng năm nhuận là năm chia hết cho 400 hoặc chia hết cho 4 nhưng không chia hết cho 100. Ví dụ, các năm 2000, 2004 là năm nhuận và có số ngày là 366, các năm 1900, 1945 không phải là năm nhuận và có số ngày là 365.
Hướng dẫn:
Biểu thức điều kiện: ((N mod 400 = 0) or (N mod 4 = 0) and (N mod 100<>0))
Xác định bài toán:
program Nam_nhuan;
uses crt;
var N, SN: integer;
begin
clrscr;
write('Nam: '); readln(N);
if (N mod 400 = 0)or((N mod 4 = 0)and( N mod 100 <> 0))
then SN:= 366 else SN:= 365;
writeln(' So ngay cua nam ', N,' la ', SN);
readln
end.
Sau khi học xong Bài 9: Cấu trúc rẽ nhánh, các em cần nắm vững các nội dung trọng tâm:
If < Điều kiện > then < Câu lệnh 1 >
else < Câu lệnh 2 >;
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 9 cực hay có đáp án và lời giải chi tiết.
Để mô tả cấu trúc rẽ nhánh trong thuật toán, nhiều ngôn ngữ lập trình bậc cao dùng câu lệnh IF – THEN, sau IF là < điều kiện > . Điều kiện là
Với cấu trúc rẽ nhánh IF < điều kiện > THEN < câu lệnh >, câu lệnh đứng sau THEN được thực hiện khi
Câu 3-5: 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
Để mô tả cấu trúc rẽ nhánh trong thuật toán, nhiều ngôn ngữ lập trình bậc cao dùng câu lệnh IF – THEN, sau IF là < điều kiện > . Điều kiện là
Với cấu trúc rẽ nhánh IF < điều kiện > THEN < câu lệnh >, câu lệnh đứng sau THEN được thực hiện khi
Với cấu trúc rẽ nhánh IF < điều kiện > THEN < câu lệnh 1 > ELSE < câu lệnh 2 >, câu lệnh 2 được thực hiện khi
Muốn dùng biến X lưu giá trị nhỏ nhất trong các giá trị của hai biến A, B có thể dùng cấu trúc rẽ nhánh như sau:
Phát biểu nào sau đây có thể lấy làm biểu thức điều kiện trong cấu trúc rẽ nhánh?
Họ và tên
Tiêu đề câu hỏi
Nội dung câu hỏi
Phần tử yên ngựa là phần tử vừa nhỏ nhất trong hàng vừa là phần tử lớn nhất trong cột chứa nó. Hãy tìm phần tử yên ngựa trong ma trận cho trước.
File input (hàng đầu tin chứa n hàng, m cột)
3 3
15 23 63
13 29 59
19 27 55
Out.INP (vị trí phần tử Yên ngựa)
(3,1)
Câu trả lời của bạn
uses crt;
var a:array[1..100,1..100]of integer;
i,j,n,m,snn,sln,vtc,vth,x,z,kt,k:integer;
begin
clrscr;
{----------nhap----------}
write('nhap n: ');readln(n);
write('nhap m='); readln(m);
for i:=1 to n do
for j:=1 to m do
begin
write('a[',i,',',j,']='); readln(a[i,j]);
end;
{----------nho nhat hang----------}
for i:=1 to n do
begin
snn:=a[i,1];
for j:=1 to m do
if snn>=a[i,j] then
begin
snn:=a[i,j];
vth:=i;
vtc:=j;
end;
kt:=0;
sln:=a[vth,vtc];
for k:=1 to n do
if sln<a[k,vtc] then kt:=1;
if kt=0 then writeln(k,',',vtc);
end;
readln;
end.
Ví dụ: Số ghế là M = 29 thì số cuối cùng được tạo ra là 2 (29=2+9 -> 11; 11=1+1 = 2).
Yêu cầu: Gọi K là số may mắn hãy tìm số may mắn đó? (nếu có nhiều số lượng số cuối cùng bằng nhau thì chọn số cuối cùng mà khách tìm được có giá trị nhỏ nhất.
Dữ liệu vào: File văn bản LUCKY.INP
Dòng thứ nhất là số N (1 ≤N≤105);
N dòng tiếp theo là tương ứng với số ghế M của khách mời (0 ≤ M ≤ 109).
Dữ liệu ra: File văn bản LUCKY.OUT
- Gồm một số K cần tìm.
Câu trả lời của bạn
program hotrotinhoc;
const fi='LUCKY.INP';
fo='LUCKY.OUT';
var n,k,a,i,max,d: byte;
dem,m,m1: array[0..105] of integer;
f: text;
function tong(x: byte): integer;
var t,t1: integer;
begin
t:=0; t1:=0;
while x<>0 do
begin
t:=t+(x mod 10);
x:=x div 10;
end;
while t<>0 do
begin
t1:=t1+(t mod 10);
t:=t div 10;
end;
tong:=t1;
end;
procedure ip;
begin
assign(f,fi);
reset(f);
readln(f,n);
for i:=1 to n do
read(f,m[i]);
close(f);
end;
procedure out;
begin
assign(f,fo);
rewrite(f);
for i:=1 to n do
begin
m1[i]:=tong(m[i]);
inc(dem[m1[i]]);
end;
max:=0;
for i:=1 to n do
if dem[i]<>0 then
if max<=dem[i] then max:=dem[i];
write(f,max);
close(f);
end;
begin
ip;
out;
end.
Nam là bạn thân của Tâm đến mua hàng. Nam hiện có N tờ tiền, mỗi tờ tiền M đều có giá trị khác nhau. Giả thiết rằng với số tiền của Nam hiện có đều có thể mua được một số sản phẩm trong cửa hàng.
Yêu cầu: Vì Nam không quen với việc tính toán, em hãy giúp Nam tính xem với N tờ tiền như vậy thì Nam không thể mua sản phẩm có giá trị nhỏ nhất (Min) là bao nhiêu?
Dữ liệu vào: File văn bản BUY.INP
Dòng thứ nhất là số N (0Dòng thứ hai có N tờ tiền, mỗi tờ tiền M cách nhau một khoảng trắng (0Dữ liệu ra: File văn bản BUY.OUT
- Gồm một số nguyên dương Min cần tìm.
Ví dụ:
BUY.INP BUY.OUT
5
1 2 4 9 100 8
b)
3 7
1 2 3
Câu trả lời của bạn
uses crt;
var a,b:array[1..1000]of longint; d:text; i,j,n,k,t,kt,ktt:longint;
begin
clrscr;
assign(d,'input.pas');reset(d);
readln(d,n);
for i:=1 to n do read(d,a[i]);
k:=0;
for i:=1 to n do
begin
t:=0;
for j:=i to n do
begin
t:=t+a[j];
inc(k,3);
b[k-2]:=i;
b[k-1]:=i+j;
b[k]:=t;
end;
end;
// for i:=1 to k do write(b[i],';'); writeln;
kt:=0;
i:=0;
repeat
inc(i); ktt:=0;
for j:=1 to k do If i=b[j] then ktt:=1;
if ktt=0 then kt:=1;
until kt=1;
writeln(i);
close(d);
readln
end.
a:=4;
b:=5;
if a=4 then a:=5 else a:=4;
if a=5 then a:= 4 else 1:=5;
Câu trả lời của bạn
Sau khi thực hiện xong thì a=4 ; b=5
Câu trả lời của bạn
Lỗi chỗ d:= 3
Viết đúng là if d = 3 then write('dbang3')
Câu trả lời của bạn
program chia_het;
uses crt;
var n: real;
begin
clrscr;
writeln('nhap so n:'); readln(n);
if (n mod 3)=0 then writeln(' chia het cho 3:')
else writeln(' k chia het:');
readln;
end.
Câu trả lời của bạn
var n:int64;
begin
readln(n);
if n>100000 then n:=n div 10 else n:=n div 20;
write(n);
end.
Câu trả lời của bạn
if a mod 3 = 0 then writeln('a chia het cho 3')
Câu trả lời của bạn
uses crt;
const fi='timkiemnp.inp';
fo='timkiemnp.out';
var f1,f2:text;
m,d,c,k,n,dem,i,kt:integer;
a:array[1..100]of integer;
begin
clrscr;
assign(f1,fi); reset(f1);
assign(f2,fo); rewrite(f2);
readln(f1,n);
for i:=1 to n do read(f1,a[i]);
for i:=1 to n do write(a[i],' ');
writeln;
write('nhap so can tim k='); readln(k);
{------------------------xu-ly-------------------------}
d:=1;
c:=n;
repeat
m:=(d+c) div 2;
if a[m]=k then begin
writeln('co tai vi tri thu:',m);
break;
end
else if k<a[m]then c:=m-1
else d:=m+1;
until d>c;
if d>c then writeln('ko co');
close(f1);
close(f2);
readln;
end.
Câu trả lời của bạn
Program hotrotinhoc;
var M,N,TG,TG1: integer;
begin
write('M='); readln(M); TG:=M;
write('N='); readln(N); TG1:=N;
If N>M then
begin
N:=TG+TG1;
M:=N-M;
end;
If N<M then
Begin
M:=TG+TG1;
N:=M-N;
end;
Writeln('Gia tri moi cua M=',M);
write('Gia tri moi cua N=',N);
readln
end.
Câu trả lời của bạn
uses crt;
var a,hieu,s,t,s1,s2,s3:longint;
begin
clrscr;
write('nhap so dien:'); readln(a);
if a<=50 then t:=a*1000;
if (a>50) and (a<=100) then
begin
if (a>50) and (a<100) then
begin
hieu:=a-50;
s:=hieu*2000;
t:=50*1000+s;
end;
if a=100 then
begin
s1:=50*1000;
s2:=50*2000;
t:=s1+s2;
end;
end;
if a>100 then
begin
s1:=50*1000;
s2:=50*2000;
hieu:=a-100;
s3:=hieu*3000;
t:=s1+s2+s3;
end;
writeln('so tien dien phai tra la: ',t);
readln;
end.
Câu trả lời của bạn
uses crt;
Var t,l,h,v,s,d,tb: real;
begin
Write ('Diem Toan: '); readln (t);
Write ('Diem Ly: '); readln (l);
Write ('Diem Hoa: '); readln (h);
Write ('Diem Van: '); readln (v);
Write ('Diem Su: '); readln (s);
Write ('Diem Dia: '); readln (d);
Tb:=(t + l + h + v + s + d)/6;
Writeln('Diem trung binh: ',tb);
readln;
end.
câu 1 : viết chương trình Python cho phép nhập vào 3 số thực là điểm số của 3 môn thi. in ra màn hình " Qua mon " nếu điểm trung bình >= 5.0 ngược lại in ra " Khong qua mon ". Điểm trung bình lấy 4 chữ số thập phân.
Câu trả lời của bạn
Câu trả lời của bạn
Chương trình Pascal:
Câu trả lời của bạn
Chương trình Pascal:
Câu trả lời của bạn
a, if (45 mod 3) = 0 then x := x + 1;
b, if x > 10 then x := x + 1 else x := x - 1;
Câu trả lời của bạn
a, vì 45 chia hết cho 3 nên x = x + 1 = 5 + 1 =6.
b, vì x = 5 không lớn hơn 10 nên x = x - 1 = 5 - 1 = 4.
Bước 1: Nhập 2 số thực a, b
Bước 2: Nếu a = b thì thông báo "Cần nhập hai số khác nhau"
Câu trả lời của bạn
Readln (a); Readln (b);
If .............. then writeln (b) ............ writeln (a);
write ('Goodbye');
Câu trả lời của bạn
Readln (a); Readln (b);
If b > a then writeln (b) else writeln (a);
write ('Goodbye');
a, if x := a then x := x + 1;
b, if x = a then x := x + 1;
c, if a > b then max := a; else max := b;
d, if a > b then max := a else max := b;
Câu trả lời của bạn
Các câu lệnh không hợp lệ là:
Câu lệnh a: vì trong điều kiện if sử dụng phép gán
Câu lệnh c: vì sau từ khóa then có dấu chấm phẩy
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 *