Алгоритмы с ветвящей структурой Урок 30.
Цель: отработать навык составления программ с ветвящейся структурой.
Дана программа: Program urok; Var m, n, s, p: integer; BeginRead (m,n); s:=m+n; p:=m*n;if m>n then begin m:=s; n:=p; end else begin m:=p; n:=s; end; Write ('m=', m, ‘n=',n);End.Для решения какой задачи она предназначена?
Какие структуры называются ветвлением?
Какие конструкции ветвления бывают?
Задание 1.Составьте программу, определяющую, является ли число A кратным числу В.
Решение: Program primer; Var a, b :integer; BeginWrite('введите два числа'); Read(a,b);If a mod b=0 then writeln('a кратно b') else write ('а не кратно b'); End.
Вводятся две четвертные оценки по математике и русскому языку. Выведите на экран надпись «Молодец!», если их сумма больше или равна 9, иначе надпись — «Подтянись!».
Решение: Program primer; Var a, b: integer;BeginWrite('введите четвертные оценки по математике и русскому языку');Read(a,b);If a+b>=9 then writeln('Молодец!') else writeln('Подтянись!'); End.Использование операторных скобок внутри условного оператора называется составным оператором.
Задание 3. Составьте программу сортировки по возрастанию значений трех переменных: А, В, С.
Решение: Program Рг;Var S1, S2, S3, С: Integer; BeginWriteln(' Введите три числа'); Readln(S1,S2,S3);If S1>S2 then begin C:=S1; S1:=S2; S2:=C; end; {Меняем местами содержимое S1 и S2}If S2>S3 then begin C:=S2; S2:=S3; S3:=C; end; {Меняем местами содержимое S2 и S3}If S1>S2 then begin C:=S1; S1:=S2; S2:=C; end; {Меняем местами содержимое SI и S2}Writeln('Числа в порядке возрастания:', S1,S2,S3)End.
Задание 4. Составьте программу решения линейного уравнения вида Ах — В.
Решение:Program linear_equation;Var a, b: real;BeginWrite('введите коэффициенты а и b:');Readln(a, b);If a<>0 then write('x0',-b/a) ElseIf b=0 then write('Kopeнь любое число')Else write('Kopней нет');End.
Задание 5. Составьте программу решения квадратного уравнения.
Решение:program kv;var a,b,c,D,x1,x2:real;beginRead (a,b,c);D:=b*b-4*a*c;if D<0then Writeln('KOPHEЙ НЕТ')elseif D=0 then begin D:=sqrt(D); x1:=(-b)/(2*a); Writeln('x=',x1);elsebeginD:=sqrt(D);xl:=(-b+D)/(2*a);x2:=(-b-D)/(2*a);Writeln('xl=',xl);Write Ln('x2=',x2);end;end.
Домашнее задание Дано: а, b, с- стороны предполагаемого треугольника. Требуется сравнить длину каждого отрезка с суммой двух других. Если хотя бы в одном случае отрезок окажется больше суммы двух других, то треугольника с такими сторонами не существует.Написать программу, определяющую по координатам точки, в какой четверти она находится.
Ответы:1.var а, b, с: integer;beginwrite ('Длины сторон:'); readln (a,b,c);if (a<b+c) and (b<a+c) and (c<a+b) thenwriteln('Треугольник существует.')elsewriteln('Треугольник не существует.');readlnend.
2. Var x, y: real;beginwrite('x='); read(x);write('y='); readln(y);write('Hoмep четверти координатной плоскости:');if (x>0) and (y>0) then writeln (‘I’)Else if (x<0) and (y>0) then writeln('II')else if (x<0) and (y<0) then writeln('III')elseif (x>0) and (y<0) then writeln(‘IV')elsewriteln('-. Точка лежит на оси.');readlnend.