49850

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

Курсовая

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

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

Русский

2014-01-16

929.12 KB

43 чел.

Оглавление:

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


 

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

16585. СТРУКТУРА ЭКОСИСТЕМ 233.5 KB
  Лабораторная работа №3 СТРУКТУРА ЭКОСИСТЕМ 1.1. Понятие экосистемы Экосистема это любая совокупность взаимодействующих живых организмов и условий среды. Экосистемами являются например муравейник участок леса географический ландшафт или даже весь земной
16586. Определение органолептических свойств и жесткости воды 101.5 KB
  Лабораторная работа №4 Определение органолептических свойств и жесткости воды. 1.Понятие о жесткости воды. Жесткость воды зависит от присутствия в ней растворимых солей кальция в некоторых случаях солей магния и железа. Жесткая вода при кипячении образует накип
16587. ИОНИЗИРУЮЩИЕ ИЗЛУЧЕНИЯ И ОКРУЖАЮЩАЯ СРЕДА 131.5 KB
  Лабораторная работа №5 ИОНИЗИРУЮЩИЕ ИЗЛУЧЕНИЯ И ОКРУЖАЮЩАЯ СРЕДА 4.1. Радиоактивность и виды ионизирующих излучений Радиоактивность это способность ядер некоторых химических элементов самопроизвольно распадаться с образованием ядер новых химических элементов...
16588. Изучение результатов искусственного отбора 2.35 MB
  Лабораторная работа № 6 Тема: Изучение результатов искусственного отбора Цель: выявить черты сходства и различия сортов растений как результат реализации задач поставленных человеком в ходе искусственного отбора. Оборудование: муляжи различных сортов яблок гр
16589. Митоз в клетках корешков лука 382 KB
  Лабораторная работа № 4 Тема: Митоз в клетках корешков лука Цель работы: выявить отличительные особенности стадий митотического деления клеток. Оборудование: микроскоп спиртовка микропрепарат Митоз в клетках корешков лукафильтровальная бумагапрепарова
16590. Изучение приспособленности организмов к среде обитания 394.5 KB
  Лабораторная работа № 7 Тема: Изучение приспособленности организмов к среде обитания Цель: выяснить механизм образования приспособлений к среде обитания и их относительный характер сделать вывод о том что приспособленность результат действия естественного о
16591. Каталитическая активность ферментов в живых клетках 38 KB
  Лабораторная работа № 9 Тема: Каталитическая активность ферментов в живых клетках Цель: выявить каталитическую функцию белков в живых клетках сформировать знания о роли ферментов в клетках закрепить умение работать с микроскопом проводить опыты и объяснять резу...
16592. Изучение фенотипов местных сортов растений 55.5 KB
  Лабораторная работа № 12 Тема: Изучение фенотипов местных сортов растений Цель: расширить знания о задачах современной селекции. Оборудование: пакетики семян различных сортов томатов два экземпляра натуральных или гербарных образцов злаковых растений одного ...
16593. Сравнение строения тканей многоклеточных организмов (на примере: растений, грибов, животных и человека).Типы тканей и их функции 1.21 MB
  Лабораторная работа № 3 Тема: Сравнение строения тканей многоклеточных организмов на примере: растений грибов животных и человека.Типы тканей и их функции. Ткань это группа клеток и межклеточное вещество объединенные общим строением функцией и происхождение...