Особенности и примеры использования массивов при разработке программ (Определение массива)
Содержание:
ВВЕДЕНИЕ
Актуальность выбранной темы обусловлена тем, что массивы очень широко используются при разработке различного рода приложений. Массивы являются распространенным и полезным способом сохранения многих различных частей связанных данных. Массивы полезны при создании отсортированных и неотсортированных списков данных, при сохранении таблиц данных и для выполнения многих других задач. С понятием «массив» приходится работать и при решении научно-технических и экономических задач, связанных с обработкой совокупностей большого количества значений.
Объект исследования: Массивы в программах
Предмет исследования: работа с массивами
Цель: рассмотреть работу с массивами на примере Телефонного справочника ООО «Данрайт».
Задачи:
Изучить определение массива.
Изучение характеристики ООО «Данрайт» и определение плана работ.
Рассмотреть работу с массивами на примере Телефонного справочника ООО «Данрайт».
Обобщить и систематизировать теоретический и практический материал по теме.
Глава 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 (это зависит от задачи).
Объединяя массивы и циклы можно написать небольшое число операторов, которые обрабатывают большой объем данных. Выполнение тех же задач с использованием отдельных переменных может потребовать написания сотен операторов.
Таким образом, массив - это множество однотипных элементов, объединённых общим именем и занимающих в компьютере определённую область памяти. Количество элементов в массиве всегда конечно. В общем случае массив - это структурированный тип данных, состоящий из фиксированного числа элементов, имеющих один и тот же тип. Массив представляет собой фиксированное количество упорядоченных однотипных компонент, снабженных индексами, т.е. является совокупностью конечного числа данных одного типа. В качестве элементов массива можно использовать любой тип данных, поэтому вполне правомерно существование массивов записей, массивов указателей, массивов строк, массивов и т.д.
Массивы могут быть:·
- одномерными (одна строка – несколько столбцов);·
- двумерными (несколько строк – несколько столбцов).
Одномерные массивы
Каждому используемому в программе конкретному массиву должно быть дано свое имя. Это имя будем называть полной переменной, поскольку ее значение есть весь массив. Каждая компонента массива может быть явно обозначена путем указания имени массива, за которым следует селектор компоненты — взятый в квадратные скобки индекс, задающий правило вычисления номера нужной компоненты. Это отличие от привычной записи индекса в математике, когда он указывается справа в нижней позиции, объясняется необходимостью использования линейной записи программы, так что многоуровневая запись должна быть исключена. При ссылке на компоненты массива индекс записывается на одном уровне с именем и заключается в квадратные скобки. Таким образом, для ссылки на отдельные компоненты используется запись вида (имя массива) [<индекс>] которую будем называть частичной переменной (поскольку ее значением является не весь массив, а отдельная его компонента, номер которой задается индексом) — применительно к массивам она называется переменной с индексом. В нашем примере массив получит имя 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).При такой организации перебора элементов массива процесс перебора будет проходить по следующей схеме:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Процесс перебора элементов двумерного массива:
Ход выполнения:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Для того чтобы вывести двумерный массив на экран в виде таблицы необходимо после вывода содержимого каждой строки предусмотреть переход на строку ниже:
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 года.
Основным направлением деятельности рассматриваемой организации является «Разработка компьютерного программного обеспечения».
ООО "ДАНРАЙТ" также ведет деятельность по направлениям:
- Деятельность консультативная и работы в области компьютерных технологий Деятельность, связанная с использованием вычислительной техники и информационных технологий, прочая
- Деятельность по обработке данных, предоставление услуг по размещению информации и связанная с этим деятельность
- Деятельность по созданию и использованию баз данных и информационных ресурсов
Общество использует упрощённую систему налогообложения (УСН).
Структура управления ООО «ДАНРАЙТ» организована по традиционному принципу и является комбинацией линейной и функциональной управленческих систем.
Руководство текущей деятельностью ООО «ДАНРАЙТ» осуществляется генеральным директором общества, назначенным решением единственного участника Общества сроком на три года.
Важным преимуществом работы организации является широкий ассортимент услуг, наличие достаточного количества квалифицированного персонала и возможность выполнения работ в короткие сроки.
Общество с ограниченной ответственностью «ДАНРАЙТ» осуществляет:
- разработку, модернизацию, тестирование и поддержку программного обеспечения;
- изготовление, ремонт, обслуживание, монтаж и пусконаладка контрольно-измерительных приборов и автоматики во всех сферах их применения и реализации;
- торговая деятельность;
- погрузочно-разгрузочные и транспортно-экспедиционные работы и услуги.
Основными задачами Общества с ограниченной ответственностью
«ДАНРАЙТ» является продвижение услуг в другие регионы. Для достижения этой цели, ООО «ДАНРАЙТ» старается по возможности снизить себестоимость оказываемых услуг и работ, повысить их качество.
Общество осуществляет учёт результатов работ, ведет оперативный, бухгалтерский и статистический учёт по нормам, действующим в Российской Федерации. Финансовый год Общества совпадает с календарным годом.
Планирование деятельности ООО «ДАНРАЙТ» включает комплексную разработку таких видов планирования, как: стратегическое, перспективное, текущее и оперативно-календарное. Данные виды планирования при разных задачах и содержании, тем не менее, обладают единством, которое выражается в их общей направленности. Во всех трех видах планирования соблюдается правило обоснования величины устанавливаемых плановых показателей технической характеристикой используемых средств, орудий и предметов труда, технологии и организации производства, а также расчетом экономической эффективности принимаемых плановых заданий.
Внутрифирменное планирование производства представляет собой исходную и важную стадию управления всей организацией как системой управления, которая во многом определяет конечный результат ее функционирования.
Технико-экономическое планирование ООО «ДАНРАЙТ» организует и осуществляет как контроль производственно-хозяйственной деятельности Общества, так и его внутрипроизводственных звеньев. Оно включает:
- разработку перспективных и текущих планов предприятия и подразделений;
- определение объемов реализации услуг в плановом периоде;
- установление плановых размеров трудовых и материальных ресурсов, необходимых для выполнения плана;
- доведение плановых заданий по реализации услуг до исполнителей;
организацию систематического контроля, за ходом выполнения всех показателей производственно-хозяйственной деятельности.
В ООО «ДАНРАЙТ» существует проблема использования лицензионного программного обучения. По договору с некоторыми клиентами, общество не может использовать нелицензионное ПО.
Кроме этого у ООО «ДАНРАЙТ» много клиентов и фирме необходимо запоминать их контакты.
Поэтому директор ООО «ДАНРАЙТ» Абрамов А.А. распрядился о написании собственного приложения Телефонный справочник. При этом его работа должна осуществляться как под 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
- Моделирование предметной области «Движение транспортных средств по городу» с помощью UML
- Разработка конфигурации «Управление персоналом» в среде 1С:Предприятие 8.3 .
- Роль мотивации в поведении организации ( Мотивация как функция менеджмента)
- Выбор стиля руководства в организации (Понятие и особенности эффективного руководителя)
- Нравственное (гражданское, валеологическое, эстетическое, экологическое и т.д.)
- Реклама как сигнал и как информация(Реклама как сигнал и как информация в системе маркетинговых коммуникаций)
- Понятие и границы суверенитета государства (Возникновение и развитие идеи суверенитета)
- Технологии создания управленческих команд (Технологии создания управленческих команд)
- Роль мотивации в поведении организации (ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ОЦЕНКИ РОЛИ МОТИВАЦИИ В ПОВЕДЕНИИ ОРГАНИЗАЦИИ)
- Организационная культура, ее роль в современных организациях (Организационная характеристика гостиницы «Космос»)
- Проектирование организации ( Проектирование организаций. Современные тенденции в развитии организаций)
- Разработка конфигурации «Управление персоналом» в среде 1С: Предприятие