Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по TURBO PASCAL.doc
Скачиваний:
18
Добавлен:
04.11.2018
Размер:
1.13 Mб
Скачать
    1. Самостоятельные задания

  1. Составьте программу нахождения суммы двух чисел с использованием функции.

  2. Составьте программу нахождения площади круга по заданному целому значению радиуса. Решите это задание двумя способами: с использованием процедуры; с использованием функцией. Обратите внимание на оформление программы, не забывайте, что подпрограммы должны только вычислять, но не выводить сообщений на экран.

  3. Составьте процедуру поиска суммы цифр двузначного числа. Если задано не двузначное число, вернуть результат 0.

  4. Составить функцию для поиска суммы цифр трёхзначного числа.

  1. Циклы

Определение.

Цикл – это структура языка, которая предписывает многократное выполнение указанного оператора.

Говоря проще, цикл - это такой оператор, который заставляет компьютер многократно повторять некоторые действия. Образно это можно записать так:

ЦИКЛ 10 раз

начало цикла

write ('*');

конец цикла

В результате работы такой воображаемой структуры мы могли бы получить 10 звездочек на экране, потому что всё, что заключено между началом и концом цикла выполняется несколько раз. Все, что вне этих рамок - только один раз.

Например:

write ('<');

ЦИКЛ 5 раз

начало цикла

write ('Да-');

конец цикла

write ('>');

В результате выполнения этих операторов на экран напечатается следующее:

<Да-Да-Да-Да-Да->

Обратите внимание, что слово "Да" было напечатано 5 раз, а каждая из угловых скобок – только один раз. Почему именно так? Потому что оператор

write('Да-')

выполняется 5 раз, так как он находится внутри цикла, а операторы

write ('<');

и

write('>')

только один, так как он находится вне цикла.

Итак, всё, что находится внутри цикла (для наглядности эта область заключена в рамочку), выполняется несколько раз подряд. Всё что вне цикла – выполняется только один раз.

Однако в Паскале нет оператора цикла "N раз", зато есть три других:

For, While и Repeat (Для, Пока и Повторять).

Из них на наш цикл "N раз" больше всего похож цикл For, c которым мы сейчас и познакомимся.

    1. Цикл For

Формат записи оператора цикла For:

For <переменная цикла>:=<начальное значение> to <конечное значение> do

begin

<Операторы>;

end

Примечание.

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

Познакомимся с принципом работы этого оператора на уже знакомом примере, который заставит компьютер напечатать 10 звёздочек:

program Zvezdy ;

var i : integer ;

begin

For i := 1 to 10 do

begin

write ('*');

end

end.

Этот цикл выполнится 10 раз и на экран будет выведено 10 звёздочек. Первая строка со словом For называется заголовком цикла. В нём содержится вся необходимая информация для организации цикла. Подробней и по-русски этот заголовок можно было бы записать так:

Для целой переменной i, которая вначале принимает значение 1, организуем цикл.

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

После этого цикл выполнится последний раз и больше выполняться не будет.

Начало операторов цикла

напечатать символ ('*')

Конец операторов цикла

Как видите, оператор цикла For не существует сам по себе, а организуется специально для какой-либо целой переменной, которая называется "переменной цикла" или "параметром цикла". Она автоматически увеличивает своё значение после каждого выполнения операторов цикла, пока не примет своего конечного значения. Когда это произойдёт, операторы цикла выполнятся последний раз и выполнение цикла закончится. Переменную цикла можно использовать внутри цикла как обычную переменную. Однако, ей нельзя ничего присваивать, ведь не зря же для неё организовали целый цикл! Организаторы сами следят за значением этой переменной…

В зависимости от начального и конечного значения параметра цикла, которые задаются в заголовке, цикл может выполнится то или иное количество раз. Например, если начальное и конечное значения совпадают, то цикл выполнится только один раз. Если же начальное значение превышает конечное, то цикл не выполнится ни разу! Вот так цикл!..

А сколько раз выполнится циклы со следующими заголовками:

for i := 5 to 9 do

for i := 0 to 8 do

for i := -1 to 10 do

for i := 100 to 200 do

for i := 0 to 0 do

Итак, ещё раз, запомните! Оператор цикла является замкнутой структурой, поэтому все, что не входит в этот оператор цикла, выполняется один раз! Например:

program For_Demo;

var i : integer;

begin

write ('<');

for i := 1 to 5 do

begin

write ('Да-')

end;

write ('>')

end.

Знакомый пример, не правда ли? Объясните, как будет выполняться эта небольшая программа и что будет выведено на экран.

Как вы уже заметили, <переменная цикла> – это любая переменная целого типа (например: integer, byte, word и др. целые типы). Её значение в цикле всё время изменяется. Сначала оно равно начальному значению, которое указывается в заголовке цикла, потом каждый раз увеличивается на единицу, пока не примет конечного значения, которое тоже указывается в заголовке. В самом цикле эта переменная может быть использована для каких-либо целей. Давайте составим программу, которая будет выводить значение этой переменной при каждом выполнении цикла, тогда мы сами сможем увидеть подтверждение теоретических умозаключений на практике.

program For_and_i;

var i : integer;

begin

for i := 1 to 5 do

begin

writeln (i)

end

end.

На экран напечатается 5 чисел (потому что этот цикл выполняется 5 раз).

1

2

3

4

5

Каждое число – есть значение переменной цикла при очередном выполнении тела цикла.

Можно придать этой программе некоторый практический смысл, если выводить на экран не только целые числа, но и их квадраты – получим таблицу квадратов первых пяти чисел. Смотрите, как изменится программа:

program Numbers_and_them_squares;

var i, s : integer;

begin

for i := 1 to 5 do

begin

write (i, '*', i);

s := i*i;

writeln (' = ', s)

end

end.

Вот что мы получим в результате работы программы:

1*1 = 1

2*2 = 4

3*3 = 9

4*4 = 16

5*5 = 25

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