|
Оператор цикла с параметрамиСчетный оператор цикла FOR имеет структуру: FOR i:=a TO b DO <оператор>; FOR, TO, DO – зарезервированные слова (для, до, выполнить); i – переменная цикла типа INTEGER; (счётчик циклов) a – начальное значение счётчика циклов (тип INTEGER); b – конечное значение счётчика циклов (тип INTEGER); <оператор> – произвольный оператор Турбо Паскаля. Шаг изменения параметра цикла равен единице. Алгоритм выполнения оператора цикла с параметрами при выполнении оператора FOR: 1. счётчику циклов присваивается начальное значение i:=a; 2. проверяется условие i > b (счётчик циклов больше конечного значения); 3. если условие i > b выполняется, то на пункт 7, иначе на пункт 4 4. выполняется тело цикла; 5. счётчик увеличивается на единицу: i:=i + 1; 6. переход на 2; 7. при выполнении условия i > b цикл заканчивается. Пример: Найти сумму значений переменной цикла. Решение: Фрагмент программы с оператором цикла запишется в виде: For i:= 1 to 10 do s:=s+i; Writeln(‘s=’, s); Счётный оператор цикл FOR может иметь такую структуру: FOR i: = b DOWNTO a DO <оператор>; Замена зарезервированного слова TO на DOWNTO означает, что шаг наращивания переменной цикла равен (-1). Пример: Найти сумму значений переменной цикла. Фрагмент программы с оператором цикла запишется в виде: For i:=10 downto 1 do s:=s+i; Writeln(‘s=’, s); {Результат получится тот же, что и в примере с циклом For..to…do}. При работе с оператором FOR следует соблюдать ряд правил: 1. Нельзя войти в цикл, минуя оператор FOR. 2. Нельзя изменять параметры цикла (a, b) внутри цикла. 3. Параметры цикла и переменная цикла должны быть целыми. 4. Шаг цикла может быть единица или минус единица. 5. Естественное окончание цикла осуществляется при условии i > b при шаге=1. 6. Из цикла можно выйти до естественного окончания цикла по условию. Оператор цикла WHILE с предусловием Структура оператора имеет вид: WHILE <условие> DO <оператор>; WHILE, DO – зарезервированные слова (WHILE –пока; DO – выполнить); <условие> – выражение логического типа; <оператор> – произвольный оператор Турбо Паскаля. Если выражение <условие> имеет значение TRUE, то выполняется <оператор>, после чего вычисление выражения <условие> и его проверка повторяются. Если <условие> имеет значение FALSE, оператор WHILE прекращает свою работу. Пример: Переписать фрагмент примера с циклом While…do, используя оператор цикла с предусловием. Решение: Фрагмент программы с оператором цикла запишется в виде: s:=0; i:=1; while i<=10 do Begin s:=s+i; i:=i+1; End; Writeln(‘s=’, s); В примере рассматривается составной оператор цикла, тело цикла заключено в операторные скобки. Оператор цикла REPEAT…UNTIL с постусловием Структура оператора имеет вид: REPEAT <тело_цикла> UNTIL <условие>; REPEAT, UNTIL – зарезервированные слова (повторять до тех пор, пока не будет выполнено условие); <тело_цикла> – произвольная последовательность операторов Турбо Паскаля; <условие> – выражение логического типа. Операторы, входящие в <тело_цикла>, выполняются хотя бы один раз, после чего вычисляется выражение <условие>: если его значение есть FALSE, операторы <тело_цикла> повторяются, в противном случае оператор REPEAT…UNTIL завершает свою работу. Пример: Переписать фрагмент примера с циклом While…do, используя оператор цикла с постусловием. Решение: Фрагмент программы с оператором цикла запишется в виде: s:=0; i:=1; repeat s:=s+i; i:=i+1; Until i>10; Writeln(‘s=’,s); В пример цикл выполняется пока переменная i £ 10, при i >10 цикл закончится. Пример: Написать программу циклического алгоритма рис.11. В цикле вычислить значение функции z= x* y при условии, что одна из переменных - x меняется в каждом цикле, а другая переменная- у не меняется и может быть любым целым числом. Решение: Программа алгоритма цикла со счётчиком имеет вид: PROGRAM PR5; Var x, y, z, i, n:integer; begin {циклический алгоритм} writeln (‘ввести x, y, количество циклов-n’); readln (x, y, n); for i:=1 to n do {оператор цикла с параметрами} begin z:=x*y; Writeln (‘x= ’, x, ‘ y= ’, y, ‘ z= ’, z); x:=x+1; End; {конец оператора цикла с параметрами} End. Если неизвестно количество циклов, то следует выбрать любой из двух операторов цикла: с предусловием или с постусловием. Пример: Пока y>x вычислить у=у-x,, если y=30, x=4. Вывести на экран количество циклов и значения переменной y в цикле. Алгоритм этой задачи представлен в виде блок-схемы рис.12. Решение: Программа алгоритма цикла с предусловием имеет вид: PROGRAM PR6; Var i, x, y: integer; begin {циклический алгоритм} x:=4; y:=30; i:=0; {оператор цикла с предусловием} while y>x do begin y: = y – x; i:=i+1; readln (‘i=’, i, ‘x= ’, x, ‘y= ’, y); end; {конец оператора} end. В примере используется оператор цикла с предусловием, который работает при условии y>x. Условие проверяется при входе в цикл. Пример: Составитьпрограмму для алгоритма, представленного на рисунке 13, используя оператор цикла с постусловием. Цикл выполняется при условии y>x, но в конце оператора проверяется условие выхода из цикла (y<=x). Решение: Программа алгоритма цикла с постусловием имеет вид: PROGRAM PR7; Var i, x, y: integer; begin {циклический алгоритм} x:=4; y:=30; i:=0; {оператор цикла с постусловием} repeat y: = y – x; i:=i+1; readln (‘i=’, i, ‘x= ’, x, ‘y= ’, y); until y<=x; {конец оператора} end. Программирование. Массивы Понятие и описание массивов Массивом называются последовательность однотипных объектов, обозначаемая одним именем. Массив характеризуется размером и размерностью. Размер массива - это количество элементов в нём. Размерность - это количество индексов в скобках. Массив состоит из элементов. Чтобы выделить один из элементов массива, надо указать имя массива и номер элемента в нем. Номер элемента называется индексом, индекс указывается в квадратных скобах и может быть числом, переменной, выражением. Имя массива образуется по правилам образования имен переменных. Пример: А [20], B [5,3]. Если для выделения элемента нужен 1 индекс, массив называется одномерным, два – двумерным и т.д. Массивы относятся к структурированным типам данных. В программе массив можно описать двумя способами: 1) непосредственно в разделе описаний переменных: Var имя_массива: array [1..N] of тип_элементов; где, N – максимальное возможное количество элементов массива. Пример: var a, b: array [1..10] of real; d, y: array [1..5,1..5] of integer; 2) объявлением типа – массива (удобно, когда требуется несколько одинаковых массивов). Пример: type mas= array [1..10] of real; var c,d:mas; { два массива типа mas} Элементы массива могут быть любого типа, а индексы могут быть любого порядкового типа (например, типа int, char, …). Но обычно используется тип – диапазон: 1..10, N..M. Число элементов массива и его границы фиксируются при его описании и не могут быть изменены в процессе выполнения программы. Границы диапазона [N..M} могут быть заданы константами в разделе описания констант. В ряде задач требуется ввести массив в виде константы, в котором записывается табличные значения. (Например, кривая намагничивания стали или начальное распределение температуры рассматриваемого объекта). Элементы такого массива-константы не могут быть изменены. Пример: program PR8; const y: array [1..5] of integer=(7,1,5,3,9); var k: integer; begin for k:=1 to 5 do writeln (y[k]); end. Ввод и вывод массивов Ввод и вывод массивов осуществляется поэлементно. Часто это делают с помощью циклов (обычно используется цикл FOR) Пример: Ввести с клавиатуры значения элементов одномерного массива вещественного типа состоящего из 10 элементов. Вывести элементы массива на экран. Решение: program PR9; var A: array[1..10] of integer; k: integer; begin for k:=1 to 10 do readln (A[k]); for k:=1 to 10 do writeln (A[k]); end. Двумерные массивы (матрицы) можно вводить по строкам или по столбцам. Пример: Пусть требуется ввести массив А (3;4): а а а Решение: а) ввод и вывод по строкам: program PR10; var a:array [1.. 3, 1.. 4] of integer; i; j:integer; begin for i:=1 то 3 for j:=1 то 4 readln (a[i, j]); for i:=1 то 3 for j:=1 то 4 writeln (a[i, j]); end. б) ввод по столбцам: begin for i:=1 то 4 for j:=1 то 3 readln (а[j, i]); {изменен порядок индексов} Операции с массивами Операции с массивом производятся только с отдельными элементами массива. С элементами массива можно делать все операции, которые разрешены для базового типа массива. Если массив числовой, то математические, если символьный или строковый, то, соответственно, операции с символьными или строковыми переменными. Пример: Написать программу вычисления произведения положительных элементов одномерного массива целых чисел. Решение: program Pr11; var a: array [1..100] of integer; p, n, i: integer; begin p: =1; writeln ('введите размер массива n<=100'); readln (n); writeln ('ввод элементов массива'); for i:=1 to n do begin writeln(‘ввести a[ ‘, i, ‘]= ‘]); readln (a[i]); end; for i:=1 to n do if a[i]>0 then p:= p * a[ i ]; writeln ('Произведение =', p); readln; end. Двумерные массивы Пример: Написать программу вычисления произведения положительных элементов второй строки двумерного массива целых чисел. Решение: program Pr12; var a:array [1.. 10, 1.. 10] of integer; p, i, j, n, m: integer; begin writeln(‘ Введите n<=10, m<=10 ’); readln (n,m); writeln(‘ Введите элементы массива по строкам ’); for i:=1 to n do for j:=1 to m do readln(a[i, j]); p:=1; for j:=1 to m do if a[2, j]>0 then p:= p * a[2, j]; writeln(‘ Произведение элементов p=’, p); readln; end.
![]() ![]() ЧТО И КАК ПИСАЛИ О МОДЕ В ЖУРНАЛАХ НАЧАЛА XX ВЕКА Первый номер журнала «Аполлон» за 1909 г. начинался, по сути, с программного заявления редакции журнала... ![]() Что вызывает тренды на фондовых и товарных рынках Объяснение теории грузового поезда Первые 17 лет моих рыночных исследований сводились к попыткам вычислить, когда этот... ![]() Конфликты в семейной жизни. Как это изменить? Редкий брак и взаимоотношения существуют без конфликтов и напряженности. Через это проходят все... ![]() Что будет с Землей, если ось ее сместится на 6666 км? Что будет с Землей? - задался я вопросом... Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:
|