Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Особенности и примеры использования массивов при разработке программ (Определение массива)

Содержание:

ВВЕДЕНИЕ

Актуальность выбранной темы обусловлена тем, что массивы очень широко используются при разработке различного рода приложений. Массивы являются распространенным и полезным способом сохранения многих различных частей связанных данных. Массивы полезны при создании отсортированных и неотсортированных списков данных, при сохранении таблиц данных и для выполнения многих других задач. С понятием «массив» приходится работать и при решении научно-технических и экономических задач, связанных с обработкой совокупностей большого количества значений.

Объект исследования: Массивы в программах

Предмет исследования: работа с массивами

Цель: рассмотреть работу с массивами на примере Телефонного справочника ООО «Данрайт».

Задачи:

Изучить определение массива.

Изучение характеристики ООО «Данрайт» и определение плана работ.

Рассмотреть работу с массивами на примере Телефонного справочника ООО «Данрайт».

Обобщить и систематизировать теоретический и практический материал по теме.

Глава 1. Определение массива

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

Свойства алгоритма:

1)Дискретность. Алгоритм должен представлять процесс решения задачи как последовательность выполнения простых действий (шагов, этапов).

2)Детерминированность (Однозначность). Каждое действие (шаг, этап) должно быть четким, однозначным, исключающим произвольное толкование и не оставляющим места для двусмысленности.

3)Результативность. Алгоритм должен приводить к решению задачи или сообщению, что задача решений не имеет за конечное число шагов.

4)Конечность. Каждое отдельное действие, как и весь алгоритм должны иметь возможность реального исполнения. Поэтому алгоритм имеет придел, т. е. конечен.

5)Массовость. Алгоритм разрабатывается в общем виде так, чтобы его можно было применять для класса задач, различающихся только исходными данными.

Алгоритмы бывают линейные, разветвляющиеся и циклические. Линейный алгоритм – это алгоритм, в котором действия выполняются только один раз и строго в том порядке, в котором они записаны.

Разветвляющийся алгоритм – это алгоритм, в котором то или иное действие выполняется после анализа условия.

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

Циклические алгоритмы используются для работы с массивами.

Массивом - называется упорядоченная последовательность величин одного типа. Массив характеризуется именем, размером и размерностью. Имена массивов образуются по тем же правилам, что и имена простых переменных. Размер массива определяет число элементов в массиве. Размерность массива – это число индексов, определяющих местоположение элементов в массиве. Индексы записываются после имени массива в скобках через запятую. Если размерность массива равна единице, то такой массив называют одномерным, если двум – двумерным.

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

Условный оператор IF условие THEN оператор [ELSE оператор] где IF, THEN, ELSE – ключевые слова «если» …, «то» … «иначе»; условие – логическое выражение. Работа оператора: Оператор IF проверяет условие, если логическое выражение принимает значение «истина», то выполняется оператор, следующий за THEN, затем управление передается следующей операторной строке. Если логическое выражение принимает значение «ложь», то выполняется оператор, следующий за оператором ELSE. Если в операторе IF опущена ветвь ELSE, то при значении логического выражения «ложь» управление передается следующей операторной строке.

Оператор цикла while имеет такую структуру:

while условие do оператор;

Это надо понимать так: пока истинно условие, стоящее между while и do, выполняется оператор после do, называемый телом цикла. Перед каждым заходом в цикл проверяется условие: если оно истинно, то выполняется оператор, если ложно, то автоматически осуществляется выход из цикла.

Если оператор в цикле состоит из нескольких операторов, то поместить их нужно в операторные скобки begin - end (сравните оператор цикла for). Не стоит также забывать, что сами операторы разделяются оператором "точка с запятой" (но перед закрывающим END в конце ставить её не обязательно).

while условие do

begin

оператор 1; оператор 2; оператор 3; ........... оператор N

end;

Cуществует и оператор цикла с параметром в Pascal он записывается так:

for i := N1 to N2 do оператор;

Всё, что находится между for и do, называется заголовком цикла, после do – телом цикла. Переменная i зазывается параметром цикла и имеет порядковый тип (целые числа, логический тип, символы, перечислимый и диапазонный тип). Слова for, to и do – это служебные слова Pascal, которые использовать в своих программах для обозначения переменных нельзя. Индекс i, которым обозначаются номера действий в операторе цикла, изменяется от меньшего N1 к большему N2 (N1 ≤ N2). Первый номер N1 по значению не должен превышать второй N2, иначе цикл не запустится и ОПЕРАТОР ни разу не выполнится.

Оператор цикла этого типа действует так:

— сначала индекс i приравнивается N1 – минимальному возможному значению;

— потом проверяется, не превышает ли i второго номера N2 (i ≤ N2). Если это условие выполняется, то идем на следующий пункт, иначе (то есть при i > N1) – выходим из цикла;

— выполняется ОПЕРАТОР в теле цикла;

— далее увеличивается i на 1, и повторяем со второго пункта (т.е. проверяем истинность условия i ≤ N2, выполняем оператор, увеличиваем i на 1, и т.д).

В роли начального значения N1 наиболее часто используют 1 или 0 (это зависит от задачи).

Объединяя массивы и циклы можно написать небольшое число операторов, которые обрабатывают большой объем данных. Выполнение тех же задач с использованием отдельных переменных может потребовать написания сотен операторов.

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

Массивы могут быть:·

  1. одномерными (одна строка – несколько столбцов);·
  2. двумерными (несколько строк – несколько столбцов).

Одномерные массивы

Каждому используемому в программе конкретному массиву должно быть дано свое имя. Это имя будем называть полной переменной, поскольку ее значение есть весь массив. Каждая компонента массива может быть явно обозначена путем указания имени массива, за которым следует селектор компоненты — взятый в квадратные скобки индекс, задающий правило вычисления номера нужной компоненты. Это отличие от привычной записи индекса в математике, когда он указывается справа в нижней позиции, объясняется необходимостью использования линейной записи программы, так что многоуровневая запись должна быть исключена. При ссылке на компоненты массива индекс записывается на одном уровне с именем и заключается в квадратные скобки. Таким образом, для ссылки на отдельные компоненты используется запись вида (имя массива) [<индекс>] которую будем называть частичной переменной (поскольку ее значением является не весь массив, а отдельная его компонента, номер которой задается индексом) — применительно к массивам она называется переменной с индексом. В нашем примере массив получит имя v, а ссылки на отдельные его компоненты производятся с помощью частичных переменных v[ 1], v[2], ..., v[1ОО]. В общем случае в качестве индекса может, быть использовано выражение, значение которого и определяет номер компоненты массива. При этом важно, что в индексное выражение могут входить переменные, так что при изменении их значений меняется и значение индекса, которое определяет номер компоненты массива. Таким образом, одна и та же переменная с индексом в процессе выполнения программы может обозначать различные компоненты массива. Тип значения индексного выражения называют типом индекса. Множество значений типа индекса должно быть перенумерованным множеством, тем самым определяя количество компонент и их упорядоченность. При задании регулярного типа кроме типа индекса необходимо задать тип компонент. Задание такого регулярного типа, как одномерный массив, т.е. вектор, имеет вид:

А: аrrау [(тип индекса)] оf <тип компонент>, где <тип компонент> — имя или задание типа.

Типовые алгоритмы обработки одномерных массивов

Тест.

Дано: Мама мыла раму

Результат: умар алым амаМ

Тест.

Дано: Мама мыла раму

Результат: умар алым амаМ

  • Заполнение, вывод элементов массива
  • Сумма, произведение элементов
  • Выбор по условию
  • Максимальный (минимальный) элемент
  • Вставка, удаление элементов

Типовой алгоритм

Программная реализация(Паскаль)

1

2

Заполнение массива

Program pr;

Const n=10;

Var a: array [1…n] of…;

I:integer;

Begin

For i:=1 to n do

Readln (a[i]);

Вывод в строку

For i=1 to n

Write(a[i]);

Сумма, произведение элементов

S:=0;P:=1;

For I:=1 to n

Begin

S:=s+a[i]);P:=p*a[i]);

End;

Выбор по условию

K:=0;S:=0;P:=1;

For i:=1 to n do

If{условие} then

Begin

K=k+l;s:=s+a[i];p:p*a[i];

End;

Максимальный (минимальный) элемент

Max:=a[1];min:=a[1];

For i:=1 to n do

Begin

If a[i]>max then max:=a[i];

If a[i]> min then min:=a[i];

End;

Вставка

For i:=n downto k do

a[i+1]:=a[i];

a[k]:=x;

Удаление

For i:=k to (n-1) do

a[i]:=a[i+1];

Типовые алгоритмы обработки строковых переменных

  • «Разобрать» число на цифры, поместив каждую цифру в ячейку массива.
  • «Разобрать» строку, поместив каждый символ в ячейку массива.
  • «Разобрать» предложение, поместив каждое слово в ячейку массива.

Типовой алгоритм

Программная реализация

«Разобрать» строки на буквы

Var a:array [1…10]of char;

Stroka: string;

I,n:integer;

Begin

Readln (stroka);

n:=length(stroka);

For i:=1 to n do a[i]:=copy(stroka,I,1);

End.

«Разобрать» число на цифры

Var a:array [1…10] of byte;

Stroka:string;

I,n,k:integer;

Begin

Readln (stroka);

n:=length(stroka);

For i:=1 to n do

Val(copy(stroka,I,1),a[i],k);

End.

«Разобрать» предложение на слова

Program pr;

Var a:array[1…10] of string

Stroka:string;

I,n,j,k:integer;

Begin

Readln (stroka);

n:=lengyh(stroka);

For i:=1 to n do

If copy(stroka,I,1)=’ ‘then k:=k+1;

K:=k+1;

J:=1;

For i:=1 to n do

If copy(stroka,I,1)=’ ‘then j:=j+1

Else a[j]:=a[j]+copy(stroka,I,1);

End.

Сортировка методом «Пузырька»

Дан массив:

5

8

4

9

3

Необходимо сортировать его в порядке возрастания.

1-й шаг.

5

8

4

9

3

5

4

8

9

3

5

4

8

9

3

5

4

8

3

9

2-й шаг.

4

5

8

3

9

4

5

8

3

9

4

5

3

8

9

3-й шаг.

4

5

3

8

9

4

3

5

8

9

4-й шаг.

3

4

5

8

9

Итого:

3

4

5

8

9

Паскаль:

For j:=n downto 2 do

For i:=1 to j-1 do

If a[i]>a[i+1] then

Begin

X:=a[i]; a[i]:=a[i+1]; a[i+1]:=x;

End;

Двумерные массивы

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

Для описания двумерных массивов используются те же способы, что и для одномерных массивов.

Таким образом, для создания двумерного целочисленного массива размерностью 5×7 (5 строк, 7 столбцов) необходимо записать:

Способ 1
Type mas=array[1..5,1..7] of integer;

Способ 2
Var mas:array[1..5,1..7] of integer;

Для последовательного перебора всех элементов двумерного массива необходимо использовать вложенный цикл:

For i:=1 to 5 do  {перебор строк матрицы}

For j:=1 to 7 do  {перебор столбцов (ячеек) в строке}

Т.е. значение индекса строки (i) увеличится только в том случае, если индекс столбца (j) дойдет до своего конечного значения (в примере j = 7).При такой организации перебора элементов массива процесс перебора будет проходить по следующей схеме:


11


12


13


14


15


16


17


21


22


23


24


25


26


27


31


32


33


34


35


36


37


41


42


43


44


45


46


47


51


52


53


54


55


56


57

Процесс перебора элементов двумерного массива:

Ход выполнения:


i = 


j=


Условие перехода на следующую строку j=7


Обрабатываемый элемент


Шаг 1


1


1


нет


Mas[1,1]


Шаг 2


1


2


нет


Mas[1,2]


Шаг 3


1


3


нет


Mas[1,3]


Шаг 4


1


4


нет


Mas[1,4]


Шаг 5


1


5


нет


Mas[1,5]


Шаг 6


1


6


нет


Mas[1,6]


Шаг 7


1


7


да


Mas[1,7]


Шаг 8


2


1


нет


Mas[2,1]


Шаг 9


2


2


нет


Mas[2,2]


Шаг 10


2


3


нет


Mas[2,3]







Для того чтобы вывести двумерный массив на экран в виде таблицы необходимо после вывода содержимого каждой строки предусмотреть переход на строку ниже:

For i:=1 to n do
Begin
    For j:=1 to n do
    Write(mas[i,j],’ ‘);
    Writeln;
End; 
Типовые алгоритмы обработки двумерных массивов

  • Обработка всего массива.
  • Обработка отдельно по строкам и столбцам.
  • Обработка относительно диагоналей.
  • Типовые алгоритмы обработки двумерного массива отдельно по столбцам

Типовой

алгоритм

Программная реализация(Паскаль)

Сумма

For j:=1 to m do

S[j]:=0;

For j:=1 to m do

For i:=1 to n do

S[j]:=S[j]+x[i,j];

For j:=1 to m do

Write(S[j]);

Произведение

For j:=1 to m do

P[j]:=1;

For j:=1 to m do

For i:=1 to n do

P[j]:=P[j]*x[i,j];

For j:=1 to m do

Write(P[j]);

Максимальный

(минимальный) элемент

For j:=1 to m do

Begin

Max[j]:=x[i,1];

Min[j]:=x[i,1];

End;

For j:=1 to m do

For i:=1 to n do

Begin

If x[i,j]>max[j] then max[j]:=x[i,j]

If x[i,j]<min[j] then min[j]:=x[i,j]

End;

Вывод максимума/минимума по столбцам

For j:=1 to m do

Write(max[j]);

Writeln;

For j:=1 to m do

Write(min[j]);

Выбор по условию

For j:=1 to m do

Rez[j]:=0

For j:=1 to m do

For i:=1 to n do

If {усл.} then {Rez[i]:=…};

For j:=1 to m do

Write(Rez[j]);

Типовые алгоритмы обработки двумерного массива относительно диагоналей

Главная диагональ. В таблице приведены типовые алгоритмы обработка элементов двумерного массива, расположенных НА, ВЫШЕ и НИЖЕ главной диагонали.

Типовой алгоритм

Программная реализация (Паскаль)

Сумма элементов, расположенных НА главной диагонали

s:=0;

for i:=1 to n do

s:=s+x[i,i];

Сумма элементов, расположенных ВЫШЕ главной диагонали

s:=0;

for i:=1 to n do

for j:=1 to n do

if i<j then s:=s+x[i,j];

Сумма элементов, расположенных НИЖЕ главной диагонали

s:=0;

for i:=1 to n do

for j:=1 to n do

if i>j then s:=s+x[i,j];

Побочная диагональ. В таблице приведены типовые алгоритмы обработка элементов двумерного массива, расположенных НА, ВЫШЕ и НИЖЕ побочной диагонали.

Типовой алгоритм

Программная реализация (Паскаль)

Сумма элементов, расположенных НА побочной диагонали

s:=0;

for i:=1 to n do

s:=s+x[i, n-i+1];

Сумма элементов, расположенных ВЫШЕ побочной диагонали

s:=0;

for i:=1 to n do

for j:=1 to n do

if (i<n-j+1) then

s:=s+x[i,j];

Сумма элементов, расположенных НИЖЕ побочной диагонали

s:=0;

for i:=1 to n do

for j:=1 to n do

if (i>n-j+1) then

s:=s+x[i,j];

Обработка квадратной матрицы относительно диагоналей (рациональный обход).

Задача: заполнить элементы квадратного массива "1" так, как показано на рисунке:

Ниже и на главной диагонали

Выше и на главной диагонали

Выше и на побочной диагонали

Ниже и на побочной диагонали

100000000

110000000

111000000

111100000

111110000

111111000

111111100

111111110

111111111

111111111

011111111

001111111

000111111

000011111

000001111

000000111

000000011

000000001

111111111

111111110

111111100

111111000

111110000

111100000

111000000

110000000

100000000

000000001

000000011

000000111

000001111

000011111

000111111

001111111

011111111

111111111

Программная реализация на Паскале:

for i:=1 to n do

for j:=1 to i do

x[i,j]:=1;

Программная реализация на Паскале:

for i:=1 to n do

for j:=i to n do

x[i,j]:=1;

Программная реализация на Паскале:

for i:=1 to n do

for j:=1 to (n-i+1) do

x[i,j]:=1;

Программная реализация на Паскале:

for i:=1 to n do

for j:=(n-i+1) to n do

x[i,j]:=1;

Глава 2. Структура ООО «Данрайт» 

Общество с ограниченной ответственностью «ДАНРАЙТ» было организовано 28 сентябряя 2010 года.

Основным направлением деятельности рассматриваемой организации является «Разработка компьютерного программного обеспечения».

ООО "ДАНРАЙТ" также ведет деятельность по направлениям:

  • Деятельность консультативная и работы в области компьютерных технологий Деятельность, связанная с использованием вычислительной техники и информационных технологий, прочая
  • Деятельность по обработке данных, предоставление услуг по размещению информации и связанная с этим деятельность
  • Деятельность по созданию и использованию баз данных и информационных ресурсов

Общество использует упрощённую систему налогообложения (УСН).

Структура управления ООО «ДАНРАЙТ» организована по традиционному принципу и является комбинацией линейной и функциональной управленческих систем.

Руководство текущей деятельностью ООО «ДАНРАЙТ» осуществляется генеральным директором общества, назначенным решением единственного участника Общества сроком на три года.

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

Общество с ограниченной ответственностью «ДАНРАЙТ» осуществляет:

  • разработку, модернизацию, тестирование и поддержку программного обеспечения;
  • изготовление, ремонт, обслуживание, монтаж и пусконаладка контрольно-измерительных приборов и автоматики во всех сферах их применения и реализации;
  • торговая деятельность;
  • погрузочно-разгрузочные и транспортно-экспедиционные работы и услуги.

Основными задачами Общества с ограниченной ответственностью

«ДАНРАЙТ» является продвижение услуг в другие регионы. Для достижения этой цели, ООО «ДАНРАЙТ» старается по возможности снизить себестоимость оказываемых услуг и работ, повысить их качество.

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

Планирование деятельности ООО «ДАНРАЙТ» включает комплексную разработку таких видов планирования, как: стратегическое, перспективное, текущее и оперативно-календарное. Данные виды планирования при разных задачах и содержании, тем не менее, обладают единством, которое выражается в их общей направленности. Во всех трех видах планирования соблюдается правило обоснования величины устанавливаемых плановых показателей технической характеристикой используемых средств, орудий и предметов труда, технологии и организации производства, а также расчетом экономической эффективности принимаемых плановых заданий.

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

Технико-экономическое планирование ООО «ДАНРАЙТ» организует и осуществляет как контроль производственно-хозяйственной деятельности Общества, так и его внутрипроизводственных звеньев. Оно включает:

  1. разработку перспективных и текущих планов предприятия и подразделений;
  2. определение объемов реализации услуг в плановом периоде;
  3. установление плановых размеров трудовых и материальных ресурсов, необходимых для выполнения плана;
  4. доведение плановых заданий по реализации услуг до исполнителей;

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

В ООО «ДАНРАЙТ» существует проблема использования лицензионного программного обучения. По договору с некоторыми клиентами, общество не может использовать нелицензионное ПО.

Кроме этого у ООО «ДАНРАЙТ» много клиентов и фирме необходимо запоминать их контакты.

Поэтому директор ООО «ДАНРАЙТ» Абрамов А.А. распрядился о написании собственного приложения Телефонный справочник. При этом его работа должна осуществляться как под Windows, так и под Dos.

Глава 3. Создание в ООО «Данрайт» программы работы с массивами «Телефонный справочник»

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

Массив позволяет сохранять и манипулировать многими элементами данных посредством единственной переменной.

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

Объединяя массивы и циклы можно написать небольшое число операторов, которые обрабатывают большой объем данных. Выполнение тех же задач с использованием отдельных переменных может потребовать написания сотен операторов.

Так для решения актуальной задачи для ООО «Данрайт» «Надежный телефонный справочник» сохранение и вывод данных через массивы являются универсальным способом при реализации.

По требованиям, представленным директором ООО «Данрайт», нужно написать программу, выполняющую следующие функции:

  • Создавать записи абонентов, каждый элемент записи должен содержать номер телефона, фамилию и адрес абонента;
  • Реализовать поиск абонента по адресу (улицы) проживания;
  • Вывод результата поиска на экран и в файл;

Средством реализации по заданию является язык программирования PASCAL. Для реализации выбрана среда программирования Borland Turbo Pascal Version 7.1

Программа реализована в среде разработки Borland Turbo Pascal Version 7.1 В VisualC++6.0 c использованием стандартного модуля CRT.

Файловая структура программы представлена ниже

Файл программы – Adres5.pas;

Файл хранения записей - Adress.dat;

Файл хранения результатов поиска абонентов – Find.txt

Для описания записи с указанными в задании параметрами, в разделе описания используемых типов, создан тип записи TDlgData, который включает три поля типа string:

Number – поле хранения номера телефона абонента;

Name - поле хранения имени абонента;

Street – поле хранения адреса (улицы) проживания абонента.

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

procedure LData – процедура листинга, вывода на экран всех имеющихся записей;

procedure XData – процедура поиска и отображения найденных записей на экран и в файл;

procedure WData – процедура создания новой записи в файл.

Описание процедуры LData

Задача процедуры состоит в построчном выводе элементов записей из файла Dress.dat на экран.

Assign(AdrR,'Adress.dat'); связываем переменную для считывания с файлом записей

Reset(AdrR); открываем связанный файл

writeln(' List racords');

writeln('Number of phone Abonent Name Street'); выводим на экран шапку поиска записей

цикл считывания и вывода на экран записи

while not Eof(AdrR) do

begin

read(AdrR,t);{считали запись}

writeln(' '+t.Number + ' ' + t.Name + ' ' + t.Street);{вывели запись}

Описание процедуры XData. Задача процедуры состоит в построчном поиске необходимой записи и выводе элементов записей из файла Dress.dat на экран и в файл Find.txt.

Writeln('Enter Street');

readln(S);{запрос параметра поиска}

writeln(' Finding racords');

writeln('Number of phone Abonent Name Street'); вывод шапки результатов поиска

Assign(AdrR,'Adress.dat');{связываемся с файлом хранения всех записей}

Reset(AdrR);

Assign(AdrS,'Find.txt'); {связываемся с файлом хранения найденных записей}

Rewrite(AdrS);{очищаем файл найденных записей}

цикл поэлементного поиска записей

while not Eof(AdrR) do

begin

read(AdrR,t);

{поиск нужной записи}

if t.Street= S then

begin

writeln(' '+t.Number + ' ' + t.Name + ' ' + t.Street);

write(AdrS,t.Number + ' ' + t.Name + ' ' + t.Street);

end;

Описание процедуры WData. Задача процедуры состоит в добавлении новых записей.

{запрос параметров добавления записи}

Writeln('Enter number phone');

readln(N);

Writeln('Enter abonent Name');

readln(Na);

Writeln('Enter Street');

readln(S);

{сохранение параметров в запись}

RData.Number := N;

RData.Name := Na;

RData.Street := S;

Assign(f,'Adress.dat');{связываемся с файлом хранения найденных записей}

Reset(f);

Seek(f,FileSize(f));{переходим в конец файла}

write(f,RData); {создаем запись в файле}

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

Элементы меню:

Константа элементов меню:

menu : array[1..4] of string=('[ Create record ]',

'[ Find record ]',

'[ List record ]',

'[ Exit ]');

Для отключения курсора использована вставка кода на ассемблере

asm mov ah,01;mov cl,$20;int $10;end;

Вывод меню на экран реализован в цикле:

for temp:=1 to 4 do writeln(menu[temp]); { // выводим меню}

repeat

{ // цикл идет..}

gotoxy(1,curchoice); textcolor(20); { // рисуем полоску}

textbackground(7); write(menu[curchoice]); {// выбора}

if keypressed then

case readkey of { // проверяем кнопки}

#72: if curchoice>1 then begin { // вниз, если можно}

textcolor(7);textbackground(0); {// стираем пред.}

{ // надпись}

gotoxy(1,curchoice);write(menu[curchoice]);dec(curchoice);

end;

#80: if curchoice<4 then begin { // вверх, если можно}

textcolor(7);textbackground(0);

gotoxy(1,curchoice);write(menu[curchoice]);inc(curchoice);

end;

#27: status:=4; { // escape}

{если нажат enter то вызываем соответствующую процедуру}

#13: case curchoice of

1: begin

WData; вызов процедуры WData

curchoice:=1;status:=128;textcolor(7);textbackground(0);

for temp:=1 to 4 do writeln(menu[temp]);

end;

2:begin

XData; вызов процедуры XData

curchoice:=1;status:=128;textcolor(7);textbackground(0);

for temp:=1 to 4 do writeln(menu[temp]);

end;

3:begin

LData; вызов процедуры LData

curchoice:=1;status:=128;textcolor(7);textbackground(0);

for temp:=1 to 4 do writeln(menu[temp]);

end;

4:exit; { // enter}

end;

end;

until status=4; { // ..пока не выбран последний}

{ // пункт/не нажат escape}

asm mov ah,01; mov cx,$0E0D; int $10; end;

textcolor(7); textbackground(0); {// ставим нормальный цвет}

Для начала работы программы нужно запустить файл adres5.exe. После запуска на экране появится меню программы (см. рис.1).

рис 1. Меню программы.

Меню содержит 4 пункта Create record – создание записи, Find record –поиск записи, List record – вывод записей на экран и Exit – завершение работы программы. Перемещать курсор по элементам меню можно при помощи кнопок «вверх»и «вниз»

При выборе пункта Create record запускается процедура WData и на экране выводятся указания для ввода параметров новых записей(см. рис.2).

рис 2. Функция создания записи.

При выборе пункта меню «Find record» запускается процедура XData – поиск записи и вывода результата поиска в файл и на экран. Для поиска записи необходимо ввести название улицы и нажать Enter(см. рис.3).

рис 3. Поиск записи.

При выборе пункта меню «List record» запускается процедура LData – вывод всех имеющихся записей на экран (см. рис.4).

рис 4. Вывод всех записей.

ЗАКЛЮЧЕНИЕ

В курсовой работе рассмотрены методы работы с массивами. Этот вопрос очень актуален, потому что в настоящее время размер обрабатываемых данных постоянно увеличивается.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1. Основы алгоритмизации и программирования: учеб. пособие / Т.А. Жданова, Ю.С. Бузыкова. – Хабаровск : Изд-во Тихоокеан. гос.ун-та, 2011. – 56 с. Режим доступа: http://pnu.edu.ru/media/filer_public/2013/02/25/book_basics.pdf.

2. Программирование и основы алгоритмизации: Для инженерных специальностей технических университетов и вузов. /А.Г. Аузяк, Ю.А. Богомолов, А.И. Маликов, Б.А. Старостин. Казань: Изд-во Казанского национального исследовательского технического ун-та - КАИ, 2013, 153 с. Режим доступа: http://au.kai.ru/documents/Auzyak_Progr_osn_alg_C_2013.pdf.

3. Основы алгоритмизации и программирования : учебное пособие / Г. Р. Кадырова. – Ульяновск : УлГТУ, 2014. – 95 с. . Режим доступа: http://venec.ulstu.ru/lib/disk/2014/137.pdf

4. Основы алгоритмизации и программирования. Курс лекций. Режим доступа: http://lib.ssga.ru/fulltext/UMK/исходные%20для%20Кацко/заменить%20полностью/Информатика/лекции/13%20Основы%20алгоритмизации%20и%20программирования.pdf

5. Белов П.М. Основы алгоритмизации в информационных системах: Учебн. Пособие.- Спб.: СЗТУ, 2003. – 85с. Режим доступа: http://www.ict.edu.ru/ft/005406/nwpi225.pdf

6. Основы алгоритмизации и программирования: Метод. указ. / Сост.: И.П. Рак, А.В. Терехов, А.В. Селезнев. Тамбов: Изд-во Тамб. гос. техн. ун-та. Режим доступа: http://www.ict.edu.ru/ft/004758/terehov.pdf.

7. Макаров В.Л. Программирование и основы алгоритмизации.: учебн. пособие.-Спб., СЗТУ, 2003, - 110с. Режим доступа: http://window.edu.ru/resource/126/25126/files/nwpi223.pdf