49850

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

Курсовая

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

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

Русский

2014-01-16

929.12 KB

38 чел.

Оглавление:

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


 

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

24547. Классическая архитектура ОС 26.18 KB
  Для надежной и безопасной работы ОС ее ядро должно иметь более высокие привилегии по сравнению со вспомогательными модулями самой ОС и пользовательскими приложениями рис. Привилегии ядра обеспечиваются средствами аппаратной поддержки процессора который должен поддерживать как минимум два режима работы: пользовательский режим user mode; привилегированный режим ядра kernel mode. Ядро ОС в привилегированном режиме При обращении к ядру происходит переход из пользовательского режима работы в привилегированный что требует дополнительных...
24548. Микроядерная архитектура ОС 70.66 KB
  В микроядерной архитектуре в привилегированном режиме работает только небольшая часть ОС называемая микроядром. Роль посредника при взаимодействии выполняет микроядро. Микроядро в привилегированном режиме имеет доступ к адресным пространствам всех приложений и поэтому может выступать в качестве посредника. Микроядро принимает сообщение клиента и передает его серверу.
24549. В чем заключается принцип безопасности и как он обеспечивается операционной системой 14.52 KB
  В чем заключается принцип безопасности и как он обеспечивается операционной системой 3.6 Обеспечение безопасности вычислительной системы. Под обеспечением безопасности вычислительной системы понимается защита от несанкционированного доступа к информации а также к программным модулям защита ресурсов одного пользователя от других и установление квот по ресурсам для предотвращения захвата одним пользователем всех системных ресурсов например памяти. Уровни безопасности вычислительных систем обозначаются A B C D причем D – низший уровень...
24550. Что такое мультипрограммирование (многозадачность). Реализация мультипрограммирования в системах пакетной обработки, разделения времени, реального времени 54.02 KB
  Что такое мультипрограммирование многозадачность Реализация мультипрограммирования в системах пакетной обработки разделения времени реального времени. При реализации мультизадачности существуют разные критерии эффективности: пропускная способность – количество задач выполняемых ВС в единицу времени; удобство работы пользователей заключающееся в их возможности работать в интерактивном режиме сразу с несколькими приложениями; реактивность системы – способность системы выдерживать заранее заданные интервалы времени между запуском...
24551. Мультипроцессорная обработка, архитектуры мультипроцессорных систем 16.56 KB
  В настоящее время обычным стало включение нескольких процессоров в архитектуру даже персонального компьютера. В мультипроцессорных системах несколько задач выполняются действительно одновременно так как имеется несколько обрабатывающих устройств – процессоров. Мультипроцессирование не исключает мультипрограммирования: на каждом из процессоров может попеременно выполняться некоторый закрепленный за данным процессором набор задач. Симметричная архитектура мультипроцессорной системы предполагает однородность всех процессоров и единообразие...
24552. Что такое вычислительный процесс, поток. Состояния процесса 72.89 KB
  Что такое вычислительный процесс поток Состояния процесса.Планирование процессов и потоков. Понятия процесс и поток. Для реализации многозадачности необходимо определить каким образом ОС будет разделять между задачами процессор и другие ресурсы компьютера.
24553. Психосоматические взаимосвязи в организме человека 58.5 KB
  Условнорефлекторная модель И. Конверсионная модель соматических расстройств З. Конверсионная модель объясняет нарушения произвольной моторики так же полезна для понимания психогенных расстройств чувствительности нарушений походки ощущения кома в пищеводе при истерии. В соответствии с конверсионной моделью с появлением соматического симптома пациент испытывает эмоциональное облегчение благодаря смягчению гнета бессознательного конфликта.
24554. Консультирование в кризисной службе 71.5 KB
  Психическая травма вызывает следующие реакции: 1. Физиологические реакции: учащенное сердцебиение; повышение кровяного давления; чувство сжатия в груди; затрудненное дыхание; потливость ладоней; дрожание и подергивание мышц; напряженность мышц шеи и или спины; тяжесть в руках и ногах; головные боли; частое мочеиспускание; расстройство стула; тошнота рвота; нарушение сна; потеря аппетита; частое чихание; приступы слабости; склонность к простудам и аллергиям; скрипение зубами во сне; придавленная поза. Эмоциональные реакции: повышенная...
24555. Психологический анализ проблемы клиента 72.5 KB
  Психологический анализ проблемы клиента. Эти приемы испся в основном на стадии расспрашивания после исповеди клиента. Общая цель беседы получить от клиента полную искреннюю инфо о его ситуации и проблеме; добиться доверия к консту развить спость клта к анализу проблемы. Терапевтическое значение: клиент понимает что чтото можно делать что ситуация не безнадежна происходит расширение диапазона реакций клиента снятие безнадежности повышение уверенности в себе.