Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LABINF_1_Oo.pdf
Скачиваний:
28
Добавлен:
15.06.2014
Размер:
563.3 Кб
Скачать

WriteLn('!---!-----!-----!'); dx:=(X2-X1)/(N-1);

x:=X1;

i:=1; Repeat

If x<=0 Then y:=(sin(x)/cos(x)+ln(abs(x-1))/ln(10))/(2*x+5) Else If x<=1 Then y:=exp(ln(x)/3)

Else y:=5*sin(2*x); WriteLn(i:3,x:7:2,y:6:2);

x:=x+dx;

i:=i+1; Until x>2;

End.

Отладка программ. Различают два вида ошибок программирования: синтаксические и логические. Подобно тому, как грамматически безупречный текст может быть полнейшей бессмыслицей, программа, не имеющая синтаксических ошибок, может содержать логические ошибки. Компилятор выявляет только синтаксические ошибки. Увеличение сложности программ неизбежно приводит к логическим ошибкам, которые выявляют в процессе отладки.

В процессе отладки можно по шагам выполнять программу, наблюдая за переменными. Выбор переменных для наблюдения осуществляется через меню Debug → Add watch… или комбинацией клавиш Ctrl+F7. Выполнение одного шага программы осуществляется через меню Run → Trace into или клавишей F7. Прервать процесс отладки можно через меню Run → Program reset или комбинацией Ctrl+F2. Во время отладки можно заглядывать в окно вывода, нажимая Alt+F5, либо через меню Debug → Output сделать это окно постоянно присутствующим на экране. Менять размеры окон можно, захватывая левой кнопкой мыши за нижний правый угол окна, а перемещать окна по экрану, захватывая мышкой за верхнюю границу окна. Закрыть окно можно, щелкнув мышью по желтому прямоугольнику в правом верхнем углу окна.

ЛАБОРАТОРНОЕ ЗАДАНИЕ

Задание 1. Написать алгоритм и программу вычисления функции y(x) из лабораторной работы № 2 в N равномерно распределенных в диапазоне X1≤x≤X2 точках, таблица 6. Результаты сформировать в виде таблицы. Произвести тестирование.

 

 

 

 

 

 

 

Таблица 6

Вариант

X1

X2

N

Вариант

X1

X2

N

1

–1

2

10

2

1

4

12

3

0

2

15

4

–2

0

14

5

0,1

1,8

16

6

–0,5

1

18

7

1

7

20

8

–1

2

11

9

–1

1

9

10

0

1

8

11

1

3

7

12

–2

–1

6

19

Продолжение таблицы 6

Вариант

X1

X2

N

Вариант

X1

X2

N

13

–0,1

0,3

5

14

1

100

20

15

–2

2

19

16

1

3

18

17

10

30

17

18

–5

5

16

19

–2

4

15

20

0,1

1,9

14

21

1,5

3,5

13

22

0,2

0,6

12

23

0,2

0,6

11

24

2

4

10

25

2,5

4,4

9

26

–1

1

7

27

2,5

7,5

5

28

8

10

7

29

–2

0

9

30

–1

1

11

Задание 2. Произвести пошаговое выполнение программы, наблюдая переменные x, y, i.

СОДЕРЖАНИЕ ОТЧЕТА

1.Лабораторное задание.

2.Структурная схема алгоритма.

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

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

ЦИКЛ С ЗАДАННЫМ ЧИСЛОМ ПОВТОРЕНИЙ

ЦЕЛЬ РАБОТЫ: Изучить цикл с заданным числом повторений (счетный цикл).

Алгоритмизация. В настоящей работе рассмат-

 

 

 

 

 

 

 

 

ривается оператор FOR, реализующий алгоритмиче-

 

 

 

 

i=n1, n2

 

 

скую структуру «цикл с заданным числом повторе-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ний», рисунок 9. Данный цикл работает следующим

 

 

 

 

 

 

образом. В начале работы цикла целочисленный па-

 

 

 

 

 

 

Действие

 

 

раметр i принимает значение n1 и цикл совершает

 

 

 

 

 

 

 

 

 

 

первую итерацию. Если i≠n2, параметр автоматиче-

 

 

 

 

 

 

ски изменяется на единицу и цикл совершает следу-

 

 

 

 

 

 

ющую итерацию. Если i=n2, цикл совершает послед-

 

 

 

 

 

 

 

 

нюю итерацию. В случае, если n1=n2, цикл совершит

 

 

 

 

Рисунок 9

 

 

первую и последнюю (одну) итерацию. Таким об-

 

 

 

 

 

 

разом, число повторений равно | n2–n1| +1. Знак модуля в этой формуле необходим для того, чтобы формула сохранила общность для двух форм счетного цикла. В первой форме счетного цикла n2>n1 и параметр i увеличивается на единицу. Во второй форме счетного цикла n2<n1 и параметр i уменьшается на единицу.

20

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

FOR параметр_цикла:=n1 TO n2 DO оператор; вторая форма счетного цикла выглядит следующим образом:

FOR параметр_цикла:=n1 DOWNTO n2 DO оператор,

где параметр_цикла – целочисленная переменная, соответствует i на рисунке 9; n1, n2 – целочисленные переменные или константы; оператор – произвольный оператор Турбо Паскаля, соответствует элементу «действие» на рисунке 9.

Пример 5.1. Изменить алгоритм и программу из лабораторной работы 4, используя вместо цикла с постусловием счетный цикл.

Для решения данной задачи разработаны структурная схема алгоритма (рисунок 10) и следующая программа.

 

 

Начало

 

X1 = − 1; X 2 = 2; N = 10

 

dx =

X 2 X1

; x = X1

 

 

N 1

 

 

 

i=1, N

 

 

x 0

Конец

 

да

 

 

нет

 

 

 

 

x 1

нет

 

 

 

 

tg x + lg x 1

да

y =

y = 3 x

y = 5 sin 2x

 

2x + 5

 

 

 

 

Вывод

 

 

i, x, y

 

 

 

x=x+dx

 

 

Рисунок 10

21

Program lab5_1;

Const X1=-1; X2=2; N=10; Var y,x,dx: Real;

i:Integer; Begin

WriteLn('!---!-----!-----!');

WriteLn('! n ! x ! y !');

WriteLn('!---!-----!-----!'); dx:=(X2-X1)/(N-1);

x:=X1;

For i:=1 to N do Begin

If x<=0 Then y:=(sin(x)/cos(x)+ln(abs(x-1))/ln(10))/(2*x+5) Else If x<=1 Then y:=exp(ln(x)/3)

Else y:=5*sin(2*x); WriteLn(i:3,x:7:2,y:6:2);

x:=x+dx;

End

End.

Пример 5.2. Для заданного 0<x<1 и заданного числа слагаемых m вычислить сумму

s = x -

1

×

x3

+

1× 3

×

x5

-

1× 3× 5

×

x7

+

2

3

2× 4

5

2× 4× 6

7

 

 

 

 

 

 

 

Р е ш е н и е.

Если число слагаемых более одного, искомая сумма s определяется формулой:

m1

 

i

i

2 k 1

 

x2 i 1

 

s=x

1

 

 

 

 

2 k

2 i 1

i =1

 

 

k=1

 

 

Первое слагаемое есть x, а остальные (m – 1) слагаемых собраны оператором Σ. Для решения данной задачи разработаны: структурная схема алгоритма, рису-

нок 11, и следующая программа.

Program lab5_2;

Var a, b, c, x, s: Real; i,m: Byte;

Begin

Write('Введите 0<x<1. x='); Read(x);

WriteLn('Введите число слагаемых большее 0'); Read(m);

s:=x;

If m<>1 Then Begin

b:=1;

For i:=1 to m-1 do begin

If odd(i) Then a:=-1

22

Else a:=1; b:=b*(2*i-1)/(2*i); c:=exp((2*i+1)*ln(x))/(2*i+1); s:=s+a*b*c;

end;

End; WriteLn('Summa=', s:8:5);

End.

Рис. 11 Комментарии к программе. Отрицательное число (–1) нельзя возвести в произ-

вольную степень, пользуясь рассмотренной конструкцией ai =exp(i*ln(a)), поскольку отрицательное число под знаком логарифма приведет к ошибке. Вместо этого выбирается множитель единица либо минус единица, в зависимости от четности i. Если i

– нечетное, то функция odd(i) возвращает значение ИСТИНА.

23

Соседние файлы в предмете Информатика