Главная arrow Гибкие системы arrow Конструкции языка
Как начинался компьютер
Компьютерная революция
Двоичный код
Разработки военных лет
Интегральные микросхемы
Микрокомпьютер
Персоны
Сеть
Язык компьютера
Развитие ПО
Гибкие системы
Средства разработки
Информатика
Вычислительная наука
Операционные системы
Искусственный интеллект
Предыстория
Поиск
Знания и рассуждения
Логика
Робототехника
 

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

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

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

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

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

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

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

Описания повышают ясность программ

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

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

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

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

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

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

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

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

Операции для обработки данных

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

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

Операции отношения выполняют сравнения между элементами одного и того же типа данных (за исключением логического), и всегда выдают результат логического типа (вида «да - нет»). Применительно к числам такие операции определяют, больше ли одно число другого (<), больше или равно (>=), равно (=), меньше (<), меньше или равно (<=), не равно (<>). Для строк эти же операции выполняют проверку лексикографического порядка.

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

Последовательное продвижение по программе

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

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

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

Операторы условного перехода

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

Этот вид управляющих структур называется условным ветвлением, или условным оператором; один из способов реализации такого разветвления в программе - оператор ЕСЛИ, который сравнивает два значения, делая на основе этого выбор. Обычно сравнение производится с помощью операций отношения; так, в программе управления кондиционером мог быть оператор ЕСЛИ Темп> = 20 ТО Охл : = вкл.

Поскольку результат операции сравнения может быть только логического типа, при сравнении переменной Темп и числа 20 получится либо ДА, либо НЕТ. Когда условие, задаваемое ключевым словом ЕСЛИ, истинно (в нашем случае Темп больше или равна 20), компьютер осуществит действия, заданные после ключевого слова ТО - присвоит значение «вкл» переменной «Охл». Если же условие не удовлетворяется, то, поскольку слово ИНАЧЕ в этой конструкции отсутствует, компьютер просто выполнит следующий оператор в последовательности.

Циклические конструкции

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

Одна из таких конструкций начинается с ключевого слова ПОКА, которое указывает, что компьютер должен проверять заданное условие и каждый раз, когда оно оказывается истинным, выполнять указанную далее группу операторов, заключенную между ключевыми словами НАЧАЛО и КОНЕЦ. Цикл может начинаться также словом ДЛЯ, которое указывает, что группу операторов нужно выполнить заданное число раз.

Процедуры - средство борьбы со сложностью программ

Если в разных местах программы нужно выполнять одну и ту же последовательность действий, то программист может сэкономить время и усилия, воспользовавшись специальным средством, называемым подпрограммой или процедурой. По существу, это - программа внутри программы. Процедура представляет собой последовательность операторов, заключенную между ключевыми словами НАЧАЛО и КОНЕЦ. Эта последовательность имеет имя, по которому она вызывается из тела программы. Всякий раз, когда компьютер встречает имя процедуры, он передает ей управление, выполняя всю последовательность операторов, указанную в ее теле, после чего возвращается к следующему оператору в главной программе.

Глобальные и локальные переменные

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