
- •Билет№2 Основные структуры данных
- •Билет№3 Архитектура персонального компьютера.
- •Программное обеспечение
- •Переменные
- •Описание переменных, констант и типов Раздел описания констант
- •Раздел описания переменных
- •Алгоритмический язык Турбо-Паскаль
- •Операторы ввода-вывода в языке Паскаль
- •Оператор ввода read
- •Оператор вывода write
- •Оператор цикла с предусловием в Паскале
- •Оператор цикла с постусловием в языке Паскаль
- •Оператор цикла с параметром в языке Паскаль
- •11.1. Алгоритм табулирования
- •Текстовые файлы
- •Типизированные файлы
- •Метод Ньютона
- •Постановка задачи
- •Метод простых итераций в общем виде
- •Метод Зейделя
- •Метод прогонки
- •Метод Ньютона
- •Метод кусочно-линейной аппроксимации
- •Увеличение точности
- •Увеличение точности
- •Увеличение точности
- •.Методы Рунге-Кутта.
Текстовые файлы
Текстовые файлы – файлы на диске, состоящие из символов ASCII. Для разделения строк используются символы «конец строки». Текстовые файлы являются файлами с последовательным доступом. В любой момент времени доступна только одна запись файла. Другие записи становятся доступными лишь в результате последовательного продвижения по файлу. Текстовые файлы внутренне разделены на строки, длины которых различны. Для разделения строк используется специальный маркер конца строки. Объявляются текстовые файлы переменной типа text. Обрабатывать их можно только последовательно и с помощью процедур и функций:
Readln (f , st )- чтение строки st из файла f и переход на начало следующей ; Writeln (f, st )- запись строки st в файл f и маркера конца строки ; Append (f ) - процедура, открывающая файл f для добавления строк в конец файла; Eoln (st )- логическая функция, результат выполнения которой равен TRUE, если достигнут маркер конца строки st.
Типизированные файлы
Типизированные файлы – это файлы, состоящие из нумерованной последовательности объектов (записей) любого типа. С такими файлами можно работать в режиме прямого доступа, при котором выполняется непосредственное об ращение к любой записи файла. Каждая запись файла имеет свой номер, начиная с 0 и т.д. Процедуры и функции обработки файлов:
1) Write и Read- записывают и читают информацию из указанного файла и перемещают указатель файла к сле дующей записи. 2) Seek (файловая переменная, номер записи); процедура перемещения указателя на запись файла с заданным номером. 3) Truncate (файловая переменная); процедура, усекающая файл по текущей позиции указа теля файла, т.е. все записи, находящиеся после указателя фай ла, удаляются. 4) Функция Filesize (файловая переменная); имеет тип Integer и определяет размер файла, т.е. число записей. 5) Функция Filepos (файловая переменная); имеет тип Integer и возвращает текущую позицию указателя файла.
Для добавления записей в конец файла используются процедуры:
Readln (a ); Seek (f, filesize (f)); Write (f, a);
Рассмотрим, для начала, Вывод данных в Паскале.
Для этой цели используются две стандартные процедуры: Writeln и Write.
Writeln (Список вывода) ; — стандартная процедура, которая используется для вывода данных на экран. Значения выводятся в порядке их записи в списке вывода. Затем курсор переходит в начало следующей строки.
Write (Список вывода) ; — стандартная процедура для вывода данных на экран без перевода курсора на новую строку.
Оператор |
Результат выполнения |
Writeln('Ответ: ' sqrt(5)); |
Ответ: 2.2360679775Е+00 □ <= положение курсора после вывода |
Writeln('Введите число'); |
Введите число □ <= положение курсора после вывода |
Write ('Х='); |
Х=□ <= положение курсора после вывода |
Write (X, 1 , 1 , Y) ; При Y=-3, Х=5 (X, Y описаны как Integer) |
511-З□ <= положение курсора после вывода |
Writeln (2 + 3); |
5 □ <= положение курсора после вывода |
Writeln('Дано: а= ' , а) ; Writeln('b=' , b); Writeln('а + b = ', a+b); При а=-34.6, b=126.93 (a, b описаны как Real) |
Дано: а=-3.4600000000Е+01 b=1.2693000000Е+02 а + b= 9.2330000000Е+01 □ <= положение курсора после вывода |
Writeln (0.2-0.01); |
1.9000000000Е-01 □ <= положение курсора после вывода |
Writeln; |
Переход на новую строку |
Рассмотрим, теперь, Ввод данных в Паскале.
Для ввода значений переменных с клавиатуры используют две стандартные процедуры ввода: Read и Readln.
РАЗЛИЧИЯ READ B READLN ВАЖНЫ ПРИ ЧТЕНИИ ИСХОДНЫХ ДАННЫХ ИЗ ФАЙЛА
При наличии в списке ввода нескольких идентификаторов соответствующие значения после запуска программы следует вводить через пробел(ы) или нажимая после каждого значения клавишу Enter. При этом соответствующей переменной будет присвоено очередное по порядку значение.
При выполнении оператора ввода программа приостанавливает работу, пока пользователем не будут введены необходимые значения переменных.
Билет№22
Любые идентификаторы, введенные внутри какого-либо блока (процедуры, функции) для описания переменных, констант, типов, процедур, называются локальными для данного блока. Такой блок вместе с вложенными в него модулями называют областью действия этих локальных переменных, констант, типов и процедур. Константы, переменные, типы, описанные в блоке program, называются глобальными. Казалось бы, проще иметь дело вообще только с глобальными переменными, описав их все в program. Но использование локальных переменных позволяет системе лучше оптимизировать программы, делать их более наглядными и уменьшает вероятность появления ошибок.
Функции. Решение многих задач является достаточно универсальным. Незачем каждый раз писать алгоритм для ее решения, если он уже был написан много лет назад и одобрен сообществом программистов. Такие алгоритмы оформляются в виде функций и модулей, а затем используются в программах, которые пишутся здесь и сейчас.
Функция или процедура может быть уже включена в сам язык программирования, а может входить в модуль, который требуется «подключить» к программе.
1. Арифметические функции
2. Функции преобразования типов
3. Функции для величин порядкового типа
Формальные параметры – это наименование переменных, через которые передается информация из программы в процедуру либо из процедуры в программу.
Билет№23
Процедуры.
В большинстве языков структурного программирования подпрограммы существуют только в виде функций. В Паскале же их два типа: процедуры и функции. Их заголовки выглядят соответственно так:
procedure имя (параметры);
function имя (параметры): тип результата;
Между функциями и процедурами есть существенное отличие. Значение, полученное в результате выполнения кода функции, жестко соотносится с ее именем путем присвоения этому имени конкретного значения. Тип, который может принять вычисляемое значение, указывается в заголовке функции (тип результата). И в теле основной программы функция вызывается только в том случае, если ее имя фигурирует в каком-либо выражении. В то время как процедура вызывается отдельно.
Параметр-значения.
Если в качестве формального параметра указана переменная, то такой параметр и есть параметр-значение. Примерами таких параметров служат параметры a, b и с в процедуре sq:
procedure sq((a, b, c: real; var x1, x2: real);
Для параметров-значений машина при вызове процедур производит следующие действия: выделяет место в памяти для каждого формального параметра, вычисляет значение фактического параметра и записывает его в ячейку, соответствующую формальному параметру.
Если фактический параметр есть имя переменной, например, r, то значение этой переменной пересылается в соответствующий формальный параметр, например, a. На этом всякая связь между a и r обрывается.
Параметры-переменные.
Если перед именем формального параметра стоит ключевое словоvar, то такой параметр есть параметр-переменная. Примерами таких параметров служат x1 и x2 в заголовке
procedure sq(a, b, c: real; var x1, x2: real);
Фактический параметр, соответствующий параметру-переменной, может быть только переменной (не константой и не выражением).
При вызове процедур (функций) параметры-переменные обрабатываются так: для формального параметра используется именно та ячейка, которая содержит соответствующий фактический параметр.
Пример. При вызове процедуры sq оператором sq(p, q, r, y, z) для переменных x1 и x2 используются непосредственно те ячейки, которые отведены для y и z. Поэтому оператор присваивания x1 := (-b + sqrt(d)) / (2 * a) засылает полученное значение в y.
Под формальные и фактические параметры-значения транслятор отводит разные области памяти. Поэтому результат выполнения процедуры может быть передан только через параметр-переменную.
Билет№24
Модуль (программирование) — функционально законченный фрагмент программы, оформленный в виде отдельного файла с исходным кодом или поименованной непрерывной её части.
Структура модулей
Структура модуля аналогична структуре программы, однако есть несколько существенных различий. Заголовок модуля начинается зарезервированным словом unit, за которым следует имя модуля (идентификатор) точно так же, как и в случае имени программы. Следующим элементом в модуле является ключевое слово interface. Оно обозначает начало интерфейсной секции модуля - части, доступной всем другим модулям или программам, в которых он используется. Программный модуль может использовать другие модули, для этого они определяются в операторе uses. Оператор uses (если он имеет место) может содержаться в двух местах. Во-первых он может следовать сразу после ключевого слова interface. В этом случае любые константы и типы данных, описанные в интерфейсной секции этих модулей, могут использоваться в любом описании в интерфейсной части данного модуля. Во-вторых, он может следовать немедленно за ключевым словом implementation. В этом случае все описания из этих модулей могут использоваться только в секции реализации.
Билет№25
Метод половинного деления
Его ещё называют методом дихотомии. Этот метод решения уравнений отличается от выше рассмотренных методов тем, что для него не требуется выполнения условия, что первая и вторая производная сохраняют знак на интервале [a, b]. Метод половинного деления сходится для любых непрерывных функций f(x) в том числе недифференцируемых.
Разделим
отрезок [a, b]
пополам точкой
.
Если
(что
практически наиболее вероятно), то
возможны два случая: либо f(x)
меняет знак на отрезке [a, c]
(Рис. 3.8), либо на отрезке [c, b]
(Рис. 3.9)
Рис. 3.8 |
Рис. 3.9 |
Выбирая в каждом случае тот отрезок, на котором функция меняет знак, и продолжая процесс половинного деления дальше, можно дойти до сколь угодно малого отрезка, содержащего корень уравнения.
Билет№26
Метод хорд и касательных (комбинированный)
Данный метод основан на построении схематического графика функции, определении интервалов его пересечения с осью абсцисс и последующим «сжатием» этого интервала при помощи строимых хорд и касательных к графику этой функции.
Надо отметить, что существуют также отдельно метод хорд (дает значение корня с недостатком) и метод касательных (с избытком). Однако преимущество комбинированного метода заключается в «двустороннем сжатии» рассматриваемого отрезка.
Рассмотрим следующий случай:
дана функция F(x) и построен ее график;
определена допустимая погрешность Q
н
а основании графика определен отрезок [a,b], на котором график функции пересекает ось абсцисс, следовательно, на этом отрезке
существует корень рассматриваемого многочлена. (обозначим его через A)
Дальнейший алгоритм сводится к следующим действиям:
строим касательную к графику функции в точке F(b)
вычисляем координату х пересечения касательной с осью абсцисс по формуле (3) и обозначаем ее через b’
строим к графику функции хорду, проходящую через точки F(a) и F(b).
Вычисляем точку пересечения хорды с осью абсцисс по формуле и обозначаем ее через a'.
Таким образом мы получаем новый отрезок [a’ , b’], который (по определениям хорды и касательной) по-прежнему содержит решение уравнения A.
Теперь принимаем отрезок [a’,b’] за новый отрезок [a,b] и повторяем шаги 1-4 до тех пор, пока разность F(b)-F(a) не станет меньше первоначально заложенной погрешности Q. Отметим также, что после этого рекомендуется в качестве искомого решения взять среднее арифметическое F(a) и F(b).
Билет№27
Численные методы решения алгебраических уравнений имеют самостоятельное значение для исследования статических моделей. Уравнение вида х = f(х) называют заданным в неявной форме, если неизвестная переменная х входит в обе части уравнения, а f — функция, не содержащая интегрирования, дифференцирования или запаздывания х.
Если решение уравнения х =f(x) существует и находится в области вещественных чисел, то оно может быть найдено по простой итерационной формуле