Массивы

Автор работы: Пользователь скрыл имя, 16 Мая 2013 в 11:07, курсовая работа

Описание

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

Содержание

1.Введение
1)История создания языка Pascal
2)Краткий обзор языка
2.Основная часть
1)Массив.
2)Одномерные массивы
3)Алгоритмы сортировки одномерных массивов
4)Массивы в языках Pascal и Basic
5)Массив в Бейсике
6)Массив в Паскале
7)Двумерные массивы Паскаля – матрицы
8)Описание двумерного массива Паскаля
9)Основные действия с двумерными массивами Паскаля
10)Ввод двумерного массива Паскаля
11)Вывод двумерного массива Паскаля на экран
12)Представление двумерного массива Паскаля в памяти
13)Методы доступа к элементам массивов
14)Индексный массив
15)Специфические типы массивов
16)Динамические массивы
17)Гетерогенные массивы
3.Заключение
1)Основная
2) Дополнительная
Список литературы
1)основная литература
2)дополнительная дополнительная

Работа состоит из  1 файл

Курсовая массивы.docx

— 56.80 Кб (Скачать документ)

Содержание:

 

1.Введение

1)История создания языка  Pascal

2)Краткий обзор языка

2.Основная часть

1)Массив.

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

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

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

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

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

7)Двумерные массивы Паскаля  – матрицы

8)Описание двумерного  массива Паскаля

9)Основные действия с  двумерными массивами Паскаля

10)Ввод двумерного массива  Паскаля

11)Вывод двумерного массива  Паскаля на экран

12)Представление двумерного  массива Паскаля в памяти

13)Методы доступа к элементам  массивов

14)Индексный массив

15)Специфические типы массивов

16)Динамические массивы

17)Гетерогенные массивы

3.Заключение

1)Основная

2) Дополнительная

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

1)основная литература

2)дополнительная дополнительная 

 

Введение

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

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

Современные концепции типов  данных развиваются на протяжении последних 40 лет. В ранних языках программирования все структуры данных, соответствующие  конкретным задачам, моделировались небольшим  количеством основных структур данных, поддерживаемых этими языками. Например, в версиях языка FORTRAN, разработанных  до языка FORTRAN 90, связные списки и  двоичные деревья обычно моделировались с помощью массивов.

Первый шаг в сторону  от модели, использованной в языке FORTRAN I, был сделан разработчиками структур данных в языке COBOL, позволившими программистам  устанавливать точность десятичных чисел и предложившими использовать структурные типы данных для представления  записей, содержащих информацию.

Концепции разработки типов  данных, появившиеся в конце 1970-х  годов в результате естественного  обобщения идеи типов, определяемых пользователем, были воплощены в  языке Ada 83. Методология, лежащая в основе определяемых пользователем типов данных, состоит в том, что программисту следует позволить создавать отдельный тип для каждого отдельного класса переменных, определяемых предметной областью задачи. Более того, язык должен обеспечивать уникальность типов, являющихся, фактически, абстракциями переменных из предметной области задачи. Это довольно мощная концепция, оказывающая значительное влияние на общий процесс разработки программного обеспечения.

Двумя самыми распространенными  структурными (нескалярными) типами данных являются массивы и записи. Они, а также несколько других типов данных, задаются операторами типов, или конструкторами, используемыми для создания переменных данного типа. В качестве примера операторов типа можно назвать существующие в языке С круглые и квадратные скобки, а также звездочки, используемые для задания массивов, функций и указателей.

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

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

Различные языки программирования, как будет описано ниже, предлагают различные варианты использования  массивов.

 

История создания языка Pascal

Pascal разрабатывался с 1968 по 1970 г. Николаусом Виртом. Цель заключалась в том, чтобы создать язык, лишенный многочисленных недостатков ALGOL. Pascal был назван в честь французского математика Блеза Паскаля, который еще в 1642 г. изобрел цифровой калькулятор. С конца 70-х до конца 80-х гг. этот язык доминировал среди языков, используемых на начальном этапе обучения программированию; позже его заменили С и C++, а затем Java.

ALGOL 60 был первой попыткой  создания языка на основе формального  описания, однако его реализация  оказалась сложной. В частности,  оказалось достаточно трудно реализовать передачу параметров по имени, хотя это довольно элегантный механизм. В языке ALGOL 60 не были определены операторы ввода-вывода, поскольку в то время считалось, что они зависят от реализации, да и собственную статическую память также трудно было реализовать. Помимо того, в 60-х гг. были разработаны новые практические решения, например типы данных и структурное программирование. Языки типа FORTRAN были популярны благодаря своей эффективности при выполнении программ, несмотря на отсутствие элегантности.

В 1965 г., во время работы в  Стенфордском университете (Stanford University), Вирт разработал новую, расширенную версию ALGOL 60 для компьютеров серии IBM 360, в которую вошло определение указателей и структур данных. Этот язык, известный как ALGOLW, использовался в нескольких университетах, но его реализация ограничивалась только компьютерами IBM 360. Для выполнения программ на этом языке требовался значительный по размерам пакет программ поддержки обработки строк, вещественных чисел двойной точности и других сложных типов данных. Таким образом, ALGOL W в качестве системного языка программирования оказался малоэффективным.

В 1968 г. Вирт вернулся в Швейцарию  и начал работу над преемником ALGOL W - языком, который мог бы компилироваться  за один проход. Для создания исходного  компилятора был использован  алгоритм рекурсивного спуска. Этот компилятор выполнялся на компьютере Control Data. Также был разработан широко известный теперь интерпретатор Р-кода. Компилятор языка Pascal сначала транслировал исходную программу в программу на языке гипотетической машины со стековой архитектурой. Благодаря такой своей организации Pascal легко переносился на компьютеры других систем. Компилятор Pascal был написан на одноименном языке. Все, что требовалось для перехода в другую систему, - это переписать соответствующим образом интерпретатор Р-кода.Появившийся в 1970 г. Pascal начал завоевывать признание.В 1983 г. был разработан американский стандарт языка (IEEE 770/ ANSI X3.97), а вскоре был разработан стандарт ISO (ISO 7185).

 

Краткий обзор языка

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

В Pascal имеется достаточно широкий набор простых и структурированных типов данных: целые и вещественные числа, символьные данные, перечисления, логические (булевы) значения, массивы, записи, последовательные файлы и ограниченный тип множеств. Оператор type позволяет программисту определять новые типы данных, хотя не обеспечивает группирование и инкапсуляцию определения нового типа данных с набором подпрограмм, обеспечивающих выполнение основных операций над объектами данных этого нового типа. Кроме того, указатель и операция создания новых объектов данных любого типа позволяют программисту конструировать новые объекты связанных данных непосредственно во время выполнения программы.

Подпрограммы принимают  форму функций (если они возвращают одно какое-либо значение) или процедур (если их действие сводится к модификации  переданных параметров или глобальных переменных). Операторы управления последовательностью действий базируются на конструкциях структурного программирования: составных операторах, условных операторах и операторах выбора (case), а также трех видах операторов цикла. В Pascal имеется также оператор goto, который редко используется и без которого практически всегда можно обойтись. Вызов подпрограмм и возвращение значений осуществляется с помощью обычной рекурсивной структуры вызова-возврата.

Поскольку Pascal имеет блочную структуру, большая часть структур управления данными для ссылок на переменные использует стандартные статические правила определения области видимости и характеристику вложенности блока в самой программе. Параметры могут передаваться по ссылке или по значению.

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

Из вспомогательных подпрограмм  нужны в основном стандартные  программы ввода-вывода для последовательных файлов и процедуры для управления ресурсами памяти.

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

1. В определении этого  языка имеется некоторое противоречие  между идеологией самого языка  и его реализацией. Например, конструкция  forward нужна только для того, чтобы компиляция могла выполняться в один проход, - это следствие представлений о том, что таким образом достигается максимальная эффективность компиляции. Но это не всегда верно. Например, компилятор PL/C для языка PL/I совершал три прохода и вместе с тем являлся одним из самых эффективных среди наиболее распространенных компиляторов своего времени . Кроме того, в настоящее время при использовании недорогих быстродействующих компьютеров скорость компиляции не имеет большого значения.

2. Возможно, самой главной  слабостью языка Pascal является то, что массивы рассматриваются как отдельные типы, а не как агрегация различных объектов одного типа. Это приводит к тому, что, например, array [1. .10] of Integer и аггау[1. .20] of integer представляют собой/разные типы данных. В результате алгоритмы обработки массивов усложняются, поскольку массивы различных размеров невозможно передать общей подпрограмме (например, подпрограмме перемножения матриц). Строки реализованы как массивы символов, что также затрудняет их обработку в случае строк различной длины.

3. Синтаксис определения  процедуры в Pascal выглядит следующим образом: заголовок процедуры локальные переменные локальные параметры begin тело процедуры end. Поскольку в программе может содержаться большое количество вложенных локальных процедур, то определение локальной переменной, которая используется в какой-либо процедуре, оказывается (синтаксически) сильно отдаленным от места ее использования в теле подпрограммы. Это приводит к затруднениям при создании документации и чтении больших программ на Pascal.

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

рассматривали листинги программ, стараясь обнаружить ошибку, связанную  с пропуском ключевого слова  var.

5. Pascal был реализован таким образом, что компиляция программы представляла собой единый процесс, то есть не была предусмотрена возможность компилировать отдельные программные модули.В большинстве реализаций, однако, эту проблему удалось решить:

было принято соглашение, что допускаются дополнительные внешние процедуры, аналогичные  заголовочным файлам с расширением  h в языке С. Но такая нестандартная реализация ограничивает возможность перенесения программ на Pascal на другие машины.

6. Хотя в Pascal допускается определение новых типов данных для поддержки абстракций, в нем фактически не предусмотрена возможность инкапсуляции и сокрытия информации.Это замечание является скорее не критикой данного языка,а комментарием,касающимся общего уровня развития программирования в 1970 г., когда создавался Pascal.

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

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

 

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

 

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

Информация о работе Массивы