Файл: Классификация языков программирования. Критерии выбора среды и языка разработки программ (Основы программирования).pdf

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

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

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

Добавлен: 25.04.2023

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

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

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

end; {End of Case}

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

Цикл while-do Цикл repeat-until {Подготовка}{Подготовка} While L do repeat begin {тело цикла} {тело цикла}until L; end; здесь L -логическое выражение, которое при значении True является условием продолжения выполнения while-do или условием окончания выполнения repeat-until. Подготовка и тело цикла являются цепочками функциональных узлов.[15] Тело цикла выполняется столько раз, сколько и весь цикл. При равноценности, из двух конструкций выбирают ту, запись которой короче. Операторы цикла наиболее трудны: в них легко сделать ошибку, особенно на границах цикла.

Очень часто количество итераций цикла известно заранее: это либо константа, известная при написании программы, либо значение, вычисляемое перед началом цикла. Цикл со счетчиком можно запрограммировать следующим образом: for := to do ; здесь for, to, do — зарезервированные слова; — переменная любого перечисляемого типа. Цикл выполняется для каждого из значений от и до . 2.4. Операторы перехода. Оператор безусловного перехода имеет следующий вид: goto, здесь goto — зарезервированное слово: — метка. Метка - это произвольный идентификатор, позволяющий именовать некоторый оператор программы и таким образом ссылаться на него.

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

1) в заголовке функции помимо описания формальных параметров обязательно указывается тип возвращаемого ею результата;

2) для возврата функцией значения в точку вызова среди ее операторов должен быть хотя бы один, в котором имени функции или переменной Result присваивается значение результата;

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


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

Формальные параметры подпрограммы могут быть трех видов:

• параметры-значения;

• параметры-переменные;

• параметры-константы.

Например, procedure MyProc (A: Real; var В: Real; const С: String); здесь А - параметр-значение, в - параметр-переменная, С - параметр-константа. Способ определения формального параметра очень важен для вызывающей программы. Если формальный параметр объявлен как параметр-значение или параметр-константа, то при вызове ему может соответствовать произвольное выражение. Если формальный параметр объявлен как параметр-переменная, то при вызове подпрограммы ему должен соответствовать фактический параметр в виде переменной нужного типа.

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

Одним из свойств языка Object Pascal является возможность использования нетипизированных параметров. Параметр считается нетипизированным, если тип формального параметра-переменной в заголовке подпрограммы не указан, при этом соответствующий ему фактический параметр может быть переменной любого типа. Нетипизированными могут быть только параметры- переменные: procedure MyProc(var aParametr); Нетипизированные параметры обычно используются в случае, когда тип данных несуществен. Такие ситуации чаще всего возникают при разного рода копированиях одной области памяти в другую, например, с помощью процедур BlockRead, BlockWrite, MoveMemory и т. п.

Процедурные типы. Основное назначение процедурных типов — дать программисту гибкие средства передачи функций и процедур в качестве фактических параметров обращения к другим процедурам и функциям. Для объявления процедурного типа используется заголовок процедуры (функции), в котором опускается ее имя, например: type Prod = procedure (a, b, с: Real; var d: Real); РгосЗ == procedure; Fund = function: String; Func2 = function (var s: String): Real; В программе могут быть объявлены переменные процедурных типов, например: var p1 : Proc1; fl, f2: Func2; ар: array [1. . N] of Prod;


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

Языки программирования образуют три его составляющие: алфавит, синтаксис и семантика.[17]

Алфавит – это фиксированный для данного языка набор основных

символов, т. е. «букв», из которых должен состоять любой текст на этом

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

Синтаксис – это правила построения фраз, позволяющие определить,

правильно или неправильно написана та или иная фраза.

Семантика определяет смысловое значение предложений языка.

Основными понятиями в языках программирования обычно являются

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

1. По степени ориентации на специфические возможности ЭВМ языки программирования делятся на:

  • машинно-зависимые (Автокоды, Assembler, MSIL);
  • машинно-независимые (C++,C#,Java, PHP, Python и д.р.).

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

Для них в большинстве случаев характерны[18]:

    • высокое качество создаваемых программ с точки зрения их компактности и скорости выполнения. Они работают на прямую с процессором, что способствует быстрому выполнению программ.
    • возможность прямого использования конкретных аппаратных ресурсов;
    • учет особенностей функционирования данной ЭВМ;
    • трудоемкость процесса составления программ;
    • низкая скорость программирования;
    • невозможность непосредственного использования программ, составленных на этих языках, на ЭВМ других типов[19].

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

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

  • языки низкого уровня (Assemler);
  • языки высокого уровня (Fortran, Basic,VB, C/C++,C#,Java, PHP и т.д);
  • языки сверхвысокого уровня (Ruby,Python, Icon, Haskell, Perl).

3. По степени ориентации на решение определенного класса задач: [20]


  • проблемно-ориентированные. Эти языки, языки ориентированные на решение определенных проблем, должны обеспечить программиста средствами, позволяющими коротко и четко формулировать задачу и получать результаты в требуемой форме(Lisp, Prolog)[21];
  • универсальные. Данные языки были созданы для широкого круга задач: коммерческих, научных, моделирования и т.д. Первый универсальный язык был разработан фирмой IBM, ставший в последовательности языков Пл/1. Второй по мощности универсальный язык называется Алгол-68. Он позволяет работать с символами, разрядами, числами с фиксированной и плавающей запятой. Пл/1 имеет развитую систему операторов для управления форматами, для работы с полями переменной длины, с данными организованными в сложные структуры, и для эффективного использования каналов связи. Язык учитывает включенные во многие машины возможности прерывания и имеет соответствующие операторы. Предусмотрена возможность параллельного выполнения участков программ (C,C++,C#, Java, Delphi,).

4. По возможности дополнения новыми типами данных и операциями:

  • расширяемые (Nemerle, C#, C++,Delphi);
  • нерасширяемые (Basic).

5. По возможности управления реальными объектами и процессами:

  • языки систем реального времени (Ada, Java, Modula-2);
  • языки систем условного времени.

6. По способу получения результата:

  • процедурные. ко способом получения его при помощи некоторой процедуры, которая представляет собой определенную последовательность действий. Среди процедурных языков выделяют структурные и операционные языки. В структурных языках одним оператором записываются целые алгоритмические структуры: ветвления, циклы и т.д.; в операционных языках для этого используются несколько операций. Широко распространены следующие структурные языки: Паскаль, Си, Ада, ПЛ/1. Среди операционных –Фортран, Бейсик, Фокал.
  • непроцедурные. Непроцедурное (декларативное) программирование появилось в начале 70-х гг. XX в. К непроцедурному программированию относятся функциональные и логические языки. В функциональных языках программа описывает вычисление некоторой функции. Обычно эта функция за- дается как композиция других, более простых, те, в свою очередь, делятся на еще более простые задачи и т.д. Один из основных элементов функциональных языков это рекурсия. Оператора присваивания и циклов в классических функциональных языках нет. В логических языках программа вообще не описывает действий. Она задает данные и соотношения между ними. После этого системе можно задавать вопросы. Машина перебирает известные и заданные в программе данные и находит ответ на вопрос. Порядок перебора не описывается в программе, а неявно задается самим языком. Классическим языком логического программирования считается Пролог. [22]Программа на Прологе содержит, набор предикатов-утверждений, которые образуют проблемно-ориентированную базу данных и правила, имеющие вид условий

7.По типу решаемых задач:

  • языки системного программирования (Assembler, MSIL);
  • языки прикладного программирования.

8. Непроцедурные языки по типу встроенной процедуры поиска решений делятся на:

  • реляционные. Это языки программирования, оперирующие с данными как с множествами, применяя к ним основные операции теории множеств, примером является язык SQL[23];
  • функциональные. Функциональное программирование предполагает обходиться вычислением результатов функций от исходных данных и результатов других функций, и не предполагает явного хранения состояния программы. Соответственно, не предполагает оно и изменяемость этого состояния (в отличие от императивного, где одной из базовых концепций является переменная, хранящая своё значение и позволяющая менять его по мере выполнения алгоритма)[24];
  • логические. Логическая программа состоит из предикатов, представляющими собой функции, вырабатывающие логические значения – любой предикат содержит вычисления, которые могут быть либо истинными, либо ложными. При этом результаты вычисления предикат возвращает, только если вычисления истинны.[25]

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

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

3. Критерии выбора среды и языка разработки программ

Когда необходимо создать большую программную систему или составить программы для решения какой-либо частной задачи, в том числе при создании компьютерных игр, встает вопрос, какой выбрать для этой цели подходящий язык программирования.[26] Такой выбор делается на основании очень простых «земных» факторов: наличии того или иного транслятора и умения писать программы на данном языке. Но если в распоряжении пользователя несколько языков программирования и нужно создать, например, игру для мобильного, то необходимо учитывать следующие обстоятельства[27]: