Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Задания к лабораторной работе




Лабораторная работа № 2

 

Программирование разветвляющихся вычислительных процессов

 

Теоретическая часть

 

Вычислительный процесс называется разветвляющимся, если он содержит несколько направлений (ветвей), отличающихся друг от друга содержанием выполняемых действий.

В языке Turbo Pascal для реализации разветвляющихся вычислительных процессов служат следующие операторы:

· условный оператор if;

· оператор выбора case;

· оператор перехода goto.

Оператор if используется в программе, когда в зависимости от некоторого условия надо выбрать одно из двух действий, или когда какое-либо действие должно быть выполнено только при выполнении заданного условия.

В общем виде оператор if записывается так:

if <условие> then

Begin

{операторы, выполняемые, если условие истинно}

End

Else

Begin

{операторы, выполняемые, если условие ложно}

end;

Выполняется оператор if следующим образом.

Сначала вычисляется значение выражения <условие>. Затем, если условие выполняется (то есть значение выражения <условие> равно true), то выполняются операторы, следующие за ключевым словом then, находящиеся между begin и end. Если условие не выполняется (значение выражения <условие> равно false), то выполняются операторы, следующие за словом else, находящиеся между begin и end.

Если при выполнении (или невыполнении) условия надо выполнить только один оператор, то ключевые слова begin и end после then (или else) можно не писать.

Если какое-либо действие нужно выполнить только при выполнении некоторого условия и пропустить это действие в случае невыполнения условия, то оператор if может быть записан в другой, более короткой форме:

if <условие>

Then

Begin

{операторы, выполняемые, если условие истинно}

end;

 

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

Блок-схема алгоритма решения задачи приведена на рис. 1.

 

Рис. 1

Текст программы:

Program Korni;

 var

   a, b, c: real; {коэффициенты уравнения}

          d: real; {дискриминант}

  x1, x2: real; {корни уравнения}

 label 1,2;

 begin

 writeln(‘Введите коэффициенты a, b, c’);

 readln(a, b, c);

 d := b*b-4*a*c; {вычисление дискриминанта}

 ifd=0 then

       beginx1:= -b/(2*a); x2:=x1; goto 1 end

       else

          ifd>0 then

                     beginx1:= (-b-sqrt(d))/(2*a); x2:= (-b+sqrt(d))/(2*a) end

                     else beginwriteln (‘Уравнение не имеет действительных корней’);

                            goto 2;

                            end;

1: writeln(‘x1=’,x1:6:2, ‘x2=’,x2:6:2);

2: end.

 

Оператор caseпозволяет реализовать множественный выбор и в общем виде записывается так:

case <выражение> of

<список констант 1> :begin

{последовательность операторов 1}

                                   end;

<список констант 2> :begin

{последовательность операторов 2}

                                    end;

<список констант N> :begin

{последовательность операторов N}

                                    end;

                      else

                                    begin

{последовательность операторов, выполняемая}

{в случае, если значение выражения не попало}

{ни в один из списков констант}

                                    end;

end;

Здесь: <выражение>-  выражение, от значения которого зависит дальнейший ход программы (то есть одна из последовательностей операторов, которая должна быть выполнена);

<список констант>-  константы, разделенные запятыми. Если константы представляют диапазон чисел, то вместо списка можно указать первую и последнюю константу диапазона, разделив их двумя точками. Например, список 1,2,3,4,5,6 может быть заменен диапазоном 1..6.

Если между beginи endнаходится только одна оператор, то слова beginи endможно не писать.

Примеры:

1. casedayof

1, 2, 3,4, 5: write ('Рабочий день. ');

6 : write (' Суббота ! ') ;

7 : write (' Воскресенье ! ') ;

end;

2. casedayof

1..5 : write ( ' Рабочий день . ' );

6: write (' Суббота ! ') ;

7: write ('Воскресенье! ');

end;

Оператор case выполняется следующим образом. Сначала вычисляется значение выражения, стоящего после case, затем полученное значение последовательно сравнивается с константами из списков констант. Если значение выражения совпадает с константой из списка, то выполняется соответствующая этому списку последовательность операторов, и на этом выполнение оператора case завершается. Если значение выражения не совпадает ни с одной константой из всех списков, то выполняется последовательность операторов, следующая за else. Допускается не указывать else и соответствующую последовательность операторов. В этом случае, если значение выражения не совпадает ни с одной константой из всех списков, то выполняется следующий за саsе оператор программы.

П р и м е р 2. Составить программу, имитирующую работу микрокалькулятора.

Блок-схема алгоритма решения представлена на рис. 2.

Рис. 2

 

Текст программы:

ProgramCalculator;

Var

    oper: char;         {символ арифметической операции}

     x, a, b :real;      {x – результат, a, b – операнды}

     stop :Boolean;   {признак ошибочной операции}

Begin

      stop := false;

      Write(‘Введите a и b’);

       Readln(a, b);

      Write(‘Введите символ операции ');

       Readln(oper);

       Case oper of              {выбор арифметического действия}

           ‘+’:x:= a+b;

           ‘-‘: x:= a-b;

           ‘*”: x:= a*b;

            ‘/’: x:= a/b

              elsestop:=true

        end;

        if not stop then writeln(‘Результат = ‘, x:6:3)

End.

 

Практическая часть

 

2.1. Ознакомиться с описанием лабораторной работы и по указанию преподавателя запустить систему программирования Turbo Pascal.

2.2. Для каждого из заданий к лабораторной работе составить блок-схему алгоритма решения и текст программы в рабочей тетради и предъявить их преподавателю. Для пояснения исходных данных, результатов и основных операций текст программы сопровождать комментариями.

2.3. Набрать текст программы, сохранить его в рабочем каталоге и выполнить компиляцию программы.

2.4. Подобрать контрольный набор исходных данных и запустить программу на выполнение. Результаты зафиксировать в рабочей тетради. Если возникли ошибки на этапе выполнения, то следует провести отладку программы, изменить исходные данные, и повторить пп. 2.3, 2.4.

2.5. Проверить работу программы, задавая 3 – 4 набора исходных данных. Результаты зафиксировать в рабочей тетради.

2.6. По данным рабочей тетради аккуратно оформить отчет по лабораторной работе и предъявить преподавателю. В отчете по каждому заданию должны быть отражены следующие пункты:

1. БСА алгоритма.

2. Исходный текст программы с комментариями.

3. Результаты отладки по п.2.4.

4. Результаты решения по п. 2.5.

 

Задания к лабораторной работе

1. Составить программу вычисления значений функции:

     1 - e-ax*sin(ax+b)           при        x>π;

Y = 1 - e-ax*(ax+b)                при      -π<x≤π

     1 – (e-ax + eax )*sin(ax)   при          x≤-π

2. Даны три неравных числа a, b, c. Составить программу нахождения квадрата большего из этих чисел.

3. Треугольник задан координатами своих вершин xi, yi, i=1, 2, 3 на плоскости. Определить, является ли заданный треугольник равнобедренным.

4. Составить программу, в которой по заданному значению аргумента x определяется значение функции y, заданной в виде графика (рис. 3).

Рис. 3

 

5. Составить программу, которая запрашивает у пользователя номер месяца и выводит соответствующее название времени года. Если пользователь укажет недопустимое число, программа должна вывести сообщение «Ошибка ввода данных».

6. Составить программу, которая после введенного с клавиатуры числа в диапазоне от 1 до 999, обозначающего денежную единицу, дописывает слово “рубль” в правильной форме. Например, 12 рублей, 21 рубль, 3 рубля и т. д.

 










Последнее изменение этой страницы: 2018-05-29; просмотров: 185.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...