Тема: Ветвления Ветвление – это такая форма организации действий, при которой в зависимости от истинности некоторого условия выполняется либо одна, либо другая последовательность действий. Алгоритм, содержащий ветвления называется разветвляющимся.
Ветвления могут быть записаны в 2-х формах: полной и неполной. Запишем ветвление тремя способами – на естественном языке, на языке блок-схем и на языке программирования Pascal 1. на естественном языке: В полной форме: Если Q, то P1 P2 … Pn ИначеТ1 Т2 … ТmТm Конец ветвления В неполной форме: Если Q, то P1 P2 … Pn Конец ветвления
Обозначения: Q – это условие, вопрос на который можно ответить либо «да» либо «нет». Примеры условий: X>0, (Y<=10) or (X=1) P1, P2,…, Pn – это действия, которые выполняется если условие Q – истинно. Действиями могут быть операторы присваивания, ввода, вывода или перехода. Например, X:=S+2, writeln, read(a), goto … T1, T2,…, Tm – это действия, которые выполняется если условие Q – ложно. «Конец ветвления» - это указатель, показывающий какое действие последнее в ветвлении.
На языке блок-схем: Q - ? да нет P1…PnT1…Tm В полной форме В неполной форме Q - ? да нет P1…Pn
На языке программирования Pascal If then else - в полной форме If then - в неполной форме Если надо выполнить несколько действий, то их заключают в операторные скобки : begin… end If then begin ; ; ….. end else begin ; ; ….. end If then begin ; ; ….. end
Задача 1: Дано a,b,c – стороны треугольника, выяснить, является ли этот треугольник равносторонним? program a1; var a,b,c: integer; Begin write(a=); read (a); write(b=); read (b); write(c=); read (c); If (a=b) and (b=c) then write (yes) else write (no) end. начало а=b=c ? yes no конец да-нет a,b,c
Задача 2: Дано a,b,c – стороны треугольника, выяснить, является ли этот треугольник равнобедренным? program a2; var a,b,c: integer; Begin write(a=); read (a); write(b=); read (b); write(c=); read (c); If (a=b) or (b=c) or (a=c) then write (yes) else write (no) end. начало (а=b) или (b=c) Или (a=b) ? yes no конец да нет a,b,c
Задача 3: вычислить Y, в зависимости от х, введенного с клавиатуры : x 2, если х>0 x+1, если х<=0 program a3; var x,Y: integer; Begin write(x=); read (x); If x>0 then Y=x*x else Y=x+1; write (Y=,Y) end. Y= начало X>0 ? конец Y=x*x Y=x+1 Y да нет x
Задача 4: вычислить Y, в зависимости от х, введенного с клавиатуры : 12.5x 2, если -1 0 program a4; var x: integer; Y:real; Begin write(x=); read (x); If (-1<=х) and (x<=0) then Y=12.5*x*x; If x<0 then Y=x-1; If x>0 then Y=12+x; write (Y=,Y:5:3) end. Y= начало конец Y -1<=х<=0? Y=12.5*x*x да нет X<-1? Y=x-1 да нет X>0? Y=12+x да нет x
Задача 5: ввести с клавиатуры три числа, сколько среди них положительных? program a5; var a,b,c,n: integer; Begin read (a,b,c); If a>0 then n=n+1; If b>0 then n=n+1; If c>0 then n=n+1; write (n=,n) end. начало конец n a>0? n=n+1 да нет b>0? n=n+1 да нет c>0? n=n+1 да нет a,b,c
Самостоятельно: Дано a,b,c – числа, выяснить, есть ли среди них отрицательные? Дано a,b,c – числа, выяснить, есть ли среди них пары равных между собой чисел? Дано a,b,c,d – стороны четырехугольника, выяснить, является ли этот четырехугольник ромбом? Дома: выучить теорию