Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Chast_1-Osnovy_informatiki

.pdf
Скачиваний:
15
Добавлен:
09.06.2015
Размер:
967.67 Кб
Скачать

2 . Методы и средства разработки программ

для обращения к нему. Начинается идентификатор с буквы, за которой могут следовать другие буквы или цифры.

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

В зависимости от принимаемых значений (целых, вещественных и др.) переменные бывают разного типа: целыми, вещественными, символьными, логическими. Переменные, определяемые только своими идентификаторами, считаются простыми. Некоторые идентификаторы закреплены за известными функциями, такими, как sin x , e x и др., и запрещены для использования в другом смысле. Например, нельзя употреблять в качестве имени переменной идентификатор SIN, но можно SIN1 или SINX. Чтобы отличить функцию SIN с аргументом X от переменной SINX, для функций обязательно заключение аргумента в круглые скобки: SIN(X).

Отдельно остановимся на важном понятии массива.

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

ров-индексов (например, для двумерного массива их два – i и j ), прини-

мающих любое значение из заданных интервалов изменения (например, i

изменяется от 1 до m , j – от 1 до n ). Элемент массива обозначается иденти-

фикатором массива с индексом и называется переменной с индексом.

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

В языках программирования переменная с индексом представляется в виде идентификатора массива с последующей записью в скобках индексов, разделенных запятыми; перечень индексов переменной называют списком индексов, а скобки – индексными. В языке Паскаль запись будет выглядеть так: B[i, j], B[1, 3].

86

2 . Методы и средства разработки программ

В вычислительной машине элементы массива записываются подряд, в последовательные ячейки памяти, поэтому для многомерных массивов возможны два расположения: 1) по «строкам», т. е. сначала изменяется правый индекс; 2) по «столбцам», т. е. первоначально изменяется левый индекс. Трехмерный массив представляется последовательностью двумерных массивов; как и двумерный массив, он располагается в памяти ЭВМ в виде одномерного массива.

2.3.3. Функции и выражения

Функция определяет одно числовое или логическое значение, которое получается в результате применения совокупности правил к данной группе параметров, причем параметрами могут быть значения, переменные и выражения. Совокупность правил определяется заранее, вычисление же функции активизируется ее указателем, который имеет вид идентификатора с последующим списком параметров в круглых скобках. Параметры списка при вычислении функции называются фактическими, они могут быть достаточно сложными и содержать другие указатели функций: f ( ), g (x ), u(x, v(x )).

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

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

вания: COS, ABS и др.

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

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

Выражение считается арифметическим, если результатом выполнения действий является число. Например, арифметическое выражение 1,5 / ln(2x)

на Паскале записывается так: 1.5 / ln(2 * x). В простейшем случае арифмети-

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

гических значений: TRUE или FALSE. В логических выражениях операнды

87

2 . Методы и средства разработки программ

связываются знаками операций отношения: < , , = , > , , , или знаками логических операций: отрицания (НЕ), логического умножения (конъюнкции) (И), логического сложения (дизъюнкции) (ИЛИ). Если отношение удовлетворяется для входящих в него выражений, то оно истинно и принимает значение TRUE, в противном случае оно ложно и принимает значение

FALSE. Логическое выражение x > 3 истинно для x (3, + ∞) и ложно для x (− ∞, 3]. Выражение b 2 < 0 всегда ложно для действительных значений b ,

а выражение 2 3 всегда истинно. Операции отношения выполняются, как правило, над числовыми переменными и значениями, а логические операции

над булевскими переменными и значениями.

Вязыках программирования каждая операция отношения должна иметь два арифметических операнда. Логические операции связывают несколько отношений в одно логическое выражение, например математическая запись 2 x < 5 , представляется в таком виде: 2 x x < 5 . Порядок выполнения операций в логических выражениях обычно следующий: арифметические операции, операции отношения, логические операции (отрицание, умножение, сложение). Хотя лучше определять последовательность действий скобками.

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

жении двух символьных переменных x и y , принимающих, соответственно,

значения «мате» и «матика», выражение x + y будет равно значению «мате-

матика», в то время как результат выражения y + x лишен смысла, хотя и бу-

дет вычислен.

2.3.4. Операторы

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

88

2 . Методы и средства разработки программ

висимости от языка либо целым числом без знака, либо идентификатором и называется меткой.

Среди операторов выделяют класс невыполняемых операторов, или описаний. Описания (декларации) характеризуют свойства используемых в программе объектов и область их действия. Для простых переменных указывается их тип, для массивов – тип значений массива, размерность и границы изменения индексов, для процедур – форма их использования. Область действия переменных может распространяться на всю программу или на ее часть. Информация о свойствах величин указывается явно или неявно (по принципу умолчания, когда без специального объявления объекту приписывается наиболее вероятное свойство). Так, при опускании знака «+» перед числом оно считается положительным.

Рассмотрим подробнее основные выполняемые операторы.

С помощью оператора присваивания переменная приобретает арифметическое, символьное или логическое значение. Действие оператора заклю-

чается в том, что переменная y (простая или с индексом), находящаяся слева от знака присваивания, приобретает значение, полученное после выполнения действий, указанных в выражении E правой части оператора присваивания.

Тип переменной y и результат выражения E должны соответствовать друг другу: быть одновременно или логическими, или символьными, или арифметическими.

Синтаксис оператора присваивания на Паскале имеет вид: y := E .

Оператор перехода управляет процессом вычислений и применяется для изменения последовательного порядка выполнения операторов. Он означает команду «Перейти к М» (GOTO M), где M – метка.

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

Условный оператор – оператор ЕСЛИ (IF) – предназначен для организации разветвляющегося процесса. Синтаксис этого оператора следующий:

IF B THEN A

89

2 . Методы и средства разработки программ

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

Условный оператор перехода является необходимым элементом программного управления. Типичное применение его – при выборе наибольшего или наименьшего из двух значений. Переменные обозначим x и y , результат

r . На Паскале алгоритм записывается следующим образом: r := x ;

IF r < = y THEN r := y ;

Схема логического блока принятия альтернативного решения представлена на рис. 2.1.

ложно

B

истинно

 

 

 

 

 

 

 

 

 

A2

 

 

 

A1

 

 

 

 

 

Рис. 2.1. Условная логическая конструкция ЕСЛИ–ТО–ИНАЧЕ.

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

оператор цикла.

Синтаксис оператора цикла позволяет записывать изменение какого-

либо параметра, называемого параметром цикла или управляющей перемен-

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

90

2 . Методы и средства разработки программ

Управляющая переменная в наиболее часто употребляемой форме оператора цикла изменяется по типу общего члена арифметической прогрессии. В заголовке такого оператора указываются границы изменения управляющей переменной (нижняя граница – m1 и верхняя – m2 ) и шаг ее изменения (раз-

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

FOR i := m1 TO m2 DO … (шаг изменения управляющей переменной +1).

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

B

ложно

A

 

истинно

 

истинно

A

 

B

ложно

Рис. 2.2. Варианты логической конструкции цикла.

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

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

91

2 . Методы и средства разработки программ

2.3.5. Процедуры

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

Процедуры – сложные конструкции. Включение процедуры в программу требует ее описания (декларирования), которое состоит из заголовка и тела процедуры. Стандартные подпрограммы и функции не нуждаются в предварительном описании. Заголовок процедуры представляется специальным термином и последующей записью идентификатора со списком параметров в круглых скобках. Тело процедуры состоит из спецификаций (характеристик) параметров и операторов, реализующих необходимые вычисления. Параметры при описании процедуры являются формальными и представляются только идентификаторами, их назначение состоит в указании типа и места конкретных объектов, которые заменят формальные параметры при выполнении тела процедуры. Например, заголовок процедуры на Паскале имеет вид: procedure f (x1 , x2 ,..., xt ); Здесь f – имя процедуры; попарно раз-

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

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

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

92

2 . Методы и средства разработки программ

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

Описание процедуры-функции на Паскале представляется следующим образом:

function G(X ,Y ): integer;

G := X + 3 / Y ;

Обращение к процедуре-функции возможно, например, таким операто-

ром:

A := 5 * G(sin(0.53),1);

Достижение того же результата с помощью процедуры-подпрограммы влечет появление в ее описании дополнительного формального параметра для результата:

procedure G(X ,Y , Z ) ;

Z := X + 3 / Y ;

Вычисление процедуры-подпрограммы вызывается указанием имени процедуры:

G(sin(0.53),1, A);

A := 5 * A ;

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

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

93

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]