Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие_2_изд_испр.doc
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
2.27 Mб
Скачать

5.2. Присваивание

C

Формат:

...[<переменная>=]<переменная>[<знак>]=<выражение>;

Пример.

x=-.127; i=i+1; a[i+1]=x*y+2*sin((z+1)*(x-2));

Инструкция вида i++; фактически эквивалентна инструкции i=i+1; , поэтому ее также можно отнести к присваиванию.

Инструкция вида x+=a+b/2; эквивалентна инструкции x=x+a+b/2; и является просто сокращенной формой записи операции изменения значения переменной и в качестве знака может использоваться любой оператор, при котором полученная конструкция имеет смысл. В дальнейшем мы увидим, что таких знаков достаточно много.

Следует обратить внимание на многократное присваивание, которое весьма удобно.

Пример.

i=j=k=0; эквивалентно k=0; j=k; i=j;

i=1;

j=3;

a[ i ][ j ]=i=i+1; в результате получим i=2 a[2][3]=2

Basic

Формат:

[let]<переменная>[знак]=<выражение>

Ключевое слово let является анахронизмом и в данной версии языка после завершения инструкции удаляется из кода программы. Опция [знак] имеет тот же смысл, что и в языке С.

Пример.

x=-0.127: i+=1: a(i+1)=x*y+2*sin((z+1)*(x-2)): m( i, j )=i+1

5.3. Безусловный переход

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

<помеченная инструкция>:=<метка><инструкция>

<метка>:=<имя:>|<номер>  для Basic

<номер>:=<целое без знака>

Замечания (Basic).

1. Использование номера является анахронизмом – пришло из старых версий языка, сейчас лучше не использовать.

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

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

Сама инструкция имеет вид:

C

goto <метка>;

Пример.

goto label;

..........

label:x++;

Basic (устаревший вариант)

goto 10

.............

10: x=x+1

Рекомендация. Инструкция перехода нарушает естественный порядок выполнения программы, что вызывает трудности при чтении текста программы и ее отладке. Набор инструкций языков C и Basic позволяет реализовать практически любой алгоритм, не используя эту инструкцию, поэтому следует избегать ее применения.

5.4. Инструкция If. Пустая инструкция

Реализует базовую вычислительную структуру – развилку.

C

Формат:

if(<выражение>)<инструкция 1>;

[else <инструкция 2>;]

Если <выражение> принимает значение true (0), то выполняется <инструкция 1>. Если <выражение> принимает значение false (=0), то выполняется <инструкция 2>. По правилам языка в каждой ветви должна быть только одна инструкция. В качестве любой из инструкций может использоваться другая инструкция if. Такие инструкции называют вложенными. Инструкции, входящие в состав инструкции if, для удобства чтения текста принято сдвигать вправо на 4-5 позиций.

Примеры.

i f(a>b) if(x*x+y*y>r*r)z=0;

c=a;

else x+1, если x<0 if(x<0)

c=b; y= y=x+1;

1-x, если x>=0 else

y=1-x;

Вложенные if

i f(x>y) x*x-5, если x<0

if(z==0) y= x+3, если 0<=x<=5

x=5; x-7, если x>5

else

x=-5; if(x<0)

else y=x*x-5;

if(z>10) else

y=5; if(x<=5)

else y=sqrt(x)+3;

y=-5; else

y=x-7;

Пустая инструкция (есть только в языке C) имеет вид: ;.

Пример.

if(x>y)

if(z==w)

if(w<p)

y=1;

else

p=q; // При x>y && z!=w переход к инструкции с меткой m1

else ; // Пустая инструкция

else

x=4;

m1:z=5;

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

Basic

Используются 2 формы инструкции if.

Однострочная форма.

Формат:

if <условие> then [<инструкции>] [else <инструкции>]

Замечания.

1. Эта форма инструкции if записывается в одну строку.

2. Инструкции за словом then могут отсутствовать только при наличии в инструкции if слова else.

3. Инструкций за словами then и else может быть более одной. В этом случае они отделяются друг от друга символом ":" .

Пример.

if x*x+y*y>r*r then z=0;

if a>b then c=a : d=b else c=b : d=a

Блочная форма ("цепочка").

Формат:

if <условие 1> [then]

[<инструкции>]

[elseIf <условие 2> [then]

[<инструкции>]

]...

[else

[<инструкции>]

]

end if

Замечания.

1. Слово if этой формы должно быть первым в строке. Слово then можно не записывать. При переходе к строке, следующей за строкой со словом if или elseif оно будет вставлено автоматически.

2. Количество опций (частей) elseif в инструкции не ограничено, однако рекомендуется использовать не более 3, поскольку текст становится плохо читаем. Для программирования большего числа альтернатив существует другая инструкция, описанная ниже в данном разделе.

3. Форма обязательно должна заканчиваться инструкцией end if.

4. При выполнении производится последовательная проверка условий. Как только какое-либо из них принимает значение true, выполняются следующие за соответствующим словом then инструкции и управление передается на инструкцию, следующую за инструкцией end if. Если не будет истинно ни одно из условий, то выполняются инструкции, следующие за словом else.

5. В состав внутренних инструкций в свою очередь могут входить другие инструкции if любой формы.

6. Транслятор отличает эту форму по отсутствию в строке после слова then других инструкций, не входящих в инструкцию if. Допустим только комментарий.

Примеры. Вычислить:

x*x-5, если x<0

y= x+3, если 0<=x<=5

x-7, если x>5

if x<0 then

y=x*x-5

elseif x<=5 then

y=sqrt(x)+3

else

y=x-7

end if

Вложенные инструкции:

if x>y then

if z=w then

if w<p then

y=1

else

p=q 'при x>y and z<>w пе

реход к инструкции с

меткой m1

end if

end if

else

x=4

end if

m1:z=5

Как видно из примеров, структура инструкции не требует наличия в языке пустой инструкции, поэтому в языке Basic ее нет.