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

2.7. Самостоятельные задания

Выполните каждое задание тремя способами, используя сначала цикл For, потом While, затем Until.

  1. Вывести на экран 22 звёздочки в ряд.

  2. Дано число N. Вывести на экран N звёздочек в ряд.

  3. Вывести на экран все нечетные чисел из интервала от 1 до 30.

  4. Вывести на экран все нечетные чисел из интервала от 1 до 30 в обратном порядке.

  5. Найти сумму первых 10 чётных чисел.

  6. Найти количество двузначных чисел, у которых первая цифра больше второй.

  7. Найти произведение тех чисел от 1 до 50, которые кратны 17.

    1. Цикл в цикле

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

Начнём знакомство с составления программы, которая выводит на экран числа от 10 до 29. Выпишем сначала все эти числа в ряд:

10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

Посмотрите внимательно! Замечаете закономерность? Сначала увеличиваються единицы от 0 до 9, при этом значение десятков не меняется. Только когда перебор единиц завершён, десятки увеличились на 1. После этого опять пошли плясать подряд единицы.

Давайте отразим поведение десяток и едениц в составляемой программе. В переменной a – у нас будут десятки, в b – единицы:

for a := 1 to 2 do

for b := 0 to 9 do

begin

s := a*10 + b;

writeln (s)

end;

Вот они: вложенные циклы! Как только начал выполнение первый цикл “для а”, тут же началось выполнение цикла “для b”. И пока этот внутренний цикл не выполнится (в маленьком прямоугольнике), внешний цикл не продолжит выполнение.

Как вы думаете, сколько всего раз выполниться содержимое маленького прямоугольника? А содержимое большого?

Попробуйте на основе этого примера самостоятельно составить программу, которая выведет на экран числа от 27 до 49, причём чтобы единицы принимали только значения от 7 до 9. То есть на экран должны буть выведены следующие числа:

27 28 29

37 38 39

47 48 49

Теперь несколько небольших заданий на эту тему.

Сколько раз выполниться оператор writeln внутри следующих циклов:

for i := 1 to 5 do

for j := 5 to 10 do

begin

writeln (i+j)

end;

Сколько раз выполнится оператор := внутри следующих циклов:

a := 0;

while a <= 5 do

while a <= 10 do

a := a + 1;

Сколько раз выполнится оператор := внутри следующих циклов:

a := 0;

while a <= 10 do

while a <= 20 do

a := a + 1;

Сколько раз выполнится оператор := внутри следующих циклов:

a := 0;

while a <= 20 do

while a <= 10 do

a := a + 1;

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

Натуральные числа

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

  1. Делители чисел

Решим такое задание:

Дано число М, вывести на экран все его делители.

Как решать такое задание? Для начала надо вспомнить, что является делителем числа. Как известно, делителем числа А называют такое число В, что А делится на В без остатка. Например, делителями 12 являются числа:

1, 2, 3, 4, 6 и 12.

В каком промежутке находятся делители любого числа? В промежутке от 1 до самого числа. Следовательно, для поиска делителей числа М надо проверить все числа от 1 до М. И для каждого перебираемого числа проверять: делится ли на него М без остатка? Если да, то вывести его на экран.

Для того чтобы проверить, делится ли одно число на другое без остатка, надо найти этот остаток и сравнить его с нулём. Понятно, что если остаток равен 0, то первое число делится на второе.

Чтобы перебрать все числа из промежутка, надо использовать цикл. Здесь удобней всего использовать цикл For, так как нам заранее известно сколько раз выполнится цикл (М раз).

Реализуем сказанное выше в процедуре, вставленной в программу.

Program Deliteli_Chisla;

Var M : integer;

Procedure Deliteli (M : integer);

var i : integer;

begin

For i := 1 to M do

If M mod i = 0 { Если М делится на i }

Then write (i, ’ ’);

writeln;

end;

Begin

Write (’Введите число М: ’);

Readln (M);

Writeln (’Его делители следующие:’);

Deliteli (M);

Writeln ;

Writeln (’Нажмите ENTER для выхода.’);

Readln

End.