Статические и динамические массивы

Статические и динамические массивы

· Статистическими(традиционными) массивами, называются те массивы при объявлении которых в явном или косвенном виде указываются конкретные границы изменения каждого индекса.

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 и идентификатора — имени программы, за котором следует точка с запятой. Порядок объявлений и описаний не регламентируется.

Следование-действие идёт друг за другом

Вопрос№28.

Оператор выбора Паскаля позволяет выбрать одно из нескольких возможных продолжений программы. Параметром, по которому осуществляется выбор, служит ключ выбора – выражение любого порядкового типа.

Структура оператора выбора в Паскале такова:

Case of

[else ] end

Здесьcase, of, else, end – зарезервированные слова (случай, из, иначе, конец);

· — выражение порядкового типа;

· — одна или более конструкций вида:

· — константа того же типа, что и выражение

— произвольные операторы Паскаля.

Оператор выбора Паскаля работает следующим образом. Вначале вычисляется значение выражения , а затем в последовательности отыскивается константа, равная вычисленному значению. Выполняется оператор, который следует за найденной константой, после чего оператор выбора завершает работу. Если в списке выбора не будет найдена константа, соответствующая вычисленному значению ключа выбора, управление передается операторам, стоящим за словом else. Часть else можно опустить, тогда при отсутствии в списке выбора нужной константы не будет выполнено никаких действий, и оператор выбора просто завершит свою работу.

Например, составим программу, которая по номеру дня недели выводит на экран его название:

Следует помнить, что все константы из списка выбора должны быть различны.

Любому из операторов списка выбора может предшествовать не одна, а несколько констант выбора, разделенных запятыми. Например, следующая программа при вводе одного из символов ‘ y’ или ‘ Y’ выведет на экран «Да», а при вводе ‘ n’ или ‘ N’ – слово «Нет».

Читайте также:  Что выбрать бмв или мерседес

Вопрос№29.

Цикл

Цикл — организация многократного исполнения набора инструкций(операций). Также циклом может называться любая многократно исполняемая последовательность операций, организованная любым способом.

Эта последовательность как раз и является телом любого цикла.

Каждый раз при исполнении любого цикла в начале инициализируются его переменные, затем проверяется условие выхода, исполняется тело цикла и затем обновляется переменная на каждом новом круге выполнения цикла.

Какие бывают циклы? Сейчас мы рассмотрим все возможные варианты циклов по порядку.

1) Безусловные (бесконечные) циклы.

Такие циклы создаются с помощью конструкций, предназначенных для создания обычных (или условных) циклов. Для обеспечения бесконечного повторения проверка условия в таком цикле либо отсутствует, либо заменяется константным значением (while true do …).

2) Цикл с предусловием.

Цикл с предусловием — цикл, который выполняется пока истинно некоторое условие. Это условие проверяется до выполнения тела цикла, поэтому тело может быть не выполнено ни разу. Реализуется такой цикл оператором while. На языке Pascal цикл с предусловием имеет следующий вид:

3) Цикл с постусловием.

Цикл с постусловием — цикл, в котором условие проверяется после выполнения тела цикла. Отсюда следует, что тело всегда выполняется хотя бы один раз. Реализует цикл оператор repeat..until.

Т.е цикл завершается, когда его условие выполнено.

4) Цикл с выходом из середины.

Цикл с выходом из середины — оформляется с помощью трёх конструкций: начала цикла, конца цикла и команды выхода из цикла. Внутри тела должна присутствовать команда выхода из цикла, при выполнении которой цикл заканчивается и управление передаётся на оператор, следующий за конструкцией конца цикла. Чтобы цикл выполнился более одного раза, команда выхода должна вызываться не безусловно, а только при выполнении условия выхода из цикла.

Но в языке pascal таких конструкций не предусмотрено, поэтому для выхода из середины цикла используется оператор безусловного перехода goto.Он позволяет изменить порядок выполнения команд.

Где n – метка, по которой определяется, в какую часть программы следует перейти при определённых условиях.

5) Цикл со счётчиком.

Цикл со счётчиком — цикл, в котором некоторая переменная изменяет своё значение от заданного начального значения до конечного значения с некоторым шагом, и для каждого значения этой переменной тело цикла выполняется один раз. Реализуется оператором for, в котором указывается счётчик (так называемая «переменная цикла»), требуемое количество проходов (или граничное значение счётчика) и, возможно, шаг, с которым изменяется счётчик.

Цикл со счётчиком всегда можно записать как условный цикл, перед началом которого счётчику присваивается начальное значение, а условием выхода является достижение счётчиком конечного значения.

То есть в конструкции for сначала пишется произвольное предложение инициализации цикла, затем — условие продолжения и, наконец, выполняемая после каждого тела цикла некоторая операция.

6) Вложенные циклы.

Иногда необходимо поместить один цикл в другой. Такой цикл и называется вложенным. Внутри вложенного цикла в свою очередь может быть вложен еще один цикл, образуя следующий уровень вложенности и так далее. Количество уровней вложенности, как правило, не ограничивается.

Здесь в условный оператор вложен еще один условный оператор, что создаёт вложенный цикл.

С вышеперечисленными циклами можно выполнять определённые операции, для усовершенствования их функционала.

Бывают ситуации, когда необходимо сделать досрочный выход из цикла по определённым причинам (ошибка в теле цикла и т.д.). Для решения таких проблем существует команда break, а её действие аналогично действию команды безусловного перехода (goto) на команду, непосредственно следующую за циклом, внутри которого эта команда находится. Этот оператор прерывает работу того цикла, в котором он непосредственно находится.

Вопрос№30.

Графические средства FP

Практически повторяет набор графических средств Turbo Pascal, Borland Pascal. Дополнительным в FP является выделение приложением двух окон. В главном окне реализуются взаимодействие между пользователем и приложением )ввод/вывод по операциям: read/readln, write/writeln, readkey/keypressed) В дополнительном окне выполняется построение фигур и отображение пояснительных записей с помощью процедур BCI.

Вопрос№31.

Рабочее поле графического окна имеет систему координат, начало которой находится в левом верхнем углу. Ось х направлена вправо, а ось у – вниз.

Единицы измерения – пикселы.

Вопрос№32.

Графический курсор.

Рабочее поле графического окна, расположенное под заголовком окна, снабжено системой координат, начало которой находится в левом верхнем углу. При этом ось у направлена вниз, а ось х – вправо. В качестве единиц измерения приняты пикселы экрана. Для хранения кода цветности каждого пиксела в видеопамяти выделяется до 24 двоичных разрядов.

Читайте также:  Прохождение игры горький 17

Ряд графических процедур наряду с абсолютными координатами использует и относительные координаты, которые задаются в виде смещений (dx,dy) относительно позиции текущей точки CP (Current Point). При создании графического окна текущая точка перемещается в начало координат. Ее последующие перемещения зависят от выполняемых графических операций. Например, при построении отрезка прямой текущая точка переводится в конец отображаемого отрезка. При построении окружности положение текущей точки не изменяется. Текущую точку обычно называют графическим курсором, который в отличие от постоянно мигающего текстового курсора не изображается в графическом окне, чтобы не исказить выводимую картинку. Координаты текущей точки программа может опросить с помощью функции GetX и GetY.

Массив— это набор элементов определенного типа, каждый из которых имеет свой порядковый номер, называемый индексом. Различают массивы статические и динамические.

Границы статического массива устанавливаются на этапе разработки и могут изменяться только в новой версии программы.

Динамические массивы изменяют свои границы в ходе выполнения программы.

Статические массивы нельзя определить локально внутри процедуры, а только глобально или для контейнера.

[Static| Public| Dim] Имя_массива([Нижн_предел To] Верхн_предел) [As Тип_данных]

Динамический массив создается в два этапа. Сначала массив определяют в секции (General) (Declarations) контейнера (Form, Module) без указания размера. Затем с помощью оператора ReDim устанавливают фактический размер массива:

Синтаксис оператора ReDim:

ReDim [Preserve] Имя_массива(Границы) [As Тип_данных]

В отличие от Dim оператор ReDim используется только в процедурах. При этом тип данных указывать не обязательно, особенно если он уже определен оператором Dim. Использование ключевого слова Preserveпозволяет сохранить содержимое массива при изменении его размерности (однако, для многомерных массивов можно изменять только последнее измерение).

Dim a() As Variant

Private Sub Command1_Click()

ReDim Preserve a(5,10)

Область видимости динамических массивов (контейнерных, глобальных) определяется способом их объявления:

При необходимости определения фактического размера массива используются встроенные функции:

Lbound(массив, размерность) — нижняя граница.

Ubound(массив, размерность) — верхняя граница.

Пример ввода данных в динамический массив:

Dim ms() As String

Private Sub Command1_Click()

s = "Начало работы"

s = InputBox("введите фамилию")

ReDim Preserve ms(UBound(ms) + 1)

ReDim Preserve ms(UBound(ms) — 1)

For i = 0 To UBound(ms)

VISUAL BASIC позволяет использовать массив в качестве передаваемого в процедуру параметра и в качестве возвращаемого функцией значения.

Пример передачи массива в качестве параметра массива:

Public Sub srt(b() As Integer)

Dim i As Integer, f As Integer, k As Integer

For i = LBound(b) To UBound(b) — 1

If b(i) > b(i + 1) Then

k = b(i): b(i) = b(i + 1): b(i + 1) = k: f = 1

Loop While f = 1

Private Sub Command1_Click()

Dim a(1 To 5) As Integer

Dim i As Integer

a(i) = Val(InputBox("Введите число"))

Пример функции, возвращающей массив:

Public Function VV(ByVal n As Byte) As Byte()

Dim x(1 To n) As Byte, i As Byte

x(i) = Val(InputBox("Введите число"))

Private Sub Commnd1_Click()

Dim b() As Byte, i As Byte

B()=VV(10) ‘вызов функции

Файлы

Информация хранится на разнообразных носителях в файлах. Процесс работы с файлами состоит из нескольких этапов:

получение дескриптора файла;

чтение или запись файла;

Для связи системы или приложения с файлом имеется канал ввода/вывода. При открытии файлу ставится в соответствие канал с определенным номером. Допустимо использование номеров 1- 511. Каждый открытый файл имеет собственный канал, с помощью которого записываются или считываются данные. Следовательно, для ввода и вывода данных в файл имеет значение не имя файла, а номер канала. Операционная система должна иметь сведения о наличии свободных каналов, которые можно использовать для открытия файлов.

VISAUL BASIC имеет функцию FreeFile[(дапазонНомеров)], возвращающую номер свободного канала, который можно использовать для работы с файлом. Если свободных каналов нет (открыто максимально допустимое количество каналов), возникает ошибка выполнения. Необязательный параметр дапазонНомеров позволяет определить диапазон значений, из которых выбирается очередной свободный номер канала:

если (по умолчанию) — возвращается номер канала из диапазона 1-255,

если 1— то из диапазона 256 — 511.

В VISAUL BASIC реализованы три типа доступа к файлам:

последовательный (для обработки текстовых файлов);

произвольный (для обработки текста или структурированных двоичных файлов с записями фиксированной длины);

двоичный (для обработки произвольно структурированных файлов).

Последовательный файл состоит из текстовых строк ASCII- формата. Любая информация считывается или сохраняется в текстовом виде построчно. Последовательные файлы могут обрабатываться любым текстовым редактором.

Способ открытия файла с последовательным доступом (для чтения, записи или добавления) задается при вызове оператора открытия файла:

Open имяФайла For режим As дескрипторФайла

Читайте также:  Обзор новой камри 2018

Где: имяФайла определяет имя открываемого файла; это либo строка символов, заключенная в кавычки, либо выражение, значением которого является строка символов. Она представляет собой путь к открываемому файлу;

режим — это режим доступа, который может иметь значения:

Input (Ввод) — если файл открывается для чтения из него текстовых данных.

Output (Вывод)- если файл открывается для записи в него данных, начиная с первой позиции. Вся имевшаяся в нем старая информация будет стерта.

Append (Дополнение) — если файл открывается для записи в него данных не с первой, а с конечной позиции, так что вся имевшаяся в нем старая информация будет сохранена.

дескрипторФайла — целое число, по которому идентифицируется открываемый файл. Файловые номера используются при выполнении файловых операций в программе.

Все открытые файлы закрываются оператором:

Close [списокДескрипторов]

списокДескрипторов — это записанные через запятую дескрипторы файлов, которые должны быть закрыты. При отсутствии этого параметра будут закрыты все открытые файлы.

Для записи в файл используются операторы:

Print # ДескрипторФайла, [СписокЗначений]

Write # ДескрипторФайла, [СписокЗначений]

Где: СписокЗначений — это записанные через разделитель значения (или выражения).

Оба оператора записывают данные в файл текстовыми строками. Текстовая строка — это последовательность символов, которая заканчивается символом перехода на новую текстовую строку или символом возврата каретки (коды 13 и 10). Текстовый файл представляет собой последовательность текстовых строк.

Логика работы операторов Write и Print различна.

Разделителем в списке значений является запятая. Список значений просматривается последовательно, и элементы этого списка записываются в одну текстовую строку файла через запятую. Элементы типа String заключаются в кавычки. После записи последнего элемента записывается символ перехода на новую строку.

Например, напишем программу записи в текстовый файл следующих строк:

В каждой строке — фамилия и год рождения.

На рис. 68 в окне редактора кодов приведен текст процедуры создания текстового файла с использованием оператора Write.

Рис. 68. Вариант 1. Использование оператора Write

Элементы списка значений в этом операторе должны быть разделены либо точкой с запятой, либо запятой. От этого зависит, как они будут записаны в текстовую строку файла:

если (;) — значения будут записываться подряд, без промежутков между ними;

если (,) — значения будут записываться в 14-символьные зоны вывода.

Кроме того, в списке значений оператора могут присутствовать функции:

Spc(n) — для вставки n пробелов между значениями в текстовой строке;

Tab(n) — для указания номера n позиции для записи следующего значения.

На рис. 69 в окне редактора кодов приведен текст процедуры создания текстового файла с использованием оператора Print.

Для чтения из файла используются:

— оператор Input# ДескрипторФайла СписокПеременных

-оператор Line Input # ДескрипторФайла Переменная

— функция Input (ЧислоСимволов, дескрипторФайла)

Рис. 69. Вариант 2. Использование оператора Print

Список переменных — это записанные через запятую переменные любого типа. В каждой текстовой строке файла количество и тип значений должны совпадать с количеством и типом переменных в списке переменных.

Оператор Line Input

Переменная — это переменная типа String или Variant. Результатом работы этого оператора является присвоение Переменной значения — всей очередной текстовой строки файла.

ЧислоСимволов — это количество символов, которое надо прочесть из входного файла. Функция возвращает текст в виде символьной строки. Чаще всего эту функцию используют для одновременного чтения всего текстового файла и размещения его в текстовом поле экранной формы.

Рассмотрим примеры чтения созданного в предыдущем примере файла ГодР1.txt:


Аналогичный результат дает работа программы, использующей оператор Line Input:

Private Sub Command3_Click()

Dim ts As String

Open "c:ГодР1.txt" For Input As #1

Line Input #1, ts

Пример использования функции Input:

Private Sub Command3_Click()

Dim ks As Integer

Open "c:ГодР1.txt" For Input As #1

Print Input(ks, #1)

При обработке файлов также используются функции:EOF(дескрипторФайла) — возвращает значение True, если обнаружен конец файла и False — в противном случае.

LOF(дескрипторФайла) — возвращает размер текстового файла в символах.

Не нашли то, что искали? Воспользуйтесь поиском:

Лучшие изречения: Увлечёшься девушкой-вырастут хвосты, займёшься учебой-вырастут рога 10243 — | 7936 — или читать все.

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at pozdneev@cs.msu.su to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.

Ссылка на основную публикацию
Справка по форматированию steam
С помощью этих тегов разметки можно форматировать текст ваших сообщений, примерно как в HTML. Маркированный список Маркированный список Маркированный список...
Совместимость ssd с ноутбуками
Вопрос совместимости Многие пользователи интересуются совместимостью материнской платы и SSD, который они купили или хотят купить. Опыт показывает, что не...
Совместимость ремешков apple watch
Здесь приводятся общие инструкции, которые помогут Вам снять, поменять и застегнуть ремешок. В случае смены ремешка убедитесь, что размеры используемого...
Справочные материалы база данных
АРМ предназначено для комплексной автоматизации операций, связанных с первичным размещением и вторичным обращением ценных бумаг. Оно рассчитано на работу с...
Adblock detector