Оператор цикла с постусловием

Реализуется с помощью оператора repeat. В этом случае условие проверяется после цикла, до тех пор, пока проверка указанного условия будет давать результат «ложь», т.е. пока условие не выполнено. Важно отметить, что если указанное условие сразу окажется истинным, то цикл все равно выполнится 1 раз. Для цикла с постусловием сначала выполняется тело цикла, а потом проверяется условие. Конструкция цикла:

Repeat

Тело цикла

until логическое выражение

Важно! Операторы begin…end здесь не требуются.

Метки

В большинстве случаев алгоритмы требуют организации программных переходов. В Паскаль требуется оператор безусловного перехода:

goto метка;

метка – произвольный идентификатор, позволяющий именовать определенный оператор в программе. После метки необходимо поставить двоеточие. Пример:

goto M2;

M2: write (D);

ЗАДАЧИ:

1. Определить количество учеников сдавших экзамен по предмету. Количество учеников ввести с клавиатуры.

2. Определить стоимость партии товара. Количество единиц товара и стоимость за единицу товара ввести с клавиатуры.

3. Найти все целые цифры в диапазоне от 100 до 999, сумма цифр которых больше произведения этих цифр.

4. Необходимо построить график функции y (N)=sin(0.2*N), где N – представляет собой последовательность целых чисел от 0 до 20. Для отметки каждой точки графика выбрать символ звездочку.

ПРИМЕЧАНИЕ! Одно деление на оси ординат (одно знакоместо) соответствует 0.1. Ось Х проходит параллельно левой границе экрана на расстоянии 20 символов.

Урок 5. Одномерные и двумерные массивы

Массив – это набор однотипных данных, упорядоченных по номеру (индексу).

Массивы относятся к составным (структурированным) типам данных. Массивы однородны, т.е. имеют одинаковый тип.

По количеству размерностей массивы разделяются на одномерные массивы (векторы), двумерные (матрицы) и многомерные.

По типу элементов массивы делятся на массивы простых типов данных (массив целых чисел, массив вещественных чисел и т.д.) и массивы структурированных типов данных (массив массивов, массив записей и т.д.)

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

Одномерные массивы

Одномерный массив представляет собой последовательность данных записанных в строку, каждый элемент массива имеет 1 порядковый номер (индекс). На месте индекса может стоять константа, переменная, выражение.

Любой массив сначала надо объявить:

Var

имя массива:array[тип индекса]of тип элементов;

Например:

Var

А:array[1..10]of integer;

Для ввода и вывода, а также для обработки элементов массива используют цикл со счетчиком:

For i:=1 to n do A[i]:=выражение; For i:=1 to n do Read(A[i]); For i:=1 to n do Write(A[i]);

Запись A[2*i] означает, что будут рассмотрены четные элементы массива.

Запись A[2*i-1] означает, что будут рассмотрены нечетные элементы массива.

Двумерные массивы

Двумерный массив представляет собой таблицу из однотипных элементов, организованную по строкам и столбцам. Элемент такого массива записывается с 2-мя индексами, первый из которых – номер строки, второй – номер столбца.

Объявление массива:

Var

имя массива:array[тип индекса строки, тип индекса столбца]of тип элементов;

Например:

Var

А:array[1..10,1..10]of integer;

Для ввода и вывода, а также для обработки элементов массива используют 2 цикла со счетчиком:

For i:=1 to n do For j:=1 to m do A[i,j]:=выражение; For i:=1 to n do For j:=1 to m do Read(A[i,j]); For i:=1 to n do For j:=1 to m do Write(A[i,j]);

ПРИМЕЧАНИЯ!

1. Массив можно заполнить случайными числами (функцией random(N)).

2. Подсчет суммы элементов массива выполняется по формуле: S=S+A[i]

3. Поиск максимального элемента выполняется по алгоритму:

· в некоторую переменную N записывается значение 1 элемента массива

· в цикле (от второго элемента) проверяем: если значение элемента массива больше N, то переписываем это значение в переменную N

4. Формула для заполнения массива: A[i]:=A[i-1]+A[i-2] называется итерационной, а числа – «числами Фибоначчи», означает, что каждый элемент массива равен сумме двух предыдущих.

5. Инвертирование элементов массива выполняется по алгоритму в цикле:

· некоторой переменной N присваивается значение первого элемента массива

· первому элементу массива присваивается значение последнего элемента массива

· последнему элементу массива присваивается значение N

6. Для квадратной матрицы (количество строк = количеству столбцов) справедливо следующее:

· для индексов элементов, стоящих на главной диагонали: i=j

· для индексов элементов, стоящих на побочной диагонали: i+j = n+1 (n – количество строк или столбцов)

· для индексов элементов, стоящих выше главной диагонали: i<j

· для индексов элементов, стоящих ниже главной диагонали: i>j

ЗАДАЧИ (ОДНОМЕРНЫЕ МАССИВЫ):

1. Значения элементов массива F[1..10] задаются с помощью следующего фрагмента программы:

F[1]:=1; F[2]:=1;

For i:=3 to 10 do

F[i]:=F[i-1]+F[i-2];

Какое значение будет иметь элемент массива F[9]?

2. Значения элементов массива A[1..10] задаются с помощью следующего фрагмента программы:

p:=1;

For i:=1 to 5 do

begin

A[2*i-1]:=i;

A[2*i]:=p;

p:=p*2

end.

Какое значение будет иметь элемент массива A[4], A[9]?

3. В программе используется одномерный целочисленный массив А с индексами от 1 до 10. Чему будут равны элементы массива после выполнения фрагмента программы:

For i:=1 to 10 do

A[i]:=i*5;

For i:=1 to 5 do

Begin

p:=A[i];

A[i]:=A[11-i];

A[11-i]:=p

End;

4. В программе используется одномерный целочисленный массив А с индексами от 1 до 10. Чему будут равны элементы массива после выполнения фрагмента программы:

For i:=1 to 10 do

A[i]:=2*i-1;

p:=A[10];

For i:=10 downto 2 do

A[i]:=A[i-1];

A[1]:=p;

5. Значения двух массивов A[1..10], B[1..10] задаются с помощью фрагмента программы. Сколько элементов массива будут иметь отрицательные значения?

p:=12;

For i:=1 to 10 do

Begin

A[i]:=p;

p:=p-2;

end; k:=1;

For i:=1 to 10 do

begin

B[i]:=A[i]*k;

k:=-k;

end;

6. Объявить целочисленный массив из 20 элементов. Заполнить массив случайными числами в интервале от 0 до 99. Вывести исходный массив на экран. Посчитать и вывести на экран сумму элементов данного массива.

7. Объявить целочисленный массив из 5 элементов. Заполнить его с клавиатуры. Найти сумму всех элементов массива, которые больше 9.

8. Объявить целочисленный массив из 10 элементов. Заполнить массив случайными числами в интервале от 0 до 20. Вывести исходный массив на экран. Посчитать и вывести на экран среднее арифметическое значение элементов данного массива.

9. Объявить целочисленный массив из 10 элементов. Заполнить массив случайными числами в интервале от 0 до 50. Вывести исходный массив на экран. Посчитать и вывести на экран максимальное значение элементов данного массива и порядковый номер этого элемента в массиве.

10.Объявить целочисленный массив из 10 элементов. Заполнить массив случайными числами в интервале от 0 до 50. Вывести исходный массив на экран. Вывести на экран инвертированный массив, в котором элементы будут поменяны местами: первый элемент меняется значением с последним, второй с предпоследним и т.д.


Наши рекомендации