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

ЛИЧНЫЙ КАБИНЕТ 

 

Здравствуйте гость!

 

Логин:

Пароль:

 

Запомнить

 

 

Забыли пароль? Регистрация

Повышение уникальности

Предлагаем нашим посетителям воспользоваться бесплатным программным обеспечением «StudentHelp», которое позволит вам всего за несколько минут, выполнить повышение уникальности любого файла в формате MS Word. После такого повышения уникальности, ваша работа легко пройдете проверку в системах антиплагиат вуз, antiplagiat.ru, etxt.ru или advego.ru. Программа «StudentHelp» работает по уникальной технологии и при повышении уникальности не вставляет в текст скрытых символов, и даже если препод скопирует текст в блокнот – не увидит ни каких отличий от текста в Word файле.

Результат поиска


Наименование:


реферат Массивы в языках Pascal и Basic

Информация:

Тип работы: реферат. Добавлен: 05.05.2012. Сдан: 2011. Страниц: 13. Уникальность по antiplagiat.ru: < 30%

Описание (план):


Массивы в языках Pascal и Basic

Массивы в языках Pascal и Basic

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

Массив  в Бейсике

Описывать массив DIM A(N) - это значит предоставить < N > свободных ячеек впамяти ЭВМ  для массива с именем А.
Если описание массива отсутствует, то под одномерный массив выделяется 10 ячеек памяти.
Каждый элемент  массива вобщем виде описывается  как А(I), где
А - имя массива,
I - номер или  индекс массива (0<=I<=N, но практически  употребляется 1<=I<=N)
A(I) - значение  элемента массива.

Массив  в Паскале

<имя массива>:=array <количество элементов> of <тип  переменной>;
Каждый элемент  массива вобщем виде описывается  как А[I], где
А - имя массива,
I - номер или  индекс массива (0<=I<=N, но практически  употребляется 1<=I<=N)
A[I] - значение  элемента массива.

Действия  над массивами

Для работы с  массивом как единым целым используется идентификатор массива без указания индекса вквадратных скобках. Массив может участвовать только воперациях отношения "равно", "не равно" и воператоре присваивания. Массивы, участвующие вэтих действиях, должны быть идентичны по структуре, т. е. иметь одинаковые типы индексов и одинаковые типы компонентов.
Например, если массивыА и Вописаны как var А, В: array[1..20] of real; то применение к ним допустимых операций даст следующий результат:
Выражение Результат
А=ВTrue, если значение каждого элемента массива А равно  соответствующему значению элемента массива  В
А<>ВTrue, если хотя бы одно значение элемента массива  А не равно значению соответствующего элемента массива В
А:=ВВсе значения элементов массива Вприсваиваются соответствующим элементам массива  А. Значения элементов массива Востаются  неизменны.

Действия  над элементами массива 

После объявления массива каждый его элемент можно  обработать, указав идентификатор (имя) массива и индекс элемента вквадратных скобках. Например, запись Mas[2], VectorZ[10] позволяет обратиться ко второму элементу массива Mas и десятому элементу массива
VectorZ.
При работе с  двумерным массивом указываются  два индекса, с n-мерным массивом - n индексов. Например, запись MatrU[4,4] делает доступным для обработки значение элемента, находящегося в четвертой строке четвертого столбца массива MatrU.
Индексированные элементы массива называются индексированными переменными и могут быть использованы так же, как и простые переменные. Например, они могут находиться ввыражениях в качестве операндов, использоваться воператорах for, while, repeat, входить вкачестве параметров воператоры Read, Readln, Write, Writeln; им можно присваивать любые значения, соответствующие их типу.

Алгоритмы сортировки одномерных массивов

Сортировка - один из наиболее распространённых процессов  современной обработки данных. Сортировкой  называется распределение элементов  массива всоответствии с определёнными правилами. Например, сортировка массива по возрастанию или убыванию его элементов.
Обменная сортировка (метод "пузырька").
Алгоритм начинается со сравнения 1-го и 2-го элементов массива.
Если 2-й элемент  меньше 1-го, то они меняются местами. Этот процесс повторяется для каждой пары соседних элементов массива, пока все N элементов не будут обработаны. За один "проход" массива самый большой элемент встанет на старшее (N-е) место. Далее алгоритм повторяется, причем на р-м "проходе" первые (N-p) элементов сравниваются со своими правыми соседями. Если на очередном "проходе" перестановок не было, то алгоритм свою работу закончил. Таким образом, самые "легкие" элементы впроцессе исполнения алгоритма постепенно "всплывают".

Сортировка  вставками.

Вначале упорядочиваются два первых элемента массива. Они образуют начальное упорядоченное множество S. Далее на каждом шаге берется следующий по порядку элемент и вставляется вуже упорядоченное множество S так, чтобы слева от него все элементы были не больше, а справа - не меньше обрабатываемого. Место для вставки текущего элемента вупорядоченное множество S ищется методом деления пополам. Алгоритм сортировки заканчивает свою работу, когда элемент, стоящий на N-м месте, будет обработан. (Именно таким образом игроки вбридж обычно упорядочивают свои карты).

Сортировка  выбором.

Находится наибольший элемент вмассиве из N элементов (пусть  он имеет номер р) и меняется местами  с элементом, стоящим на N-м месте, при условии, что N<>p. Из оставшихся (N-1) элементов снова выделяется наибольший и меняется местами с элементом, стоящим на (N-1)-м месте и т. д. Алгоритм заканчивает свою работу, когда элементы, стоящие на 1-м и 2-м местах в массиве, будут упорядочены (для этого понадобится N-1 "проход" алгоритма). Аналогично данный алгоритм можно применять и к наименьшим элементам.

Двумерные массивы

Двумерным называется массив, элемент которого зависит  от его местоположения встроке и  встолбце. Вобщем виде элемент матрицы  обозначается как A(I,J), где А - имя  массива,
I - индекс (номер) строки, J - индекс (номер) столбца.
Описание матрицы  на языке Бейсик
DIM A(I,J) - описать  матрицу (двумерный массив) это  значит предоставить свободные  ячейки в памяти ЭВМ для  элементов данной матрицы. В  памяти ЭВМ элементы матрицы  располагаются по строкам, поэтому индекс строки изменяется медленнее, чем индекс столбца.
Прямоугольной называется матрица, в которой количество строк не равно количеству столбцов.
Квадратной называется матрица, вкоторой количество строк  равно количеству столбцов.
Описание матрицы на языке Паскаль
Матрицу можно  задать двумя способами:
I. <имя матрицы>: array <количество строк> of array <количествостолбцов> of <тип переменной>;
II. <имя матрицы>: array <количество строк >,<количество  столб-цов> оf <тип переменной>].
Соотношение индексов в квадратной матрице
I=J элементы матрицы  расположены на главной диагонали
I< над расположены  матрицы элементы>  диагональю
I>J элементы  матрицы расположены под главной  диагональю
I+J=N+I элементы  матрицы расположены на побочной  диагонали (N - количество строк или столбцов в квадратной матрице)
I+J<>  диагональю
I+J>N+I элементы  матрицы расположены под побочной  диагональю.
Ниже приведены  примеры задач с массивами  на языке Turbo Pascal.
Пример 1. Ввод значений элементов массива с помощью  генератора случайных чисел и вывод их встрочку.
Примечание:
Для использования  случайных чисел в TP используются операторы
random:real - генерирует  случайные числа в диапазоне  0...0.99.
random(i:word):word - генерирует  случайные числа вдиапазоне
0...1.
randomize - изменение базы генератора случайных чисел.
program mas1;
var
a: array [1..10] of integer;
i: integer;
begin
randomize;
for i:=1 to 10 do
begin
a[i]:=random(20);
write('a(', i, ')=', a[i], ' ')
end;
readln
end.
Пример 2. Составить  программу заполнения одномерного массива, так чтобы егоi-ый элемент был равенa[i]=(i*i+1)/sin(i).
program mas2;
var a: array [1..10] of real;
i: integer;
begin
for i:=1 to 10 do
begin
a[i]:=(i*i+1)/sin(i);
writeln('a(', i, ')=', a[i], ' ');
end;
readln
end. 
Пример 3. Составить  программу определения количества элементов одномерного массива, значение элементов которых меньше заданного действительного числа t.
program mas3;
var a: array [1..10] of real;
i,k: integer; t:real;
begin
write('Введите числоt=');
read(t);
k:=0;
for i:=1 to 10 do
begin
write('Введите  значение элемента a(', i, ')=');
readln(a[i]);
if a[i]<t then k:=k+1
end;
writeln('Ответ: Количество  элементов, меньших заданного  числа t,');
writeln('равноk=',k);
readln
end.
Пример 4. Нахождение среди значений элементов, находящихся на главной диагонали матрицы, наибольшего и наименьшего.
program mas4;
var
a: array[1..10,1..10] of integer;
i,j,max,min: integer;
begin
for i:=1 to 10 do
for j:=1 to 10 do
begin
write('Введите  значение элемента матрицы=');
readln(a[i,j])
end;
max:=a[1,1];
min:=a[1,1];
for i:=
1 to 10 do
r,q:real;
x:array [1..20] of real;
begin
writeln('Ведите массив, cостоящий из 20 чисел:');
for i:=1 to 20 do read(x[i]);
for i:=1 to 19 do
for j:=i+1 to 20 do
if x[i]>=x[j] then
begin
r:=x[i]; x[i]:=x[j]; x[j]:=r
end;
writeln('Сортировка  массива по возрастанию произведена:');
for i:=1 to 20 do writeln(x[i]);
writeln('Для выхода  введите любое число.');
readln(q);
end. 
 
 
 
 
 
 

Одномерные  и двумерные массивы

Массив — это пронумерованная последовательность величин одинакового типа, обозначаемая одним именем. Элементы массива располагаются в последовательных ячейках памяти, обозначаются именем массива и индексом. Каждое из значений, составляющих массив, называется его компонентой (или элементом массива).
Массив данных в программе рассматривается как переменная структурированного типа. Массиву присваивается имя, посредством которого можно ссылаться как на массив данных в целом, так и на любую из его компонент.
Вообще, массив – однородный, упорядоченный структурированный тип данных с прямым доступом к элементам.
Переменные, представляющие компоненты массивов, называются переменными  с индексами в отличие от простых  переменных, представляющих в программе  элементарные данные. Индекс в обозначении  компонент массивов может быть константой, переменной или выражением порядкового типа (целочисленный, логический, символьный, перечислимый, диапазон).
Если за каждым элементом массива закреплен  только один его порядковый номер, то такой массив называется линейным. Вообще количество индексов элементов массива определяет размерность массива. По этом признаку массивы делятся на одномерные (линейные), двумерные, трёхмерные и т.д.
Пример: числовая последовательность четных натуральных чисел 2, 4, 6, ..., N представляет собой линейный массив, элементы которого можно обозначить А[1]=2, А[2]=4, А[3]=6, ..., А[К]=2*(К+1), где К — номер элемента, а 2, 4, 6, ..., N — значения. Индекс (порядковый номер элемента) записывается в квадратных скобках после имени массива.
Например, A[7] —  седьмой элемент массива А; D[6] — шестой элемент массива D.
Для размещения массива в памяти ЭВМ отводится  поле памяти, размер которого определяется типом, длиной и количеством компонент  массива. В языке Pascal эта информация задается в разделе описаний. Массив описывается так:
      имя массива : Array [тип индекса] Of базовый  тип;
Чаще всего  типом индекса является диапазон. Например,
      Var B : Array [1..5] Of Real, R : Array [1..34] Of Char;
— описывается  массив В, состоящий из 5 элементов и символьный массив R, состоящий из 34 элементов. Для массива В будет выделено 5*6=30 байт памяти, для массива R — 1*34=34 байта памяти.
Базовый тип  элементов массива может быть любым простым или структурированным, за исключением файлового.
Кроме того, массив можно объявить с использованием собственного типа:
  Type mas = array[1..100] of integer;
           mas_ = array[1..50] of real;
  Var a, b: mas;
      R: mas_;
Заполнить массив можно следующим образом:
1) с помощью  оператора присваивания. Этот способ  заполнения элементов массива  особенно удобен, когда между элементами существует какая-либо зависимость, например, арифметическая или геометрическая прогрессии, или элементы связаны между собой рекуррентным соотношением.
Задача 1. Заполнить одномерный массив элементами, отвечающими следующему соотношению:
a1=1; a2=1; ai=ai-2+ai-1 (i = 3, 4, ..., n).
Read(N); {Ввод количества  элементов}
A[1]:= 1;
A[2]:= 1;
FOR I := 3 TO N DO
     A[I] := A[I - 1] + A[I - 2];
Другой вариант  присваивания значений элементам массива  — заполнение значениями, полученными  с помощью датчика случайных чисел.
Задача 2. Заполнить одномерный массив с помощью датчика случайных чисел таким образом, чтобы все его элементы были различны.
Program Create;
Type Mas = Array[1..100] Of Integer;
Var A : Mas; I, J, N : Byte; Log : Boolean;
Begin
    Write(''); ReadLn(N);
    randomize; A[1] := -32768 + random(65535);
    For I := 2 To N Do
    Begin
        Log := True;
        Repeat
            A[i] := -32768 + random(65535); J := 1;
            While Log and (j <= i - 1) Do
            begin Log := a[i] <> a[j]; j := j + 1 End
        Until Log
    End;
    For i := 1 to N Do Write(a[i]:7); writeln
End.
2) ввод значений  элементов массива с клавиатуры  используется обычно тогда, когда  между элементами не наблюдается  никакой зависимости. Например, последовательность чисел 1, 2, -5, 6, -111, 0 может быть введена в память следующим образом:
Program Vvod;
Var N, I : Integer;
     A : Array [1..20] Of Integer;
Begin
  Write('Введите количество элементов массива ');  ReadLn(N);
  FOR I := 1 TO N DO
  Begin
   Write('Введите A[', I, '] '); ReadLn(A[I])
End.
Над элементами массивами чаще всего выполняются  такие действия, как
а) поиск значений;
б) сортировка элементов  в порядке возрастания или  убывания;
в) подсчет элементов  в массиве, удовлетворяющих заданному условию.
Сумму элементов  массива можно подсчитать по формуле  S=S+A[I] первоначально задав S=0. Количество элементов массива можно подсчитать по формуле К=К+1, первоначально задав К=0. Произведение элементов массива можно подсчитать по формуле P = P * A[I], первоначально задав P = 1.
Задача 3. Дан линейный массив целых чисел. Подсчитать, сколько в нем различных чисел.
{Подсчет количества  различных чисел в линейном  массиве.
 Идея решения:  используем вспомогательный массив, элементами
 которого являются логические величины (False - если элемент
 уже встречался  ранее, True - иначе)}
Program Razlichnye_Elementy;
Var I, N, K, Kol : Integer;
     A : Array [1..50] Of Integer;
     Lo : Array [1..50] Of Boolean;
Begin
  Write('Введите  количество элементов массива: '); ReadLn(N);
    FOR I := 1 TO N DO
     Begin
      Write('A[', I, ']='); ReadLn (A[I]);
      Lo[I] := True; {Заполняем вспомогательный массив значениями True}
     End;
  Kol := 0; {переменная, в которой будет храниться  количество различных чисел}
  FOR I := 1 TO N DO
   IF Lo[I] THEN
    Begin
     Kol := Kol + 1;
     FOR K := I TO N DO
 {Во вспомогательный массив заносим значение False,
  если число  уже встречалось ранее или  совпадает с текущим элементом  A[I]}
       Lo[K] := (A[K] <> A[I]) And Lo[K];
    End;
  WriteLn('Количество  различных чисел: ', Kol)
END.
Тест: N = 10; элементы массива - 1, 2, 2, 2, -1, 1, 0, 34, 3, 3. Ответ: 6.
Задача 4. Дан линейный массив. Упорядочить его элементы в порядке возрастания.
{Сортировка массива  выбором (в порядке возрастания).
 Идея решения:  пусть часть массива (по K-й  элемент включительно)
 отсортирована.  Нужно найти в неотсортированной  части массива
 минимальный  элемент и поменять местами  с (K+1)-м}
Program Sortirovka;
Var N, I, J, K, Pr : Integer; A : Array [1..30] Of Integer;
Begin
Write('Введите количество  элементов: '); ReadLn(N);
   For I := 1 To N Do
    Begin
     Write('Введите A[', I, '] '); Readln(A[I]);
    End;
   WriteLn;
   For I := 1 To N - 1 Do
    Begin
     K := I;
     For J := I + 1 To N Do If A[J] <= A[K] Then K := J;
     Pr := A[I]; A[I] := A[K]; A[K] := Pr;
    End;
    For I := 1 To N Do Write(A[I], ' ');
  End.
Тест: N = 10; элементы массива - 1, 2, 2, 2, -1, 1, 0, 34, 3, 3.
Ответ: -1, -1, 0, 1, 2, 2, 2, 3, 3, 34.
Если два массива  являются массивами эквивалентных типов, то возможно присваивание одного массива другому. При этом все компоненты присваиваемого массива копируются в тот массив, которому присваивается значение. Типы массивов будут эквивалентными, если эти массивы описываются совместно или описываются идентификатором одного и того же типа. Например, в описании
Type Massiv = Array[1..10] Of Real;
Var A, B : Massiv; C, D : Array[1..10] Of Real; E : Array[1..10] Of Real;
типы переменных A, B эквивалентны, и поэтому данные переменные совместимы по присваиванию; тип переменных C, D также один и тот же, и поэтому данные переменные также совместны по присваиванию. Но тип переменных C, D не эквивалентен типам переменных A, B, E, поэтому, например, A и D не совместны по присваиванию. Эти особенности необходимо учитывать при работе с массивами.  

При работе с  массивами целесообразно использовать процедуры и функции. Вот типовые  процедуры:
Type mas = array[1..100] of LongInt;
{Заполнение массива  с помощью ввода с клавиатуры}
Procedure Vvod_Kl(var n: byte; var a: mas);
Var i: byte;
Begin
      Write(‘Количество элементов?’); Readln(n);
      For i := 1 to n do
            Begin
                  write(i, ‘-й элемент’); readln(a[i])
            End
End;
{Заполнение массива  случайными данными}
Procedure Vvod_Sl(var n: byte; var a: mas);
Var i: byte;
Begin
      Write(‘Количество элементов?’); Readln(n);
      For i := 1 to n do
            a[i] := -1000+random(2001)
End;
{Вывод массива}
Procedure Print(n: byte; const a: mas);
Var i: byte;
Begin
      For i := 1 to n do
            write(a[i] :8);
      writeln
End;
Задача 5. Дан линейный массив. Найти: сумму минимального и максимального элементов; количество отрицательных элементов, стоящих на чётных местах. Изменить массив, вычеркнув из него нечетные элементы.
Function Min(n: byte; const a: mas): byte;
Var i, m : byte;
Begin
      m:= 1;
      for i:=2 to n do
            if a[i] < a[m] then m:=i;
      Min := m
End;
Function Max(n: byte; const a: mas): byte;
Var i, m : byte;
Begin
      m:= 1;
      for i:=2 to n do
            if a[i] > a[m] then m:=i;
      Max := m
End; 

Function K(n: byte; const a: mas): byte;
Var i, kol : byte;
Begin
      kol:= 0;
      for i:=1 to n do
            if (a[i]<0) and not odd(i)
            then kol:=kol+1;
      K:= kol
End; 

Procedure V(var n: byte; var a:mas);
Var i, j: byte;
Begin
      i:=1;
      while i <= n do
            if odd(a[i])
            then begin
                  for j:=i+1 to n do a[j-1]:=a[j];
                  n:=n-1
                    end
            else i:= i+1
End;
{procedure vvod_sl - сюда  подставить приведенные выше  процедуры}
{procedure print}
Var a:mas; n:byte;
Begin
      randomize;
      vvod_sl(n, a); print(n, a);
      writeln('Сумма  минимального и максимального  элементов', a[Min(n, a)] + a[Max(n, a)]);
      writeln('Количество  отрицательных элементов, стоящих  на чётных местах: ', K(n, a));
и т.д.................


Перейти к полному тексту работы


Скачать работу с онлайн повышением уникальности до 90% по antiplagiat.ru, etxt.ru или advego.ru


Смотреть полный текст работы бесплатно


Смотреть похожие работы


* Примечание. Уникальность работы указана на дату публикации, текущее значение может отличаться от указанного.