49850

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

Курсовая

Информатика, кибернетика и программирование

Бурное развитие вычислительной техники, потребность в эффективных средствах разработки программного обеспечения привели к появлению систем программирования, ориентированных на так называемую быструю разработку, среди которых можно выделить Borland Delphi и Microsoft Visual Basic. В основе систем быстрой разработки (RAD-систем, Rapid Application Development — среда быстрой разработки приложений)

Русский

2014-01-16

929.12 KB

41 чел.

Оглавление:

Введение    3

Программа №1   5

Блок-схема   5

Код программы  6

Тестовый пример  7

Программа №2   8

Блок-схема   9

Код программы  10

 Тестовый пример  12

Программа №3   13

Блок-схема   14

Код программы  15

Тестовые примеры  18

Список литературы   20


Введение.

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

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

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

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

Бурное развитие вычислительной техники, потребность в эффективных средствах разработки программного обеспечения привели к появлению систем программирования, ориентированных на так называемую "быструю разработку", среди которых можно выделить Borland Delphi и Microsoft Visual Basic. В основе систем быстрой разработки (RAD-систем, Rapid Application Development — среда быстрой разработки приложений) лежит технология визуального проектирования и событийного программирования, суть которой заключается в том, что среда разработки берет на себя большую часть рутинной работы, оставляя программисту работу по конструированию диалоговых окон и функций обработки событий.

Delphi — это среда быстрой разработки, в которой в качестве языка программирования используется язык Delphi. Язык Delphi — строго типизированный объектно-ориентированный язык, в основе которого  Object Pascal.

В данной курсовой работе я бы хотел рассмотреть 1 из элементов  Delphi – одномерный массив и некоторые способы его сортировки.

Массив - это множество однотипных элементов, объединённых общим именем и занимающих в компьютере определённую область памяти. Количество элементов в массиве всегда конечно. В общем случае массив - это структурированный тип данных, состоящий из фиксированного числа элементов, имеющих один и тот же тип. Название регулярный тип (или ряды) массивы получили за то, что в них объединены однотипные (логически однородные) элементы, упорядоченные (урегулированные) по индексам, определяющим положение каждого элемента в массиве. В качестве элементов массива можно использовать любой тип данных, поэтому вполне правомерно существование массивов записей, массивов указателей, массивов строк, массивов и т.д.Элементами массива могут быть данные любого типа, включая структурированные.Тип элементов массива называется базовым. Особенностью языка Паскаль является то, что число элементов массива фиксируется при описании и в процессе выполнения программы не меняется. Элементы, образующие массив, упорядочены таким образом, что каждому элементу соответствует совокупность номеров (индексов), определяющих его местоположение в общей последовательности. Доступ к каждому отдельному элементу осуществляется путем индексирования элементов массива. Индексы представляют собой выражения любого скалярного типа (чаще целого), кроме вещественного. Тип индекса определяет границы изменения значений индекса. Для описания массива предназначено словосочетание array of (массив из).

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

Существует много различных методов сортировки массивов, которые делятся на 3 типа: медленные, быстрые и самые быстрые. К медленным относятся такие методы сортировки как: пузырьковая, шейкер-сортировка (улучшенная пузырьковая),  сортировка методом выбора и сортировка методом вставок. К быстрым алгоритмам сортировки относятся такие сортировки как: сортировка методом Шелла, сортировка методом прочесывания. К самым быстрым относятся: сортировка слиянием, быстрая сортировка(quicksort).

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

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

Программа №1:

1.      Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-100,100]. Найти сумму элементов, значения которых  состоят из одной цифры.

2.      Найти количество тех  элементов,  значения которых положительны и кратны 3                                                                           и 5.

3.      Найти номер последней пары соседних элементов с одинаковыми знаками, произведение которых  меньше заданного числа.

Блок схема:


Код программы:

procedure TForm1.Button1Click(Sender: TObject);

var

A:array[0..100000] of integer;

i, N, N2,sum, max:integer;

x3,x5:real;

begin

N:=strtoint(edit1.Text);

i:=0;

sum:=0;

N2:=0;

max:=strtoint(edit4.text);

listbox1.Clear;

listbox2.Clear;

listbox3.Clear;

repeat

 A[i]:=(random(200)-100);

 x3:=frac(A[i]/3);

 x5:=frac(A[i]/5);

//////////////////////////////// 1 ///////////////////////////////

 if ((A[i]>-10) and (A[i]<10))

 then

   begin

   listbox2.Items.add('Элемент № '+inttostr(i+1)+'= re' +inttostr(A[i]));

   sum:=sum+A[i];

   end;

//////////////////////////////// 2 //////////////////////////////

 if (A[i]>0) and (x3=0) and (x5=0)

   then

     begin

      listbox3.Items.add('Элемент № '+inttostr(i+1)+'= ' +inttostr(A[i]));

      N2:=N2+1;

     end;

/////////////////////////////// 3 //////////////////////////////

 if (i>2) and (A[i]*A[i-1]>0) and (A[i]*A[i-1]<max)

 then

   begin

     Listbox4.clear;

     listbox4.Items.add('Пара: №'+ inttostr(i)+ ' и ' +inttostr(i+1) );

   end;

 listbox1.Items.add('Элемент № '+inttostr(i+1)+'= ' +inttostr(A[i]));

 i:=i+1;

until i>N-1;

 edit2.text:=inttostr(sum);

 edit3.Text:=inttostr(N2);

end;

end.


Программа №2

1.      Заменить предпоследний элемент массива  на максимальный по модулю.

2.      Умножить все нечетные элементы массива, кратные 3, на его номер.

3.      Из элементов массива P сформировать массив M той же размерности по правилу: первый  и последний элементы  равны нулю, каждый четвертый элемент по формуле Mi=4*abs(Pi ), а все остальные по формуле Mi=-Pi*(i+1).


Блок-схема:

Код программы:

procedure TForm1.Button2Click(Sender: TObject);

begin

memo1.clear;

memo2.clear;

memo3.Clear;

memo4.Clear;

i:=1;

max:=0;

n:=strtoint(edit1.Text);

repeat

 P[i]:=(random(200)-100);

 memo1.lines.add (inttostr(i) +' ' + inttostr(P[i]));

 if max<ABS(P[i])

   then

     max:=ABS(P[i]);

 i:=i+1;

until i>n;

button1.Enabled:=(true);

button4.Enabled:=(true);

button5.Enabled:=(true);

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

close;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

i:=1;

P[n-1]:=max;

repeat

memo2.lines.add (inttostr(i) +' ' + inttostr(P[i]));

i:=i+1;

until i>n;

end;

procedure TForm1.Button4Click(Sender: TObject);

begin

i:=1;

repeat

 if (frac(i/2)<>0) and (frac(i/3)=0)

   then

     begin

       P[i]:=P[i]*i;

       memo3.lines.add (inttostr(i) +'        ' + inttostr(P[i]));

     end

   else

    memo3.lines.add (inttostr(i) +' ' + inttostr(P[i]));

 i:=i+1;

until i>n;

end;

procedure TForm1.Button5Click(Sender: TObject);

begin

i:=1;

repeat

//////////////////////////////////////////////////////////////////

if (i=1) or (i=n)

 then

   M[i]:=0

 else

   if (frac(i/4)=0)

     then

       M[i]:=4*ABS(P[i])

     else

       M[i]:=P[i]*(i+1);

//////////////////////////////////////////////////////////////////

 memo4.lines.add (inttostr(i) +' ' + inttostr(M[i]));

 i:=i+1;

until i>n;

end;

end.


Программа №3

1.      Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-60,60]. Удалить из него все элементы, в которых последняя цифра нечетная.

2.      Вставить элемент со значением К после всех нечетных элементов, начинающихся на цифру К.

3.      Поменять местами три  последних отрицательных элемента с тремя первыми отрицательными элементами, сохраняя порядок их следования.


Блок схема:

Код для 1 и 3 части задания:

procedure TForm1.Button2Click(Sender: TObject);

var

i,j:integer;

begin

p:=0;

i:=0;

//n:=120-1;

while i<=n-1 do

 begin

   if (frac(A[i]/2) = 0)

     then i:=i+1

     else

      begin

       for j:=i to n-1 do

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

         n:=n-1;

       end;

 end;

for i:=0 to n-1 do

 begin

   listbox2.Items.Add(inttostr(i+1)+ '  ' + inttostr(a[i])) ;

 end;

end;

var

zn:array [0..5] of integer;

adr:array [0..5] of integer;

lC,rC,i,adr1,adr2:integer;

procedure TForm1.Button4Click(Sender: TObject);

begin

listbox4.Clear;

lc:=5;

rc:=2;

adr1:=0;

adr2:=3;

n:=strtoint(edit2.Text);

for i:=0 to n do

begin

if (lc>2) and (A[i]<0) then

 begin

  adr[adr1]:=i;

  zn[lc]:=A[i];

  lc:=lc-1;

  adr1:=adr1+1;

 end;

end;///konec For

for i:=high(A) downto low(A) do

begin

if (rc>-1) and (A[i]<0) then

 begin

  zn[rc]:=A[i];

  adr[adr2]:=i;

  rc:=rc-1;

  adr2:=adr2+1;

 end;

end;///konec For

for i:=0 to 5 do

begin

 A[adr[i]]:=zn[i];

end;

for i:=0 to n-1 do

begin

listbox4.items.add(inttostr(a[i]));

 end;

end;

end.

Код для 2 части задания:

function poiskK(a:real):real;

begin

 while ABS(a)>=10 do

  begin

   a:=a/10;

  end;

 poiskK:=ABS(int(a));

end;

procedure TForm1.Button1Click(Sender: TObject);

var

i,bA,eA,tmp:integer;

begin

randomize;

memo1.clear;

memo2.clear;

bA:=strtoint(edit3.Text);

eA:=strtoint(edit4.Text);

if bA>eA then

 begin

  tmp:=eA;

  eA:=bA;

  bA:=tmp;

 end;

n:=strtoint(edit1.Text);

setlength (A,n);

for i:=0 to n-1 do

 begin

 A[i]:=random(eA-bA)+(bA);

 memo1.Lines.Add(inttostr(i+1)+'   '+ inttostr(a[i]));

 end;

end;

procedure TForm1.Button2Click(Sender: TObject);

var

i,j:integer;

B:array of integer;

begin

memo2.Clear;

i:=0;

j:=0;

k:=strtoint(edit2.Text);

while i <=n-1 do

begin

setlength(B,j+2);

if (frac(A[i]/2) <> 0) and (poiskK(A[i])=k)

 then

  begin

   B[j]:=A[i];

   memo2.Lines.add(inttostr(j)+'    '+ inttostr(B[j]));

   j:=j+1;

   B[j]:=k;

   memo2.Lines.add(inttostr(j)+'________'+ inttostr(B[j]));

  end

 else

   begin

   B[j]:=A[i];

   memo2.lines.add(inttostr(j)+'    '+ inttostr(B[j]));

  end;

j:=j+1;

i:=i+1;

end;

end;

end.


Список литературы:

Джулиан Бакнелл «Фундаментальные алгоритмы и структуры данных в Delphi»


 

А также другие работы, которые могут Вас заинтересовать

46127. Характеристика этапов и содержания работы по формированию правильного произношения у детей(не выделяют точное колличество этапов,поэтому это не носит принципиального характера. 23.5 KB
  Логопед в ходе выполнения ребенком задания проверяет правильно ли он выбрал позу для произношения нужного звука. Поскольку это не всегда приводит к положительным результатам логопеду следует в таких случаях отвлечь внимание от звука переключив на другой объект. По мере овладения движением необходимым для реализации звука логопед переходит к отработке движений обязательных для других звуков. Этап формирования первичных произносительных умений и навыков Цель данного этапа заключается в том чтобы сформировать у ребенка первоначальные...
46128. Организация и содержание совместной работы логопеда и воспитателя (учителя) детского сада (школы) для детей с нарушениями речи 21 KB
  Организация и содержание совместной работы логопеда и воспитателя учителя детского сада школы для детей с нарушениями речи. Взаимодействие логопеда и воспитателя В задачу воспитателя входит выявление степени отставания детей в усвоении программного материала по всем видам учебной и игровой деятельности. Это необходимо для устранения пробелов в развитии детей и создания условий для успешного обучения в среде нормально развивающихся сверстников. С этой целью в первые две недели воспитатели определяют возможности детей в изобразительной...
46129. Индивидуальные логопедические занятия с детьми дошкольного возраста как эффективная форма коррекционной работы 22.5 KB
  Не менее важным является развитие фонематического слуха и фонематического восприятия. Активизация мыслительной деятельности детей развитие внимания и памяти необходимые условия для успешного и разностороннего обучения дошкольников. развитие памяти внимания мышления воображения обязательная составляющая индивидуального логопедического занятия. Целенаправленная работа по развитию мелкой моторики пальцев рук ускоряет созревание речевых областей истимулирует развитие речи ребенка позволяет быстрее исправить дефектное звукопроизношение.
46130. Фронтальные логопедические занятия в условиях дошкольного образовательного учреждения компенсирующего вида (с логопедическими группами) 21 KB
  Обучение на занятиях основная форма коррекционновоспитательной работы с детьми имеющая важное значение для формирования коммуникативной функции речи и общей готовности к школе. Дети с нарушениями речи нередко характеризуются нарушением внимания пониженной познавательной активностью замкнутостью недостаточно сформированной игровой деятельностью и другими особенностями психического развития. На групповых занятиях логопед формирует умение войти в общий темп работы следовать общим инструкциям оценивать достижения партнера...
46131. Сигматизм. Определение, этиология, виды. Логопедические технологии устранения сигматизма у детей 40 KB
  Кончик языка упирается в нижние резцы передняя часть спинки языка выгнута. При таком укладе образуется узкий проход круглая щель между кончиком языка и передними верхними зубами. Вдоль языка по его средней линии образуется желобок. Для звука характерна сложная язычная артикуляция: он начинается со смычного элемента как при т при этом кончик языка опущен и касается нижних зубов.
46132. Вивчення властивостей альгінату натрію з метою використання його у технології десертної продукції молодіжного кафе "Граціо" 2.03 MB
  Створення такого підприємства харчування як кафе це крок вперед на шляху до гідного дозвілля молоді а отже і добробуту майбутньої нації 1. ОБГРУНТУВАННЯ ПРОЕКТУ КАФЕ 1. Маркетингове обґрунтування проекту кафе що проектується 1. Характеристика маркетингового середовища кафе що проектується Науково розроблена концепція аналізу та обліку вимог покупців вимог конкретного сегменту ринку розробка відповідно до виявлених вимог нового товару система організації його продажу включаючи заходи стимулювання та реклами а також система...
46133. Учебно-методический комплекс «Дискретная математика» 1.5 MB
  Множество элементами которого являются множества обычно называется классом или семейством. Обычно в конкретных рассуждениях элементы всех множеств берутся из некоторого одного достаточно широкого множества U своего для каждого случая которое называется универсальным множеством или универсумом. Множество X называется конечным если оно эквивалентно Jn при некоторомn. Число n называется количеством или числом элементов множества X.
46134. Практичне використання контролінгу в плануванні виробничої програми підприємства 636.46 KB
  Використання контролінгу в планування виробничої програми підприємства Організаційноекономічна характеристика підприємства Визначення пріоритетних напрямів розвитку підприємства
46135. Понятие, предмет и метод налогового права 26.5 KB
  Таким образом предметом налогового права является группа однородных отношений складывающихся между государством налогоплательщиками и иными лицами по поводу установления введения и взимания налогов. Однако применение в налоговом праве преимущественно императивного способа не исключает использования рекомендаций согласований и права выбора в поведении подчиненного субъектаналогоплательщика метод координации. С учетом вышеизложенного представляется возможным дать определение понятию налогового права.