- •Конспект лекций по курсу «Информатика» для студентов очной и заочной форм обучения.
- •Базовые положения
- •§.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. Элементы объектно-ориентированного программирования
- •Основная рекомендуемая литература.
6.9.4. Оператор цикла for downto
Синтаксис оператора:
FOR Iсчет := Iнач DOWNTO Iкон DO Опер ;
Отличие этого оператора от предыдущего только в том, что в процессе циклических вычислений значения счетчика цикла последовательно уменьшаются на единицу, начиная с большего Iнач до меньшего Iкон.
Пример: результат выполнения предыдущей программы не изменится, если использовать следующий оператор цикла
for ii:=N downto 1 do
6.9.5. Оператор цикла while
Синтаксис оператора:
WHILE Условие DO Оператор;
While - ключевое слово, за которым обязательно следует один или несколько пробелов: символов - разделителей,ref0001a.doc
Условие –логическое выражение, за которым также следует разделитель – пробел (пробелы),
DO – служебное слово-разделитель (избыточный синтаксис языка Pascal), за которым рекомендуется писать разделитель-пробел,
Оператор – любой исполнимый оператор, или последовательность операторов заключенная в операторные скобки Begin End.
Пример:
aa:=5; while aa<200 do aa:=aa*3;
Звуковая транскрипция: повторяй выполнение оператора, указанного после слова DO, до тех пор, пока результат сравнения aa<200 имеет логическую оценку TRUE!
Пояснение примера: в результате вычислений, которые будут повторены четыре раза, переменная «аа» будет последовательно принимать значения: 15, 45, 135 и 405 – итоговый результат.
Типичные ошибки при использовании
циклических операторов.
Преждевременное завершение описания:
оператор for i:=1 to 100 do; ничего не делает 100 раз, т.к. за словом-разделителем DO поставлен символ конца предложения.
2. Значение переменной-счетчика цикла принудительно и неразумно изменяется внутри тела цикла. Оператор for i:=1 to 5 do i:=3; будет выполняться не пять раз, а вечно, т.к. автоматическое увеличение счетчика повторений i перекрывается командой принудительного присвоения этой переменной числа три.
3. Переменные, входящие в логическое условие оператора WHILE, не изменяются внутри тела цикла, либо изменяются не верно. Например, следующий цикл
aa:=3; while aa<200 do begin a:=6; aa:=a*3 end;
будет выполняться вечно.
6.9.6. Программа вычисления длины дуги кривой
Опр. Кривой на плоскости называется множество геометрических точек, координаты которых (x,y) связаны непрерывной функциональной зависимостью.
Поскольку множество точек образующих непрерывную кривую линейно упорядочено, фрагмент (дуга) кривой может быть наделен свойством ориентированности, т.е. характеризоваться началом и концом.
Варианты задания (формального описания) дуг.
Явная функциональная зависимость одной декартовой координаты от другой: y=f(x) для x [xa,x b] (1)
или x=f(y) для y [ya, yb]
Явная функциональная зависимость одной полярной координаты от другой: r=f() для [a, b] (2)
или =f(r) для r [ra, rb],
например: r=(+5)2 или =Ln(r+1) (3)
Переход от полярных к декартовым координатам реализуется формулами: x=r Cos() y=r Sin(). Для приведенных примеров:
x=(+5)2 Cos() x=r Cos(Ln(r+1) ) (4)
y=(+5)2 Sin() y=r Sin(Ln(r+1) )
Параметрическая зависимость декартовых координат
x=f(t)
y=(t) для свободного параметра t [ta, tb], (5)
Примерами могут служить формулы (4), где свободным параметром являются и r .
Параметрическая зависимость полярных координат
r=f(t)
=(t) для свободного параметра t [ta, tb], (6)
например:
r=t et
=t+Lnt для t [0.1, 2.07], (7)
которую можно преобразовать к декартовой параметрической форме
x=t et Cos(t+Ln t)
y=tet Sin(t+Ln t) для t [0.1, 2.07]. (8)
О пр. Длиной непрерывной дуги называется предел длины вписанной в нее ломаной линии, когда количество звеньев (образующих отрезков) ломаной неограниченно увеличивается, а длина наибольшего звена стремиться к нулю (см. рис.1).
Рис.1. Геометрически построения, поясняющие алгоритм вычисления
длины дуги кривой заданной в декартовых координатах.
В приведенном определении длины кривой использовано абстрактная (математическая) операция предельного перехода, которая в реальных вычислениях, даже с помощью ЭВМ, является нереализуемой. Следовательно: все математические объекты, порождаемые операцией предельного перехода, для их обработки (вычисления) средствами ЭВМ должны быть заменены некими аналогами, т.е. упрощенными описаниями (моделями).
Опр. Оцифровкой математического объекта (МО) называется упрощенное описание МО в виде конечного, упорядоченного набора однотипных информационных объектов (чисел, отрезков, вычислимых функций и т.п.).
Диалектика: качественное свойство МО подменяется большим количеством упорядоченных простых элементов.
Вопросы точности соответствия МО и его цифровой модели рассматриваются в специальном разделе математики «Численные методы».
Оцифровка дуги кривой основана на введении системы упорядоченных точек {(x1, y1), (x2,y2), .., (xi, yi),... (xn,yn)} (от начала к концу дуги), которые принадлежат кривой и последовательно соединены прямолинейными отрезками. Длина дуги кривой оценивается величиной Sn равной сумме длин этих отрезков:. Длина отрезка от точки (xi, yi) до (xi+1, yi+1) вычисляется как гипотенуза соответствующего прямоугольного треугольника (на рис.1 это треугольник СYiYi+1), т.е
n-1
Sn= ∑√ (xi+1–xi)2 + (f(xi+1)–f(xi))2
i=1
Пример: вычислить длину дуги кривой y=xSin(x2+5)+x для a≤x≤b.
Для удобства вычислений, область определения обычно разбивается равномерной сеткой из N узлов: xi=a+∆x(i-1), где i=1,2,...n и ∆x=(b-a)/(n-1)
Исходными данными для программы являются величины: a, b, N.
Program DUGA;
Var a, b, S, dx, y1, y2, x1, x2: real; i, N: integer;
Begin
a:=1; b:=3; N:=10; {Программное, т.е. реализуемое операторами прямого
присвоения соответствующих констант, задание
исходных данных }
dx:=(b-a)/(N-1); {вычисление шага сетки узлов по Х }
s:=0; {очистка (обнуление содержимого) переменной S, в которой
будет накапливаться сумма длин отрезков }
for i:=1 to N-1 do {цикл перебора всех отрезков ломаной i-номер левой
точки обрабатываемого отрезка}
begin
x1:=a+dx*(i-1); y1:=x1*Sin(x1*x1+5)+x1; {x1 y1 – декартовые
координаты левого конца отрезка }
x2:=x1+dx; y2:=x2*Sin(x2*x2+5)+x2; {x2 y2 – декартовые
координаты правого конца отрезка }
s:=s+Sqrt(sqr(y2-y1)+dx*dx); {добавляем к S длину отрезка}
end;
writeln(N:5,' s=',s); {печать результата}
End.
Для оценки точности определения искомой длины дуги, воспользуемся приемом «Численного эксперимента», который широко применяется в инженерной практике и сводится к проведению серии вычислений одной и той же характеристики при разных значениях параметров влияющих на погрешность расчетов. В нашем случае этим параметром является количество узлов сетки N.
Результаты численных экспериментов для пяти значений параметра N при a=1 и b=3:
10 s= 1.17746052767470E+0001
40 s= 1.24628784903471E+0001
80 s= 1.24765592828335E+0001
320 s= 1.24807045137568E+0001
640 s= 1.24809088294569E+0001
Вывод: с точностью до трех значимых цифр искомая длина дуги оценивается числом 12.5 .