- •Оглавление
- •Глава 1. Алгоритмический язык Турбо-Паскаль 3
- •Глава 2. Программирование в среде Турбо - Паскаль 112
- •Глава 1. Алгоритмический язык Турбо-Паскаль
- •1. 1. Общие сведения
- •1. 2. Среда Турбо-Паскаль
- •1. 3. Структура языка Турбо-Паскаль
- •1. 4. Типы переменных
- •Практическое задание n 1. 1
- •1. 5. Структура программы
- •1. 6. Операции и стандартные функции
- •1. 7. Операторы Турбо-Паскаля
- •Составной оператор Begin "операторы" end;
- •1. 7. 1. Операторы ввода/вывода данных
- •Операторы вывода данных на экран Write("сп"); или Writeln("сп");
- •Практическое задание n 1. 2
- •Практическое задание n 1. 3
- •1. 7. 2. Оператор выбора
- •0..9: Writeln('однозначное');
- •1. 7. 3. Условный оператор
- •If "условие" Then "оператор1" Else "оператор2";
- •Практическое задание n 1. 5
- •Практическое задание n 1. 6
- •Практическое задание n 1. 7
- •Практическое задание n 1. 8
- •1. 7. 4. Оператор цикла с параметром
- •Практическое задание n 1. 9
- •Практическое задание n 1. 10
- •Практическое задание n 1. 11
- •Практическое задание n 1. 12
- •Практическое задание n 1. 13
- •Практическое задание n 1. 14
- •1. 7. 5. Операторы цикла с условием
- •Практическое задание n 1. 15
- •Практическое задание n 1. 16
- •1. 7. 6. Операторы ограничения и прерывания цикла
- •1. 7. 7. Оператор перехода к метке
- •1. 8. Блок - схемы алгоритмов
- •1. 9. Составление диалоговых программ
- •Практическое задание n 1. 17
- •1. 10. 1. Линейные массивы
- •Практическое задание n 1. 18
- •Практическое задание n 1. 19
- •Практическое задание n 1. 20
- •Практическое задание n 1. 21
- •1. 10. 2. Работа с элементами переменной строкового типа
- •Практическое задание n 1. 22
- •1. 10. 3. Двумерные массивы
- •2 S[2] Массив a: a[2, 1] a[2, 2] a[2, 3] a[2, 4] . . . A[2, j] . . . A[2, m]
- •Практическое задание n 1. 23
- •1. 10. 4. Создание баз данных с использованием массивов записей
- •Практическое задание n 1. 23
- •1. 10. 5. Работа с большими массивами
- •Практическое задание n 1. 25
- •1. 11. Текстовые файлы
- •Практическое задание n 1. 26
- •Практическое задание n 1. 27
- •1. 12. Разработка функций и процедур
- •1. 12. 1. Описание функций и процедур
- •Viz(Dat); { вызов процедуры } Readln end.
- •Практическое задание n 1. 28
- •Практическое задание n 1. 29
- •Практическое задание n 1. 30
- •1. 12. 2. Рекурсивные функции и процедуры
- •Практическое задание n 1. 31
- •Практическое задание n 1. 32
- •1. 13. Разработка модулей
- •Практическое задание n 1. 33
- •1. 14. Модуль сrt
- •1. 14. 1. Управление экраном в текстовом режиме
- •InsLine; Вставка пустой строки.
- •1. 14. 2. Управление клавиатурой
- •Практическое задание n 1. 34
- •Практическое задание n 1. 35
- •Практическое задание n 1. 36
- •Практическое задание n 1. 37
- •1. 14. 3. Работа с символьными переменными
- •Практическое задание n 1. 38
- •Практическое задание n 1. 39
- •Практическое задание n 1. 40
- •Практическое задание n 1. 41
- •Практическое задание n 1. 42
- •1. 14. 4. Работа со строковыми переменными
- •Практическое задание n 1. 43
- •1. 14. 5. Управление звуковыми сигналами
- •Практическое задание n 1. 44
- •Практическое задание n 1. 45
- •1. 15. Модуль Graph
- •1. 15. 1. Инициализация графического режима
- •1. 15. 2. Простейшие графические процедуры и функции
- •Практическое задание n 1. 46
- •Практическое задание n 1. 47
- •Практическое задание n 1. 48
- •Практическое задание n 1. 49
- •Практическое задание n 1. 50
- •Практическое задание n 1. 51
- •Практическое задание n 1. 52
- •Практическое задание n 1. 53
- •1. 15. 3. Рисование геометрических фигур
- •1. 15. 3. 1. Построение заполненных фигур
- •Практическое задание n 1. 54
- •1. 15. 3. 2. Работа с линиями
- •Практическое задание n 1. 55
- •Практическое задание n 1. 55
- •Практическое задание n 1. 56
- •1. 15. 3. 3 Создание графических узоров
- •1. Перемещение фигуры.
- •Практическое задание n 1. 56
- •2. Масштабирование фигуры.
- •Практическое задание n 1. 57
- •3. Симметричное отображение фигуры.
- •Практическое задание n 1. 58
- •4. Штриховка углов.
- •Практическое задание n 1. 59
- •5. Использование рекурсии.
- •Практическое задание n. 1. 60
- •Практическое задание n . 1. 61
- •6. Создание узоров построением зеркальных отображений фигуры.
- •Практическое задание n 1. 61
- •1. 15. 3. 4. Работа с текстом в графическом режиме
- •Практическое задание n 1. 62
- •1. 15. 5. Мультипликация
- •1. 15. 5. 1. Мультипликация с запоминанием части экрана
- •Практическое задание n 1. 63
- •1. 15. 5. 2. Мультипликация с чередованием видеостраниц
- •Практическое задание n 1. 64
- •1. 15. 5. 3. Мультипликация с управлением движения образа
- •Практическое задание n 1. 65
- •1. 15. 5. 4. Модификация контурного изображения
- •Практическое задание n 1. 66
- •Глава 2. Программирование в среде Турбо-Паскаль
- •2. 1. Геометрические построения на плоскости
- •2. 1. 1. Построение графиков функций
- •Практическое задание n 2. 1
- •Var right, left, down, up: integer; k_xy, kx, ky, x_max, x_min, y_max, y_min: double; { описание глобальных переменных }
- •Практическое задание n 2. 2
- •Практическое задание n 2. 3
- •Практическое задание n 2. 4
- •Практическое задание n 2. 5
- •12 Строфоида a*Cos(2*fi)/Cos(fi) 0,1 ... 1,5 -3 -2 1 -
- •13 Циссоида a*Sin2(fi)/Cos(fi) 0,1 ... 1,5 -1 1 2 -
- •2. 1. 2. Графическое решение уравнений
- •Практическое задание n 2. 6
- •2. 1. 3. Уравнение прямой на плоскости
- •Практическое задание n 2. 7
- •2. 1. 4. Построение касательных и нормалей к плоским кривым
- •Практическое задание n 2. 8
- •2. 1. 5. Двумерные преобразования координат
- •Практическое задание n 2. 9
- •2. 1. 6. Проецирование пространственного изображения тела на плоскость
- •Практическое задание n 2. 10
- •2. 2. Некоторые задачи физики
- •2. 2. 1. Механика
- •Практическое задание n 2. 11
- •Y V xПрактическое задание n 2. 12
- •Практическое задание n 2. 13
- •Практическое задание n 2. 14
- •Практическое задание n 2. 15
- •Практическое задание n 2. 16
- •Практическое задание n 2. 17 X
- •Практическое задание n 2. 18 y
- •2. 2. 2. Оптика и свет
- •Практическое задание n 2. 19
- •Практическое задание n 2. 20
- •2. 2. 3. Электростатика и электромагнетизм
- •Практическое задание n 2. 21
- •2. 3. Математическое моделирование физических процессов
- •Практическое задание n 2. 22
- •Практическое задание n 2. 23
- •Практическое задание n 2. 24
- •Практическое задание n 2. 25
- •Практическое задание n 2. 26
- •2. 4. Моделирование многовариантных задач с использованием графов
- •Практическое задание n 2. 27
- •2. 5. Программы математических расчетов
- •2. 5. 1. Численное решение уравнений
- •Практическое задание n 2. 28
- •Практическое задание n 2. 29
- •2. 5. 2. Аппроксимация по методу наименьших квадратов
- •Практическое задание n 2. 30
- •2. 5. 3. Численный расчет интегралов
- •Практическое задание n 2. 31
- •Практическое задание n 2. 32
- •2. 5. 4. Сортировка одномерных массивов
- •Практическое задание n 2. 33
- •Практическое задание n 2. 34
- •Список литературы
Практическое задание n 2. 21
Построить вектора напряженности электростатического поля, созданного двумя или тремя зарядами для случаев: a) Q1=1, Q2=1; b) Q1=2, Q2=-1; c) Q1=1, Q2=-1, если в данном случае расстояние между зарядами мало, то получаем электрический диполь, d) Q1=1, Q2=-1, Q3=-1 ; e) Q1=1, Q2=-2, Q3=1.
2. 3. Математическое моделирование физических процессов
При расчете физических процессов составляется математическая модель - система уравнений, описывающая зависимости между физическими величинами при некоторых упрощающих допущениях. Например, при движении точки вблизи поверхности Земли полагается ускорение свободного падения постоянным, не зависящим от высоты расположения точки над поверхностью. Для тел, движущихся с небольшой скоростью или в разряженной атмосфере, пренебрегают сопротивлением воздуха. Само точка часто заменяют материальной точкой, т. е. размерами точки пренебрегают. Физические процессы описываются, как правило системой дифференциальных уравнений, для решения которой применяют различные численные методы (модели). Широко используется метод конечных разностей, в котором бесконечно малые приращения переменных заменяют малыми (конечными) приращениями.
Например, изменение параметра времени представляют в виде: dt=t2-t1, а изменение функции "Х": dX(t) = X(t)-X(t-dt) = X(t2)-X(t1) = X2-X1.
Рассмотрим задачу определения траектории точки, движущегося в некоторой плоскости под действием различных сил. Например, необходимо вычислить траекторию движения снаряда с учетом сопротивления воздуха или ракеты с учетом изменения ее массы, движущихся в поле тяготения Земли.
Координаты точки X(t), Y(t) в некоторый момент времени "t" можно определить, зная координаты точки X(t-dt), Y(t-dt) в предыдущий момент времени "t-dt" и изменение (приращение) координат dX, dY:
X(t) = X(t-dt) + dX(t),
Y(t) = Y(t-dt) + dY(t).
Если временной интервал выбрать достаточно малым, то можно полагать, что скорость точки на этом интервале не изменяется и приращения координат определяются по формулам:
dX(t) = Vx(t)dt,
dY(t) = Vy(t)dt.
Здесь Vx(t), Vy(t) - проекции скорости на оси координат.
Составляющие скорости Vx(t) и Vy(t) можно вычислить по формулам:
Vx(t) = Vx(t-dt) + Ax(t)*dt,
Vy(t) = Vy(t-dt) + Ay(t)*dt.
Здесь Ax(t), Ay(t) - проекции ускорения на оси координат.
Ускорение определяется силами, действующими на точка: ускорение равно равнодействующей силе, деленной на массу точки. Силы могут зависеть от координат точки, времени и скорости точки. Например, ускорение ракеты в поле тяготения планеты обратно пропорционально квадрату расстояния до центра планеты. При включении двигателя ракеты ускорение зависит от времени (программы работы двигателя). При движении в плотных слоях атмосферы на ракету действуют силы сопротивления воздуха, зависящие от скорости движения, т. е. ускорение зависит от скорости.
140
Приведем алгоритм расчета траектории движения точки:
1. Определяем силы, действующие на точка, и находим проекции ускорения на оси координат. В общем случае ускорение точки зависит от многих факторов и в момент времени t задается как функция от времени, скорости и координат точки:
Ax:= Fx(Vx, Vy, X, Y, t); Ay:= Fy(Vx, Vy, X, Y, t);
Где Vx, Vy, Ax, Ay - проекции скорости и ускорения.
2. Задаем начальное положение точки - координаты X[1], Y[1] и начальную скорость и ускорение в виде проекций на оси координат:
X[1]:= X0; Y[1]:= Y0; Vx[1]:= V*cos(fi); Vy[1]:= V*sin(fi);
Ax[1]:= Fx(Vx[1], Vy[1], X[1], Y[1], t[1]);
Ay[1]:= Fy(Vx[1], Vy[1], X[1], Y[1], t[1]);
Где V - начальная скорость точки, fi - угол наклона вектора скорости к оси Х.
3. Задаем временной шаг dt и разбиваем весь временной интервал на N участков. При равномерной разбивке приращение времени определяется по формуле:
dt:= (t[N]-t[1])/(N-1); Здесь (t[N] - t[1]) - время движения точки.
Выбор величины dt определяется необходимой точностью расчета, возможностями вычислительной техники, и может уточняться при решении задачи.
4. Вычисляем массивы скорости, ускорения и координат точки:
For i:= 2 to N do begin
Vx[i]:= Vx[i-1] + Ax[i-1]*dt;
Vy[i]:= Vy[i-1] + Ay[i-1]*dt;
X[i]:= X[i-1] + 0.5*(Vx[i-1] + Vx[i])*dt;
Y[i]:= Y[i-1] + 0.5*(Vy[i-1] + Vy[i])*dt;
Ax[i]:= Fx(Vx[i], Vy[i], X[i], Y[i], t[i]);
Ay[i]:= Fy(Vx[i], Vy[i], X[i], Y[i], t[i]);
{ уточняем скорость точки в расчетной точке }
VX[i]:= VX[i-1] + 0.5*(Ax[i-1] + Ax[i])*dt;
VY[i]:= VY[i-1] + 0.5*(Ay[i-1] + Ay[i])*dt;
end;
Для уменьшения погрешностей расчетной схемы, скорость и ускорения на участке интерполируются средними значениями.
5. Строим траекторию движения точки. Здесь удобно использовать процедуры из библиотеки построения графиков GR_F. Следует определить расчетную область и область рисования траектории на экране. Траектория на экране рисуется процедурой: PutPixel_G(X[i], Y[i], N);
Для тестирования работы алгоритма рассмотрим задачу расчета траектории точки, движущегося из точки с координатами X, Y с начальной скоростью Vx, Vy под действием сил, вызывающих ускорение точки Ax, Ay. Следуя пунктам 1. . 5 приведенного выше алгоритма необходимо рассчитать траекторию движения точки и сравнить с траекторией точки, описанной аналитической зависимостью X(t), Y(t).
141