Пример. Напечатать  столбиком  все  целые  числа  от  30  до  45.

var  i : integer; 

begin

for  i:=30  to  45  do  writeln(i);

readln

end.

Пример. Вычислить  сумму  22 + 23 + 24 +  … + 210

Для  решения  этой  задачи  сначала  ответим  на  вопрос:  сколько  слагаемых  в  этой  сумме?  Слагаемые  –  это  степени  двойки  от  2ой  до  10ой.  Следовательно,  имеем  9  слагаемых.  Каждое  следующее  слагаемое  получается  из  предыдущего  умножением  на  2.  Пусть  a –  очередное  слагаемое,  s  –  сумма.  Используя  эти  соображения,  запишем  решение:

var  i, a, s : integer;

begin

a:=2;  s:=0;

for  i:=1  to  9  do

begin  a:=a*2;  s:=s+a  end;

writeln(s);

readln

end.

Оператор  цикла  с  предусловием  WHILE  имеет  следующий  формат:

while  <логическое выражение>  do  <оператор>;

Выполняется  оператор  следующим  образом.  Вначале  вычисляется  значение  логического  выражения.  Если  это  значение  равняется  true,  то  выполняется  тело  цикла –  оператор,  стоящий  после  слова  do.  После  этого  снова  вычисляется  значение  логического  выражения  и  процесс  повторяется.  Цикл  прекращается,  если  при  очередном  вычислении  логического  выражения  его  значение  окажется  равным  false.  Если  при  первом  вычислении  значения  логического  выражения  окажется,  что  оно  равно  false,  то  тело  цикла  не  выполнится  ни  разу.  В  качестве  оператора  тела  цикла  может  быть  использован  составной  оператор,  заключённый  в  операторные  скобки  begin.. end.

НЕ нашли? Не то? Что вы ищете?

Пример. Дано  натуральное  число  n ( n≠0 ).  Подсчитать  количество  цифр  данного  числа.

var  n : longint;  k : byte;

  begin

readln(n);  k:=0;

while  n<>0  do

begin  inc(k);  n:=n div 10  end;

writeln(k);

readln

end. 

Оператор  цикла  с  постусловием  REPEAT  имеет  следующий  формат:

repeat  <оператор>  until  <логическое  выражение>;

Выполняется  оператор  repeat  следующим  образом.  В  начале  выполняется  оператор  тела  цикла.  Затем  вычисляется  значение  логического  выражения.  Если  оно  равняется  false,  то  выполняется  следующая  итерация  цикла.  В  противном  случае  цикл  прекращается.  Задача  о  вычислении  количества  цифр  данного  натурального  числа  n  может  быть  решена  с  помощью  оператора  цикла  с  постусловием  следующим  образом:

Пример.

var  n : longint;  k : byte;

begin 

readln(n);  k:=0;

repeat  inc(k);  n:=n div 10  until  n=0;

writeln(k);

readln

end.

Лабораторная работа 5

Массивами называют структурные переменные, представляющие набор однотипных элементов массива. Доступ к элементам массива, называемым индексными переменными, осуществляется по имени массива и набору индексов, однозначно определяющих положение элемента в массиве. Если элементы массива сами не являются массивами, то такой массив называют одномерным и для обращения к элементам используют только один индекс, иначе его называют многомерным (двумерным, трехмерным и т. д.). В качестве индексов могут выступать выражения (в частности, константы и переменные) ординальных (порядковых) типов

(в том числе булевых и целых), которые записывают после имени массива в квадратных скобках через запятую. В этом разделе ограничимся рассмотрением одномерных статических массивов с числовыми индексами. Имена, представляющие типы-массивы, объявляют, как и имена прочих пользовательских типов, в разделе type. Например,

type

tX=array[1..9] of Byte;

tY=array[-2..2] of Real;

Здесь тип tX объявлен как тип целочисленного одномерного массива из 9 элементов, значениями которых могут быть числа из диапазона 0....255, а индексами. выражения целого типа со значениями от 1 до 9; тип tY объявлен как тип одномерного массива вещественных данных (типа Real) из пяти элементов, индексами которых могут быть выражения целого типа со значениями -2; -1; 0; 1; 2. Переменные-массивы объявляют, как и переменные прочих

типов, в разделе var. Им можно задавать начальные значения (что удобно при отладке программ), записав их списком в круглых скобках через запятую, причем длина списка должна быть равна размеру массива. Например, в объявлениях

var

X, Z:tX;

Y:tY=(1.2, 4.2, -5.1, 4.4, -1.5);

переменные X и Z будут иметь тип tX, а переменная Y. тип tY с начальными значениями своих элементов Y[-2]=1.2, Y[-1]==4.2, Y[0]=-5.1, Y[1]=4.4, Y[2]=-1.5.

При решении задач, связанных с обработкой множеств значений в массивах или получаемых в результате вычисления значений функций, может потребоваться сохранение результатов вычислений для дальнейшего использования. В таких случаях необходимо выделить память для хранения результатов, объявив в разделе var массив соответствующего типа, и очередное вычисленное значение сохранять в соответствующей ячейке массива, присваивая его индексной переменной. элементу этого массива с очередным значением индекса. Объявление статических массивов приводит к резервированию области памяти для хранения значений элементов, размеры которой нельзя изменить во время работы программы. Поэтому для обеспечения массовости алгоритма программы необходимо объявлять массивы с максимально возможными размерами исходя из условий применения программы, обычно формулируемыми в задании на разработку. Свойство массовость алгоритма предполагает его применимость к различным, заранее оговоренным, наборам данных, в частности задаваемым при вводе. В рассмотренном выше примере объявления массива X, если он будет представлять исходные данные для какого-либо алгоритма, свойство «массовость» обозначает, что могут обрабатываться любые наборы от одного до девяти чисел с любыми значениями от 0 до 255. Например, все девять элементов массива или только N первых, N < 9.

Пример. Составить программу вычисления и сохранения в массиве Y значений функции y = sin x и в массиве X. соответствующих значений аргумента. Аргумент должен изменяться с шагом

dX от начального значения X0:

program Project1;

{$APPTYPE CONSOLE}

uses

SysUtils;

type

tMas=array[1..10] of Real;

var

i:Integer;

X0, dX:Real;

X, Y:tMas;

begin

Write('Введите начальное значение X и шаг dX: ');

ReadLn(X0, dX);

for i:=1 to 10 do

begin

X[i]:=X0;

Y[i]:=Sin(X0);

X0:=X0+dX;

end;

for i:=1 to 10 do

WriteLn(X[i]:10:4,Y[i]:10:4);

ReadLn;

end.

Организация программ со структурой вложенных циклов со структурой с вложенным циклом называют такую, в которой внутри одного цикла находится один или несколько других. Цикл, расположенный внутри другого, называют внутренним. Цикл, внутри которого находятся другие, называют внешним. Таким образом, один и тот же цикл может выступать и в роли внешнего (если он содержит внутри себя другие циклы), и в роли внутреннего (если он расположен внутри другого цикла). Правильная организация вложенного цикла состоит в том, что внутренний цикл должен целиком располагаться внутри внешнего. Допустимыми являются следующие варианты организации вложенных циклов. Первый вариант вложенного цикла. внутри внешнего цикла последовательно расположено несколько внутренних:

for I:=1 to N do //внешний цикл

begin

. . . . . .

for J:=1 to M do //первый внутренний цикл

begin

. . . . . .

end; // конец первого внутреннего цикла

. . . . . .

for K:=1 to L do //второй внутренний цикл

begin

. . . . . .

end; // конец второго внутреннего цикла

. . . . . .

end; // конец внешнего цикла

Частным случаем первого варианта организации вложенных

циклов является следующий:

for I:=1 to N do

for J:=1 to M do

for K:=1 to L do

A[I, J,K]:=I*J*K;

Следует иметь в виду, что во вложенном цикле параметры каждого из них изменяются разновременно, т. е. при очередном (фиксированном) значении параметра внешнего цикла параметр внутреннего последовательно принимает все возможные значения. Затем параметр внешнего цикла принимает следующее по порядку значение, при этом параметр внутреннего цикла вновь принимает все возможные значения. Поэтому вложенный цикл часто называют циклом с разновременно изменяющимися параметрами. Таким образом, если внутренний цикл должен выполняться M раз, а внешний. N раз, то операторы, стоящие во внутреннем цикле, выполнятся в общей сложности MхN раз, т. е. трудоемкость выполнения вложенных циклов может быть весьма высокой, что надо учитывать при разработке программ. Например, если M = N = 100, то операторы внутреннего цикла будут выполняться 10 000 раз:

//Вычисление и вывод таблицы

//умножения чисел от 1 до 100

for I:=1 to 100 do

for J:=1 to 100 do

begin

K:=I*J; // умножение выполняется 10000 раз

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9