Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
P_LAB_04_Работа в режиме RUN. Нахождение суммы...doc
Скачиваний:
1
Добавлен:
15.11.2019
Размер:
284.67 Кб
Скачать

3. Приостановка работы программы

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

Можно задать точки останова в программе. Для этого следует поместить курсор на той строке, где следует остановить программу, и выполнить команду ло­кального меню (вызов нажатием правой клавиши «мыши») Toggle breakpoint. Количество точек останова может быть любым. После запуска программы командой Run | Run, вычислительный процесс приостановится на первой встреченной точке останова. Продолжение работы осуществляется повторным запуском программы командой Run | Run (при этом программа запустится не с начала, а от точки останова) либо одной из команд меню Run: Run | Step over, Run | Trace into или Run | Goto cursor. Если перед очередным запуском были произведены изменения в тексте программы, на экран выдается запрос, следует ли перекомпилировать программу. Если станет очевидным, что дальнейшая отладка программы бессмысленна, можно выйти из отладчика, выполнив команду Run | Program reset. Эту же команду следует выполнить, если необходимо запустить программу с начала.

Можно задать и точку останова, в которой вычислительный процесс остановится при выполнении определенного условия. Эти условия могут быть двоякого вида. Во-первых, можно просто задать условие, при выполнении которого происходит останов, в против­ном же случае точка останова пропускается. Во-вторых, можно задать номер попадания в точку останова, при котором действительно произойдет останов. Например, если точка останова задана в теле цикла FOR и номер попадания за­дан равным максимальному значению параметра цикла (если он изменяется от единицы), то останов произойдет только при последней итерации. Задать такие точки останова можно, используя окно точек останова с помощью режима Edit. В качестве условия останова может быть использовано выражение логического типа, которое задается точно так же, как и обычное выражение языка Pascal. Номер попадания задается числом в пределах от 0 до 32767.

Другой способ остановить в какой-то точке выполнение программы - установить в эту точку курсор и вместо команды Run | Run использовать команду Run | Goto cursor. Вычислительный процесс остановится в месте расположения курсора. Продолжение работы программы можно осуществить, как и в предыдущем случае, одной из команд меню Run.

Наконец, программу можно остановить с помощью комбинации клавиш Ctrl+Break. Она остановится в том месте, где ее застало нажатие этих клавиш. Такая остановка может понадобиться, если программа начала заведомо непра­вильно работать: выдает неправильные результаты, зациклилась и т. д.

4. Нахождение суммы числового ряда

Сумма вида называется числовым рядом. Сумма вида называется частичной суммой ряда S. Для нахождения частичной суммы удобно воспользоваться циклом с параметром.

Пример1. Вычислить сумму ряда .

Var N,M : integer; S : real;

Begin

Write(’Введите количество членов ряда M=’);

ReadLn(M);

S := 0;

for N:=1 to M do

S :=S + 1/ N / N;

Writeln(’Сумма ряда S=’,S);

Readln

End.

Можно решить эту задачу используя циклы с пред- и постусловием. Однако в данном случае заранее известно количество повторений и использование цикла с параметром представляется более рациональным.

Конечно, невозможно реально просуммировать бесконечное число элементов ряда. Поэтому за сумму ряда принимают некоторую частичную сумму Sm , такую что |Sm-1 –Sm|< E., где Е называют точностью (вопросы, связанные со смыслом таких сумм, в частности вопросы сходимости числовых рядов смотри в [1-2]). Точность показывает, что сумма всех остальных элементов ряда меньше Е.

Пример 2. Вычислить сумму ряда с точностью Е.

Uses Crt;

Var E, S, SP : real;

N : integer;

Begin

ClrScr;

Write(’Введите точность E=’);

ReadLn(E);

N := 1;

SP := 1; {предварительно рассчитываем первый член ряда}

S := SP;

While SP > E do

begin

N := N +1;

SP := 1 / N /N;

S := S + SP;

end;

Writeln(’Сумма ряда S=’,S);

Writeln(’Точность ’,E,’ достигнута на ’,N,’ итерации’);

ReadKey

End.

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

Пример 3. Вычислить сумму ряда с точностью Е

Отношение между двумя соседними элементами ряда составляет X / N.

Uses Crt;

Var X,E,S,SP,P : real;

N : integer;

Begin

ClrScr;

Write(’Введите X=’);

ReadLn(X);

Write(’Введите точность E=’);

ReadLn(E);

N := 1;

SP := 1;

S := SP;

While SP > E do

begin

N := N +1;

SP := SP * X / N;

S := S + SP;

end;

Writeln(’Сумма ряда S=’,S);

ReadKey

End.