Курсовая работа на тему Массивы. Двумерные массивы

Министерство образования и науки Республики Казахстан

Казахстанский Инженерно Технологический университет

(колледж)

Кафедра Вычислительная техника, автоматизация и телекоммуникация

Курсовая работа

по дисциплине

программирование

Тема: Массивы. Двумерные массивы

Выполнила: 3 курс Исмаилова А. С.

Проверила: Желилова К.А.

Алматы, 2010г

Содержание:

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-го элементов массива.

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

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

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

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

Для работы с массивом как единым целым используется идентификатор массива без указания индекса вквадратных скобках. Массив может участвовать только воперациях отношения "равно", "не равно" и воператоре присваивания. Массивы, участвующие вэтих действиях, должны быть идентичны по структуре, т. е. иметь одинаковые типы индексов и одинаковые типы компонентов.Например, если массивы А и Вописаны как 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,

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

С понятием "массив" приходится сталкиваться при решении научно-технических и экономических задач обработки совокупностей большого количества значений.

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

Похожие рефераты:

Учебное пособие: Математические и логические основы информатики Курсовая работа на тему Место информатики в процессах управления Реферат на тему Методи оцінки та засоби підвищення надійності програмного забезпечення Реферат на тему Моделирование в системах управления Контрольная работа на тему Моделирование машины Тьюринга Курсовая работа на тему Мой компьютер Дипломная работа на тему Моніторинг інформаційних потреб споживачів як необхідна умова організації інформаційного обслуговування Реферат на тему Надежность программного обеспечения Курсовая работа на тему Настольные системы управления базами данных (СУБД) Курсовая работа на тему Научно-методическая деятельность преподавателей Курсовая работа на тему Необходимость проведения маркетинговых исследований в сфере образования Курсовая работа на тему Облік зареєстрованих автомобілів в ДАІ Курсовая работа на тему Обработка динамических структур Учебное пособие: Объектно-ориентированная среда программирования "Object Pascal" в профильном курсе информатики Учебное пособие: Операционные системы "тонких" клиентов Курсовая работа на тему Операційна система Linux Контрольная работа на тему Основные возможности Microsoft Оffice Outlook Курсовая работа на тему Основы криптологии Отчет по практике: Основы программирования в среде Delphi Контрольная работа на тему Отчеты Microsoft Office Access Курсовая работа на тему Оформление служебных документов Реферат на тему Плоттеры нового поколения Курсовая работа на тему Построение компоненты в Builder C++ Курсовая работа на тему Потоковое видео и открытые системы Курсовая работа на тему Предметная область "тестирование" Реферат на тему Применение компьютерных технологий при проектировании нефтеперерабатывающего завода Контрольная работа на тему Проведение АВС анализа в среде MS EXCEL Курсовая работа на тему Проектування каталогу мобільних телефонів у Access Курсовая работа на тему Проектування офісу САПР-одяг Курсовая работа на тему Разработка автоматизированной системы управления "Трехмерная печать" Контрольная работа на тему Разработка информационной системы "Производство продукции/услуг" Курсовая работа на тему Разработка мультимедийного сайта Курсовая работа на тему Разработка приложения средствами VBA Курсовая работа на тему Разработка программного обеспечения виртуальной библиотеки Курсовая работа на тему Разработка программы сжатия и восстановления файлов с помощью фиксированного блочного кода постоянного смещения Курсовая работа на тему Разработка специализированного процессора для исполнения элементарных функций Курсовая работа на тему Разработка устройства "Светодиодный пробник p-n переходов" Курсовая работа на тему Решение проблемы топологии и установки устройств физического уровня Курсовая работа на тему Решение транспортной задачи Лабораторная работа на тему Решение уравнений, неравенств и их систем Курсовая работа на тему Розвиток сучасних структур програмного забезпечення Реферат на тему Середовище навчання Moodle. Його переваги та недоліки Курсовая работа на тему Система баз данных MS SQL Server 2000 Реферат на тему Система непрерывной подачи чернил Курсовая работа на тему Система съема данных с оптопар Доклад: Сканеры и принтеры, сфера их применения Курсовая работа на тему Современные информационные системы управления государством Реферат на тему Современный уровень развития переносной флэш-памяти и USB-брелков Курсовая работа на тему Создание базы данных "Аттестация сотрудников" Контрольная работа на тему Создание презентации Курсовая работа на тему Спортивная программа и организация базы данных Курсовая работа на тему Суперэлементное моделирование пространственной системы "плита грунтовое основание" Курсовая работа на тему Сутність та принципи роботи ЕОМ Курсовая работа на тему Сучасне інтерактивне спілкування Реферат на тему Сучасний стан інформаційної безпеки. Проблеми захисту комп'ютерної інформації Реферат на тему Сучасні антивірусні програми та принцип їх роботи Реферат на тему Сучасні комп'ютерні технології Курсовая работа на тему Сучасні операційні системи, архітектура, відмінні характеристики, функціональність, виробництво і перспективи розвитку Реферат на тему Сучасні програмні продукти для управління маркетинговою діяльністю Контрольная работа на тему Сучасні системи автоматизованого проектування графічних проектів Реферат на тему Сущность алгоритмов Контрольная работа на тему Сущность защиты информации Реферат на тему Сущность искусственного интеллекта Курсовая работа на тему Схема електрична принципова модуля на базі 8-розрядного мікропроцесора Контрольная работа на тему Схема контроллера Реферат на тему Схема радиомодема Реферат на тему Схемы шифрования AES, RC4, RC5, RC6, Twofish, Mars Курсовая работа на тему Счетчик обратного отсчета Курсовая работа на тему Технологии компьютерных игр Реферат на тему Функции и возможности текстового редактора Дипломная работа на тему Функціонування системи інформаційного обслуговування користувачів бібліотек у сучасних умовах Реферат на тему Характеристика качества ПО "практичность" Курсовая работа на тему Цвет и графика на ЭВМ Реферат на тему Что такое компьютерная сеть. Виды сетей Контрольная работа на тему Экономические информационные системы Дипломная работа на тему Электронная почта Курсовая работа на тему Язык программирования высокого уровня С++ Курсовая работа на тему Языки программирования Контрольная работа на тему Установка и настройка программного обеспечения локальной сети Курсовая работа на тему Датчики скорости коррозии как элементы АСУ общей системы мониторинга Курсовая работа на тему Динамическое формирование и преобразование списков и структур Шпаргалка: Дискретная техника Реферат на тему Устройство персонального компьютера Курсовая работа на тему Устройство управления системой измерения веса Контрольная работа на тему Утилиты, буфер обмена, автоформат MS Excel Доклад: Файловая система для операционной системы Windows Лабораторная работа на тему Дослідження файлової структури Курсовая работа на тему Економічні задачі лінійного програмування і методи їх вирішення Курсовая работа на тему Емпіричне дослідження програмного забезпечення Курсовая работа на тему Автоматизация системы управления холодильной установкой Курсовая работа на тему Автоматизированная система управления климатом в тепличных хозяйствах Реферат на тему Автомобильная электроника Курсовая работа на тему Анализ доходов отдела фирмы, занимающейся розничной торговлей офисной мебелью Курсовая работа на тему База данных "Магазин по продаже дисков" Курсовая работа на тему Безпровідна мережа Wi-Fi, її будування Контрольная работа на тему Компьютерная графика Реферат на тему Компьютерная графика Контрольная работа на тему Компьютерная графика Реферат на тему Компьютерная графика и решаемые ею задачи Курсовая работа на тему Компьютерная лингвистика