- •Содержание
- •Перечень, наименование, обозначение блоков и отображаемые ими функции.
- •Интегрированная инструментальная оболочкаPascalAbc. Работа с главным меню системыPascalAbc
- •Среда программирования Pascal abc.
- •Общая структура программ в Pascal.
- •Основные части программы.
- •Оператор ввода-вывода в Pascal. Описание некоторых стандартных типов данных и встроенные операции и функции, применимые к ним
- •Операторы ввода/вывода данных
- •Стандартные типы данных
- •Программирование линейных алгоритмов
- •Понятие линейного алгоритма. Примеры написания программ.
- •Программирование с помощью операторов условного и безусловного перехода
- •Условный оператор If
- •Оператор безусловного перехода GoTo
- •Оператор выбора Case
- •Циклические программы
- •Оператор For
- •Оператор Repeat
- •Оператор While
- •Массивы
- •Линейные массивы. Описание типа
- •Многомерные массивы. Двухмерные массивы – матрицы.
- •Расчет отметок проектной линии на вертикальной выпуклой или вогнутой кривой
- •Индивидуальные задания
- •Процедуры и функции, определенные пользователем. Параметры процедур и функций
- •Глобальные и локальные переменные, параметры процедур и функций
- •Процедуры пользователя
- •Функции пользователя
- •Символьные массивы. Строки
- •Символьный тип
- •Символьные массивы
- •Строки. Объявление строчных типов и переменных
- •Определения значения строковой переменной
- •Длина строки. Операция конкатенации
- •Функции для работы со строками
- •Процедуры для работы со строками
Циклические программы
Цель лабораторной работы: закрепить практические навыки работы с системой PascaABC, научиться правильно использовать различные операторы циклов; научиться составлять программы решения задач с использование циклических структур.
Алгоритм называется циклическим, если он содержит многократное выполнение одних и тех же операторов. Число повторений этих операторов может быть задано в явной (цикл с известным числом повторений) или неявной (цикл с неизвестным заранее числом повторений) форме.
Впрактике программирования часто встречаются циклические программы. В циклических программах какой-либо алгоритм повторяется многократно, при этом один или несколькопараметров изменяются. Операторов цикла (повтора)в Паскале три: for, repeat, while.
Оператор For
Этот оператор применяется, если требуется выполнить тело цикла заранее заданное количество раз. Параметр порядкового типа на каждом проходе цикла автоматически либо увеличивается, либо уменьшается на единицу.
Оператор For состоит из заголовка, в котором определяется порядок изменения переменной параметра цикла и тела цикла, являющегося многократно повторяющимся алгоритмом.
Общий вид оператора:
For – <параметр цикла>: = <начальное значение> to <конечное значение> do оператор; {тело цикла}.
Этот оператор применяется, если начальное значение < конечного значения;
For – параметр цикла:= <начальное значение> downto <конечное значение> do оператор;
применяется, если начальное значение > конечного значения.
Пример: найти сумму квадратов целых чисел от 8 до 12.
i |
sqr(i) |
s:=s+sqr(i); |
s |
|
|
0 |
|
8 |
64 |
0+64=64 |
64 |
9 |
81 |
64+81=145 |
145 |
10 |
100 |
145+100=245 |
245 |
11 |
121 |
245+121=366 |
366 |
12 |
144 |
366+144=510 |
510 |
Program Prim7_1;
Var i,s: integer;
BEGIN s:=0;
for i:= 8 to 12 do
s:=s+sqr(i); // тело цикла
writeln('Суммаs= ',s);
END.
Работа программы. В разделе Var выделяется ячейка памяти с именем i и s для хранения величин. Поскольку в S мы должны накапливать сумму, то вначале занесем в S ноль. Затем присваиваетсяi=8.Далее выполняется тело цикла: извлекается содержимое ячейки S (а там у нас 0) и к этому содержимому прибавляется sgr(i), т.е. i2=64. Результат присваивается ячейке S, т.е. в S теперь64.
Проверяется, не стал ли параметр цикла больше конечного значения параметра 12. Это не произошло, поэтому переменнойi присваивается следующее значение,равное 9,и вновь выполняется тело цикла, т.е. S:=64+81. Можно сказать так: S присвоить тому S, которое было раньше, + следующее i2. Так как цикл еще не закончился, то i станет равным 10, а S присвоится тому S, которое было раньше, т.е.145, и к нему прибавится еще текущее i2, т.е. 100. Этот процесс повторяется до тех пор, пока параметр цикла не станет равным12. Тогда в последний раз122прибавляется к накапливаемой сумме.
При i=13происходит выход из цикла и переход к оператору writeln (' Сумма S=' ,S);
Правила применения оператора цикла For
Тело цикла – всегда один оператор. Если нужно, чтобы тело цикла состояло из нескольких операторов, то их объединяют в один составной операторс помощью операторных скобок begin, end.
For i:=l to n do
Begin
S:=S+sin(x)/cos(x);
x=x+0.01;
writeln('S=' ,S)
end.
Операторы, взятые в операторные скобки begin – end, считаются одним составным оператором.
Начальное и конечное значения параметра цикла в общем случае являются выражениями. Тип этих выражений и тип параметра цикла должны совпадать. Здесь допускается применение любых типов, которые упорядочены с каким-либо фиксированным шагом (порядковые типы), это может быть любой скалярный тип, кроме вещественного, т.е. байтовый, целый, символьный, перечисляемый, интервальный, булевский. На практике чаще всего применяют целочисленный тип.
В теле цикла параметр цикла не должен изменяться.
Нельзя с помощью оператора перехода goto войти в тело цикла, минуя заголовок.
Выйти из тела цикла в программу можно по if..goto, не дожидаясь полного перебора параметров цикла.