Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

Задание 4 (продолжаем работать с программой задания 1). Закрыть окно Watches. Снять точку останова, нажав Ctrl+F8. Ввести еще одно исправление в программу: изменить тип переменной fact на byte. Выполнить программу. Убедиться в наличии ошибки выполнения, записать ее тип и сообщение (см. Приложение 2). Для исследования причины ошибки восстановить точку останова, в окно Watches ввести для наблюдения имена переменных i, fact.По аналогии с заданиями 2 и 3 построить таблицу со значениями переменной fact при изменении i от 1 до 10. Объяснить причину ошибки. Объяснить расхождение значений переменной fact в таблицах заданий 2, 3, 4.

Пошаговый режим отладки

Задание 1.Введите текст программы, выполните ее и запишите полученные результаты.

Program Prim_2;

{решение квадратного уравнения в предположении, что дискриминант d>0}

Var

a, b,c, x1,x2:real;

Procedure sq(a, b,c: real; Var y1,y2: real); {процедура расчета}

Var d:real;

Begin

d:=b*b-4*a*c;

y1:=(-b+sqrt(d))/(2*a);

y2:=(-b-sqrt(d))/(2*a);

End;

Begin {основная программа}

a:=5; b:=-1.2; c:=-8.3;

sq(a, b,c, x1,x2);

writeLn;

writeLn(‘a=’,a,’b=’,b,’ c=’,c);

writeLn(‘x1=’,x1,’ x2=’,x2);

End.

Задание 2 (работаем с программой задания 1). Выполните программу в пошаговом режиме, последовательно нажимая клавишу F8. Выполните программу в режиме трассировки, последовательно нажимая клавишу F7. Проанализировать и описать отличия этих режимов.

Задание 3 (работаем с программой задания 1). Установите курсор на ключевом слове End процедуры sq. Командой Run/Go to Cursor (или нажатием клавиши F4) выполните программу до этой строки. Выполните команду Debug/Evaluate/Modify... (Ctrl+F4). Извлеките в поле Result окна команды значения переменных d, y1, y2 и запишите их. Для этого в поле Expression ввести имя переменной и нажать Enter. Чтобы закрыть окно нажмите Esc. Выполните программу до конца в режиме трассировки и сравните значения y1 и y2 c конечными значениями.

НЕ нашли? Не то? Что вы ищете?

Задание 4 (работаем с программой задания 1). Установите курсор на строке вызова процедуры sq.. Нажимая клавишу F4, выполните программу до этой строки. Войти в диалоговое окно команды Debug/Evaluate/Modify. Переменным a, b, c присвоить новые значения, например, 1,4,2 соответственно. Для ввода новых значений выполнить цепочку действий: в поле Expression ввести имя переменной, нажимая Tab активизировать кнопку окна Modify и поле New value, в которое ввести новое значение и нажать Enter. Затем нажать Tab, активизировать поле окна Expression и повторить действия для другой переменной.

После этого в режиме трассировки выполнить программу до конца, сравнить конечные результаты с результатами, полученными в задании 1.

Задание 5 (работаем с программой задания 1). Откройте диалоговое окно команды Debug/Call stack.Проведите трассировку программы. Запишите значения параметров процедуры из окна Call stack при обращении к процедуре Sq и при возвращении из процедуры в основной блок программы. Сравнить их с результатами расчета программы.

Порядок выполнения лабораторной работы

1.  Выполнить задания 1,2,3,4 темы Точки останова и отладочное окно Watches.

2.  Выполнить задания 1,2,3,4,5 темы Пошаговый режим отладки.

3. Оформить отчет по лабораторной работе.

В отчете должны быть представлены:

1.  Список команд отладчика среды TURBO PASCAL, их описание.

2.  Таблицы значений исследованных переменных с указанием точек останова, которыми эти значения получены.

3.  Объяснения причин отличия значений факториала при использовании для его расчета переменных с разными типами.

4.  Вывод о целесообразности использования TURBO –отладчика для отладки программ.

ЛАБОРАТОРНАЯ РАБОТА № 3

Программирование алгоритмов линейной структуры

Цель работы: овладение практическими навыками алгоритмизации и программирования линейных структур на примере работы с арифметическими выражениями.

Задание на самостоятельную подготовку

1.Изучить, используя материал пособия «Алгоритмизация и элементы программирования» и литературу, указанную в нем:

-  простые типы данных;

-  правила записи констант, переменных, стандартных функций;

-  правила записи арифметических выражений;

-  оператор присваивания;

-  структуру линейного вычислительного процесса;

-  организацию ввода-вывода числовых данных.

2. Разработать алгоритм решения в соответствии с заданием.

3. Составить программу решения задачи.

4. Подготовить тестовый вариант данных для проверки правильности выполнения программ и найти для него решение вручную.

Для выполнения задания использовать приведенные в лабораторной работе демонстрационные задания 1 и 2.

Задание 1. Вычислить объем шара V с радиусом R по формуле V=4пR3/3.

Решение: 1.Построение структурной схемы алгоритма.

 

2. Написание текста программы

Program Shar;

Var

R:real; {радиус шара}

V:real; {объем шара}

Begin

writeln(‘Введите значение радиуса R:’);

readln(R);

V:=4*PI*R*R*R/3; {PI-стандартная функция}

writeln;

writeln(‘Результат:’);

writeln(‘Объем шара =’,V:8:3);

End.

СкругленныйПри R=0.2 и R=3.5 экран дисплея во время выполнения программы выглядит следующим образом:

Скругленный прямоугольник: Введите значение радиуса R:

3,5

Результат:

Объем шара=179.594
 

Результат совпадает с результатами ручного счета.

Задание 2. Вычислить арифметические выражения: и , для x=3; y=5,2; a=7,1; b=2,5.

Решение:

1. Построение структурной схемы алгоритма.

 

2. Написание текста программы.

Program ARFV;

Var

x:integer;

Z1,Z2, y, a, b, c:real;

Begin

writeLn (‘Введите значения x, y,a, b,:’);

read (x, y,a, b);

c:=y/x;

Z1:= (exp(c*ln(x)))-c;

Z2:=sqr(cos(a*a*a))-a*sqrt(sqr(a)+sqr(b));

writeLn;

writeLn(‘Результаты вычислений:’);

writeLn(‘Z1=’,Z1:8:4);

writeLn(‘Z2=’,Z2:8:4);

End.

Порядок выполнения лабораторной работы

1. Выполнить задания 1и 2, вывести на экран результаты.

2. Просмотреть результаты вычислений и исходные данные.

3. Проверить правильность работы программы с помощью тестового примера, решенного вручную.

4. Осуществить отладку программы с просмотром выходных значений.

5. Выбрать соответствующий порядковому номеру (по списку в журнале) вариант индивидуального задания из таблицы 2.1. и выполнить п. п. 1-4.

6. Оформить отчет по лабораторной работе, включив в него только вариант индивидуального задания.

В отчете должны быть представлены:

5.  Формулировка задачи (индивидуального задания).

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

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

8.  Тестовый вариант, решенный вручную и рассчитанный на компьютере.

9.  Сравнение результатов ручного и машинного расчетов.

Таблица 3.1

Варианты индивидуальных заданий

Составить алгоритм и программу вычисления выражения, по расчетным формулам и заданном наборе исходных данных. На экран вывести значения исходных данных и результаты вычислений, сопровождая вывод наименованием переменных.

Номер варианта

Задача или расчетная формула

Значения исходных данных

1.

Аргументы вводятся с клавиатуры

2.

b=2,8, х=3,1

3.

a=3,14; b=19; x=0,5

4.

Аргументы вводятся с клавиатуры

5.

a=8; b=1; x=2

6.

a=6,2; b=3,9; x=0,1

7.

Аргументы вводятся с клавиатуры

8.

M=X2*A-Y и V=A3+Y/cosX

X=3,3; Y=0,04; A=2,3

9.

a=-2,8; b=0,8; x=0,6

10.

Аргументы вводятся с клавиатуры

11.

a=19; b=3,14; x=28,4

12.

a=7; b=3; x=0,14

13.

Аргументы вводятся с клавиатуры

14.

a=0,6; b=1,2; x=1

15.

y=exSin2x

Аргументы вводятся с клавиатуры

16.

a=0,5;b=13; x=4

17.

a=9; b=7; x=16

18.

y=ax3-bx2+a2Cos|x|

Аргументы вводятся с клавиатуры

ЛАБОРАТОРНАЯ РАБОТА № 4

Программирование алгоритмов разветвляющейся и
циклической структуры

Цель работы: овладение практическими навыками разработки и программирования вычислительного процесса разветвляющейся и циклической структуры.

Задание на самостоятельную подготовку

1.Изучить, используя материал пособия «Алгоритмизация и элементы программирования» и литературу, указанную в нем:

-  возможности языка программирования для реализации условной передачи управления;

-  полную и сокращенную запись условного оператора;

-  изучить циклы с условием.

2. Разработать алгоритм решения в соответствии с заданием.

3. Составить программу решения задачи.

4. Подготовить тестовый вариант данных для проверки правильности выполнения программ и найти для него решение вручную.

Для выполнения индивидуального задания использовать приведенные в лабораторной работе демонстрационные задания.

Задание 1 (разветвляющаяся структура). Составить блок-схему и написать программу вычисления функции F, зависящей от трех переменных x, y, t. Переменные x, y принимают некоторые значения на координатной плоскости, а переменная t может принимать одно из двух значений 1 или 0 в зависимости от того, принадлежит или не принадлежит точка М с координатами x, y заданной области Q, т. е.

1, если М(x, y)Q

t =

0, если М(x, y) Q

Пусть функция F задана следующим образом:

 

2t+y, если x<5,

F = lgx+t, если 5x10,

4t+, если x>10

а область Q состоит из двух областей Q1, Q2

y

r

Q1

- r 0 r x

Q2

- r

Решение.

1.  Задание области принадлежности точки М.

Зададим область Q с помощью логического выражения

Q=Q1 U Q2,

где Q1 определяется условиями (0yr) (0x-r), а Q2 определяется условиями (-ry0) (0xr).

Таким образом, область Q может быть задана следующим образом:

Q=(x*y0)(abc(x)r)(abc(y)r).

2. Построение структурной схемы алгоритма.

 

3. Написание программы

Program EX4;

{Ветвящийся вычислительный процесс]

{Оператор IF использует сложное условие}

Var

F, x, y, r, t: real;

a: boolean;

Begin

writeln(‘Введите исходные данные x, y, r:’);

readln(x, y, r);

a:= (x*y<=0)and (abs(x)<= r)and (abs(y)<= r);

If a Then

t:=1

Else

t:=0;

If x<5 Then

F:=2*t+y

Else

If x>10 Then

F:=4*t+sqrt(y)

Else

F:=t+ln(x)/ln(10);

writeln(‘Исходные данные’);

writeln(‘x=’, x:8:3,’ y=’, y:8:3,’ r=’, r:8:3);

writeln(‘Результаты расчетов’);

writeln(‘t=’, t:8:3,’ F=’, t:8:3,a);

End.

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

Таблица 4.1.

Исходные данные

Результаты

x

y

r

t

F

-1

1

2

1

3

1

-1

2

1

1

6

4

2

0

0.778

100

0

2

0

0

Тестовый набор данных

Вычисленные вручную значения переменных t и F должны быть сравнены с результатами расчетов на ПК.

Задание 2.(циклические структуры с предусловием и постусловием). Вычислить с заданной точностью ε сумму ряда:

.

Решение.

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

Пусть , тогда и

Таким образом, и

Вычисления будем продолжать до тех пор, пока не станет меньше ε.

2.  Построение схемы вычислений с проверкой условия перед выполнением тела цикла:

 

Блок-схема алгоритма вычисления суммы ряда z c предусловием

3. Написание текста программы

Текст программы, вычисляющей значение z, имеет следующий вид:

{Вычисление суммы ряда с точностью }

Var

eps, u, x, z: real;

k: integer;

Begin

writeln(‘Введите значение аргумента x и точность ’);

{вывод на экран приглашения для ввода данных}

readln(x, eps); {ввод x и eps}

k:=1;

u:=x; {Инициализация переменных k, u, z}

z:=x;

{k - номер очередного члена ряда}

{u - k-ый член ряда}

{z - сумма k членов ряда от 1 до k-ого }

While abs(u)/abs(z)>= eps Do

Begin

k:=k+1;

u:=-x/k*u; {переход к следующему члену ряда}

z:=z+u; {добавление его к сумме}

End;

writeln(‘Результат:’, z:10:6);

End.

Проверим работу программы при x=1, ε =0.01.

В этом случае

z =

Изменение значений переменных при выполнении итераций показано в таблице 3.2.

Таблица 4.2.

Промежуточные вычисления при нахождении z

k

u

z

1

1

1

1

Да

2

-1/2

0,5

-1

Да

3

1/6

0,6667

0,25

Да

4

-1/24

0,625

-0,0667

Да

5

1/120

0,6333

0,01316

Да

6

-1/720

0,6319

-0,0022

Нет

Таким образом, ожидаемый результат Z0.632. Результат работы программы:
z =0..

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5