- •Конспект лекций по курсу «Информатика» для студентов очной и заочной форм обучения.
- •Базовые положения
- •§.1. Физическое устройство и разумная деятельность мозга
- •§2. Самодостаточная эвм
- •2.1. Память (оперативная память)
- •2.2. Процессор
- •2.3. Программа
- •2.4. Жизненный цикл «Самодостаточной эвм»
- •§3. Язык процессора – базовый язык эвм
- •§4. Реальная эвм. Периферийные устройства
- •§5. Язык программирования. Программа транслятор
- •§6. Язык программирования Pascal
- •6.1. Базовые типы числовых информационных объектов
- •6.2. Явные константы
- •6.3. Оператор описания var
- •Var и1, и2, и3, . . . . ,Иn: Итипа;
- •6.5. Операторы консольного ввода информации
- •6.5.1. Стандартные форматы вывода числовой информации.
- •6.6. Логические переменные
- •6.7. Операторы управления программой
- •6.7.1. Условный оператор if then
- •If Условие then Оператор ;
- •6.7.2. Условный оператор выбора if then else
- •6.8. Метки операторов. Оператор безусловного перехода
- •6.9. Циклические вычисления. Операторы зацикливания
- •Организация циклических вычислений операторами if then goto
- •Программа вычисления корня по формуле Герона.
- •6.9.3. Оператор цикла for to
- •6.9.4. Оператор цикла for downto
- •6.9.5. Оператор цикла while
- •6.9.6. Программа вычисления длины дуги кривой
- •7. Массивы переменных
- •7.1. Программа нахождения экстремальных значений
- •7.2. Программа решения системы линейных алгебраических уравнений
- •8. Сортировка информации
- •8.1. Элементы формальной логики, теории множеств и операций
- •8.2. Упорядоченные структуры информационных объектов
- •8.3. Алгоритм сортировки «поплавок»
- •8.3.1. Программа сортировки массива «на месте»
- •8.3.2. Программа сортировки «индексов» массива
- •8.4. Алгоритм быстрого поиска информации в линейно упорядоченном массиве
- •8.4.1. Программа поиска в отсортированных массивах.
- •9. Символьные переменные
- •9.1.Строковые переменные
- •9.1.1. Программа написания чисел прописью
- •10. Клавиатурное управление эвм
- •§.11. Информационные объекты класса – изображение
- •11.1. Устройство функционированиемонитора
- •11.2. Процедурный язык управления графическим экраном
- •11.3. Оцифровка и масштабирование реальных изображений (чертежей) для последующего их вывода на экран
- •11.4. Пример построения фрагмента графика функции
- •11.5. Ввод и обработка информации в форме изображений
- •§12. Информационные объекты класса – подпрограммы
- •12.1. Подпрограммы типа procedure
- •12.1.1. Пример оформления подпрограммы-процедуры
- •12.2. Подпрограммы класса function
- •12.2.1.Пример оформления подпрограммы-функции
- •12.3. Процедурные языки программирования
- •12.4. Библиотечные модули Unit
- •§13. Динамическое распределение оперативной памяти эвм
- •13.1. Программа использующая динамические переменные
- •§14. Переменные типа record
- •§15. Внешняя память эвм. Работа с файлами
- •15.1. Процедурный язык обработки файлов
- •15.2.Программа “ Жизненный путь файла “
- •15.3. Текстовые файлы
- •§16. Элементы объектно-ориентированного программирования
- •Основная рекомендуемая литература.
11.4. Пример построения фрагмента графика функции
Исходные данные:
Функция заданна параметрически:
x=tsin(t)
y=t0.5cos(t),
Диапазон изменения свободного параметра t: ta t tb ,
Размеры и местоположение прямоугольного фрагмента экрана (окна), в котором следует разместить график функции (задаются в пикселях):
Lx - ширина (горизонтальный размер окна),
Ly – высота (вертикальный размер окна),
X0, Y0 – координаты верхнего левого угла окна,
График выполняется в виде ломанной линии состоящей из (n-1)–ого отрезка. Цвет графика – красный, линия тонкая. Фон рабочего окна ветло-серый.
Алгоритм (блок-схема) программы.
Исходные данные (ta , tb , Lx , Ly , X0, Y0 , n) задаем программно, т.е. путем присваивания соответствующим идентификаторам явных констант.
Область задания графика, т.е. интервал изменения свободного параметра ta t tb покрываем равномерной сеткой точек { ti }, i=1, 2,…n: ti=ta+h(i-1), где h=( tb - ta )/(n-1) –шаг сетки.
Для каждого значения параметра ti вычисляем значения xi=tisin(ti) и yi=ti0.5cos(ti) и находим из них минимальные и максимальные Xmin, Xmax, Ymin, Ymax.
Вычисляем коэффициенты пересчета физических координат в пиксельные для каждой из декартовых координат kX=Lx/( Xmax- Xmax) и kY=Ly/(Yma- Ymin) и выбираем из них меньший K=min(kX, kY ), который и будем использовать для последующих вычислений. Параметрический способ описания траекторий обычно подразумевает равнозначность обеих пространственных (декартовых) координат (x, y), а значит их масштабирование следует брать одинаковым kX= kY =K=min(kX, kY).
Назначаем (инициализируем) графический режим экрана монитора.
Рисуем прямоугольник светло-серого цвета, расположение которого полностью совпадает с выделенным для работы окном экрана.
Последовательно (в цикле) вычисляем координаты двух соседних точек на траектории, переводим их в пиксельные аналоги и используя стандартную процедуру строим очередной отрезок ломанной линии.
Переводим процессор в режим ожидания: команда READLN; ничего не читает, но ожидает нажатия клавиши ENTER.
Отключаем графический режим, т.е. переводим экран монитора в алфавитно-цифровой режим отображения информации.
Program N22;
Uses GRAPH; {подключить к программе библиотечный модуль GRAPH.TPU}
Var t, h, ta, tb, x1, x2, y1, y2, Xmin, Xmax, Ymin, Ymax, kx, ky, k: real;
N, I, Lx, Ly, x0, y0, ga, gb, xp1, yp1, xp2, yp2: integer;
Begin
{программное присвоение исходных данных}
ta:=2.3; tb:=16.9;
Lx:=300; Ly:=400; x0:=25; x0:=30;
N:=120;
{вычисление коэффициента пересчета из физических в пиксельные координаты}
h:=(tb-ta)/(n-1);
Xmin:=1e20; Xmax:=-1e20; {изначально задаемся заведомо невозможными
значениями искомых характеристик}
Ymin:=1e20; Ymax:=-1e20;
For i:=1 to n do
begin
t:=ta+h*(i-1); {t-значение параметра в i-ой точке сетки}
x1:=t*sin(t); y1:=sqrt(t)*cos(t);
if Xmin>x1 then Xmin:=x1; if Xmax<x1 then Xmax:=x1;
if Ymin>y1 then Ymin:=y1; if Ymax<y1 then Ymax:=y1;
end;
kx:=Lx/(Xmax-Xmin); ky:=Ly/(Ymax-Ymin);
if kx<ky then k:=kx else k:=ky;
{включаем грфический режим и строим изображения}
Ga:=0; InitGraph(ga, gb,’EGAVGA.BGI’);
SetFillStyle(0, LightGrey); Bar(x0, y0, x0+Lx, y0+Ly); {выделяем окно}
SetColor(red);
For i:=1 to n-1 do
begin
t:=ta+h*(i-1); {t-значение параметра в i-ой точке сетки}
x1:=t*sin(t); y1:=sqrt(t)*cos(t); {физические координаты точки}
xp1:=Round((x1-Xmin)*k); {пиксельные координаты этой же точки}
yp1:=Round((Ymax-y1)*k);
t:=ta+h*i; {t-значение параметра в (i+1)-ой точке сетки}
x2:=t*sin(t); y2:=sqrt(t)*cos(t);
xp2:=Round((x2-Xmin)*k); {пиксельные координаты этой же точки}
yp2:=Round((Ymax-y2)*k);
Line(x0+xp1, y0+yp1, x0+xp2, y0+yp2);
end;
READLN;
CloseGraph;
End.
Р езультат выполнения
программы: