ОСНОВЫ ПРОГРАММИРОВАНИЯ НА ЯЗЫКАХ ВЫСОКОГО УРОВНЯ

 

 

В данном разделе раскрываются основные понятия языков программирования высокого уровня. Рассматриваются основные типы данных и даётся обзор наиболее востребованных операторов.

 

Основные понятия языков программирования

 

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

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

Языкипрограммирования — это формальные искусственные языки. Как и естественные языки, они имеют алфавит, словарный запас, грамматику и синтаксис, а также семантику.

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

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

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

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

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

Зарезервированные имена – уже имеющие определённый смысл слова, которые не могут использоваться в иных целях. В каждом языке (иногда даже в разных версиях одного и того же языка) существуют свои особенности присвоения имён и зарезервированные слова. Примеры допустимых и недопустимых имён (для языков Бейсик, Паскаль, Си++) приведены в таблице 15.

Таблица 15

Примеры использования имён

Допустимые имена Недопустимые имена (пояснение, почему недопустимо)
а2 2a (начинается с цифры)
аb a b (содержит пробел)
ab_2_cd3 ab-2-cd3 (содержит знак арифметической операции «-» )
Basic C++ (содержит знак арифметической операции «+»)
sinx sin (зарезервированное имя – встроенная функция)
True2 True (зарезервированное – логическое значение истина)

 

Операция (англ. operator) – способ записи некоторых вычислительных действий. Зачастую операция обозначается всего одним знаком. Охарактеризуем наиболее часто встречающиеся практически во всех языках типы операций:

-арифметические операции, обозначаемые обычно знаками * (умножение), / (деление), + (сложение), - (вычитание) и дp.;

-логические операции НЕ, И, ИЛИ, синтаксис обозначения которых устанавливается языком программирования;

-операции отношения (сравнения) – знаки < , > , <= , >= , = , <> ;

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

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

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

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

Тип переменной задает не только множество допустимых операций, применимых к данному типу, но и способ записи информации в ячейки памяти (формат представления) и, соответственно, необходимый для ее хранения объем памяти, а также диапазон допустимых значений. Например, в ячейке памяти длиной в 8 бит (или 1 байт) может храниться 256 различных значений в двоичном коде. В зависимости от типа переменной это значение может быть интерпретировано и как целое число в диапазоне от 0 до 255 (byte) или от -128 до 127 (shortint), и как один из символов в кодировке ASCII (char).

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

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

Константами или постоянными называют данные, значения которых заданы в тексте программы и не изменяются при ее выполнении. Константы, как и переменные, хранятся в памяти и имеют тип. Их можно указывать в тексте программы явно (такие константы называются также литералами), или для удобства обозначать идентификаторами, как и переменные. Например, инструкция Const pi = 3.14 задаёт значение константы pi, и это значение во время работы программы изменить нельзя, так как это не переменная. При этом запись 3.14 является литералом. Значения строковых литералов всегда заключаются в кавычки.

Выражения (англ. expression) предназначаются для записи необходимых вычислений, состоят из констант, переменных и функций, объединенных знаками операций – операторами (в узком смысле). Каждая операция имеет свой приоритет, то есть очерёдность выполнения. Так, значение выражения 2+2*2 будет равно шести. Изменить порядок вычисления можно с помощью круглых скобок. Выражения записываются в виде линейных последовательностей символов (без подстрочных и надстрочных символов, "многоэтажных" дробей и т.д.), что позволяет вводить их в компьютер одной строкой. В зависимости от типа операций различают арифметические, логические и строковые выражения.

Арифметические выражения служат для определения числового значения. Например, выражение (1+sin(x))/2 содержит константы 1 и 2, переменную x, функцию sin() и знаки операций +, /. Значение этого выражения при x=0 будет равно 0.5, а при x=pi/2 – единице

Логические выражения описывают некоторые условия, которые могут удовлетворяться или не удовлетворяться. Таким образом, логическое выражение может принимать только два значения – "истина" или "ложь" ("да" или "нет"). Рассмотрим в качестве примера логическое выражение x*x + y*y < r*r , определяющее принадлежность точки с координатами (x, y) внутренней области круга радиусом r c центром в начале координат. При x=1, y=1, r=2 значение этого выражения – "истина", а при x=2, y=2, r=1 – "ложь".

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

 

Таблица 16