Файл: Основы программирования на языке Pascal.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 31.03.2023

Просмотров: 122

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

ВВЕДЕНИЕ

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

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

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

Предмет исследования: язык программирования Pasсal.

Целью данной работы является разработка программы сортировки массивов с помощью языка Pascal.

На основании поставленной цели сформулированы следующие задачи:

  1. Проанализировать информации из литературных источников по теме исследования.
  2. Классифицировать языки программирования.
  3. Провести обзор современных высокоуровневых языков программирования.
  4. Рассмотреть существующие виды алгоритмов сортировки массива.
  5. Рассмотреть несколько общих алгоритмов сортировки массива.
  6. Создать программу на языке Pascal, использующую данные алгоритмы.

1 ЯЗЫКИ ПРОГРАММИРОВАНИЯ. ОСНОВНЫЕ ПОНЯТИЯ И ТЕРМИНЫ

1.1. Понятие языка программирования

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

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


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

Более сложные программы создают с помощью так называемых языков программирования. В них описывается на понятном человеку уровне алгоритмы и задачи, которые должен выполнить процессор. После этого, специальные программы, которые носят название «трансляторы» переводят текст программы из языка программирования в машинный код.

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

1.2 Классификация языков программирования

Языки программирования стали активно развиваться в середине прошлого века. Некоторые из них уже не актуальные другие же используются до сих пор. Для их анализа, определения сходства и различия необходимо провести их классификацию [2].

1.2.1 Классификация по степени ориентации на возможности ЭВМ

На заре развития компьютеров для каждой модели процессора создавался свой уникальный язык. Он позволял работать только с этим типом процессоров. Такие языки называют машинно-зависимыми. Машинно-зависимые языки позволяют в наибольшей степени использовать возможности машины, однако требуют от программиста знания особенностей устройства машины. Эти языки используются для написания специального программного обеспечения.

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


1.2.2 Классификация по типу решаемых задач

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

Языки прикладного программирования используются для решения конкретных задач (к примеру, создание сайтов). Они делают разработку значительно проще и удобнее, сокращают вероятность возникновения ошибок в коде. Однако, расплатой за это является более низкая скорость выполнения программы.

1.2.3 Классификация по степени ориентации на класс задач

По степени ориентации на класс задач современные языки программирования можно разделить на процедурно-ориентированные и проблемно-ориентированные [3].

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

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

1.2.4 Классификация по степени детализации алгоритма

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


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

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

К языкам программирования сверхвысокого уровня можно отнести Алгол-68, в котором сделана попытка формализовать описание языка, приведшая к появлению двух типов программ: абстрактной и конкретной. Первый тип программы — абстрактный — создается программистом, конкретный — выводится из первого. Существует предположение, что при таком подходе принципиально невозможно породить синтаксически (а на практике и семантически) неверную конкретную программу.

1.2.5 Классификация по способу получения результата

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

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


В декларативных языках задаются данные и отношения между ними. Вместо алгоритмов в таких языках используются правила логического вывода, которые позволяют системе находить нестандартные, заранее не определенные решения. Поэтому декларативные языки называют также еще языками искусственного интеллекта. Главное различие между декларативными и процедурными языками заключается в том, что декларативная программа заявляет (декларирует), что должно быть достигнуто в качестве цели, а процедурная предписывает, как ее достичь.

Объектно-ориентированные языки, разработанные в середине 70-х гг., представляют собой отображение объектов реального мира, их свойств (атрибутов) и связей между ними при помощи специальных структур данных. При объектно-ориентированном подходе для каждого объекта создается своя структура данных, называемая классом и содержащая свойства объекта (поля) и процедуры для управления объектом (методы). При этом каждый класс может содержать несколько подклассов, описывающих частные случаи общего объекта. Все подклассы содержат в себе, наряду с общими свойствами, также еще ряд специфических свойств, отличающих их от первоначального класса. Такой принцип называется принципом наследования свойств (от общего к частному) [4].

1.2.6 Классификация по возможности создания новых типов данных и операций

По данному признаку языки программирования делятся на расширяемые и нерасширяемые.

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

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

1.3 Основные этапы разработки программ на языках программирования высокого уровня.