Языки программирования. Принципы работы с языком Turbo Pascal. Структура программы. Примеры простейших программ

Содержание: 

  1. Языки программирования
  2. Организация действий над данными
  3. Организация данных (типы и структура данных)
  4. Принципы работы с системой Turbo Pascal
  5. Структура программы
  6. Примеры простейших программ
  7. Контрольные вопросы

 

Языки программирования

Язык программирования – это способ записи программ, решение различных задач на ЭВМ в понятной для компьютера форме.

Процессор компьютера  непосредственно понимает язык машинных команд.

  • в 50-е появляются первые средства автоматизации программирования — языки Автокоды (Ассемблеры). Появление языков типа Автокод-Ассемблер облегчило участь программистов:
    • переменные величины стали изображаться символическими именами;
    • числовые коды операций заменились на словесные (мнемонические) обозначения.

Язык программирования стал понятнее для человека, но при этом удалился от языка машинных команд. Чтобы компьютер мог исполнять программы на Автокоде, потребовался специальный переводчик – транслятор. Транслятор – системная программа переводящая текст программы на Автокоде в текст эквивалентной программы на языке машинных команд. Для языков этого уровня принято название Ассемблеры – машинно-ориентированные языки, т.е. они настроены на структуру машинных команд конкретного компьютера. Разные компьютеры с разными типами процессоров имею разный Ассемблер.

  • Языки программирования высокого уровня (ЯПВУ) являются машинно-независимыми языками. Одна и та же программа на таком языке может быть выполнена на ЭВМ разных типов, оснащенных соответствующим транслятором. Форма записи программ на ЯПВУ по сравнению с Автокодом еще ближе к традиционной математической форме, к естественному языку. Первые популярные языки высокого уровня, появившиеся в 1950-х гг., были Кобол (для программирования экономических задач), Фортран и Алгол (научно-технические расчеты математического характера). Для первых ЯПВУ предметная ориентация языков была характерной чертой.

Большое количество языков программирования появилось в 1960 — 1970-х гг. А за всю историю ЭВМ их было создано более тысячи. Но распространились, выдержали испытание временем немногие. Вот некоторые из них: Бейсик (сейчас — QBasic), PL/1

Значительное событие в истории языков программирования стало создание в 1971 году языка программирования Pascal (швейцарский профессор Н.Вирт). Этот язык разрабатывался как учебный язык структурного программирования.

Реализовать тот или иной язык программирования на ЭВМ — это значит создать транслятор с этого языка для данной ЭВМ. Существует два принципиально различных метода трансляции: компиляция и интерпретация. Для объяснения их различия можно предложить следующую аналогию: лектор должен выступить перед аудиторией на незнакомом ей языке. Перевод можно организовать двумя способами:

  • полный предварительный перевод;
  • синхронный перевод.

Компилятор – аналог полного предварительного перевода.

Интерпретатор – аналог синхронного перевода.

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

Интерпретатор в течение всего времени работы программы находится в ОЗУ,  где помещается и программа на ЯПВУ. Интерпретатор в последовательности выполнения алгоритма «читает» очередной оператор программы, переводит его в команды и тут же выполняет эти команды. Затем переходит к переводу и выполнению следующего оператора. При этом результаты предыдущих переводов в памяти не сохраняются. При повторном выполнении одной и той же команды она снова будет транслироваться.

При компиляции исполнение программы разбивается на два этапа: трансляцию и выполнение. При интерпретации, поскольку трансляция и выполнение совмещены, программа на ЭВМ проходит в один этап. Однако, откомпилированная программа выполняется быстрее, чем интерпретируемая. Поэтому использование компиляторов удобнее для больших программ, требующих большого счета. Программы на Паскале, Си, Фортране всегда компилируются. Бейсик чаще всего реализован через интерпретатор.

            Во всяком языке программирования определены способы организации данных и способы организации действий над данными:

Организация действий над данными:

  • ввод и вывод данных, работа с файлами
  • обработка данных

      а) операции и выражения

б) операторы:

  • присваивания
  • ветвления
  • цикла и др.

      в) организация и использования подпрограмм

Организация данных (типы и структура данных)

 Кроме того, существует понятие «элементы языка», включающее в себя алфавит, лексемы, и др. изобразительные средства языка программирования. Несмотря на разнообразие указанных языков, их изучение происходит приблизительно по одной схеме. Это связано с общностью структуры различных языков программирования высокого уровня.

Элементы языка:

  • алфавит – совокупность символов, отображаемых на устройствах печати и экранах и/или вводимых с клавиатуры. Обычно это набор символов Latin-1, с исключением управляющих символов. Иногда в это множество включаются неотображаемые символы, с указанием правил их записи (комбинирование в лексемы);
  • лексемы – совокупность правил образования цепочек символов, образующих идентификаторы (переменные и метки), операторы, операции и др. лексические компоненты языка. Сюда же включаются зарезервированные (запрещенные, ключевые) слова ЯП, предназначенные для обозначения операторов, встроенных функций и пр.
  • синтаксис – совокупность правил образования языковых конструкций, или предложений ЯП – блоков, процедур, составных операторов, условных операторов, операторов цикла и пр. Особенностью синтаксиса является принцип вложенности (рекурсивность) правил построения конструкций. Это значит, что элемент синтаксиса языка в своем определении прямо или косвенно в одной из его частей содержит сам себя. Например, в определении оператора цикла телом цикла является оператор, частным случаем которого является все тот же оператор цикла;
  • семантика (оформление программ) – смысловое содержание конструкций, предложений языка. Семантический анализ – это проверка смысловой правильности конструкций. Например, если мы в выражении используем переменную, то она должна быть определена ранее по тексту программы, а из этого определения может быть получен ее тип. Исходя из типа переменной, можно говорить о допустимости операций с данной переменной. Семантические ошибки возникают при недопустимом использовании операций, массивов, функций, операторов и пр. 

Синтаксис – правило написания слов составления предложений.

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

Для описания синтаксиса ЯП тоже нужен какой-то язык. В этом случае речь идет о метаязыке («надъязыке»), предназначенном для описания др. языков. Наиболее распространенными метаязыками в литературе по программированию являются:

  • металингвистические формулы Бекуса-Наура (язык БНФ);
  • синтаксические диаграммы.

В БНФ всякое синтаксическое понятие описывается в виде  формулы, состоящая из правой и левой части, соединенный знаком ::=, смысл которого эквивалентен словам «по определению есть». Слева от знака ::= записывается имя определяемого понятия (метапеременная), которое заключается в угловые скобки < >, а в правой части записывается формула или диаграмма, определяющая все множество значений, которые может принимать мета переменная (формула, определение).

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

Пример: определить понятие «двоичная цифра».

 

<двоичная цифра> ::= 0|1                       Значок | эквивалентен слову «или».

Это определение можно представить на языке синтаксических диаграмм:

123

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

Пример: определить понятие «двоичный код» как непустую последовательность двоичных цифр.

БНФ:

<двоичный код> ::= <двоичная цифра> | <двоичный код> <двоичная цифра>

Синтаксическая диаграмма:

                                                                                123

Определение, в котором некоторое понятие определяется само через себя, называется рекурсивным. Рекурсивные определения характерны для БНФ.

Очевидно, что диаграмма более наглядна, чем БНФ.

Принципы работы с системой Turbo Pascal

Название Turbo Pascal обычно воспринимается в двух смыслах:

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

Программа на Turbo Pascal проходит три этапа обработки:

  • создание текста программы;
  • компиляция;
  • исполнение откомпилированной программы.

В соответствии с этими функциями Турбо-система включает в себя три главные компоненты:

  • редактор текстов;
  • компилятор;
  • исполнительную систему.

 С помощью встроенного в систему Turbo Pascal текстового редактора можно формировать любые тексты, не только программы на Паскале. Обращение к текстовому редактору происходит по команде EDIT. Текст программы можно сохранить в виде файла с именем следующего формата: <имя файла> .pas, где pas – это стандартное расширение имени файла, <имя файла> задается пользователем.

Компилятор переводит программы с языка Pascal  на язык машинных команд. Работа компилятора запускается командой COMPILE. При обнаружении ошибки компьютер выдает сообщение о ней пользователю и прекращает работу. Откомпилированный файл можно сохранить отдельно от текста начальной программы (расширение будет <имя файла>.exe )

Запуск на выполнение откомпилированного файла выполняется с помощью команды RUN. При этом исполнение программы остается под контролем Турбо-системы.

Структура программы

Исходная программа, как правило, состоит из следующих частей:

  • раздел идентификации – область, содержащая наименование программы, а также дополнительную информацию для программистов и/или пользователей;
  • раздел связи – фрагмент текста, описывающий внешние переменные, передаваемые вызывающей программой (если такая имеется), т.е. ту часть исходных данных, которая обязательно поступает на вход программы при ее запуске. Эти переменные часто называют параметрами программы;
  • раздел оборудования (среда) – описание типа ЭВМ, процессора, требований к оперативной и внешней памяти, существенных с точки зрения программы. Дело в том, что даже среди семейства однотипных ЭВМ могут существовать отличия в наборе команд, средств программирования ввода-вывода, кодированного представления данных, в связи с чем описание среды, приводимое в данном разделе оказывается необходимым транслятору с языка с точки зрения оптимизации выполнения или оценки возможности создания рабочей программы;
  • раздел данных – идентификация (объявление, описание) переменных, используемых в программе, и их типов. Понятие типа позволяет осуществлять проверку данных на совместимость в операциях еще на этапе трансляции программы и отвергнуть недопустимые преобразования;
  • раздел процедур – собственно программная часть, содержащая описание процессов обработки данных. Элементами процедуры являются операторы и стандартные функции, входящие в состав соответствующего языка программирования.

По определению стандартного Pascal программа состоит из:

  • заголовка программы
  • тела программы (блока), за которым следует точка – признак конца программы.

В свою очередь, блок содержит:

  • раздел описаний;
  • раздел операторов.

Program <имя программы>;

Label <раздел меток>;

Const <раздел констант>;

Type <раздел типов>;

Var <раздел переменных>;

Procedure (Function) <раздел подпрограмм>;

Begin

<раздел операторов>

End.

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

В Turbo Pascal, в отличие от стандарта, возможно следующее:

  • отсутствие заголовка программы;
  • разделы Const, Type, Var, Label могут следовать друг за другом в любом порядке и встречаться в разделе описаний сколько угодно раз.

Примеры простейших программ

 

Program FACTORIAL ;

Var N, I, F: Integer ;

Begin Readln (N) ;

           F:=1 ;

           I :=1 ;

           While I<=N Do

           Begin F:=F*I ;

                      I:=I+1

           End;

End.

 

 

 

 

Контрольные вопросы

  1. Что такое язык программирования?
  2. Что такое транслятор?
  3. Перечислите методы трансляции.
  4. Что такое компиляция?
  5. Что такое интерпретация?
  6. Из каких частей состоит программа?
  7. Приведите структуру программы на языке Pascal.