PASCAL ABC Лабораторная работа № 2 Программирование разветвляющихся алгоритмов

  • docx
  • 11.11.2021
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала Л2-00418.docx

PASCAL ABC Лабораторная работа № 2
Программирование разветвляющихся алгоритмов

Цель работы: уметь программировать ветвления с помощью условного оператора IF и оператора выбора Case.

Алгоритм называется разветвляющимся, если он содержит несколько ветвей, отличающихся друг от друга содержанием вычислений. Выход вычислительного процесса на ту или иную ветвь алгоритма определяется исходными данными задачи в зависимости от значения условия, которое представляет собой логическое выражение. Ветвление изменяет направление вычислительного процесса. Развилка реализуется условным оператором IF условие THEN оператор1 ELSE оператор2.

Пример 1. Вычислите корни квадратного уравнения ax2+bx+c.

Количество корней уравнения и способ их вычисления зависит от дискриминанта, который находится по формуле D=b2-4ac. Если D положительный, тогда существуют 2 корня . Если D =0, тогда существует 1 корень .  Выбор способа нахождения корней уравнения осуществляется условным оператором в зависимости от значения дискриминанта D. На Рис.13 изображен алгоритм вычисления корней квадратного уравнения, по которому написана программа.

Program Quad;

var

A,B,C: real; {переменные для хранения коэффициентов}

D, x,x1,x2: real; { переменные дискриминанта и корней}

begin

writeln (' Ввод коэффициентов'); writeln (A,B,C);

D:=Sgr(B) -4*A*C; { вычисление дискриминанта}

if D<0 then    writeln('Уравнение не имеет вещественных корней ')

                 else if D=0 then  begin x:=-B / (2*A); {вычисление корня}

                 {вывод корней}    writeln (‘Уравнения имеет один корень x=’,x:6:2);

                                                  end     {перед ELSE знак ; не ставится}

                                      else begin

                                      x1:= (-B+Sqrt(D)) /(2*A); {вычисление корней}

                                      x2:=(-B-Sqrt(D))/(2*A);

writeln ('Уравнения два корня: x1=', x1:6:2, ' x2=', x2:6:2); {вывод корней}

                                               end;             

end.


                                                                                                                                                  

       Рис.13. Блок –схема алгоритма нахождения корней квадратного уравнения

 

Пример 2. Определите номер квартала по введенному номеру месяца.

Выбор осуществляется оператором CASE  селектором Dig, значения которого определяются скалярными типами перечисление и диапазон.

Program Digit;

Var         Dig: integer;

begin

writeln (‘ Ввод номера месяца ‘); readln (Dig); {ввод селектора месяца }

case Dig of                   {выбор селектором номера месяца Dig }

                                 1, 2, 3 : writeln(‘ первый квартал’);

                                 4, 5, 6 : writeln(‘ второй квартал’);

                                 7..9 :     writeln(‘ третий квартал’);

{ диапазон 7..9 - интервал чисел от 7 до 9; тоже самое, что перечисление 7,8,9.}

                                 10..12: writeln(‘ четвертый канал’);

                                 end;

end.

Пример 3. Разработать программу для вычисления вида:

                      если              

program mypr;

var

  a,b,d:real;

begin

writeln(‘Введите исходные данные a,b= ‘);

 readln(a,b);

if  a*b<0 then d:=Ln(SQR(a*b)) {вычисляется d для отрицательного a*b }

       else   if  a*b>0  then d:=Ln(a*b) {вычисляется d для положительного a*b }

                                                  else d:=0; {вычисляется d для нулевого произведения a*b}

writeln(‘  D = ‘,d:10:4); {вывод значения функции d=f(a,b) }

end;

end.


 

Скачано с www.znanio.ru