А. В. Розина программирование на паскале методическое пособие

Вид материалаМетодическое пособие

Содержание


Тема 5. Оператор выбора CASE
Тема 6. Операторы цикла
Изучение циклов с постусловием можно опустить из школьной программы за неимением достаточного количества времени.
Оператор цикла по счетчику FOR
В приведенном выше фрагменте оператор
Здесь нет ввода исходных данных, и параметр цикла используется в качестве слагаемого в теле цикла
Begin s := s+p /i; p := - p; end
Оператор цикла с предусловием WHILE
Оператор цикла с постусловием REPEAT
Подобный материал:
1   2   3   4   5   6   7   8   9   10

Тема 5. Оператор выбора CASE



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

Оператор выбора case позволяет организовать выбор из произвольного числа вариантов в отличие от оператора if, обеспечивающего выбор из 2-х вариантов.

Оператор выбора имеет следующий вид:


case < селектор > of <список констант 1> : <оператор1;>

<список констант 2> : <оператор2;>

. . .


<список констант N> : <операторN>

else <оператор>

end;


Здесь селектор – это переменная целого (лежит в диапазоне integer) или литерного (о нем будет сказано далее) типа. Список констант может состоять из произвольного количества значений или диапазонов, отделенных друг от друга запятыми. Границы диапазона записываются двумя константами через разграничитель две точки, стоящие подряд.

Алгоритм работы оператора выбора следующий:
  • Вычисляется значение селектора
  • Выполняется тот оператор, список констант которого равен текущему значению селектора либо лежит в соответствующем диапазоне
  • Если ни один список констант не равен селектору, то выполняется оператор, стоящий за словом else


Пример


case R of

1, 5, 10 : z := z + 10;

11..20 : z := z + 100;

30 : z := z + 1000;

end;


Если переменная R равна 1, или 5, или 10, то переменная Z увеличивается на 10. Если 11≤R≤20, то Z увеличится на 100. Если R=30, то Z увеличится на 1000.

Тема 6. Операторы цикла


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

На следующих примерах это можно объяснить.
  1. Читать английский текст "My pets" 5 раз.
  2. Читать английский текст "My pets", пока не достигните скорости чтения не менее 80 слов в минуту.

В 1 случае известно количество повторений - это 5. Во втором случае чтение текста будет возобновлено, если скорость меньше 80 символов в минуту.

В первом случае цикл по счетчику, а во втором – по условию. Циклы по условию в Паскале реализованы в виде 2-х циклов:
  • циклы с предусловием WHILE
  • циклы с постусловием REPEAT


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

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

Оператор цикла по счетчику FOR



Если число повторений оператора известно заранее, то используется оператор цикла FOR. Он имеет следующую форму:


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


Замечания.
  1. В качестве параметра цикла может быть переменная целого или литерного типа. Не допускается переменная вещественного типа. Начальное и конечное значение – выражение того же типа, что и параметр цикла.
  2. Значение параметра цикла в теле цикла, т.е. внутри оператора, стоящего после do, не должен изменяться.
  3. При выходе из цикла значение параметра цикла не определено.


Алгоритм работы:
  1. Вычисляется начальное значение параметра цикла.
  2. Проверяется значение параметра цикла. Если значение параметра цикла больше конечного значения, то цикл завершен и выполняется оператор, стоящий за оператором FOR. Если значение параметра цикла меньше или равно конечному значению параметра цикла, то выполняется тело цикла, т.е. оператор, стоящий после DO. Затем значение параметра цикла увеличивается на 1 и вновь выполняется данный пункт.


В случае, если параметр цикла должен не увеличивать, а уменьшать на 1 свое значение от начального до конечного, используют следующую форму оператора цикла:


for <параметр цикла>: = <начальное значение> downto <конечное значение> do <оператор>;


Объяснять эту тему преподавателю целесообразно на примере следующих задач. Далее приводятся только фрагменты программ.
  1. Подсчитать сумму 10 введенных с клавиатуры чисел.

{Используется прием накапливания суммы}

S :=0;

FOR I := 1 TO 10 DO

BEGIN WRITELN ('Введите число'); READLN (A);

S := S+A; END;

Обсуждается, что при подсчете произведения оператор инициализации S := 0; заменяется на оператор S := 1; и операция сложения в операторе S := S+A; заменяется на умножение S := S*A;
  1. Подсчитать сумму положительных чисел среди 10 чисел, введенных с клавиатуры

В приведенном выше фрагменте оператор S := S+A; заменяется на условный оператор IF A>0 THEN S := S+A;

Таким образом в переменной S идет накопление суммы не всех, а только положительных чисел
  1. Подсчитать количество положительных чисел среди 10 чисел, введенных с клавиатуры

Оператор IF A>0 THEN S := S+A;

заменяется на оператор IF A>0 THEN S := S+1;
  1. Подсчитать сумму 20 слагаемых 1+2+3+...+20

Здесь нет ввода исходных данных, и параметр цикла используется в качестве слагаемого в теле цикла

S := 0;

FOR I := 1 TO 20 DO S := S+I;
  1. Подсчитать сумму 20 слагаемых 1-1/2+1/3-...-1/20

Это знакочередующийся ряд. Введение переменной Р позволяет это реализовать.

S := 0; P := 1;

FOR I := 1 TO 20 DO

BEGIN S := S+P /I; P := - P; END;


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

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



Проверка условия выполнения тела цикла производится в самом начале работы оператора. Он имеет следующую форму:


while < логическое выражение > do < оператор > ;


Алгоритм работы следующий:
  1. Вычисляется значение логического выражения.
  2. Если значение логического выражения равно FALSE (ложь), то цикл завершен, т.е. выполняется оператор, стоящий за оператором WHILE. Если значение логического условия равно TRUE (истина), то выполняется тело цикла. Затем вновь выполняется данный пункт.


Замечания.
  1. Переменные, входящие в логическое выражение, должны изменять свои значения в теле цикла, иначе будет зацикливание.
  2. Тело цикла в данном операторе всегда составной оператор, т.к. по крайней мере, один оператор изменяет значение переменных, входящих в логическое выражение, плюс еще операторы, "ради чего организован цикл"
  3. Задачи, при решении которых можно использовать оператор FOR, можно решить с использованием и оператора WHILE, обратное утверждение не всегда верно.



Пример Фрагменты программ подсчета суммы чисел 1, 2, 3, ..., 100.


{оператор for }

s : = 0;

for P : = 1 to 100 do s : = s + P;


{оператор while}

s : = 0; P : = 1;

while ( P <=100 ) then begin s : = s + P ; P := P +1 ; end;


Однако с помощью оператора FOR не возможно составить программу подсчета суммы чисел 1, 2, 3, ... до тех пор, пока сумма не превысит заданное значение К.


{оператор while}

s : = 0; P := 1;

while ( s <=k ) then begin s : = s + P ; P := P+1; end;

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



Оператор имеет следующую форму:


repeat < оператор > until <логическое выражение > ;


Алгоритм работы следующий:
  1. Выполняется тело цикла, оператор, стоящий после repeat до until
  2. Вычисляется значение логического условия. Если значение логического условия равно TRUE (истина), то цикл завершен, т.е. выполняется оператор, стоящий за логическим выражением. Если значение логического выражения равно FALSE (ложь), то переход на пункт 1.


Замечания
  1. UNTIL переводится «пока не», поэтому конец цикла достигается при истинности логического выражения, а работает тело при ложности.
  2. Переменные, входящие в логическое условие, должны изменять свои значения в теле цикла, иначе будет зацикливание.
  3. Проверка условия выполнения тела цикла производится после очередного выполнения тела цикла. Таким образом, тело цикла выполняется хотя бы 1 раз. Поэтому будьте осторожны с подбором задач. Например, задача 5 (про склад) решается только с использованием оператора WHILE, т.к. наличие свободного места на складе может быть меньше груза, привезенного на машине, т.е. цикл не должен выполняться ни разу в данном случае. Поэтому не все задачи, решаемые с использованием оператора WHILE, решаются с использованием оператора REPEAT.