Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 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 экран дисплея во время выполнения программы выглядит следующим образом:
![]() |
Результат совпадает с результатами ручного счета.
Задание 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, если 5
x
10,
4t+
, если x>10
а область Q состоит из двух областей Q1, Q2
y
r
Q1
- r 0 r x
Q2
- r
Решение.
1. Задание области принадлежности точки М.
Зададим область Q с помощью логического выражения
Q=Q1 U Q2,
где Q1 определяется условиями (0
y
r)
(0
x
-r), а Q2 определяется условиями (-r
y
0)
(0
x
r).
Таким образом, область Q может быть задана следующим образом:
Q=(x*y
0)
(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 | Нет |
Таким образом, ожидаемый результат Z
0.632. Результат работы программы:
z =0..
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 |









