· Статистическими(традиционными) массивами, называются те массивы при объявлении которых в явном или косвенном виде указываются конкретные границы изменения каждого индекса.
Пример:
Const
A=3
K=2
Type
Mat = array[1..a,1..k]
Var
x: Array [3…10]
Y: mat
· Динамические массивы не содержат указания о границах изменения индексов
Пример:
SetLenght(da1,100) - такое обращение эквивалентно статическому
описаниювидаx: Array [0…99] of integer
Вопрос№24.
Длина и размер массива.
Длина и размер массива - это объем оперативной памяти в байтах, занятых элементами массива. Для определения этой характеристики обычно прибегают к функции SizeOf.
Каждый элемент массива занимает 8 байт. Аоскольку в массиве оъем объявлено 13 элементов, то для хранения их значений компилятор отведет 8х13=104 байта.
Размер одномерного статического массива совпадает с количеством его элементов. И для определения этой характеристики обычно прибегают к функции Length: Length (sa1) = 13
В языке Паскаль предусмотрены еще две функции - Low и High для определения минимального и максимального значения индекса одномерного и статического массиваю Например:
Low (sa1) = 3
High (sa1) = 15
Результат функции SizeOf(da1) иногда равен 4. Фактически, это объем памяти, занимаемый указателем da1 на соответсвующие данные. Функции Length выдает фактическое значение, равное текущему количеству элементов динамического массива, и пока обращение к процедуре SetLength еще не было, эта характеристика равна 0.
Для двумерного массива q размером nxm компилятор заводит n указателей. Первый из них имеет для q0 совпадающее с именем массива. Он является указателем на начало массива и одновременно на первую строку массива. Если минимальное значение первого индекса равно k, то указатель q[k] тоже "смотрит" на первую строку массива (т.е. q и q[k] - это два имение одного и того же указателя). Следующий указатель с именем q[k+1] "смотрит" на вторую строку массива и т.д.
Вопрос№25.
При решении сложных задач целесообразно разбивать их на более простые подзадачи. В языке Паскаль, предусмотрены средства, позволяющие оформлять вспомогательный алгоритм как подпрограмму. Использование подпрограмм позволяет сделать основную программу более наглядной, понятной, более короткой и эффективной. Оформление процедур.PROCEDURE имя (формальные параметры);раздел описанийBEGINраздел операторовEND;Вызывается процедура по имени:имя (фактические параметры);Вопрос№26.
Алгоритм
Алгоритм программирования на языке Pascal – это есть последовательность операторов Паскаль, с помощью которых мы пришли к решению задачи. Она выглядит так:
Program...; { Заголовок программы }
Uses...; { Подключение модулей } – если они есть
Label...; { Раздел объявления меток } – если они есть
Const...; { Раздел объявления констант } – если они есть
Type...; { Раздел объявления новых типов }– если они есть
Var...; { Раздел объявления переменных }– если они есть
Procedure...; { Описание своих процедур }– если они есть
Function...; { Описание своих функций }– если они есть
Begin { начало основной программы }
...;
{ Операторы }
...;
End.
Обязательной частью является лишь тело программы, которое начинается словом begin, а заканчивается словом end с точкой. Операторы в Паскале разделяются точкой запятой. Заголовок программы является хотя и необязательным, но желательным элементом и состоит из зарезервированного слова program и идентификатора - имени программы, за котором следует точка с запятой. Порядок объявлений и описаний не регламентируется.
Вопрос№27.
Следование-действие идёт друг за другом
Вопрос№28.
Выбор
Оператор выбора Паскаля позволяет выбрать одно из нескольких возможных продолжений программы. Параметром, по которому осуществляется выбор, служит ключ выбора – выражение любого порядкового типа.
Структура оператора выбора в Паскале такова:
Case <ключ_выбора> of
<список_выбора>
[else <оператор_иначе>] end
Здесь case, of, else, end – зарезервированные слова (случай, из, иначе, конец);
· <ключ_выбора> - выражение порядкового типа;
· <список_выбора> - одна или более конструкций вида:
o <константа_выбора>: <оператор>;
· <константа_выбора> - константа того же типа, что и выражение
o <ключ_выбора>;
<операторы> - произвольные операторы Паскаля.
Оператор выбора Паскаля работает следующим образом. Вначале вычисляется значение выражения <ключ_выбора>, а затем в последовательности <список_выбора> отыскивается константа, равная вычисленному значению. Выполняется оператор, который следует за найденной константой, после чего оператор выбора завершает работу. Если в списке выбора не будет найдена константа, соответствующая вычисленному значению ключа выбора, управление передается операторам, стоящим за словом else. Часть else <оператор_иначе> можно опустить, тогда при отсутствии в списке выбора нужной константы не будет выполнено никаких действий, и оператор выбора просто завершит свою работу.
Например, составим программу, которая по номеру дня недели выводит на экран его название:
Следует помнить, что все константы из списка выбора должны быть различны.
Любому из операторов списка выбора может предшествовать не одна, а несколько констант выбора, разделенных запятыми. Например, следующая программа при вводе одного из символов ‘ y’ или ‘ Y’ выведет на экран «Да», а при вводе ‘ n’ или ‘ N’ – слово «Нет».
Вопрос№29.
Цикл
Цикл — организация многократного исполнения набора инструкций(операций). Также циклом может называться любая многократно исполняемая последовательность операций, организованная любым способом.
Эта последовательность как раз и является телом любого цикла.
Каждый раз при исполнении любого цикла в начале инициализируются его переменные, затем проверяется условие выхода, исполняется тело цикла и затем обновляется переменная на каждом новом круге выполнения цикла.
Какие бывают циклы? Сейчас мы рассмотрим все возможные варианты циклов по порядку.
1) Безусловные (бесконечные) циклы.
Такие циклы создаются с помощью конструкций, предназначенных для создания обычных (или условных) циклов. Для обеспечения бесконечного повторения проверка условия в таком цикле либо отсутствует, либо заменяется константным значением (while true do …).
2) Цикл с предусловием.
Цикл с предусловием — цикл, который выполняется пока истинно некоторое условие. Это условие проверяется до выполнения тела цикла, поэтому тело может быть не выполнено ни разу. Реализуется такой цикл оператором while. На языке Pascal цикл с предусловием имеет следующий вид:
while <условие> do
begin
<тело цикла>
end;
3) Цикл с постусловием.
Цикл с постусловием — цикл, в котором условие проверяется после выполнения тела цикла. Отсюда следует, что тело всегда выполняется хотя бы один раз. Реализует цикл оператор repeat..until.
repeat
<тело цикла>
until <условие>
Т.е цикл завершается, когда его условие выполнено.
4) Цикл с выходом из середины.
Цикл с выходом из середины — оформляется с помощью трёх конструкций: начала цикла, конца цикла и команды выхода из цикла. Внутри тела должна присутствовать команда выхода из цикла, при выполнении которой цикл заканчивается и управление передаётся на оператор, следующий за конструкцией конца цикла. Чтобы цикл выполнился более одного раза, команда выхода должна вызываться не безусловно, а только при выполнении условия выхода из цикла.
Но в языке pascal таких конструкций не предусмотрено, поэтому для выхода из середины цикла используется оператор безусловного перехода goto.Он позволяет изменить порядок выполнения команд.
Goto n;
1:write(x);
n:write(y);
Где n – метка, по которой определяется, в какую часть программы следует перейти при определённых условиях.
5) Цикл со счётчиком.
Цикл со счётчиком — цикл, в котором некоторая переменная изменяет своё значение от заданного начального значения до конечного значения с некоторым шагом, и для каждого значения этой переменной тело цикла выполняется один раз. Реализуется оператором for, в котором указывается счётчик (так называемая «переменная цикла»), требуемое количество проходов (или граничное значение счётчика) и, возможно, шаг, с которым изменяется счётчик.
n:= 100;
for i:= 1
to n do
begin
... тело цикла
end;
Цикл со счётчиком всегда можно записать как условный цикл, перед началом которого счётчику присваивается начальное значение, а условием выхода является достижение счётчиком конечного значения.
То есть в конструкции for сначала пишется произвольное предложение инициализации цикла, затем — условие продолжения и, наконец, выполняемая после каждого тела цикла некоторая операция.
6) Вложенные циклы.
Иногда необходимо поместить один цикл в другой. Такой цикл и называется вложенным. Внутри вложенного цикла в свою очередь может быть вложен еще один цикл, образуя следующий уровень вложенности и так далее. Количество уровней вложенности, как правило, не ограничивается.
begin
If K then D
Else
Begin
If R then M
Else P;
End;
End;
Здесь в условный оператор вложен еще один условный оператор, что создаёт вложенный цикл.
С вышеперечисленными циклами можно выполнять определённые операции, для усовершенствования их функционала.
Бывают ситуации, когда необходимо сделать досрочный выход из цикла по определённым причинам (ошибка в теле цикла и т.д.). Для решения таких проблем существует команда break, а её действие аналогично действию команды безусловного перехода (goto) на команду, непосредственно следующую за циклом, внутри которого эта команда находится. Этот оператор прерывает работу того цикла, в котором он непосредственно находится.
If S then V
Else
Break;
Вопрос№30.
Графические средства FP
Практически повторяет набор графических средств Turbo Pascal, Borland Pascal. Дополнительным в FP является выделение приложением двух окон. В главном окне реализуются взаимодействие между пользователем и приложением)ввод/вывод по операциям: read/readln, write/writeln, readkey/keypressed) В дополнительном окне выполняется построение фигур и отображение пояснительных записей с помощью процедур BCI.
Вопрос№31.
система координат
Рабочее поле графического окна имеет систему координат, начало которой находится в левом верхнем углу. Ось х направлена вправо, а ось у – вниз.
Единицы измерения – пикселы.
Вопрос№32.
Графический курсор.
Рабочее поле графического окна, расположенное под заголовком окна, снабжено системой координат, начало которой находится в левом верхнем углу. При этом ось у направлена вниз, а ось х – вправо. В качестве единиц измерения приняты пикселы экрана. Для хранения кода цветности каждого пиксела в видеопамяти выделяется до 24 двоичных разрядов.
Ряд графических процедур наряду с абсолютными координатами использует и относительные координаты, которые задаются в виде смещений (dx,dy) относительно позиции текущей точки CP (Current Point). При создании графического окна текущая точка перемещается в начало координат. Ее последующие перемещения зависят от выполняемых графических операций. Например, при построении отрезка прямой текущая точка переводится в конец отображаемого отрезка. При построении окружности положение текущей точки не изменяется. Текущую точку обычно называют графическим курсором, который в отличие от постоянно мигающего текстового курсора не изображается в графическом окне, чтобы не исказить выводимую картинку. Координаты текущей точки программа может опросить с помощью функции GetX и GetY.
Вопрос№33.