49850

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

Курсовая

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

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

Русский

2014-01-16

929.12 KB

39 чел.

Оглавление:

Введение    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»


 

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

30487. Краткие обзоры программных средств 85.5 KB
  В настоящее время на этапах разведки и разработки месторождений нефти и газа все более широкое применение получают компьютерные технологии комплексной интерпретации всей геолого-геофизической информации с целью построения цифровых геолого-промысловых моделей месторождений.
30488. Башкортостан в XIX веке 337.6 KB
  После вторжения наполеоновской армии намного расширяется привлечение башкир и казаков в ряды русских войск. Были и добровольцы. Среди них башкиры братья Абдулхалик и Назир Абдулвахитовы, юртовый старшина Абуталип Абдрахманов с сыном Сагитом
30489. Использование сетевых ресурсов в управлении крупными коммуникативными проектами 25.85 KB
  Деятельность отделов по СсО и рекламе, чаще всего, реализуется в форме проектов. Даже в не слишком сложных проектах возникают проблемы, которые проявляются в срыве сроков, превышении смет, конфликтах внутри команды проекта и др
30490. ОБЩИЕ ПОЛОЖЕНИЯ МЕТОДИКИ ГЕОЛОГИЧЕСКОЙ ИНТЕРПРЕТАЦИИ КОМПЛЕКСНЫХ ГЕОФИЗИЧЕСКИХ ДАННЫХ 807 KB
  Совокупность основных особенностей естественных геофизических полей, сейсмической волновой картины и геоэлектрического разреза составляет общую геофизическую характеристику каждого конкретного района. Другим информационным комплексом, используемым разведочной геофизикой, являются физические свойства горных пород.
30491. Физиология высшей нервной деятельности 26.62 KB
  Кора большого мозга и подкорковые образования являются высшими отделами центральной нервной системы теплокровных животных и человека. Они обеспечивают рефлекторные реакции, за счет которых осуществляются сложнейшие взаимодействия человека и животных с окружающей средой.
30492. Перспективы информатизации регионального управления 120.5 KB
  История и специфика отдельных европейских стран обуславливают крайнее разнообразие систем их государственного устройства и управления вообще и места в них регионального звена в частности и в особенности.
30493. Основные технико-технологические проблемы разведки, освоения и эксплуатации нефтегазовых месторождений 74 KB
  Чтобы управлять технологическими процессами представляющими собой различные этапы (ступени) эксплуатации нефтегазовых месторождений, необходимо сначала изучить закономерности их поведения, а затем на основе имеющихся данных, которые характеризуют различные свойства изучаемого объекта (нефтегазового месторождения)
30494. Органеллы цитоплазмы: пластиды, как специфические органеллы растительной клетки 42 KB
  Пластиды встречаются только у растений. В зависимости от окраски различают три типа пластид: хлоропласты - зеленого цвета; хромопласты - желтого, оранжевого, красного цветов и лейкопласты - бесцветные.
30495. Современные геофизические методы как средство изучения строения и свойств геологической среды 93.5 KB
  Современные геофизические методы служат основой создания многопараметровой базы данных, как основы математического моделирования технологических процессов в нефтегазодобыче.