Факультет: Электроэнергетика и информационные технологии Кафедра: Информационные технологии и системы Предмет: Информатика Специальность: Мировая экономика Курс:I Кредит: 6 Преподаватель: ст.пр., к.т.н. Оруджева Мехсети. ЛЕКЦИЯ № 6 ОСНОВНЫЕ ОПЕРАТОРЫ ЯЗЫКА TURBO-PASCAL. МАССИВЫ. Описание действий, которые должны быть выполнены над данными - основная часть любой программы. Единицей действия в программе является оператор . Обобщенная структура оператора в программе имеет вид: <метка>:<оператор>; Оператор присваивания <переменная>:=<выражение>; Выполнение оператора заключается в вычислении значения выражения и присваивании его переменной, стоящей в правой части. Следует учитывать, что переменная и выражение должны быть совместимы по типу. Пример var I,J:integer; A,B:real; Lon:boolean; ... I:=12; J:=I+10;A:=0.25; B:=Sin(A);Lon:=A<>B; Составной оператор Begin <оператор 1>;<оператор 2>;...;<оператор N> end; Составной оператор позволяет объединить несколько операторов в один. Здесь Begin и end представляют собой операторные скобки. Пример Begin X:=0.5;Y:=Sin(X);write(X,Y){вывод результата вычислений} end; Оператор безусловного перехода Goto <метка>; Обеспечивается безусловный переход к оператору, помеченному меткой. Существует ряд ограничений на использование данного оператора, суть которых сводится к тому, что нельзя передавать управление внутрь другого оператора минуя его начало. Пример недопустимо Label 1, 3, 10; begin X:=0.5; goto 1; ... 1:Y:=Sin(X)+1; ... end; goto 10; begin допустимо goto 1; 10:goto 3 end; 1:Y:=0.25; Примечание: Безусловные переходы в программе могут обеспечиваться также с помощью процедур Exit и Halt. Выполнение процедуры Exit заключается в безусловном выходе из текущей подпрограммы (процедуры или функции), а в основной программе в ее завершении. Выполнение процедуры Halt безусловно прекращает выполнение программы. Пример Label 10; ... Begin ... аналогично goto 10; ... 10:end.{пустой оператор} Begin ... Exit; ... end. Условные операторы Условные операторы используются для организации разветвлений в программах. True If <логическое выражение> Then <оператор>; False True If <логическое выражение> Then <оператор 1> Else <оператор 2>; False Пример if X>0 then Y:=sin(X) ; if X<=0 then Y:=cos(X); или if X>0 then Y:=sin(X) else Y:=cos(X); Y= sinX, при X>0 cosX, при X<=0 Пример if X mod 2=0 then {подсчет количества четных чисел} begin Kol:=Kol+1; writeln(‘Четное’) end {составной оператор} else writeln(‘Нечетное’); Оператор выбора Case Case <выражение> of <список константных значений 1 > : <оператор 1>; <список константных значений 2 > : <оператор 2>; ... { else <оператор 0> } end; Выражение относится к ординальному типу (т.е. любому простому кроме Real). Список константных значений содержит перечисленные через запятую различные константы, совместимые с типом выражения. Выполнение оператора заключается в следующем: вычисляется значение выражения, если полученное значение указано в каком-либо списке констант выполняется соответствующий оператор 1,2,..., если полученное значение не указано ни в одном списке констант выполняется оператор 0. { } необязательная часть оператора. Пример Case CHIS of 0: Writeln(‘Ноль’); 1,3,5,7,9: Writeln(‘Нечетное’); 2,4,6,8: Writeln(‘Четное’) else Writeln(‘Не цифра’) end; Операторы цикла Оператор цикла с предусловием True While <логическое выражение> do <оператор>; выход False Выполнение оператора заключается в следующем: * пока значение логического выражения истинно - выполняется оператор в теле цикла; * в случае ложного значения логического выражения осуществляется выход из цикла. Так как истинность логического выражения проверяется в начале каждой итерации, цикл может не выполниться ни разу. Пример X:=1; { Y=0.256SinX, While X<=10 do для всех X=1..10 с шагом 1 } begin Y:=0.256*Sin(X); X:=X+1 end;{два оператора в теле цикла объединены с помощью составного} Оператор цикла с постусловием Repeat <оператор 1>;<оператор 2>;...;<оператор N> until <логическое выражение>; выход False True Выполнение оператора заключается в следующем: если значение логического выражения ложно, то выполняется группа операторов внутри цикла; в случае истинного значения логического выражения осуществляется выход из цикла. Поскольку проверка условия осуществляется в конце цикла, то цикл выполняется хотя бы один раз. Пример X:=1; Repeat { Y=0.256SinX, для всех X=1..10 с шагом 1 } Y:=0.256*Sin(X); X:=X+1 until X>10; Оператор цикла с параметром Оператор цикла с параметром организует выполнение одного оператора в теле цикла заранее известное число раз. Существуют два варианта оператора. For I:=N to M do <оператор>; или For I:=N downto M do <оператор>; где I - параметр цикла, являющийся ординальной переменной; N - выражение, определяющее начальное значение параметра цикла; M - выражение, определяющее конечное значение параметра цикла. Выполнение оператора заключается в следующем: * пока параметр цикла не больше (в первом варианте) или не меньше (во втором варианте) конечного значения -выполняется очередная итерация; * в противном случае осуществляется выход из цикла. Следует отметить, что после выхода из цикла параметр цикла становится неопределенным, за исключением случая, когда выход из цикла был осуществлен с помощью оператора Goto. Пример For X:=1 to 10 do For X:=10 downto 1 do Y:=0.256*Sin(X); или Y:=0.256*Sin(X); {При необходимости размещения нескольких операторов в теле цикла, их объединяют с помощью составного оператора} For X:=1 to 10 do begin Y:=0.256*Sin(X); Writeln(X,Y) {вывод таблицы результатов} end; МАССИВЫ Массив - совокупность конечного числа данных одного типа, объединенных общим именем. Одномерный массив - вектор A A1, A2, A3, ... AN B B1, B2, B3, ..., BM 0.1, 0.5, 0.7, ..., 1.9 12, 34, 56, ..., 13 A[I],B[J] - элементы массива, где I - индексы, указывающие номер или место данного элемента в массиве. Описание одномерного массива Var <имя массива>: array [<диапазон изменения индекса>] of <тип элементов>; Размерность массива может быть любой, элементы массива могут быть любого, в том числе и структурированнного типа, индекс может быть любого ординального типа, кроме типа Longint. Пример Var A: array [1..4] of real; B: array [1..3] of integer; Type MAS1=array[1..4] of real; MAS2=array[1..3] of integer; Var A: MAS1; B: MAS2; или Type I1=1..4; I2=1..3; MAS1=array[I1] of real; MAS2=array[I2] of integer; Var A: MAS1; B: MAS2; Пример for I:=1 to 4 do Read(A[I]); for I:=1 to 4 do begin Writeln(‘A[‘,I,’]=’); Read(A[I]) end; {Ввод элементов одномерного массива} или Пример {Вывод элементов одномерного массива} for J:=1 to 3 do Write(B[J]:3); {в строку 12 34 56} for J:=1 to 3 do Writeln(‘B[‘,J,’]=’,B[J]:3); {в столбец B[ 1]= 12 B[ 2]= 34 B[ 3]= 56} Двумерный массив - матрица D11 D12 D13 D 1 3 2 4 6 7 = D21 D22 D23 D[I,J] - элемент матрицы, I- номер строки, J- номер столбца. Описание двумерного массивa Var <имя массива>: array[<диапазон строк>,<диапазон столбцов>] of <тип элементов>; Пример Var D:array[1..2,1..3] of integer; или Type MATR=array[1..2,1..3] of integer; Var D: MATR; Type ST=array[1..2] of integer; MATR=array[1..3] of ST; Var D: MATR; Пример for I:=1 to 2 do for J:=1 to 3 do Read(D[I,J]); {Последовательность ввода: 1 3 2 4 6 7} {Ввод элементов двумерного массива} Пример {Вывод элементов двумерного массива} for I:=1 to 2 do for J:=1 to 3 do Write(D[I,J]); {вывод в строку 1 3 2 4 6 7} или for I:=1 to 2 do begin Writeln;{переход на новую строку} for J:=1 to 3 do Write(D[I,J]) {вывод элементов строки} end; {результат вывода: 132 467} В среде Turbo-Pascal 7.0 элементы матрицы располагаются в оперативной памяти построчно. Для обращения к элементам матрицы удобно использовать приведенный индекс ,IPR- это порядковый номер элемента массива в памяти. Например: Var D: array [1..M,1..N] of integer; тогда для D[I,J] IPR=(I-1)*N+J Начальные значения элементам массивов в среде Turbo-Pascal 7.0 могут быть заданы с использованием типизированных констант. Пример Type MAS2=array [1..3] of integer; MATR=array[1..2,1..3] of integer; Const B:MAS2=(12,34,56);{одномерный массив: 12 34 56} D:MATR=((1,3,2),(4,6,7));{двумерный массив: 1 3 2 4 6 7}