Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практикум Информатика.doc
Скачиваний:
31
Добавлен:
01.02.2015
Размер:
609.28 Кб
Скачать

Порядок выполнения работы

  1. Выберите метод решения задачи.

  2. Выберите стандартные функции, необходимые для решения задачи.

  3. Выберите форму представления данных.

  4. Разработайте алгоритм решения задачи. Для ввода данных используйте диалоговый режим или вводите с помощью генератора случайных чисел. Результат решения задачи выведите на экран дисплея.

Теоретические сведения

Операторы цикла

Операторы цикла служат для того, чтобы выполнять какие-либо действия в программе повторно.

В Паскале различают три типа операторов цикла в зависимости от того, стоит ли некоторое условие в начале, середине или в конце цикла.

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

Перед каждым очередным выполнением внутреннего оператора производится проверка значения булевского выражения, которое служит критерием повторения.

Если это выражение имеет значение true, то выполняется очередная итерация, в противном случае (значение выражения есть false) выполнение оператора цикла заканчивается. Если выражение с самого начала имеет значение false, то цикл не выполнится ни разу.

Примеры:

1). WHILE M [I] < > 0 DO I := I + 1 ;

2). WHILE X < = N DO

BEGIN

FACT := FACT  X ;

X := X + 1 ;

END ;

Оператор цикла с параметром – FOR

Такие операторы обычно используют, когда число повторений цикла может быть определено перед его началом.

На использование управляющей переменной налагаются следующие ограничения:

1). В качестве управляющей переменной должна использоваться простая переменная, описанная в текущем блоке.

2). Управляющая переменная должна иметь дискретный тип.

Все скалярные типы кроме вещественных называются также дискретными

Стандартные скалярные типы в Паскале делятся на четыре группы:

  • целый тип - integer

  • символьный тип - char

  • булевский тип - boolean

  • длинный целый - longint

3). Начальные и конечные значения диапазона должны иметь тип, совместимый с типом управляющей переменной.

4). В теле цикла запрещается явное изменение значения управляющей переменной (например оператором присваивания).

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

При использования служебного слова to значение управляющей переменной увеличивается на 1 при каждом повторении.

При использовании downto значение управляющей переменной уменьшается на 1.

Примеры:

1). FOR I := 10 TO 20 DO ....

FOR I := 20 DOWNTO 10 ....

2). FOR I := 1 TO 10 DO M[I] := I  2 ;

3). FOR I := 2 TO 63 DO

IF DATA[I] > MAX THEN MAX := DATA[I]

4). FOR I := 1 TO 10 D

FOR Y := 1 TO 10 DO

BEGIN

X := 0 ;

FOR K := 1 TO 10 DO

X := X + MAT1[I,K]  MAT2[K,J] ;

MAT [I,J] := X ;

END ;

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

Этот оператор аналогичен предыдущему оператору WHILE и отличается от него, во-первых, тем, что условие проверяется после выполнения очередной итерации (таким образом гарантируется хотя бы однократное выполнение цикла), а, во-вторых, тем, что критерием прекращения цикла является равенство выражения константе true. Если выражение равно false, то цикл повторяется.

Например:

REPEAT

PROC1(X, Y+ I) ;

I := I - 1 ;

UNTIL

I = 0;

Этот цикл будет выполняться до тех пор, пока I не будет = 0.

Примеры:

1). REPEAT

K := I MOD J ;

I := J ;

J := K;

UNTIL J = 0 ;

2). REPEAT

WRITE ( ‘ Введите целое число :’) ;

READLN (I) ;

PROCESS (I) ;

UNTIL (I < 0) AND (I > 9)

Вложенные циклы

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

Пример 1:

Вычислить значение переменной Y=2K+N при всех значениях переменных N=1,2,3 и K=2,4,6

Program Lr3 ;

Uses CRT ;

Var N, K, Y : integer ;

Begin

Clrscr ;

For N := 1 to 3 do

begin

K := 2 ;

while K <= 8 do

begin

Y := 2K+N ;

Writeln( N:4, K:4, Y:4 ) ;

K := K + 2 ;

end ;

end ;

readln

end .

Пример 2:

Программа вычисления n!

1-й вариант программы:

Program Fact1 ;

Uses CRT ;

Var n, i, p : integer ;

Begin

Read(n) ;

p:=1 ; i:=0 ;

While i < n do

Begin

i := i + 1 ;

p := p  i ;

End ;

Write ( ‘n! = ’, p ) ;

Readln

End .

2-й вариант программы:

Program Fact2 ;

Uses CRT ;

Var n, p : integer ;

Begin

Read(n) ;

p:=1 ;

While n < 0 do

Begin

p := p  i ;

n := n - 1 ;

End ;

Write ( ‘n! = ’, p ) ;

Readln

End .