Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
933.3 Кб
Скачать

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[1][3]=2

Basic

Формат:

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

Опция [знак] имеет тот же смысл, что и в языке С.

Пример.

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. Если в качестве метки все-таки используется номер, то в пределах области действия метки номера должны нарастать. Понятие области действия будет введено в другом разделе.

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

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, для удобства чтения текста принято сдвигать вправо на 3-5 позиций.

Примеры.

if(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 можно не записывать.

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

End If

'при x>y and z<>w переход к инструкции с меткой m1

End If

Else

x=4

End If

m1:z=5

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

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