klevoz.ru страница 1
скачать файл
Урок11.
Продолжим знакомство с операторами цикла, имеющимися в Паскале. Повторение группы операторов (тела цикла) можно организовать и с помощью оператора, где проверка условия осуществляется после выполнения тела цикла.
11.1.Оператор цикла REPEAT (цикл ДО).

Формат оператора:

REPEAT оператор; оператор;…оператор UNTIL логическое условие;

Часть программы, заключенная между служебными словами REPEAT и UNTIL, повторяется до тех пор, пока не станет истинным логическое выражение, стоящее после слова UNTIL. Между словами REPEAT (повторить) и UNTIL(до тех пор пока) можно записать любое количество операторов без использования операторных скобок.

В отличие от оператора WHILE вычисление логического выражения происходит не до, а после очередного повторения цикла. Из-за этого цикл REPEAT обязательно выполнится хотя бы раз, а цикл WHILE может не выполнится ни разу. Если условие в цикле ПОКА является условием продолжения повторений, то условие в цикле ДО – условием выхода из цикла, его завершения. Поэтому для одной и той же задачи эти условия противоположны.

ПРИМЕР 1. Составить программу подсчета суммы S первых 1000 членов гармонического ряда

1+1/2+1/3+1/4+…1/N. используя оператор цикла REPEAT.

Program Summa;

Var S:real; N:integer;

Begin


S:=0; N:=0;

repeat


N:=n+1;

S:=s+1/n


Until n=1000;

Writeln(s);

Readln

End.


11.2.Поиск наибольшего числа.

Предположим, нам необходимо ввести с клавиатуры N чисел, найти из них наибольшее и вывести его.

Для решения этой задачи предлагается следующий алгоритм.


  1. Ввести первое число в переменную Max.

  2. Ввести следующее число в переменную Next.

  3. Если Next>Max, то Max:=Next.

Пункты 2 и 3 повторять, пока не будут введены все числа.

  1. Вывести значение переменной Max.

Действительно ли будет напечатано наибольшее из N чисел? Докажем это.

После выполнения первого пункта в переменной Max находится наибольшее из уже введенных чисел. Это справедливо, т.к. введено лишь одно число.

Повторение пунктов 2 и 3, в сущности, представляет собой цикл, который выполняется, пока не будут введены все числа. Если перед очередным повторением цикла в Max находится наибольшее из введенных чисел, то после выполнения пунктов 2 и 3 там снова будет наибольшее из введенных чисел.

В последнем пункте значение Max будет выведено.

Этот пример показывает, что алгоритм можно доказать, как доказывают математическую теорему. Программируя доказательный алгоритм, можно не опасаться ошибок в алгоритме, конечно, если нет ошибок в доказательстве.

Program maximum;

Var N, max, next, k: integer;

Begin


Write(‘Введите количество чисел‘); Readln(n);

Write(‘Введите число‘); Readln(max);

k:=1;

repeat


Write(‘Введите число‘); Readln(next);

K:=k+1;


If next>max then max:=next

Until k=n;

Writeln(max);

Readln


End.

Тренировочные задания.



  1. Введите с клавиатуры 6 чисел и определите их среднее арифметическое.

  2. Напишите программу, которая вводит целые числа с клавиатуры и складывает их, пока не будет введено число 0.

  3. Напечатайте 20 первых степеней числа 2.

  4. Найдите минимальное из N чисел.

  5. Дано натуральное число. Выяснить, является ли оно простым, т.е. делится только на 1 и на само себя.

Разбор заданий урока 10.

  1. Даны целые числа а и b (а>b). Определить:

    1. Результат целочисленного деления a на b, не используя стандартную операцию целочисленного деления;

Program prim_9_1;

Var a, b, n: integer;

Begin

Write(‘Введите два числа, a>b ‘);



Readln(a,b);

N:=0;


While a>=b do

Begin


N:=n+1;

A:=a-b


End;

Writeln(‘ результат целочисленного деления ’,n);

Readln

End.


  1. Известны оценки по информатике каждого из 20 учеников класса. В начале списка перечислены все пятерки, затем все остальные оценки. Сколько учеников имеют по информатике оценку «5»?. Условный оператор не использовать.

Program prim_9_1;

Var х ,n :word;

Begin

Write(‘Введите оценку‘);



Readln(х);

N:=0;


While х=5 do

Begin


N:=n+1;

Write(‘Введите оценку‘);

Readln(х);

End;


Writeln(‘ имеют отлично ’,n, ‘ учеников’);

Readln


End.

  1. *В некоторой стране используются денежные купюры достоинством в 1, 2, 4, 8, 16, 32 и 64. дано натуральное число N. Как наименьшим количеством таких денежных купюр можно выплатить сумму N (указать количество каждой из используемых для выплаты купюр)? Предполагается, что имеется достаточно большое количество купюр всех достоинств.

Var n,k,x:word;

Begin


Write(‘Введите число‘); Readln(n);

K:=64;


While n>0 do

Begin


If n>=k then begin Writeln(n div k, ‘купюр по ’, k);n:=n mod k end;

K:=k div 2



End;

Readln


End.
скачать файл



Смотрите также:
Продолжим знакомство с операторами цикла, имеющимися в Паскале. Повторение группы операторов (тела цикла) можно организовать и с помощью оператора, где проверка условия осуществляется после выполнения тела цикла
48.8kb.
Методические указания для выполнения практического задания №3
41.84kb.
Методическое пособие к курсовому проекту
755.72kb.
Лабораторная работа 910. Нахождение центра тяжести тела. Оборудование: Картонная пластина
11.99kb.
Меры по его преодолению
374.86kb.
«Исследование операций» является учебной дисциплиной регионального компонента цикла общих математических и естественнонаучных дисциплин
2379kb.
1. Тип данных char
358.65kb.
Перемещение при прямолинейном равноускоренном движении
43.04kb.
Xiii ежегодная международная конференция из цикла «Леонтьевские чтения»
74.18kb.
Викторина по истории Отечества. Потимко И. В. 7-А,7-б 19. 11. 12 2 «Путешествие в Картландию»
66.95kb.
Задания с одним верным ответом
34.73kb.
Экзаменационные вопросы по курсу "Системы программирования" Этапы жизненного цикла программного продукта
352.87kb.