Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5 Методическое пособие изучения Паскаль.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
743.42 Кб
Скачать
    1. Вложенные циклы.

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

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

Обратите внимание на то, что если перебирать все значения N и К, получим 12 значений Y.

Составить программу можно, следующим образом: N — параметр внешнего цикла, К — параметр внутреннего цикла. Тогда при одном значении N переменная К будет принимать значения 2, 4, 6, 8. При другом значении N снова переменная К будет принимать значения 2, 4, 6, 8. Предполагается, что все переменные N, К, Y целого типа.

Фрагмент циклической части программы имеет вид

PROGRAM D2;

VAR N,K,Y:INTEGER;

BEGIN

FOR N:=1 TO 3 DO

BEGIN

K:=2;

WHILE K<=8 DO

BEGIN

V:=2*K+N;

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

K:=K+2

END

END

END.

Здесь внешний цикл организован с использованием оператора FOR, а внутренний — с использованием оператора WHILE. В процессе выполнения вложенных циклов переменные получат следующие значения:

N

1

1

1

1

2

2

2

2

3

3

3

3

K

2

4

6

8

2

4

6

8

2

4

6

8

Y

5

9

13

17

6

10

14

18

7

11

15

19

ВОПРОСЫ ДЛЯ САМОКОНТРОЛЯ

  1. Каково назначение операторов цикла?

  2. Укажите отличительные особенности каждого из трех операторов цикла.

  3. Будет ли выполняться циклическая часть программы, если логическое выражение является ложным с самого начала в операторе цикла WHILE?

  1. Можно ли изменять программным путем параметр цикла циклической части оператора FOR?

  2. Чему равен шаг изменения параметра цикла в операторе FOR?

6. Будет ли выполняться циклическая часть программы, если логическое выражение истинно с самого начала в операторе REPEAT?

Глава 7 основы ввода и вывода.

7.1. Оператор ввода.

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

Клавиатура и дисплей - стандартные устройства ввода и вывода, Для ввода и вывода данных в языке ПАСКАЛЬ предусмотрены стандартные встроенные программы, которые называются процедурами. Процедура ввода вызывается с помощью оператора ввода READ, процедура вывода — с помощью оператора вывода WRITE.

Необходимо отметить, что ввод и вывод данных зависят от конкрет­ной реализации ЭВМ. Рассмотрим ДВК.

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

Различают три вида оператора ввода:

а) READ (a1, a2, а3,..., аn) — каждое вводимое значение присваивается последовательно переменным a1, a2, а3,..., аn.

б) READLN (а1, а2, а3,..., аn) — каждое вводимое значение при­сваивается последовательно переменным а1, а2, а3,..., аn , после чего происходит переход на новую строку (следующий оператор ввода будет вводит данные с новой строки);

в) READLN - переход на новую строку при вводе данных. Последовательно расположенные операторы вида а) и в) эквива­лентны одному оператору б).

В языке ПАСКАЛЬ допускается вводить целые, действительные и символьные данные. Логические данные вводить не разрешается. Суще­ствует различие между вводом числовых и символьных данных, поэтому рассмотрим ввод этих данных отдельно.

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

Пример ввода:

VAR A,B,C:REAL;

K,T:INTEGER;

. . .

READ(A,B,C);

READLN;

READ(K,T);

После набора на экране дисплея всей программы и запуска ее на выполнение происходит останов машины при встрече READ (А, В, С). На клавиатуре ЭВМ необходимо набрать три действительных числа, затем с новой строки (выполняется оператор READLN) - два целых тела соответственно оператору READ (К, Т). Например,

0.5 6.23 - 7.1 ВК

3 48 ВК

Здесь ВК означает конец вводимой строки данных(см.приложение1). При этом переменные получат следующие значения:

А = 0.5, В = 6.23, С = - 7.1, К = 3, Т =48,

и выполнение программы продолжится.

Числа можно отделять друг от друга не только пробелами, но и ВК, например:

0.5 ВК

6.23 ВК

- 7.1 ВК

3 ВК

48 ВК

т. е. каждое число вводится с новой строки.

Однако будет ошибкой ввод чисел в одну строку:

0.5 6.23 -7.1 3 48 ВК

гак как после выполнения оператора READ (А, В, С) выполняется оператор перехода на новую строку READLN и четвертое число (3) должно быть набрано только с новой строки. Рассмотренные три оператора ввода

READ(А,В,С);

READLN;

READ(К,Т);

полностью эквивалентны следующим двум операторам:

READLN(А,В,С);

READ(K,T);

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

8.45 6.0 3.2 ВК 16 45 ВК

Ввод символьных данных. Ввод символьных данных имеет особенности. Поскольку пробел, как и любой символ языка ПАСКАЛЬ, отно­сится к символьным данным, символьные данные вводятся сплошной строкой в соответствии с оператором ввода. Напомним, что одной пере­менной можно присвоить значение только одного символа.

Пусть имеется фрагмент программы:

VAR А,В,С:CHAR;

. . .

READ(А,В,С);

Если после набора на экране дисплея всей программы и запуска ее на выполнение ввести данные в виде

SNR ВК

то переменные А , В, С получат следующие значения:

A='S', B = 'N', C = 'R'.

При вводе данных в виде

S N R ВК

переменные получат значения

A='S', В = ' ’, С = 'N'.

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

Пример: необходимо задать переменным значения

А = 3, В = 4, С = 'W’, D = 'F'.

При выполнении фрагмента программы

VAR A,B:INTEGER;

C,D:CHAR;

. . .

READ(A,B);

READ(C,D);

и вводе данных в виде

3 4 BK

WF BK

переменные получат значения А=3, В=4, С =’ ’ (символ ВК - конец первой строки, воспринимается как пробел) D = 'W’.

Для правильного ввода символьных данных рекомендуется перед каждым оператором ввода символьных данных ставить оператор перехода на новую строку READLN, чтобы их ввод осуществлялся всегда с новой строки. Например,

READ(А,B);

READLN;

READ(C,D);

В этом случае переменные получат правильные значения:

А = 3, В = 4, С = 'W, D = 'F'.

Если даже оператор ввода символьных данных стоит первым в про­грамме, все равно необходимо перед ним ставить оператор READLN.