Оператор цикла с предусловием
Оператор цикла с предусловием целесообразно использовать в случаях, когда число повторений тела цикла заранее неизвестно и тело цикла может не выполняться. Во многом этот оператор аналогичен оператору repeat... until, но проверка условия выполняется в начале оператора. Формат оператора цикла с предусловием: While <условие> do <0ператор>; Оператор тела цикла выполняется до тех пор, пока логическое выражение не примет значение false, то есть, в отличие от цикла с постусловием, цикл выполняется при значении логического выражения true. Пример. i:=30; While (i<40) do i:=i+1; // если (i>40)? – ни разу Write(i); // если (i>10)? – бесконеч. Если перед первым выполнением цикла условие не выполняется (значение логического выражения равно false), то тело цикла вообще не выполняется и происходит переход на оператор, следующий за оператором цикла. Задание 9. Составить программу для решения методом Крамера СЛАУ 2?2 с произвольными целыми коэффициентами. В случае линейно-зависимых уравнений системы предусмотреть вывод сообщения “Infinitely many solutions”. Задание 10. Составить программу, которая вводит с клавиатуры целые числа до тех пор, пока их сумма не станет больше 100. Эту сумму и число слагаемых вывести на экран. Задание 11. Составить программу, которая вычисляет y=sin x при 2?x?4 с шагом h=0,2 и выводит на экран:
Оператор доступа Оператор доступа служит для удобной и быстрой работы с составными частями объектов, в том числе с полями записей. Напомним, что для обращения к полю записи необходимо указывать имя записи и имя этого поля, разделенные точкой. Аналогичным путем образуется имя составной части какого-либо объекта, например, формы или кнопки. Оператор доступа имеет следующий основной формат:
with <имя объекта> do <оператор>; Для обращения к составной части объекта можно не указывать имя этого объекта в операторе, расположенном после слова do, т.к. оно уже задано после слова w ith. Пример. // Составные имена пишутся полностью Form1.Canvas.Pen.Color:= clRed; Form1.Canvas.Pen.Width:=5; Form1.Canvas.Rectangle(10, 10, 100, 100); Или WithForm1.Canvas do begin Pen.Color:=clRed; Pen.Width:=5; Rectangle (10, 10, 100, 100); end; В обоих приведенных примерах на форме красным пером толщиной пять пикселей рисуется прямоугольник. Для обращения к свойствам и методу (процедуре) рисования формы удобно использовать оператор доступа (второй вариант). Работа с массивами Элементы массива располагаются в памяти последовательно. Многомерные массивы располагаются так, что самый правый индекс возрастает самым первым. Индексированные элементы массива называют индексированными переменными. Как правило, операции над массивами – это операции над их элементами. Например, чтобы ввести матрицу A размером 3x4 (3 строки, 4 столбца), можно воспользоваться следующей последовательностью операторов: for i:=1 to 3 do for j:=1 to 4 do read(a[i, j]); При этом значения элементов надо вводить через пробел в следующем порядке: a[1,1], a[1,2], a[1,3], a[1,4], a[2,1],…, a [3,4]. Можно вводить и выводить значения отдельных элементов, а не всего массива, например, read (a [2,3]); Иногда требуется осуществить поиск в массиве элементов, удовлетворяющих некоторым условиям. Например, пусть надо выяснить, сколько элементов массива A имеют нулевое значение. С этой целью вводят вспомогательную переменную k и используют операторы for и if: k:=0; for i:=1 to 5 do if a[i]=0 then k:=k+1; После выполнения цикла значение переменной k будет равно числу элементов массива A с нулевым значением. Перестановку значений элементов массива также осуществляют с помощью вспомогательной переменной. Пусть, например, надо поменять значения 1-го и 5-го элементов одномерного массива A. Введем вспомогательную переменную того же типа, что и элементы массива A, а затем воспользуемся следующими операторами;
c:=a[5]; a[5]:=a[1]; a[1]:=c; Пусть Задание 12. Составить программу, которая: вводит с клавиатуры A в виде матрицы; вычисляет и выводит на экран сумму элементов 2-ой строки матрицы A; строит матрицу B по формуле: bij = aij +1 для всех i, j и выводит B на экран в виде матрицы. Задание 13. Составить программу, которая: вводит с клавиатуры A в виде матрицы и выводит на экран сумму всех четных элементов этой матрицы; строит матрицу C по формуле: { c1j = a3j, c2j = a2j +10, c3j = - a1j } и выводит ее на экран в виде матрицы. Задание 14. Составить программу, которая: вводит с клавиатуры A в виде матрицы; строит матрицу C по формуле: dij = sin aij, для всех i, j и выводит ее на экран в виде матрицы; определяет, сколько элементов dij >0,1; выводит на экран эти элементы и их количество. Задание 15. Составить программу, которая: вводит с клавиатуры A в виде матрицы; меняет местами 1-й и 4-й столбцы и выводит полученную матрицу на экран.
Подпрограммы Подпрограмма – это логически законченная и специальным образом оформленная группа операторов, имеющая имя. Подпрограмму можно вызывать неограниченное число раз из различных частей программы. Использование подпрограмм позволяет улучшить структуру программы и сократить ее размер. По структуре подпрограмма почти полностью аналогична программе. Она тоже содержит заголовок и блок, однако в блоке подпрограммы отсутствует раздел подключения модулей. Кроме того, заголовок подпрограммы по своему оформлению отличается от заголовка программы. Работа с подпрограммой включает два основных этапа: o описание подпрограммы; o вызов подпрограммы. Любая подпрограмма должна быть предварительно описана, после чего до пускается ее вызов. При описании под программы задаются ее имя, список параметров и дейст вия, выполняемые подпрограммой. При вызове подпрограммы указывают имя подпрограммы и список аргументов (фактиче ских параметров), передаваемых подпрограмме для работы.
В различных модулях Delphi имеется много стандартных подпрограмм, которые можно вызывать без предварительного описания. Некоторые из них приведены при описании типов данных и выражений. Кроме того, программист может создавать свои подпрограммы, которые называются пользовательскими. Подпрограммы делятся на процедуры и функции, имеющие много общего. Основное различие между ними заключается в том, что функция может под своим именем возвращать значение в качестве результата, поэтому ее можно использовать как операнд выражения. С подпрограммой взаимодействие может осуществляться по управлению и по данным. Взаимодействие по управлению – это передача управления из программы в подпрограмму и организация возврата в программу. Взаимодействие по данным заключается в передаче подпрограмме данных, над которыми она выполняет определенные действия. Такое взаимодействие может осуществляться следующими основными способами: o с использованием файлов; o с помощью глобальных переменных; o с помощью параметров. Наиболее часто применяется последний способ. При этом различают параметры и аргументы. Параметры (формальные параметры) являются элементами подпрограммы и используются при описании алгоритма, выполняемого подпрограммой. Аргументы (фактические параметры) являются элементами вызывающей программы. Они замещают параметры при вызове подпрограммы. При этом осуществляется проверка на соответствие типов и количества параметров и аргументов. Имена параметров и аргументов могут различаться, однако их количество и порядок следования должны совпадать, а типы параметров и соответствующих им аргументов должны быть совместимыми. Для прекращения работы подпрограммы можно использовать процедуру Exit, которая прерывает выполнение операторов подпрограммы и возвращает управление вызывающей программе. Подпрограммы можно вызывать не только из программы, но и из других подпрограмм. Процедуры При описании процедуры указывается заголовок и блок, который не отличается от блока программы. Заголовок состоит из ключевого слова procedure, имени процедуры и необязательного списка параметров в круглых скобках с указанием типа каждого параметра. Формат описания процедуры:
Procedure <Имя процедуры > [(формальные параметры)]; <разделы описаний> begin <раздел операторов> end; Для обращения к процедуре используется оператор вызова процедуры. Он состоит из имени процедуры и списка аргументов, заключенного в круглые скобки. Пример. Program One; var z, f, z1, f1, a, b, c, d: real;... procedure Calculation(x, y: real; var root, dif: real); var s: real; begin s:=x*x + y*y; root:= sqrt (s); dif:= x - y; end; Begin ... Calculation(1.25, 3.48, z, f); ... Calculation(0.16, 2.8, z1, f1); ... Calculation(a+b, a-b, c, d); ... writeln(‘z=’, z:5:3, ‘ f=’, f:5:3, ‘ z1=’, z1:5:3, ‘ a=’, a:6:4, ‘ b=’, b:6:4); ... End. Примечание. Если процедура возвращает в основную программу какие-то значения, соответствующие параметры должны быть описаны как параметры-переменные со словом var. Функции Описание функции состоит из заголовка и блока. Заголовок содержит ключевое слово function, имя функции, необязательный список формальных параметров, заключенный в круглые скобки, и тип значения, возвращаемого функцией. Формат описания функции: function <Имя > [(формальные параметры)]:<тип результата>; <разделы описаний> begin <раздел операторов> end; Возвращаемое значение может иметь любой тип, кроме файлового. Блок функции представляет собой локальный блок, по структуре аналогичный блоку процедуры. В теле функции должен быть хотя бы один оператор присваивания, в левой части которого стоит имя функции. Именно он и определяет значение, возвращаемое функцией. Если таких операторов несколько, то результатом выполнения функции будет значение последнего оператора присваивания. В этих операторах вместо имени функции можно указывать переменную result, которая создается в качестве синонима для имени функции. В отличие от имени функции, переменную result можно использовать в выражениях блока функции. С помощью переменной result можно в любой момент получить внутри блока доступ к текущему значению функции. Замечание. Имя функции можно использовать в выражениях блока функции, однако эти приводит к рекурсивному вызову функции самой себя. Вызов функции осуществляется по ее имени с указанием в круглых скобках списка аргументов, которого может и не быть. Аргументы должны соответствовать формальным параметрам, указанным в заголовке при описании функции, и иметь те же типы. В отличие от процедуры, имя функции может входить как операнд в выражения. Пример. Program Two; var x, y, z, z1, z2: real;... function Gamma(a, b: real): real; begin Gamma:= sqrt(a*a + b*b); end; Begin ... z:=Gamma(1.5, 3.48); writeln (‘z=’, z:5:3);
... z1:=Gamma(0.16, 2.8); ... writeln (sin(Gamma(0.1, 0.2)):6:4); ... End.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|