
- •Автономная некоммерческая организация высшего профессионального образования «Брянский институт управления и бизнеса»
- •Методические пособие по изучению алгометрического языка pascal
- •Оглавление
- •Введение
- •Глава 1 основные понятия .
- •Алфавит языка.
- •Основные определения языка.
- •Составные части программы.
- •Вычисление об"ема шара
- •Вопросы для самоконтроля
- •Глава 2 стандартные типы данных
- •Данные целого типа.
- •Данные действительного типа.
- •Данные логического типа.
- •Данные символьного типа.
- •`Теплоход``маяк``` или `д``артаньян`
- •Описание констант и переменных.
- •Var_имя переменной: тип;
- •Вопросы для самоконтроля
- •Глава 3 выражения.
- •3.1. Стандартные функции.
- •3.2. Арифметические выражения.
- •3.3. Логические выражения.
- •Вопросы для camokohtpoля
- •Глава 4 основы программирования простых задач.
- •4.1. Оператор присваивания.
- •4.2. Понятие о составном и пустом операторах. Назначение символа точки с запятой.
- •Простейший ввод данных.
- •5 Позиций
- •8 Позиций
- •Примеры программирования простых задач.
- •Вопросы для самоконтроля
- •5.1. Условный оператор.
- •Оператор выбора.
- •Оператор перехода.
- •Go to метка
- •Lавеl метка;
- •Label метка 1, метка 2,…, метка n;
- •5.4.Примеры программирования вычислительных процессов с разветвлениями.
- •Глава 6 организация циклических прцессов.
- •Оператор цикла с предварительным условием.
- •Оператор цикла с последующим условием.
- •Операторы циклической части программы
- •Оператор цикла с параметром.
- •Вложенные циклы.
- •Глава 7 основы ввода и вывода.
- •7.1. Оператор ввода.
- •7.2. Оператор вывода
- •Программирование циклических вычислительных процессов.
- •Вопросы для самоконтроля
- •Глава 8 Переменные типы.
- •Перечислимый тип данных.
- •Var а: (зима, весна, лето, осень);
- •Ограниченный тип данных.
- •Вопросы для самоконтроля
- •Глава 9 Сложный тип данных – массивы.
- •Понятие массива.
- •Var_имя массива: array [t1] of_t2;
- •Тип массива.
- •Упакованные массивы.
- •Понятие многомерных массивов.
- •Глава 10 Сложный тип данных – множества.
- •10.1. Множества в языке Паскаль.
- •Var _имя множества: set_of_ базовый тип;
- •Примеры программирования задач с использованием множества
- •Вопросы для самоконтроля
- •Глава 11 Сложный тип данных – записи.
- •Понятие записи.
- •Оператор присоединения.
- •Вопросы для самоконтроля
- •Глава 12 Подпрограммы.
- •Общие сведения.
- •Процедуры и функции.
- •Вопросы для самоконтроля
- •Глава 13 Файлы
- •13.1. Понятие файла.
- •13.2. Чтение файла.
- •13.3. Запись файла.
- •13.4 Чтение и запись файла
- •Вопросы для самоконтроля
Вложенные циклы.
Циклы могут быть вложены один в другой. Иначе их называют сложными циклами. При использовании вложенных циклов необходимо составлять программу таким образом, чтобы внутренний цикл полностью укладывался в циклическую часть внешнего цикла. Внутренний цикл может также в свою очередь содержать другой внутренний цикл (циклы). Структуру вложенных циклов рассмотрим на примере.
Пример 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 |
ВОПРОСЫ ДЛЯ САМОКОНТРОЛЯ
Каково назначение операторов цикла?
Укажите отличительные особенности каждого из трех операторов цикла.
Будет ли выполняться циклическая часть программы, если логическое выражение является ложным с самого начала в операторе цикла WHILE?
Можно ли изменять программным путем параметр цикла циклической части оператора FOR?
Чему равен шаг изменения параметра цикла в операторе 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.