Лекции. Основные понятия и определения
![]()
|
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. Если в качестве метки все-таки используется номер, то в пределах области действия метки номера должны нарастать. Понятие области действия будет введено в другом разделе. Сама инструкция имеет вид: Cgoto <метка>; Пример. 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 if(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 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 Then y=1 Else p=q End If 'при x>y and z<>w переход к инструкции с меткой m1 End If Else x=4 End If m1:z=5 |